[glsl][ir] Add vector accessors.
This Cl adds `LoadVectorElement`, `StoreVectorElement` and `Swizzle`
support to the GLSL IR backend.
Bug: 42251044
Change-Id: I0aac2b2f30f67621ab9407f50a9306cc950f233e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/204854
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/glsl/writer/access_test.cc b/src/tint/lang/glsl/writer/access_test.cc
index 6f0d8db..2521bfb 100644
--- a/src/tint/lang/glsl/writer/access_test.cc
+++ b/src/tint/lang/glsl/writer/access_test.cc
@@ -88,8 +88,7 @@
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessVector) {
+TEST_F(GlslWriterTest, AccessVector) {
auto* func = b.Function("a", ty.void_(), core::ir::Function::PipelineStage::kCompute);
func->SetWorkgroupSize(1, 1, 1);
@@ -101,12 +100,15 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
-
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec3 v = vec3(0.0f);
+ float x = v.y;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessMatrix) {
+TEST_F(GlslWriterTest, AccessMatrix) {
auto* func = b.Function("a", ty.void_(), core::ir::Function::PipelineStage::kCompute);
func->SetWorkgroupSize(1, 1, 1);
@@ -119,12 +121,15 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
-
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4 v = mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f));
+ float x = v[1u].z;
+}
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStoreVectorElementConstantIndex) {
+TEST_F(GlslWriterTest, AccessStoreVectorElementConstantIndex) {
auto* func = b.Function("foo", ty.void_());
b.Append(func->Block(), [&] {
auto* vec_var = b.Var("vec", ty.ptr<function, vec4<i32>>());
@@ -134,11 +139,17 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
-
+void foo() {
+ ivec4 vec = ivec4(0);
+ vec[1u] = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
)");
}
-// TODO(dsinclair): Support StoreVectorElement
+// TODO(dsinclair): Needs ir::Convert
TEST_F(GlslWriterTest, DISABLED_AccessStoreVectorElementDynamicIndex) {
auto* idx = b.FunctionParam("idx", ty.i32());
auto* func = b.Function("foo", ty.void_());
@@ -204,8 +215,7 @@
)");
}
-// TODO(dsinclair): Support swizzle
-TEST_F(GlslWriterTest, DISABLED_AccessSwizzle) {
+TEST_F(GlslWriterTest, AccessSwizzle) {
auto* f = b.Function("a", ty.void_(), core::ir::Function::PipelineStage::kCompute);
f->SetWorkgroupSize(1, 1, 1);
@@ -217,12 +227,15 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
-
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec3 v = vec3(0.0f);
+ float b = v.y;
+}
)");
}
-// TODO(dsinclair): Support swizzle
-TEST_F(GlslWriterTest, DISABLED_AccessSwizzleMulti) {
+TEST_F(GlslWriterTest, AccessSwizzleMulti) {
auto* f = b.Function("a", ty.void_(), core::ir::Function::PipelineStage::kCompute);
f->SetWorkgroupSize(1, 1, 1);
@@ -234,12 +247,15 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
-
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec4 v = vec4(0.0f);
+ vec4 b = v.wzyx;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStorageVector) {
+TEST_F(GlslWriterTest, AccessStorageVector) {
auto* var = b.Var<storage, vec4<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -255,13 +271,22 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+vec4 v;
+void main() {
+ vec4 a = v;
+ float b = v.x;
+ float c = v.y;
+ float d = v.z;
+ float e = v.w;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStorageVectorF16) {
+TEST_F(GlslWriterTest, AccessStorageVectorF16) {
auto* var = b.Var<storage, vec4<f16>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -277,13 +302,23 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+f16vec4 v;
+void main() {
+ f16vec4 a = v;
+ float16_t b = v.x;
+ float16_t c = v.y;
+ float16_t d = v.z;
+ float16_t e = v.w;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStorageMatrix) {
+TEST_F(GlslWriterTest, AccessStorageMatrix) {
auto* var = b.Var<storage, mat4x4<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -298,8 +333,16 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+mat4 v;
+void main() {
+ mat4 a = v;
+ vec4 b = v[3u];
+ float c = v[1u].z;
+}
)");
}
@@ -366,8 +409,7 @@
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStorageNested) {
+TEST_F(GlslWriterTest, AccessStorageNested) {
auto* Inner =
ty.Struct(mod.symbols.New("Inner"), {
{mod.symbols.New("s"), ty.mat3x3<f32>()},
@@ -398,12 +440,33 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+struct Inner {
+ mat3 s;
+ vec3 t[5];
+};
+struct Outer {
+ float x;
+ Inner y;
+};
+
+struct SB {
+ int a;
+ Outer b;
+};
+precision highp float;
+precision highp int;
+
+
+SB v;
+void main() {
+ SB a = v;
+ float b = v.b.y.t[3u].z;
+}
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStorageStoreVector) {
+TEST_F(GlslWriterTest, AccessStorageStoreVector) {
auto* var = b.Var<storage, vec4<f32>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -418,13 +481,21 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+vec4 v;
+void main() {
+ v[0u] = 2.0f;
+ v[1u] = 4.0f;
+ v[2u] = 8.0f;
+ v[3u] = 16.0f;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessDirectVariable) {
+TEST_F(GlslWriterTest, AccessDirectVariable) {
auto* var1 = b.Var<storage, vec4<f32>, core::Access::kRead>("v1");
var1->SetBindingPoint(0, 0);
b.ir.root_block->Append(var1);
@@ -449,8 +520,22 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+vec4 v1;
+vec4 v2;
+void bar() {
+ float a = v1.y;
+}
+void bar_1() {
+ float a = v2.y;
+}
+void main() {
+ bar();
+ bar_1();
+}
)");
}
@@ -735,8 +820,7 @@
)");
}
-// TODO(dsinclair): Handle LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformVector) {
+TEST_F(GlslWriterTest, AccessUniformVector) {
auto* var = b.Var<uniform, vec4<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -752,13 +836,22 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform vec4 v;
+void main() {
+ vec4 a = v;
+ float b = v.x;
+ float c = v.y;
+ float d = v.z;
+ float e = v.w;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformVectorF16) {
+TEST_F(GlslWriterTest, AccessUniformVectorF16) {
auto* var = b.Var<uniform, vec4<f16>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -775,13 +868,24 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+uniform f16vec4 v;
+void main() {
+ uint x = 1u;
+ f16vec4 a = v;
+ float16_t b = v.x;
+ float16_t c = v[min(x, 3u)];
+ float16_t d = v.z;
+ float16_t e = v.w;
+}
)");
}
-// TODO(dsinclair): support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMatrix) {
+TEST_F(GlslWriterTest, AccessUniformMatrix) {
auto* var = b.Var<uniform, mat4x4<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -796,13 +900,20 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform mat4 v;
+void main() {
+ mat4 a = v;
+ vec4 b = v[3u];
+ float c = v[1u].z;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMatrix2x3) {
+TEST_F(GlslWriterTest, AccessUniformMatrix2x3) {
auto* var = b.Var<uniform, mat2x3<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -817,13 +928,20 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform mat2x3 v;
+void main() {
+ mat2x3 a = v;
+ vec3 b = v[1u];
+ float c = v[1u].z;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMat2x3F16) {
+TEST_F(GlslWriterTest, AccessUniformMat2x3F16) {
auto* var = b.Var<uniform, mat2x3<f16>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
b.ir.root_block->Append(var);
@@ -837,13 +955,21 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+uniform f16mat2x3 v;
+void main() {
+ f16mat2x3 a = v;
+ f16vec3 b = v[1u];
+ float16_t c = v[1u].z;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMatrix3x2) {
+TEST_F(GlslWriterTest, AccessUniformMatrix3x2) {
auto* var = b.Var<uniform, mat3x2<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -858,13 +984,20 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform mat3x2 v;
+void main() {
+ mat3x2 a = v;
+ vec2 b = v[1u];
+ float c = v[1u].y;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMatrix2x2) {
+TEST_F(GlslWriterTest, AccessUniformMatrix2x2) {
auto* var = b.Var<uniform, mat2x2<f32>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -879,13 +1012,20 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform mat2 v;
+void main() {
+ mat2 a = v;
+ vec2 b = v[1u];
+ float c = v[1u].y;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformMatrix2x2F16) {
+TEST_F(GlslWriterTest, AccessUniformMatrix2x2F16) {
auto* var = b.Var<uniform, mat2x2<f16>, core::Access::kRead>("v");
var->SetBindingPoint(0, 0);
@@ -900,8 +1040,17 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+uniform f16mat2 v;
+void main() {
+ f16mat2 a = v;
+ f16vec2 b = v[1u];
+ float16_t c = v[1u].y;
+}
)");
}
@@ -1043,8 +1192,7 @@
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessUniformStructNested) {
+TEST_F(GlslWriterTest, AccessUniformStructNested) {
auto* Inner =
ty.Struct(mod.symbols.New("Inner"), {
{mod.symbols.New("s"), ty.mat3x3<f32>()},
@@ -1075,7 +1223,29 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+struct Inner {
+ mat3 s;
+ vec3 t[5];
+};
+struct Outer {
+ float x;
+ Inner y;
+};
+
+struct SB {
+ int a;
+ Outer b;
+};
+precision highp float;
+precision highp int;
+
+
+uniform SB v;
+void main() {
+ SB a = v;
+ float b = v.b.y.t[3u].z;
+}
)");
}
@@ -1126,8 +1296,7 @@
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStoreVectorElement) {
+TEST_F(GlslWriterTest, AccessStoreVectorElement) {
auto* var = b.Var<storage, vec3<f32>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -1140,13 +1309,18 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+vec3 v;
+void main() {
+ v[1u] = 2.0f;
+}
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStoreVectorElementF16) {
+TEST_F(GlslWriterTest, AccessStoreVectorElementF16) {
auto* var = b.Var<storage, vec3<f16>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -1159,8 +1333,15 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+f16vec3 v;
+void main() {
+ v[1u] = 2.0hf;
+}
)");
}
@@ -1213,8 +1394,7 @@
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStoreMatrixElement) {
+TEST_F(GlslWriterTest, AccessStoreMatrixElement) {
auto* var = b.Var<storage, mat4x4<f32>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -1227,13 +1407,18 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+mat4 v;
+void main() {
+ v[1u][2u] = 5.0f;
+}
)");
}
-// TODO(dsinclair): Support StoreVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessStoreMatrixElementF16) {
+TEST_F(GlslWriterTest, AccessStoreMatrixElementF16) {
auto* var = b.Var<storage, mat3x2<f16>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -1246,8 +1431,15 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(#extension GL_AMD_gpu_shader_half_float: require
+precision highp float;
+precision highp int;
+
+f16mat3x2 v;
+void main() {
+ v[2u][1u] = 5.0hf;
+}
)");
}
@@ -1394,8 +1586,7 @@
)");
}
-// TODO(dsinclair): Support Loop
-TEST_F(GlslWriterTest, DISABLED_AccessStoreArray) {
+TEST_F(GlslWriterTest, AccessStoreArray) {
auto* var = b.Var<storage, array<vec3<f32>, 5>, core::Access::kReadWrite>("v");
var->SetBindingPoint(0, 0);
@@ -1408,8 +1599,32 @@
});
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
- EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+vec3 v[5];
+void tint_store_and_preserve_padding(inout vec3 target[5], vec3 value_param[5]) {
+ {
+ uint v_1 = 0u;
+ v_1 = 0u;
+ while(true) {
+ uint v_2 = v_1;
+ if ((v_2 >= 5u)) {
+ break;
+ }
+ target[v_2] = value_param[v_2];
+ {
+ v_1 = (v_2 + 1u);
+ }
+ continue;
+ }
+ }
+}
+void main() {
+ vec3 ary[5] = vec3[5](vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f));
+ tint_store_and_preserve_padding(v, ary);
+}
)");
}
@@ -1599,8 +1814,7 @@
)");
}
-// TODO(dsinclair): Support Loop
-TEST_F(GlslWriterTest, DISABLED_AccessStoreStructComplex) {
+TEST_F(GlslWriterTest, AccessStoreStructComplex) {
auto* Inner =
ty.Struct(mod.symbols.New("Inner"), {
{mod.symbols.New("s"), ty.mat3x3<f32>()},
@@ -1629,12 +1843,67 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+struct Inner {
+ mat3 s;
+ vec3 t[5];
+};
+struct Outer {
+ float x;
+ Inner y;
+};
+
+struct SB {
+ int a;
+ Outer b;
+};
+precision highp float;
+precision highp int;
+
+
+SB v;
+void tint_store_and_preserve_padding_4(inout vec3 target[5], vec3 value_param[5]) {
+ {
+ uint v_1 = 0u;
+ v_1 = 0u;
+ while(true) {
+ uint v_2 = v_1;
+ if ((v_2 >= 5u)) {
+ break;
+ }
+ target[v_2] = value_param[v_2];
+ {
+ v_1 = (v_2 + 1u);
+ }
+ continue;
+ }
+ }
+}
+void tint_store_and_preserve_padding_3(inout mat3 target, mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding_2(inout Inner target, Inner value_param) {
+ tint_store_and_preserve_padding_3(target.s, value_param.s);
+ tint_store_and_preserve_padding_4(target.t, value_param.t);
+}
+void tint_store_and_preserve_padding_1(inout Outer target, Outer value_param) {
+ target.x = value_param.x;
+ tint_store_and_preserve_padding_2(target.y, value_param.y);
+}
+void tint_store_and_preserve_padding(inout SB target, SB value_param) {
+ target.a = value_param.a;
+ tint_store_and_preserve_padding_1(target.b, value_param.b);
+}
+void main() {
+ SB s = SB(0, Outer(0.0f, Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), vec3[5](vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)))));
+ tint_store_and_preserve_padding(v, s);
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_AccessChainReused) {
+TEST_F(GlslWriterTest, AccessChainReused) {
auto* sb = ty.Struct(mod.symbols.New("SB"), {
{mod.symbols.New("a"), ty.i32()},
{mod.symbols.New("b"), ty.vec3<f32>()},
@@ -1654,12 +1923,23 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+struct SB {
+ int a;
+ vec3 b;
+};
+precision highp float;
+precision highp int;
+
+SB v;
+void main() {
+ float b = v.b.y;
+ float c = v.b.z;
+}
)");
}
-// TODO(dsinclair): Support LoadVectorElement
-TEST_F(GlslWriterTest, DISABLED_UniformAccessChainReused) {
+TEST_F(GlslWriterTest, AccessUniformChainReused) {
auto* sb = ty.Struct(mod.symbols.New("SB"), {
{mod.symbols.New("c"), ty.f32()},
{mod.symbols.New("d"), ty.vec3<f32>()},
@@ -1679,7 +1959,19 @@
ASSERT_TRUE(Generate()) << err_ << output_.glsl;
EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+struct SB {
+ float c;
+ vec3 d;
+};
+precision highp float;
+precision highp int;
+
+uniform SB v;
+void main() {
+ float b = v.d.y;
+ float c = v.d.z;
+}
)");
}
diff --git a/src/tint/lang/glsl/writer/printer/printer.cc b/src/tint/lang/glsl/writer/printer/printer.cc
index 29723cb..e0cbd40 100644
--- a/src/tint/lang/glsl/writer/printer/printer.cc
+++ b/src/tint/lang/glsl/writer/printer/printer.cc
@@ -55,6 +55,7 @@
#include "src/tint/lang/core/ir/next_iteration.h"
#include "src/tint/lang/core/ir/return.h"
#include "src/tint/lang/core/ir/store.h"
+#include "src/tint/lang/core/ir/store_vector_element.h"
#include "src/tint/lang/core/ir/switch.h"
#include "src/tint/lang/core/ir/swizzle.h"
#include "src/tint/lang/core/ir/terminate_invocation.h"
@@ -264,20 +265,21 @@
// TerminateInvocation must come before Call.
[&](const core::ir::TerminateInvocation*) { EmitDiscard(); }, //
- [&](const core::ir::BreakIf* i) { EmitBreakIf(i); }, //
- [&](const core::ir::Call* i) { EmitCallStmt(i); }, //
- [&](const core::ir::Continue*) { EmitContinue(); }, //
- [&](const core::ir::ExitIf*) { /* do nothing handled by transform */ }, //
- [&](const core::ir::ExitLoop*) { EmitExitLoop(); }, //
- [&](const core::ir::ExitSwitch*) { EmitExitSwitch(); }, //
- [&](const core::ir::If* i) { EmitIf(i); }, //
- [&](const core::ir::Let* i) { EmitLet(i); }, //
- [&](const core::ir::Loop* l) { EmitLoop(l); }, //
- [&](const core::ir::Return* r) { EmitReturn(r); }, //
- [&](const core::ir::Store* s) { EmitStore(s); }, //
- [&](const core::ir::Switch* i) { EmitSwitch(i); }, //
- [&](const core::ir::Unreachable*) { EmitUnreachable(); }, //
- [&](const core::ir::Var* v) { EmitVar(Line(), v); }, //
+ [&](const core::ir::BreakIf* i) { EmitBreakIf(i); }, //
+ [&](const core::ir::Call* i) { EmitCallStmt(i); }, //
+ [&](const core::ir::Continue*) { EmitContinue(); }, //
+ [&](const core::ir::ExitIf*) { /* do nothing handled by transform */ }, //
+ [&](const core::ir::ExitLoop*) { EmitExitLoop(); }, //
+ [&](const core::ir::ExitSwitch*) { EmitExitSwitch(); }, //
+ [&](const core::ir::If* i) { EmitIf(i); }, //
+ [&](const core::ir::Let* i) { EmitLet(i); }, //
+ [&](const core::ir::Loop* l) { EmitLoop(l); }, //
+ [&](const core::ir::Return* r) { EmitReturn(r); }, //
+ [&](const core::ir::Store* s) { EmitStore(s); }, //
+ [&](const core::ir::StoreVectorElement* s) { EmitStoreVectorElement(s); }, //
+ [&](const core::ir::Switch* i) { EmitSwitch(i); }, //
+ [&](const core::ir::Unreachable*) { EmitUnreachable(); }, //
+ [&](const core::ir::Var* v) { EmitVar(Line(), v); }, //
[&](const core::ir::NextIteration*) { /* do nothing */ }, //
[&](const core::ir::ExitIf*) { /* do nothing handled by transform */ }, //
@@ -294,6 +296,57 @@
}
}
+ void EmitStoreVectorElement(const core::ir::StoreVectorElement* l) {
+ auto out = Line();
+
+ EmitValue(out, l->To());
+ out << "[";
+ EmitValue(out, l->Index());
+ out << "] = ";
+ EmitValue(out, l->Value());
+ out << ";";
+ }
+
+ void IdxToComponent(StringStream& out, uint32_t idx) {
+ switch (idx) {
+ case 0:
+ out << "x";
+ break;
+ case 1:
+ out << "y";
+ break;
+ case 2:
+ out << "z";
+ break;
+ case 3:
+ out << "w";
+ break;
+ default:
+ TINT_UNREACHABLE();
+ }
+ }
+
+ void EmitLoadVectorElement(StringStream& out, const core::ir::LoadVectorElement* l) {
+ EmitValue(out, l->From());
+
+ if (auto* cnst = l->Index()->As<core::ir::Constant>()) {
+ out << ".";
+ IdxToComponent(out, cnst->Value()->ValueAs<uint32_t>());
+ } else {
+ out << "[";
+ EmitValue(out, l->Index());
+ out << "]";
+ }
+ }
+
+ void EmitSwizzle(StringStream& out, const core::ir::Swizzle* swizzle) {
+ EmitValue(out, swizzle->Object());
+ out << ".";
+ for (const auto i : swizzle->Indices()) {
+ IdxToComponent(out, i);
+ }
+ }
+
void EmitDiscard() { Line() << "discard;"; }
void EmitContinue() {
@@ -753,7 +806,9 @@
[&](const core::ir::CoreUnary* u) { EmitUnary(out, u); },
[&](const core::ir::Let* l) { out << NameOf(l->Result(0)); },
[&](const core::ir::Load* l) { EmitLoad(out, l); },
+ [&](const core::ir::LoadVectorElement* l) { EmitLoadVectorElement(out, l); },
[&](const core::ir::Store* s) { EmitStore(s); },
+ [&](const core::ir::Swizzle* s) { EmitSwizzle(out, s); }, //
[&](const core::ir::UserCall* c) { EmitUserCall(out, c); },
[&](const core::ir::Var* var) { out << NameOf(var->Result(0)); },
diff --git a/test/tint/access/var/matrix.spvasm.expected.ir.glsl b/test/tint/access/var/matrix.spvasm.expected.ir.glsl
index 4a20bc7..b90b6a7 100644
--- a/test/tint/access/var/matrix.spvasm.expected.ir.glsl
+++ b/test/tint/access/var/matrix.spvasm.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+void main_1() {
+ mat3 m = mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f));
+ float x_16 = m[1].y;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ main_1();
+}
diff --git a/test/tint/access/var/vector.spvasm.expected.ir.glsl b/test/tint/access/var/vector.spvasm.expected.ir.glsl
index 4a20bc7..fcc6ea8 100644
--- a/test/tint/access/var/vector.spvasm.expected.ir.glsl
+++ b/test/tint/access/var/vector.spvasm.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+void main_1() {
+ vec3 v = vec3(0.0f);
+ float x_14 = v.y;
+ vec2 x_17 = v.xz;
+ vec3 x_19 = v.xzy;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ main_1();
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..0c1acc3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u[4];
+float s;
+float a(mat2 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat2 m) {
+ return m[0][0u];
+}
+float c(vec2 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].yx));
+ s = (v_3 + d(u[1][0].yx[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..01955e5 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u[4];
+float s;
+mat2 p[4] = mat2[4](mat2(vec2(0.0f), vec2(0.0f)), mat2(vec2(0.0f), vec2(0.0f)), mat2(vec2(0.0f), vec2(0.0f)), mat2(vec2(0.0f), vec2(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].yx;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..f118684 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u[4];
+mat2 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].yx;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
index 1e74e77..97e2bb0 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u[4];
+float16_t s;
+float16_t a(f16mat2x3 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float16_t b(f16mat2x3 m) {
+ return m[0][0u];
+}
+float16_t c(f16vec3 v) {
+ return v[0u];
+}
+float16_t d(float16_t f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float16_t v_1 = a(u);
+ float16_t v_2 = (v_1 + b(u[1]));
+ float16_t v_3 = (v_2 + c(u[1][0].zxy));
+ s = (v_3 + d(u[1][0].zxy[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..927fc00 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u[4];
+float16_t s;
+f16mat2x3 p[4] = f16mat2x3[4](f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].zxy;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..b5f531a 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,33 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u[4];
+f16mat2x3 s[4];
+void tint_store_and_preserve_padding_1(inout f16mat2x3 target, f16mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+void tint_store_and_preserve_padding(inout f16mat2x3 target[4], f16mat2x3 value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[1][0] = u[0][1].zxy;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..2fc8aee 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u[4];
+float s;
+float a(mat2x3 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat2x3 m) {
+ return m[0][0u];
+}
+float c(vec3 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].zxy));
+ s = (v_3 + d(u[1][0].zxy[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..ec95663 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u[4];
+float s;
+mat2x3 p[4] = mat2x3[4](mat2x3(vec3(0.0f), vec3(0.0f)), mat2x3(vec3(0.0f), vec3(0.0f)), mat2x3(vec3(0.0f), vec3(0.0f)), mat2x3(vec3(0.0f), vec3(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].zxy;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..456d7bc 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,32 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u[4];
+mat2x3 s[4];
+void tint_store_and_preserve_padding_1(inout mat2x3 target, mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+void tint_store_and_preserve_padding(inout mat2x3 target[4], mat2x3 value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[1][0] = u[0][1].zxy;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
index 1e74e77..e485610 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u[4];
+float16_t s;
+float16_t a(f16mat2x4 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float16_t b(f16mat2x4 m) {
+ return m[0][0u];
+}
+float16_t c(f16vec4 v) {
+ return v[0u];
+}
+float16_t d(float16_t f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float16_t v_1 = a(u);
+ float16_t v_2 = (v_1 + b(u[1]));
+ float16_t v_3 = (v_2 + c(u[1][0].ywxz));
+ s = (v_3 + d(u[1][0].ywxz[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..b23998f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u[4];
+float16_t s;
+f16mat2x4 p[4] = f16mat2x4[4](f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].ywxz;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..8cecd01 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u[4];
+f16mat2x4 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].ywxz;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..cd8b05d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u[4];
+float s;
+float a(mat2x4 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat2x4 m) {
+ return m[0][0u];
+}
+float c(vec4 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].ywxz));
+ s = (v_3 + d(u[1][0].ywxz[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..c9ea1d9 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u[4];
+float s;
+mat2x4 p[4] = mat2x4[4](mat2x4(vec4(0.0f), vec4(0.0f)), mat2x4(vec4(0.0f), vec4(0.0f)), mat2x4(vec4(0.0f), vec4(0.0f)), mat2x4(vec4(0.0f), vec4(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].ywxz;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..82d22eb 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u[4];
+mat2x4 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].ywxz;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..1583f13 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u[4];
+float s;
+float a(mat3 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat3 m) {
+ return m[0][0u];
+}
+float c(vec3 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].zxy));
+ s = (v_3 + d(u[1][0].zxy[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..3df2911 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u[4];
+float s;
+mat3 p[4] = mat3[4](mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].zxy;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..ff71e5d 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,33 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u[4];
+mat3 s[4];
+void tint_store_and_preserve_padding_1(inout mat3 target, mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding(inout mat3 target[4], mat3 value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[1][0] = u[0][1].zxy;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..8fafacb 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u[4];
+float s;
+float a(mat3x4 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat3x4 m) {
+ return m[0][0u];
+}
+float c(vec4 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].ywxz));
+ s = (v_3 + d(u[1][0].ywxz[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..db619a5 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u[4];
+float s;
+mat3x4 p[4] = mat3x4[4](mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].ywxz;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..d5c36b9 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u[4];
+mat3x4 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].ywxz;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
index 1e74e77..27f64ae 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u[4];
+float16_t s;
+float16_t a(f16mat4x2 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float16_t b(f16mat4x2 m) {
+ return m[0][0u];
+}
+float16_t c(f16vec2 v) {
+ return v[0u];
+}
+float16_t d(float16_t f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float16_t v_1 = a(u);
+ float16_t v_2 = (v_1 + b(u[1]));
+ float16_t v_3 = (v_2 + c(u[1][0].yx));
+ s = (v_3 + d(u[1][0].yx[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..8eee845 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u[4];
+float16_t s;
+f16mat4x2 p[4] = f16mat4x2[4](f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].yx;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..75b5141 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u[4];
+f16mat4x2 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].yx;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..4281537 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u[4];
+float s;
+float a(mat4x2 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat4x2 m) {
+ return m[0][0u];
+}
+float c(vec2 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].yx));
+ s = (v_3 + d(u[1][0].yx[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..96798f7 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u[4];
+float s;
+mat4x2 p[4] = mat4x2[4](mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].yx;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..8188a77 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u[4];
+mat4x2 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].yx;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
index 1e74e77..5df0efc 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u[4];
+float16_t s;
+float16_t a(f16mat4x3 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float16_t b(f16mat4x3 m) {
+ return m[0][0u];
+}
+float16_t c(f16vec3 v) {
+ return v[0u];
+}
+float16_t d(float16_t f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float16_t v_1 = a(u);
+ float16_t v_2 = (v_1 + b(u[1]));
+ float16_t v_3 = (v_2 + c(u[1][0].zxy));
+ s = (v_3 + d(u[1][0].zxy[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..229c910 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u[4];
+float16_t s;
+f16mat4x3 p[4] = f16mat4x3[4](f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].zxy;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..d9a0ddf 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,35 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u[4];
+f16mat4x3 s[4];
+void tint_store_and_preserve_padding_1(inout f16mat4x3 target, f16mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding(inout f16mat4x3 target[4], f16mat4x3 value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[1][0] = u[0][1].zxy;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..89d0af7 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u[4];
+float s;
+float a(mat4x3 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat4x3 m) {
+ return m[0][0u];
+}
+float c(vec3 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].zxy));
+ s = (v_3 + d(u[1][0].zxy[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..308277c 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u[4];
+float s;
+mat4x3 p[4] = mat4x3[4](mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].zxy;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..1480802 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,34 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u[4];
+mat4x3 s[4];
+void tint_store_and_preserve_padding_1(inout mat4x3 target, mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding(inout mat4x3 target[4], mat4x3 value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[1][0] = u[0][1].zxy;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
index 1e74e77..b826561 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u[4];
+float16_t s;
+float16_t a(f16mat4 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float16_t b(f16mat4 m) {
+ return m[0][0u];
+}
+float16_t c(f16vec4 v) {
+ return v[0u];
+}
+float16_t d(float16_t f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float16_t v_1 = a(u);
+ float16_t v_2 = (v_1 + b(u[1]));
+ float16_t v_3 = (v_2 + c(u[1][0].ywxz));
+ s = (v_3 + d(u[1][0].ywxz[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..4e6ed8a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u[4];
+float16_t s;
+f16mat4 p[4] = f16mat4[4](f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].ywxz;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..c2eeaa0 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u[4];
+f16mat4 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].ywxz;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
index 1e74e77..89a92a6 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Access
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u[4];
+float s;
+float a(mat4 a_1[4]) {
+ return a_1[0][0][0u];
+}
+float b(mat4 m) {
+ return m[0][0u];
+}
+float c(vec4 v) {
+ return v[0u];
+}
+float d(float f) {
+ return f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float v_1 = a(u);
+ float v_2 = (v_1 + b(u[1]));
+ float v_3 = (v_2 + c(u[1][0].ywxz));
+ s = (v_3 + d(u[1][0].ywxz[0u]));
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..dc1f393 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u[4];
+float s;
+mat4 p[4] = mat4[4](mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[1][0] = u[0][1].ywxz;
+ p[1][0][0u] = u[0][1].x;
+ s = p[1][0].x;
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..fe9b1a3 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u[4];
+mat4 s[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[2];
+ s[1][0] = u[0][1].ywxz;
+ s[1][0][0u] = u[0][1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..fcf1aea 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].yx);
+ float16_t a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..a545b07 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat2 m) {
+}
+void d(f16vec2 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..0e72486 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..2a29dfc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..2f39494 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2 t = transpose(u[2].m);
+ float l = length(u[0].m[1].yx);
+ float a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..1017ca8 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat2 m) {
+}
+void d(vec2 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..dbaffc4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat2(vec2(0.0f), vec2(0.0f)), 0), S(0, mat2(vec2(0.0f), vec2(0.0f)), 0), S(0, mat2(vec2(0.0f), vec2(0.0f)), 0), S(0, mat2(vec2(0.0f), vec2(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..5d67343 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..4f65e85 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3x2 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].zxy);
+ float16_t a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..737fa3d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat2x3 m) {
+}
+void d(f16vec3 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..e726585 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..51022ae 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,44 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout f16mat2x3 target, f16mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..070d1c7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x2 t = transpose(u[2].m);
+ float l = length(u[0].m[1].zxy);
+ float a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..9a15f5b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat2x3 m) {
+}
+void d(vec3 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..d2af835 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat2x3(vec3(0.0f), vec3(0.0f)), 0), S(0, mat2x3(vec3(0.0f), vec3(0.0f)), 0), S(0, mat2x3(vec3(0.0f), vec3(0.0f)), 0), S(0, mat2x3(vec3(0.0f), vec3(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..eb7c52c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,43 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout mat2x3 target, mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..921c395 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4x2 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].ywxz);
+ float16_t a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..99ae1f6 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat2x4 m) {
+}
+void d(f16vec4 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..143732f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..28ae045 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..b143e67 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4x2 t = transpose(u[2].m);
+ float l = length(u[0].m[1].ywxz);
+ float a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..222890e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat2x4 m) {
+}
+void d(vec4 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..38bc18a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat2x4(vec4(0.0f), vec4(0.0f)), 0), S(0, mat2x4(vec4(0.0f), vec4(0.0f)), 0), S(0, mat2x4(vec4(0.0f), vec4(0.0f)), 0), S(0, mat2x4(vec4(0.0f), vec4(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..f84945e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat2x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..5fdfd2f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2x3 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].yx);
+ float16_t a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..ab66bc5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat3x2 m) {
+}
+void d(f16vec2 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..0852022 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..f56e1f3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..16e755d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x3 t = transpose(u[2].m);
+ float l = length(u[0].m[1].yx);
+ float a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..d06f473 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat3x2 m) {
+}
+void d(vec2 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..affc08a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..8679e45 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..5a920bad 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].zxy);
+ float16_t a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..f8a566c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat3 m) {
+}
+void d(f16vec3 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..955f863 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..3ee3012 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,45 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout f16mat3 target, f16mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..3db5248 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3 t = transpose(u[2].m);
+ float l = length(u[0].m[1].zxy);
+ float a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..36f093c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat3 m) {
+}
+void d(vec3 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..8966e9b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..19597f7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,44 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout mat3 target, mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..f842f18 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4x3 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].ywxz);
+ float16_t a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..cbd65f9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat3x4 m) {
+}
+void d(f16vec4 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..ecd97e8 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..813ef00 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..5b998ee 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4x3 t = transpose(u[2].m);
+ float l = length(u[0].m[1].ywxz);
+ float a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..a5e25df 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat3x4 m) {
+}
+void d(vec4 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..78d2000 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..e8be633 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat3x4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..0178e4f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2x4 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].yx);
+ float16_t a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..93c51f5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat4x2 m) {
+}
+void d(f16vec2 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..a089b82 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0), S(0, f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..5fa640f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..a381b84 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 t = transpose(u[2].m);
+ float l = length(u[0].m[1].yx);
+ float a = abs(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..7065011 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat4x2 m) {
+}
+void d(vec2 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].yx);
+ e(u[0].m[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..df7d465 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0), S(0, mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..e5cd212 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x2 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].yx;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..48b474c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3x4 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].zxy);
+ float16_t a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..c8dbf05 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat4x3 m) {
+}
+void d(f16vec3 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..66231ff 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0), S(0, f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..4b62860 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,46 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout f16mat4x3 target, f16mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..64a55a7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x4 t = transpose(u[2].m);
+ float l = length(u[0].m[1].zxy);
+ float a = abs(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..e94b2d4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat4x3 m) {
+}
+void d(vec3 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].zxy);
+ e(u[0].m[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..c40f3bf 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0), S(0, mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..ef3ce1a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,45 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4x3 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_2(inout mat4x3 target, mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ tint_store_and_preserve_padding_2(target.m, value_param.m);
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ tint_store_and_preserve_padding_2(s[3].m, u[2].m);
+ s[1].m[0] = u[0].m[1].zxy;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..af96480 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4 t = transpose(u[2].m);
+ float16_t l = length(u[0].m[1].ywxz);
+ float16_t a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..96c867c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,28 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(f16mat4 m) {
+}
+void d(f16vec4 v) {
+}
+void e(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..1060ac9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0), S(0, f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..d19c7d3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ f16mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..38649e1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4 t = transpose(u[2].m);
+ float l = length(u[0].m[1].ywxz);
+ float a = abs(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..8a72238 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+void a(S a_1[4]) {
+}
+void b(S s) {
+}
+void c(mat4 m) {
+}
+void d(vec4 v) {
+}
+void e(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[2]);
+ c(u[2].m);
+ d(u[0].m[1].ywxz);
+ e(u[0].m[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..25656ea 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S p[4] = S[4](S(0, mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0), S(0, mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)), 0));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[2];
+ p[3].m = u[2].m;
+ p[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..5f0e066 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,39 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int before;
+ mat4 m;
+ int after;
+};
-tint executable returned error: signal: illegal instruction
+uniform S u[4];
+S s[4];
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ target.before = value_param.before;
+ target.m = value_param.m;
+ target.after = value_param.after;
+}
+void tint_store_and_preserve_padding(inout S target[4], S value_param[4]) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_1], value_param[v_1]);
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ tint_store_and_preserve_padding_1(s[1], u[2]);
+ s[3].m = u[2].m;
+ s[1].m[0] = u[0].m[1].ywxz;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..6bfe4b5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..914e8bd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2 u;
+void a(f16mat2 m) {
+}
+void b(f16vec2 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..83de027 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2 u;
+f16mat2 p = f16mat2(f16vec2(0.0hf), f16vec2(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..e266aac 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2 u;
+f16mat2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..a564021 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..b158732 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u;
+void a(mat2 m) {
+}
+void b(vec2 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..2b7523c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u;
+mat2 p = mat2(vec2(0.0f), vec2(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..5f9f438 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2 u;
+mat2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..0b91c84 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3x2 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..e0024ba 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u;
+void a(f16mat2x3 m) {
+}
+void b(f16vec3 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..0c36ca1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u;
+f16mat2x3 p = f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..47e1153 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x3 u;
+f16mat2x3 s;
+void tint_store_and_preserve_padding(inout f16mat2x3 target, f16mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..47f215d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x2 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..392cff5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u;
+void a(mat2x3 m) {
+}
+void b(vec3 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..e3a31ea 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u;
+mat2x3 p = mat2x3(vec3(0.0f), vec3(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..336f55ab 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x3 u;
+mat2x3 s;
+void tint_store_and_preserve_padding(inout mat2x3 target, mat2x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..d5461cf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4x2 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..31b2df7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u;
+void a(f16mat2x4 m) {
+}
+void b(f16vec4 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..6305d71 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u;
+f16mat2x4 p = f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..ff74846 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat2x4 u;
+f16mat2x4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..00ec920 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4x2 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..8872cf9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u;
+void a(mat2x4 m) {
+}
+void b(vec4 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..c0519ad 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u;
+mat2x4 p = mat2x4(vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..4aa67b7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat2x4 u;
+mat2x4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..4b5f84a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2x3 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..5c4d2c8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x2 u;
+void a(f16mat3x2 m) {
+}
+void b(f16vec2 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..9af38a8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x2 u;
+f16mat3x2 p = f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..321b3636 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x2 u;
+f16mat3x2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..77cfa1a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x3 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..755ef46 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x2 u;
+void a(mat3x2 m) {
+}
+void b(vec2 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..e9650bd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x2 u;
+mat3x2 p = mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..e6a285d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x2 u;
+mat3x2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..b65ee0e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..ed143bc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3 u;
+void a(f16mat3 m) {
+}
+void b(f16vec3 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..67012bf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3 u;
+f16mat3 p = f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..e1bd36c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3 u;
+f16mat3 s;
+void tint_store_and_preserve_padding(inout f16mat3 target, f16mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..63b41a2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..bc86315 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u;
+void a(mat3 m) {
+}
+void b(vec3 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..81c1ec1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u;
+mat3 p = mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..4dd0b58 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3 u;
+mat3 s;
+void tint_store_and_preserve_padding(inout mat3 target, mat3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..a7861f9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4x3 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..9027ccf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x4 u;
+void a(f16mat3x4 m) {
+}
+void b(f16vec4 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..0f376d1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x4 u;
+f16mat3x4 p = f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..7bda4f2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat3x4 u;
+f16mat3x4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..83e9ed8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4x3 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..c1bb67e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u;
+void a(mat3x4 m) {
+}
+void b(vec4 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..a5c2c56 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u;
+mat3x4 p = mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..34fe330 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat3x4 u;
+mat3x4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..c42b267 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat2x4 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..da702d7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u;
+void a(f16mat4x2 m) {
+}
+void b(f16vec2 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..633b31b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u;
+f16mat4x2 p = f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..e107015 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x2 u;
+f16mat4x2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..39656fb 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..06f26cd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u;
+void a(mat4x2 m) {
+}
+void b(vec2 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].yx);
+ c(u[1].x);
+ c(u[1].yx[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..afe8a0c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u;
+mat4x2 p = mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].yx;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..deb1b1f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x2 u;
+mat4x2 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].yx;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..920bf0f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat3x4 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..a37f7b1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u;
+void a(f16mat4x3 m) {
+}
+void b(f16vec3 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..7f9029b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u;
+f16mat4x3 p = f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
index 72ca17c..b900f61 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4x3 u;
+f16mat4x3 s;
+void tint_store_and_preserve_padding(inout f16mat4x3 target, f16mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..94f2a0b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x4 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..80f9ab5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u;
+void a(mat4x3 m) {
+}
+void b(vec3 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].zxy);
+ c(u[1].x);
+ c(u[1].zxy[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..2f3a9a7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u;
+mat4x3 p = mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].zxy;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
index 72ca17c..5722166 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4x3 u;
+mat4x3 s;
+void tint_store_and_preserve_padding(inout mat4x3 target, mat4x3 value_param) {
+ target[0u] = value_param[0u];
+ target[1u] = value_param[1u];
+ target[2u] = value_param[2u];
+ target[3u] = value_param[3u];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_store_and_preserve_padding(s, u);
+ s[1] = u[0];
+ s[1] = u[0].zxy;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..77c0d48 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16mat4 t = transpose(u);
+ float16_t l = length(u[1]);
+ float16_t a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
index 72ca17c..d1ed871 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,18 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u;
+void a(f16mat4 m) {
+}
+void b(f16vec4 v) {
+}
+void c(float16_t f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.glsl
index d4bb1c9..ffadbef 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u;
+f16mat4 p = f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..0aac068 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform f16mat4 u;
+f16mat4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
index 6c6485e..ae46e0f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4 t = transpose(u);
+ float l = length(u[1]);
+ float a = abs(u[0].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
index 72ca17c..d9ac9be 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u;
+void a(mat4 m) {
+}
+void b(vec4 v) {
+}
+void c(float f) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ a(u);
+ b(u[1]);
+ b(u[1].ywxz);
+ c(u[1].x);
+ c(u[1].ywxz[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.glsl
index d4bb1c9..2e8f11f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u;
+mat4 p = mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ p = u;
+ p[1] = u[0];
+ p[1] = u[0].ywxz;
+ p[0][1] = u[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
index d4bb1c9..2496a6f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uniform mat4 u;
+mat4 s;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ s = u;
+ s[1] = u[0];
+ s[1] = u[0].ywxz;
+ s[0][1] = u[1].x;
+}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.glsl
index d4bb1c9..e081821 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct UBO {
+ ivec4 data[4];
+ int dynamic_idx;
+};
-tint executable returned error: signal: illegal instruction
+struct Result {
+ int tint_symbol;
+};
+
+uniform UBO ubo;
+Result result;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ result.tint_symbol = ubo.data[ubo.dynamic_idx].x;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.glsl
index 1268749..a0caab4 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+ m1[uniforms.i][0] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.glsl
index 1268749..497c41c 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+ m1[uniforms.i][uniforms.j] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.glsl
index 1268749..6989480 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ m1[0][uniforms.j] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.glsl
index 1268749..dae10e8 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ m1[uniforms.i][0] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.glsl
index 1268749..3a421fb 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ m1[uniforms.i][uniforms.j] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.glsl
index 1268749..6989480 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.glsl
@@ -1,11 +1,13 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+ uint j;
+};
-tint executable returned error: signal: illegal instruction
+uniform Uniforms uniforms;
+mat2x4 m1 = mat2x4(vec4(0.0f), vec4(0.0f));
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ m1[0][uniforms.j] = 1.0f;
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.glsl
index 0480431..b7cc5a4 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.glsl
@@ -1,11 +1,42 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+vec2 v2f = vec2(0.0f);
+ivec3 v3i = ivec3(0);
+uvec4 v4u = uvec4(0u);
+bvec2 v2b = bvec2(false);
+void foo() {
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ v2f[i] = 1.0f;
+ v3i[i] = 1;
+ v4u[i] = 1u;
+ v2b[i] = true;
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ foo();
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.glsl
index 1268749..6068cba 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.glsl
@@ -1,11 +1,30 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+vec2 v2f = vec2(0.0f);
+ivec3 v3i = ivec3(0);
+uvec4 v4u = uvec4(0u);
+bvec2 v2b = bvec2(false);
+void foo() {
+ int i = 0;
+ v2f[i] = 1.0f;
+ v3i[i] = 1;
+ v4u[i] = 1u;
+ v2b[i] = true;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ foo();
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.glsl
index 0480431..1a7a52b 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.ir.glsl
@@ -1,11 +1,42 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec2 v2f = vec2(0.0f);
+ vec3 v3f = vec3(0.0f);
+ vec4 v4f = vec4(0.0f);
+ ivec2 v2i = ivec2(0);
+ ivec3 v3i = ivec3(0);
+ ivec4 v4i = ivec4(0);
+ uvec2 v2u = uvec2(0u);
+ uvec3 v3u = uvec3(0u);
+ uvec4 v4u = uvec4(0u);
+ bvec2 v2b = bvec2(false);
+ bvec3 v3b = bvec3(false);
+ bvec4 v4b = bvec4(false);
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ v2f[i] = 1.0f;
+ v3f[i] = 1.0f;
+ v4f[i] = 1.0f;
+ v2i[i] = 1;
+ v3i[i] = 1;
+ v4i[i] = 1;
+ v2u[i] = 1u;
+ v3u[i] = 1u;
+ v4u[i] = 1u;
+ v2b[i] = true;
+ v3b[i] = true;
+ v4b[i] = true;
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.glsl
index 0480431..35cd935 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.ir.glsl
@@ -1,11 +1,34 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec2 v2f = vec2(0.0f);
+ vec2 v2f_2 = vec2(0.0f);
+ ivec3 v3i = ivec3(0);
+ ivec3 v3i_2 = ivec3(0);
+ uvec4 v4u = uvec4(0u);
+ uvec4 v4u_2 = uvec4(0u);
+ bvec2 v2b = bvec2(false);
+ bvec2 v2b_2 = bvec2(false);
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ v2f[i] = 1.0f;
+ v3i[i] = 1;
+ v4u[i] = 1u;
+ v2b[i] = true;
+ v2f_2[i] = 1.0f;
+ v3i_2[i] = 1;
+ v4u_2[i] = 1u;
+ v2b_2[i] = true;
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.glsl
index 0480431..c24ea24 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.ir.glsl
@@ -1,11 +1,43 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Loop
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec2 v2f = vec2(0.0f);
+ vec3 v3f = vec3(0.0f);
+ vec4 v4f = vec4(0.0f);
+ ivec2 v2i = ivec2(0);
+ ivec3 v3i = ivec3(0);
+ ivec4 v4i = ivec4(0);
+ uvec2 v2u = uvec2(0u);
+ uvec3 v3u = uvec3(0u);
+ uvec4 v4u = uvec4(0u);
+ bvec2 v2b = bvec2(false);
+ bvec3 v3b = bvec3(false);
+ bvec4 v4b = bvec4(false);
+ {
+ int i = 0;
+ while(true) {
+ if ((i < 2)) {
+ } else {
+ break;
+ }
+ v2f[i] = 1.0f;
+ v2i[i] = 1;
+ v2u[i] = 1u;
+ v2b[i] = true;
+ {
+ i = (i + 1);
+ }
+ continue;
+ }
+ }
+ int i = 0;
+ v3f[i] = 1.0f;
+ v4f[i] = 1.0f;
+ v3i[i] = 1;
+ v4i[i] = 1;
+ v3u[i] = 1u;
+ v4u[i] = 1u;
+ v3b[i] = true;
+ v4b[i] = true;
+}
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.glsl b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.glsl
index 1268749..7b6e49a 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.ir.glsl
@@ -1,11 +1,30 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ vec2 v2f = vec2(0.0f);
+ vec3 v3f = vec3(0.0f);
+ vec4 v4f = vec4(0.0f);
+ ivec2 v2i = ivec2(0);
+ ivec3 v3i = ivec3(0);
+ ivec4 v4i = ivec4(0);
+ uvec2 v2u = uvec2(0u);
+ uvec3 v3u = uvec3(0u);
+ uvec4 v4u = uvec4(0u);
+ bvec2 v2b = bvec2(false);
+ bvec3 v3b = bvec3(false);
+ bvec4 v4b = bvec4(false);
+ int i = 0;
+ v2f[i] = 1.0f;
+ v3f[i] = 1.0f;
+ v4f[i] = 1.0f;
+ v2i[i] = 1;
+ v3i[i] = 1;
+ v4i[i] = 1;
+ v2u[i] = 1u;
+ v3u[i] = 1u;
+ v4u[i] = 1u;
+ v2b[i] = true;
+ v3b[i] = true;
+ v4b[i] = true;
+}
diff --git a/test/tint/bug/tint/2146.wgsl.expected.ir.glsl b/test/tint/bug/tint/2146.wgsl.expected.ir.glsl
index 4a20bc7..94731d8 100644
--- a/test/tint/bug/tint/2146.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/2146.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uvec3 localId = uvec3(0u);
+uint localIndex = 0u;
+uvec3 globalId = uvec3(0u);
+uvec3 numWorkgroups = uvec3(0u);
+uvec3 workgroupId = uvec3(0u);
+uint globalId2Index() {
+ return globalId.x;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ f16vec4 a = f16vec4(0.0hf);
+ float16_t b = 1.0hf;
+ a[0] = (a.x + b);
+}
diff --git a/test/tint/bug/tint/219.spvasm.expected.ir.glsl b/test/tint/bug/tint/219.spvasm.expected.ir.glsl
index 4a20bc7..0564a29 100644
--- a/test/tint/bug/tint/219.spvasm.expected.ir.glsl
+++ b/test/tint/bug/tint/219.spvasm.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+float x_200(inout vec2 x_201) {
+ float x_212 = x_201.x;
+ return x_212;
+}
+void main_1() {
+ vec2 x_11 = vec2(0.0f);
+ float x_12 = x_200(x_11);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ main_1();
+}
diff --git a/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.glsl
index 4a20bc7..b6cfdca 100644
--- a/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+float f() {
+ vec3 v = vec3(1.0f, 2.0f, 3.0f);
+ int i = 1;
+ return v[i];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.glsl
index 4a20bc7..69600ec 100644
--- a/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/let/param/vector.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+float f(int x) {
+ vec3 v = vec3(1.0f, 2.0f, 3.0f);
+ int i = x;
+ return v[i];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.glsl
index 4a20bc7..ed6fdc1 100644
--- a/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/literal/vector.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+float f() {
+ vec3 v = vec3(1.0f, 2.0f, 3.0f);
+ return v.y;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.glsl
index 4a20bc7..9ad3700 100644
--- a/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/param/vector.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+float f(int i) {
+ vec3 v = vec3(1.0f, 2.0f, 3.0f);
+ return v[i];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/index/var/struct_with_matrix.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/struct_with_matrix.wgsl.expected.ir.glsl
index 4a20bc7..815503d 100644
--- a/test/tint/expressions/index/var/struct_with_matrix.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/struct_with_matrix.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int m;
+ mat4 n;
+};
-tint executable returned error: signal: illegal instruction
+float f() {
+ S a = S(0, mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f)));
+ return a.n[2].y;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/index/var/struct_with_vector.wgsl.expected.ir.glsl b/test/tint/expressions/index/var/struct_with_vector.wgsl.expected.ir.glsl
index 4a20bc7..88391ed 100644
--- a/test/tint/expressions/index/var/struct_with_vector.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/index/var/struct_with_vector.wgsl.expected.ir.glsl
@@ -1,11 +1,14 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ int m;
+ uvec3 n;
+};
-tint executable returned error: signal: illegal instruction
+uint f() {
+ S a = S(0, uvec3(0u));
+ return a.n.z;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.glsl
index 72ca17c..516661b 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.glsl
@@ -1,11 +1,134 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ f16vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+uniform S U;
+void f() {
+ f16vec3 v = U.v;
+ float16_t x = U.v.x;
+ float16_t y = U.v.y;
+ float16_t z = U.v.z;
+ f16vec2 xx = U.v.xx;
+ f16vec2 xy = U.v.xy;
+ f16vec2 xz = U.v.xz;
+ f16vec2 yx = U.v.yx;
+ f16vec2 yy = U.v.yy;
+ f16vec2 yz = U.v.yz;
+ f16vec2 zx = U.v.zx;
+ f16vec2 zy = U.v.zy;
+ f16vec2 zz = U.v.zz;
+ f16vec3 xxx = U.v.xxx;
+ f16vec3 xxy = U.v.xxy;
+ f16vec3 xxz = U.v.xxz;
+ f16vec3 xyx = U.v.xyx;
+ f16vec3 xyy = U.v.xyy;
+ f16vec3 xyz = U.v.xyz;
+ f16vec3 xzx = U.v.xzx;
+ f16vec3 xzy = U.v.xzy;
+ f16vec3 xzz = U.v.xzz;
+ f16vec3 yxx = U.v.yxx;
+ f16vec3 yxy = U.v.yxy;
+ f16vec3 yxz = U.v.yxz;
+ f16vec3 yyx = U.v.yyx;
+ f16vec3 yyy = U.v.yyy;
+ f16vec3 yyz = U.v.yyz;
+ f16vec3 yzx = U.v.yzx;
+ f16vec3 yzy = U.v.yzy;
+ f16vec3 yzz = U.v.yzz;
+ f16vec3 zxx = U.v.zxx;
+ f16vec3 zxy = U.v.zxy;
+ f16vec3 zxz = U.v.zxz;
+ f16vec3 zyx = U.v.zyx;
+ f16vec3 zyy = U.v.zyy;
+ f16vec3 zyz = U.v.zyz;
+ f16vec3 zzx = U.v.zzx;
+ f16vec3 zzy = U.v.zzy;
+ f16vec3 zzz = U.v.zzz;
+ f16vec4 xxxx = U.v.xxxx;
+ f16vec4 xxxy = U.v.xxxy;
+ f16vec4 xxxz = U.v.xxxz;
+ f16vec4 xxyx = U.v.xxyx;
+ f16vec4 xxyy = U.v.xxyy;
+ f16vec4 xxyz = U.v.xxyz;
+ f16vec4 xxzx = U.v.xxzx;
+ f16vec4 xxzy = U.v.xxzy;
+ f16vec4 xxzz = U.v.xxzz;
+ f16vec4 xyxx = U.v.xyxx;
+ f16vec4 xyxy = U.v.xyxy;
+ f16vec4 xyxz = U.v.xyxz;
+ f16vec4 xyyx = U.v.xyyx;
+ f16vec4 xyyy = U.v.xyyy;
+ f16vec4 xyyz = U.v.xyyz;
+ f16vec4 xyzx = U.v.xyzx;
+ f16vec4 xyzy = U.v.xyzy;
+ f16vec4 xyzz = U.v.xyzz;
+ f16vec4 xzxx = U.v.xzxx;
+ f16vec4 xzxy = U.v.xzxy;
+ f16vec4 xzxz = U.v.xzxz;
+ f16vec4 xzyx = U.v.xzyx;
+ f16vec4 xzyy = U.v.xzyy;
+ f16vec4 xzyz = U.v.xzyz;
+ f16vec4 xzzx = U.v.xzzx;
+ f16vec4 xzzy = U.v.xzzy;
+ f16vec4 xzzz = U.v.xzzz;
+ f16vec4 yxxx = U.v.yxxx;
+ f16vec4 yxxy = U.v.yxxy;
+ f16vec4 yxxz = U.v.yxxz;
+ f16vec4 yxyx = U.v.yxyx;
+ f16vec4 yxyy = U.v.yxyy;
+ f16vec4 yxyz = U.v.yxyz;
+ f16vec4 yxzx = U.v.yxzx;
+ f16vec4 yxzy = U.v.yxzy;
+ f16vec4 yxzz = U.v.yxzz;
+ f16vec4 yyxx = U.v.yyxx;
+ f16vec4 yyxy = U.v.yyxy;
+ f16vec4 yyxz = U.v.yyxz;
+ f16vec4 yyyx = U.v.yyyx;
+ f16vec4 yyyy = U.v.yyyy;
+ f16vec4 yyyz = U.v.yyyz;
+ f16vec4 yyzx = U.v.yyzx;
+ f16vec4 yyzy = U.v.yyzy;
+ f16vec4 yyzz = U.v.yyzz;
+ f16vec4 yzxx = U.v.yzxx;
+ f16vec4 yzxy = U.v.yzxy;
+ f16vec4 yzxz = U.v.yzxz;
+ f16vec4 yzyx = U.v.yzyx;
+ f16vec4 yzyy = U.v.yzyy;
+ f16vec4 yzyz = U.v.yzyz;
+ f16vec4 yzzx = U.v.yzzx;
+ f16vec4 yzzy = U.v.yzzy;
+ f16vec4 yzzz = U.v.yzzz;
+ f16vec4 zxxx = U.v.zxxx;
+ f16vec4 zxxy = U.v.zxxy;
+ f16vec4 zxxz = U.v.zxxz;
+ f16vec4 zxyx = U.v.zxyx;
+ f16vec4 zxyy = U.v.zxyy;
+ f16vec4 zxyz = U.v.zxyz;
+ f16vec4 zxzx = U.v.zxzx;
+ f16vec4 zxzy = U.v.zxzy;
+ f16vec4 zxzz = U.v.zxzz;
+ f16vec4 zyxx = U.v.zyxx;
+ f16vec4 zyxy = U.v.zyxy;
+ f16vec4 zyxz = U.v.zyxz;
+ f16vec4 zyyx = U.v.zyyx;
+ f16vec4 zyyy = U.v.zyyy;
+ f16vec4 zyyz = U.v.zyyz;
+ f16vec4 zyzx = U.v.zyzx;
+ f16vec4 zyzy = U.v.zyzy;
+ f16vec4 zyzz = U.v.zyzz;
+ f16vec4 zzxx = U.v.zzxx;
+ f16vec4 zzxy = U.v.zzxy;
+ f16vec4 zzxz = U.v.zzxz;
+ f16vec4 zzyx = U.v.zzyx;
+ f16vec4 zzyy = U.v.zzyy;
+ f16vec4 zzyz = U.v.zzyz;
+ f16vec4 zzzx = U.v.zzzx;
+ f16vec4 zzzy = U.v.zzzy;
+ f16vec4 zzzz = U.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.glsl
index 72ca17c..694870a 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+uniform S U;
+void f() {
+ vec3 v = U.v;
+ float x = U.v.x;
+ float y = U.v.y;
+ float z = U.v.z;
+ vec2 xx = U.v.xx;
+ vec2 xy = U.v.xy;
+ vec2 xz = U.v.xz;
+ vec2 yx = U.v.yx;
+ vec2 yy = U.v.yy;
+ vec2 yz = U.v.yz;
+ vec2 zx = U.v.zx;
+ vec2 zy = U.v.zy;
+ vec2 zz = U.v.zz;
+ vec3 xxx = U.v.xxx;
+ vec3 xxy = U.v.xxy;
+ vec3 xxz = U.v.xxz;
+ vec3 xyx = U.v.xyx;
+ vec3 xyy = U.v.xyy;
+ vec3 xyz = U.v.xyz;
+ vec3 xzx = U.v.xzx;
+ vec3 xzy = U.v.xzy;
+ vec3 xzz = U.v.xzz;
+ vec3 yxx = U.v.yxx;
+ vec3 yxy = U.v.yxy;
+ vec3 yxz = U.v.yxz;
+ vec3 yyx = U.v.yyx;
+ vec3 yyy = U.v.yyy;
+ vec3 yyz = U.v.yyz;
+ vec3 yzx = U.v.yzx;
+ vec3 yzy = U.v.yzy;
+ vec3 yzz = U.v.yzz;
+ vec3 zxx = U.v.zxx;
+ vec3 zxy = U.v.zxy;
+ vec3 zxz = U.v.zxz;
+ vec3 zyx = U.v.zyx;
+ vec3 zyy = U.v.zyy;
+ vec3 zyz = U.v.zyz;
+ vec3 zzx = U.v.zzx;
+ vec3 zzy = U.v.zzy;
+ vec3 zzz = U.v.zzz;
+ vec4 xxxx = U.v.xxxx;
+ vec4 xxxy = U.v.xxxy;
+ vec4 xxxz = U.v.xxxz;
+ vec4 xxyx = U.v.xxyx;
+ vec4 xxyy = U.v.xxyy;
+ vec4 xxyz = U.v.xxyz;
+ vec4 xxzx = U.v.xxzx;
+ vec4 xxzy = U.v.xxzy;
+ vec4 xxzz = U.v.xxzz;
+ vec4 xyxx = U.v.xyxx;
+ vec4 xyxy = U.v.xyxy;
+ vec4 xyxz = U.v.xyxz;
+ vec4 xyyx = U.v.xyyx;
+ vec4 xyyy = U.v.xyyy;
+ vec4 xyyz = U.v.xyyz;
+ vec4 xyzx = U.v.xyzx;
+ vec4 xyzy = U.v.xyzy;
+ vec4 xyzz = U.v.xyzz;
+ vec4 xzxx = U.v.xzxx;
+ vec4 xzxy = U.v.xzxy;
+ vec4 xzxz = U.v.xzxz;
+ vec4 xzyx = U.v.xzyx;
+ vec4 xzyy = U.v.xzyy;
+ vec4 xzyz = U.v.xzyz;
+ vec4 xzzx = U.v.xzzx;
+ vec4 xzzy = U.v.xzzy;
+ vec4 xzzz = U.v.xzzz;
+ vec4 yxxx = U.v.yxxx;
+ vec4 yxxy = U.v.yxxy;
+ vec4 yxxz = U.v.yxxz;
+ vec4 yxyx = U.v.yxyx;
+ vec4 yxyy = U.v.yxyy;
+ vec4 yxyz = U.v.yxyz;
+ vec4 yxzx = U.v.yxzx;
+ vec4 yxzy = U.v.yxzy;
+ vec4 yxzz = U.v.yxzz;
+ vec4 yyxx = U.v.yyxx;
+ vec4 yyxy = U.v.yyxy;
+ vec4 yyxz = U.v.yyxz;
+ vec4 yyyx = U.v.yyyx;
+ vec4 yyyy = U.v.yyyy;
+ vec4 yyyz = U.v.yyyz;
+ vec4 yyzx = U.v.yyzx;
+ vec4 yyzy = U.v.yyzy;
+ vec4 yyzz = U.v.yyzz;
+ vec4 yzxx = U.v.yzxx;
+ vec4 yzxy = U.v.yzxy;
+ vec4 yzxz = U.v.yzxz;
+ vec4 yzyx = U.v.yzyx;
+ vec4 yzyy = U.v.yzyy;
+ vec4 yzyz = U.v.yzyz;
+ vec4 yzzx = U.v.yzzx;
+ vec4 yzzy = U.v.yzzy;
+ vec4 yzzz = U.v.yzzz;
+ vec4 zxxx = U.v.zxxx;
+ vec4 zxxy = U.v.zxxy;
+ vec4 zxxz = U.v.zxxz;
+ vec4 zxyx = U.v.zxyx;
+ vec4 zxyy = U.v.zxyy;
+ vec4 zxyz = U.v.zxyz;
+ vec4 zxzx = U.v.zxzx;
+ vec4 zxzy = U.v.zxzy;
+ vec4 zxzz = U.v.zxzz;
+ vec4 zyxx = U.v.zyxx;
+ vec4 zyxy = U.v.zyxy;
+ vec4 zyxz = U.v.zyxz;
+ vec4 zyyx = U.v.zyyx;
+ vec4 zyyy = U.v.zyyy;
+ vec4 zyyz = U.v.zyyz;
+ vec4 zyzx = U.v.zyzx;
+ vec4 zyzy = U.v.zyzy;
+ vec4 zyzz = U.v.zyzz;
+ vec4 zzxx = U.v.zzxx;
+ vec4 zzxy = U.v.zzxy;
+ vec4 zzxz = U.v.zzxz;
+ vec4 zzyx = U.v.zzyx;
+ vec4 zzyy = U.v.zzyy;
+ vec4 zzyz = U.v.zzyz;
+ vec4 zzzx = U.v.zzzx;
+ vec4 zzzy = U.v.zzzy;
+ vec4 zzzz = U.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.glsl
index 72ca17c..3ace889 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ ivec3 v;
+};
-tint executable returned error: signal: illegal instruction
+uniform S U;
+void f() {
+ ivec3 v = U.v;
+ int x = U.v.x;
+ int y = U.v.y;
+ int z = U.v.z;
+ ivec2 xx = U.v.xx;
+ ivec2 xy = U.v.xy;
+ ivec2 xz = U.v.xz;
+ ivec2 yx = U.v.yx;
+ ivec2 yy = U.v.yy;
+ ivec2 yz = U.v.yz;
+ ivec2 zx = U.v.zx;
+ ivec2 zy = U.v.zy;
+ ivec2 zz = U.v.zz;
+ ivec3 xxx = U.v.xxx;
+ ivec3 xxy = U.v.xxy;
+ ivec3 xxz = U.v.xxz;
+ ivec3 xyx = U.v.xyx;
+ ivec3 xyy = U.v.xyy;
+ ivec3 xyz = U.v.xyz;
+ ivec3 xzx = U.v.xzx;
+ ivec3 xzy = U.v.xzy;
+ ivec3 xzz = U.v.xzz;
+ ivec3 yxx = U.v.yxx;
+ ivec3 yxy = U.v.yxy;
+ ivec3 yxz = U.v.yxz;
+ ivec3 yyx = U.v.yyx;
+ ivec3 yyy = U.v.yyy;
+ ivec3 yyz = U.v.yyz;
+ ivec3 yzx = U.v.yzx;
+ ivec3 yzy = U.v.yzy;
+ ivec3 yzz = U.v.yzz;
+ ivec3 zxx = U.v.zxx;
+ ivec3 zxy = U.v.zxy;
+ ivec3 zxz = U.v.zxz;
+ ivec3 zyx = U.v.zyx;
+ ivec3 zyy = U.v.zyy;
+ ivec3 zyz = U.v.zyz;
+ ivec3 zzx = U.v.zzx;
+ ivec3 zzy = U.v.zzy;
+ ivec3 zzz = U.v.zzz;
+ ivec4 xxxx = U.v.xxxx;
+ ivec4 xxxy = U.v.xxxy;
+ ivec4 xxxz = U.v.xxxz;
+ ivec4 xxyx = U.v.xxyx;
+ ivec4 xxyy = U.v.xxyy;
+ ivec4 xxyz = U.v.xxyz;
+ ivec4 xxzx = U.v.xxzx;
+ ivec4 xxzy = U.v.xxzy;
+ ivec4 xxzz = U.v.xxzz;
+ ivec4 xyxx = U.v.xyxx;
+ ivec4 xyxy = U.v.xyxy;
+ ivec4 xyxz = U.v.xyxz;
+ ivec4 xyyx = U.v.xyyx;
+ ivec4 xyyy = U.v.xyyy;
+ ivec4 xyyz = U.v.xyyz;
+ ivec4 xyzx = U.v.xyzx;
+ ivec4 xyzy = U.v.xyzy;
+ ivec4 xyzz = U.v.xyzz;
+ ivec4 xzxx = U.v.xzxx;
+ ivec4 xzxy = U.v.xzxy;
+ ivec4 xzxz = U.v.xzxz;
+ ivec4 xzyx = U.v.xzyx;
+ ivec4 xzyy = U.v.xzyy;
+ ivec4 xzyz = U.v.xzyz;
+ ivec4 xzzx = U.v.xzzx;
+ ivec4 xzzy = U.v.xzzy;
+ ivec4 xzzz = U.v.xzzz;
+ ivec4 yxxx = U.v.yxxx;
+ ivec4 yxxy = U.v.yxxy;
+ ivec4 yxxz = U.v.yxxz;
+ ivec4 yxyx = U.v.yxyx;
+ ivec4 yxyy = U.v.yxyy;
+ ivec4 yxyz = U.v.yxyz;
+ ivec4 yxzx = U.v.yxzx;
+ ivec4 yxzy = U.v.yxzy;
+ ivec4 yxzz = U.v.yxzz;
+ ivec4 yyxx = U.v.yyxx;
+ ivec4 yyxy = U.v.yyxy;
+ ivec4 yyxz = U.v.yyxz;
+ ivec4 yyyx = U.v.yyyx;
+ ivec4 yyyy = U.v.yyyy;
+ ivec4 yyyz = U.v.yyyz;
+ ivec4 yyzx = U.v.yyzx;
+ ivec4 yyzy = U.v.yyzy;
+ ivec4 yyzz = U.v.yyzz;
+ ivec4 yzxx = U.v.yzxx;
+ ivec4 yzxy = U.v.yzxy;
+ ivec4 yzxz = U.v.yzxz;
+ ivec4 yzyx = U.v.yzyx;
+ ivec4 yzyy = U.v.yzyy;
+ ivec4 yzyz = U.v.yzyz;
+ ivec4 yzzx = U.v.yzzx;
+ ivec4 yzzy = U.v.yzzy;
+ ivec4 yzzz = U.v.yzzz;
+ ivec4 zxxx = U.v.zxxx;
+ ivec4 zxxy = U.v.zxxy;
+ ivec4 zxxz = U.v.zxxz;
+ ivec4 zxyx = U.v.zxyx;
+ ivec4 zxyy = U.v.zxyy;
+ ivec4 zxyz = U.v.zxyz;
+ ivec4 zxzx = U.v.zxzx;
+ ivec4 zxzy = U.v.zxzy;
+ ivec4 zxzz = U.v.zxzz;
+ ivec4 zyxx = U.v.zyxx;
+ ivec4 zyxy = U.v.zyxy;
+ ivec4 zyxz = U.v.zyxz;
+ ivec4 zyyx = U.v.zyyx;
+ ivec4 zyyy = U.v.zyyy;
+ ivec4 zyyz = U.v.zyyz;
+ ivec4 zyzx = U.v.zyzx;
+ ivec4 zyzy = U.v.zyzy;
+ ivec4 zyzz = U.v.zyzz;
+ ivec4 zzxx = U.v.zzxx;
+ ivec4 zzxy = U.v.zzxy;
+ ivec4 zzxz = U.v.zzxz;
+ ivec4 zzyx = U.v.zzyx;
+ ivec4 zzyy = U.v.zzyy;
+ ivec4 zzyz = U.v.zzyz;
+ ivec4 zzzx = U.v.zzzx;
+ ivec4 zzzy = U.v.zzzy;
+ ivec4 zzzz = U.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.glsl
index 72ca17c..580ad7a 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ uvec3 v;
+};
-tint executable returned error: signal: illegal instruction
+uniform S U;
+void f() {
+ uvec3 v = U.v;
+ uint x = U.v.x;
+ uint y = U.v.y;
+ uint z = U.v.z;
+ uvec2 xx = U.v.xx;
+ uvec2 xy = U.v.xy;
+ uvec2 xz = U.v.xz;
+ uvec2 yx = U.v.yx;
+ uvec2 yy = U.v.yy;
+ uvec2 yz = U.v.yz;
+ uvec2 zx = U.v.zx;
+ uvec2 zy = U.v.zy;
+ uvec2 zz = U.v.zz;
+ uvec3 xxx = U.v.xxx;
+ uvec3 xxy = U.v.xxy;
+ uvec3 xxz = U.v.xxz;
+ uvec3 xyx = U.v.xyx;
+ uvec3 xyy = U.v.xyy;
+ uvec3 xyz = U.v.xyz;
+ uvec3 xzx = U.v.xzx;
+ uvec3 xzy = U.v.xzy;
+ uvec3 xzz = U.v.xzz;
+ uvec3 yxx = U.v.yxx;
+ uvec3 yxy = U.v.yxy;
+ uvec3 yxz = U.v.yxz;
+ uvec3 yyx = U.v.yyx;
+ uvec3 yyy = U.v.yyy;
+ uvec3 yyz = U.v.yyz;
+ uvec3 yzx = U.v.yzx;
+ uvec3 yzy = U.v.yzy;
+ uvec3 yzz = U.v.yzz;
+ uvec3 zxx = U.v.zxx;
+ uvec3 zxy = U.v.zxy;
+ uvec3 zxz = U.v.zxz;
+ uvec3 zyx = U.v.zyx;
+ uvec3 zyy = U.v.zyy;
+ uvec3 zyz = U.v.zyz;
+ uvec3 zzx = U.v.zzx;
+ uvec3 zzy = U.v.zzy;
+ uvec3 zzz = U.v.zzz;
+ uvec4 xxxx = U.v.xxxx;
+ uvec4 xxxy = U.v.xxxy;
+ uvec4 xxxz = U.v.xxxz;
+ uvec4 xxyx = U.v.xxyx;
+ uvec4 xxyy = U.v.xxyy;
+ uvec4 xxyz = U.v.xxyz;
+ uvec4 xxzx = U.v.xxzx;
+ uvec4 xxzy = U.v.xxzy;
+ uvec4 xxzz = U.v.xxzz;
+ uvec4 xyxx = U.v.xyxx;
+ uvec4 xyxy = U.v.xyxy;
+ uvec4 xyxz = U.v.xyxz;
+ uvec4 xyyx = U.v.xyyx;
+ uvec4 xyyy = U.v.xyyy;
+ uvec4 xyyz = U.v.xyyz;
+ uvec4 xyzx = U.v.xyzx;
+ uvec4 xyzy = U.v.xyzy;
+ uvec4 xyzz = U.v.xyzz;
+ uvec4 xzxx = U.v.xzxx;
+ uvec4 xzxy = U.v.xzxy;
+ uvec4 xzxz = U.v.xzxz;
+ uvec4 xzyx = U.v.xzyx;
+ uvec4 xzyy = U.v.xzyy;
+ uvec4 xzyz = U.v.xzyz;
+ uvec4 xzzx = U.v.xzzx;
+ uvec4 xzzy = U.v.xzzy;
+ uvec4 xzzz = U.v.xzzz;
+ uvec4 yxxx = U.v.yxxx;
+ uvec4 yxxy = U.v.yxxy;
+ uvec4 yxxz = U.v.yxxz;
+ uvec4 yxyx = U.v.yxyx;
+ uvec4 yxyy = U.v.yxyy;
+ uvec4 yxyz = U.v.yxyz;
+ uvec4 yxzx = U.v.yxzx;
+ uvec4 yxzy = U.v.yxzy;
+ uvec4 yxzz = U.v.yxzz;
+ uvec4 yyxx = U.v.yyxx;
+ uvec4 yyxy = U.v.yyxy;
+ uvec4 yyxz = U.v.yyxz;
+ uvec4 yyyx = U.v.yyyx;
+ uvec4 yyyy = U.v.yyyy;
+ uvec4 yyyz = U.v.yyyz;
+ uvec4 yyzx = U.v.yyzx;
+ uvec4 yyzy = U.v.yyzy;
+ uvec4 yyzz = U.v.yyzz;
+ uvec4 yzxx = U.v.yzxx;
+ uvec4 yzxy = U.v.yzxy;
+ uvec4 yzxz = U.v.yzxz;
+ uvec4 yzyx = U.v.yzyx;
+ uvec4 yzyy = U.v.yzyy;
+ uvec4 yzyz = U.v.yzyz;
+ uvec4 yzzx = U.v.yzzx;
+ uvec4 yzzy = U.v.yzzy;
+ uvec4 yzzz = U.v.yzzz;
+ uvec4 zxxx = U.v.zxxx;
+ uvec4 zxxy = U.v.zxxy;
+ uvec4 zxxz = U.v.zxxz;
+ uvec4 zxyx = U.v.zxyx;
+ uvec4 zxyy = U.v.zxyy;
+ uvec4 zxyz = U.v.zxyz;
+ uvec4 zxzx = U.v.zxzx;
+ uvec4 zxzy = U.v.zxzy;
+ uvec4 zxzz = U.v.zxzz;
+ uvec4 zyxx = U.v.zyxx;
+ uvec4 zyxy = U.v.zyxy;
+ uvec4 zyxz = U.v.zyxz;
+ uvec4 zyyx = U.v.zyyx;
+ uvec4 zyyy = U.v.zyyy;
+ uvec4 zyyz = U.v.zyyz;
+ uvec4 zyzx = U.v.zyzx;
+ uvec4 zyzy = U.v.zyzy;
+ uvec4 zyzz = U.v.zyzz;
+ uvec4 zzxx = U.v.zzxx;
+ uvec4 zzxy = U.v.zzxy;
+ uvec4 zzxz = U.v.zzxz;
+ uvec4 zzyx = U.v.zzyx;
+ uvec4 zzyy = U.v.zzyy;
+ uvec4 zzyz = U.v.zzyz;
+ uvec4 zzzx = U.v.zzzx;
+ uvec4 zzzy = U.v.zzzy;
+ uvec4 zzzz = U.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/swizzle.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/swizzle.wgsl.expected.ir.glsl
index 4a20bc7..1fa74ec 100644
--- a/test/tint/expressions/swizzle/read/swizzle.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/swizzle.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 val[3];
+};
-tint executable returned error: signal: illegal instruction
+void a() {
+ ivec4 a_1 = ivec4(0);
+ int b = a_1.x;
+ ivec4 c = a_1.zzyy;
+ S d = S(vec3[3](vec3(0.0f), vec3(0.0f), vec3(0.0f)));
+ vec3 e = d.val[2].yzx;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.glsl
index 72ca17c..71d5b28 100644
--- a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.glsl
@@ -1,11 +1,134 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ f16vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(f16vec3(0.0hf));
+void f() {
+ f16vec3 v = P.v;
+ float16_t x = P.v.x;
+ float16_t y = P.v.y;
+ float16_t z = P.v.z;
+ f16vec2 xx = P.v.xx;
+ f16vec2 xy = P.v.xy;
+ f16vec2 xz = P.v.xz;
+ f16vec2 yx = P.v.yx;
+ f16vec2 yy = P.v.yy;
+ f16vec2 yz = P.v.yz;
+ f16vec2 zx = P.v.zx;
+ f16vec2 zy = P.v.zy;
+ f16vec2 zz = P.v.zz;
+ f16vec3 xxx = P.v.xxx;
+ f16vec3 xxy = P.v.xxy;
+ f16vec3 xxz = P.v.xxz;
+ f16vec3 xyx = P.v.xyx;
+ f16vec3 xyy = P.v.xyy;
+ f16vec3 xyz = P.v.xyz;
+ f16vec3 xzx = P.v.xzx;
+ f16vec3 xzy = P.v.xzy;
+ f16vec3 xzz = P.v.xzz;
+ f16vec3 yxx = P.v.yxx;
+ f16vec3 yxy = P.v.yxy;
+ f16vec3 yxz = P.v.yxz;
+ f16vec3 yyx = P.v.yyx;
+ f16vec3 yyy = P.v.yyy;
+ f16vec3 yyz = P.v.yyz;
+ f16vec3 yzx = P.v.yzx;
+ f16vec3 yzy = P.v.yzy;
+ f16vec3 yzz = P.v.yzz;
+ f16vec3 zxx = P.v.zxx;
+ f16vec3 zxy = P.v.zxy;
+ f16vec3 zxz = P.v.zxz;
+ f16vec3 zyx = P.v.zyx;
+ f16vec3 zyy = P.v.zyy;
+ f16vec3 zyz = P.v.zyz;
+ f16vec3 zzx = P.v.zzx;
+ f16vec3 zzy = P.v.zzy;
+ f16vec3 zzz = P.v.zzz;
+ f16vec4 xxxx = P.v.xxxx;
+ f16vec4 xxxy = P.v.xxxy;
+ f16vec4 xxxz = P.v.xxxz;
+ f16vec4 xxyx = P.v.xxyx;
+ f16vec4 xxyy = P.v.xxyy;
+ f16vec4 xxyz = P.v.xxyz;
+ f16vec4 xxzx = P.v.xxzx;
+ f16vec4 xxzy = P.v.xxzy;
+ f16vec4 xxzz = P.v.xxzz;
+ f16vec4 xyxx = P.v.xyxx;
+ f16vec4 xyxy = P.v.xyxy;
+ f16vec4 xyxz = P.v.xyxz;
+ f16vec4 xyyx = P.v.xyyx;
+ f16vec4 xyyy = P.v.xyyy;
+ f16vec4 xyyz = P.v.xyyz;
+ f16vec4 xyzx = P.v.xyzx;
+ f16vec4 xyzy = P.v.xyzy;
+ f16vec4 xyzz = P.v.xyzz;
+ f16vec4 xzxx = P.v.xzxx;
+ f16vec4 xzxy = P.v.xzxy;
+ f16vec4 xzxz = P.v.xzxz;
+ f16vec4 xzyx = P.v.xzyx;
+ f16vec4 xzyy = P.v.xzyy;
+ f16vec4 xzyz = P.v.xzyz;
+ f16vec4 xzzx = P.v.xzzx;
+ f16vec4 xzzy = P.v.xzzy;
+ f16vec4 xzzz = P.v.xzzz;
+ f16vec4 yxxx = P.v.yxxx;
+ f16vec4 yxxy = P.v.yxxy;
+ f16vec4 yxxz = P.v.yxxz;
+ f16vec4 yxyx = P.v.yxyx;
+ f16vec4 yxyy = P.v.yxyy;
+ f16vec4 yxyz = P.v.yxyz;
+ f16vec4 yxzx = P.v.yxzx;
+ f16vec4 yxzy = P.v.yxzy;
+ f16vec4 yxzz = P.v.yxzz;
+ f16vec4 yyxx = P.v.yyxx;
+ f16vec4 yyxy = P.v.yyxy;
+ f16vec4 yyxz = P.v.yyxz;
+ f16vec4 yyyx = P.v.yyyx;
+ f16vec4 yyyy = P.v.yyyy;
+ f16vec4 yyyz = P.v.yyyz;
+ f16vec4 yyzx = P.v.yyzx;
+ f16vec4 yyzy = P.v.yyzy;
+ f16vec4 yyzz = P.v.yyzz;
+ f16vec4 yzxx = P.v.yzxx;
+ f16vec4 yzxy = P.v.yzxy;
+ f16vec4 yzxz = P.v.yzxz;
+ f16vec4 yzyx = P.v.yzyx;
+ f16vec4 yzyy = P.v.yzyy;
+ f16vec4 yzyz = P.v.yzyz;
+ f16vec4 yzzx = P.v.yzzx;
+ f16vec4 yzzy = P.v.yzzy;
+ f16vec4 yzzz = P.v.yzzz;
+ f16vec4 zxxx = P.v.zxxx;
+ f16vec4 zxxy = P.v.zxxy;
+ f16vec4 zxxz = P.v.zxxz;
+ f16vec4 zxyx = P.v.zxyx;
+ f16vec4 zxyy = P.v.zxyy;
+ f16vec4 zxyz = P.v.zxyz;
+ f16vec4 zxzx = P.v.zxzx;
+ f16vec4 zxzy = P.v.zxzy;
+ f16vec4 zxzz = P.v.zxzz;
+ f16vec4 zyxx = P.v.zyxx;
+ f16vec4 zyxy = P.v.zyxy;
+ f16vec4 zyxz = P.v.zyxz;
+ f16vec4 zyyx = P.v.zyyx;
+ f16vec4 zyyy = P.v.zyyy;
+ f16vec4 zyyz = P.v.zyyz;
+ f16vec4 zyzx = P.v.zyzx;
+ f16vec4 zyzy = P.v.zyzy;
+ f16vec4 zyzz = P.v.zyzz;
+ f16vec4 zzxx = P.v.zzxx;
+ f16vec4 zzxy = P.v.zzxy;
+ f16vec4 zzxz = P.v.zzxz;
+ f16vec4 zzyx = P.v.zzyx;
+ f16vec4 zzyy = P.v.zzyy;
+ f16vec4 zzyz = P.v.zzyz;
+ f16vec4 zzzx = P.v.zzzx;
+ f16vec4 zzzy = P.v.zzzy;
+ f16vec4 zzzz = P.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.glsl
index 72ca17c..b266daa 100644
--- a/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(vec3(0.0f));
+void f() {
+ vec3 v = P.v;
+ float x = P.v.x;
+ float y = P.v.y;
+ float z = P.v.z;
+ vec2 xx = P.v.xx;
+ vec2 xy = P.v.xy;
+ vec2 xz = P.v.xz;
+ vec2 yx = P.v.yx;
+ vec2 yy = P.v.yy;
+ vec2 yz = P.v.yz;
+ vec2 zx = P.v.zx;
+ vec2 zy = P.v.zy;
+ vec2 zz = P.v.zz;
+ vec3 xxx = P.v.xxx;
+ vec3 xxy = P.v.xxy;
+ vec3 xxz = P.v.xxz;
+ vec3 xyx = P.v.xyx;
+ vec3 xyy = P.v.xyy;
+ vec3 xyz = P.v.xyz;
+ vec3 xzx = P.v.xzx;
+ vec3 xzy = P.v.xzy;
+ vec3 xzz = P.v.xzz;
+ vec3 yxx = P.v.yxx;
+ vec3 yxy = P.v.yxy;
+ vec3 yxz = P.v.yxz;
+ vec3 yyx = P.v.yyx;
+ vec3 yyy = P.v.yyy;
+ vec3 yyz = P.v.yyz;
+ vec3 yzx = P.v.yzx;
+ vec3 yzy = P.v.yzy;
+ vec3 yzz = P.v.yzz;
+ vec3 zxx = P.v.zxx;
+ vec3 zxy = P.v.zxy;
+ vec3 zxz = P.v.zxz;
+ vec3 zyx = P.v.zyx;
+ vec3 zyy = P.v.zyy;
+ vec3 zyz = P.v.zyz;
+ vec3 zzx = P.v.zzx;
+ vec3 zzy = P.v.zzy;
+ vec3 zzz = P.v.zzz;
+ vec4 xxxx = P.v.xxxx;
+ vec4 xxxy = P.v.xxxy;
+ vec4 xxxz = P.v.xxxz;
+ vec4 xxyx = P.v.xxyx;
+ vec4 xxyy = P.v.xxyy;
+ vec4 xxyz = P.v.xxyz;
+ vec4 xxzx = P.v.xxzx;
+ vec4 xxzy = P.v.xxzy;
+ vec4 xxzz = P.v.xxzz;
+ vec4 xyxx = P.v.xyxx;
+ vec4 xyxy = P.v.xyxy;
+ vec4 xyxz = P.v.xyxz;
+ vec4 xyyx = P.v.xyyx;
+ vec4 xyyy = P.v.xyyy;
+ vec4 xyyz = P.v.xyyz;
+ vec4 xyzx = P.v.xyzx;
+ vec4 xyzy = P.v.xyzy;
+ vec4 xyzz = P.v.xyzz;
+ vec4 xzxx = P.v.xzxx;
+ vec4 xzxy = P.v.xzxy;
+ vec4 xzxz = P.v.xzxz;
+ vec4 xzyx = P.v.xzyx;
+ vec4 xzyy = P.v.xzyy;
+ vec4 xzyz = P.v.xzyz;
+ vec4 xzzx = P.v.xzzx;
+ vec4 xzzy = P.v.xzzy;
+ vec4 xzzz = P.v.xzzz;
+ vec4 yxxx = P.v.yxxx;
+ vec4 yxxy = P.v.yxxy;
+ vec4 yxxz = P.v.yxxz;
+ vec4 yxyx = P.v.yxyx;
+ vec4 yxyy = P.v.yxyy;
+ vec4 yxyz = P.v.yxyz;
+ vec4 yxzx = P.v.yxzx;
+ vec4 yxzy = P.v.yxzy;
+ vec4 yxzz = P.v.yxzz;
+ vec4 yyxx = P.v.yyxx;
+ vec4 yyxy = P.v.yyxy;
+ vec4 yyxz = P.v.yyxz;
+ vec4 yyyx = P.v.yyyx;
+ vec4 yyyy = P.v.yyyy;
+ vec4 yyyz = P.v.yyyz;
+ vec4 yyzx = P.v.yyzx;
+ vec4 yyzy = P.v.yyzy;
+ vec4 yyzz = P.v.yyzz;
+ vec4 yzxx = P.v.yzxx;
+ vec4 yzxy = P.v.yzxy;
+ vec4 yzxz = P.v.yzxz;
+ vec4 yzyx = P.v.yzyx;
+ vec4 yzyy = P.v.yzyy;
+ vec4 yzyz = P.v.yzyz;
+ vec4 yzzx = P.v.yzzx;
+ vec4 yzzy = P.v.yzzy;
+ vec4 yzzz = P.v.yzzz;
+ vec4 zxxx = P.v.zxxx;
+ vec4 zxxy = P.v.zxxy;
+ vec4 zxxz = P.v.zxxz;
+ vec4 zxyx = P.v.zxyx;
+ vec4 zxyy = P.v.zxyy;
+ vec4 zxyz = P.v.zxyz;
+ vec4 zxzx = P.v.zxzx;
+ vec4 zxzy = P.v.zxzy;
+ vec4 zxzz = P.v.zxzz;
+ vec4 zyxx = P.v.zyxx;
+ vec4 zyxy = P.v.zyxy;
+ vec4 zyxz = P.v.zyxz;
+ vec4 zyyx = P.v.zyyx;
+ vec4 zyyy = P.v.zyyy;
+ vec4 zyyz = P.v.zyyz;
+ vec4 zyzx = P.v.zyzx;
+ vec4 zyzy = P.v.zyzy;
+ vec4 zyzz = P.v.zyzz;
+ vec4 zzxx = P.v.zzxx;
+ vec4 zzxy = P.v.zzxy;
+ vec4 zzxz = P.v.zzxz;
+ vec4 zzyx = P.v.zzyx;
+ vec4 zzyy = P.v.zzyy;
+ vec4 zzyz = P.v.zzyz;
+ vec4 zzzx = P.v.zzzx;
+ vec4 zzzy = P.v.zzzy;
+ vec4 zzzz = P.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.glsl
index 72ca17c..b742043 100644
--- a/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ ivec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(ivec3(0));
+void f() {
+ ivec3 v = P.v;
+ int x = P.v.x;
+ int y = P.v.y;
+ int z = P.v.z;
+ ivec2 xx = P.v.xx;
+ ivec2 xy = P.v.xy;
+ ivec2 xz = P.v.xz;
+ ivec2 yx = P.v.yx;
+ ivec2 yy = P.v.yy;
+ ivec2 yz = P.v.yz;
+ ivec2 zx = P.v.zx;
+ ivec2 zy = P.v.zy;
+ ivec2 zz = P.v.zz;
+ ivec3 xxx = P.v.xxx;
+ ivec3 xxy = P.v.xxy;
+ ivec3 xxz = P.v.xxz;
+ ivec3 xyx = P.v.xyx;
+ ivec3 xyy = P.v.xyy;
+ ivec3 xyz = P.v.xyz;
+ ivec3 xzx = P.v.xzx;
+ ivec3 xzy = P.v.xzy;
+ ivec3 xzz = P.v.xzz;
+ ivec3 yxx = P.v.yxx;
+ ivec3 yxy = P.v.yxy;
+ ivec3 yxz = P.v.yxz;
+ ivec3 yyx = P.v.yyx;
+ ivec3 yyy = P.v.yyy;
+ ivec3 yyz = P.v.yyz;
+ ivec3 yzx = P.v.yzx;
+ ivec3 yzy = P.v.yzy;
+ ivec3 yzz = P.v.yzz;
+ ivec3 zxx = P.v.zxx;
+ ivec3 zxy = P.v.zxy;
+ ivec3 zxz = P.v.zxz;
+ ivec3 zyx = P.v.zyx;
+ ivec3 zyy = P.v.zyy;
+ ivec3 zyz = P.v.zyz;
+ ivec3 zzx = P.v.zzx;
+ ivec3 zzy = P.v.zzy;
+ ivec3 zzz = P.v.zzz;
+ ivec4 xxxx = P.v.xxxx;
+ ivec4 xxxy = P.v.xxxy;
+ ivec4 xxxz = P.v.xxxz;
+ ivec4 xxyx = P.v.xxyx;
+ ivec4 xxyy = P.v.xxyy;
+ ivec4 xxyz = P.v.xxyz;
+ ivec4 xxzx = P.v.xxzx;
+ ivec4 xxzy = P.v.xxzy;
+ ivec4 xxzz = P.v.xxzz;
+ ivec4 xyxx = P.v.xyxx;
+ ivec4 xyxy = P.v.xyxy;
+ ivec4 xyxz = P.v.xyxz;
+ ivec4 xyyx = P.v.xyyx;
+ ivec4 xyyy = P.v.xyyy;
+ ivec4 xyyz = P.v.xyyz;
+ ivec4 xyzx = P.v.xyzx;
+ ivec4 xyzy = P.v.xyzy;
+ ivec4 xyzz = P.v.xyzz;
+ ivec4 xzxx = P.v.xzxx;
+ ivec4 xzxy = P.v.xzxy;
+ ivec4 xzxz = P.v.xzxz;
+ ivec4 xzyx = P.v.xzyx;
+ ivec4 xzyy = P.v.xzyy;
+ ivec4 xzyz = P.v.xzyz;
+ ivec4 xzzx = P.v.xzzx;
+ ivec4 xzzy = P.v.xzzy;
+ ivec4 xzzz = P.v.xzzz;
+ ivec4 yxxx = P.v.yxxx;
+ ivec4 yxxy = P.v.yxxy;
+ ivec4 yxxz = P.v.yxxz;
+ ivec4 yxyx = P.v.yxyx;
+ ivec4 yxyy = P.v.yxyy;
+ ivec4 yxyz = P.v.yxyz;
+ ivec4 yxzx = P.v.yxzx;
+ ivec4 yxzy = P.v.yxzy;
+ ivec4 yxzz = P.v.yxzz;
+ ivec4 yyxx = P.v.yyxx;
+ ivec4 yyxy = P.v.yyxy;
+ ivec4 yyxz = P.v.yyxz;
+ ivec4 yyyx = P.v.yyyx;
+ ivec4 yyyy = P.v.yyyy;
+ ivec4 yyyz = P.v.yyyz;
+ ivec4 yyzx = P.v.yyzx;
+ ivec4 yyzy = P.v.yyzy;
+ ivec4 yyzz = P.v.yyzz;
+ ivec4 yzxx = P.v.yzxx;
+ ivec4 yzxy = P.v.yzxy;
+ ivec4 yzxz = P.v.yzxz;
+ ivec4 yzyx = P.v.yzyx;
+ ivec4 yzyy = P.v.yzyy;
+ ivec4 yzyz = P.v.yzyz;
+ ivec4 yzzx = P.v.yzzx;
+ ivec4 yzzy = P.v.yzzy;
+ ivec4 yzzz = P.v.yzzz;
+ ivec4 zxxx = P.v.zxxx;
+ ivec4 zxxy = P.v.zxxy;
+ ivec4 zxxz = P.v.zxxz;
+ ivec4 zxyx = P.v.zxyx;
+ ivec4 zxyy = P.v.zxyy;
+ ivec4 zxyz = P.v.zxyz;
+ ivec4 zxzx = P.v.zxzx;
+ ivec4 zxzy = P.v.zxzy;
+ ivec4 zxzz = P.v.zxzz;
+ ivec4 zyxx = P.v.zyxx;
+ ivec4 zyxy = P.v.zyxy;
+ ivec4 zyxz = P.v.zyxz;
+ ivec4 zyyx = P.v.zyyx;
+ ivec4 zyyy = P.v.zyyy;
+ ivec4 zyyz = P.v.zyyz;
+ ivec4 zyzx = P.v.zyzx;
+ ivec4 zyzy = P.v.zyzy;
+ ivec4 zyzz = P.v.zyzz;
+ ivec4 zzxx = P.v.zzxx;
+ ivec4 zzxy = P.v.zzxy;
+ ivec4 zzxz = P.v.zzxz;
+ ivec4 zzyx = P.v.zzyx;
+ ivec4 zzyy = P.v.zzyy;
+ ivec4 zzyz = P.v.zzyz;
+ ivec4 zzzx = P.v.zzzx;
+ ivec4 zzzy = P.v.zzzy;
+ ivec4 zzzz = P.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.glsl
index 72ca17c..c688473 100644
--- a/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.glsl
@@ -1,11 +1,133 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ uvec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(uvec3(0u));
+void f() {
+ uvec3 v = P.v;
+ uint x = P.v.x;
+ uint y = P.v.y;
+ uint z = P.v.z;
+ uvec2 xx = P.v.xx;
+ uvec2 xy = P.v.xy;
+ uvec2 xz = P.v.xz;
+ uvec2 yx = P.v.yx;
+ uvec2 yy = P.v.yy;
+ uvec2 yz = P.v.yz;
+ uvec2 zx = P.v.zx;
+ uvec2 zy = P.v.zy;
+ uvec2 zz = P.v.zz;
+ uvec3 xxx = P.v.xxx;
+ uvec3 xxy = P.v.xxy;
+ uvec3 xxz = P.v.xxz;
+ uvec3 xyx = P.v.xyx;
+ uvec3 xyy = P.v.xyy;
+ uvec3 xyz = P.v.xyz;
+ uvec3 xzx = P.v.xzx;
+ uvec3 xzy = P.v.xzy;
+ uvec3 xzz = P.v.xzz;
+ uvec3 yxx = P.v.yxx;
+ uvec3 yxy = P.v.yxy;
+ uvec3 yxz = P.v.yxz;
+ uvec3 yyx = P.v.yyx;
+ uvec3 yyy = P.v.yyy;
+ uvec3 yyz = P.v.yyz;
+ uvec3 yzx = P.v.yzx;
+ uvec3 yzy = P.v.yzy;
+ uvec3 yzz = P.v.yzz;
+ uvec3 zxx = P.v.zxx;
+ uvec3 zxy = P.v.zxy;
+ uvec3 zxz = P.v.zxz;
+ uvec3 zyx = P.v.zyx;
+ uvec3 zyy = P.v.zyy;
+ uvec3 zyz = P.v.zyz;
+ uvec3 zzx = P.v.zzx;
+ uvec3 zzy = P.v.zzy;
+ uvec3 zzz = P.v.zzz;
+ uvec4 xxxx = P.v.xxxx;
+ uvec4 xxxy = P.v.xxxy;
+ uvec4 xxxz = P.v.xxxz;
+ uvec4 xxyx = P.v.xxyx;
+ uvec4 xxyy = P.v.xxyy;
+ uvec4 xxyz = P.v.xxyz;
+ uvec4 xxzx = P.v.xxzx;
+ uvec4 xxzy = P.v.xxzy;
+ uvec4 xxzz = P.v.xxzz;
+ uvec4 xyxx = P.v.xyxx;
+ uvec4 xyxy = P.v.xyxy;
+ uvec4 xyxz = P.v.xyxz;
+ uvec4 xyyx = P.v.xyyx;
+ uvec4 xyyy = P.v.xyyy;
+ uvec4 xyyz = P.v.xyyz;
+ uvec4 xyzx = P.v.xyzx;
+ uvec4 xyzy = P.v.xyzy;
+ uvec4 xyzz = P.v.xyzz;
+ uvec4 xzxx = P.v.xzxx;
+ uvec4 xzxy = P.v.xzxy;
+ uvec4 xzxz = P.v.xzxz;
+ uvec4 xzyx = P.v.xzyx;
+ uvec4 xzyy = P.v.xzyy;
+ uvec4 xzyz = P.v.xzyz;
+ uvec4 xzzx = P.v.xzzx;
+ uvec4 xzzy = P.v.xzzy;
+ uvec4 xzzz = P.v.xzzz;
+ uvec4 yxxx = P.v.yxxx;
+ uvec4 yxxy = P.v.yxxy;
+ uvec4 yxxz = P.v.yxxz;
+ uvec4 yxyx = P.v.yxyx;
+ uvec4 yxyy = P.v.yxyy;
+ uvec4 yxyz = P.v.yxyz;
+ uvec4 yxzx = P.v.yxzx;
+ uvec4 yxzy = P.v.yxzy;
+ uvec4 yxzz = P.v.yxzz;
+ uvec4 yyxx = P.v.yyxx;
+ uvec4 yyxy = P.v.yyxy;
+ uvec4 yyxz = P.v.yyxz;
+ uvec4 yyyx = P.v.yyyx;
+ uvec4 yyyy = P.v.yyyy;
+ uvec4 yyyz = P.v.yyyz;
+ uvec4 yyzx = P.v.yyzx;
+ uvec4 yyzy = P.v.yyzy;
+ uvec4 yyzz = P.v.yyzz;
+ uvec4 yzxx = P.v.yzxx;
+ uvec4 yzxy = P.v.yzxy;
+ uvec4 yzxz = P.v.yzxz;
+ uvec4 yzyx = P.v.yzyx;
+ uvec4 yzyy = P.v.yzyy;
+ uvec4 yzyz = P.v.yzyz;
+ uvec4 yzzx = P.v.yzzx;
+ uvec4 yzzy = P.v.yzzy;
+ uvec4 yzzz = P.v.yzzz;
+ uvec4 zxxx = P.v.zxxx;
+ uvec4 zxxy = P.v.zxxy;
+ uvec4 zxxz = P.v.zxxz;
+ uvec4 zxyx = P.v.zxyx;
+ uvec4 zxyy = P.v.zxyy;
+ uvec4 zxyz = P.v.zxyz;
+ uvec4 zxzx = P.v.zxzx;
+ uvec4 zxzy = P.v.zxzy;
+ uvec4 zxzz = P.v.zxzz;
+ uvec4 zyxx = P.v.zyxx;
+ uvec4 zyxy = P.v.zyxy;
+ uvec4 zyxz = P.v.zyxz;
+ uvec4 zyyx = P.v.zyyx;
+ uvec4 zyyy = P.v.zyyy;
+ uvec4 zyyz = P.v.zyyz;
+ uvec4 zyzx = P.v.zyzx;
+ uvec4 zyzy = P.v.zyzy;
+ uvec4 zyzz = P.v.zyzz;
+ uvec4 zzxx = P.v.zzxx;
+ uvec4 zzxy = P.v.zzxy;
+ uvec4 zzxz = P.v.zzxz;
+ uvec4 zzyx = P.v.zzyx;
+ uvec4 zzyy = P.v.zzyy;
+ uvec4 zzyz = P.v.zzyz;
+ uvec4 zzzx = P.v.zzzx;
+ uvec4 zzzy = P.v.zzzy;
+ uvec4 zzzz = P.v.zzzz;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.glsl
index d4bb1c9..b657961 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ f16vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S U;
+void f() {
+ U.v = f16vec3(1.0hf, 2.0hf, 3.0hf);
+ U.v[0u] = 1.0hf;
+ U.v[1u] = 2.0hf;
+ U.v[2u] = 3.0hf;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.glsl
index d4bb1c9..257b3dc 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S U;
+void f() {
+ U.v = vec3(1.0f, 2.0f, 3.0f);
+ U.v[0u] = 1.0f;
+ U.v[1u] = 2.0f;
+ U.v[2u] = 3.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.glsl
index d4bb1c9..f0b7c58 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ ivec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S U;
+void f() {
+ U.v = ivec3(1, 2, 3);
+ U.v[0u] = 1;
+ U.v[1u] = 2;
+ U.v[2u] = 3;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.glsl
index d4bb1c9..cb0d0b4 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ uvec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S U;
+void f() {
+ U.v = uvec3(1u, 2u, 3u);
+ U.v[0u] = 1u;
+ U.v[1u] = 2u;
+ U.v[2u] = 3u;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.glsl
index 1268749..662088f 100644
--- a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 val[3];
+};
-tint executable returned error: signal: illegal instruction
+void a() {
+ ivec4 a_1 = ivec4(0);
+ a_1[0u] = 1;
+ a_1[2u] = 2;
+ S d = S(vec3[3](vec3(0.0f), vec3(0.0f), vec3(0.0f)));
+ d.val[2][1u] = 3.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.glsl
index d4bb1c9..23a1e0c 100644
--- a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ f16vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(f16vec3(0.0hf));
+void f() {
+ P.v = f16vec3(1.0hf, 2.0hf, 3.0hf);
+ P.v[0u] = 1.0hf;
+ P.v[1u] = 2.0hf;
+ P.v[2u] = 3.0hf;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.glsl
index d4bb1c9..294234d 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ vec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(vec3(0.0f));
+void f() {
+ P.v = vec3(1.0f, 2.0f, 3.0f);
+ P.v[0u] = 1.0f;
+ P.v[1u] = 2.0f;
+ P.v[2u] = 3.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.glsl
index d4bb1c9..ccacc1b 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ ivec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(ivec3(0));
+void f() {
+ P.v = ivec3(1, 2, 3);
+ P.v[0u] = 1;
+ P.v[1u] = 2;
+ P.v[2u] = 3;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.glsl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.glsl
index d4bb1c9..0688737 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.glsl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct S {
+ uvec3 v;
+};
-tint executable returned error: signal: illegal instruction
+S P = S(uvec3(0u));
+void f() {
+ P.v = uvec3(1u, 2u, 3u);
+ P.v[0u] = 1u;
+ P.v[1u] = 2u;
+ P.v[2u] = 3u;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.glsl
index d4bb1c9..2a1d7b5 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Store
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+};
-tint executable returned error: signal: illegal instruction
+struct OuterS {
+ mat2x4 m1;
+};
+
+uniform Uniforms uniforms;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ OuterS s1 = OuterS(mat2x4(vec4(0.0f), vec4(0.0f)));
+ s1.m1[uniforms.i] = vec4(1.0f);
+ s1.m1[uniforms.i][uniforms.i] = 1.0f;
+}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.glsl
index 1268749..0aaa6f8 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+};
-tint executable returned error: signal: illegal instruction
+struct OuterS {
+ vec3 v1;
+};
+
+uniform Uniforms uniforms;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ OuterS s1 = OuterS(vec3(0.0f));
+ s1.v1[uniforms.i] = 1.0f;
+}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.glsl
index ae9b6d0..ee105b5 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.glsl
@@ -1,11 +1,21 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBinary
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct Uniforms {
+ uint i;
+};
-tint executable returned error: signal: illegal instruction
+struct OuterS {
+ uint a1[8];
+};
+
+uniform Uniforms uniforms;
+uint f(uint i) {
+ return (i + 1u);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ OuterS s1 = OuterS(uint[8](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u));
+ vec3 v = vec3(0.0f);
+ v[s1.a1[uniforms.i]] = 1.0f;
+ v[f(s1.a1[uniforms.i])] = 1.0f;
+}
diff --git a/test/tint/statements/decrement/vector_component.wgsl.expected.ir.glsl b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.glsl
index 1268749..fcce63e 100644
--- a/test/tint/statements/decrement/vector_component.wgsl.expected.ir.glsl
+++ b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uvec4 a;
+void tint_symbol() {
+ a[1] = (a.y - 1u);
+ a[2u] = (a.z - 1u);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/statements/increment/vector_component.wgsl.expected.ir.glsl b/test/tint/statements/increment/vector_component.wgsl.expected.ir.glsl
index 1268749..3353f78 100644
--- a/test/tint/statements/increment/vector_component.wgsl.expected.ir.glsl
+++ b/test/tint/statements/increment/vector_component.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+uvec4 a;
+void tint_symbol() {
+ a[1] = (a.y + 1u);
+ a[2u] = (a.z + 1u);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/types/buffers/uniform.wgsl.expected.ir.glsl b/test/tint/types/buffers/uniform.wgsl.expected.ir.glsl
index 4a20bc7..41973ec 100644
--- a/test/tint/types/buffers/uniform.wgsl.expected.ir.glsl
+++ b/test/tint/types/buffers/uniform.wgsl.expected.ir.glsl
@@ -1,11 +1,9 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-tint executable returned error: signal: illegal instruction
+uniform vec2 weights;
+void main() {
+ float a = weights.x;
+}
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.glsl
deleted file mode 100644
index e1168e3..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_CompositeInsert.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::If
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.glsl
deleted file mode 100644
index e1168e3..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Hoist_VectorInsertDynamic.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::If
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.glsl
deleted file mode 100644
index 1268749..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.glsl
deleted file mode 100644
index 4a20bc7..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.glsl
deleted file mode 100644
index 4a20bc7..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.glsl
deleted file mode 100644
index 1268749..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.glsl
deleted file mode 100644
index 4a20bc7..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Matrix_Vector.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl
deleted file mode 100644
index 4a20bc7..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeExtract_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::LoadVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl
deleted file mode 100644
index 72ca17c..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Struct_Array_Matrix_Vector.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Load
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.glsl
deleted file mode 100644
index 1268749..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_CompositeInsert_Vector.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:252 internal compiler error: Switch() matched no cases. Type: tint::core::ir::StoreVectorElement
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.glsl
deleted file mode 100644
index b02d7ef..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_VectorInsertDynamic_Sample.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Let
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction