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 <bclayton@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
This commit is contained in:
Ben Clayton 2021-10-20 16:12:33 +00:00 committed by Tint LUCI CQ
parent 8645953be2
commit 7103f51603
103 changed files with 9204 additions and 679 deletions

View File

@ -8,6 +8,10 @@
* Deprecated texture builtin functions that accepted a `read` access controlled storage texture have been removed. * 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. * 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 ## Changes for M95
### New Features ### New Features

View File

@ -1953,6 +1953,7 @@ bool GeneratorImpl::EmitIf(const ast::IfStatement* stmt) {
bool GeneratorImpl::EmitMemberAccessor( bool GeneratorImpl::EmitMemberAccessor(
std::ostream& out, std::ostream& out,
const ast::MemberAccessorExpression* expr) { const ast::MemberAccessorExpression* expr) {
auto write_lhs = [&] {
bool paren_lhs = bool paren_lhs =
!expr->structure !expr->structure
->IsAnyOf<ast::ArrayAccessorExpression, ast::CallExpression, ->IsAnyOf<ast::ArrayAccessorExpression, ast::CallExpression,
@ -1967,15 +1968,41 @@ bool GeneratorImpl::EmitMemberAccessor(
if (paren_lhs) { if (paren_lhs) {
out << ")"; out << ")";
} }
return true;
};
out << "."; auto& sem = program_->Sem();
// Swizzles get written out directly if (auto* swizzle = sem.Get(expr)->As<sem::Swizzle>()) {
if (program_->Sem().Get(expr)->Is<sem::Swizzle>()) { // Metal 1.x does not support swizzling of packed vector types.
out << program_->Symbols().NameFor(expr->member->symbol); // For single element swizzles, we can use the index operator.
} else if (!EmitExpression(out, expr->member)) { // 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; 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; return true;
} }

View File

@ -147,7 +147,7 @@ struct tint_symbol {
}; };
float frag_main_inner(float4 coord) { float frag_main_inner(float4 coord) {
return coord.x; return coord[0];
} }
fragment tint_symbol frag_main(float4 coord [[position]]) { fragment tint_symbol frag_main(float4 coord [[position]]) {
@ -457,7 +457,7 @@ struct UBO {
}; };
float sub_func(constant UBO& ubo, float param) { 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)]]) { fragment void frag_main(constant UBO& ubo [[buffer(0)]]) {

View File

@ -43,7 +43,7 @@ TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_xyz) {
GeneratorImpl& gen = Build(); GeneratorImpl& gen = Build();
std::stringstream out; std::stringstream out;
ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error(); 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) { TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_gbr) {
@ -55,7 +55,7 @@ TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_gbr) {
GeneratorImpl& gen = Build(); GeneratorImpl& gen = Build();
std::stringstream out; std::stringstream out;
ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error(); ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
EXPECT_EQ(out.str(), "my_vec.gbr"); EXPECT_EQ(out.str(), "float4(my_vec).gbr");
} }
} // namespace } // namespace

View File

@ -2,7 +2,7 @@
using namespace metal; using namespace metal;
void main_1() { 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; return;
} }

View File

@ -2,9 +2,9 @@
using namespace metal; using namespace metal;
void main_1() { void main_1() {
float const x_11 = 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).x, float3(1.0f, 2.0f, 3.0f).z); 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).x, float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y); 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; return;
} }

View File

@ -3,9 +3,9 @@
using namespace metal; using namespace metal;
kernel void tint_symbol() { kernel void tint_symbol() {
float3 const v = float3(1.0f, 2.0f, 3.0f); float3 const v = float3(1.0f, 2.0f, 3.0f);
float const scalar = v.y; float const scalar = v[1];
float2 const swizzle2 = v.xz; float2 const swizzle2 = float3(v).xz;
float3 const swizzle3 = v.xzy; float3 const swizzle3 = float3(v).xzy;
return; return;
} }

View File

@ -4,7 +4,7 @@ using namespace metal;
void main_1() { 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)); 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]; float3 const x_15 = m[1];
float const x_16 = x_15.y; float const x_16 = x_15[1];
return; return;
} }

View File

@ -3,11 +3,11 @@
using namespace metal; using namespace metal;
void main_1() { void main_1() {
float3 v = float3(0.0f, 0.0f, 0.0f); 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; 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_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; return;
} }

View File

@ -3,9 +3,9 @@
using namespace metal; using namespace metal;
kernel void tint_symbol() { kernel void tint_symbol() {
float3 v = 0.0f; float3 v = 0.0f;
float const scalar = v.y; float const scalar = v[1];
float2 const swizzle2 = v.xz; float2 const swizzle2 = float3(v).xz;
float3 const swizzle3 = v.xzy; float3 const swizzle3 = float3(v).xzy;
return; return;
} }

View File

