From def9d976093fda87a9826a128f19f91bc4bbbcc4 Mon Sep 17 00:00:00 2001 From: James Price Date: Thu, 4 Nov 2021 19:55:57 +0000 Subject: [PATCH] spirv-reader: Sink pointer-to-vector-component WGSL does not support pointer-to-vector-component, so the SPIR-V reader needs to sink these pointers into their use. Bug: tint:491 Change-Id: Ib5ae87d2f6bbac13280314ba11369d7ced505b56 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/68241 Kokoro: Kokoro Reviewed-by: David Neto --- src/reader/spirv/function.cc | 26 + src/reader/spirv/function.h | 14 + src/reader/spirv/function_memory_test.cc | 113 ++++ test/bug/tint/413.spvasm.expected.wgsl | 5 +- test/bug/tint/749.spvasm.expected.wgsl | 630 +++++++++--------- .../graphicsfuzz/int-mat2-struct/0-opt.wgsl | 4 - .../nested-for-break-mat-color/0.wgsl | 5 +- .../graphicsfuzz/spv-composite-phi/0.wgsl | 23 +- .../graphicsfuzz/spv-composite-phi/1.wgsl | 23 +- .../1.wgsl | 23 +- .../0.wgsl | 17 +- .../1.wgsl | 30 +- .../1.wgsl | 23 +- .../0-opt.wgsl | 21 +- .../1.wgsl | 16 +- .../0-opt.wgsl | 64 +- .../0.wgsl | 64 +- .../1.wgsl | 73 +- .../0.wgsl | 64 +- .../1.wgsl | 64 +- 20 files changed, 685 insertions(+), 617 deletions(-) diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc index b02f4670d1..9bea3afd44 100644 --- a/src/reader/spirv/function.cc +++ b/src/reader/spirv/function.cc @@ -2541,6 +2541,12 @@ TypedExpression FunctionEmitter::MakeExpression(uint32_t id) { Fail() << "internal error: unhandled use of opaque object with ID: " << id; return {}; + case SkipReason::kSinkPointerIntoUse: { + // Replace the pointer with its source reference expression. + auto source_expr = GetDefInfo(id)->sink_pointer_source_expr; + TINT_ASSERT(Reader, source_expr.type->Is()); + return source_expr; + } case SkipReason::kPointSizeBuiltinValue: { return {ty_.F32(), create( @@ -3470,6 +3476,12 @@ bool FunctionEmitter::EmitConstDefinition( if (!expr) { return false; } + + // Do not generate pointers that we want to sink. + if (GetDefInfo(inst.result_id())->skip == SkipReason::kSinkPointerIntoUse) { + return true; + } + expr = AddressOfIfNeeded(expr, &inst); auto* ast_const = parser_impl_.MakeVariable( inst.result_id(), ast::StorageClass::kNone, expr.type, true, expr.expr, @@ -3735,6 +3747,8 @@ bool FunctionEmitter::EmitStatement(const spvtools::opt::Instruction& inst) { const auto skip = GetSkipReason(value_id); if (skip != SkipReason::kDontSkip) { GetDefInfo(inst.result_id())->skip = skip; + GetDefInfo(inst.result_id())->sink_pointer_source_expr = + GetDefInfo(value_id)->sink_pointer_source_expr; return true; } auto expr = AddressOfIfNeeded(MakeExpression(value_id), &inst); @@ -4214,6 +4228,8 @@ TypedExpression FunctionEmitter::MakeAccessChain( if (base_skip != SkipReason::kDontSkip) { // This can occur for AccessChain with no indices. GetDefInfo(inst.result_id())->skip = base_skip; + GetDefInfo(inst.result_id())->sink_pointer_source_expr = + GetDefInfo(base_id)->sink_pointer_source_expr; return {}; } @@ -4221,6 +4237,7 @@ TypedExpression FunctionEmitter::MakeAccessChain( uint32_t first_index = 1; const auto num_in_operands = inst.NumInOperands(); + bool sink_pointer = false; TypedExpression current_expr; // If the variable was originally gl_PerVertex, then in the AST we @@ -4352,6 +4369,8 @@ TypedExpression FunctionEmitter::MakeAccessChain( } // All vector components are the same type. pointee_type_id = pointee_type_inst->GetSingleWordInOperand(0); + // Sink pointers to vector components. + sink_pointer = true; break; case SpvOpTypeMatrix: // Use array syntax. @@ -4407,6 +4426,13 @@ TypedExpression FunctionEmitter::MakeAccessChain( TINT_ASSERT(Reader, type && type->Is()); current_expr = TypedExpression{type, next_expr}; } + + if (sink_pointer) { + // Capture the reference so that we can sink it into the point of use. + GetDefInfo(inst.result_id())->skip = SkipReason::kSinkPointerIntoUse; + GetDefInfo(inst.result_id())->sink_pointer_source_expr = current_expr; + } + return current_expr; } diff --git a/src/reader/spirv/function.h b/src/reader/spirv/function.h index 38b76a9a7a..ccba710e10 100644 --- a/src/reader/spirv/function.h +++ b/src/reader/spirv/function.h @@ -205,6 +205,12 @@ enum class SkipReason { /// function parameter). kOpaqueObject, + /// `kSinkPointerIntoUse`: used to avoid emitting certain pointer expressions, + /// by instead generating their reference expression directly at the point of + /// use. For example, we apply this to OpAccessChain when indexing into a + /// vector, to avoid generating address-of vector component expressions. + kSinkPointerIntoUse, + /// `kPointSizeBuiltinPointer`: the value is a pointer to the Position builtin /// variable. Don't generate its address. Avoid generating stores to this /// pointer. @@ -296,6 +302,11 @@ struct DefInfo { /// This is kInvalid for non-pointers. ast::StorageClass storage_class = ast::StorageClass::kInvalid; + /// The expression to use when sinking pointers into their use. + /// When encountering a use of this instruction, we will emit this expression + /// instead. + TypedExpression sink_pointer_source_expr = {}; + /// The reason, if any, that this value should be ignored. /// Normally no values are ignored. This field can be updated while /// generating code because sometimes we only discover necessary facts @@ -320,6 +331,9 @@ inline std::ostream& operator<<(std::ostream& o, const DefInfo& di) { case SkipReason::kOpaqueObject: o << " skip:opaque"; break; + case SkipReason::kSinkPointerIntoUse: + o << " skip:sink_pointer"; + break; case SkipReason::kPointSizeBuiltinPointer: o << " skip:pointsize_pointer"; break; diff --git a/src/reader/spirv/function_memory_test.cc b/src/reader/spirv/function_memory_test.cc index c68521e7df..21687ced72 100644 --- a/src/reader/spirv/function_memory_test.cc +++ b/src/reader/spirv/function_memory_test.cc @@ -390,6 +390,119 @@ TEST_F(SpvParserMemoryTest, EmitStatement_AccessChain_VectorNonConstIndex) { HasSubstr("myvar[a_dynamic_index] = 42u;")); } +TEST_F(SpvParserMemoryTest, + EmitStatement_AccessChain_VectorComponent_MultiUse) { + // WGSL does not support pointer-to-vector-component, so test that we sink + // these pointers into the point of use. + const std::string assembly = Preamble() + R"( + OpName %1 "myvar" + %void = OpTypeVoid + %voidfn = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %store_ty = OpTypeVector %uint 4 + %uint_2 = OpConstant %uint 2 + %uint_42 = OpConstant %uint 42 + %elem_ty = OpTypePointer Private %uint + %var_ty = OpTypePointer Private %store_ty + %1 = OpVariable %var_ty Private + %100 = OpFunction %void None %voidfn + %entry = OpLabel + %ptr = OpAccessChain %elem_ty %1 %uint_2 + %load = OpLoad %uint %ptr + %result = OpIAdd %uint %load %uint_2 + OpStore %ptr %result + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) + << assembly << p->error(); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto wgsl = test::ToString(p->program(), ast_body); + EXPECT_THAT(wgsl, Not(HasSubstr("&"))); + EXPECT_THAT(wgsl, HasSubstr(" = myvar.z;")); + EXPECT_THAT(wgsl, HasSubstr("myvar.z = ")); +} + +TEST_F(SpvParserMemoryTest, + EmitStatement_AccessChain_VectorComponent_MultiUse_NonConstIndex) { + // WGSL does not support pointer-to-vector-component, so test that we sink + // these pointers into the point of use. + const std::string assembly = Preamble() + R"( + OpName %1 "myvar" + %void = OpTypeVoid + %voidfn = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %store_ty = OpTypeVector %uint 4 + %uint_2 = OpConstant %uint 2 + %uint_42 = OpConstant %uint 42 + %elem_ty = OpTypePointer Private %uint + %var_ty = OpTypePointer Private %store_ty + %1 = OpVariable %var_ty Private + %2 = OpVariable %elem_ty Private + %100 = OpFunction %void None %voidfn + %entry = OpLabel + %idx = OpLoad %uint %2 + %ptr = OpAccessChain %elem_ty %1 %idx + %load = OpLoad %uint %ptr + %result = OpIAdd %uint %load %uint_2 + OpStore %ptr %result + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) + << assembly << p->error(); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto wgsl = test::ToString(p->program(), ast_body); + EXPECT_THAT(wgsl, Not(HasSubstr("&"))); + EXPECT_THAT(wgsl, HasSubstr(" = myvar[x_12];")); + EXPECT_THAT(wgsl, HasSubstr("myvar[x_12] = ")); +} + +TEST_F(SpvParserMemoryTest, + EmitStatement_AccessChain_VectorComponent_SinkThroughChain) { + // Test that we can sink a pointer-to-vector-component through a chain of + // instructions that propagate it. + const std::string assembly = Preamble() + R"( + OpName %1 "myvar" + %void = OpTypeVoid + %voidfn = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %store_ty = OpTypeVector %uint 4 + %uint_2 = OpConstant %uint 2 + %uint_42 = OpConstant %uint 42 + %elem_ty = OpTypePointer Private %uint + %var_ty = OpTypePointer Private %store_ty + %1 = OpVariable %var_ty Private + %100 = OpFunction %void None %voidfn + %entry = OpLabel + %ptr = OpAccessChain %elem_ty %1 %uint_2 + %ptr2 = OpCopyObject %elem_ty %ptr + %ptr3 = OpInBoundsAccessChain %elem_ty %ptr2 + %ptr4 = OpAccessChain %elem_ty %ptr3 + %load = OpLoad %uint %ptr3 + %result = OpIAdd %uint %load %uint_2 + OpStore %ptr4 %result + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) + << assembly << p->error(); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto wgsl = test::ToString(p->program(), ast_body); + EXPECT_THAT(wgsl, Not(HasSubstr("&"))); + EXPECT_THAT(wgsl, HasSubstr(" = myvar.z;")); + EXPECT_THAT(wgsl, HasSubstr("myvar.z = ")); +} + TEST_F(SpvParserMemoryTest, EmitStatement_AccessChain_Matrix) { const std::string assembly = Preamble() + R"( OpName %1 "myvar" diff --git a/test/bug/tint/413.spvasm.expected.wgsl b/test/bug/tint/413.spvasm.expected.wgsl index db6ebd4916..6ca1a05740 100644 --- a/test/bug/tint/413.spvasm.expected.wgsl +++ b/test/bug/tint/413.spvasm.expected.wgsl @@ -6,9 +6,8 @@ fn main_1() { var srcValue : vec4; let x_18 : vec4 = textureLoad(Src, vec2(0, 0), 0); srcValue = x_18; - let x_21 : ptr = &(srcValue.x); - let x_22 : u32 = *(x_21); - *(x_21) = (x_22 + bitcast(1)); + let x_22 : u32 = srcValue.x; + srcValue.x = (x_22 + bitcast(1)); let x_27 : vec4 = srcValue; textureStore(Dst, vec2(0, 0), x_27); return; diff --git a/test/bug/tint/749.spvasm.expected.wgsl b/test/bug/tint/749.spvasm.expected.wgsl index 0334e152b2..0f1392a882 100644 --- a/test/bug/tint/749.spvasm.expected.wgsl +++ b/test/bug/tint/749.spvasm.expected.wgsl @@ -861,14 +861,13 @@ fn main_1() { let x_771 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_771; - let x_205 : ptr = &(color.x); let x_772 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_772; - let x_206 : f32 = *(x_205); - let x_773 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_773; + let x_206 : f32 = color.x; + let x_773 : f32 = color.x; + color.x = 0.0; + color.x = x_773; let x_452 : vec2 = vec2(vec3(1.0, 2.0, 3.0).z, vec3(1.0, 2.0, 3.0).y); let x_774 : i32 = i_2; i_2 = 0; @@ -876,22 +875,20 @@ fn main_1() { let x_775 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_775; - let x_208 : ptr = &(color.x); let x_453 : vec3 = vec3(x_451.x, x_450.x, x_450.y); - *(x_208) = (x_206 + f32(x_201)); + color.x = (x_206 + f32(x_201)); let x_776 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_776; - let x_209 : ptr = &(uv.x); let x_777 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_777; let x_454 : vec2 = vec2(x_184.y, x_184.y); - let x_210 : f32 = *(x_209); + let x_210 : f32 = uv.x; let x_455 : vec2 = vec2(x_192.y, x_192.x); - let x_778 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_778; + let x_778 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_778; let x_779 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_779; @@ -903,9 +900,9 @@ fn main_1() { *(x_200) = 0; *(x_200) = x_781; let x_456 : vec3 = vec3(vec2(0.0, 0.0).y, x_448.y, x_448.y); - let x_782 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_782; + let x_782 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_782; let x_216 : i32 = obj.numbers[1]; let x_783 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); @@ -914,7 +911,6 @@ fn main_1() { let x_784 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_784; - let x_218 : ptr = &(color[0]); let x_785 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_785; @@ -922,10 +918,10 @@ fn main_1() { let x_786 : i32 = i_2; i_2 = 0; i_2 = x_786; - let x_219 : f32 = *(x_218); - let x_787 : f32 = *(x_218); - *(x_218) = 0.0; - *(x_218) = x_787; + let x_219 : f32 = color[0]; + let x_787 : f32 = color[0]; + color[0] = 0.0; + color[0] = x_787; let x_788 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_788; @@ -933,75 +929,73 @@ fn main_1() { color = vec3(0.0, 0.0, 0.0); color = x_789; let x_459 : vec3 = vec3(x_454.y, x_454.y, x_447.y); - let x_790 : f32 = *(x_218); - *(x_218) = 0.0; - *(x_218) = x_790; + let x_790 : f32 = color[0]; + color[0] = 0.0; + color[0] = x_790; color.x = (f32(x_216) + x_219); let x_791 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_791; } - let x_792 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_792; - let x_222 : ptr = &(uv.x); - let x_793 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_793; - let x_223 : f32 = *(x_222); - let x_794 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_794; + let x_792 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_792; + let x_793 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_793; + let x_223 : f32 = uv.x; + let x_794 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_794; let x_460 : vec3 = vec3(x_453.z, x_453.y, x_453.y); let x_795 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_795; - let x_796 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_796; + let x_796 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_796; let x_461 : vec2 = vec2(vec2(0.0, 0.0).y, vec2(0.0, 0.0).y); - let x_797 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_797; + let x_797 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_797; if ((x_223 > 0.5)) { - let x_798 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_798; + let x_798 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_798; let x_462 : vec2 = vec2(x_446.x, x_446.x); - let x_799 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_799; + let x_799 : f32 = color.x; + color.x = 0.0; + color.x = x_799; let x_229 : ptr = &(obj.numbers[2u]); - let x_800 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_800; + let x_800 : f32 = color.x; + color.x = 0.0; + color.x = x_800; let x_463 : vec3 = vec3(x_453.x, x_453.z, x_461.y); - let x_801 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_801; + let x_801 : f32 = color.x; + color.x = 0.0; + color.x = x_801; let x_230 : i32 = *(x_229); - let x_802 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_802; - let x_803 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_803; - let x_233 : ptr = &(color.y); + let x_802 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_802; + let x_803 : f32 = color.x; + color.x = 0.0; + color.x = x_803; let x_804 : i32 = *(x_229); *(x_229) = 0; *(x_229) = x_804; let x_464 : vec2 = vec2(x_450.y, x_191.x); - let x_805 : f32 = *(x_233); - *(x_233) = 0.0; - *(x_233) = x_805; - let x_234 : f32 = *(x_233); + let x_805 : f32 = color.y; + color.y = 0.0; + color.y = x_805; + let x_234 : f32 = color.y; let x_806 : i32 = *(x_229); *(x_229) = 0; *(x_229) = x_806; let x_465 : vec2 = vec2(x_463.x, x_185.x); - let x_807 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_807; + let x_807 : f32 = color.x; + color.x = 0.0; + color.x = x_807; let x_808 : i32 = i_2; i_2 = 0; i_2 = x_808; @@ -1010,74 +1004,72 @@ fn main_1() { i_2 = 0; i_2 = x_809; color.y = (f32(x_230) + x_234); - let x_810 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_810; + let x_810 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_810; } - let x_237 : ptr = &(uv[0]); let x_811 : i32 = i_2; i_2 = 0; i_2 = x_811; let x_467 : vec2 = vec2(x_191.x, x_191.x); - let x_812 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_812; - let x_238 : f32 = *(x_237); + let x_812 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_812; + let x_238 : f32 = uv[0]; let x_813 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_813; - let x_814 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_814; + let x_814 : f32 = color.x; + color.x = 0.0; + color.x = x_814; if ((x_238 > 0.75)) { - let x_815 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_815; + let x_815 : f32 = color.x; + color.x = 0.0; + color.x = x_815; let x_245 : i32 = obj.numbers[3]; - let x_816 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_816; + let x_816 : f32 = color.x; + color.x = 0.0; + color.x = x_816; let x_817 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_817; let x_468 : vec3 = vec3(x_467.x, x_467.x, x_467.x); - let x_818 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_818; - let x_248 : ptr = &(color.z); - let x_819 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_819; - let x_249 : f32 = *(x_248); + let x_818 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_818; + let x_819 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_819; + let x_249 : f32 = color.z; let x_820 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_820; let x_469 : vec3 = vec3(x_467.x, x_191.y, x_467.y); - let x_821 : f32 = *(x_248); - *(x_248) = 0.0; - *(x_248) = x_821; + let x_821 : f32 = color.z; + color.z = 0.0; + color.z = x_821; let x_822 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_822; let x_470 : vec2 = vec2(vec2(0.0, 0.0).x, vec2(0.0, 0.0).y); - let x_823 : f32 = *(x_248); - *(x_248) = 0.0; - *(x_248) = x_823; + let x_823 : f32 = color.z; + color.z = 0.0; + color.z = x_823; color.z = (x_249 + f32(x_245)); let x_824 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_824; let x_471 : vec2 = vec2(x_470.y, x_470.y); } - let x_825 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_825; + let x_825 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_825; let x_472 : vec3 = vec3(x_454.x, x_454.y, x_454.y); let x_253 : ptr = &(obj.numbers[4]); let x_254 : i32 = *(x_253); - let x_826 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_826; + let x_826 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_826; let x_827 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_827; @@ -1085,38 +1077,35 @@ fn main_1() { let x_828 : i32 = *(x_253); *(x_253) = 0; *(x_253) = x_828; - let x_256 : ptr = &(color.y); let x_474 : vec2 = vec2(x_191.x, x_184.z); - let x_829 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_829; - let x_257 : f32 = *(x_256); - let x_830 : f32 = *(x_256); - *(x_256) = 0.0; - *(x_256) = x_830; + let x_829 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_829; + let x_257 : f32 = color.y; + let x_830 : f32 = color.y; + color.y = 0.0; + color.y = x_830; let x_475 : vec2 = vec2(x_467.x, x_450.x); - let x_831 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_831; - let x_259 : ptr = &(color.y); - let x_832 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_832; + let x_831 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_831; + let x_832 : f32 = color.x; + color.x = 0.0; + color.x = x_832; let x_476 : vec2 = vec2(x_451.z, x_460.y); - *(x_259) = (x_257 + f32(x_254)); + color.y = (x_257 + f32(x_254)); let x_477 : vec3 = vec3(vec2(0.0, 0.0).x, x_472.x, vec2(0.0, 0.0).y); - let x_833 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_833; - let x_260 : ptr = &(uv.y); - let x_834 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_834; + let x_833 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_833; + let x_834 : f32 = color.x; + color.x = 0.0; + color.x = x_834; let x_478 : vec2 = vec2(x_472.x, x_472.y); - let x_835 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_835; - let x_261 : f32 = *(x_260); + let x_835 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_835; + let x_261 : f32 = uv.y; let x_836 : i32 = i_2; i_2 = 0; i_2 = x_836; @@ -1124,22 +1113,22 @@ fn main_1() { let x_837 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_837; - let x_838 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_838; + let x_838 : f32 = color.y; + color.y = 0.0; + color.y = x_838; let x_480 : vec3 = vec3(x_446.x, x_446.x, vec2(0.0, 0.0).y); - let x_839 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_839; + let x_839 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_839; if ((x_261 > 0.25)) { let x_481 : vec2 = vec2(x_447.x, x_480.z); let x_840 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_840; let x_267 : i32 = obj.numbers[5u]; - let x_841 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_841; + let x_841 : f32 = color.x; + color.x = 0.0; + color.x = x_841; let x_842 : i32 = i_2; i_2 = 0; i_2 = x_842; @@ -1147,61 +1136,60 @@ fn main_1() { i_2 = 0; i_2 = x_843; let x_270 : f32 = color.x; - let x_844 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_844; + let x_844 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_844; let x_482 : vec3 = vec3(x_455.x, x_475.y, x_455.y); let x_845 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_845; - let x_846 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_846; + let x_846 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_846; let x_847 : i32 = i_2; i_2 = 0; i_2 = x_847; let x_483 : vec3 = vec3(x_184.w, x_184.w, x_192.x); - let x_848 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_848; + let x_848 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_848; color.x = (f32(x_267) + x_270); let x_484 : vec3 = vec3(x_454.y, x_450.x, x_454.y); - let x_849 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_849; + let x_849 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_849; } - let x_850 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_850; + let x_850 : f32 = color.x; + color.x = 0.0; + color.x = x_850; let x_485 : vec3 = vec3(x_467.x, x_450.y, x_450.x); - let x_851 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_851; - let x_273 : ptr = &(uv.y); + let x_851 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_851; let x_852 : i32 = *(x_253); *(x_253) = 0; *(x_253) = x_852; - let x_274 : f32 = *(x_273); + let x_274 : f32 = uv.y; let x_853 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_853; if ((x_274 > 0.5)) { - let x_854 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_854; + let x_854 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_854; let x_486 : vec2 = vec2(x_480.y, x_455.y); let x_279 : ptr = &(obj.numbers[6u]); - let x_855 : f32 = *(x_256); - *(x_256) = 0.0; - *(x_256) = x_855; + let x_855 : f32 = color.y; + color.y = 0.0; + color.y = x_855; let x_487 : vec2 = vec2(x_449.z, x_449.y); - let x_856 : f32 = *(x_273); - *(x_273) = 0.0; - *(x_273) = x_856; + let x_856 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_856; let x_280 : i32 = *(x_279); - let x_857 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_857; + let x_857 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_857; let x_858 : i32 = i_2; i_2 = 0; i_2 = x_858; @@ -1213,9 +1201,9 @@ fn main_1() { let x_860 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_860; - let x_861 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_861; + let x_861 : f32 = color.x; + color.x = 0.0; + color.x = x_861; let x_489 : vec2 = vec2(x_475.y, x_475.x); let x_862 : i32 = *(x_279); *(x_279) = 0; @@ -1228,30 +1216,29 @@ fn main_1() { obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_864; color.y = (f32(x_280) + x_283); - let x_865 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_865; + let x_865 : f32 = color.x; + color.x = 0.0; + color.x = x_865; let x_491 : vec2 = vec2(vec3(1.0, 2.0, 3.0).y, x_454.x); - let x_866 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_866; + let x_866 : f32 = color.y; + color.y = 0.0; + color.y = x_866; } let x_492 : vec2 = vec2(x_455.y, x_455.y); - let x_867 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_867; - let x_286 : ptr = &(uv.y); - let x_287 : f32 = *(x_286); + let x_867 : f32 = color.x; + color.x = 0.0; + color.x = x_867; + let x_287 : f32 = uv.y; let x_868 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_868; let x_493 : vec2 = vec2(x_475.x, x_475.y); - let x_869 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_869; - let x_870 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_870; + let x_869 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_869; + let x_870 : f32 = color.y; + color.y = 0.0; + color.y = x_870; let x_494 : vec3 = vec3(x_191.x, x_191.y, x_191.y); let x_871 : i32 = *(x_253); *(x_253) = 0; @@ -1260,59 +1247,58 @@ fn main_1() { let x_872 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_872; - let x_873 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_873; + let x_873 : f32 = color.x; + color.x = 0.0; + color.x = x_873; let x_495 : vec3 = vec3(x_192.y, x_192.x, x_192.y); let x_874 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_874; let x_293 : i32 = obj.numbers[7]; - let x_875 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_875; + let x_875 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_875; let x_496 : vec3 = vec3(x_475.x, x_467.y, x_467.x); - let x_876 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_876; + let x_876 : f32 = color.y; + color.y = 0.0; + color.y = x_876; let x_497 : vec2 = vec2(x_477.x, x_461.y); let x_877 : i32 = *(x_200); *(x_200) = 0; *(x_200) = x_877; - let x_878 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_878; + let x_878 : f32 = color.y; + color.y = 0.0; + color.y = x_878; let x_498 : vec3 = vec3(x_478.x, x_478.y, x_478.x); - let x_879 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_879; + let x_879 : f32 = color.x; + color.x = 0.0; + color.x = x_879; let x_296 : f32 = color.z; - let x_880 : f32 = *(x_273); - *(x_273) = 0.0; - *(x_273) = x_880; + let x_880 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_880; let x_499 : vec2 = vec2(x_184.x, x_184.y); - let x_881 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_881; - let x_882 : f32 = *(x_286); - *(x_286) = 0.0; - *(x_286) = x_882; - let x_298 : ptr = &(color.z); - let x_883 : f32 = *(x_273); - *(x_273) = 0.0; - *(x_273) = x_883; + let x_881 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_881; + let x_882 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_882; + let x_883 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_883; let x_500 : vec3 = vec3(x_499.y, x_499.y, x_494.z); - let x_884 : f32 = *(x_298); - *(x_298) = 0.0; - *(x_298) = x_884; - *(x_298) = (f32(x_293) + x_296); - let x_885 : f32 = *(x_256); - *(x_256) = 0.0; - *(x_256) = x_885; + let x_884 : f32 = color.z; + color.z = 0.0; + color.z = x_884; + color.z = (f32(x_293) + x_296); + let x_885 : f32 = color.y; + color.y = 0.0; + color.y = x_885; let x_501 : vec2 = vec2(x_453.x, x_453.z); - let x_886 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_886; + let x_886 : f32 = color.x; + color.x = 0.0; + color.x = x_886; } let x_887 : i32 = i_2; i_2 = 0; @@ -1330,65 +1316,62 @@ fn main_1() { let x_890 : i32 = *(x_300); *(x_300) = 0; *(x_300) = x_890; - let x_891 : f32 = *(x_256); - *(x_256) = 0.0; - *(x_256) = x_891; + let x_891 : f32 = color.y; + color.y = 0.0; + color.y = x_891; let x_504 : vec2 = vec2(x_453.y, vec2(0.0, 0.0).x); - let x_892 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_892; - let x_303 : ptr = &(color.z); + let x_892 : f32 = color.x; + color.x = 0.0; + color.x = x_892; let x_505 : vec3 = vec3(x_504.x, x_504.y, x_504.x); - let x_893 : f32 = *(x_303); - *(x_303) = 0.0; - *(x_303) = x_893; - let x_304 : f32 = *(x_303); - let x_894 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_894; + let x_893 : f32 = color.z; + color.z = 0.0; + color.z = x_893; + let x_304 : f32 = color.z; + let x_894 : f32 = color.x; + color.x = 0.0; + color.x = x_894; let x_506 : vec2 = vec2(x_493.x, x_492.x); let x_895 : i32 = *(x_253); *(x_253) = 0; *(x_253) = x_895; - let x_896 : f32 = *(x_286); - *(x_286) = 0.0; - *(x_286) = x_896; + let x_896 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_896; let x_507 : vec2 = vec2(x_461.x, x_447.x); - let x_897 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_897; - let x_306 : ptr = &(color.z); - *(x_306) = (x_304 + f32(x_301)); + let x_897 : f32 = color.y; + color.y = 0.0; + color.y = x_897; + color.z = (x_304 + f32(x_301)); let x_898 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_898; - let x_899 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_899; + let x_899 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_899; let x_508 : vec3 = vec3(x_461.y, x_461.x, x_506.y); - let x_900 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_900; + let x_900 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_900; let x_308 : f32 = uv.x; - let x_901 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_901; - let x_309 : ptr = &(uv.y); + let x_901 : f32 = color.y; + color.y = 0.0; + color.y = x_901; let x_509 : vec3 = vec3(x_503.y, x_503.x, x_448.z); - let x_902 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_902; - let x_310 : f32 = *(x_309); - let x_903 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_903; - let x_904 : f32 = *(x_306); - *(x_306) = 0.0; - *(x_306) = x_904; + let x_902 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_902; + let x_310 : f32 = uv.y; + let x_903 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_903; + let x_904 : f32 = color.z; + color.z = 0.0; + color.z = x_904; let x_510 : vec3 = vec3(vec3(1.0, 2.0, 3.0).y, x_485.y, x_485.z); - let x_905 : f32 = *(x_306); - *(x_306) = 0.0; - *(x_306) = x_905; + let x_905 : f32 = color.z; + color.z = 0.0; + color.z = x_905; let x_906 : i32 = i_2; i_2 = 0; i_2 = x_906; @@ -1396,17 +1379,17 @@ fn main_1() { let x_907 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_907; - let x_908 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_908; + let x_908 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_908; let x_512 : vec3 = vec3(x_455.y, x_455.y, x_455.y); let x_909 : i32 = *(x_253); *(x_253) = 0; *(x_253) = x_909; if ((abs((x_308 - x_310)) < 0.25)) { - let x_910 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_910; + let x_910 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_910; let x_911 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_911; @@ -1416,17 +1399,17 @@ fn main_1() { *(x_300) = x_912; let x_317 : i32 = obj.numbers[9u]; let x_514 : vec3 = vec3(x_474.y, x_474.y, x_474.y); - let x_913 : f32 = *(x_260); - *(x_260) = 0.0; - *(x_260) = x_913; + let x_913 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_913; let x_320 : f32 = color.x; - let x_914 : f32 = *(x_286); - *(x_286) = 0.0; - *(x_286) = x_914; + let x_914 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_914; let x_515 : vec2 = vec2(x_502.x, x_502.y); - let x_915 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_915; + let x_915 : f32 = color.x; + color.x = 0.0; + color.x = x_915; let x_916 : vec3 = color; color = vec3(0.0, 0.0, 0.0); color = x_916; @@ -1434,61 +1417,60 @@ fn main_1() { let x_917 : vec2 = uv; uv = vec2(0.0, 0.0); uv = x_917; - let x_322 : ptr = &(color.x); - let x_918 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_918; + let x_918 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_918; let x_517 : vec3 = vec3(vec2(0.0, 0.0).x, vec2(0.0, 0.0).x, vec2(0.0, 0.0).y); - *(x_322) = (f32(x_317) + x_320); - let x_919 : f32 = *(x_322); - *(x_322) = 0.0; - *(x_322) = x_919; + color.x = (f32(x_317) + x_320); + let x_919 : f32 = color.x; + color.x = 0.0; + color.x = x_919; let x_518 : vec3 = vec3(x_480.y, x_508.x, x_480.x); - let x_920 : f32 = *(x_205); - *(x_205) = 0.0; - *(x_205) = x_920; + let x_920 : f32 = color.x; + color.x = 0.0; + color.x = x_920; } - let x_921 : f32 = *(x_309); - *(x_309) = 0.0; - *(x_309) = x_921; + let x_921 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_921; let x_325 : vec3 = color; - let x_922 : f32 = *(x_237); - *(x_237) = 0.0; - *(x_237) = x_922; + let x_922 : f32 = uv[0]; + uv[0] = 0.0; + uv[0] = x_922; let x_519 : vec3 = vec3(x_447.x, x_446.x, x_446.y); let x_326 : vec3 = normalize(x_325); - let x_923 : f32 = *(x_209); - *(x_209) = 0.0; - *(x_209) = x_923; + let x_923 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_923; let x_924 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_924; let x_925 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_925; - let x_926 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_926; + let x_926 : f32 = color.y; + color.y = 0.0; + color.y = x_926; let x_520 : vec2 = vec2(x_506.y, x_519.y); - let x_927 : f32 = *(x_259); - *(x_259) = 0.0; - *(x_259) = x_927; + let x_927 : f32 = color.y; + color.y = 0.0; + color.y = x_927; let x_330 : vec4 = vec4(x_326.x, x_326.y, x_326.z, 1.0); - let x_928 : f32 = *(x_309); - *(x_309) = 0.0; - *(x_309) = x_928; + let x_928 : f32 = uv.y; + uv.y = 0.0; + uv.y = x_928; let x_521 : vec3 = vec3(vec3(1.0, 2.0, 3.0).y, vec3(1.0, 2.0, 3.0).y, x_520.y); - let x_929 : f32 = *(x_222); - *(x_222) = 0.0; - *(x_222) = x_929; + let x_929 : f32 = uv.x; + uv.x = 0.0; + uv.x = x_929; x_GLF_color = x_330; let x_930 : QuicksortObject = obj; obj = QuicksortObject(array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); obj = x_930; let x_522 : vec3 = vec3(x_330.w, x_330.y, x_493.x); - let x_931 : f32 = *(x_208); - *(x_208) = 0.0; - *(x_208) = x_931; + let x_931 : f32 = color.x; + color.x = 0.0; + color.x = x_931; return; } diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl index 4df9f94d7d..132e8f09d8 100644 --- a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl @@ -25,13 +25,9 @@ fn main_1() { let x_52 : i32 = x_51.f1; x_6 = x_52; x_41 = x_51.f2; - let x_55 : ptr = &(x_41[0].x); let x_56 : mat2x2 = x_41; - let x_58 : ptr = &(x_41[1].x); let x_59 : mat2x2 = x_41; - let x_62 : ptr = &(x_41[0].y); let x_63 : mat2x2 = x_41; - let x_65 : ptr = &(x_41[1].y); let x_66 : mat2x2 = x_41; x_GLF_color = vec4(f32(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), f32(x_52)); return; diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl index 8f6639e288..b35920e242 100644 --- a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl @@ -37,9 +37,8 @@ fn main_1() { continuing { let x_72 : f32 = x_7.one; - let x_73 : ptr = &(m44[x_10][x_11]); - let x_74 : f32 = *(x_73); - *(x_73) = (x_74 + x_72); + let x_74 : f32 = m44[x_10][x_11]; + m44[x_10][x_11] = (x_74 + x_72); x_8 = (x_11 + 1); x_11_phi = x_8; } diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl index 41e57f4774..1fea790e4b 100644 --- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl @@ -55,7 +55,7 @@ fn main_1() { x_56_phi = x_68; } else { x_76_phi = x_55; - if (((f32(x_58) % round(x_49)) <= 0.01)) { + if (((f32(x_58) - (round(x_49) * floor((f32(x_58) / round(x_49))))) <= 0.01)) { x_75 = (x_55 + 100.0); x_76_phi = x_75; } @@ -95,8 +95,7 @@ fn main_1() { var x_119_phi : f32; var x_120_phi : bool; let x_85 : f32 = x_85_phi; - let x_86 : ptr = &(c.x); - *(x_86) = x_85; + c.x = x_85; x_88 = gl_FragCoord.y; switch(0u) { default: { @@ -123,7 +122,7 @@ fn main_1() { x_93_phi = x_105; } else { x_113_phi = x_92; - if (((f32(x_95) % round(x_49)) <= 0.01)) { + if (((f32(x_95) - (round(x_49) * floor((f32(x_95) / round(x_49))))) <= 0.01)) { x_112 = (x_92 + 100.0); x_113_phi = x_112; } @@ -155,10 +154,9 @@ fn main_1() { } } let x_122 : f32 = x_122_phi; - let x_123 : ptr = &(c.y); - *(x_123) = x_122; - let x_124 : f32 = *(x_86); - let x_125 : f32 = *(x_123); + c.y = x_122; + let x_124 : f32 = c.x; + let x_125 : f32 = c.y; c.z = (x_124 + x_125); x_129_phi = 0; loop { @@ -168,12 +166,11 @@ fn main_1() { } else { break; } - let x_135 : ptr = &(c[x_129]); - let x_136 : f32 = *(x_135); + let x_136 : f32 = c[x_129]; if ((x_136 >= 1.0)) { - let x_140 : f32 = *(x_135); - let x_141 : f32 = *(x_135); - *(x_135) = (x_140 * x_141); + let x_140 : f32 = c[x_129]; + let x_141 : f32 = c[x_129]; + c[x_129] = (x_140 * x_141); } continuing { diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl index c2ad2e8b47..8b6ba81e69 100644 --- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl @@ -57,7 +57,7 @@ fn main_1() { x_58_phi = x_70; } else { x_78_phi = x_57; - if (((f32(x_60) % round(x_50)) <= 0.01)) { + if (((f32(x_60) - (round(x_50) * floor((f32(x_60) / round(x_50))))) <= 0.01)) { x_77 = (x_57 + 100.0); x_78_phi = x_77; } @@ -97,9 +97,8 @@ fn main_1() { var x_125_phi : f32; var x_126_phi : bool; let x_87 : f32 = x_87_phi; - let x_88 : ptr = &(c.x); let x_89 : vec4 = vec4(x_84, 0.400000006, x_83, 0.400000006); - *(x_88) = x_87; + c.x = x_87; x_92 = gl_FragCoord.y; switch(0u) { default: { @@ -128,7 +127,7 @@ fn main_1() { x_99_phi = x_111; } else { x_119_phi = x_98; - if (((f32(x_101) % round(x_50)) <= 0.01)) { + if (((f32(x_101) - (round(x_50) * floor((f32(x_101) / round(x_50))))) <= 0.01)) { x_118 = (x_98 + 100.0); x_119_phi = x_118; } @@ -160,10 +159,9 @@ fn main_1() { } } let x_128 : f32 = x_128_phi; - let x_129 : ptr = &(c.y); - *(x_129) = x_128; - let x_130 : f32 = *(x_88); - let x_131 : f32 = *(x_129); + c.y = x_128; + let x_130 : f32 = c.x; + let x_131 : f32 = c.y; c.z = (x_130 + x_131); x_135_phi = 0; loop { @@ -173,12 +171,11 @@ fn main_1() { } else { break; } - let x_141 : ptr = &(c[x_135]); - let x_142 : f32 = *(x_141); + let x_142 : f32 = c[x_135]; if ((x_142 >= 1.0)) { - let x_146 : f32 = *(x_141); - let x_147 : f32 = *(x_141); - *(x_141) = (x_146 * x_147); + let x_146 : f32 = c[x_135]; + let x_147 : f32 = c[x_135]; + c[x_135] = (x_146 * x_147); } continuing { diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl index 20e6da9e58..dbdad85fdb 100644 --- a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl @@ -55,7 +55,7 @@ fn main_1() { x_56_phi = x_68; } else { x_76_phi = x_55; - if (((f32(x_58) % round(x_49)) <= 0.01)) { + if (((f32(x_58) - (round(x_49) * floor((f32(x_58) / round(x_49))))) <= 0.01)) { x_75 = (x_55 + 100.0); x_76_phi = x_75; } @@ -95,8 +95,7 @@ fn main_1() { var x_119_phi : f32; var x_120_phi : bool; let x_85 : f32 = x_85_phi; - let x_86 : ptr = &(c.x); - *(x_86) = x_85; + c.x = x_85; x_88 = gl_FragCoord.y; switch(0u) { default: { @@ -123,7 +122,7 @@ fn main_1() { x_93_phi = x_113; } else { x_112_phi = x_92; - if (((f32(x_95) % round(x_49)) <= 0.01)) { + if (((f32(x_95) - (round(x_49) * floor((f32(x_95) / round(x_49))))) <= 0.01)) { x_111 = (x_92 + 100.0); x_112_phi = x_111; } @@ -155,10 +154,9 @@ fn main_1() { } } let x_122 : f32 = x_122_phi; - let x_123 : ptr = &(c.y); - *(x_123) = x_122; - let x_124 : f32 = *(x_86); - let x_125 : f32 = *(x_123); + c.y = x_122; + let x_124 : f32 = c.x; + let x_125 : f32 = c.y; c.z = (x_124 + x_125); x_129_phi = 0; loop { @@ -168,12 +166,11 @@ fn main_1() { } else { break; } - let x_135 : ptr = &(c[x_129]); - let x_136 : f32 = *(x_135); + let x_136 : f32 = c[x_129]; if ((x_136 >= 1.0)) { - let x_140 : f32 = *(x_135); - let x_141 : f32 = *(x_135); - *(x_135) = (x_140 * x_141); + let x_140 : f32 = c[x_129]; + let x_141 : f32 = c[x_129]; + c[x_129] = (x_140 * x_141); } continuing { diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl index 5e10336f52..5502287fa5 100644 --- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl @@ -10,10 +10,10 @@ var gl_FragCoord : vec4; var x_GLF_color : vec4; fn trace_vi2_(pos : ptr>) -> vec4 { - var indexable : array; - var indexable_1 : array; + var indexable : array; + var indexable_1 : array; var p : f32; - var indexable_2 : array; + var indexable_2 : array; loop { var x_247 : bool; var x_248_phi : bool; @@ -24,14 +24,14 @@ fn trace_vi2_(pos : ptr>) -> vec4 { } let x_231 : i32 = (*(pos)).x; let x_233 : i32 = (*(pos)).y; - indexable = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_235 : i32 = indexable[x_233]; let x_237 : bool = (x_231 < (x_235 + 15)); x_248_phi = x_237; if (x_237) { let x_241 : i32 = (*(pos)).x; let x_243 : i32 = (*(pos)).y; - indexable_1 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable_1 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_245 : i32 = indexable_1[x_243]; x_247 = (x_241 > (x_245 - 15)); x_248_phi = x_247; @@ -40,7 +40,7 @@ fn trace_vi2_(pos : ptr>) -> vec4 { if (x_248) { let x_252 : i32 = (*(pos)).x; let x_254 : i32 = (*(pos)).y; - indexable_2 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable_2 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_256 : i32 = indexable_2[x_254]; p = ((15.0 - abs(f32((x_252 - x_256)))) / 15.0); let x_262 : f32 = p; @@ -48,9 +48,8 @@ fn trace_vi2_(pos : ptr>) -> vec4 { let x_264 : f32 = p; return vec4(x_262, x_263, x_264, 1.0); } - let x_266 : ptr = &((*(pos)).y); - let x_267 : i32 = *(x_266); - *(x_266) = (x_267 + 1); + let x_267 : i32 = (*(pos)).y; + (*(pos)).y = (x_267 + 1); } return vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl index 3970047a13..34fe03dd5c 100644 --- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl @@ -10,35 +10,34 @@ var gl_FragCoord : vec4; var x_GLF_color : vec4; fn trace_vi2_(pos : ptr>) -> vec4 { - var indexable : array; - var indexable_1 : array; + var indexable : array; + var indexable_1 : array; var p : f32; - var indexable_2 : array; + var indexable_2 : array; loop { var x_251 : bool; var x_252_phi : bool; - let x_228 : ptr = &((*(pos)).y); - let x_229 : i32 = *(x_228); + let x_229 : i32 = (*(pos)).y; if ((x_229 != 256)) { } else { break; } let x_233 : i32 = (*(pos)).x; let x_235 : i32 = (*(pos)).y; - indexable = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_237 : i32 = indexable[x_235]; - let x_238 : array = indexable; - indexable = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - let x_239 : i32 = *(x_228); - *(x_228) = 0; - *(x_228) = x_239; + let x_238 : array = indexable; + indexable = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + let x_239 : i32 = (*(pos)).y; + (*(pos)).y = 0; + (*(pos)).y = x_239; indexable = x_238; let x_241 : bool = (x_233 < (x_237 + 15)); x_252_phi = x_241; if (x_241) { let x_245 : i32 = (*(pos)).x; let x_247 : i32 = (*(pos)).y; - indexable_1 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable_1 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_249 : i32 = indexable_1[x_247]; x_251 = (x_245 > (x_249 - 15)); x_252_phi = x_251; @@ -47,7 +46,7 @@ fn trace_vi2_(pos : ptr>) -> vec4 { if (x_252) { let x_256 : i32 = (*(pos)).x; let x_258 : i32 = (*(pos)).y; - indexable_2 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); + indexable_2 = array(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94); let x_260 : i32 = indexable_2[x_258]; p = ((15.0 - abs(f32((x_256 - x_260)))) / 15.0); let x_266 : f32 = p; @@ -55,9 +54,8 @@ fn trace_vi2_(pos : ptr>) -> vec4 { let x_268 : f32 = p; return vec4(x_266, x_267, x_268, 1.0); } - let x_270 : ptr = &((*(pos)).y); - let x_271 : i32 = *(x_270); - *(x_270) = (x_271 + 1); + let x_271 : i32 = (*(pos)).y; + (*(pos)).y = (x_271 + 1); } return vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl index 5688188242..2e1bc0e0dd 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl @@ -62,7 +62,7 @@ fn main_1() { x_59_phi = x_71; } else { x_79_phi = x_58; - if (((f32(x_61) % round(x_52)) <= 0.01)) { + if (((f32(x_61) - (round(x_52) * floor((f32(x_61) / round(x_52))))) <= 0.01)) { x_78 = (x_58 + 100.0); x_79_phi = x_78; } @@ -107,8 +107,7 @@ fn main_1() { var x_136_phi : f32; var x_137_phi : bool; let x_95 : f32 = x_95_phi; - let x_96 : ptr = &(c.x); - *(x_96) = x_95; + c.x = x_95; x_98 = gl_FragCoord.y; switch(0u) { default: { @@ -135,7 +134,7 @@ fn main_1() { x_103_phi = x_115; } else { x_123_phi = x_102; - if (((f32(x_105) % round(x_52)) <= 0.01)) { + if (((f32(x_105) - (round(x_52) * floor((f32(x_105) / round(x_52))))) <= 0.01)) { x_122 = (x_102 + 100.0); x_123_phi = x_122; } @@ -172,10 +171,9 @@ fn main_1() { } } let x_139 : f32 = x_139_phi; - let x_140 : ptr = &(c.y); - *(x_140) = x_139; - let x_141 : f32 = *(x_96); - let x_142 : f32 = *(x_140); + c.y = x_139; + let x_141 : f32 = c.x; + let x_142 : f32 = c.y; c.z = (x_141 + x_142); x_146_phi = 0; loop { @@ -185,12 +183,11 @@ fn main_1() { } else { break; } - let x_152 : ptr = &(c[x_146]); - let x_153 : f32 = *(x_152); + let x_153 : f32 = c[x_146]; if ((x_153 >= 1.0)) { - let x_157 : f32 = *(x_152); - let x_158 : f32 = *(x_152); - *(x_152) = (x_157 * x_158); + let x_157 : f32 = c[x_146]; + let x_158 : f32 = c[x_146]; + c[x_146] = (x_157 * x_158); let x_161 : f32 = x_6.injectionSwitch.x; let x_163 : f32 = x_6.injectionSwitch.y; if ((x_161 > x_163)) { diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl index ba37d915bc..eceedd3bb5 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl @@ -34,7 +34,7 @@ fn compute_value_f1_f1_(limit : ptr, thirty_two : ptr = &(c.x); - *(x_58) = x_57; + c.x = x_57; let x_60 : f32 = gl_FragCoord.y; param_2 = x_60; param_3 = x_54; let x_61 : f32 = compute_value_f1_f1_(&(param_2), &(param_3)); - let x_62 : ptr = &(c.y); - *(x_62) = x_61; - let x_63 : f32 = *(x_58); - let x_64 : f32 = *(x_62); + c.y = x_61; + let x_63 : f32 = c.x; + let x_64 : f32 = c.y; c.z = (x_63 + x_64); x_68_phi = 0; loop { @@ -90,12 +88,11 @@ fn main_1() { } else { break; } - let x_74 : ptr = &(c[x_68]); - let x_75 : f32 = *(x_74); + let x_75 : f32 = c[x_68]; if ((x_75 >= 1.0)) { - let x_79 : f32 = *(x_74); - let x_80 : f32 = *(x_74); - *(x_74) = (x_79 * x_80); + let x_79 : f32 = c[x_68]; + let x_80 : f32 = c[x_68]; + c[x_68] = (x_79 * x_80); } continuing { diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl index 57edb9b503..503ae49f35 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl @@ -41,7 +41,7 @@ fn compute_value_f1_f1_(limit : ptr, thirty_two : ptr = &(c.x); - *(x_62) = x_61; + c.x = x_61; let x_64 : f32 = gl_FragCoord.y; param_2 = x_64; param_3 = x_58; let x_65 : f32 = compute_value_f1_f1_(&(param_2), &(param_3)); c.y = x_65; - let x_67 : f32 = *(x_62); + let x_67 : f32 = c.x; let x_68 : vec3 = c; x_54 = x_68; let x_70 : f32 = x_54.y; @@ -99,17 +98,16 @@ fn main_1() { } else { break; } - let x_80 : ptr = &(c[x_74]); - let x_81 : f32 = *(x_80); + let x_81 : f32 = c[x_74]; if ((x_81 >= 1.0)) { let x_86 : f32 = x_16.injectionSwitch.x; let x_88 : f32 = x_16.injectionSwitch.y; if ((x_86 > x_88)) { discard; } - let x_92 : f32 = *(x_80); - let x_93 : f32 = *(x_80); - *(x_80) = (x_92 * x_93); + let x_92 : f32 = c[x_74]; + let x_93 : f32 = c[x_74]; + c[x_74] = (x_92 * x_93); } continuing { diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl index d2eec410b9..a1ef23053b 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl @@ -36,42 +36,34 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a_1 : ptr = &((*(p)).x); - let x_95 : f32 = *(x_94); - let x_96 : ptr = &((*(a_1)).x); - let x_97 : f32 = *(x_96); - let x_99 : ptr = &((*(p)).y); - let x_100 : f32 = *(x_99); - let x_101 : ptr = &((*(a_1)).y); - let x_102 : f32 = *(x_101); - let x_105 : ptr = &((*(b_1)).x); - let x_106 : f32 = *(x_105); - let x_107 : f32 = *(x_96); - let x_109 : ptr = &((*(b_1)).y); - let x_110 : f32 = *(x_109); - let x_111 : f32 = *(x_101); + let x_95 : f32 = (*(p)).x; + let x_97 : f32 = (*(a_1)).x; + let x_100 : f32 = (*(p)).y; + let x_102 : f32 = (*(a_1)).y; + let x_106 : f32 = (*(b_1)).x; + let x_107 : f32 = (*(a_1)).x; + let x_110 : f32 = (*(b_1)).y; + let x_111 : f32 = (*(a_1)).y; param = vec2((x_95 - x_97), (x_100 - x_102)); param_1 = vec2((x_106 - x_107), (x_110 - x_111)); let x_114 : f32 = cross2d_vf2_vf2_(&(param), &(param_1)); pab = x_114; - let x_115 : f32 = *(x_94); - let x_116 : f32 = *(x_105); - let x_118 : f32 = *(x_99); - let x_119 : f32 = *(x_109); - let x_122 : ptr = &((*(c)).x); - let x_123 : f32 = *(x_122); - let x_124 : f32 = *(x_105); - let x_126 : ptr = &((*(c)).y); - let x_127 : f32 = *(x_126); - let x_128 : f32 = *(x_109); + let x_115 : f32 = (*(p)).x; + let x_116 : f32 = (*(b_1)).x; + let x_118 : f32 = (*(p)).y; + let x_119 : f32 = (*(b_1)).y; + let x_123 : f32 = (*(c)).x; + let x_124 : f32 = (*(b_1)).x; + let x_127 : f32 = (*(c)).y; + let x_128 : f32 = (*(b_1)).y; param_2 = vec2((x_115 - x_116), (x_118 - x_119)); param_3 = vec2((x_123 - x_124), (x_127 - x_128)); let x_131 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3)); pbc = x_131; - let x_134 : bool = ((x_114 < 0.0) && (x_131 < 0.0)); + let x_134 : bool = ((x_114 < 0.0) & (x_131 < 0.0)); x_141_phi = x_134; if (!(x_134)) { - x_140 = ((x_114 >= 0.0) && (x_131 >= 0.0)); + x_140 = ((x_114 >= 0.0) & (x_131 >= 0.0)); x_141_phi = x_140; } let x_141 : bool = x_141_phi; @@ -81,22 +73,22 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a_1 : ptr((x_145 - x_146), (x_148 - x_149)); param_5 = vec2((x_152 - x_153), (x_155 - x_156)); let x_159 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5)); pca = x_159; - let x_162 : bool = ((x_114 < 0.0) && (x_159 < 0.0)); + let x_162 : bool = ((x_114 < 0.0) & (x_159 < 0.0)); x_169_phi = x_162; if (!(x_162)) { - x_168 = ((x_114 >= 0.0) && (x_159 >= 0.0)); + x_168 = ((x_114 >= 0.0) & (x_159 >= 0.0)); x_169_phi = x_168; } let x_169 : bool = x_169_phi; diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl index 11cfd54ef8..7c75dff34c 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl @@ -31,72 +31,64 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a_1 : ptr = &((*(p)).x); - let x_88 : f32 = *(x_87); - let x_89 : ptr = &((*(a_1)).x); - let x_90 : f32 = *(x_89); - let x_92 : ptr = &((*(p)).y); - let x_93 : f32 = *(x_92); - let x_94 : ptr = &((*(a_1)).y); - let x_95 : f32 = *(x_94); - let x_98 : ptr = &((*(b_1)).x); - let x_99 : f32 = *(x_98); - let x_100 : f32 = *(x_89); - let x_102 : ptr = &((*(b_1)).y); - let x_103 : f32 = *(x_102); - let x_104 : f32 = *(x_94); + let x_88 : f32 = (*(p)).x; + let x_90 : f32 = (*(a_1)).x; + let x_93 : f32 = (*(p)).y; + let x_95 : f32 = (*(a_1)).y; + let x_99 : f32 = (*(b_1)).x; + let x_100 : f32 = (*(a_1)).x; + let x_103 : f32 = (*(b_1)).y; + let x_104 : f32 = (*(a_1)).y; param = vec2((x_88 - x_90), (x_93 - x_95)); param_1 = vec2((x_99 - x_100), (x_103 - x_104)); let x_107 : f32 = cross2d_vf2_vf2_(&(param), &(param_1)); pab = x_107; - let x_108 : f32 = *(x_87); - let x_109 : f32 = *(x_98); - let x_111 : f32 = *(x_92); - let x_112 : f32 = *(x_102); - let x_115 : ptr = &((*(c)).x); - let x_116 : f32 = *(x_115); - let x_117 : f32 = *(x_98); - let x_119 : ptr = &((*(c)).y); - let x_120 : f32 = *(x_119); - let x_121 : f32 = *(x_102); + let x_108 : f32 = (*(p)).x; + let x_109 : f32 = (*(b_1)).x; + let x_111 : f32 = (*(p)).y; + let x_112 : f32 = (*(b_1)).y; + let x_116 : f32 = (*(c)).x; + let x_117 : f32 = (*(b_1)).x; + let x_120 : f32 = (*(c)).y; + let x_121 : f32 = (*(b_1)).y; param_2 = vec2((x_108 - x_109), (x_111 - x_112)); param_3 = vec2((x_116 - x_117), (x_120 - x_121)); let x_124 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3)); pbc = x_124; let x_125 : f32 = pab; let x_127 : f32 = pbc; - let x_129 : bool = ((x_125 < 0.0) && (x_127 < 0.0)); + let x_129 : bool = ((x_125 < 0.0) & (x_127 < 0.0)); x_138_phi = x_129; if (!(x_129)) { let x_133 : f32 = pab; let x_135 : f32 = pbc; - x_137 = ((x_133 >= 0.0) && (x_135 >= 0.0)); + x_137 = ((x_133 >= 0.0) & (x_135 >= 0.0)); x_138_phi = x_137; } let x_138 : bool = x_138_phi; if (!(x_138)) { return 0; } - let x_142 : f32 = *(x_87); - let x_143 : f32 = *(x_115); - let x_145 : f32 = *(x_92); - let x_146 : f32 = *(x_119); - let x_149 : f32 = *(x_89); - let x_150 : f32 = *(x_115); - let x_152 : f32 = *(x_94); - let x_153 : f32 = *(x_119); + let x_142 : f32 = (*(p)).x; + let x_143 : f32 = (*(c)).x; + let x_145 : f32 = (*(p)).y; + let x_146 : f32 = (*(c)).y; + let x_149 : f32 = (*(a_1)).x; + let x_150 : f32 = (*(c)).x; + let x_152 : f32 = (*(a_1)).y; + let x_153 : f32 = (*(c)).y; param_4 = vec2((x_142 - x_143), (x_145 - x_146)); param_5 = vec2((x_149 - x_150), (x_152 - x_153)); let x_156 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5)); pca = x_156; let x_157 : f32 = pab; let x_159 : f32 = pca; - let x_161 : bool = ((x_157 < 0.0) && (x_159 < 0.0)); + let x_161 : bool = ((x_157 < 0.0) & (x_159 < 0.0)); x_170_phi = x_161; if (!(x_161)) { let x_165 : f32 = pab; let x_167 : f32 = pca; - x_169 = ((x_165 >= 0.0) && (x_167 >= 0.0)); + x_169 = ((x_165 >= 0.0) & (x_167 >= 0.0)); x_170_phi = x_169; } let x_170 : bool = x_170_phi; diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl index d58c35ba03..d4883c72f7 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl @@ -38,17 +38,16 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a_1 : ptr = &((*(c)).y); - let x_107 : f32 = *(x_106); + let x_107 : f32 = (*(c)).y; let x_108 : vec2 = vec2(0.0, x_107); if (true) { - let x_112 : f32 = *(x_106); + let x_112 : f32 = (*(c)).y; x_97 = x_112; } else { x_97 = 1.0; } let x_113 : f32 = x_97; - let x_114 : f32 = *(x_106); + let x_114 : f32 = (*(c)).y; let x_116 : vec2 = vec2(1.0, max(x_113, x_114)); let x_117 : vec2 = vec2(x_108.x, x_108.y); x_96 = x_107; @@ -57,76 +56,68 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a_1 : ptr = &((*(c)).y); - let x_120 : f32 = *(x_119); - let x_121 : f32 = *(x_119); + let x_120 : f32 = (*(c)).y; + let x_121 : f32 = (*(c)).y; let x_122 : f32 = var_y; clamp_y = clamp(x_120, x_121, x_122); - let x_124 : ptr = &((*(p)).x); - let x_125 : f32 = *(x_124); - let x_126 : ptr = &((*(a_1)).x); - let x_127 : f32 = *(x_126); - let x_129 : ptr = &((*(p)).y); - let x_130 : f32 = *(x_129); - let x_131 : ptr = &((*(a_1)).y); - let x_132 : f32 = *(x_131); - let x_135 : ptr = &((*(b_1)).x); - let x_136 : f32 = *(x_135); - let x_137 : f32 = *(x_126); - let x_139 : ptr = &((*(b_1)).y); - let x_140 : f32 = *(x_139); - let x_141 : f32 = *(x_131); + let x_125 : f32 = (*(p)).x; + let x_127 : f32 = (*(a_1)).x; + let x_130 : f32 = (*(p)).y; + let x_132 : f32 = (*(a_1)).y; + let x_136 : f32 = (*(b_1)).x; + let x_137 : f32 = (*(a_1)).x; + let x_140 : f32 = (*(b_1)).y; + let x_141 : f32 = (*(a_1)).y; param = vec2((x_125 - x_127), (x_130 - x_132)); param_1 = vec2((x_136 - x_137), (x_140 - x_141)); let x_144 : f32 = cross2d_vf2_vf2_(&(param), &(param_1)); pab = x_144; - let x_145 : f32 = *(x_124); - let x_146 : f32 = *(x_135); - let x_148 : f32 = *(x_129); - let x_149 : f32 = *(x_139); - let x_152 : ptr = &((*(c)).x); - let x_153 : f32 = *(x_152); - let x_154 : f32 = *(x_135); + let x_145 : f32 = (*(p)).x; + let x_146 : f32 = (*(b_1)).x; + let x_148 : f32 = (*(p)).y; + let x_149 : f32 = (*(b_1)).y; + let x_153 : f32 = (*(c)).x; + let x_154 : f32 = (*(b_1)).x; let x_156 : f32 = clamp_y; - let x_157 : f32 = *(x_139); + let x_157 : f32 = (*(b_1)).y; param_2 = vec2((x_145 - x_146), (x_148 - x_149)); param_3 = vec2((x_153 - x_154), (x_156 - x_157)); let x_160 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3)); pbc = x_160; let x_161 : f32 = pab; let x_163 : f32 = pbc; - let x_165 : bool = ((x_161 < 0.0) && (x_163 < 0.0)); + let x_165 : bool = ((x_161 < 0.0) & (x_163 < 0.0)); x_174_phi = x_165; if (!(x_165)) { let x_169 : f32 = pab; let x_171 : f32 = pbc; - x_173 = ((x_169 >= 0.0) && (x_171 >= 0.0)); + x_173 = ((x_169 >= 0.0) & (x_171 >= 0.0)); x_174_phi = x_173; } let x_174 : bool = x_174_phi; if (!(x_174)) { return 0; } - let x_178 : f32 = *(x_124); - let x_179 : f32 = *(x_152); - let x_181 : f32 = *(x_129); - let x_182 : f32 = *(x_119); - let x_185 : f32 = *(x_126); - let x_186 : f32 = *(x_152); - let x_188 : f32 = *(x_131); - let x_189 : f32 = *(x_119); + let x_178 : f32 = (*(p)).x; + let x_179 : f32 = (*(c)).x; + let x_181 : f32 = (*(p)).y; + let x_182 : f32 = (*(c)).y; + let x_185 : f32 = (*(a_1)).x; + let x_186 : f32 = (*(c)).x; + let x_188 : f32 = (*(a_1)).y; + let x_189 : f32 = (*(c)).y; param_4 = vec2((x_178 - x_179), (x_181 - x_182)); param_5 = vec2((x_185 - x_186), (x_188 - x_189)); let x_192 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5)); pca = x_192; let x_193 : f32 = pab; let x_195 : f32 = pca; - let x_197 : bool = ((x_193 < 0.0) && (x_195 < 0.0)); + let x_197 : bool = ((x_193 < 0.0) & (x_195 < 0.0)); x_206_phi = x_197; if (!(x_197)) { let x_201 : f32 = pab; let x_203 : f32 = pca; - x_205 = ((x_201 >= 0.0) && (x_203 >= 0.0)); + x_205 = ((x_201 >= 0.0) & (x_203 >= 0.0)); x_206_phi = x_205; } let x_206 : bool = x_206_phi; diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl index 414b559a93..4f8753dbde 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl @@ -23,20 +23,14 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr = &((*(p)).x); - let x_70 : f32 = *(x_69); - let x_71 : ptr = &((*(a)).x); - let x_72 : f32 = *(x_71); - let x_74 : ptr = &((*(p)).y); - let x_75 : f32 = *(x_74); - let x_76 : ptr = &((*(a)).y); - let x_77 : f32 = *(x_76); - let x_80 : ptr = &((*(b)).x); - let x_81 : f32 = *(x_80); - let x_82 : f32 = *(x_71); - let x_84 : ptr = &((*(b)).y); - let x_85 : f32 = *(x_84); - let x_86 : f32 = *(x_76); + let x_70 : f32 = (*(p)).x; + let x_72 : f32 = (*(a)).x; + let x_75 : f32 = (*(p)).y; + let x_77 : f32 = (*(a)).y; + let x_81 : f32 = (*(b)).x; + let x_82 : f32 = (*(a)).x; + let x_85 : f32 = (*(b)).y; + let x_86 : f32 = (*(a)).y; param = vec2((x_70 - x_72), (x_75 - x_77)); param_1 = vec2((x_81 - x_82), (x_85 - x_86)); let x_90 : f32 = param.x; @@ -45,16 +39,14 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr = &((*(c)).x); - let x_108 : f32 = *(x_107); - let x_109 : f32 = *(x_80); - let x_111 : ptr = &((*(c)).y); - let x_112 : f32 = *(x_111); - let x_113 : f32 = *(x_84); + let x_100 : f32 = (*(p)).x; + let x_101 : f32 = (*(b)).x; + let x_103 : f32 = (*(p)).y; + let x_104 : f32 = (*(b)).y; + let x_108 : f32 = (*(c)).x; + let x_109 : f32 = (*(b)).x; + let x_112 : f32 = (*(c)).y; + let x_113 : f32 = (*(b)).y; param_2 = vec2((x_100 - x_101), (x_103 - x_104)); param_3 = vec2((x_108 - x_109), (x_112 - x_113)); let x_117 : f32 = param_2.x; @@ -64,24 +56,24 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr= 0.0) && (x_126 >= 0.0)); + x_135 = ((x_99 >= 0.0) & (x_126 >= 0.0)); x_136_phi = x_135; } let x_136 : bool = x_136_phi; if (!(x_136)) { return 0; } - let x_140 : f32 = *(x_69); - let x_141 : f32 = *(x_107); - let x_143 : f32 = *(x_74); - let x_144 : f32 = *(x_111); - let x_147 : f32 = *(x_71); - let x_148 : f32 = *(x_107); - let x_150 : f32 = *(x_76); - let x_151 : f32 = *(x_111); + let x_140 : f32 = (*(p)).x; + let x_141 : f32 = (*(c)).x; + let x_143 : f32 = (*(p)).y; + let x_144 : f32 = (*(c)).y; + let x_147 : f32 = (*(a)).x; + let x_148 : f32 = (*(c)).x; + let x_150 : f32 = (*(a)).y; + let x_151 : f32 = (*(c)).y; param_4 = vec2((x_140 - x_141), (x_143 - x_144)); param_5 = vec2((x_147 - x_148), (x_150 - x_151)); let x_155 : f32 = param_4.x; @@ -90,10 +82,10 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr= 0.0) && (x_164 >= 0.0)); + x_172 = ((x_99 >= 0.0) & (x_164 >= 0.0)); x_173_phi = x_172; } let x_173 : bool = x_173_phi; diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl index c9e248c547..2044a9e0ef 100644 --- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl +++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl @@ -30,20 +30,14 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr = &((*(p)).x); - let x_82 : f32 = *(x_81); - let x_83 : ptr = &((*(a)).x); - let x_84 : f32 = *(x_83); - let x_86 : ptr = &((*(p)).y); - let x_87 : f32 = *(x_86); - let x_88 : ptr = &((*(a)).y); - let x_89 : f32 = *(x_88); - let x_92 : ptr = &((*(b)).x); - let x_93 : f32 = *(x_92); - let x_94 : f32 = *(x_83); - let x_96 : ptr = &((*(b)).y); - let x_97 : f32 = *(x_96); - let x_98 : f32 = *(x_88); + let x_82 : f32 = (*(p)).x; + let x_84 : f32 = (*(a)).x; + let x_87 : f32 = (*(p)).y; + let x_89 : f32 = (*(a)).y; + let x_93 : f32 = (*(b)).x; + let x_94 : f32 = (*(a)).x; + let x_97 : f32 = (*(b)).y; + let x_98 : f32 = (*(a)).y; param = vec2((x_82 - x_84), (x_87 - x_89)); param_1 = vec2((x_93 - x_94), (x_97 - x_98)); let x_102 : f32 = param.x; @@ -52,16 +46,14 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr = &((*(c)).x); - let x_120 : f32 = *(x_119); - let x_121 : f32 = *(x_92); - let x_123 : ptr = &((*(c)).y); - let x_124 : f32 = *(x_123); - let x_125 : f32 = *(x_96); + let x_112 : f32 = (*(p)).x; + let x_113 : f32 = (*(b)).x; + let x_115 : f32 = (*(p)).y; + let x_116 : f32 = (*(b)).y; + let x_120 : f32 = (*(c)).x; + let x_121 : f32 = (*(b)).x; + let x_124 : f32 = (*(c)).y; + let x_125 : f32 = (*(b)).y; param_2 = vec2((x_112 - x_113), (x_115 - x_116)); param_3 = vec2((x_120 - x_121), (x_124 - x_125)); let x_129 : f32 = param_2.x; @@ -71,10 +63,10 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr= 0.0) && (x_138 >= 0.0)); + x_147 = ((x_111 >= 0.0) & (x_138 >= 0.0)); x_148_phi = x_147; } var x_153_phi : i32; @@ -115,14 +107,14 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr((x_171 - x_172), (x_174 - x_175)); param_5 = vec2((x_178 - x_179), (x_181 - x_182)); let x_186 : f32 = param_4.x; @@ -131,10 +123,10 @@ fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr>, a : ptr= 0.0) && (x_195 >= 0.0)); + x_203 = ((x_111 >= 0.0) & (x_195 >= 0.0)); x_204_phi = x_203; } let x_204 : bool = x_204_phi;