From 7103f51603dcfd73f9fff528c87deb91679d579f Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Wed, 20 Oct 2021 16:12:33 +0000 Subject: [PATCH] writer/msl: Fix swizzling on packed vectors Metal 1.x does not support swizzling on packed_vec types. Use array-index for single element selection (permitted on LHS and RHS of assignment) Cast the packed_vec to a vec for multiple element swizzles (not permitted as the LHS of an assignment). Fixed: tint:1249 Change-Id: I70cbb0c22a935b06b3905d24484bdc2edfb95fc2 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/67060 Commit-Queue: Ben Clayton Kokoro: Ben Clayton Reviewed-by: James Price --- docs/origin-trial-changes.md | 4 + src/writer/msl/generator_impl.cc | 67 +- .../msl/generator_impl_function_test.cc | 4 +- .../generator_impl_member_accessor_test.cc | 4 +- test/access/let/matrix.spvasm.expected.msl | 2 +- test/access/let/vector.spvasm.expected.msl | 6 +- test/access/let/vector.wgsl.expected.msl | 6 +- test/access/var/matrix.spvasm.expected.msl | 2 +- test/access/var/vector.spvasm.expected.msl | 6 +- test/access/var/vector.wgsl.expected.msl | 6 +- test/bug/dawn/947.wgsl.expected.msl | 2 +- test/bug/tint/1046.wgsl.expected.msl | 2 +- test/bug/tint/1088.spvasm.expected.msl | 20 +- test/bug/tint/1113.wgsl.expected.msl | 26 +- test/bug/tint/1121.wgsl.expected.msl | 48 +- test/bug/tint/219.spvasm.expected.msl | 2 +- test/bug/tint/403.wgsl.expected.msl | 2 +- test/bug/tint/413.spvasm.expected.msl | 4 +- test/bug/tint/453.wgsl.expected.msl | 4 +- test/bug/tint/534.wgsl.expected.msl | 6 +- test/bug/tint/744.wgsl.expected.msl | 12 +- test/bug/tint/749.spvasm.expected.msl | 900 +++++++++--------- test/bug/tint/757.wgsl.expected.msl | 6 +- test/bug/tint/824.wgsl.expected.msl | 2 +- test/bug/tint/827.wgsl.expected.msl | 2 +- test/bug/tint/913.wgsl.expected.msl | 12 +- test/bug/tint/914.wgsl.expected.msl | 12 +- test/bug/tint/922.wgsl.expected.msl | 14 +- test/bug/tint/942.wgsl.expected.msl | 10 +- test/bug/tint/943.spvasm.expected.msl | 32 +- test/bug/tint/948.wgsl.expected.msl | 42 +- test/bug/tint/949.wgsl.expected.msl | 70 +- test/bug/tint/951.spvasm.expected.msl | 4 +- test/bug/tint/977.spvasm.expected.msl | 2 +- .../splat/with_swizzle/f32.wgsl.expected.msl | 6 +- .../swizzle/read/packed_vec3/f32.wgsl | 144 +++ .../read/packed_vec3/f32.wgsl.expected.hlsl | 132 +++ .../read/packed_vec3/f32.wgsl.expected.msl | 143 +++ .../read/packed_vec3/f32.wgsl.expected.spvasm | 772 +++++++++++++++ .../read/packed_vec3/f32.wgsl.expected.wgsl | 130 +++ .../swizzle/read/packed_vec3/i32.wgsl | 144 +++ .../read/packed_vec3/i32.wgsl.expected.hlsl | 132 +++ .../read/packed_vec3/i32.wgsl.expected.msl | 132 +++ .../read/packed_vec3/i32.wgsl.expected.spvasm | 772 +++++++++++++++ .../read/packed_vec3/i32.wgsl.expected.wgsl | 130 +++ .../swizzle/read/packed_vec3/u32.wgsl | 144 +++ .../read/packed_vec3/u32.wgsl.expected.hlsl | 132 +++ .../read/packed_vec3/u32.wgsl.expected.msl | 132 +++ .../read/packed_vec3/u32.wgsl.expected.spvasm | 771 +++++++++++++++ .../read/packed_vec3/u32.wgsl.expected.wgsl | 130 +++ test/expressions/swizzle/read/vec3/f32.wgsl | 143 +++ .../swizzle/read/vec3/f32.wgsl.expected.hlsl | 134 +++ .../swizzle/read/vec3/f32.wgsl.expected.msl | 131 +++ .../read/vec3/f32.wgsl.expected.spvasm | 769 +++++++++++++++ .../swizzle/read/vec3/f32.wgsl.expected.wgsl | 129 +++ test/expressions/swizzle/read/vec3/i32.wgsl | 143 +++ .../swizzle/read/vec3/i32.wgsl.expected.hlsl | 134 +++ .../swizzle/read/vec3/i32.wgsl.expected.msl | 131 +++ .../read/vec3/i32.wgsl.expected.spvasm | 769 +++++++++++++++ .../swizzle/read/vec3/i32.wgsl.expected.wgsl | 129 +++ test/expressions/swizzle/read/vec3/u32.wgsl | 143 +++ .../swizzle/read/vec3/u32.wgsl.expected.hlsl | 134 +++ .../swizzle/read/vec3/u32.wgsl.expected.msl | 131 +++ .../read/vec3/u32.wgsl.expected.spvasm | 768 +++++++++++++++ .../swizzle/read/vec3/u32.wgsl.expected.wgsl | 129 +++ .../swizzle/write/packed_vec3/f32.wgsl | 14 + .../write/packed_vec3/f32.wgsl.expected.hlsl | 13 + .../write/packed_vec3/f32.wgsl.expected.msl | 26 + .../packed_vec3/f32.wgsl.expected.spvasm | 51 + .../write/packed_vec3/f32.wgsl.expected.wgsl | 13 + .../swizzle/write/packed_vec3/i32.wgsl | 14 + .../write/packed_vec3/i32.wgsl.expected.hlsl | 13 + .../write/packed_vec3/i32.wgsl.expected.msl | 15 + .../packed_vec3/i32.wgsl.expected.spvasm | 51 + .../write/packed_vec3/i32.wgsl.expected.wgsl | 13 + .../swizzle/write/packed_vec3/u32.wgsl | 14 + .../write/packed_vec3/u32.wgsl.expected.hlsl | 13 + .../write/packed_vec3/u32.wgsl.expected.msl | 15 + .../packed_vec3/u32.wgsl.expected.spvasm | 48 + .../write/packed_vec3/u32.wgsl.expected.wgsl | 13 + test/expressions/swizzle/write/vec3/f32.wgsl | 13 + .../swizzle/write/vec3/f32.wgsl.expected.hlsl | 17 + .../swizzle/write/vec3/f32.wgsl.expected.msl | 14 + .../write/vec3/f32.wgsl.expected.spvasm | 49 + .../swizzle/write/vec3/f32.wgsl.expected.wgsl | 12 + test/expressions/swizzle/write/vec3/i32.wgsl | 13 + .../swizzle/write/vec3/i32.wgsl.expected.hlsl | 17 + .../swizzle/write/vec3/i32.wgsl.expected.msl | 14 + .../write/vec3/i32.wgsl.expected.spvasm | 49 + .../swizzle/write/vec3/i32.wgsl.expected.wgsl | 12 + test/expressions/swizzle/write/vec3/u32.wgsl | 13 + .../swizzle/write/vec3/u32.wgsl.expected.hlsl | 17 + .../swizzle/write/vec3/u32.wgsl.expected.msl | 14 + .../write/vec3/u32.wgsl.expected.spvasm | 46 + .../swizzle/write/vec3/u32.wgsl.expected.wgsl | 12 + .../textureLoad/depth_ms.spvasm.expected.msl | 2 +- .../continue_in_switch.wgsl.expected.hlsl | 1 - .../ptr_ref/access/vector.spvasm.expected.msl | 2 +- test/ptr_ref/access/vector.wgsl.expected.msl | 2 +- test/samples/compute_boids.wgsl.expected.msl | 26 +- .../compute_input_builtins.wgsl.expected.msl | 2 +- ...te_input_builtins_struct.wgsl.expected.msl | 2 +- .../compute_input_mixed.wgsl.expected.msl | 2 +- 103 files changed, 9204 insertions(+), 679 deletions(-) create mode 100644 test/expressions/swizzle/read/packed_vec3/f32.wgsl create mode 100644 test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/read/packed_vec3/i32.wgsl create mode 100644 test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/read/packed_vec3/u32.wgsl create mode 100644 test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/read/vec3/f32.wgsl create mode 100644 test/expressions/swizzle/read/vec3/f32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/vec3/f32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/vec3/f32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/read/vec3/i32.wgsl create mode 100644 test/expressions/swizzle/read/vec3/i32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/vec3/i32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/vec3/i32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/read/vec3/u32.wgsl create mode 100644 test/expressions/swizzle/read/vec3/u32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/read/vec3/u32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/read/vec3/u32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/f32.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/i32.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/u32.wgsl create mode 100644 test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/vec3/f32.wgsl create mode 100644 test/expressions/swizzle/write/vec3/f32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/vec3/f32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/vec3/f32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/vec3/i32.wgsl create mode 100644 test/expressions/swizzle/write/vec3/i32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/vec3/i32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/vec3/i32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl create mode 100644 test/expressions/swizzle/write/vec3/u32.wgsl create mode 100644 test/expressions/swizzle/write/vec3/u32.wgsl.expected.hlsl create mode 100644 test/expressions/swizzle/write/vec3/u32.wgsl.expected.msl create mode 100644 test/expressions/swizzle/write/vec3/u32.wgsl.expected.spvasm create mode 100644 test/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl diff --git a/docs/origin-trial-changes.md b/docs/origin-trial-changes.md index bb9649771b..4e577a3104 100644 --- a/docs/origin-trial-changes.md +++ b/docs/origin-trial-changes.md @@ -8,6 +8,10 @@ * Deprecated texture builtin functions that accepted a `read` access controlled storage texture have been removed. * Storage textures must now only use the `write` access control. +### Fixes + +* Swizzling of `vec3` types in `storage` and `uniform` buffers has been fixed for Metal 1.x. [tint:1249](https://crbug.com/tint/1249) + ## Changes for M95 ### New Features diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc index 2c90761e4b..ecc63ca21e 100644 --- a/src/writer/msl/generator_impl.cc +++ b/src/writer/msl/generator_impl.cc @@ -1953,28 +1953,55 @@ bool GeneratorImpl::EmitIf(const ast::IfStatement* stmt) { bool GeneratorImpl::EmitMemberAccessor( std::ostream& out, const ast::MemberAccessorExpression* expr) { - bool paren_lhs = - !expr->structure - ->IsAnyOf(); - if (paren_lhs) { - out << "("; - } - if (!EmitExpression(out, expr->structure)) { - return false; - } - if (paren_lhs) { - out << ")"; - } + auto write_lhs = [&] { + bool paren_lhs = + !expr->structure + ->IsAnyOf(); + if (paren_lhs) { + out << "("; + } + if (!EmitExpression(out, expr->structure)) { + return false; + } + if (paren_lhs) { + out << ")"; + } + return true; + }; - out << "."; + auto& sem = program_->Sem(); - // Swizzles get written out directly - if (program_->Sem().Get(expr)->Is()) { - out << program_->Symbols().NameFor(expr->member->symbol); - } else if (!EmitExpression(out, expr->member)) { - return false; + if (auto* swizzle = sem.Get(expr)->As()) { + // Metal 1.x does not support swizzling of packed vector types. + // For single element swizzles, we can use the index operator. + // For multi-element swizzles, we need to cast to a regular vector type + // first. Note that we do not currently allow assignments to swizzles, so + // the casting which will convert the l-value to r-value is fine. + if (swizzle->Indices().size() == 1) { + if (!write_lhs()) { + return false; + } + out << "[" << swizzle->Indices()[0] << "]"; + } else { + if (!EmitType(out, sem.Get(expr->structure)->Type()->UnwrapRef(), "")) { + return false; + } + out << "("; + if (!write_lhs()) { + return false; + } + out << ")." << program_->Symbols().NameFor(expr->member->symbol); + } + } else { + if (!write_lhs()) { + return false; + } + out << "."; + if (!EmitExpression(out, expr->member)) { + return false; + } } return true; diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc index af27b7999d..c384e5f5be 100644 --- a/src/writer/msl/generator_impl_function_test.cc +++ b/src/writer/msl/generator_impl_function_test.cc @@ -147,7 +147,7 @@ struct tint_symbol { }; float frag_main_inner(float4 coord) { - return coord.x; + return coord[0]; } fragment tint_symbol frag_main(float4 coord [[position]]) { @@ -457,7 +457,7 @@ struct UBO { }; float sub_func(constant UBO& ubo, float param) { - return ubo.coord.x; + return ubo.coord[0]; } fragment void frag_main(constant UBO& ubo [[buffer(0)]]) { diff --git a/src/writer/msl/generator_impl_member_accessor_test.cc b/src/writer/msl/generator_impl_member_accessor_test.cc index 9623a2b8cd..b511cab73c 100644 --- a/src/writer/msl/generator_impl_member_accessor_test.cc +++ b/src/writer/msl/generator_impl_member_accessor_test.cc @@ -43,7 +43,7 @@ TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_xyz) { GeneratorImpl& gen = Build(); std::stringstream out; ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error(); - EXPECT_EQ(out.str(), "my_vec.xyz"); + EXPECT_EQ(out.str(), "float4(my_vec).xyz"); } TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_gbr) { @@ -55,7 +55,7 @@ TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_gbr) { GeneratorImpl& gen = Build(); std::stringstream out; ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error(); - EXPECT_EQ(out.str(), "my_vec.gbr"); + EXPECT_EQ(out.str(), "float4(my_vec).gbr"); } } // namespace diff --git a/test/access/let/matrix.spvasm.expected.msl b/test/access/let/matrix.spvasm.expected.msl index 2123a38a6c..74a4b931c4 100644 --- a/test/access/let/matrix.spvasm.expected.msl +++ b/test/access/let/matrix.spvasm.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void main_1() { - float const x_24 = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[1u].y; + float const x_24 = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[1u][1]; return; } diff --git a/test/access/let/vector.spvasm.expected.msl b/test/access/let/vector.spvasm.expected.msl index d644226025..354e9b13d2 100644 --- a/test/access/let/vector.spvasm.expected.msl +++ b/test/access/let/vector.spvasm.expected.msl @@ -2,9 +2,9 @@ using namespace metal; void main_1() { - float const x_11 = float3(1.0f, 2.0f, 3.0f).y; - float2 const x_13 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z); - float3 const x_14 = float3(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y); + float const x_11 = float3(1.0f, 2.0f, 3.0f)[1]; + float2 const x_13 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]); + float3 const x_14 = float3(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1]); return; } diff --git a/test/access/let/vector.wgsl.expected.msl b/test/access/let/vector.wgsl.expected.msl index e690077f53..13a9b75adc 100644 --- a/test/access/let/vector.wgsl.expected.msl +++ b/test/access/let/vector.wgsl.expected.msl @@ -3,9 +3,9 @@ using namespace metal; kernel void tint_symbol() { float3 const v = float3(1.0f, 2.0f, 3.0f); - float const scalar = v.y; - float2 const swizzle2 = v.xz; - float3 const swizzle3 = v.xzy; + float const scalar = v[1]; + float2 const swizzle2 = float3(v).xz; + float3 const swizzle3 = float3(v).xzy; return; } diff --git a/test/access/var/matrix.spvasm.expected.msl b/test/access/var/matrix.spvasm.expected.msl index e22abd0eeb..ae1105874d 100644 --- a/test/access/var/matrix.spvasm.expected.msl +++ b/test/access/var/matrix.spvasm.expected.msl @@ -4,7 +4,7 @@ using namespace metal; void main_1() { float3x3 m = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)); float3 const x_15 = m[1]; - float const x_16 = x_15.y; + float const x_16 = x_15[1]; return; } diff --git a/test/access/var/vector.spvasm.expected.msl b/test/access/var/vector.spvasm.expected.msl index a0bb9e4d5d..a6963f9007 100644 --- a/test/access/var/vector.spvasm.expected.msl +++ b/test/access/var/vector.spvasm.expected.msl @@ -3,11 +3,11 @@ using namespace metal; void main_1() { float3 v = float3(0.0f, 0.0f, 0.0f); - float const x_14 = v.y; + float const x_14 = v[1]; float3 const x_16 = v; - float2 const x_17 = float2(x_16.x, x_16.z); + float2 const x_17 = float2(x_16[0], x_16[2]); float3 const x_18 = v; - float3 const x_19 = float3(x_18.x, x_18.z, x_18.y); + float3 const x_19 = float3(x_18[0], x_18[2], x_18[1]); return; } diff --git a/test/access/var/vector.wgsl.expected.msl b/test/access/var/vector.wgsl.expected.msl index 542eae7613..e965ea768c 100644 --- a/test/access/var/vector.wgsl.expected.msl +++ b/test/access/var/vector.wgsl.expected.msl @@ -3,9 +3,9 @@ using namespace metal; kernel void tint_symbol() { float3 v = 0.0f; - float const scalar = v.y; - float2 const swizzle2 = v.xz; - float3 const swizzle3 = v.xzy; + float const scalar = v[1]; + float2 const swizzle2 = float3(v).xz; + float3 const swizzle3 = float3(v).xzy; return; } diff --git a/test/bug/dawn/947.wgsl.expected.msl b/test/bug/dawn/947.wgsl.expected.msl index 11bf5634ff..ff00746415 100644 --- a/test/bug/dawn/947.wgsl.expected.msl +++ b/test/bug/dawn/947.wgsl.expected.msl @@ -27,7 +27,7 @@ VertexOutputs vs_main_inner(constant Uniforms& uniforms, uint VertexIndex) { tint_array_wrapper texcoord = {.arr={float2(-0.5f, 0.0f), float2(1.5f, 0.0f), float2(0.5f, 2.0f)}}; VertexOutputs output = {}; output.position = float4(((texcoord.arr[VertexIndex] * 2.0f) - float2(1.0f, 1.0f)), 0.0f, 1.0f); - bool flipY = (uniforms.u_scale.y < 0.0f); + bool flipY = (uniforms.u_scale[1] < 0.0f); if (flipY) { output.texcoords = ((((texcoord.arr[VertexIndex] * uniforms.u_scale) + uniforms.u_offset) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)); } else { diff --git a/test/bug/tint/1046.wgsl.expected.msl b/test/bug/tint/1046.wgsl.expected.msl index 5f5c8464b0..ac5baa16f1 100644 --- a/test/bug/tint/1046.wgsl.expected.msl +++ b/test/bug/tint/1046.wgsl.expected.msl @@ -42,7 +42,7 @@ float4 getColor(constant Uniforms& uniforms, FragmentInput tint_symbol, texture2 } else { if ((uniforms.color_source == 1u)) { color = tint_symbol.normal; - color.a = 1.0f; + color[3] = 1.0f; } else { if ((uniforms.color_source == 2u)) { color = uniforms.color; diff --git a/test/bug/tint/1088.spvasm.expected.msl b/test/bug/tint/1088.spvasm.expected.msl index 6010645526..5a11505b8f 100644 --- a/test/bug/tint/1088.spvasm.expected.msl +++ b/test/bug/tint/1088.spvasm.expected.msl @@ -36,24 +36,24 @@ void main_1(constant LeftOver& x_14, thread float3* const tint_symbol_5, thread float4 q = 0.0f; float3 p = 0.0f; float3 const x_13 = *(tint_symbol_5); - q = float4(x_13.x, x_13.y, x_13.z, 1.0f); + q = float4(x_13[0], x_13[1], x_13[2], 1.0f); float4 const x_21 = q; - p = float3(x_21.x, x_21.y, x_21.z); - float const x_27 = p.x; + p = float3(x_21[0], x_21[1], x_21[2]); + float const x_27 = p[0]; float const x_41 = x_14.test.arr[0].el; - float const x_45 = (*(tint_symbol_5)).y; + float const x_45 = (*(tint_symbol_5))[1]; float const x_49 = x_14.time; - p.x = (x_27 + sin(((x_41 * x_45) + x_49))); - float const x_55 = p.y; + p[0] = (x_27 + sin(((x_41 * x_45) + x_49))); + float const x_55 = p[1]; float const x_57 = x_14.time; - p.y = (x_55 + sin((x_57 + 4.0f))); + p[1] = (x_55 + sin((x_57 + 4.0f))); float4x4 const x_69 = x_14.worldViewProjection; float3 const x_70 = p; - *(tint_symbol_6) = (x_69 * float4(x_70.x, x_70.y, x_70.z, 1.0f)); + *(tint_symbol_6) = (x_69 * float4(x_70[0], x_70[1], x_70[2], 1.0f)); float2 const x_83 = *(tint_symbol_7); *(tint_symbol_8) = x_83; - float const x_87 = (*(tint_symbol_6)).y; - (*(tint_symbol_6)).y = (x_87 * -1.0f); + float const x_87 = (*(tint_symbol_6))[1]; + (*(tint_symbol_6))[1] = (x_87 * -1.0f); return; } diff --git a/test/bug/tint/1113.wgsl.expected.msl b/test/bug/tint/1113.wgsl.expected.msl index 663d47fc9b..52cc00cc3c 100644 --- a/test/bug/tint/1113.wgsl.expected.msl +++ b/test/bug/tint/1113.wgsl.expected.msl @@ -53,20 +53,20 @@ struct AI32s { }; float3 toVoxelPos(constant Uniforms& uniforms, float3 position) { - float3 bbMin = float3(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z); - float3 bbMax = float3(uniforms.bbMax.x, uniforms.bbMax.y, uniforms.bbMax.z); + float3 bbMin = float3(uniforms.bbMin[0], uniforms.bbMin[1], uniforms.bbMin[2]); + float3 bbMax = float3(uniforms.bbMax[0], uniforms.bbMax[1], uniforms.bbMax[2]); float3 bbSize = (bbMax - bbMin); - float cubeSize = fmax(fmax(bbSize.x, bbSize.y), bbSize.z); + float cubeSize = fmax(fmax(bbSize[0], bbSize[1]), bbSize[2]); float gridSize = float(uniforms.gridSize); - float gx = ((gridSize * (position.x - uniforms.bbMin.x)) / cubeSize); - float gy = ((gridSize * (position.y - uniforms.bbMin.y)) / cubeSize); - float gz = ((gridSize * (position.z - uniforms.bbMin.z)) / cubeSize); + float gx = ((gridSize * (position[0] - uniforms.bbMin[0])) / cubeSize); + float gy = ((gridSize * (position[1] - uniforms.bbMin[1])) / cubeSize); + float gz = ((gridSize * (position[2] - uniforms.bbMin[2])) / cubeSize); return float3(gx, gy, gz); } uint toIndex1D(uint gridSize, float3 voxelPos) { uint3 icoord = uint3(voxelPos); - return ((icoord.x + (gridSize * icoord.y)) + ((gridSize * gridSize) * icoord.z)); + return ((icoord[0] + (gridSize * icoord[1])) + ((gridSize * gridSize) * icoord[2])); } uint3 toIndex3D(uint gridSize, uint index) { @@ -91,7 +91,7 @@ void doIgnore(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counte } void main_count_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) { - uint triangleIndex = GlobalInvocationID.x; + uint triangleIndex = GlobalInvocationID[0]; if ((triangleIndex >= uniforms.numTriangles)) { return; } @@ -108,9 +108,9 @@ void main_count_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s uint acefg = atomic_fetch_add_explicit(&(counters.values[voxelIndex]), 1u, memory_order_relaxed); if ((triangleIndex == 0u)) { dbg.value0 = uniforms.gridSize; - dbg.value_f32_0 = center.x; - dbg.value_f32_1 = center.y; - dbg.value_f32_2 = center.z; + dbg.value_f32_0 = center[0]; + dbg.value_f32_1 = center[1]; + dbg.value_f32_2 = center[2]; } } @@ -120,7 +120,7 @@ kernel void main_count(uint3 GlobalInvocationID [[thread_position_in_grid]], con } void main_create_lut_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) { - uint voxelIndex = GlobalInvocationID.x; + uint voxelIndex = GlobalInvocationID[0]; doIgnore(uniforms, dbg, counters, indices, positions, LUT); uint maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize); if ((voxelIndex >= maxVoxels)) { @@ -140,7 +140,7 @@ kernel void main_create_lut(uint3 GlobalInvocationID [[thread_position_in_grid]] } void main_sort_triangles_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) { - uint triangleIndex = GlobalInvocationID.x; + uint triangleIndex = GlobalInvocationID[0]; doIgnore(uniforms, dbg, counters, indices, positions, LUT); if ((triangleIndex >= uniforms.numTriangles)) { return; diff --git a/test/bug/tint/1121.wgsl.expected.msl b/test/bug/tint/1121.wgsl.expected.msl index c7eb13cd87..9592e5aa73 100644 --- a/test/bug/tint/1121.wgsl.expected.msl +++ b/test/bug/tint/1121.wgsl.expected.msl @@ -53,20 +53,20 @@ struct tint_array_wrapper_2 { }; void tint_symbol_inner(constant Config& config, constant Uniforms& uniforms, device LightsBuffer& lightsBuffer, device Tiles& tileLightId, uint3 GlobalInvocationID) { - uint index = GlobalInvocationID.x; + uint index = GlobalInvocationID[0]; if ((index >= config.numLights)) { return; } - lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f)))))); - if ((lightsBuffer.lights[index].position.y < uniforms.min.y)) { - lightsBuffer.lights[index].position.y = uniforms.max.y; + lightsBuffer.lights[index].position[1] = ((lightsBuffer.lights[index].position[1] - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f)))))); + if ((lightsBuffer.lights[index].position[1] < uniforms.min[1])) { + lightsBuffer.lights[index].position[1] = uniforms.max[1]; } float4x4 M = uniforms.projectionMatrix; float viewNear = (-(M[3][2]) / (-1.0f + M[2][2])); float viewFar = (-(M[3][2]) / (1.0f + M[2][2])); float4 lightPos = lightsBuffer.lights[index].position; lightPos = (uniforms.viewMatrix * lightPos); - lightPos = (lightPos / lightPos.w); + lightPos = (lightPos / lightPos[3]); float lightRadius = lightsBuffer.lights[index].radius; float4 boxMin = (lightPos - float4(float3(lightRadius), 0.0f)); float4 boxMax = (lightPos + float4(float3(lightRadius), 0.0f)); @@ -79,33 +79,33 @@ void tint_symbol_inner(constant Config& config, constant Uniforms& uniforms, dev for(int y_1 = 0; (y_1 < TILE_COUNT_Y); y_1 = as_type((as_type(y_1) + as_type(1)))) { for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = as_type((as_type(x_1) + as_type(1)))) { int2 tilePixel0Idx = int2(as_type((as_type(x_1) * as_type(TILE_SIZE))), as_type((as_type(y_1) * as_type(TILE_SIZE)))); - float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / uniforms.fullScreenSize.xy) - float2(1.0f)); - float2 ceilCoord = (((2.0f * float2(as_type((as_type(tilePixel0Idx) + as_type(int2(TILE_SIZE)))))) / uniforms.fullScreenSize.xy) - float2(1.0f)); - float2 viewFloorCoord = float2((((-(viewNear) * floorCoord.x) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord.y) - (M[2][1] * viewNear)) / M[1][1])); - float2 viewCeilCoord = float2((((-(viewNear) * ceilCoord.x) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * ceilCoord.y) - (M[2][1] * viewNear)) / M[1][1])); - frustumPlanes.arr[0] = float4(1.0f, 0.0f, (-(viewFloorCoord.x) / viewNear), 0.0f); - frustumPlanes.arr[1] = float4(-1.0f, 0.0f, (viewCeilCoord.x / viewNear), 0.0f); - frustumPlanes.arr[2] = float4(0.0f, 1.0f, (-(viewFloorCoord.y) / viewNear), 0.0f); - frustumPlanes.arr[3] = float4(0.0f, -1.0f, (viewCeilCoord.y / viewNear), 0.0f); + float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / float4(uniforms.fullScreenSize).xy) - float2(1.0f)); + float2 ceilCoord = (((2.0f * float2(as_type((as_type(tilePixel0Idx) + as_type(int2(TILE_SIZE)))))) / float4(uniforms.fullScreenSize).xy) - float2(1.0f)); + float2 viewFloorCoord = float2((((-(viewNear) * floorCoord[0]) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord[1]) - (M[2][1] * viewNear)) / M[1][1])); + float2 viewCeilCoord = float2((((-(viewNear) * ceilCoord[0]) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * ceilCoord[1]) - (M[2][1] * viewNear)) / M[1][1])); + frustumPlanes.arr[0] = float4(1.0f, 0.0f, (-(viewFloorCoord[0]) / viewNear), 0.0f); + frustumPlanes.arr[1] = float4(-1.0f, 0.0f, (viewCeilCoord[0] / viewNear), 0.0f); + frustumPlanes.arr[2] = float4(0.0f, 1.0f, (-(viewFloorCoord[1]) / viewNear), 0.0f); + frustumPlanes.arr[3] = float4(0.0f, -1.0f, (viewCeilCoord[1] / viewNear), 0.0f); float dp = 0.0f; for(uint i = 0u; (i < 6u); i = (i + 1u)) { float4 p = 0.0f; - if ((frustumPlanes.arr[i].x > 0.0f)) { - p.x = boxMax.x; + if ((frustumPlanes.arr[i][0] > 0.0f)) { + p[0] = boxMax[0]; } else { - p.x = boxMin.x; + p[0] = boxMin[0]; } - if ((frustumPlanes.arr[i].y > 0.0f)) { - p.y = boxMax.y; + if ((frustumPlanes.arr[i][1] > 0.0f)) { + p[1] = boxMax[1]; } else { - p.y = boxMin.y; + p[1] = boxMin[1]; } - if ((frustumPlanes.arr[i].z > 0.0f)) { - p.z = boxMax.z; + if ((frustumPlanes.arr[i][2] > 0.0f)) { + p[2] = boxMax[2]; } else { - p.z = boxMin.z; + p[2] = boxMin[2]; } - p.w = 1.0f; + p[3] = 1.0f; dp = (dp + fmin(0.0f, dot(p, frustumPlanes.arr[i]))); } if ((dp >= 0.0f)) { @@ -117,7 +117,7 @@ void tint_symbol_inner(constant Config& config, constant Uniforms& uniforms, dev if ((offset >= config.numTileLightSlot)) { continue; } - tileLightId.data.arr[tileId].lightId.arr[offset] = GlobalInvocationID.x; + tileLightId.data.arr[tileId].lightId.arr[offset] = GlobalInvocationID[0]; } } } diff --git a/test/bug/tint/219.spvasm.expected.msl b/test/bug/tint/219.spvasm.expected.msl index 103a45b619..8caf787177 100644 --- a/test/bug/tint/219.spvasm.expected.msl +++ b/test/bug/tint/219.spvasm.expected.msl @@ -2,7 +2,7 @@ using namespace metal; float x_200(thread float2* const x_201) { - float const x_212 = (*(x_201)).x; + float const x_212 = (*(x_201))[0]; return x_212; } diff --git a/test/bug/tint/403.wgsl.expected.msl b/test/bug/tint/403.wgsl.expected.msl index 9f88b264e2..8e87d26270 100644 --- a/test/bug/tint/403.wgsl.expected.msl +++ b/test/bug/tint/403.wgsl.expected.msl @@ -23,7 +23,7 @@ float4 tint_symbol_inner(constant vertexUniformBuffer1& x_20, constant vertexUni indexable = tint_symbol_2; float2 const x_51 = indexable.arr[x_46]; float2 const x_52 = (float2x2((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])) * x_51); - return float4(x_52.x, x_52.y, 0.0f, 1.0f); + return float4(x_52[0], x_52[1], 0.0f, 1.0f); } vertex tint_symbol_1 tint_symbol(uint gl_VertexIndex [[vertex_id]], constant vertexUniformBuffer1& x_20 [[buffer(0)]], constant vertexUniformBuffer2& x_26 [[buffer(1)]]) { diff --git a/test/bug/tint/413.spvasm.expected.msl b/test/bug/tint/413.spvasm.expected.msl index 982307bdfe..d62ec29d9f 100644 --- a/test/bug/tint/413.spvasm.expected.msl +++ b/test/bug/tint/413.spvasm.expected.msl @@ -5,8 +5,8 @@ void main_1(texture2d tint_symbol_1, texture2d(1)); + uint const x_22 = srcValue[0]; + srcValue[0] = (x_22 + as_type(1)); uint4 const x_27 = srcValue; tint_symbol_2.write(x_27, uint2(int2(0, 0))); return; diff --git a/test/bug/tint/453.wgsl.expected.msl b/test/bug/tint/453.wgsl.expected.msl index 728fc2fb4c..d51ef16337 100644 --- a/test/bug/tint/453.wgsl.expected.msl +++ b/test/bug/tint/453.wgsl.expected.msl @@ -5,10 +5,10 @@ kernel void tint_symbol(texture2d tint_symbol_1 [[texture( uint4 srcValue = 0u; uint4 const x_22 = tint_symbol_1.read(uint2(int2(0, 0)), 0); srcValue = x_22; - uint const x_24 = srcValue.x; + uint const x_24 = srcValue[0]; uint const x_25 = (x_24 + 1u); uint4 const x_27 = srcValue; - tint_symbol_2.write(x_27.xxxx, uint2(int2(0, 0))); + tint_symbol_2.write(uint4(x_27).xxxx, uint2(int2(0, 0))); return; } diff --git a/test/bug/tint/534.wgsl.expected.msl b/test/bug/tint/534.wgsl.expected.msl index e294678439..584bdc7ff9 100644 --- a/test/bug/tint/534.wgsl.expected.msl +++ b/test/bug/tint/534.wgsl.expected.msl @@ -17,10 +17,10 @@ uint ConvertToFp16FloatValue(float fp32) { void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d tint_symbol_1, texture2d tint_symbol_2) { int2 size = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); - int2 dstTexCoord = int2(GlobalInvocationID.xy); + int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy); int2 srcTexCoord = dstTexCoord; if ((uniforms.dstTextureFlipY == 1u)) { - srcTexCoord.y = as_type((as_type(as_type((as_type(size.y) - as_type(dstTexCoord.y)))) - as_type(1))); + srcTexCoord[1] = as_type((as_type(as_type((as_type(size[1]) - as_type(dstTexCoord[1])))) - as_type(1))); } float4 srcColor = tint_symbol_1.read(uint2(srcTexCoord), 0); float4 dstColor = tint_symbol_2.read(uint2(dstTexCoord), 0); @@ -31,7 +31,7 @@ void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, ui srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]); success = (success && (srcColorBits[i] == dstColorBits[i])); } - uint outputIndex = ((GlobalInvocationID.y * uint(size.x)) + GlobalInvocationID.x); + uint outputIndex = ((GlobalInvocationID[1] * uint(size[0])) + GlobalInvocationID[0]); if (success) { output.result[outputIndex] = uint(1); } else { diff --git a/test/bug/tint/744.wgsl.expected.msl b/test/bug/tint/744.wgsl.expected.msl index 1bdfd213fd..1a3cffafa7 100644 --- a/test/bug/tint/744.wgsl.expected.msl +++ b/test/bug/tint/744.wgsl.expected.msl @@ -11,16 +11,16 @@ struct Matrix { }; void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMatrix, const device Matrix& secondMatrix, device Matrix& resultMatrix, uint3 global_id) { - uint2 const resultCell = uint2(global_id.y, global_id.x); - uint const dimInner = uniforms.aShape.y; - uint const dimOutter = uniforms.outShape.y; + uint2 const resultCell = uint2(global_id[1], global_id[0]); + uint const dimInner = uniforms.aShape[1]; + uint const dimOutter = uniforms.outShape[1]; uint result = 0u; for(uint i = 0u; (i < dimInner); i = (i + 1u)) { - uint const a = (i + (resultCell.x * dimInner)); - uint const b = (resultCell.y + (i * dimOutter)); + uint const a = (i + (resultCell[0] * dimInner)); + uint const b = (resultCell[1] + (i * dimOutter)); result = (result + (firstMatrix.numbers[a] * secondMatrix.numbers[b])); } - uint const index = (resultCell.y + (resultCell.x * dimOutter)); + uint const index = (resultCell[1] + (resultCell[0] * dimOutter)); resultMatrix.numbers[index] = result; } diff --git a/test/bug/tint/749.spvasm.expected.msl b/test/bug/tint/749.spvasm.expected.msl index dd020c962a..771771644f 100644 --- a/test/bug/tint/749.spvasm.expected.msl +++ b/test/bug/tint/749.spvasm.expected.msl @@ -22,7 +22,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_932 = temp; temp = 0; temp = x_932; - float3 const x_523 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + float3 const x_523 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); int const x_933 = *(i); *(i) = 0; *(i) = x_933; @@ -30,7 +30,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_934 = *(j); *(j) = 0; *(j) = x_934; - float3 const x_524 = float3(x_523.y, x_523.x, x_523.y); + float3 const x_524 = float3(x_523[1], x_523[0], x_523[1]); int const x_935 = temp; temp = 0; temp = x_935; @@ -46,7 +46,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_938 = *(j); *(j) = 0; *(j) = x_938; - float3 const x_525 = float3(x_523.z, float3(1.0f, 2.0f, 3.0f).x, x_523.y); + float3 const x_525 = float3(x_523[2], float3(1.0f, 2.0f, 3.0f)[0], x_523[1]); int const x_939 = *(i); *(i) = 0; *(i) = x_939; @@ -58,7 +58,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_941 = *(i); *(i) = 0; *(i) = x_941; - float3 const x_526 = float3(x_525.x, x_525.z, x_525.z); + float3 const x_526 = float3(x_525[0], x_525[2], x_525[2]); int const x_942 = (*(tint_symbol_81)).numbers.arr[x_30_save]; (*(tint_symbol_81)).numbers.arr[x_30_save] = 0; (*(tint_symbol_81)).numbers.arr[x_30_save] = x_942; @@ -69,16 +69,16 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec QuicksortObject const tint_symbol_3 = {.numbers=tint_symbol_2}; *(tint_symbol_81) = tint_symbol_3; *(tint_symbol_81) = x_943; - float2 const x_527 = float2(x_526.x, x_526.x); + float2 const x_527 = float2(x_526[0], x_526[0]); int const x_36_save = x_32; - float3 const x_528 = float3(x_524.x, x_524.z, x_524.x); + float3 const x_528 = float3(x_524[0], x_524[2], x_524[0]); (*(tint_symbol_81)).numbers.arr[x_36_save] = x_35; QuicksortObject const x_944 = *(tint_symbol_81); tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_5 = {.numbers=tint_symbol_4}; *(tint_symbol_81) = tint_symbol_5; *(tint_symbol_81) = x_944; - float3 const x_529 = float3(x_526.y, x_526.z, x_526.x); + float3 const x_529 = float3(x_526[1], x_526[2], x_526[0]); int const x_945 = *(i); *(i) = 0; *(i) = x_945; @@ -86,7 +86,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_946 = temp; temp = 0; temp = x_946; - float2 const x_530 = float2(x_529.z, x_529.y); + float2 const x_530 = float2(x_529[2], x_529[1]); int const x_947 = (*(tint_symbol_81)).numbers.arr[x_34_save]; (*(tint_symbol_81)).numbers.arr[x_34_save] = 0; (*(tint_symbol_81)).numbers.arr[x_34_save] = x_947; @@ -94,7 +94,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_948 = *(j); *(j) = 0; *(j) = x_948; - float3 const x_531 = float3(x_527.x, x_526.y, x_526.x); + float3 const x_531 = float3(x_527[0], x_526[1], x_526[0]); int const x_949 = (*(tint_symbol_81)).numbers.arr[x_36_save]; (*(tint_symbol_81)).numbers.arr[x_36_save] = 0; (*(tint_symbol_81)).numbers.arr[x_36_save] = x_949; @@ -103,7 +103,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec QuicksortObject const tint_symbol_7 = {.numbers=tint_symbol_6}; *(tint_symbol_81) = tint_symbol_7; *(tint_symbol_81) = x_950; - float3 const x_532 = float3(x_528.x, x_528.y, x_528.x); + float3 const x_532 = float3(x_528[0], x_528[1], x_528[0]); int const x_951 = (*(tint_symbol_81)).numbers.arr[x_34_save]; (*(tint_symbol_81)).numbers.arr[x_34_save] = 0; (*(tint_symbol_81)).numbers.arr[x_34_save] = x_951; @@ -136,7 +136,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_955 = param_3; param_3 = 0; param_3 = x_955; - float3 const x_534 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z); + float3 const x_534 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]); int const x_956 = param_1; param_1 = 0; param_1 = x_956; @@ -148,13 +148,13 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_958 = j_1; j_1 = 0; j_1 = x_958; - float3 const x_535 = float3(x_534.y, x_534.z, x_534.y); + float3 const x_535 = float3(x_534[1], x_534[2], x_534[1]); int const x_959 = *(l); *(l) = 0; *(l) = x_959; i_1 = as_type((as_type(x_45) - as_type(as_type(1u)))); int const x_49 = *(l); - float3 const x_536 = float3(x_534.x, x_534.z, x_535.x); + float3 const x_536 = float3(x_534[0], x_534[2], x_535[0]); j_1 = 10; QuicksortObject const x_960 = *(tint_symbol_82); tint_array_wrapper const tint_symbol_8 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; @@ -172,7 +172,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_963 = pivot; pivot = 0; pivot = x_963; - x_537 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); QuicksortObject const x_964 = *(tint_symbol_82); tint_array_wrapper const tint_symbol_10 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_11 = {.numbers=tint_symbol_10}; @@ -188,7 +188,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_967 = j_1; j_1 = 0; j_1 = x_967; - x_538 = float3(x_534.x, x_537.y, x_534.z); + x_538 = float3(x_534[0], x_537[1], x_534[2]); int const x_968 = param; param = 0; param = x_968; @@ -204,7 +204,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_970 = *(h); *(h) = 0; *(h) = x_970; - float3 const x_539 = float3(x_537.x, x_535.z, x_537.x); + float3 const x_539 = float3(x_537[0], x_535[2], x_537[0]); int const x_971 = param_1; param_1 = 0; param_1 = x_971; @@ -215,19 +215,19 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui *(tint_symbol_82) = tint_symbol_13; *(tint_symbol_82) = x_972; int const x_63 = pivot; - float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f).y, x_534.z); + float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]); int const x_973 = i_1; i_1 = 0; i_1 = x_973; int const x_974 = *(l); *(l) = 0; *(l) = x_974; - float3 const x_541 = float3(x_534.y, x_534.x, x_534.y); + float3 const x_541 = float3(x_534[1], x_534[0], x_534[1]); int const x_975 = pivot; pivot = 0; pivot = x_975; if ((x_62 <= x_63)) { - float3 const x_542 = float3(x_541.z, x_541.x, x_541.x); + float3 const x_542 = float3(x_541[2], x_541[0], x_541[0]); int const x_976 = param_3; param_3 = 0; param_3 = x_976; @@ -235,7 +235,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_977 = pivot; pivot = 0; pivot = x_977; - float2 const x_543 = float2(x_539.x, x_541.y); + float2 const x_543 = float2(x_539[0], x_541[1]); int const x_978 = i_1; i_1 = 0; i_1 = x_978; @@ -246,9 +246,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_980 = *(l); *(l) = 0; *(l) = x_980; - float3 const x_544 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, x_540.x); + float3 const x_544 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], x_540[0]); int const x_70 = i_1; - float2 const x_545 = float2(x_537.y, x_538.x); + float2 const x_545 = float2(x_537[1], x_538[0]); int const x_981 = param; param = 0; param = x_981; @@ -256,7 +256,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_982 = param; param = 0; param = x_982; - float2 const x_546 = float2(x_545.x, x_545.x); + float2 const x_546 = float2(x_545[0], x_545[0]); int const x_983 = i_1; i_1 = 0; i_1 = x_983; @@ -283,7 +283,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_988 = *(h); *(h) = 0; *(h) = x_988; - float3 const x_547 = float3(x_539.x, x_541.z, x_541.z); + float3 const x_547 = float3(x_539[0], x_541[2], x_541[2]); int const x_989 = (*(tint_symbol_82)).numbers.arr[x_61_save]; (*(tint_symbol_82)).numbers.arr[x_61_save] = 0; (*(tint_symbol_82)).numbers.arr[x_61_save] = x_989; @@ -294,7 +294,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_991 = param_1; param_1 = 0; param_1 = x_991; - float3 const x_548 = float3(x_541.y, x_541.z, x_541.x); + float3 const x_548 = float3(x_541[1], x_541[2], x_541[0]); int const x_992 = (*(tint_symbol_82)).numbers.arr[x_61_save]; (*(tint_symbol_82)).numbers.arr[x_61_save] = 0; (*(tint_symbol_82)).numbers.arr[x_61_save] = x_992; @@ -304,7 +304,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_993 = (*(tint_symbol_82)).numbers.arr[x_42_save]; (*(tint_symbol_82)).numbers.arr[x_42_save] = 0; (*(tint_symbol_82)).numbers.arr[x_42_save] = x_993; - float2 const x_549 = float2(x_534.x, x_534.y); + float2 const x_549 = float2(x_534[0], x_534[1]); QuicksortObject const x_994 = *(tint_symbol_82); tint_array_wrapper const tint_symbol_16 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_17 = {.numbers=tint_symbol_16}; @@ -321,17 +321,17 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_997 = j_1; j_1 = 0; j_1 = x_997; - float2 const x_550 = float2(x_534.x, x_534.x); + float2 const x_550 = float2(x_534[0], x_534[0]); int const x_998 = param_1; param_1 = 0; param_1 = x_998; param_2 = x_79; - float2 const x_551 = float2(x_534.y, x_536.x); + float2 const x_551 = float2(x_534[1], x_536[0]); int const x_999 = pivot; pivot = 0; pivot = x_999; int const x_81 = *(h); - float2 const x_552 = float2(x_550.x, x_549.y); + float2 const x_552 = float2(x_550[0], x_549[1]); int const x_1000 = *(h); *(h) = 0; *(h) = x_1000; @@ -339,7 +339,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_1001 = i_1; i_1 = 0; i_1 = x_1001; - float2 const x_553 = float2(x_549.y, x_552.x); + float2 const x_553 = float2(x_549[1], x_552[0]); int const x_1002 = *(h); *(h) = 0; *(h) = x_1002; @@ -347,7 +347,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_1003 = *(l); *(l) = 0; *(l) = x_1003; - float2 const x_554 = float2(x_536.z, float3(1.0f, 2.0f, 3.0f).y); + float2 const x_554 = float2(x_536[2], float3(1.0f, 2.0f, 3.0f)[1]); int const x_1004 = param_1; param_1 = 0; param_1 = x_1004; @@ -355,7 +355,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_1005 = param; param = 0; param = x_1005; - float2 const x_555 = float2(x_534.y, x_534.x); + float2 const x_555 = float2(x_534[1], x_534[0]); int const x_1006 = j_1; j_1 = 0; j_1 = x_1006; @@ -379,7 +379,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array_wrapper const tint_symbol_18 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_18; stack = x_1008; - float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y); + float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]); int const x_1009 = param_5; param_5 = 0; param_5 = x_1009; @@ -388,7 +388,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { p = 0; p = x_1010; int const x_93 = top; - float2 const x_557 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x); + float2 const x_557 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]); int const x_1011 = p; p = 0; p = x_1011; @@ -396,7 +396,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1012 = top; top = 0; top = x_1012; - float2 const x_558 = float2(x_556.y, x_557.y); + float2 const x_558 = float2(x_556[1], x_557[1]); int const x_1013 = param_4; param_4 = 0; param_4 = x_1013; @@ -404,7 +404,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1014 = h_1; h_1 = 0; h_1 = x_1014; - float3 const x_559 = float3(x_557.y, x_557.x, x_557.x); + float3 const x_559 = float3(x_557[1], x_557[0], x_557[0]); int const x_1015 = param_4; param_4 = 0; param_4 = x_1015; @@ -414,13 +414,13 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { QuicksortObject const tint_symbol_20 = {.numbers=tint_symbol_19}; *(tint_symbol_83) = tint_symbol_20; *(tint_symbol_83) = x_1016; - float3 const x_560 = float3(x_559.y, x_559.x, x_557.x); + float3 const x_560 = float3(x_559[1], x_559[0], x_557[0]); int const x_96_save = x_94; tint_array_wrapper const x_1017 = stack; tint_array_wrapper const tint_symbol_21 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_21; stack = x_1017; - float3 const x_561 = float3(x_556.y, x_556.y, x_556.y); + float3 const x_561 = float3(x_556[1], x_556[1], x_556[1]); int const x_1018 = l_1; l_1 = 0; l_1 = 0; @@ -432,7 +432,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1020 = param_4; param_4 = 0; param_4 = x_1020; - float3 const x_562 = float3(float3(1.0f, 2.0f, 3.0f).z, x_558.y, float3(1.0f, 2.0f, 3.0f).y); + float3 const x_562 = float3(float3(1.0f, 2.0f, 3.0f)[2], x_558[1], float3(1.0f, 2.0f, 3.0f)[1]); int const x_1021 = stack.arr[x_96_save]; stack.arr[x_96_save] = 0; stack.arr[x_96_save] = x_1021; @@ -440,7 +440,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1022 = stack.arr[x_96_save]; stack.arr[x_96_save] = 0; stack.arr[x_96_save] = x_1022; - float3 const x_563 = float3(x_559.x, x_559.z, x_556.y); + float3 const x_563 = float3(x_559[0], x_559[2], x_556[1]); top = x_98; int const x_1023 = param_4; param_4 = 0; @@ -449,7 +449,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1024 = param_4; param_4 = 0; param_4 = x_1024; - float3 const x_564 = float3(x_558.x, x_561.x, x_558.y); + float3 const x_564 = float3(x_558[0], x_561[0], x_558[1]); int const x_1025 = l_1; l_1 = 0; l_1 = x_1025; @@ -457,13 +457,13 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1026 = param_5; param_5 = 0; param_5 = x_1026; - float2 const x_565 = float2(x_564.z, x_564.z); + float2 const x_565 = float2(x_564[2], x_564[2]); int const x_1027 = p; p = 0; p = x_1027; stack.arr[x_100_save] = x_99; while (true) { - float3 const x_566 = float3(x_563.x, x_563.x, x_563.x); + float3 const x_566 = float3(x_563[0], x_563[0], x_563[0]); int const x_1028 = h_1; h_1 = 0; h_1 = x_1028; @@ -476,7 +476,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array_wrapper const tint_symbol_23 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_23; stack = x_1030; - float2 const x_567 = float2(x_558.x, x_564.z); + float2 const x_567 = float2(x_558[0], x_564[2]); int const x_1031 = param_4; param_4 = 0; param_4 = x_1031; @@ -489,16 +489,16 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { QuicksortObject const tint_symbol_25 = {.numbers=tint_symbol_24}; *(tint_symbol_83) = tint_symbol_25; *(tint_symbol_83) = x_1032; - float3 const x_568 = float3(x_559.y, x_559.x, x_563.y); + float3 const x_568 = float3(x_559[1], x_559[0], x_563[1]); int const x_1033 = param_4; param_4 = 0; param_4 = x_1033; int const x_108 = top; - float3 const x_569 = float3(x_565.x, x_567.y, x_565.x); + float3 const x_569 = float3(x_565[0], x_567[1], x_565[0]); int const x_1034 = h_1; h_1 = 0; h_1 = x_1034; - float2 const x_570 = float2(x_556.x, x_556.x); + float2 const x_570 = float2(x_556[0], x_556[0]); int const x_1035 = p; p = 0; p = x_1035; @@ -515,7 +515,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array_wrapper const tint_symbol_26 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_26; stack = x_1038; - float3 const x_571 = float3(x_559.y, x_559.x, x_564.y); + float3 const x_571 = float3(x_559[1], x_559[0], x_564[1]); int const x_1039 = l_1; l_1 = 0; l_1 = x_1039; @@ -524,7 +524,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array_wrapper const tint_symbol_27 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_27; stack = x_1040; - float2 const x_572 = float2(x_562.y, x_561.y); + float2 const x_572 = float2(x_562[1], x_561[1]); int const x_1041 = p; p = 0; p = x_1041; @@ -535,17 +535,17 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1043 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1043; - float2 const x_573 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + float2 const x_573 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); top = as_type((as_type(x_112) - as_type(1))); int const x_1044 = param_5; param_5 = 0; param_5 = x_1044; - float3 const x_574 = float3(x_570.y, x_565.x, x_570.y); + float3 const x_574 = float3(x_570[1], x_565[0], x_570[1]); int const x_1045 = h_1; h_1 = 0; h_1 = x_1045; int const x_114_save = x_112; - float2 const x_575 = float2(x_564.y, x_564.z); + float2 const x_575 = float2(x_564[1], x_564[2]); int const x_1046 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1046; @@ -553,7 +553,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1047 = p; p = 0; p = x_1047; - float3 const x_576 = float3(x_573.y, x_573.y, x_565.x); + float3 const x_576 = float3(x_573[1], x_573[1], x_565[0]); int const x_1048 = param_5; param_5 = 0; param_5 = x_1048; @@ -566,15 +566,15 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1050 = stack.arr[x_110_save]; stack.arr[x_110_save] = 0; stack.arr[x_110_save] = x_1050; - float2 const x_577 = float2(x_569.y, x_569.z); + float2 const x_577 = float2(x_569[1], x_569[2]); int const x_120 = h_1; - float2 const x_578 = float2(x_558.x, float3(1.0f, 2.0f, 3.0f).y); + float2 const x_578 = float2(x_558[0], float3(1.0f, 2.0f, 3.0f)[1]); param_5 = x_120; int const x_1051 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1051; int const x_121 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_83); - float2 const x_579 = float2(x_567.x, x_568.x); + float2 const x_579 = float2(x_567[0], x_568[0]); int const x_1052 = param_5; param_5 = 0; param_5 = x_1052; @@ -586,7 +586,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1054 = h_1; h_1 = 0; h_1 = x_1054; - float2 const x_580 = float2(x_568.y, x_568.y); + float2 const x_580 = float2(x_568[1], x_568[1]); int const x_1055 = l_1; l_1 = 0; l_1 = x_1055; @@ -600,7 +600,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1058 = h_1; h_1 = 0; h_1 = x_1058; - float2 const x_582 = float2(x_567.y, x_573.x); + float2 const x_582 = float2(x_567[1], x_573[0]); int const x_1059 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1059; @@ -609,7 +609,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { param_4 = 0; param_4 = x_1060; int const x_128 = top; - float2 const x_583 = float2(x_571.y, x_556.y); + float2 const x_583 = float2(x_571[1], x_556[1]); int const x_1061 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1061; @@ -617,13 +617,13 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array_wrapper const tint_symbol_28 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_28; stack = x_1062; - float2 const x_584 = float2(x_569.z, x_569.y); - float3 const x_585 = float3(x_580.y, x_577.x, x_577.x); + float2 const x_584 = float2(x_569[2], x_569[1]); + float3 const x_585 = float3(x_580[1], x_577[0], x_577[0]); int const x_130 = l_1; int const x_1063 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1063; - float2 const x_586 = float2(x_564.x, x_585.x); + float2 const x_586 = float2(x_564[0], x_585[0]); int const x_1064 = param_5; param_5 = 0; param_5 = x_1064; @@ -631,7 +631,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1065 = stack.arr[x_110_save]; stack.arr[x_110_save] = 0; stack.arr[x_110_save] = x_1065; - float3 const x_587 = float3(x_566.y, x_566.y, x_563.x); + float3 const x_587 = float3(x_566[1], x_566[1], x_563[0]); int const x_1066 = param_5; param_5 = 0; param_5 = x_1066; @@ -640,7 +640,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1067 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1067; - float2 const x_588 = float2(x_575.y, x_575.x); + float2 const x_588 = float2(x_575[1], x_575[0]); int const x_1068 = stack.arr[x_131_save]; stack.arr[x_131_save] = 0; stack.arr[x_131_save] = x_1068; @@ -648,7 +648,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1069 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1069; - float3 const x_589 = float3(x_576.z, x_588.y, x_576.z); + float3 const x_589 = float3(x_576[2], x_588[1], x_576[2]); int const x_1070 = h_1; h_1 = 0; h_1 = x_1070; @@ -658,7 +658,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { stack = tint_symbol_29; stack = x_1071; int const x_134 = p; - float2 const x_590 = float2(x_576.x, x_573.y); + float2 const x_590 = float2(x_576[0], x_573[1]); int const x_1072 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1072; @@ -670,7 +670,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1074 = stack.arr[x_96_save]; stack.arr[x_96_save] = 0; stack.arr[x_96_save] = x_1074; - float2 const x_591 = float2(x_569.z, x_569.y); + float2 const x_591 = float2(x_569[2], x_569[1]); int const x_1075 = stack.arr[x_136_save]; stack.arr[x_136_save] = 0; stack.arr[x_136_save] = x_1075; @@ -678,7 +678,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1076 = stack.arr[x_96_save]; stack.arr[x_96_save] = 0; stack.arr[x_96_save] = x_1076; - float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).y); + float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]); QuicksortObject const x_1077 = *(tint_symbol_83); tint_array_wrapper const tint_symbol_30 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30}; @@ -688,11 +688,11 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1078 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1078; - float3 const x_593 = float3(x_571.z, x_556.x, x_556.y); + float3 const x_593 = float3(x_571[2], x_556[0], x_556[1]); int const x_1079 = p; p = 0; p = x_1079; - float3 const x_594 = float3(x_563.z, x_563.x, x_575.x); + float3 const x_594 = float3(x_563[2], x_563[0], x_575[0]); int const x_1080 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1080; @@ -700,7 +700,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1081 = top; top = 0; top = x_1081; - float3 const x_595 = float3(x_560.z, x_568.x, x_560.x); + float3 const x_595 = float3(x_560[2], x_568[0], x_560[0]); int const x_1082 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1082; @@ -711,7 +711,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1084 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1084; - float2 const x_596 = float2(x_592.y, x_582.x); + float2 const x_596 = float2(x_592[1], x_582[0]); int const x_1085 = l_1; l_1 = 0; l_1 = x_1085; @@ -719,7 +719,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1086 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1086; - float3 const x_597 = float3(x_562.y, x_560.y, x_560.y); + float3 const x_597 = float3(x_562[1], x_560[1], x_560[1]); int const x_144 = as_type((as_type(x_143) + as_type(1))); int const x_1087 = param_5; param_5 = 0; @@ -732,11 +732,11 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1089 = param_5; param_5 = 0; param_5 = x_1089; - float3 const x_599 = float3(x_560.z, x_560.x, x_568.x); + float3 const x_599 = float3(x_560[2], x_560[0], x_568[0]); int const x_1090 = p; p = 0; p = x_1090; - float3 const x_600 = float3(x_556.x, x_580.x, x_580.x); + float3 const x_600 = float3(x_556[0], x_580[0], x_580[0]); int const x_1091 = stack.arr[x_100_save]; stack.arr[x_100_save] = 0; stack.arr[x_100_save] = x_1091; @@ -744,7 +744,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1092 = stack.arr[x_110_save]; stack.arr[x_110_save] = 0; stack.arr[x_110_save] = x_1092; - float2 const x_601 = float2(x_563.x, x_563.y); + float2 const x_601 = float2(x_563[0], x_563[1]); stack.arr[x_147_save] = as_type((1u + as_type(x_145))); tint_array_wrapper const x_1093 = stack; tint_array_wrapper const tint_symbol_32 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; @@ -754,7 +754,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1094 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1094; - float2 const x_602 = float2(x_565.y, x_599.y); + float2 const x_602 = float2(x_565[1], x_599[1]); tint_array_wrapper const x_1095 = stack; tint_array_wrapper const tint_symbol_33 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; stack = tint_symbol_33; @@ -778,7 +778,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1100 = stack.arr[x_114_save]; stack.arr[x_114_save] = 0; stack.arr[x_114_save] = x_1100; - float3 const x_603 = float3(x_568.y, x_564.x, x_564.x); + float3 const x_603 = float3(x_568[1], x_564[0], x_564[0]); int const x_1101 = l_1; l_1 = 0; l_1 = x_1101; @@ -790,7 +790,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1103 = l_1; l_1 = 0; l_1 = x_1103; - float2 const x_604 = float2(x_563.z, x_564.x); + float2 const x_604 = float2(x_563[2], x_564[0]); QuicksortObject const x_1104 = *(tint_symbol_83); tint_array_wrapper const tint_symbol_34 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_35 = {.numbers=tint_symbol_34}; @@ -823,7 +823,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38}; *(tint_symbol_84) = tint_symbol_39; *(tint_symbol_84) = x_722; - float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x); + float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]); int const x_158 = i_2; float2 const x_723 = uv; uv = float2(0.0f, 0.0f); @@ -831,7 +831,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float3 const x_725 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_725; - float2 const x_432 = float2(x_431.y, x_431.y); + float2 const x_432 = float2(x_431[1], x_431[1]); QuicksortObject const x_726 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_40 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_41 = {.numbers=tint_symbol_40}; @@ -843,7 +843,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42}; *(tint_symbol_84) = tint_symbol_43; *(tint_symbol_84) = x_756; - float2 const x_446 = float2(float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).x); + float2 const x_446 = float2(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[0]); int const x_757 = i_2; i_2 = 0; i_2 = x_757; @@ -857,12 +857,12 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float2 const x_759 = uv; uv = float2(0.0f, 0.0f); uv = x_759; - float2 const x_447 = float2(float2(0.0f, 0.0f).y, float2(0.0f, 0.0f).y); + float2 const x_447 = float2(float2(0.0f, 0.0f)[1], float2(0.0f, 0.0f)[1]); float2 const x_760 = uv; uv = float2(0.0f, 0.0f); uv = x_760; - float2 const x_185 = float2(x_184.x, x_184.y); - float3 const x_448 = float3(x_185.y, x_446.y, x_446.y); + float2 const x_185 = float2(x_184[0], x_184[1]); + float3 const x_448 = float3(x_185[1], x_446[1], x_446[1]); QuicksortObject const x_761 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_46 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_47 = {.numbers=tint_symbol_46}; @@ -877,7 +877,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48}; *(tint_symbol_84) = tint_symbol_49; *(tint_symbol_84) = x_763; - float3 const x_449 = float3(x_184.y, float3(1.0f, 2.0f, 3.0f).z, x_184.w); + float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]); float3 const x_764 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_764; @@ -887,7 +887,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_51 = {.numbers=tint_symbol_50}; *(tint_symbol_84) = tint_symbol_51; *(tint_symbol_84) = x_765; - float2 const x_450 = float2(x_447.x, x_185.y); + float2 const x_450 = float2(x_447[0], x_185[1]); float3 const x_766 = color; color = float3(0.0f, 0.0f, 0.0f); float3 const x_767 = color; @@ -899,7 +899,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float3 const x_768 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_768; - float3 const x_451 = float3(x_185.x, x_185.y, x_446.y); + float3 const x_451 = float3(x_185[0], x_185[1], x_446[1]); QuicksortObject const x_769 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_52 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_53 = {.numbers=tint_symbol_52}; @@ -917,11 +917,11 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, int const x_772 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_772; - float const x_206 = color.x; - float const x_773 = color.x; - color.x = 0.0f; - color.x = x_773; - float2 const x_452 = float2(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y); + float const x_206 = color[0]; + float const x_773 = color[0]; + color[0] = 0.0f; + color[0] = x_773; + float2 const x_452 = float2(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1]); int const x_774 = i_2; i_2 = 0; i_2 = x_774; @@ -930,20 +930,20 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_57 = {.numbers=tint_symbol_56}; *(tint_symbol_84) = tint_symbol_57; *(tint_symbol_84) = x_775; - float3 const x_453 = float3(x_451.x, x_450.x, x_450.y); - color.x = (x_206 + float(x_201)); + float3 const x_453 = float3(x_451[0], x_450[0], x_450[1]); + color[0] = (x_206 + float(x_201)); float2 const x_776 = uv; uv = float2(0.0f, 0.0f); uv = x_776; float2 const x_777 = uv; uv = float2(0.0f, 0.0f); uv = x_777; - float2 const x_454 = float2(x_184.y, x_184.y); - float const x_210 = uv.x; - float2 const x_455 = float2(x_192.y, x_192.x); - float const x_778 = uv.x; - uv.x = 0.0f; - uv.x = x_778; + float2 const x_454 = float2(x_184[1], x_184[1]); + float const x_210 = uv[0]; + float2 const x_455 = float2(x_192[1], x_192[0]); + float const x_778 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_778; QuicksortObject const x_779 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_58 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_59 = {.numbers=tint_symbol_58}; @@ -956,17 +956,17 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, int const x_781 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_781; - float3 const x_456 = float3(float2(0.0f, 0.0f).y, x_448.y, x_448.y); - float const x_782 = uv.x; - uv.x = 0.0f; - uv.x = x_782; + float3 const x_456 = float3(float2(0.0f, 0.0f)[1], x_448[1], x_448[1]); + float const x_782 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_782; int const x_216 = (*(tint_symbol_84)).numbers.arr[1]; QuicksortObject const x_783 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_60 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_61 = {.numbers=tint_symbol_60}; *(tint_symbol_84) = tint_symbol_61; *(tint_symbol_84) = x_783; - float2 const x_457 = float2(x_454.x, x_454.x); + float2 const x_457 = float2(x_454[0], x_454[0]); float2 const x_784 = uv; uv = float2(0.0f, 0.0f); uv = x_784; @@ -975,7 +975,7 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62}; *(tint_symbol_84) = tint_symbol_63; *(tint_symbol_84) = x_785; - float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f).z, float2(0.0f, 0.0f).y); + float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2(0.0f, 0.0f)[1]); int const x_786 = i_2; i_2 = 0; i_2 = x_786; @@ -989,144 +989,144 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float3 const x_789 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_789; - float3 const x_459 = float3(x_454.y, x_454.y, x_447.y); + float3 const x_459 = float3(x_454[1], x_454[1], x_447[1]); float const x_790 = color[0]; color[0] = 0.0f; color[0] = x_790; - color.x = (float(x_216) + x_219); + color[0] = (float(x_216) + x_219); int const x_791 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_791; } - float const x_792 = uv.x; - uv.x = 0.0f; - uv.x = x_792; - float const x_793 = uv.x; - uv.x = 0.0f; - uv.x = x_793; - float const x_223 = uv.x; - float const x_794 = uv.x; - uv.x = 0.0f; - uv.x = x_794; - float3 const x_460 = float3(x_453.z, x_453.y, x_453.y); + float const x_792 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_792; + float const x_793 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_793; + float const x_223 = uv[0]; + float const x_794 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_794; + float3 const x_460 = float3(x_453[2], x_453[1], x_453[1]); float2 const x_795 = uv; uv = float2(0.0f, 0.0f); uv = x_795; - float const x_796 = uv.x; - uv.x = 0.0f; - uv.x = x_796; - float2 const x_461 = float2(float2(0.0f, 0.0f).y, float2(0.0f, 0.0f).y); - float const x_797 = uv.x; - uv.x = 0.0f; - uv.x = x_797; + float const x_796 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_796; + float2 const x_461 = float2(float2(0.0f, 0.0f)[1], float2(0.0f, 0.0f)[1]); + float const x_797 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_797; if ((x_223 > 0.5f)) { - float const x_798 = uv.x; - uv.x = 0.0f; - uv.x = x_798; - float2 const x_462 = float2(x_446.x, x_446.x); - float const x_799 = color.x; - color.x = 0.0f; - color.x = x_799; - float const x_800 = color.x; - color.x = 0.0f; - color.x = x_800; - float3 const x_463 = float3(x_453.x, x_453.z, x_461.y); - float const x_801 = color.x; - color.x = 0.0f; - color.x = x_801; + float const x_798 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_798; + float2 const x_462 = float2(x_446[0], x_446[0]); + float const x_799 = color[0]; + color[0] = 0.0f; + color[0] = x_799; + float const x_800 = color[0]; + color[0] = 0.0f; + color[0] = x_800; + float3 const x_463 = float3(x_453[0], x_453[2], x_461[1]); + float const x_801 = color[0]; + color[0] = 0.0f; + color[0] = x_801; int const x_230 = (*(tint_symbol_84)).numbers.arr[2u]; - float const x_802 = uv.x; - uv.x = 0.0f; - uv.x = x_802; - float const x_803 = color.x; - color.x = 0.0f; - color.x = x_803; + float const x_802 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_802; + float const x_803 = color[0]; + color[0] = 0.0f; + color[0] = x_803; int const x_804 = (*(tint_symbol_84)).numbers.arr[2u]; (*(tint_symbol_84)).numbers.arr[2u] = 0; (*(tint_symbol_84)).numbers.arr[2u] = x_804; - float2 const x_464 = float2(x_450.y, x_191.x); - float const x_805 = color.y; - color.y = 0.0f; - color.y = x_805; - float const x_234 = color.y; + float2 const x_464 = float2(x_450[1], x_191[0]); + float const x_805 = color[1]; + color[1] = 0.0f; + color[1] = x_805; + float const x_234 = color[1]; int const x_806 = (*(tint_symbol_84)).numbers.arr[2u]; (*(tint_symbol_84)).numbers.arr[2u] = 0; (*(tint_symbol_84)).numbers.arr[2u] = x_806; - float2 const x_465 = float2(x_463.x, x_185.x); - float const x_807 = color.x; - color.x = 0.0f; - color.x = x_807; + float2 const x_465 = float2(x_463[0], x_185[0]); + float const x_807 = color[0]; + color[0] = 0.0f; + color[0] = x_807; int const x_808 = i_2; i_2 = 0; i_2 = x_808; - float2 const x_466 = float2(x_455.y, float2(0.0f, 0.0f).y); + float2 const x_466 = float2(x_455[1], float2(0.0f, 0.0f)[1]); int const x_809 = i_2; i_2 = 0; i_2 = x_809; - color.y = (float(x_230) + x_234); - float const x_810 = uv.x; - uv.x = 0.0f; - uv.x = x_810; + color[1] = (float(x_230) + x_234); + float const x_810 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_810; } int const x_811 = i_2; i_2 = 0; i_2 = x_811; - float2 const x_467 = float2(x_191.x, x_191.x); - float const x_812 = uv.x; - uv.x = 0.0f; - uv.x = x_812; + float2 const x_467 = float2(x_191[0], x_191[0]); + float const x_812 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_812; float const x_238 = uv[0]; float3 const x_813 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_813; - float const x_814 = color.x; - color.x = 0.0f; - color.x = x_814; + float const x_814 = color[0]; + color[0] = 0.0f; + color[0] = x_814; if ((x_238 > 0.75f)) { - float const x_815 = color.x; - color.x = 0.0f; - color.x = x_815; + float const x_815 = color[0]; + color[0] = 0.0f; + color[0] = x_815; int const x_245 = (*(tint_symbol_84)).numbers.arr[3]; - float const x_816 = color.x; - color.x = 0.0f; - color.x = x_816; + float const x_816 = color[0]; + color[0] = 0.0f; + color[0] = x_816; QuicksortObject const x_817 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_64 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_65 = {.numbers=tint_symbol_64}; *(tint_symbol_84) = tint_symbol_65; *(tint_symbol_84) = x_817; - float3 const x_468 = float3(x_467.x, x_467.x, x_467.x); + float3 const x_468 = float3(x_467[0], x_467[0], x_467[0]); float const x_818 = uv[0]; uv[0] = 0.0f; uv[0] = x_818; - float const x_819 = uv.x; - uv.x = 0.0f; - uv.x = x_819; - float const x_249 = color.z; + float const x_819 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_819; + float const x_249 = color[2]; float3 const x_820 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_820; - float3 const x_469 = float3(x_467.x, x_191.y, x_467.y); - float const x_821 = color.z; - color.z = 0.0f; - color.z = x_821; + float3 const x_469 = float3(x_467[0], x_191[1], x_467[1]); + float const x_821 = color[2]; + color[2] = 0.0f; + color[2] = x_821; int const x_822 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_822; - float2 const x_470 = float2(float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).y); - float const x_823 = color.z; - color.z = 0.0f; - color.z = x_823; - color.z = (x_249 + float(x_245)); + float2 const x_470 = float2(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[1]); + float const x_823 = color[2]; + color[2] = 0.0f; + color[2] = x_823; + color[2] = (x_249 + float(x_245)); float2 const x_824 = uv; uv = float2(0.0f, 0.0f); uv = x_824; - float2 const x_471 = float2(x_470.y, x_470.y); + float2 const x_471 = float2(x_470[1], x_470[1]); } float const x_825 = uv[0]; uv[0] = 0.0f; uv[0] = x_825; - float3 const x_472 = float3(x_454.x, x_454.y, x_454.y); + float3 const x_472 = float3(x_454[0], x_454[1], x_454[1]); int const x_254 = (*(tint_symbol_84)).numbers.arr[4]; float const x_826 = uv[0]; uv[0] = 0.0f; @@ -1134,178 +1134,178 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float3 const x_827 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_827; - float3 const x_473 = float3(x_446.y, x_453.x, x_453.x); + float3 const x_473 = float3(x_446[1], x_453[0], x_453[0]); int const x_828 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_828; - float2 const x_474 = float2(x_191.x, x_184.z); - float const x_829 = uv.x; - uv.x = 0.0f; - uv.x = x_829; - float const x_257 = color.y; - float const x_830 = color.y; - color.y = 0.0f; - color.y = x_830; - float2 const x_475 = float2(x_467.x, x_450.x); - float const x_831 = uv.x; - uv.x = 0.0f; - uv.x = x_831; - float const x_832 = color.x; - color.x = 0.0f; - color.x = x_832; - float2 const x_476 = float2(x_451.z, x_460.y); - color.y = (x_257 + float(x_254)); - float3 const x_477 = float3(float2(0.0f, 0.0f).x, x_472.x, float2(0.0f, 0.0f).y); - float const x_833 = uv.x; - uv.x = 0.0f; - uv.x = x_833; - float const x_834 = color.x; - color.x = 0.0f; - color.x = x_834; - float2 const x_478 = float2(x_472.x, x_472.y); - float const x_835 = uv.y; - uv.y = 0.0f; - uv.y = x_835; - float const x_261 = uv.y; + float2 const x_474 = float2(x_191[0], x_184[2]); + float const x_829 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_829; + float const x_257 = color[1]; + float const x_830 = color[1]; + color[1] = 0.0f; + color[1] = x_830; + float2 const x_475 = float2(x_467[0], x_450[0]); + float const x_831 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_831; + float const x_832 = color[0]; + color[0] = 0.0f; + color[0] = x_832; + float2 const x_476 = float2(x_451[2], x_460[1]); + color[1] = (x_257 + float(x_254)); + float3 const x_477 = float3(float2(0.0f, 0.0f)[0], x_472[0], float2(0.0f, 0.0f)[1]); + float const x_833 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_833; + float const x_834 = color[0]; + color[0] = 0.0f; + color[0] = x_834; + float2 const x_478 = float2(x_472[0], x_472[1]); + float const x_835 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_835; + float const x_261 = uv[1]; int const x_836 = i_2; i_2 = 0; i_2 = x_836; - float3 const x_479 = float3(float2(0.0f, 0.0f).y, x_454.y, float2(0.0f, 0.0f).x); + float3 const x_479 = float3(float2(0.0f, 0.0f)[1], x_454[1], float2(0.0f, 0.0f)[0]); int const x_837 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_837; - float const x_838 = color.y; - color.y = 0.0f; - color.y = x_838; - float3 const x_480 = float3(x_446.x, x_446.x, float2(0.0f, 0.0f).y); - float const x_839 = uv.x; - uv.x = 0.0f; - uv.x = x_839; + float const x_838 = color[1]; + color[1] = 0.0f; + color[1] = x_838; + float3 const x_480 = float3(x_446[0], x_446[0], float2(0.0f, 0.0f)[1]); + float const x_839 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_839; if ((x_261 > 0.25f)) { - float2 const x_481 = float2(x_447.x, x_480.z); + float2 const x_481 = float2(x_447[0], x_480[2]); float3 const x_840 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_840; int const x_267 = (*(tint_symbol_84)).numbers.arr[5u]; - float const x_841 = color.x; - color.x = 0.0f; - color.x = x_841; + float const x_841 = color[0]; + color[0] = 0.0f; + color[0] = x_841; int const x_842 = i_2; i_2 = 0; i_2 = x_842; int const x_843 = i_2; i_2 = 0; i_2 = x_843; - float const x_270 = color.x; + float const x_270 = color[0]; float const x_844 = uv[0]; uv[0] = 0.0f; uv[0] = x_844; - float3 const x_482 = float3(x_455.x, x_475.y, x_455.y); + float3 const x_482 = float3(x_455[0], x_475[1], x_455[1]); QuicksortObject const x_845 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_66 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_67 = {.numbers=tint_symbol_66}; *(tint_symbol_84) = tint_symbol_67; *(tint_symbol_84) = x_845; - float const x_846 = uv.y; - uv.y = 0.0f; - uv.y = x_846; + float const x_846 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_846; int const x_847 = i_2; i_2 = 0; i_2 = x_847; - float3 const x_483 = float3(x_184.w, x_184.w, x_192.x); - float const x_848 = uv.x; - uv.x = 0.0f; - uv.x = x_848; - color.x = (float(x_267) + x_270); - float3 const x_484 = float3(x_454.y, x_450.x, x_454.y); - float const x_849 = uv.x; - uv.x = 0.0f; - uv.x = x_849; + float3 const x_483 = float3(x_184[3], x_184[3], x_192[0]); + float const x_848 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_848; + color[0] = (float(x_267) + x_270); + float3 const x_484 = float3(x_454[1], x_450[0], x_454[1]); + float const x_849 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_849; } - float const x_850 = color.x; - color.x = 0.0f; - color.x = x_850; - float3 const x_485 = float3(x_467.x, x_450.y, x_450.x); - float const x_851 = uv.y; - uv.y = 0.0f; - uv.y = x_851; + float const x_850 = color[0]; + color[0] = 0.0f; + color[0] = x_850; + float3 const x_485 = float3(x_467[0], x_450[1], x_450[0]); + float const x_851 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_851; int const x_852 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_852; - float const x_274 = uv.y; + float const x_274 = uv[1]; int const x_853 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_853; if ((x_274 > 0.5f)) { - float const x_854 = uv.x; - uv.x = 0.0f; - uv.x = x_854; - float2 const x_486 = float2(x_480.y, x_455.y); - float const x_855 = color.y; - color.y = 0.0f; - color.y = x_855; - float2 const x_487 = float2(x_449.z, x_449.y); - float const x_856 = uv.y; - uv.y = 0.0f; - uv.y = x_856; + float const x_854 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_854; + float2 const x_486 = float2(x_480[1], x_455[1]); + float const x_855 = color[1]; + color[1] = 0.0f; + color[1] = x_855; + float2 const x_487 = float2(x_449[2], x_449[1]); + float const x_856 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_856; int const x_280 = (*(tint_symbol_84)).numbers.arr[6u]; - float const x_857 = uv.y; - uv.y = 0.0f; - uv.y = x_857; + float const x_857 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_857; int const x_858 = i_2; i_2 = 0; i_2 = x_858; int const x_859 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_859; - float2 const x_488 = float2(x_473.z, x_473.y); - float const x_283 = color.y; + float2 const x_488 = float2(x_473[2], x_473[1]); + float const x_283 = color[1]; float2 const x_860 = uv; uv = float2(0.0f, 0.0f); uv = x_860; - float const x_861 = color.x; - color.x = 0.0f; - color.x = x_861; - float2 const x_489 = float2(x_475.y, x_475.x); + float const x_861 = color[0]; + color[0] = 0.0f; + color[0] = x_861; + float2 const x_489 = float2(x_475[1], x_475[0]); int const x_862 = (*(tint_symbol_84)).numbers.arr[6u]; (*(tint_symbol_84)).numbers.arr[6u] = 0; (*(tint_symbol_84)).numbers.arr[6u] = x_862; int const x_863 = (*(tint_symbol_84)).numbers.arr[6u]; (*(tint_symbol_84)).numbers.arr[6u] = 0; (*(tint_symbol_84)).numbers.arr[6u] = x_863; - float2 const x_490 = float2(x_480.z, x_480.z); + float2 const x_490 = float2(x_480[2], x_480[2]); QuicksortObject const x_864 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_68 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_69 = {.numbers=tint_symbol_68}; *(tint_symbol_84) = tint_symbol_69; *(tint_symbol_84) = x_864; - color.y = (float(x_280) + x_283); - float const x_865 = color.x; - color.x = 0.0f; - color.x = x_865; - float2 const x_491 = float2(float3(1.0f, 2.0f, 3.0f).y, x_454.x); - float const x_866 = color.y; - color.y = 0.0f; - color.y = x_866; + color[1] = (float(x_280) + x_283); + float const x_865 = color[0]; + color[0] = 0.0f; + color[0] = x_865; + float2 const x_491 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_454[0]); + float const x_866 = color[1]; + color[1] = 0.0f; + color[1] = x_866; } - float2 const x_492 = float2(x_455.y, x_455.y); - float const x_867 = color.x; - color.x = 0.0f; - color.x = x_867; - float const x_287 = uv.y; + float2 const x_492 = float2(x_455[1], x_455[1]); + float const x_867 = color[0]; + color[0] = 0.0f; + color[0] = x_867; + float const x_287 = uv[1]; QuicksortObject const x_868 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_70 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_71 = {.numbers=tint_symbol_70}; *(tint_symbol_84) = tint_symbol_71; *(tint_symbol_84) = x_868; - float2 const x_493 = float2(x_475.x, x_475.y); + float2 const x_493 = float2(x_475[0], x_475[1]); float const x_869 = uv[0]; uv[0] = 0.0f; uv[0] = x_869; - float const x_870 = color.y; - color.y = 0.0f; - color.y = x_870; - float3 const x_494 = float3(x_191.x, x_191.y, x_191.y); + float const x_870 = color[1]; + color[1] = 0.0f; + color[1] = x_870; + float3 const x_494 = float3(x_191[0], x_191[1], x_191[1]); int const x_871 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_871; @@ -1313,63 +1313,63 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, float3 const x_872 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_872; - float const x_873 = color.x; - color.x = 0.0f; - color.x = x_873; - float3 const x_495 = float3(x_192.y, x_192.x, x_192.y); + float const x_873 = color[0]; + color[0] = 0.0f; + color[0] = x_873; + float3 const x_495 = float3(x_192[1], x_192[0], x_192[1]); float3 const x_874 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_874; int const x_293 = (*(tint_symbol_84)).numbers.arr[7]; - float const x_875 = uv.x; - uv.x = 0.0f; - uv.x = x_875; - float3 const x_496 = float3(x_475.x, x_467.y, x_467.x); - float const x_876 = color.y; - color.y = 0.0f; - color.y = x_876; - float2 const x_497 = float2(x_477.x, x_461.y); + float const x_875 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_875; + float3 const x_496 = float3(x_475[0], x_467[1], x_467[0]); + float const x_876 = color[1]; + color[1] = 0.0f; + color[1] = x_876; + float2 const x_497 = float2(x_477[0], x_461[1]); int const x_877 = (*(tint_symbol_84)).numbers.arr[0u]; (*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = x_877; - float const x_878 = color.y; - color.y = 0.0f; - color.y = x_878; - float3 const x_498 = float3(x_478.x, x_478.y, x_478.x); - float const x_879 = color.x; - color.x = 0.0f; - color.x = x_879; - float const x_296 = color.z; - float const x_880 = uv.y; - uv.y = 0.0f; - uv.y = x_880; - float2 const x_499 = float2(x_184.x, x_184.y); - float const x_881 = uv.x; - uv.x = 0.0f; - uv.x = x_881; - float const x_882 = uv.y; - uv.y = 0.0f; - uv.y = x_882; - float const x_883 = uv.y; - uv.y = 0.0f; - uv.y = x_883; - float3 const x_500 = float3(x_499.y, x_499.y, x_494.z); - float const x_884 = color.z; - color.z = 0.0f; - color.z = x_884; - color.z = (float(x_293) + x_296); - float const x_885 = color.y; - color.y = 0.0f; - color.y = x_885; - float2 const x_501 = float2(x_453.x, x_453.z); - float const x_886 = color.x; - color.x = 0.0f; - color.x = x_886; + float const x_878 = color[1]; + color[1] = 0.0f; + color[1] = x_878; + float3 const x_498 = float3(x_478[0], x_478[1], x_478[0]); + float const x_879 = color[0]; + color[0] = 0.0f; + color[0] = x_879; + float const x_296 = color[2]; + float const x_880 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_880; + float2 const x_499 = float2(x_184[0], x_184[1]); + float const x_881 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_881; + float const x_882 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_882; + float const x_883 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_883; + float3 const x_500 = float3(x_499[1], x_499[1], x_494[2]); + float const x_884 = color[2]; + color[2] = 0.0f; + color[2] = x_884; + color[2] = (float(x_293) + x_296); + float const x_885 = color[1]; + color[1] = 0.0f; + color[1] = x_885; + float2 const x_501 = float2(x_453[0], x_453[2]); + float const x_886 = color[0]; + color[0] = 0.0f; + color[0] = x_886; } int const x_887 = i_2; i_2 = 0; i_2 = x_887; - float2 const x_502 = float2(x_451.y, x_192.y); + float2 const x_502 = float2(x_451[1], x_192[1]); float2 const x_888 = uv; uv = float2(0.0f, 0.0f); uv = x_888; @@ -1377,138 +1377,138 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, int const x_889 = i_2; i_2 = 0; i_2 = x_889; - float2 const x_503 = float2(x_185.x, x_451.z); + float2 const x_503 = float2(x_185[0], x_451[2]); int const x_890 = (*(tint_symbol_84)).numbers.arr[8]; (*(tint_symbol_84)).numbers.arr[8] = 0; (*(tint_symbol_84)).numbers.arr[8] = x_890; - float const x_891 = color.y; - color.y = 0.0f; - color.y = x_891; - float2 const x_504 = float2(x_453.y, float2(0.0f, 0.0f).x); - float const x_892 = color.x; - color.x = 0.0f; - color.x = x_892; - float3 const x_505 = float3(x_504.x, x_504.y, x_504.x); - float const x_893 = color.z; - color.z = 0.0f; - color.z = x_893; - float const x_304 = color.z; - float const x_894 = color.x; - color.x = 0.0f; - color.x = x_894; - float2 const x_506 = float2(x_493.x, x_492.x); + float const x_891 = color[1]; + color[1] = 0.0f; + color[1] = x_891; + float2 const x_504 = float2(x_453[1], float2(0.0f, 0.0f)[0]); + float const x_892 = color[0]; + color[0] = 0.0f; + color[0] = x_892; + float3 const x_505 = float3(x_504[0], x_504[1], x_504[0]); + float const x_893 = color[2]; + color[2] = 0.0f; + color[2] = x_893; + float const x_304 = color[2]; + float const x_894 = color[0]; + color[0] = 0.0f; + color[0] = x_894; + float2 const x_506 = float2(x_493[0], x_492[0]); int const x_895 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_895; - float const x_896 = uv.y; - uv.y = 0.0f; - uv.y = x_896; - float2 const x_507 = float2(x_461.x, x_447.x); - float const x_897 = color.y; - color.y = 0.0f; - color.y = x_897; - color.z = (x_304 + float(x_301)); + float const x_896 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_896; + float2 const x_507 = float2(x_461[0], x_447[0]); + float const x_897 = color[1]; + color[1] = 0.0f; + color[1] = x_897; + color[2] = (x_304 + float(x_301)); float2 const x_898 = uv; uv = float2(0.0f, 0.0f); uv = x_898; - float const x_899 = uv.x; - uv.x = 0.0f; - uv.x = x_899; - float3 const x_508 = float3(x_461.y, x_461.x, x_506.y); - float const x_900 = uv.x; - uv.x = 0.0f; - uv.x = x_900; - float const x_308 = uv.x; - float const x_901 = color.y; - color.y = 0.0f; - color.y = x_901; - float3 const x_509 = float3(x_503.y, x_503.x, x_448.z); - float const x_902 = uv.y; - uv.y = 0.0f; - uv.y = x_902; - float const x_310 = uv.y; - float const x_903 = uv.y; - uv.y = 0.0f; - uv.y = x_903; - float const x_904 = color.z; - color.z = 0.0f; - color.z = x_904; - float3 const x_510 = float3(float3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z); - float const x_905 = color.z; - color.z = 0.0f; - color.z = x_905; + float const x_899 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_899; + float3 const x_508 = float3(x_461[1], x_461[0], x_506[1]); + float const x_900 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_900; + float const x_308 = uv[0]; + float const x_901 = color[1]; + color[1] = 0.0f; + color[1] = x_901; + float3 const x_509 = float3(x_503[1], x_503[0], x_448[2]); + float const x_902 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_902; + float const x_310 = uv[1]; + float const x_903 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_903; + float const x_904 = color[2]; + color[2] = 0.0f; + color[2] = x_904; + float3 const x_510 = float3(float3(1.0f, 2.0f, 3.0f)[1], x_485[1], x_485[2]); + float const x_905 = color[2]; + color[2] = 0.0f; + color[2] = x_905; int const x_906 = i_2; i_2 = 0; i_2 = x_906; - float2 const x_511 = float2(x_485.z, x_485.y); + float2 const x_511 = float2(x_485[2], x_485[1]); float3 const x_907 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_907; - float const x_908 = uv.y; - uv.y = 0.0f; - uv.y = x_908; - float3 const x_512 = float3(x_455.y, x_455.y, x_455.y); + float const x_908 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_908; + float3 const x_512 = float3(x_455[1], x_455[1], x_455[1]); int const x_909 = (*(tint_symbol_84)).numbers.arr[4]; (*(tint_symbol_84)).numbers.arr[4] = 0; (*(tint_symbol_84)).numbers.arr[4] = x_909; if ((fabs((x_308 - x_310)) < 0.25f)) { - float const x_910 = uv.x; - uv.x = 0.0f; - uv.x = x_910; + float const x_910 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_910; QuicksortObject const x_911 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_72 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_73 = {.numbers=tint_symbol_72}; *(tint_symbol_84) = tint_symbol_73; *(tint_symbol_84) = x_911; - float3 const x_513 = float3(x_505.z, x_505.x, x_448.x); + float3 const x_513 = float3(x_505[2], x_505[0], x_448[0]); int const x_912 = (*(tint_symbol_84)).numbers.arr[8]; (*(tint_symbol_84)).numbers.arr[8] = 0; (*(tint_symbol_84)).numbers.arr[8] = x_912; int const x_317 = (*(tint_symbol_84)).numbers.arr[9u]; - float3 const x_514 = float3(x_474.y, x_474.y, x_474.y); - float const x_913 = uv.y; - uv.y = 0.0f; - uv.y = x_913; - float const x_320 = color.x; - float const x_914 = uv.y; - uv.y = 0.0f; - uv.y = x_914; - float2 const x_515 = float2(x_502.x, x_502.y); - float const x_915 = color.x; - color.x = 0.0f; - color.x = x_915; + float3 const x_514 = float3(x_474[1], x_474[1], x_474[1]); + float const x_913 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_913; + float const x_320 = color[0]; + float const x_914 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_914; + float2 const x_515 = float2(x_502[0], x_502[1]); + float const x_915 = color[0]; + color[0] = 0.0f; + color[0] = x_915; float3 const x_916 = color; color = float3(0.0f, 0.0f, 0.0f); color = x_916; - float2 const x_516 = float2(x_452.x, x_452.x); + float2 const x_516 = float2(x_452[0], x_452[0]); float2 const x_917 = uv; uv = float2(0.0f, 0.0f); uv = x_917; - float const x_918 = uv.x; - uv.x = 0.0f; - uv.x = x_918; - float3 const x_517 = float3(float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).y); - color.x = (float(x_317) + x_320); - float const x_919 = color.x; - color.x = 0.0f; - color.x = x_919; - float3 const x_518 = float3(x_480.y, x_508.x, x_480.x); - float const x_920 = color.x; - color.x = 0.0f; - color.x = x_920; + float const x_918 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_918; + float3 const x_517 = float3(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[1]); + color[0] = (float(x_317) + x_320); + float const x_919 = color[0]; + color[0] = 0.0f; + color[0] = x_919; + float3 const x_518 = float3(x_480[1], x_508[0], x_480[0]); + float const x_920 = color[0]; + color[0] = 0.0f; + color[0] = x_920; } - float const x_921 = uv.y; - uv.y = 0.0f; - uv.y = x_921; + float const x_921 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_921; float3 const x_325 = color; float const x_922 = uv[0]; uv[0] = 0.0f; uv[0] = x_922; - float3 const x_519 = float3(x_447.x, x_446.x, x_446.y); + float3 const x_519 = float3(x_447[0], x_446[0], x_446[1]); float3 const x_326 = normalize(x_325); - float const x_923 = uv.x; - uv.x = 0.0f; - uv.x = x_923; + float const x_923 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_923; QuicksortObject const x_924 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_74 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_75 = {.numbers=tint_symbol_74}; @@ -1519,31 +1519,31 @@ void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, QuicksortObject const tint_symbol_77 = {.numbers=tint_symbol_76}; *(tint_symbol_84) = tint_symbol_77; *(tint_symbol_84) = x_925; - float const x_926 = color.y; - color.y = 0.0f; - color.y = x_926; - float2 const x_520 = float2(x_506.y, x_519.y); - float const x_927 = color.y; - color.y = 0.0f; - color.y = x_927; - float4 const x_330 = float4(x_326.x, x_326.y, x_326.z, 1.0f); - float const x_928 = uv.y; - uv.y = 0.0f; - uv.y = x_928; - float3 const x_521 = float3(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y, x_520.y); - float const x_929 = uv.x; - uv.x = 0.0f; - uv.x = x_929; + float const x_926 = color[1]; + color[1] = 0.0f; + color[1] = x_926; + float2 const x_520 = float2(x_506[1], x_519[1]); + float const x_927 = color[1]; + color[1] = 0.0f; + color[1] = x_927; + float4 const x_330 = float4(x_326[0], x_326[1], x_326[2], 1.0f); + float const x_928 = uv[1]; + uv[1] = 0.0f; + uv[1] = x_928; + float3 const x_521 = float3(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1], x_520[1]); + float const x_929 = uv[0]; + uv[0] = 0.0f; + uv[0] = x_929; *(tint_symbol_86) = x_330; QuicksortObject const x_930 = *(tint_symbol_84); tint_array_wrapper const tint_symbol_78 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; QuicksortObject const tint_symbol_79 = {.numbers=tint_symbol_78}; *(tint_symbol_84) = tint_symbol_79; *(tint_symbol_84) = x_930; - float3 const x_522 = float3(x_330.w, x_330.y, x_493.x); - float const x_931 = color.x; - color.x = 0.0f; - color.x = x_931; + float3 const x_522 = float3(x_330[3], x_330[1], x_493[0]); + float const x_931 = color[0]; + color[0] = 0.0f; + color[0] = x_931; return; } diff --git a/test/bug/tint/757.wgsl.expected.msl b/test/bug/tint/757.wgsl.expected.msl index c40c6088c7..809bed6a7b 100644 --- a/test/bug/tint/757.wgsl.expected.msl +++ b/test/bug/tint/757.wgsl.expected.msl @@ -9,11 +9,11 @@ struct Result { }; void tint_symbol_inner(device Result& result, uint3 GlobalInvocationID, texture2d_array tint_symbol_1) { - uint flatIndex = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x); + uint flatIndex = ((((2u * 2u) * GlobalInvocationID[2]) + (2u * GlobalInvocationID[1])) + GlobalInvocationID[0]); flatIndex = (flatIndex * 1u); - float4 texel = tint_symbol_1.read(uint2(int2(GlobalInvocationID.xy)), 0, 0); + float4 texel = tint_symbol_1.read(uint2(int2(uint3(GlobalInvocationID).xy)), 0, 0); for(uint i = 0u; (i < 1u); i = (i + 1u)) { - result.values[(flatIndex + i)] = texel.r; + result.values[(flatIndex + i)] = texel[0]; } } diff --git a/test/bug/tint/824.wgsl.expected.msl b/test/bug/tint/824.wgsl.expected.msl index 3aa26e2dad..906762bc28 100644 --- a/test/bug/tint/824.wgsl.expected.msl +++ b/test/bug/tint/824.wgsl.expected.msl @@ -18,7 +18,7 @@ struct tint_array_wrapper_1 { Output tint_symbol_inner(uint VertexIndex, uint InstanceIndex) { tint_array_wrapper zv = {.arr={float2(0.200000003f, 0.200000003f), float2(0.300000012f, 0.300000012f), float2(-0.100000001f, -0.100000001f), float2(1.100000024f, 1.100000024f)}}; - float const z = zv.arr[InstanceIndex].x; + float const z = zv.arr[InstanceIndex][0]; Output output = {}; output.Position = float4(0.5f, 0.5f, z, 1.0f); tint_array_wrapper_1 colors = {.arr={float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}}; diff --git a/test/bug/tint/827.wgsl.expected.msl b/test/bug/tint/827.wgsl.expected.msl index f9eea7ad5f..b11495fd34 100644 --- a/test/bug/tint/827.wgsl.expected.msl +++ b/test/bug/tint/827.wgsl.expected.msl @@ -7,7 +7,7 @@ struct Result { constant uint width = 128u; void tint_symbol_inner(device Result& result, uint3 GlobalInvocationId, depth2d tint_symbol_1) { - result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = tint_symbol_1.read(uint2(int2(int(GlobalInvocationId.x), int(GlobalInvocationId.y))), 0); + result.values[((GlobalInvocationId[1] * width) + GlobalInvocationId[0])] = tint_symbol_1.read(uint2(int2(int(GlobalInvocationId[0]), int(GlobalInvocationId[1]))), 0); } kernel void tint_symbol(depth2d tint_symbol_2 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]], device Result& result [[buffer(0)]]) { diff --git a/test/bug/tint/913.wgsl.expected.msl b/test/bug/tint/913.wgsl.expected.msl index a57752473b..aa299f693e 100644 --- a/test/bug/tint/913.wgsl.expected.msl +++ b/test/bug/tint/913.wgsl.expected.msl @@ -19,25 +19,25 @@ bool aboutEqual(float value, float expect) { void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d tint_symbol_1, texture2d tint_symbol_2) { int2 const srcSize = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); int2 const dstSize = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height()); - uint2 const dstTexCoord = uint2(GlobalInvocationID.xy); + uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy); float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f); bool success = true; - if (((((dstTexCoord.x < uniforms.dstCopyOrigin.x) || (dstTexCoord.y < uniforms.dstCopyOrigin.y)) || (dstTexCoord.x >= (uniforms.dstCopyOrigin.x + uniforms.copySize.x))) || (dstTexCoord.y >= (uniforms.dstCopyOrigin.y + uniforms.copySize.y)))) { + if (((((dstTexCoord[0] < uniforms.dstCopyOrigin[0]) || (dstTexCoord[1] < uniforms.dstCopyOrigin[1])) || (dstTexCoord[0] >= (uniforms.dstCopyOrigin[0] + uniforms.copySize[0]))) || (dstTexCoord[1] >= (uniforms.dstCopyOrigin[1] + uniforms.copySize[1])))) { success = (success && all((tint_symbol_2.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor))); } else { uint2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin); if ((uniforms.dstTextureFlipY == 1u)) { - srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u); + srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u); } float4 const srcColor = tint_symbol_1.read(uint2(int2(srcTexCoord)), 0); float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0); if ((uniforms.channelCount == 2u)) { - success = ((success && aboutEqual(dstColor.r, srcColor.r)) && aboutEqual(dstColor.g, srcColor.g)); + success = ((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])); } else { - success = ((((success && aboutEqual(dstColor.r, srcColor.r)) && aboutEqual(dstColor.g, srcColor.g)) && aboutEqual(dstColor.b, srcColor.b)) && aboutEqual(dstColor.a, srcColor.a)); + success = ((((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])) && aboutEqual(dstColor[2], srcColor[2])) && aboutEqual(dstColor[3], srcColor[3])); } } - uint const outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x); + uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]); if (success) { output.result[outputIndex] = 1u; } else { diff --git a/test/bug/tint/914.wgsl.expected.msl b/test/bug/tint/914.wgsl.expected.msl index 426f200d4c..d0f5a3e84f 100644 --- a/test/bug/tint/914.wgsl.expected.msl +++ b/test/bug/tint/914.wgsl.expected.msl @@ -58,10 +58,10 @@ void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMa (*(tint_symbol_2)).arr[i].arr[i_1] = float(); } threadgroup_barrier(mem_flags::mem_threadgroup); - uint const tileRow = (local_id.y * RowPerThread); - uint const tileCol = (local_id.x * ColPerThread); - uint const globalRow = (global_id.y * RowPerThread); - uint const globalCol = (global_id.x * ColPerThread); + uint const tileRow = (local_id[1] * RowPerThread); + uint const tileCol = (local_id[0] * ColPerThread); + uint const globalRow = (global_id[1] * RowPerThread); + uint const globalCol = (global_id[0] * ColPerThread); uint const numTiles = (((uniforms.dimInner - 1u) / TileInner) + 1u); tint_array_wrapper_2 acc = {}; float ACached = 0.0f; @@ -70,9 +70,9 @@ void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMa acc.arr[index] = 0.0f; } uint const ColPerThreadA = (TileInner / 16u); - uint const tileColA = (local_id.x * ColPerThreadA); + uint const tileColA = (local_id[0] * ColPerThreadA); uint const RowPerThreadB = (TileInner / 16u); - uint const tileRowB = (local_id.y * RowPerThreadB); + uint const tileRowB = (local_id[1] * RowPerThreadB); for(uint t = 0u; (t < numTiles); t = (t + 1u)) { for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) { diff --git a/test/bug/tint/922.wgsl.expected.msl b/test/bug/tint/922.wgsl.expected.msl index e9b77640cf..c1aa861dc7 100644 --- a/test/bug/tint/922.wgsl.expected.msl +++ b/test/bug/tint/922.wgsl.expected.msl @@ -56,7 +56,7 @@ float3 Mat4x3GetCol0_(Mat4x3_ m) { Mat4x3_ const x_e2 = m1; Mat4x3_ const x_e5 = m1; Mat4x3_ const x_e8 = m1; - return float3(x_e2.mx.x, x_e5.my.x, x_e8.mz.x); + return float3(x_e2.mx[0], x_e5.my[0], x_e8.mz[0]); } float3 Mat4x3GetCol1_(Mat4x3_ m2) { @@ -65,7 +65,7 @@ float3 Mat4x3GetCol1_(Mat4x3_ m2) { Mat4x3_ const x_e2 = m3; Mat4x3_ const x_e5 = m3; Mat4x3_ const x_e8 = m3; - return float3(x_e2.mx.y, x_e5.my.y, x_e8.mz.y); + return float3(x_e2.mx[1], x_e5.my[1], x_e8.mz[1]); } float3 Mat4x3GetCol2_(Mat4x3_ m4) { @@ -74,7 +74,7 @@ float3 Mat4x3GetCol2_(Mat4x3_ m4) { Mat4x3_ const x_e2 = m5; Mat4x3_ const x_e5 = m5; Mat4x3_ const x_e8 = m5; - return float3(x_e2.mx.z, x_e5.my.z, x_e8.mz.z); + return float3(x_e2.mx[2], x_e5.my[2], x_e8.mz[2]); } float3 Mat4x3GetCol3_(Mat4x3_ m6) { @@ -83,7 +83,7 @@ float3 Mat4x3GetCol3_(Mat4x3_ m6) { Mat4x3_ const x_e2 = m7; Mat4x3_ const x_e5 = m7; Mat4x3_ const x_e8 = m7; - return float3(x_e2.mx.w, x_e5.my.w, x_e8.mz.w); + return float3(x_e2.mx[3], x_e5.my[3], x_e8.mz[3]); } float4 Mul(Mat4x4_ m8, float4 v) { @@ -248,13 +248,13 @@ void main1(constant ub_PacketParams& global2, constant ub_SceneParams& global, c float4 const x_e50 = *(tint_symbol_8); *(tint_symbol_9) = x_e50; float4 const x_e52 = global1.u_Misc0_; - if ((x_e52.x == 2.0f)) { + if ((x_e52[0] == 2.0f)) { { float3 const x_e59 = *(tint_symbol_10); Mat4x2_ const x_e64 = global1.u_TexMtx.arr[0]; float3 const x_e65 = *(tint_symbol_10); float2 const x_e68 = Mul2(x_e64, float4(x_e65, 1.0f)); - *(tint_symbol_11) = x_e68.xy; + *(tint_symbol_11) = float2(x_e68).xy; return; } } else { @@ -263,7 +263,7 @@ void main1(constant ub_PacketParams& global2, constant ub_SceneParams& global, c Mat4x2_ const x_e79 = global1.u_TexMtx.arr[0]; float2 const x_e80 = *(tint_symbol_12); float2 const x_e84 = Mul2(x_e79, float4(x_e80, 1.0f, 1.0f)); - *(tint_symbol_11) = x_e84.xy; + *(tint_symbol_11) = float2(x_e84).xy; return; } } diff --git a/test/bug/tint/942.wgsl.expected.msl b/test/bug/tint/942.wgsl.expected.msl index 935fd20689..510cfec2f3 100644 --- a/test/bug/tint/942.wgsl.expected.msl +++ b/test/bug/tint/942.wgsl.expected.msl @@ -24,14 +24,14 @@ void tint_symbol_inner(constant Params& params, constant Flip& flip, uint3 WorkG threadgroup_barrier(mem_flags::mem_threadgroup); uint const filterOffset = ((params.filterDim - 1u) / 2u); int2 const dims = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0)); - int2 const baseIndex = as_type((as_type(int2(((WorkGroupID.xy * uint2(params.blockDim, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u))))) - as_type(int2(int(filterOffset), 0)))); + int2 const baseIndex = as_type((as_type(int2(((uint3(WorkGroupID).xy * uint2(params.blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u))))) - as_type(int2(int(filterOffset), 0)))); for(uint r = 0u; (r < 4u); r = (r + 1u)) { for(uint c = 0u; (c < 4u); c = (c + 1u)) { int2 loadIndex = as_type((as_type(baseIndex) + as_type(int2(int(c), int(r))))); if ((flip.value != 0u)) { - loadIndex = loadIndex.yx; + loadIndex = int2(loadIndex).yx; } - (*(tint_symbol_1)).arr[r].arr[((4u * LocalInvocationID.x) + c)] = tint_symbol_2.sample(tint_symbol_3, ((float2(loadIndex) + float2(0.25f, 0.25f)) / float2(dims)), level(0.0f)).rgb; + (*(tint_symbol_1)).arr[r].arr[((4u * LocalInvocationID[0]) + c)] = float4(tint_symbol_2.sample(tint_symbol_3, ((float2(loadIndex) + float2(0.25f, 0.25f)) / float2(dims)), level(0.0f))).rgb; } } threadgroup_barrier(mem_flags::mem_threadgroup); @@ -39,9 +39,9 @@ void tint_symbol_inner(constant Params& params, constant Flip& flip, uint3 WorkG for(uint c = 0u; (c < 4u); c = (c + 1u)) { int2 writeIndex = as_type((as_type(baseIndex) + as_type(int2(int(c), int(r))))); if ((flip.value != 0u)) { - writeIndex = writeIndex.yx; + writeIndex = int2(writeIndex).yx; } - uint const center = ((4u * LocalInvocationID.x) + c); + uint const center = ((4u * LocalInvocationID[0]) + c); if ((((center >= filterOffset) && (center < (256u - filterOffset))) && all((writeIndex < dims)))) { float3 acc = float3(0.0f, 0.0f, 0.0f); for(uint f = 0u; (f < params.filterDim); f = (f + 1u)) { diff --git a/test/bug/tint/943.spvasm.expected.msl b/test/bug/tint/943.spvasm.expected.msl index a8806ca8ac..d3178ac46b 100644 --- a/test/bug/tint/943.spvasm.expected.msl +++ b/test/bug/tint/943.spvasm.expected.msl @@ -58,8 +58,8 @@ float mm_readA_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, thread int2 param_10 = 0; int2 param_11 = 0; float x_430 = 0.0f; - int const x_417 = x_48.aShape.y; - int const x_419 = x_48.aShape.z; + int const x_417 = x_48.aShape[1]; + int const x_419 = x_48.aShape[2]; batchASize = as_type((as_type(x_417) * as_type(x_419))); int const x_421 = *(row); int const x_422 = *(col); @@ -88,8 +88,8 @@ float mm_readB_i1_i1_(constant Uniforms& x_48, const device ssbB& x_185, thread int2 param_12 = 0; int2 param_13 = 0; float x_468 = 0.0f; - int const x_455 = x_48.bShape.y; - int const x_457 = x_48.bShape.z; + int const x_455 = x_48.bShape[1]; + int const x_457 = x_48.bShape[2]; batchBSize = as_type((as_type(x_455) * as_type(x_457))); int const x_459 = *(row_1); int const x_460 = *(col_1); @@ -115,8 +115,8 @@ float mm_readB_i1_i1_(constant Uniforms& x_48, const device ssbB& x_185, thread int getOutputFlatIndex_vi3_(constant Uniforms& x_48, thread int3* const coords) { int3 const x_99 = *(coords); - int const x_105 = x_48.outShapeStrides.x; - int const x_107 = x_48.outShapeStrides.y; + int const x_105 = x_48.outShapeStrides[0]; + int const x_107 = x_48.outShapeStrides[1]; return int(dot(float3(x_99), float3(int3(x_105, x_107, 1)))); } @@ -203,13 +203,13 @@ void mm_matMul_i1_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, cons int param_7 = 0; int param_8 = 0; float param_9 = 0.0f; - uint const x_132 = (*(tint_symbol_9)).y; + uint const x_132 = (*(tint_symbol_9))[1]; tileRow = as_type((as_type(as_type(x_132)) * as_type(1))); - uint const x_137 = (*(tint_symbol_9)).x; + uint const x_137 = (*(tint_symbol_9))[0]; tileCol = as_type((as_type(as_type(x_137)) * as_type(1))); - uint const x_143 = (*(tint_symbol_10)).y; + uint const x_143 = (*(tint_symbol_10))[1]; globalRow = as_type((as_type(as_type(x_143)) * as_type(1))); - uint const x_148 = (*(tint_symbol_10)).x; + uint const x_148 = (*(tint_symbol_10))[0]; globalCol = as_type((as_type(as_type(x_148)) * as_type(1))); int const x_152 = *(dimInner); numTiles = as_type((as_type((as_type((as_type(x_152) - as_type(1))) / 64)) + as_type(1))); @@ -240,9 +240,9 @@ void mm_matMul_i1_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, cons innerRow = as_type((as_type(x_183) + as_type(1))); } } - uint const x_187 = (*(tint_symbol_9)).x; + uint const x_187 = (*(tint_symbol_9))[0]; tileColA = as_type((as_type(as_type(x_187)) * as_type(64))); - uint const x_192 = (*(tint_symbol_9)).y; + uint const x_192 = (*(tint_symbol_9))[1]; tileRowB = as_type((as_type(as_type(x_192)) * as_type(1))); t = 0; while (true) { @@ -464,13 +464,13 @@ void main_1(constant Uniforms& x_48, const device ssbA& x_165, const device ssbB int param_18 = 0; int param_19 = 0; int param_20 = 0; - int const x_67 = x_48.aShape.y; + int const x_67 = x_48.aShape[1]; *(tint_symbol_17) = x_67; - int const x_71 = x_48.aShape.z; + int const x_71 = x_48.aShape[2]; *(tint_symbol_18) = x_71; - int const x_75 = x_48.bShape.z; + int const x_75 = x_48.bShape[2]; *(tint_symbol_19) = x_75; - uint const x_505 = (*(tint_symbol_20)).z; + uint const x_505 = (*(tint_symbol_20))[2]; *(tint_symbol_21) = as_type(x_505); int const x_508 = *(tint_symbol_17); param_18 = x_508; diff --git a/test/bug/tint/948.wgsl.expected.msl b/test/bug/tint/948.wgsl.expected.msl index a0e0430bd8..711b38ff1d 100644 --- a/test/bug/tint/948.wgsl.expected.msl +++ b/test/bug/tint/948.wgsl.expected.msl @@ -51,7 +51,7 @@ float4x4 getFrameData_f1_(constant LeftOver& x_20, thread float* const frameID, float4 const x_47 = tint_symbol_5.sample(tint_symbol_6, float2(x_44, 0.25f), bias(0.0f)); float const x_51 = fX; float4 const x_54 = tint_symbol_5.sample(tint_symbol_6, float2(x_51, 0.5f), bias(0.0f)); - return float4x4(float4(x_40.x, x_40.y, x_40.z, x_40.w), float4(x_47.x, x_47.y, x_47.z, x_47.w), float4(x_54.x, x_54.y, x_54.z, x_54.w), float4(float4(0.0f, 0.0f, 0.0f, 0.0f).x, float4(0.0f, 0.0f, 0.0f, 0.0f).y, float4(0.0f, 0.0f, 0.0f, 0.0f).z, float4(0.0f, 0.0f, 0.0f, 0.0f).w)); + return float4x4(float4(x_40[0], x_40[1], x_40[2], x_40[3]), float4(x_47[0], x_47[1], x_47[2], x_47[3]), float4(x_54[0], x_54[1], x_54[2], x_54[3]), float4(float4(0.0f, 0.0f, 0.0f, 0.0f)[0], float4(0.0f, 0.0f, 0.0f, 0.0f)[1], float4(0.0f, 0.0f, 0.0f, 0.0f)[2], float4(0.0f, 0.0f, 0.0f, 0.0f)[3])); } void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture2d tint_symbol_8, sampler tint_symbol_9, texture2d tint_symbol_10, texture2d tint_symbol_11, sampler tint_symbol_12, thread float* const tint_symbol_13, texture2d tint_symbol_14, sampler tint_symbol_15, texture2d tint_symbol_16, sampler tint_symbol_17, thread float4* const tint_symbol_18) { @@ -76,8 +76,8 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture color = float4(0.0f, 0.0f, 0.0f, 0.0f); float2 const x_86 = *(tint_symbol_7); tileUV = fract(x_86); - float const x_91 = tileUV.y; - tileUV.y = (1.0f - x_91); + float const x_91 = tileUV[1]; + tileUV[1] = (1.0f - x_91); float2 const x_95 = *(tint_symbol_7); tileID = floor(x_95); float2 const x_101 = x_20.spriteMapSize; @@ -99,14 +99,14 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture float2 const x_150 = tileID; float2 const x_154 = x_20.stageSize; float4 const x_156 = tint_symbol_8.sample(tint_symbol_9, ((x_150 + float2(0.5f, 0.5f)) / x_154), bias(0.0f)); - frameID_1 = x_156.x; + frameID_1 = x_156[0]; break; } case 0: { float2 const x_136 = tileID; float2 const x_140 = x_20.stageSize; float4 const x_142 = tint_symbol_10.sample(tint_symbol_9, ((x_136 + float2(0.5f, 0.5f)) / x_140), bias(0.0f)); - frameID_1 = x_142.x; + frameID_1 = x_142[0]; break; } default: { @@ -117,10 +117,10 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture float const x_169 = x_20.spriteCount; float4 const x_172 = tint_symbol_11.sample(tint_symbol_12, float2(((x_166 + 0.5f) / x_169), 0.0f), bias(0.0f)); animationData = x_172; - float const x_174 = animationData.y; + float const x_174 = animationData[1]; if ((x_174 > 0.0f)) { float const x_181 = x_20.time; - float const x_184 = animationData.z; + float const x_184 = animationData[2]; *(tint_symbol_13) = fmod((x_181 * x_184), 1.0f); f = 0.0f; while (true) { @@ -129,10 +129,10 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture } else { break; } - float const x_197 = animationData.y; + float const x_197 = animationData[1]; float const x_198 = *(tint_symbol_13); if ((x_197 > x_198)) { - float const x_203 = animationData.x; + float const x_203 = animationData[0]; frameID_1 = x_203; break; } @@ -153,17 +153,17 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture frameData = x_225; float4 const x_228 = frameData[0]; float2 const x_231 = x_20.spriteMapSize; - frameSize = (float2(x_228.w, x_228.z) / x_231); + frameSize = (float2(x_228[3], x_228[2]) / x_231); float4 const x_235 = frameData[0]; float2 const x_237 = sheetUnits; - offset_1 = (float2(x_235.x, x_235.y) * x_237); + offset_1 = (float2(x_235[0], x_235[1]) * x_237); float4 const x_241 = frameData[2]; float4 const x_244 = frameData[0]; - ratio = (float2(x_241.x, x_241.y) / float2(x_244.w, x_244.z)); - float const x_248 = frameData[2].z; + ratio = (float2(x_241[0], x_241[1]) / float2(x_244[3], x_244[2])); + float const x_248 = frameData[2][2]; if ((x_248 == 1.0f)) { float2 const x_252 = tileUV; - tileUV = float2(x_252.y, x_252.x); + tileUV = float2(x_252[1], x_252[0]); } int const x_254 = i; if ((x_254 == 0)) { @@ -178,16 +178,16 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture float2 const x_277 = offset_1; float4 const x_279 = tint_symbol_16.sample(tint_symbol_17, ((x_274 * x_275) + x_277)); nc = x_279; - float const x_283 = color.w; - float const x_285 = nc.w; + float const x_283 = color[3]; + float const x_285 = nc[3]; alpha = fmin((x_283 + x_285), 1.0f); float4 const x_290 = color; float4 const x_292 = nc; - float const x_295 = nc.w; - mixed = mix(float3(x_290.x, x_290.y, x_290.z), float3(x_292.x, x_292.y, x_292.z), float3(x_295, x_295, x_295)); + float const x_295 = nc[3]; + mixed = mix(float3(x_290[0], x_290[1], x_290[2]), float3(x_292[0], x_292[1], x_292[2]), float3(x_295, x_295, x_295)); float3 const x_298 = mixed; float const x_299 = alpha; - color = float4(x_298.x, x_298.y, x_298.z, x_299); + color = float4(x_298[0], x_298[1], x_298[2], x_299); } { int const x_304 = i; @@ -196,9 +196,9 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture } float3 const x_310 = x_20.colorMul; float4 const x_311 = color; - float3 const x_313 = (float3(x_311.x, x_311.y, x_311.z) * x_310); + float3 const x_313 = (float3(x_311[0], x_311[1], x_311[2]) * x_310); float4 const x_314 = color; - color = float4(x_313.x, x_313.y, x_313.z, x_314.w); + color = float4(x_313[0], x_313[1], x_313[2], x_314[3]); float4 const x_318 = color; *(tint_symbol_18) = x_318; return; diff --git a/test/bug/tint/949.wgsl.expected.msl b/test/bug/tint/949.wgsl.expected.msl index 776865dfa5..c3a16ece91 100644 --- a/test/bug/tint/949.wgsl.expected.msl +++ b/test/bug/tint/949.wgsl.expected.msl @@ -76,19 +76,19 @@ float3x3 cotangent_frame_vf3_vf3_vf2_vf2_(thread float3* const normal_1, thread float3 const x_150 = dp1; dp1perp = cross(x_149, x_150); float3 const x_153 = dp2perp; - float const x_155 = duv1.x; + float const x_155 = duv1[0]; float3 const x_157 = dp1perp; - float const x_159 = duv2.x; + float const x_159 = duv2[0]; tangent = ((x_153 * x_155) + (x_157 * x_159)); float3 const x_163 = dp2perp; - float const x_165 = duv1.y; + float const x_165 = duv1[1]; float3 const x_167 = dp1perp; - float const x_169 = duv2.y; + float const x_169 = duv2[1]; bitangent = ((x_163 * x_165) + (x_167 * x_169)); - float const x_173 = (*(tangentSpaceParams)).x; + float const x_173 = (*(tangentSpaceParams))[0]; float3 const x_174 = tangent; tangent = (x_174 * x_173); - float const x_177 = (*(tangentSpaceParams)).y; + float const x_177 = (*(tangentSpaceParams))[1]; float3 const x_178 = bitangent; bitangent = (x_178 * x_177); float3 const x_181 = tangent; @@ -103,7 +103,7 @@ float3x3 cotangent_frame_vf3_vf3_vf2_vf2_(thread float3* const normal_1, thread float const x_193 = invmax; float3 const x_194 = (x_192 * x_193); float3 const x_195 = *(normal_1); - return float3x3(float3(x_191.x, x_191.y, x_191.z), float3(x_194.x, x_194.y, x_194.z), float3(x_195.x, x_195.y, x_195.z)); + return float3x3(float3(x_191[0], x_191[1], x_191[2]), float3(x_194[0], x_194[1], x_194[2]), float3(x_195[0], x_195[1], x_195[2])); } float3x3 transposeMat3_mf33_(thread float3x3* const inMatrix) { @@ -117,19 +117,19 @@ float3x3 transposeMat3_mf33_(thread float3x3* const inMatrix) { i1 = x_64; float3 const x_68 = (*(inMatrix))[2]; i2 = x_68; - float const x_73 = i0.x; - float const x_75 = i1.x; - float const x_77 = i2.x; + float const x_73 = i0[0]; + float const x_75 = i1[0]; + float const x_77 = i2[0]; float3 const x_78 = float3(x_73, x_75, x_77); - float const x_81 = i0.y; - float const x_83 = i1.y; - float const x_85 = i2.y; + float const x_81 = i0[1]; + float const x_83 = i1[1]; + float const x_85 = i2[1]; float3 const x_86 = float3(x_81, x_83, x_85); - float const x_89 = i0.z; - float const x_91 = i1.z; - float const x_93 = i2.z; + float const x_89 = i0[2]; + float const x_91 = i1[2]; + float const x_93 = i2[2]; float3 const x_94 = float3(x_89, x_91, x_93); - outMatrix = float3x3(float3(x_78.x, x_78.y, x_78.z), float3(x_86.x, x_86.y, x_86.z), float3(x_94.x, x_94.y, x_94.z)); + outMatrix = float3x3(float3(x_78[0], x_78[1], x_78[2]), float3(x_86[0], x_86[1], x_86[2]), float3(x_94[0], x_94[1], x_94[2])); float3x3 const x_110 = outMatrix; return x_110; } @@ -161,14 +161,14 @@ lightingInfo computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(thread float float specComp = 0.0f; float3 const x_212 = *(vNormal); float4 const x_213 = *(lightData); - ndl = ((dot(x_212, float3(x_213.x, x_213.y, x_213.z)) * 0.5f) + 0.5f); + ndl = ((dot(x_212, float3(x_213[0], x_213[1], x_213[2])) * 0.5f) + 0.5f); float3 const x_220 = *(groundColor); float3 const x_221 = *(diffuseColor); float const x_222 = ndl; result.diffuse = mix(x_220, x_221, float3(x_222, x_222, x_222)); float3 const x_227 = *(viewDirectionW); float4 const x_228 = *(lightData); - angleW = normalize((x_227 + float3(x_228.x, x_228.y, x_228.z))); + angleW = normalize((x_227 + float3(x_228[0], x_228[1], x_228[2]))); float3 const x_233 = *(vNormal); float3 const x_234 = angleW; specComp = fmax(0.0f, dot(x_233, x_234)); @@ -243,10 +243,10 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con tempTextureRead = x_262; float4 const x_264 = tempTextureRead; float const x_273 = x_269.textureInfoName; - rgb = (float3(x_264.x, x_264.y, x_264.z) * x_273); + rgb = (float3(x_264[0], x_264[1], x_264[2]) * x_273); float3 const x_279 = x_269.u_cameraPosition; float4 const x_282 = *(tint_symbol_10); - output5 = normalize((x_279 - float3(x_282.x, x_282.y, x_282.z))); + output5 = normalize((x_279 - float3(x_282[0], x_282[1], x_282[2]))); output4 = float4(0.0f, 0.0f, 0.0f, 0.0f); uvOffset = float2(0.0f, 0.0f); float const x_292 = x_269.u_bumpStrength; @@ -263,9 +263,9 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con TBNUV = x_307; float4 const x_310 = *(tint_symbol_13); float const x_312 = normalScale; - param_3 = (float3(x_310.x, x_310.y, x_310.z) * x_312); + param_3 = (float3(x_310[0], x_310[1], x_310[2]) * x_312); float4 const x_317 = *(tint_symbol_10); - param_4 = float3(x_317.x, x_317.y, x_317.z); + param_4 = float3(x_317[0], x_317[1], x_317[2]); float2 const x_320 = TBNUV; param_5 = x_320; float2 const x_324 = x_269.tangentSpaceParameter0; @@ -281,14 +281,14 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float3 const x_334 = (x_331 * -(x_332)); float3x3 const x_337 = invTBN; float3 const x_338 = output5; - parallaxLimit = (length(float2(x_334.x, x_334.y)) / ((x_337 * -(x_338))).z); + parallaxLimit = (length(float2(x_334[0], x_334[1])) / ((x_337 * -(x_338)))[2]); float const x_345 = x_269.u_parallaxScale; float const x_346 = parallaxLimit; parallaxLimit = (x_346 * x_345); float3x3 const x_349 = invTBN; float3 const x_350 = output5; float3 const x_352 = (x_349 * -(x_350)); - vOffsetDir = normalize(float2(x_352.x, x_352.y)); + vOffsetDir = normalize(float2(x_352[0], x_352[1])); float2 const x_356 = vOffsetDir; float const x_357 = parallaxLimit; vMaxOffset = (x_356 * x_357); @@ -296,7 +296,7 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float3 const x_362 = output5; float3x3 const x_365 = invTBN; float4 const x_366 = *(tint_symbol_13); - numSamples = (15.0f + (dot((x_361 * -(x_362)), (x_365 * float3(x_366.x, x_366.y, x_366.z))) * -11.0f)); + numSamples = (15.0f + (dot((x_361 * -(x_362)), (x_365 * float3(x_366[0], x_366[1], x_366[2]))) * -11.0f)); float const x_374 = numSamples; stepSize = (1.0f / x_374); currRayHeight = 1.0f; @@ -314,7 +314,7 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float2 const x_394 = *(tint_symbol_12); float2 const x_395 = vCurrOffset; float4 const x_397 = tint_symbol_8.sample(tint_symbol_9, (x_394 + x_395)); - currSampledHeight = x_397.w; + currSampledHeight = x_397[3]; float const x_400 = currSampledHeight; float const x_401 = currRayHeight; if ((x_400 > x_401)) { @@ -363,11 +363,11 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float const x_454 = x_269.u_bumpStrength; float3x3 const x_457 = TBN; param_8 = x_457; - param_9 = float3(x_452.x, x_452.y, x_452.z); + param_9 = float3(x_452[0], x_452[1], x_452[2]); param_10 = (1.0f / x_454); float3 const x_461 = perturbNormal_mf33_vf3_f1_(&(param_8), &(param_9), &(param_10)); float4 const x_462 = output4; - output4 = float4(x_461.x, x_461.y, x_461.z, x_462.w); + output4 = float4(x_461[0], x_461[1], x_461[2], x_462[3]); float2 const x_465 = *(tint_symbol_12); float2 const x_466 = uvOffset; output6 = (x_465 + x_466); @@ -375,17 +375,17 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float4 const x_475 = tint_symbol_14.sample(tint_symbol_15, x_474); tempTextureRead1 = x_475; float4 const x_477 = tempTextureRead1; - rgb1 = float3(x_477.x, x_477.y, x_477.z); + rgb1 = float3(x_477[0], x_477[1], x_477[2]); float3 const x_481 = x_269.u_cameraPosition; float4 const x_482 = *(tint_symbol_10); - viewDirectionW_1 = normalize((x_481 - float3(x_482.x, x_482.y, x_482.z))); + viewDirectionW_1 = normalize((x_481 - float3(x_482[0], x_482[1], x_482[2]))); shadow = 1.0f; float const x_488 = *(tint_symbol_5); glossiness_1 = (1.0f * x_488); diffuseBase = float3(0.0f, 0.0f, 0.0f); specularBase = float3(0.0f, 0.0f, 0.0f); float4 const x_494 = output4; - normalW = float3(x_494.x, x_494.y, x_494.z); + normalW = float3(x_494[0], x_494[1], x_494[2]); float3 const x_501 = viewDirectionW_1; param_11 = x_501; float3 const x_503 = normalW; @@ -393,9 +393,9 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float4 const x_507 = light0.vLightData; param_13 = x_507; float4 const x_510 = light0.vLightDiffuse; - param_14 = float3(x_510.x, x_510.y, x_510.z); + param_14 = float3(x_510[0], x_510[1], x_510[2]); float4 const x_514 = light0.vLightSpecular; - param_15 = float3(x_514.x, x_514.y, x_514.z); + param_15 = float3(x_514[0], x_514[1], x_514[2]); float3 const x_518 = light0.vLightGround; param_16 = x_518; float const x_520 = glossiness_1; @@ -421,7 +421,7 @@ void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* con float3 const x_544 = specularOutput; output3 = (x_543 + x_544); float3 const x_548 = output3; - *(tint_symbol_16) = float4(x_548.x, x_548.y, x_548.z, 1.0f); + *(tint_symbol_16) = float4(x_548[0], x_548[1], x_548[2], 1.0f); return; } diff --git a/test/bug/tint/951.spvasm.expected.msl b/test/bug/tint/951.spvasm.expected.msl index b8d78dab3f..57b22d3c24 100644 --- a/test/bug/tint/951.spvasm.expected.msl +++ b/test/bug/tint/951.spvasm.expected.msl @@ -16,7 +16,7 @@ struct Uniforms { }; float getAAtOutCoords_(const device ssbA& x_20, thread uint3* const tint_symbol_2) { - uint const x_42 = (*(tint_symbol_2)).x; + uint const x_42 = (*(tint_symbol_2))[0]; float const x_44 = x_20.A[x_42]; return x_44; } @@ -43,7 +43,7 @@ void main_1(constant Uniforms& x_24, const device ssbA& x_20, device ssbOut& x_1 float param = 0.0f; int param_1 = 0; float param_2 = 0.0f; - uint const x_61 = (*(tint_symbol_3)).x; + uint const x_61 = (*(tint_symbol_3))[0]; index = as_type(x_61); int const x_63 = index; int const x_70 = x_24.size; diff --git a/test/bug/tint/977.spvasm.expected.msl b/test/bug/tint/977.spvasm.expected.msl index fc98b337d6..c729f303fc 100644 --- a/test/bug/tint/977.spvasm.expected.msl +++ b/test/bug/tint/977.spvasm.expected.msl @@ -42,7 +42,7 @@ void main_1(device ResultMatrix& resultMatrix, thread uint3* const tint_symbol_2 int a_1 = 0; float param = 0.0f; float param_1 = 0.0f; - uint const x_54 = (*(tint_symbol_2)).x; + uint const x_54 = (*(tint_symbol_2))[0]; index = as_type(x_54); a_1 = -10; int const x_63 = index; diff --git a/test/expressions/splat/with_swizzle/f32.wgsl.expected.msl b/test/expressions/splat/with_swizzle/f32.wgsl.expected.msl index 64e4f8c447..2f9ac2a2d4 100644 --- a/test/expressions/splat/with_swizzle/f32.wgsl.expected.msl +++ b/test/expressions/splat/with_swizzle/f32.wgsl.expected.msl @@ -2,8 +2,8 @@ using namespace metal; void f() { - float a = float2(1.0f).y; - float b = float3(1.0f).z; - float c = float4(1.0f).w; + float a = float2(1.0f)[1]; + float b = float3(1.0f)[2]; + float c = float4(1.0f)[3]; } diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl new file mode 100644 index 0000000000..81a92206d8 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl @@ -0,0 +1,144 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.hlsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.hlsl new file mode 100644 index 0000000000..a0fa0de4ab --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.hlsl @@ -0,0 +1,132 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +cbuffer cbuffer_U : register(b0, space0) { + uint4 U[1]; +}; + +void f() { + float3 v = asfloat(U[0].xyz); + float x = asfloat(U[0].x); + float y = asfloat(U[0].y); + float z = asfloat(U[0].z); + float2 xx = asfloat(U[0].xyz).xx; + float2 xy = asfloat(U[0].xyz).xy; + float2 xz = asfloat(U[0].xyz).xz; + float2 yx = asfloat(U[0].xyz).yx; + float2 yy = asfloat(U[0].xyz).yy; + float2 yz = asfloat(U[0].xyz).yz; + float2 zx = asfloat(U[0].xyz).zx; + float2 zy = asfloat(U[0].xyz).zy; + float2 zz = asfloat(U[0].xyz).zz; + float3 xxx = asfloat(U[0].xyz).xxx; + float3 xxy = asfloat(U[0].xyz).xxy; + float3 xxz = asfloat(U[0].xyz).xxz; + float3 xyx = asfloat(U[0].xyz).xyx; + float3 xyy = asfloat(U[0].xyz).xyy; + float3 xyz = asfloat(U[0].xyz).xyz; + float3 xzx = asfloat(U[0].xyz).xzx; + float3 xzy = asfloat(U[0].xyz).xzy; + float3 xzz = asfloat(U[0].xyz).xzz; + float3 yxx = asfloat(U[0].xyz).yxx; + float3 yxy = asfloat(U[0].xyz).yxy; + float3 yxz = asfloat(U[0].xyz).yxz; + float3 yyx = asfloat(U[0].xyz).yyx; + float3 yyy = asfloat(U[0].xyz).yyy; + float3 yyz = asfloat(U[0].xyz).yyz; + float3 yzx = asfloat(U[0].xyz).yzx; + float3 yzy = asfloat(U[0].xyz).yzy; + float3 yzz = asfloat(U[0].xyz).yzz; + float3 zxx = asfloat(U[0].xyz).zxx; + float3 zxy = asfloat(U[0].xyz).zxy; + float3 zxz = asfloat(U[0].xyz).zxz; + float3 zyx = asfloat(U[0].xyz).zyx; + float3 zyy = asfloat(U[0].xyz).zyy; + float3 zyz = asfloat(U[0].xyz).zyz; + float3 zzx = asfloat(U[0].xyz).zzx; + float3 zzy = asfloat(U[0].xyz).zzy; + float3 zzz = asfloat(U[0].xyz).zzz; + float4 xxxx = asfloat(U[0].xyz).xxxx; + float4 xxxy = asfloat(U[0].xyz).xxxy; + float4 xxxz = asfloat(U[0].xyz).xxxz; + float4 xxyx = asfloat(U[0].xyz).xxyx; + float4 xxyy = asfloat(U[0].xyz).xxyy; + float4 xxyz = asfloat(U[0].xyz).xxyz; + float4 xxzx = asfloat(U[0].xyz).xxzx; + float4 xxzy = asfloat(U[0].xyz).xxzy; + float4 xxzz = asfloat(U[0].xyz).xxzz; + float4 xyxx = asfloat(U[0].xyz).xyxx; + float4 xyxy = asfloat(U[0].xyz).xyxy; + float4 xyxz = asfloat(U[0].xyz).xyxz; + float4 xyyx = asfloat(U[0].xyz).xyyx; + float4 xyyy = asfloat(U[0].xyz).xyyy; + float4 xyyz = asfloat(U[0].xyz).xyyz; + float4 xyzx = asfloat(U[0].xyz).xyzx; + float4 xyzy = asfloat(U[0].xyz).xyzy; + float4 xyzz = asfloat(U[0].xyz).xyzz; + float4 xzxx = asfloat(U[0].xyz).xzxx; + float4 xzxy = asfloat(U[0].xyz).xzxy; + float4 xzxz = asfloat(U[0].xyz).xzxz; + float4 xzyx = asfloat(U[0].xyz).xzyx; + float4 xzyy = asfloat(U[0].xyz).xzyy; + float4 xzyz = asfloat(U[0].xyz).xzyz; + float4 xzzx = asfloat(U[0].xyz).xzzx; + float4 xzzy = asfloat(U[0].xyz).xzzy; + float4 xzzz = asfloat(U[0].xyz).xzzz; + float4 yxxx = asfloat(U[0].xyz).yxxx; + float4 yxxy = asfloat(U[0].xyz).yxxy; + float4 yxxz = asfloat(U[0].xyz).yxxz; + float4 yxyx = asfloat(U[0].xyz).yxyx; + float4 yxyy = asfloat(U[0].xyz).yxyy; + float4 yxyz = asfloat(U[0].xyz).yxyz; + float4 yxzx = asfloat(U[0].xyz).yxzx; + float4 yxzy = asfloat(U[0].xyz).yxzy; + float4 yxzz = asfloat(U[0].xyz).yxzz; + float4 yyxx = asfloat(U[0].xyz).yyxx; + float4 yyxy = asfloat(U[0].xyz).yyxy; + float4 yyxz = asfloat(U[0].xyz).yyxz; + float4 yyyx = asfloat(U[0].xyz).yyyx; + float4 yyyy = asfloat(U[0].xyz).yyyy; + float4 yyyz = asfloat(U[0].xyz).yyyz; + float4 yyzx = asfloat(U[0].xyz).yyzx; + float4 yyzy = asfloat(U[0].xyz).yyzy; + float4 yyzz = asfloat(U[0].xyz).yyzz; + float4 yzxx = asfloat(U[0].xyz).yzxx; + float4 yzxy = asfloat(U[0].xyz).yzxy; + float4 yzxz = asfloat(U[0].xyz).yzxz; + float4 yzyx = asfloat(U[0].xyz).yzyx; + float4 yzyy = asfloat(U[0].xyz).yzyy; + float4 yzyz = asfloat(U[0].xyz).yzyz; + float4 yzzx = asfloat(U[0].xyz).yzzx; + float4 yzzy = asfloat(U[0].xyz).yzzy; + float4 yzzz = asfloat(U[0].xyz).yzzz; + float4 zxxx = asfloat(U[0].xyz).zxxx; + float4 zxxy = asfloat(U[0].xyz).zxxy; + float4 zxxz = asfloat(U[0].xyz).zxxz; + float4 zxyx = asfloat(U[0].xyz).zxyx; + float4 zxyy = asfloat(U[0].xyz).zxyy; + float4 zxyz = asfloat(U[0].xyz).zxyz; + float4 zxzx = asfloat(U[0].xyz).zxzx; + float4 zxzy = asfloat(U[0].xyz).zxzy; + float4 zxzz = asfloat(U[0].xyz).zxzz; + float4 zyxx = asfloat(U[0].xyz).zyxx; + float4 zyxy = asfloat(U[0].xyz).zyxy; + float4 zyxz = asfloat(U[0].xyz).zyxz; + float4 zyyx = asfloat(U[0].xyz).zyyx; + float4 zyyy = asfloat(U[0].xyz).zyyy; + float4 zyyz = asfloat(U[0].xyz).zyyz; + float4 zyzx = asfloat(U[0].xyz).zyzx; + float4 zyzy = asfloat(U[0].xyz).zyzy; + float4 zyzz = asfloat(U[0].xyz).zyzz; + float4 zzxx = asfloat(U[0].xyz).zzxx; + float4 zzxy = asfloat(U[0].xyz).zzxy; + float4 zzxz = asfloat(U[0].xyz).zzxz; + float4 zzyx = asfloat(U[0].xyz).zzyx; + float4 zzyy = asfloat(U[0].xyz).zzyy; + float4 zzyz = asfloat(U[0].xyz).zzyz; + float4 zzzx = asfloat(U[0].xyz).zzzx; + float4 zzzy = asfloat(U[0].xyz).zzzy; + float4 zzzz = asfloat(U[0].xyz).zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl new file mode 100644 index 0000000000..b38da02c95 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl @@ -0,0 +1,143 @@ +#include + +using namespace metal; + +template +inline auto operator*(matrix lhs, packed_vec rhs) { + return lhs * vec(rhs); +} + +template +inline auto operator*(packed_vec lhs, matrix rhs) { + return vec(lhs) * rhs; +} + +struct S { + /* 0x0000 */ packed_float3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(constant S& U) { + float3 v = U.v; + float x = U.v[0]; + float y = U.v[1]; + float z = U.v[2]; + float2 xx = float3(U.v).xx; + float2 xy = float3(U.v).xy; + float2 xz = float3(U.v).xz; + float2 yx = float3(U.v).yx; + float2 yy = float3(U.v).yy; + float2 yz = float3(U.v).yz; + float2 zx = float3(U.v).zx; + float2 zy = float3(U.v).zy; + float2 zz = float3(U.v).zz; + float3 xxx = float3(U.v).xxx; + float3 xxy = float3(U.v).xxy; + float3 xxz = float3(U.v).xxz; + float3 xyx = float3(U.v).xyx; + float3 xyy = float3(U.v).xyy; + float3 xyz = float3(U.v).xyz; + float3 xzx = float3(U.v).xzx; + float3 xzy = float3(U.v).xzy; + float3 xzz = float3(U.v).xzz; + float3 yxx = float3(U.v).yxx; + float3 yxy = float3(U.v).yxy; + float3 yxz = float3(U.v).yxz; + float3 yyx = float3(U.v).yyx; + float3 yyy = float3(U.v).yyy; + float3 yyz = float3(U.v).yyz; + float3 yzx = float3(U.v).yzx; + float3 yzy = float3(U.v).yzy; + float3 yzz = float3(U.v).yzz; + float3 zxx = float3(U.v).zxx; + float3 zxy = float3(U.v).zxy; + float3 zxz = float3(U.v).zxz; + float3 zyx = float3(U.v).zyx; + float3 zyy = float3(U.v).zyy; + float3 zyz = float3(U.v).zyz; + float3 zzx = float3(U.v).zzx; + float3 zzy = float3(U.v).zzy; + float3 zzz = float3(U.v).zzz; + float4 xxxx = float3(U.v).xxxx; + float4 xxxy = float3(U.v).xxxy; + float4 xxxz = float3(U.v).xxxz; + float4 xxyx = float3(U.v).xxyx; + float4 xxyy = float3(U.v).xxyy; + float4 xxyz = float3(U.v).xxyz; + float4 xxzx = float3(U.v).xxzx; + float4 xxzy = float3(U.v).xxzy; + float4 xxzz = float3(U.v).xxzz; + float4 xyxx = float3(U.v).xyxx; + float4 xyxy = float3(U.v).xyxy; + float4 xyxz = float3(U.v).xyxz; + float4 xyyx = float3(U.v).xyyx; + float4 xyyy = float3(U.v).xyyy; + float4 xyyz = float3(U.v).xyyz; + float4 xyzx = float3(U.v).xyzx; + float4 xyzy = float3(U.v).xyzy; + float4 xyzz = float3(U.v).xyzz; + float4 xzxx = float3(U.v).xzxx; + float4 xzxy = float3(U.v).xzxy; + float4 xzxz = float3(U.v).xzxz; + float4 xzyx = float3(U.v).xzyx; + float4 xzyy = float3(U.v).xzyy; + float4 xzyz = float3(U.v).xzyz; + float4 xzzx = float3(U.v).xzzx; + float4 xzzy = float3(U.v).xzzy; + float4 xzzz = float3(U.v).xzzz; + float4 yxxx = float3(U.v).yxxx; + float4 yxxy = float3(U.v).yxxy; + float4 yxxz = float3(U.v).yxxz; + float4 yxyx = float3(U.v).yxyx; + float4 yxyy = float3(U.v).yxyy; + float4 yxyz = float3(U.v).yxyz; + float4 yxzx = float3(U.v).yxzx; + float4 yxzy = float3(U.v).yxzy; + float4 yxzz = float3(U.v).yxzz; + float4 yyxx = float3(U.v).yyxx; + float4 yyxy = float3(U.v).yyxy; + float4 yyxz = float3(U.v).yyxz; + float4 yyyx = float3(U.v).yyyx; + float4 yyyy = float3(U.v).yyyy; + float4 yyyz = float3(U.v).yyyz; + float4 yyzx = float3(U.v).yyzx; + float4 yyzy = float3(U.v).yyzy; + float4 yyzz = float3(U.v).yyzz; + float4 yzxx = float3(U.v).yzxx; + float4 yzxy = float3(U.v).yzxy; + float4 yzxz = float3(U.v).yzxz; + float4 yzyx = float3(U.v).yzyx; + float4 yzyy = float3(U.v).yzyy; + float4 yzyz = float3(U.v).yzyz; + float4 yzzx = float3(U.v).yzzx; + float4 yzzy = float3(U.v).yzzy; + float4 yzzz = float3(U.v).yzzz; + float4 zxxx = float3(U.v).zxxx; + float4 zxxy = float3(U.v).zxxy; + float4 zxxz = float3(U.v).zxxz; + float4 zxyx = float3(U.v).zxyx; + float4 zxyy = float3(U.v).zxyy; + float4 zxyz = float3(U.v).zxyz; + float4 zxzx = float3(U.v).zxzx; + float4 zxzy = float3(U.v).zxzy; + float4 zxzz = float3(U.v).zxzz; + float4 zyxx = float3(U.v).zyxx; + float4 zyxy = float3(U.v).zyxy; + float4 zyxz = float3(U.v).zyxz; + float4 zyyx = float3(U.v).zyyx; + float4 zyyy = float3(U.v).zyyy; + float4 zyyz = float3(U.v).zyyz; + float4 zyzx = float3(U.v).zyzx; + float4 zyzy = float3(U.v).zyzy; + float4 zyzz = float3(U.v).zyzz; + float4 zzxx = float3(U.v).zzxx; + float4 zzxy = float3(U.v).zzxy; + float4 zzxz = float3(U.v).zzxz; + float4 zzyx = float3(U.v).zzyx; + float4 zzyy = float3(U.v).zzyy; + float4 zzyz = float3(U.v).zzyz; + float4 zzzx = float3(U.v).zzzx; + float4 zzzy = float3(U.v).zzzy; + float4 zzzz = float3(U.v).zzzz; +} + diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.spvasm b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.spvasm new file mode 100644 index 0000000000..eaadf004cd --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.spvasm @@ -0,0 +1,772 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 508 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U NonWritable + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %float = OpTypeFloat 32 + %v3float = OpTypeVector %float 3 + %S = OpTypeStruct %v3float +%_ptr_Uniform_S = OpTypePointer Uniform %S + %U = OpVariable %_ptr_Uniform_S Uniform + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float +%_ptr_Function_v3float = OpTypePointer Function %v3float + %19 = OpConstantNull %v3float +%_ptr_Uniform_float = OpTypePointer Uniform %float +%_ptr_Function_float = OpTypePointer Function %float + %25 = OpConstantNull %float + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2float = OpTypeVector %float 2 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %40 = OpConstantNull %v2float + %v4float = OpTypeVector %float 4 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %187 = OpConstantNull %v4float +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %v = OpVariable %_ptr_Function_v3float Function %19 + %x = OpVariable %_ptr_Function_float Function %25 + %y = OpVariable %_ptr_Function_float Function %25 + %z = OpVariable %_ptr_Function_float Function %25 + %xx = OpVariable %_ptr_Function_v2float Function %40 + %xy = OpVariable %_ptr_Function_v2float Function %40 + %xz = OpVariable %_ptr_Function_v2float Function %40 + %yx = OpVariable %_ptr_Function_v2float Function %40 + %yy = OpVariable %_ptr_Function_v2float Function %40 + %yz = OpVariable %_ptr_Function_v2float Function %40 + %zx = OpVariable %_ptr_Function_v2float Function %40 + %zy = OpVariable %_ptr_Function_v2float Function %40 + %zz = OpVariable %_ptr_Function_v2float Function %40 + %xxx = OpVariable %_ptr_Function_v3float Function %19 + %xxy = OpVariable %_ptr_Function_v3float Function %19 + %xxz = OpVariable %_ptr_Function_v3float Function %19 + %xyx = OpVariable %_ptr_Function_v3float Function %19 + %xyy = OpVariable %_ptr_Function_v3float Function %19 + %xyz = OpVariable %_ptr_Function_v3float Function %19 + %xzx = OpVariable %_ptr_Function_v3float Function %19 + %xzy = OpVariable %_ptr_Function_v3float Function %19 + %xzz = OpVariable %_ptr_Function_v3float Function %19 + %yxx = OpVariable %_ptr_Function_v3float Function %19 + %yxy = OpVariable %_ptr_Function_v3float Function %19 + %yxz = OpVariable %_ptr_Function_v3float Function %19 + %yyx = OpVariable %_ptr_Function_v3float Function %19 + %yyy = OpVariable %_ptr_Function_v3float Function %19 + %yyz = OpVariable %_ptr_Function_v3float Function %19 + %yzx = OpVariable %_ptr_Function_v3float Function %19 + %yzy = OpVariable %_ptr_Function_v3float Function %19 + %yzz = OpVariable %_ptr_Function_v3float Function %19 + %zxx = OpVariable %_ptr_Function_v3float Function %19 + %zxy = OpVariable %_ptr_Function_v3float Function %19 + %zxz = OpVariable %_ptr_Function_v3float Function %19 + %zyx = OpVariable %_ptr_Function_v3float Function %19 + %zyy = OpVariable %_ptr_Function_v3float Function %19 + %zyz = OpVariable %_ptr_Function_v3float Function %19 + %zzx = OpVariable %_ptr_Function_v3float Function %19 + %zzy = OpVariable %_ptr_Function_v3float Function %19 + %zzz = OpVariable %_ptr_Function_v3float Function %19 + %xxxx = OpVariable %_ptr_Function_v4float Function %187 + %xxxy = OpVariable %_ptr_Function_v4float Function %187 + %xxxz = OpVariable %_ptr_Function_v4float Function %187 + %xxyx = OpVariable %_ptr_Function_v4float Function %187 + %xxyy = OpVariable %_ptr_Function_v4float Function %187 + %xxyz = OpVariable %_ptr_Function_v4float Function %187 + %xxzx = OpVariable %_ptr_Function_v4float Function %187 + %xxzy = OpVariable %_ptr_Function_v4float Function %187 + %xxzz = OpVariable %_ptr_Function_v4float Function %187 + %xyxx = OpVariable %_ptr_Function_v4float Function %187 + %xyxy = OpVariable %_ptr_Function_v4float Function %187 + %xyxz = OpVariable %_ptr_Function_v4float Function %187 + %xyyx = OpVariable %_ptr_Function_v4float Function %187 + %xyyy = OpVariable %_ptr_Function_v4float Function %187 + %xyyz = OpVariable %_ptr_Function_v4float Function %187 + %xyzx = OpVariable %_ptr_Function_v4float Function %187 + %xyzy = OpVariable %_ptr_Function_v4float Function %187 + %xyzz = OpVariable %_ptr_Function_v4float Function %187 + %xzxx = OpVariable %_ptr_Function_v4float Function %187 + %xzxy = OpVariable %_ptr_Function_v4float Function %187 + %xzxz = OpVariable %_ptr_Function_v4float Function %187 + %xzyx = OpVariable %_ptr_Function_v4float Function %187 + %xzyy = OpVariable %_ptr_Function_v4float Function %187 + %xzyz = OpVariable %_ptr_Function_v4float Function %187 + %xzzx = OpVariable %_ptr_Function_v4float Function %187 + %xzzy = OpVariable %_ptr_Function_v4float Function %187 + %xzzz = OpVariable %_ptr_Function_v4float Function %187 + %yxxx = OpVariable %_ptr_Function_v4float Function %187 + %yxxy = OpVariable %_ptr_Function_v4float Function %187 + %yxxz = OpVariable %_ptr_Function_v4float Function %187 + %yxyx = OpVariable %_ptr_Function_v4float Function %187 + %yxyy = OpVariable %_ptr_Function_v4float Function %187 + %yxyz = OpVariable %_ptr_Function_v4float Function %187 + %yxzx = OpVariable %_ptr_Function_v4float Function %187 + %yxzy = OpVariable %_ptr_Function_v4float Function %187 + %yxzz = OpVariable %_ptr_Function_v4float Function %187 + %yyxx = OpVariable %_ptr_Function_v4float Function %187 + %yyxy = OpVariable %_ptr_Function_v4float Function %187 + %yyxz = OpVariable %_ptr_Function_v4float Function %187 + %yyyx = OpVariable %_ptr_Function_v4float Function %187 + %yyyy = OpVariable %_ptr_Function_v4float Function %187 + %yyyz = OpVariable %_ptr_Function_v4float Function %187 + %yyzx = OpVariable %_ptr_Function_v4float Function %187 + %yyzy = OpVariable %_ptr_Function_v4float Function %187 + %yyzz = OpVariable %_ptr_Function_v4float Function %187 + %yzxx = OpVariable %_ptr_Function_v4float Function %187 + %yzxy = OpVariable %_ptr_Function_v4float Function %187 + %yzxz = OpVariable %_ptr_Function_v4float Function %187 + %yzyx = OpVariable %_ptr_Function_v4float Function %187 + %yzyy = OpVariable %_ptr_Function_v4float Function %187 + %yzyz = OpVariable %_ptr_Function_v4float Function %187 + %yzzx = OpVariable %_ptr_Function_v4float Function %187 + %yzzy = OpVariable %_ptr_Function_v4float Function %187 + %yzzz = OpVariable %_ptr_Function_v4float Function %187 + %zxxx = OpVariable %_ptr_Function_v4float Function %187 + %zxxy = OpVariable %_ptr_Function_v4float Function %187 + %zxxz = OpVariable %_ptr_Function_v4float Function %187 + %zxyx = OpVariable %_ptr_Function_v4float Function %187 + %zxyy = OpVariable %_ptr_Function_v4float Function %187 + %zxyz = OpVariable %_ptr_Function_v4float Function %187 + %zxzx = OpVariable %_ptr_Function_v4float Function %187 + %zxzy = OpVariable %_ptr_Function_v4float Function %187 + %zxzz = OpVariable %_ptr_Function_v4float Function %187 + %zyxx = OpVariable %_ptr_Function_v4float Function %187 + %zyxy = OpVariable %_ptr_Function_v4float Function %187 + %zyxz = OpVariable %_ptr_Function_v4float Function %187 + %zyyx = OpVariable %_ptr_Function_v4float Function %187 + %zyyy = OpVariable %_ptr_Function_v4float Function %187 + %zyyz = OpVariable %_ptr_Function_v4float Function %187 + %zyzx = OpVariable %_ptr_Function_v4float Function %187 + %zyzy = OpVariable %_ptr_Function_v4float Function %187 + %zyzz = OpVariable %_ptr_Function_v4float Function %187 + %zzxx = OpVariable %_ptr_Function_v4float Function %187 + %zzxy = OpVariable %_ptr_Function_v4float Function %187 + %zzxz = OpVariable %_ptr_Function_v4float Function %187 + %zzyx = OpVariable %_ptr_Function_v4float Function %187 + %zzyy = OpVariable %_ptr_Function_v4float Function %187 + %zzyz = OpVariable %_ptr_Function_v4float Function %187 + %zzzx = OpVariable %_ptr_Function_v4float Function %187 + %zzzy = OpVariable %_ptr_Function_v4float Function %187 + %zzzz = OpVariable %_ptr_Function_v4float Function %187 + %15 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %16 = OpLoad %v3float %15 + OpStore %v %16 + %21 = OpAccessChain %_ptr_Uniform_float %U %uint_0 %uint_0 + %22 = OpLoad %float %21 + OpStore %x %22 + %27 = OpAccessChain %_ptr_Uniform_float %U %uint_0 %uint_1 + %28 = OpLoad %float %27 + OpStore %y %28 + %31 = OpAccessChain %_ptr_Uniform_float %U %uint_0 %uint_2 + %32 = OpLoad %float %31 + OpStore %z %32 + %34 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %36 = OpLoad %v3float %34 + %37 = OpVectorShuffle %v2float %36 %36 0 0 + OpStore %xx %37 + %41 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %42 = OpLoad %v3float %41 + %43 = OpVectorShuffle %v2float %42 %42 0 1 + OpStore %xy %43 + %45 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %46 = OpLoad %v3float %45 + %47 = OpVectorShuffle %v2float %46 %46 0 2 + OpStore %xz %47 + %49 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %50 = OpLoad %v3float %49 + %51 = OpVectorShuffle %v2float %50 %50 1 0 + OpStore %yx %51 + %53 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %54 = OpLoad %v3float %53 + %55 = OpVectorShuffle %v2float %54 %54 1 1 + OpStore %yy %55 + %57 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %58 = OpLoad %v3float %57 + %59 = OpVectorShuffle %v2float %58 %58 1 2 + OpStore %yz %59 + %61 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %62 = OpLoad %v3float %61 + %63 = OpVectorShuffle %v2float %62 %62 2 0 + OpStore %zx %63 + %65 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %66 = OpLoad %v3float %65 + %67 = OpVectorShuffle %v2float %66 %66 2 1 + OpStore %zy %67 + %69 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %70 = OpLoad %v3float %69 + %71 = OpVectorShuffle %v2float %70 %70 2 2 + OpStore %zz %71 + %73 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %74 = OpLoad %v3float %73 + %75 = OpVectorShuffle %v3float %74 %74 0 0 0 + OpStore %xxx %75 + %77 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %78 = OpLoad %v3float %77 + %79 = OpVectorShuffle %v3float %78 %78 0 0 1 + OpStore %xxy %79 + %81 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %82 = OpLoad %v3float %81 + %83 = OpVectorShuffle %v3float %82 %82 0 0 2 + OpStore %xxz %83 + %85 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %86 = OpLoad %v3float %85 + %87 = OpVectorShuffle %v3float %86 %86 0 1 0 + OpStore %xyx %87 + %89 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %90 = OpLoad %v3float %89 + %91 = OpVectorShuffle %v3float %90 %90 0 1 1 + OpStore %xyy %91 + %93 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %94 = OpLoad %v3float %93 + %95 = OpVectorShuffle %v3float %94 %94 0 1 2 + OpStore %xyz %95 + %97 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %98 = OpLoad %v3float %97 + %99 = OpVectorShuffle %v3float %98 %98 0 2 0 + OpStore %xzx %99 + %101 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %102 = OpLoad %v3float %101 + %103 = OpVectorShuffle %v3float %102 %102 0 2 1 + OpStore %xzy %103 + %105 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %106 = OpLoad %v3float %105 + %107 = OpVectorShuffle %v3float %106 %106 0 2 2 + OpStore %xzz %107 + %109 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %110 = OpLoad %v3float %109 + %111 = OpVectorShuffle %v3float %110 %110 1 0 0 + OpStore %yxx %111 + %113 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %114 = OpLoad %v3float %113 + %115 = OpVectorShuffle %v3float %114 %114 1 0 1 + OpStore %yxy %115 + %117 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %118 = OpLoad %v3float %117 + %119 = OpVectorShuffle %v3float %118 %118 1 0 2 + OpStore %yxz %119 + %121 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %122 = OpLoad %v3float %121 + %123 = OpVectorShuffle %v3float %122 %122 1 1 0 + OpStore %yyx %123 + %125 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %126 = OpLoad %v3float %125 + %127 = OpVectorShuffle %v3float %126 %126 1 1 1 + OpStore %yyy %127 + %129 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %130 = OpLoad %v3float %129 + %131 = OpVectorShuffle %v3float %130 %130 1 1 2 + OpStore %yyz %131 + %133 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %134 = OpLoad %v3float %133 + %135 = OpVectorShuffle %v3float %134 %134 1 2 0 + OpStore %yzx %135 + %137 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %138 = OpLoad %v3float %137 + %139 = OpVectorShuffle %v3float %138 %138 1 2 1 + OpStore %yzy %139 + %141 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %142 = OpLoad %v3float %141 + %143 = OpVectorShuffle %v3float %142 %142 1 2 2 + OpStore %yzz %143 + %145 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %146 = OpLoad %v3float %145 + %147 = OpVectorShuffle %v3float %146 %146 2 0 0 + OpStore %zxx %147 + %149 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %150 = OpLoad %v3float %149 + %151 = OpVectorShuffle %v3float %150 %150 2 0 1 + OpStore %zxy %151 + %153 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %154 = OpLoad %v3float %153 + %155 = OpVectorShuffle %v3float %154 %154 2 0 2 + OpStore %zxz %155 + %157 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %158 = OpLoad %v3float %157 + %159 = OpVectorShuffle %v3float %158 %158 2 1 0 + OpStore %zyx %159 + %161 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %162 = OpLoad %v3float %161 + %163 = OpVectorShuffle %v3float %162 %162 2 1 1 + OpStore %zyy %163 + %165 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %166 = OpLoad %v3float %165 + %167 = OpVectorShuffle %v3float %166 %166 2 1 2 + OpStore %zyz %167 + %169 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %170 = OpLoad %v3float %169 + %171 = OpVectorShuffle %v3float %170 %170 2 2 0 + OpStore %zzx %171 + %173 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %174 = OpLoad %v3float %173 + %175 = OpVectorShuffle %v3float %174 %174 2 2 1 + OpStore %zzy %175 + %177 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %178 = OpLoad %v3float %177 + %179 = OpVectorShuffle %v3float %178 %178 2 2 2 + OpStore %zzz %179 + %181 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %183 = OpLoad %v3float %181 + %184 = OpVectorShuffle %v4float %183 %183 0 0 0 0 + OpStore %xxxx %184 + %188 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %189 = OpLoad %v3float %188 + %190 = OpVectorShuffle %v4float %189 %189 0 0 0 1 + OpStore %xxxy %190 + %192 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %193 = OpLoad %v3float %192 + %194 = OpVectorShuffle %v4float %193 %193 0 0 0 2 + OpStore %xxxz %194 + %196 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %197 = OpLoad %v3float %196 + %198 = OpVectorShuffle %v4float %197 %197 0 0 1 0 + OpStore %xxyx %198 + %200 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %201 = OpLoad %v3float %200 + %202 = OpVectorShuffle %v4float %201 %201 0 0 1 1 + OpStore %xxyy %202 + %204 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %205 = OpLoad %v3float %204 + %206 = OpVectorShuffle %v4float %205 %205 0 0 1 2 + OpStore %xxyz %206 + %208 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %209 = OpLoad %v3float %208 + %210 = OpVectorShuffle %v4float %209 %209 0 0 2 0 + OpStore %xxzx %210 + %212 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %213 = OpLoad %v3float %212 + %214 = OpVectorShuffle %v4float %213 %213 0 0 2 1 + OpStore %xxzy %214 + %216 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %217 = OpLoad %v3float %216 + %218 = OpVectorShuffle %v4float %217 %217 0 0 2 2 + OpStore %xxzz %218 + %220 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %221 = OpLoad %v3float %220 + %222 = OpVectorShuffle %v4float %221 %221 0 1 0 0 + OpStore %xyxx %222 + %224 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %225 = OpLoad %v3float %224 + %226 = OpVectorShuffle %v4float %225 %225 0 1 0 1 + OpStore %xyxy %226 + %228 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %229 = OpLoad %v3float %228 + %230 = OpVectorShuffle %v4float %229 %229 0 1 0 2 + OpStore %xyxz %230 + %232 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %233 = OpLoad %v3float %232 + %234 = OpVectorShuffle %v4float %233 %233 0 1 1 0 + OpStore %xyyx %234 + %236 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %237 = OpLoad %v3float %236 + %238 = OpVectorShuffle %v4float %237 %237 0 1 1 1 + OpStore %xyyy %238 + %240 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %241 = OpLoad %v3float %240 + %242 = OpVectorShuffle %v4float %241 %241 0 1 1 2 + OpStore %xyyz %242 + %244 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %245 = OpLoad %v3float %244 + %246 = OpVectorShuffle %v4float %245 %245 0 1 2 0 + OpStore %xyzx %246 + %248 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %249 = OpLoad %v3float %248 + %250 = OpVectorShuffle %v4float %249 %249 0 1 2 1 + OpStore %xyzy %250 + %252 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %253 = OpLoad %v3float %252 + %254 = OpVectorShuffle %v4float %253 %253 0 1 2 2 + OpStore %xyzz %254 + %256 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %257 = OpLoad %v3float %256 + %258 = OpVectorShuffle %v4float %257 %257 0 2 0 0 + OpStore %xzxx %258 + %260 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %261 = OpLoad %v3float %260 + %262 = OpVectorShuffle %v4float %261 %261 0 2 0 1 + OpStore %xzxy %262 + %264 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %265 = OpLoad %v3float %264 + %266 = OpVectorShuffle %v4float %265 %265 0 2 0 2 + OpStore %xzxz %266 + %268 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %269 = OpLoad %v3float %268 + %270 = OpVectorShuffle %v4float %269 %269 0 2 1 0 + OpStore %xzyx %270 + %272 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %273 = OpLoad %v3float %272 + %274 = OpVectorShuffle %v4float %273 %273 0 2 1 1 + OpStore %xzyy %274 + %276 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %277 = OpLoad %v3float %276 + %278 = OpVectorShuffle %v4float %277 %277 0 2 1 2 + OpStore %xzyz %278 + %280 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %281 = OpLoad %v3float %280 + %282 = OpVectorShuffle %v4float %281 %281 0 2 2 0 + OpStore %xzzx %282 + %284 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %285 = OpLoad %v3float %284 + %286 = OpVectorShuffle %v4float %285 %285 0 2 2 1 + OpStore %xzzy %286 + %288 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %289 = OpLoad %v3float %288 + %290 = OpVectorShuffle %v4float %289 %289 0 2 2 2 + OpStore %xzzz %290 + %292 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %293 = OpLoad %v3float %292 + %294 = OpVectorShuffle %v4float %293 %293 1 0 0 0 + OpStore %yxxx %294 + %296 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %297 = OpLoad %v3float %296 + %298 = OpVectorShuffle %v4float %297 %297 1 0 0 1 + OpStore %yxxy %298 + %300 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %301 = OpLoad %v3float %300 + %302 = OpVectorShuffle %v4float %301 %301 1 0 0 2 + OpStore %yxxz %302 + %304 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %305 = OpLoad %v3float %304 + %306 = OpVectorShuffle %v4float %305 %305 1 0 1 0 + OpStore %yxyx %306 + %308 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %309 = OpLoad %v3float %308 + %310 = OpVectorShuffle %v4float %309 %309 1 0 1 1 + OpStore %yxyy %310 + %312 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %313 = OpLoad %v3float %312 + %314 = OpVectorShuffle %v4float %313 %313 1 0 1 2 + OpStore %yxyz %314 + %316 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %317 = OpLoad %v3float %316 + %318 = OpVectorShuffle %v4float %317 %317 1 0 2 0 + OpStore %yxzx %318 + %320 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %321 = OpLoad %v3float %320 + %322 = OpVectorShuffle %v4float %321 %321 1 0 2 1 + OpStore %yxzy %322 + %324 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %325 = OpLoad %v3float %324 + %326 = OpVectorShuffle %v4float %325 %325 1 0 2 2 + OpStore %yxzz %326 + %328 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %329 = OpLoad %v3float %328 + %330 = OpVectorShuffle %v4float %329 %329 1 1 0 0 + OpStore %yyxx %330 + %332 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %333 = OpLoad %v3float %332 + %334 = OpVectorShuffle %v4float %333 %333 1 1 0 1 + OpStore %yyxy %334 + %336 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %337 = OpLoad %v3float %336 + %338 = OpVectorShuffle %v4float %337 %337 1 1 0 2 + OpStore %yyxz %338 + %340 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %341 = OpLoad %v3float %340 + %342 = OpVectorShuffle %v4float %341 %341 1 1 1 0 + OpStore %yyyx %342 + %344 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %345 = OpLoad %v3float %344 + %346 = OpVectorShuffle %v4float %345 %345 1 1 1 1 + OpStore %yyyy %346 + %348 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %349 = OpLoad %v3float %348 + %350 = OpVectorShuffle %v4float %349 %349 1 1 1 2 + OpStore %yyyz %350 + %352 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %353 = OpLoad %v3float %352 + %354 = OpVectorShuffle %v4float %353 %353 1 1 2 0 + OpStore %yyzx %354 + %356 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %357 = OpLoad %v3float %356 + %358 = OpVectorShuffle %v4float %357 %357 1 1 2 1 + OpStore %yyzy %358 + %360 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %361 = OpLoad %v3float %360 + %362 = OpVectorShuffle %v4float %361 %361 1 1 2 2 + OpStore %yyzz %362 + %364 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %365 = OpLoad %v3float %364 + %366 = OpVectorShuffle %v4float %365 %365 1 2 0 0 + OpStore %yzxx %366 + %368 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %369 = OpLoad %v3float %368 + %370 = OpVectorShuffle %v4float %369 %369 1 2 0 1 + OpStore %yzxy %370 + %372 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %373 = OpLoad %v3float %372 + %374 = OpVectorShuffle %v4float %373 %373 1 2 0 2 + OpStore %yzxz %374 + %376 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %377 = OpLoad %v3float %376 + %378 = OpVectorShuffle %v4float %377 %377 1 2 1 0 + OpStore %yzyx %378 + %380 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %381 = OpLoad %v3float %380 + %382 = OpVectorShuffle %v4float %381 %381 1 2 1 1 + OpStore %yzyy %382 + %384 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %385 = OpLoad %v3float %384 + %386 = OpVectorShuffle %v4float %385 %385 1 2 1 2 + OpStore %yzyz %386 + %388 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %389 = OpLoad %v3float %388 + %390 = OpVectorShuffle %v4float %389 %389 1 2 2 0 + OpStore %yzzx %390 + %392 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %393 = OpLoad %v3float %392 + %394 = OpVectorShuffle %v4float %393 %393 1 2 2 1 + OpStore %yzzy %394 + %396 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %397 = OpLoad %v3float %396 + %398 = OpVectorShuffle %v4float %397 %397 1 2 2 2 + OpStore %yzzz %398 + %400 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %401 = OpLoad %v3float %400 + %402 = OpVectorShuffle %v4float %401 %401 2 0 0 0 + OpStore %zxxx %402 + %404 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %405 = OpLoad %v3float %404 + %406 = OpVectorShuffle %v4float %405 %405 2 0 0 1 + OpStore %zxxy %406 + %408 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %409 = OpLoad %v3float %408 + %410 = OpVectorShuffle %v4float %409 %409 2 0 0 2 + OpStore %zxxz %410 + %412 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %413 = OpLoad %v3float %412 + %414 = OpVectorShuffle %v4float %413 %413 2 0 1 0 + OpStore %zxyx %414 + %416 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %417 = OpLoad %v3float %416 + %418 = OpVectorShuffle %v4float %417 %417 2 0 1 1 + OpStore %zxyy %418 + %420 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %421 = OpLoad %v3float %420 + %422 = OpVectorShuffle %v4float %421 %421 2 0 1 2 + OpStore %zxyz %422 + %424 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %425 = OpLoad %v3float %424 + %426 = OpVectorShuffle %v4float %425 %425 2 0 2 0 + OpStore %zxzx %426 + %428 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %429 = OpLoad %v3float %428 + %430 = OpVectorShuffle %v4float %429 %429 2 0 2 1 + OpStore %zxzy %430 + %432 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %433 = OpLoad %v3float %432 + %434 = OpVectorShuffle %v4float %433 %433 2 0 2 2 + OpStore %zxzz %434 + %436 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %437 = OpLoad %v3float %436 + %438 = OpVectorShuffle %v4float %437 %437 2 1 0 0 + OpStore %zyxx %438 + %440 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %441 = OpLoad %v3float %440 + %442 = OpVectorShuffle %v4float %441 %441 2 1 0 1 + OpStore %zyxy %442 + %444 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %445 = OpLoad %v3float %444 + %446 = OpVectorShuffle %v4float %445 %445 2 1 0 2 + OpStore %zyxz %446 + %448 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %449 = OpLoad %v3float %448 + %450 = OpVectorShuffle %v4float %449 %449 2 1 1 0 + OpStore %zyyx %450 + %452 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %453 = OpLoad %v3float %452 + %454 = OpVectorShuffle %v4float %453 %453 2 1 1 1 + OpStore %zyyy %454 + %456 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %457 = OpLoad %v3float %456 + %458 = OpVectorShuffle %v4float %457 %457 2 1 1 2 + OpStore %zyyz %458 + %460 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %461 = OpLoad %v3float %460 + %462 = OpVectorShuffle %v4float %461 %461 2 1 2 0 + OpStore %zyzx %462 + %464 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %465 = OpLoad %v3float %464 + %466 = OpVectorShuffle %v4float %465 %465 2 1 2 1 + OpStore %zyzy %466 + %468 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %469 = OpLoad %v3float %468 + %470 = OpVectorShuffle %v4float %469 %469 2 1 2 2 + OpStore %zyzz %470 + %472 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %473 = OpLoad %v3float %472 + %474 = OpVectorShuffle %v4float %473 %473 2 2 0 0 + OpStore %zzxx %474 + %476 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %477 = OpLoad %v3float %476 + %478 = OpVectorShuffle %v4float %477 %477 2 2 0 1 + OpStore %zzxy %478 + %480 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %481 = OpLoad %v3float %480 + %482 = OpVectorShuffle %v4float %481 %481 2 2 0 2 + OpStore %zzxz %482 + %484 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %485 = OpLoad %v3float %484 + %486 = OpVectorShuffle %v4float %485 %485 2 2 1 0 + OpStore %zzyx %486 + %488 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %489 = OpLoad %v3float %488 + %490 = OpVectorShuffle %v4float %489 %489 2 2 1 1 + OpStore %zzyy %490 + %492 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %493 = OpLoad %v3float %492 + %494 = OpVectorShuffle %v4float %493 %493 2 2 1 2 + OpStore %zzyz %494 + %496 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %497 = OpLoad %v3float %496 + %498 = OpVectorShuffle %v4float %497 %497 2 2 2 0 + OpStore %zzzx %498 + %500 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %501 = OpLoad %v3float %500 + %502 = OpVectorShuffle %v4float %501 %501 2 2 2 1 + OpStore %zzzy %502 + %504 = OpAccessChain %_ptr_Uniform_v3float %U %uint_0 + %505 = OpLoad %v3float %504 + %506 = OpVectorShuffle %v4float %505 %505 2 2 2 2 + OpStore %zzzz %506 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl new file mode 100644 index 0000000000..1e01c442de --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl @@ -0,0 +1,130 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl new file mode 100644 index 0000000000..114397b77d --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl @@ -0,0 +1,144 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.hlsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.hlsl new file mode 100644 index 0000000000..13b2315d12 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.hlsl @@ -0,0 +1,132 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +cbuffer cbuffer_U : register(b0, space0) { + uint4 U[1]; +}; + +void f() { + int3 v = asint(U[0].xyz); + int x = asint(U[0].x); + int y = asint(U[0].y); + int z = asint(U[0].z); + int2 xx = asint(U[0].xyz).xx; + int2 xy = asint(U[0].xyz).xy; + int2 xz = asint(U[0].xyz).xz; + int2 yx = asint(U[0].xyz).yx; + int2 yy = asint(U[0].xyz).yy; + int2 yz = asint(U[0].xyz).yz; + int2 zx = asint(U[0].xyz).zx; + int2 zy = asint(U[0].xyz).zy; + int2 zz = asint(U[0].xyz).zz; + int3 xxx = asint(U[0].xyz).xxx; + int3 xxy = asint(U[0].xyz).xxy; + int3 xxz = asint(U[0].xyz).xxz; + int3 xyx = asint(U[0].xyz).xyx; + int3 xyy = asint(U[0].xyz).xyy; + int3 xyz = asint(U[0].xyz).xyz; + int3 xzx = asint(U[0].xyz).xzx; + int3 xzy = asint(U[0].xyz).xzy; + int3 xzz = asint(U[0].xyz).xzz; + int3 yxx = asint(U[0].xyz).yxx; + int3 yxy = asint(U[0].xyz).yxy; + int3 yxz = asint(U[0].xyz).yxz; + int3 yyx = asint(U[0].xyz).yyx; + int3 yyy = asint(U[0].xyz).yyy; + int3 yyz = asint(U[0].xyz).yyz; + int3 yzx = asint(U[0].xyz).yzx; + int3 yzy = asint(U[0].xyz).yzy; + int3 yzz = asint(U[0].xyz).yzz; + int3 zxx = asint(U[0].xyz).zxx; + int3 zxy = asint(U[0].xyz).zxy; + int3 zxz = asint(U[0].xyz).zxz; + int3 zyx = asint(U[0].xyz).zyx; + int3 zyy = asint(U[0].xyz).zyy; + int3 zyz = asint(U[0].xyz).zyz; + int3 zzx = asint(U[0].xyz).zzx; + int3 zzy = asint(U[0].xyz).zzy; + int3 zzz = asint(U[0].xyz).zzz; + int4 xxxx = asint(U[0].xyz).xxxx; + int4 xxxy = asint(U[0].xyz).xxxy; + int4 xxxz = asint(U[0].xyz).xxxz; + int4 xxyx = asint(U[0].xyz).xxyx; + int4 xxyy = asint(U[0].xyz).xxyy; + int4 xxyz = asint(U[0].xyz).xxyz; + int4 xxzx = asint(U[0].xyz).xxzx; + int4 xxzy = asint(U[0].xyz).xxzy; + int4 xxzz = asint(U[0].xyz).xxzz; + int4 xyxx = asint(U[0].xyz).xyxx; + int4 xyxy = asint(U[0].xyz).xyxy; + int4 xyxz = asint(U[0].xyz).xyxz; + int4 xyyx = asint(U[0].xyz).xyyx; + int4 xyyy = asint(U[0].xyz).xyyy; + int4 xyyz = asint(U[0].xyz).xyyz; + int4 xyzx = asint(U[0].xyz).xyzx; + int4 xyzy = asint(U[0].xyz).xyzy; + int4 xyzz = asint(U[0].xyz).xyzz; + int4 xzxx = asint(U[0].xyz).xzxx; + int4 xzxy = asint(U[0].xyz).xzxy; + int4 xzxz = asint(U[0].xyz).xzxz; + int4 xzyx = asint(U[0].xyz).xzyx; + int4 xzyy = asint(U[0].xyz).xzyy; + int4 xzyz = asint(U[0].xyz).xzyz; + int4 xzzx = asint(U[0].xyz).xzzx; + int4 xzzy = asint(U[0].xyz).xzzy; + int4 xzzz = asint(U[0].xyz).xzzz; + int4 yxxx = asint(U[0].xyz).yxxx; + int4 yxxy = asint(U[0].xyz).yxxy; + int4 yxxz = asint(U[0].xyz).yxxz; + int4 yxyx = asint(U[0].xyz).yxyx; + int4 yxyy = asint(U[0].xyz).yxyy; + int4 yxyz = asint(U[0].xyz).yxyz; + int4 yxzx = asint(U[0].xyz).yxzx; + int4 yxzy = asint(U[0].xyz).yxzy; + int4 yxzz = asint(U[0].xyz).yxzz; + int4 yyxx = asint(U[0].xyz).yyxx; + int4 yyxy = asint(U[0].xyz).yyxy; + int4 yyxz = asint(U[0].xyz).yyxz; + int4 yyyx = asint(U[0].xyz).yyyx; + int4 yyyy = asint(U[0].xyz).yyyy; + int4 yyyz = asint(U[0].xyz).yyyz; + int4 yyzx = asint(U[0].xyz).yyzx; + int4 yyzy = asint(U[0].xyz).yyzy; + int4 yyzz = asint(U[0].xyz).yyzz; + int4 yzxx = asint(U[0].xyz).yzxx; + int4 yzxy = asint(U[0].xyz).yzxy; + int4 yzxz = asint(U[0].xyz).yzxz; + int4 yzyx = asint(U[0].xyz).yzyx; + int4 yzyy = asint(U[0].xyz).yzyy; + int4 yzyz = asint(U[0].xyz).yzyz; + int4 yzzx = asint(U[0].xyz).yzzx; + int4 yzzy = asint(U[0].xyz).yzzy; + int4 yzzz = asint(U[0].xyz).yzzz; + int4 zxxx = asint(U[0].xyz).zxxx; + int4 zxxy = asint(U[0].xyz).zxxy; + int4 zxxz = asint(U[0].xyz).zxxz; + int4 zxyx = asint(U[0].xyz).zxyx; + int4 zxyy = asint(U[0].xyz).zxyy; + int4 zxyz = asint(U[0].xyz).zxyz; + int4 zxzx = asint(U[0].xyz).zxzx; + int4 zxzy = asint(U[0].xyz).zxzy; + int4 zxzz = asint(U[0].xyz).zxzz; + int4 zyxx = asint(U[0].xyz).zyxx; + int4 zyxy = asint(U[0].xyz).zyxy; + int4 zyxz = asint(U[0].xyz).zyxz; + int4 zyyx = asint(U[0].xyz).zyyx; + int4 zyyy = asint(U[0].xyz).zyyy; + int4 zyyz = asint(U[0].xyz).zyyz; + int4 zyzx = asint(U[0].xyz).zyzx; + int4 zyzy = asint(U[0].xyz).zyzy; + int4 zyzz = asint(U[0].xyz).zyzz; + int4 zzxx = asint(U[0].xyz).zzxx; + int4 zzxy = asint(U[0].xyz).zzxy; + int4 zzxz = asint(U[0].xyz).zzxz; + int4 zzyx = asint(U[0].xyz).zzyx; + int4 zzyy = asint(U[0].xyz).zzyy; + int4 zzyz = asint(U[0].xyz).zzyz; + int4 zzzx = asint(U[0].xyz).zzzx; + int4 zzzy = asint(U[0].xyz).zzzy; + int4 zzzz = asint(U[0].xyz).zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl new file mode 100644 index 0000000000..c308b3c2e1 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl @@ -0,0 +1,132 @@ +#include + +using namespace metal; +struct S { + /* 0x0000 */ packed_int3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(constant S& U) { + int3 v = U.v; + int x = U.v[0]; + int y = U.v[1]; + int z = U.v[2]; + int2 xx = int3(U.v).xx; + int2 xy = int3(U.v).xy; + int2 xz = int3(U.v).xz; + int2 yx = int3(U.v).yx; + int2 yy = int3(U.v).yy; + int2 yz = int3(U.v).yz; + int2 zx = int3(U.v).zx; + int2 zy = int3(U.v).zy; + int2 zz = int3(U.v).zz; + int3 xxx = int3(U.v).xxx; + int3 xxy = int3(U.v).xxy; + int3 xxz = int3(U.v).xxz; + int3 xyx = int3(U.v).xyx; + int3 xyy = int3(U.v).xyy; + int3 xyz = int3(U.v).xyz; + int3 xzx = int3(U.v).xzx; + int3 xzy = int3(U.v).xzy; + int3 xzz = int3(U.v).xzz; + int3 yxx = int3(U.v).yxx; + int3 yxy = int3(U.v).yxy; + int3 yxz = int3(U.v).yxz; + int3 yyx = int3(U.v).yyx; + int3 yyy = int3(U.v).yyy; + int3 yyz = int3(U.v).yyz; + int3 yzx = int3(U.v).yzx; + int3 yzy = int3(U.v).yzy; + int3 yzz = int3(U.v).yzz; + int3 zxx = int3(U.v).zxx; + int3 zxy = int3(U.v).zxy; + int3 zxz = int3(U.v).zxz; + int3 zyx = int3(U.v).zyx; + int3 zyy = int3(U.v).zyy; + int3 zyz = int3(U.v).zyz; + int3 zzx = int3(U.v).zzx; + int3 zzy = int3(U.v).zzy; + int3 zzz = int3(U.v).zzz; + int4 xxxx = int3(U.v).xxxx; + int4 xxxy = int3(U.v).xxxy; + int4 xxxz = int3(U.v).xxxz; + int4 xxyx = int3(U.v).xxyx; + int4 xxyy = int3(U.v).xxyy; + int4 xxyz = int3(U.v).xxyz; + int4 xxzx = int3(U.v).xxzx; + int4 xxzy = int3(U.v).xxzy; + int4 xxzz = int3(U.v).xxzz; + int4 xyxx = int3(U.v).xyxx; + int4 xyxy = int3(U.v).xyxy; + int4 xyxz = int3(U.v).xyxz; + int4 xyyx = int3(U.v).xyyx; + int4 xyyy = int3(U.v).xyyy; + int4 xyyz = int3(U.v).xyyz; + int4 xyzx = int3(U.v).xyzx; + int4 xyzy = int3(U.v).xyzy; + int4 xyzz = int3(U.v).xyzz; + int4 xzxx = int3(U.v).xzxx; + int4 xzxy = int3(U.v).xzxy; + int4 xzxz = int3(U.v).xzxz; + int4 xzyx = int3(U.v).xzyx; + int4 xzyy = int3(U.v).xzyy; + int4 xzyz = int3(U.v).xzyz; + int4 xzzx = int3(U.v).xzzx; + int4 xzzy = int3(U.v).xzzy; + int4 xzzz = int3(U.v).xzzz; + int4 yxxx = int3(U.v).yxxx; + int4 yxxy = int3(U.v).yxxy; + int4 yxxz = int3(U.v).yxxz; + int4 yxyx = int3(U.v).yxyx; + int4 yxyy = int3(U.v).yxyy; + int4 yxyz = int3(U.v).yxyz; + int4 yxzx = int3(U.v).yxzx; + int4 yxzy = int3(U.v).yxzy; + int4 yxzz = int3(U.v).yxzz; + int4 yyxx = int3(U.v).yyxx; + int4 yyxy = int3(U.v).yyxy; + int4 yyxz = int3(U.v).yyxz; + int4 yyyx = int3(U.v).yyyx; + int4 yyyy = int3(U.v).yyyy; + int4 yyyz = int3(U.v).yyyz; + int4 yyzx = int3(U.v).yyzx; + int4 yyzy = int3(U.v).yyzy; + int4 yyzz = int3(U.v).yyzz; + int4 yzxx = int3(U.v).yzxx; + int4 yzxy = int3(U.v).yzxy; + int4 yzxz = int3(U.v).yzxz; + int4 yzyx = int3(U.v).yzyx; + int4 yzyy = int3(U.v).yzyy; + int4 yzyz = int3(U.v).yzyz; + int4 yzzx = int3(U.v).yzzx; + int4 yzzy = int3(U.v).yzzy; + int4 yzzz = int3(U.v).yzzz; + int4 zxxx = int3(U.v).zxxx; + int4 zxxy = int3(U.v).zxxy; + int4 zxxz = int3(U.v).zxxz; + int4 zxyx = int3(U.v).zxyx; + int4 zxyy = int3(U.v).zxyy; + int4 zxyz = int3(U.v).zxyz; + int4 zxzx = int3(U.v).zxzx; + int4 zxzy = int3(U.v).zxzy; + int4 zxzz = int3(U.v).zxzz; + int4 zyxx = int3(U.v).zyxx; + int4 zyxy = int3(U.v).zyxy; + int4 zyxz = int3(U.v).zyxz; + int4 zyyx = int3(U.v).zyyx; + int4 zyyy = int3(U.v).zyyy; + int4 zyyz = int3(U.v).zyyz; + int4 zyzx = int3(U.v).zyzx; + int4 zyzy = int3(U.v).zyzy; + int4 zyzz = int3(U.v).zyzz; + int4 zzxx = int3(U.v).zzxx; + int4 zzxy = int3(U.v).zzxy; + int4 zzxz = int3(U.v).zzxz; + int4 zzyx = int3(U.v).zzyx; + int4 zzyy = int3(U.v).zzyy; + int4 zzyz = int3(U.v).zzyz; + int4 zzzx = int3(U.v).zzzx; + int4 zzzy = int3(U.v).zzzy; + int4 zzzz = int3(U.v).zzzz; +} + diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.spvasm b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.spvasm new file mode 100644 index 0000000000..a71db221d5 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.spvasm @@ -0,0 +1,772 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 508 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U NonWritable + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %S = OpTypeStruct %v3int +%_ptr_Uniform_S = OpTypePointer Uniform %S + %U = OpVariable %_ptr_Uniform_S Uniform + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_v3int = OpTypePointer Uniform %v3int +%_ptr_Function_v3int = OpTypePointer Function %v3int + %19 = OpConstantNull %v3int +%_ptr_Uniform_int = OpTypePointer Uniform %int +%_ptr_Function_int = OpTypePointer Function %int + %25 = OpConstantNull %int + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2int = OpTypeVector %int 2 +%_ptr_Function_v2int = OpTypePointer Function %v2int + %40 = OpConstantNull %v2int + %v4int = OpTypeVector %int 4 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %187 = OpConstantNull %v4int +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %v = OpVariable %_ptr_Function_v3int Function %19 + %x = OpVariable %_ptr_Function_int Function %25 + %y = OpVariable %_ptr_Function_int Function %25 + %z = OpVariable %_ptr_Function_int Function %25 + %xx = OpVariable %_ptr_Function_v2int Function %40 + %xy = OpVariable %_ptr_Function_v2int Function %40 + %xz = OpVariable %_ptr_Function_v2int Function %40 + %yx = OpVariable %_ptr_Function_v2int Function %40 + %yy = OpVariable %_ptr_Function_v2int Function %40 + %yz = OpVariable %_ptr_Function_v2int Function %40 + %zx = OpVariable %_ptr_Function_v2int Function %40 + %zy = OpVariable %_ptr_Function_v2int Function %40 + %zz = OpVariable %_ptr_Function_v2int Function %40 + %xxx = OpVariable %_ptr_Function_v3int Function %19 + %xxy = OpVariable %_ptr_Function_v3int Function %19 + %xxz = OpVariable %_ptr_Function_v3int Function %19 + %xyx = OpVariable %_ptr_Function_v3int Function %19 + %xyy = OpVariable %_ptr_Function_v3int Function %19 + %xyz = OpVariable %_ptr_Function_v3int Function %19 + %xzx = OpVariable %_ptr_Function_v3int Function %19 + %xzy = OpVariable %_ptr_Function_v3int Function %19 + %xzz = OpVariable %_ptr_Function_v3int Function %19 + %yxx = OpVariable %_ptr_Function_v3int Function %19 + %yxy = OpVariable %_ptr_Function_v3int Function %19 + %yxz = OpVariable %_ptr_Function_v3int Function %19 + %yyx = OpVariable %_ptr_Function_v3int Function %19 + %yyy = OpVariable %_ptr_Function_v3int Function %19 + %yyz = OpVariable %_ptr_Function_v3int Function %19 + %yzx = OpVariable %_ptr_Function_v3int Function %19 + %yzy = OpVariable %_ptr_Function_v3int Function %19 + %yzz = OpVariable %_ptr_Function_v3int Function %19 + %zxx = OpVariable %_ptr_Function_v3int Function %19 + %zxy = OpVariable %_ptr_Function_v3int Function %19 + %zxz = OpVariable %_ptr_Function_v3int Function %19 + %zyx = OpVariable %_ptr_Function_v3int Function %19 + %zyy = OpVariable %_ptr_Function_v3int Function %19 + %zyz = OpVariable %_ptr_Function_v3int Function %19 + %zzx = OpVariable %_ptr_Function_v3int Function %19 + %zzy = OpVariable %_ptr_Function_v3int Function %19 + %zzz = OpVariable %_ptr_Function_v3int Function %19 + %xxxx = OpVariable %_ptr_Function_v4int Function %187 + %xxxy = OpVariable %_ptr_Function_v4int Function %187 + %xxxz = OpVariable %_ptr_Function_v4int Function %187 + %xxyx = OpVariable %_ptr_Function_v4int Function %187 + %xxyy = OpVariable %_ptr_Function_v4int Function %187 + %xxyz = OpVariable %_ptr_Function_v4int Function %187 + %xxzx = OpVariable %_ptr_Function_v4int Function %187 + %xxzy = OpVariable %_ptr_Function_v4int Function %187 + %xxzz = OpVariable %_ptr_Function_v4int Function %187 + %xyxx = OpVariable %_ptr_Function_v4int Function %187 + %xyxy = OpVariable %_ptr_Function_v4int Function %187 + %xyxz = OpVariable %_ptr_Function_v4int Function %187 + %xyyx = OpVariable %_ptr_Function_v4int Function %187 + %xyyy = OpVariable %_ptr_Function_v4int Function %187 + %xyyz = OpVariable %_ptr_Function_v4int Function %187 + %xyzx = OpVariable %_ptr_Function_v4int Function %187 + %xyzy = OpVariable %_ptr_Function_v4int Function %187 + %xyzz = OpVariable %_ptr_Function_v4int Function %187 + %xzxx = OpVariable %_ptr_Function_v4int Function %187 + %xzxy = OpVariable %_ptr_Function_v4int Function %187 + %xzxz = OpVariable %_ptr_Function_v4int Function %187 + %xzyx = OpVariable %_ptr_Function_v4int Function %187 + %xzyy = OpVariable %_ptr_Function_v4int Function %187 + %xzyz = OpVariable %_ptr_Function_v4int Function %187 + %xzzx = OpVariable %_ptr_Function_v4int Function %187 + %xzzy = OpVariable %_ptr_Function_v4int Function %187 + %xzzz = OpVariable %_ptr_Function_v4int Function %187 + %yxxx = OpVariable %_ptr_Function_v4int Function %187 + %yxxy = OpVariable %_ptr_Function_v4int Function %187 + %yxxz = OpVariable %_ptr_Function_v4int Function %187 + %yxyx = OpVariable %_ptr_Function_v4int Function %187 + %yxyy = OpVariable %_ptr_Function_v4int Function %187 + %yxyz = OpVariable %_ptr_Function_v4int Function %187 + %yxzx = OpVariable %_ptr_Function_v4int Function %187 + %yxzy = OpVariable %_ptr_Function_v4int Function %187 + %yxzz = OpVariable %_ptr_Function_v4int Function %187 + %yyxx = OpVariable %_ptr_Function_v4int Function %187 + %yyxy = OpVariable %_ptr_Function_v4int Function %187 + %yyxz = OpVariable %_ptr_Function_v4int Function %187 + %yyyx = OpVariable %_ptr_Function_v4int Function %187 + %yyyy = OpVariable %_ptr_Function_v4int Function %187 + %yyyz = OpVariable %_ptr_Function_v4int Function %187 + %yyzx = OpVariable %_ptr_Function_v4int Function %187 + %yyzy = OpVariable %_ptr_Function_v4int Function %187 + %yyzz = OpVariable %_ptr_Function_v4int Function %187 + %yzxx = OpVariable %_ptr_Function_v4int Function %187 + %yzxy = OpVariable %_ptr_Function_v4int Function %187 + %yzxz = OpVariable %_ptr_Function_v4int Function %187 + %yzyx = OpVariable %_ptr_Function_v4int Function %187 + %yzyy = OpVariable %_ptr_Function_v4int Function %187 + %yzyz = OpVariable %_ptr_Function_v4int Function %187 + %yzzx = OpVariable %_ptr_Function_v4int Function %187 + %yzzy = OpVariable %_ptr_Function_v4int Function %187 + %yzzz = OpVariable %_ptr_Function_v4int Function %187 + %zxxx = OpVariable %_ptr_Function_v4int Function %187 + %zxxy = OpVariable %_ptr_Function_v4int Function %187 + %zxxz = OpVariable %_ptr_Function_v4int Function %187 + %zxyx = OpVariable %_ptr_Function_v4int Function %187 + %zxyy = OpVariable %_ptr_Function_v4int Function %187 + %zxyz = OpVariable %_ptr_Function_v4int Function %187 + %zxzx = OpVariable %_ptr_Function_v4int Function %187 + %zxzy = OpVariable %_ptr_Function_v4int Function %187 + %zxzz = OpVariable %_ptr_Function_v4int Function %187 + %zyxx = OpVariable %_ptr_Function_v4int Function %187 + %zyxy = OpVariable %_ptr_Function_v4int Function %187 + %zyxz = OpVariable %_ptr_Function_v4int Function %187 + %zyyx = OpVariable %_ptr_Function_v4int Function %187 + %zyyy = OpVariable %_ptr_Function_v4int Function %187 + %zyyz = OpVariable %_ptr_Function_v4int Function %187 + %zyzx = OpVariable %_ptr_Function_v4int Function %187 + %zyzy = OpVariable %_ptr_Function_v4int Function %187 + %zyzz = OpVariable %_ptr_Function_v4int Function %187 + %zzxx = OpVariable %_ptr_Function_v4int Function %187 + %zzxy = OpVariable %_ptr_Function_v4int Function %187 + %zzxz = OpVariable %_ptr_Function_v4int Function %187 + %zzyx = OpVariable %_ptr_Function_v4int Function %187 + %zzyy = OpVariable %_ptr_Function_v4int Function %187 + %zzyz = OpVariable %_ptr_Function_v4int Function %187 + %zzzx = OpVariable %_ptr_Function_v4int Function %187 + %zzzy = OpVariable %_ptr_Function_v4int Function %187 + %zzzz = OpVariable %_ptr_Function_v4int Function %187 + %15 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %16 = OpLoad %v3int %15 + OpStore %v %16 + %21 = OpAccessChain %_ptr_Uniform_int %U %uint_0 %uint_0 + %22 = OpLoad %int %21 + OpStore %x %22 + %27 = OpAccessChain %_ptr_Uniform_int %U %uint_0 %uint_1 + %28 = OpLoad %int %27 + OpStore %y %28 + %31 = OpAccessChain %_ptr_Uniform_int %U %uint_0 %uint_2 + %32 = OpLoad %int %31 + OpStore %z %32 + %34 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %36 = OpLoad %v3int %34 + %37 = OpVectorShuffle %v2int %36 %36 0 0 + OpStore %xx %37 + %41 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %42 = OpLoad %v3int %41 + %43 = OpVectorShuffle %v2int %42 %42 0 1 + OpStore %xy %43 + %45 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %46 = OpLoad %v3int %45 + %47 = OpVectorShuffle %v2int %46 %46 0 2 + OpStore %xz %47 + %49 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %50 = OpLoad %v3int %49 + %51 = OpVectorShuffle %v2int %50 %50 1 0 + OpStore %yx %51 + %53 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %54 = OpLoad %v3int %53 + %55 = OpVectorShuffle %v2int %54 %54 1 1 + OpStore %yy %55 + %57 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %58 = OpLoad %v3int %57 + %59 = OpVectorShuffle %v2int %58 %58 1 2 + OpStore %yz %59 + %61 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %62 = OpLoad %v3int %61 + %63 = OpVectorShuffle %v2int %62 %62 2 0 + OpStore %zx %63 + %65 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %66 = OpLoad %v3int %65 + %67 = OpVectorShuffle %v2int %66 %66 2 1 + OpStore %zy %67 + %69 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %70 = OpLoad %v3int %69 + %71 = OpVectorShuffle %v2int %70 %70 2 2 + OpStore %zz %71 + %73 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %74 = OpLoad %v3int %73 + %75 = OpVectorShuffle %v3int %74 %74 0 0 0 + OpStore %xxx %75 + %77 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %78 = OpLoad %v3int %77 + %79 = OpVectorShuffle %v3int %78 %78 0 0 1 + OpStore %xxy %79 + %81 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %82 = OpLoad %v3int %81 + %83 = OpVectorShuffle %v3int %82 %82 0 0 2 + OpStore %xxz %83 + %85 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %86 = OpLoad %v3int %85 + %87 = OpVectorShuffle %v3int %86 %86 0 1 0 + OpStore %xyx %87 + %89 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %90 = OpLoad %v3int %89 + %91 = OpVectorShuffle %v3int %90 %90 0 1 1 + OpStore %xyy %91 + %93 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %94 = OpLoad %v3int %93 + %95 = OpVectorShuffle %v3int %94 %94 0 1 2 + OpStore %xyz %95 + %97 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %98 = OpLoad %v3int %97 + %99 = OpVectorShuffle %v3int %98 %98 0 2 0 + OpStore %xzx %99 + %101 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %102 = OpLoad %v3int %101 + %103 = OpVectorShuffle %v3int %102 %102 0 2 1 + OpStore %xzy %103 + %105 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %106 = OpLoad %v3int %105 + %107 = OpVectorShuffle %v3int %106 %106 0 2 2 + OpStore %xzz %107 + %109 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %110 = OpLoad %v3int %109 + %111 = OpVectorShuffle %v3int %110 %110 1 0 0 + OpStore %yxx %111 + %113 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %114 = OpLoad %v3int %113 + %115 = OpVectorShuffle %v3int %114 %114 1 0 1 + OpStore %yxy %115 + %117 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %118 = OpLoad %v3int %117 + %119 = OpVectorShuffle %v3int %118 %118 1 0 2 + OpStore %yxz %119 + %121 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %122 = OpLoad %v3int %121 + %123 = OpVectorShuffle %v3int %122 %122 1 1 0 + OpStore %yyx %123 + %125 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %126 = OpLoad %v3int %125 + %127 = OpVectorShuffle %v3int %126 %126 1 1 1 + OpStore %yyy %127 + %129 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %130 = OpLoad %v3int %129 + %131 = OpVectorShuffle %v3int %130 %130 1 1 2 + OpStore %yyz %131 + %133 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %134 = OpLoad %v3int %133 + %135 = OpVectorShuffle %v3int %134 %134 1 2 0 + OpStore %yzx %135 + %137 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %138 = OpLoad %v3int %137 + %139 = OpVectorShuffle %v3int %138 %138 1 2 1 + OpStore %yzy %139 + %141 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %142 = OpLoad %v3int %141 + %143 = OpVectorShuffle %v3int %142 %142 1 2 2 + OpStore %yzz %143 + %145 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %146 = OpLoad %v3int %145 + %147 = OpVectorShuffle %v3int %146 %146 2 0 0 + OpStore %zxx %147 + %149 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %150 = OpLoad %v3int %149 + %151 = OpVectorShuffle %v3int %150 %150 2 0 1 + OpStore %zxy %151 + %153 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %154 = OpLoad %v3int %153 + %155 = OpVectorShuffle %v3int %154 %154 2 0 2 + OpStore %zxz %155 + %157 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %158 = OpLoad %v3int %157 + %159 = OpVectorShuffle %v3int %158 %158 2 1 0 + OpStore %zyx %159 + %161 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %162 = OpLoad %v3int %161 + %163 = OpVectorShuffle %v3int %162 %162 2 1 1 + OpStore %zyy %163 + %165 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %166 = OpLoad %v3int %165 + %167 = OpVectorShuffle %v3int %166 %166 2 1 2 + OpStore %zyz %167 + %169 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %170 = OpLoad %v3int %169 + %171 = OpVectorShuffle %v3int %170 %170 2 2 0 + OpStore %zzx %171 + %173 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %174 = OpLoad %v3int %173 + %175 = OpVectorShuffle %v3int %174 %174 2 2 1 + OpStore %zzy %175 + %177 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %178 = OpLoad %v3int %177 + %179 = OpVectorShuffle %v3int %178 %178 2 2 2 + OpStore %zzz %179 + %181 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %183 = OpLoad %v3int %181 + %184 = OpVectorShuffle %v4int %183 %183 0 0 0 0 + OpStore %xxxx %184 + %188 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %189 = OpLoad %v3int %188 + %190 = OpVectorShuffle %v4int %189 %189 0 0 0 1 + OpStore %xxxy %190 + %192 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %193 = OpLoad %v3int %192 + %194 = OpVectorShuffle %v4int %193 %193 0 0 0 2 + OpStore %xxxz %194 + %196 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %197 = OpLoad %v3int %196 + %198 = OpVectorShuffle %v4int %197 %197 0 0 1 0 + OpStore %xxyx %198 + %200 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %201 = OpLoad %v3int %200 + %202 = OpVectorShuffle %v4int %201 %201 0 0 1 1 + OpStore %xxyy %202 + %204 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %205 = OpLoad %v3int %204 + %206 = OpVectorShuffle %v4int %205 %205 0 0 1 2 + OpStore %xxyz %206 + %208 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %209 = OpLoad %v3int %208 + %210 = OpVectorShuffle %v4int %209 %209 0 0 2 0 + OpStore %xxzx %210 + %212 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %213 = OpLoad %v3int %212 + %214 = OpVectorShuffle %v4int %213 %213 0 0 2 1 + OpStore %xxzy %214 + %216 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %217 = OpLoad %v3int %216 + %218 = OpVectorShuffle %v4int %217 %217 0 0 2 2 + OpStore %xxzz %218 + %220 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %221 = OpLoad %v3int %220 + %222 = OpVectorShuffle %v4int %221 %221 0 1 0 0 + OpStore %xyxx %222 + %224 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %225 = OpLoad %v3int %224 + %226 = OpVectorShuffle %v4int %225 %225 0 1 0 1 + OpStore %xyxy %226 + %228 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %229 = OpLoad %v3int %228 + %230 = OpVectorShuffle %v4int %229 %229 0 1 0 2 + OpStore %xyxz %230 + %232 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %233 = OpLoad %v3int %232 + %234 = OpVectorShuffle %v4int %233 %233 0 1 1 0 + OpStore %xyyx %234 + %236 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %237 = OpLoad %v3int %236 + %238 = OpVectorShuffle %v4int %237 %237 0 1 1 1 + OpStore %xyyy %238 + %240 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %241 = OpLoad %v3int %240 + %242 = OpVectorShuffle %v4int %241 %241 0 1 1 2 + OpStore %xyyz %242 + %244 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %245 = OpLoad %v3int %244 + %246 = OpVectorShuffle %v4int %245 %245 0 1 2 0 + OpStore %xyzx %246 + %248 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %249 = OpLoad %v3int %248 + %250 = OpVectorShuffle %v4int %249 %249 0 1 2 1 + OpStore %xyzy %250 + %252 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %253 = OpLoad %v3int %252 + %254 = OpVectorShuffle %v4int %253 %253 0 1 2 2 + OpStore %xyzz %254 + %256 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %257 = OpLoad %v3int %256 + %258 = OpVectorShuffle %v4int %257 %257 0 2 0 0 + OpStore %xzxx %258 + %260 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %261 = OpLoad %v3int %260 + %262 = OpVectorShuffle %v4int %261 %261 0 2 0 1 + OpStore %xzxy %262 + %264 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %265 = OpLoad %v3int %264 + %266 = OpVectorShuffle %v4int %265 %265 0 2 0 2 + OpStore %xzxz %266 + %268 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %269 = OpLoad %v3int %268 + %270 = OpVectorShuffle %v4int %269 %269 0 2 1 0 + OpStore %xzyx %270 + %272 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %273 = OpLoad %v3int %272 + %274 = OpVectorShuffle %v4int %273 %273 0 2 1 1 + OpStore %xzyy %274 + %276 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %277 = OpLoad %v3int %276 + %278 = OpVectorShuffle %v4int %277 %277 0 2 1 2 + OpStore %xzyz %278 + %280 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %281 = OpLoad %v3int %280 + %282 = OpVectorShuffle %v4int %281 %281 0 2 2 0 + OpStore %xzzx %282 + %284 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %285 = OpLoad %v3int %284 + %286 = OpVectorShuffle %v4int %285 %285 0 2 2 1 + OpStore %xzzy %286 + %288 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %289 = OpLoad %v3int %288 + %290 = OpVectorShuffle %v4int %289 %289 0 2 2 2 + OpStore %xzzz %290 + %292 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %293 = OpLoad %v3int %292 + %294 = OpVectorShuffle %v4int %293 %293 1 0 0 0 + OpStore %yxxx %294 + %296 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %297 = OpLoad %v3int %296 + %298 = OpVectorShuffle %v4int %297 %297 1 0 0 1 + OpStore %yxxy %298 + %300 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %301 = OpLoad %v3int %300 + %302 = OpVectorShuffle %v4int %301 %301 1 0 0 2 + OpStore %yxxz %302 + %304 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %305 = OpLoad %v3int %304 + %306 = OpVectorShuffle %v4int %305 %305 1 0 1 0 + OpStore %yxyx %306 + %308 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %309 = OpLoad %v3int %308 + %310 = OpVectorShuffle %v4int %309 %309 1 0 1 1 + OpStore %yxyy %310 + %312 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %313 = OpLoad %v3int %312 + %314 = OpVectorShuffle %v4int %313 %313 1 0 1 2 + OpStore %yxyz %314 + %316 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %317 = OpLoad %v3int %316 + %318 = OpVectorShuffle %v4int %317 %317 1 0 2 0 + OpStore %yxzx %318 + %320 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %321 = OpLoad %v3int %320 + %322 = OpVectorShuffle %v4int %321 %321 1 0 2 1 + OpStore %yxzy %322 + %324 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %325 = OpLoad %v3int %324 + %326 = OpVectorShuffle %v4int %325 %325 1 0 2 2 + OpStore %yxzz %326 + %328 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %329 = OpLoad %v3int %328 + %330 = OpVectorShuffle %v4int %329 %329 1 1 0 0 + OpStore %yyxx %330 + %332 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %333 = OpLoad %v3int %332 + %334 = OpVectorShuffle %v4int %333 %333 1 1 0 1 + OpStore %yyxy %334 + %336 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %337 = OpLoad %v3int %336 + %338 = OpVectorShuffle %v4int %337 %337 1 1 0 2 + OpStore %yyxz %338 + %340 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %341 = OpLoad %v3int %340 + %342 = OpVectorShuffle %v4int %341 %341 1 1 1 0 + OpStore %yyyx %342 + %344 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %345 = OpLoad %v3int %344 + %346 = OpVectorShuffle %v4int %345 %345 1 1 1 1 + OpStore %yyyy %346 + %348 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %349 = OpLoad %v3int %348 + %350 = OpVectorShuffle %v4int %349 %349 1 1 1 2 + OpStore %yyyz %350 + %352 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %353 = OpLoad %v3int %352 + %354 = OpVectorShuffle %v4int %353 %353 1 1 2 0 + OpStore %yyzx %354 + %356 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %357 = OpLoad %v3int %356 + %358 = OpVectorShuffle %v4int %357 %357 1 1 2 1 + OpStore %yyzy %358 + %360 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %361 = OpLoad %v3int %360 + %362 = OpVectorShuffle %v4int %361 %361 1 1 2 2 + OpStore %yyzz %362 + %364 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %365 = OpLoad %v3int %364 + %366 = OpVectorShuffle %v4int %365 %365 1 2 0 0 + OpStore %yzxx %366 + %368 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %369 = OpLoad %v3int %368 + %370 = OpVectorShuffle %v4int %369 %369 1 2 0 1 + OpStore %yzxy %370 + %372 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %373 = OpLoad %v3int %372 + %374 = OpVectorShuffle %v4int %373 %373 1 2 0 2 + OpStore %yzxz %374 + %376 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %377 = OpLoad %v3int %376 + %378 = OpVectorShuffle %v4int %377 %377 1 2 1 0 + OpStore %yzyx %378 + %380 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %381 = OpLoad %v3int %380 + %382 = OpVectorShuffle %v4int %381 %381 1 2 1 1 + OpStore %yzyy %382 + %384 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %385 = OpLoad %v3int %384 + %386 = OpVectorShuffle %v4int %385 %385 1 2 1 2 + OpStore %yzyz %386 + %388 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %389 = OpLoad %v3int %388 + %390 = OpVectorShuffle %v4int %389 %389 1 2 2 0 + OpStore %yzzx %390 + %392 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %393 = OpLoad %v3int %392 + %394 = OpVectorShuffle %v4int %393 %393 1 2 2 1 + OpStore %yzzy %394 + %396 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %397 = OpLoad %v3int %396 + %398 = OpVectorShuffle %v4int %397 %397 1 2 2 2 + OpStore %yzzz %398 + %400 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %401 = OpLoad %v3int %400 + %402 = OpVectorShuffle %v4int %401 %401 2 0 0 0 + OpStore %zxxx %402 + %404 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %405 = OpLoad %v3int %404 + %406 = OpVectorShuffle %v4int %405 %405 2 0 0 1 + OpStore %zxxy %406 + %408 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %409 = OpLoad %v3int %408 + %410 = OpVectorShuffle %v4int %409 %409 2 0 0 2 + OpStore %zxxz %410 + %412 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %413 = OpLoad %v3int %412 + %414 = OpVectorShuffle %v4int %413 %413 2 0 1 0 + OpStore %zxyx %414 + %416 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %417 = OpLoad %v3int %416 + %418 = OpVectorShuffle %v4int %417 %417 2 0 1 1 + OpStore %zxyy %418 + %420 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %421 = OpLoad %v3int %420 + %422 = OpVectorShuffle %v4int %421 %421 2 0 1 2 + OpStore %zxyz %422 + %424 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %425 = OpLoad %v3int %424 + %426 = OpVectorShuffle %v4int %425 %425 2 0 2 0 + OpStore %zxzx %426 + %428 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %429 = OpLoad %v3int %428 + %430 = OpVectorShuffle %v4int %429 %429 2 0 2 1 + OpStore %zxzy %430 + %432 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %433 = OpLoad %v3int %432 + %434 = OpVectorShuffle %v4int %433 %433 2 0 2 2 + OpStore %zxzz %434 + %436 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %437 = OpLoad %v3int %436 + %438 = OpVectorShuffle %v4int %437 %437 2 1 0 0 + OpStore %zyxx %438 + %440 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %441 = OpLoad %v3int %440 + %442 = OpVectorShuffle %v4int %441 %441 2 1 0 1 + OpStore %zyxy %442 + %444 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %445 = OpLoad %v3int %444 + %446 = OpVectorShuffle %v4int %445 %445 2 1 0 2 + OpStore %zyxz %446 + %448 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %449 = OpLoad %v3int %448 + %450 = OpVectorShuffle %v4int %449 %449 2 1 1 0 + OpStore %zyyx %450 + %452 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %453 = OpLoad %v3int %452 + %454 = OpVectorShuffle %v4int %453 %453 2 1 1 1 + OpStore %zyyy %454 + %456 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %457 = OpLoad %v3int %456 + %458 = OpVectorShuffle %v4int %457 %457 2 1 1 2 + OpStore %zyyz %458 + %460 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %461 = OpLoad %v3int %460 + %462 = OpVectorShuffle %v4int %461 %461 2 1 2 0 + OpStore %zyzx %462 + %464 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %465 = OpLoad %v3int %464 + %466 = OpVectorShuffle %v4int %465 %465 2 1 2 1 + OpStore %zyzy %466 + %468 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %469 = OpLoad %v3int %468 + %470 = OpVectorShuffle %v4int %469 %469 2 1 2 2 + OpStore %zyzz %470 + %472 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %473 = OpLoad %v3int %472 + %474 = OpVectorShuffle %v4int %473 %473 2 2 0 0 + OpStore %zzxx %474 + %476 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %477 = OpLoad %v3int %476 + %478 = OpVectorShuffle %v4int %477 %477 2 2 0 1 + OpStore %zzxy %478 + %480 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %481 = OpLoad %v3int %480 + %482 = OpVectorShuffle %v4int %481 %481 2 2 0 2 + OpStore %zzxz %482 + %484 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %485 = OpLoad %v3int %484 + %486 = OpVectorShuffle %v4int %485 %485 2 2 1 0 + OpStore %zzyx %486 + %488 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %489 = OpLoad %v3int %488 + %490 = OpVectorShuffle %v4int %489 %489 2 2 1 1 + OpStore %zzyy %490 + %492 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %493 = OpLoad %v3int %492 + %494 = OpVectorShuffle %v4int %493 %493 2 2 1 2 + OpStore %zzyz %494 + %496 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %497 = OpLoad %v3int %496 + %498 = OpVectorShuffle %v4int %497 %497 2 2 2 0 + OpStore %zzzx %498 + %500 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %501 = OpLoad %v3int %500 + %502 = OpVectorShuffle %v4int %501 %501 2 2 2 1 + OpStore %zzzy %502 + %504 = OpAccessChain %_ptr_Uniform_v3int %U %uint_0 + %505 = OpLoad %v3int %504 + %506 = OpVectorShuffle %v4int %505 %505 2 2 2 2 + OpStore %zzzz %506 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl new file mode 100644 index 0000000000..d174a70a66 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl @@ -0,0 +1,130 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl new file mode 100644 index 0000000000..358d13b1aa --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl @@ -0,0 +1,144 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.hlsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.hlsl new file mode 100644 index 0000000000..72d8077c21 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.hlsl @@ -0,0 +1,132 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +cbuffer cbuffer_U : register(b0, space0) { + uint4 U[1]; +}; + +void f() { + uint3 v = U[0].xyz; + uint x = U[0].x; + uint y = U[0].y; + uint z = U[0].z; + uint2 xx = U[0].xyz.xx; + uint2 xy = U[0].xyz.xy; + uint2 xz = U[0].xyz.xz; + uint2 yx = U[0].xyz.yx; + uint2 yy = U[0].xyz.yy; + uint2 yz = U[0].xyz.yz; + uint2 zx = U[0].xyz.zx; + uint2 zy = U[0].xyz.zy; + uint2 zz = U[0].xyz.zz; + uint3 xxx = U[0].xyz.xxx; + uint3 xxy = U[0].xyz.xxy; + uint3 xxz = U[0].xyz.xxz; + uint3 xyx = U[0].xyz.xyx; + uint3 xyy = U[0].xyz.xyy; + uint3 xyz = U[0].xyz.xyz; + uint3 xzx = U[0].xyz.xzx; + uint3 xzy = U[0].xyz.xzy; + uint3 xzz = U[0].xyz.xzz; + uint3 yxx = U[0].xyz.yxx; + uint3 yxy = U[0].xyz.yxy; + uint3 yxz = U[0].xyz.yxz; + uint3 yyx = U[0].xyz.yyx; + uint3 yyy = U[0].xyz.yyy; + uint3 yyz = U[0].xyz.yyz; + uint3 yzx = U[0].xyz.yzx; + uint3 yzy = U[0].xyz.yzy; + uint3 yzz = U[0].xyz.yzz; + uint3 zxx = U[0].xyz.zxx; + uint3 zxy = U[0].xyz.zxy; + uint3 zxz = U[0].xyz.zxz; + uint3 zyx = U[0].xyz.zyx; + uint3 zyy = U[0].xyz.zyy; + uint3 zyz = U[0].xyz.zyz; + uint3 zzx = U[0].xyz.zzx; + uint3 zzy = U[0].xyz.zzy; + uint3 zzz = U[0].xyz.zzz; + uint4 xxxx = U[0].xyz.xxxx; + uint4 xxxy = U[0].xyz.xxxy; + uint4 xxxz = U[0].xyz.xxxz; + uint4 xxyx = U[0].xyz.xxyx; + uint4 xxyy = U[0].xyz.xxyy; + uint4 xxyz = U[0].xyz.xxyz; + uint4 xxzx = U[0].xyz.xxzx; + uint4 xxzy = U[0].xyz.xxzy; + uint4 xxzz = U[0].xyz.xxzz; + uint4 xyxx = U[0].xyz.xyxx; + uint4 xyxy = U[0].xyz.xyxy; + uint4 xyxz = U[0].xyz.xyxz; + uint4 xyyx = U[0].xyz.xyyx; + uint4 xyyy = U[0].xyz.xyyy; + uint4 xyyz = U[0].xyz.xyyz; + uint4 xyzx = U[0].xyz.xyzx; + uint4 xyzy = U[0].xyz.xyzy; + uint4 xyzz = U[0].xyz.xyzz; + uint4 xzxx = U[0].xyz.xzxx; + uint4 xzxy = U[0].xyz.xzxy; + uint4 xzxz = U[0].xyz.xzxz; + uint4 xzyx = U[0].xyz.xzyx; + uint4 xzyy = U[0].xyz.xzyy; + uint4 xzyz = U[0].xyz.xzyz; + uint4 xzzx = U[0].xyz.xzzx; + uint4 xzzy = U[0].xyz.xzzy; + uint4 xzzz = U[0].xyz.xzzz; + uint4 yxxx = U[0].xyz.yxxx; + uint4 yxxy = U[0].xyz.yxxy; + uint4 yxxz = U[0].xyz.yxxz; + uint4 yxyx = U[0].xyz.yxyx; + uint4 yxyy = U[0].xyz.yxyy; + uint4 yxyz = U[0].xyz.yxyz; + uint4 yxzx = U[0].xyz.yxzx; + uint4 yxzy = U[0].xyz.yxzy; + uint4 yxzz = U[0].xyz.yxzz; + uint4 yyxx = U[0].xyz.yyxx; + uint4 yyxy = U[0].xyz.yyxy; + uint4 yyxz = U[0].xyz.yyxz; + uint4 yyyx = U[0].xyz.yyyx; + uint4 yyyy = U[0].xyz.yyyy; + uint4 yyyz = U[0].xyz.yyyz; + uint4 yyzx = U[0].xyz.yyzx; + uint4 yyzy = U[0].xyz.yyzy; + uint4 yyzz = U[0].xyz.yyzz; + uint4 yzxx = U[0].xyz.yzxx; + uint4 yzxy = U[0].xyz.yzxy; + uint4 yzxz = U[0].xyz.yzxz; + uint4 yzyx = U[0].xyz.yzyx; + uint4 yzyy = U[0].xyz.yzyy; + uint4 yzyz = U[0].xyz.yzyz; + uint4 yzzx = U[0].xyz.yzzx; + uint4 yzzy = U[0].xyz.yzzy; + uint4 yzzz = U[0].xyz.yzzz; + uint4 zxxx = U[0].xyz.zxxx; + uint4 zxxy = U[0].xyz.zxxy; + uint4 zxxz = U[0].xyz.zxxz; + uint4 zxyx = U[0].xyz.zxyx; + uint4 zxyy = U[0].xyz.zxyy; + uint4 zxyz = U[0].xyz.zxyz; + uint4 zxzx = U[0].xyz.zxzx; + uint4 zxzy = U[0].xyz.zxzy; + uint4 zxzz = U[0].xyz.zxzz; + uint4 zyxx = U[0].xyz.zyxx; + uint4 zyxy = U[0].xyz.zyxy; + uint4 zyxz = U[0].xyz.zyxz; + uint4 zyyx = U[0].xyz.zyyx; + uint4 zyyy = U[0].xyz.zyyy; + uint4 zyyz = U[0].xyz.zyyz; + uint4 zyzx = U[0].xyz.zyzx; + uint4 zyzy = U[0].xyz.zyzy; + uint4 zyzz = U[0].xyz.zyzz; + uint4 zzxx = U[0].xyz.zzxx; + uint4 zzxy = U[0].xyz.zzxy; + uint4 zzxz = U[0].xyz.zzxz; + uint4 zzyx = U[0].xyz.zzyx; + uint4 zzyy = U[0].xyz.zzyy; + uint4 zzyz = U[0].xyz.zzyz; + uint4 zzzx = U[0].xyz.zzzx; + uint4 zzzy = U[0].xyz.zzzy; + uint4 zzzz = U[0].xyz.zzzz; +} diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl new file mode 100644 index 0000000000..d3ff2d429e --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl @@ -0,0 +1,132 @@ +#include + +using namespace metal; +struct S { + /* 0x0000 */ packed_uint3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(constant S& U) { + uint3 v = U.v; + uint x = U.v[0]; + uint y = U.v[1]; + uint z = U.v[2]; + uint2 xx = uint3(U.v).xx; + uint2 xy = uint3(U.v).xy; + uint2 xz = uint3(U.v).xz; + uint2 yx = uint3(U.v).yx; + uint2 yy = uint3(U.v).yy; + uint2 yz = uint3(U.v).yz; + uint2 zx = uint3(U.v).zx; + uint2 zy = uint3(U.v).zy; + uint2 zz = uint3(U.v).zz; + uint3 xxx = uint3(U.v).xxx; + uint3 xxy = uint3(U.v).xxy; + uint3 xxz = uint3(U.v).xxz; + uint3 xyx = uint3(U.v).xyx; + uint3 xyy = uint3(U.v).xyy; + uint3 xyz = uint3(U.v).xyz; + uint3 xzx = uint3(U.v).xzx; + uint3 xzy = uint3(U.v).xzy; + uint3 xzz = uint3(U.v).xzz; + uint3 yxx = uint3(U.v).yxx; + uint3 yxy = uint3(U.v).yxy; + uint3 yxz = uint3(U.v).yxz; + uint3 yyx = uint3(U.v).yyx; + uint3 yyy = uint3(U.v).yyy; + uint3 yyz = uint3(U.v).yyz; + uint3 yzx = uint3(U.v).yzx; + uint3 yzy = uint3(U.v).yzy; + uint3 yzz = uint3(U.v).yzz; + uint3 zxx = uint3(U.v).zxx; + uint3 zxy = uint3(U.v).zxy; + uint3 zxz = uint3(U.v).zxz; + uint3 zyx = uint3(U.v).zyx; + uint3 zyy = uint3(U.v).zyy; + uint3 zyz = uint3(U.v).zyz; + uint3 zzx = uint3(U.v).zzx; + uint3 zzy = uint3(U.v).zzy; + uint3 zzz = uint3(U.v).zzz; + uint4 xxxx = uint3(U.v).xxxx; + uint4 xxxy = uint3(U.v).xxxy; + uint4 xxxz = uint3(U.v).xxxz; + uint4 xxyx = uint3(U.v).xxyx; + uint4 xxyy = uint3(U.v).xxyy; + uint4 xxyz = uint3(U.v).xxyz; + uint4 xxzx = uint3(U.v).xxzx; + uint4 xxzy = uint3(U.v).xxzy; + uint4 xxzz = uint3(U.v).xxzz; + uint4 xyxx = uint3(U.v).xyxx; + uint4 xyxy = uint3(U.v).xyxy; + uint4 xyxz = uint3(U.v).xyxz; + uint4 xyyx = uint3(U.v).xyyx; + uint4 xyyy = uint3(U.v).xyyy; + uint4 xyyz = uint3(U.v).xyyz; + uint4 xyzx = uint3(U.v).xyzx; + uint4 xyzy = uint3(U.v).xyzy; + uint4 xyzz = uint3(U.v).xyzz; + uint4 xzxx = uint3(U.v).xzxx; + uint4 xzxy = uint3(U.v).xzxy; + uint4 xzxz = uint3(U.v).xzxz; + uint4 xzyx = uint3(U.v).xzyx; + uint4 xzyy = uint3(U.v).xzyy; + uint4 xzyz = uint3(U.v).xzyz; + uint4 xzzx = uint3(U.v).xzzx; + uint4 xzzy = uint3(U.v).xzzy; + uint4 xzzz = uint3(U.v).xzzz; + uint4 yxxx = uint3(U.v).yxxx; + uint4 yxxy = uint3(U.v).yxxy; + uint4 yxxz = uint3(U.v).yxxz; + uint4 yxyx = uint3(U.v).yxyx; + uint4 yxyy = uint3(U.v).yxyy; + uint4 yxyz = uint3(U.v).yxyz; + uint4 yxzx = uint3(U.v).yxzx; + uint4 yxzy = uint3(U.v).yxzy; + uint4 yxzz = uint3(U.v).yxzz; + uint4 yyxx = uint3(U.v).yyxx; + uint4 yyxy = uint3(U.v).yyxy; + uint4 yyxz = uint3(U.v).yyxz; + uint4 yyyx = uint3(U.v).yyyx; + uint4 yyyy = uint3(U.v).yyyy; + uint4 yyyz = uint3(U.v).yyyz; + uint4 yyzx = uint3(U.v).yyzx; + uint4 yyzy = uint3(U.v).yyzy; + uint4 yyzz = uint3(U.v).yyzz; + uint4 yzxx = uint3(U.v).yzxx; + uint4 yzxy = uint3(U.v).yzxy; + uint4 yzxz = uint3(U.v).yzxz; + uint4 yzyx = uint3(U.v).yzyx; + uint4 yzyy = uint3(U.v).yzyy; + uint4 yzyz = uint3(U.v).yzyz; + uint4 yzzx = uint3(U.v).yzzx; + uint4 yzzy = uint3(U.v).yzzy; + uint4 yzzz = uint3(U.v).yzzz; + uint4 zxxx = uint3(U.v).zxxx; + uint4 zxxy = uint3(U.v).zxxy; + uint4 zxxz = uint3(U.v).zxxz; + uint4 zxyx = uint3(U.v).zxyx; + uint4 zxyy = uint3(U.v).zxyy; + uint4 zxyz = uint3(U.v).zxyz; + uint4 zxzx = uint3(U.v).zxzx; + uint4 zxzy = uint3(U.v).zxzy; + uint4 zxzz = uint3(U.v).zxzz; + uint4 zyxx = uint3(U.v).zyxx; + uint4 zyxy = uint3(U.v).zyxy; + uint4 zyxz = uint3(U.v).zyxz; + uint4 zyyx = uint3(U.v).zyyx; + uint4 zyyy = uint3(U.v).zyyy; + uint4 zyyz = uint3(U.v).zyyz; + uint4 zyzx = uint3(U.v).zyzx; + uint4 zyzy = uint3(U.v).zyzy; + uint4 zyzz = uint3(U.v).zyzz; + uint4 zzxx = uint3(U.v).zzxx; + uint4 zzxy = uint3(U.v).zzxy; + uint4 zzxz = uint3(U.v).zzxz; + uint4 zzyx = uint3(U.v).zzyx; + uint4 zzyy = uint3(U.v).zzyy; + uint4 zzyz = uint3(U.v).zzyz; + uint4 zzzx = uint3(U.v).zzzx; + uint4 zzzy = uint3(U.v).zzzy; + uint4 zzzz = uint3(U.v).zzzz; +} + diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.spvasm b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.spvasm new file mode 100644 index 0000000000..f38664db58 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.spvasm @@ -0,0 +1,771 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 507 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U NonWritable + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %S = OpTypeStruct %v3uint +%_ptr_Uniform_S = OpTypePointer Uniform %S + %U = OpVariable %_ptr_Uniform_S Uniform + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %18 = OpConstantNull %v3uint +%_ptr_Uniform_uint = OpTypePointer Uniform %uint +%_ptr_Function_uint = OpTypePointer Function %uint + %24 = OpConstantNull %uint + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2uint = OpTypeVector %uint 2 +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %39 = OpConstantNull %v2uint + %v4uint = OpTypeVector %uint 4 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %186 = OpConstantNull %v4uint +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %v = OpVariable %_ptr_Function_v3uint Function %18 + %x = OpVariable %_ptr_Function_uint Function %24 + %y = OpVariable %_ptr_Function_uint Function %24 + %z = OpVariable %_ptr_Function_uint Function %24 + %xx = OpVariable %_ptr_Function_v2uint Function %39 + %xy = OpVariable %_ptr_Function_v2uint Function %39 + %xz = OpVariable %_ptr_Function_v2uint Function %39 + %yx = OpVariable %_ptr_Function_v2uint Function %39 + %yy = OpVariable %_ptr_Function_v2uint Function %39 + %yz = OpVariable %_ptr_Function_v2uint Function %39 + %zx = OpVariable %_ptr_Function_v2uint Function %39 + %zy = OpVariable %_ptr_Function_v2uint Function %39 + %zz = OpVariable %_ptr_Function_v2uint Function %39 + %xxx = OpVariable %_ptr_Function_v3uint Function %18 + %xxy = OpVariable %_ptr_Function_v3uint Function %18 + %xxz = OpVariable %_ptr_Function_v3uint Function %18 + %xyx = OpVariable %_ptr_Function_v3uint Function %18 + %xyy = OpVariable %_ptr_Function_v3uint Function %18 + %xyz = OpVariable %_ptr_Function_v3uint Function %18 + %xzx = OpVariable %_ptr_Function_v3uint Function %18 + %xzy = OpVariable %_ptr_Function_v3uint Function %18 + %xzz = OpVariable %_ptr_Function_v3uint Function %18 + %yxx = OpVariable %_ptr_Function_v3uint Function %18 + %yxy = OpVariable %_ptr_Function_v3uint Function %18 + %yxz = OpVariable %_ptr_Function_v3uint Function %18 + %yyx = OpVariable %_ptr_Function_v3uint Function %18 + %yyy = OpVariable %_ptr_Function_v3uint Function %18 + %yyz = OpVariable %_ptr_Function_v3uint Function %18 + %yzx = OpVariable %_ptr_Function_v3uint Function %18 + %yzy = OpVariable %_ptr_Function_v3uint Function %18 + %yzz = OpVariable %_ptr_Function_v3uint Function %18 + %zxx = OpVariable %_ptr_Function_v3uint Function %18 + %zxy = OpVariable %_ptr_Function_v3uint Function %18 + %zxz = OpVariable %_ptr_Function_v3uint Function %18 + %zyx = OpVariable %_ptr_Function_v3uint Function %18 + %zyy = OpVariable %_ptr_Function_v3uint Function %18 + %zyz = OpVariable %_ptr_Function_v3uint Function %18 + %zzx = OpVariable %_ptr_Function_v3uint Function %18 + %zzy = OpVariable %_ptr_Function_v3uint Function %18 + %zzz = OpVariable %_ptr_Function_v3uint Function %18 + %xxxx = OpVariable %_ptr_Function_v4uint Function %186 + %xxxy = OpVariable %_ptr_Function_v4uint Function %186 + %xxxz = OpVariable %_ptr_Function_v4uint Function %186 + %xxyx = OpVariable %_ptr_Function_v4uint Function %186 + %xxyy = OpVariable %_ptr_Function_v4uint Function %186 + %xxyz = OpVariable %_ptr_Function_v4uint Function %186 + %xxzx = OpVariable %_ptr_Function_v4uint Function %186 + %xxzy = OpVariable %_ptr_Function_v4uint Function %186 + %xxzz = OpVariable %_ptr_Function_v4uint Function %186 + %xyxx = OpVariable %_ptr_Function_v4uint Function %186 + %xyxy = OpVariable %_ptr_Function_v4uint Function %186 + %xyxz = OpVariable %_ptr_Function_v4uint Function %186 + %xyyx = OpVariable %_ptr_Function_v4uint Function %186 + %xyyy = OpVariable %_ptr_Function_v4uint Function %186 + %xyyz = OpVariable %_ptr_Function_v4uint Function %186 + %xyzx = OpVariable %_ptr_Function_v4uint Function %186 + %xyzy = OpVariable %_ptr_Function_v4uint Function %186 + %xyzz = OpVariable %_ptr_Function_v4uint Function %186 + %xzxx = OpVariable %_ptr_Function_v4uint Function %186 + %xzxy = OpVariable %_ptr_Function_v4uint Function %186 + %xzxz = OpVariable %_ptr_Function_v4uint Function %186 + %xzyx = OpVariable %_ptr_Function_v4uint Function %186 + %xzyy = OpVariable %_ptr_Function_v4uint Function %186 + %xzyz = OpVariable %_ptr_Function_v4uint Function %186 + %xzzx = OpVariable %_ptr_Function_v4uint Function %186 + %xzzy = OpVariable %_ptr_Function_v4uint Function %186 + %xzzz = OpVariable %_ptr_Function_v4uint Function %186 + %yxxx = OpVariable %_ptr_Function_v4uint Function %186 + %yxxy = OpVariable %_ptr_Function_v4uint Function %186 + %yxxz = OpVariable %_ptr_Function_v4uint Function %186 + %yxyx = OpVariable %_ptr_Function_v4uint Function %186 + %yxyy = OpVariable %_ptr_Function_v4uint Function %186 + %yxyz = OpVariable %_ptr_Function_v4uint Function %186 + %yxzx = OpVariable %_ptr_Function_v4uint Function %186 + %yxzy = OpVariable %_ptr_Function_v4uint Function %186 + %yxzz = OpVariable %_ptr_Function_v4uint Function %186 + %yyxx = OpVariable %_ptr_Function_v4uint Function %186 + %yyxy = OpVariable %_ptr_Function_v4uint Function %186 + %yyxz = OpVariable %_ptr_Function_v4uint Function %186 + %yyyx = OpVariable %_ptr_Function_v4uint Function %186 + %yyyy = OpVariable %_ptr_Function_v4uint Function %186 + %yyyz = OpVariable %_ptr_Function_v4uint Function %186 + %yyzx = OpVariable %_ptr_Function_v4uint Function %186 + %yyzy = OpVariable %_ptr_Function_v4uint Function %186 + %yyzz = OpVariable %_ptr_Function_v4uint Function %186 + %yzxx = OpVariable %_ptr_Function_v4uint Function %186 + %yzxy = OpVariable %_ptr_Function_v4uint Function %186 + %yzxz = OpVariable %_ptr_Function_v4uint Function %186 + %yzyx = OpVariable %_ptr_Function_v4uint Function %186 + %yzyy = OpVariable %_ptr_Function_v4uint Function %186 + %yzyz = OpVariable %_ptr_Function_v4uint Function %186 + %yzzx = OpVariable %_ptr_Function_v4uint Function %186 + %yzzy = OpVariable %_ptr_Function_v4uint Function %186 + %yzzz = OpVariable %_ptr_Function_v4uint Function %186 + %zxxx = OpVariable %_ptr_Function_v4uint Function %186 + %zxxy = OpVariable %_ptr_Function_v4uint Function %186 + %zxxz = OpVariable %_ptr_Function_v4uint Function %186 + %zxyx = OpVariable %_ptr_Function_v4uint Function %186 + %zxyy = OpVariable %_ptr_Function_v4uint Function %186 + %zxyz = OpVariable %_ptr_Function_v4uint Function %186 + %zxzx = OpVariable %_ptr_Function_v4uint Function %186 + %zxzy = OpVariable %_ptr_Function_v4uint Function %186 + %zxzz = OpVariable %_ptr_Function_v4uint Function %186 + %zyxx = OpVariable %_ptr_Function_v4uint Function %186 + %zyxy = OpVariable %_ptr_Function_v4uint Function %186 + %zyxz = OpVariable %_ptr_Function_v4uint Function %186 + %zyyx = OpVariable %_ptr_Function_v4uint Function %186 + %zyyy = OpVariable %_ptr_Function_v4uint Function %186 + %zyyz = OpVariable %_ptr_Function_v4uint Function %186 + %zyzx = OpVariable %_ptr_Function_v4uint Function %186 + %zyzy = OpVariable %_ptr_Function_v4uint Function %186 + %zyzz = OpVariable %_ptr_Function_v4uint Function %186 + %zzxx = OpVariable %_ptr_Function_v4uint Function %186 + %zzxy = OpVariable %_ptr_Function_v4uint Function %186 + %zzxz = OpVariable %_ptr_Function_v4uint Function %186 + %zzyx = OpVariable %_ptr_Function_v4uint Function %186 + %zzyy = OpVariable %_ptr_Function_v4uint Function %186 + %zzyz = OpVariable %_ptr_Function_v4uint Function %186 + %zzzx = OpVariable %_ptr_Function_v4uint Function %186 + %zzzy = OpVariable %_ptr_Function_v4uint Function %186 + %zzzz = OpVariable %_ptr_Function_v4uint Function %186 + %14 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %15 = OpLoad %v3uint %14 + OpStore %v %15 + %20 = OpAccessChain %_ptr_Uniform_uint %U %uint_0 %uint_0 + %21 = OpLoad %uint %20 + OpStore %x %21 + %26 = OpAccessChain %_ptr_Uniform_uint %U %uint_0 %uint_1 + %27 = OpLoad %uint %26 + OpStore %y %27 + %30 = OpAccessChain %_ptr_Uniform_uint %U %uint_0 %uint_2 + %31 = OpLoad %uint %30 + OpStore %z %31 + %33 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %35 = OpLoad %v3uint %33 + %36 = OpVectorShuffle %v2uint %35 %35 0 0 + OpStore %xx %36 + %40 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %41 = OpLoad %v3uint %40 + %42 = OpVectorShuffle %v2uint %41 %41 0 1 + OpStore %xy %42 + %44 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %45 = OpLoad %v3uint %44 + %46 = OpVectorShuffle %v2uint %45 %45 0 2 + OpStore %xz %46 + %48 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %49 = OpLoad %v3uint %48 + %50 = OpVectorShuffle %v2uint %49 %49 1 0 + OpStore %yx %50 + %52 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %53 = OpLoad %v3uint %52 + %54 = OpVectorShuffle %v2uint %53 %53 1 1 + OpStore %yy %54 + %56 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %57 = OpLoad %v3uint %56 + %58 = OpVectorShuffle %v2uint %57 %57 1 2 + OpStore %yz %58 + %60 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %61 = OpLoad %v3uint %60 + %62 = OpVectorShuffle %v2uint %61 %61 2 0 + OpStore %zx %62 + %64 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %65 = OpLoad %v3uint %64 + %66 = OpVectorShuffle %v2uint %65 %65 2 1 + OpStore %zy %66 + %68 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %69 = OpLoad %v3uint %68 + %70 = OpVectorShuffle %v2uint %69 %69 2 2 + OpStore %zz %70 + %72 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %73 = OpLoad %v3uint %72 + %74 = OpVectorShuffle %v3uint %73 %73 0 0 0 + OpStore %xxx %74 + %76 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %77 = OpLoad %v3uint %76 + %78 = OpVectorShuffle %v3uint %77 %77 0 0 1 + OpStore %xxy %78 + %80 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %81 = OpLoad %v3uint %80 + %82 = OpVectorShuffle %v3uint %81 %81 0 0 2 + OpStore %xxz %82 + %84 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %85 = OpLoad %v3uint %84 + %86 = OpVectorShuffle %v3uint %85 %85 0 1 0 + OpStore %xyx %86 + %88 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %89 = OpLoad %v3uint %88 + %90 = OpVectorShuffle %v3uint %89 %89 0 1 1 + OpStore %xyy %90 + %92 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %93 = OpLoad %v3uint %92 + %94 = OpVectorShuffle %v3uint %93 %93 0 1 2 + OpStore %xyz %94 + %96 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %97 = OpLoad %v3uint %96 + %98 = OpVectorShuffle %v3uint %97 %97 0 2 0 + OpStore %xzx %98 + %100 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %101 = OpLoad %v3uint %100 + %102 = OpVectorShuffle %v3uint %101 %101 0 2 1 + OpStore %xzy %102 + %104 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %105 = OpLoad %v3uint %104 + %106 = OpVectorShuffle %v3uint %105 %105 0 2 2 + OpStore %xzz %106 + %108 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %109 = OpLoad %v3uint %108 + %110 = OpVectorShuffle %v3uint %109 %109 1 0 0 + OpStore %yxx %110 + %112 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %113 = OpLoad %v3uint %112 + %114 = OpVectorShuffle %v3uint %113 %113 1 0 1 + OpStore %yxy %114 + %116 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %117 = OpLoad %v3uint %116 + %118 = OpVectorShuffle %v3uint %117 %117 1 0 2 + OpStore %yxz %118 + %120 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %121 = OpLoad %v3uint %120 + %122 = OpVectorShuffle %v3uint %121 %121 1 1 0 + OpStore %yyx %122 + %124 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %125 = OpLoad %v3uint %124 + %126 = OpVectorShuffle %v3uint %125 %125 1 1 1 + OpStore %yyy %126 + %128 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %129 = OpLoad %v3uint %128 + %130 = OpVectorShuffle %v3uint %129 %129 1 1 2 + OpStore %yyz %130 + %132 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %133 = OpLoad %v3uint %132 + %134 = OpVectorShuffle %v3uint %133 %133 1 2 0 + OpStore %yzx %134 + %136 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %137 = OpLoad %v3uint %136 + %138 = OpVectorShuffle %v3uint %137 %137 1 2 1 + OpStore %yzy %138 + %140 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %141 = OpLoad %v3uint %140 + %142 = OpVectorShuffle %v3uint %141 %141 1 2 2 + OpStore %yzz %142 + %144 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %145 = OpLoad %v3uint %144 + %146 = OpVectorShuffle %v3uint %145 %145 2 0 0 + OpStore %zxx %146 + %148 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %149 = OpLoad %v3uint %148 + %150 = OpVectorShuffle %v3uint %149 %149 2 0 1 + OpStore %zxy %150 + %152 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %153 = OpLoad %v3uint %152 + %154 = OpVectorShuffle %v3uint %153 %153 2 0 2 + OpStore %zxz %154 + %156 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %157 = OpLoad %v3uint %156 + %158 = OpVectorShuffle %v3uint %157 %157 2 1 0 + OpStore %zyx %158 + %160 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %161 = OpLoad %v3uint %160 + %162 = OpVectorShuffle %v3uint %161 %161 2 1 1 + OpStore %zyy %162 + %164 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %165 = OpLoad %v3uint %164 + %166 = OpVectorShuffle %v3uint %165 %165 2 1 2 + OpStore %zyz %166 + %168 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %169 = OpLoad %v3uint %168 + %170 = OpVectorShuffle %v3uint %169 %169 2 2 0 + OpStore %zzx %170 + %172 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %173 = OpLoad %v3uint %172 + %174 = OpVectorShuffle %v3uint %173 %173 2 2 1 + OpStore %zzy %174 + %176 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %177 = OpLoad %v3uint %176 + %178 = OpVectorShuffle %v3uint %177 %177 2 2 2 + OpStore %zzz %178 + %180 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %182 = OpLoad %v3uint %180 + %183 = OpVectorShuffle %v4uint %182 %182 0 0 0 0 + OpStore %xxxx %183 + %187 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %188 = OpLoad %v3uint %187 + %189 = OpVectorShuffle %v4uint %188 %188 0 0 0 1 + OpStore %xxxy %189 + %191 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %192 = OpLoad %v3uint %191 + %193 = OpVectorShuffle %v4uint %192 %192 0 0 0 2 + OpStore %xxxz %193 + %195 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %196 = OpLoad %v3uint %195 + %197 = OpVectorShuffle %v4uint %196 %196 0 0 1 0 + OpStore %xxyx %197 + %199 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %200 = OpLoad %v3uint %199 + %201 = OpVectorShuffle %v4uint %200 %200 0 0 1 1 + OpStore %xxyy %201 + %203 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %204 = OpLoad %v3uint %203 + %205 = OpVectorShuffle %v4uint %204 %204 0 0 1 2 + OpStore %xxyz %205 + %207 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %208 = OpLoad %v3uint %207 + %209 = OpVectorShuffle %v4uint %208 %208 0 0 2 0 + OpStore %xxzx %209 + %211 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %212 = OpLoad %v3uint %211 + %213 = OpVectorShuffle %v4uint %212 %212 0 0 2 1 + OpStore %xxzy %213 + %215 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %216 = OpLoad %v3uint %215 + %217 = OpVectorShuffle %v4uint %216 %216 0 0 2 2 + OpStore %xxzz %217 + %219 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %220 = OpLoad %v3uint %219 + %221 = OpVectorShuffle %v4uint %220 %220 0 1 0 0 + OpStore %xyxx %221 + %223 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %224 = OpLoad %v3uint %223 + %225 = OpVectorShuffle %v4uint %224 %224 0 1 0 1 + OpStore %xyxy %225 + %227 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %228 = OpLoad %v3uint %227 + %229 = OpVectorShuffle %v4uint %228 %228 0 1 0 2 + OpStore %xyxz %229 + %231 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %232 = OpLoad %v3uint %231 + %233 = OpVectorShuffle %v4uint %232 %232 0 1 1 0 + OpStore %xyyx %233 + %235 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %236 = OpLoad %v3uint %235 + %237 = OpVectorShuffle %v4uint %236 %236 0 1 1 1 + OpStore %xyyy %237 + %239 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %240 = OpLoad %v3uint %239 + %241 = OpVectorShuffle %v4uint %240 %240 0 1 1 2 + OpStore %xyyz %241 + %243 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %244 = OpLoad %v3uint %243 + %245 = OpVectorShuffle %v4uint %244 %244 0 1 2 0 + OpStore %xyzx %245 + %247 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %248 = OpLoad %v3uint %247 + %249 = OpVectorShuffle %v4uint %248 %248 0 1 2 1 + OpStore %xyzy %249 + %251 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %252 = OpLoad %v3uint %251 + %253 = OpVectorShuffle %v4uint %252 %252 0 1 2 2 + OpStore %xyzz %253 + %255 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %256 = OpLoad %v3uint %255 + %257 = OpVectorShuffle %v4uint %256 %256 0 2 0 0 + OpStore %xzxx %257 + %259 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %260 = OpLoad %v3uint %259 + %261 = OpVectorShuffle %v4uint %260 %260 0 2 0 1 + OpStore %xzxy %261 + %263 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %264 = OpLoad %v3uint %263 + %265 = OpVectorShuffle %v4uint %264 %264 0 2 0 2 + OpStore %xzxz %265 + %267 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %268 = OpLoad %v3uint %267 + %269 = OpVectorShuffle %v4uint %268 %268 0 2 1 0 + OpStore %xzyx %269 + %271 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %272 = OpLoad %v3uint %271 + %273 = OpVectorShuffle %v4uint %272 %272 0 2 1 1 + OpStore %xzyy %273 + %275 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %276 = OpLoad %v3uint %275 + %277 = OpVectorShuffle %v4uint %276 %276 0 2 1 2 + OpStore %xzyz %277 + %279 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %280 = OpLoad %v3uint %279 + %281 = OpVectorShuffle %v4uint %280 %280 0 2 2 0 + OpStore %xzzx %281 + %283 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %284 = OpLoad %v3uint %283 + %285 = OpVectorShuffle %v4uint %284 %284 0 2 2 1 + OpStore %xzzy %285 + %287 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %288 = OpLoad %v3uint %287 + %289 = OpVectorShuffle %v4uint %288 %288 0 2 2 2 + OpStore %xzzz %289 + %291 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %292 = OpLoad %v3uint %291 + %293 = OpVectorShuffle %v4uint %292 %292 1 0 0 0 + OpStore %yxxx %293 + %295 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %296 = OpLoad %v3uint %295 + %297 = OpVectorShuffle %v4uint %296 %296 1 0 0 1 + OpStore %yxxy %297 + %299 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %300 = OpLoad %v3uint %299 + %301 = OpVectorShuffle %v4uint %300 %300 1 0 0 2 + OpStore %yxxz %301 + %303 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %304 = OpLoad %v3uint %303 + %305 = OpVectorShuffle %v4uint %304 %304 1 0 1 0 + OpStore %yxyx %305 + %307 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %308 = OpLoad %v3uint %307 + %309 = OpVectorShuffle %v4uint %308 %308 1 0 1 1 + OpStore %yxyy %309 + %311 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %312 = OpLoad %v3uint %311 + %313 = OpVectorShuffle %v4uint %312 %312 1 0 1 2 + OpStore %yxyz %313 + %315 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %316 = OpLoad %v3uint %315 + %317 = OpVectorShuffle %v4uint %316 %316 1 0 2 0 + OpStore %yxzx %317 + %319 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %320 = OpLoad %v3uint %319 + %321 = OpVectorShuffle %v4uint %320 %320 1 0 2 1 + OpStore %yxzy %321 + %323 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %324 = OpLoad %v3uint %323 + %325 = OpVectorShuffle %v4uint %324 %324 1 0 2 2 + OpStore %yxzz %325 + %327 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %328 = OpLoad %v3uint %327 + %329 = OpVectorShuffle %v4uint %328 %328 1 1 0 0 + OpStore %yyxx %329 + %331 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %332 = OpLoad %v3uint %331 + %333 = OpVectorShuffle %v4uint %332 %332 1 1 0 1 + OpStore %yyxy %333 + %335 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %336 = OpLoad %v3uint %335 + %337 = OpVectorShuffle %v4uint %336 %336 1 1 0 2 + OpStore %yyxz %337 + %339 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %340 = OpLoad %v3uint %339 + %341 = OpVectorShuffle %v4uint %340 %340 1 1 1 0 + OpStore %yyyx %341 + %343 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %344 = OpLoad %v3uint %343 + %345 = OpVectorShuffle %v4uint %344 %344 1 1 1 1 + OpStore %yyyy %345 + %347 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %348 = OpLoad %v3uint %347 + %349 = OpVectorShuffle %v4uint %348 %348 1 1 1 2 + OpStore %yyyz %349 + %351 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %352 = OpLoad %v3uint %351 + %353 = OpVectorShuffle %v4uint %352 %352 1 1 2 0 + OpStore %yyzx %353 + %355 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %356 = OpLoad %v3uint %355 + %357 = OpVectorShuffle %v4uint %356 %356 1 1 2 1 + OpStore %yyzy %357 + %359 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %360 = OpLoad %v3uint %359 + %361 = OpVectorShuffle %v4uint %360 %360 1 1 2 2 + OpStore %yyzz %361 + %363 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %364 = OpLoad %v3uint %363 + %365 = OpVectorShuffle %v4uint %364 %364 1 2 0 0 + OpStore %yzxx %365 + %367 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %368 = OpLoad %v3uint %367 + %369 = OpVectorShuffle %v4uint %368 %368 1 2 0 1 + OpStore %yzxy %369 + %371 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %372 = OpLoad %v3uint %371 + %373 = OpVectorShuffle %v4uint %372 %372 1 2 0 2 + OpStore %yzxz %373 + %375 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %376 = OpLoad %v3uint %375 + %377 = OpVectorShuffle %v4uint %376 %376 1 2 1 0 + OpStore %yzyx %377 + %379 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %380 = OpLoad %v3uint %379 + %381 = OpVectorShuffle %v4uint %380 %380 1 2 1 1 + OpStore %yzyy %381 + %383 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %384 = OpLoad %v3uint %383 + %385 = OpVectorShuffle %v4uint %384 %384 1 2 1 2 + OpStore %yzyz %385 + %387 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %388 = OpLoad %v3uint %387 + %389 = OpVectorShuffle %v4uint %388 %388 1 2 2 0 + OpStore %yzzx %389 + %391 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %392 = OpLoad %v3uint %391 + %393 = OpVectorShuffle %v4uint %392 %392 1 2 2 1 + OpStore %yzzy %393 + %395 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %396 = OpLoad %v3uint %395 + %397 = OpVectorShuffle %v4uint %396 %396 1 2 2 2 + OpStore %yzzz %397 + %399 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %400 = OpLoad %v3uint %399 + %401 = OpVectorShuffle %v4uint %400 %400 2 0 0 0 + OpStore %zxxx %401 + %403 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %404 = OpLoad %v3uint %403 + %405 = OpVectorShuffle %v4uint %404 %404 2 0 0 1 + OpStore %zxxy %405 + %407 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %408 = OpLoad %v3uint %407 + %409 = OpVectorShuffle %v4uint %408 %408 2 0 0 2 + OpStore %zxxz %409 + %411 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %412 = OpLoad %v3uint %411 + %413 = OpVectorShuffle %v4uint %412 %412 2 0 1 0 + OpStore %zxyx %413 + %415 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %416 = OpLoad %v3uint %415 + %417 = OpVectorShuffle %v4uint %416 %416 2 0 1 1 + OpStore %zxyy %417 + %419 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %420 = OpLoad %v3uint %419 + %421 = OpVectorShuffle %v4uint %420 %420 2 0 1 2 + OpStore %zxyz %421 + %423 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %424 = OpLoad %v3uint %423 + %425 = OpVectorShuffle %v4uint %424 %424 2 0 2 0 + OpStore %zxzx %425 + %427 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %428 = OpLoad %v3uint %427 + %429 = OpVectorShuffle %v4uint %428 %428 2 0 2 1 + OpStore %zxzy %429 + %431 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %432 = OpLoad %v3uint %431 + %433 = OpVectorShuffle %v4uint %432 %432 2 0 2 2 + OpStore %zxzz %433 + %435 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %436 = OpLoad %v3uint %435 + %437 = OpVectorShuffle %v4uint %436 %436 2 1 0 0 + OpStore %zyxx %437 + %439 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %440 = OpLoad %v3uint %439 + %441 = OpVectorShuffle %v4uint %440 %440 2 1 0 1 + OpStore %zyxy %441 + %443 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %444 = OpLoad %v3uint %443 + %445 = OpVectorShuffle %v4uint %444 %444 2 1 0 2 + OpStore %zyxz %445 + %447 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %448 = OpLoad %v3uint %447 + %449 = OpVectorShuffle %v4uint %448 %448 2 1 1 0 + OpStore %zyyx %449 + %451 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %452 = OpLoad %v3uint %451 + %453 = OpVectorShuffle %v4uint %452 %452 2 1 1 1 + OpStore %zyyy %453 + %455 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %456 = OpLoad %v3uint %455 + %457 = OpVectorShuffle %v4uint %456 %456 2 1 1 2 + OpStore %zyyz %457 + %459 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %460 = OpLoad %v3uint %459 + %461 = OpVectorShuffle %v4uint %460 %460 2 1 2 0 + OpStore %zyzx %461 + %463 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %464 = OpLoad %v3uint %463 + %465 = OpVectorShuffle %v4uint %464 %464 2 1 2 1 + OpStore %zyzy %465 + %467 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %468 = OpLoad %v3uint %467 + %469 = OpVectorShuffle %v4uint %468 %468 2 1 2 2 + OpStore %zyzz %469 + %471 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %472 = OpLoad %v3uint %471 + %473 = OpVectorShuffle %v4uint %472 %472 2 2 0 0 + OpStore %zzxx %473 + %475 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %476 = OpLoad %v3uint %475 + %477 = OpVectorShuffle %v4uint %476 %476 2 2 0 1 + OpStore %zzxy %477 + %479 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %480 = OpLoad %v3uint %479 + %481 = OpVectorShuffle %v4uint %480 %480 2 2 0 2 + OpStore %zzxz %481 + %483 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %484 = OpLoad %v3uint %483 + %485 = OpVectorShuffle %v4uint %484 %484 2 2 1 0 + OpStore %zzyx %485 + %487 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %488 = OpLoad %v3uint %487 + %489 = OpVectorShuffle %v4uint %488 %488 2 2 1 1 + OpStore %zzyy %489 + %491 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %492 = OpLoad %v3uint %491 + %493 = OpVectorShuffle %v4uint %492 %492 2 2 1 2 + OpStore %zzyz %493 + %495 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %496 = OpLoad %v3uint %495 + %497 = OpVectorShuffle %v4uint %496 %496 2 2 2 0 + OpStore %zzzx %497 + %499 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %500 = OpLoad %v3uint %499 + %501 = OpVectorShuffle %v4uint %500 %500 2 2 2 1 + OpStore %zzzy %501 + %503 = OpAccessChain %_ptr_Uniform_v3uint %U %uint_0 + %504 = OpLoad %v3uint %503 + %505 = OpVectorShuffle %v4uint %504 %504 2 2 2 2 + OpStore %zzzz %505 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl new file mode 100644 index 0000000000..96b7263891 --- /dev/null +++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl @@ -0,0 +1,130 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + var v = U.v; + var x = U.v.x; + var y = U.v.y; + var z = U.v.z; + var xx = U.v.xx; + var xy = U.v.xy; + var xz = U.v.xz; + var yx = U.v.yx; + var yy = U.v.yy; + var yz = U.v.yz; + var zx = U.v.zx; + var zy = U.v.zy; + var zz = U.v.zz; + var xxx = U.v.xxx; + var xxy = U.v.xxy; + var xxz = U.v.xxz; + var xyx = U.v.xyx; + var xyy = U.v.xyy; + var xyz = U.v.xyz; + var xzx = U.v.xzx; + var xzy = U.v.xzy; + var xzz = U.v.xzz; + var yxx = U.v.yxx; + var yxy = U.v.yxy; + var yxz = U.v.yxz; + var yyx = U.v.yyx; + var yyy = U.v.yyy; + var yyz = U.v.yyz; + var yzx = U.v.yzx; + var yzy = U.v.yzy; + var yzz = U.v.yzz; + var zxx = U.v.zxx; + var zxy = U.v.zxy; + var zxz = U.v.zxz; + var zyx = U.v.zyx; + var zyy = U.v.zyy; + var zyz = U.v.zyz; + var zzx = U.v.zzx; + var zzy = U.v.zzy; + var zzz = U.v.zzz; + var xxxx = U.v.xxxx; + var xxxy = U.v.xxxy; + var xxxz = U.v.xxxz; + var xxyx = U.v.xxyx; + var xxyy = U.v.xxyy; + var xxyz = U.v.xxyz; + var xxzx = U.v.xxzx; + var xxzy = U.v.xxzy; + var xxzz = U.v.xxzz; + var xyxx = U.v.xyxx; + var xyxy = U.v.xyxy; + var xyxz = U.v.xyxz; + var xyyx = U.v.xyyx; + var xyyy = U.v.xyyy; + var xyyz = U.v.xyyz; + var xyzx = U.v.xyzx; + var xyzy = U.v.xyzy; + var xyzz = U.v.xyzz; + var xzxx = U.v.xzxx; + var xzxy = U.v.xzxy; + var xzxz = U.v.xzxz; + var xzyx = U.v.xzyx; + var xzyy = U.v.xzyy; + var xzyz = U.v.xzyz; + var xzzx = U.v.xzzx; + var xzzy = U.v.xzzy; + var xzzz = U.v.xzzz; + var yxxx = U.v.yxxx; + var yxxy = U.v.yxxy; + var yxxz = U.v.yxxz; + var yxyx = U.v.yxyx; + var yxyy = U.v.yxyy; + var yxyz = U.v.yxyz; + var yxzx = U.v.yxzx; + var yxzy = U.v.yxzy; + var yxzz = U.v.yxzz; + var yyxx = U.v.yyxx; + var yyxy = U.v.yyxy; + var yyxz = U.v.yyxz; + var yyyx = U.v.yyyx; + var yyyy = U.v.yyyy; + var yyyz = U.v.yyyz; + var yyzx = U.v.yyzx; + var yyzy = U.v.yyzy; + var yyzz = U.v.yyzz; + var yzxx = U.v.yzxx; + var yzxy = U.v.yzxy; + var yzxz = U.v.yzxz; + var yzyx = U.v.yzyx; + var yzyy = U.v.yzyy; + var yzyz = U.v.yzyz; + var yzzx = U.v.yzzx; + var yzzy = U.v.yzzy; + var yzzz = U.v.yzzz; + var zxxx = U.v.zxxx; + var zxxy = U.v.zxxy; + var zxxz = U.v.zxxz; + var zxyx = U.v.zxyx; + var zxyy = U.v.zxyy; + var zxyz = U.v.zxyz; + var zxzx = U.v.zxzx; + var zxzy = U.v.zxzy; + var zxzz = U.v.zxzz; + var zyxx = U.v.zyxx; + var zyxy = U.v.zyxy; + var zyxz = U.v.zyxz; + var zyyx = U.v.zyyx; + var zyyy = U.v.zyyy; + var zyyz = U.v.zyyz; + var zyzx = U.v.zyzx; + var zyzy = U.v.zyzy; + var zyzz = U.v.zyzz; + var zzxx = U.v.zzxx; + var zzxy = U.v.zzxy; + var zzxz = U.v.zzxz; + var zzyx = U.v.zzyx; + var zzyy = U.v.zzyy; + var zzyz = U.v.zzyz; + var zzzx = U.v.zzzx; + var zzzy = U.v.zzzy; + var zzzz = U.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl b/test/expressions/swizzle/read/vec3/f32.wgsl new file mode 100644 index 0000000000..77a78f0f56 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/f32.wgsl @@ -0,0 +1,143 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.hlsl b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.hlsl new file mode 100644 index 0000000000..9f65e9211d --- /dev/null +++ b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.hlsl @@ -0,0 +1,134 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + float3 v; +}; + +static S P = (S)0; + +void f() { + float3 v = P.v; + float x = P.v.x; + float y = P.v.y; + float z = P.v.z; + float2 xx = P.v.xx; + float2 xy = P.v.xy; + float2 xz = P.v.xz; + float2 yx = P.v.yx; + float2 yy = P.v.yy; + float2 yz = P.v.yz; + float2 zx = P.v.zx; + float2 zy = P.v.zy; + float2 zz = P.v.zz; + float3 xxx = P.v.xxx; + float3 xxy = P.v.xxy; + float3 xxz = P.v.xxz; + float3 xyx = P.v.xyx; + float3 xyy = P.v.xyy; + float3 xyz = P.v.xyz; + float3 xzx = P.v.xzx; + float3 xzy = P.v.xzy; + float3 xzz = P.v.xzz; + float3 yxx = P.v.yxx; + float3 yxy = P.v.yxy; + float3 yxz = P.v.yxz; + float3 yyx = P.v.yyx; + float3 yyy = P.v.yyy; + float3 yyz = P.v.yyz; + float3 yzx = P.v.yzx; + float3 yzy = P.v.yzy; + float3 yzz = P.v.yzz; + float3 zxx = P.v.zxx; + float3 zxy = P.v.zxy; + float3 zxz = P.v.zxz; + float3 zyx = P.v.zyx; + float3 zyy = P.v.zyy; + float3 zyz = P.v.zyz; + float3 zzx = P.v.zzx; + float3 zzy = P.v.zzy; + float3 zzz = P.v.zzz; + float4 xxxx = P.v.xxxx; + float4 xxxy = P.v.xxxy; + float4 xxxz = P.v.xxxz; + float4 xxyx = P.v.xxyx; + float4 xxyy = P.v.xxyy; + float4 xxyz = P.v.xxyz; + float4 xxzx = P.v.xxzx; + float4 xxzy = P.v.xxzy; + float4 xxzz = P.v.xxzz; + float4 xyxx = P.v.xyxx; + float4 xyxy = P.v.xyxy; + float4 xyxz = P.v.xyxz; + float4 xyyx = P.v.xyyx; + float4 xyyy = P.v.xyyy; + float4 xyyz = P.v.xyyz; + float4 xyzx = P.v.xyzx; + float4 xyzy = P.v.xyzy; + float4 xyzz = P.v.xyzz; + float4 xzxx = P.v.xzxx; + float4 xzxy = P.v.xzxy; + float4 xzxz = P.v.xzxz; + float4 xzyx = P.v.xzyx; + float4 xzyy = P.v.xzyy; + float4 xzyz = P.v.xzyz; + float4 xzzx = P.v.xzzx; + float4 xzzy = P.v.xzzy; + float4 xzzz = P.v.xzzz; + float4 yxxx = P.v.yxxx; + float4 yxxy = P.v.yxxy; + float4 yxxz = P.v.yxxz; + float4 yxyx = P.v.yxyx; + float4 yxyy = P.v.yxyy; + float4 yxyz = P.v.yxyz; + float4 yxzx = P.v.yxzx; + float4 yxzy = P.v.yxzy; + float4 yxzz = P.v.yxzz; + float4 yyxx = P.v.yyxx; + float4 yyxy = P.v.yyxy; + float4 yyxz = P.v.yyxz; + float4 yyyx = P.v.yyyx; + float4 yyyy = P.v.yyyy; + float4 yyyz = P.v.yyyz; + float4 yyzx = P.v.yyzx; + float4 yyzy = P.v.yyzy; + float4 yyzz = P.v.yyzz; + float4 yzxx = P.v.yzxx; + float4 yzxy = P.v.yzxy; + float4 yzxz = P.v.yzxz; + float4 yzyx = P.v.yzyx; + float4 yzyy = P.v.yzyy; + float4 yzyz = P.v.yzyz; + float4 yzzx = P.v.yzzx; + float4 yzzy = P.v.yzzy; + float4 yzzz = P.v.yzzz; + float4 zxxx = P.v.zxxx; + float4 zxxy = P.v.zxxy; + float4 zxxz = P.v.zxxz; + float4 zxyx = P.v.zxyx; + float4 zxyy = P.v.zxyy; + float4 zxyz = P.v.zxyz; + float4 zxzx = P.v.zxzx; + float4 zxzy = P.v.zxzy; + float4 zxzz = P.v.zxzz; + float4 zyxx = P.v.zyxx; + float4 zyxy = P.v.zyxy; + float4 zyxz = P.v.zyxz; + float4 zyyx = P.v.zyyx; + float4 zyyy = P.v.zyyy; + float4 zyyz = P.v.zyyz; + float4 zyzx = P.v.zyzx; + float4 zyzy = P.v.zyzy; + float4 zyzz = P.v.zyzz; + float4 zzxx = P.v.zzxx; + float4 zzxy = P.v.zzxy; + float4 zzxz = P.v.zzxz; + float4 zzyx = P.v.zzyx; + float4 zzyy = P.v.zzyy; + float4 zzyz = P.v.zzyz; + float4 zzzx = P.v.zzzx; + float4 zzzy = P.v.zzzy; + float4 zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.msl new file mode 100644 index 0000000000..85b1790824 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.msl @@ -0,0 +1,131 @@ +#include + +using namespace metal; +struct S { + float3 v; +}; + +void f(thread S* const tint_symbol) { + float3 v = (*(tint_symbol)).v; + float x = (*(tint_symbol)).v[0]; + float y = (*(tint_symbol)).v[1]; + float z = (*(tint_symbol)).v[2]; + float2 xx = float3((*(tint_symbol)).v).xx; + float2 xy = float3((*(tint_symbol)).v).xy; + float2 xz = float3((*(tint_symbol)).v).xz; + float2 yx = float3((*(tint_symbol)).v).yx; + float2 yy = float3((*(tint_symbol)).v).yy; + float2 yz = float3((*(tint_symbol)).v).yz; + float2 zx = float3((*(tint_symbol)).v).zx; + float2 zy = float3((*(tint_symbol)).v).zy; + float2 zz = float3((*(tint_symbol)).v).zz; + float3 xxx = float3((*(tint_symbol)).v).xxx; + float3 xxy = float3((*(tint_symbol)).v).xxy; + float3 xxz = float3((*(tint_symbol)).v).xxz; + float3 xyx = float3((*(tint_symbol)).v).xyx; + float3 xyy = float3((*(tint_symbol)).v).xyy; + float3 xyz = float3((*(tint_symbol)).v).xyz; + float3 xzx = float3((*(tint_symbol)).v).xzx; + float3 xzy = float3((*(tint_symbol)).v).xzy; + float3 xzz = float3((*(tint_symbol)).v).xzz; + float3 yxx = float3((*(tint_symbol)).v).yxx; + float3 yxy = float3((*(tint_symbol)).v).yxy; + float3 yxz = float3((*(tint_symbol)).v).yxz; + float3 yyx = float3((*(tint_symbol)).v).yyx; + float3 yyy = float3((*(tint_symbol)).v).yyy; + float3 yyz = float3((*(tint_symbol)).v).yyz; + float3 yzx = float3((*(tint_symbol)).v).yzx; + float3 yzy = float3((*(tint_symbol)).v).yzy; + float3 yzz = float3((*(tint_symbol)).v).yzz; + float3 zxx = float3((*(tint_symbol)).v).zxx; + float3 zxy = float3((*(tint_symbol)).v).zxy; + float3 zxz = float3((*(tint_symbol)).v).zxz; + float3 zyx = float3((*(tint_symbol)).v).zyx; + float3 zyy = float3((*(tint_symbol)).v).zyy; + float3 zyz = float3((*(tint_symbol)).v).zyz; + float3 zzx = float3((*(tint_symbol)).v).zzx; + float3 zzy = float3((*(tint_symbol)).v).zzy; + float3 zzz = float3((*(tint_symbol)).v).zzz; + float4 xxxx = float3((*(tint_symbol)).v).xxxx; + float4 xxxy = float3((*(tint_symbol)).v).xxxy; + float4 xxxz = float3((*(tint_symbol)).v).xxxz; + float4 xxyx = float3((*(tint_symbol)).v).xxyx; + float4 xxyy = float3((*(tint_symbol)).v).xxyy; + float4 xxyz = float3((*(tint_symbol)).v).xxyz; + float4 xxzx = float3((*(tint_symbol)).v).xxzx; + float4 xxzy = float3((*(tint_symbol)).v).xxzy; + float4 xxzz = float3((*(tint_symbol)).v).xxzz; + float4 xyxx = float3((*(tint_symbol)).v).xyxx; + float4 xyxy = float3((*(tint_symbol)).v).xyxy; + float4 xyxz = float3((*(tint_symbol)).v).xyxz; + float4 xyyx = float3((*(tint_symbol)).v).xyyx; + float4 xyyy = float3((*(tint_symbol)).v).xyyy; + float4 xyyz = float3((*(tint_symbol)).v).xyyz; + float4 xyzx = float3((*(tint_symbol)).v).xyzx; + float4 xyzy = float3((*(tint_symbol)).v).xyzy; + float4 xyzz = float3((*(tint_symbol)).v).xyzz; + float4 xzxx = float3((*(tint_symbol)).v).xzxx; + float4 xzxy = float3((*(tint_symbol)).v).xzxy; + float4 xzxz = float3((*(tint_symbol)).v).xzxz; + float4 xzyx = float3((*(tint_symbol)).v).xzyx; + float4 xzyy = float3((*(tint_symbol)).v).xzyy; + float4 xzyz = float3((*(tint_symbol)).v).xzyz; + float4 xzzx = float3((*(tint_symbol)).v).xzzx; + float4 xzzy = float3((*(tint_symbol)).v).xzzy; + float4 xzzz = float3((*(tint_symbol)).v).xzzz; + float4 yxxx = float3((*(tint_symbol)).v).yxxx; + float4 yxxy = float3((*(tint_symbol)).v).yxxy; + float4 yxxz = float3((*(tint_symbol)).v).yxxz; + float4 yxyx = float3((*(tint_symbol)).v).yxyx; + float4 yxyy = float3((*(tint_symbol)).v).yxyy; + float4 yxyz = float3((*(tint_symbol)).v).yxyz; + float4 yxzx = float3((*(tint_symbol)).v).yxzx; + float4 yxzy = float3((*(tint_symbol)).v).yxzy; + float4 yxzz = float3((*(tint_symbol)).v).yxzz; + float4 yyxx = float3((*(tint_symbol)).v).yyxx; + float4 yyxy = float3((*(tint_symbol)).v).yyxy; + float4 yyxz = float3((*(tint_symbol)).v).yyxz; + float4 yyyx = float3((*(tint_symbol)).v).yyyx; + float4 yyyy = float3((*(tint_symbol)).v).yyyy; + float4 yyyz = float3((*(tint_symbol)).v).yyyz; + float4 yyzx = float3((*(tint_symbol)).v).yyzx; + float4 yyzy = float3((*(tint_symbol)).v).yyzy; + float4 yyzz = float3((*(tint_symbol)).v).yyzz; + float4 yzxx = float3((*(tint_symbol)).v).yzxx; + float4 yzxy = float3((*(tint_symbol)).v).yzxy; + float4 yzxz = float3((*(tint_symbol)).v).yzxz; + float4 yzyx = float3((*(tint_symbol)).v).yzyx; + float4 yzyy = float3((*(tint_symbol)).v).yzyy; + float4 yzyz = float3((*(tint_symbol)).v).yzyz; + float4 yzzx = float3((*(tint_symbol)).v).yzzx; + float4 yzzy = float3((*(tint_symbol)).v).yzzy; + float4 yzzz = float3((*(tint_symbol)).v).yzzz; + float4 zxxx = float3((*(tint_symbol)).v).zxxx; + float4 zxxy = float3((*(tint_symbol)).v).zxxy; + float4 zxxz = float3((*(tint_symbol)).v).zxxz; + float4 zxyx = float3((*(tint_symbol)).v).zxyx; + float4 zxyy = float3((*(tint_symbol)).v).zxyy; + float4 zxyz = float3((*(tint_symbol)).v).zxyz; + float4 zxzx = float3((*(tint_symbol)).v).zxzx; + float4 zxzy = float3((*(tint_symbol)).v).zxzy; + float4 zxzz = float3((*(tint_symbol)).v).zxzz; + float4 zyxx = float3((*(tint_symbol)).v).zyxx; + float4 zyxy = float3((*(tint_symbol)).v).zyxy; + float4 zyxz = float3((*(tint_symbol)).v).zyxz; + float4 zyyx = float3((*(tint_symbol)).v).zyyx; + float4 zyyy = float3((*(tint_symbol)).v).zyyy; + float4 zyyz = float3((*(tint_symbol)).v).zyyz; + float4 zyzx = float3((*(tint_symbol)).v).zyzx; + float4 zyzy = float3((*(tint_symbol)).v).zyzy; + float4 zyzz = float3((*(tint_symbol)).v).zyzz; + float4 zzxx = float3((*(tint_symbol)).v).zzxx; + float4 zzxy = float3((*(tint_symbol)).v).zzxy; + float4 zzxz = float3((*(tint_symbol)).v).zzxz; + float4 zzyx = float3((*(tint_symbol)).v).zzyx; + float4 zzyy = float3((*(tint_symbol)).v).zzyy; + float4 zzyz = float3((*(tint_symbol)).v).zzyz; + float4 zzzx = float3((*(tint_symbol)).v).zzzx; + float4 zzzy = float3((*(tint_symbol)).v).zzzy; + float4 zzzz = float3((*(tint_symbol)).v).zzzz; +} + diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.spvasm b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.spvasm new file mode 100644 index 0000000000..ec1ce6ae07 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.spvasm @@ -0,0 +1,769 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 509 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpMemberDecorate %S 0 Offset 0 + %float = OpTypeFloat 32 + %v3float = OpTypeVector %float 3 + %S = OpTypeStruct %v3float +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3float = OpTypePointer Private %v3float +%_ptr_Function_v3float = OpTypePointer Function %v3float + %20 = OpConstantNull %v3float +%_ptr_Private_float = OpTypePointer Private %float +%_ptr_Function_float = OpTypePointer Function %float + %26 = OpConstantNull %float + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2float = OpTypeVector %float 2 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %41 = OpConstantNull %v2float + %v4float = OpTypeVector %float 4 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %188 = OpConstantNull %v4float +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %v = OpVariable %_ptr_Function_v3float Function %20 + %x = OpVariable %_ptr_Function_float Function %26 + %y = OpVariable %_ptr_Function_float Function %26 + %z = OpVariable %_ptr_Function_float Function %26 + %xx = OpVariable %_ptr_Function_v2float Function %41 + %xy = OpVariable %_ptr_Function_v2float Function %41 + %xz = OpVariable %_ptr_Function_v2float Function %41 + %yx = OpVariable %_ptr_Function_v2float Function %41 + %yy = OpVariable %_ptr_Function_v2float Function %41 + %yz = OpVariable %_ptr_Function_v2float Function %41 + %zx = OpVariable %_ptr_Function_v2float Function %41 + %zy = OpVariable %_ptr_Function_v2float Function %41 + %zz = OpVariable %_ptr_Function_v2float Function %41 + %xxx = OpVariable %_ptr_Function_v3float Function %20 + %xxy = OpVariable %_ptr_Function_v3float Function %20 + %xxz = OpVariable %_ptr_Function_v3float Function %20 + %xyx = OpVariable %_ptr_Function_v3float Function %20 + %xyy = OpVariable %_ptr_Function_v3float Function %20 + %xyz = OpVariable %_ptr_Function_v3float Function %20 + %xzx = OpVariable %_ptr_Function_v3float Function %20 + %xzy = OpVariable %_ptr_Function_v3float Function %20 + %xzz = OpVariable %_ptr_Function_v3float Function %20 + %yxx = OpVariable %_ptr_Function_v3float Function %20 + %yxy = OpVariable %_ptr_Function_v3float Function %20 + %yxz = OpVariable %_ptr_Function_v3float Function %20 + %yyx = OpVariable %_ptr_Function_v3float Function %20 + %yyy = OpVariable %_ptr_Function_v3float Function %20 + %yyz = OpVariable %_ptr_Function_v3float Function %20 + %yzx = OpVariable %_ptr_Function_v3float Function %20 + %yzy = OpVariable %_ptr_Function_v3float Function %20 + %yzz = OpVariable %_ptr_Function_v3float Function %20 + %zxx = OpVariable %_ptr_Function_v3float Function %20 + %zxy = OpVariable %_ptr_Function_v3float Function %20 + %zxz = OpVariable %_ptr_Function_v3float Function %20 + %zyx = OpVariable %_ptr_Function_v3float Function %20 + %zyy = OpVariable %_ptr_Function_v3float Function %20 + %zyz = OpVariable %_ptr_Function_v3float Function %20 + %zzx = OpVariable %_ptr_Function_v3float Function %20 + %zzy = OpVariable %_ptr_Function_v3float Function %20 + %zzz = OpVariable %_ptr_Function_v3float Function %20 + %xxxx = OpVariable %_ptr_Function_v4float Function %188 + %xxxy = OpVariable %_ptr_Function_v4float Function %188 + %xxxz = OpVariable %_ptr_Function_v4float Function %188 + %xxyx = OpVariable %_ptr_Function_v4float Function %188 + %xxyy = OpVariable %_ptr_Function_v4float Function %188 + %xxyz = OpVariable %_ptr_Function_v4float Function %188 + %xxzx = OpVariable %_ptr_Function_v4float Function %188 + %xxzy = OpVariable %_ptr_Function_v4float Function %188 + %xxzz = OpVariable %_ptr_Function_v4float Function %188 + %xyxx = OpVariable %_ptr_Function_v4float Function %188 + %xyxy = OpVariable %_ptr_Function_v4float Function %188 + %xyxz = OpVariable %_ptr_Function_v4float Function %188 + %xyyx = OpVariable %_ptr_Function_v4float Function %188 + %xyyy = OpVariable %_ptr_Function_v4float Function %188 + %xyyz = OpVariable %_ptr_Function_v4float Function %188 + %xyzx = OpVariable %_ptr_Function_v4float Function %188 + %xyzy = OpVariable %_ptr_Function_v4float Function %188 + %xyzz = OpVariable %_ptr_Function_v4float Function %188 + %xzxx = OpVariable %_ptr_Function_v4float Function %188 + %xzxy = OpVariable %_ptr_Function_v4float Function %188 + %xzxz = OpVariable %_ptr_Function_v4float Function %188 + %xzyx = OpVariable %_ptr_Function_v4float Function %188 + %xzyy = OpVariable %_ptr_Function_v4float Function %188 + %xzyz = OpVariable %_ptr_Function_v4float Function %188 + %xzzx = OpVariable %_ptr_Function_v4float Function %188 + %xzzy = OpVariable %_ptr_Function_v4float Function %188 + %xzzz = OpVariable %_ptr_Function_v4float Function %188 + %yxxx = OpVariable %_ptr_Function_v4float Function %188 + %yxxy = OpVariable %_ptr_Function_v4float Function %188 + %yxxz = OpVariable %_ptr_Function_v4float Function %188 + %yxyx = OpVariable %_ptr_Function_v4float Function %188 + %yxyy = OpVariable %_ptr_Function_v4float Function %188 + %yxyz = OpVariable %_ptr_Function_v4float Function %188 + %yxzx = OpVariable %_ptr_Function_v4float Function %188 + %yxzy = OpVariable %_ptr_Function_v4float Function %188 + %yxzz = OpVariable %_ptr_Function_v4float Function %188 + %yyxx = OpVariable %_ptr_Function_v4float Function %188 + %yyxy = OpVariable %_ptr_Function_v4float Function %188 + %yyxz = OpVariable %_ptr_Function_v4float Function %188 + %yyyx = OpVariable %_ptr_Function_v4float Function %188 + %yyyy = OpVariable %_ptr_Function_v4float Function %188 + %yyyz = OpVariable %_ptr_Function_v4float Function %188 + %yyzx = OpVariable %_ptr_Function_v4float Function %188 + %yyzy = OpVariable %_ptr_Function_v4float Function %188 + %yyzz = OpVariable %_ptr_Function_v4float Function %188 + %yzxx = OpVariable %_ptr_Function_v4float Function %188 + %yzxy = OpVariable %_ptr_Function_v4float Function %188 + %yzxz = OpVariable %_ptr_Function_v4float Function %188 + %yzyx = OpVariable %_ptr_Function_v4float Function %188 + %yzyy = OpVariable %_ptr_Function_v4float Function %188 + %yzyz = OpVariable %_ptr_Function_v4float Function %188 + %yzzx = OpVariable %_ptr_Function_v4float Function %188 + %yzzy = OpVariable %_ptr_Function_v4float Function %188 + %yzzz = OpVariable %_ptr_Function_v4float Function %188 + %zxxx = OpVariable %_ptr_Function_v4float Function %188 + %zxxy = OpVariable %_ptr_Function_v4float Function %188 + %zxxz = OpVariable %_ptr_Function_v4float Function %188 + %zxyx = OpVariable %_ptr_Function_v4float Function %188 + %zxyy = OpVariable %_ptr_Function_v4float Function %188 + %zxyz = OpVariable %_ptr_Function_v4float Function %188 + %zxzx = OpVariable %_ptr_Function_v4float Function %188 + %zxzy = OpVariable %_ptr_Function_v4float Function %188 + %zxzz = OpVariable %_ptr_Function_v4float Function %188 + %zyxx = OpVariable %_ptr_Function_v4float Function %188 + %zyxy = OpVariable %_ptr_Function_v4float Function %188 + %zyxz = OpVariable %_ptr_Function_v4float Function %188 + %zyyx = OpVariable %_ptr_Function_v4float Function %188 + %zyyy = OpVariable %_ptr_Function_v4float Function %188 + %zyyz = OpVariable %_ptr_Function_v4float Function %188 + %zyzx = OpVariable %_ptr_Function_v4float Function %188 + %zyzy = OpVariable %_ptr_Function_v4float Function %188 + %zyzz = OpVariable %_ptr_Function_v4float Function %188 + %zzxx = OpVariable %_ptr_Function_v4float Function %188 + %zzxy = OpVariable %_ptr_Function_v4float Function %188 + %zzxz = OpVariable %_ptr_Function_v4float Function %188 + %zzyx = OpVariable %_ptr_Function_v4float Function %188 + %zzyy = OpVariable %_ptr_Function_v4float Function %188 + %zzyz = OpVariable %_ptr_Function_v4float Function %188 + %zzzx = OpVariable %_ptr_Function_v4float Function %188 + %zzzy = OpVariable %_ptr_Function_v4float Function %188 + %zzzz = OpVariable %_ptr_Function_v4float Function %188 + %16 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %17 = OpLoad %v3float %16 + OpStore %v %17 + %22 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_0 + %23 = OpLoad %float %22 + OpStore %x %23 + %28 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_1 + %29 = OpLoad %float %28 + OpStore %y %29 + %32 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_2 + %33 = OpLoad %float %32 + OpStore %z %33 + %35 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %37 = OpLoad %v3float %35 + %38 = OpVectorShuffle %v2float %37 %37 0 0 + OpStore %xx %38 + %42 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %43 = OpLoad %v3float %42 + %44 = OpVectorShuffle %v2float %43 %43 0 1 + OpStore %xy %44 + %46 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %47 = OpLoad %v3float %46 + %48 = OpVectorShuffle %v2float %47 %47 0 2 + OpStore %xz %48 + %50 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %51 = OpLoad %v3float %50 + %52 = OpVectorShuffle %v2float %51 %51 1 0 + OpStore %yx %52 + %54 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %55 = OpLoad %v3float %54 + %56 = OpVectorShuffle %v2float %55 %55 1 1 + OpStore %yy %56 + %58 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %59 = OpLoad %v3float %58 + %60 = OpVectorShuffle %v2float %59 %59 1 2 + OpStore %yz %60 + %62 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %63 = OpLoad %v3float %62 + %64 = OpVectorShuffle %v2float %63 %63 2 0 + OpStore %zx %64 + %66 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %67 = OpLoad %v3float %66 + %68 = OpVectorShuffle %v2float %67 %67 2 1 + OpStore %zy %68 + %70 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %71 = OpLoad %v3float %70 + %72 = OpVectorShuffle %v2float %71 %71 2 2 + OpStore %zz %72 + %74 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %75 = OpLoad %v3float %74 + %76 = OpVectorShuffle %v3float %75 %75 0 0 0 + OpStore %xxx %76 + %78 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %79 = OpLoad %v3float %78 + %80 = OpVectorShuffle %v3float %79 %79 0 0 1 + OpStore %xxy %80 + %82 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %83 = OpLoad %v3float %82 + %84 = OpVectorShuffle %v3float %83 %83 0 0 2 + OpStore %xxz %84 + %86 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %87 = OpLoad %v3float %86 + %88 = OpVectorShuffle %v3float %87 %87 0 1 0 + OpStore %xyx %88 + %90 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %91 = OpLoad %v3float %90 + %92 = OpVectorShuffle %v3float %91 %91 0 1 1 + OpStore %xyy %92 + %94 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %95 = OpLoad %v3float %94 + %96 = OpVectorShuffle %v3float %95 %95 0 1 2 + OpStore %xyz %96 + %98 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %99 = OpLoad %v3float %98 + %100 = OpVectorShuffle %v3float %99 %99 0 2 0 + OpStore %xzx %100 + %102 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %103 = OpLoad %v3float %102 + %104 = OpVectorShuffle %v3float %103 %103 0 2 1 + OpStore %xzy %104 + %106 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %107 = OpLoad %v3float %106 + %108 = OpVectorShuffle %v3float %107 %107 0 2 2 + OpStore %xzz %108 + %110 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %111 = OpLoad %v3float %110 + %112 = OpVectorShuffle %v3float %111 %111 1 0 0 + OpStore %yxx %112 + %114 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %115 = OpLoad %v3float %114 + %116 = OpVectorShuffle %v3float %115 %115 1 0 1 + OpStore %yxy %116 + %118 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %119 = OpLoad %v3float %118 + %120 = OpVectorShuffle %v3float %119 %119 1 0 2 + OpStore %yxz %120 + %122 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %123 = OpLoad %v3float %122 + %124 = OpVectorShuffle %v3float %123 %123 1 1 0 + OpStore %yyx %124 + %126 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %127 = OpLoad %v3float %126 + %128 = OpVectorShuffle %v3float %127 %127 1 1 1 + OpStore %yyy %128 + %130 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %131 = OpLoad %v3float %130 + %132 = OpVectorShuffle %v3float %131 %131 1 1 2 + OpStore %yyz %132 + %134 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %135 = OpLoad %v3float %134 + %136 = OpVectorShuffle %v3float %135 %135 1 2 0 + OpStore %yzx %136 + %138 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %139 = OpLoad %v3float %138 + %140 = OpVectorShuffle %v3float %139 %139 1 2 1 + OpStore %yzy %140 + %142 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %143 = OpLoad %v3float %142 + %144 = OpVectorShuffle %v3float %143 %143 1 2 2 + OpStore %yzz %144 + %146 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %147 = OpLoad %v3float %146 + %148 = OpVectorShuffle %v3float %147 %147 2 0 0 + OpStore %zxx %148 + %150 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %151 = OpLoad %v3float %150 + %152 = OpVectorShuffle %v3float %151 %151 2 0 1 + OpStore %zxy %152 + %154 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %155 = OpLoad %v3float %154 + %156 = OpVectorShuffle %v3float %155 %155 2 0 2 + OpStore %zxz %156 + %158 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %159 = OpLoad %v3float %158 + %160 = OpVectorShuffle %v3float %159 %159 2 1 0 + OpStore %zyx %160 + %162 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %163 = OpLoad %v3float %162 + %164 = OpVectorShuffle %v3float %163 %163 2 1 1 + OpStore %zyy %164 + %166 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %167 = OpLoad %v3float %166 + %168 = OpVectorShuffle %v3float %167 %167 2 1 2 + OpStore %zyz %168 + %170 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %171 = OpLoad %v3float %170 + %172 = OpVectorShuffle %v3float %171 %171 2 2 0 + OpStore %zzx %172 + %174 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %175 = OpLoad %v3float %174 + %176 = OpVectorShuffle %v3float %175 %175 2 2 1 + OpStore %zzy %176 + %178 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %179 = OpLoad %v3float %178 + %180 = OpVectorShuffle %v3float %179 %179 2 2 2 + OpStore %zzz %180 + %182 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %184 = OpLoad %v3float %182 + %185 = OpVectorShuffle %v4float %184 %184 0 0 0 0 + OpStore %xxxx %185 + %189 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %190 = OpLoad %v3float %189 + %191 = OpVectorShuffle %v4float %190 %190 0 0 0 1 + OpStore %xxxy %191 + %193 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %194 = OpLoad %v3float %193 + %195 = OpVectorShuffle %v4float %194 %194 0 0 0 2 + OpStore %xxxz %195 + %197 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %198 = OpLoad %v3float %197 + %199 = OpVectorShuffle %v4float %198 %198 0 0 1 0 + OpStore %xxyx %199 + %201 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %202 = OpLoad %v3float %201 + %203 = OpVectorShuffle %v4float %202 %202 0 0 1 1 + OpStore %xxyy %203 + %205 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %206 = OpLoad %v3float %205 + %207 = OpVectorShuffle %v4float %206 %206 0 0 1 2 + OpStore %xxyz %207 + %209 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %210 = OpLoad %v3float %209 + %211 = OpVectorShuffle %v4float %210 %210 0 0 2 0 + OpStore %xxzx %211 + %213 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %214 = OpLoad %v3float %213 + %215 = OpVectorShuffle %v4float %214 %214 0 0 2 1 + OpStore %xxzy %215 + %217 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %218 = OpLoad %v3float %217 + %219 = OpVectorShuffle %v4float %218 %218 0 0 2 2 + OpStore %xxzz %219 + %221 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %222 = OpLoad %v3float %221 + %223 = OpVectorShuffle %v4float %222 %222 0 1 0 0 + OpStore %xyxx %223 + %225 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %226 = OpLoad %v3float %225 + %227 = OpVectorShuffle %v4float %226 %226 0 1 0 1 + OpStore %xyxy %227 + %229 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %230 = OpLoad %v3float %229 + %231 = OpVectorShuffle %v4float %230 %230 0 1 0 2 + OpStore %xyxz %231 + %233 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %234 = OpLoad %v3float %233 + %235 = OpVectorShuffle %v4float %234 %234 0 1 1 0 + OpStore %xyyx %235 + %237 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %238 = OpLoad %v3float %237 + %239 = OpVectorShuffle %v4float %238 %238 0 1 1 1 + OpStore %xyyy %239 + %241 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %242 = OpLoad %v3float %241 + %243 = OpVectorShuffle %v4float %242 %242 0 1 1 2 + OpStore %xyyz %243 + %245 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %246 = OpLoad %v3float %245 + %247 = OpVectorShuffle %v4float %246 %246 0 1 2 0 + OpStore %xyzx %247 + %249 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %250 = OpLoad %v3float %249 + %251 = OpVectorShuffle %v4float %250 %250 0 1 2 1 + OpStore %xyzy %251 + %253 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %254 = OpLoad %v3float %253 + %255 = OpVectorShuffle %v4float %254 %254 0 1 2 2 + OpStore %xyzz %255 + %257 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %258 = OpLoad %v3float %257 + %259 = OpVectorShuffle %v4float %258 %258 0 2 0 0 + OpStore %xzxx %259 + %261 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %262 = OpLoad %v3float %261 + %263 = OpVectorShuffle %v4float %262 %262 0 2 0 1 + OpStore %xzxy %263 + %265 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %266 = OpLoad %v3float %265 + %267 = OpVectorShuffle %v4float %266 %266 0 2 0 2 + OpStore %xzxz %267 + %269 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %270 = OpLoad %v3float %269 + %271 = OpVectorShuffle %v4float %270 %270 0 2 1 0 + OpStore %xzyx %271 + %273 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %274 = OpLoad %v3float %273 + %275 = OpVectorShuffle %v4float %274 %274 0 2 1 1 + OpStore %xzyy %275 + %277 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %278 = OpLoad %v3float %277 + %279 = OpVectorShuffle %v4float %278 %278 0 2 1 2 + OpStore %xzyz %279 + %281 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %282 = OpLoad %v3float %281 + %283 = OpVectorShuffle %v4float %282 %282 0 2 2 0 + OpStore %xzzx %283 + %285 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %286 = OpLoad %v3float %285 + %287 = OpVectorShuffle %v4float %286 %286 0 2 2 1 + OpStore %xzzy %287 + %289 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %290 = OpLoad %v3float %289 + %291 = OpVectorShuffle %v4float %290 %290 0 2 2 2 + OpStore %xzzz %291 + %293 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %294 = OpLoad %v3float %293 + %295 = OpVectorShuffle %v4float %294 %294 1 0 0 0 + OpStore %yxxx %295 + %297 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %298 = OpLoad %v3float %297 + %299 = OpVectorShuffle %v4float %298 %298 1 0 0 1 + OpStore %yxxy %299 + %301 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %302 = OpLoad %v3float %301 + %303 = OpVectorShuffle %v4float %302 %302 1 0 0 2 + OpStore %yxxz %303 + %305 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %306 = OpLoad %v3float %305 + %307 = OpVectorShuffle %v4float %306 %306 1 0 1 0 + OpStore %yxyx %307 + %309 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %310 = OpLoad %v3float %309 + %311 = OpVectorShuffle %v4float %310 %310 1 0 1 1 + OpStore %yxyy %311 + %313 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %314 = OpLoad %v3float %313 + %315 = OpVectorShuffle %v4float %314 %314 1 0 1 2 + OpStore %yxyz %315 + %317 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %318 = OpLoad %v3float %317 + %319 = OpVectorShuffle %v4float %318 %318 1 0 2 0 + OpStore %yxzx %319 + %321 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %322 = OpLoad %v3float %321 + %323 = OpVectorShuffle %v4float %322 %322 1 0 2 1 + OpStore %yxzy %323 + %325 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %326 = OpLoad %v3float %325 + %327 = OpVectorShuffle %v4float %326 %326 1 0 2 2 + OpStore %yxzz %327 + %329 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %330 = OpLoad %v3float %329 + %331 = OpVectorShuffle %v4float %330 %330 1 1 0 0 + OpStore %yyxx %331 + %333 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %334 = OpLoad %v3float %333 + %335 = OpVectorShuffle %v4float %334 %334 1 1 0 1 + OpStore %yyxy %335 + %337 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %338 = OpLoad %v3float %337 + %339 = OpVectorShuffle %v4float %338 %338 1 1 0 2 + OpStore %yyxz %339 + %341 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %342 = OpLoad %v3float %341 + %343 = OpVectorShuffle %v4float %342 %342 1 1 1 0 + OpStore %yyyx %343 + %345 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %346 = OpLoad %v3float %345 + %347 = OpVectorShuffle %v4float %346 %346 1 1 1 1 + OpStore %yyyy %347 + %349 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %350 = OpLoad %v3float %349 + %351 = OpVectorShuffle %v4float %350 %350 1 1 1 2 + OpStore %yyyz %351 + %353 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %354 = OpLoad %v3float %353 + %355 = OpVectorShuffle %v4float %354 %354 1 1 2 0 + OpStore %yyzx %355 + %357 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %358 = OpLoad %v3float %357 + %359 = OpVectorShuffle %v4float %358 %358 1 1 2 1 + OpStore %yyzy %359 + %361 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %362 = OpLoad %v3float %361 + %363 = OpVectorShuffle %v4float %362 %362 1 1 2 2 + OpStore %yyzz %363 + %365 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %366 = OpLoad %v3float %365 + %367 = OpVectorShuffle %v4float %366 %366 1 2 0 0 + OpStore %yzxx %367 + %369 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %370 = OpLoad %v3float %369 + %371 = OpVectorShuffle %v4float %370 %370 1 2 0 1 + OpStore %yzxy %371 + %373 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %374 = OpLoad %v3float %373 + %375 = OpVectorShuffle %v4float %374 %374 1 2 0 2 + OpStore %yzxz %375 + %377 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %378 = OpLoad %v3float %377 + %379 = OpVectorShuffle %v4float %378 %378 1 2 1 0 + OpStore %yzyx %379 + %381 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %382 = OpLoad %v3float %381 + %383 = OpVectorShuffle %v4float %382 %382 1 2 1 1 + OpStore %yzyy %383 + %385 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %386 = OpLoad %v3float %385 + %387 = OpVectorShuffle %v4float %386 %386 1 2 1 2 + OpStore %yzyz %387 + %389 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %390 = OpLoad %v3float %389 + %391 = OpVectorShuffle %v4float %390 %390 1 2 2 0 + OpStore %yzzx %391 + %393 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %394 = OpLoad %v3float %393 + %395 = OpVectorShuffle %v4float %394 %394 1 2 2 1 + OpStore %yzzy %395 + %397 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %398 = OpLoad %v3float %397 + %399 = OpVectorShuffle %v4float %398 %398 1 2 2 2 + OpStore %yzzz %399 + %401 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %402 = OpLoad %v3float %401 + %403 = OpVectorShuffle %v4float %402 %402 2 0 0 0 + OpStore %zxxx %403 + %405 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %406 = OpLoad %v3float %405 + %407 = OpVectorShuffle %v4float %406 %406 2 0 0 1 + OpStore %zxxy %407 + %409 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %410 = OpLoad %v3float %409 + %411 = OpVectorShuffle %v4float %410 %410 2 0 0 2 + OpStore %zxxz %411 + %413 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %414 = OpLoad %v3float %413 + %415 = OpVectorShuffle %v4float %414 %414 2 0 1 0 + OpStore %zxyx %415 + %417 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %418 = OpLoad %v3float %417 + %419 = OpVectorShuffle %v4float %418 %418 2 0 1 1 + OpStore %zxyy %419 + %421 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %422 = OpLoad %v3float %421 + %423 = OpVectorShuffle %v4float %422 %422 2 0 1 2 + OpStore %zxyz %423 + %425 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %426 = OpLoad %v3float %425 + %427 = OpVectorShuffle %v4float %426 %426 2 0 2 0 + OpStore %zxzx %427 + %429 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %430 = OpLoad %v3float %429 + %431 = OpVectorShuffle %v4float %430 %430 2 0 2 1 + OpStore %zxzy %431 + %433 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %434 = OpLoad %v3float %433 + %435 = OpVectorShuffle %v4float %434 %434 2 0 2 2 + OpStore %zxzz %435 + %437 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %438 = OpLoad %v3float %437 + %439 = OpVectorShuffle %v4float %438 %438 2 1 0 0 + OpStore %zyxx %439 + %441 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %442 = OpLoad %v3float %441 + %443 = OpVectorShuffle %v4float %442 %442 2 1 0 1 + OpStore %zyxy %443 + %445 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %446 = OpLoad %v3float %445 + %447 = OpVectorShuffle %v4float %446 %446 2 1 0 2 + OpStore %zyxz %447 + %449 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %450 = OpLoad %v3float %449 + %451 = OpVectorShuffle %v4float %450 %450 2 1 1 0 + OpStore %zyyx %451 + %453 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %454 = OpLoad %v3float %453 + %455 = OpVectorShuffle %v4float %454 %454 2 1 1 1 + OpStore %zyyy %455 + %457 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %458 = OpLoad %v3float %457 + %459 = OpVectorShuffle %v4float %458 %458 2 1 1 2 + OpStore %zyyz %459 + %461 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %462 = OpLoad %v3float %461 + %463 = OpVectorShuffle %v4float %462 %462 2 1 2 0 + OpStore %zyzx %463 + %465 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %466 = OpLoad %v3float %465 + %467 = OpVectorShuffle %v4float %466 %466 2 1 2 1 + OpStore %zyzy %467 + %469 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %470 = OpLoad %v3float %469 + %471 = OpVectorShuffle %v4float %470 %470 2 1 2 2 + OpStore %zyzz %471 + %473 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %474 = OpLoad %v3float %473 + %475 = OpVectorShuffle %v4float %474 %474 2 2 0 0 + OpStore %zzxx %475 + %477 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %478 = OpLoad %v3float %477 + %479 = OpVectorShuffle %v4float %478 %478 2 2 0 1 + OpStore %zzxy %479 + %481 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %482 = OpLoad %v3float %481 + %483 = OpVectorShuffle %v4float %482 %482 2 2 0 2 + OpStore %zzxz %483 + %485 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %486 = OpLoad %v3float %485 + %487 = OpVectorShuffle %v4float %486 %486 2 2 1 0 + OpStore %zzyx %487 + %489 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %490 = OpLoad %v3float %489 + %491 = OpVectorShuffle %v4float %490 %490 2 2 1 1 + OpStore %zzyy %491 + %493 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %494 = OpLoad %v3float %493 + %495 = OpVectorShuffle %v4float %494 %494 2 2 1 2 + OpStore %zzyz %495 + %497 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %498 = OpLoad %v3float %497 + %499 = OpVectorShuffle %v4float %498 %498 2 2 2 0 + OpStore %zzzx %499 + %501 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %502 = OpLoad %v3float %501 + %503 = OpVectorShuffle %v4float %502 %502 2 2 2 1 + OpStore %zzzy %503 + %505 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + %506 = OpLoad %v3float %505 + %507 = OpVectorShuffle %v4float %506 %506 2 2 2 2 + OpStore %zzzz %507 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl new file mode 100644 index 0000000000..cef93bb67b --- /dev/null +++ b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.wgsl @@ -0,0 +1,129 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl b/test/expressions/swizzle/read/vec3/i32.wgsl new file mode 100644 index 0000000000..fca1add8d9 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/i32.wgsl @@ -0,0 +1,143 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.hlsl b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.hlsl new file mode 100644 index 0000000000..b6314fba50 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.hlsl @@ -0,0 +1,134 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + int3 v; +}; + +static S P = (S)0; + +void f() { + int3 v = P.v; + int x = P.v.x; + int y = P.v.y; + int z = P.v.z; + int2 xx = P.v.xx; + int2 xy = P.v.xy; + int2 xz = P.v.xz; + int2 yx = P.v.yx; + int2 yy = P.v.yy; + int2 yz = P.v.yz; + int2 zx = P.v.zx; + int2 zy = P.v.zy; + int2 zz = P.v.zz; + int3 xxx = P.v.xxx; + int3 xxy = P.v.xxy; + int3 xxz = P.v.xxz; + int3 xyx = P.v.xyx; + int3 xyy = P.v.xyy; + int3 xyz = P.v.xyz; + int3 xzx = P.v.xzx; + int3 xzy = P.v.xzy; + int3 xzz = P.v.xzz; + int3 yxx = P.v.yxx; + int3 yxy = P.v.yxy; + int3 yxz = P.v.yxz; + int3 yyx = P.v.yyx; + int3 yyy = P.v.yyy; + int3 yyz = P.v.yyz; + int3 yzx = P.v.yzx; + int3 yzy = P.v.yzy; + int3 yzz = P.v.yzz; + int3 zxx = P.v.zxx; + int3 zxy = P.v.zxy; + int3 zxz = P.v.zxz; + int3 zyx = P.v.zyx; + int3 zyy = P.v.zyy; + int3 zyz = P.v.zyz; + int3 zzx = P.v.zzx; + int3 zzy = P.v.zzy; + int3 zzz = P.v.zzz; + int4 xxxx = P.v.xxxx; + int4 xxxy = P.v.xxxy; + int4 xxxz = P.v.xxxz; + int4 xxyx = P.v.xxyx; + int4 xxyy = P.v.xxyy; + int4 xxyz = P.v.xxyz; + int4 xxzx = P.v.xxzx; + int4 xxzy = P.v.xxzy; + int4 xxzz = P.v.xxzz; + int4 xyxx = P.v.xyxx; + int4 xyxy = P.v.xyxy; + int4 xyxz = P.v.xyxz; + int4 xyyx = P.v.xyyx; + int4 xyyy = P.v.xyyy; + int4 xyyz = P.v.xyyz; + int4 xyzx = P.v.xyzx; + int4 xyzy = P.v.xyzy; + int4 xyzz = P.v.xyzz; + int4 xzxx = P.v.xzxx; + int4 xzxy = P.v.xzxy; + int4 xzxz = P.v.xzxz; + int4 xzyx = P.v.xzyx; + int4 xzyy = P.v.xzyy; + int4 xzyz = P.v.xzyz; + int4 xzzx = P.v.xzzx; + int4 xzzy = P.v.xzzy; + int4 xzzz = P.v.xzzz; + int4 yxxx = P.v.yxxx; + int4 yxxy = P.v.yxxy; + int4 yxxz = P.v.yxxz; + int4 yxyx = P.v.yxyx; + int4 yxyy = P.v.yxyy; + int4 yxyz = P.v.yxyz; + int4 yxzx = P.v.yxzx; + int4 yxzy = P.v.yxzy; + int4 yxzz = P.v.yxzz; + int4 yyxx = P.v.yyxx; + int4 yyxy = P.v.yyxy; + int4 yyxz = P.v.yyxz; + int4 yyyx = P.v.yyyx; + int4 yyyy = P.v.yyyy; + int4 yyyz = P.v.yyyz; + int4 yyzx = P.v.yyzx; + int4 yyzy = P.v.yyzy; + int4 yyzz = P.v.yyzz; + int4 yzxx = P.v.yzxx; + int4 yzxy = P.v.yzxy; + int4 yzxz = P.v.yzxz; + int4 yzyx = P.v.yzyx; + int4 yzyy = P.v.yzyy; + int4 yzyz = P.v.yzyz; + int4 yzzx = P.v.yzzx; + int4 yzzy = P.v.yzzy; + int4 yzzz = P.v.yzzz; + int4 zxxx = P.v.zxxx; + int4 zxxy = P.v.zxxy; + int4 zxxz = P.v.zxxz; + int4 zxyx = P.v.zxyx; + int4 zxyy = P.v.zxyy; + int4 zxyz = P.v.zxyz; + int4 zxzx = P.v.zxzx; + int4 zxzy = P.v.zxzy; + int4 zxzz = P.v.zxzz; + int4 zyxx = P.v.zyxx; + int4 zyxy = P.v.zyxy; + int4 zyxz = P.v.zyxz; + int4 zyyx = P.v.zyyx; + int4 zyyy = P.v.zyyy; + int4 zyyz = P.v.zyyz; + int4 zyzx = P.v.zyzx; + int4 zyzy = P.v.zyzy; + int4 zyzz = P.v.zyzz; + int4 zzxx = P.v.zzxx; + int4 zzxy = P.v.zzxy; + int4 zzxz = P.v.zzxz; + int4 zzyx = P.v.zzyx; + int4 zzyy = P.v.zzyy; + int4 zzyz = P.v.zzyz; + int4 zzzx = P.v.zzzx; + int4 zzzy = P.v.zzzy; + int4 zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.msl new file mode 100644 index 0000000000..ddcd693ad4 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.msl @@ -0,0 +1,131 @@ +#include + +using namespace metal; +struct S { + int3 v; +}; + +void f(thread S* const tint_symbol) { + int3 v = (*(tint_symbol)).v; + int x = (*(tint_symbol)).v[0]; + int y = (*(tint_symbol)).v[1]; + int z = (*(tint_symbol)).v[2]; + int2 xx = int3((*(tint_symbol)).v).xx; + int2 xy = int3((*(tint_symbol)).v).xy; + int2 xz = int3((*(tint_symbol)).v).xz; + int2 yx = int3((*(tint_symbol)).v).yx; + int2 yy = int3((*(tint_symbol)).v).yy; + int2 yz = int3((*(tint_symbol)).v).yz; + int2 zx = int3((*(tint_symbol)).v).zx; + int2 zy = int3((*(tint_symbol)).v).zy; + int2 zz = int3((*(tint_symbol)).v).zz; + int3 xxx = int3((*(tint_symbol)).v).xxx; + int3 xxy = int3((*(tint_symbol)).v).xxy; + int3 xxz = int3((*(tint_symbol)).v).xxz; + int3 xyx = int3((*(tint_symbol)).v).xyx; + int3 xyy = int3((*(tint_symbol)).v).xyy; + int3 xyz = int3((*(tint_symbol)).v).xyz; + int3 xzx = int3((*(tint_symbol)).v).xzx; + int3 xzy = int3((*(tint_symbol)).v).xzy; + int3 xzz = int3((*(tint_symbol)).v).xzz; + int3 yxx = int3((*(tint_symbol)).v).yxx; + int3 yxy = int3((*(tint_symbol)).v).yxy; + int3 yxz = int3((*(tint_symbol)).v).yxz; + int3 yyx = int3((*(tint_symbol)).v).yyx; + int3 yyy = int3((*(tint_symbol)).v).yyy; + int3 yyz = int3((*(tint_symbol)).v).yyz; + int3 yzx = int3((*(tint_symbol)).v).yzx; + int3 yzy = int3((*(tint_symbol)).v).yzy; + int3 yzz = int3((*(tint_symbol)).v).yzz; + int3 zxx = int3((*(tint_symbol)).v).zxx; + int3 zxy = int3((*(tint_symbol)).v).zxy; + int3 zxz = int3((*(tint_symbol)).v).zxz; + int3 zyx = int3((*(tint_symbol)).v).zyx; + int3 zyy = int3((*(tint_symbol)).v).zyy; + int3 zyz = int3((*(tint_symbol)).v).zyz; + int3 zzx = int3((*(tint_symbol)).v).zzx; + int3 zzy = int3((*(tint_symbol)).v).zzy; + int3 zzz = int3((*(tint_symbol)).v).zzz; + int4 xxxx = int3((*(tint_symbol)).v).xxxx; + int4 xxxy = int3((*(tint_symbol)).v).xxxy; + int4 xxxz = int3((*(tint_symbol)).v).xxxz; + int4 xxyx = int3((*(tint_symbol)).v).xxyx; + int4 xxyy = int3((*(tint_symbol)).v).xxyy; + int4 xxyz = int3((*(tint_symbol)).v).xxyz; + int4 xxzx = int3((*(tint_symbol)).v).xxzx; + int4 xxzy = int3((*(tint_symbol)).v).xxzy; + int4 xxzz = int3((*(tint_symbol)).v).xxzz; + int4 xyxx = int3((*(tint_symbol)).v).xyxx; + int4 xyxy = int3((*(tint_symbol)).v).xyxy; + int4 xyxz = int3((*(tint_symbol)).v).xyxz; + int4 xyyx = int3((*(tint_symbol)).v).xyyx; + int4 xyyy = int3((*(tint_symbol)).v).xyyy; + int4 xyyz = int3((*(tint_symbol)).v).xyyz; + int4 xyzx = int3((*(tint_symbol)).v).xyzx; + int4 xyzy = int3((*(tint_symbol)).v).xyzy; + int4 xyzz = int3((*(tint_symbol)).v).xyzz; + int4 xzxx = int3((*(tint_symbol)).v).xzxx; + int4 xzxy = int3((*(tint_symbol)).v).xzxy; + int4 xzxz = int3((*(tint_symbol)).v).xzxz; + int4 xzyx = int3((*(tint_symbol)).v).xzyx; + int4 xzyy = int3((*(tint_symbol)).v).xzyy; + int4 xzyz = int3((*(tint_symbol)).v).xzyz; + int4 xzzx = int3((*(tint_symbol)).v).xzzx; + int4 xzzy = int3((*(tint_symbol)).v).xzzy; + int4 xzzz = int3((*(tint_symbol)).v).xzzz; + int4 yxxx = int3((*(tint_symbol)).v).yxxx; + int4 yxxy = int3((*(tint_symbol)).v).yxxy; + int4 yxxz = int3((*(tint_symbol)).v).yxxz; + int4 yxyx = int3((*(tint_symbol)).v).yxyx; + int4 yxyy = int3((*(tint_symbol)).v).yxyy; + int4 yxyz = int3((*(tint_symbol)).v).yxyz; + int4 yxzx = int3((*(tint_symbol)).v).yxzx; + int4 yxzy = int3((*(tint_symbol)).v).yxzy; + int4 yxzz = int3((*(tint_symbol)).v).yxzz; + int4 yyxx = int3((*(tint_symbol)).v).yyxx; + int4 yyxy = int3((*(tint_symbol)).v).yyxy; + int4 yyxz = int3((*(tint_symbol)).v).yyxz; + int4 yyyx = int3((*(tint_symbol)).v).yyyx; + int4 yyyy = int3((*(tint_symbol)).v).yyyy; + int4 yyyz = int3((*(tint_symbol)).v).yyyz; + int4 yyzx = int3((*(tint_symbol)).v).yyzx; + int4 yyzy = int3((*(tint_symbol)).v).yyzy; + int4 yyzz = int3((*(tint_symbol)).v).yyzz; + int4 yzxx = int3((*(tint_symbol)).v).yzxx; + int4 yzxy = int3((*(tint_symbol)).v).yzxy; + int4 yzxz = int3((*(tint_symbol)).v).yzxz; + int4 yzyx = int3((*(tint_symbol)).v).yzyx; + int4 yzyy = int3((*(tint_symbol)).v).yzyy; + int4 yzyz = int3((*(tint_symbol)).v).yzyz; + int4 yzzx = int3((*(tint_symbol)).v).yzzx; + int4 yzzy = int3((*(tint_symbol)).v).yzzy; + int4 yzzz = int3((*(tint_symbol)).v).yzzz; + int4 zxxx = int3((*(tint_symbol)).v).zxxx; + int4 zxxy = int3((*(tint_symbol)).v).zxxy; + int4 zxxz = int3((*(tint_symbol)).v).zxxz; + int4 zxyx = int3((*(tint_symbol)).v).zxyx; + int4 zxyy = int3((*(tint_symbol)).v).zxyy; + int4 zxyz = int3((*(tint_symbol)).v).zxyz; + int4 zxzx = int3((*(tint_symbol)).v).zxzx; + int4 zxzy = int3((*(tint_symbol)).v).zxzy; + int4 zxzz = int3((*(tint_symbol)).v).zxzz; + int4 zyxx = int3((*(tint_symbol)).v).zyxx; + int4 zyxy = int3((*(tint_symbol)).v).zyxy; + int4 zyxz = int3((*(tint_symbol)).v).zyxz; + int4 zyyx = int3((*(tint_symbol)).v).zyyx; + int4 zyyy = int3((*(tint_symbol)).v).zyyy; + int4 zyyz = int3((*(tint_symbol)).v).zyyz; + int4 zyzx = int3((*(tint_symbol)).v).zyzx; + int4 zyzy = int3((*(tint_symbol)).v).zyzy; + int4 zyzz = int3((*(tint_symbol)).v).zyzz; + int4 zzxx = int3((*(tint_symbol)).v).zzxx; + int4 zzxy = int3((*(tint_symbol)).v).zzxy; + int4 zzxz = int3((*(tint_symbol)).v).zzxz; + int4 zzyx = int3((*(tint_symbol)).v).zzyx; + int4 zzyy = int3((*(tint_symbol)).v).zzyy; + int4 zzyz = int3((*(tint_symbol)).v).zzyz; + int4 zzzx = int3((*(tint_symbol)).v).zzzx; + int4 zzzy = int3((*(tint_symbol)).v).zzzy; + int4 zzzz = int3((*(tint_symbol)).v).zzzz; +} + diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.spvasm b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.spvasm new file mode 100644 index 0000000000..87507a028d --- /dev/null +++ b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.spvasm @@ -0,0 +1,769 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 509 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpMemberDecorate %S 0 Offset 0 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %S = OpTypeStruct %v3int +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3int = OpTypePointer Private %v3int +%_ptr_Function_v3int = OpTypePointer Function %v3int + %20 = OpConstantNull %v3int +%_ptr_Private_int = OpTypePointer Private %int +%_ptr_Function_int = OpTypePointer Function %int + %26 = OpConstantNull %int + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2int = OpTypeVector %int 2 +%_ptr_Function_v2int = OpTypePointer Function %v2int + %41 = OpConstantNull %v2int + %v4int = OpTypeVector %int 4 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %188 = OpConstantNull %v4int +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %v = OpVariable %_ptr_Function_v3int Function %20 + %x = OpVariable %_ptr_Function_int Function %26 + %y = OpVariable %_ptr_Function_int Function %26 + %z = OpVariable %_ptr_Function_int Function %26 + %xx = OpVariable %_ptr_Function_v2int Function %41 + %xy = OpVariable %_ptr_Function_v2int Function %41 + %xz = OpVariable %_ptr_Function_v2int Function %41 + %yx = OpVariable %_ptr_Function_v2int Function %41 + %yy = OpVariable %_ptr_Function_v2int Function %41 + %yz = OpVariable %_ptr_Function_v2int Function %41 + %zx = OpVariable %_ptr_Function_v2int Function %41 + %zy = OpVariable %_ptr_Function_v2int Function %41 + %zz = OpVariable %_ptr_Function_v2int Function %41 + %xxx = OpVariable %_ptr_Function_v3int Function %20 + %xxy = OpVariable %_ptr_Function_v3int Function %20 + %xxz = OpVariable %_ptr_Function_v3int Function %20 + %xyx = OpVariable %_ptr_Function_v3int Function %20 + %xyy = OpVariable %_ptr_Function_v3int Function %20 + %xyz = OpVariable %_ptr_Function_v3int Function %20 + %xzx = OpVariable %_ptr_Function_v3int Function %20 + %xzy = OpVariable %_ptr_Function_v3int Function %20 + %xzz = OpVariable %_ptr_Function_v3int Function %20 + %yxx = OpVariable %_ptr_Function_v3int Function %20 + %yxy = OpVariable %_ptr_Function_v3int Function %20 + %yxz = OpVariable %_ptr_Function_v3int Function %20 + %yyx = OpVariable %_ptr_Function_v3int Function %20 + %yyy = OpVariable %_ptr_Function_v3int Function %20 + %yyz = OpVariable %_ptr_Function_v3int Function %20 + %yzx = OpVariable %_ptr_Function_v3int Function %20 + %yzy = OpVariable %_ptr_Function_v3int Function %20 + %yzz = OpVariable %_ptr_Function_v3int Function %20 + %zxx = OpVariable %_ptr_Function_v3int Function %20 + %zxy = OpVariable %_ptr_Function_v3int Function %20 + %zxz = OpVariable %_ptr_Function_v3int Function %20 + %zyx = OpVariable %_ptr_Function_v3int Function %20 + %zyy = OpVariable %_ptr_Function_v3int Function %20 + %zyz = OpVariable %_ptr_Function_v3int Function %20 + %zzx = OpVariable %_ptr_Function_v3int Function %20 + %zzy = OpVariable %_ptr_Function_v3int Function %20 + %zzz = OpVariable %_ptr_Function_v3int Function %20 + %xxxx = OpVariable %_ptr_Function_v4int Function %188 + %xxxy = OpVariable %_ptr_Function_v4int Function %188 + %xxxz = OpVariable %_ptr_Function_v4int Function %188 + %xxyx = OpVariable %_ptr_Function_v4int Function %188 + %xxyy = OpVariable %_ptr_Function_v4int Function %188 + %xxyz = OpVariable %_ptr_Function_v4int Function %188 + %xxzx = OpVariable %_ptr_Function_v4int Function %188 + %xxzy = OpVariable %_ptr_Function_v4int Function %188 + %xxzz = OpVariable %_ptr_Function_v4int Function %188 + %xyxx = OpVariable %_ptr_Function_v4int Function %188 + %xyxy = OpVariable %_ptr_Function_v4int Function %188 + %xyxz = OpVariable %_ptr_Function_v4int Function %188 + %xyyx = OpVariable %_ptr_Function_v4int Function %188 + %xyyy = OpVariable %_ptr_Function_v4int Function %188 + %xyyz = OpVariable %_ptr_Function_v4int Function %188 + %xyzx = OpVariable %_ptr_Function_v4int Function %188 + %xyzy = OpVariable %_ptr_Function_v4int Function %188 + %xyzz = OpVariable %_ptr_Function_v4int Function %188 + %xzxx = OpVariable %_ptr_Function_v4int Function %188 + %xzxy = OpVariable %_ptr_Function_v4int Function %188 + %xzxz = OpVariable %_ptr_Function_v4int Function %188 + %xzyx = OpVariable %_ptr_Function_v4int Function %188 + %xzyy = OpVariable %_ptr_Function_v4int Function %188 + %xzyz = OpVariable %_ptr_Function_v4int Function %188 + %xzzx = OpVariable %_ptr_Function_v4int Function %188 + %xzzy = OpVariable %_ptr_Function_v4int Function %188 + %xzzz = OpVariable %_ptr_Function_v4int Function %188 + %yxxx = OpVariable %_ptr_Function_v4int Function %188 + %yxxy = OpVariable %_ptr_Function_v4int Function %188 + %yxxz = OpVariable %_ptr_Function_v4int Function %188 + %yxyx = OpVariable %_ptr_Function_v4int Function %188 + %yxyy = OpVariable %_ptr_Function_v4int Function %188 + %yxyz = OpVariable %_ptr_Function_v4int Function %188 + %yxzx = OpVariable %_ptr_Function_v4int Function %188 + %yxzy = OpVariable %_ptr_Function_v4int Function %188 + %yxzz = OpVariable %_ptr_Function_v4int Function %188 + %yyxx = OpVariable %_ptr_Function_v4int Function %188 + %yyxy = OpVariable %_ptr_Function_v4int Function %188 + %yyxz = OpVariable %_ptr_Function_v4int Function %188 + %yyyx = OpVariable %_ptr_Function_v4int Function %188 + %yyyy = OpVariable %_ptr_Function_v4int Function %188 + %yyyz = OpVariable %_ptr_Function_v4int Function %188 + %yyzx = OpVariable %_ptr_Function_v4int Function %188 + %yyzy = OpVariable %_ptr_Function_v4int Function %188 + %yyzz = OpVariable %_ptr_Function_v4int Function %188 + %yzxx = OpVariable %_ptr_Function_v4int Function %188 + %yzxy = OpVariable %_ptr_Function_v4int Function %188 + %yzxz = OpVariable %_ptr_Function_v4int Function %188 + %yzyx = OpVariable %_ptr_Function_v4int Function %188 + %yzyy = OpVariable %_ptr_Function_v4int Function %188 + %yzyz = OpVariable %_ptr_Function_v4int Function %188 + %yzzx = OpVariable %_ptr_Function_v4int Function %188 + %yzzy = OpVariable %_ptr_Function_v4int Function %188 + %yzzz = OpVariable %_ptr_Function_v4int Function %188 + %zxxx = OpVariable %_ptr_Function_v4int Function %188 + %zxxy = OpVariable %_ptr_Function_v4int Function %188 + %zxxz = OpVariable %_ptr_Function_v4int Function %188 + %zxyx = OpVariable %_ptr_Function_v4int Function %188 + %zxyy = OpVariable %_ptr_Function_v4int Function %188 + %zxyz = OpVariable %_ptr_Function_v4int Function %188 + %zxzx = OpVariable %_ptr_Function_v4int Function %188 + %zxzy = OpVariable %_ptr_Function_v4int Function %188 + %zxzz = OpVariable %_ptr_Function_v4int Function %188 + %zyxx = OpVariable %_ptr_Function_v4int Function %188 + %zyxy = OpVariable %_ptr_Function_v4int Function %188 + %zyxz = OpVariable %_ptr_Function_v4int Function %188 + %zyyx = OpVariable %_ptr_Function_v4int Function %188 + %zyyy = OpVariable %_ptr_Function_v4int Function %188 + %zyyz = OpVariable %_ptr_Function_v4int Function %188 + %zyzx = OpVariable %_ptr_Function_v4int Function %188 + %zyzy = OpVariable %_ptr_Function_v4int Function %188 + %zyzz = OpVariable %_ptr_Function_v4int Function %188 + %zzxx = OpVariable %_ptr_Function_v4int Function %188 + %zzxy = OpVariable %_ptr_Function_v4int Function %188 + %zzxz = OpVariable %_ptr_Function_v4int Function %188 + %zzyx = OpVariable %_ptr_Function_v4int Function %188 + %zzyy = OpVariable %_ptr_Function_v4int Function %188 + %zzyz = OpVariable %_ptr_Function_v4int Function %188 + %zzzx = OpVariable %_ptr_Function_v4int Function %188 + %zzzy = OpVariable %_ptr_Function_v4int Function %188 + %zzzz = OpVariable %_ptr_Function_v4int Function %188 + %16 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %17 = OpLoad %v3int %16 + OpStore %v %17 + %22 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_0 + %23 = OpLoad %int %22 + OpStore %x %23 + %28 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_1 + %29 = OpLoad %int %28 + OpStore %y %29 + %32 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_2 + %33 = OpLoad %int %32 + OpStore %z %33 + %35 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %37 = OpLoad %v3int %35 + %38 = OpVectorShuffle %v2int %37 %37 0 0 + OpStore %xx %38 + %42 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %43 = OpLoad %v3int %42 + %44 = OpVectorShuffle %v2int %43 %43 0 1 + OpStore %xy %44 + %46 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %47 = OpLoad %v3int %46 + %48 = OpVectorShuffle %v2int %47 %47 0 2 + OpStore %xz %48 + %50 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %51 = OpLoad %v3int %50 + %52 = OpVectorShuffle %v2int %51 %51 1 0 + OpStore %yx %52 + %54 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %55 = OpLoad %v3int %54 + %56 = OpVectorShuffle %v2int %55 %55 1 1 + OpStore %yy %56 + %58 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %59 = OpLoad %v3int %58 + %60 = OpVectorShuffle %v2int %59 %59 1 2 + OpStore %yz %60 + %62 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %63 = OpLoad %v3int %62 + %64 = OpVectorShuffle %v2int %63 %63 2 0 + OpStore %zx %64 + %66 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %67 = OpLoad %v3int %66 + %68 = OpVectorShuffle %v2int %67 %67 2 1 + OpStore %zy %68 + %70 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %71 = OpLoad %v3int %70 + %72 = OpVectorShuffle %v2int %71 %71 2 2 + OpStore %zz %72 + %74 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %75 = OpLoad %v3int %74 + %76 = OpVectorShuffle %v3int %75 %75 0 0 0 + OpStore %xxx %76 + %78 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %79 = OpLoad %v3int %78 + %80 = OpVectorShuffle %v3int %79 %79 0 0 1 + OpStore %xxy %80 + %82 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %83 = OpLoad %v3int %82 + %84 = OpVectorShuffle %v3int %83 %83 0 0 2 + OpStore %xxz %84 + %86 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %87 = OpLoad %v3int %86 + %88 = OpVectorShuffle %v3int %87 %87 0 1 0 + OpStore %xyx %88 + %90 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %91 = OpLoad %v3int %90 + %92 = OpVectorShuffle %v3int %91 %91 0 1 1 + OpStore %xyy %92 + %94 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %95 = OpLoad %v3int %94 + %96 = OpVectorShuffle %v3int %95 %95 0 1 2 + OpStore %xyz %96 + %98 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %99 = OpLoad %v3int %98 + %100 = OpVectorShuffle %v3int %99 %99 0 2 0 + OpStore %xzx %100 + %102 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %103 = OpLoad %v3int %102 + %104 = OpVectorShuffle %v3int %103 %103 0 2 1 + OpStore %xzy %104 + %106 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %107 = OpLoad %v3int %106 + %108 = OpVectorShuffle %v3int %107 %107 0 2 2 + OpStore %xzz %108 + %110 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %111 = OpLoad %v3int %110 + %112 = OpVectorShuffle %v3int %111 %111 1 0 0 + OpStore %yxx %112 + %114 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %115 = OpLoad %v3int %114 + %116 = OpVectorShuffle %v3int %115 %115 1 0 1 + OpStore %yxy %116 + %118 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %119 = OpLoad %v3int %118 + %120 = OpVectorShuffle %v3int %119 %119 1 0 2 + OpStore %yxz %120 + %122 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %123 = OpLoad %v3int %122 + %124 = OpVectorShuffle %v3int %123 %123 1 1 0 + OpStore %yyx %124 + %126 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %127 = OpLoad %v3int %126 + %128 = OpVectorShuffle %v3int %127 %127 1 1 1 + OpStore %yyy %128 + %130 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %131 = OpLoad %v3int %130 + %132 = OpVectorShuffle %v3int %131 %131 1 1 2 + OpStore %yyz %132 + %134 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %135 = OpLoad %v3int %134 + %136 = OpVectorShuffle %v3int %135 %135 1 2 0 + OpStore %yzx %136 + %138 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %139 = OpLoad %v3int %138 + %140 = OpVectorShuffle %v3int %139 %139 1 2 1 + OpStore %yzy %140 + %142 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %143 = OpLoad %v3int %142 + %144 = OpVectorShuffle %v3int %143 %143 1 2 2 + OpStore %yzz %144 + %146 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %147 = OpLoad %v3int %146 + %148 = OpVectorShuffle %v3int %147 %147 2 0 0 + OpStore %zxx %148 + %150 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %151 = OpLoad %v3int %150 + %152 = OpVectorShuffle %v3int %151 %151 2 0 1 + OpStore %zxy %152 + %154 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %155 = OpLoad %v3int %154 + %156 = OpVectorShuffle %v3int %155 %155 2 0 2 + OpStore %zxz %156 + %158 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %159 = OpLoad %v3int %158 + %160 = OpVectorShuffle %v3int %159 %159 2 1 0 + OpStore %zyx %160 + %162 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %163 = OpLoad %v3int %162 + %164 = OpVectorShuffle %v3int %163 %163 2 1 1 + OpStore %zyy %164 + %166 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %167 = OpLoad %v3int %166 + %168 = OpVectorShuffle %v3int %167 %167 2 1 2 + OpStore %zyz %168 + %170 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %171 = OpLoad %v3int %170 + %172 = OpVectorShuffle %v3int %171 %171 2 2 0 + OpStore %zzx %172 + %174 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %175 = OpLoad %v3int %174 + %176 = OpVectorShuffle %v3int %175 %175 2 2 1 + OpStore %zzy %176 + %178 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %179 = OpLoad %v3int %178 + %180 = OpVectorShuffle %v3int %179 %179 2 2 2 + OpStore %zzz %180 + %182 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %184 = OpLoad %v3int %182 + %185 = OpVectorShuffle %v4int %184 %184 0 0 0 0 + OpStore %xxxx %185 + %189 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %190 = OpLoad %v3int %189 + %191 = OpVectorShuffle %v4int %190 %190 0 0 0 1 + OpStore %xxxy %191 + %193 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %194 = OpLoad %v3int %193 + %195 = OpVectorShuffle %v4int %194 %194 0 0 0 2 + OpStore %xxxz %195 + %197 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %198 = OpLoad %v3int %197 + %199 = OpVectorShuffle %v4int %198 %198 0 0 1 0 + OpStore %xxyx %199 + %201 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %202 = OpLoad %v3int %201 + %203 = OpVectorShuffle %v4int %202 %202 0 0 1 1 + OpStore %xxyy %203 + %205 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %206 = OpLoad %v3int %205 + %207 = OpVectorShuffle %v4int %206 %206 0 0 1 2 + OpStore %xxyz %207 + %209 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %210 = OpLoad %v3int %209 + %211 = OpVectorShuffle %v4int %210 %210 0 0 2 0 + OpStore %xxzx %211 + %213 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %214 = OpLoad %v3int %213 + %215 = OpVectorShuffle %v4int %214 %214 0 0 2 1 + OpStore %xxzy %215 + %217 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %218 = OpLoad %v3int %217 + %219 = OpVectorShuffle %v4int %218 %218 0 0 2 2 + OpStore %xxzz %219 + %221 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %222 = OpLoad %v3int %221 + %223 = OpVectorShuffle %v4int %222 %222 0 1 0 0 + OpStore %xyxx %223 + %225 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %226 = OpLoad %v3int %225 + %227 = OpVectorShuffle %v4int %226 %226 0 1 0 1 + OpStore %xyxy %227 + %229 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %230 = OpLoad %v3int %229 + %231 = OpVectorShuffle %v4int %230 %230 0 1 0 2 + OpStore %xyxz %231 + %233 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %234 = OpLoad %v3int %233 + %235 = OpVectorShuffle %v4int %234 %234 0 1 1 0 + OpStore %xyyx %235 + %237 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %238 = OpLoad %v3int %237 + %239 = OpVectorShuffle %v4int %238 %238 0 1 1 1 + OpStore %xyyy %239 + %241 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %242 = OpLoad %v3int %241 + %243 = OpVectorShuffle %v4int %242 %242 0 1 1 2 + OpStore %xyyz %243 + %245 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %246 = OpLoad %v3int %245 + %247 = OpVectorShuffle %v4int %246 %246 0 1 2 0 + OpStore %xyzx %247 + %249 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %250 = OpLoad %v3int %249 + %251 = OpVectorShuffle %v4int %250 %250 0 1 2 1 + OpStore %xyzy %251 + %253 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %254 = OpLoad %v3int %253 + %255 = OpVectorShuffle %v4int %254 %254 0 1 2 2 + OpStore %xyzz %255 + %257 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %258 = OpLoad %v3int %257 + %259 = OpVectorShuffle %v4int %258 %258 0 2 0 0 + OpStore %xzxx %259 + %261 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %262 = OpLoad %v3int %261 + %263 = OpVectorShuffle %v4int %262 %262 0 2 0 1 + OpStore %xzxy %263 + %265 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %266 = OpLoad %v3int %265 + %267 = OpVectorShuffle %v4int %266 %266 0 2 0 2 + OpStore %xzxz %267 + %269 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %270 = OpLoad %v3int %269 + %271 = OpVectorShuffle %v4int %270 %270 0 2 1 0 + OpStore %xzyx %271 + %273 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %274 = OpLoad %v3int %273 + %275 = OpVectorShuffle %v4int %274 %274 0 2 1 1 + OpStore %xzyy %275 + %277 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %278 = OpLoad %v3int %277 + %279 = OpVectorShuffle %v4int %278 %278 0 2 1 2 + OpStore %xzyz %279 + %281 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %282 = OpLoad %v3int %281 + %283 = OpVectorShuffle %v4int %282 %282 0 2 2 0 + OpStore %xzzx %283 + %285 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %286 = OpLoad %v3int %285 + %287 = OpVectorShuffle %v4int %286 %286 0 2 2 1 + OpStore %xzzy %287 + %289 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %290 = OpLoad %v3int %289 + %291 = OpVectorShuffle %v4int %290 %290 0 2 2 2 + OpStore %xzzz %291 + %293 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %294 = OpLoad %v3int %293 + %295 = OpVectorShuffle %v4int %294 %294 1 0 0 0 + OpStore %yxxx %295 + %297 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %298 = OpLoad %v3int %297 + %299 = OpVectorShuffle %v4int %298 %298 1 0 0 1 + OpStore %yxxy %299 + %301 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %302 = OpLoad %v3int %301 + %303 = OpVectorShuffle %v4int %302 %302 1 0 0 2 + OpStore %yxxz %303 + %305 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %306 = OpLoad %v3int %305 + %307 = OpVectorShuffle %v4int %306 %306 1 0 1 0 + OpStore %yxyx %307 + %309 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %310 = OpLoad %v3int %309 + %311 = OpVectorShuffle %v4int %310 %310 1 0 1 1 + OpStore %yxyy %311 + %313 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %314 = OpLoad %v3int %313 + %315 = OpVectorShuffle %v4int %314 %314 1 0 1 2 + OpStore %yxyz %315 + %317 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %318 = OpLoad %v3int %317 + %319 = OpVectorShuffle %v4int %318 %318 1 0 2 0 + OpStore %yxzx %319 + %321 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %322 = OpLoad %v3int %321 + %323 = OpVectorShuffle %v4int %322 %322 1 0 2 1 + OpStore %yxzy %323 + %325 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %326 = OpLoad %v3int %325 + %327 = OpVectorShuffle %v4int %326 %326 1 0 2 2 + OpStore %yxzz %327 + %329 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %330 = OpLoad %v3int %329 + %331 = OpVectorShuffle %v4int %330 %330 1 1 0 0 + OpStore %yyxx %331 + %333 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %334 = OpLoad %v3int %333 + %335 = OpVectorShuffle %v4int %334 %334 1 1 0 1 + OpStore %yyxy %335 + %337 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %338 = OpLoad %v3int %337 + %339 = OpVectorShuffle %v4int %338 %338 1 1 0 2 + OpStore %yyxz %339 + %341 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %342 = OpLoad %v3int %341 + %343 = OpVectorShuffle %v4int %342 %342 1 1 1 0 + OpStore %yyyx %343 + %345 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %346 = OpLoad %v3int %345 + %347 = OpVectorShuffle %v4int %346 %346 1 1 1 1 + OpStore %yyyy %347 + %349 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %350 = OpLoad %v3int %349 + %351 = OpVectorShuffle %v4int %350 %350 1 1 1 2 + OpStore %yyyz %351 + %353 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %354 = OpLoad %v3int %353 + %355 = OpVectorShuffle %v4int %354 %354 1 1 2 0 + OpStore %yyzx %355 + %357 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %358 = OpLoad %v3int %357 + %359 = OpVectorShuffle %v4int %358 %358 1 1 2 1 + OpStore %yyzy %359 + %361 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %362 = OpLoad %v3int %361 + %363 = OpVectorShuffle %v4int %362 %362 1 1 2 2 + OpStore %yyzz %363 + %365 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %366 = OpLoad %v3int %365 + %367 = OpVectorShuffle %v4int %366 %366 1 2 0 0 + OpStore %yzxx %367 + %369 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %370 = OpLoad %v3int %369 + %371 = OpVectorShuffle %v4int %370 %370 1 2 0 1 + OpStore %yzxy %371 + %373 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %374 = OpLoad %v3int %373 + %375 = OpVectorShuffle %v4int %374 %374 1 2 0 2 + OpStore %yzxz %375 + %377 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %378 = OpLoad %v3int %377 + %379 = OpVectorShuffle %v4int %378 %378 1 2 1 0 + OpStore %yzyx %379 + %381 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %382 = OpLoad %v3int %381 + %383 = OpVectorShuffle %v4int %382 %382 1 2 1 1 + OpStore %yzyy %383 + %385 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %386 = OpLoad %v3int %385 + %387 = OpVectorShuffle %v4int %386 %386 1 2 1 2 + OpStore %yzyz %387 + %389 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %390 = OpLoad %v3int %389 + %391 = OpVectorShuffle %v4int %390 %390 1 2 2 0 + OpStore %yzzx %391 + %393 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %394 = OpLoad %v3int %393 + %395 = OpVectorShuffle %v4int %394 %394 1 2 2 1 + OpStore %yzzy %395 + %397 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %398 = OpLoad %v3int %397 + %399 = OpVectorShuffle %v4int %398 %398 1 2 2 2 + OpStore %yzzz %399 + %401 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %402 = OpLoad %v3int %401 + %403 = OpVectorShuffle %v4int %402 %402 2 0 0 0 + OpStore %zxxx %403 + %405 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %406 = OpLoad %v3int %405 + %407 = OpVectorShuffle %v4int %406 %406 2 0 0 1 + OpStore %zxxy %407 + %409 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %410 = OpLoad %v3int %409 + %411 = OpVectorShuffle %v4int %410 %410 2 0 0 2 + OpStore %zxxz %411 + %413 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %414 = OpLoad %v3int %413 + %415 = OpVectorShuffle %v4int %414 %414 2 0 1 0 + OpStore %zxyx %415 + %417 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %418 = OpLoad %v3int %417 + %419 = OpVectorShuffle %v4int %418 %418 2 0 1 1 + OpStore %zxyy %419 + %421 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %422 = OpLoad %v3int %421 + %423 = OpVectorShuffle %v4int %422 %422 2 0 1 2 + OpStore %zxyz %423 + %425 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %426 = OpLoad %v3int %425 + %427 = OpVectorShuffle %v4int %426 %426 2 0 2 0 + OpStore %zxzx %427 + %429 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %430 = OpLoad %v3int %429 + %431 = OpVectorShuffle %v4int %430 %430 2 0 2 1 + OpStore %zxzy %431 + %433 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %434 = OpLoad %v3int %433 + %435 = OpVectorShuffle %v4int %434 %434 2 0 2 2 + OpStore %zxzz %435 + %437 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %438 = OpLoad %v3int %437 + %439 = OpVectorShuffle %v4int %438 %438 2 1 0 0 + OpStore %zyxx %439 + %441 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %442 = OpLoad %v3int %441 + %443 = OpVectorShuffle %v4int %442 %442 2 1 0 1 + OpStore %zyxy %443 + %445 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %446 = OpLoad %v3int %445 + %447 = OpVectorShuffle %v4int %446 %446 2 1 0 2 + OpStore %zyxz %447 + %449 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %450 = OpLoad %v3int %449 + %451 = OpVectorShuffle %v4int %450 %450 2 1 1 0 + OpStore %zyyx %451 + %453 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %454 = OpLoad %v3int %453 + %455 = OpVectorShuffle %v4int %454 %454 2 1 1 1 + OpStore %zyyy %455 + %457 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %458 = OpLoad %v3int %457 + %459 = OpVectorShuffle %v4int %458 %458 2 1 1 2 + OpStore %zyyz %459 + %461 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %462 = OpLoad %v3int %461 + %463 = OpVectorShuffle %v4int %462 %462 2 1 2 0 + OpStore %zyzx %463 + %465 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %466 = OpLoad %v3int %465 + %467 = OpVectorShuffle %v4int %466 %466 2 1 2 1 + OpStore %zyzy %467 + %469 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %470 = OpLoad %v3int %469 + %471 = OpVectorShuffle %v4int %470 %470 2 1 2 2 + OpStore %zyzz %471 + %473 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %474 = OpLoad %v3int %473 + %475 = OpVectorShuffle %v4int %474 %474 2 2 0 0 + OpStore %zzxx %475 + %477 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %478 = OpLoad %v3int %477 + %479 = OpVectorShuffle %v4int %478 %478 2 2 0 1 + OpStore %zzxy %479 + %481 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %482 = OpLoad %v3int %481 + %483 = OpVectorShuffle %v4int %482 %482 2 2 0 2 + OpStore %zzxz %483 + %485 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %486 = OpLoad %v3int %485 + %487 = OpVectorShuffle %v4int %486 %486 2 2 1 0 + OpStore %zzyx %487 + %489 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %490 = OpLoad %v3int %489 + %491 = OpVectorShuffle %v4int %490 %490 2 2 1 1 + OpStore %zzyy %491 + %493 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %494 = OpLoad %v3int %493 + %495 = OpVectorShuffle %v4int %494 %494 2 2 1 2 + OpStore %zzyz %495 + %497 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %498 = OpLoad %v3int %497 + %499 = OpVectorShuffle %v4int %498 %498 2 2 2 0 + OpStore %zzzx %499 + %501 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %502 = OpLoad %v3int %501 + %503 = OpVectorShuffle %v4int %502 %502 2 2 2 1 + OpStore %zzzy %503 + %505 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + %506 = OpLoad %v3int %505 + %507 = OpVectorShuffle %v4int %506 %506 2 2 2 2 + OpStore %zzzz %507 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl new file mode 100644 index 0000000000..9b440ce773 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.wgsl @@ -0,0 +1,129 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl b/test/expressions/swizzle/read/vec3/u32.wgsl new file mode 100644 index 0000000000..73dbbafae0 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/u32.wgsl @@ -0,0 +1,143 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.hlsl b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.hlsl new file mode 100644 index 0000000000..79fb83777f --- /dev/null +++ b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.hlsl @@ -0,0 +1,134 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + uint3 v; +}; + +static S P = (S)0; + +void f() { + uint3 v = P.v; + uint x = P.v.x; + uint y = P.v.y; + uint z = P.v.z; + uint2 xx = P.v.xx; + uint2 xy = P.v.xy; + uint2 xz = P.v.xz; + uint2 yx = P.v.yx; + uint2 yy = P.v.yy; + uint2 yz = P.v.yz; + uint2 zx = P.v.zx; + uint2 zy = P.v.zy; + uint2 zz = P.v.zz; + uint3 xxx = P.v.xxx; + uint3 xxy = P.v.xxy; + uint3 xxz = P.v.xxz; + uint3 xyx = P.v.xyx; + uint3 xyy = P.v.xyy; + uint3 xyz = P.v.xyz; + uint3 xzx = P.v.xzx; + uint3 xzy = P.v.xzy; + uint3 xzz = P.v.xzz; + uint3 yxx = P.v.yxx; + uint3 yxy = P.v.yxy; + uint3 yxz = P.v.yxz; + uint3 yyx = P.v.yyx; + uint3 yyy = P.v.yyy; + uint3 yyz = P.v.yyz; + uint3 yzx = P.v.yzx; + uint3 yzy = P.v.yzy; + uint3 yzz = P.v.yzz; + uint3 zxx = P.v.zxx; + uint3 zxy = P.v.zxy; + uint3 zxz = P.v.zxz; + uint3 zyx = P.v.zyx; + uint3 zyy = P.v.zyy; + uint3 zyz = P.v.zyz; + uint3 zzx = P.v.zzx; + uint3 zzy = P.v.zzy; + uint3 zzz = P.v.zzz; + uint4 xxxx = P.v.xxxx; + uint4 xxxy = P.v.xxxy; + uint4 xxxz = P.v.xxxz; + uint4 xxyx = P.v.xxyx; + uint4 xxyy = P.v.xxyy; + uint4 xxyz = P.v.xxyz; + uint4 xxzx = P.v.xxzx; + uint4 xxzy = P.v.xxzy; + uint4 xxzz = P.v.xxzz; + uint4 xyxx = P.v.xyxx; + uint4 xyxy = P.v.xyxy; + uint4 xyxz = P.v.xyxz; + uint4 xyyx = P.v.xyyx; + uint4 xyyy = P.v.xyyy; + uint4 xyyz = P.v.xyyz; + uint4 xyzx = P.v.xyzx; + uint4 xyzy = P.v.xyzy; + uint4 xyzz = P.v.xyzz; + uint4 xzxx = P.v.xzxx; + uint4 xzxy = P.v.xzxy; + uint4 xzxz = P.v.xzxz; + uint4 xzyx = P.v.xzyx; + uint4 xzyy = P.v.xzyy; + uint4 xzyz = P.v.xzyz; + uint4 xzzx = P.v.xzzx; + uint4 xzzy = P.v.xzzy; + uint4 xzzz = P.v.xzzz; + uint4 yxxx = P.v.yxxx; + uint4 yxxy = P.v.yxxy; + uint4 yxxz = P.v.yxxz; + uint4 yxyx = P.v.yxyx; + uint4 yxyy = P.v.yxyy; + uint4 yxyz = P.v.yxyz; + uint4 yxzx = P.v.yxzx; + uint4 yxzy = P.v.yxzy; + uint4 yxzz = P.v.yxzz; + uint4 yyxx = P.v.yyxx; + uint4 yyxy = P.v.yyxy; + uint4 yyxz = P.v.yyxz; + uint4 yyyx = P.v.yyyx; + uint4 yyyy = P.v.yyyy; + uint4 yyyz = P.v.yyyz; + uint4 yyzx = P.v.yyzx; + uint4 yyzy = P.v.yyzy; + uint4 yyzz = P.v.yyzz; + uint4 yzxx = P.v.yzxx; + uint4 yzxy = P.v.yzxy; + uint4 yzxz = P.v.yzxz; + uint4 yzyx = P.v.yzyx; + uint4 yzyy = P.v.yzyy; + uint4 yzyz = P.v.yzyz; + uint4 yzzx = P.v.yzzx; + uint4 yzzy = P.v.yzzy; + uint4 yzzz = P.v.yzzz; + uint4 zxxx = P.v.zxxx; + uint4 zxxy = P.v.zxxy; + uint4 zxxz = P.v.zxxz; + uint4 zxyx = P.v.zxyx; + uint4 zxyy = P.v.zxyy; + uint4 zxyz = P.v.zxyz; + uint4 zxzx = P.v.zxzx; + uint4 zxzy = P.v.zxzy; + uint4 zxzz = P.v.zxzz; + uint4 zyxx = P.v.zyxx; + uint4 zyxy = P.v.zyxy; + uint4 zyxz = P.v.zyxz; + uint4 zyyx = P.v.zyyx; + uint4 zyyy = P.v.zyyy; + uint4 zyyz = P.v.zyyz; + uint4 zyzx = P.v.zyzx; + uint4 zyzy = P.v.zyzy; + uint4 zyzz = P.v.zyzz; + uint4 zzxx = P.v.zzxx; + uint4 zzxy = P.v.zzxy; + uint4 zzxz = P.v.zzxz; + uint4 zzyx = P.v.zzyx; + uint4 zzyy = P.v.zzyy; + uint4 zzyz = P.v.zzyz; + uint4 zzzx = P.v.zzzx; + uint4 zzzy = P.v.zzzy; + uint4 zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.msl new file mode 100644 index 0000000000..61bc87d078 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.msl @@ -0,0 +1,131 @@ +#include + +using namespace metal; +struct S { + uint3 v; +}; + +void f(thread S* const tint_symbol) { + uint3 v = (*(tint_symbol)).v; + uint x = (*(tint_symbol)).v[0]; + uint y = (*(tint_symbol)).v[1]; + uint z = (*(tint_symbol)).v[2]; + uint2 xx = uint3((*(tint_symbol)).v).xx; + uint2 xy = uint3((*(tint_symbol)).v).xy; + uint2 xz = uint3((*(tint_symbol)).v).xz; + uint2 yx = uint3((*(tint_symbol)).v).yx; + uint2 yy = uint3((*(tint_symbol)).v).yy; + uint2 yz = uint3((*(tint_symbol)).v).yz; + uint2 zx = uint3((*(tint_symbol)).v).zx; + uint2 zy = uint3((*(tint_symbol)).v).zy; + uint2 zz = uint3((*(tint_symbol)).v).zz; + uint3 xxx = uint3((*(tint_symbol)).v).xxx; + uint3 xxy = uint3((*(tint_symbol)).v).xxy; + uint3 xxz = uint3((*(tint_symbol)).v).xxz; + uint3 xyx = uint3((*(tint_symbol)).v).xyx; + uint3 xyy = uint3((*(tint_symbol)).v).xyy; + uint3 xyz = uint3((*(tint_symbol)).v).xyz; + uint3 xzx = uint3((*(tint_symbol)).v).xzx; + uint3 xzy = uint3((*(tint_symbol)).v).xzy; + uint3 xzz = uint3((*(tint_symbol)).v).xzz; + uint3 yxx = uint3((*(tint_symbol)).v).yxx; + uint3 yxy = uint3((*(tint_symbol)).v).yxy; + uint3 yxz = uint3((*(tint_symbol)).v).yxz; + uint3 yyx = uint3((*(tint_symbol)).v).yyx; + uint3 yyy = uint3((*(tint_symbol)).v).yyy; + uint3 yyz = uint3((*(tint_symbol)).v).yyz; + uint3 yzx = uint3((*(tint_symbol)).v).yzx; + uint3 yzy = uint3((*(tint_symbol)).v).yzy; + uint3 yzz = uint3((*(tint_symbol)).v).yzz; + uint3 zxx = uint3((*(tint_symbol)).v).zxx; + uint3 zxy = uint3((*(tint_symbol)).v).zxy; + uint3 zxz = uint3((*(tint_symbol)).v).zxz; + uint3 zyx = uint3((*(tint_symbol)).v).zyx; + uint3 zyy = uint3((*(tint_symbol)).v).zyy; + uint3 zyz = uint3((*(tint_symbol)).v).zyz; + uint3 zzx = uint3((*(tint_symbol)).v).zzx; + uint3 zzy = uint3((*(tint_symbol)).v).zzy; + uint3 zzz = uint3((*(tint_symbol)).v).zzz; + uint4 xxxx = uint3((*(tint_symbol)).v).xxxx; + uint4 xxxy = uint3((*(tint_symbol)).v).xxxy; + uint4 xxxz = uint3((*(tint_symbol)).v).xxxz; + uint4 xxyx = uint3((*(tint_symbol)).v).xxyx; + uint4 xxyy = uint3((*(tint_symbol)).v).xxyy; + uint4 xxyz = uint3((*(tint_symbol)).v).xxyz; + uint4 xxzx = uint3((*(tint_symbol)).v).xxzx; + uint4 xxzy = uint3((*(tint_symbol)).v).xxzy; + uint4 xxzz = uint3((*(tint_symbol)).v).xxzz; + uint4 xyxx = uint3((*(tint_symbol)).v).xyxx; + uint4 xyxy = uint3((*(tint_symbol)).v).xyxy; + uint4 xyxz = uint3((*(tint_symbol)).v).xyxz; + uint4 xyyx = uint3((*(tint_symbol)).v).xyyx; + uint4 xyyy = uint3((*(tint_symbol)).v).xyyy; + uint4 xyyz = uint3((*(tint_symbol)).v).xyyz; + uint4 xyzx = uint3((*(tint_symbol)).v).xyzx; + uint4 xyzy = uint3((*(tint_symbol)).v).xyzy; + uint4 xyzz = uint3((*(tint_symbol)).v).xyzz; + uint4 xzxx = uint3((*(tint_symbol)).v).xzxx; + uint4 xzxy = uint3((*(tint_symbol)).v).xzxy; + uint4 xzxz = uint3((*(tint_symbol)).v).xzxz; + uint4 xzyx = uint3((*(tint_symbol)).v).xzyx; + uint4 xzyy = uint3((*(tint_symbol)).v).xzyy; + uint4 xzyz = uint3((*(tint_symbol)).v).xzyz; + uint4 xzzx = uint3((*(tint_symbol)).v).xzzx; + uint4 xzzy = uint3((*(tint_symbol)).v).xzzy; + uint4 xzzz = uint3((*(tint_symbol)).v).xzzz; + uint4 yxxx = uint3((*(tint_symbol)).v).yxxx; + uint4 yxxy = uint3((*(tint_symbol)).v).yxxy; + uint4 yxxz = uint3((*(tint_symbol)).v).yxxz; + uint4 yxyx = uint3((*(tint_symbol)).v).yxyx; + uint4 yxyy = uint3((*(tint_symbol)).v).yxyy; + uint4 yxyz = uint3((*(tint_symbol)).v).yxyz; + uint4 yxzx = uint3((*(tint_symbol)).v).yxzx; + uint4 yxzy = uint3((*(tint_symbol)).v).yxzy; + uint4 yxzz = uint3((*(tint_symbol)).v).yxzz; + uint4 yyxx = uint3((*(tint_symbol)).v).yyxx; + uint4 yyxy = uint3((*(tint_symbol)).v).yyxy; + uint4 yyxz = uint3((*(tint_symbol)).v).yyxz; + uint4 yyyx = uint3((*(tint_symbol)).v).yyyx; + uint4 yyyy = uint3((*(tint_symbol)).v).yyyy; + uint4 yyyz = uint3((*(tint_symbol)).v).yyyz; + uint4 yyzx = uint3((*(tint_symbol)).v).yyzx; + uint4 yyzy = uint3((*(tint_symbol)).v).yyzy; + uint4 yyzz = uint3((*(tint_symbol)).v).yyzz; + uint4 yzxx = uint3((*(tint_symbol)).v).yzxx; + uint4 yzxy = uint3((*(tint_symbol)).v).yzxy; + uint4 yzxz = uint3((*(tint_symbol)).v).yzxz; + uint4 yzyx = uint3((*(tint_symbol)).v).yzyx; + uint4 yzyy = uint3((*(tint_symbol)).v).yzyy; + uint4 yzyz = uint3((*(tint_symbol)).v).yzyz; + uint4 yzzx = uint3((*(tint_symbol)).v).yzzx; + uint4 yzzy = uint3((*(tint_symbol)).v).yzzy; + uint4 yzzz = uint3((*(tint_symbol)).v).yzzz; + uint4 zxxx = uint3((*(tint_symbol)).v).zxxx; + uint4 zxxy = uint3((*(tint_symbol)).v).zxxy; + uint4 zxxz = uint3((*(tint_symbol)).v).zxxz; + uint4 zxyx = uint3((*(tint_symbol)).v).zxyx; + uint4 zxyy = uint3((*(tint_symbol)).v).zxyy; + uint4 zxyz = uint3((*(tint_symbol)).v).zxyz; + uint4 zxzx = uint3((*(tint_symbol)).v).zxzx; + uint4 zxzy = uint3((*(tint_symbol)).v).zxzy; + uint4 zxzz = uint3((*(tint_symbol)).v).zxzz; + uint4 zyxx = uint3((*(tint_symbol)).v).zyxx; + uint4 zyxy = uint3((*(tint_symbol)).v).zyxy; + uint4 zyxz = uint3((*(tint_symbol)).v).zyxz; + uint4 zyyx = uint3((*(tint_symbol)).v).zyyx; + uint4 zyyy = uint3((*(tint_symbol)).v).zyyy; + uint4 zyyz = uint3((*(tint_symbol)).v).zyyz; + uint4 zyzx = uint3((*(tint_symbol)).v).zyzx; + uint4 zyzy = uint3((*(tint_symbol)).v).zyzy; + uint4 zyzz = uint3((*(tint_symbol)).v).zyzz; + uint4 zzxx = uint3((*(tint_symbol)).v).zzxx; + uint4 zzxy = uint3((*(tint_symbol)).v).zzxy; + uint4 zzxz = uint3((*(tint_symbol)).v).zzxz; + uint4 zzyx = uint3((*(tint_symbol)).v).zzyx; + uint4 zzyy = uint3((*(tint_symbol)).v).zzyy; + uint4 zzyz = uint3((*(tint_symbol)).v).zzyz; + uint4 zzzx = uint3((*(tint_symbol)).v).zzzx; + uint4 zzzy = uint3((*(tint_symbol)).v).zzzy; + uint4 zzzz = uint3((*(tint_symbol)).v).zzzz; +} + diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.spvasm b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.spvasm new file mode 100644 index 0000000000..5ded79260e --- /dev/null +++ b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.spvasm @@ -0,0 +1,768 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 508 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpName %v "v" + OpName %x "x" + OpName %y "y" + OpName %z "z" + OpName %xx "xx" + OpName %xy "xy" + OpName %xz "xz" + OpName %yx "yx" + OpName %yy "yy" + OpName %yz "yz" + OpName %zx "zx" + OpName %zy "zy" + OpName %zz "zz" + OpName %xxx "xxx" + OpName %xxy "xxy" + OpName %xxz "xxz" + OpName %xyx "xyx" + OpName %xyy "xyy" + OpName %xyz "xyz" + OpName %xzx "xzx" + OpName %xzy "xzy" + OpName %xzz "xzz" + OpName %yxx "yxx" + OpName %yxy "yxy" + OpName %yxz "yxz" + OpName %yyx "yyx" + OpName %yyy "yyy" + OpName %yyz "yyz" + OpName %yzx "yzx" + OpName %yzy "yzy" + OpName %yzz "yzz" + OpName %zxx "zxx" + OpName %zxy "zxy" + OpName %zxz "zxz" + OpName %zyx "zyx" + OpName %zyy "zyy" + OpName %zyz "zyz" + OpName %zzx "zzx" + OpName %zzy "zzy" + OpName %zzz "zzz" + OpName %xxxx "xxxx" + OpName %xxxy "xxxy" + OpName %xxxz "xxxz" + OpName %xxyx "xxyx" + OpName %xxyy "xxyy" + OpName %xxyz "xxyz" + OpName %xxzx "xxzx" + OpName %xxzy "xxzy" + OpName %xxzz "xxzz" + OpName %xyxx "xyxx" + OpName %xyxy "xyxy" + OpName %xyxz "xyxz" + OpName %xyyx "xyyx" + OpName %xyyy "xyyy" + OpName %xyyz "xyyz" + OpName %xyzx "xyzx" + OpName %xyzy "xyzy" + OpName %xyzz "xyzz" + OpName %xzxx "xzxx" + OpName %xzxy "xzxy" + OpName %xzxz "xzxz" + OpName %xzyx "xzyx" + OpName %xzyy "xzyy" + OpName %xzyz "xzyz" + OpName %xzzx "xzzx" + OpName %xzzy "xzzy" + OpName %xzzz "xzzz" + OpName %yxxx "yxxx" + OpName %yxxy "yxxy" + OpName %yxxz "yxxz" + OpName %yxyx "yxyx" + OpName %yxyy "yxyy" + OpName %yxyz "yxyz" + OpName %yxzx "yxzx" + OpName %yxzy "yxzy" + OpName %yxzz "yxzz" + OpName %yyxx "yyxx" + OpName %yyxy "yyxy" + OpName %yyxz "yyxz" + OpName %yyyx "yyyx" + OpName %yyyy "yyyy" + OpName %yyyz "yyyz" + OpName %yyzx "yyzx" + OpName %yyzy "yyzy" + OpName %yyzz "yyzz" + OpName %yzxx "yzxx" + OpName %yzxy "yzxy" + OpName %yzxz "yzxz" + OpName %yzyx "yzyx" + OpName %yzyy "yzyy" + OpName %yzyz "yzyz" + OpName %yzzx "yzzx" + OpName %yzzy "yzzy" + OpName %yzzz "yzzz" + OpName %zxxx "zxxx" + OpName %zxxy "zxxy" + OpName %zxxz "zxxz" + OpName %zxyx "zxyx" + OpName %zxyy "zxyy" + OpName %zxyz "zxyz" + OpName %zxzx "zxzx" + OpName %zxzy "zxzy" + OpName %zxzz "zxzz" + OpName %zyxx "zyxx" + OpName %zyxy "zyxy" + OpName %zyxz "zyxz" + OpName %zyyx "zyyx" + OpName %zyyy "zyyy" + OpName %zyyz "zyyz" + OpName %zyzx "zyzx" + OpName %zyzy "zyzy" + OpName %zyzz "zyzz" + OpName %zzxx "zzxx" + OpName %zzxy "zzxy" + OpName %zzxz "zzxz" + OpName %zzyx "zzyx" + OpName %zzyy "zzyy" + OpName %zzyz "zzyz" + OpName %zzzx "zzzx" + OpName %zzzy "zzzy" + OpName %zzzz "zzzz" + OpMemberDecorate %S 0 Offset 0 + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %S = OpTypeStruct %v3uint +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3uint = OpTypePointer Private %v3uint +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %19 = OpConstantNull %v3uint +%_ptr_Private_uint = OpTypePointer Private %uint +%_ptr_Function_uint = OpTypePointer Function %uint + %25 = OpConstantNull %uint + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %v2uint = OpTypeVector %uint 2 +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %40 = OpConstantNull %v2uint + %v4uint = OpTypeVector %uint 4 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %187 = OpConstantNull %v4uint +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %v = OpVariable %_ptr_Function_v3uint Function %19 + %x = OpVariable %_ptr_Function_uint Function %25 + %y = OpVariable %_ptr_Function_uint Function %25 + %z = OpVariable %_ptr_Function_uint Function %25 + %xx = OpVariable %_ptr_Function_v2uint Function %40 + %xy = OpVariable %_ptr_Function_v2uint Function %40 + %xz = OpVariable %_ptr_Function_v2uint Function %40 + %yx = OpVariable %_ptr_Function_v2uint Function %40 + %yy = OpVariable %_ptr_Function_v2uint Function %40 + %yz = OpVariable %_ptr_Function_v2uint Function %40 + %zx = OpVariable %_ptr_Function_v2uint Function %40 + %zy = OpVariable %_ptr_Function_v2uint Function %40 + %zz = OpVariable %_ptr_Function_v2uint Function %40 + %xxx = OpVariable %_ptr_Function_v3uint Function %19 + %xxy = OpVariable %_ptr_Function_v3uint Function %19 + %xxz = OpVariable %_ptr_Function_v3uint Function %19 + %xyx = OpVariable %_ptr_Function_v3uint Function %19 + %xyy = OpVariable %_ptr_Function_v3uint Function %19 + %xyz = OpVariable %_ptr_Function_v3uint Function %19 + %xzx = OpVariable %_ptr_Function_v3uint Function %19 + %xzy = OpVariable %_ptr_Function_v3uint Function %19 + %xzz = OpVariable %_ptr_Function_v3uint Function %19 + %yxx = OpVariable %_ptr_Function_v3uint Function %19 + %yxy = OpVariable %_ptr_Function_v3uint Function %19 + %yxz = OpVariable %_ptr_Function_v3uint Function %19 + %yyx = OpVariable %_ptr_Function_v3uint Function %19 + %yyy = OpVariable %_ptr_Function_v3uint Function %19 + %yyz = OpVariable %_ptr_Function_v3uint Function %19 + %yzx = OpVariable %_ptr_Function_v3uint Function %19 + %yzy = OpVariable %_ptr_Function_v3uint Function %19 + %yzz = OpVariable %_ptr_Function_v3uint Function %19 + %zxx = OpVariable %_ptr_Function_v3uint Function %19 + %zxy = OpVariable %_ptr_Function_v3uint Function %19 + %zxz = OpVariable %_ptr_Function_v3uint Function %19 + %zyx = OpVariable %_ptr_Function_v3uint Function %19 + %zyy = OpVariable %_ptr_Function_v3uint Function %19 + %zyz = OpVariable %_ptr_Function_v3uint Function %19 + %zzx = OpVariable %_ptr_Function_v3uint Function %19 + %zzy = OpVariable %_ptr_Function_v3uint Function %19 + %zzz = OpVariable %_ptr_Function_v3uint Function %19 + %xxxx = OpVariable %_ptr_Function_v4uint Function %187 + %xxxy = OpVariable %_ptr_Function_v4uint Function %187 + %xxxz = OpVariable %_ptr_Function_v4uint Function %187 + %xxyx = OpVariable %_ptr_Function_v4uint Function %187 + %xxyy = OpVariable %_ptr_Function_v4uint Function %187 + %xxyz = OpVariable %_ptr_Function_v4uint Function %187 + %xxzx = OpVariable %_ptr_Function_v4uint Function %187 + %xxzy = OpVariable %_ptr_Function_v4uint Function %187 + %xxzz = OpVariable %_ptr_Function_v4uint Function %187 + %xyxx = OpVariable %_ptr_Function_v4uint Function %187 + %xyxy = OpVariable %_ptr_Function_v4uint Function %187 + %xyxz = OpVariable %_ptr_Function_v4uint Function %187 + %xyyx = OpVariable %_ptr_Function_v4uint Function %187 + %xyyy = OpVariable %_ptr_Function_v4uint Function %187 + %xyyz = OpVariable %_ptr_Function_v4uint Function %187 + %xyzx = OpVariable %_ptr_Function_v4uint Function %187 + %xyzy = OpVariable %_ptr_Function_v4uint Function %187 + %xyzz = OpVariable %_ptr_Function_v4uint Function %187 + %xzxx = OpVariable %_ptr_Function_v4uint Function %187 + %xzxy = OpVariable %_ptr_Function_v4uint Function %187 + %xzxz = OpVariable %_ptr_Function_v4uint Function %187 + %xzyx = OpVariable %_ptr_Function_v4uint Function %187 + %xzyy = OpVariable %_ptr_Function_v4uint Function %187 + %xzyz = OpVariable %_ptr_Function_v4uint Function %187 + %xzzx = OpVariable %_ptr_Function_v4uint Function %187 + %xzzy = OpVariable %_ptr_Function_v4uint Function %187 + %xzzz = OpVariable %_ptr_Function_v4uint Function %187 + %yxxx = OpVariable %_ptr_Function_v4uint Function %187 + %yxxy = OpVariable %_ptr_Function_v4uint Function %187 + %yxxz = OpVariable %_ptr_Function_v4uint Function %187 + %yxyx = OpVariable %_ptr_Function_v4uint Function %187 + %yxyy = OpVariable %_ptr_Function_v4uint Function %187 + %yxyz = OpVariable %_ptr_Function_v4uint Function %187 + %yxzx = OpVariable %_ptr_Function_v4uint Function %187 + %yxzy = OpVariable %_ptr_Function_v4uint Function %187 + %yxzz = OpVariable %_ptr_Function_v4uint Function %187 + %yyxx = OpVariable %_ptr_Function_v4uint Function %187 + %yyxy = OpVariable %_ptr_Function_v4uint Function %187 + %yyxz = OpVariable %_ptr_Function_v4uint Function %187 + %yyyx = OpVariable %_ptr_Function_v4uint Function %187 + %yyyy = OpVariable %_ptr_Function_v4uint Function %187 + %yyyz = OpVariable %_ptr_Function_v4uint Function %187 + %yyzx = OpVariable %_ptr_Function_v4uint Function %187 + %yyzy = OpVariable %_ptr_Function_v4uint Function %187 + %yyzz = OpVariable %_ptr_Function_v4uint Function %187 + %yzxx = OpVariable %_ptr_Function_v4uint Function %187 + %yzxy = OpVariable %_ptr_Function_v4uint Function %187 + %yzxz = OpVariable %_ptr_Function_v4uint Function %187 + %yzyx = OpVariable %_ptr_Function_v4uint Function %187 + %yzyy = OpVariable %_ptr_Function_v4uint Function %187 + %yzyz = OpVariable %_ptr_Function_v4uint Function %187 + %yzzx = OpVariable %_ptr_Function_v4uint Function %187 + %yzzy = OpVariable %_ptr_Function_v4uint Function %187 + %yzzz = OpVariable %_ptr_Function_v4uint Function %187 + %zxxx = OpVariable %_ptr_Function_v4uint Function %187 + %zxxy = OpVariable %_ptr_Function_v4uint Function %187 + %zxxz = OpVariable %_ptr_Function_v4uint Function %187 + %zxyx = OpVariable %_ptr_Function_v4uint Function %187 + %zxyy = OpVariable %_ptr_Function_v4uint Function %187 + %zxyz = OpVariable %_ptr_Function_v4uint Function %187 + %zxzx = OpVariable %_ptr_Function_v4uint Function %187 + %zxzy = OpVariable %_ptr_Function_v4uint Function %187 + %zxzz = OpVariable %_ptr_Function_v4uint Function %187 + %zyxx = OpVariable %_ptr_Function_v4uint Function %187 + %zyxy = OpVariable %_ptr_Function_v4uint Function %187 + %zyxz = OpVariable %_ptr_Function_v4uint Function %187 + %zyyx = OpVariable %_ptr_Function_v4uint Function %187 + %zyyy = OpVariable %_ptr_Function_v4uint Function %187 + %zyyz = OpVariable %_ptr_Function_v4uint Function %187 + %zyzx = OpVariable %_ptr_Function_v4uint Function %187 + %zyzy = OpVariable %_ptr_Function_v4uint Function %187 + %zyzz = OpVariable %_ptr_Function_v4uint Function %187 + %zzxx = OpVariable %_ptr_Function_v4uint Function %187 + %zzxy = OpVariable %_ptr_Function_v4uint Function %187 + %zzxz = OpVariable %_ptr_Function_v4uint Function %187 + %zzyx = OpVariable %_ptr_Function_v4uint Function %187 + %zzyy = OpVariable %_ptr_Function_v4uint Function %187 + %zzyz = OpVariable %_ptr_Function_v4uint Function %187 + %zzzx = OpVariable %_ptr_Function_v4uint Function %187 + %zzzy = OpVariable %_ptr_Function_v4uint Function %187 + %zzzz = OpVariable %_ptr_Function_v4uint Function %187 + %15 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %16 = OpLoad %v3uint %15 + OpStore %v %16 + %21 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_0 + %22 = OpLoad %uint %21 + OpStore %x %22 + %27 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_1 + %28 = OpLoad %uint %27 + OpStore %y %28 + %31 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_2 + %32 = OpLoad %uint %31 + OpStore %z %32 + %34 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %36 = OpLoad %v3uint %34 + %37 = OpVectorShuffle %v2uint %36 %36 0 0 + OpStore %xx %37 + %41 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %42 = OpLoad %v3uint %41 + %43 = OpVectorShuffle %v2uint %42 %42 0 1 + OpStore %xy %43 + %45 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %46 = OpLoad %v3uint %45 + %47 = OpVectorShuffle %v2uint %46 %46 0 2 + OpStore %xz %47 + %49 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %50 = OpLoad %v3uint %49 + %51 = OpVectorShuffle %v2uint %50 %50 1 0 + OpStore %yx %51 + %53 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %54 = OpLoad %v3uint %53 + %55 = OpVectorShuffle %v2uint %54 %54 1 1 + OpStore %yy %55 + %57 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %58 = OpLoad %v3uint %57 + %59 = OpVectorShuffle %v2uint %58 %58 1 2 + OpStore %yz %59 + %61 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %62 = OpLoad %v3uint %61 + %63 = OpVectorShuffle %v2uint %62 %62 2 0 + OpStore %zx %63 + %65 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %66 = OpLoad %v3uint %65 + %67 = OpVectorShuffle %v2uint %66 %66 2 1 + OpStore %zy %67 + %69 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %70 = OpLoad %v3uint %69 + %71 = OpVectorShuffle %v2uint %70 %70 2 2 + OpStore %zz %71 + %73 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %74 = OpLoad %v3uint %73 + %75 = OpVectorShuffle %v3uint %74 %74 0 0 0 + OpStore %xxx %75 + %77 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %78 = OpLoad %v3uint %77 + %79 = OpVectorShuffle %v3uint %78 %78 0 0 1 + OpStore %xxy %79 + %81 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %82 = OpLoad %v3uint %81 + %83 = OpVectorShuffle %v3uint %82 %82 0 0 2 + OpStore %xxz %83 + %85 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %86 = OpLoad %v3uint %85 + %87 = OpVectorShuffle %v3uint %86 %86 0 1 0 + OpStore %xyx %87 + %89 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %90 = OpLoad %v3uint %89 + %91 = OpVectorShuffle %v3uint %90 %90 0 1 1 + OpStore %xyy %91 + %93 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %94 = OpLoad %v3uint %93 + %95 = OpVectorShuffle %v3uint %94 %94 0 1 2 + OpStore %xyz %95 + %97 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %98 = OpLoad %v3uint %97 + %99 = OpVectorShuffle %v3uint %98 %98 0 2 0 + OpStore %xzx %99 + %101 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %102 = OpLoad %v3uint %101 + %103 = OpVectorShuffle %v3uint %102 %102 0 2 1 + OpStore %xzy %103 + %105 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %106 = OpLoad %v3uint %105 + %107 = OpVectorShuffle %v3uint %106 %106 0 2 2 + OpStore %xzz %107 + %109 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %110 = OpLoad %v3uint %109 + %111 = OpVectorShuffle %v3uint %110 %110 1 0 0 + OpStore %yxx %111 + %113 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %114 = OpLoad %v3uint %113 + %115 = OpVectorShuffle %v3uint %114 %114 1 0 1 + OpStore %yxy %115 + %117 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %118 = OpLoad %v3uint %117 + %119 = OpVectorShuffle %v3uint %118 %118 1 0 2 + OpStore %yxz %119 + %121 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %122 = OpLoad %v3uint %121 + %123 = OpVectorShuffle %v3uint %122 %122 1 1 0 + OpStore %yyx %123 + %125 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %126 = OpLoad %v3uint %125 + %127 = OpVectorShuffle %v3uint %126 %126 1 1 1 + OpStore %yyy %127 + %129 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %130 = OpLoad %v3uint %129 + %131 = OpVectorShuffle %v3uint %130 %130 1 1 2 + OpStore %yyz %131 + %133 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %134 = OpLoad %v3uint %133 + %135 = OpVectorShuffle %v3uint %134 %134 1 2 0 + OpStore %yzx %135 + %137 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %138 = OpLoad %v3uint %137 + %139 = OpVectorShuffle %v3uint %138 %138 1 2 1 + OpStore %yzy %139 + %141 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %142 = OpLoad %v3uint %141 + %143 = OpVectorShuffle %v3uint %142 %142 1 2 2 + OpStore %yzz %143 + %145 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %146 = OpLoad %v3uint %145 + %147 = OpVectorShuffle %v3uint %146 %146 2 0 0 + OpStore %zxx %147 + %149 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %150 = OpLoad %v3uint %149 + %151 = OpVectorShuffle %v3uint %150 %150 2 0 1 + OpStore %zxy %151 + %153 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %154 = OpLoad %v3uint %153 + %155 = OpVectorShuffle %v3uint %154 %154 2 0 2 + OpStore %zxz %155 + %157 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %158 = OpLoad %v3uint %157 + %159 = OpVectorShuffle %v3uint %158 %158 2 1 0 + OpStore %zyx %159 + %161 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %162 = OpLoad %v3uint %161 + %163 = OpVectorShuffle %v3uint %162 %162 2 1 1 + OpStore %zyy %163 + %165 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %166 = OpLoad %v3uint %165 + %167 = OpVectorShuffle %v3uint %166 %166 2 1 2 + OpStore %zyz %167 + %169 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %170 = OpLoad %v3uint %169 + %171 = OpVectorShuffle %v3uint %170 %170 2 2 0 + OpStore %zzx %171 + %173 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %174 = OpLoad %v3uint %173 + %175 = OpVectorShuffle %v3uint %174 %174 2 2 1 + OpStore %zzy %175 + %177 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %178 = OpLoad %v3uint %177 + %179 = OpVectorShuffle %v3uint %178 %178 2 2 2 + OpStore %zzz %179 + %181 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %183 = OpLoad %v3uint %181 + %184 = OpVectorShuffle %v4uint %183 %183 0 0 0 0 + OpStore %xxxx %184 + %188 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %189 = OpLoad %v3uint %188 + %190 = OpVectorShuffle %v4uint %189 %189 0 0 0 1 + OpStore %xxxy %190 + %192 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %193 = OpLoad %v3uint %192 + %194 = OpVectorShuffle %v4uint %193 %193 0 0 0 2 + OpStore %xxxz %194 + %196 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %197 = OpLoad %v3uint %196 + %198 = OpVectorShuffle %v4uint %197 %197 0 0 1 0 + OpStore %xxyx %198 + %200 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %201 = OpLoad %v3uint %200 + %202 = OpVectorShuffle %v4uint %201 %201 0 0 1 1 + OpStore %xxyy %202 + %204 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %205 = OpLoad %v3uint %204 + %206 = OpVectorShuffle %v4uint %205 %205 0 0 1 2 + OpStore %xxyz %206 + %208 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %209 = OpLoad %v3uint %208 + %210 = OpVectorShuffle %v4uint %209 %209 0 0 2 0 + OpStore %xxzx %210 + %212 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %213 = OpLoad %v3uint %212 + %214 = OpVectorShuffle %v4uint %213 %213 0 0 2 1 + OpStore %xxzy %214 + %216 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %217 = OpLoad %v3uint %216 + %218 = OpVectorShuffle %v4uint %217 %217 0 0 2 2 + OpStore %xxzz %218 + %220 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %221 = OpLoad %v3uint %220 + %222 = OpVectorShuffle %v4uint %221 %221 0 1 0 0 + OpStore %xyxx %222 + %224 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %225 = OpLoad %v3uint %224 + %226 = OpVectorShuffle %v4uint %225 %225 0 1 0 1 + OpStore %xyxy %226 + %228 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %229 = OpLoad %v3uint %228 + %230 = OpVectorShuffle %v4uint %229 %229 0 1 0 2 + OpStore %xyxz %230 + %232 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %233 = OpLoad %v3uint %232 + %234 = OpVectorShuffle %v4uint %233 %233 0 1 1 0 + OpStore %xyyx %234 + %236 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %237 = OpLoad %v3uint %236 + %238 = OpVectorShuffle %v4uint %237 %237 0 1 1 1 + OpStore %xyyy %238 + %240 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %241 = OpLoad %v3uint %240 + %242 = OpVectorShuffle %v4uint %241 %241 0 1 1 2 + OpStore %xyyz %242 + %244 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %245 = OpLoad %v3uint %244 + %246 = OpVectorShuffle %v4uint %245 %245 0 1 2 0 + OpStore %xyzx %246 + %248 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %249 = OpLoad %v3uint %248 + %250 = OpVectorShuffle %v4uint %249 %249 0 1 2 1 + OpStore %xyzy %250 + %252 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %253 = OpLoad %v3uint %252 + %254 = OpVectorShuffle %v4uint %253 %253 0 1 2 2 + OpStore %xyzz %254 + %256 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %257 = OpLoad %v3uint %256 + %258 = OpVectorShuffle %v4uint %257 %257 0 2 0 0 + OpStore %xzxx %258 + %260 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %261 = OpLoad %v3uint %260 + %262 = OpVectorShuffle %v4uint %261 %261 0 2 0 1 + OpStore %xzxy %262 + %264 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %265 = OpLoad %v3uint %264 + %266 = OpVectorShuffle %v4uint %265 %265 0 2 0 2 + OpStore %xzxz %266 + %268 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %269 = OpLoad %v3uint %268 + %270 = OpVectorShuffle %v4uint %269 %269 0 2 1 0 + OpStore %xzyx %270 + %272 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %273 = OpLoad %v3uint %272 + %274 = OpVectorShuffle %v4uint %273 %273 0 2 1 1 + OpStore %xzyy %274 + %276 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %277 = OpLoad %v3uint %276 + %278 = OpVectorShuffle %v4uint %277 %277 0 2 1 2 + OpStore %xzyz %278 + %280 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %281 = OpLoad %v3uint %280 + %282 = OpVectorShuffle %v4uint %281 %281 0 2 2 0 + OpStore %xzzx %282 + %284 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %285 = OpLoad %v3uint %284 + %286 = OpVectorShuffle %v4uint %285 %285 0 2 2 1 + OpStore %xzzy %286 + %288 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %289 = OpLoad %v3uint %288 + %290 = OpVectorShuffle %v4uint %289 %289 0 2 2 2 + OpStore %xzzz %290 + %292 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %293 = OpLoad %v3uint %292 + %294 = OpVectorShuffle %v4uint %293 %293 1 0 0 0 + OpStore %yxxx %294 + %296 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %297 = OpLoad %v3uint %296 + %298 = OpVectorShuffle %v4uint %297 %297 1 0 0 1 + OpStore %yxxy %298 + %300 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %301 = OpLoad %v3uint %300 + %302 = OpVectorShuffle %v4uint %301 %301 1 0 0 2 + OpStore %yxxz %302 + %304 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %305 = OpLoad %v3uint %304 + %306 = OpVectorShuffle %v4uint %305 %305 1 0 1 0 + OpStore %yxyx %306 + %308 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %309 = OpLoad %v3uint %308 + %310 = OpVectorShuffle %v4uint %309 %309 1 0 1 1 + OpStore %yxyy %310 + %312 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %313 = OpLoad %v3uint %312 + %314 = OpVectorShuffle %v4uint %313 %313 1 0 1 2 + OpStore %yxyz %314 + %316 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %317 = OpLoad %v3uint %316 + %318 = OpVectorShuffle %v4uint %317 %317 1 0 2 0 + OpStore %yxzx %318 + %320 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %321 = OpLoad %v3uint %320 + %322 = OpVectorShuffle %v4uint %321 %321 1 0 2 1 + OpStore %yxzy %322 + %324 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %325 = OpLoad %v3uint %324 + %326 = OpVectorShuffle %v4uint %325 %325 1 0 2 2 + OpStore %yxzz %326 + %328 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %329 = OpLoad %v3uint %328 + %330 = OpVectorShuffle %v4uint %329 %329 1 1 0 0 + OpStore %yyxx %330 + %332 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %333 = OpLoad %v3uint %332 + %334 = OpVectorShuffle %v4uint %333 %333 1 1 0 1 + OpStore %yyxy %334 + %336 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %337 = OpLoad %v3uint %336 + %338 = OpVectorShuffle %v4uint %337 %337 1 1 0 2 + OpStore %yyxz %338 + %340 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %341 = OpLoad %v3uint %340 + %342 = OpVectorShuffle %v4uint %341 %341 1 1 1 0 + OpStore %yyyx %342 + %344 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %345 = OpLoad %v3uint %344 + %346 = OpVectorShuffle %v4uint %345 %345 1 1 1 1 + OpStore %yyyy %346 + %348 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %349 = OpLoad %v3uint %348 + %350 = OpVectorShuffle %v4uint %349 %349 1 1 1 2 + OpStore %yyyz %350 + %352 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %353 = OpLoad %v3uint %352 + %354 = OpVectorShuffle %v4uint %353 %353 1 1 2 0 + OpStore %yyzx %354 + %356 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %357 = OpLoad %v3uint %356 + %358 = OpVectorShuffle %v4uint %357 %357 1 1 2 1 + OpStore %yyzy %358 + %360 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %361 = OpLoad %v3uint %360 + %362 = OpVectorShuffle %v4uint %361 %361 1 1 2 2 + OpStore %yyzz %362 + %364 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %365 = OpLoad %v3uint %364 + %366 = OpVectorShuffle %v4uint %365 %365 1 2 0 0 + OpStore %yzxx %366 + %368 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %369 = OpLoad %v3uint %368 + %370 = OpVectorShuffle %v4uint %369 %369 1 2 0 1 + OpStore %yzxy %370 + %372 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %373 = OpLoad %v3uint %372 + %374 = OpVectorShuffle %v4uint %373 %373 1 2 0 2 + OpStore %yzxz %374 + %376 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %377 = OpLoad %v3uint %376 + %378 = OpVectorShuffle %v4uint %377 %377 1 2 1 0 + OpStore %yzyx %378 + %380 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %381 = OpLoad %v3uint %380 + %382 = OpVectorShuffle %v4uint %381 %381 1 2 1 1 + OpStore %yzyy %382 + %384 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %385 = OpLoad %v3uint %384 + %386 = OpVectorShuffle %v4uint %385 %385 1 2 1 2 + OpStore %yzyz %386 + %388 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %389 = OpLoad %v3uint %388 + %390 = OpVectorShuffle %v4uint %389 %389 1 2 2 0 + OpStore %yzzx %390 + %392 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %393 = OpLoad %v3uint %392 + %394 = OpVectorShuffle %v4uint %393 %393 1 2 2 1 + OpStore %yzzy %394 + %396 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %397 = OpLoad %v3uint %396 + %398 = OpVectorShuffle %v4uint %397 %397 1 2 2 2 + OpStore %yzzz %398 + %400 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %401 = OpLoad %v3uint %400 + %402 = OpVectorShuffle %v4uint %401 %401 2 0 0 0 + OpStore %zxxx %402 + %404 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %405 = OpLoad %v3uint %404 + %406 = OpVectorShuffle %v4uint %405 %405 2 0 0 1 + OpStore %zxxy %406 + %408 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %409 = OpLoad %v3uint %408 + %410 = OpVectorShuffle %v4uint %409 %409 2 0 0 2 + OpStore %zxxz %410 + %412 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %413 = OpLoad %v3uint %412 + %414 = OpVectorShuffle %v4uint %413 %413 2 0 1 0 + OpStore %zxyx %414 + %416 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %417 = OpLoad %v3uint %416 + %418 = OpVectorShuffle %v4uint %417 %417 2 0 1 1 + OpStore %zxyy %418 + %420 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %421 = OpLoad %v3uint %420 + %422 = OpVectorShuffle %v4uint %421 %421 2 0 1 2 + OpStore %zxyz %422 + %424 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %425 = OpLoad %v3uint %424 + %426 = OpVectorShuffle %v4uint %425 %425 2 0 2 0 + OpStore %zxzx %426 + %428 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %429 = OpLoad %v3uint %428 + %430 = OpVectorShuffle %v4uint %429 %429 2 0 2 1 + OpStore %zxzy %430 + %432 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %433 = OpLoad %v3uint %432 + %434 = OpVectorShuffle %v4uint %433 %433 2 0 2 2 + OpStore %zxzz %434 + %436 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %437 = OpLoad %v3uint %436 + %438 = OpVectorShuffle %v4uint %437 %437 2 1 0 0 + OpStore %zyxx %438 + %440 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %441 = OpLoad %v3uint %440 + %442 = OpVectorShuffle %v4uint %441 %441 2 1 0 1 + OpStore %zyxy %442 + %444 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %445 = OpLoad %v3uint %444 + %446 = OpVectorShuffle %v4uint %445 %445 2 1 0 2 + OpStore %zyxz %446 + %448 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %449 = OpLoad %v3uint %448 + %450 = OpVectorShuffle %v4uint %449 %449 2 1 1 0 + OpStore %zyyx %450 + %452 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %453 = OpLoad %v3uint %452 + %454 = OpVectorShuffle %v4uint %453 %453 2 1 1 1 + OpStore %zyyy %454 + %456 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %457 = OpLoad %v3uint %456 + %458 = OpVectorShuffle %v4uint %457 %457 2 1 1 2 + OpStore %zyyz %458 + %460 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %461 = OpLoad %v3uint %460 + %462 = OpVectorShuffle %v4uint %461 %461 2 1 2 0 + OpStore %zyzx %462 + %464 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %465 = OpLoad %v3uint %464 + %466 = OpVectorShuffle %v4uint %465 %465 2 1 2 1 + OpStore %zyzy %466 + %468 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %469 = OpLoad %v3uint %468 + %470 = OpVectorShuffle %v4uint %469 %469 2 1 2 2 + OpStore %zyzz %470 + %472 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %473 = OpLoad %v3uint %472 + %474 = OpVectorShuffle %v4uint %473 %473 2 2 0 0 + OpStore %zzxx %474 + %476 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %477 = OpLoad %v3uint %476 + %478 = OpVectorShuffle %v4uint %477 %477 2 2 0 1 + OpStore %zzxy %478 + %480 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %481 = OpLoad %v3uint %480 + %482 = OpVectorShuffle %v4uint %481 %481 2 2 0 2 + OpStore %zzxz %482 + %484 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %485 = OpLoad %v3uint %484 + %486 = OpVectorShuffle %v4uint %485 %485 2 2 1 0 + OpStore %zzyx %486 + %488 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %489 = OpLoad %v3uint %488 + %490 = OpVectorShuffle %v4uint %489 %489 2 2 1 1 + OpStore %zzyy %490 + %492 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %493 = OpLoad %v3uint %492 + %494 = OpVectorShuffle %v4uint %493 %493 2 2 1 2 + OpStore %zzyz %494 + %496 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %497 = OpLoad %v3uint %496 + %498 = OpVectorShuffle %v4uint %497 %497 2 2 2 0 + OpStore %zzzx %498 + %500 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %501 = OpLoad %v3uint %500 + %502 = OpVectorShuffle %v4uint %501 %501 2 2 2 1 + OpStore %zzzy %502 + %504 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + %505 = OpLoad %v3uint %504 + %506 = OpVectorShuffle %v4uint %505 %505 2 2 2 2 + OpStore %zzzz %506 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl new file mode 100644 index 0000000000..390ba90985 --- /dev/null +++ b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.wgsl @@ -0,0 +1,129 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + var v = P.v; + var x = P.v.x; + var y = P.v.y; + var z = P.v.z; + var xx = P.v.xx; + var xy = P.v.xy; + var xz = P.v.xz; + var yx = P.v.yx; + var yy = P.v.yy; + var yz = P.v.yz; + var zx = P.v.zx; + var zy = P.v.zy; + var zz = P.v.zz; + var xxx = P.v.xxx; + var xxy = P.v.xxy; + var xxz = P.v.xxz; + var xyx = P.v.xyx; + var xyy = P.v.xyy; + var xyz = P.v.xyz; + var xzx = P.v.xzx; + var xzy = P.v.xzy; + var xzz = P.v.xzz; + var yxx = P.v.yxx; + var yxy = P.v.yxy; + var yxz = P.v.yxz; + var yyx = P.v.yyx; + var yyy = P.v.yyy; + var yyz = P.v.yyz; + var yzx = P.v.yzx; + var yzy = P.v.yzy; + var yzz = P.v.yzz; + var zxx = P.v.zxx; + var zxy = P.v.zxy; + var zxz = P.v.zxz; + var zyx = P.v.zyx; + var zyy = P.v.zyy; + var zyz = P.v.zyz; + var zzx = P.v.zzx; + var zzy = P.v.zzy; + var zzz = P.v.zzz; + var xxxx = P.v.xxxx; + var xxxy = P.v.xxxy; + var xxxz = P.v.xxxz; + var xxyx = P.v.xxyx; + var xxyy = P.v.xxyy; + var xxyz = P.v.xxyz; + var xxzx = P.v.xxzx; + var xxzy = P.v.xxzy; + var xxzz = P.v.xxzz; + var xyxx = P.v.xyxx; + var xyxy = P.v.xyxy; + var xyxz = P.v.xyxz; + var xyyx = P.v.xyyx; + var xyyy = P.v.xyyy; + var xyyz = P.v.xyyz; + var xyzx = P.v.xyzx; + var xyzy = P.v.xyzy; + var xyzz = P.v.xyzz; + var xzxx = P.v.xzxx; + var xzxy = P.v.xzxy; + var xzxz = P.v.xzxz; + var xzyx = P.v.xzyx; + var xzyy = P.v.xzyy; + var xzyz = P.v.xzyz; + var xzzx = P.v.xzzx; + var xzzy = P.v.xzzy; + var xzzz = P.v.xzzz; + var yxxx = P.v.yxxx; + var yxxy = P.v.yxxy; + var yxxz = P.v.yxxz; + var yxyx = P.v.yxyx; + var yxyy = P.v.yxyy; + var yxyz = P.v.yxyz; + var yxzx = P.v.yxzx; + var yxzy = P.v.yxzy; + var yxzz = P.v.yxzz; + var yyxx = P.v.yyxx; + var yyxy = P.v.yyxy; + var yyxz = P.v.yyxz; + var yyyx = P.v.yyyx; + var yyyy = P.v.yyyy; + var yyyz = P.v.yyyz; + var yyzx = P.v.yyzx; + var yyzy = P.v.yyzy; + var yyzz = P.v.yyzz; + var yzxx = P.v.yzxx; + var yzxy = P.v.yzxy; + var yzxz = P.v.yzxz; + var yzyx = P.v.yzyx; + var yzyy = P.v.yzyy; + var yzyz = P.v.yzyz; + var yzzx = P.v.yzzx; + var yzzy = P.v.yzzy; + var yzzz = P.v.yzzz; + var zxxx = P.v.zxxx; + var zxxy = P.v.zxxy; + var zxxz = P.v.zxxz; + var zxyx = P.v.zxyx; + var zxyy = P.v.zxyy; + var zxyz = P.v.zxyz; + var zxzx = P.v.zxzx; + var zxzy = P.v.zxzy; + var zxzz = P.v.zxzz; + var zyxx = P.v.zyxx; + var zyxy = P.v.zyxy; + var zyxz = P.v.zyxz; + var zyyx = P.v.zyyx; + var zyyy = P.v.zyyy; + var zyyz = P.v.zyyz; + var zyzx = P.v.zyzx; + var zyzy = P.v.zyzy; + var zyzz = P.v.zyzz; + var zzxx = P.v.zzxx; + var zzxy = P.v.zzxy; + var zzxz = P.v.zzxz; + var zzyx = P.v.zzyx; + var zzyy = P.v.zzyy; + var zzyz = P.v.zzyz; + var zzzx = P.v.zzzx; + var zzzy = P.v.zzzy; + var zzzz = P.v.zzzz; +} diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl new file mode 100644 index 0000000000..7703af9b2a --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1.0, 2.0, 3.0); + + U.v.x = 1.0; + U.v.y = 2.0; + U.v.z = 3.0; +} diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.hlsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.hlsl new file mode 100644 index 0000000000..bd302bc9a5 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.hlsl @@ -0,0 +1,13 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +RWByteAddressBuffer U : register(u0, space0); + +void f() { + U.Store3(0u, asuint(float3(1.0f, 2.0f, 3.0f))); + U.Store(0u, asuint(1.0f)); + U.Store(4u, asuint(2.0f)); + U.Store(8u, asuint(3.0f)); +} diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl new file mode 100644 index 0000000000..80ad293ddd --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl @@ -0,0 +1,26 @@ +#include + +using namespace metal; + +template +inline auto operator*(matrix lhs, packed_vec rhs) { + return lhs * vec(rhs); +} + +template +inline auto operator*(packed_vec lhs, matrix rhs) { + return vec(lhs) * rhs; +} + +struct S { + /* 0x0000 */ packed_float3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(device S& U) { + U.v = float3(1.0f, 2.0f, 3.0f); + U.v[0] = 1.0f; + U.v[1] = 2.0f; + U.v[2] = 3.0f; +} + diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.spvasm b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.spvasm new file mode 100644 index 0000000000..06c6c109fb --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.spvasm @@ -0,0 +1,51 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %float = OpTypeFloat 32 + %v3float = OpTypeVector %float 3 + %S = OpTypeStruct %v3float +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %U = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float + %float_1 = OpConstant %float 1 + %float_2 = OpConstant %float 2 + %float_3 = OpConstant %float 3 + %19 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %15 = OpAccessChain %_ptr_StorageBuffer_v3float %U %uint_0 + OpStore %15 %19 + %21 = OpAccessChain %_ptr_StorageBuffer_float %U %uint_0 %uint_0 + OpStore %21 %float_1 + %23 = OpAccessChain %_ptr_StorageBuffer_float %U %uint_0 %uint_1 + OpStore %23 %float_2 + %25 = OpAccessChain %_ptr_StorageBuffer_float %U %uint_0 %uint_2 + OpStore %25 %float_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl new file mode 100644 index 0000000000..db3ef396f4 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1.0, 2.0, 3.0); + U.v.x = 1.0; + U.v.y = 2.0; + U.v.z = 3.0; +} diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl new file mode 100644 index 0000000000..fb1ebc5be7 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1, 2, 3); + + U.v.x = 1; + U.v.y = 2; + U.v.z = 3; +} diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.hlsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.hlsl new file mode 100644 index 0000000000..1be931da54 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.hlsl @@ -0,0 +1,13 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +RWByteAddressBuffer U : register(u0, space0); + +void f() { + U.Store3(0u, asuint(int3(1, 2, 3))); + U.Store(0u, asuint(1)); + U.Store(4u, asuint(2)); + U.Store(8u, asuint(3)); +} diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl new file mode 100644 index 0000000000..3a519e5d7c --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl @@ -0,0 +1,15 @@ +#include + +using namespace metal; +struct S { + /* 0x0000 */ packed_int3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(device S& U) { + U.v = int3(1, 2, 3); + U.v[0] = 1; + U.v[1] = 2; + U.v[2] = 3; +} + diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.spvasm b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.spvasm new file mode 100644 index 0000000000..b61e867648 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.spvasm @@ -0,0 +1,51 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 26 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %S = OpTypeStruct %v3int +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %U = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_StorageBuffer_v3int = OpTypePointer StorageBuffer %v3int + %int_1 = OpConstant %int 1 + %int_2 = OpConstant %int 2 + %int_3 = OpConstant %int 3 + %19 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %15 = OpAccessChain %_ptr_StorageBuffer_v3int %U %uint_0 + OpStore %15 %19 + %21 = OpAccessChain %_ptr_StorageBuffer_int %U %uint_0 %uint_0 + OpStore %21 %int_1 + %23 = OpAccessChain %_ptr_StorageBuffer_int %U %uint_0 %uint_1 + OpStore %23 %int_2 + %25 = OpAccessChain %_ptr_StorageBuffer_int %U %uint_0 %uint_2 + OpStore %25 %int_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl new file mode 100644 index 0000000000..b84a23a763 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1, 2, 3); + U.v.x = 1; + U.v.y = 2; + U.v.z = 3; +} diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl new file mode 100644 index 0000000000..306e540092 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + v: vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1u, 2u, 3u); + + U.v.x = 1u; + U.v.y = 2u; + U.v.z = 3u; +} diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.hlsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.hlsl new file mode 100644 index 0000000000..fd7ff481b7 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.hlsl @@ -0,0 +1,13 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +RWByteAddressBuffer U : register(u0, space0); + +void f() { + U.Store3(0u, asuint(uint3(1u, 2u, 3u))); + U.Store(0u, asuint(1u)); + U.Store(4u, asuint(2u)); + U.Store(8u, asuint(3u)); +} diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl new file mode 100644 index 0000000000..b12b460977 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl @@ -0,0 +1,15 @@ +#include + +using namespace metal; +struct S { + /* 0x0000 */ packed_uint3 v; + /* 0x000c */ int8_t tint_pad[4]; +}; + +void f(device S& U) { + U.v = uint3(1u, 2u, 3u); + U.v[0] = 1u; + U.v[1] = 2u; + U.v[2] = 3u; +} + diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.spvasm b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.spvasm new file mode 100644 index 0000000000..622a16e1e9 --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.spvasm @@ -0,0 +1,48 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 23 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %U "U" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %U DescriptorSet 0 + OpDecorate %U Binding 0 + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %S = OpTypeStruct %v3uint +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %U = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_StorageBuffer_v3uint = OpTypePointer StorageBuffer %v3uint + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %uint_3 = OpConstant %uint 3 + %18 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint +%unused_entry_point = OpFunction %void None %6 + %9 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %6 + %11 = OpLabel + %14 = OpAccessChain %_ptr_StorageBuffer_v3uint %U %uint_0 + OpStore %14 %18 + %20 = OpAccessChain %_ptr_StorageBuffer_uint %U %uint_0 %uint_0 + OpStore %20 %uint_1 + %21 = OpAccessChain %_ptr_StorageBuffer_uint %U %uint_0 %uint_1 + OpStore %21 %uint_2 + %22 = OpAccessChain %_ptr_StorageBuffer_uint %U %uint_0 %uint_2 + OpStore %22 %uint_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl new file mode 100644 index 0000000000..0e7c8da66e --- /dev/null +++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + v : vec3; +}; + +[[group(0), binding(0)]] var U : S; + +fn f() { + U.v = vec3(1u, 2u, 3u); + U.v.x = 1u; + U.v.y = 2u; + U.v.z = 3u; +} diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl b/test/expressions/swizzle/write/vec3/f32.wgsl new file mode 100644 index 0000000000..c7d16333a1 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/f32.wgsl @@ -0,0 +1,13 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1.0, 2.0, 3.0); + + P.v.x = 1.0; + P.v.y = 2.0; + P.v.z = 3.0; +} diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.hlsl b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.hlsl new file mode 100644 index 0000000000..4cfaf20633 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.hlsl @@ -0,0 +1,17 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + float3 v; +}; + +static S P = (S)0; + +void f() { + P.v = float3(1.0f, 2.0f, 3.0f); + P.v.x = 1.0f; + P.v.y = 2.0f; + P.v.z = 3.0f; +} diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.msl new file mode 100644 index 0000000000..17624cfcf9 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.msl @@ -0,0 +1,14 @@ +#include + +using namespace metal; +struct S { + float3 v; +}; + +void f(thread S* const tint_symbol) { + (*(tint_symbol)).v = float3(1.0f, 2.0f, 3.0f); + (*(tint_symbol)).v[0] = 1.0f; + (*(tint_symbol)).v[1] = 2.0f; + (*(tint_symbol)).v[2] = 3.0f; +} + diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.spvasm b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.spvasm new file mode 100644 index 0000000000..4c38eebf01 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.spvasm @@ -0,0 +1,49 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 27 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpMemberDecorate %S 0 Offset 0 + %float = OpTypeFloat 32 + %v3float = OpTypeVector %float 3 + %S = OpTypeStruct %v3float +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3float = OpTypePointer Private %v3float + %float_1 = OpConstant %float 1 + %float_2 = OpConstant %float 2 + %float_3 = OpConstant %float 3 + %20 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%_ptr_Private_float = OpTypePointer Private %float + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %16 = OpAccessChain %_ptr_Private_v3float %P %uint_0 + OpStore %16 %20 + %22 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_0 + OpStore %22 %float_1 + %24 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_1 + OpStore %24 %float_2 + %26 = OpAccessChain %_ptr_Private_float %P %uint_0 %uint_2 + OpStore %26 %float_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl new file mode 100644 index 0000000000..83e6e31f45 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.wgsl @@ -0,0 +1,12 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1.0, 2.0, 3.0); + P.v.x = 1.0; + P.v.y = 2.0; + P.v.z = 3.0; +} diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl b/test/expressions/swizzle/write/vec3/i32.wgsl new file mode 100644 index 0000000000..9abf24a83d --- /dev/null +++ b/test/expressions/swizzle/write/vec3/i32.wgsl @@ -0,0 +1,13 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1, 2, 3); + + P.v.x = 1; + P.v.y = 2; + P.v.z = 3; +} diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.hlsl b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.hlsl new file mode 100644 index 0000000000..e3ecfbc847 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.hlsl @@ -0,0 +1,17 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + int3 v; +}; + +static S P = (S)0; + +void f() { + P.v = int3(1, 2, 3); + P.v.x = 1; + P.v.y = 2; + P.v.z = 3; +} diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.msl new file mode 100644 index 0000000000..bbd4748e60 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.msl @@ -0,0 +1,14 @@ +#include + +using namespace metal; +struct S { + int3 v; +}; + +void f(thread S* const tint_symbol) { + (*(tint_symbol)).v = int3(1, 2, 3); + (*(tint_symbol)).v[0] = 1; + (*(tint_symbol)).v[1] = 2; + (*(tint_symbol)).v[2] = 3; +} + diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.spvasm b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.spvasm new file mode 100644 index 0000000000..804efe4921 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.spvasm @@ -0,0 +1,49 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 27 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpMemberDecorate %S 0 Offset 0 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %S = OpTypeStruct %v3int +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3int = OpTypePointer Private %v3int + %int_1 = OpConstant %int 1 + %int_2 = OpConstant %int 2 + %int_3 = OpConstant %int 3 + %20 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%_ptr_Private_int = OpTypePointer Private %int + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %16 = OpAccessChain %_ptr_Private_v3int %P %uint_0 + OpStore %16 %20 + %22 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_0 + OpStore %22 %int_1 + %24 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_1 + OpStore %24 %int_2 + %26 = OpAccessChain %_ptr_Private_int %P %uint_0 %uint_2 + OpStore %26 %int_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl new file mode 100644 index 0000000000..0c055dfcd4 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.wgsl @@ -0,0 +1,12 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1, 2, 3); + P.v.x = 1; + P.v.y = 2; + P.v.z = 3; +} diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl b/test/expressions/swizzle/write/vec3/u32.wgsl new file mode 100644 index 0000000000..427e61e615 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/u32.wgsl @@ -0,0 +1,13 @@ +struct S { + v: vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1u, 2u, 3u); + + P.v.x = 1u; + P.v.y = 2u; + P.v.z = 3u; +} diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.hlsl b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.hlsl new file mode 100644 index 0000000000..172c6990e7 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.hlsl @@ -0,0 +1,17 @@ +[numthreads(1, 1, 1)] +void unused_entry_point() { + return; +} + +struct S { + uint3 v; +}; + +static S P = (S)0; + +void f() { + P.v = uint3(1u, 2u, 3u); + P.v.x = 1u; + P.v.y = 2u; + P.v.z = 3u; +} diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.msl new file mode 100644 index 0000000000..f665ab6387 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.msl @@ -0,0 +1,14 @@ +#include + +using namespace metal; +struct S { + uint3 v; +}; + +void f(thread S* const tint_symbol) { + (*(tint_symbol)).v = uint3(1u, 2u, 3u); + (*(tint_symbol)).v[0] = 1u; + (*(tint_symbol)).v[1] = 2u; + (*(tint_symbol)).v[2] = 3u; +} + diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.spvasm b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.spvasm new file mode 100644 index 0000000000..7c3f26be74 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.spvasm @@ -0,0 +1,46 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 24 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" + OpExecutionMode %unused_entry_point LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "v" + OpName %P "P" + OpName %unused_entry_point "unused_entry_point" + OpName %f "f" + OpMemberDecorate %S 0 Offset 0 + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %S = OpTypeStruct %v3uint +%_ptr_Private_S = OpTypePointer Private %S + %6 = OpConstantNull %S + %P = OpVariable %_ptr_Private_S Private %6 + %void = OpTypeVoid + %7 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Private_v3uint = OpTypePointer Private %v3uint + %uint_1 = OpConstant %uint 1 + %uint_2 = OpConstant %uint 2 + %uint_3 = OpConstant %uint 3 + %19 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%_ptr_Private_uint = OpTypePointer Private %uint +%unused_entry_point = OpFunction %void None %7 + %10 = OpLabel + OpReturn + OpFunctionEnd + %f = OpFunction %void None %7 + %12 = OpLabel + %15 = OpAccessChain %_ptr_Private_v3uint %P %uint_0 + OpStore %15 %19 + %21 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_0 + OpStore %21 %uint_1 + %22 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_1 + OpStore %22 %uint_2 + %23 = OpAccessChain %_ptr_Private_uint %P %uint_0 %uint_2 + OpStore %23 %uint_3 + OpReturn + OpFunctionEnd diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl new file mode 100644 index 0000000000..301f985152 --- /dev/null +++ b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.wgsl @@ -0,0 +1,12 @@ +struct S { + v : vec3; +}; + +var P : S; + +fn f() { + P.v = vec3(1u, 2u, 3u); + P.v.x = 1u; + P.v.y = 2u; + P.v.z = 3u; +} diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl index 9b56186436..0923cc4ca2 100644 --- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl +++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl @@ -11,7 +11,7 @@ struct tint_symbol_3 { void textureLoad_6273b1(depth2d_ms tint_symbol_5) { float res = 0.0f; float4 const x_17 = float4(tint_symbol_5.read(uint2(int2(0, 0)), 1), 0.0f, 0.0f, 0.0f); - res = x_17.x; + res = x_17[0]; return; } diff --git a/test/loops/continue_in_switch.wgsl.expected.hlsl b/test/loops/continue_in_switch.wgsl.expected.hlsl index 966973fbdc..610efeead1 100644 --- a/test/loops/continue_in_switch.wgsl.expected.hlsl +++ b/test/loops/continue_in_switch.wgsl.expected.hlsl @@ -18,4 +18,3 @@ void f() { return; } C:\src\tint\test\Shader@0x0000022998AE1EF0(7,11-19): error X3708: continue cannot be used in a switch - diff --git a/test/ptr_ref/access/vector.spvasm.expected.msl b/test/ptr_ref/access/vector.spvasm.expected.msl index 2d93596c0a..442948f696 100644 --- a/test/ptr_ref/access/vector.spvasm.expected.msl +++ b/test/ptr_ref/access/vector.spvasm.expected.msl @@ -4,7 +4,7 @@ using namespace metal; void main_1() { float3 v = float3(0.0f, 0.0f, 0.0f); v = float3(1.0f, 2.0f, 3.0f); - v.y = 5.0f; + v[1] = 5.0f; return; } diff --git a/test/ptr_ref/access/vector.wgsl.expected.msl b/test/ptr_ref/access/vector.wgsl.expected.msl index 6625cdb8d1..9df75787f5 100644 --- a/test/ptr_ref/access/vector.wgsl.expected.msl +++ b/test/ptr_ref/access/vector.wgsl.expected.msl @@ -3,7 +3,7 @@ using namespace metal; kernel void tint_symbol() { float3 v = float3(1.0f, 2.0f, 3.0f); - v.y = 5.0f; + v[1] = 5.0f; return; } diff --git a/test/samples/compute_boids.wgsl.expected.msl b/test/samples/compute_boids.wgsl.expected.msl index 9c1b8a824e..48252a3178 100644 --- a/test/samples/compute_boids.wgsl.expected.msl +++ b/test/samples/compute_boids.wgsl.expected.msl @@ -33,8 +33,8 @@ struct Particles { }; float4 vert_main_inner(float2 a_particlePos, float2 a_particleVel, float2 a_pos) { - float angle = -(atan2(a_particleVel.x, a_particleVel.y)); - float2 pos = float2(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle)))); + float angle = -(atan2(a_particleVel[0], a_particleVel[1])); + float2 pos = float2(((a_pos[0] * cos(angle)) - (a_pos[1] * sin(angle))), ((a_pos[0] * sin(angle)) + (a_pos[1] * cos(angle)))); return float4((pos + a_particlePos), 0.0f, 1.0f); } @@ -57,7 +57,7 @@ fragment tint_symbol_3 frag_main() { } void comp_main_inner(constant SimParams& params, device Particles& particlesA, device Particles& particlesB, uint3 gl_GlobalInvocationID) { - uint index = gl_GlobalInvocationID.x; + uint index = gl_GlobalInvocationID[0]; if ((index >= 5u)) { return; } @@ -74,8 +74,8 @@ void comp_main_inner(constant SimParams& params, device Particles& particlesA, d if ((i == index)) { continue; } - pos = particlesA.particles.arr[i].pos.xy; - vel = particlesA.particles.arr[i].vel.xy; + pos = float2(particlesA.particles.arr[i].pos).xy; + vel = float2(particlesA.particles.arr[i].vel).xy; if ((distance(pos, vPos) < params.rule1Distance)) { cMass = (cMass + pos); cMassCount = as_type((as_type(cMassCount) + as_type(1))); @@ -97,17 +97,17 @@ void comp_main_inner(constant SimParams& params, device Particles& particlesA, d vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale)); vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f)); vPos = (vPos + (vVel * params.deltaT)); - if ((vPos.x < -1.0f)) { - vPos.x = 1.0f; + if ((vPos[0] < -1.0f)) { + vPos[0] = 1.0f; } - if ((vPos.x > 1.0f)) { - vPos.x = -1.0f; + if ((vPos[0] > 1.0f)) { + vPos[0] = -1.0f; } - if ((vPos.y < -1.0f)) { - vPos.y = 1.0f; + if ((vPos[1] < -1.0f)) { + vPos[1] = 1.0f; } - if ((vPos.y > 1.0f)) { - vPos.y = -1.0f; + if ((vPos[1] > 1.0f)) { + vPos[1] = -1.0f; } particlesB.particles.arr[index].pos = vPos; particlesB.particles.arr[index].vel = vVel; diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.msl b/test/shader_io/compute_input_builtins.wgsl.expected.msl index 67ecc1b451..64dee7cdb8 100644 --- a/test/shader_io/compute_input_builtins.wgsl.expected.msl +++ b/test/shader_io/compute_input_builtins.wgsl.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void tint_symbol_inner(uint3 local_invocation_id, uint local_invocation_index, uint3 global_invocation_id, uint3 workgroup_id, uint3 num_workgroups) { - uint const foo = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x); + uint const foo = ((((local_invocation_id[0] + local_invocation_index) + global_invocation_id[0]) + workgroup_id[0]) + num_workgroups[0]); } kernel void tint_symbol(uint3 local_invocation_id [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], uint3 global_invocation_id [[thread_position_in_grid]], uint3 workgroup_id [[threadgroup_position_in_grid]], uint3 num_workgroups [[threadgroups_per_grid]]) { diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl index 34db10e523..dc5f7ca7b3 100644 --- a/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl +++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl @@ -10,7 +10,7 @@ struct ComputeInputs { }; void tint_symbol_inner(ComputeInputs inputs) { - uint const foo = ((((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x) + inputs.num_workgroups.x); + uint const foo = ((((inputs.local_invocation_id[0] + inputs.local_invocation_index) + inputs.global_invocation_id[0]) + inputs.workgroup_id[0]) + inputs.num_workgroups[0]); } kernel void tint_symbol(uint3 local_invocation_id [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], uint3 global_invocation_id [[thread_position_in_grid]], uint3 workgroup_id [[threadgroup_position_in_grid]], uint3 num_workgroups [[threadgroups_per_grid]]) { diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.msl b/test/shader_io/compute_input_mixed.wgsl.expected.msl index 65ca123149..e46f80d75a 100644 --- a/test/shader_io/compute_input_mixed.wgsl.expected.msl +++ b/test/shader_io/compute_input_mixed.wgsl.expected.msl @@ -9,7 +9,7 @@ struct ComputeInputs1 { }; void tint_symbol_inner(ComputeInputs0 inputs0, uint local_invocation_index, uint3 global_invocation_id, ComputeInputs1 inputs1) { - uint const foo = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x); + uint const foo = (((inputs0.local_invocation_id[0] + local_invocation_index) + global_invocation_id[0]) + inputs1.workgroup_id[0]); } kernel void tint_symbol(uint3 local_invocation_id [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], uint3 global_invocation_id [[thread_position_in_grid]], uint3 workgroup_id [[threadgroup_position_in_grid]]) {