@ -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)}}; tint_array_wrapper texcoord = {.arr={float2(-0.5f, 0.0f), float2(1.5f, 0.0f), float2(0.5f, 2.0f)}};
VertexOutputs output = {}; VertexOutputs output = {};
output.position = float4(((texcoord.arr[VertexIndex] * 2.0f) - float2(1.0f, 1.0f)), 0.0f, 1.0f); 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) { if (flipY) {
output.texcoords = ((((texcoord.arr[VertexIndex] * uniforms.u_scale) + uniforms.u_offset) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)); output.texcoords = ((((texcoord.arr[VertexIndex] * uniforms.u_scale) + uniforms.u_offset) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f));
} else { } else {

View File

@ -42,7 +42,7 @@ float4 getColor(constant Uniforms& uniforms, FragmentInput tint_symbol, texture2
} else { } else {
if ((uniforms.color_source == 1u)) { if ((uniforms.color_source == 1u)) {
color = tint_symbol.normal; color = tint_symbol.normal;
color.a = 1.0f; color[3] = 1.0f;
} else { } else {
if ((uniforms.color_source == 2u)) { if ((uniforms.color_source == 2u)) {
color = uniforms.color; color = uniforms.color;

View File

@ -36,24 +36,24 @@ void main_1(constant LeftOver& x_14, thread float3* const tint_symbol_5, thread
float4 q = 0.0f; float4 q = 0.0f;
float3 p = 0.0f; float3 p = 0.0f;
float3 const x_13 = *(tint_symbol_5); 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; float4 const x_21 = q;
p = float3(x_21.x, x_21.y, x_21.z); p = float3(x_21[0], x_21[1], x_21[2]);
float const x_27 = p.x; float const x_27 = p[0];
float const x_41 = x_14.test.arr[0].el; 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; float const x_49 = x_14.time;
p.x = (x_27 + sin(((x_41 * x_45) + x_49))); p[0] = (x_27 + sin(((x_41 * x_45) + x_49)));
float const x_55 = p.y; float const x_55 = p[1];
float const x_57 = x_14.time; 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; float4x4 const x_69 = x_14.worldViewProjection;
float3 const x_70 = p; 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); float2 const x_83 = *(tint_symbol_7);
*(tint_symbol_8) = x_83; *(tint_symbol_8) = x_83;
float const x_87 = (*(tint_symbol_6)).y; float const x_87 = (*(tint_symbol_6))[1];
(*(tint_symbol_6)).y = (x_87 * -1.0f); (*(tint_symbol_6))[1] = (x_87 * -1.0f);
return; return;
} }

View File

@ -53,20 +53,20 @@ struct AI32s {
}; };
float3 toVoxelPos(constant Uniforms& uniforms, float3 position) { float3 toVoxelPos(constant Uniforms& uniforms, float3 position) {
float3 bbMin = float3(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z); float3 bbMin = float3(uniforms.bbMin[0], uniforms.bbMin[1], uniforms.bbMin[2]);
float3 bbMax = float3(uniforms.bbMax.x, uniforms.bbMax.y, uniforms.bbMax.z); float3 bbMax = float3(uniforms.bbMax[0], uniforms.bbMax[1], uniforms.bbMax[2]);
float3 bbSize = (bbMax - bbMin); 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 gridSize = float(uniforms.gridSize);
float gx = ((gridSize * (position.x - uniforms.bbMin.x)) / cubeSize); float gx = ((gridSize * (position[0] - uniforms.bbMin[0])) / cubeSize);
float gy = ((gridSize * (position.y - uniforms.bbMin.y)) / cubeSize); float gy = ((gridSize * (position[1] - uniforms.bbMin[1])) / cubeSize);
float gz = ((gridSize * (position.z - uniforms.bbMin.z)) / cubeSize); float gz = ((gridSize * (position[2] - uniforms.bbMin[2])) / cubeSize);
return float3(gx, gy, gz); return float3(gx, gy, gz);
} }
uint toIndex1D(uint gridSize, float3 voxelPos) { uint toIndex1D(uint gridSize, float3 voxelPos) {
uint3 icoord = uint3(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) { 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) { 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)) { if ((triangleIndex >= uniforms.numTriangles)) {
return; 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); uint acefg = atomic_fetch_add_explicit(&(counters.values[voxelIndex]), 1u, memory_order_relaxed);
if ((triangleIndex == 0u)) { if ((triangleIndex == 0u)) {
dbg.value0 = uniforms.gridSize; dbg.value0 = uniforms.gridSize;
dbg.value_f32_0 = center.x; dbg.value_f32_0 = center[0];
dbg.value_f32_1 = center.y; dbg.value_f32_1 = center[1];
dbg.value_f32_2 = center.z; 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) { 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); doIgnore(uniforms, dbg, counters, indices, positions, LUT);
uint maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize); uint maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize);
if ((voxelIndex >= maxVoxels)) { 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) { 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); doIgnore(uniforms, dbg, counters, indices, positions, LUT);
if ((triangleIndex >= uniforms.numTriangles)) { if ((triangleIndex >= uniforms.numTriangles)) {
return; return;

View File

@ -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) { 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)) { if ((index >= config.numLights)) {
return; return;
} }
lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f)))))); 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.y < uniforms.min.y)) { if ((lightsBuffer.lights[index].position[1] < uniforms.min[1])) {
lightsBuffer.lights[index].position.y = uniforms.max.y; lightsBuffer.lights[index].position[1] = uniforms.max[1];
} }
float4x4 M = uniforms.projectionMatrix; float4x4 M = uniforms.projectionMatrix;
float viewNear = (-(M[3][2]) / (-1.0f + M[2][2])); float viewNear = (-(M[3][2]) / (-1.0f + M[2][2]));
float viewFar = (-(M[3][2]) / (1.0f + M[2][2])); float viewFar = (-(M[3][2]) / (1.0f + M[2][2]));
float4 lightPos = lightsBuffer.lights[index].position; float4 lightPos = lightsBuffer.lights[index].position;
lightPos = (uniforms.viewMatrix * lightPos); lightPos = (uniforms.viewMatrix * lightPos);
lightPos = (lightPos / lightPos.w); lightPos = (lightPos / lightPos[3]);
float lightRadius = lightsBuffer.lights[index].radius; float lightRadius = lightsBuffer.lights[index].radius;
float4 boxMin = (lightPos - float4(float3(lightRadius), 0.0f)); float4 boxMin = (lightPos - float4(float3(lightRadius), 0.0f));
float4 boxMax = (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<int>((as_type<uint>(y_1) + as_type<uint>(1)))) { for(int y_1 = 0; (y_1 < TILE_COUNT_Y); y_1 = as_type<int>((as_type<uint>(y_1) + as_type<uint>(1)))) {
for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = as_type<int>((as_type<uint>(x_1) + as_type<uint>(1)))) { for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = as_type<int>((as_type<uint>(x_1) + as_type<uint>(1)))) {
int2 tilePixel0Idx = int2(as_type<int>((as_type<uint>(x_1) * as_type<uint>(TILE_SIZE))), as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_SIZE)))); int2 tilePixel0Idx = int2(as_type<int>((as_type<uint>(x_1) * as_type<uint>(TILE_SIZE))), as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_SIZE))));
float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / uniforms.fullScreenSize.xy) - float2(1.0f)); float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / float4(uniforms.fullScreenSize).xy) - float2(1.0f));
float2 ceilCoord = (((2.0f * float2(as_type<int2>((as_type<uint2>(tilePixel0Idx) + as_type<uint2>(int2(TILE_SIZE)))))) / uniforms.fullScreenSize.xy) - float2(1.0f)); float2 ceilCoord = (((2.0f * float2(as_type<int2>((as_type<uint2>(tilePixel0Idx) + as_type<uint2>(int2(TILE_SIZE)))))) / float4(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 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.x) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * ceilCoord.y) - (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.x) / viewNear), 0.0f); frustumPlanes.arr[0] = float4(1.0f, 0.0f, (-(viewFloorCoord[0]) / viewNear), 0.0f);
frustumPlanes.arr[1] = float4(-1.0f, 0.0f, (viewCeilCoord.x / 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.y) / 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.y / viewNear), 0.0f); frustumPlanes.arr[3] = float4(0.0f, -1.0f, (viewCeilCoord[1] / viewNear), 0.0f);
float dp = 0.0f; float dp = 0.0f;
for(uint i = 0u; (i < 6u); i = (i + 1u)) { for(uint i = 0u; (i < 6u); i = (i + 1u)) {
float4 p = 0.0f; float4 p = 0.0f;
if ((frustumPlanes.arr[i].x > 0.0f)) { if ((frustumPlanes.arr[i][0] > 0.0f)) {
p.x = boxMax.x; p[0] = boxMax[0];
} else { } else {
p.x = boxMin.x; p[0] = boxMin[0];
} }
if ((frustumPlanes.arr[i].y > 0.0f)) { if ((frustumPlanes.arr[i][1] > 0.0f)) {
p.y = boxMax.y; p[1] = boxMax[1];
} else { } else {
p.y = boxMin.y; p[1] = boxMin[1];
} }
if ((frustumPlanes.arr[i].z > 0.0f)) { if ((frustumPlanes.arr[i][2] > 0.0f)) {
p.z = boxMax.z; p[2] = boxMax[2];
} else { } 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]))); dp = (dp + fmin(0.0f, dot(p, frustumPlanes.arr[i])));
} }
if ((dp >= 0.0f)) { if ((dp >= 0.0f)) {
@ -117,7 +117,7 @@ void tint_symbol_inner(constant Config& config, constant Uniforms& uniforms, dev
if ((offset >= config.numTileLightSlot)) { if ((offset >= config.numTileLightSlot)) {
continue; continue;
} }
tileLightId.data.arr[tileId].lightId.arr[offset] = GlobalInvocationID.x; tileLightId.data.arr[tileId].lightId.arr[offset] = GlobalInvocationID[0];
} }
} }
} }

