[glsl][ir] Add a transform to remove pointer lets.
This CL adds a transform which will replace a `let` which holds a
pointer with the value the let points too.
Bug: 42251044
Change-Id: Idb854af4c0802ef7887ee4f459735a159f0930b9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/208514
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/ir/transform/value_to_let.cc b/src/tint/lang/core/ir/transform/value_to_let.cc
index 019e5b5..e49d5f1 100644
--- a/src/tint/lang/core/ir/transform/value_to_let.cc
+++ b/src/tint/lang/core/ir/transform/value_to_let.cc
@@ -42,41 +42,26 @@
/// Accesses is a set of of Access
using Accesses = EnumSet<Access>;
-/// @returns the accesses that may be performed by the instruction @p inst
-Accesses AccessesFor(ir::Instruction* inst) {
- return tint::Switch<Accesses>(
- inst, //
- [&](const ir::Load* l) {
- // Always inline things in the `handle` address space
- if (l->From()->Type()->As<core::type::Pointer>()->AddressSpace() ==
- core::AddressSpace::kHandle) {
- return Accesses{};
- }
- return Accesses{Access::kLoad};
- }, //
- [&](const ir::LoadVectorElement*) { return Access::kLoad; }, //
- [&](const ir::Store*) { return Access::kStore; }, //
- [&](const ir::StoreVectorElement*) { return Access::kStore; }, //
- [&](const ir::Call*) {
- if (inst->IsAnyOf<core::ir::Bitcast>()) {
- return Accesses{};
- }
- return Accesses{Access::kLoad, Access::kStore};
- },
- [&](Default) { return Accesses{}; });
-}
-
/// PIMPL state for the transform.
struct State {
/// The IR module.
Module& ir;
+ /// The configuration
+ const ValueToLetConfig& cfg;
+
/// The IR builder.
Builder b{ir};
/// The type manager.
core::type::Manager& ty{ir.Types()};
+ // A set of possibly-inlinable values returned by a instructions that has not yet been
+ // marked-for or ruled-out-for inlining.
+ Hashset<ir::InstructionResult*, 32> pending_resolution{};
+ // The accesses of the values in pending_resolution.
+ Access pending_access = Access::kLoad;
+
/// Process the module.
void Process() {
// Process each block.
@@ -87,54 +72,8 @@
private:
void Process(ir::Block* block) {
- // A set of possibly-inlinable values returned by a instructions that has not yet been
- // marked-for or ruled-out-for inlining.
- Hashset<ir::InstructionResult*, 32> pending_resolution;
- // The accesses of the values in pending_resolution.
- Access pending_access = Access::kLoad;
-
- auto put_pending_in_lets = [&] {
- for (auto& pending : pending_resolution) {
- PutInLet(pending);
- }
- pending_resolution.Clear();
- };
-
- auto maybe_put_in_let = [&](auto* inst, Accesses& accesses) {
- if (auto* result = inst->Result(0)) {
- auto& usages = result->UsagesUnsorted();
- switch (result->NumUsages()) {
- case 0: // No usage
- if (accesses.Contains(Access::kStore)) {
- // This instruction needs to be emitted but has no uses, so we need to
- // make sure that it will be used in a statement. Function call
- // instructions with no uses will be emitted as call statements, so we
- // just need to put other instructions in `let`s to force them to be
- // emitted.
- if (!inst->template IsAnyOf<core::ir::Call>() ||
- inst->template IsAnyOf<core::ir::Construct, core::ir::Convert>()) {
- inst = PutInLet(result);
- }
- }
- break;
- case 1: { // Single usage
- auto usage = (*usages.begin())->instruction;
- if (usage->Block() == inst->Block()) {
- // Usage in same block. Assign to pending_resolution, as we don't
- // know whether its safe to inline yet.
- pending_resolution.Add(result);
- } else {
- // Usage from another block. Cannot inline.
- inst = PutInLet(result);
- }
- break;
- }
- default: // Value has multiple usages. Cannot inline.
- inst = PutInLet(result);
- break;
- }
- }
- };
+ // Replace all pointer lets with the value they point too.
+ ReplacePointerLetsWithValues();
for (ir::Instruction* inst = block->Front(); inst; inst = inst->next) {
// This transform assumes that all multi-result instructions have been replaced
@@ -143,6 +82,36 @@
// The memory accesses of this instruction
auto accesses = AccessesFor(inst);
+ // A pointer access chain will be inlined by the backends. For backends which don't
+ // provide pointer lets we need to force any arguments into lets such the occur in the
+ // correct order. Without this it's possible to shift function calls around if they're
+ // only used in the access.
+ //
+ // e.g.
+ // ```
+ // var arr : array<i32, 4>;
+ // let p = val[f() + 1];
+ // g();
+ // let x = p;
+ // ```
+ //
+ // If the access at `p` is inlined to `x` then the function `f()` will be called after
+ // `g()` instead of before as is required. So, we pessimize and for all access operands
+ // to lets to maintain ordering.
+ //
+ // This flush only needs to take place if the access chain contains operands which are
+ // pending resolution. If nothing is pending, we don't need to flush at all.
+ if (cfg.replace_pointer_lets && IsPointerAccess(inst)) {
+ for (auto* operand : inst->Operands()) {
+ if (auto* result = operand->As<InstructionResult>()) {
+ if (pending_resolution.Contains(result)) {
+ PutPendingInLets();
+ break;
+ }
+ }
+ }
+ }
+
for (auto* operand : inst->Operands()) {
// If the operand is in pending_resolution, then we know it has a single use and
// because it hasn't been removed with put_pending_in_lets(), we know its safe to
@@ -161,25 +130,102 @@
}
if (accesses.Contains(Access::kStore)) { // Note: Also handles load + store
- put_pending_in_lets();
+ PutPendingInLets();
pending_access = Access::kStore;
- maybe_put_in_let(inst, accesses);
+ inst = MaybePutInLet(inst, accesses);
} else if (accesses.Contains(Access::kLoad)) {
if (pending_access != Access::kLoad) {
- put_pending_in_lets();
+ PutPendingInLets();
pending_access = Access::kLoad;
}
- maybe_put_in_let(inst, accesses);
+ inst = MaybePutInLet(inst, accesses);
}
}
}
+ /// @returns the accesses that may be performed by the instruction @p inst
+ Accesses AccessesFor(ir::Instruction* inst) {
+ return tint::Switch<Accesses>(
+ inst, //
+ [&](const ir::Load* l) {
+ // Always inline things in the `handle` address space
+ if (l->From()->Type()->As<core::type::Pointer>()->AddressSpace() ==
+ core::AddressSpace::kHandle) {
+ return Accesses{};
+ }
+ return Accesses{Access::kLoad};
+ }, //
+ [&](const ir::LoadVectorElement*) { return Access::kLoad; }, //
+ [&](const ir::Store*) { return Access::kStore; }, //
+ [&](const ir::StoreVectorElement*) { return Access::kStore; }, //
+ [&](const ir::Call*) {
+ if (inst->IsAnyOf<core::ir::Bitcast>()) {
+ return Accesses{};
+ }
+ return Accesses{Access::kLoad, Access::kStore};
+ },
+ [&](Default) { return Accesses{}; });
+ }
+
+ void PutPendingInLets() {
+ for (auto& pending : pending_resolution) {
+ PutInLet(pending);
+ }
+ pending_resolution.Clear();
+ }
+
+ core::ir::Instruction* MaybePutInLet(core::ir::Instruction* inst, Accesses& accesses) {
+ if (auto* result = inst->Result(0)) {
+ auto& usages = result->UsagesUnsorted();
+ switch (result->NumUsages()) {
+ case 0: // No usage
+ if (accesses.Contains(Access::kStore)) {
+ // This instruction needs to be emitted but has no uses, so we need to
+ // make sure that it will be used in a statement. Function call
+ // instructions with no uses will be emitted as call statements, so we
+ // just need to put other instructions in `let`s to force them to be
+ // emitted.
+ if (!inst->IsAnyOf<core::ir::Call>() ||
+ inst->IsAnyOf<core::ir::Construct, core::ir::Convert>()) {
+ inst = PutInLet(result);
+ }
+ }
+ break;
+ case 1: { // Single usage
+ auto usage = (*usages.begin())->instruction;
+ if (usage->Block() == inst->Block()) {
+ // Usage in same block. Assign to pending_resolution, as we don't
+ // know whether its safe to inline yet.
+ pending_resolution.Add(result);
+ } else {
+ // Usage from another block. Cannot inline.
+ inst = PutInLet(result);
+ }
+ break;
+ }
+ default: // Value has multiple usages. Cannot inline.
+ inst = PutInLet(result);
+ break;
+ }
+ }
+ return inst;
+ }
+
+ bool IsPointerAccess(core::ir::Instruction* inst) {
+ return inst->Is<core::ir::Access>() && inst->Result(0)->Type()->Is<core::type::Pointer>();
+ }
+
/// PutInLet places the value into a new 'let' instruction, immediately after the value's
/// instruction
/// @param value the value to place into the 'let'
/// @return the created 'let' instruction.
- ir::Let* PutInLet(ir::InstructionResult* value) {
+ ir::Instruction* PutInLet(ir::InstructionResult* value) {
auto* inst = value->Instruction();
+
+ if (cfg.replace_pointer_lets && IsPointerAccess(inst)) {
+ return inst;
+ }
+
auto* let = b.Let(value->Type());
value->ReplaceAllUsesWith(let->Result(0));
let->SetValue(value);
@@ -190,11 +236,27 @@
}
return let;
}
+
+ void ReplacePointerLetsWithValues() {
+ if (!cfg.replace_pointer_lets) {
+ return;
+ }
+
+ for (auto* inst : ir.Instructions()) {
+ if (auto* l = inst->As<ir::Let>()) {
+ if (!l->Result(0)->Type()->Is<core::type::Pointer>()) {
+ continue;
+ }
+ l->Result(0)->ReplaceAllUsesWith(l->Value());
+ l->Destroy();
+ }
+ }
+ }
};
} // namespace
-Result<SuccessType> ValueToLet(Module& ir) {
+Result<SuccessType> ValueToLet(Module& ir, const ValueToLetConfig& cfg) {
auto result = ValidateAndDumpIfNeeded(ir, "ValueToLet transform",
core::ir::Capabilities{
core::ir::Capability::kAllow8BitIntegers,
@@ -205,7 +267,7 @@
return result;
}
- State{ir}.Process();
+ State{ir, cfg}.Process();
return Success;
}
diff --git a/src/tint/lang/core/ir/transform/value_to_let.h b/src/tint/lang/core/ir/transform/value_to_let.h
index 895bc09..6b72f1a 100644
--- a/src/tint/lang/core/ir/transform/value_to_let.h
+++ b/src/tint/lang/core/ir/transform/value_to_let.h
@@ -28,6 +28,7 @@
#ifndef SRC_TINT_LANG_CORE_IR_TRANSFORM_VALUE_TO_LET_H_
#define SRC_TINT_LANG_CORE_IR_TRANSFORM_VALUE_TO_LET_H_
+#include "src/tint/utils/reflection/reflection.h"
#include "src/tint/utils/result/result.h"
// Forward declarations.
@@ -37,6 +38,15 @@
namespace tint::core::ir::transform {
+/// Configuration for ValueToLet transform.
+struct ValueToLetConfig {
+ /// Replace pointer lets with their value
+ bool replace_pointer_lets = false;
+
+ /// Reflection for this class
+ TINT_REFLECT(ValueToLetConfig, replace_pointer_lets);
+};
+
/// ValueToLet is a transform that moves "non-inlinable" instruction values to let instructions.
/// An expression is considered "non-inlinable" if any of the the following are true:
/// * The value has multiple uses.
@@ -46,8 +56,9 @@
/// * The value is used in a block different to the value's instruction.
///
/// @param module the module to transform
+/// @param cfg the configuration
/// @returns error diagnostics on failure
-Result<SuccessType> ValueToLet(Module& module);
+Result<SuccessType> ValueToLet(Module& module, const ValueToLetConfig& cfg);
} // namespace tint::core::ir::transform
diff --git a/src/tint/lang/core/ir/transform/value_to_let_fuzz.cc b/src/tint/lang/core/ir/transform/value_to_let_fuzz.cc
index 84564e2..d593e2d 100644
--- a/src/tint/lang/core/ir/transform/value_to_let_fuzz.cc
+++ b/src/tint/lang/core/ir/transform/value_to_let_fuzz.cc
@@ -44,12 +44,12 @@
return true;
}
-void ValueToLetFuzzer(Module& module) {
+void ValueToLetFuzzer(Module& module, ValueToLetConfig config) {
if (!CanRun(module)) {
return;
}
- if (auto res = ValueToLet(module); res != Success) {
+ if (auto res = ValueToLet(module, config); res != Success) {
return;
}
diff --git a/src/tint/lang/core/ir/transform/value_to_let_test.cc b/src/tint/lang/core/ir/transform/value_to_let_test.cc
index ed2e973..288a7a6 100644
--- a/src/tint/lang/core/ir/transform/value_to_let_test.cc
+++ b/src/tint/lang/core/ir/transform/value_to_let_test.cc
@@ -46,7 +46,7 @@
auto* expect = R"(
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -66,7 +66,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -95,7 +95,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -121,7 +121,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -173,7 +173,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -226,7 +226,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -279,7 +279,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -321,7 +321,7 @@
auto* expect = src;
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -358,7 +358,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -396,7 +396,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -463,7 +463,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -530,7 +530,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -594,7 +594,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -658,7 +658,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -722,7 +722,7 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
}
@@ -798,11 +798,11 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
- Run(ValueToLet); // running a second time should be no-op
+ Run(ValueToLet, ValueToLetConfig{}); // running a second time should be no-op
EXPECT_EQ(str(), expect);
}
@@ -886,11 +886,11 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
- Run(ValueToLet); // running a second time should be no-op
+ Run(ValueToLet, ValueToLetConfig{}); // running a second time should be no-op
EXPECT_EQ(str(), expect);
}
@@ -931,11 +931,11 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
- Run(ValueToLet); // running a second time should be no-op
+ Run(ValueToLet, ValueToLetConfig{}); // running a second time should be no-op
EXPECT_EQ(str(), expect);
}
@@ -982,10 +982,10 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
- Run(ValueToLet); // running a second time should be no-op
+ Run(ValueToLet, ValueToLetConfig{}); // running a second time should be no-op
EXPECT_EQ(str(), expect);
}
@@ -1049,10 +1049,175 @@
}
)";
- Run(ValueToLet);
+ Run(ValueToLet, ValueToLetConfig{});
EXPECT_EQ(str(), expect);
- Run(ValueToLet); // running a second time should be no-op
+ Run(ValueToLet, ValueToLetConfig{}); // running a second time should be no-op
+ EXPECT_EQ(str(), expect);
+}
+
+TEST_F(IR_ValueToLetTest, AccessToLetWithFunctionParams) {
+ auto* f = b.Function("f", ty.i32());
+ b.Append(f->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* g = b.Function("g", ty.i32());
+ b.Append(g->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* foo = b.Function("foo", ty.void_());
+ b.Append(foo->Block(), [&] {
+ auto* arr = b.Var("arr", ty.ptr<function, array<i32, 4>, read_write>());
+ auto* c = b.Call(ty.i32(), f);
+ auto* access = b.Access(ty.ptr<function, i32, read_write>(), arr, c);
+ auto* p = b.Let("p", access);
+ auto* c2 = b.Call(ty.i32(), g);
+ b.Let("y", c2);
+ b.Let("x", b.Load(p));
+ b.Return(foo);
+ });
+
+ auto* src = R"(
+%f = func():i32 {
+ $B1: {
+ ret 0i
+ }
+}
+%g = func():i32 {
+ $B2: {
+ ret 0i
+ }
+}
+%foo = func():void {
+ $B3: {
+ %arr:ptr<function, array<i32, 4>, read_write> = var
+ %5:i32 = call %f
+ %6:ptr<function, i32, read_write> = access %arr, %5
+ %p:ptr<function, i32, read_write> = let %6
+ %8:i32 = call %g
+ %y:i32 = let %8
+ %10:i32 = load %p
+ %x:i32 = let %10
+ ret
+ }
+}
+)";
+ EXPECT_EQ(str(), src);
+
+ auto* expect = R"(
+%f = func():i32 {
+ $B1: {
+ ret 0i
+ }
+}
+%g = func():i32 {
+ $B2: {
+ ret 0i
+ }
+}
+%foo = func():void {
+ $B3: {
+ %arr:ptr<function, array<i32, 4>, read_write> = var
+ %5:i32 = call %f
+ %6:i32 = let %5
+ %7:ptr<function, i32, read_write> = access %arr, %6
+ %8:i32 = call %g
+ %y:i32 = let %8
+ %10:i32 = load %7
+ %x:i32 = let %10
+ ret
+ }
+}
+)";
+
+ ValueToLetConfig cfg{};
+ cfg.replace_pointer_lets = true;
+ Run(ValueToLet, cfg);
+ EXPECT_EQ(str(), expect);
+
+ Run(ValueToLet, cfg); // running a second time should be no-op
+ EXPECT_EQ(str(), expect);
+}
+
+TEST_F(IR_ValueToLetTest, AccessToLetWithNestedFunctionParams) {
+ auto* f = b.Function("f", ty.i32());
+ b.Append(f->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* g = b.Function("g", ty.i32());
+ b.Append(g->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* foo = b.Function("foo", ty.void_());
+ b.Append(foo->Block(), [&] {
+ auto* arr = b.Var("arr", ty.ptr<function, array<i32, 4>, read_write>());
+ auto* c = b.Call(ty.i32(), f);
+ auto* d = b.Add(ty.i32(), c, 1_i);
+ auto* access = b.Access(ty.ptr<function, i32, read_write>(), arr, d);
+ auto* p = b.Let("p", access);
+ auto* c2 = b.Call(ty.i32(), g);
+ b.Let("y", c2);
+ b.Let("x", b.Load(p));
+ b.Return(foo);
+ });
+
+ auto* src = R"(
+%f = func():i32 {
+ $B1: {
+ ret 0i
+ }
+}
+%g = func():i32 {
+ $B2: {
+ ret 0i
+ }
+}
+%foo = func():void {
+ $B3: {
+ %arr:ptr<function, array<i32, 4>, read_write> = var
+ %5:i32 = call %f
+ %6:i32 = add %5, 1i
+ %7:ptr<function, i32, read_write> = access %arr, %6
+ %p:ptr<function, i32, read_write> = let %7
+ %9:i32 = call %g
+ %y:i32 = let %9
+ %11:i32 = load %p
+ %x:i32 = let %11
+ ret
+ }
+}
+)";
+ EXPECT_EQ(str(), src);
+
+ auto* expect = R"(
+%f = func():i32 {
+ $B1: {
+ ret 0i
+ }
+}
+%g = func():i32 {
+ $B2: {
+ ret 0i
+ }
+}
+%foo = func():void {
+ $B3: {
+ %arr:ptr<function, array<i32, 4>, read_write> = var
+ %5:i32 = call %f
+ %6:i32 = add %5, 1i
+ %7:i32 = let %6
+ %8:ptr<function, i32, read_write> = access %arr, %7
+ %9:i32 = call %g
+ %y:i32 = let %9
+ %11:i32 = load %8
+ %x:i32 = let %11
+ ret
+ }
+}
+)";
+
+ ValueToLetConfig cfg{};
+ cfg.replace_pointer_lets = true;
+ Run(ValueToLet, cfg);
+ EXPECT_EQ(str(), expect);
+
+ Run(ValueToLet, cfg); // running a second time should be no-op
EXPECT_EQ(str(), expect);
}
diff --git a/src/tint/lang/glsl/writer/access_test.cc b/src/tint/lang/glsl/writer/access_test.cc
index 4b8a85c..57317af 100644
--- a/src/tint/lang/glsl/writer/access_test.cc
+++ b/src/tint/lang/glsl/writer/access_test.cc
@@ -2128,5 +2128,84 @@
)");
}
+TEST_F(GlslWriterTest, AccessToLetWithFunctionParams) {
+ auto* f = b.Function("f", ty.i32());
+ b.Append(f->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* g = b.Function("g", ty.i32());
+ b.Append(g->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* foo = b.Function("foo", ty.void_());
+ b.Append(foo->Block(), [&] {
+ auto* arr = b.Var("arr", ty.ptr<function, array<i32, 4>, read_write>());
+ auto* c = b.Call(ty.i32(), f);
+ auto* access = b.Access(ty.ptr<function, i32, read_write>(), arr, c);
+ auto* p = b.Let("p", access);
+ auto* c2 = b.Call(ty.i32(), g);
+ b.Let("y", c2);
+ b.Let("x", b.Load(p));
+ b.Return(foo);
+ });
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+int f() {
+ return 0;
+}
+int g() {
+ return 0;
+}
+void foo() {
+ int arr[4] = int[4](0, 0, 0, 0);
+ uint v = min(uint(f()), 3u);
+ int y = g();
+ int x = arr[v];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
+)");
+}
+
+TEST_F(GlslWriterTest, AccessToLetWithNestedFunctionParams) {
+ auto* f = b.Function("f", ty.i32());
+ b.Append(f->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* g = b.Function("g", ty.i32());
+ b.Append(g->Block(), [&] { b.Return(f, 0_i); });
+
+ auto* foo = b.Function("foo", ty.void_());
+ b.Append(foo->Block(), [&] {
+ auto* arr = b.Var("arr", ty.ptr<function, array<i32, 4>, read_write>());
+ auto* c = b.Call(ty.i32(), f);
+ auto* d = b.Add(ty.i32(), c, 1_i);
+ auto* access = b.Access(ty.ptr<function, i32, read_write>(), arr, d);
+ auto* p = b.Let("p", access);
+ auto* c2 = b.Call(ty.i32(), g);
+ b.Let("y", c2);
+ b.Let("x", b.Load(p));
+ b.Return(foo);
+ });
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+int f() {
+ return 0;
+}
+int g() {
+ return 0;
+}
+void foo() {
+ int arr[4] = int[4](0, 0, 0, 0);
+ uint v = min(uint((f() + 1)), 3u);
+ int y = g();
+ int x = arr[v];
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
+)");
+}
+
} // namespace
} // namespace tint::glsl::writer
diff --git a/src/tint/lang/glsl/writer/raise/raise.cc b/src/tint/lang/glsl/writer/raise/raise.cc
index e67e469..0959342 100644
--- a/src/tint/lang/glsl/writer/raise/raise.cc
+++ b/src/tint/lang/glsl/writer/raise/raise.cc
@@ -147,7 +147,12 @@
// naming conflicts, and expressions that need to be explicitly not inlined.
RUN_TRANSFORM(core::ir::transform::RemoveTerminatorArgs, module);
RUN_TRANSFORM(core::ir::transform::RenameConflicts, module);
- RUN_TRANSFORM(core::ir::transform::ValueToLet, module);
+
+ {
+ core::ir::transform::ValueToLetConfig cfg;
+ cfg.replace_pointer_lets = true;
+ RUN_TRANSFORM(core::ir::transform::ValueToLet, module, cfg);
+ }
return Success;
}
diff --git a/src/tint/lang/hlsl/writer/raise/raise.cc b/src/tint/lang/hlsl/writer/raise/raise.cc
index bd4ad8f..67054cc 100644
--- a/src/tint/lang/hlsl/writer/raise/raise.cc
+++ b/src/tint/lang/hlsl/writer/raise/raise.cc
@@ -194,7 +194,10 @@
// naming conflicts, and expressions that need to be explicitly not inlined.
RUN_TRANSFORM(core::ir::transform::RemoveTerminatorArgs, module);
RUN_TRANSFORM(core::ir::transform::RenameConflicts, module);
- RUN_TRANSFORM(core::ir::transform::ValueToLet, module);
+ {
+ core::ir::transform::ValueToLetConfig cfg;
+ RUN_TRANSFORM(core::ir::transform::ValueToLet, module, cfg);
+ }
// Anything which runs after this needs to handle `Capabilities::kAllowModuleScopedLets`
RUN_TRANSFORM(raise::PromoteInitializers, module);
diff --git a/src/tint/lang/msl/writer/raise/raise.cc b/src/tint/lang/msl/writer/raise/raise.cc
index 56d1f6e..a386b79 100644
--- a/src/tint/lang/msl/writer/raise/raise.cc
+++ b/src/tint/lang/msl/writer/raise/raise.cc
@@ -144,7 +144,10 @@
// naming conflicts, and expressions that need to be explicitly not inlined.
RUN_TRANSFORM(core::ir::transform::RemoveTerminatorArgs, module);
RUN_TRANSFORM(core::ir::transform::RenameConflicts, module);
- RUN_TRANSFORM(core::ir::transform::ValueToLet, module);
+ {
+ core::ir::transform::ValueToLetConfig cfg;
+ RUN_TRANSFORM(core::ir::transform::ValueToLet, module, cfg);
+ }
return raise_result;
}
diff --git a/test/tint/access/ptr.wgsl.expected.ir.glsl b/test/tint/access/ptr.wgsl.expected.ir.glsl
index 1c00ea3..ea620aa 100644
--- a/test/tint/access/ptr.wgsl.expected.ir.glsl
+++ b/test/tint/access/ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,61 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int a;
+ int b;
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ int tint_symbol_1;
+} v;
+shared int g1;
+int accept_value(int val) {
+ return val;
+}
+int accept_ptr_deref_call_func(inout int val) {
+ int v_1 = val;
+ return (v_1 + accept_value(val));
+}
+int accept_ptr_deref_pass_through(inout int val) {
+ int v_2 = val;
+ return (v_2 + accept_ptr_deref_call_func(val));
+}
+int accept_ptr_to_struct_and_access(inout S val) {
+ return (val.a + val.b);
+}
+int accept_ptr_to_struct_access_pass_ptr(inout S val) {
+ val.a = 2;
+ return val.a;
+}
+int tint_f32_to_i32(float value) {
+ return mix(2147483647, mix((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
+}
+int accept_ptr_vec_access_elements(inout vec3 v1) {
+ v1[0u] = cross(v1, v1)[0u];
+ return tint_f32_to_i32(v1.x);
+}
+int call_builtin_with_mod_scope_ptr() {
+ return atomicOr(g1, 0);
+}
+void tint_symbol_inner(uint tint_local_index) {
+ if ((tint_local_index == 0u)) {
+ atomicExchange(g1, 0);
+ }
+ barrier();
+ int v1 = 0;
+ S v2 = S(0, 0);
+ vec3 v4 = vec3(0.0f);
+ int t1 = atomicOr(g1, 0);
+ int v_3 = accept_ptr_deref_pass_through(v1);
+ int v_4 = (v_3 + accept_ptr_to_struct_and_access(v2));
+ int v_5 = (v_4 + accept_ptr_to_struct_and_access(v2));
+ int v_6 = (v_5 + accept_ptr_vec_access_elements(v4));
+ int v_7 = (v_6 + accept_ptr_to_struct_access_pass_ptr(v2));
+ v.tint_symbol_1 = ((v_7 + call_builtin_with_mod_scope_ptr()) + t1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.glsl b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.glsl
index 1c00ea3..94438dc 100644
--- a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.glsl
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.glsl
@@ -1,11 +1,27 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int arr[4];
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ int tint_symbol_1;
+} v;
+int foo() {
+ int src[4] = int[4](0, 0, 0, 0);
+ int dst[4] = int[4](0, 0, 0, 0);
+ S dst_struct = S(int[4](0, 0, 0, 0));
+ int dst_array[2][4] = int[2][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0));
+ dst_struct.arr = src;
+ dst_array[1] = src;
+ dst = src;
+ dst_struct.arr = src;
+ dst_array[0] = src;
+ return ((dst[0] + dst_struct.arr[0]) + dst_array[0][0]);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ v.tint_symbol_1 = foo();
+}
diff --git a/test/tint/benchmark/metaball-isosurface.wgsl.expected.ir.glsl b/test/tint/benchmark/metaball-isosurface.wgsl.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/benchmark/metaball-isosurface.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..3149323 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat2x4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_2 = i();
+ int v_3 = i();
+ mat2x4 l_a[4] = v.tint_symbol;
+ mat2x4 l_a_i = v.tint_symbol[v_2];
+ vec4 l_a_i_i = v.tint_symbol[v_2][v_3];
+ v_1.tint_symbol_2 = (((v.tint_symbol[v_2][v_3].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..331349c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat2x4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 l_a[4] = v.tint_symbol;
+ mat2x4 l_a_i = v.tint_symbol[2];
+ vec4 l_a_i_i = v.tint_symbol[2][1];
+ v_1.tint_symbol_2 = (((v.tint_symbol[2][1].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..fac3108 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat3x4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_2 = i();
+ int v_3 = i();
+ mat3x4 l_a[4] = v.tint_symbol;
+ mat3x4 l_a_i = v.tint_symbol[v_2];
+ vec4 l_a_i_i = v.tint_symbol[v_2][v_3];
+ v_1.tint_symbol_2 = (((v.tint_symbol[v_2][v_3].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..d94ffb7 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat3x4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x4 l_a[4] = v.tint_symbol;
+ mat3x4 l_a_i = v.tint_symbol[2];
+ vec4 l_a_i_i = v.tint_symbol[2][1];
+ v_1.tint_symbol_2 = (((v.tint_symbol[2][1].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..7864ba5 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,24 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_2 = i();
+ int v_3 = i();
+ mat4 l_a[4] = v.tint_symbol;
+ mat4 l_a_i = v.tint_symbol[v_2];
+ vec4 l_a_i_i = v.tint_symbol[v_2][v_3];
+ v_1.tint_symbol_2 = (((v.tint_symbol[v_2][v_3].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..1c85910 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat4 tint_symbol[4];
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_3_1_ssbo {
+ float tint_symbol_2;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4 l_a[4] = v.tint_symbol;
+ mat4 l_a_i = v.tint_symbol[2];
+ vec4 l_a_i_i = v.tint_symbol[2][1];
+ v_1.tint_symbol_2 = (((v.tint_symbol[2][1].x + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..3bae035 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,100 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec2 m_col0;
+ f16vec2 m_col1;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat2(tint_input.m_col0, tint_input.m_col1));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat2 v_6 = f16mat2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1);
+ f16vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat2 l_a_i_a_i_m = v_6;
+ f16vec2 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..57cac49 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,99 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec2 m_col0;
+ vec2 m_col1;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat2(tint_input.m_col0, tint_input.m_col1));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat2 v_6 = mat2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1);
+ vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))), Inner(mat2(vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat2 l_a_i_a_i_m = v_6;
+ vec2 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..3df3a90 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,100 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec3 m_col0;
+ f16vec3 m_col1;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat2x3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat2x3(tint_input.m_col0, tint_input.m_col1));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat2x3 v_6 = f16mat2x3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1);
+ f16vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat2x3 l_a_i_a_i_m = v_6;
+ f16vec3 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..d0c8d69 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,99 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec3 m_col0;
+ vec3 m_col1;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat2x3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat2x3(tint_input.m_col0, tint_input.m_col1));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat2x3 v_6 = mat2x3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1);
+ vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))), Inner(mat2x3(vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat2x3 l_a_i_a_i_m = v_6;
+ vec3 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..d63edb1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,100 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec4 m_col0;
+ f16vec4 m_col1;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat2x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat2x4(tint_input.m_col0, tint_input.m_col1));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat2x4 v_6 = f16mat2x4(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1);
+ f16vec4 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat2x4 l_a_i_a_i_m = v_6;
+ f16vec4 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..6f4ffdc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,33 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat2x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ int v_2 = i();
+ int v_3 = i();
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_i = v.tint_symbol[v_1];
+ Inner l_a_i_a[4] = v.tint_symbol[v_1].a;
+ Inner l_a_i_a_i = v.tint_symbol[v_1].a[v_2];
+ mat2x4 l_a_i_a_i_m = v.tint_symbol[v_1].a[v_2].m;
+ vec4 l_a_i_a_i_m_i = v.tint_symbol[v_1].a[v_2].m[v_3];
+ float l_a_i_a_i_m_i_i = v.tint_symbol[v_1].a[v_2].m[v_3][i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..2549b04 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,25 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat2x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_3 = v.tint_symbol[3];
+ Inner l_a_3_a[4] = v.tint_symbol[3].a;
+ Inner l_a_3_a_2 = v.tint_symbol[3].a[2];
+ mat2x4 l_a_3_a_2_m = v.tint_symbol[3].a[2].m;
+ vec4 l_a_3_a_2_m_1 = v.tint_symbol[3].a[2].m[1];
+ float l_a_3_a_2_m_1_0 = v.tint_symbol[3].a[2].m[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..58dd34e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,101 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec2 m_col0;
+ f16vec2 m_col1;
+ f16vec2 m_col2;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat3x2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat3x2(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat3x2 v_6 = f16mat3x2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2);
+ f16vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat3x2 l_a_i_a_i_m = v_6;
+ f16vec2 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..411ecb1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,100 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec2 m_col0;
+ vec2 m_col1;
+ vec2 m_col2;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat3x2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat3x2(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat3x2 v_6 = mat3x2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2);
+ vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat3x2(vec2(0.0f), vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat3x2 l_a_i_a_i_m = v_6;
+ vec2 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..4d865b2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,101 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec3 m_col0;
+ f16vec3 m_col1;
+ f16vec3 m_col2;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat3(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat3 v_6 = f16mat3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2);
+ f16vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat3 l_a_i_a_i_m = v_6;
+ f16vec3 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..b928e8f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,100 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec3 m_col0;
+ vec3 m_col1;
+ vec3 m_col2;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat3(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat3 v_6 = mat3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2);
+ vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat3 l_a_i_a_i_m = v_6;
+ vec3 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..36ce5be 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,101 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec4 m_col0;
+ f16vec4 m_col1;
+ f16vec4 m_col2;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat3x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat3x4(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat3x4 v_6 = f16mat3x4(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2);
+ f16vec4 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat3x4 l_a_i_a_i_m = v_6;
+ f16vec4 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..088a3ab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,33 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat3x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ int v_2 = i();
+ int v_3 = i();
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_i = v.tint_symbol[v_1];
+ Inner l_a_i_a[4] = v.tint_symbol[v_1].a;
+ Inner l_a_i_a_i = v.tint_symbol[v_1].a[v_2];
+ mat3x4 l_a_i_a_i_m = v.tint_symbol[v_1].a[v_2].m;
+ vec4 l_a_i_a_i_m_i = v.tint_symbol[v_1].a[v_2].m[v_3];
+ float l_a_i_a_i_m_i_i = v.tint_symbol[v_1].a[v_2].m[v_3][i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..aa8cbee 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,25 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat3x4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_3 = v.tint_symbol[3];
+ Inner l_a_3_a[4] = v.tint_symbol[3].a;
+ Inner l_a_3_a_2 = v.tint_symbol[3].a[2];
+ mat3x4 l_a_3_a_2_m = v.tint_symbol[3].a[2].m;
+ vec4 l_a_3_a_2_m_1 = v.tint_symbol[3].a[2].m[1];
+ float l_a_3_a_2_m_1_0 = v.tint_symbol[3].a[2].m[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..d512e54 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,102 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec2 m_col0;
+ f16vec2 m_col1;
+ f16vec2 m_col2;
+ f16vec2 m_col3;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat4x2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat4x2(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2, tint_input.m_col3));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat4x2 v_6 = f16mat4x2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2, v.tint_symbol[v_4].a[v_5].m_col3);
+ f16vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))), Outer(Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))), Inner(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat4x2 l_a_i_a_i_m = v_6;
+ f16vec2 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..21ff1b7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,101 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec2 m_col0;
+ vec2 m_col1;
+ vec2 m_col2;
+ vec2 m_col3;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat4x2 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat4x2(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2, tint_input.m_col3));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat4x2 v_6 = mat4x2(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2, v.tint_symbol[v_4].a[v_5].m_col3);
+ vec2 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))))), Outer(Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))), Inner(mat4x2(vec2(0.0f), vec2(0.0f), vec2(0.0f), vec2(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat4x2 l_a_i_a_i_m = v_6;
+ vec2 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..6c6bcd7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,102 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec3 m_col0;
+ f16vec3 m_col1;
+ f16vec3 m_col2;
+ f16vec3 m_col3;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat4x3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat4x3(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2, tint_input.m_col3));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat4x3 v_6 = f16mat4x3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2, v.tint_symbol[v_4].a[v_5].m_col3);
+ f16vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))), Outer(Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))), Inner(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat4x3 l_a_i_a_i_m = v_6;
+ f16vec3 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..54e7659 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,101 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ vec3 m_col0;
+ vec3 m_col1;
+ vec3 m_col2;
+ vec3 m_col3;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ mat4x3 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(mat4x3(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2, tint_input.m_col3));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ mat4x3 v_6 = mat4x3(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2, v.tint_symbol[v_4].a[v_5].m_col3);
+ vec3 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))))), Outer(Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))), Inner(mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ mat4x3 l_a_i_a_i_m = v_6;
+ vec3 l_a_i_a_i_m_i = v_7;
+ float l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..0f8c8c9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,102 @@
-SKIP: FAILED
+#version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner_std140 {
+ f16vec4 m_col0;
+ f16vec4 m_col1;
+ f16vec4 m_col2;
+ f16vec4 m_col3;
+};
+
+struct Outer_std140 {
+ Inner_std140 a[4];
+};
+
+struct Inner {
+ f16mat4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_std140_1_ubo {
+ Outer_std140 tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+Inner tint_convert_Inner(Inner_std140 tint_input) {
+ return Inner(f16mat4(tint_input.m_col0, tint_input.m_col1, tint_input.m_col2, tint_input.m_col3));
+}
+Outer tint_convert_Outer(Outer_std140 tint_input) {
+ Inner v_1[4] = Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint v_3 = v_2;
+ if ((v_3 >= 4u)) {
+ break;
+ }
+ v_1[v_3] = tint_convert_Inner(tint_input.a[v_3]);
+ {
+ v_2 = (v_3 + 1u);
+ }
+ continue;
+ }
+ }
+ return Outer(v_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_4 = i();
+ int v_5 = i();
+ f16mat4 v_6 = f16mat4(v.tint_symbol[v_4].a[v_5].m_col0, v.tint_symbol[v_4].a[v_5].m_col1, v.tint_symbol[v_4].a[v_5].m_col2, v.tint_symbol[v_4].a[v_5].m_col3);
+ f16vec4 v_7 = v_6[i()];
+ Outer_std140 v_8[4] = v.tint_symbol;
+ Outer v_9[4] = Outer[4](Outer(Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))), Outer(Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))))));
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 4u)) {
+ break;
+ }
+ v_9[v_11] = tint_convert_Outer(v_8[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+ Outer l_a[4] = v_9;
+ Outer l_a_i = tint_convert_Outer(v.tint_symbol[v_4]);
+ Inner_std140 v_12[4] = v.tint_symbol[v_4].a;
+ Inner v_13[4] = Inner[4](Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))), Inner(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf))));
+ {
+ uint v_14 = 0u;
+ v_14 = 0u;
+ while(true) {
+ uint v_15 = v_14;
+ if ((v_15 >= 4u)) {
+ break;
+ }
+ v_13[v_15] = tint_convert_Inner(v_12[v_15]);
+ {
+ v_14 = (v_15 + 1u);
+ }
+ continue;
+ }
+ }
+ Inner l_a_i_a[4] = v_13;
+ Inner l_a_i_a_i = tint_convert_Inner(v.tint_symbol[v_4].a[v_5]);
+ f16mat4 l_a_i_a_i_m = v_6;
+ f16vec4 l_a_i_a_i_m_i = v_7;
+ float16_t l_a_i_a_i_m_i_i = v_7[i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..d1ac0d2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,33 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ int v_2 = i();
+ int v_3 = i();
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_i = v.tint_symbol[v_1];
+ Inner l_a_i_a[4] = v.tint_symbol[v_1].a;
+ Inner l_a_i_a_i = v.tint_symbol[v_1].a[v_2];
+ mat4 l_a_i_a_i_m = v.tint_symbol[v_1].a[v_2].m;
+ vec4 l_a_i_a_i_m_i = v.tint_symbol[v_1].a[v_2].m[v_3];
+ float l_a_i_a_i_m_i_i = v.tint_symbol[v_1].a[v_2].m[v_3][i()];
+}
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..da2345f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,25 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Inner {
+ mat4 m;
+};
+
+struct Outer {
+ Inner a[4];
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ Outer tint_symbol[4];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ Outer l_a[4] = v.tint_symbol;
+ Outer l_a_3 = v.tint_symbol[3];
+ Inner l_a_3_a[4] = v.tint_symbol[3].a;
+ Inner l_a_3_a_2 = v.tint_symbol[3].a[2];
+ mat4 l_a_3_a_2_m = v.tint_symbol[3].a[2].m;
+ vec4 l_a_3_a_2_m_1 = v.tint_symbol[3].a[2].m[1];
+ float l_a_3_a_2_m_1_0 = v.tint_symbol[3].a[2].m[1].x;
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..6ab9a22 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat2x4 tint_symbol;
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ mat2x4 l_m = v.tint_symbol;
+ vec4 l_m_i = v.tint_symbol[v_1];
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..920b661 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat2x4 tint_symbol;
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat2x4 l_m = v.tint_symbol;
+ vec4 l_m_1 = v.tint_symbol[1];
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..6a2cd31 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat3x4 tint_symbol;
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ mat3x4 l_m = v.tint_symbol;
+ vec4 l_m_i = v.tint_symbol[v_1];
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..95025bd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat3x4 tint_symbol;
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3x4 l_m = v.tint_symbol;
+ vec4 l_m_1 = v.tint_symbol[1];
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..cf2a24d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat4 tint_symbol;
+} v;
+int counter = 0;
+int i() {
+ counter = (counter + 1);
+ return counter;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int v_1 = i();
+ mat4 l_m = v.tint_symbol;
+ vec4 l_m_i = v.tint_symbol[v_1];
+}
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 1c00ea3..50a51aa 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std140)
+uniform tint_symbol_1_1_ubo {
+ mat4 tint_symbol;
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat4 l_m = v.tint_symbol;
+ vec4 l_m_1 = v.tint_symbol[1];
+}
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1273230.wgsl.expected.ir.glsl
index 07b193a..5faa1a2 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.ir.glsl
@@ -88,16 +88,20 @@
return;
}
doIgnore();
- uint i0 = indices.values[((3u * triangleIndex) + 0u)];
- uint i1 = indices.values[((3u * i0) + 1u)];
- uint i2 = indices.values[((3u * i0) + 2u)];
+ uint v_5 = ((3u * triangleIndex) + 0u);
+ uint i0 = indices.values[v_5];
+ uint v_6 = ((3u * i0) + 1u);
+ uint i1 = indices.values[v_6];
+ uint v_7 = ((3u * i0) + 2u);
+ uint i2 = indices.values[v_7];
vec3 p0 = loadPosition(i0);
vec3 p1 = loadPosition(i0);
vec3 p2 = loadPosition(i2);
vec3 center = (((p0 + p2) + p1) / 3.0f);
vec3 voxelPos = toVoxelPos(p1);
uint lIndex = toIndex1D(v.tint_symbol.gridSize, p0);
- int triangleOffset = atomicAdd(LUT.values[i1], 1);
+ uint v_8 = i1;
+ int triangleOffset = atomicAdd(LUT.values[v_8], 1);
}
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/chromium/1360925.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1360925.wgsl.expected.ir.glsl
index 1c00ea3..e085c70 100644
--- a/test/tint/bug/chromium/1360925.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1360925.wgsl.expected.ir.glsl
@@ -1,11 +1,12 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+ int tint_symbol[];
+} v;
+void n() {
+ uint v_1 = uint(v.tint_symbol.length());
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/bug/chromium/1433499.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1433499.wgsl.expected.ir.glsl
index 1c00ea3..22331ae 100644
--- a/test/tint/bug/chromium/1433499.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1433499.wgsl.expected.ir.glsl
@@ -1,11 +1,7 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void f(inout float p) {
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/bug/chromium/1434271.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1434271.wgsl.expected.ir.glsl
index 2f6e16c..e3d0c75 100644
--- a/test/tint/bug/chromium/1434271.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1434271.wgsl.expected.ir.glsl
@@ -158,12 +158,14 @@
uint src_offset = ((coord[0u] - 2u) + ((coord[1u] >> (2u & 31u)) * v.tint_symbol.width));
float a = buf_in.weights[(src_offset << (0u & 31u))];
float b = buf_in.weights[(src_offset + 1u)];
- float c = buf_in.weights[((src_offset + 1u) + v.tint_symbol.width)];
- float d = buf_in.weights[((src_offset + 1u) + v.tint_symbol.width)];
+ uint v_1 = ((src_offset + 1u) + v.tint_symbol.width);
+ float c = buf_in.weights[v_1];
+ uint v_2 = ((src_offset + 1u) + v.tint_symbol.width);
+ float d = buf_in.weights[v_2];
float sum = dot(vec4(a, b, c, d), vec4(1.0f));
buf_out.weights[dst_offset] = tint_float_modulo(sum, 4.0f);
- vec4 v_1 = vec4(a, (a * b), ((a / b) + c), sum);
- vec4 probabilities = (v_1 + max(sum, 0.0f));
+ vec4 v_3 = vec4(a, (a * b), ((a / b) + c), sum);
+ vec4 probabilities = (v_3 + max(sum, 0.0f));
imageStore(tex_out, ivec2(coord.xy), probabilities);
}
}
diff --git a/test/tint/bug/chromium/344265982.wgsl.expected.ir.glsl b/test/tint/bug/chromium/344265982.wgsl.expected.ir.glsl
index ea7d6f4..96aeb24 100644
--- a/test/tint/bug/chromium/344265982.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/344265982.wgsl.expected.ir.glsl
@@ -14,8 +14,9 @@
} else {
break;
}
+ int v_1 = i;
bool tint_continue = false;
- switch(v.tint_symbol_2[i]) {
+ switch(v.tint_symbol_2[v_1]) {
case 1:
{
tint_continue = true;
@@ -23,7 +24,8 @@
}
default:
{
- v.tint_symbol_2[i] = 2;
+ int v_2 = i;
+ v.tint_symbol_2[v_2] = 2;
break;
}
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.glsl
index a4459fd..fed460e 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.glsl
@@ -24,5 +24,6 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
- v_1.tint_symbol_3.tint_symbol = s.data[v.tint_symbol_1.dynamic_idx];
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ v_1.tint_symbol_3.tint_symbol = s.data[v_2];
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.glsl
index e2eb79e..9fcf203 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.glsl
@@ -24,5 +24,6 @@
S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- v_1.tint_symbol_3.tint_symbol = s.data[v.tint_symbol_1.dynamic_idx];
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ v_1.tint_symbol_3.tint_symbol = s.data[v_2];
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.glsl
index 8e136c4..d1b88dc 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.glsl
@@ -27,5 +27,6 @@
} v_2;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- v_1.tint_symbol_3.tint_symbol = v_2.tint_symbol_5.data[v.tint_symbol_1.dynamic_idx];
+ int v_3 = v.tint_symbol_1.dynamic_idx;
+ v_1.tint_symbol_3.tint_symbol = v_2.tint_symbol_5.data[v_3];
}
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 c18a5f2..b8dcafa 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
@@ -20,5 +20,6 @@
} v_1;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- v_1.tint_symbol_3.tint_symbol = v.tint_symbol_1.data[v.tint_symbol_1.dynamic_idx].x;
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ v_1.tint_symbol_3.tint_symbol = v.tint_symbol_1.data[v_2].x;
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.glsl
index 81ea061..3e0ba17 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.glsl
@@ -39,7 +39,8 @@
}
}
barrier();
- v_1.tint_symbol_3.tint_symbol = s.data[v.tint_symbol_1.dynamic_idx];
+ int v_4 = v.tint_symbol_1.dynamic_idx;
+ v_1.tint_symbol_3.tint_symbol = s.data[v_4];
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.glsl
index 297f08f..d3fdd0c 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.glsl
@@ -24,6 +24,7 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
- s.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ s.data[v_2] = 1;
v_1.tint_symbol_3.tint_symbol = s.data[3];
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.glsl
index a96b7b8..d2ce9bc 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.glsl
@@ -22,7 +22,8 @@
Result tint_symbol_3;
} v_1;
void x(inout S p) {
- p.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ p.data[v_2] = 1;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.glsl
index 0dc224b..a0e97aa 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.glsl
@@ -24,6 +24,7 @@
S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- s.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ s.data[v_2] = 1;
v_1.tint_symbol_3.tint_symbol = s.data[3];
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.glsl
index 07f68fd..30ce345 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.glsl
@@ -23,7 +23,8 @@
} v_1;
S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
void x(inout S p) {
- p.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_2 = v.tint_symbol_1.dynamic_idx;
+ p.data[v_2] = 1;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.glsl
index 4fb6837..48d0f32 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.glsl
@@ -27,6 +27,7 @@
} v_2;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- v_2.tint_symbol_5.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_3 = v.tint_symbol_1.dynamic_idx;
+ v_2.tint_symbol_5.data[v_3] = 1;
v_1.tint_symbol_3.tint_symbol = v_2.tint_symbol_5.data[3];
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.glsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.glsl
index 5fbb5bd..a77da0b 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.glsl
@@ -39,7 +39,8 @@
}
}
barrier();
- s.data[v.tint_symbol_1.dynamic_idx] = 1;
+ int v_4 = v.tint_symbol_1.dynamic_idx;
+ s.data[v_4] = 1;
v_1.tint_symbol_3.tint_symbol = s.data[3];
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.glsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.glsl
index 9725201..af91ca8 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.glsl
@@ -23,5 +23,7 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
Particle particle = particles.p[0];
- particle.position[v.tint_symbol_1.i] = particle.position[v.tint_symbol_1.i];
+ uint v_1 = v.tint_symbol_1.i;
+ uint v_2 = v.tint_symbol_1.i;
+ particle.position[v_1] = particle.position[v_2];
}
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 7a92a22..3bc8536 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
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i][0] = 1.0f;
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1][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 93b0645..75325c9 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
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i][v.tint_symbol_1.j] = 1.0f;
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1][v.tint_symbol_1.j] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.glsl
index 6677b90..13f8ed6 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.glsl
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i] = vec4(1.0f);
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1] = vec4(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 2ca13df..6d53917 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
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i][0] = 1.0f;
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1][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 66764c8..c16d4de 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
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i][v.tint_symbol_1.j] = 1.0f;
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1][v.tint_symbol_1.j] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.glsl
index 8f24397..c2f3787 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.glsl
@@ -13,5 +13,6 @@
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[v.tint_symbol_1.i] = vec4(1.0f);
+ uint v_1 = v.tint_symbol_1.i;
+ m1[v_1] = vec4(1.0f);
}
diff --git a/test/tint/bug/tint/1113.wgsl.expected.ir.glsl b/test/tint/bug/tint/1113.wgsl.expected.ir.glsl
index 7cb94f4..5569d3a 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.ir.glsl
@@ -88,16 +88,20 @@
return;
}
doIgnore();
- uint i0 = indices.values[((3u * triangleIndex) + 0u)];
- uint i1 = indices.values[((3u * triangleIndex) + 1u)];
- uint i2 = indices.values[((3u * triangleIndex) + 2u)];
+ uint v_5 = ((3u * triangleIndex) + 0u);
+ uint i0 = indices.values[v_5];
+ uint v_6 = ((3u * triangleIndex) + 1u);
+ uint i1 = indices.values[v_6];
+ uint v_7 = ((3u * triangleIndex) + 2u);
+ uint i2 = indices.values[v_7];
vec3 p0 = loadPosition(i0);
vec3 p1 = loadPosition(i1);
vec3 p2 = loadPosition(i2);
vec3 center = (((p0 + p1) + p2) / 3.0f);
vec3 voxelPos = toVoxelPos(center);
uint voxelIndex = toIndex1D(v.tint_symbol.gridSize, voxelPos);
- uint acefg = atomicAdd(counters.values[voxelIndex], 1u);
+ uint v_8 = voxelIndex;
+ uint acefg = atomicAdd(counters.values[v_8], 1u);
if ((triangleIndex == 0u)) {
v_1.tint_symbol_2.value0 = v.tint_symbol.gridSize;
v_1.tint_symbol_2.value_f32_0 = center.x;
@@ -175,12 +179,14 @@
if ((voxelIndex >= maxVoxels)) {
return;
}
- uint numTriangles = atomicOr(counters.values[voxelIndex], 0u);
+ uint v_2 = voxelIndex;
+ uint numTriangles = atomicOr(counters.values[v_2], 0u);
int offset = -1;
if ((numTriangles > 0u)) {
offset = int(atomicAdd(v_1.tint_symbol_2.offsetCounter, numTriangles));
}
- atomicExchange(LUT.values[voxelIndex], offset);
+ uint v_3 = voxelIndex;
+ atomicExchange(LUT.values[v_3], offset);
}
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
void main() {
@@ -276,16 +282,20 @@
if ((triangleIndex >= v.tint_symbol.numTriangles)) {
return;
}
- uint i0 = indices.values[((3u * triangleIndex) + 0u)];
- uint i1 = indices.values[((3u * triangleIndex) + 1u)];
- uint i2 = indices.values[((3u * triangleIndex) + 2u)];
+ uint v_5 = ((3u * triangleIndex) + 0u);
+ uint i0 = indices.values[v_5];
+ uint v_6 = ((3u * triangleIndex) + 1u);
+ uint i1 = indices.values[v_6];
+ uint v_7 = ((3u * triangleIndex) + 2u);
+ uint i2 = indices.values[v_7];
vec3 p0 = loadPosition(i0);
vec3 p1 = loadPosition(i1);
vec3 p2 = loadPosition(i2);
vec3 center = (((p0 + p1) + p2) / 3.0f);
vec3 voxelPos = toVoxelPos(center);
uint voxelIndex = toIndex1D(v.tint_symbol.gridSize, voxelPos);
- int triangleOffset = atomicAdd(LUT.values[voxelIndex], 1);
+ uint v_8 = voxelIndex;
+ int triangleOffset = atomicAdd(LUT.values[v_8], 1);
}
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/tint/1121.wgsl.expected.ir.glsl b/test/tint/bug/tint/1121.wgsl.expected.ir.glsl
index 1c00ea3..7dc71b5 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.glsl
@@ -1,11 +1,192 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct LightData {
+ vec4 position;
+ vec3 color;
+ float radius;
+};
+
+struct TileLightIdData {
+ uint count;
+ uint lightId[64];
+};
+
+struct Tiles {
+ TileLightIdData data[4];
+};
+
+struct Config {
+ uint numLights;
+ uint numTiles;
+ uint tileCountX;
+ uint tileCountY;
+ uint numTileLightSlot;
+ uint tileSize;
+};
+
+struct Uniforms {
+ vec4 tint_symbol;
+ vec4 tint_symbol_1;
+ mat4 viewMatrix;
+ mat4 projectionMatrix;
+ vec4 fullScreenSize;
+};
+
+layout(binding = 0, std430)
+buffer LightsBuffer_1_ssbo {
+ LightData lights[];
+} lightsBuffer;
+layout(binding = 0, std430)
+buffer tint_symbol_4_1_ssbo {
+ Tiles tint_symbol_3;
+} v;
+layout(binding = 0, std140)
+uniform tint_symbol_6_1_ubo {
+ Config tint_symbol_5;
+} v_1;
+layout(binding = 0, std140)
+uniform tint_symbol_8_1_ubo {
+ Uniforms tint_symbol_7;
+} v_2;
+void tint_symbol_2_inner(uvec3 GlobalInvocationID) {
+ uint index = GlobalInvocationID[0u];
+ if ((index >= v_1.tint_symbol_5.numLights)) {
+ return;
+ }
+ uint v_3 = index;
+ uint v_4 = index;
+ float v_5 = (lightsBuffer.lights[v_4].position.y - 0.10000000149011611938f);
+ float v_6 = float(index);
+ lightsBuffer.lights[v_3].position[1u] = (v_5 + (0.00100000004749745131f * (v_6 - (64.0f * floor((float(index) / 64.0f))))));
+ uint v_7 = index;
+ if ((lightsBuffer.lights[v_7].position.y < v_2.tint_symbol_7.tint_symbol.y)) {
+ uint v_8 = index;
+ lightsBuffer.lights[v_8].position[1u] = v_2.tint_symbol_7.tint_symbol_1.y;
+ }
+ mat4 M = v_2.tint_symbol_7.projectionMatrix;
+ float viewNear = (-(M[3].z) / (-1.0f + M[2].z));
+ float viewFar = (-(M[3].z) / (1.0f + M[2].z));
+ uint v_9 = index;
+ vec4 lightPos = lightsBuffer.lights[v_9].position;
+ lightPos = (v_2.tint_symbol_7.viewMatrix * lightPos);
+ lightPos = (lightPos / lightPos.w);
+ uint v_10 = index;
+ float lightRadius = lightsBuffer.lights[v_10].radius;
+ vec4 v_11 = lightPos;
+ vec4 boxMin = (v_11 - vec4(vec3(lightRadius), 0.0f));
+ vec4 v_12 = lightPos;
+ vec4 boxMax = (v_12 + vec4(vec3(lightRadius), 0.0f));
+ vec4 frustumPlanes[6] = vec4[6](vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f));
+ frustumPlanes[4] = vec4(0.0f, 0.0f, -1.0f, viewNear);
+ frustumPlanes[5] = vec4(0.0f, 0.0f, 1.0f, -(viewFar));
+ int TILE_SIZE = 16;
+ int TILE_COUNT_X = 2;
+ int TILE_COUNT_Y = 2;
+ {
+ int y = 0;
+ while(true) {
+ if ((y < TILE_COUNT_Y)) {
+ } else {
+ break;
+ }
+ {
+ int x = 0;
+ while(true) {
+ if ((x < TILE_COUNT_X)) {
+ } else {
+ break;
+ }
+ ivec2 tilePixel0Idx = ivec2((x * TILE_SIZE), (y * TILE_SIZE));
+ vec2 v_13 = (2.0f * vec2(tilePixel0Idx));
+ vec2 floorCoord = ((v_13 / v_2.tint_symbol_7.fullScreenSize.xy) - vec2(1.0f));
+ ivec2 v_14 = tilePixel0Idx;
+ vec2 v_15 = (2.0f * vec2((v_14 + ivec2(TILE_SIZE))));
+ vec2 ceilCoord = ((v_15 / v_2.tint_symbol_7.fullScreenSize.xy) - vec2(1.0f));
+ vec2 viewFloorCoord = vec2((((-(viewNear) * floorCoord.x) - (M[2].x * viewNear)) / M[0].x), (((-(viewNear) * floorCoord.y) - (M[2].y * viewNear)) / M[1].y));
+ vec2 viewCeilCoord = vec2((((-(viewNear) * ceilCoord.x) - (M[2].x * viewNear)) / M[0].x), (((-(viewNear) * ceilCoord.y) - (M[2].y * viewNear)) / M[1].y));
+ frustumPlanes[0] = vec4(1.0f, 0.0f, (-(viewFloorCoord.x) / viewNear), 0.0f);
+ frustumPlanes[1] = vec4(-1.0f, 0.0f, (viewCeilCoord.x / viewNear), 0.0f);
+ frustumPlanes[2] = vec4(0.0f, 1.0f, (-(viewFloorCoord.y) / viewNear), 0.0f);
+ frustumPlanes[3] = vec4(0.0f, -1.0f, (viewCeilCoord.y / viewNear), 0.0f);
+ float dp = 0.0f;
+ {
+ uint i = 0u;
+ while(true) {
+ if ((i < 6u)) {
+ } else {
+ break;
+ }
+ vec4 p = vec4(0.0f);
+ uint v_16 = i;
+ if ((frustumPlanes[v_16].x > 0.0f)) {
+ p[0u] = boxMax.x;
+ } else {
+ p[0u] = boxMin.x;
+ }
+ uint v_17 = i;
+ if ((frustumPlanes[v_17].y > 0.0f)) {
+ p[1u] = boxMax.y;
+ } else {
+ p[1u] = boxMin.y;
+ }
+ uint v_18 = i;
+ if ((frustumPlanes[v_18].z > 0.0f)) {
+ p[2u] = boxMax.z;
+ } else {
+ p[2u] = boxMin.z;
+ }
+ p[3u] = 1.0f;
+ float v_19 = dp;
+ vec4 v_20 = p;
+ uint v_21 = i;
+ dp = (v_19 + min(0.0f, dot(v_20, frustumPlanes[v_21])));
+ {
+ i = (i + 1u);
+ }
+ continue;
+ }
+ }
+ if ((dp >= 0.0f)) {
+ uint tileId = uint((x + (y * TILE_COUNT_X)));
+ bool v_22 = false;
+ if ((tileId < 0u)) {
+ v_22 = true;
+ } else {
+ v_22 = (tileId >= v_1.tint_symbol_5.numTiles);
+ }
+ if (v_22) {
+ {
+ x = (x + 1);
+ }
+ continue;
+ }
+ uint v_23 = tileId;
+ uint offset = atomicAdd(v.tint_symbol_3.data[v_23].count, 1u);
+ if ((offset >= v_1.tint_symbol_5.numTileLightSlot)) {
+ {
+ x = (x + 1);
+ }
+ continue;
+ }
+ uint v_24 = tileId;
+ uint v_25 = offset;
+ v.tint_symbol_3.data[v_24].lightId[v_25] = GlobalInvocationID[0u];
+ }
+ {
+ x = (x + 1);
+ }
+ continue;
+ }
+ }
+ {
+ y = (y + 1);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_symbol_2_inner(gl_GlobalInvocationID);
+}
diff --git a/test/tint/bug/tint/1321.wgsl.expected.ir.glsl b/test/tint/bug/tint/1321.wgsl.expected.ir.glsl
index 1c00ea3..5f3ce69 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1321.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+int foo() {
+ return 1;
+}
+void main() {
+ float arr[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+ {
+ int v = foo();
+ while(true) {
+ float x = arr[v];
+ break;
+ }
+ }
+}
diff --git a/test/tint/bug/tint/1725.wgsl.expected.ir.glsl b/test/tint/bug/tint/1725.wgsl.expected.ir.glsl
index dfabfdf..75807cd 100644
--- a/test/tint/bug/tint/1725.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1725.wgsl.expected.ir.glsl
@@ -8,7 +8,8 @@
int tint_symbol_3 = 0;
int tint_symbol_4 = 0;
int tint_symbol_5 = 0;
- uint tint_symbol_6 = v.tint_symbol_7[min(tint_symbol_2, (uint(v.tint_symbol_7.length()) - 1u))];
+ uint v_1 = min(tint_symbol_2, (uint(v.tint_symbol_7.length()) - 1u));
+ uint tint_symbol_6 = v.tint_symbol_7[v_1];
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/tint/1764.wgsl.expected.ir.glsl b/test/tint/bug/tint/1764.wgsl.expected.ir.glsl
index 1c00ea3..b36f465 100644
--- a/test/tint/bug/tint/1764.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1764.wgsl.expected.ir.glsl
@@ -1,11 +1,26 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+shared int W[246];
+void tint_symbol_inner(uint tint_local_index) {
+ {
+ uint v = 0u;
+ v = tint_local_index;
+ while(true) {
+ uint v_1 = v;
+ if ((v_1 >= 246u)) {
+ break;
+ }
+ W[v_1] = 0;
+ {
+ v = (v_1 + 1u);
+ }
+ continue;
+ }
+ }
+ barrier();
+ W[0] = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/bug/tint/1875.wgsl.expected.ir.glsl b/test/tint/bug/tint/1875.wgsl.expected.ir.glsl
index 750373f..815363e 100644
--- a/test/tint/bug/tint/1875.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1875.wgsl.expected.ir.glsl
@@ -6,7 +6,8 @@
uint data[];
} outputs;
void push_output(uint value) {
- outputs.data[count] = value;
+ uint v = count;
+ outputs.data[v] = value;
count = (count + 1u);
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/tint/2059.wgsl.expected.ir.glsl b/test/tint/bug/tint/2059.wgsl.expected.ir.glsl
index 1c00ea3..ef0f0529 100644
--- a/test/tint/bug/tint/2059.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/2059.wgsl.expected.ir.glsl
@@ -1,11 +1,156 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ mat3 m;
+};
+
+struct S2 {
+ mat3 m[1];
+};
+
+struct S3 {
+ S s;
+};
+
+struct S4 {
+ S s[1];
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ mat3 tint_symbol_1;
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_4_1_ssbo {
+ S tint_symbol_3;
+} v_1;
+layout(binding = 2, std430)
+buffer tint_symbol_6_1_ssbo {
+ S2 tint_symbol_5;
+} v_2;
+layout(binding = 3, std430)
+buffer tint_symbol_8_1_ssbo {
+ S3 tint_symbol_7;
+} v_3;
+layout(binding = 4, std430)
+buffer tint_symbol_10_1_ssbo {
+ S4 tint_symbol_9;
+} v_4;
+layout(binding = 5, std430)
+buffer tint_symbol_12_1_ssbo {
+ mat3 tint_symbol_11[1];
+} v_5;
+layout(binding = 6, std430)
+buffer tint_symbol_14_1_ssbo {
+ S tint_symbol_13[1];
+} v_6;
+layout(binding = 7, std430)
+buffer tint_symbol_16_1_ssbo {
+ S2 tint_symbol_15[1];
+} v_7;
+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];
+}
+void tint_store_and_preserve_padding_3(inout mat3 target[1], mat3 value_param[1]) {
+ {
+ uint v_8 = 0u;
+ v_8 = 0u;
+ while(true) {
+ uint v_9 = v_8;
+ if ((v_9 >= 1u)) {
+ break;
+ }
+ tint_store_and_preserve_padding(target[v_9], value_param[v_9]);
+ {
+ v_8 = (v_9 + 1u);
+ }
+ continue;
+ }
+ }
+}
+void tint_store_and_preserve_padding_2(inout S2 target, S2 value_param) {
+ tint_store_and_preserve_padding_3(target.m, value_param.m);
+}
+void tint_store_and_preserve_padding_7(inout S2 target[1], S2 value_param[1]) {
+ {
+ uint v_10 = 0u;
+ v_10 = 0u;
+ while(true) {
+ uint v_11 = v_10;
+ if ((v_11 >= 1u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_2(target[v_11], value_param[v_11]);
+ {
+ v_10 = (v_11 + 1u);
+ }
+ continue;
+ }
+ }
+}
+void tint_store_and_preserve_padding_1(inout S target, S value_param) {
+ tint_store_and_preserve_padding(target.m, value_param.m);
+}
+void tint_store_and_preserve_padding_6(inout S target[1], S value_param[1]) {
+ {
+ uint v_12 = 0u;
+ v_12 = 0u;
+ while(true) {
+ uint v_13 = v_12;
+ if ((v_13 >= 1u)) {
+ break;
+ }
+ tint_store_and_preserve_padding_1(target[v_13], value_param[v_13]);
+ {
+ v_12 = (v_13 + 1u);
+ }
+ continue;
+ }
+ }
+}
+void tint_store_and_preserve_padding_5(inout S4 target, S4 value_param) {
+ tint_store_and_preserve_padding_6(target.s, value_param.s);
+}
+void tint_store_and_preserve_padding_4(inout S3 target, S3 value_param) {
+ tint_store_and_preserve_padding_1(target.s, value_param.s);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3 m = mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f));
+ {
+ uint c = 0u;
+ while(true) {
+ if ((c < 3u)) {
+ } else {
+ break;
+ }
+ uint v_14 = c;
+ float v_15 = float(((c * 3u) + 1u));
+ float v_16 = float(((c * 3u) + 2u));
+ m[v_14] = vec3(v_15, v_16, float(((c * 3u) + 3u)));
+ {
+ c = (c + 1u);
+ }
+ continue;
+ }
+ }
+ mat3 a = m;
+ tint_store_and_preserve_padding(v.tint_symbol_1, a);
+ S a_1 = S(m);
+ tint_store_and_preserve_padding_1(v_1.tint_symbol_3, a_1);
+ S2 a_2 = S2(mat3[1](m));
+ tint_store_and_preserve_padding_2(v_2.tint_symbol_5, a_2);
+ S3 a_3 = S3(S(m));
+ tint_store_and_preserve_padding_4(v_3.tint_symbol_7, a_3);
+ S4 a_4 = S4(S[1](S(m)));
+ tint_store_and_preserve_padding_5(v_4.tint_symbol_9, a_4);
+ mat3 a_5[1] = mat3[1](m);
+ tint_store_and_preserve_padding_3(v_5.tint_symbol_11, a_5);
+ S a_6[1] = S[1](S(m));
+ tint_store_and_preserve_padding_6(v_6.tint_symbol_13, a_6);
+ S2 a_7[1] = S2[1](S2(mat3[1](m)));
+ tint_store_and_preserve_padding_7(v_7.tint_symbol_15, a_7);
+}
diff --git a/test/tint/bug/tint/221.wgsl.expected.ir.glsl b/test/tint/bug/tint/221.wgsl.expected.ir.glsl
index 1c00ea3..4fc9334 100644
--- a/test/tint/bug/tint/221.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/221.wgsl.expected.ir.glsl
@@ -1,11 +1,41 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Buf {
+ uint count;
+ uint data[50];
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ Buf tint_symbol_1;
+} v;
+uint tint_mod_u32(uint lhs, uint rhs) {
+ uint v_1 = mix(rhs, 1u, (rhs == 0u));
+ return (lhs - ((lhs / v_1) * v_1));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint i = 0u;
+ {
+ while(true) {
+ if ((i >= v.tint_symbol_1.count)) {
+ break;
+ }
+ uint v_2 = i;
+ if ((tint_mod_u32(i, 2u) == 0u)) {
+ {
+ v.tint_symbol_1.data[v_2] = (v.tint_symbol_1.data[v_2] * 2u);
+ i = (i + 1u);
+ }
+ continue;
+ }
+ v.tint_symbol_1.data[v_2] = 0u;
+ {
+ v.tint_symbol_1.data[v_2] = (v.tint_symbol_1.data[v_2] * 2u);
+ i = (i + 1u);
+ }
+ continue;
+ }
+ }
+}
diff --git a/test/tint/bug/tint/492.wgsl.expected.ir.glsl b/test/tint/bug/tint/492.wgsl.expected.ir.glsl
index 1c00ea3..3cd5a6a 100644
--- a/test/tint/bug/tint/492.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/492.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int a;
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ S tint_symbol_1;
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ v.tint_symbol_1.a = 12;
+}
diff --git a/test/tint/bug/tint/534.wgsl.expected.ir.glsl b/test/tint/bug/tint/534.wgsl.expected.ir.glsl
index cca3e96..0d28052 100644
--- a/test/tint/bug/tint/534.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/534.wgsl.expected.ir.glsl
@@ -64,9 +64,11 @@
}
uint outputIndex = ((GlobalInvocationID[1u] * uint(size.x)) + GlobalInvocationID[0u]);
if (success) {
- tint_symbol.result[outputIndex] = 1u;
+ uint v_7 = outputIndex;
+ tint_symbol.result[v_7] = 1u;
} else {
- tint_symbol.result[outputIndex] = 0u;
+ uint v_8 = outputIndex;
+ tint_symbol.result[v_8] = 0u;
}
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/tint/757.wgsl.expected.ir.glsl b/test/tint/bug/tint/757.wgsl.expected.ir.glsl
index 4fe1bcb..6866023 100644
--- a/test/tint/bug/tint/757.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/757.wgsl.expected.ir.glsl
@@ -18,7 +18,8 @@
} else {
break;
}
- result.values[(flatIndex + i)] = texel.x;
+ uint v_2 = (flatIndex + i);
+ result.values[v_2] = texel.x;
{
i = (i + 1u);
}
diff --git a/test/tint/bug/tint/914.wgsl.expected.ir.glsl b/test/tint/bug/tint/914.wgsl.expected.ir.glsl
index 1c00ea3..0c96af1 100644
--- a/test/tint/bug/tint/914.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.glsl
@@ -1,11 +1,286 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Uniforms {
+ uint dimAOuter;
+ uint dimInner;
+ uint dimBOuter;
+};
+
+layout(binding = 0, std430)
+buffer Matrix_1_ssbo {
+ float numbers[];
+} firstMatrix;
+layout(binding = 1, std430)
+buffer Matrix_2_ssbo {
+ float numbers[];
+} secondMatrix;
+layout(binding = 2, std430)
+buffer Matrix_3_ssbo {
+ float numbers[];
+} resultMatrix;
+layout(binding = 3, std140)
+uniform tint_symbol_2_1_ubo {
+ Uniforms tint_symbol_1;
+} v;
+shared float mm_Asub[64][64];
+shared float mm_Bsub[64][64];
+float mm_readA(uint row, uint col) {
+ bool v_1 = false;
+ if ((row < v.tint_symbol_1.dimAOuter)) {
+ v_1 = (col < v.tint_symbol_1.dimInner);
+ } else {
+ v_1 = false;
+ }
+ if (v_1) {
+ uint v_2 = ((row * v.tint_symbol_1.dimInner) + col);
+ float result = firstMatrix.numbers[v_2];
+ return result;
+ }
+ return 0.0f;
+}
+float mm_readB(uint row, uint col) {
+ bool v_3 = false;
+ if ((row < v.tint_symbol_1.dimInner)) {
+ v_3 = (col < v.tint_symbol_1.dimBOuter);
+ } else {
+ v_3 = false;
+ }
+ if (v_3) {
+ uint v_4 = ((row * v.tint_symbol_1.dimBOuter) + col);
+ float result = secondMatrix.numbers[v_4];
+ return result;
+ }
+ return 0.0f;
+}
+void mm_write(uint row, uint col, float value) {
+ bool v_5 = false;
+ if ((row < v.tint_symbol_1.dimAOuter)) {
+ v_5 = (col < v.tint_symbol_1.dimBOuter);
+ } else {
+ v_5 = false;
+ }
+ if (v_5) {
+ uint index = (col + (row * v.tint_symbol_1.dimBOuter));
+ resultMatrix.numbers[index] = value;
+ }
+}
+uint tint_div_u32(uint lhs, uint rhs) {
+ return (lhs / mix(rhs, 1u, (rhs == 0u)));
+}
+void tint_symbol_inner(uvec3 local_id, uvec3 global_id, uint tint_local_index) {
+ {
+ uint v_6 = 0u;
+ v_6 = tint_local_index;
+ while(true) {
+ uint v_7 = v_6;
+ if ((v_7 >= 4096u)) {
+ break;
+ }
+ mm_Asub[(v_7 / 64u)][(v_7 % 64u)] = 0.0f;
+ mm_Bsub[(v_7 / 64u)][(v_7 % 64u)] = 0.0f;
+ {
+ v_6 = (v_7 + 256u);
+ }
+ continue;
+ }
+ }
+ barrier();
+ uint tileRow = (local_id[1u] * 4u);
+ uint tileCol = (local_id[0u] * 4u);
+ uint globalRow = (global_id[1u] * 4u);
+ uint globalCol = (global_id[0u] * 4u);
+ uint numTiles = (tint_div_u32((v.tint_symbol_1.dimInner - 1u), 64u) + 1u);
+ float acc[16] = float[16](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+ float ACached = 0.0f;
+ float BCached[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+ {
+ uint index = 0u;
+ while(true) {
+ if ((index < 16u)) {
+ } else {
+ break;
+ }
+ uint v_8 = index;
+ acc[v_8] = 0.0f;
+ {
+ index = (index + 1u);
+ }
+ continue;
+ }
+ }
+ uint ColPerThreadA = 4u;
+ uint tileColA = (local_id[0u] * ColPerThreadA);
+ uint RowPerThreadB = 4u;
+ uint tileRowB = (local_id[1u] * RowPerThreadB);
+ {
+ uint t = 0u;
+ while(true) {
+ if ((t < numTiles)) {
+ } else {
+ break;
+ }
+ {
+ uint innerRow = 0u;
+ while(true) {
+ if ((innerRow < 4u)) {
+ } else {
+ break;
+ }
+ {
+ uint innerCol = 0u;
+ while(true) {
+ if ((innerCol < ColPerThreadA)) {
+ } else {
+ break;
+ }
+ uint inputRow = (tileRow + innerRow);
+ uint inputCol = (tileColA + innerCol);
+ mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * 64u) + inputCol));
+ {
+ innerCol = (innerCol + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ innerRow = (innerRow + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ uint innerRow = 0u;
+ while(true) {
+ if ((innerRow < RowPerThreadB)) {
+ } else {
+ break;
+ }
+ {
+ uint innerCol = 0u;
+ while(true) {
+ if ((innerCol < 4u)) {
+ } else {
+ break;
+ }
+ uint inputRow = (tileRowB + innerRow);
+ uint inputCol = (tileCol + innerCol);
+ uint v_9 = innerCol;
+ mm_Bsub[v_9][inputCol] = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
+ {
+ innerCol = (innerCol + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ innerRow = (innerRow + 1u);
+ }
+ continue;
+ }
+ }
+ barrier();
+ {
+ uint k = 0u;
+ while(true) {
+ if ((k < 64u)) {
+ } else {
+ break;
+ }
+ {
+ uint inner = 0u;
+ while(true) {
+ if ((inner < 4u)) {
+ } else {
+ break;
+ }
+ uint v_10 = inner;
+ uint v_11 = k;
+ uint v_12 = (tileCol + inner);
+ BCached[v_10] = mm_Bsub[v_11][v_12];
+ {
+ inner = (inner + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ uint innerRow = 0u;
+ while(true) {
+ if ((innerRow < 4u)) {
+ } else {
+ break;
+ }
+ uint v_13 = (tileRow + innerRow);
+ uint v_14 = k;
+ ACached = mm_Asub[v_13][v_14];
+ {
+ uint innerCol = 0u;
+ while(true) {
+ if ((innerCol < 4u)) {
+ } else {
+ break;
+ }
+ uint index = ((innerRow * 4u) + innerCol);
+ float v_15 = acc[index];
+ float v_16 = ACached;
+ uint v_17 = innerCol;
+ acc[index] = (v_15 + (v_16 * BCached[v_17]));
+ {
+ innerCol = (innerCol + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ innerRow = (innerRow + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ k = (k + 1u);
+ }
+ continue;
+ }
+ }
+ barrier();
+ {
+ t = (t + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ uint innerRow = 0u;
+ while(true) {
+ if ((innerRow < 4u)) {
+ } else {
+ break;
+ }
+ {
+ uint innerCol = 0u;
+ while(true) {
+ if ((innerCol < 4u)) {
+ } else {
+ break;
+ }
+ uint index = ((innerRow * 4u) + innerCol);
+ mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
+ {
+ innerCol = (innerCol + 1u);
+ }
+ continue;
+ }
+ }
+ {
+ innerRow = (innerRow + 1u);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 16, local_size_y = 16, local_size_z = 1) in;
+void main() {
+ tint_symbol_inner(gl_LocalInvocationID, gl_GlobalInvocationID, gl_LocalInvocationIndex);
+}
diff --git a/test/tint/bug/tint/922.wgsl.expected.ir.glsl b/test/tint/bug/tint/922.wgsl.expected.ir.glsl
index e4666db..1caa683 100644
--- a/test/tint/bug/tint/922.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/922.wgsl.expected.ir.glsl
@@ -132,7 +132,8 @@
Mat4x3_ t_PosMtx = Mat4x3_(vec4(0.0f), vec4(0.0f), vec4(0.0f));
vec2 t_TexSpaceCoord = vec2(0.0f);
float x_e15 = a_PosMtxIdx1;
- Mat4x3_ x_e18 = v_3.tint_symbol_6.u_PosMtx[tint_f32_to_i32(x_e15)];
+ int v_8 = tint_f32_to_i32(x_e15);
+ Mat4x3_ x_e18 = v_3.tint_symbol_6.u_PosMtx[v_8];
t_PosMtx = x_e18;
Mat4x3_ x_e23 = t_PosMtx;
Mat4x4_ x_e24 = x_Mat4x4_1(x_e23);
@@ -184,10 +185,10 @@
return VertexOutput(x_e11, x_e13, x_e15);
}
void main() {
- VertexOutput v_8 = tint_symbol_1_inner(tint_symbol_1_loc0_Input, tint_symbol_1_loc1_Input, tint_symbol_1_loc2_Input, tint_symbol_1_loc3_Input, tint_symbol_1_loc4_Input);
- tint_symbol_1_loc0_Output = v_8.v_Color;
- tint_symbol_1_loc1_Output = v_8.v_TexCoord;
- gl_Position = v_8.member;
+ VertexOutput v_9 = tint_symbol_1_inner(tint_symbol_1_loc0_Input, tint_symbol_1_loc1_Input, tint_symbol_1_loc2_Input, tint_symbol_1_loc3_Input, tint_symbol_1_loc4_Input);
+ tint_symbol_1_loc0_Output = v_9.v_Color;
+ tint_symbol_1_loc1_Output = v_9.v_TexCoord;
+ gl_Position = v_9.member;
gl_Position[1u] = -(gl_Position.y);
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
diff --git a/test/tint/bug/tint/990.wgsl.expected.ir.glsl b/test/tint/bug/tint/990.wgsl.expected.ir.glsl
index 1c00ea3..1491092 100644
--- a/test/tint/bug/tint/990.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/990.wgsl.expected.ir.glsl
@@ -1,11 +1,19 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void f() {
+ int i = 0;
+ {
+ while(true) {
+ if (false) {
+ } else {
+ break;
+ }
+ {
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/bug/tint/993.wgsl.expected.ir.glsl b/test/tint/bug/tint/993.wgsl.expected.ir.glsl
index 3985021..3571a92 100644
--- a/test/tint/bug/tint/993.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/993.wgsl.expected.ir.glsl
@@ -26,7 +26,8 @@
TestData tint_symbol_5;
} v_2;
int runTest() {
- return atomicOr(v_2.tint_symbol_5.data[(0u + uint(v.tint_symbol_1.zero))], 0);
+ uint v_3 = (0u + uint(v.tint_symbol_1.zero));
+ return atomicOr(v_2.tint_symbol_5.data[v_3], 0);
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/bug/tint/998.wgsl.expected.ir.glsl b/test/tint/bug/tint/998.wgsl.expected.ir.glsl
index 65b53d1..144339d 100644
--- a/test/tint/bug/tint/998.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/998.wgsl.expected.ir.glsl
@@ -16,5 +16,6 @@
S s = S(uint[3](0u, 0u, 0u));
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
- s.data[v.tint_symbol_1.zero] = 0u;
+ uint v_1 = v.tint_symbol_1.zero;
+ s.data[v_1] = 0u;
}
diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.glsl
index 1c00ea3..7d70253 100644
--- a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer S_1_ssbo {
+ int a[];
+} G;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(G.a.length());
+}
diff --git a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.glsl
index 1c00ea3..598d6eb 100644
--- a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ int tint_symbol_1[];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(v.tint_symbol_1.length());
+}
diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.glsl
index ffd961c..44c79bf 100644
--- a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.ir.glsl
@@ -1,11 +1,11 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1451 internal compiler error: TINT_UNREACHABLE unhandled core builtin: arrayLength
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer S_1_ssbo {
+ int a[];
+} G;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(G.a.length());
+ uint l2 = uint(G.a.length());
+}
diff --git a/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.glsl
index 1c00ea3..7d70253 100644
--- a/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/via_let.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer S_1_ssbo {
+ int a[];
+} G;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(G.a.length());
+}
diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.glsl
index 1c00ea3..7d70253 100644
--- a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer S_1_ssbo {
+ int a[];
+} G;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(G.a.length());
+}
diff --git a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.glsl
index 1c00ea3..598d6eb 100644
--- a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ int tint_symbol_1[];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(v.tint_symbol_1.length());
+}
diff --git a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.glsl b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.glsl
index 1c00ea3..598d6eb 100644
--- a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ int tint_symbol_1[];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ uint l1 = uint(v.tint_symbol_1.length());
+}
diff --git a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.glsl b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.glsl
index 7b39cdf..e73ff10 100644
--- a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.glsl
+++ b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.glsl
@@ -22,7 +22,8 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- atomicExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ atomicExchange(wg[v_1][v_2][v_3], 0u);
{
idx = (idx + 1u);
}
@@ -38,16 +39,16 @@
}
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_3 = 0u;
- v_3 = local_invocation_index_1_param;
+ uint v_4 = 0u;
+ v_4 = local_invocation_index_1_param;
while(true) {
- uint v_4 = v_3;
- if ((v_4 >= 6u)) {
+ uint v_5 = v_4;
+ if ((v_5 >= 6u)) {
break;
}
- atomicExchange(wg[(v_4 / 2u)][(v_4 % 2u)][0u], 0u);
+ atomicExchange(wg[(v_5 / 2u)][(v_5 % 2u)][0u], 0u);
{
- v_3 = (v_4 + 1u);
+ v_4 = (v_5 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.glsl b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.glsl
index 7b39cdf..e73ff10 100644
--- a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.glsl
+++ b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.glsl
@@ -22,7 +22,8 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- atomicExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ atomicExchange(wg[v_1][v_2][v_3], 0u);
{
idx = (idx + 1u);
}
@@ -38,16 +39,16 @@
}
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_3 = 0u;
- v_3 = local_invocation_index_1_param;
+ uint v_4 = 0u;
+ v_4 = local_invocation_index_1_param;
while(true) {
- uint v_4 = v_3;
- if ((v_4 >= 6u)) {
+ uint v_5 = v_4;
+ if ((v_5 >= 6u)) {
break;
}
- atomicExchange(wg[(v_4 / 2u)][(v_4 % 2u)][0u], 0u);
+ atomicExchange(wg[(v_5 / 2u)][(v_5 % 2u)][0u], 0u);
{
- v_3 = (v_4 + 1u);
+ v_4 = (v_5 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.glsl b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.glsl
index 1c00ea3..2705eb9 100644
--- a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.glsl
@@ -1,11 +1,23 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int x;
+ uint a;
+ uint y;
+};
+
+shared S wg;
+void compute_main_inner(uint tint_local_index) {
+ if ((tint_local_index == 0u)) {
+ wg.x = 0;
+ atomicExchange(wg.a, 0u);
+ wg.y = 0u;
+ }
+ barrier();
+ atomicExchange(wg.a, 1u);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.glsl b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.glsl
index 1c00ea3..6f4fd8d 100644
--- a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.glsl
@@ -1,11 +1,7 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ mat3 m = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
+ m[1] = vec3(5.0f);
+}
diff --git a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.glsl b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.glsl
index 1c00ea3..25381ce 100644
--- a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.glsl
@@ -1,11 +1,7 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int i = 123;
+ int u = (i + 1);
+}
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.glsl b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.glsl
index 1c00ea3..c1b85c7 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.glsl
@@ -1,11 +1,7 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+int i = 123;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int u = (i + 1);
+}
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.glsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.glsl
index 1c00ea3..1745110 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int a;
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+ S tint_symbol_1;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int u = (v_1.tint_symbol_1.a + 1);
+}
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.glsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.glsl
index 1c00ea3..be5a4ac 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int a;
+};
+
+layout(binding = 0, std140)
+uniform tint_symbol_2_1_ubo {
+ S tint_symbol_1;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int u = (v_1.tint_symbol_1.a + 1);
+}
diff --git a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.glsl b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.glsl
index 1c00ea3..0caf535 100644
--- a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+shared int i;
+void tint_symbol_inner(uint tint_local_index) {
+ if ((tint_local_index == 0u)) {
+ i = 0;
+ }
+ barrier();
+ i = 123;
+ int u = (i + 1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.glsl b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.glsl
index 1c00ea3..e7bf30c 100644
--- a/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int i = 123;
+ i = 123;
+ i = 123;
+}
diff --git a/test/tint/ptr_sugar/array.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/array.wgsl.expected.ir.glsl
index 1c00ea3..e675cbf 100644
--- a/test/tint/ptr_sugar/array.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/array.wgsl.expected.ir.glsl
@@ -1,11 +1,47 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref_const() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int b = a[0];
+ a[0] = 42;
+}
+void no_deref_const() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int b = a[0];
+ a[0] = 42;
+}
+void deref_let() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+void no_deref_let() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+void deref_var() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int i = 0;
+ int v = i;
+ int b = a[v];
+ a[0] = 42;
+}
+void no_deref_var() {
+ int a[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ int i = 0;
+ int v_1 = i;
+ int b = a[v_1];
+ a[0] = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref_const();
+ no_deref_const();
+ deref_let();
+ no_deref_let();
+ deref_var();
+ no_deref_var();
+}
diff --git a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.glsl
index 1c00ea3..08eb09c 100644
--- a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.glsl
@@ -1,11 +1,40 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct modf_result_f32 {
+ float fract;
+ float whole;
+};
+
+struct frexp_result_f32 {
+ float fract;
+ int exp;
+};
+
+void deref_modf() {
+ modf_result_f32 a = modf_result_f32(0.5f, 1.0f);
+ float tint_symbol = a.fract;
+ float whole = a.whole;
+}
+void no_deref_modf() {
+ modf_result_f32 a = modf_result_f32(0.5f, 1.0f);
+ float tint_symbol = a.fract;
+ float whole = a.whole;
+}
+void deref_frexp() {
+ frexp_result_f32 a = frexp_result_f32(0.75f, 1);
+ float tint_symbol = a.fract;
+ int tint_symbol_1 = a.exp;
+}
+void no_deref_frexp() {
+ frexp_result_f32 a = frexp_result_f32(0.75f, 1);
+ float tint_symbol = a.fract;
+ int tint_symbol_1 = a.exp;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref_modf();
+ no_deref_modf();
+ deref_frexp();
+ no_deref_frexp();
+}
diff --git a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.glsl
index 1c00ea3..d7ca299 100644
--- a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.glsl
@@ -1,11 +1,25 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref() {
+ ivec3 a = ivec3(0);
+ a[0] = (a.x + 42);
+}
+void no_deref() {
+ ivec3 a = ivec3(0);
+ a[0] = (a.x + 42);
+}
+void deref_inc() {
+ ivec3 a = ivec3(0);
+ a[0] = (a.x + 1);
+}
+void no_deref_inc() {
+ ivec3 a = ivec3(0);
+ a[0] = (a.x + 1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+ deref_inc();
+ no_deref_inc();
+}
diff --git a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.glsl
index 1c00ea3..fcb0a39 100644
--- a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.glsl
@@ -1,11 +1,15 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref() {
+ ivec3 a = ivec3(0);
+ a[0u] = (a.x + 42);
+}
+void no_deref() {
+ ivec3 a = ivec3(0);
+ a[0u] = (a.x + 42);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+}
diff --git a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.glsl
index 1c00ea3..964efca 100644
--- a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref() {
+ mat2x3 a = mat2x3(vec3(0.0f), vec3(0.0f));
+ vec3 b = a[0];
+ a[0] = vec3(1.0f, 2.0f, 3.0f);
+}
+void no_deref() {
+ mat2x3 a = mat2x3(vec3(0.0f), vec3(0.0f));
+ vec3 b = a[0];
+ a[0] = vec3(1.0f, 2.0f, 3.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+}
diff --git a/test/tint/ptr_sugar/struct.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/struct.wgsl.expected.ir.glsl
index 1c00ea3..79d1221 100644
--- a/test/tint/ptr_sugar/struct.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/struct.wgsl.expected.ir.glsl
@@ -1,11 +1,22 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int x;
+};
+
+void deref() {
+ S a = S(0);
+ int b = a.x;
+ a.x = 42;
+}
+void no_deref() {
+ S a = S(0);
+ int b = a.x;
+ a.x = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+}
diff --git a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.glsl
index 1c00ea3..355df83 100644
--- a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.glsl
@@ -1,11 +1,45 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref_const() {
+ ivec3 a = ivec3(0);
+ int b = a.x;
+ a[0] = 42;
+}
+void no_deref_const() {
+ ivec3 a = ivec3(0);
+ int b = a.x;
+ a[0] = 42;
+}
+void deref_let() {
+ ivec3 a = ivec3(0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+void no_deref_let() {
+ ivec3 a = ivec3(0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+void deref_var() {
+ ivec3 a = ivec3(0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+void no_deref_var() {
+ ivec3 a = ivec3(0);
+ int i = 0;
+ int b = a[i];
+ a[0] = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref_const();
+ no_deref_const();
+ deref_let();
+ no_deref_let();
+ deref_var();
+ no_deref_var();
+}
diff --git a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.glsl
index 1c00ea3..641ae8d 100644
--- a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+void deref() {
+ ivec3 a = ivec3(0);
+ int b = a.x;
+ a[0u] = 42;
+}
+void no_deref() {
+ ivec3 a = ivec3(0);
+ int b = a.x;
+ a[0u] = 42;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+}
diff --git a/test/tint/ptr_sugar/vector_swizzle.wgsl.expected.ir.glsl b/test/tint/ptr_sugar/vector_swizzle.wgsl.expected.ir.glsl
index 1c00ea3..b594e57 100644
--- a/test/tint/ptr_sugar/vector_swizzle.wgsl.expected.ir.glsl
+++ b/test/tint/ptr_sugar/vector_swizzle.wgsl.expected.ir.glsl
@@ -1,11 +1,17 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_3_1_ssbo {
+ ivec4 tint_symbol_2;
+} v;
+void deref() {
+ v.tint_symbol_2 = v.tint_symbol_2.wzyx;
+}
+void no_deref() {
+ v.tint_symbol_2 = v.tint_symbol_2.wzyx;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ deref();
+ no_deref();
+}
diff --git a/test/tint/samples/compute_boids.wgsl.expected.ir.glsl b/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
index 54fc6b8..5290b29 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
@@ -67,8 +67,10 @@
if ((index >= 5u)) {
return;
}
- vec2 vPos = v_1.tint_symbol_3.particles[index].pos;
- vec2 vVel = v_1.tint_symbol_3.particles[index].vel;
+ uint v_3 = index;
+ vec2 vPos = v_1.tint_symbol_3.particles[v_3].pos;
+ uint v_4 = index;
+ vec2 vVel = v_1.tint_symbol_3.particles[v_4].vel;
vec2 cMass = vec2(0.0f);
vec2 cVel = vec2(0.0f);
vec2 colVel = vec2(0.0f);
@@ -89,19 +91,21 @@
}
continue;
}
- pos = v_1.tint_symbol_3.particles[i].pos.xy;
- vel = v_1.tint_symbol_3.particles[i].vel.xy;
- float v_3 = distance(pos, vPos);
- if ((v_3 < v.tint_symbol_1.rule1Distance)) {
+ uint v_5 = i;
+ pos = v_1.tint_symbol_3.particles[v_5].pos.xy;
+ uint v_6 = i;
+ vel = v_1.tint_symbol_3.particles[v_6].vel.xy;
+ float v_7 = distance(pos, vPos);
+ if ((v_7 < v.tint_symbol_1.rule1Distance)) {
cMass = (cMass + pos);
cMassCount = (cMassCount + 1);
}
- float v_4 = distance(pos, vPos);
- if ((v_4 < v.tint_symbol_1.rule2Distance)) {
+ float v_8 = distance(pos, vPos);
+ if ((v_8 < v.tint_symbol_1.rule2Distance)) {
colVel = (colVel - (pos - vPos));
}
- float v_5 = distance(pos, vPos);
- if ((v_5 < v.tint_symbol_1.rule3Distance)) {
+ float v_9 = distance(pos, vPos);
+ if ((v_9 < v.tint_symbol_1.rule3Distance)) {
cVel = (cVel + vel);
cVelCount = (cVelCount + 1);
}
@@ -112,19 +116,19 @@
}
}
if ((cMassCount > 0)) {
- vec2 v_6 = cMass;
- float v_7 = float(cMassCount);
- vec2 v_8 = (v_6 / vec2(v_7, float(cMassCount)));
- cMass = (v_8 - vPos);
+ vec2 v_10 = cMass;
+ float v_11 = float(cMassCount);
+ vec2 v_12 = (v_10 / vec2(v_11, float(cMassCount)));
+ cMass = (v_12 - vPos);
}
if ((cVelCount > 0)) {
- vec2 v_9 = cVel;
- float v_10 = float(cVelCount);
- cVel = (v_9 / vec2(v_10, float(cVelCount)));
+ vec2 v_13 = cVel;
+ float v_14 = float(cVelCount);
+ cVel = (v_13 / vec2(v_14, float(cVelCount)));
}
vVel = (((vVel + (cMass * v.tint_symbol_1.rule1Scale)) + (colVel * v.tint_symbol_1.rule2Scale)) + (cVel * v.tint_symbol_1.rule3Scale));
- vec2 v_11 = normalize(vVel);
- vVel = (v_11 * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
+ vec2 v_15 = normalize(vVel);
+ vVel = (v_15 * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
vPos = (vPos + (vVel * v.tint_symbol_1.deltaT));
if ((vPos.x < -1.0f)) {
vPos[0u] = 1.0f;
@@ -138,8 +142,10 @@
if ((vPos.y > 1.0f)) {
vPos[1u] = -1.0f;
}
- v_2.tint_symbol_5.particles[index].pos = vPos;
- v_2.tint_symbol_5.particles[index].vel = vVel;
+ uint v_16 = index;
+ v_2.tint_symbol_5.particles[v_16].pos = vPos;
+ uint v_17 = index;
+ v_2.tint_symbol_5.particles[v_17].vel = vVel;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/shadowing/loop.wgsl.expected.ir.glsl b/test/tint/shadowing/loop.wgsl.expected.ir.glsl
index af31d39..06df91a 100644
--- a/test/tint/shadowing/loop.wgsl.expected.ir.glsl
+++ b/test/tint/shadowing/loop.wgsl.expected.ir.glsl
@@ -9,9 +9,11 @@
int i = 0;
{
while(true) {
- int x = v.tint_symbol_1[i];
+ int v_1 = i;
+ int x = v.tint_symbol_1[v_1];
{
- int x = v.tint_symbol_1[x];
+ int v_2 = x;
+ int x = v.tint_symbol_1[v_2];
i = (i + x);
if ((i > 10)) { break; }
}
diff --git a/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.glsl b/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.glsl
index 4197ad7..c445dcc 100644
--- a/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.glsl
+++ b/test/tint/shadowing/short_names/renamer/function.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
int vec4f() {
@@ -12,24 +10,11 @@
return bool(f);
}
vec4 tint_symbol_inner(uint VertexIndex) {
- bool v = vec2i(vec2f(vec4f()));
- float v_1 = ((v.x) ? (vec4(1.0f).x) : (vec4(0.0f).x));
- float v_2 = ((v.y) ? (vec4(1.0f).y) : (vec4(0.0f).y));
- float v_3 = ((v.z) ? (vec4(1.0f).z) : (vec4(0.0f).z));
- return vec4(v_1, v_2, v_3, ((v.w) ? (vec4(1.0f).w) : (vec4(0.0f).w)));
+ return mix(vec4(0.0f), vec4(1.0f), bvec4(vec2i(vec2f(vec4f()))));
}
void main() {
- gl_Position = tint_symbol_inner(gl_VertexID);
+ gl_Position = tint_symbol_inner(uint(gl_VertexID));
gl_Position[1u] = -(gl_Position.y);
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'scalar swizzle' : not supported with this profile: es
-ERROR: 0:14: '' : compilation terminated
-ERROR: 2 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.glsl b/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.glsl
index fbb1c7e..e519ac8 100644
--- a/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.glsl
+++ b/test/tint/shadowing/short_names/renamer/type.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
@@ -11,23 +9,11 @@
vec4f s = vec4f(1);
float f = float(s.i);
bool b = bool(f);
- float v = ((b.x) ? (vec4(1.0f).x) : (vec4(0.0f).x));
- float v_1 = ((b.y) ? (vec4(1.0f).y) : (vec4(0.0f).y));
- float v_2 = ((b.z) ? (vec4(1.0f).z) : (vec4(0.0f).z));
- return vec4(v, v_1, v_2, ((b.w) ? (vec4(1.0f).w) : (vec4(0.0f).w)));
+ return mix(vec4(0.0f), vec4(1.0f), bvec4(b));
}
void main() {
- gl_Position = tint_symbol_inner(gl_VertexID);
+ gl_Position = tint_symbol_inner(uint(gl_VertexID));
gl_Position[1u] = -(gl_Position.y);
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'scalar swizzle' : not supported with this profile: es
-ERROR: 0:12: '' : compilation terminated
-ERROR: 2 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.glsl
index 2f8cfcf..c9efbf9 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.glsl
@@ -28,7 +28,8 @@
} else {
break;
}
- s1.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
{
i = (i + 1);
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.glsl
index aec9caf..71947f2 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.glsl
@@ -30,7 +30,8 @@
}
i = (i + 1);
{
- s1.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
}
continue;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.glsl
index f230518..1834b48 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.glsl
@@ -23,7 +23,8 @@
OuterS s1 = OuterS(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)));
int i = 0;
{
- s1.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
while(true) {
if ((i < 4)) {
} else {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.glsl
index 0cdfbde..d5a54f1 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.glsl
@@ -32,5 +32,6 @@
InnerS v = InnerS(0);
OuterS s = OuterS(S1[8](S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)))));
uint v_2 = getNextIndex();
- s.a1[v_2].a2[v_1.tint_symbol_1.j] = v;
+ uint v_3 = v_1.tint_symbol_1.j;
+ s.a1[v_2].a2[v_3] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.glsl
index 837fe49..22da132 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.glsl
@@ -21,5 +21,6 @@
void main() {
InnerS v = InnerS(0);
OuterS s1 = OuterS(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)));
- s1.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.glsl
index d0bf667..04b34ea 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.glsl
@@ -22,5 +22,7 @@
void main() {
InnerS v = InnerS(0);
OuterS s1 = OuterS(InnerS[8][8](InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))));
- s1.a1[v_1.tint_symbol_1.i][v_1.tint_symbol_1.j] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ uint v_3 = v_1.tint_symbol_1.j;
+ s1.a1[v_2][v_3] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.glsl
index 3dd1be4..0542885 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.glsl
@@ -25,5 +25,6 @@
void main() {
InnerS v = InnerS(0);
OuterS s1 = OuterS(S1[8](S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0)), S1(InnerS(0))));
- s1.a1[v_1.tint_symbol_1.i].s2 = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2].s2 = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.glsl
index 6a6b84b..7bb5ec5 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.glsl
@@ -26,5 +26,7 @@
void main() {
InnerS v = InnerS(0);
OuterS s = OuterS(S1[8](S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)))));
- s.a1[v_1.tint_symbol_1.i].a2[v_1.tint_symbol_1.j] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ uint v_3 = v_1.tint_symbol_1.j;
+ s.a1[v_2].a2[v_3] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.glsl
index 627d4ab..a21cbc7 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.ir.glsl
@@ -20,5 +20,6 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
InnerS v = InnerS(0);
- s1.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.glsl
index 09456b4..d99b470 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.ir.glsl
@@ -25,5 +25,7 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
InnerS v = InnerS(0);
- s.a1[v_1.tint_symbol_1.i].a2[v_1.tint_symbol_1.j] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ uint v_3 = v_1.tint_symbol_1.j;
+ s.a1[v_2].a2[v_3] = v;
}
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 2376b26..b22e066 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
@@ -16,6 +16,8 @@
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[v.tint_symbol_1.i] = vec4(1.0f);
- s1.m1[v.tint_symbol_1.i][v.tint_symbol_1.i] = 1.0f;
+ uint v_1 = v.tint_symbol_1.i;
+ s1.m1[v_1] = vec4(1.0f);
+ uint v_2 = v.tint_symbol_1.i;
+ s1.m1[v_2][v.tint_symbol_1.i] = 1.0f;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.glsl
index 36cf428..e3c1412 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.glsl
@@ -22,6 +22,8 @@
void main() {
InnerS v = InnerS(0);
OuterS s1 = OuterS(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)), InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)));
- s1.a1[v_1.tint_symbol_1.i] = v;
- s1.a2[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
+ uint v_3 = v_1.tint_symbol_1.i;
+ s1.a2[v_3] = v;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.glsl
index abc071c..311c280 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.glsl
@@ -25,5 +25,6 @@
void main() {
InnerS v = InnerS(0);
OuterS s1 = OuterS(S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))));
- s1.s2.a[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.s2.a[v_2] = v;
}
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 c078c75..17728d2 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
@@ -20,6 +20,8 @@
void main() {
OuterS s1 = OuterS(uint[8](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u));
vec3 v = vec3(0.0f);
- v[s1.a1[v_1.tint_symbol_1.i]] = 1.0f;
- v[f(s1.a1[v_1.tint_symbol_1.i])] = 1.0f;
+ uint v_2 = v_1.tint_symbol_1.i;
+ v[s1.a1[v_2]] = 1.0f;
+ uint v_3 = v_1.tint_symbol_1.i;
+ v[f(s1.a1[v_3])] = 1.0f;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.glsl
index 1c00ea3..22da132 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.glsl
@@ -1,11 +1,26 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct Uniforms {
+ uint i;
+};
+
+struct InnerS {
+ int v;
+};
+
+struct OuterS {
+ InnerS a1[8];
+};
+
+layout(binding = 4, std140)
+uniform tint_symbol_2_1_ubo {
+ Uniforms tint_symbol_1;
+} v_1;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ InnerS v = InnerS(0);
+ OuterS s1 = OuterS(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)));
+ uint v_2 = v_1.tint_symbol_1.i;
+ s1.a1[v_2] = v;
+}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.glsl
index 7cc025f..782ac61 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.glsl
@@ -19,7 +19,8 @@
} v_1;
void f(inout OuterS p) {
InnerS v = InnerS(0);
- p.a1[v_1.tint_symbol_1.i] = v;
+ uint v_2 = v_1.tint_symbol_1.i;
+ p.a1[v_2] = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
diff --git a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.glsl b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.glsl
index 1c00ea3..f2aed78 100644
--- a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.glsl
+++ b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.glsl
@@ -1,11 +1,25 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ ivec4 a[4];
+};
+
+int counter = 0;
+int foo() {
+ counter = (counter + 1);
+ return counter;
+}
+int bar() {
+ counter = (counter + 2);
+ return counter;
+}
+void tint_symbol() {
+ S x = S(ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0)));
+ int v = foo();
+ int v_1 = bar();
+ x.a[v][v_1] = (x.a[v][v_1] + 5);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.glsl b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.glsl
index 1c00ea3..e324fc8 100644
--- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.glsl
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.glsl
@@ -1,11 +1,48 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ int a;
+ vec4 b;
+ mat2 c;
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+ S tint_symbol;
+} v_1;
+uint i = 0u;
+int idx1() {
+ i = (i + 1u);
+ return 1;
+}
+int idx2() {
+ i = (i + 2u);
+ return 1;
+}
+int idx3() {
+ i = (i + 3u);
+ return 1;
+}
+void foo() {
+ float a[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+ {
+ int v_2 = idx1();
+ a[v_2] = (a[v_2] * 2.0f);
+ while(true) {
+ int v_3 = idx2();
+ if ((a[v_3] < 10.0f)) {
+ } else {
+ break;
+ }
+ {
+ int v_4 = idx3();
+ a[v_4] = (a[v_4] + 1.0f);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/statements/decrement/complex.wgsl.expected.ir.glsl b/test/tint/statements/decrement/complex.wgsl.expected.ir.glsl
index 1c00ea3..07f40e8 100644
--- a/test/tint/statements/decrement/complex.wgsl.expected.ir.glsl
+++ b/test/tint/statements/decrement/complex.wgsl.expected.ir.glsl
@@ -1,11 +1,60 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ ivec4 a[4];
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_3_1_ssbo {
+ S tint_symbol_2[];
+} v_1;
+uint v = 0u;
+int idx1() {
+ v = (v - 1u);
+ return 1;
+}
+int idx2() {
+ v = (v - 1u);
+ return 2;
+}
+int idx3() {
+ v = (v - 1u);
+ return 3;
+}
+int idx4() {
+ v = (v - 1u);
+ return 4;
+}
+int idx5() {
+ v = (v - 1u);
+ return 0;
+}
+int idx6() {
+ v = (v - 1u);
+ return 2;
+}
+void tint_symbol_1() {
+ {
+ int v_2 = idx1();
+ int v_3 = idx2();
+ int v_4 = idx3();
+ v_1.tint_symbol_2[v_2].a[v_3][v_4] = (v_1.tint_symbol_2[v_2].a[v_3][v_4] - 1);
+ while(true) {
+ if ((v < 10u)) {
+ } else {
+ break;
+ }
+ {
+ int v_5 = idx4();
+ int v_6 = idx5();
+ int v_7 = idx6();
+ v_1.tint_symbol_2[v_5].a[v_6][v_7] = (v_1.tint_symbol_2[v_5].a[v_6][v_7] - 1);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/statements/increment/complex.wgsl.expected.ir.glsl b/test/tint/statements/increment/complex.wgsl.expected.ir.glsl
index 1c00ea3..a35c2d8 100644
--- a/test/tint/statements/increment/complex.wgsl.expected.ir.glsl
+++ b/test/tint/statements/increment/complex.wgsl.expected.ir.glsl
@@ -1,11 +1,60 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ ivec4 a[4];
+};
+
+layout(binding = 0, std430)
+buffer tint_symbol_3_1_ssbo {
+ S tint_symbol_2[];
+} v_1;
+uint v = 0u;
+int idx1() {
+ v = (v + 1u);
+ return 1;
+}
+int idx2() {
+ v = (v + 1u);
+ return 2;
+}
+int idx3() {
+ v = (v + 1u);
+ return 3;
+}
+int idx4() {
+ v = (v + 1u);
+ return 4;
+}
+int idx5() {
+ v = (v + 1u);
+ return 0;
+}
+int idx6() {
+ v = (v + 1u);
+ return 2;
+}
+void tint_symbol_1() {
+ {
+ int v_2 = idx1();
+ int v_3 = idx2();
+ int v_4 = idx3();
+ v_1.tint_symbol_2[v_2].a[v_3][v_4] = (v_1.tint_symbol_2[v_2].a[v_3][v_4] + 1);
+ while(true) {
+ if ((v < 10u)) {
+ } else {
+ break;
+ }
+ {
+ int v_5 = idx4();
+ int v_6 = idx5();
+ int v_7 = idx6();
+ v_1.tint_symbol_2[v_5].a[v_6][v_7] = (v_1.tint_symbol_2[v_5].a[v_6][v_7] + 1);
+ }
+ continue;
+ }
+ }
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
diff --git a/test/tint/types/function_scope_declarations.wgsl.expected.ir.glsl b/test/tint/types/function_scope_declarations.wgsl.expected.ir.glsl
index 1c00ea3..a35a50c 100644
--- a/test/tint/types/function_scope_declarations.wgsl.expected.ir.glsl
+++ b/test/tint/types/function_scope_declarations.wgsl.expected.ir.glsl
@@ -1,11 +1,30 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+struct S {
+ float a;
+};
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ bool bool_var = false;
+ bool bool_let = false;
+ int i32_var = 0;
+ int i32_let = 0;
+ uint u32_var = 0u;
+ uint u32_let = 0u;
+ float f32_var = 0.0f;
+ float f32_let = 0.0f;
+ ivec2 v2i32_var = ivec2(0);
+ ivec2 v2i32_let = ivec2(0);
+ uvec3 v3u32_var = uvec3(0u);
+ uvec3 v3u32_let = uvec3(0u);
+ vec4 v4f32_var = vec4(0.0f);
+ vec4 v4f32_let = vec4(0.0f);
+ mat2x3 m2x3_var = mat2x3(vec3(0.0f), vec3(0.0f));
+ mat3x4 m3x4_let = mat3x4(vec4(0.0f), vec4(0.0f), vec4(0.0f));
+ float arr_var[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+ float arr_let[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+ S struct_var = S(0.0f);
+ S struct_let = S(0.0f);
+}
diff --git a/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.glsl b/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.glsl
index 1c00ea3..5d9ce65 100644
--- a/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.glsl
+++ b/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.glsl
@@ -1,11 +1,16 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
+float p = 0.0f;
+shared float w;
+void tint_symbol_inner(uint tint_local_index) {
+ if ((tint_local_index == 0u)) {
+ w = 0.0f;
+ }
+ barrier();
+ float x = (p + w);
+ p = x;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1c00ea3..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:521 internal compiler error: TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>())
-********************************************************************
-* 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: trace/BPT trap