View File

@ -2,7 +2,7 @@
using namespace metal; using namespace metal;
float x_200(thread float2* const x_201) { 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; return x_212;
} }

View File

@ -23,7 +23,7 @@ float4 tint_symbol_inner(constant vertexUniformBuffer1& x_20, constant vertexUni
indexable = tint_symbol_2; indexable = tint_symbol_2;
float2 const x_51 = indexable.arr[x_46]; 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); 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)]]) { vertex tint_symbol_1 tint_symbol(uint gl_VertexIndex [[vertex_id]], constant vertexUniformBuffer1& x_20 [[buffer(0)]], constant vertexUniformBuffer2& x_26 [[buffer(1)]]) {

View File

@ -5,8 +5,8 @@ void main_1(texture2d<uint, access::sample> tint_symbol_1, texture2d<uint, acces
uint4 srcValue = 0u; uint4 srcValue = 0u;
uint4 const x_18 = tint_symbol_1.read(uint2(int2(0, 0)), 0); uint4 const x_18 = tint_symbol_1.read(uint2(int2(0, 0)), 0);
srcValue = x_18; srcValue = x_18;
uint const x_22 = srcValue.x; uint const x_22 = srcValue[0];
srcValue.x = (x_22 + as_type<uint>(1)); srcValue[0] = (x_22 + as_type<uint>(1));
uint4 const x_27 = srcValue; uint4 const x_27 = srcValue;
tint_symbol_2.write(x_27, uint2(int2(0, 0))); tint_symbol_2.write(x_27, uint2(int2(0, 0)));
return; return;

View File

@ -5,10 +5,10 @@ kernel void tint_symbol(texture2d<uint, access::sample> tint_symbol_1 [[texture(
uint4 srcValue = 0u; uint4 srcValue = 0u;
uint4 const x_22 = tint_symbol_1.read(uint2(int2(0, 0)), 0); uint4 const x_22 = tint_symbol_1.read(uint2(int2(0, 0)), 0);
srcValue = x_22; srcValue = x_22;
uint const x_24 = srcValue.x; uint const x_24 = srcValue[0];
uint const x_25 = (x_24 + 1u); uint const x_25 = (x_24 + 1u);
uint4 const x_27 = srcValue; 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; return;
} }

View File

@ -17,10 +17,10 @@ uint ConvertToFp16FloatValue(float fp32) {
void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) { void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) {
int2 size = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); 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; int2 srcTexCoord = dstTexCoord;
if ((uniforms.dstTextureFlipY == 1u)) { if ((uniforms.dstTextureFlipY == 1u)) {
srcTexCoord.y = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(size.y) - as_type<uint>(dstTexCoord.y)))) - as_type<uint>(1))); srcTexCoord[1] = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(size[1]) - as_type<uint>(dstTexCoord[1])))) - as_type<uint>(1)));
} }
float4 srcColor = tint_symbol_1.read(uint2(srcTexCoord), 0); float4 srcColor = tint_symbol_1.read(uint2(srcTexCoord), 0);
float4 dstColor = tint_symbol_2.read(uint2(dstTexCoord), 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]); srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
success = (success && (srcColorBits[i] == dstColorBits[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) { if (success) {
output.result[outputIndex] = uint(1); output.result[outputIndex] = uint(1);
} else { } else {

View File

@ -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) { 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); uint2 const resultCell = uint2(global_id[1], global_id[0]);
uint const dimInner = uniforms.aShape.y; uint const dimInner = uniforms.aShape[1];
uint const dimOutter = uniforms.outShape.y; uint const dimOutter = uniforms.outShape[1];
uint result = 0u; uint result = 0u;
for(uint i = 0u; (i < dimInner); i = (i + 1u)) { for(uint i = 0u; (i < dimInner); i = (i + 1u)) {
uint const a = (i + (resultCell.x * dimInner)); uint const a = (i + (resultCell[0] * dimInner));
uint const b = (resultCell.y + (i * dimOutter)); uint const b = (resultCell[1] + (i * dimOutter));
result = (result + (firstMatrix.numbers[a] * secondMatrix.numbers[b])); 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; resultMatrix.numbers[index] = result;
} }

File diff suppressed because it is too large Load Diff

View File

@ -9,11 +9,11 @@ struct Result {
}; };
void tint_symbol_inner(device Result& result, uint3 GlobalInvocationID, texture2d_array<float, access::sample> tint_symbol_1) { void tint_symbol_inner(device Result& result, uint3 GlobalInvocationID, texture2d_array<float, access::sample> 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); 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)) { for(uint i = 0u; (i < 1u); i = (i + 1u)) {
result.values[(flatIndex + i)] = texel.r; result.values[(flatIndex + i)] = texel[0];
} }
} }

View File

@ -18,7 +18,7 @@ struct tint_array_wrapper_1 {
Output tint_symbol_inner(uint VertexIndex, uint InstanceIndex) { 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)}}; 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 output = {};
output.Position = float4(0.5f, 0.5f, z, 1.0f); 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)}}; 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)}};

View File

@ -7,7 +7,7 @@ struct Result {
constant uint width = 128u; constant uint width = 128u;
void tint_symbol_inner(device Result& result, uint3 GlobalInvocationId, depth2d<float, access::sample> tint_symbol_1) { void tint_symbol_inner(device Result& result, uint3 GlobalInvocationId, depth2d<float, access::sample> 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<float, access::sample> tint_symbol_2 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]], device Result& result [[buffer(0)]]) { kernel void tint_symbol(depth2d<float, access::sample> tint_symbol_2 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]], device Result& result [[buffer(0)]]) {

View File

@ -19,25 +19,25 @@ bool aboutEqual(float value, float expect) {
void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) { void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) {
int2 const srcSize = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); 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()); 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); float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
bool success = true; 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))); success = (success && all((tint_symbol_2.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
} else { } else {
uint2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin); uint2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
if ((uniforms.dstTextureFlipY == 1u)) { 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 srcColor = tint_symbol_1.read(uint2(int2(srcTexCoord)), 0);
float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0); float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0);
if ((uniforms.channelCount == 2u)) { 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 { } 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) { if (success) {
output.result[outputIndex] = 1u; output.result[outputIndex] = 1u;
} else { } else {

View File

@ -58,10 +58,10 @@ void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMa
(*(tint_symbol_2)).arr[i].arr[i_1] = float(); (*(tint_symbol_2)).arr[i].arr[i_1] = float();
} }
threadgroup_barrier(mem_flags::mem_threadgroup); threadgroup_barrier(mem_flags::mem_threadgroup);
uint const tileRow = (local_id.y * RowPerThread); uint const tileRow = (local_id[1] * RowPerThread);
uint const tileCol = (local_id.x * ColPerThread); uint const tileCol = (local_id[0] * ColPerThread);
uint const globalRow = (global_id.y * RowPerThread); uint const globalRow = (global_id[1] * RowPerThread);
uint const globalCol = (global_id.x * ColPerThread); uint const globalCol = (global_id[0] * ColPerThread);
uint const numTiles = (((uniforms.dimInner - 1u) / TileInner) + 1u); uint const numTiles = (((uniforms.dimInner - 1u) / TileInner) + 1u);
tint_array_wrapper_2 acc = {}; tint_array_wrapper_2 acc = {};
float ACached = 0.0f; float ACached = 0.0f;
@ -70,9 +70,9 @@ void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMa
acc.arr[index] = 0.0f; acc.arr[index] = 0.0f;
} }
uint const ColPerThreadA = (TileInner / 16u); 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 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 t = 0u; (t < numTiles); t = (t + 1u)) {
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) { for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {

View File

@ -56,7 +56,7 @@ float3 Mat4x3GetCol0_(Mat4x3_ m) {
Mat4x3_ const x_e2 = m1; Mat4x3_ const x_e2 = m1;
Mat4x3_ const x_e5 = m1; Mat4x3_ const x_e5 = m1;
Mat4x3_ const x_e8 = 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) { float3 Mat4x3GetCol1_(Mat4x3_ m2) {
@ -65,7 +65,7 @@ float3 Mat4x3GetCol1_(Mat4x3_ m2) {
Mat4x3_ const x_e2 = m3; Mat4x3_ const x_e2 = m3;
Mat4x3_ const x_e5 = m3; Mat4x3_ const x_e5 = m3;
Mat4x3_ const x_e8 = 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) { float3 Mat4x3GetCol2_(Mat4x3_ m4) {
@ -74,7 +74,7 @@ float3 Mat4x3GetCol2_(Mat4x3_ m4) {
Mat4x3_ const x_e2 = m5; Mat4x3_ const x_e2 = m5;
Mat4x3_ const x_e5 = m5; Mat4x3_ const x_e5 = m5;
Mat4x3_ const x_e8 = 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) { float3 Mat4x3GetCol3_(Mat4x3_ m6) {
@ -83,7 +83,7 @@ float3 Mat4x3GetCol3_(Mat4x3_ m6) {
Mat4x3_ const x_e2 = m7; Mat4x3_ const x_e2 = m7;
Mat4x3_ const x_e5 = m7; Mat4x3_ const x_e5 = m7;
Mat4x3_ const x_e8 = 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) { 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); float4 const x_e50 = *(tint_symbol_8);
*(tint_symbol_9) = x_e50; *(tint_symbol_9) = x_e50;
float4 const x_e52 = global1.u_Misc0_; 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); float3 const x_e59 = *(tint_symbol_10);
Mat4x2_ const x_e64 = global1.u_TexMtx.arr[0]; Mat4x2_ const x_e64 = global1.u_TexMtx.arr[0];
float3 const x_e65 = *(tint_symbol_10); float3 const x_e65 = *(tint_symbol_10);
float2 const x_e68 = Mul2(x_e64, float4(x_e65, 1.0f)); 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; return;
} }
} else { } 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]; Mat4x2_ const x_e79 = global1.u_TexMtx.arr[0];
float2 const x_e80 = *(tint_symbol_12); float2 const x_e80 = *(tint_symbol_12);
float2 const x_e84 = Mul2(x_e79, float4(x_e80, 1.0f, 1.0f)); 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; return;
} }
} }

View File

@ -24,14 +24,14 @@ void tint_symbol_inner(constant Params& params, constant Flip& flip, uint3 WorkG
threadgroup_barrier(mem_flags::mem_threadgroup); threadgroup_barrier(mem_flags::mem_threadgroup);
uint const filterOffset = ((params.filterDim - 1u) / 2u); 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 dims = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
int2 const baseIndex = as_type<int2>((as_type<uint2>(int2(((WorkGroupID.xy * uint2(params.blockDim, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u))))) - as_type<uint2>(int2(int(filterOffset), 0)))); int2 const baseIndex = as_type<int2>((as_type<uint2>(int2(((uint3(WorkGroupID).xy * uint2(params.blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u))))) - as_type<uint2>(int2(int(filterOffset), 0))));
for(uint r = 0u; (r < 4u); r = (r + 1u)) { for(uint r = 0u; (r < 4u); r = (r + 1u)) {
for(uint c = 0u; (c < 4u); c = (c + 1u)) { for(uint c = 0u; (c < 4u); c = (c + 1u)) {
int2 loadIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r))))); int2 loadIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r)))));
if ((flip.value != 0u)) { 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); 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)) { for(uint c = 0u; (c < 4u); c = (c + 1u)) {
int2 writeIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r))))); int2 writeIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r)))));
if ((flip.value != 0u)) { 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)))) { if ((((center >= filterOffset) && (center < (256u - filterOffset))) && all((writeIndex < dims)))) {
float3 acc = float3(0.0f, 0.0f, 0.0f); float3 acc = float3(0.0f, 0.0f, 0.0f);
for(uint f = 0u; (f < params.filterDim); f = (f + 1u)) { for(uint f = 0u; (f < params.filterDim); f = (f + 1u)) {

View File

@ -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_10 = 0;
int2 param_11 = 0; int2 param_11 = 0;
float x_430 = 0.0f; float x_430 = 0.0f;
int const x_417 = x_48.aShape.y; int const x_417 = x_48.aShape[1];
int const x_419 = x_48.aShape.z; int const x_419 = x_48.aShape[2];
batchASize = as_type<int>((as_type<uint>(x_417) * as_type<uint>(x_419))); batchASize = as_type<int>((as_type<uint>(x_417) * as_type<uint>(x_419)));
int const x_421 = *(row); int const x_421 = *(row);
int const x_422 = *(col); 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_12 = 0;
int2 param_13 = 0; int2 param_13 = 0;
float x_468 = 0.0f; float x_468 = 0.0f;
int const x_455 = x_48.bShape.y; int const x_455 = x_48.bShape[1];
int const x_457 = x_48.bShape.z; int const x_457 = x_48.bShape[2];
batchBSize = as_type<int>((as_type<uint>(x_455) * as_type<uint>(x_457))); batchBSize = as_type<int>((as_type<uint>(x_455) * as_type<uint>(x_457)));
int const x_459 = *(row_1); int const x_459 = *(row_1);
int const x_460 = *(col_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) { int getOutputFlatIndex_vi3_(constant Uniforms& x_48, thread int3* const coords) {
int3 const x_99 = *(coords); int3 const x_99 = *(coords);
int const x_105 = x_48.outShapeStrides.x; int const x_105 = x_48.outShapeStrides[0];
int const x_107 = x_48.outShapeStrides.y; int const x_107 = x_48.outShapeStrides[1];
return int(dot(float3(x_99), float3(int3(x_105, x_107, 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_7 = 0;
int param_8 = 0; int param_8 = 0;
float param_9 = 0.0f; float param_9 = 0.0f;
uint const x_132 = (*(tint_symbol_9)).y; uint const x_132 = (*(tint_symbol_9))[1];
tileRow = as_type<int>((as_type<uint>(as_type<int>(x_132)) * as_type<uint>(1))); tileRow = as_type<int>((as_type<uint>(as_type<int>(x_132)) * as_type<uint>(1)));
uint const x_137 = (*(tint_symbol_9)).x; uint const x_137 = (*(tint_symbol_9))[0];
tileCol = as_type<int>((as_type<uint>(as_type<int>(x_137)) * as_type<uint>(1))); tileCol = as_type<int>((as_type<uint>(as_type<int>(x_137)) * as_type<uint>(1)));
uint const x_143 = (*(tint_symbol_10)).y; uint const x_143 = (*(tint_symbol_10))[1];
globalRow = as_type<int>((as_type<uint>(as_type<int>(x_143)) * as_type<uint>(1))); globalRow = as_type<int>((as_type<uint>(as_type<int>(x_143)) * as_type<uint>(1)));
uint const x_148 = (*(tint_symbol_10)).x; uint const x_148 = (*(tint_symbol_10))[0];
globalCol = as_type<int>((as_type<uint>(as_type<int>(x_148)) * as_type<uint>(1))); globalCol = as_type<int>((as_type<uint>(as_type<int>(x_148)) * as_type<uint>(1)));
int const x_152 = *(dimInner); int const x_152 = *(dimInner);
numTiles = as_type<int>((as_type<uint>((as_type<int>((as_type<uint>(x_152) - as_type<uint>(1))) / 64)) + as_type<uint>(1))); numTiles = as_type<int>((as_type<uint>((as_type<int>((as_type<uint>(x_152) - as_type<uint>(1))) / 64)) + as_type<uint>(1)));
@ -240,9 +240,9 @@ void mm_matMul_i1_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, cons
innerRow = as_type<int>((as_type<uint>(x_183) + as_type<uint>(1))); innerRow = as_type<int>((as_type<uint>(x_183) + as_type<uint>(1)));
} }
} }
uint const x_187 = (*(tint_symbol_9)).x; uint const x_187 = (*(tint_symbol_9))[0];
tileColA = as_type<int>((as_type<uint>(as_type<int>(x_187)) * as_type<uint>(64))); tileColA = as_type<int>((as_type<uint>(as_type<int>(x_187)) * as_type<uint>(64)));
uint const x_192 = (*(tint_symbol_9)).y; uint const x_192 = (*(tint_symbol_9))[1];
tileRowB = as_type<int>((as_type<uint>(as_type<int>(x_192)) * as_type<uint>(1))); tileRowB = as_type<int>((as_type<uint>(as_type<int>(x_192)) * as_type<uint>(1)));
t = 0; t = 0;
while (true) { 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_18 = 0;
int param_19 = 0; int param_19 = 0;
int param_20 = 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; *(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; *(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; *(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<int>(x_505); *(tint_symbol_21) = as_type<int>(x_505);
int const x_508 = *(tint_symbol_17); int const x_508 = *(tint_symbol_17);
param_18 = x_508; param_18 = x_508;

View File

@ -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)); float4 const x_47 = tint_symbol_5.sample(tint_symbol_6, float2(x_44, 0.25f), bias(0.0f));
float const x_51 = fX; float const x_51 = fX;
float4 const x_54 = tint_symbol_5.sample(tint_symbol_6, float2(x_51, 0.5f), bias(0.0f)); 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<float, access::sample> tint_symbol_8, sampler tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, texture2d<float, access::sample> tint_symbol_11, sampler tint_symbol_12, thread float* const tint_symbol_13, texture2d<float, access::sample> tint_symbol_14, sampler tint_symbol_15, texture2d<float, access::sample> tint_symbol_16, sampler tint_symbol_17, thread float4* const tint_symbol_18) { void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, sampler tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, texture2d<float, access::sample> tint_symbol_11, sampler tint_symbol_12, thread float* const tint_symbol_13, texture2d<float, access::sample> tint_symbol_14, sampler tint_symbol_15, texture2d<float, access::sample> 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); color = float4(0.0f, 0.0f, 0.0f, 0.0f);
float2 const x_86 = *(tint_symbol_7); float2 const x_86 = *(tint_symbol_7);
tileUV = fract(x_86); tileUV = fract(x_86);
float const x_91 = tileUV.y; float const x_91 = tileUV[1];
tileUV.y = (1.0f - x_91); tileUV[1] = (1.0f - x_91);
float2 const x_95 = *(tint_symbol_7); float2 const x_95 = *(tint_symbol_7);
tileID = floor(x_95); tileID = floor(x_95);
float2 const x_101 = x_20.spriteMapSize; 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_150 = tileID;
float2 const x_154 = x_20.stageSize; 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)); 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; break;
} }
case 0: { case 0: {
float2 const x_136 = tileID; float2 const x_136 = tileID;
float2 const x_140 = x_20.stageSize; 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)); 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; break;
} }
default: { 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; 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)); 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; animationData = x_172;
float const x_174 = animationData.y; float const x_174 = animationData[1];
if ((x_174 > 0.0f)) { if ((x_174 > 0.0f)) {
float const x_181 = x_20.time; 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); *(tint_symbol_13) = fmod((x_181 * x_184), 1.0f);
f = 0.0f; f = 0.0f;
while (true) { while (true) {
@ -129,10 +129,10 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture
} else { } else {
break; break;
} }
float const x_197 = animationData.y; float const x_197 = animationData[1];
float const x_198 = *(tint_symbol_13); float const x_198 = *(tint_symbol_13);
if ((x_197 > x_198)) { if ((x_197 > x_198)) {
float const x_203 = animationData.x; float const x_203 = animationData[0];
frameID_1 = x_203; frameID_1 = x_203;
break; break;
} }
@ -153,17 +153,17 @@ void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture
frameData = x_225; frameData = x_225;
float4 const x_228 = frameData[0]; float4 const x_228 = frameData[0];
float2 const x_231 = x_20.spriteMapSize; 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]; float4 const x_235 = frameData[0];
float2 const x_237 = sheetUnits; 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_241 = frameData[2];
float4 const x_244 = frameData[0]; float4 const x_244 = frameData[0];
ratio = (float2(x_241.x, x_241.y) / float2(x_244.w, x_244.z)); ratio = (float2(x_241[0], x_241[1]) / float2(x_244[3], x_244[2]));
float const x_248 = frameData[2].z; float const x_248 = frameData[2][2];
if ((x_248 == 1.0f)) { if ((x_248 == 1.0f)) {
float2 const x_252 = tileUV; 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; int const x_254 = i;
if ((x_254 == 0)) { 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; float2 const x_277 = offset_1;
float4 const x_279 = tint_symbol_16.sample(tint_symbol_17, ((x_274 * x_275) + x_277)); float4 const x_279 = tint_symbol_16.sample(tint_symbol_17, ((x_274 * x_275) + x_277));
nc = x_279; nc = x_279;
float const x_283 = color.w; float const x_283 = color[3];
float const x_285 = nc.w; float const x_285 = nc[3];
alpha = fmin((x_283 + x_285), 1.0f); alpha = fmin((x_283 + x_285), 1.0f);
float4 const x_290 = color; float4 const x_290 = color;
float4 const x_292 = nc; float4 const x_292 = nc;
float const x_295 = nc.w; float const x_295 = nc[3];
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)); 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; float3 const x_298 = mixed;
float const x_299 = alpha; 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; 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; float3 const x_310 = x_20.colorMul;
float4 const x_311 = color; 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; 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; float4 const x_318 = color;
*(tint_symbol_18) = x_318; *(tint_symbol_18) = x_318;
return; return;

View File

@ -76,19 +76,19 @@ float3x3 cotangent_frame_vf3_vf3_vf2_vf2_(thread float3* const normal_1, thread
float3 const x_150 = dp1; float3 const x_150 = dp1;
dp1perp = cross(x_149, x_150); dp1perp = cross(x_149, x_150);
float3 const x_153 = dp2perp; float3 const x_153 = dp2perp;
float const x_155 = duv1.x; float const x_155 = duv1[0];
float3 const x_157 = dp1perp; 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)); tangent = ((x_153 * x_155) + (x_157 * x_159));
float3 const x_163 = dp2perp; float3 const x_163 = dp2perp;
float const x_165 = duv1.y; float const x_165 = duv1[1];
float3 const x_167 = dp1perp; 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)); 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; float3 const x_174 = tangent;
tangent = (x_174 * x_173); tangent = (x_174 * x_173);
float const x_177 = (*(tangentSpaceParams)).y; float const x_177 = (*(tangentSpaceParams))[1];
float3 const x_178 = bitangent; float3 const x_178 = bitangent;
bitangent = (x_178 * x_177); bitangent = (x_178 * x_177);
float3 const x_181 = tangent; 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; float const x_193 = invmax;
float3 const x_194 = (x_192 * x_193); float3 const x_194 = (x_192 * x_193);
float3 const x_195 = *(normal_1); 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) { float3x3 transposeMat3_mf33_(thread float3x3* const inMatrix) {
@ -117,19 +117,19 @@ float3x3 transposeMat3_mf33_(thread float3x3* const inMatrix) {
i1 = x_64; i1 = x_64;
float3 const x_68 = (*(inMatrix))[2]; float3 const x_68 = (*(inMatrix))[2];
i2 = x_68; i2 = x_68;
float const x_73 = i0.x; float const x_73 = i0[0];
float const x_75 = i1.x; float const x_75 = i1[0];
float const x_77 = i2.x; float const x_77 = i2[0];
float3 const x_78 = float3(x_73, x_75, x_77); float3 const x_78 = float3(x_73, x_75, x_77);
float const x_81 = i0.y; float const x_81 = i0[1];
float const x_83 = i1.y; float const x_83 = i1[1];
float const x_85 = i2.y; float const x_85 = i2[1];
float3 const x_86 = float3(x_81, x_83, x_85); float3 const x_86 = float3(x_81, x_83, x_85);
float const x_89 = i0.z; float const x_89 = i0[2];
float const x_91 = i1.z; float const x_91 = i1[2];
float const x_93 = i2.z; float const x_93 = i2[2];
float3 const x_94 = float3(x_89, x_91, x_93); 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; float3x3 const x_110 = outMatrix;
return x_110; return x_110;
} }
@ -161,14 +161,14 @@ lightingInfo computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(thread float
float specComp = 0.0f; float specComp = 0.0f;
float3 const x_212 = *(vNormal); float3 const x_212 = *(vNormal);
float4 const x_213 = *(lightData); 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_220 = *(groundColor);
float3 const x_221 = *(diffuseColor); float3 const x_221 = *(diffuseColor);
float const x_222 = ndl; float const x_222 = ndl;
result.diffuse = mix(x_220, x_221, float3(x_222, x_222, x_222)); result.diffuse = mix(x_220, x_221, float3(x_222, x_222, x_222));
float3 const x_227 = *(viewDirectionW); float3 const x_227 = *(viewDirectionW);
float4 const x_228 = *(lightData); 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_233 = *(vNormal);
float3 const x_234 = angleW; float3 const x_234 = angleW;
specComp = fmax(0.0f, dot(x_233, x_234)); 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; tempTextureRead = x_262;
float4 const x_264 = tempTextureRead; float4 const x_264 = tempTextureRead;
float const x_273 = x_269.textureInfoName; 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; float3 const x_279 = x_269.u_cameraPosition;
float4 const x_282 = *(tint_symbol_10); 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); output4 = float4(0.0f, 0.0f, 0.0f, 0.0f);
uvOffset = float2(0.0f, 0.0f); uvOffset = float2(0.0f, 0.0f);
float const x_292 = x_269.u_bumpStrength; 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; TBNUV = x_307;
float4 const x_310 = *(tint_symbol_13); float4 const x_310 = *(tint_symbol_13);
float const x_312 = normalScale; 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); 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; float2 const x_320 = TBNUV;
param_5 = x_320; param_5 = x_320;
float2 const x_324 = x_269.tangentSpaceParameter0; 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)); float3 const x_334 = (x_331 * -(x_332));
float3x3 const x_337 = invTBN; float3x3 const x_337 = invTBN;
float3 const x_338 = output5; 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_345 = x_269.u_parallaxScale;
float const x_346 = parallaxLimit; float const x_346 = parallaxLimit;
parallaxLimit = (x_346 * x_345); parallaxLimit = (x_346 * x_345);
float3x3 const x_349 = invTBN; float3x3 const x_349 = invTBN;
float3 const x_350 = output5; float3 const x_350 = output5;
float3 const x_352 = (x_349 * -(x_350)); 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; float2 const x_356 = vOffsetDir;
float const x_357 = parallaxLimit; float const x_357 = parallaxLimit;
vMaxOffset = (x_356 * x_357); 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; float3 const x_362 = output5;
float3x3 const x_365 = invTBN; float3x3 const x_365 = invTBN;
float4 const x_366 = *(tint_symbol_13); 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; float const x_374 = numSamples;
stepSize = (1.0f / x_374); stepSize = (1.0f / x_374);
currRayHeight = 1.0f; 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_394 = *(tint_symbol_12);
float2 const x_395 = vCurrOffset; float2 const x_395 = vCurrOffset;
float4 const x_397 = tint_symbol_8.sample(tint_symbol_9, (x_394 + x_395)); 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_400 = currSampledHeight;
float const x_401 = currRayHeight; float const x_401 = currRayHeight;
if ((x_400 > x_401)) { 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; float const x_454 = x_269.u_bumpStrength;
float3x3 const x_457 = TBN; float3x3 const x_457 = TBN;
param_8 = x_457; 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); param_10 = (1.0f / x_454);
float3 const x_461 = perturbNormal_mf33_vf3_f1_(&(param_8), &(param_9), &(param_10)); float3 const x_461 = perturbNormal_mf33_vf3_f1_(&(param_8), &(param_9), &(param_10));
float4 const x_462 = output4; 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_465 = *(tint_symbol_12);
float2 const x_466 = uvOffset; float2 const x_466 = uvOffset;
output6 = (x_465 + x_466); 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); float4 const x_475 = tint_symbol_14.sample(tint_symbol_15, x_474);
tempTextureRead1 = x_475; tempTextureRead1 = x_475;
float4 const x_477 = tempTextureRead1; 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; float3 const x_481 = x_269.u_cameraPosition;
float4 const x_482 = *(tint_symbol_10); 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; shadow = 1.0f;
float const x_488 = *(tint_symbol_5); float const x_488 = *(tint_symbol_5);
glossiness_1 = (1.0f * x_488); glossiness_1 = (1.0f * x_488);
diffuseBase = float3(0.0f, 0.0f, 0.0f); diffuseBase = float3(0.0f, 0.0f, 0.0f);
specularBase = float3(0.0f, 0.0f, 0.0f); specularBase = float3(0.0f, 0.0f, 0.0f);
float4 const x_494 = output4; 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; float3 const x_501 = viewDirectionW_1;
param_11 = x_501; param_11 = x_501;
float3 const x_503 = normalW; 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; float4 const x_507 = light0.vLightData;
param_13 = x_507; param_13 = x_507;
float4 const x_510 = light0.vLightDiffuse; 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; 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; float3 const x_518 = light0.vLightGround;
param_16 = x_518; param_16 = x_518;
float const x_520 = glossiness_1; 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; float3 const x_544 = specularOutput;
output3 = (x_543 + x_544); output3 = (x_543 + x_544);
float3 const x_548 = output3; 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; return;
} }

View File

@ -16,7 +16,7 @@ struct Uniforms {
}; };
float getAAtOutCoords_(const device ssbA& x_20, thread uint3* const tint_symbol_2) { 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]; float const x_44 = x_20.A[x_42];
return x_44; 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; float param = 0.0f;
int param_1 = 0; int param_1 = 0;
float param_2 = 0.0f; float param_2 = 0.0f;
uint const x_61 = (*(tint_symbol_3)).x; uint const x_61 = (*(tint_symbol_3))[0];
index = as_type<int>(x_61); index = as_type<int>(x_61);
int const x_63 = index; int const x_63 = index;
int const x_70 = x_24.size; int const x_70 = x_24.size;

View File

@ -42,7 +42,7 @@ void main_1(device ResultMatrix& resultMatrix, thread uint3* const tint_symbol_2
int a_1 = 0; int a_1 = 0;
float param = 0.0f; float param = 0.0f;
float param_1 = 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<int>(x_54); index = as_type<int>(x_54);
a_1 = -10; a_1 = -10;
int const x_63 = index; int const x_63 = index;

View File

@ -2,8 +2,8 @@
using namespace metal; using namespace metal;
void f() { void f() {
float a = float2(1.0f).y; float a = float2(1.0f)[1];
float b = float3(1.0f).z; float b = float3(1.0f)[2];
float c = float4(1.0f).w; float c = float4(1.0f)[3];
} }

View File

@ -0,0 +1,144 @@
[[block]]
struct S {
v: vec3<f32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,143 @@
#include <metal_stdlib>
using namespace metal;
template<typename T, int N, int M>
inline auto operator*(matrix<T, N, M> lhs, packed_vec<T, N> rhs) {
return lhs * vec<T, N>(rhs);
}
template<typename T, int N, int M>
inline auto operator*(packed_vec<T, M> lhs, matrix<T, N, M> rhs) {
return vec<T, M>(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;
}

View File

@ -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

View File

@ -0,0 +1,130 @@
[[block]]
struct S {
v : vec3<f32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -0,0 +1,144 @@
[[block]]
struct S {
v: vec3<i32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,132 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,130 @@
[[block]]
struct S {
v : vec3<i32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -0,0 +1,144 @@
[[block]]
struct S {
v: vec3<u32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,132 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,130 @@
[[block]]
struct S {
v : vec3<u32>;
};
[[group(0), binding(0)]] var<uniform> 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;
}

View File

@ -0,0 +1,143 @@
struct S {
v: vec3<f32>;
};
var<private> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,131 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,129 @@
struct S {
v : vec3<f32>;
};
var<private> 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;
}

View File

@ -0,0 +1,143 @@
struct S {
v: vec3<i32>;
};
var<private> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,131 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,129 @@
struct S {
v : vec3<i32>;
};
var<private> 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;
}

View File

@ -0,0 +1,143 @@
struct S {
v: vec3<u32>;
};
var<private> 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,131 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,129 @@
struct S {
v : vec3<u32>;
};
var<private> 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;
}

View File

@ -0,0 +1,14 @@
[[block]]
struct S {
v: vec3<f32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<f32>(1.0, 2.0, 3.0);
U.v.x = 1.0;
U.v.y = 2.0;
U.v.z = 3.0;
}

View File

@ -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));
}

View File

@ -0,0 +1,26 @@
#include <metal_stdlib>
using namespace metal;
template<typename T, int N, int M>
inline auto operator*(matrix<T, N, M> lhs, packed_vec<T, N> rhs) {
return lhs * vec<T, N>(rhs);
}
template<typename T, int N, int M>
inline auto operator*(packed_vec<T, M> lhs, matrix<T, N, M> rhs) {
return vec<T, M>(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;
}

View File

@ -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

View File

@ -0,0 +1,13 @@
[[block]]
struct S {
v : vec3<f32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<f32>(1.0, 2.0, 3.0);
U.v.x = 1.0;
U.v.y = 2.0;
U.v.z = 3.0;
}

View File

@ -0,0 +1,14 @@
[[block]]
struct S {
v: vec3<i32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<i32>(1, 2, 3);
U.v.x = 1;
U.v.y = 2;
U.v.z = 3;
}

View File

@ -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));
}

View File

@ -0,0 +1,15 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,13 @@
[[block]]
struct S {
v : vec3<i32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<i32>(1, 2, 3);
U.v.x = 1;
U.v.y = 2;
U.v.z = 3;
}

View File

@ -0,0 +1,14 @@
[[block]]
struct S {
v: vec3<u32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<u32>(1u, 2u, 3u);
U.v.x = 1u;
U.v.y = 2u;
U.v.z = 3u;
}

View File

@ -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));
}

View File

@ -0,0 +1,15 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,13 @@
[[block]]
struct S {
v : vec3<u32>;
};
[[group(0), binding(0)]] var<storage, read_write> U : S;
fn f() {
U.v = vec3<u32>(1u, 2u, 3u);
U.v.x = 1u;
U.v.y = 2u;
U.v.z = 3u;
}

View File

@ -0,0 +1,13 @@
struct S {
v: vec3<f32>;
};
var<private> P : S;
fn f() {
P.v = vec3<f32>(1.0, 2.0, 3.0);
P.v.x = 1.0;
P.v.y = 2.0;
P.v.z = 3.0;
}

View File

@ -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;
}

View File

@ -0,0 +1,14 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,12 @@
struct S {
v : vec3<f32>;
};
var<private> P : S;
fn f() {
P.v = vec3<f32>(1.0, 2.0, 3.0);
P.v.x = 1.0;
P.v.y = 2.0;
P.v.z = 3.0;
}

View File

@ -0,0 +1,13 @@
struct S {
v: vec3<i32>;
};
var<private> P : S;
fn f() {
P.v = vec3<i32>(1, 2, 3);
P.v.x = 1;
P.v.y = 2;
P.v.z = 3;
}

View File

@ -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;
}

View File

@ -0,0 +1,14 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,12 @@
struct S {
v : vec3<i32>;
};
var<private> P : S;
fn f() {
P.v = vec3<i32>(1, 2, 3);
P.v.x = 1;
P.v.y = 2;
P.v.z = 3;
}

View File

@ -0,0 +1,13 @@
struct S {
v: vec3<u32>;
};
var<private> P : S;
fn f() {
P.v = vec3<u32>(1u, 2u, 3u);
P.v.x = 1u;
P.v.y = 2u;
P.v.z = 3u;
}

View File

@ -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;
}

View File

@ -0,0 +1,14 @@
#include <metal_stdlib>
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;
}

View File

@ -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

View File

@ -0,0 +1,12 @@
struct S {
v : vec3<u32>;
};
var<private> P : S;
fn f() {
P.v = vec3<u32>(1u, 2u, 3u);
P.v.x = 1u;
P.v.y = 2u;
P.v.z = 3u;
}

View File

@ -11,7 +11,7 @@ struct tint_symbol_3 {
void textureLoad_6273b1(depth2d_ms<float, access::read> tint_symbol_5) { void textureLoad_6273b1(depth2d_ms<float, access::read> tint_symbol_5) {
float res = 0.0f; float res = 0.0f;
float4 const x_17 = float4(tint_symbol_5.read(uint2(int2(0, 0)), 1), 0.0f, 0.0f, 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; return;
} }

View File

@ -18,4 +18,3 @@ void f() {
return; return;
} }
C:\src\tint\test\Shader@0x0000022998AE1EF0(7,11-19): error X3708: continue cannot be used in a switch C:\src\tint\test\Shader@0x0000022998AE1EF0(7,11-19): error X3708: continue cannot be used in a switch

View File

@ -4,7 +4,7 @@ using namespace metal;
void main_1() { void main_1() {
float3 v = float3(0.0f, 0.0f, 0.0f); float3 v = float3(0.0f, 0.0f, 0.0f);
v = float3(1.0f, 2.0f, 3.0f); v = float3(1.0f, 2.0f, 3.0f);
v.y = 5.0f; v[1] = 5.0f;
return; return;
} }

View File

@ -3,7 +3,7 @@
using namespace metal; using namespace metal;
kernel void tint_symbol() { kernel void tint_symbol() {
float3 v = float3(1.0f, 2.0f, 3.0f); float3 v = float3(1.0f, 2.0f, 3.0f);
v.y = 5.0f; v[1] = 5.0f;
return; return;
} }

View File

@ -33,8 +33,8 @@ struct Particles {
}; };
float4 vert_main_inner(float2 a_particlePos, float2 a_particleVel, float2 a_pos) { float4 vert_main_inner(float2 a_particlePos, float2 a_particleVel, float2 a_pos) {
float angle = -(atan2(a_particleVel.x, a_particleVel.y)); float angle = -(atan2(a_particleVel[0], a_particleVel[1]));
float2 pos = float2(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle)))); 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); 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) { 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)) { if ((index >= 5u)) {
return; return;
} }
@ -74,8 +74,8 @@ void comp_main_inner(constant SimParams& params, device Particles& particlesA, d
if ((i == index)) { if ((i == index)) {
continue; continue;
} }
pos = particlesA.particles.arr[i].pos.xy; pos = float2(particlesA.particles.arr[i].pos).xy;
vel = particlesA.particles.arr[i].vel.xy; vel = float2(particlesA.particles.arr[i].vel).xy;
if ((distance(pos, vPos) < params.rule1Distance)) { if ((distance(pos, vPos) < params.rule1Distance)) {
cMass = (cMass + pos); cMass = (cMass + pos);
cMassCount = as_type<int>((as_type<uint>(cMassCount) + as_type<uint>(1))); cMassCount = as_type<int>((as_type<uint>(cMassCount) + as_type<uint>(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 = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f)); vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
vPos = (vPos + (vVel * params.deltaT)); vPos = (vPos + (vVel * params.deltaT));
if ((vPos.x < -1.0f)) { if ((vPos[0] < -1.0f)) {
vPos.x = 1.0f; vPos[0] = 1.0f;
} }
if ((vPos.x > 1.0f)) { if ((vPos[0] > 1.0f)) {
vPos.x = -1.0f; vPos[0] = -1.0f;
} }
if ((vPos.y < -1.0f)) { if ((vPos[1] < -1.0f)) {
vPos.y = 1.0f; vPos[1] = 1.0f;
} }
if ((vPos.y > 1.0f)) { if ((vPos[1] > 1.0f)) {
vPos.y = -1.0f; vPos[1] = -1.0f;
} }
particlesB.particles.arr[index].pos = vPos; particlesB.particles.arr[index].pos = vPos;
particlesB.particles.arr[index].vel = vVel; particlesB.particles.arr[index].vel = vVel;

Some files were not shown because too many files have changed in this diff Show More