[ir] Fix consecutive calls in dependency scanner
Functions called multiple times by the same function were being added
to the ordered list multiple time. Use a UniqueVector to prevent this.
Change-Id: I634720bd0c4ec50a847d2e52179a174de68568c4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/191100
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/lang/core/ir/module.cc b/src/tint/lang/core/ir/module.cc
index 49af3bb..617f00d 100644
--- a/src/tint/lang/core/ir/module.cc
+++ b/src/tint/lang/core/ir/module.cc
@@ -43,7 +43,7 @@
template <typename F>
struct FunctionSorter {
/// The dependency-ordered list of functions.
- Vector<F*, 16> ordered_functions{};
+ UniqueVector<F*, 16> ordered_functions{};
/// The functions that have been visited and checked for dependencies.
Hashset<F*, 16> visited{};
@@ -70,7 +70,7 @@
// unvisited dependencies. We can now add it to the ordered list, and walk back down the
// stack until we find the next unvisited function.
while (!function_stack.IsEmpty() && visited.Contains(function_stack.Back())) {
- ordered_functions.Push(function_stack.Pop());
+ ordered_functions.Add(function_stack.Pop());
}
}
}
@@ -106,7 +106,7 @@
for (auto& func : mod.functions) {
sorter.Visit(func.Get());
}
- return std::move(sorter.ordered_functions);
+ return std::move(sorter.ordered_functions.Release());
}
};
diff --git a/src/tint/lang/core/ir/module_test.cc b/src/tint/lang/core/ir/module_test.cc
index b04ae70..21668df 100644
--- a/src/tint/lang/core/ir/module_test.cc
+++ b/src/tint/lang/core/ir/module_test.cc
@@ -68,6 +68,8 @@
auto* ifelse = b.If(true);
b.Append(ifelse->True(), [&] {
b.Call(fc);
+ b.Call(fc);
+ b.Call(fc);
b.ExitIf(ifelse);
});
b.Append(ifelse->False(), [&] {
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl
index 8dc4c3f..bcf0cf1 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.msl
@@ -1,201 +1,95 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec4_f32:vec4<f32> @offset(96)
- vec4_i32:vec4<i32> @offset(112)
- vec4_u32:vec4<u32> @offset(128)
- mat2x2_f32:mat2x2<f32> @offset(144)
- mat2x3_f32:mat2x3<f32> @offset(160)
- mat2x4_f32:mat2x4<f32> @offset(192)
- mat3x2_f32:mat3x2<f32> @offset(224)
- mat3x3_f32:mat3x3<f32> @offset(256)
- mat3x4_f32:mat3x4<f32> @offset(304)
- mat4x2_f32:mat4x2<f32> @offset(352)
- mat4x3_f32:mat4x3<f32> @offset(384)
- mat4x4_f32:mat4x4<f32> @offset(448)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
-}
+struct Inner {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ tint_array<float3, 2> arr2_vec3_f32;
+};
+struct S {
+ tint_array<Inner, 1> arr;
+};
+struct tint_module_vars_struct {
+ const device S* sb;
+ device int* s;
+};
-S = struct @align(16) {
- arr:array<Inner> @offset(0)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %sb:ptr<storage, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+void tint_symbol_inner(uint idx, tint_module_vars_struct tint_module_vars) {
+ float const scalar_f32 = (*tint_module_vars.sb).arr[idx].scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.sb).arr[idx].scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.sb).arr[idx].scalar_u32;
+ float2 const vec2_f32 = (*tint_module_vars.sb).arr[idx].vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.sb).arr[idx].vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.sb).arr[idx].vec2_u32;
+ float3 const vec3_f32 = (*tint_module_vars.sb).arr[idx].vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.sb).arr[idx].vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.sb).arr[idx].vec3_u32;
+ float4 const vec4_f32 = (*tint_module_vars.sb).arr[idx].vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.sb).arr[idx].vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.sb).arr[idx].vec4_u32;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.sb).arr[idx].mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.sb).arr[idx].mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.sb).arr[idx].mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.sb).arr[idx].mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.sb).arr[idx].mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.sb).arr[idx].mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.sb).arr[idx].mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.sb).arr[idx].mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.sb).arr[idx].mat4x4_f32;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.sb).arr[idx].arr2_vec3_f32;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = ((v_1 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_3 = (v_2 + int(vec2_u32[0u]));
+ int const v_4 = ((v_3 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_5 = (v_4 + int(vec3_u32[1u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_7 = (v_6 + int(vec4_u32[2u]));
+ int const v_8 = (v_7 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_9 = (v_8 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_10 = (v_9 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_11 = (v_10 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ (*tint_module_vars.s) = (v_16 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void {
- $B2: {
- %5:ptr<storage, f32, read> = access %sb, 0u, %idx, 0u
- %6:f32 = load %5
- %scalar_f32:f32 = let %6
- %8:ptr<storage, i32, read> = access %sb, 0u, %idx, 1u
- %9:i32 = load %8
- %scalar_i32:i32 = let %9
- %11:ptr<storage, u32, read> = access %sb, 0u, %idx, 2u
- %12:u32 = load %11
- %scalar_u32:u32 = let %12
- %14:ptr<storage, vec2<f32>, read> = access %sb, 0u, %idx, 3u
- %15:vec2<f32> = load %14
- %vec2_f32:vec2<f32> = let %15
- %17:ptr<storage, vec2<i32>, read> = access %sb, 0u, %idx, 4u
- %18:vec2<i32> = load %17
- %vec2_i32:vec2<i32> = let %18
- %20:ptr<storage, vec2<u32>, read> = access %sb, 0u, %idx, 5u
- %21:vec2<u32> = load %20
- %vec2_u32:vec2<u32> = let %21
- %23:ptr<storage, vec3<f32>, read> = access %sb, 0u, %idx, 6u
- %24:vec3<f32> = load %23
- %vec3_f32:vec3<f32> = let %24
- %26:ptr<storage, vec3<i32>, read> = access %sb, 0u, %idx, 7u
- %27:vec3<i32> = load %26
- %vec3_i32:vec3<i32> = let %27
- %29:ptr<storage, vec3<u32>, read> = access %sb, 0u, %idx, 8u
- %30:vec3<u32> = load %29
- %vec3_u32:vec3<u32> = let %30
- %32:ptr<storage, vec4<f32>, read> = access %sb, 0u, %idx, 9u
- %33:vec4<f32> = load %32
- %vec4_f32:vec4<f32> = let %33
- %35:ptr<storage, vec4<i32>, read> = access %sb, 0u, %idx, 10u
- %36:vec4<i32> = load %35
- %vec4_i32:vec4<i32> = let %36
- %38:ptr<storage, vec4<u32>, read> = access %sb, 0u, %idx, 11u
- %39:vec4<u32> = load %38
- %vec4_u32:vec4<u32> = let %39
- %41:ptr<storage, mat2x2<f32>, read> = access %sb, 0u, %idx, 12u
- %42:mat2x2<f32> = load %41
- %mat2x2_f32:mat2x2<f32> = let %42
- %44:ptr<storage, mat2x3<f32>, read> = access %sb, 0u, %idx, 13u
- %45:mat2x3<f32> = load %44
- %mat2x3_f32:mat2x3<f32> = let %45
- %47:ptr<storage, mat2x4<f32>, read> = access %sb, 0u, %idx, 14u
- %48:mat2x4<f32> = load %47
- %mat2x4_f32:mat2x4<f32> = let %48
- %50:ptr<storage, mat3x2<f32>, read> = access %sb, 0u, %idx, 15u
- %51:mat3x2<f32> = load %50
- %mat3x2_f32:mat3x2<f32> = let %51
- %53:ptr<storage, mat3x3<f32>, read> = access %sb, 0u, %idx, 16u
- %54:mat3x3<f32> = load %53
- %mat3x3_f32:mat3x3<f32> = let %54
- %56:ptr<storage, mat3x4<f32>, read> = access %sb, 0u, %idx, 17u
- %57:mat3x4<f32> = load %56
- %mat3x4_f32:mat3x4<f32> = let %57
- %59:ptr<storage, mat4x2<f32>, read> = access %sb, 0u, %idx, 18u
- %60:mat4x2<f32> = load %59
- %mat4x2_f32:mat4x2<f32> = let %60
- %62:ptr<storage, mat4x3<f32>, read> = access %sb, 0u, %idx, 19u
- %63:mat4x3<f32> = load %62
- %mat4x3_f32:mat4x3<f32> = let %63
- %65:ptr<storage, mat4x4<f32>, read> = access %sb, 0u, %idx, 20u
- %66:mat4x4<f32> = load %65
- %mat4x4_f32:mat4x4<f32> = let %66
- %68:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 0u, %idx, 21u
- %69:array<vec3<f32>, 2> = load %68
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %69
- %71:i32 = call %tint_f32_to_i32, %scalar_f32
- %73:i32 = add %71, %scalar_i32
- %74:i32 = let %73
- %75:i32 = convert %scalar_u32
- %76:i32 = add %74, %75
- %77:i32 = let %76
- %78:f32 = access %vec2_f32, 0u
- %79:i32 = call %tint_f32_to_i32, %78
- %80:i32 = add %77, %79
- %81:i32 = access %vec2_i32, 0u
- %82:i32 = add %80, %81
- %83:i32 = let %82
- %84:u32 = access %vec2_u32, 0u
- %85:i32 = convert %84
- %86:i32 = add %83, %85
- %87:i32 = let %86
- %88:f32 = access %vec3_f32, 1u
- %89:i32 = call %tint_f32_to_i32, %88
- %90:i32 = add %87, %89
- %91:i32 = access %vec3_i32, 1u
- %92:i32 = add %90, %91
- %93:i32 = let %92
- %94:u32 = access %vec3_u32, 1u
- %95:i32 = convert %94
- %96:i32 = add %93, %95
- %97:i32 = let %96
- %98:f32 = access %vec4_f32, 2u
- %99:i32 = call %tint_f32_to_i32, %98
- %100:i32 = add %97, %99
- %101:i32 = access %vec4_i32, 2u
- %102:i32 = add %100, %101
- %103:i32 = let %102
- %104:u32 = access %vec4_u32, 2u
- %105:i32 = convert %104
- %106:i32 = add %103, %105
- %107:i32 = let %106
- %108:f32 = access %mat2x2_f32, 0i, 0u
- %109:i32 = call %tint_f32_to_i32, %108
- %110:i32 = add %107, %109
- %111:i32 = let %110
- %112:f32 = access %mat2x3_f32, 0i, 0u
- %113:i32 = call %tint_f32_to_i32, %112
- %114:i32 = add %111, %113
- %115:i32 = let %114
- %116:f32 = access %mat2x4_f32, 0i, 0u
- %117:i32 = call %tint_f32_to_i32, %116
- %118:i32 = add %115, %117
- %119:i32 = let %118
- %120:f32 = access %mat3x2_f32, 0i, 0u
- %121:i32 = call %tint_f32_to_i32, %120
- %122:i32 = add %119, %121
- %123:i32 = let %122
- %124:f32 = access %mat3x3_f32, 0i, 0u
- %125:i32 = call %tint_f32_to_i32, %124
- %126:i32 = add %123, %125
- %127:i32 = let %126
- %128:f32 = access %mat3x4_f32, 0i, 0u
- %129:i32 = call %tint_f32_to_i32, %128
- %130:i32 = add %127, %129
- %131:i32 = let %130
- %132:f32 = access %mat4x2_f32, 0i, 0u
- %133:i32 = call %tint_f32_to_i32, %132
- %134:i32 = add %131, %133
- %135:i32 = let %134
- %136:f32 = access %mat4x3_f32, 0i, 0u
- %137:i32 = call %tint_f32_to_i32, %136
- %138:i32 = add %135, %137
- %139:i32 = let %138
- %140:f32 = access %mat4x4_f32, 0i, 0u
- %141:i32 = call %tint_f32_to_i32, %140
- %142:i32 = add %139, %141
- %143:i32 = let %142
- %144:f32 = access %arr2_vec3_f32, 0i, 0u
- %145:i32 = call %tint_f32_to_i32, %144
- %146:i32 = add %143, %145
- store %s, %146
- ret
- }
+kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], const device S* sb [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb, .s=s};
+ tint_symbol_inner(idx, tint_module_vars);
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %148:i32 = convert %value
- %149:bool = gte %value, -2147483648.0f
- %150:i32 = select -2147483648i, %148, %149
- %151:bool = lte %value, 2147483520.0f
- %152:i32 = select 2147483647i, %150, %151
- ret %152
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl
index 804b368..0ad8507 100644
--- a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.msl
@@ -1,322 +1,140 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- scalar_f16:f16 @offset(12)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec2_f16:vec2<f16> @offset(40)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec3_f16:vec3<f16> @offset(96)
- vec4_f32:vec4<f32> @offset(112)
- vec4_i32:vec4<i32> @offset(128)
- vec4_u32:vec4<u32> @offset(144)
- vec4_f16:vec4<f16> @offset(160)
- mat2x2_f32:mat2x2<f32> @offset(168)
- mat2x3_f32:mat2x3<f32> @offset(192)
- mat2x4_f32:mat2x4<f32> @offset(224)
- mat3x2_f32:mat3x2<f32> @offset(256)
- mat3x3_f32:mat3x3<f32> @offset(288)
- mat3x4_f32:mat3x4<f32> @offset(336)
- mat4x2_f32:mat4x2<f32> @offset(384)
- mat4x3_f32:mat4x3<f32> @offset(416)
- mat4x4_f32:mat4x4<f32> @offset(480)
- mat2x2_f16:mat2x2<f16> @offset(544)
- mat2x3_f16:mat2x3<f16> @offset(552)
- mat2x4_f16:mat2x4<f16> @offset(568)
- mat3x2_f16:mat3x2<f16> @offset(584)
- mat3x3_f16:mat3x3<f16> @offset(600)
- mat3x4_f16:mat3x4<f16> @offset(624)
- mat4x2_f16:mat4x2<f16> @offset(648)
- mat4x3_f16:mat4x3<f16> @offset(664)
- mat4x4_f16:mat4x4<f16> @offset(696)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
- arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
-}
+struct Inner {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ half scalar_f16;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ half2 vec2_f16;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ half3 vec3_f16;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ half4 vec4_f16;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ half2x2 mat2x2_f16;
+ half2x3 mat2x3_f16;
+ half2x4 mat2x4_f16;
+ half3x2 mat3x2_f16;
+ half3x3 mat3x3_f16;
+ half3x4 mat3x4_f16;
+ half4x2 mat4x2_f16;
+ half4x3 mat4x3_f16;
+ half4x4 mat4x4_f16;
+ tint_array<float3, 2> arr2_vec3_f32;
+ tint_array<half4x2, 2> arr2_mat4x2_f16;
+};
+struct S {
+ tint_array<Inner, 1> arr;
+};
+struct tint_module_vars_struct {
+ const device S* sb;
+ device int* s;
+};
-S = struct @align(16) {
- arr:array<Inner> @offset(0)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %sb:ptr<storage, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+int tint_f16_to_i32(half value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void {
- $B2: {
- %5:ptr<storage, f32, read> = access %sb, 0u, %idx, 0u
- %6:f32 = load %5
- %scalar_f32:f32 = let %6
- %8:ptr<storage, i32, read> = access %sb, 0u, %idx, 1u
- %9:i32 = load %8
- %scalar_i32:i32 = let %9
- %11:ptr<storage, u32, read> = access %sb, 0u, %idx, 2u
- %12:u32 = load %11
- %scalar_u32:u32 = let %12
- %14:ptr<storage, f16, read> = access %sb, 0u, %idx, 3u
- %15:f16 = load %14
- %scalar_f16:f16 = let %15
- %17:ptr<storage, vec2<f32>, read> = access %sb, 0u, %idx, 4u
- %18:vec2<f32> = load %17
- %vec2_f32:vec2<f32> = let %18
- %20:ptr<storage, vec2<i32>, read> = access %sb, 0u, %idx, 5u
- %21:vec2<i32> = load %20
- %vec2_i32:vec2<i32> = let %21
- %23:ptr<storage, vec2<u32>, read> = access %sb, 0u, %idx, 6u
- %24:vec2<u32> = load %23
- %vec2_u32:vec2<u32> = let %24
- %26:ptr<storage, vec2<f16>, read> = access %sb, 0u, %idx, 7u
- %27:vec2<f16> = load %26
- %vec2_f16:vec2<f16> = let %27
- %29:ptr<storage, vec3<f32>, read> = access %sb, 0u, %idx, 8u
- %30:vec3<f32> = load %29
- %vec3_f32:vec3<f32> = let %30
- %32:ptr<storage, vec3<i32>, read> = access %sb, 0u, %idx, 9u
- %33:vec3<i32> = load %32
- %vec3_i32:vec3<i32> = let %33
- %35:ptr<storage, vec3<u32>, read> = access %sb, 0u, %idx, 10u
- %36:vec3<u32> = load %35
- %vec3_u32:vec3<u32> = let %36
- %38:ptr<storage, vec3<f16>, read> = access %sb, 0u, %idx, 11u
- %39:vec3<f16> = load %38
- %vec3_f16:vec3<f16> = let %39
- %41:ptr<storage, vec4<f32>, read> = access %sb, 0u, %idx, 12u
- %42:vec4<f32> = load %41
- %vec4_f32:vec4<f32> = let %42
- %44:ptr<storage, vec4<i32>, read> = access %sb, 0u, %idx, 13u
- %45:vec4<i32> = load %44
- %vec4_i32:vec4<i32> = let %45
- %47:ptr<storage, vec4<u32>, read> = access %sb, 0u, %idx, 14u
- %48:vec4<u32> = load %47
- %vec4_u32:vec4<u32> = let %48
- %50:ptr<storage, vec4<f16>, read> = access %sb, 0u, %idx, 15u
- %51:vec4<f16> = load %50
- %vec4_f16:vec4<f16> = let %51
- %53:ptr<storage, mat2x2<f32>, read> = access %sb, 0u, %idx, 16u
- %54:mat2x2<f32> = load %53
- %mat2x2_f32:mat2x2<f32> = let %54
- %56:ptr<storage, mat2x3<f32>, read> = access %sb, 0u, %idx, 17u
- %57:mat2x3<f32> = load %56
- %mat2x3_f32:mat2x3<f32> = let %57
- %59:ptr<storage, mat2x4<f32>, read> = access %sb, 0u, %idx, 18u
- %60:mat2x4<f32> = load %59
- %mat2x4_f32:mat2x4<f32> = let %60
- %62:ptr<storage, mat3x2<f32>, read> = access %sb, 0u, %idx, 19u
- %63:mat3x2<f32> = load %62
- %mat3x2_f32:mat3x2<f32> = let %63
- %65:ptr<storage, mat3x3<f32>, read> = access %sb, 0u, %idx, 20u
- %66:mat3x3<f32> = load %65
- %mat3x3_f32:mat3x3<f32> = let %66
- %68:ptr<storage, mat3x4<f32>, read> = access %sb, 0u, %idx, 21u
- %69:mat3x4<f32> = load %68
- %mat3x4_f32:mat3x4<f32> = let %69
- %71:ptr<storage, mat4x2<f32>, read> = access %sb, 0u, %idx, 22u
- %72:mat4x2<f32> = load %71
- %mat4x2_f32:mat4x2<f32> = let %72
- %74:ptr<storage, mat4x3<f32>, read> = access %sb, 0u, %idx, 23u
- %75:mat4x3<f32> = load %74
- %mat4x3_f32:mat4x3<f32> = let %75
- %77:ptr<storage, mat4x4<f32>, read> = access %sb, 0u, %idx, 24u
- %78:mat4x4<f32> = load %77
- %mat4x4_f32:mat4x4<f32> = let %78
- %80:ptr<storage, mat2x2<f16>, read> = access %sb, 0u, %idx, 25u
- %81:mat2x2<f16> = load %80
- %mat2x2_f16:mat2x2<f16> = let %81
- %83:ptr<storage, mat2x3<f16>, read> = access %sb, 0u, %idx, 26u
- %84:mat2x3<f16> = load %83
- %mat2x3_f16:mat2x3<f16> = let %84
- %86:ptr<storage, mat2x4<f16>, read> = access %sb, 0u, %idx, 27u
- %87:mat2x4<f16> = load %86
- %mat2x4_f16:mat2x4<f16> = let %87
- %89:ptr<storage, mat3x2<f16>, read> = access %sb, 0u, %idx, 28u
- %90:mat3x2<f16> = load %89
- %mat3x2_f16:mat3x2<f16> = let %90
- %92:ptr<storage, mat3x3<f16>, read> = access %sb, 0u, %idx, 29u
- %93:mat3x3<f16> = load %92
- %mat3x3_f16:mat3x3<f16> = let %93
- %95:ptr<storage, mat3x4<f16>, read> = access %sb, 0u, %idx, 30u
- %96:mat3x4<f16> = load %95
- %mat3x4_f16:mat3x4<f16> = let %96
- %98:ptr<storage, mat4x2<f16>, read> = access %sb, 0u, %idx, 31u
- %99:mat4x2<f16> = load %98
- %mat4x2_f16:mat4x2<f16> = let %99
- %101:ptr<storage, mat4x3<f16>, read> = access %sb, 0u, %idx, 32u
- %102:mat4x3<f16> = load %101
- %mat4x3_f16:mat4x3<f16> = let %102
- %104:ptr<storage, mat4x4<f16>, read> = access %sb, 0u, %idx, 33u
- %105:mat4x4<f16> = load %104
- %mat4x4_f16:mat4x4<f16> = let %105
- %107:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 0u, %idx, 34u
- %108:array<vec3<f32>, 2> = load %107
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %108
- %110:ptr<storage, array<mat4x2<f16>, 2>, read> = access %sb, 0u, %idx, 35u
- %111:array<mat4x2<f16>, 2> = load %110
- %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = let %111
- %113:i32 = call %tint_f32_to_i32, %scalar_f32
- %115:i32 = add %113, %scalar_i32
- %116:i32 = let %115
- %117:i32 = convert %scalar_u32
- %118:i32 = add %116, %117
- %119:i32 = let %118
- %120:i32 = call %tint_f16_to_i32, %scalar_f16
- %122:i32 = add %119, %120
- %123:i32 = let %122
- %124:f32 = access %vec2_f32, 0u
- %125:i32 = call %tint_f32_to_i32, %124
- %126:i32 = add %123, %125
- %127:i32 = access %vec2_i32, 0u
- %128:i32 = add %126, %127
- %129:i32 = let %128
- %130:u32 = access %vec2_u32, 0u
- %131:i32 = convert %130
- %132:i32 = add %129, %131
- %133:i32 = let %132
- %134:f16 = access %vec2_f16, 0u
- %135:i32 = call %tint_f16_to_i32, %134
- %136:i32 = add %133, %135
- %137:i32 = let %136
- %138:f32 = access %vec3_f32, 1u
- %139:i32 = call %tint_f32_to_i32, %138
- %140:i32 = add %137, %139
- %141:i32 = access %vec3_i32, 1u
- %142:i32 = add %140, %141
- %143:i32 = let %142
- %144:u32 = access %vec3_u32, 1u
- %145:i32 = convert %144
- %146:i32 = add %143, %145
- %147:i32 = let %146
- %148:f16 = access %vec3_f16, 1u
- %149:i32 = call %tint_f16_to_i32, %148
- %150:i32 = add %147, %149
- %151:i32 = let %150
- %152:f32 = access %vec4_f32, 2u
- %153:i32 = call %tint_f32_to_i32, %152
- %154:i32 = add %151, %153
- %155:i32 = access %vec4_i32, 2u
- %156:i32 = add %154, %155
- %157:i32 = let %156
- %158:u32 = access %vec4_u32, 2u
- %159:i32 = convert %158
- %160:i32 = add %157, %159
- %161:i32 = let %160
- %162:f16 = access %vec4_f16, 2u
- %163:i32 = call %tint_f16_to_i32, %162
- %164:i32 = add %161, %163
- %165:i32 = let %164
- %166:f32 = access %mat2x2_f32, 0i, 0u
- %167:i32 = call %tint_f32_to_i32, %166
- %168:i32 = add %165, %167
- %169:i32 = let %168
- %170:f32 = access %mat2x3_f32, 0i, 0u
- %171:i32 = call %tint_f32_to_i32, %170
- %172:i32 = add %169, %171
- %173:i32 = let %172
- %174:f32 = access %mat2x4_f32, 0i, 0u
- %175:i32 = call %tint_f32_to_i32, %174
- %176:i32 = add %173, %175
- %177:i32 = let %176
- %178:f32 = access %mat3x2_f32, 0i, 0u
- %179:i32 = call %tint_f32_to_i32, %178
- %180:i32 = add %177, %179
- %181:i32 = let %180
- %182:f32 = access %mat3x3_f32, 0i, 0u
- %183:i32 = call %tint_f32_to_i32, %182
- %184:i32 = add %181, %183
- %185:i32 = let %184
- %186:f32 = access %mat3x4_f32, 0i, 0u
- %187:i32 = call %tint_f32_to_i32, %186
- %188:i32 = add %185, %187
- %189:i32 = let %188
- %190:f32 = access %mat4x2_f32, 0i, 0u
- %191:i32 = call %tint_f32_to_i32, %190
- %192:i32 = add %189, %191
- %193:i32 = let %192
- %194:f32 = access %mat4x3_f32, 0i, 0u
- %195:i32 = call %tint_f32_to_i32, %194
- %196:i32 = add %193, %195
- %197:i32 = let %196
- %198:f32 = access %mat4x4_f32, 0i, 0u
- %199:i32 = call %tint_f32_to_i32, %198
- %200:i32 = add %197, %199
- %201:i32 = let %200
- %202:f16 = access %mat2x2_f16, 0i, 0u
- %203:i32 = call %tint_f16_to_i32, %202
- %204:i32 = add %201, %203
- %205:i32 = let %204
- %206:f16 = access %mat2x3_f16, 0i, 0u
- %207:i32 = call %tint_f16_to_i32, %206
- %208:i32 = add %205, %207
- %209:i32 = let %208
- %210:f16 = access %mat2x4_f16, 0i, 0u
- %211:i32 = call %tint_f16_to_i32, %210
- %212:i32 = add %209, %211
- %213:i32 = let %212
- %214:f16 = access %mat3x2_f16, 0i, 0u
- %215:i32 = call %tint_f16_to_i32, %214
- %216:i32 = add %213, %215
- %217:i32 = let %216
- %218:f16 = access %mat3x3_f16, 0i, 0u
- %219:i32 = call %tint_f16_to_i32, %218
- %220:i32 = add %217, %219
- %221:i32 = let %220
- %222:f16 = access %mat3x4_f16, 0i, 0u
- %223:i32 = call %tint_f16_to_i32, %222
- %224:i32 = add %221, %223
- %225:i32 = let %224
- %226:f16 = access %mat4x2_f16, 0i, 0u
- %227:i32 = call %tint_f16_to_i32, %226
- %228:i32 = add %225, %227
- %229:i32 = let %228
- %230:f16 = access %mat4x3_f16, 0i, 0u
- %231:i32 = call %tint_f16_to_i32, %230
- %232:i32 = add %229, %231
- %233:i32 = let %232
- %234:f16 = access %mat4x4_f16, 0i, 0u
- %235:i32 = call %tint_f16_to_i32, %234
- %236:i32 = add %233, %235
- %237:i32 = let %236
- %238:f16 = access %arr2_mat4x2_f16, 0i, 0i, 0u
- %239:i32 = call %tint_f16_to_i32, %238
- %240:i32 = add %237, %239
- %241:i32 = let %240
- %242:f32 = access %arr2_vec3_f32, 0i, 0u
- %243:i32 = call %tint_f32_to_i32, %242
- %244:i32 = add %241, %243
- store %s, %244
- ret
- }
+void tint_symbol_inner(uint idx, tint_module_vars_struct tint_module_vars) {
+ float const scalar_f32 = (*tint_module_vars.sb).arr[idx].scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.sb).arr[idx].scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.sb).arr[idx].scalar_u32;
+ half const scalar_f16 = (*tint_module_vars.sb).arr[idx].scalar_f16;
+ float2 const vec2_f32 = (*tint_module_vars.sb).arr[idx].vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.sb).arr[idx].vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.sb).arr[idx].vec2_u32;
+ half2 const vec2_f16 = (*tint_module_vars.sb).arr[idx].vec2_f16;
+ float3 const vec3_f32 = (*tint_module_vars.sb).arr[idx].vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.sb).arr[idx].vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.sb).arr[idx].vec3_u32;
+ half3 const vec3_f16 = (*tint_module_vars.sb).arr[idx].vec3_f16;
+ float4 const vec4_f32 = (*tint_module_vars.sb).arr[idx].vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.sb).arr[idx].vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.sb).arr[idx].vec4_u32;
+ half4 const vec4_f16 = (*tint_module_vars.sb).arr[idx].vec4_f16;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.sb).arr[idx].mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.sb).arr[idx].mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.sb).arr[idx].mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.sb).arr[idx].mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.sb).arr[idx].mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.sb).arr[idx].mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.sb).arr[idx].mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.sb).arr[idx].mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.sb).arr[idx].mat4x4_f32;
+ half2x2 const mat2x2_f16 = (*tint_module_vars.sb).arr[idx].mat2x2_f16;
+ half2x3 const mat2x3_f16 = (*tint_module_vars.sb).arr[idx].mat2x3_f16;
+ half2x4 const mat2x4_f16 = (*tint_module_vars.sb).arr[idx].mat2x4_f16;
+ half3x2 const mat3x2_f16 = (*tint_module_vars.sb).arr[idx].mat3x2_f16;
+ half3x3 const mat3x3_f16 = (*tint_module_vars.sb).arr[idx].mat3x3_f16;
+ half3x4 const mat3x4_f16 = (*tint_module_vars.sb).arr[idx].mat3x4_f16;
+ half4x2 const mat4x2_f16 = (*tint_module_vars.sb).arr[idx].mat4x2_f16;
+ half4x3 const mat4x3_f16 = (*tint_module_vars.sb).arr[idx].mat4x3_f16;
+ half4x4 const mat4x4_f16 = (*tint_module_vars.sb).arr[idx].mat4x4_f16;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.sb).arr[idx].arr2_vec3_f32;
+ tint_array<half4x2, 2> const arr2_mat4x2_f16 = (*tint_module_vars.sb).arr[idx].arr2_mat4x2_f16;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = (v_1 + tint_f16_to_i32(scalar_f16));
+ int const v_3 = ((v_2 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_4 = (v_3 + int(vec2_u32[0u]));
+ int const v_5 = (v_4 + tint_f16_to_i32(vec2_f16[0u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_7 = (v_6 + int(vec3_u32[1u]));
+ int const v_8 = (v_7 + tint_f16_to_i32(vec3_f16[1u]));
+ int const v_9 = ((v_8 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_10 = (v_9 + int(vec4_u32[2u]));
+ int const v_11 = (v_10 + tint_f16_to_i32(vec4_f16[2u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_17 = (v_16 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_18 = (v_17 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_19 = (v_18 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_20 = (v_19 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ int const v_21 = (v_20 + tint_f16_to_i32(mat2x2_f16[0][0u]));
+ int const v_22 = (v_21 + tint_f16_to_i32(mat2x3_f16[0][0u]));
+ int const v_23 = (v_22 + tint_f16_to_i32(mat2x4_f16[0][0u]));
+ int const v_24 = (v_23 + tint_f16_to_i32(mat3x2_f16[0][0u]));
+ int const v_25 = (v_24 + tint_f16_to_i32(mat3x3_f16[0][0u]));
+ int const v_26 = (v_25 + tint_f16_to_i32(mat3x4_f16[0][0u]));
+ int const v_27 = (v_26 + tint_f16_to_i32(mat4x2_f16[0][0u]));
+ int const v_28 = (v_27 + tint_f16_to_i32(mat4x3_f16[0][0u]));
+ int const v_29 = (v_28 + tint_f16_to_i32(mat4x4_f16[0][0u]));
+ int const v_30 = (v_29 + tint_f16_to_i32(arr2_mat4x2_f16[0][0][0u]));
+ (*tint_module_vars.s) = (v_30 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %246:i32 = convert %value
- %247:bool = gte %value, -2147483648.0f
- %248:i32 = select -2147483648i, %246, %247
- %249:bool = lte %value, 2147483520.0f
- %250:i32 = select 2147483647i, %248, %249
- ret %250
- }
+kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], const device S* sb [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb, .s=s};
+ tint_symbol_inner(idx, tint_module_vars);
}
-%tint_f16_to_i32 = func(%value_1:f16):i32 { # %value_1: 'value'
- $B4: {
- %252:i32 = convert %value_1
- %253:bool = gte %value_1, -65504.0h
- %254:i32 = select -2147483648i, %252, %253
- %255:bool = lte %value_1, 65504.0h
- %256:i32 = select 2147483647i, %254, %255
- ret %256
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl
index 8db9155..2daaefc 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.msl
@@ -1,214 +1,97 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
- scalar_i32:i32 @offset(0)
- scalar_f32:f32 @offset(4)
-}
+struct Inner {
+ int scalar_i32;
+ float scalar_f32;
+};
+struct S {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ tint_array<float3, 2> arr2_vec3_f32;
+ Inner struct_inner;
+ tint_array<Inner, 4> array_struct_inner;
+};
+struct tint_module_vars_struct {
+ const device S* sb;
+ device int* s;
+};
-S = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec4_f32:vec4<f32> @offset(96)
- vec4_i32:vec4<i32> @offset(112)
- vec4_u32:vec4<u32> @offset(128)
- mat2x2_f32:mat2x2<f32> @offset(144)
- mat2x3_f32:mat2x3<f32> @offset(160)
- mat2x4_f32:mat2x4<f32> @offset(192)
- mat3x2_f32:mat3x2<f32> @offset(224)
- mat3x3_f32:mat3x3<f32> @offset(256)
- mat3x4_f32:mat3x4<f32> @offset(304)
- mat4x2_f32:mat4x2<f32> @offset(352)
- mat4x3_f32:mat4x3<f32> @offset(384)
- mat4x4_f32:mat4x4<f32> @offset(448)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
- struct_inner:Inner @offset(544)
- array_struct_inner:array<Inner, 4> @offset(552)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %sb:ptr<storage, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device S* sb [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb, .s=s};
+ float const scalar_f32 = (*tint_module_vars.sb).scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.sb).scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.sb).scalar_u32;
+ float2 const vec2_f32 = (*tint_module_vars.sb).vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.sb).vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.sb).vec2_u32;
+ float3 const vec3_f32 = (*tint_module_vars.sb).vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.sb).vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.sb).vec3_u32;
+ float4 const vec4_f32 = (*tint_module_vars.sb).vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.sb).vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.sb).vec4_u32;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.sb).mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.sb).mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.sb).mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.sb).mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.sb).mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.sb).mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.sb).mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.sb).mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.sb).mat4x4_f32;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.sb).arr2_vec3_f32;
+ Inner const struct_inner = (*tint_module_vars.sb).struct_inner;
+ tint_array<Inner, 4> const array_struct_inner = (*tint_module_vars.sb).array_struct_inner;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = ((v_1 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_3 = (v_2 + int(vec2_u32[0u]));
+ int const v_4 = ((v_3 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_5 = (v_4 + int(vec3_u32[1u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_7 = (v_6 + int(vec4_u32[2u]));
+ int const v_8 = (v_7 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_9 = (v_8 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_10 = (v_9 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_11 = (v_10 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ (*tint_module_vars.s) = (((v_16 + tint_f32_to_i32(arr2_vec3_f32[0][0u])) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32);
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %4:ptr<storage, f32, read> = access %sb, 0u
- %5:f32 = load %4
- %scalar_f32:f32 = let %5
- %7:ptr<storage, i32, read> = access %sb, 1u
- %8:i32 = load %7
- %scalar_i32:i32 = let %8
- %10:ptr<storage, u32, read> = access %sb, 2u
- %11:u32 = load %10
- %scalar_u32:u32 = let %11
- %13:ptr<storage, vec2<f32>, read> = access %sb, 3u
- %14:vec2<f32> = load %13
- %vec2_f32:vec2<f32> = let %14
- %16:ptr<storage, vec2<i32>, read> = access %sb, 4u
- %17:vec2<i32> = load %16
- %vec2_i32:vec2<i32> = let %17
- %19:ptr<storage, vec2<u32>, read> = access %sb, 5u
- %20:vec2<u32> = load %19
- %vec2_u32:vec2<u32> = let %20
- %22:ptr<storage, vec3<f32>, read> = access %sb, 6u
- %23:vec3<f32> = load %22
- %vec3_f32:vec3<f32> = let %23
- %25:ptr<storage, vec3<i32>, read> = access %sb, 7u
- %26:vec3<i32> = load %25
- %vec3_i32:vec3<i32> = let %26
- %28:ptr<storage, vec3<u32>, read> = access %sb, 8u
- %29:vec3<u32> = load %28
- %vec3_u32:vec3<u32> = let %29
- %31:ptr<storage, vec4<f32>, read> = access %sb, 9u
- %32:vec4<f32> = load %31
- %vec4_f32:vec4<f32> = let %32
- %34:ptr<storage, vec4<i32>, read> = access %sb, 10u
- %35:vec4<i32> = load %34
- %vec4_i32:vec4<i32> = let %35
- %37:ptr<storage, vec4<u32>, read> = access %sb, 11u
- %38:vec4<u32> = load %37
- %vec4_u32:vec4<u32> = let %38
- %40:ptr<storage, mat2x2<f32>, read> = access %sb, 12u
- %41:mat2x2<f32> = load %40
- %mat2x2_f32:mat2x2<f32> = let %41
- %43:ptr<storage, mat2x3<f32>, read> = access %sb, 13u
- %44:mat2x3<f32> = load %43
- %mat2x3_f32:mat2x3<f32> = let %44
- %46:ptr<storage, mat2x4<f32>, read> = access %sb, 14u
- %47:mat2x4<f32> = load %46
- %mat2x4_f32:mat2x4<f32> = let %47
- %49:ptr<storage, mat3x2<f32>, read> = access %sb, 15u
- %50:mat3x2<f32> = load %49
- %mat3x2_f32:mat3x2<f32> = let %50
- %52:ptr<storage, mat3x3<f32>, read> = access %sb, 16u
- %53:mat3x3<f32> = load %52
- %mat3x3_f32:mat3x3<f32> = let %53
- %55:ptr<storage, mat3x4<f32>, read> = access %sb, 17u
- %56:mat3x4<f32> = load %55
- %mat3x4_f32:mat3x4<f32> = let %56
- %58:ptr<storage, mat4x2<f32>, read> = access %sb, 18u
- %59:mat4x2<f32> = load %58
- %mat4x2_f32:mat4x2<f32> = let %59
- %61:ptr<storage, mat4x3<f32>, read> = access %sb, 19u
- %62:mat4x3<f32> = load %61
- %mat4x3_f32:mat4x3<f32> = let %62
- %64:ptr<storage, mat4x4<f32>, read> = access %sb, 20u
- %65:mat4x4<f32> = load %64
- %mat4x4_f32:mat4x4<f32> = let %65
- %67:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 21u
- %68:array<vec3<f32>, 2> = load %67
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %68
- %70:ptr<storage, Inner, read> = access %sb, 22u
- %71:Inner = load %70
- %struct_inner:Inner = let %71
- %73:ptr<storage, array<Inner, 4>, read> = access %sb, 23u
- %74:array<Inner, 4> = load %73
- %array_struct_inner:array<Inner, 4> = let %74
- %76:i32 = call %tint_f32_to_i32, %scalar_f32
- %78:i32 = add %76, %scalar_i32
- %79:i32 = let %78
- %80:i32 = convert %scalar_u32
- %81:i32 = add %79, %80
- %82:i32 = let %81
- %83:f32 = access %vec2_f32, 0u
- %84:i32 = call %tint_f32_to_i32, %83
- %85:i32 = add %82, %84
- %86:i32 = access %vec2_i32, 0u
- %87:i32 = add %85, %86
- %88:i32 = let %87
- %89:u32 = access %vec2_u32, 0u
- %90:i32 = convert %89
- %91:i32 = add %88, %90
- %92:i32 = let %91
- %93:f32 = access %vec3_f32, 1u
- %94:i32 = call %tint_f32_to_i32, %93
- %95:i32 = add %92, %94
- %96:i32 = access %vec3_i32, 1u
- %97:i32 = add %95, %96
- %98:i32 = let %97
- %99:u32 = access %vec3_u32, 1u
- %100:i32 = convert %99
- %101:i32 = add %98, %100
- %102:i32 = let %101
- %103:f32 = access %vec4_f32, 2u
- %104:i32 = call %tint_f32_to_i32, %103
- %105:i32 = add %102, %104
- %106:i32 = access %vec4_i32, 2u
- %107:i32 = add %105, %106
- %108:i32 = let %107
- %109:u32 = access %vec4_u32, 2u
- %110:i32 = convert %109
- %111:i32 = add %108, %110
- %112:i32 = let %111
- %113:f32 = access %mat2x2_f32, 0i, 0u
- %114:i32 = call %tint_f32_to_i32, %113
- %115:i32 = add %112, %114
- %116:i32 = let %115
- %117:f32 = access %mat2x3_f32, 0i, 0u
- %118:i32 = call %tint_f32_to_i32, %117
- %119:i32 = add %116, %118
- %120:i32 = let %119
- %121:f32 = access %mat2x4_f32, 0i, 0u
- %122:i32 = call %tint_f32_to_i32, %121
- %123:i32 = add %120, %122
- %124:i32 = let %123
- %125:f32 = access %mat3x2_f32, 0i, 0u
- %126:i32 = call %tint_f32_to_i32, %125
- %127:i32 = add %124, %126
- %128:i32 = let %127
- %129:f32 = access %mat3x3_f32, 0i, 0u
- %130:i32 = call %tint_f32_to_i32, %129
- %131:i32 = add %128, %130
- %132:i32 = let %131
- %133:f32 = access %mat3x4_f32, 0i, 0u
- %134:i32 = call %tint_f32_to_i32, %133
- %135:i32 = add %132, %134
- %136:i32 = let %135
- %137:f32 = access %mat4x2_f32, 0i, 0u
- %138:i32 = call %tint_f32_to_i32, %137
- %139:i32 = add %136, %138
- %140:i32 = let %139
- %141:f32 = access %mat4x3_f32, 0i, 0u
- %142:i32 = call %tint_f32_to_i32, %141
- %143:i32 = add %140, %142
- %144:i32 = let %143
- %145:f32 = access %mat4x4_f32, 0i, 0u
- %146:i32 = call %tint_f32_to_i32, %145
- %147:i32 = add %144, %146
- %148:i32 = let %147
- %149:f32 = access %arr2_vec3_f32, 0i, 0u
- %150:i32 = call %tint_f32_to_i32, %149
- %151:i32 = add %148, %150
- %152:i32 = access %struct_inner, 0u
- %153:i32 = add %151, %152
- %154:i32 = access %array_struct_inner, 0i, 0u
- %155:i32 = add %153, %154
- store %s, %155
- ret
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %157:i32 = convert %value
- %158:bool = gte %value, -2147483648.0f
- %159:i32 = select -2147483648i, %157, %158
- %160:bool = lte %value, 2147483520.0f
- %161:i32 = select 2147483647i, %159, %160
- ret %161
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl
index 799ebd2..d730a84 100644
--- a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.msl
@@ -1,336 +1,143 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
- scalar_i32:i32 @offset(0)
- scalar_f32:f32 @offset(4)
- scalar_f16:f16 @offset(8)
-}
+struct Inner {
+ int scalar_i32;
+ float scalar_f32;
+ half scalar_f16;
+};
+struct S {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ half scalar_f16;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ half2 vec2_f16;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ half3 vec3_f16;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ half4 vec4_f16;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ half2x2 mat2x2_f16;
+ half2x3 mat2x3_f16;
+ half2x4 mat2x4_f16;
+ half3x2 mat3x2_f16;
+ half3x3 mat3x3_f16;
+ half3x4 mat3x4_f16;
+ half4x2 mat4x2_f16;
+ half4x3 mat4x3_f16;
+ half4x4 mat4x4_f16;
+ tint_array<float3, 2> arr2_vec3_f32;
+ tint_array<half4x2, 2> arr2_mat4x2_f16;
+ Inner struct_inner;
+ tint_array<Inner, 4> array_struct_inner;
+};
+struct tint_module_vars_struct {
+ const device S* sb;
+ device int* s;
+};
-S = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- scalar_f16:f16 @offset(12)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec2_f16:vec2<f16> @offset(40)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec3_f16:vec3<f16> @offset(96)
- vec4_f32:vec4<f32> @offset(112)
- vec4_i32:vec4<i32> @offset(128)
- vec4_u32:vec4<u32> @offset(144)
- vec4_f16:vec4<f16> @offset(160)
- mat2x2_f32:mat2x2<f32> @offset(168)
- mat2x3_f32:mat2x3<f32> @offset(192)
- mat2x4_f32:mat2x4<f32> @offset(224)
- mat3x2_f32:mat3x2<f32> @offset(256)
- mat3x3_f32:mat3x3<f32> @offset(288)
- mat3x4_f32:mat3x4<f32> @offset(336)
- mat4x2_f32:mat4x2<f32> @offset(384)
- mat4x3_f32:mat4x3<f32> @offset(416)
- mat4x4_f32:mat4x4<f32> @offset(480)
- mat2x2_f16:mat2x2<f16> @offset(544)
- mat2x3_f16:mat2x3<f16> @offset(552)
- mat2x4_f16:mat2x4<f16> @offset(568)
- mat3x2_f16:mat3x2<f16> @offset(584)
- mat3x3_f16:mat3x3<f16> @offset(600)
- mat3x4_f16:mat3x4<f16> @offset(624)
- mat4x2_f16:mat4x2<f16> @offset(648)
- mat4x3_f16:mat4x3<f16> @offset(664)
- mat4x4_f16:mat4x4<f16> @offset(696)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
- arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
- struct_inner:Inner @offset(800)
- array_struct_inner:array<Inner, 4> @offset(812)
+int tint_f16_to_i32(half value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
}
-
-$B1: { # root
- %sb:ptr<storage, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %4:ptr<storage, f32, read> = access %sb, 0u
- %5:f32 = load %4
- %scalar_f32:f32 = let %5
- %7:ptr<storage, i32, read> = access %sb, 1u
- %8:i32 = load %7
- %scalar_i32:i32 = let %8
- %10:ptr<storage, u32, read> = access %sb, 2u
- %11:u32 = load %10
- %scalar_u32:u32 = let %11
- %13:ptr<storage, f16, read> = access %sb, 3u
- %14:f16 = load %13
- %scalar_f16:f16 = let %14
- %16:ptr<storage, vec2<f32>, read> = access %sb, 4u
- %17:vec2<f32> = load %16
- %vec2_f32:vec2<f32> = let %17
- %19:ptr<storage, vec2<i32>, read> = access %sb, 5u
- %20:vec2<i32> = load %19
- %vec2_i32:vec2<i32> = let %20
- %22:ptr<storage, vec2<u32>, read> = access %sb, 6u
- %23:vec2<u32> = load %22
- %vec2_u32:vec2<u32> = let %23
- %25:ptr<storage, vec2<f16>, read> = access %sb, 7u
- %26:vec2<f16> = load %25
- %vec2_f16:vec2<f16> = let %26
- %28:ptr<storage, vec3<f32>, read> = access %sb, 8u
- %29:vec3<f32> = load %28
- %vec3_f32:vec3<f32> = let %29
- %31:ptr<storage, vec3<i32>, read> = access %sb, 9u
- %32:vec3<i32> = load %31
- %vec3_i32:vec3<i32> = let %32
- %34:ptr<storage, vec3<u32>, read> = access %sb, 10u
- %35:vec3<u32> = load %34
- %vec3_u32:vec3<u32> = let %35
- %37:ptr<storage, vec3<f16>, read> = access %sb, 11u
- %38:vec3<f16> = load %37
- %vec3_f16:vec3<f16> = let %38
- %40:ptr<storage, vec4<f32>, read> = access %sb, 12u
- %41:vec4<f32> = load %40
- %vec4_f32:vec4<f32> = let %41
- %43:ptr<storage, vec4<i32>, read> = access %sb, 13u
- %44:vec4<i32> = load %43
- %vec4_i32:vec4<i32> = let %44
- %46:ptr<storage, vec4<u32>, read> = access %sb, 14u
- %47:vec4<u32> = load %46
- %vec4_u32:vec4<u32> = let %47
- %49:ptr<storage, vec4<f16>, read> = access %sb, 15u
- %50:vec4<f16> = load %49
- %vec4_f16:vec4<f16> = let %50
- %52:ptr<storage, mat2x2<f32>, read> = access %sb, 16u
- %53:mat2x2<f32> = load %52
- %mat2x2_f32:mat2x2<f32> = let %53
- %55:ptr<storage, mat2x3<f32>, read> = access %sb, 17u
- %56:mat2x3<f32> = load %55
- %mat2x3_f32:mat2x3<f32> = let %56
- %58:ptr<storage, mat2x4<f32>, read> = access %sb, 18u
- %59:mat2x4<f32> = load %58
- %mat2x4_f32:mat2x4<f32> = let %59
- %61:ptr<storage, mat3x2<f32>, read> = access %sb, 19u
- %62:mat3x2<f32> = load %61
- %mat3x2_f32:mat3x2<f32> = let %62
- %64:ptr<storage, mat3x3<f32>, read> = access %sb, 20u
- %65:mat3x3<f32> = load %64
- %mat3x3_f32:mat3x3<f32> = let %65
- %67:ptr<storage, mat3x4<f32>, read> = access %sb, 21u
- %68:mat3x4<f32> = load %67
- %mat3x4_f32:mat3x4<f32> = let %68
- %70:ptr<storage, mat4x2<f32>, read> = access %sb, 22u
- %71:mat4x2<f32> = load %70
- %mat4x2_f32:mat4x2<f32> = let %71
- %73:ptr<storage, mat4x3<f32>, read> = access %sb, 23u
- %74:mat4x3<f32> = load %73
- %mat4x3_f32:mat4x3<f32> = let %74
- %76:ptr<storage, mat4x4<f32>, read> = access %sb, 24u
- %77:mat4x4<f32> = load %76
- %mat4x4_f32:mat4x4<f32> = let %77
- %79:ptr<storage, mat2x2<f16>, read> = access %sb, 25u
- %80:mat2x2<f16> = load %79
- %mat2x2_f16:mat2x2<f16> = let %80
- %82:ptr<storage, mat2x3<f16>, read> = access %sb, 26u
- %83:mat2x3<f16> = load %82
- %mat2x3_f16:mat2x3<f16> = let %83
- %85:ptr<storage, mat2x4<f16>, read> = access %sb, 27u
- %86:mat2x4<f16> = load %85
- %mat2x4_f16:mat2x4<f16> = let %86
- %88:ptr<storage, mat3x2<f16>, read> = access %sb, 28u
- %89:mat3x2<f16> = load %88
- %mat3x2_f16:mat3x2<f16> = let %89
- %91:ptr<storage, mat3x3<f16>, read> = access %sb, 29u
- %92:mat3x3<f16> = load %91
- %mat3x3_f16:mat3x3<f16> = let %92
- %94:ptr<storage, mat3x4<f16>, read> = access %sb, 30u
- %95:mat3x4<f16> = load %94
- %mat3x4_f16:mat3x4<f16> = let %95
- %97:ptr<storage, mat4x2<f16>, read> = access %sb, 31u
- %98:mat4x2<f16> = load %97
- %mat4x2_f16:mat4x2<f16> = let %98
- %100:ptr<storage, mat4x3<f16>, read> = access %sb, 32u
- %101:mat4x3<f16> = load %100
- %mat4x3_f16:mat4x3<f16> = let %101
- %103:ptr<storage, mat4x4<f16>, read> = access %sb, 33u
- %104:mat4x4<f16> = load %103
- %mat4x4_f16:mat4x4<f16> = let %104
- %106:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 34u
- %107:array<vec3<f32>, 2> = load %106
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %107
- %109:ptr<storage, array<mat4x2<f16>, 2>, read> = access %sb, 35u
- %110:array<mat4x2<f16>, 2> = load %109
- %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = let %110
- %112:ptr<storage, Inner, read> = access %sb, 36u
- %113:Inner = load %112
- %struct_inner:Inner = let %113
- %115:ptr<storage, array<Inner, 4>, read> = access %sb, 37u
- %116:array<Inner, 4> = load %115
- %array_struct_inner:array<Inner, 4> = let %116
- %118:i32 = call %tint_f32_to_i32, %scalar_f32
- %120:i32 = add %118, %scalar_i32
- %121:i32 = let %120
- %122:i32 = convert %scalar_u32
- %123:i32 = add %121, %122
- %124:i32 = let %123
- %125:i32 = call %tint_f16_to_i32, %scalar_f16
- %127:i32 = add %124, %125
- %128:i32 = let %127
- %129:f32 = access %vec2_f32, 0u
- %130:i32 = call %tint_f32_to_i32, %129
- %131:i32 = add %128, %130
- %132:i32 = access %vec2_i32, 0u
- %133:i32 = add %131, %132
- %134:i32 = let %133
- %135:u32 = access %vec2_u32, 0u
- %136:i32 = convert %135
- %137:i32 = add %134, %136
- %138:i32 = let %137
- %139:f16 = access %vec2_f16, 0u
- %140:i32 = call %tint_f16_to_i32, %139
- %141:i32 = add %138, %140
- %142:i32 = let %141
- %143:f32 = access %vec3_f32, 1u
- %144:i32 = call %tint_f32_to_i32, %143
- %145:i32 = add %142, %144
- %146:i32 = access %vec3_i32, 1u
- %147:i32 = add %145, %146
- %148:i32 = let %147
- %149:u32 = access %vec3_u32, 1u
- %150:i32 = convert %149
- %151:i32 = add %148, %150
- %152:i32 = let %151
- %153:f16 = access %vec3_f16, 1u
- %154:i32 = call %tint_f16_to_i32, %153
- %155:i32 = add %152, %154
- %156:i32 = let %155
- %157:f32 = access %vec4_f32, 2u
- %158:i32 = call %tint_f32_to_i32, %157
- %159:i32 = add %156, %158
- %160:i32 = access %vec4_i32, 2u
- %161:i32 = add %159, %160
- %162:i32 = let %161
- %163:u32 = access %vec4_u32, 2u
- %164:i32 = convert %163
- %165:i32 = add %162, %164
- %166:i32 = let %165
- %167:f16 = access %vec4_f16, 2u
- %168:i32 = call %tint_f16_to_i32, %167
- %169:i32 = add %166, %168
- %170:i32 = let %169
- %171:f32 = access %mat2x2_f32, 0i, 0u
- %172:i32 = call %tint_f32_to_i32, %171
- %173:i32 = add %170, %172
- %174:i32 = let %173
- %175:f32 = access %mat2x3_f32, 0i, 0u
- %176:i32 = call %tint_f32_to_i32, %175
- %177:i32 = add %174, %176
- %178:i32 = let %177
- %179:f32 = access %mat2x4_f32, 0i, 0u
- %180:i32 = call %tint_f32_to_i32, %179
- %181:i32 = add %178, %180
- %182:i32 = let %181
- %183:f32 = access %mat3x2_f32, 0i, 0u
- %184:i32 = call %tint_f32_to_i32, %183
- %185:i32 = add %182, %184
- %186:i32 = let %185
- %187:f32 = access %mat3x3_f32, 0i, 0u
- %188:i32 = call %tint_f32_to_i32, %187
- %189:i32 = add %186, %188
- %190:i32 = let %189
- %191:f32 = access %mat3x4_f32, 0i, 0u
- %192:i32 = call %tint_f32_to_i32, %191
- %193:i32 = add %190, %192
- %194:i32 = let %193
- %195:f32 = access %mat4x2_f32, 0i, 0u
- %196:i32 = call %tint_f32_to_i32, %195
- %197:i32 = add %194, %196
- %198:i32 = let %197
- %199:f32 = access %mat4x3_f32, 0i, 0u
- %200:i32 = call %tint_f32_to_i32, %199
- %201:i32 = add %198, %200
- %202:i32 = let %201
- %203:f32 = access %mat4x4_f32, 0i, 0u
- %204:i32 = call %tint_f32_to_i32, %203
- %205:i32 = add %202, %204
- %206:i32 = let %205
- %207:f16 = access %mat2x2_f16, 0i, 0u
- %208:i32 = call %tint_f16_to_i32, %207
- %209:i32 = add %206, %208
- %210:i32 = let %209
- %211:f16 = access %mat2x3_f16, 0i, 0u
- %212:i32 = call %tint_f16_to_i32, %211
- %213:i32 = add %210, %212
- %214:i32 = let %213
- %215:f16 = access %mat2x4_f16, 0i, 0u
- %216:i32 = call %tint_f16_to_i32, %215
- %217:i32 = add %214, %216
- %218:i32 = let %217
- %219:f16 = access %mat3x2_f16, 0i, 0u
- %220:i32 = call %tint_f16_to_i32, %219
- %221:i32 = add %218, %220
- %222:i32 = let %221
- %223:f16 = access %mat3x3_f16, 0i, 0u
- %224:i32 = call %tint_f16_to_i32, %223
- %225:i32 = add %222, %224
- %226:i32 = let %225
- %227:f16 = access %mat3x4_f16, 0i, 0u
- %228:i32 = call %tint_f16_to_i32, %227
- %229:i32 = add %226, %228
- %230:i32 = let %229
- %231:f16 = access %mat4x2_f16, 0i, 0u
- %232:i32 = call %tint_f16_to_i32, %231
- %233:i32 = add %230, %232
- %234:i32 = let %233
- %235:f16 = access %mat4x3_f16, 0i, 0u
- %236:i32 = call %tint_f16_to_i32, %235
- %237:i32 = add %234, %236
- %238:i32 = let %237
- %239:f16 = access %mat4x4_f16, 0i, 0u
- %240:i32 = call %tint_f16_to_i32, %239
- %241:i32 = add %238, %240
- %242:i32 = let %241
- %243:f32 = access %arr2_vec3_f32, 0i, 0u
- %244:i32 = call %tint_f32_to_i32, %243
- %245:i32 = add %242, %244
- %246:i32 = let %245
- %247:f16 = access %arr2_mat4x2_f16, 0i, 0i, 0u
- %248:i32 = call %tint_f16_to_i32, %247
- %249:i32 = add %246, %248
- %250:i32 = access %struct_inner, 0u
- %251:i32 = add %249, %250
- %252:i32 = access %array_struct_inner, 0i, 0u
- %253:i32 = add %251, %252
- store %s, %253
- ret
- }
+kernel void tint_symbol(const device S* sb [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb, .s=s};
+ float const scalar_f32 = (*tint_module_vars.sb).scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.sb).scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.sb).scalar_u32;
+ half const scalar_f16 = (*tint_module_vars.sb).scalar_f16;
+ float2 const vec2_f32 = (*tint_module_vars.sb).vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.sb).vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.sb).vec2_u32;
+ half2 const vec2_f16 = (*tint_module_vars.sb).vec2_f16;
+ float3 const vec3_f32 = (*tint_module_vars.sb).vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.sb).vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.sb).vec3_u32;
+ half3 const vec3_f16 = (*tint_module_vars.sb).vec3_f16;
+ float4 const vec4_f32 = (*tint_module_vars.sb).vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.sb).vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.sb).vec4_u32;
+ half4 const vec4_f16 = (*tint_module_vars.sb).vec4_f16;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.sb).mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.sb).mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.sb).mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.sb).mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.sb).mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.sb).mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.sb).mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.sb).mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.sb).mat4x4_f32;
+ half2x2 const mat2x2_f16 = (*tint_module_vars.sb).mat2x2_f16;
+ half2x3 const mat2x3_f16 = (*tint_module_vars.sb).mat2x3_f16;
+ half2x4 const mat2x4_f16 = (*tint_module_vars.sb).mat2x4_f16;
+ half3x2 const mat3x2_f16 = (*tint_module_vars.sb).mat3x2_f16;
+ half3x3 const mat3x3_f16 = (*tint_module_vars.sb).mat3x3_f16;
+ half3x4 const mat3x4_f16 = (*tint_module_vars.sb).mat3x4_f16;
+ half4x2 const mat4x2_f16 = (*tint_module_vars.sb).mat4x2_f16;
+ half4x3 const mat4x3_f16 = (*tint_module_vars.sb).mat4x3_f16;
+ half4x4 const mat4x4_f16 = (*tint_module_vars.sb).mat4x4_f16;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.sb).arr2_vec3_f32;
+ tint_array<half4x2, 2> const arr2_mat4x2_f16 = (*tint_module_vars.sb).arr2_mat4x2_f16;
+ Inner const struct_inner = (*tint_module_vars.sb).struct_inner;
+ tint_array<Inner, 4> const array_struct_inner = (*tint_module_vars.sb).array_struct_inner;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = (v_1 + tint_f16_to_i32(scalar_f16));
+ int const v_3 = ((v_2 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_4 = (v_3 + int(vec2_u32[0u]));
+ int const v_5 = (v_4 + tint_f16_to_i32(vec2_f16[0u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_7 = (v_6 + int(vec3_u32[1u]));
+ int const v_8 = (v_7 + tint_f16_to_i32(vec3_f16[1u]));
+ int const v_9 = ((v_8 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_10 = (v_9 + int(vec4_u32[2u]));
+ int const v_11 = (v_10 + tint_f16_to_i32(vec4_f16[2u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_17 = (v_16 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_18 = (v_17 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_19 = (v_18 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_20 = (v_19 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ int const v_21 = (v_20 + tint_f16_to_i32(mat2x2_f16[0][0u]));
+ int const v_22 = (v_21 + tint_f16_to_i32(mat2x3_f16[0][0u]));
+ int const v_23 = (v_22 + tint_f16_to_i32(mat2x4_f16[0][0u]));
+ int const v_24 = (v_23 + tint_f16_to_i32(mat3x2_f16[0][0u]));
+ int const v_25 = (v_24 + tint_f16_to_i32(mat3x3_f16[0][0u]));
+ int const v_26 = (v_25 + tint_f16_to_i32(mat3x4_f16[0][0u]));
+ int const v_27 = (v_26 + tint_f16_to_i32(mat4x2_f16[0][0u]));
+ int const v_28 = (v_27 + tint_f16_to_i32(mat4x3_f16[0][0u]));
+ int const v_29 = (v_28 + tint_f16_to_i32(mat4x4_f16[0][0u]));
+ int const v_30 = (v_29 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
+ (*tint_module_vars.s) = (((v_30 + tint_f16_to_i32(arr2_mat4x2_f16[0][0][0u])) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32);
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %255:i32 = convert %value
- %256:bool = gte %value, -2147483648.0f
- %257:i32 = select -2147483648i, %255, %256
- %258:bool = lte %value, 2147483520.0f
- %259:i32 = select 2147483647i, %257, %258
- ret %259
- }
-}
-%tint_f16_to_i32 = func(%value_1:f16):i32 { # %value_1: 'value'
- $B4: {
- %261:i32 = convert %value_1
- %262:bool = gte %value_1, -65504.0h
- %263:i32 = select -2147483648i, %261, %262
- %264:bool = lte %value_1, 65504.0h
- %265:i32 = select 2147483647i, %263, %264
- ret %265
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl
index f4695d3..35551d0 100644
--- a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.msl
@@ -1,292 +1,169 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Inner {
+ int scalar_i32;
+ float scalar_f32;
+ half scalar_f16;
+};
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
- scalar_i32:i32 @offset(0)
- scalar_f32:f32 @offset(4)
- scalar_f16:f16 @offset(8)
-}
+struct S {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ half scalar_f16;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ half2 vec2_f16;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ half3 vec3_f16;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ half4 vec4_f16;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ half2x2 mat2x2_f16;
+ half2x3 mat2x3_f16;
+ half2x4 mat2x4_f16;
+ half3x2 mat3x2_f16;
+ half3x3 mat3x3_f16;
+ half3x4 mat3x4_f16;
+ half4x2 mat4x2_f16;
+ half4x3 mat4x3_f16;
+ half4x4 mat4x4_f16;
+ tint_array<float3, 2> arr2_vec3_f32;
+ tint_array<half4x2, 2> arr2_mat4x2_f16;
+ Inner struct_inner;
+ tint_array<Inner, 4> array_struct_inner;
+};
+struct tint_module_vars_struct {
+ device S* sb;
+};
-S = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- scalar_f16:f16 @offset(12)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec2_f16:vec2<f16> @offset(40)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec3_f16:vec3<f16> @offset(96)
- vec4_f32:vec4<f32> @offset(112)
- vec4_i32:vec4<i32> @offset(128)
- vec4_u32:vec4<u32> @offset(144)
- vec4_f16:vec4<f16> @offset(160)
- mat2x2_f32:mat2x2<f32> @offset(168)
- mat2x3_f32:mat2x3<f32> @offset(192)
- mat2x4_f32:mat2x4<f32> @offset(224)
- mat3x2_f32:mat3x2<f32> @offset(256)
- mat3x3_f32:mat3x3<f32> @offset(288)
- mat3x4_f32:mat3x4<f32> @offset(336)
- mat4x2_f32:mat4x2<f32> @offset(384)
- mat4x3_f32:mat4x3<f32> @offset(416)
- mat4x4_f32:mat4x4<f32> @offset(480)
- mat2x2_f16:mat2x2<f16> @offset(544)
- mat2x3_f16:mat2x3<f16> @offset(552)
- mat2x4_f16:mat2x4<f16> @offset(568)
- mat3x2_f16:mat3x2<f16> @offset(584)
- mat3x3_f16:mat3x3<f16> @offset(600)
- mat3x4_f16:mat3x4<f16> @offset(624)
- mat4x2_f16:mat4x2<f16> @offset(648)
- mat4x3_f16:mat4x3<f16> @offset(664)
- mat4x4_f16:mat4x4<f16> @offset(696)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
- arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
- struct_inner:Inner @offset(800)
- array_struct_inner:array<Inner, 4> @offset(812)
+void tint_store_and_preserve_padding(device Inner* const target, Inner value_param) {
+ (*target).scalar_i32 = value_param.scalar_i32;
+ (*target).scalar_f32 = value_param.scalar_f32;
+ (*target).scalar_f16 = value_param.scalar_f16;
}
-
-$B1: { # root
- %sb:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %3:ptr<storage, f32, read_write> = access %sb, 0u
- store %3, 0.0f
- %4:ptr<storage, i32, read_write> = access %sb, 1u
- store %4, 0i
- %5:ptr<storage, u32, read_write> = access %sb, 2u
- store %5, 0u
- %6:ptr<storage, f16, read_write> = access %sb, 3u
- store %6, 0.0h
- %7:ptr<storage, vec2<f32>, read_write> = access %sb, 4u
- store %7, vec2<f32>(0.0f)
- %8:ptr<storage, vec2<i32>, read_write> = access %sb, 5u
- store %8, vec2<i32>(0i)
- %9:ptr<storage, vec2<u32>, read_write> = access %sb, 6u
- store %9, vec2<u32>(0u)
- %10:ptr<storage, vec2<f16>, read_write> = access %sb, 7u
- store %10, vec2<f16>(0.0h)
- %11:ptr<storage, vec3<f32>, read_write> = access %sb, 8u
- store %11, vec3<f32>(0.0f)
- %12:ptr<storage, vec3<i32>, read_write> = access %sb, 9u
- store %12, vec3<i32>(0i)
- %13:ptr<storage, vec3<u32>, read_write> = access %sb, 10u
- store %13, vec3<u32>(0u)
- %14:ptr<storage, vec3<f16>, read_write> = access %sb, 11u
- store %14, vec3<f16>(0.0h)
- %15:ptr<storage, vec4<f32>, read_write> = access %sb, 12u
- store %15, vec4<f32>(0.0f)
- %16:ptr<storage, vec4<i32>, read_write> = access %sb, 13u
- store %16, vec4<i32>(0i)
- %17:ptr<storage, vec4<u32>, read_write> = access %sb, 14u
- store %17, vec4<u32>(0u)
- %18:ptr<storage, vec4<f16>, read_write> = access %sb, 15u
- store %18, vec4<f16>(0.0h)
- %19:ptr<storage, mat2x2<f32>, read_write> = access %sb, 16u
- store %19, mat2x2<f32>(vec2<f32>(0.0f))
- %20:ptr<storage, mat2x3<f32>, read_write> = access %sb, 17u
- %21:void = call %tint_store_and_preserve_padding, %20, mat2x3<f32>(vec3<f32>(0.0f))
- %23:ptr<storage, mat2x4<f32>, read_write> = access %sb, 18u
- store %23, mat2x4<f32>(vec4<f32>(0.0f))
- %24:ptr<storage, mat3x2<f32>, read_write> = access %sb, 19u
- store %24, mat3x2<f32>(vec2<f32>(0.0f))
- %25:ptr<storage, mat3x3<f32>, read_write> = access %sb, 20u
- %26:void = call %tint_store_and_preserve_padding_1, %25, mat3x3<f32>(vec3<f32>(0.0f))
- %28:ptr<storage, mat3x4<f32>, read_write> = access %sb, 21u
- store %28, mat3x4<f32>(vec4<f32>(0.0f))
- %29:ptr<storage, mat4x2<f32>, read_write> = access %sb, 22u
- store %29, mat4x2<f32>(vec2<f32>(0.0f))
- %30:ptr<storage, mat4x3<f32>, read_write> = access %sb, 23u
- %31:void = call %tint_store_and_preserve_padding_2, %30, mat4x3<f32>(vec3<f32>(0.0f))
- %33:ptr<storage, mat4x4<f32>, read_write> = access %sb, 24u
- store %33, mat4x4<f32>(vec4<f32>(0.0f))
- %34:ptr<storage, mat2x2<f16>, read_write> = access %sb, 25u
- store %34, mat2x2<f16>(vec2<f16>(0.0h))
- %35:ptr<storage, mat2x3<f16>, read_write> = access %sb, 26u
- %36:void = call %tint_store_and_preserve_padding_3, %35, mat2x3<f16>(vec3<f16>(0.0h))
- %38:ptr<storage, mat2x4<f16>, read_write> = access %sb, 27u
- store %38, mat2x4<f16>(vec4<f16>(0.0h))
- %39:ptr<storage, mat3x2<f16>, read_write> = access %sb, 28u
- store %39, mat3x2<f16>(vec2<f16>(0.0h))
- %40:ptr<storage, mat3x3<f16>, read_write> = access %sb, 29u
- %41:void = call %tint_store_and_preserve_padding_4, %40, mat3x3<f16>(vec3<f16>(0.0h))
- %43:ptr<storage, mat3x4<f16>, read_write> = access %sb, 30u
- store %43, mat3x4<f16>(vec4<f16>(0.0h))
- %44:ptr<storage, mat4x2<f16>, read_write> = access %sb, 31u
- store %44, mat4x2<f16>(vec2<f16>(0.0h))
- %45:ptr<storage, mat4x3<f16>, read_write> = access %sb, 32u
- %46:void = call %tint_store_and_preserve_padding_5, %45, mat4x3<f16>(vec3<f16>(0.0h))
- %48:ptr<storage, mat4x4<f16>, read_write> = access %sb, 33u
- store %48, mat4x4<f16>(vec4<f16>(0.0h))
- %49:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 34u
- %50:void = call %tint_store_and_preserve_padding_6, %49, array<vec3<f32>, 2>(vec3<f32>(0.0f))
- %52:ptr<storage, array<mat4x2<f16>, 2>, read_write> = access %sb, 35u
- store %52, array<mat4x2<f16>, 2>(mat4x2<f16>(vec2<f16>(0.0h)))
- %53:ptr<storage, Inner, read_write> = access %sb, 36u
- %54:void = call %tint_store_and_preserve_padding_7, %53, Inner(0i, 0.0f, 0.0h)
- %56:ptr<storage, array<Inner, 4>, read_write> = access %sb, 37u
- %57:void = call %tint_store_and_preserve_padding_8, %56, array<Inner, 4>(Inner(0i, 0.0f, 0.0h))
- ret
- }
-}
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
- $B3: {
- %61:ptr<storage, vec3<f32>, read_write> = access %target, 0u
- %62:vec3<f32> = access %value_param, 0u
- store %61, %62
- %63:ptr<storage, vec3<f32>, read_write> = access %target, 1u
- %64:vec3<f32> = access %value_param, 1u
- store %63, %64
- ret
- }
-}
-%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, mat3x3<f32>, read_write>, %value_param_1:mat3x3<f32>):void { # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
- $B4: {
- %67:ptr<storage, vec3<f32>, read_write> = access %target_1, 0u
- %68:vec3<f32> = access %value_param_1, 0u
- store %67, %68
- %69:ptr<storage, vec3<f32>, read_write> = access %target_1, 1u
- %70:vec3<f32> = access %value_param_1, 1u
- store %69, %70
- %71:ptr<storage, vec3<f32>, read_write> = access %target_1, 2u
- %72:vec3<f32> = access %value_param_1, 2u
- store %71, %72
- ret
- }
-}
-%tint_store_and_preserve_padding_2 = func(%target_2:ptr<storage, mat4x3<f32>, read_write>, %value_param_2:mat4x3<f32>):void { # %tint_store_and_preserve_padding_2: 'tint_store_and_preserve_padding', %target_2: 'target', %value_param_2: 'value_param'
- $B5: {
- %75:ptr<storage, vec3<f32>, read_write> = access %target_2, 0u
- %76:vec3<f32> = access %value_param_2, 0u
- store %75, %76
- %77:ptr<storage, vec3<f32>, read_write> = access %target_2, 1u
- %78:vec3<f32> = access %value_param_2, 1u
- store %77, %78
- %79:ptr<storage, vec3<f32>, read_write> = access %target_2, 2u
- %80:vec3<f32> = access %value_param_2, 2u
- store %79, %80
- %81:ptr<storage, vec3<f32>, read_write> = access %target_2, 3u
- %82:vec3<f32> = access %value_param_2, 3u
- store %81, %82
- ret
- }
-}
-%tint_store_and_preserve_padding_3 = func(%target_3:ptr<storage, mat2x3<f16>, read_write>, %value_param_3:mat2x3<f16>):void { # %tint_store_and_preserve_padding_3: 'tint_store_and_preserve_padding', %target_3: 'target', %value_param_3: 'value_param'
- $B6: {
- %85:ptr<storage, vec3<f16>, read_write> = access %target_3, 0u
- %86:vec3<f16> = access %value_param_3, 0u
- store %85, %86
- %87:ptr<storage, vec3<f16>, read_write> = access %target_3, 1u
- %88:vec3<f16> = access %value_param_3, 1u
- store %87, %88
- ret
- }
-}
-%tint_store_and_preserve_padding_4 = func(%target_4:ptr<storage, mat3x3<f16>, read_write>, %value_param_4:mat3x3<f16>):void { # %tint_store_and_preserve_padding_4: 'tint_store_and_preserve_padding', %target_4: 'target', %value_param_4: 'value_param'
- $B7: {
- %91:ptr<storage, vec3<f16>, read_write> = access %target_4, 0u
- %92:vec3<f16> = access %value_param_4, 0u
- store %91, %92
- %93:ptr<storage, vec3<f16>, read_write> = access %target_4, 1u
- %94:vec3<f16> = access %value_param_4, 1u
- store %93, %94
- %95:ptr<storage, vec3<f16>, read_write> = access %target_4, 2u
- %96:vec3<f16> = access %value_param_4, 2u
- store %95, %96
- ret
- }
-}
-%tint_store_and_preserve_padding_5 = func(%target_5:ptr<storage, mat4x3<f16>, read_write>, %value_param_5:mat4x3<f16>):void { # %tint_store_and_preserve_padding_5: 'tint_store_and_preserve_padding', %target_5: 'target', %value_param_5: 'value_param'
- $B8: {
- %99:ptr<storage, vec3<f16>, read_write> = access %target_5, 0u
- %100:vec3<f16> = access %value_param_5, 0u
- store %99, %100
- %101:ptr<storage, vec3<f16>, read_write> = access %target_5, 1u
- %102:vec3<f16> = access %value_param_5, 1u
- store %101, %102
- %103:ptr<storage, vec3<f16>, read_write> = access %target_5, 2u
- %104:vec3<f16> = access %value_param_5, 2u
- store %103, %104
- %105:ptr<storage, vec3<f16>, read_write> = access %target_5, 3u
- %106:vec3<f16> = access %value_param_5, 3u
- store %105, %106
- ret
- }
-}
-%tint_store_and_preserve_padding_6 = func(%target_6:ptr<storage, array<vec3<f32>, 2>, read_write>, %value_param_6:array<vec3<f32>, 2>):void { # %tint_store_and_preserve_padding_6: 'tint_store_and_preserve_padding', %target_6: 'target', %value_param_6: 'value_param'
- $B9: {
- loop [i: $B10, b: $B11, c: $B12] { # loop_1
- $B10: { # initializer
- next_iteration 0u # -> $B11
+void tint_store_and_preserve_padding(device tint_array<Inner, 4>* const target, tint_array<Inner, 4> value_param) {
+ {
+ uint v = 0u;
+ v = 0u;
+ while(true) {
+ uint const v_1 = v;
+ if ((v_1 >= 4u)) {
+ break;
}
- $B11 (%idx:u32): { # body
- %110:bool = gte %idx, 2u
- if %110 [t: $B13] { # if_1
- $B13: { # true
- exit_loop # loop_1
- }
- }
- %111:ptr<storage, vec3<f32>, read_write> = access %target_6, %idx
- %112:vec3<f32> = access %value_param_6, %idx
- store %111, %112
- continue # -> $B12
- }
- $B12: { # continuing
- %113:u32 = add %idx, 1u
- next_iteration %113 # -> $B11
- }
+ tint_store_and_preserve_padding((&(*target)[v_1]), value_param[v_1]);
+ v = (v_1 + 1u);
+ continue;
}
- ret
}
}
-%tint_store_and_preserve_padding_7 = func(%target_7:ptr<storage, Inner, read_write>, %value_param_7:Inner):void { # %tint_store_and_preserve_padding_7: 'tint_store_and_preserve_padding', %target_7: 'target', %value_param_7: 'value_param'
- $B14: {
- %116:ptr<storage, i32, read_write> = access %target_7, 0u
- %117:i32 = access %value_param_7, 0u
- store %116, %117
- %118:ptr<storage, f32, read_write> = access %target_7, 1u
- %119:f32 = access %value_param_7, 1u
- store %118, %119
- %120:ptr<storage, f16, read_write> = access %target_7, 2u
- %121:f16 = access %value_param_7, 2u
- store %120, %121
- ret
- }
-}
-%tint_store_and_preserve_padding_8 = func(%target_8:ptr<storage, array<Inner, 4>, read_write>, %value_param_8:array<Inner, 4>):void { # %tint_store_and_preserve_padding_8: 'tint_store_and_preserve_padding', %target_8: 'target', %value_param_8: 'value_param'
- $B15: {
- loop [i: $B16, b: $B17, c: $B18] { # loop_2
- $B16: { # initializer
- next_iteration 0u # -> $B17
+void tint_store_and_preserve_padding(device tint_array<float3, 2>* const target, tint_array<float3, 2> value_param) {
+ {
+ uint v_2 = 0u;
+ v_2 = 0u;
+ while(true) {
+ uint const v_3 = v_2;
+ if ((v_3 >= 2u)) {
+ break;
}
- $B17 (%idx_1:u32): { # body
- %125:bool = gte %idx_1, 4u
- if %125 [t: $B19] { # if_2
- $B19: { # true
- exit_loop # loop_2
- }
- }
- %126:ptr<storage, Inner, read_write> = access %target_8, %idx_1
- %127:Inner = access %value_param_8, %idx_1
- %128:void = call %tint_store_and_preserve_padding_7, %126, %127
- continue # -> $B18
- }
- $B18: { # continuing
- %129:u32 = add %idx_1, 1u
- next_iteration %129 # -> $B17
- }
+ (*target)[v_3] = value_param[v_3];
+ v_2 = (v_3 + 1u);
+ continue;
}
- ret
}
}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+ (*target)[2u] = value_param[2u];
+ (*target)[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+ (*target)[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+}
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+ (*target)[2u] = value_param[2u];
+ (*target)[3u] = value_param[3u];
+}
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+ (*target)[2u] = value_param[2u];
+}
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+ (*target)[0u] = value_param[0u];
+ (*target)[1u] = value_param[1u];
+}
+kernel void tint_symbol(device S* sb [[buffer(0)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb};
+ (*tint_module_vars.sb).scalar_f32 = 0.0f;
+ (*tint_module_vars.sb).scalar_i32 = 0;
+ (*tint_module_vars.sb).scalar_u32 = 0u;
+ (*tint_module_vars.sb).scalar_f16 = 0.0h;
+ (*tint_module_vars.sb).vec2_f32 = float2(0.0f);
+ (*tint_module_vars.sb).vec2_i32 = int2(0);
+ (*tint_module_vars.sb).vec2_u32 = uint2(0u);
+ (*tint_module_vars.sb).vec2_f16 = half2(0.0h);
+ (*tint_module_vars.sb).vec3_f32 = float3(0.0f);
+ (*tint_module_vars.sb).vec3_i32 = int3(0);
+ (*tint_module_vars.sb).vec3_u32 = uint3(0u);
+ (*tint_module_vars.sb).vec3_f16 = half3(0.0h);
+ (*tint_module_vars.sb).vec4_f32 = float4(0.0f);
+ (*tint_module_vars.sb).vec4_i32 = int4(0);
+ (*tint_module_vars.sb).vec4_u32 = uint4(0u);
+ (*tint_module_vars.sb).vec4_f16 = half4(0.0h);
+ (*tint_module_vars.sb).mat2x2_f32 = float2x2(float2(0.0f), float2(0.0f));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat2x3_f32), float2x3(float3(0.0f), float3(0.0f)));
+ (*tint_module_vars.sb).mat2x4_f32 = float2x4(float4(0.0f), float4(0.0f));
+ (*tint_module_vars.sb).mat3x2_f32 = float3x2(float2(0.0f), float2(0.0f), float2(0.0f));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat3x3_f32), float3x3(float3(0.0f), float3(0.0f), float3(0.0f)));
+ (*tint_module_vars.sb).mat3x4_f32 = float3x4(float4(0.0f), float4(0.0f), float4(0.0f));
+ (*tint_module_vars.sb).mat4x2_f32 = float4x2(float2(0.0f), float2(0.0f), float2(0.0f), float2(0.0f));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat4x3_f32), float4x3(float3(0.0f), float3(0.0f), float3(0.0f), float3(0.0f)));
+ (*tint_module_vars.sb).mat4x4_f32 = float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f));
+ (*tint_module_vars.sb).mat2x2_f16 = half2x2(half2(0.0h), half2(0.0h));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat2x3_f16), half2x3(half3(0.0h), half3(0.0h)));
+ (*tint_module_vars.sb).mat2x4_f16 = half2x4(half4(0.0h), half4(0.0h));
+ (*tint_module_vars.sb).mat3x2_f16 = half3x2(half2(0.0h), half2(0.0h), half2(0.0h));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat3x3_f16), half3x3(half3(0.0h), half3(0.0h), half3(0.0h)));
+ (*tint_module_vars.sb).mat3x4_f16 = half3x4(half4(0.0h), half4(0.0h), half4(0.0h));
+ (*tint_module_vars.sb).mat4x2_f16 = half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).mat4x3_f16), half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h)));
+ (*tint_module_vars.sb).mat4x4_f16 = half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h));
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).arr2_vec3_f32), tint_array<float3, 2>{});
+ (*tint_module_vars.sb).arr2_mat4x2_f16 = tint_array<half4x2, 2>{};
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).struct_inner), Inner{});
+ tint_store_and_preserve_padding((&(*tint_module_vars.sb).array_struct_inner), tint_array<Inner, 4>{});
+}
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl
index 9c490ec..43f2d67 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.msl
@@ -1,201 +1,95 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec4_f32:vec4<f32> @offset(96)
- vec4_i32:vec4<i32> @offset(112)
- vec4_u32:vec4<u32> @offset(128)
- mat2x2_f32:mat2x2<f32> @offset(144)
- mat2x3_f32:mat2x3<f32> @offset(160)
- mat2x4_f32:mat2x4<f32> @offset(192)
- mat3x2_f32:mat3x2<f32> @offset(224)
- mat3x3_f32:mat3x3<f32> @offset(256)
- mat3x4_f32:mat3x4<f32> @offset(304)
- mat4x2_f32:mat4x2<f32> @offset(352)
- mat4x3_f32:mat4x3<f32> @offset(384)
- mat4x4_f32:mat4x4<f32> @offset(448)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
-}
+struct Inner {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ tint_array<float3, 2> arr2_vec3_f32;
+};
+struct S {
+ tint_array<Inner, 8> arr;
+};
+struct tint_module_vars_struct {
+ const constant S* ub;
+ device int* s;
+};
-S = struct @align(16) {
- arr:array<Inner, 8> @offset(0)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+void tint_symbol_inner(uint idx, tint_module_vars_struct tint_module_vars) {
+ float const scalar_f32 = (*tint_module_vars.ub).arr[idx].scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.ub).arr[idx].scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.ub).arr[idx].scalar_u32;
+ float2 const vec2_f32 = (*tint_module_vars.ub).arr[idx].vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.ub).arr[idx].vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.ub).arr[idx].vec2_u32;
+ float3 const vec3_f32 = (*tint_module_vars.ub).arr[idx].vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.ub).arr[idx].vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.ub).arr[idx].vec3_u32;
+ float4 const vec4_f32 = (*tint_module_vars.ub).arr[idx].vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.ub).arr[idx].vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.ub).arr[idx].vec4_u32;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.ub).arr[idx].mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.ub).arr[idx].mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.ub).arr[idx].mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.ub).arr[idx].mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.ub).arr[idx].mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.ub).arr[idx].mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.ub).arr[idx].mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.ub).arr[idx].mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.ub).arr[idx].mat4x4_f32;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.ub).arr[idx].arr2_vec3_f32;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = ((v_1 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_3 = (v_2 + int(vec2_u32[0u]));
+ int const v_4 = ((v_3 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_5 = (v_4 + int(vec3_u32[1u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_7 = (v_6 + int(vec4_u32[2u]));
+ int const v_8 = (v_7 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_9 = (v_8 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_10 = (v_9 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_11 = (v_10 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ (*tint_module_vars.s) = (v_16 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void {
- $B2: {
- %5:ptr<uniform, f32, read> = access %ub, 0u, %idx, 0u
- %6:f32 = load %5
- %scalar_f32:f32 = let %6
- %8:ptr<uniform, i32, read> = access %ub, 0u, %idx, 1u
- %9:i32 = load %8
- %scalar_i32:i32 = let %9
- %11:ptr<uniform, u32, read> = access %ub, 0u, %idx, 2u
- %12:u32 = load %11
- %scalar_u32:u32 = let %12
- %14:ptr<uniform, vec2<f32>, read> = access %ub, 0u, %idx, 3u
- %15:vec2<f32> = load %14
- %vec2_f32:vec2<f32> = let %15
- %17:ptr<uniform, vec2<i32>, read> = access %ub, 0u, %idx, 4u
- %18:vec2<i32> = load %17
- %vec2_i32:vec2<i32> = let %18
- %20:ptr<uniform, vec2<u32>, read> = access %ub, 0u, %idx, 5u
- %21:vec2<u32> = load %20
- %vec2_u32:vec2<u32> = let %21
- %23:ptr<uniform, vec3<f32>, read> = access %ub, 0u, %idx, 6u
- %24:vec3<f32> = load %23
- %vec3_f32:vec3<f32> = let %24
- %26:ptr<uniform, vec3<i32>, read> = access %ub, 0u, %idx, 7u
- %27:vec3<i32> = load %26
- %vec3_i32:vec3<i32> = let %27
- %29:ptr<uniform, vec3<u32>, read> = access %ub, 0u, %idx, 8u
- %30:vec3<u32> = load %29
- %vec3_u32:vec3<u32> = let %30
- %32:ptr<uniform, vec4<f32>, read> = access %ub, 0u, %idx, 9u
- %33:vec4<f32> = load %32
- %vec4_f32:vec4<f32> = let %33
- %35:ptr<uniform, vec4<i32>, read> = access %ub, 0u, %idx, 10u
- %36:vec4<i32> = load %35
- %vec4_i32:vec4<i32> = let %36
- %38:ptr<uniform, vec4<u32>, read> = access %ub, 0u, %idx, 11u
- %39:vec4<u32> = load %38
- %vec4_u32:vec4<u32> = let %39
- %41:ptr<uniform, mat2x2<f32>, read> = access %ub, 0u, %idx, 12u
- %42:mat2x2<f32> = load %41
- %mat2x2_f32:mat2x2<f32> = let %42
- %44:ptr<uniform, mat2x3<f32>, read> = access %ub, 0u, %idx, 13u
- %45:mat2x3<f32> = load %44
- %mat2x3_f32:mat2x3<f32> = let %45
- %47:ptr<uniform, mat2x4<f32>, read> = access %ub, 0u, %idx, 14u
- %48:mat2x4<f32> = load %47
- %mat2x4_f32:mat2x4<f32> = let %48
- %50:ptr<uniform, mat3x2<f32>, read> = access %ub, 0u, %idx, 15u
- %51:mat3x2<f32> = load %50
- %mat3x2_f32:mat3x2<f32> = let %51
- %53:ptr<uniform, mat3x3<f32>, read> = access %ub, 0u, %idx, 16u
- %54:mat3x3<f32> = load %53
- %mat3x3_f32:mat3x3<f32> = let %54
- %56:ptr<uniform, mat3x4<f32>, read> = access %ub, 0u, %idx, 17u
- %57:mat3x4<f32> = load %56
- %mat3x4_f32:mat3x4<f32> = let %57
- %59:ptr<uniform, mat4x2<f32>, read> = access %ub, 0u, %idx, 18u
- %60:mat4x2<f32> = load %59
- %mat4x2_f32:mat4x2<f32> = let %60
- %62:ptr<uniform, mat4x3<f32>, read> = access %ub, 0u, %idx, 19u
- %63:mat4x3<f32> = load %62
- %mat4x3_f32:mat4x3<f32> = let %63
- %65:ptr<uniform, mat4x4<f32>, read> = access %ub, 0u, %idx, 20u
- %66:mat4x4<f32> = load %65
- %mat4x4_f32:mat4x4<f32> = let %66
- %68:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 0u, %idx, 21u
- %69:array<vec3<f32>, 2> = load %68
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %69
- %71:i32 = call %tint_f32_to_i32, %scalar_f32
- %73:i32 = add %71, %scalar_i32
- %74:i32 = let %73
- %75:i32 = convert %scalar_u32
- %76:i32 = add %74, %75
- %77:i32 = let %76
- %78:f32 = access %vec2_f32, 0u
- %79:i32 = call %tint_f32_to_i32, %78
- %80:i32 = add %77, %79
- %81:i32 = access %vec2_i32, 0u
- %82:i32 = add %80, %81
- %83:i32 = let %82
- %84:u32 = access %vec2_u32, 0u
- %85:i32 = convert %84
- %86:i32 = add %83, %85
- %87:i32 = let %86
- %88:f32 = access %vec3_f32, 1u
- %89:i32 = call %tint_f32_to_i32, %88
- %90:i32 = add %87, %89
- %91:i32 = access %vec3_i32, 1u
- %92:i32 = add %90, %91
- %93:i32 = let %92
- %94:u32 = access %vec3_u32, 1u
- %95:i32 = convert %94
- %96:i32 = add %93, %95
- %97:i32 = let %96
- %98:f32 = access %vec4_f32, 2u
- %99:i32 = call %tint_f32_to_i32, %98
- %100:i32 = add %97, %99
- %101:i32 = access %vec4_i32, 2u
- %102:i32 = add %100, %101
- %103:i32 = let %102
- %104:u32 = access %vec4_u32, 2u
- %105:i32 = convert %104
- %106:i32 = add %103, %105
- %107:i32 = let %106
- %108:f32 = access %mat2x2_f32, 0i, 0u
- %109:i32 = call %tint_f32_to_i32, %108
- %110:i32 = add %107, %109
- %111:i32 = let %110
- %112:f32 = access %mat2x3_f32, 0i, 0u
- %113:i32 = call %tint_f32_to_i32, %112
- %114:i32 = add %111, %113
- %115:i32 = let %114
- %116:f32 = access %mat2x4_f32, 0i, 0u
- %117:i32 = call %tint_f32_to_i32, %116
- %118:i32 = add %115, %117
- %119:i32 = let %118
- %120:f32 = access %mat3x2_f32, 0i, 0u
- %121:i32 = call %tint_f32_to_i32, %120
- %122:i32 = add %119, %121
- %123:i32 = let %122
- %124:f32 = access %mat3x3_f32, 0i, 0u
- %125:i32 = call %tint_f32_to_i32, %124
- %126:i32 = add %123, %125
- %127:i32 = let %126
- %128:f32 = access %mat3x4_f32, 0i, 0u
- %129:i32 = call %tint_f32_to_i32, %128
- %130:i32 = add %127, %129
- %131:i32 = let %130
- %132:f32 = access %mat4x2_f32, 0i, 0u
- %133:i32 = call %tint_f32_to_i32, %132
- %134:i32 = add %131, %133
- %135:i32 = let %134
- %136:f32 = access %mat4x3_f32, 0i, 0u
- %137:i32 = call %tint_f32_to_i32, %136
- %138:i32 = add %135, %137
- %139:i32 = let %138
- %140:f32 = access %mat4x4_f32, 0i, 0u
- %141:i32 = call %tint_f32_to_i32, %140
- %142:i32 = add %139, %141
- %143:i32 = let %142
- %144:f32 = access %arr2_vec3_f32, 0i, 0u
- %145:i32 = call %tint_f32_to_i32, %144
- %146:i32 = add %143, %145
- store %s, %146
- ret
- }
+kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], const constant S* ub [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ub=ub, .s=s};
+ tint_symbol_inner(idx, tint_module_vars);
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %148:i32 = convert %value
- %149:bool = gte %value, -2147483648.0f
- %150:i32 = select -2147483648i, %148, %149
- %151:bool = lte %value, 2147483520.0f
- %152:i32 = select 2147483647i, %150, %151
- ret %152
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl
index 2d60972..969785b 100644
--- a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.msl
@@ -1,322 +1,140 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- scalar_f16:f16 @offset(12)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec2_f16:vec2<f16> @offset(40)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec3_f16:vec3<f16> @offset(96)
- vec4_f32:vec4<f32> @offset(112)
- vec4_i32:vec4<i32> @offset(128)
- vec4_u32:vec4<u32> @offset(144)
- vec4_f16:vec4<f16> @offset(160)
- mat2x2_f32:mat2x2<f32> @offset(168)
- mat2x3_f32:mat2x3<f32> @offset(192)
- mat2x4_f32:mat2x4<f32> @offset(224)
- mat3x2_f32:mat3x2<f32> @offset(256)
- mat3x3_f32:mat3x3<f32> @offset(288)
- mat3x4_f32:mat3x4<f32> @offset(336)
- mat4x2_f32:mat4x2<f32> @offset(384)
- mat4x3_f32:mat4x3<f32> @offset(416)
- mat4x4_f32:mat4x4<f32> @offset(480)
- mat2x2_f16:mat2x2<f16> @offset(544)
- mat2x3_f16:mat2x3<f16> @offset(552)
- mat2x4_f16:mat2x4<f16> @offset(568)
- mat3x2_f16:mat3x2<f16> @offset(584)
- mat3x3_f16:mat3x3<f16> @offset(600)
- mat3x4_f16:mat3x4<f16> @offset(624)
- mat4x2_f16:mat4x2<f16> @offset(648)
- mat4x3_f16:mat4x3<f16> @offset(664)
- mat4x4_f16:mat4x4<f16> @offset(696)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
- arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
-}
+struct Inner {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ half scalar_f16;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ half2 vec2_f16;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ half3 vec3_f16;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ half4 vec4_f16;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ half2x2 mat2x2_f16;
+ half2x3 mat2x3_f16;
+ half2x4 mat2x4_f16;
+ half3x2 mat3x2_f16;
+ half3x3 mat3x3_f16;
+ half3x4 mat3x4_f16;
+ half4x2 mat4x2_f16;
+ half4x3 mat4x3_f16;
+ half4x4 mat4x4_f16;
+ tint_array<float3, 2> arr2_vec3_f32;
+ tint_array<half4x2, 2> arr2_mat4x2_f16;
+};
+struct S {
+ tint_array<Inner, 8> arr;
+};
+struct tint_module_vars_struct {
+ const constant S* ub;
+ device int* s;
+};
-S = struct @align(16) {
- arr:array<Inner, 8> @offset(0)
+int tint_f16_to_i32(half value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
}
-
-$B1: { # root
- %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void {
- $B2: {
- %5:ptr<uniform, f32, read> = access %ub, 0u, %idx, 0u
- %6:f32 = load %5
- %scalar_f32:f32 = let %6
- %8:ptr<uniform, i32, read> = access %ub, 0u, %idx, 1u
- %9:i32 = load %8
- %scalar_i32:i32 = let %9
- %11:ptr<uniform, u32, read> = access %ub, 0u, %idx, 2u
- %12:u32 = load %11
- %scalar_u32:u32 = let %12
- %14:ptr<uniform, f16, read> = access %ub, 0u, %idx, 3u
- %15:f16 = load %14
- %scalar_f16:f16 = let %15
- %17:ptr<uniform, vec2<f32>, read> = access %ub, 0u, %idx, 4u
- %18:vec2<f32> = load %17
- %vec2_f32:vec2<f32> = let %18
- %20:ptr<uniform, vec2<i32>, read> = access %ub, 0u, %idx, 5u
- %21:vec2<i32> = load %20
- %vec2_i32:vec2<i32> = let %21
- %23:ptr<uniform, vec2<u32>, read> = access %ub, 0u, %idx, 6u
- %24:vec2<u32> = load %23
- %vec2_u32:vec2<u32> = let %24
- %26:ptr<uniform, vec2<f16>, read> = access %ub, 0u, %idx, 7u
- %27:vec2<f16> = load %26
- %vec2_f16:vec2<f16> = let %27
- %29:ptr<uniform, vec3<f32>, read> = access %ub, 0u, %idx, 8u
- %30:vec3<f32> = load %29
- %vec3_f32:vec3<f32> = let %30
- %32:ptr<uniform, vec3<i32>, read> = access %ub, 0u, %idx, 9u
- %33:vec3<i32> = load %32
- %vec3_i32:vec3<i32> = let %33
- %35:ptr<uniform, vec3<u32>, read> = access %ub, 0u, %idx, 10u
- %36:vec3<u32> = load %35
- %vec3_u32:vec3<u32> = let %36
- %38:ptr<uniform, vec3<f16>, read> = access %ub, 0u, %idx, 11u
- %39:vec3<f16> = load %38
- %vec3_f16:vec3<f16> = let %39
- %41:ptr<uniform, vec4<f32>, read> = access %ub, 0u, %idx, 12u
- %42:vec4<f32> = load %41
- %vec4_f32:vec4<f32> = let %42
- %44:ptr<uniform, vec4<i32>, read> = access %ub, 0u, %idx, 13u
- %45:vec4<i32> = load %44
- %vec4_i32:vec4<i32> = let %45
- %47:ptr<uniform, vec4<u32>, read> = access %ub, 0u, %idx, 14u
- %48:vec4<u32> = load %47
- %vec4_u32:vec4<u32> = let %48
- %50:ptr<uniform, vec4<f16>, read> = access %ub, 0u, %idx, 15u
- %51:vec4<f16> = load %50
- %vec4_f16:vec4<f16> = let %51
- %53:ptr<uniform, mat2x2<f32>, read> = access %ub, 0u, %idx, 16u
- %54:mat2x2<f32> = load %53
- %mat2x2_f32:mat2x2<f32> = let %54
- %56:ptr<uniform, mat2x3<f32>, read> = access %ub, 0u, %idx, 17u
- %57:mat2x3<f32> = load %56
- %mat2x3_f32:mat2x3<f32> = let %57
- %59:ptr<uniform, mat2x4<f32>, read> = access %ub, 0u, %idx, 18u
- %60:mat2x4<f32> = load %59
- %mat2x4_f32:mat2x4<f32> = let %60
- %62:ptr<uniform, mat3x2<f32>, read> = access %ub, 0u, %idx, 19u
- %63:mat3x2<f32> = load %62
- %mat3x2_f32:mat3x2<f32> = let %63
- %65:ptr<uniform, mat3x3<f32>, read> = access %ub, 0u, %idx, 20u
- %66:mat3x3<f32> = load %65
- %mat3x3_f32:mat3x3<f32> = let %66
- %68:ptr<uniform, mat3x4<f32>, read> = access %ub, 0u, %idx, 21u
- %69:mat3x4<f32> = load %68
- %mat3x4_f32:mat3x4<f32> = let %69
- %71:ptr<uniform, mat4x2<f32>, read> = access %ub, 0u, %idx, 22u
- %72:mat4x2<f32> = load %71
- %mat4x2_f32:mat4x2<f32> = let %72
- %74:ptr<uniform, mat4x3<f32>, read> = access %ub, 0u, %idx, 23u
- %75:mat4x3<f32> = load %74
- %mat4x3_f32:mat4x3<f32> = let %75
- %77:ptr<uniform, mat4x4<f32>, read> = access %ub, 0u, %idx, 24u
- %78:mat4x4<f32> = load %77
- %mat4x4_f32:mat4x4<f32> = let %78
- %80:ptr<uniform, mat2x2<f16>, read> = access %ub, 0u, %idx, 25u
- %81:mat2x2<f16> = load %80
- %mat2x2_f16:mat2x2<f16> = let %81
- %83:ptr<uniform, mat2x3<f16>, read> = access %ub, 0u, %idx, 26u
- %84:mat2x3<f16> = load %83
- %mat2x3_f16:mat2x3<f16> = let %84
- %86:ptr<uniform, mat2x4<f16>, read> = access %ub, 0u, %idx, 27u
- %87:mat2x4<f16> = load %86
- %mat2x4_f16:mat2x4<f16> = let %87
- %89:ptr<uniform, mat3x2<f16>, read> = access %ub, 0u, %idx, 28u
- %90:mat3x2<f16> = load %89
- %mat3x2_f16:mat3x2<f16> = let %90
- %92:ptr<uniform, mat3x3<f16>, read> = access %ub, 0u, %idx, 29u
- %93:mat3x3<f16> = load %92
- %mat3x3_f16:mat3x3<f16> = let %93
- %95:ptr<uniform, mat3x4<f16>, read> = access %ub, 0u, %idx, 30u
- %96:mat3x4<f16> = load %95
- %mat3x4_f16:mat3x4<f16> = let %96
- %98:ptr<uniform, mat4x2<f16>, read> = access %ub, 0u, %idx, 31u
- %99:mat4x2<f16> = load %98
- %mat4x2_f16:mat4x2<f16> = let %99
- %101:ptr<uniform, mat4x3<f16>, read> = access %ub, 0u, %idx, 32u
- %102:mat4x3<f16> = load %101
- %mat4x3_f16:mat4x3<f16> = let %102
- %104:ptr<uniform, mat4x4<f16>, read> = access %ub, 0u, %idx, 33u
- %105:mat4x4<f16> = load %104
- %mat4x4_f16:mat4x4<f16> = let %105
- %107:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 0u, %idx, 34u
- %108:array<vec3<f32>, 2> = load %107
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %108
- %110:ptr<uniform, array<mat4x2<f16>, 2>, read> = access %ub, 0u, %idx, 35u
- %111:array<mat4x2<f16>, 2> = load %110
- %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = let %111
- %113:i32 = call %tint_f32_to_i32, %scalar_f32
- %115:i32 = add %113, %scalar_i32
- %116:i32 = let %115
- %117:i32 = convert %scalar_u32
- %118:i32 = add %116, %117
- %119:i32 = let %118
- %120:i32 = call %tint_f16_to_i32, %scalar_f16
- %122:i32 = add %119, %120
- %123:i32 = let %122
- %124:f32 = access %vec2_f32, 0u
- %125:i32 = call %tint_f32_to_i32, %124
- %126:i32 = add %123, %125
- %127:i32 = access %vec2_i32, 0u
- %128:i32 = add %126, %127
- %129:i32 = let %128
- %130:u32 = access %vec2_u32, 0u
- %131:i32 = convert %130
- %132:i32 = add %129, %131
- %133:i32 = let %132
- %134:f16 = access %vec2_f16, 0u
- %135:i32 = call %tint_f16_to_i32, %134
- %136:i32 = add %133, %135
- %137:i32 = let %136
- %138:f32 = access %vec3_f32, 1u
- %139:i32 = call %tint_f32_to_i32, %138
- %140:i32 = add %137, %139
- %141:i32 = access %vec3_i32, 1u
- %142:i32 = add %140, %141
- %143:i32 = let %142
- %144:u32 = access %vec3_u32, 1u
- %145:i32 = convert %144
- %146:i32 = add %143, %145
- %147:i32 = let %146
- %148:f16 = access %vec3_f16, 1u
- %149:i32 = call %tint_f16_to_i32, %148
- %150:i32 = add %147, %149
- %151:i32 = let %150
- %152:f32 = access %vec4_f32, 2u
- %153:i32 = call %tint_f32_to_i32, %152
- %154:i32 = add %151, %153
- %155:i32 = access %vec4_i32, 2u
- %156:i32 = add %154, %155
- %157:i32 = let %156
- %158:u32 = access %vec4_u32, 2u
- %159:i32 = convert %158
- %160:i32 = add %157, %159
- %161:i32 = let %160
- %162:f16 = access %vec4_f16, 2u
- %163:i32 = call %tint_f16_to_i32, %162
- %164:i32 = add %161, %163
- %165:i32 = let %164
- %166:f32 = access %mat2x2_f32, 0i, 0u
- %167:i32 = call %tint_f32_to_i32, %166
- %168:i32 = add %165, %167
- %169:i32 = let %168
- %170:f32 = access %mat2x3_f32, 0i, 0u
- %171:i32 = call %tint_f32_to_i32, %170
- %172:i32 = add %169, %171
- %173:i32 = let %172
- %174:f32 = access %mat2x4_f32, 0i, 0u
- %175:i32 = call %tint_f32_to_i32, %174
- %176:i32 = add %173, %175
- %177:i32 = let %176
- %178:f32 = access %mat3x2_f32, 0i, 0u
- %179:i32 = call %tint_f32_to_i32, %178
- %180:i32 = add %177, %179
- %181:i32 = let %180
- %182:f32 = access %mat3x3_f32, 0i, 0u
- %183:i32 = call %tint_f32_to_i32, %182
- %184:i32 = add %181, %183
- %185:i32 = let %184
- %186:f32 = access %mat3x4_f32, 0i, 0u
- %187:i32 = call %tint_f32_to_i32, %186
- %188:i32 = add %185, %187
- %189:i32 = let %188
- %190:f32 = access %mat4x2_f32, 0i, 0u
- %191:i32 = call %tint_f32_to_i32, %190
- %192:i32 = add %189, %191
- %193:i32 = let %192
- %194:f32 = access %mat4x3_f32, 0i, 0u
- %195:i32 = call %tint_f32_to_i32, %194
- %196:i32 = add %193, %195
- %197:i32 = let %196
- %198:f32 = access %mat4x4_f32, 0i, 0u
- %199:i32 = call %tint_f32_to_i32, %198
- %200:i32 = add %197, %199
- %201:i32 = let %200
- %202:f16 = access %mat2x2_f16, 0i, 0u
- %203:i32 = call %tint_f16_to_i32, %202
- %204:i32 = add %201, %203
- %205:i32 = let %204
- %206:f16 = access %mat2x3_f16, 0i, 0u
- %207:i32 = call %tint_f16_to_i32, %206
- %208:i32 = add %205, %207
- %209:i32 = let %208
- %210:f16 = access %mat2x4_f16, 0i, 0u
- %211:i32 = call %tint_f16_to_i32, %210
- %212:i32 = add %209, %211
- %213:i32 = let %212
- %214:f16 = access %mat3x2_f16, 0i, 0u
- %215:i32 = call %tint_f16_to_i32, %214
- %216:i32 = add %213, %215
- %217:i32 = let %216
- %218:f16 = access %mat3x3_f16, 0i, 0u
- %219:i32 = call %tint_f16_to_i32, %218
- %220:i32 = add %217, %219
- %221:i32 = let %220
- %222:f16 = access %mat3x4_f16, 0i, 0u
- %223:i32 = call %tint_f16_to_i32, %222
- %224:i32 = add %221, %223
- %225:i32 = let %224
- %226:f16 = access %mat4x2_f16, 0i, 0u
- %227:i32 = call %tint_f16_to_i32, %226
- %228:i32 = add %225, %227
- %229:i32 = let %228
- %230:f16 = access %mat4x3_f16, 0i, 0u
- %231:i32 = call %tint_f16_to_i32, %230
- %232:i32 = add %229, %231
- %233:i32 = let %232
- %234:f16 = access %mat4x4_f16, 0i, 0u
- %235:i32 = call %tint_f16_to_i32, %234
- %236:i32 = add %233, %235
- %237:i32 = let %236
- %238:f32 = access %arr2_vec3_f32, 0i, 0u
- %239:i32 = call %tint_f32_to_i32, %238
- %240:i32 = add %237, %239
- %241:i32 = let %240
- %242:f16 = access %arr2_mat4x2_f16, 0i, 0i, 0u
- %243:i32 = call %tint_f16_to_i32, %242
- %244:i32 = add %241, %243
- store %s, %244
- ret
- }
+void tint_symbol_inner(uint idx, tint_module_vars_struct tint_module_vars) {
+ float const scalar_f32 = (*tint_module_vars.ub).arr[idx].scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.ub).arr[idx].scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.ub).arr[idx].scalar_u32;
+ half const scalar_f16 = (*tint_module_vars.ub).arr[idx].scalar_f16;
+ float2 const vec2_f32 = (*tint_module_vars.ub).arr[idx].vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.ub).arr[idx].vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.ub).arr[idx].vec2_u32;
+ half2 const vec2_f16 = (*tint_module_vars.ub).arr[idx].vec2_f16;
+ float3 const vec3_f32 = (*tint_module_vars.ub).arr[idx].vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.ub).arr[idx].vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.ub).arr[idx].vec3_u32;
+ half3 const vec3_f16 = (*tint_module_vars.ub).arr[idx].vec3_f16;
+ float4 const vec4_f32 = (*tint_module_vars.ub).arr[idx].vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.ub).arr[idx].vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.ub).arr[idx].vec4_u32;
+ half4 const vec4_f16 = (*tint_module_vars.ub).arr[idx].vec4_f16;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.ub).arr[idx].mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.ub).arr[idx].mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.ub).arr[idx].mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.ub).arr[idx].mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.ub).arr[idx].mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.ub).arr[idx].mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.ub).arr[idx].mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.ub).arr[idx].mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.ub).arr[idx].mat4x4_f32;
+ half2x2 const mat2x2_f16 = (*tint_module_vars.ub).arr[idx].mat2x2_f16;
+ half2x3 const mat2x3_f16 = (*tint_module_vars.ub).arr[idx].mat2x3_f16;
+ half2x4 const mat2x4_f16 = (*tint_module_vars.ub).arr[idx].mat2x4_f16;
+ half3x2 const mat3x2_f16 = (*tint_module_vars.ub).arr[idx].mat3x2_f16;
+ half3x3 const mat3x3_f16 = (*tint_module_vars.ub).arr[idx].mat3x3_f16;
+ half3x4 const mat3x4_f16 = (*tint_module_vars.ub).arr[idx].mat3x4_f16;
+ half4x2 const mat4x2_f16 = (*tint_module_vars.ub).arr[idx].mat4x2_f16;
+ half4x3 const mat4x3_f16 = (*tint_module_vars.ub).arr[idx].mat4x3_f16;
+ half4x4 const mat4x4_f16 = (*tint_module_vars.ub).arr[idx].mat4x4_f16;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.ub).arr[idx].arr2_vec3_f32;
+ tint_array<half4x2, 2> const arr2_mat4x2_f16 = (*tint_module_vars.ub).arr[idx].arr2_mat4x2_f16;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = (v_1 + tint_f16_to_i32(scalar_f16));
+ int const v_3 = ((v_2 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_4 = (v_3 + int(vec2_u32[0u]));
+ int const v_5 = (v_4 + tint_f16_to_i32(vec2_f16[0u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_7 = (v_6 + int(vec3_u32[1u]));
+ int const v_8 = (v_7 + tint_f16_to_i32(vec3_f16[1u]));
+ int const v_9 = ((v_8 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_10 = (v_9 + int(vec4_u32[2u]));
+ int const v_11 = (v_10 + tint_f16_to_i32(vec4_f16[2u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_17 = (v_16 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_18 = (v_17 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_19 = (v_18 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_20 = (v_19 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ int const v_21 = (v_20 + tint_f16_to_i32(mat2x2_f16[0][0u]));
+ int const v_22 = (v_21 + tint_f16_to_i32(mat2x3_f16[0][0u]));
+ int const v_23 = (v_22 + tint_f16_to_i32(mat2x4_f16[0][0u]));
+ int const v_24 = (v_23 + tint_f16_to_i32(mat3x2_f16[0][0u]));
+ int const v_25 = (v_24 + tint_f16_to_i32(mat3x3_f16[0][0u]));
+ int const v_26 = (v_25 + tint_f16_to_i32(mat3x4_f16[0][0u]));
+ int const v_27 = (v_26 + tint_f16_to_i32(mat4x2_f16[0][0u]));
+ int const v_28 = (v_27 + tint_f16_to_i32(mat4x3_f16[0][0u]));
+ int const v_29 = (v_28 + tint_f16_to_i32(mat4x4_f16[0][0u]));
+ int const v_30 = (v_29 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
+ (*tint_module_vars.s) = (v_30 + tint_f16_to_i32(arr2_mat4x2_f16[0][0][0u]));
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %246:i32 = convert %value
- %247:bool = gte %value, -2147483648.0f
- %248:i32 = select -2147483648i, %246, %247
- %249:bool = lte %value, 2147483520.0f
- %250:i32 = select 2147483647i, %248, %249
- ret %250
- }
+kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], const constant S* ub [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ub=ub, .s=s};
+ tint_symbol_inner(idx, tint_module_vars);
}
-%tint_f16_to_i32 = func(%value_1:f16):i32 { # %value_1: 'value'
- $B4: {
- %252:i32 = convert %value_1
- %253:bool = gte %value_1, -65504.0h
- %254:i32 = select -2147483648i, %252, %253
- %255:bool = lte %value_1, 65504.0h
- %256:i32 = select 2147483647i, %254, %255
- ret %256
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl
index 2e14eb1..aa4123e 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.msl
@@ -1,214 +1,97 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
- scalar_i32:i32 @offset(0)
- scalar_f32:f32 @offset(16)
-}
+struct Inner {
+ int scalar_i32;
+ float scalar_f32;
+};
+struct S {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ tint_array<float3, 2> arr2_vec3_f32;
+ Inner struct_inner;
+ tint_array<Inner, 4> array_struct_inner;
+};
+struct tint_module_vars_struct {
+ const constant S* ub;
+ device int* s;
+};
-S = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec4_f32:vec4<f32> @offset(96)
- vec4_i32:vec4<i32> @offset(112)
- vec4_u32:vec4<u32> @offset(128)
- mat2x2_f32:mat2x2<f32> @offset(144)
- mat2x3_f32:mat2x3<f32> @offset(160)
- mat2x4_f32:mat2x4<f32> @offset(192)
- mat3x2_f32:mat3x2<f32> @offset(224)
- mat3x3_f32:mat3x3<f32> @offset(256)
- mat3x4_f32:mat3x4<f32> @offset(304)
- mat4x2_f32:mat4x2<f32> @offset(352)
- mat4x3_f32:mat4x3<f32> @offset(384)
- mat4x4_f32:mat4x4<f32> @offset(448)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
- struct_inner:Inner @offset(544)
- array_struct_inner:array<Inner, 4> @offset(576)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant S* ub [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ub=ub, .s=s};
+ float const scalar_f32 = (*tint_module_vars.ub).scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.ub).scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.ub).scalar_u32;
+ float2 const vec2_f32 = (*tint_module_vars.ub).vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.ub).vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.ub).vec2_u32;
+ float3 const vec3_f32 = (*tint_module_vars.ub).vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.ub).vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.ub).vec3_u32;
+ float4 const vec4_f32 = (*tint_module_vars.ub).vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.ub).vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.ub).vec4_u32;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.ub).mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.ub).mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.ub).mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.ub).mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.ub).mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.ub).mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.ub).mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.ub).mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.ub).mat4x4_f32;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.ub).arr2_vec3_f32;
+ Inner const struct_inner = (*tint_module_vars.ub).struct_inner;
+ tint_array<Inner, 4> const array_struct_inner = (*tint_module_vars.ub).array_struct_inner;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = ((v_1 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_3 = (v_2 + int(vec2_u32[0u]));
+ int const v_4 = ((v_3 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_5 = (v_4 + int(vec3_u32[1u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_7 = (v_6 + int(vec4_u32[2u]));
+ int const v_8 = (v_7 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_9 = (v_8 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_10 = (v_9 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_11 = (v_10 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ (*tint_module_vars.s) = (((v_16 + tint_f32_to_i32(arr2_vec3_f32[0][0u])) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32);
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %4:ptr<uniform, f32, read> = access %ub, 0u
- %5:f32 = load %4
- %scalar_f32:f32 = let %5
- %7:ptr<uniform, i32, read> = access %ub, 1u
- %8:i32 = load %7
- %scalar_i32:i32 = let %8
- %10:ptr<uniform, u32, read> = access %ub, 2u
- %11:u32 = load %10
- %scalar_u32:u32 = let %11
- %13:ptr<uniform, vec2<f32>, read> = access %ub, 3u
- %14:vec2<f32> = load %13
- %vec2_f32:vec2<f32> = let %14
- %16:ptr<uniform, vec2<i32>, read> = access %ub, 4u
- %17:vec2<i32> = load %16
- %vec2_i32:vec2<i32> = let %17
- %19:ptr<uniform, vec2<u32>, read> = access %ub, 5u
- %20:vec2<u32> = load %19
- %vec2_u32:vec2<u32> = let %20
- %22:ptr<uniform, vec3<f32>, read> = access %ub, 6u
- %23:vec3<f32> = load %22
- %vec3_f32:vec3<f32> = let %23
- %25:ptr<uniform, vec3<i32>, read> = access %ub, 7u
- %26:vec3<i32> = load %25
- %vec3_i32:vec3<i32> = let %26
- %28:ptr<uniform, vec3<u32>, read> = access %ub, 8u
- %29:vec3<u32> = load %28
- %vec3_u32:vec3<u32> = let %29
- %31:ptr<uniform, vec4<f32>, read> = access %ub, 9u
- %32:vec4<f32> = load %31
- %vec4_f32:vec4<f32> = let %32
- %34:ptr<uniform, vec4<i32>, read> = access %ub, 10u
- %35:vec4<i32> = load %34
- %vec4_i32:vec4<i32> = let %35
- %37:ptr<uniform, vec4<u32>, read> = access %ub, 11u
- %38:vec4<u32> = load %37
- %vec4_u32:vec4<u32> = let %38
- %40:ptr<uniform, mat2x2<f32>, read> = access %ub, 12u
- %41:mat2x2<f32> = load %40
- %mat2x2_f32:mat2x2<f32> = let %41
- %43:ptr<uniform, mat2x3<f32>, read> = access %ub, 13u
- %44:mat2x3<f32> = load %43
- %mat2x3_f32:mat2x3<f32> = let %44
- %46:ptr<uniform, mat2x4<f32>, read> = access %ub, 14u
- %47:mat2x4<f32> = load %46
- %mat2x4_f32:mat2x4<f32> = let %47
- %49:ptr<uniform, mat3x2<f32>, read> = access %ub, 15u
- %50:mat3x2<f32> = load %49
- %mat3x2_f32:mat3x2<f32> = let %50
- %52:ptr<uniform, mat3x3<f32>, read> = access %ub, 16u
- %53:mat3x3<f32> = load %52
- %mat3x3_f32:mat3x3<f32> = let %53
- %55:ptr<uniform, mat3x4<f32>, read> = access %ub, 17u
- %56:mat3x4<f32> = load %55
- %mat3x4_f32:mat3x4<f32> = let %56
- %58:ptr<uniform, mat4x2<f32>, read> = access %ub, 18u
- %59:mat4x2<f32> = load %58
- %mat4x2_f32:mat4x2<f32> = let %59
- %61:ptr<uniform, mat4x3<f32>, read> = access %ub, 19u
- %62:mat4x3<f32> = load %61
- %mat4x3_f32:mat4x3<f32> = let %62
- %64:ptr<uniform, mat4x4<f32>, read> = access %ub, 20u
- %65:mat4x4<f32> = load %64
- %mat4x4_f32:mat4x4<f32> = let %65
- %67:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 21u
- %68:array<vec3<f32>, 2> = load %67
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %68
- %70:ptr<uniform, Inner, read> = access %ub, 22u
- %71:Inner = load %70
- %struct_inner:Inner = let %71
- %73:ptr<uniform, array<Inner, 4>, read> = access %ub, 23u
- %74:array<Inner, 4> = load %73
- %array_struct_inner:array<Inner, 4> = let %74
- %76:i32 = call %tint_f32_to_i32, %scalar_f32
- %78:i32 = add %76, %scalar_i32
- %79:i32 = let %78
- %80:i32 = convert %scalar_u32
- %81:i32 = add %79, %80
- %82:i32 = let %81
- %83:f32 = access %vec2_f32, 0u
- %84:i32 = call %tint_f32_to_i32, %83
- %85:i32 = add %82, %84
- %86:i32 = access %vec2_i32, 0u
- %87:i32 = add %85, %86
- %88:i32 = let %87
- %89:u32 = access %vec2_u32, 0u
- %90:i32 = convert %89
- %91:i32 = add %88, %90
- %92:i32 = let %91
- %93:f32 = access %vec3_f32, 1u
- %94:i32 = call %tint_f32_to_i32, %93
- %95:i32 = add %92, %94
- %96:i32 = access %vec3_i32, 1u
- %97:i32 = add %95, %96
- %98:i32 = let %97
- %99:u32 = access %vec3_u32, 1u
- %100:i32 = convert %99
- %101:i32 = add %98, %100
- %102:i32 = let %101
- %103:f32 = access %vec4_f32, 2u
- %104:i32 = call %tint_f32_to_i32, %103
- %105:i32 = add %102, %104
- %106:i32 = access %vec4_i32, 2u
- %107:i32 = add %105, %106
- %108:i32 = let %107
- %109:u32 = access %vec4_u32, 2u
- %110:i32 = convert %109
- %111:i32 = add %108, %110
- %112:i32 = let %111
- %113:f32 = access %mat2x2_f32, 0i, 0u
- %114:i32 = call %tint_f32_to_i32, %113
- %115:i32 = add %112, %114
- %116:i32 = let %115
- %117:f32 = access %mat2x3_f32, 0i, 0u
- %118:i32 = call %tint_f32_to_i32, %117
- %119:i32 = add %116, %118
- %120:i32 = let %119
- %121:f32 = access %mat2x4_f32, 0i, 0u
- %122:i32 = call %tint_f32_to_i32, %121
- %123:i32 = add %120, %122
- %124:i32 = let %123
- %125:f32 = access %mat3x2_f32, 0i, 0u
- %126:i32 = call %tint_f32_to_i32, %125
- %127:i32 = add %124, %126
- %128:i32 = let %127
- %129:f32 = access %mat3x3_f32, 0i, 0u
- %130:i32 = call %tint_f32_to_i32, %129
- %131:i32 = add %128, %130
- %132:i32 = let %131
- %133:f32 = access %mat3x4_f32, 0i, 0u
- %134:i32 = call %tint_f32_to_i32, %133
- %135:i32 = add %132, %134
- %136:i32 = let %135
- %137:f32 = access %mat4x2_f32, 0i, 0u
- %138:i32 = call %tint_f32_to_i32, %137
- %139:i32 = add %136, %138
- %140:i32 = let %139
- %141:f32 = access %mat4x3_f32, 0i, 0u
- %142:i32 = call %tint_f32_to_i32, %141
- %143:i32 = add %140, %142
- %144:i32 = let %143
- %145:f32 = access %mat4x4_f32, 0i, 0u
- %146:i32 = call %tint_f32_to_i32, %145
- %147:i32 = add %144, %146
- %148:i32 = let %147
- %149:f32 = access %arr2_vec3_f32, 0i, 0u
- %150:i32 = call %tint_f32_to_i32, %149
- %151:i32 = add %148, %150
- %152:i32 = access %struct_inner, 0u
- %153:i32 = add %151, %152
- %154:i32 = access %array_struct_inner, 0i, 0u
- %155:i32 = add %153, %154
- store %s, %155
- ret
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %157:i32 = convert %value
- %158:bool = gte %value, -2147483648.0f
- %159:i32 = select -2147483648i, %157, %158
- %160:bool = lte %value, 2147483520.0f
- %161:i32 = select 2147483647i, %159, %160
- ret %161
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl
index 3f18691..364aeac 100644
--- a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.msl
@@ -1,336 +1,143 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+ const constant T& operator[](size_t i) const constant { return elements[i]; }
+ device T& operator[](size_t i) device { return elements[i]; }
+ const device T& operator[](size_t i) const device { return elements[i]; }
+ thread T& operator[](size_t i) thread { return elements[i]; }
+ const thread T& operator[](size_t i) const thread { return elements[i]; }
+ threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+ const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+ T elements[N];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
- scalar_i32:i32 @offset(0)
- scalar_f32:f32 @offset(4)
- scalar_f16:f16 @offset(8)
-}
+struct Inner {
+ int scalar_i32;
+ float scalar_f32;
+ half scalar_f16;
+};
+struct S {
+ float scalar_f32;
+ int scalar_i32;
+ uint scalar_u32;
+ half scalar_f16;
+ float2 vec2_f32;
+ int2 vec2_i32;
+ uint2 vec2_u32;
+ half2 vec2_f16;
+ float3 vec3_f32;
+ int3 vec3_i32;
+ uint3 vec3_u32;
+ half3 vec3_f16;
+ float4 vec4_f32;
+ int4 vec4_i32;
+ uint4 vec4_u32;
+ half4 vec4_f16;
+ float2x2 mat2x2_f32;
+ float2x3 mat2x3_f32;
+ float2x4 mat2x4_f32;
+ float3x2 mat3x2_f32;
+ float3x3 mat3x3_f32;
+ float3x4 mat3x4_f32;
+ float4x2 mat4x2_f32;
+ float4x3 mat4x3_f32;
+ float4x4 mat4x4_f32;
+ half2x2 mat2x2_f16;
+ half2x3 mat2x3_f16;
+ half2x4 mat2x4_f16;
+ half3x2 mat3x2_f16;
+ half3x3 mat3x3_f16;
+ half3x4 mat3x4_f16;
+ half4x2 mat4x2_f16;
+ half4x3 mat4x3_f16;
+ half4x4 mat4x4_f16;
+ tint_array<float3, 2> arr2_vec3_f32;
+ tint_array<half4x2, 2> arr2_mat4x2_f16;
+ Inner struct_inner;
+ tint_array<Inner, 4> array_struct_inner;
+};
+struct tint_module_vars_struct {
+ const constant S* ub;
+ device int* s;
+};
-S = struct @align(16) {
- scalar_f32:f32 @offset(0)
- scalar_i32:i32 @offset(4)
- scalar_u32:u32 @offset(8)
- scalar_f16:f16 @offset(12)
- vec2_f32:vec2<f32> @offset(16)
- vec2_i32:vec2<i32> @offset(24)
- vec2_u32:vec2<u32> @offset(32)
- vec2_f16:vec2<f16> @offset(40)
- vec3_f32:vec3<f32> @offset(48)
- vec3_i32:vec3<i32> @offset(64)
- vec3_u32:vec3<u32> @offset(80)
- vec3_f16:vec3<f16> @offset(96)
- vec4_f32:vec4<f32> @offset(112)
- vec4_i32:vec4<i32> @offset(128)
- vec4_u32:vec4<u32> @offset(144)
- vec4_f16:vec4<f16> @offset(160)
- mat2x2_f32:mat2x2<f32> @offset(168)
- mat2x3_f32:mat2x3<f32> @offset(192)
- mat2x4_f32:mat2x4<f32> @offset(224)
- mat3x2_f32:mat3x2<f32> @offset(256)
- mat3x3_f32:mat3x3<f32> @offset(288)
- mat3x4_f32:mat3x4<f32> @offset(336)
- mat4x2_f32:mat4x2<f32> @offset(384)
- mat4x3_f32:mat4x3<f32> @offset(416)
- mat4x4_f32:mat4x4<f32> @offset(480)
- mat2x2_f16:mat2x2<f16> @offset(544)
- mat2x3_f16:mat2x3<f16> @offset(552)
- mat2x4_f16:mat2x4<f16> @offset(568)
- mat3x2_f16:mat3x2<f16> @offset(584)
- mat3x3_f16:mat3x3<f16> @offset(600)
- mat3x4_f16:mat3x4<f16> @offset(624)
- mat4x2_f16:mat4x2<f16> @offset(648)
- mat4x3_f16:mat4x3<f16> @offset(664)
- mat4x4_f16:mat4x4<f16> @offset(696)
- arr2_vec3_f32:array<vec3<f32>, 2> @offset(736)
- arr2_mat4x2_f16:array<mat4x2<f16>, 2> @offset(768)
- struct_inner:Inner @offset(800)
- array_struct_inner:array<Inner, 4> @offset(816)
+int tint_f16_to_i32(half value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
}
-
-$B1: { # root
- %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
- %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %4:ptr<uniform, f32, read> = access %ub, 0u
- %5:f32 = load %4
- %scalar_f32:f32 = let %5
- %7:ptr<uniform, i32, read> = access %ub, 1u
- %8:i32 = load %7
- %scalar_i32:i32 = let %8
- %10:ptr<uniform, u32, read> = access %ub, 2u
- %11:u32 = load %10
- %scalar_u32:u32 = let %11
- %13:ptr<uniform, f16, read> = access %ub, 3u
- %14:f16 = load %13
- %scalar_f16:f16 = let %14
- %16:ptr<uniform, vec2<f32>, read> = access %ub, 4u
- %17:vec2<f32> = load %16
- %vec2_f32:vec2<f32> = let %17
- %19:ptr<uniform, vec2<i32>, read> = access %ub, 5u
- %20:vec2<i32> = load %19
- %vec2_i32:vec2<i32> = let %20
- %22:ptr<uniform, vec2<u32>, read> = access %ub, 6u
- %23:vec2<u32> = load %22
- %vec2_u32:vec2<u32> = let %23
- %25:ptr<uniform, vec2<f16>, read> = access %ub, 7u
- %26:vec2<f16> = load %25
- %vec2_f16:vec2<f16> = let %26
- %28:ptr<uniform, vec3<f32>, read> = access %ub, 8u
- %29:vec3<f32> = load %28
- %vec3_f32:vec3<f32> = let %29
- %31:ptr<uniform, vec3<i32>, read> = access %ub, 9u
- %32:vec3<i32> = load %31
- %vec3_i32:vec3<i32> = let %32
- %34:ptr<uniform, vec3<u32>, read> = access %ub, 10u
- %35:vec3<u32> = load %34
- %vec3_u32:vec3<u32> = let %35
- %37:ptr<uniform, vec3<f16>, read> = access %ub, 11u
- %38:vec3<f16> = load %37
- %vec3_f16:vec3<f16> = let %38
- %40:ptr<uniform, vec4<f32>, read> = access %ub, 12u
- %41:vec4<f32> = load %40
- %vec4_f32:vec4<f32> = let %41
- %43:ptr<uniform, vec4<i32>, read> = access %ub, 13u
- %44:vec4<i32> = load %43
- %vec4_i32:vec4<i32> = let %44
- %46:ptr<uniform, vec4<u32>, read> = access %ub, 14u
- %47:vec4<u32> = load %46
- %vec4_u32:vec4<u32> = let %47
- %49:ptr<uniform, vec4<f16>, read> = access %ub, 15u
- %50:vec4<f16> = load %49
- %vec4_f16:vec4<f16> = let %50
- %52:ptr<uniform, mat2x2<f32>, read> = access %ub, 16u
- %53:mat2x2<f32> = load %52
- %mat2x2_f32:mat2x2<f32> = let %53
- %55:ptr<uniform, mat2x3<f32>, read> = access %ub, 17u
- %56:mat2x3<f32> = load %55
- %mat2x3_f32:mat2x3<f32> = let %56
- %58:ptr<uniform, mat2x4<f32>, read> = access %ub, 18u
- %59:mat2x4<f32> = load %58
- %mat2x4_f32:mat2x4<f32> = let %59
- %61:ptr<uniform, mat3x2<f32>, read> = access %ub, 19u
- %62:mat3x2<f32> = load %61
- %mat3x2_f32:mat3x2<f32> = let %62
- %64:ptr<uniform, mat3x3<f32>, read> = access %ub, 20u
- %65:mat3x3<f32> = load %64
- %mat3x3_f32:mat3x3<f32> = let %65
- %67:ptr<uniform, mat3x4<f32>, read> = access %ub, 21u
- %68:mat3x4<f32> = load %67
- %mat3x4_f32:mat3x4<f32> = let %68
- %70:ptr<uniform, mat4x2<f32>, read> = access %ub, 22u
- %71:mat4x2<f32> = load %70
- %mat4x2_f32:mat4x2<f32> = let %71
- %73:ptr<uniform, mat4x3<f32>, read> = access %ub, 23u
- %74:mat4x3<f32> = load %73
- %mat4x3_f32:mat4x3<f32> = let %74
- %76:ptr<uniform, mat4x4<f32>, read> = access %ub, 24u
- %77:mat4x4<f32> = load %76
- %mat4x4_f32:mat4x4<f32> = let %77
- %79:ptr<uniform, mat2x2<f16>, read> = access %ub, 25u
- %80:mat2x2<f16> = load %79
- %mat2x2_f16:mat2x2<f16> = let %80
- %82:ptr<uniform, mat2x3<f16>, read> = access %ub, 26u
- %83:mat2x3<f16> = load %82
- %mat2x3_f16:mat2x3<f16> = let %83
- %85:ptr<uniform, mat2x4<f16>, read> = access %ub, 27u
- %86:mat2x4<f16> = load %85
- %mat2x4_f16:mat2x4<f16> = let %86
- %88:ptr<uniform, mat3x2<f16>, read> = access %ub, 28u
- %89:mat3x2<f16> = load %88
- %mat3x2_f16:mat3x2<f16> = let %89
- %91:ptr<uniform, mat3x3<f16>, read> = access %ub, 29u
- %92:mat3x3<f16> = load %91
- %mat3x3_f16:mat3x3<f16> = let %92
- %94:ptr<uniform, mat3x4<f16>, read> = access %ub, 30u
- %95:mat3x4<f16> = load %94
- %mat3x4_f16:mat3x4<f16> = let %95
- %97:ptr<uniform, mat4x2<f16>, read> = access %ub, 31u
- %98:mat4x2<f16> = load %97
- %mat4x2_f16:mat4x2<f16> = let %98
- %100:ptr<uniform, mat4x3<f16>, read> = access %ub, 32u
- %101:mat4x3<f16> = load %100
- %mat4x3_f16:mat4x3<f16> = let %101
- %103:ptr<uniform, mat4x4<f16>, read> = access %ub, 33u
- %104:mat4x4<f16> = load %103
- %mat4x4_f16:mat4x4<f16> = let %104
- %106:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 34u
- %107:array<vec3<f32>, 2> = load %106
- %arr2_vec3_f32:array<vec3<f32>, 2> = let %107
- %109:ptr<uniform, array<mat4x2<f16>, 2>, read> = access %ub, 35u
- %110:array<mat4x2<f16>, 2> = load %109
- %arr2_mat4x2_f16:array<mat4x2<f16>, 2> = let %110
- %112:ptr<uniform, Inner, read> = access %ub, 36u
- %113:Inner = load %112
- %struct_inner:Inner = let %113
- %115:ptr<uniform, array<Inner, 4>, read> = access %ub, 37u
- %116:array<Inner, 4> = load %115
- %array_struct_inner:array<Inner, 4> = let %116
- %118:i32 = call %tint_f32_to_i32, %scalar_f32
- %120:i32 = add %118, %scalar_i32
- %121:i32 = let %120
- %122:i32 = convert %scalar_u32
- %123:i32 = add %121, %122
- %124:i32 = let %123
- %125:i32 = call %tint_f16_to_i32, %scalar_f16
- %127:i32 = add %124, %125
- %128:i32 = let %127
- %129:f32 = access %vec2_f32, 0u
- %130:i32 = call %tint_f32_to_i32, %129
- %131:i32 = add %128, %130
- %132:i32 = access %vec2_i32, 0u
- %133:i32 = add %131, %132
- %134:i32 = let %133
- %135:u32 = access %vec2_u32, 0u
- %136:i32 = convert %135
- %137:i32 = add %134, %136
- %138:i32 = let %137
- %139:f16 = access %vec2_f16, 0u
- %140:i32 = call %tint_f16_to_i32, %139
- %141:i32 = add %138, %140
- %142:i32 = let %141
- %143:f32 = access %vec3_f32, 1u
- %144:i32 = call %tint_f32_to_i32, %143
- %145:i32 = add %142, %144
- %146:i32 = access %vec3_i32, 1u
- %147:i32 = add %145, %146
- %148:i32 = let %147
- %149:u32 = access %vec3_u32, 1u
- %150:i32 = convert %149
- %151:i32 = add %148, %150
- %152:i32 = let %151
- %153:f16 = access %vec3_f16, 1u
- %154:i32 = call %tint_f16_to_i32, %153
- %155:i32 = add %152, %154
- %156:i32 = let %155
- %157:f32 = access %vec4_f32, 2u
- %158:i32 = call %tint_f32_to_i32, %157
- %159:i32 = add %156, %158
- %160:i32 = access %vec4_i32, 2u
- %161:i32 = add %159, %160
- %162:i32 = let %161
- %163:u32 = access %vec4_u32, 2u
- %164:i32 = convert %163
- %165:i32 = add %162, %164
- %166:i32 = let %165
- %167:f16 = access %vec4_f16, 2u
- %168:i32 = call %tint_f16_to_i32, %167
- %169:i32 = add %166, %168
- %170:i32 = let %169
- %171:f32 = access %mat2x2_f32, 0i, 0u
- %172:i32 = call %tint_f32_to_i32, %171
- %173:i32 = add %170, %172
- %174:i32 = let %173
- %175:f32 = access %mat2x3_f32, 0i, 0u
- %176:i32 = call %tint_f32_to_i32, %175
- %177:i32 = add %174, %176
- %178:i32 = let %177
- %179:f32 = access %mat2x4_f32, 0i, 0u
- %180:i32 = call %tint_f32_to_i32, %179
- %181:i32 = add %178, %180
- %182:i32 = let %181
- %183:f32 = access %mat3x2_f32, 0i, 0u
- %184:i32 = call %tint_f32_to_i32, %183
- %185:i32 = add %182, %184
- %186:i32 = let %185
- %187:f32 = access %mat3x3_f32, 0i, 0u
- %188:i32 = call %tint_f32_to_i32, %187
- %189:i32 = add %186, %188
- %190:i32 = let %189
- %191:f32 = access %mat3x4_f32, 0i, 0u
- %192:i32 = call %tint_f32_to_i32, %191
- %193:i32 = add %190, %192
- %194:i32 = let %193
- %195:f32 = access %mat4x2_f32, 0i, 0u
- %196:i32 = call %tint_f32_to_i32, %195
- %197:i32 = add %194, %196
- %198:i32 = let %197
- %199:f32 = access %mat4x3_f32, 0i, 0u
- %200:i32 = call %tint_f32_to_i32, %199
- %201:i32 = add %198, %200
- %202:i32 = let %201
- %203:f32 = access %mat4x4_f32, 0i, 0u
- %204:i32 = call %tint_f32_to_i32, %203
- %205:i32 = add %202, %204
- %206:i32 = let %205
- %207:f16 = access %mat2x2_f16, 0i, 0u
- %208:i32 = call %tint_f16_to_i32, %207
- %209:i32 = add %206, %208
- %210:i32 = let %209
- %211:f16 = access %mat2x3_f16, 0i, 0u
- %212:i32 = call %tint_f16_to_i32, %211
- %213:i32 = add %210, %212
- %214:i32 = let %213
- %215:f16 = access %mat2x4_f16, 0i, 0u
- %216:i32 = call %tint_f16_to_i32, %215
- %217:i32 = add %214, %216
- %218:i32 = let %217
- %219:f16 = access %mat3x2_f16, 0i, 0u
- %220:i32 = call %tint_f16_to_i32, %219
- %221:i32 = add %218, %220
- %222:i32 = let %221
- %223:f16 = access %mat3x3_f16, 0i, 0u
- %224:i32 = call %tint_f16_to_i32, %223
- %225:i32 = add %222, %224
- %226:i32 = let %225
- %227:f16 = access %mat3x4_f16, 0i, 0u
- %228:i32 = call %tint_f16_to_i32, %227
- %229:i32 = add %226, %228
- %230:i32 = let %229
- %231:f16 = access %mat4x2_f16, 0i, 0u
- %232:i32 = call %tint_f16_to_i32, %231
- %233:i32 = add %230, %232
- %234:i32 = let %233
- %235:f16 = access %mat4x3_f16, 0i, 0u
- %236:i32 = call %tint_f16_to_i32, %235
- %237:i32 = add %234, %236
- %238:i32 = let %237
- %239:f16 = access %mat4x4_f16, 0i, 0u
- %240:i32 = call %tint_f16_to_i32, %239
- %241:i32 = add %238, %240
- %242:i32 = let %241
- %243:f32 = access %arr2_vec3_f32, 0i, 0u
- %244:i32 = call %tint_f32_to_i32, %243
- %245:i32 = add %242, %244
- %246:i32 = let %245
- %247:f16 = access %arr2_mat4x2_f16, 0i, 0i, 0u
- %248:i32 = call %tint_f16_to_i32, %247
- %249:i32 = add %246, %248
- %250:i32 = access %struct_inner, 0u
- %251:i32 = add %249, %250
- %252:i32 = access %array_struct_inner, 0i, 0u
- %253:i32 = add %251, %252
- store %s, %253
- ret
- }
+kernel void tint_symbol(const constant S* ub [[buffer(0)]], device int* s [[buffer(1)]]) {
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ub=ub, .s=s};
+ float const scalar_f32 = (*tint_module_vars.ub).scalar_f32;
+ int const scalar_i32 = (*tint_module_vars.ub).scalar_i32;
+ uint const scalar_u32 = (*tint_module_vars.ub).scalar_u32;
+ half const scalar_f16 = (*tint_module_vars.ub).scalar_f16;
+ float2 const vec2_f32 = (*tint_module_vars.ub).vec2_f32;
+ int2 const vec2_i32 = (*tint_module_vars.ub).vec2_i32;
+ uint2 const vec2_u32 = (*tint_module_vars.ub).vec2_u32;
+ half2 const vec2_f16 = (*tint_module_vars.ub).vec2_f16;
+ float3 const vec3_f32 = (*tint_module_vars.ub).vec3_f32;
+ int3 const vec3_i32 = (*tint_module_vars.ub).vec3_i32;
+ uint3 const vec3_u32 = (*tint_module_vars.ub).vec3_u32;
+ half3 const vec3_f16 = (*tint_module_vars.ub).vec3_f16;
+ float4 const vec4_f32 = (*tint_module_vars.ub).vec4_f32;
+ int4 const vec4_i32 = (*tint_module_vars.ub).vec4_i32;
+ uint4 const vec4_u32 = (*tint_module_vars.ub).vec4_u32;
+ half4 const vec4_f16 = (*tint_module_vars.ub).vec4_f16;
+ float2x2 const mat2x2_f32 = (*tint_module_vars.ub).mat2x2_f32;
+ float2x3 const mat2x3_f32 = (*tint_module_vars.ub).mat2x3_f32;
+ float2x4 const mat2x4_f32 = (*tint_module_vars.ub).mat2x4_f32;
+ float3x2 const mat3x2_f32 = (*tint_module_vars.ub).mat3x2_f32;
+ float3x3 const mat3x3_f32 = (*tint_module_vars.ub).mat3x3_f32;
+ float3x4 const mat3x4_f32 = (*tint_module_vars.ub).mat3x4_f32;
+ float4x2 const mat4x2_f32 = (*tint_module_vars.ub).mat4x2_f32;
+ float4x3 const mat4x3_f32 = (*tint_module_vars.ub).mat4x3_f32;
+ float4x4 const mat4x4_f32 = (*tint_module_vars.ub).mat4x4_f32;
+ half2x2 const mat2x2_f16 = (*tint_module_vars.ub).mat2x2_f16;
+ half2x3 const mat2x3_f16 = (*tint_module_vars.ub).mat2x3_f16;
+ half2x4 const mat2x4_f16 = (*tint_module_vars.ub).mat2x4_f16;
+ half3x2 const mat3x2_f16 = (*tint_module_vars.ub).mat3x2_f16;
+ half3x3 const mat3x3_f16 = (*tint_module_vars.ub).mat3x3_f16;
+ half3x4 const mat3x4_f16 = (*tint_module_vars.ub).mat3x4_f16;
+ half4x2 const mat4x2_f16 = (*tint_module_vars.ub).mat4x2_f16;
+ half4x3 const mat4x3_f16 = (*tint_module_vars.ub).mat4x3_f16;
+ half4x4 const mat4x4_f16 = (*tint_module_vars.ub).mat4x4_f16;
+ tint_array<float3, 2> const arr2_vec3_f32 = (*tint_module_vars.ub).arr2_vec3_f32;
+ tint_array<half4x2, 2> const arr2_mat4x2_f16 = (*tint_module_vars.ub).arr2_mat4x2_f16;
+ Inner const struct_inner = (*tint_module_vars.ub).struct_inner;
+ tint_array<Inner, 4> const array_struct_inner = (*tint_module_vars.ub).array_struct_inner;
+ int const v = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int const v_1 = (v + int(scalar_u32));
+ int const v_2 = (v_1 + tint_f16_to_i32(scalar_f16));
+ int const v_3 = ((v_2 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int const v_4 = (v_3 + int(vec2_u32[0u]));
+ int const v_5 = (v_4 + tint_f16_to_i32(vec2_f16[0u]));
+ int const v_6 = ((v_5 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int const v_7 = (v_6 + int(vec3_u32[1u]));
+ int const v_8 = (v_7 + tint_f16_to_i32(vec3_f16[1u]));
+ int const v_9 = ((v_8 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int const v_10 = (v_9 + int(vec4_u32[2u]));
+ int const v_11 = (v_10 + tint_f16_to_i32(vec4_f16[2u]));
+ int const v_12 = (v_11 + tint_f32_to_i32(mat2x2_f32[0][0u]));
+ int const v_13 = (v_12 + tint_f32_to_i32(mat2x3_f32[0][0u]));
+ int const v_14 = (v_13 + tint_f32_to_i32(mat2x4_f32[0][0u]));
+ int const v_15 = (v_14 + tint_f32_to_i32(mat3x2_f32[0][0u]));
+ int const v_16 = (v_15 + tint_f32_to_i32(mat3x3_f32[0][0u]));
+ int const v_17 = (v_16 + tint_f32_to_i32(mat3x4_f32[0][0u]));
+ int const v_18 = (v_17 + tint_f32_to_i32(mat4x2_f32[0][0u]));
+ int const v_19 = (v_18 + tint_f32_to_i32(mat4x3_f32[0][0u]));
+ int const v_20 = (v_19 + tint_f32_to_i32(mat4x4_f32[0][0u]));
+ int const v_21 = (v_20 + tint_f16_to_i32(mat2x2_f16[0][0u]));
+ int const v_22 = (v_21 + tint_f16_to_i32(mat2x3_f16[0][0u]));
+ int const v_23 = (v_22 + tint_f16_to_i32(mat2x4_f16[0][0u]));
+ int const v_24 = (v_23 + tint_f16_to_i32(mat3x2_f16[0][0u]));
+ int const v_25 = (v_24 + tint_f16_to_i32(mat3x3_f16[0][0u]));
+ int const v_26 = (v_25 + tint_f16_to_i32(mat3x4_f16[0][0u]));
+ int const v_27 = (v_26 + tint_f16_to_i32(mat4x2_f16[0][0u]));
+ int const v_28 = (v_27 + tint_f16_to_i32(mat4x3_f16[0][0u]));
+ int const v_29 = (v_28 + tint_f16_to_i32(mat4x4_f16[0][0u]));
+ int const v_30 = (v_29 + tint_f32_to_i32(arr2_vec3_f32[0][0u]));
+ (*tint_module_vars.s) = (((v_30 + tint_f16_to_i32(arr2_mat4x2_f16[0][0][0u])) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32);
}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B3: {
- %255:i32 = convert %value
- %256:bool = gte %value, -2147483648.0f
- %257:i32 = select -2147483648i, %255, %256
- %258:bool = lte %value, 2147483520.0f
- %259:i32 = select 2147483647i, %257, %258
- ret %259
- }
-}
-%tint_f16_to_i32 = func(%value_1:f16):i32 { # %value_1: 'value'
- $B4: {
- %261:i32 = convert %value_1
- %262:bool = gte %value_1, -65504.0h
- %263:i32 = select -2147483648i, %261, %262
- %264:bool = lte %value_1, 65504.0h
- %265:i32 = select 2147483647i, %263, %264
- ret %265
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/bug/tint/1520.spvasm.expected.ir.msl b/test/tint/bug/tint/1520.spvasm.expected.ir.msl
index c1cce03..6caf65e 100644
--- a/test/tint/bug/tint/1520.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/1520.spvasm.expected.ir.msl
@@ -1,278 +1,163 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UniformBuffer {
+ float unknownInput_S1_c0;
+ float4 ucolorRed_S1_c0;
+ float4 ucolorGreen_S1_c0;
+ float3x3 umatrix_S1;
+};
+struct tint_module_vars_struct {
+ const constant UniformBuffer* x_4;
+ thread float4* sk_FragColor;
+ thread bool* sk_Clockwise;
+ thread float4* vcolor_S0;
+};
+struct main_out {
+ float4 sk_FragColor_1;
+};
+struct tint_symbol_outputs {
+ float4 main_out_sk_FragColor_1 [[color(0)]];
+};
+struct tint_symbol_inputs {
+ float4 vcolor_S0_param [[user(locn0)]];
+};
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UniformBuffer = struct @align(16) {
- unknownInput_S1_c0:f32 @offset(16)
- ucolorRed_S1_c0:vec4<f32> @offset(32)
- ucolorGreen_S1_c0:vec4<f32> @offset(48)
- umatrix_S1:mat3x3<f32> @offset(64)
+int4 tint_div_v4i32(int4 lhs, int4 rhs) {
+ return (lhs / select(rhs, int4(1), ((rhs == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (rhs == int4(-1))))));
}
-
-main_out = struct @align(16) {
- sk_FragColor_1:vec4<f32> @offset(0), @location(0)
+int tint_f32_to_i32(float value) {
+ return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
}
-
-$B1: { # root
- %x_4:ptr<uniform, UniformBuffer, read> = var @binding_point(0, 0)
- %sk_FragColor:ptr<private, vec4<f32>, read_write> = var
- %sk_Clockwise:ptr<private, bool, read_write> = var
- %vcolor_S0:ptr<private, vec4<f32>, read_write> = var
-}
-
-%test_int_S1_c0_b = func():bool {
- $B2: {
- %unknown:ptr<function, i32, read_write> = var
- %ok:ptr<function, bool, read_write> = var
- %val:ptr<function, vec4<i32>, read_write> = var
- %x_40:ptr<function, bool, read_write> = var
- %x_41:ptr<function, bool, read_write> = var
- %x_54:ptr<function, bool, read_write> = var
- %x_55:ptr<function, bool, read_write> = var
- %x_65:ptr<function, bool, read_write> = var
- %x_66:ptr<function, bool, read_write> = var
- %15:ptr<uniform, f32, read> = access %x_4, 0u
- %16:f32 = load %15
- %17:i32 = call %tint_f32_to_i32, %16
- %x_27:i32 = let %17
- store %unknown, %x_27
- store %ok, true
- store %x_41, false
- if true [t: $B3] { # if_1
- $B3: { # true
- %20:vec4<i32> = construct %x_27
- %21:vec4<i32> = call %tint_div_v4i32, vec4<i32>(0i), %20
- %23:vec4<bool> = eq %21, vec4<i32>(0i)
- %24:bool = all %23
- store %x_40, %24
- %25:bool = load %x_40
- store %x_41, %25
- exit_if # if_1
- }
- }
- %26:bool = load %x_41
- store %ok, %26
- %27:vec4<i32> = construct %x_27
- %x_44:vec4<i32> = let %27
- store %val, %x_44
- %29:vec4<i32> = add %x_44, vec4<i32>(1i)
- %x_47:vec4<i32> = let %29
- store %val, %x_47
- %31:vec4<i32> = sub %x_47, vec4<i32>(1i)
- %x_48:vec4<i32> = let %31
- store %val, %x_48
- %33:vec4<i32> = add %x_48, vec4<i32>(1i)
- %x_49:vec4<i32> = let %33
- store %val, %x_49
- %35:vec4<i32> = sub %x_49, vec4<i32>(1i)
- %x_50:vec4<i32> = let %35
- store %val, %x_50
- store %x_55, false
- %37:bool = load %x_41
- if %37 [t: $B4] { # if_2
- $B4: { # true
- %38:vec4<bool> = eq %x_50, %x_44
- %39:bool = all %38
- store %x_54, %39
- %40:bool = load %x_54
- store %x_55, %40
- exit_if # if_2
- }
- }
- %41:bool = load %x_55
- store %ok, %41
- %42:vec4<i32> = mul %x_50, vec4<i32>(2i)
- %x_58:vec4<i32> = let %42
- store %val, %x_58
- %44:vec4<i32> = call %tint_div_v4i32, %x_58, vec4<i32>(2i)
- %x_59:vec4<i32> = let %44
- store %val, %x_59
- %46:vec4<i32> = mul %x_59, vec4<i32>(2i)
- %x_60:vec4<i32> = let %46
- store %val, %x_60
- %48:vec4<i32> = call %tint_div_v4i32, %x_60, vec4<i32>(2i)
- %x_61:vec4<i32> = let %48
- store %val, %x_61
- store %x_66, false
- %50:bool = load %x_55
- if %50 [t: $B5] { # if_3
- $B5: { # true
- %51:vec4<bool> = eq %x_61, %x_44
- %52:bool = all %51
- store %x_65, %52
- %53:bool = load %x_65
- store %x_66, %53
- exit_if # if_3
- }
- }
- %54:bool = load %x_66
- store %ok, %54
- %55:bool = load %x_66
- ret %55
+bool test_int_S1_c0_b(tint_module_vars_struct tint_module_vars) {
+ int unknown = 0;
+ bool ok = false;
+ int4 val = 0;
+ bool x_40 = false;
+ bool x_41 = false;
+ bool x_54 = false;
+ bool x_55 = false;
+ bool x_65 = false;
+ bool x_66 = false;
+ int const x_27 = tint_f32_to_i32((*tint_module_vars.x_4).unknownInput_S1_c0);
+ unknown = x_27;
+ ok = true;
+ x_41 = false;
+ if (true) {
+ x_40 = all((tint_div_v4i32(int4(0), int4(x_27)) == int4(0)));
+ x_41 = x_40;
}
-}
-%main_1 = func():void {
- $B6: {
- %outputColor_S0:ptr<function, vec4<f32>, read_write> = var
- %output_S1:ptr<function, vec4<f32>, read_write> = var
- %x_8_unknown:ptr<function, f32, read_write> = var
- %x_9_ok:ptr<function, bool, read_write> = var
- %x_10_val:ptr<function, vec4<f32>, read_write> = var
- %x_116:ptr<function, vec4<f32>, read_write> = var
- %x_86:ptr<function, bool, read_write> = var
- %x_87:ptr<function, bool, read_write> = var
- %x_99:ptr<function, bool, read_write> = var
- %x_100:ptr<function, bool, read_write> = var
- %x_110:ptr<function, bool, read_write> = var
- %x_111:ptr<function, bool, read_write> = var
- %x_114:ptr<function, bool, read_write> = var
- %x_115:ptr<function, bool, read_write> = var
- %71:vec4<f32> = load %vcolor_S0
- store %outputColor_S0, %71
- %72:ptr<uniform, f32, read> = access %x_4, 0u
- %73:f32 = load %72
- %x_77:f32 = let %73
- store %x_8_unknown, %x_77
- store %x_9_ok, true
- store %x_87, false
- if true [t: $B7] { # if_4
- $B7: { # true
- %75:vec4<f32> = construct %x_77
- %76:vec4<f32> = div vec4<f32>(0.0f), %75
- %77:vec4<bool> = eq %76, vec4<f32>(0.0f)
- %78:bool = all %77
- store %x_86, %78
- %79:bool = load %x_86
- store %x_87, %79
- exit_if # if_4
- }
- }
- %80:bool = load %x_87
- store %x_9_ok, %80
- %81:vec4<f32> = construct %x_77
- %x_89:vec4<f32> = let %81
- store %x_10_val, %x_89
- %83:vec4<f32> = add %x_89, vec4<f32>(1.0f)
- %x_92:vec4<f32> = let %83
- store %x_10_val, %x_92
- %85:vec4<f32> = sub %x_92, vec4<f32>(1.0f)
- %x_93:vec4<f32> = let %85
- store %x_10_val, %x_93
- %87:vec4<f32> = add %x_93, vec4<f32>(1.0f)
- %x_94:vec4<f32> = let %87
- store %x_10_val, %x_94
- %89:vec4<f32> = sub %x_94, vec4<f32>(1.0f)
- %x_95:vec4<f32> = let %89
- store %x_10_val, %x_95
- store %x_100, false
- %91:bool = load %x_87
- if %91 [t: $B8] { # if_5
- $B8: { # true
- %92:vec4<bool> = eq %x_95, %x_89
- %93:bool = all %92
- store %x_99, %93
- %94:bool = load %x_99
- store %x_100, %94
- exit_if # if_5
- }
- }
- %95:bool = load %x_100
- store %x_9_ok, %95
- %96:vec4<f32> = mul %x_95, vec4<f32>(2.0f)
- %x_103:vec4<f32> = let %96
- store %x_10_val, %x_103
- %98:vec4<f32> = div %x_103, vec4<f32>(2.0f)
- %x_104:vec4<f32> = let %98
- store %x_10_val, %x_104
- %100:vec4<f32> = mul %x_104, vec4<f32>(2.0f)
- %x_105:vec4<f32> = let %100
- store %x_10_val, %x_105
- %102:vec4<f32> = div %x_105, vec4<f32>(2.0f)
- %x_106:vec4<f32> = let %102
- store %x_10_val, %x_106
- store %x_111, false
- %104:bool = load %x_100
- if %104 [t: $B9] { # if_6
- $B9: { # true
- %105:vec4<bool> = eq %x_106, %x_89
- %106:bool = all %105
- store %x_110, %106
- %107:bool = load %x_110
- store %x_111, %107
- exit_if # if_6
- }
- }
- %108:bool = load %x_111
- store %x_9_ok, %108
- store %x_115, false
- %109:bool = load %x_111
- if %109 [t: $B10] { # if_7
- $B10: { # true
- %110:bool = call %test_int_S1_c0_b
- store %x_114, %110
- %111:bool = load %x_114
- store %x_115, %111
- exit_if # if_7
- }
- }
- %112:bool = load %x_115
- if %112 [t: $B11, f: $B12] { # if_8
- $B11: { # true
- %113:ptr<uniform, vec4<f32>, read> = access %x_4, 2u
- %114:vec4<f32> = load %113
- store %x_116, %114
- exit_if # if_8
- }
- $B12: { # false
- %115:ptr<uniform, vec4<f32>, read> = access %x_4, 1u
- %116:vec4<f32> = load %115
- store %x_116, %116
- exit_if # if_8
- }
- }
- %117:vec4<f32> = load %x_116
- %x_125:vec4<f32> = let %117
- %119:vec4<f32> = load %x_116
- store %output_S1, %119
- store %sk_FragColor, %x_125
- ret
+ ok = x_41;
+ int4 const x_44 = int4(x_27);
+ val = x_44;
+ int4 const x_47 = (x_44 + int4(1));
+ val = x_47;
+ int4 const x_48 = (x_47 - int4(1));
+ val = x_48;
+ int4 const x_49 = (x_48 + int4(1));
+ val = x_49;
+ int4 const x_50 = (x_49 - int4(1));
+ val = x_50;
+ x_55 = false;
+ if (x_41) {
+ x_54 = all((x_50 == x_44));
+ x_55 = x_54;
}
-}
-%tint_symbol = @fragment func(%sk_Clockwise_param:bool [@front_facing], %vcolor_S0_param:vec4<f32> [@location(0)]):main_out {
- $B13: {
- store %sk_Clockwise, %sk_Clockwise_param
- store %vcolor_S0, %vcolor_S0_param
- %123:void = call %main_1
- %124:vec4<f32> = load %sk_FragColor
- %125:main_out = construct %124
- ret %125
+ ok = x_55;
+ int4 const x_58 = (x_50 * int4(2));
+ val = x_58;
+ int4 const x_59 = tint_div_v4i32(x_58, int4(2));
+ val = x_59;
+ int4 const x_60 = (x_59 * int4(2));
+ val = x_60;
+ int4 const x_61 = tint_div_v4i32(x_60, int4(2));
+ val = x_61;
+ x_66 = false;
+ if (x_55) {
+ x_65 = all((x_61 == x_44));
+ x_66 = x_65;
}
+ ok = x_66;
+ return x_66;
}
-%tint_div_v4i32 = func(%lhs:vec4<i32>, %rhs:vec4<i32>):vec4<i32> {
- $B14: {
- %128:vec4<bool> = eq %rhs, vec4<i32>(0i)
- %129:vec4<bool> = eq %lhs, vec4<i32>(-2147483648i)
- %130:vec4<bool> = eq %rhs, vec4<i32>(-1i)
- %131:vec4<bool> = and %129, %130
- %132:vec4<bool> = or %128, %131
- %133:vec4<i32> = select %rhs, vec4<i32>(1i), %132
- %134:vec4<i32> = div %lhs, %133
- ret %134
+void main_1(tint_module_vars_struct tint_module_vars) {
+ float4 outputColor_S0 = 0.0f;
+ float4 output_S1 = 0.0f;
+ float x_8_unknown = 0.0f;
+ bool x_9_ok = false;
+ float4 x_10_val = 0.0f;
+ float4 x_116 = 0.0f;
+ bool x_86 = false;
+ bool x_87 = false;
+ bool x_99 = false;
+ bool x_100 = false;
+ bool x_110 = false;
+ bool x_111 = false;
+ bool x_114 = false;
+ bool x_115 = false;
+ outputColor_S0 = (*tint_module_vars.vcolor_S0);
+ float const x_77 = (*tint_module_vars.x_4).unknownInput_S1_c0;
+ x_8_unknown = x_77;
+ x_9_ok = true;
+ x_87 = false;
+ if (true) {
+ x_86 = all(((float4(0.0f) / float4(x_77)) == float4(0.0f)));
+ x_87 = x_86;
}
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %136:i32 = convert %value
- %137:bool = gte %value, -2147483648.0f
- %138:i32 = select -2147483648i, %136, %137
- %139:bool = lte %value, 2147483520.0f
- %140:i32 = select 2147483647i, %138, %139
- ret %140
+ x_9_ok = x_87;
+ float4 const x_89 = float4(x_77);
+ x_10_val = x_89;
+ float4 const x_92 = (x_89 + float4(1.0f));
+ x_10_val = x_92;
+ float4 const x_93 = (x_92 - float4(1.0f));
+ x_10_val = x_93;
+ float4 const x_94 = (x_93 + float4(1.0f));
+ x_10_val = x_94;
+ float4 const x_95 = (x_94 - float4(1.0f));
+ x_10_val = x_95;
+ x_100 = false;
+ if (x_87) {
+ x_99 = all((x_95 == x_89));
+ x_100 = x_99;
}
+ x_9_ok = x_100;
+ float4 const x_103 = (x_95 * float4(2.0f));
+ x_10_val = x_103;
+ float4 const x_104 = (x_103 / float4(2.0f));
+ x_10_val = x_104;
+ float4 const x_105 = (x_104 * float4(2.0f));
+ x_10_val = x_105;
+ float4 const x_106 = (x_105 / float4(2.0f));
+ x_10_val = x_106;
+ x_111 = false;
+ if (x_100) {
+ x_110 = all((x_106 == x_89));
+ x_111 = x_110;
+ }
+ x_9_ok = x_111;
+ x_115 = false;
+ if (x_111) {
+ x_114 = test_int_S1_c0_b(tint_module_vars);
+ x_115 = x_114;
+ }
+ if (x_115) {
+ x_116 = (*tint_module_vars.x_4).ucolorGreen_S1_c0;
+ } else {
+ x_116 = (*tint_module_vars.x_4).ucolorRed_S1_c0;
+ }
+ float4 const x_125 = x_116;
+ output_S1 = x_116;
+ (*tint_module_vars.sk_FragColor) = x_125;
}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+main_out tint_symbol_inner(bool sk_Clockwise_param, float4 vcolor_S0_param, tint_module_vars_struct tint_module_vars) {
+ (*tint_module_vars.sk_Clockwise) = sk_Clockwise_param;
+ (*tint_module_vars.vcolor_S0) = vcolor_S0_param;
+ main_1(tint_module_vars);
+ return main_out{.sk_FragColor_1=(*tint_module_vars.sk_FragColor)};
+}
+fragment tint_symbol_outputs tint_symbol(bool sk_Clockwise_param [[front_facing]], tint_symbol_inputs inputs [[stage_in]], const constant UniformBuffer* x_4 [[buffer(0)]]) {
+ thread float4 sk_FragColor = 0.0f;
+ thread bool sk_Clockwise = false;
+ thread float4 vcolor_S0 = 0.0f;
+ tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.x_4=x_4, .sk_FragColor=(&sk_FragColor), .sk_Clockwise=(&sk_Clockwise), .vcolor_S0=(&vcolor_S0)};
+ return tint_symbol_outputs{.main_out_sk_FragColor_1=tint_symbol_inner(sk_Clockwise_param, inputs.vcolor_S0_param, tint_module_vars).sk_FragColor_1};
+}
diff --git a/test/tint/bug/tint/1961.wgsl.expected.ir.msl b/test/tint/bug/tint/1961.wgsl.expected.ir.msl
index 12a45e3..d41f028 100644
--- a/test/tint/bug/tint/1961.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1961.wgsl.expected.ir.msl
@@ -6,13 +6,7 @@
bool y = false;
bool v = false;
if (x) {
- bool v_1 = false;
- if (true) {
- v_1 = true;
- } else {
- v_1 = y;
- }
- v = v_1;
+ v = true;
} else {
v = false;
}
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index e3753ab..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,197 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%func_ = func():f32 {
- $B2: {
- %x:ptr<function, i32, read_write> = var
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %7:bool = lt %6, 1.0f
- if %7 [t: $B3] { # if_1
- $B3: { # true
- ret 5.0f
- }
- }
- %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %9:f32 = load_vector_element %8, 0u
- %10:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %11:f32 = load_vector_element %10, 1u
- %12:bool = gt %9, %11
- if %12 [t: $B4] { # if_2
- $B4: { # true
- ret 1.0f
- }
- }
- %13:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %14:f32 = load_vector_element %13, 0u
- %15:i32 = call %tint_f32_to_i32, %14
- store %x, %15
- %17:i32 = load %x
- %18:i32 = let %17
- %19:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %20:f32 = load_vector_element %19, 0u
- %21:f32 = clamp %20, 0.0f, 1.0f
- %22:i32 = call %tint_f32_to_i32, %21
- %23:i32 = mul %22, 3i
- %24:i32 = add %18, %23
- store %x, %24
- %25:i32 = load %x
- %x_120:i32 = let %25
- %27:f32 = convert %x_120
- %28:f32 = add 5.0f, %27
- ret %28
- }
-}
-%main_1 = func():void {
- $B5: {
- %i:ptr<function, i32, read_write> = var
- %j:ptr<function, i32, read_write> = var
- %data:ptr<function, array<vec2<f32>, 17>, read_write> = var
- store %i, 0i
- loop [b: $B6, c: $B7] { # loop_1
- $B6: { # body
- %33:i32 = load %i
- %34:i32 = let %33
- %35:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %36:f32 = load_vector_element %35, 0u
- %37:i32 = call %tint_f32_to_i32, %36
- %38:i32 = add 4i, %37
- %39:bool = lt %34, %38
- if %39 [t: $B8, f: $B9] { # if_3
- $B8: { # true
- exit_if # if_3
- }
- $B9: { # false
- exit_loop # loop_1
- }
- }
- %40:f32 = load_vector_element %gl_FragCoord, 0u
- %41:bool = gte %40, 0.0f
- if %41 [t: $B10] { # if_4
- $B10: { # true
- store %j, 0i
- loop [b: $B11, c: $B12] { # loop_2
- $B11: { # body
- %x_81:ptr<function, bool, read_write> = var
- %x_82:ptr<function, bool, read_write> = var
- %44:i32 = load %j
- %45:bool = lt %44, 4i
- if %45 [t: $B13, f: $B14] { # if_5
- $B13: { # true
- exit_if # if_5
- }
- $B14: { # false
- exit_loop # loop_2
- }
- }
- %46:i32 = load %j
- %x_67:i32 = let %46
- %48:i32 = load %i
- %x_69:i32 = let %48
- %50:f32 = call %func_
- %x_71:f32 = let %50
- %52:i32 = mul 4i, %x_67
- %53:i32 = add %52, %x_69
- %54:ptr<function, vec2<f32>, read_write> = access %data, %53
- store_vector_element %54, 0u, %x_71
- %55:ptr<function, vec2<f32>, read_write> = access %data, 0i
- %56:f32 = load_vector_element %55, 0u
- %57:bool = eq %56, 5.0f
- %x_75:bool = let %57
- store %x_82, %x_75
- %59:bool = eq %x_75, false
- if %59 [t: $B15] { # if_6
- $B15: { # true
- %60:ptr<function, vec2<f32>, read_write> = access %data, 15i
- %61:f32 = load_vector_element %60, 0u
- %62:bool = eq %61, 5.0f
- store %x_81, %62
- %63:bool = load %x_81
- store %x_82, %63
- exit_if # if_6
- }
- }
- %64:bool = load %x_82
- if %64 [t: $B16, f: $B17] { # if_7
- $B16: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_7
- }
- $B17: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_7
- }
- }
- %65:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %66:f32 = load_vector_element %65, 0u
- %67:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %68:f32 = load_vector_element %67, 1u
- %69:bool = gt %66, %68
- if %69 [t: $B18] { # if_8
- $B18: { # true
- ret
- }
- }
- continue # -> $B12
- }
- $B12: { # continuing
- %70:i32 = load %j
- %71:i32 = add %70, 1i
- store %j, %71
- next_iteration # -> $B11
- }
- }
- exit_if # if_4
- }
- }
- continue # -> $B7
- }
- $B7: { # continuing
- %72:i32 = load %i
- %73:i32 = add %72, 1i
- store %i, %73
- next_iteration # -> $B6
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B19: {
- store %gl_FragCoord, %gl_FragCoord_param
- %76:void = call %main_1
- %77:vec4<f32> = load %x_GLF_color
- %78:main_out = construct %77
- ret %78
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B20: {
- %80:i32 = convert %value
- %81:bool = gte %value, -2147483648.0f
- %82:i32 = select -2147483648i, %80, %81
- %83:bool = lte %value, 2147483520.0f
- %84:i32 = select 2147483647i, %82, %83
- ret %84
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 82260ba..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,212 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%func_ = func():f32 {
- $B2: {
- %x:ptr<function, i32, read_write> = var
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %x_99:f32 = let %6
- %8:bool = lt %x_99, 1.0f
- if %8 [t: $B3] { # if_1
- $B3: { # true
- ret 5.0f
- }
- }
- %9:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %10:f32 = load_vector_element %9, 0u
- %x_104:f32 = let %10
- %12:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %13:f32 = load_vector_element %12, 1u
- %x_106:f32 = let %13
- %15:bool = gt %x_104, %x_106
- if %15 [t: $B4] { # if_2
- $B4: { # true
- ret 1.0f
- }
- }
- %16:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %17:f32 = load_vector_element %16, 0u
- %x_111:f32 = let %17
- %19:i32 = call %tint_f32_to_i32, %x_111
- store %x, %19
- %21:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %22:f32 = load_vector_element %21, 0u
- %x_114:f32 = let %22
- %24:i32 = load %x
- %x_118:i32 = let %24
- %26:f32 = clamp %x_114, 0.0f, 1.0f
- %27:i32 = call %tint_f32_to_i32, %26
- %28:i32 = mul %27, 3i
- %29:i32 = add %x_118, %28
- store %x, %29
- %30:i32 = load %x
- %x_120:i32 = let %30
- %32:f32 = convert %x_120
- %33:f32 = add 5.0f, %32
- ret %33
- }
-}
-%main_1 = func():void {
- $B5: {
- %i:ptr<function, i32, read_write> = var
- %j:ptr<function, i32, read_write> = var
- %data:ptr<function, array<vec2<f32>, 17>, read_write> = var
- store %i, 0i
- loop [b: $B6, c: $B7] { # loop_1
- $B6: { # body
- %38:i32 = load %i
- %x_48:i32 = let %38
- %40:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %41:f32 = load_vector_element %40, 0u
- %x_50:f32 = let %41
- %43:i32 = call %tint_f32_to_i32, %x_50
- %44:i32 = add 4i, %43
- %45:bool = lt %x_48, %44
- if %45 [t: $B8, f: $B9] { # if_3
- $B8: { # true
- exit_if # if_3
- }
- $B9: { # false
- exit_loop # loop_1
- }
- }
- %46:f32 = load_vector_element %gl_FragCoord, 0u
- %x_56:f32 = let %46
- %48:bool = gte %x_56, 0.0f
- if %48 [t: $B10] { # if_4
- $B10: { # true
- store %j, 0i
- loop [b: $B11, c: $B12] { # loop_2
- $B11: { # body
- %x_81:ptr<function, bool, read_write> = var
- %x_82_phi:ptr<function, bool, read_write> = var
- %51:i32 = load %j
- %x_64:i32 = let %51
- %53:bool = lt %x_64, 4i
- if %53 [t: $B13, f: $B14] { # if_5
- $B13: { # true
- exit_if # if_5
- }
- $B14: { # false
- exit_loop # loop_2
- }
- }
- %54:i32 = load %j
- %x_67:i32 = let %54
- %56:i32 = load %i
- %x_69:i32 = let %56
- %58:f32 = call %func_
- %x_71:f32 = let %58
- %60:i32 = mul 4i, %x_67
- %61:i32 = add %60, %x_69
- %62:ptr<function, vec2<f32>, read_write> = access %data, %61
- store_vector_element %62, 0u, %x_71
- %63:ptr<function, vec2<f32>, read_write> = access %data, 0i
- %64:f32 = load_vector_element %63, 0u
- %x_74:f32 = let %64
- %66:bool = eq %x_74, 5.0f
- %x_75:bool = let %66
- store %x_82_phi, %x_75
- %68:bool = eq %x_75, false
- if %68 [t: $B15] { # if_6
- $B15: { # true
- %69:ptr<function, vec2<f32>, read_write> = access %data, 15i
- %70:f32 = load_vector_element %69, 0u
- %x_80:f32 = let %70
- %72:bool = eq %x_80, 5.0f
- store %x_81, %72
- %73:bool = load %x_81
- store %x_82_phi, %73
- exit_if # if_6
- }
- }
- %74:bool = load %x_82_phi
- %x_82:bool = let %74
- if %x_82 [t: $B16, f: $B17] { # if_7
- $B16: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_7
- }
- $B17: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_7
- }
- }
- %76:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %77:f32 = load_vector_element %76, 0u
- %x_87:f32 = let %77
- %79:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %80:f32 = load_vector_element %79, 1u
- %x_89:f32 = let %80
- %82:bool = gt %x_87, %x_89
- if %82 [t: $B18] { # if_8
- $B18: { # true
- ret
- }
- }
- continue # -> $B12
- }
- $B12: { # continuing
- %83:i32 = load %j
- %x_93:i32 = let %83
- %85:i32 = add %x_93, 1i
- store %j, %85
- next_iteration # -> $B11
- }
- }
- exit_if # if_4
- }
- }
- continue # -> $B7
- }
- $B7: { # continuing
- %86:i32 = load %i
- %x_95:i32 = let %86
- %88:i32 = add %x_95, 1i
- store %i, %88
- next_iteration # -> $B6
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B19: {
- store %gl_FragCoord, %gl_FragCoord_param
- %91:void = call %main_1
- %92:vec4<f32> = load %x_GLF_color
- %93:main_out = construct %92
- ret %93
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B20: {
- %95:i32 = convert %value
- %96:bool = gte %value, -2147483648.0f
- %97:i32 = select -2147483648i, %95, %96
- %98:bool = lte %value, 2147483520.0f
- %99:i32 = select 2147483647i, %97, %98
- ret %99
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index c15daf7..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,197 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %data:ptr<function, array<vec4<f32>, 2>, read_write> = var
- %b:ptr<function, i32, read_write> = var
- %y:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %10:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
- %11:f32 = load %10
- %12:vec4<f32> = construct %11
- %13:vec4<f32> = let %12
- %14:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
- %15:f32 = load %14
- %16:vec4<f32> = construct %15
- %17:array<vec4<f32>, 2> = construct %13, %16
- store %data, %17
- %18:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %19:i32 = load %18
- store %b, %19
- %20:f32 = load_vector_element %gl_FragCoord, 1u
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = let %21
- %24:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %25:i32 = load %24
- %26:i32 = let %25
- %27:f32 = load_vector_element %gl_FragCoord, 1u
- %28:i32 = call %tint_f32_to_i32, %27
- %29:i32 = or %26, %28
- %30:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %31:i32 = load %30
- %32:i32 = let %31
- %33:i32 = max %23, %29
- %34:i32 = min %33, %32
- store %y, %34
- %35:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %36:i32 = load %35
- store %i, %36
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_82:ptr<function, bool, read_write> = var
- %x_83:ptr<function, bool, read_write> = var
- %39:i32 = load %i
- %40:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %41:i32 = load %40
- %42:bool = lt %39, %41
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:i32 = load %b
- %44:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %45:i32 = load %44
- %46:bool = gt %43, %45
- %x_76:bool = let %46
- store %x_83, %x_76
- if %x_76 [t: $B7] { # if_2
- $B7: { # true
- %48:i32 = load %y
- %49:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %50:i32 = load %49
- %51:bool = gt %48, %50
- store %x_82, %51
- %52:bool = load %x_82
- store %x_83, %52
- exit_if # if_2
- }
- }
- %53:bool = load %x_83
- if %53 [t: $B8] { # if_3
- $B8: { # true
- exit_loop # loop_1
- }
- }
- %54:i32 = load %b
- %55:i32 = add %54, 1i
- store %b, %55
- continue # -> $B4
- }
- $B4: { # continuing
- %56:i32 = load %i
- %57:i32 = add %56, 1i
- store %i, %57
- next_iteration # -> $B3
- }
- }
- %58:i32 = load %b
- %59:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %60:i32 = load %59
- %61:bool = eq %58, %60
- if %61 [t: $B9] { # if_4
- $B9: { # true
- %62:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %63:i32 = load %62
- %x_97:i32 = let %63
- %65:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %66:i32 = load %65
- %x_99:i32 = let %66
- %68:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
- %69:i32 = load %68
- %x_101:i32 = let %69
- %71:i32 = max %x_97, %x_99
- %72:i32 = min %71, %x_101
- %73:ptr<function, vec4<f32>, read_write> = access %data, %72
- %74:ptr<function, vec4<f32>, read_write> = let %73
- %75:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %76:i32 = load %75
- %77:f32 = convert %76
- %78:f32 = let %77
- %79:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %80:i32 = load %79
- %81:f32 = convert %80
- %82:f32 = let %81
- %83:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %84:i32 = load %83
- %85:f32 = convert %84
- %86:f32 = let %85
- %87:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %88:i32 = load %87
- %89:f32 = convert %88
- %90:vec4<f32> = construct %78, %82, %86, %89
- store %74, %90
- exit_if # if_4
- }
- }
- %91:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %92:i32 = load %91
- %93:ptr<function, vec4<f32>, read_write> = access %data, %92
- %94:vec4<f32> = load %93
- %x_120:vec4<f32> = let %94
- %96:f32 = access %x_120, 0u
- %97:f32 = access %x_120, 1u
- %98:f32 = access %x_120, 2u
- %99:f32 = access %x_120, 3u
- %100:vec4<f32> = construct %96, %97, %98, %99
- store %x_GLF_color, %100
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %103:void = call %main_1
- %104:vec4<f32> = load %x_GLF_color
- %105:main_out = construct %104
- ret %105
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B11: {
- %107:i32 = convert %value
- %108:bool = gte %value, -2147483648.0f
- %109:i32 = select -2147483648i, %107, %108
- %110:bool = lte %value, 2147483520.0f
- %111:i32 = select 2147483647i, %109, %110
- ret %111
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 8142215..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,219 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_10:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %data:ptr<function, array<vec4<f32>, 2>, read_write> = var
- %b:ptr<function, i32, read_write> = var
- %y:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %10:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
- %11:f32 = load %10
- %x_42:f32 = let %11
- %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
- %14:f32 = load %13
- %x_45:f32 = let %14
- %16:vec4<f32> = construct %x_42, %x_42, %x_42, %x_42
- %17:vec4<f32> = let %16
- %18:vec4<f32> = construct %x_45, %x_45, %x_45, %x_45
- %19:array<vec4<f32>, 2> = construct %17, %18
- store %data, %19
- %20:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %21:i32 = load %20
- %x_49:i32 = let %21
- store %b, %x_49
- %23:f32 = load_vector_element %gl_FragCoord, 1u
- %x_51:f32 = let %23
- %25:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %26:i32 = load %25
- %x_54:i32 = let %26
- %28:f32 = load_vector_element %gl_FragCoord, 1u
- %x_56:f32 = let %28
- %30:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %31:i32 = load %30
- %x_60:i32 = let %31
- %33:i32 = call %tint_f32_to_i32, %x_51
- %35:i32 = let %33
- %36:i32 = call %tint_f32_to_i32, %x_56
- %37:i32 = or %x_54, %36
- %38:i32 = max %35, %37
- %39:i32 = min %38, %x_60
- store %y, %39
- %40:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %41:i32 = load %40
- %x_63:i32 = let %41
- store %i, %x_63
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_82:ptr<function, bool, read_write> = var
- %x_83_phi:ptr<function, bool, read_write> = var
- %45:i32 = load %i
- %x_68:i32 = let %45
- %47:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %48:i32 = load %47
- %x_70:i32 = let %48
- %50:bool = lt %x_68, %x_70
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:i32 = load %b
- %x_73:i32 = let %51
- %53:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %54:i32 = load %53
- %x_75:i32 = let %54
- %56:bool = gt %x_73, %x_75
- %x_76:bool = let %56
- store %x_83_phi, %x_76
- if %x_76 [t: $B7] { # if_2
- $B7: { # true
- %58:i32 = load %y
- %x_79:i32 = let %58
- %60:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %61:i32 = load %60
- %x_81:i32 = let %61
- %63:bool = gt %x_79, %x_81
- store %x_82, %63
- %64:bool = load %x_82
- store %x_83_phi, %64
- exit_if # if_2
- }
- }
- %65:bool = load %x_83_phi
- %x_83:bool = let %65
- if %x_83 [t: $B8] { # if_3
- $B8: { # true
- exit_loop # loop_1
- }
- }
- %67:i32 = load %b
- %x_86:i32 = let %67
- %69:i32 = add %x_86, 1i
- store %b, %69
- continue # -> $B4
- }
- $B4: { # continuing
- %70:i32 = load %i
- %x_88:i32 = let %70
- %72:i32 = add %x_88, 1i
- store %i, %72
- next_iteration # -> $B3
- }
- }
- %73:i32 = load %b
- %x_90:i32 = let %73
- %75:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
- %76:i32 = load %75
- %x_92:i32 = let %76
- %78:bool = eq %x_90, %x_92
- if %78 [t: $B9] { # if_4
- $B9: { # true
- %79:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %80:i32 = load %79
- %x_97:i32 = let %80
- %82:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %83:i32 = load %82
- %x_99:i32 = let %83
- %85:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
- %86:i32 = load %85
- %x_101:i32 = let %86
- %88:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %89:i32 = load %88
- %x_104:i32 = let %89
- %91:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %92:i32 = load %91
- %x_107:i32 = let %92
- %94:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
- %95:i32 = load %94
- %x_110:i32 = let %95
- %97:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %98:i32 = load %97
- %x_113:i32 = let %98
- %100:i32 = max %x_97, %x_99
- %101:i32 = min %100, %x_101
- %102:ptr<function, vec4<f32>, read_write> = access %data, %101
- %103:ptr<function, vec4<f32>, read_write> = let %102
- %104:f32 = convert %x_104
- %105:f32 = let %104
- %106:f32 = convert %x_107
- %107:f32 = let %106
- %108:f32 = convert %x_110
- %109:f32 = let %108
- %110:f32 = convert %x_113
- %111:vec4<f32> = construct %105, %107, %109, %110
- store %103, %111
- exit_if # if_4
- }
- }
- %112:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
- %113:i32 = load %112
- %x_118:i32 = let %113
- %115:ptr<function, vec4<f32>, read_write> = access %data, %x_118
- %116:vec4<f32> = load %115
- %x_120:vec4<f32> = let %116
- %118:f32 = access %x_120, 0u
- %119:f32 = access %x_120, 1u
- %120:f32 = access %x_120, 2u
- %121:f32 = access %x_120, 3u
- %122:vec4<f32> = construct %118, %119, %120, %121
- store %x_GLF_color, %122
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %125:void = call %main_1
- %126:vec4<f32> = load %x_GLF_color
- %127:main_out = construct %126
- ret %127
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B11: {
- %129:i32 = convert %value
- %130:bool = gte %value, -2147483648.0f
- %131:i32 = select -2147483648i, %129, %130
- %132:bool = lte %value, 2147483520.0f
- %133:i32 = select 2147483647i, %131, %132
- ret %133
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index c6a3ce3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,152 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- %icoord:ptr<function, vec2<i32>, read_write> = var
- %x_40:ptr<function, f32, read_write> = var
- %icoord_1:ptr<function, vec2<i32>, read_write> = var
- %9:f32 = load_vector_element %gl_FragCoord, 0u
- %10:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %11:f32 = load %10
- %12:f32 = mul %9, %11
- %13:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %14:f32 = load %13
- %15:bool = gt %12, %14
- if %15 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- %16:vec4<f32> = load %gl_FragCoord
- %17:vec2<f32> = swizzle %16, xy
- %18:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %19:f32 = load %18
- %20:vec2<f32> = mul %17, %19
- %21:vec2<f32> = let %20
- %22:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %23:f32 = load %22
- %24:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %25:f32 = load %24
- %26:vec2<f32> = construct %23, %25
- %27:vec2<f32> = sub %21, %26
- %28:vec2<i32> = call %tint_v2f32_to_v2i32, %27
- store %icoord, %28
- %30:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %31:f32 = load %30
- %x_65:f32 = let %31
- %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %34:f32 = load %33
- %x_67:f32 = let %34
- %36:i32 = load_vector_element %icoord, 0u
- %37:i32 = load_vector_element %icoord, 1u
- %38:i32 = mul %36, %37
- %39:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
- %40:i32 = load %39
- %41:bool = neq %38, %40
- if %41 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- %42:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %43:f32 = load %42
- store %x_40, %43
- exit_if # if_2
- }
- $B6: { # false
- %44:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %45:f32 = load %44
- store %x_40, %45
- exit_if # if_2
- }
- }
- %46:f32 = load %x_40
- %47:f32 = let %46
- %48:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
- %49:i32 = load %48
- %50:f32 = convert %49
- %51:vec4<f32> = construct %x_65, %x_67, %47, %50
- store %x_GLF_color, %51
- exit_if # if_1
- }
- $B4: { # false
- %52:vec4<f32> = load %gl_FragCoord
- %53:vec2<f32> = swizzle %52, xy
- %54:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %55:f32 = load %54
- %56:vec2<f32> = mul %53, %55
- %57:vec2<f32> = let %56
- %58:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %59:f32 = load %58
- %60:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %61:f32 = load %60
- %62:vec2<f32> = construct %59, %61
- %63:vec2<f32> = sub %57, %62
- %64:vec2<i32> = call %tint_v2f32_to_v2i32, %63
- store %icoord_1, %64
- %65:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %66:f32 = load %65
- %67:f32 = let %66
- %68:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %69:f32 = load %68
- %70:f32 = let %69
- %71:i32 = load_vector_element %icoord_1, 0u
- %72:f32 = convert %71
- %73:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %74:f32 = load %73
- %75:vec4<f32> = construct %67, %70, %72, %74
- store %x_GLF_color, %75
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %78:void = call %main_1
- %79:vec4<f32> = load %x_GLF_color
- %80:main_out = construct %79
- ret %80
- }
-}
-%tint_v2f32_to_v2i32 = func(%value:vec2<f32>):vec2<i32> {
- $B8: {
- %82:vec2<i32> = convert %value
- %83:vec2<bool> = gte %value, vec2<f32>(-2147483648.0f)
- %84:vec2<i32> = select vec2<i32>(-2147483648i), %82, %83
- %85:vec2<bool> = lte %value, vec2<f32>(2147483520.0f)
- %86:vec2<i32> = select vec2<i32>(2147483647i), %84, %85
- ret %86
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 466f330..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,175 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr, 4> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr_1, 1> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- %icoord:ptr<function, vec2<i32>, read_write> = var
- %x_40:ptr<function, f32, read_write> = var
- %icoord_1:ptr<function, vec2<i32>, read_write> = var
- %9:f32 = load_vector_element %gl_FragCoord, 0u
- %x_42:f32 = let %9
- %11:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %12:f32 = load %11
- %x_44:f32 = let %12
- %14:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %15:f32 = load %14
- %x_47:f32 = let %15
- %17:f32 = mul %x_42, %x_44
- %18:bool = gt %17, %x_47
- if %18 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- %19:vec4<f32> = load %gl_FragCoord
- %x_52:vec4<f32> = let %19
- %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %22:f32 = load %21
- %x_55:f32 = let %22
- %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %25:f32 = load %24
- %x_58:f32 = let %25
- %27:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %28:f32 = load %27
- %x_60:f32 = let %28
- %30:f32 = access %x_52, 0u
- %31:f32 = access %x_52, 1u
- %32:vec2<f32> = construct %30, %31
- %33:vec2<f32> = mul %32, %x_55
- %34:vec2<f32> = let %33
- %35:vec2<f32> = construct %x_58, %x_60
- %36:vec2<f32> = sub %34, %35
- %37:vec2<i32> = call %tint_v2f32_to_v2i32, %36
- store %icoord, %37
- %39:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %40:f32 = load %39
- %x_65:f32 = let %40
- %42:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %43:f32 = load %42
- %x_67:f32 = let %43
- %45:i32 = load_vector_element %icoord, 0u
- %x_69:i32 = let %45
- %47:i32 = load_vector_element %icoord, 1u
- %x_71:i32 = let %47
- %49:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
- %50:i32 = load %49
- %x_74:i32 = let %50
- %52:i32 = mul %x_69, %x_71
- %53:bool = neq %52, %x_74
- if %53 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- %54:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %55:f32 = load %54
- %x_80:f32 = let %55
- store %x_40, %x_80
- exit_if # if_2
- }
- $B6: { # false
- %57:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %58:f32 = load %57
- %x_82:f32 = let %58
- store %x_40, %x_82
- exit_if # if_2
- }
- }
- %60:f32 = load %x_40
- %x_83:f32 = let %60
- %62:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
- %63:i32 = load %62
- %x_85:i32 = let %63
- %65:f32 = convert %x_85
- %66:vec4<f32> = construct %x_65, %x_67, %x_83, %65
- store %x_GLF_color, %66
- exit_if # if_1
- }
- $B4: { # false
- %67:vec4<f32> = load %gl_FragCoord
- %x_88:vec4<f32> = let %67
- %69:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
- %70:f32 = load %69
- %x_91:f32 = let %70
- %72:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
- %73:f32 = load %72
- %x_94:f32 = let %73
- %75:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
- %76:f32 = load %75
- %x_96:f32 = let %76
- %78:f32 = access %x_88, 0u
- %79:f32 = access %x_88, 1u
- %80:vec2<f32> = construct %78, %79
- %81:vec2<f32> = mul %80, %x_91
- %82:vec2<f32> = let %81
- %83:vec2<f32> = construct %x_94, %x_96
- %84:vec2<f32> = sub %82, %83
- %85:vec2<i32> = call %tint_v2f32_to_v2i32, %84
- store %icoord_1, %85
- %86:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %87:f32 = load %86
- %x_101:f32 = let %87
- %89:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %90:f32 = load %89
- %x_103:f32 = let %90
- %92:i32 = load_vector_element %icoord_1, 0u
- %x_105:i32 = let %92
- %94:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
- %95:f32 = load %94
- %x_108:f32 = let %95
- %97:f32 = convert %x_105
- %98:vec4<f32> = construct %x_101, %x_103, %97, %x_108
- store %x_GLF_color, %98
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %101:void = call %main_1
- %102:vec4<f32> = load %x_GLF_color
- %103:main_out = construct %102
- ret %103
- }
-}
-%tint_v2f32_to_v2i32 = func(%value:vec2<f32>):vec2<i32> {
- $B8: {
- %105:vec2<i32> = convert %value
- %106:vec2<bool> = gte %value, vec2<f32>(-2147483648.0f)
- %107:vec2<i32> = select vec2<i32>(-2147483648i), %105, %106
- %108:vec2<bool> = lte %value, vec2<f32>(2147483520.0f)
- %109:vec2<i32> = select vec2<i32>(2147483647i), %107, %108
- ret %109
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 496ef8c..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,112 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- store %a, 0i
- store %i, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %6:i32 = load %i
- %7:i32 = let %6
- %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %9:f32 = load_vector_element %8, 1u
- %10:i32 = call %tint_f32_to_i32, %9
- %12:bool = lt %7, %10
- if %12 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %13:i32 = load %a
- %14:bool = gt %13, 0i
- if %14 [t: $B7] { # if_2
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %15:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %16:f32 = load_vector_element %15, 1u
- %17:i32 = call %tint_f32_to_i32, %16
- %18:i32 = mul %17, 2i
- %19:i32 = call %tint_div_i32, %18, 2i
- store %a, %19
- continue # -> $B4
- }
- $B4: { # continuing
- %21:i32 = load %i
- %22:i32 = add %21, 1i
- store %i, %22
- next_iteration # -> $B3
- }
- }
- %23:i32 = load %a
- %24:bool = eq %23, 1i
- if %24 [t: $B8, f: $B9] { # if_3
- $B8: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_3
- }
- $B9: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_3
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B10: {
- %26:void = call %main_1
- %27:vec4<f32> = load %x_GLF_color
- %28:main_out = construct %27
- ret %28
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B11: {
- %31:bool = eq %rhs, 0i
- %32:bool = eq %lhs, -2147483648i
- %33:bool = eq %rhs, -1i
- %34:bool = and %32, %33
- %35:bool = or %31, %34
- %36:i32 = select %rhs, 1i, %35
- %37:i32 = div %lhs, %36
- ret %37
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %39:i32 = convert %value
- %40:bool = gte %value, -2147483648.0f
- %41:i32 = select -2147483648i, %39, %40
- %42:bool = lte %value, 2147483520.0f
- %43:i32 = select 2147483647i, %41, %42
- ret %43
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 42e494f..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,117 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- store %a, 0i
- store %i, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %6:i32 = load %i
- %x_33:i32 = let %6
- %8:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %9:f32 = load_vector_element %8, 1u
- %x_35:f32 = let %9
- %11:i32 = call %tint_f32_to_i32, %x_35
- %13:bool = lt %x_33, %11
- if %13 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %14:i32 = load %a
- %x_39:i32 = let %14
- %16:bool = gt %x_39, 0i
- if %16 [t: $B7] { # if_2
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
- %18:f32 = load_vector_element %17, 1u
- %x_44:f32 = let %18
- %20:i32 = call %tint_f32_to_i32, %x_44
- %21:i32 = mul %20, 2i
- %22:i32 = call %tint_div_i32, %21, 2i
- store %a, %22
- continue # -> $B4
- }
- $B4: { # continuing
- %24:i32 = load %i
- %x_48:i32 = let %24
- %26:i32 = add %x_48, 1i
- store %i, %26
- next_iteration # -> $B3
- }
- }
- %27:i32 = load %a
- %x_50:i32 = let %27
- %29:bool = eq %x_50, 1i
- if %29 [t: $B8, f: $B9] { # if_3
- $B8: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_3
- }
- $B9: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_3
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B10: {
- %31:void = call %main_1
- %32:vec4<f32> = load %x_GLF_color
- %33:main_out = construct %32
- ret %33
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B11: {
- %36:bool = eq %rhs, 0i
- %37:bool = eq %lhs, -2147483648i
- %38:bool = eq %rhs, -1i
- %39:bool = and %37, %38
- %40:bool = or %36, %39
- %41:i32 = select %rhs, 1i, %40
- %42:i32 = div %lhs, %41
- ret %42
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %44:i32 = convert %value
- %45:bool = gte %value, -2147483648.0f
- %46:i32 = select -2147483648i, %44, %45
- %47:bool = lte %value, 2147483520.0f
- %48:i32 = select 2147483647i, %46, %47
- ret %48
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 716ba30..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,58 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %4:f32 = load_vector_element %gl_FragCoord, 0u
- %5:f32 = mul %4, 0.00390625f
- %6:f32 = let %5
- %7:f32 = load_vector_element %gl_FragCoord, 0u
- %8:i32 = call %tint_f32_to_i32, %7
- %10:i32 = let %8
- %11:f32 = load_vector_element %gl_FragCoord, 1u
- %12:i32 = call %tint_f32_to_i32, %11
- %13:i32 = xor %10, %12
- %14:f32 = convert %13
- %15:f32 = mul %14, 0.00390625f
- %16:f32 = load_vector_element %gl_FragCoord, 1u
- %17:f32 = mul %16, 0.00390625f
- %18:vec4<f32> = construct %6, %15, %17, 1.0f
- store %x_GLF_color, %18
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B3: {
- store %gl_FragCoord, %gl_FragCoord_param
- %21:void = call %main_1
- %22:vec4<f32> = load %x_GLF_color
- %23:main_out = construct %22
- ret %23
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B4: {
- %25:i32 = convert %value
- %26:bool = gte %value, -2147483648.0f
- %27:i32 = select -2147483648i, %25, %26
- %28:bool = lte %value, 2147483520.0f
- %29:i32 = select 2147483647i, %27, %28
- ret %29
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 823b658..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,61 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %4:f32 = load_vector_element %gl_FragCoord, 0u
- %x_20:f32 = let %4
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %x_23:f32 = let %6
- %8:f32 = load_vector_element %gl_FragCoord, 1u
- %x_26:f32 = let %8
- %10:f32 = load_vector_element %gl_FragCoord, 1u
- %x_32:f32 = let %10
- %12:f32 = mul %x_20, 0.00390625f
- %13:i32 = call %tint_f32_to_i32, %x_23
- %15:i32 = let %13
- %16:i32 = call %tint_f32_to_i32, %x_26
- %17:i32 = xor %15, %16
- %18:f32 = convert %17
- %19:f32 = mul %18, 0.00390625f
- %20:f32 = mul %x_32, 0.00390625f
- %21:vec4<f32> = construct %12, %19, %20, 1.0f
- store %x_GLF_color, %21
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B3: {
- store %gl_FragCoord, %gl_FragCoord_param
- %24:void = call %main_1
- %25:vec4<f32> = load %x_GLF_color
- %26:main_out = construct %25
- ret %26
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B4: {
- %28:i32 = convert %value
- %29:bool = gte %value, -2147483648.0f
- %30:i32 = select -2147483648i, %28, %29
- %31:bool = lte %value, 2147483520.0f
- %32:i32 = select 2147483647i, %30, %31
- ret %32
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index a989a5d..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,163 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
- one:f32 @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, vec2<f32>, read_write> = var
- %b:ptr<function, vec3<f32>, read_write> = var
- %x_105:ptr<function, bool, read_write> = var
- %x_106:ptr<function, bool, read_write> = var
- %x_111:ptr<function, bool, read_write> = var
- %x_112:ptr<function, bool, read_write> = var
- store %a, vec2<f32>(1.0f)
- store %b, vec3<f32>(0.0f)
- %11:f32 = load_vector_element %gl_FragCoord, 1u
- %12:i32 = call %tint_f32_to_i32, %11
- %14:bool = lt %12, 40i
- if %14 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- store %b, vec3<f32>(0.10000000149011611938f)
- exit_if # if_1
- }
- $B4: { # false
- %15:f32 = load_vector_element %gl_FragCoord, 1u
- %16:i32 = call %tint_f32_to_i32, %15
- %17:bool = lt %16, 60i
- if %17 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- store %b, vec3<f32>(0.20000000298023223877f)
- exit_if # if_2
- }
- $B6: { # false
- %18:f32 = load_vector_element %gl_FragCoord, 1u
- %19:bool = lt %18, 80.0f
- if %19 [t: $B7, f: $B8] { # if_3
- $B7: { # true
- %20:f32 = load_vector_element %a, 0u
- %21:vec3<f32> = construct %20
- %22:vec3<f32> = let %21
- %23:ptr<uniform, f32, read> = access %x_8, 0u
- %24:f32 = load %23
- %25:vec3<f32> = construct %24
- %26:vec3<f32> = add %22, %25
- %27:vec3<f32> = cos %26
- %28:vec3<f32> = add %27, vec3<f32>(0.00999999977648258209f)
- store %b, %28
- exit_if # if_3
- }
- $B8: { # false
- %29:f32 = load_vector_element %gl_FragCoord, 1u
- %30:i32 = call %tint_f32_to_i32, %29
- %31:bool = lt %30, 100i
- if %31 [t: $B9, f: $B10] { # if_4
- $B9: { # true
- %32:ptr<uniform, f32, read> = access %x_8, 0u
- %33:f32 = load %32
- %34:vec3<f32> = construct %33
- %35:vec3<f32> = cos %34
- store %b, %35
- exit_if # if_4
- }
- $B10: { # false
- %36:f32 = load_vector_element %gl_FragCoord, 1u
- %37:i32 = call %tint_f32_to_i32, %36
- %38:bool = lt %37, 500i
- if %38 [t: $B11] { # if_5
- $B11: { # true
- store %b, vec3<f32>(0.540302276611328125f, 0.540302276611328125f, -0.99996083974838256836f)
- exit_if # if_5
- }
- }
- exit_if # if_4
- }
- }
- exit_if # if_3
- }
- }
- exit_if # if_2
- }
- }
- exit_if # if_1
- }
- }
- %39:f32 = load_vector_element %b, 0u
- %40:bool = lt %39, 1.01999998092651367188f
- %x_100:bool = let %40
- store %x_106, %x_100
- if %x_100 [t: $B12] { # if_6
- $B12: { # true
- %42:f32 = load_vector_element %b, 1u
- %43:bool = lt %42, 1.01999998092651367188f
- store %x_105, %43
- %44:bool = load %x_105
- store %x_106, %44
- exit_if # if_6
- }
- }
- %45:bool = load %x_106
- store %x_112, %45
- %46:bool = load %x_106
- if %46 [t: $B13] { # if_7
- $B13: { # true
- %47:f32 = load_vector_element %b, 2u
- %48:bool = lt %47, 1.01999998092651367188f
- store %x_111, %48
- %49:bool = load %x_111
- store %x_112, %49
- exit_if # if_7
- }
- }
- %50:bool = load %x_112
- if %50 [t: $B14, f: $B15] { # if_8
- $B14: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_8
- }
- $B15: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_8
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B16: {
- store %gl_FragCoord, %gl_FragCoord_param
- %53:void = call %main_1
- %54:vec4<f32> = load %x_GLF_color
- %55:main_out = construct %54
- ret %55
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B17: {
- %57:i32 = convert %value
- %58:bool = gte %value, -2147483648.0f
- %59:i32 = select -2147483648i, %57, %58
- %60:bool = lte %value, 2147483520.0f
- %61:i32 = select 2147483647i, %59, %60
- ret %61
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 753b742..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,175 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
- one:f32 @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, vec2<f32>, read_write> = var
- %b:ptr<function, vec3<f32>, read_write> = var
- %x_105:ptr<function, bool, read_write> = var
- %x_111:ptr<function, bool, read_write> = var
- %x_106_phi:ptr<function, bool, read_write> = var
- %x_112_phi:ptr<function, bool, read_write> = var
- store %a, vec2<f32>(1.0f)
- store %b, vec3<f32>(0.0f)
- %11:f32 = load_vector_element %gl_FragCoord, 1u
- %x_52:f32 = let %11
- %13:i32 = call %tint_f32_to_i32, %x_52
- %15:bool = lt %13, 40i
- if %15 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- store %b, vec3<f32>(0.10000000149011611938f)
- exit_if # if_1
- }
- $B4: { # false
- %16:f32 = load_vector_element %gl_FragCoord, 1u
- %x_59:f32 = let %16
- %18:i32 = call %tint_f32_to_i32, %x_59
- %19:bool = lt %18, 60i
- if %19 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- store %b, vec3<f32>(0.20000000298023223877f)
- exit_if # if_2
- }
- $B6: { # false
- %20:f32 = load_vector_element %gl_FragCoord, 1u
- %x_66:f32 = let %20
- %22:bool = lt %x_66, 80.0f
- if %22 [t: $B7, f: $B8] { # if_3
- $B7: { # true
- %23:f32 = load_vector_element %a, 0u
- %x_72:f32 = let %23
- %25:ptr<uniform, f32, read> = access %x_8, 0u
- %26:f32 = load %25
- %x_74:f32 = let %26
- %28:vec3<f32> = construct %x_72, %x_72, %x_72
- %29:vec3<f32> = let %28
- %30:vec3<f32> = construct %x_74, %x_74, %x_74
- %31:vec3<f32> = add %29, %30
- %32:vec3<f32> = cos %31
- %33:vec3<f32> = add %32, vec3<f32>(0.00999999977648258209f)
- store %b, %33
- exit_if # if_3
- }
- $B8: { # false
- %34:f32 = load_vector_element %gl_FragCoord, 1u
- %x_82:f32 = let %34
- %36:i32 = call %tint_f32_to_i32, %x_82
- %37:bool = lt %36, 100i
- if %37 [t: $B9, f: $B10] { # if_4
- $B9: { # true
- %38:ptr<uniform, f32, read> = access %x_8, 0u
- %39:f32 = load %38
- %x_89:f32 = let %39
- %41:vec3<f32> = construct %x_89, %x_89, %x_89
- %42:vec3<f32> = cos %41
- store %b, %42
- exit_if # if_4
- }
- $B10: { # false
- %43:f32 = load_vector_element %gl_FragCoord, 1u
- %x_93:f32 = let %43
- %45:i32 = call %tint_f32_to_i32, %x_93
- %46:bool = lt %45, 500i
- if %46 [t: $B11] { # if_5
- $B11: { # true
- store %b, vec3<f32>(0.540302276611328125f, 0.540302276611328125f, -0.99996083974838256836f)
- exit_if # if_5
- }
- }
- exit_if # if_4
- }
- }
- exit_if # if_3
- }
- }
- exit_if # if_2
- }
- }
- exit_if # if_1
- }
- }
- %47:f32 = load_vector_element %b, 0u
- %x_99:f32 = let %47
- %49:bool = lt %x_99, 1.01999998092651367188f
- %x_100:bool = let %49
- store %x_106_phi, %x_100
- if %x_100 [t: $B12] { # if_6
- $B12: { # true
- %51:f32 = load_vector_element %b, 1u
- %x_104:f32 = let %51
- %53:bool = lt %x_104, 1.01999998092651367188f
- store %x_105, %53
- %54:bool = load %x_105
- store %x_106_phi, %54
- exit_if # if_6
- }
- }
- %55:bool = load %x_106_phi
- %x_106:bool = let %55
- store %x_112_phi, %x_106
- if %x_106 [t: $B13] { # if_7
- $B13: { # true
- %57:f32 = load_vector_element %b, 2u
- %x_110:f32 = let %57
- %59:bool = lt %x_110, 1.01999998092651367188f
- store %x_111, %59
- %60:bool = load %x_111
- store %x_112_phi, %60
- exit_if # if_7
- }
- }
- %61:bool = load %x_112_phi
- %x_112:bool = let %61
- if %x_112 [t: $B14, f: $B15] { # if_8
- $B14: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_8
- }
- $B15: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_8
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B16: {
- store %gl_FragCoord, %gl_FragCoord_param
- %65:void = call %main_1
- %66:vec4<f32> = load %x_GLF_color
- %67:main_out = construct %66
- ret %67
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B17: {
- %69:i32 = convert %value
- %70:bool = gte %value, -2147483648.0f
- %71:i32 = select -2147483648i, %69, %70
- %72:bool = lte %value, 2147483520.0f
- %73:i32 = select 2147483647i, %71, %72
- ret %73
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 2db9224..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,116 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %g:ptr<private, i32, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, i32, read_write> = var
- store %g, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %6:i32 = load %g
- %7:i32 = let %6
- %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %9:f32 = load_vector_element %8, 0u
- %10:f32 = add %9, 2.0f
- %11:i32 = call %tint_f32_to_i32, %10
- %13:bool = lt %7, %11
- if %13 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %14:i32 = load %g
- %15:i32 = add %14, 1i
- store %g, %15
- continue # -> $B4
- }
- $B4: { # continuing
- next_iteration # -> $B3
- }
- }
- %16:i32 = load %g
- store %a, %16
- loop [b: $B7, c: $B8] { # loop_2
- $B7: { # body
- %17:i32 = load %g
- %18:i32 = let %17
- %19:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %20:f32 = load_vector_element %19, 1u
- %21:i32 = call %tint_f32_to_i32, %20
- %22:bool = lt %18, %21
- if %22 [t: $B9, f: $B10] { # if_2
- $B9: { # true
- exit_if # if_2
- }
- $B10: { # false
- exit_loop # loop_2
- }
- }
- %23:i32 = load %g
- %24:i32 = add %23, 1i
- store %g, %24
- continue # -> $B8
- }
- $B8: { # continuing
- next_iteration # -> $B7
- }
- }
- %25:i32 = load %a
- store %a, %25
- %26:i32 = load %a
- %27:bool = eq %26, 2i
- if %27 [t: $B11, f: $B12] { # if_3
- $B11: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_3
- }
- $B12: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_3
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B13: {
- %29:void = call %main_1
- %30:vec4<f32> = load %x_GLF_color
- %31:main_out = construct %30
- ret %31
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B14: {
- %33:i32 = convert %value
- %34:bool = gte %value, -2147483648.0f
- %35:i32 = select -2147483648i, %33, %34
- %36:bool = lte %value, 2147483520.0f
- %37:i32 = select 2147483647i, %35, %36
- ret %37
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index adb5eb0..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,123 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %g:ptr<private, i32, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %a:ptr<function, i32, read_write> = var
- store %g, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %6:i32 = load %g
- %x_8:i32 = let %6
- %8:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %9:f32 = load_vector_element %8, 0u
- %x_46:f32 = let %9
- %11:f32 = add %x_46, 2.0f
- %12:i32 = call %tint_f32_to_i32, %11
- %14:bool = lt %x_8, %12
- if %14 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %15:i32 = load %g
- %x_9:i32 = let %15
- %17:i32 = add %x_9, 1i
- store %g, %17
- continue # -> $B4
- }
- $B4: { # continuing
- next_iteration # -> $B3
- }
- }
- %18:i32 = load %g
- %x_11:i32 = let %18
- store %a, %x_11
- loop [b: $B7, c: $B8] { # loop_2
- $B7: { # body
- %20:i32 = load %g
- %x_12:i32 = let %20
- %22:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %23:f32 = load_vector_element %22, 1u
- %x_56:f32 = let %23
- %25:i32 = call %tint_f32_to_i32, %x_56
- %26:bool = lt %x_12, %25
- if %26 [t: $B9, f: $B10] { # if_2
- $B9: { # true
- exit_if # if_2
- }
- $B10: { # false
- exit_loop # loop_2
- }
- }
- %27:i32 = load %g
- %x_13:i32 = let %27
- %29:i32 = add %x_13, 1i
- store %g, %29
- continue # -> $B8
- }
- $B8: { # continuing
- next_iteration # -> $B7
- }
- }
- %30:i32 = load %a
- %x_15:i32 = let %30
- store %a, %x_15
- %32:i32 = load %a
- %x_16:i32 = let %32
- %34:bool = eq %x_16, 2i
- if %34 [t: $B11, f: $B12] { # if_3
- $B11: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_3
- }
- $B12: { # false
- store %x_GLF_color, vec4<f32>(0.0f)
- exit_if # if_3
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B13: {
- %36:void = call %main_1
- %37:vec4<f32> = load %x_GLF_color
- %38:main_out = construct %37
- ret %38
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B14: {
- %40:i32 = convert %value
- %41:bool = gte %value, -2147483648.0f
- %42:i32 = select -2147483648i, %40, %41
- %43:bool = lte %value, 2147483520.0f
- %44:i32 = select 2147483647i, %42, %43
- ret %44
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 0c8e028..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,259 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %m0:ptr<function, mat4x4<f32>, read_write> = var
- %c:ptr<function, i32, read_write> = var
- %m1:ptr<function, mat4x4<f32>, read_write> = var
- %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %9:i32 = load %8
- %10:f32 = convert %9
- %x_41:f32 = let %10
- %12:vec4<f32> = construct %x_41, 0.0f, 0.0f, 0.0f
- %13:vec4<f32> = let %12
- %14:vec4<f32> = construct 0.0f, %x_41, 0.0f, 0.0f
- %15:vec4<f32> = let %14
- %16:vec4<f32> = construct 0.0f, 0.0f, %x_41, 0.0f
- %17:vec4<f32> = let %16
- %18:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_41
- %19:mat4x4<f32> = construct %13, %15, %17, %18
- store %m0, %19
- %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %21:i32 = load %20
- store %c, %21
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %22:i32 = load %c
- %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
- %24:i32 = load %23
- %25:bool = lt %22, %24
- if %25 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %26:mat4x4<f32> = load %m0
- store %m1, %26
- %27:i32 = load %c
- %x_59:i32 = let %27
- %29:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
- %30:i32 = load %29
- %x_61:i32 = let %30
- %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %33:i32 = load %32
- %x_64:i32 = let %33
- %35:i32 = call %tint_mod_i32, %x_59, %x_61
- %37:ptr<function, vec4<f32>, read_write> = access %m1, %35
- %38:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
- %39:f32 = load %38
- store_vector_element %37, %x_64, %39
- %40:i32 = load %c
- %x_68:i32 = let %40
- %42:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
- %43:i32 = load %42
- %x_70:i32 = let %43
- %45:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %46:i32 = load %45
- %x_73:i32 = let %46
- %48:i32 = call %tint_mod_i32, %x_68, %x_70
- %49:ptr<function, vec4<f32>, read_write> = access %m0, %48
- %50:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
- %51:f32 = load %50
- store_vector_element %49, %x_73, %51
- continue # -> $B4
- }
- $B4: { # continuing
- %52:i32 = load %c
- %53:i32 = add %52, 1i
- store %c, %53
- next_iteration # -> $B3
- }
- }
- %54:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %55:i32 = load %54
- %56:f32 = convert %55
- %57:f32 = let %56
- %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %59:i32 = load %58
- %60:f32 = convert %59
- %61:f32 = let %60
- %62:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %63:i32 = load %62
- %64:f32 = convert %63
- %65:f32 = let %64
- %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %67:i32 = load %66
- %68:f32 = convert %67
- %69:vec4<f32> = construct %57, %61, %65, %68
- %70:vec4<f32> = let %69
- %71:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %72:i32 = load %71
- %73:f32 = convert %72
- %74:f32 = let %73
- %75:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %76:i32 = load %75
- %77:f32 = convert %76
- %78:f32 = let %77
- %79:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %80:i32 = load %79
- %81:f32 = convert %80
- %82:f32 = let %81
- %83:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %84:i32 = load %83
- %85:f32 = convert %84
- %86:vec4<f32> = construct %74, %78, %82, %85
- %87:vec4<f32> = let %86
- %88:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %89:i32 = load %88
- %90:f32 = convert %89
- %91:f32 = let %90
- %92:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %93:i32 = load %92
- %94:f32 = convert %93
- %95:f32 = let %94
- %96:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %97:i32 = load %96
- %98:f32 = convert %97
- %99:f32 = let %98
- %100:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %101:i32 = load %100
- %102:f32 = convert %101
- %103:vec4<f32> = construct %91, %95, %99, %102
- %104:vec4<f32> = let %103
- %105:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %106:i32 = load %105
- %107:f32 = convert %106
- %108:f32 = let %107
- %109:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %110:i32 = load %109
- %111:f32 = convert %110
- %112:f32 = let %111
- %113:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %114:i32 = load %113
- %115:f32 = convert %114
- %116:f32 = let %115
- %117:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %118:i32 = load %117
- %119:f32 = convert %118
- %120:vec4<f32> = construct %108, %112, %116, %119
- %121:mat4x4<f32> = construct %70, %87, %104, %120
- %x_132:mat4x4<f32> = let %121
- %123:ptr<function, vec4<f32>, read_write> = access %m0, 0u
- %124:vec4<f32> = load %123
- %125:vec4<f32> = access %x_132, 0u
- %126:vec4<bool> = eq %124, %125
- %127:bool = all %126
- %128:bool = let %127
- %129:ptr<function, vec4<f32>, read_write> = access %m0, 1u
- %130:vec4<f32> = load %129
- %131:vec4<f32> = access %x_132, 1u
- %132:vec4<bool> = eq %130, %131
- %133:bool = all %132
- %134:bool = and %128, %133
- %135:bool = let %134
- %136:ptr<function, vec4<f32>, read_write> = access %m0, 2u
- %137:vec4<f32> = load %136
- %138:vec4<f32> = access %x_132, 2u
- %139:vec4<bool> = eq %137, %138
- %140:bool = all %139
- %141:bool = and %135, %140
- %142:bool = let %141
- %143:ptr<function, vec4<f32>, read_write> = access %m0, 3u
- %144:vec4<f32> = load %143
- %145:vec4<f32> = access %x_132, 3u
- %146:vec4<bool> = eq %144, %145
- %147:bool = all %146
- %148:bool = and %142, %147
- if %148 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %149:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %150:i32 = load %149
- %151:f32 = convert %150
- %152:f32 = let %151
- %153:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %154:i32 = load %153
- %155:f32 = convert %154
- %156:f32 = let %155
- %157:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %158:i32 = load %157
- %159:f32 = convert %158
- %160:f32 = let %159
- %161:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %162:i32 = load %161
- %163:f32 = convert %162
- %164:vec4<f32> = construct %152, %156, %160, %163
- store %x_GLF_color, %164
- exit_if # if_2
- }
- $B8: { # false
- %165:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %166:i32 = load %165
- %167:f32 = convert %166
- %168:vec4<f32> = construct %167
- store %x_GLF_color, %168
- exit_if # if_2
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B9: {
- %170:void = call %main_1
- %171:vec4<f32> = load %x_GLF_color
- %172:main_out = construct %171
- ret %172
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %175:bool = eq %rhs, 0i
- %176:bool = eq %lhs, -2147483648i
- %177:bool = eq %rhs, -1i
- %178:bool = and %176, %177
- %179:bool = or %175, %178
- %180:i32 = select %rhs, 1i, %179
- %181:i32 = let %180
- %182:i32 = div %lhs, %181
- %183:i32 = mul %182, %181
- %184:i32 = sub %lhs, %183
- ret %184
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index 048ba1a..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,287 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
- el:i32 @offset(0)
-}
-
-buf1 = struct @align(4) {
- x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
-}
-
-strided_arr_1 = struct @align(4) {
- el:f32 @offset(0)
-}
-
-buf0 = struct @align(4) {
- x_GLF_uniform_float_values:array<strided_arr_1, 1> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
- %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %m0:ptr<function, mat4x4<f32>, read_write> = var
- %c:ptr<function, i32, read_write> = var
- %m1:ptr<function, mat4x4<f32>, read_write> = var
- %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %9:i32 = load %8
- %x_40:i32 = let %9
- %11:f32 = convert %x_40
- %x_41:f32 = let %11
- %13:vec4<f32> = construct %x_41, 0.0f, 0.0f, 0.0f
- %14:vec4<f32> = let %13
- %15:vec4<f32> = construct 0.0f, %x_41, 0.0f, 0.0f
- %16:vec4<f32> = let %15
- %17:vec4<f32> = construct 0.0f, 0.0f, %x_41, 0.0f
- %18:vec4<f32> = let %17
- %19:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_41
- %20:mat4x4<f32> = construct %14, %16, %18, %19
- store %m0, %20
- %21:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %22:i32 = load %21
- %x_48:i32 = let %22
- store %c, %x_48
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %24:i32 = load %c
- %x_53:i32 = let %24
- %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
- %27:i32 = load %26
- %x_55:i32 = let %27
- %29:bool = lt %x_53, %x_55
- if %29 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %30:mat4x4<f32> = load %m0
- %x_58:mat4x4<f32> = let %30
- store %m1, %x_58
- %32:i32 = load %c
- %x_59:i32 = let %32
- %34:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
- %35:i32 = load %34
- %x_61:i32 = let %35
- %37:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %38:i32 = load %37
- %x_64:i32 = let %38
- %40:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
- %41:f32 = load %40
- %x_66:f32 = let %41
- %43:i32 = call %tint_mod_i32, %x_59, %x_61
- %45:ptr<function, vec4<f32>, read_write> = access %m1, %43
- store_vector_element %45, %x_64, %x_66
- %46:i32 = load %c
- %x_68:i32 = let %46
- %48:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
- %49:i32 = load %48
- %x_70:i32 = let %49
- %51:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %52:i32 = load %51
- %x_73:i32 = let %52
- %54:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
- %55:f32 = load %54
- %x_75:f32 = let %55
- %57:i32 = call %tint_mod_i32, %x_68, %x_70
- %58:ptr<function, vec4<f32>, read_write> = access %m0, %57
- store_vector_element %58, %x_73, %x_75
- continue # -> $B4
- }
- $B4: { # continuing
- %59:i32 = load %c
- %x_77:i32 = let %59
- %61:i32 = add %x_77, 1i
- store %c, %61
- next_iteration # -> $B3
- }
- }
- %62:mat4x4<f32> = load %m0
- %x_79:mat4x4<f32> = let %62
- %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %65:i32 = load %64
- %x_81:i32 = let %65
- %67:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %68:i32 = load %67
- %x_84:i32 = let %68
- %70:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %71:i32 = load %70
- %x_87:i32 = let %71
- %73:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %74:i32 = load %73
- %x_90:i32 = let %74
- %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %77:i32 = load %76
- %x_93:i32 = let %77
- %79:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %80:i32 = load %79
- %x_96:i32 = let %80
- %82:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %83:i32 = load %82
- %x_99:i32 = let %83
- %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %86:i32 = load %85
- %x_102:i32 = let %86
- %88:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %89:i32 = load %88
- %x_105:i32 = let %89
- %91:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %92:i32 = load %91
- %x_108:i32 = let %92
- %94:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %95:i32 = load %94
- %x_111:i32 = let %95
- %97:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %98:i32 = load %97
- %x_114:i32 = let %98
- %100:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %101:i32 = load %100
- %x_117:i32 = let %101
- %103:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %104:i32 = load %103
- %x_120:i32 = let %104
- %106:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %107:i32 = load %106
- %x_123:i32 = let %107
- %109:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %110:i32 = load %109
- %x_126:i32 = let %110
- %112:f32 = convert %x_81
- %113:f32 = let %112
- %114:f32 = convert %x_84
- %115:f32 = let %114
- %116:f32 = convert %x_87
- %117:f32 = let %116
- %118:f32 = convert %x_90
- %119:vec4<f32> = construct %113, %115, %117, %118
- %120:vec4<f32> = let %119
- %121:f32 = convert %x_93
- %122:f32 = let %121
- %123:f32 = convert %x_96
- %124:f32 = let %123
- %125:f32 = convert %x_99
- %126:f32 = let %125
- %127:f32 = convert %x_102
- %128:vec4<f32> = construct %122, %124, %126, %127
- %129:vec4<f32> = let %128
- %130:f32 = convert %x_105
- %131:f32 = let %130
- %132:f32 = convert %x_108
- %133:f32 = let %132
- %134:f32 = convert %x_111
- %135:f32 = let %134
- %136:f32 = convert %x_114
- %137:vec4<f32> = construct %131, %133, %135, %136
- %138:vec4<f32> = let %137
- %139:f32 = convert %x_117
- %140:f32 = let %139
- %141:f32 = convert %x_120
- %142:f32 = let %141
- %143:f32 = convert %x_123
- %144:f32 = let %143
- %145:f32 = convert %x_126
- %146:vec4<f32> = construct %140, %142, %144, %145
- %147:mat4x4<f32> = construct %120, %129, %138, %146
- %x_132:mat4x4<f32> = let %147
- %149:vec4<f32> = access %x_79, 0u
- %150:vec4<f32> = access %x_132, 0u
- %151:vec4<bool> = eq %149, %150
- %152:bool = all %151
- %153:bool = let %152
- %154:vec4<f32> = access %x_79, 1u
- %155:vec4<f32> = access %x_132, 1u
- %156:vec4<bool> = eq %154, %155
- %157:bool = all %156
- %158:bool = and %153, %157
- %159:bool = let %158
- %160:vec4<f32> = access %x_79, 2u
- %161:vec4<f32> = access %x_132, 2u
- %162:vec4<bool> = eq %160, %161
- %163:bool = all %162
- %164:bool = and %159, %163
- %165:bool = let %164
- %166:vec4<f32> = access %x_79, 3u
- %167:vec4<f32> = access %x_132, 3u
- %168:vec4<bool> = eq %166, %167
- %169:bool = all %168
- %170:bool = and %165, %169
- if %170 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %171:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %172:i32 = load %171
- %x_156:i32 = let %172
- %174:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %175:i32 = load %174
- %x_159:i32 = let %175
- %177:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %178:i32 = load %177
- %x_162:i32 = let %178
- %180:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
- %181:i32 = load %180
- %x_165:i32 = let %181
- %183:f32 = convert %x_156
- %184:f32 = let %183
- %185:f32 = convert %x_159
- %186:f32 = let %185
- %187:f32 = convert %x_162
- %188:f32 = let %187
- %189:f32 = convert %x_165
- %190:vec4<f32> = construct %184, %186, %188, %189
- store %x_GLF_color, %190
- exit_if # if_2
- }
- $B8: { # false
- %191:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
- %192:i32 = load %191
- %x_169:i32 = let %192
- %194:f32 = convert %x_169
- %x_170:f32 = let %194
- %196:vec4<f32> = construct %x_170, %x_170, %x_170, %x_170
- store %x_GLF_color, %196
- exit_if # if_2
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B9: {
- %198:void = call %main_1
- %199:vec4<f32> = load %x_GLF_color
- %200:main_out = construct %199
- ret %200
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %203:bool = eq %rhs, 0i
- %204:bool = eq %lhs, -2147483648i
- %205:bool = eq %rhs, -1i
- %206:bool = and %204, %205
- %207:bool = or %203, %206
- %208:i32 = select %rhs, 1i, %207
- %209:i32 = let %208
- %210:i32 = div %lhs, %209
- %211:i32 = mul %210, %209
- %212:i32 = sub %lhs, %211
- ret %212
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 96643b2..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,100 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%main_1 = func():void {
- $B2: {
- %ll:ptr<function, i32, read_write> = var
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %7:i32 = call %tint_f32_to_i32, %6
- %9:bool = lt %7, 2000i
- if %9 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- $B4: { # false
- store %ll, 0i
- loop [b: $B5, c: $B6] { # loop_1
- $B5: { # body
- %10:f32 = load_vector_element %gl_FragCoord, 0u
- %11:bool = lt %10, 0.0f
- if %11 [t: $B7] { # if_2
- $B7: { # true
- store %continue_execution, false
- exit_if # if_2
- }
- }
- %12:i32 = load %ll
- %13:bool = gte %12, 5i
- if %13 [t: $B8] { # if_3
- $B8: { # true
- exit_loop # loop_1
- }
- }
- continue # -> $B6
- }
- $B6: { # continuing
- %14:i32 = load %ll
- %15:i32 = add %14, 1i
- store %ll, %15
- next_iteration # -> $B5
- }
- }
- %16:f32 = load_vector_element %gl_FragCoord, 0u
- %17:i32 = call %tint_f32_to_i32, %16
- %18:bool = gte %17, 2000i
- if %18 [t: $B9] { # if_4
- $B9: { # true
- store %continue_execution, false
- exit_if # if_4
- }
- }
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %21:void = call %main_1
- %22:vec4<f32> = load %x_GLF_color
- %23:main_out = construct %22
- %24:bool = load %continue_execution
- %25:bool = eq %24, false
- if %25 [t: $B11] { # if_5
- $B11: { # true
- terminate_invocation
- }
- }
- ret %23
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %27:i32 = convert %value
- %28:bool = gte %value, -2147483648.0f
- %29:i32 = select -2147483648i, %27, %28
- %30:bool = lte %value, 2147483520.0f
- %31:i32 = select 2147483647i, %29, %30
- ret %31
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index d701592..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,105 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%main_1 = func():void {
- $B2: {
- %ll:ptr<function, i32, read_write> = var
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %x_30:f32 = let %6
- %8:i32 = call %tint_f32_to_i32, %x_30
- %10:bool = lt %8, 2000i
- if %10 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- $B4: { # false
- store %ll, 0i
- loop [b: $B5, c: $B6] { # loop_1
- $B5: { # body
- %11:f32 = load_vector_element %gl_FragCoord, 0u
- %x_41:f32 = let %11
- %13:bool = lt %x_41, 0.0f
- if %13 [t: $B7] { # if_2
- $B7: { # true
- store %continue_execution, false
- exit_if # if_2
- }
- }
- %14:i32 = load %ll
- %x_6:i32 = let %14
- %16:bool = gte %x_6, 5i
- if %16 [t: $B8] { # if_3
- $B8: { # true
- exit_loop # loop_1
- }
- }
- continue # -> $B6
- }
- $B6: { # continuing
- %17:i32 = load %ll
- %x_7:i32 = let %17
- %19:i32 = add %x_7, 1i
- store %ll, %19
- next_iteration # -> $B5
- }
- }
- %20:f32 = load_vector_element %gl_FragCoord, 0u
- %x_49:f32 = let %20
- %22:i32 = call %tint_f32_to_i32, %x_49
- %23:bool = gte %22, 2000i
- if %23 [t: $B9] { # if_4
- $B9: { # true
- store %continue_execution, false
- exit_if # if_4
- }
- }
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %26:void = call %main_1
- %27:vec4<f32> = load %x_GLF_color
- %28:main_out = construct %27
- %29:bool = load %continue_execution
- %30:bool = eq %29, false
- if %30 [t: $B11] { # if_5
- $B11: { # true
- terminate_invocation
- }
- }
- ret %28
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %32:i32 = convert %value
- %33:bool = gte %value, -2147483648.0f
- %34:i32 = select -2147483648i, %32, %33
- %35:bool = lte %value, 2147483520.0f
- %36:i32 = select 2147483647i, %34, %35
- ret %36
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index d7e5bf3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,300 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
- one:f32 @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_68:ptr<function, bool, read_write> = var, false
- %x_29:ptr<function, i32, read_write> = var
- %x_30:ptr<function, i32, read_write> = var
- %x_31:ptr<function, i32, read_write> = var
- %globalNumbers:ptr<function, array<i32, 10>, read_write> = var
- %x_17:ptr<function, i32, read_write> = var
- %acc:ptr<function, i32, read_write> = var
- %i_1:ptr<function, i32, read_write> = var
- %localNumbers:ptr<function, array<i32, 2>, read_write> = var
- %param:ptr<function, i32, read_write> = var
- %x_24:ptr<function, i32, read_write> = var
- %x_23:ptr<function, i32, read_write> = var
- store %acc, 0i
- store %i_1, 0i
- store %x_24, 0i
- store %x_23, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_76:ptr<function, bool, read_write> = var
- %x_33:ptr<function, i32, read_write> = var
- %x_92:ptr<function, i32, read_write> = var
- %x_34:ptr<function, i32, read_write> = var
- %x_25:ptr<function, i32, read_write> = var
- %x_16:ptr<function, i32, read_write> = var
- %22:i32 = load %x_23
- %23:bool = lt %22, 4i
- if %23 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- store %x_68, false
- store %x_76, false
- loop [b: $B7] { # loop_2
- $B7: { # body
- %x_81:ptr<function, bool, read_write> = var
- %x_32:ptr<function, i32, read_write> = var
- %x_90:ptr<function, bool, read_write> = var
- store %x_30, 0i
- %27:bool = load %x_76
- store %x_81, %27
- store %x_32, 0i
- loop [b: $B8] { # loop_3
- $B8: { # body
- %28:ptr<uniform, f32, read> = access %x_8, 0u
- %29:f32 = load %28
- %x_86:f32 = let %29
- store %x_33, 0i
- %31:bool = load %x_81
- store %x_90, %31
- %32:i32 = load %x_32
- %33:i32 = let %32
- %34:i32 = call %tint_f32_to_i32, %x_86
- %36:bool = lt %33, %34
- if %36 [t: $B9, f: $B10] { # if_2
- $B9: { # true
- exit_if # if_2
- }
- $B10: { # false
- exit_loop # loop_3
- }
- }
- store %x_68, true
- %37:i32 = load %x_32
- store %x_29, %37
- %38:i32 = load %x_32
- store %x_33, %38
- store %x_90, true
- exit_loop # loop_3
- }
- }
- %39:i32 = load %x_33
- store %x_34, %39
- %40:bool = load %x_90
- if %40 [t: $B11] { # if_3
- $B11: { # true
- exit_loop # loop_2
- }
- }
- store %x_92, 0i
- store %x_68, true
- %41:i32 = load %x_92
- store %x_29, %41
- %42:i32 = load %x_92
- store %x_34, %42
- exit_loop # loop_2
- }
- }
- %43:i32 = load %x_34
- store %x_31, %43
- %44:i32 = load %x_31
- %x_93:i32 = let %44
- %46:array<i32, 2> = load %localNumbers
- %x_21:array<i32, 2> = let %46
- %x_22_1:ptr<function, array<i32, 2>, read_write> = var, %x_21
- %49:ptr<function, i32, read_write> = access %x_22_1, 1u
- store %49, %x_93
- %50:array<i32, 2> = load %x_22_1
- %x_22:array<i32, 2> = let %50
- %52:array<i32, 2> = load %x_22_1
- store %localNumbers, %52
- %53:ptr<function, i32, read_write> = access %globalNumbers, 0i
- store %53, 0i
- %54:i32 = access %x_22, 1u
- %x_13:i32 = let %54
- store %param, %x_13
- store %x_17, 0i
- store %x_25, 0i
- loop [b: $B12, c: $B13] { # loop_4
- $B12: { # body
- %x_19:ptr<function, i32, read_write> = var
- %57:i32 = load %x_25
- %58:bool = lte %57, %x_13
- if %58 [t: $B14, f: $B15] { # if_4
- $B14: { # true
- exit_if # if_4
- }
- $B15: { # false
- exit_loop # loop_4
- }
- }
- %x_102_save:i32 = let %x_13
- %60:ptr<function, i32, read_write> = access %globalNumbers, %x_13
- %61:i32 = load %60
- %62:bool = lte %61, 1i
- if %62 [t: $B16] { # if_5
- $B16: { # true
- %63:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
- store %63, 1i
- exit_if # if_5
- }
- }
- continue # -> $B13
- }
- $B13: { # continuing
- %64:i32 = load %x_25
- %65:i32 = add %64, 1i
- store %x_19, %65
- %66:i32 = load %x_19
- store %x_17, %66
- %67:i32 = load %x_19
- store %x_25, %67
- next_iteration # -> $B12
- }
- }
- %68:i32 = load %x_24
- %69:i32 = let %68
- %70:ptr<uniform, f32, read> = access %x_8, 0u
- %71:f32 = load %70
- %72:i32 = call %tint_f32_to_i32, %71
- %73:i32 = sub %72, 1i
- %74:ptr<function, i32, read_write> = access %globalNumbers, %73
- %75:i32 = load %74
- %76:i32 = add %69, %75
- %x_15:i32 = let %76
- store %acc, %x_15
- continue # -> $B4
- }
- $B4: { # continuing
- %78:i32 = load %x_23
- %79:i32 = add %78, 1i
- store %x_16, %79
- %80:i32 = load %x_16
- store %i_1, %80
- store %x_24, %x_15
- %81:i32 = load %x_16
- store %x_23, %81
- next_iteration # -> $B3
- }
- }
- %82:i32 = load %x_24
- %83:bool = eq %82, 4i
- if %83 [t: $B17, f: $B18] { # if_6
- $B17: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_6
- }
- $B18: { # false
- store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_6
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B19: {
- %85:void = call %main_1
- %86:vec4<f32> = load %x_GLF_color
- %87:main_out = construct %86
- ret %87
- }
-}
-%yieldsZero_ = func():i32 {
- $B20: {
- %x_116:ptr<function, bool, read_write> = var, false
- %x_20:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %x_118:ptr<function, bool, read_write> = var
- %x_26:ptr<function, i32, read_write> = var
- %x_134:ptr<function, i32, read_write> = var
- %x_27:ptr<function, i32, read_write> = var
- store %x_118, false
- loop [b: $B21] { # loop_5
- $B21: { # body
- %x_123:ptr<function, bool, read_write> = var
- %x_28:ptr<function, i32, read_write> = var
- %x_132:ptr<function, bool, read_write> = var
- store %i, 0i
- %99:bool = load %x_118
- store %x_123, %99
- store %x_28, 0i
- loop [b: $B22] { # loop_6
- $B22: { # body
- %100:ptr<uniform, f32, read> = access %x_8, 0u
- %101:f32 = load %100
- %x_128:f32 = let %101
- store %x_26, 0i
- %103:bool = load %x_123
- store %x_132, %103
- %104:i32 = load %x_28
- %105:i32 = let %104
- %106:i32 = call %tint_f32_to_i32, %x_128
- %107:bool = lt %105, %106
- if %107 [t: $B23, f: $B24] { # if_7
- $B23: { # true
- exit_if # if_7
- }
- $B24: { # false
- exit_loop # loop_6
- }
- }
- store %x_116, true
- %108:i32 = load %x_28
- store %x_20, %108
- %109:i32 = load %x_28
- store %x_26, %109
- store %x_132, true
- exit_loop # loop_6
- }
- }
- %110:i32 = load %x_26
- store %x_27, %110
- %111:bool = load %x_132
- if %111 [t: $B25] { # if_8
- $B25: { # true
- exit_loop # loop_5
- }
- }
- store %x_134, 0i
- store %x_116, true
- %112:i32 = load %x_134
- store %x_20, %112
- %113:i32 = load %x_134
- store %x_27, %113
- exit_loop # loop_5
- }
- }
- %114:i32 = load %x_27
- ret %114
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B26: {
- %116:i32 = convert %value
- %117:bool = gte %value, -2147483648.0f
- %118:i32 = select -2147483648i, %116, %117
- %119:bool = lte %value, 2147483520.0f
- %120:i32 = select 2147483647i, %118, %119
- ret %120
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl
deleted file mode 100644
index e75a419..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,325 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
- one:f32 @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_68:ptr<function, bool, read_write> = var, false
- %x_29:ptr<function, i32, read_write> = var
- %x_30:ptr<function, i32, read_write> = var
- %x_31:ptr<function, i32, read_write> = var
- %globalNumbers:ptr<function, array<i32, 10>, read_write> = var
- %x_17:ptr<function, i32, read_write> = var
- %acc:ptr<function, i32, read_write> = var
- %i_1:ptr<function, i32, read_write> = var
- %localNumbers:ptr<function, array<i32, 2>, read_write> = var
- %param:ptr<function, i32, read_write> = var
- %x_24:ptr<function, i32, read_write> = var
- %x_24_phi:ptr<function, i32, read_write> = var
- %x_23_phi:ptr<function, i32, read_write> = var
- store %acc, 0i
- store %i_1, 0i
- store %x_24_phi, 0i
- store %x_23_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_33:ptr<function, i32, read_write> = var
- %x_92:ptr<function, i32, read_write> = var
- %x_76_phi:ptr<function, bool, read_write> = var
- %x_34_phi:ptr<function, i32, read_write> = var
- %x_25_phi:ptr<function, i32, read_write> = var
- %22:i32 = load %x_24_phi
- store %x_24, %22
- %23:i32 = load %x_23_phi
- %x_23:i32 = let %23
- %25:bool = lt %x_23, 4i
- if %25 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- store %x_68, false
- store %x_76_phi, false
- loop [b: $B7] { # loop_2
- $B7: { # body
- %x_81:ptr<function, bool, read_write> = var
- %x_32:ptr<function, i32, read_write> = var
- %x_81_phi:ptr<function, bool, read_write> = var
- %x_32_phi:ptr<function, i32, read_write> = var
- %x_33_phi:ptr<function, i32, read_write> = var
- %x_90_phi:ptr<function, bool, read_write> = var
- %32:bool = load %x_76_phi
- %x_76:bool = let %32
- store %x_30, 0i
- store %x_81_phi, %x_76
- store %x_32_phi, 0i
- loop [b: $B8] { # loop_3
- $B8: { # body
- %34:bool = load %x_81_phi
- store %x_81, %34
- %35:i32 = load %x_32_phi
- store %x_32, %35
- %36:ptr<uniform, f32, read> = access %x_8, 0u
- %37:f32 = load %36
- %x_86:f32 = let %37
- store %x_33_phi, 0i
- %39:bool = load %x_81
- store %x_90_phi, %39
- %40:i32 = load %x_32
- %41:i32 = let %40
- %42:i32 = call %tint_f32_to_i32, %x_86
- %44:bool = lt %41, %42
- if %44 [t: $B9, f: $B10] { # if_2
- $B9: { # true
- exit_if # if_2
- }
- $B10: { # false
- exit_loop # loop_3
- }
- }
- store %x_68, true
- %45:i32 = load %x_32
- store %x_29, %45
- %46:i32 = load %x_32
- store %x_33_phi, %46
- store %x_90_phi, true
- exit_loop # loop_3
- }
- }
- %47:i32 = load %x_33_phi
- store %x_33, %47
- %48:bool = load %x_90_phi
- %x_90:bool = let %48
- %50:i32 = load %x_33
- store %x_34_phi, %50
- if %x_90 [t: $B11] { # if_3
- $B11: { # true
- exit_loop # loop_2
- }
- }
- store %x_92, 0i
- store %x_68, true
- %51:i32 = load %x_92
- store %x_29, %51
- %52:i32 = load %x_92
- store %x_34_phi, %52
- exit_loop # loop_2
- }
- }
- %53:i32 = load %x_34_phi
- %x_34:i32 = let %53
- store %x_31, %x_34
- %55:i32 = load %x_31
- %x_93:i32 = let %55
- %57:array<i32, 2> = load %localNumbers
- %x_21:array<i32, 2> = let %57
- %x_22_1:ptr<function, array<i32, 2>, read_write> = var, %x_21
- %60:ptr<function, i32, read_write> = access %x_22_1, 1u
- store %60, %x_93
- %61:array<i32, 2> = load %x_22_1
- %x_22:array<i32, 2> = let %61
- store %localNumbers, %x_22
- %63:ptr<function, i32, read_write> = access %globalNumbers, 0i
- store %63, 0i
- %64:i32 = access %x_22, 1u
- %x_13:i32 = let %64
- store %param, %x_13
- store %x_17, 0i
- store %x_25_phi, 0i
- loop [b: $B12, c: $B13] { # loop_4
- $B12: { # body
- %66:i32 = load %x_25_phi
- %x_25:i32 = let %66
- %68:bool = lte %x_25, %x_13
- if %68 [t: $B14, f: $B15] { # if_4
- $B14: { # true
- exit_if # if_4
- }
- $B15: { # false
- exit_loop # loop_4
- }
- }
- %x_102_save:i32 = let %x_13
- %70:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
- %71:i32 = load %70
- %x_18:i32 = let %71
- %73:bool = lte %x_18, 1i
- if %73 [t: $B16] { # if_5
- $B16: { # true
- %74:ptr<function, i32, read_write> = access %globalNumbers, %x_102_save
- store %74, 1i
- exit_if # if_5
- }
- }
- continue # -> $B13
- }
- $B13: { # continuing
- %75:i32 = add %x_25, 1i
- %x_19:i32 = let %75
- store %x_17, %x_19
- store %x_25_phi, %x_19
- next_iteration # -> $B12
- }
- }
- %77:ptr<uniform, f32, read> = access %x_8, 0u
- %78:f32 = load %77
- %x_107:f32 = let %78
- %80:i32 = call %tint_f32_to_i32, %x_107
- %81:i32 = sub %80, 1i
- %82:ptr<function, i32, read_write> = access %globalNumbers, %81
- %83:i32 = load %82
- %x_14:i32 = let %83
- %85:i32 = load %x_24
- %86:i32 = let %85
- %87:i32 = bitcast %x_14
- %88:i32 = add %86, %87
- %89:i32 = bitcast %88
- %x_15:i32 = let %89
- store %acc, %x_15
- continue # -> $B4
- }
- $B4: { # continuing
- %91:i32 = add %x_23, 1i
- %x_16:i32 = let %91
- store %i_1, %x_16
- store %x_24_phi, %x_15
- store %x_23_phi, %x_16
- next_iteration # -> $B3
- }
- }
- %93:i32 = load %x_24
- %94:bool = eq %93, 4i
- if %94 [t: $B17, f: $B18] { # if_6
- $B17: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_6
- }
- $B18: { # false
- store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_6
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B19: {
- %96:void = call %main_1
- %97:vec4<f32> = load %x_GLF_color
- %98:main_out = construct %97
- ret %98
- }
-}
-%yieldsZero_ = func():i32 {
- $B20: {
- %x_116:ptr<function, bool, read_write> = var, false
- %x_20:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %x_26:ptr<function, i32, read_write> = var
- %x_134:ptr<function, i32, read_write> = var
- %x_118_phi:ptr<function, bool, read_write> = var
- %x_27_phi:ptr<function, i32, read_write> = var
- store %x_118_phi, false
- loop [b: $B21] { # loop_5
- $B21: { # body
- %x_123:ptr<function, bool, read_write> = var
- %x_28:ptr<function, i32, read_write> = var
- %x_123_phi:ptr<function, bool, read_write> = var
- %x_28_phi:ptr<function, i32, read_write> = var
- %x_26_phi:ptr<function, i32, read_write> = var
- %x_132_phi:ptr<function, bool, read_write> = var
- %113:bool = load %x_118_phi
- %x_118:bool = let %113
- store %i, 0i
- store %x_123_phi, %x_118
- store %x_28_phi, 0i
- loop [b: $B22] { # loop_6
- $B22: { # body
- %115:bool = load %x_123_phi
- store %x_123, %115
- %116:i32 = load %x_28_phi
- store %x_28, %116
- %117:ptr<uniform, f32, read> = access %x_8, 0u
- %118:f32 = load %117
- %x_128:f32 = let %118
- store %x_26_phi, 0i
- %120:bool = load %x_123
- store %x_132_phi, %120
- %121:i32 = load %x_28
- %122:i32 = let %121
- %123:i32 = call %tint_f32_to_i32, %x_128
- %124:bool = lt %122, %123
- if %124 [t: $B23, f: $B24] { # if_7
- $B23: { # true
- exit_if # if_7
- }
- $B24: { # false
- exit_loop # loop_6
- }
- }
- store %x_116, true
- %125:i32 = load %x_28
- store %x_20, %125
- %126:i32 = load %x_28
- store %x_26_phi, %126
- store %x_132_phi, true
- exit_loop # loop_6
- }
- }
- %127:i32 = load %x_26_phi
- store %x_26, %127
- %128:bool = load %x_132_phi
- %x_132:bool = let %128
- %130:i32 = load %x_26
- store %x_27_phi, %130
- if %x_132 [t: $B25] { # if_8
- $B25: { # true
- exit_loop # loop_5
- }
- }
- store %x_134, 0i
- store %x_116, true
- %131:i32 = load %x_134
- store %x_20, %131
- %132:i32 = load %x_134
- store %x_27_phi, %132
- exit_loop # loop_5
- }
- }
- %133:i32 = load %x_27_phi
- %x_27:i32 = let %133
- ret %x_27
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B26: {
- %136:i32 = convert %value
- %137:bool = gte %value, -2147483648.0f
- %138:i32 = select -2147483648i, %136, %137
- %139:bool = lte %value, 2147483520.0f
- %140:i32 = select 2147483647i, %138, %139
- ret %140
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl
deleted file mode 100644
index 0a9d5ab..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,136 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_66:ptr<function, i32, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %9:vec2<f32> = swizzle %8, xy
- %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %11:vec2<f32> = load %10
- %12:vec2<f32> = div %9, %11
- %x_56:vec2<f32> = let %12
- %14:f32 = access %x_56, 0u
- %15:f32 = mul %14, 10.0f
- %16:i32 = call %tint_f32_to_i32, %15
- %18:i32 = let %16
- %19:f32 = access %x_56, 1u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %22:i32 = mul %21, 10i
- %23:i32 = add %18, %22
- %x_64:i32 = let %23
- store %x_66, 100i
- store %x_69, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_67:ptr<function, i32, read_write> = var
- %x_70:ptr<function, i32, read_write> = var
- %27:i32 = load %x_69
- %28:bool = lt %27, %x_64
- if %28 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %29:i32 = load %x_66
- %30:i32 = mul 4i, %29
- %31:i32 = load %x_66
- %32:i32 = sub 1000i, %31
- %33:i32 = mul %30, %32
- %34:i32 = call %tint_div_i32, %33, 1000i
- store %x_67, %34
- %36:i32 = load %x_69
- %37:i32 = add %36, 1i
- store %x_70, %37
- %38:i32 = load %x_67
- store %x_66, %38
- %39:i32 = load %x_70
- store %x_69, %39
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %40:i32 = load %x_66
- %41:i32 = call %tint_mod_i32, %40, 16i
- %43:ptr<function, vec4<f32>, read_write> = access %indexable, %41
- %44:vec4<f32> = load %43
- store %x_GLF_color, %44
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %47:void = call %main_1
- %48:vec4<f32> = load %x_GLF_color
- %49:main_out = construct %48
- ret %49
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %52:bool = eq %rhs, 0i
- %53:bool = eq %lhs, -2147483648i
- %54:bool = eq %rhs, -1i
- %55:bool = and %53, %54
- %56:bool = or %52, %55
- %57:i32 = select %rhs, 1i, %56
- %58:i32 = div %lhs, %57
- ret %58
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %61:bool = eq %rhs_1, 0i
- %62:bool = eq %lhs_1, -2147483648i
- %63:bool = eq %rhs_1, -1i
- %64:bool = and %62, %63
- %65:bool = or %61, %64
- %66:i32 = select %rhs_1, 1i, %65
- %67:i32 = let %66
- %68:i32 = div %lhs_1, %67
- %69:i32 = mul %68, %67
- %70:i32 = sub %lhs_1, %69
- ret %70
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %72:i32 = convert %value
- %73:bool = gte %value, -2147483648.0f
- %74:i32 = select -2147483648i, %72, %73
- %75:bool = lte %value, 2147483520.0f
- %76:i32 = select 2147483647i, %74, %75
- ret %76
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl
deleted file mode 100644
index 761f161..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,148 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_66:ptr<function, i32, read_write> = var
- %x_66_phi:ptr<function, i32, read_write> = var
- %x_69_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_52:vec4<f32> = let %9
- %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %12:vec2<f32> = load %11
- %x_55:vec2<f32> = let %12
- %14:f32 = access %x_52, 0u
- %15:f32 = access %x_52, 1u
- %16:vec2<f32> = construct %14, %15
- %17:vec2<f32> = div %16, %x_55
- %x_56:vec2<f32> = let %17
- %19:f32 = access %x_56, 0u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = let %21
- %24:f32 = access %x_56, 1u
- %25:f32 = mul %24, 10.0f
- %26:i32 = call %tint_f32_to_i32, %25
- %27:i32 = mul %26, 10i
- %28:i32 = add %23, %27
- %x_64:i32 = let %28
- store %x_66_phi, 100i
- store %x_69_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_67:ptr<function, i32, read_write> = var
- %x_70:ptr<function, i32, read_write> = var
- %32:i32 = load %x_66_phi
- store %x_66, %32
- %33:i32 = load %x_69_phi
- %x_69:i32 = let %33
- %35:bool = lt %x_69, %x_64
- if %35 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %36:i32 = load %x_66
- %37:i32 = bitcast %36
- %38:i32 = mul 4i, %37
- %39:i32 = let %38
- %40:i32 = load %x_66
- %41:i32 = bitcast %40
- %42:i32 = sub 1000i, %41
- %43:i32 = mul %39, %42
- %44:i32 = call %tint_div_i32, %43, 1000i
- store %x_67, %44
- %46:i32 = add %x_69, 1i
- store %x_70, %46
- %47:i32 = load %x_67
- store %x_66_phi, %47
- %48:i32 = load %x_70
- store %x_69_phi, %48
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %49:i32 = load %x_66
- %50:i32 = call %tint_mod_i32, %49, 16i
- %52:i32 = bitcast %50
- %53:ptr<function, vec4<f32>, read_write> = access %indexable, %52
- %54:vec4<f32> = load %53
- %x_78:vec4<f32> = let %54
- store %x_GLF_color, %x_78
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %58:void = call %main_1
- %59:vec4<f32> = load %x_GLF_color
- %60:main_out = construct %59
- ret %60
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %63:bool = eq %rhs, 0i
- %64:bool = eq %lhs, -2147483648i
- %65:bool = eq %rhs, -1i
- %66:bool = and %64, %65
- %67:bool = or %63, %66
- %68:i32 = select %rhs, 1i, %67
- %69:i32 = div %lhs, %68
- ret %69
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %72:bool = eq %rhs_1, 0i
- %73:bool = eq %lhs_1, -2147483648i
- %74:bool = eq %rhs_1, -1i
- %75:bool = and %73, %74
- %76:bool = or %72, %75
- %77:i32 = select %rhs_1, 1i, %76
- %78:i32 = let %77
- %79:i32 = div %lhs_1, %78
- %80:i32 = mul %79, %78
- %81:i32 = sub %lhs_1, %80
- ret %81
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %83:i32 = convert %value
- %84:bool = gte %value, -2147483648.0f
- %85:i32 = select -2147483648i, %83, %84
- %86:bool = lte %value, 2147483520.0f
- %87:i32 = select 2147483647i, %85, %86
- ret %87
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl
deleted file mode 100644
index 318ce84..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,141 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_72:ptr<function, i32, read_write> = var
- %x_75:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %9:vec2<f32> = swizzle %8, xy
- %x_55:vec2<f32> = let %9
- %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %12:vec2<f32> = load %11
- %13:vec2<f32> = div %x_55, %12
- %x_59:vec2<f32> = let %13
- %15:f32 = access %x_59, 0u
- %16:vec4<f32> = construct 0.0f, %x_55, 0.5f
- %17:f32 = access %16, 3u
- %18:vec4<f32> = construct %17, 10.0f, vec2<f32>(0.0f)
- %19:f32 = access %18, 1u
- %20:f32 = mul %15, %19
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = let %21
- %24:f32 = access %x_59, 1u
- %25:f32 = mul %24, 10.0f
- %26:i32 = call %tint_f32_to_i32, %25
- %27:i32 = mul %26, 10i
- %28:i32 = add %23, %27
- %x_70:i32 = let %28
- store %x_72, 100i
- store %x_75, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_73:ptr<function, i32, read_write> = var
- %x_76:ptr<function, i32, read_write> = var
- %32:i32 = load %x_75
- %33:bool = lt %32, %x_70
- if %33 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %34:i32 = load %x_72
- %35:i32 = mul 4i, %34
- %36:i32 = load %x_72
- %37:i32 = sub 1000i, %36
- %38:i32 = mul %35, %37
- %39:i32 = call %tint_div_i32, %38, 1000i
- store %x_73, %39
- %41:i32 = load %x_75
- %42:i32 = add %41, 1i
- store %x_76, %42
- %43:i32 = load %x_73
- store %x_72, %43
- %44:i32 = load %x_76
- store %x_75, %44
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %45:i32 = load %x_72
- %46:i32 = call %tint_mod_i32, %45, 16i
- %48:ptr<function, vec4<f32>, read_write> = access %indexable, %46
- %49:vec4<f32> = load %48
- store %x_GLF_color, %49
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %52:void = call %main_1
- %53:vec4<f32> = load %x_GLF_color
- %54:main_out = construct %53
- ret %54
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %57:bool = eq %rhs, 0i
- %58:bool = eq %lhs, -2147483648i
- %59:bool = eq %rhs, -1i
- %60:bool = and %58, %59
- %61:bool = or %57, %60
- %62:i32 = select %rhs, 1i, %61
- %63:i32 = div %lhs, %62
- ret %63
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %66:bool = eq %rhs_1, 0i
- %67:bool = eq %lhs_1, -2147483648i
- %68:bool = eq %rhs_1, -1i
- %69:bool = and %67, %68
- %70:bool = or %66, %69
- %71:i32 = select %rhs_1, 1i, %70
- %72:i32 = let %71
- %73:i32 = div %lhs_1, %72
- %74:i32 = mul %73, %72
- %75:i32 = sub %lhs_1, %74
- ret %75
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %77:i32 = convert %value
- %78:bool = gte %value, -2147483648.0f
- %79:i32 = select -2147483648i, %77, %78
- %80:bool = lte %value, 2147483520.0f
- %81:i32 = select 2147483647i, %79, %80
- ret %81
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl
deleted file mode 100644
index f211f6c..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,153 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_72:ptr<function, i32, read_write> = var
- %x_72_phi:ptr<function, i32, read_write> = var
- %x_75_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_54:vec4<f32> = let %9
- %11:f32 = access %x_54, 0u
- %12:f32 = access %x_54, 1u
- %13:vec2<f32> = construct %11, %12
- %x_55:vec2<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_58:vec2<f32> = let %16
- %18:vec2<f32> = div %x_55, %x_58
- %x_59:vec2<f32> = let %18
- %20:f32 = access %x_59, 0u
- %21:vec4<f32> = construct 0.0f, %x_55, 0.5f
- %22:f32 = access %21, 3u
- %23:vec4<f32> = construct %22, 10.0f, vec2<f32>(0.0f)
- %24:f32 = access %23, 1u
- %25:f32 = mul %20, %24
- %26:i32 = call %tint_f32_to_i32, %25
- %28:i32 = let %26
- %29:f32 = access %x_59, 1u
- %30:f32 = mul %29, 10.0f
- %31:i32 = call %tint_f32_to_i32, %30
- %32:i32 = mul %31, 10i
- %33:i32 = add %28, %32
- %x_70:i32 = let %33
- store %x_72_phi, 100i
- store %x_75_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_73:ptr<function, i32, read_write> = var
- %x_76:ptr<function, i32, read_write> = var
- %37:i32 = load %x_72_phi
- store %x_72, %37
- %38:i32 = load %x_75_phi
- %x_75:i32 = let %38
- %40:bool = lt %x_75, %x_70
- if %40 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %41:i32 = load %x_72
- %42:i32 = bitcast %41
- %43:i32 = mul 4i, %42
- %44:i32 = let %43
- %45:i32 = load %x_72
- %46:i32 = bitcast %45
- %47:i32 = sub 1000i, %46
- %48:i32 = mul %44, %47
- %49:i32 = call %tint_div_i32, %48, 1000i
- store %x_73, %49
- %51:i32 = add %x_75, 1i
- store %x_76, %51
- %52:i32 = load %x_73
- store %x_72_phi, %52
- %53:i32 = load %x_76
- store %x_75_phi, %53
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %54:i32 = load %x_72
- %55:i32 = call %tint_mod_i32, %54, 16i
- %57:i32 = bitcast %55
- %58:ptr<function, vec4<f32>, read_write> = access %indexable, %57
- %59:vec4<f32> = load %58
- %x_84:vec4<f32> = let %59
- store %x_GLF_color, %x_84
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %63:void = call %main_1
- %64:vec4<f32> = load %x_GLF_color
- %65:main_out = construct %64
- ret %65
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %68:bool = eq %rhs, 0i
- %69:bool = eq %lhs, -2147483648i
- %70:bool = eq %rhs, -1i
- %71:bool = and %69, %70
- %72:bool = or %68, %71
- %73:i32 = select %rhs, 1i, %72
- %74:i32 = div %lhs, %73
- ret %74
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %77:bool = eq %rhs_1, 0i
- %78:bool = eq %lhs_1, -2147483648i
- %79:bool = eq %rhs_1, -1i
- %80:bool = and %78, %79
- %81:bool = or %77, %80
- %82:i32 = select %rhs_1, 1i, %81
- %83:i32 = let %82
- %84:i32 = div %lhs_1, %83
- %85:i32 = mul %84, %83
- %86:i32 = sub %lhs_1, %85
- ret %86
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %88:i32 = convert %value
- %89:bool = gte %value, -2147483648.0f
- %90:i32 = select -2147483648i, %88, %89
- %91:bool = lte %value, 2147483520.0f
- %92:i32 = select 2147483647i, %90, %91
- ret %92
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl
deleted file mode 100644
index 08020c7..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,195 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_77:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_78:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_79:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_80:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_89:ptr<function, vec4<f32>, read_write> = var
- %x_92:ptr<function, i32, read_write> = var
- %11:vec4<f32> = load %gl_FragCoord
- %12:vec2<f32> = swizzle %11, xy
- %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %14:vec2<f32> = load %13
- %15:vec2<f32> = div %12, %14
- %16:vec2<f32> = mul %15, 32.0f
- %17:vec2<f32> = floor %16
- %x_87:vec2<f32> = let %17
- store %x_89, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_92, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_121:ptr<function, bool, read_write> = var
- %x_136:ptr<function, vec4<f32>, read_write> = var
- %x_90:ptr<function, vec4<f32>, read_write> = var
- %x_93:ptr<function, i32, read_write> = var
- %23:i32 = load %x_92
- %24:bool = lt %23, 8i
- if %24 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_98:ptr<function, vec4<f32>, read_write> = var
- store %x_77, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %26:i32 = load %x_92
- %27:ptr<function, vec4<f32>, read_write> = access %x_77, %26
- %28:vec4<f32> = load %27
- store %x_98, %28
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %29:f32 = access %x_87, 0u
- %x_101:f32 = let %29
- %31:f32 = load_vector_element %x_98, 0u
- %x_102:f32 = let %31
- %33:bool = lt %x_101, %x_102
- if %33 [t: $B8] { # if_2
- $B8: { # true
- store %x_121, false
- exit_switch # switch_1
- }
- }
- %34:f32 = access %x_87, 1u
- %x_106:f32 = let %34
- %36:f32 = load_vector_element %x_98, 1u
- %x_107:f32 = let %36
- %38:bool = lt %x_106, %x_107
- if %38 [t: $B9] { # if_3
- $B9: { # true
- store %x_121, false
- exit_switch # switch_1
- }
- }
- %39:f32 = load_vector_element %x_98, 2u
- %40:f32 = add %x_102, %39
- %41:bool = gt %x_101, %40
- if %41 [t: $B10] { # if_4
- $B10: { # true
- store %x_121, false
- exit_switch # switch_1
- }
- }
- %42:f32 = load_vector_element %x_98, 3u
- %43:f32 = add %x_107, %42
- %44:bool = gt %x_106, %43
- if %44 [t: $B11] { # if_5
- $B11: { # true
- store %x_121, false
- exit_switch # switch_1
- }
- }
- store %x_121, true
- exit_switch # switch_1
- }
- }
- %45:vec4<f32> = load %x_89
- store %x_90, %45
- %46:bool = load %x_121
- if %46 [t: $B12] { # if_6
- $B12: { # true
- store %x_78, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %47:i32 = load %x_92
- %48:ptr<function, vec4<f32>, read_write> = access %x_78, %47
- %49:f32 = load_vector_element %48, 0u
- %x_125:f32 = let %49
- store %x_79, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %51:i32 = load %x_92
- %52:ptr<function, vec4<f32>, read_write> = access %x_79, %51
- %53:f32 = load_vector_element %52, 1u
- %x_128:f32 = let %53
- store %x_80, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %55:i32 = call %tint_f32_to_i32, %x_125
- %57:i32 = let %55
- %58:i32 = call %tint_f32_to_i32, %x_128
- %59:i32 = mul %57, %58
- %60:i32 = load %x_92
- %61:i32 = mul %60, 9i
- %62:i32 = add %59, %61
- %63:i32 = add %62, 11i
- %64:i32 = call %tint_mod_i32, %63, 16i
- %66:ptr<function, vec4<f32>, read_write> = access %x_80, %64
- %67:vec4<f32> = load %66
- store %x_136, %67
- %68:vec4<f32> = load %x_136
- store %x_90, %68
- exit_if # if_6
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %69:i32 = load %x_92
- %70:i32 = add %69, 1i
- store %x_93, %70
- %71:vec4<f32> = load %x_90
- store %x_89, %71
- %72:i32 = load %x_93
- store %x_92, %72
- next_iteration # -> $B3
- }
- }
- %73:vec4<f32> = load %x_89
- store %x_GLF_color, %73
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %76:void = call %main_1
- %77:vec4<f32> = load %x_GLF_color
- %78:main_out = construct %77
- ret %78
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %81:bool = eq %rhs, 0i
- %82:bool = eq %lhs, -2147483648i
- %83:bool = eq %rhs, -1i
- %84:bool = and %82, %83
- %85:bool = or %81, %84
- %86:i32 = select %rhs, 1i, %85
- %87:i32 = let %86
- %88:i32 = div %lhs, %87
- %89:i32 = mul %88, %87
- %90:i32 = sub %lhs, %89
- ret %90
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %92:i32 = convert %value
- %93:bool = gte %value, -2147483648.0f
- %94:i32 = select -2147483648i, %92, %93
- %95:bool = lte %value, 2147483520.0f
- %96:i32 = select 2147483647i, %94, %95
- ret %96
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl
deleted file mode 100644
index 8854829..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,200 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_77:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_78:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_79:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_80:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_89:ptr<function, vec4<f32>, read_write> = var
- %x_89_phi:ptr<function, vec4<f32>, read_write> = var
- %x_92_phi:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %x_81:vec4<f32> = let %12
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %x_84:vec2<f32> = let %15
- %17:f32 = access %x_81, 0u
- %18:f32 = access %x_81, 1u
- %19:vec2<f32> = construct %17, %18
- %20:vec2<f32> = div %19, %x_84
- %21:vec2<f32> = mul %20, 32.0f
- %22:vec2<f32> = floor %21
- %x_87:vec2<f32> = let %22
- store %x_89_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_92_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_136:ptr<function, vec4<f32>, read_write> = var
- %x_93:ptr<function, i32, read_write> = var
- %x_121_phi:ptr<function, bool, read_write> = var
- %x_90_phi:ptr<function, vec4<f32>, read_write> = var
- %28:vec4<f32> = load %x_89_phi
- store %x_89, %28
- %29:i32 = load %x_92_phi
- %x_92:i32 = let %29
- %31:bool = lt %x_92, 8i
- if %31 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_98:ptr<function, vec4<f32>, read_write> = var
- store %x_77, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %33:ptr<function, vec4<f32>, read_write> = access %x_77, %x_92
- %34:vec4<f32> = load %33
- store %x_98, %34
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %35:f32 = access %x_87, 0u
- %x_101:f32 = let %35
- %37:f32 = load_vector_element %x_98, 0u
- %x_102:f32 = let %37
- %39:bool = lt %x_101, %x_102
- if %39 [t: $B8] { # if_2
- $B8: { # true
- store %x_121_phi, false
- exit_switch # switch_1
- }
- }
- %40:f32 = access %x_87, 1u
- %x_106:f32 = let %40
- %42:f32 = load_vector_element %x_98, 1u
- %x_107:f32 = let %42
- %44:bool = lt %x_106, %x_107
- if %44 [t: $B9] { # if_3
- $B9: { # true
- store %x_121_phi, false
- exit_switch # switch_1
- }
- }
- %45:f32 = load_vector_element %x_98, 2u
- %46:f32 = add %x_102, %45
- %47:bool = gt %x_101, %46
- if %47 [t: $B10] { # if_4
- $B10: { # true
- store %x_121_phi, false
- exit_switch # switch_1
- }
- }
- %48:f32 = load_vector_element %x_98, 3u
- %49:f32 = add %x_107, %48
- %50:bool = gt %x_106, %49
- if %50 [t: $B11] { # if_5
- $B11: { # true
- store %x_121_phi, false
- exit_switch # switch_1
- }
- }
- store %x_121_phi, true
- exit_switch # switch_1
- }
- }
- %51:bool = load %x_121_phi
- %x_121:bool = let %51
- %53:vec4<f32> = load %x_89
- store %x_90_phi, %53
- if %x_121 [t: $B12] { # if_6
- $B12: { # true
- store %x_78, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %54:ptr<function, vec4<f32>, read_write> = access %x_78, %x_92
- %55:f32 = load_vector_element %54, 0u
- %x_125:f32 = let %55
- store %x_79, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %57:ptr<function, vec4<f32>, read_write> = access %x_79, %x_92
- %58:f32 = load_vector_element %57, 1u
- %x_128:f32 = let %58
- store %x_80, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %60:i32 = call %tint_f32_to_i32, %x_125
- %62:i32 = let %60
- %63:i32 = call %tint_f32_to_i32, %x_128
- %64:i32 = mul %62, %63
- %65:i32 = mul %x_92, 9i
- %66:i32 = add %64, %65
- %67:i32 = add %66, 11i
- %68:i32 = call %tint_mod_i32, %67, 16i
- %70:ptr<function, vec4<f32>, read_write> = access %x_80, %68
- %71:vec4<f32> = load %70
- store %x_136, %71
- %72:vec4<f32> = load %x_136
- store %x_90_phi, %72
- exit_if # if_6
- }
- }
- %73:vec4<f32> = load %x_90_phi
- %x_90:vec4<f32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_92, 1i
- store %x_93, %75
- store %x_89_phi, %x_90
- %76:i32 = load %x_93
- store %x_92_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:vec4<f32> = load %x_89
- store %x_GLF_color, %77
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %80:void = call %main_1
- %81:vec4<f32> = load %x_GLF_color
- %82:main_out = construct %81
- ret %82
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %85:bool = eq %rhs, 0i
- %86:bool = eq %lhs, -2147483648i
- %87:bool = eq %rhs, -1i
- %88:bool = and %86, %87
- %89:bool = or %85, %88
- %90:i32 = select %rhs, 1i, %89
- %91:i32 = let %90
- %92:i32 = div %lhs, %91
- %93:i32 = mul %92, %91
- %94:i32 = sub %lhs, %93
- ret %94
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %96:i32 = convert %value
- %97:bool = gte %value, -2147483648.0f
- %98:i32 = select -2147483648i, %96, %97
- %99:bool = lte %value, 2147483520.0f
- %100:i32 = select 2147483647i, %98, %99
- ret %100
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl
deleted file mode 100644
index 1f49091..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,141 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %x_72:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %9:vec2<f32> = swizzle %8, xy
- %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %11:vec2<f32> = load %10
- %12:vec2<f32> = div %9, %11
- %x_59:vec2<f32> = let %12
- %14:f32 = access %x_59, 0u
- %15:f32 = mul %14, 10.0f
- %16:i32 = call %tint_f32_to_i32, %15
- %18:i32 = let %16
- %19:f32 = access %x_59, 1u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %22:i32 = mul %21, 10i
- %23:i32 = add %18, %22
- %x_67:i32 = let %23
- store %x_69, 100i
- store %x_72, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_70:ptr<function, i32, read_write> = var
- %x_73:ptr<function, i32, read_write> = var
- %27:i32 = load %x_72
- %28:bool = lt %27, %x_67
- if %28 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %29:i32 = load %x_69
- %30:i32 = mul 4i, %29
- %31:i32 = load %x_69
- %32:i32 = sub 1000i, %31
- %33:i32 = mul %30, %32
- %34:i32 = call %tint_div_i32, %33, 1000i
- store %x_70, %34
- %36:i32 = load %x_72
- %37:i32 = add %36, 1i
- store %x_73, %37
- %38:i32 = load %x_70
- store %x_69, %38
- %39:i32 = load %x_73
- store %x_72, %39
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %40:array<vec4<f32>, 16> = load %indexable
- %x_80:array<vec4<f32>, 16> = let %40
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_80
- %x_81:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
- %43:i32 = load %x_69
- %44:i32 = call %tint_mod_i32, %43, 16i
- %46:ptr<function, vec4<f32>, read_write> = access %indexable, %44
- %47:vec4<f32> = load %46
- store %x_GLF_color, %47
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %50:void = call %main_1
- %51:vec4<f32> = load %x_GLF_color
- %52:main_out = construct %51
- ret %52
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %55:bool = eq %rhs, 0i
- %56:bool = eq %lhs, -2147483648i
- %57:bool = eq %rhs, -1i
- %58:bool = and %56, %57
- %59:bool = or %55, %58
- %60:i32 = select %rhs, 1i, %59
- %61:i32 = div %lhs, %60
- ret %61
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %64:bool = eq %rhs_1, 0i
- %65:bool = eq %lhs_1, -2147483648i
- %66:bool = eq %rhs_1, -1i
- %67:bool = and %65, %66
- %68:bool = or %64, %67
- %69:i32 = select %rhs_1, 1i, %68
- %70:i32 = let %69
- %71:i32 = div %lhs_1, %70
- %72:i32 = mul %71, %70
- %73:i32 = sub %lhs_1, %72
- ret %73
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %75:i32 = convert %value
- %76:bool = gte %value, -2147483648.0f
- %77:i32 = select -2147483648i, %75, %76
- %78:bool = lte %value, 2147483520.0f
- %79:i32 = select 2147483647i, %77, %78
- ret %79
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl
deleted file mode 100644
index 611a5c8..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,153 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %x_69_phi:ptr<function, i32, read_write> = var
- %x_72_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_55:vec4<f32> = let %9
- %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %12:vec2<f32> = load %11
- %x_58:vec2<f32> = let %12
- %14:f32 = access %x_55, 0u
- %15:f32 = access %x_55, 1u
- %16:vec2<f32> = construct %14, %15
- %17:vec2<f32> = div %16, %x_58
- %x_59:vec2<f32> = let %17
- %19:f32 = access %x_59, 0u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = let %21
- %24:f32 = access %x_59, 1u
- %25:f32 = mul %24, 10.0f
- %26:i32 = call %tint_f32_to_i32, %25
- %27:i32 = mul %26, 10i
- %28:i32 = add %23, %27
- %x_67:i32 = let %28
- store %x_69_phi, 100i
- store %x_72_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_70:ptr<function, i32, read_write> = var
- %x_73:ptr<function, i32, read_write> = var
- %32:i32 = load %x_69_phi
- store %x_69, %32
- %33:i32 = load %x_72_phi
- %x_72:i32 = let %33
- %35:bool = lt %x_72, %x_67
- if %35 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %36:i32 = load %x_69
- %37:i32 = bitcast %36
- %38:i32 = mul 4i, %37
- %39:i32 = let %38
- %40:i32 = load %x_69
- %41:i32 = bitcast %40
- %42:i32 = sub 1000i, %41
- %43:i32 = mul %39, %42
- %44:i32 = call %tint_div_i32, %43, 1000i
- store %x_70, %44
- %46:i32 = add %x_72, 1i
- store %x_73, %46
- %47:i32 = load %x_70
- store %x_69_phi, %47
- %48:i32 = load %x_73
- store %x_72_phi, %48
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %49:array<vec4<f32>, 16> = load %indexable
- %x_80:array<vec4<f32>, 16> = let %49
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_80
- %x_81:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
- %52:i32 = load %x_69
- %53:i32 = call %tint_mod_i32, %52, 16i
- %55:i32 = bitcast %53
- %56:ptr<function, vec4<f32>, read_write> = access %indexable, %55
- %57:vec4<f32> = load %56
- %x_83:vec4<f32> = let %57
- store %x_GLF_color, %x_83
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %61:void = call %main_1
- %62:vec4<f32> = load %x_GLF_color
- %63:main_out = construct %62
- ret %63
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %66:bool = eq %rhs, 0i
- %67:bool = eq %lhs, -2147483648i
- %68:bool = eq %rhs, -1i
- %69:bool = and %67, %68
- %70:bool = or %66, %69
- %71:i32 = select %rhs, 1i, %70
- %72:i32 = div %lhs, %71
- ret %72
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %75:bool = eq %rhs_1, 0i
- %76:bool = eq %lhs_1, -2147483648i
- %77:bool = eq %rhs_1, -1i
- %78:bool = and %76, %77
- %79:bool = or %75, %78
- %80:i32 = select %rhs_1, 1i, %79
- %81:i32 = let %80
- %82:i32 = div %lhs_1, %81
- %83:i32 = mul %82, %81
- %84:i32 = sub %lhs_1, %83
- ret %84
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %86:i32 = convert %value
- %87:bool = gte %value, -2147483648.0f
- %88:i32 = select -2147483648i, %86, %87
- %89:bool = lte %value, 2147483520.0f
- %90:i32 = select 2147483647i, %88, %89
- ret %90
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl
deleted file mode 100644
index e38912f..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,137 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %x_72:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %9:vec2<f32> = swizzle %8, xy
- %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %11:vec2<f32> = load %10
- %12:vec2<f32> = div %9, %11
- %x_59:vec2<f32> = let %12
- %14:f32 = access %x_59, 0u
- %15:f32 = mul %14, 10.0f
- %16:i32 = call %tint_f32_to_i32, %15
- %18:i32 = let %16
- %19:f32 = access %x_59, 1u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %22:i32 = mul %21, 10i
- %23:i32 = add %18, %22
- %x_67:i32 = let %23
- store %x_69, 100i
- store %x_72, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_70:ptr<function, i32, read_write> = var
- %x_73:ptr<function, i32, read_write> = var
- %27:i32 = load %x_72
- %28:bool = lt %27, %x_67
- if %28 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %29:i32 = load %x_69
- %30:i32 = mul 4i, %29
- %31:i32 = load %x_69
- %32:i32 = sub 1000i, %31
- %33:i32 = mul %30, %32
- %34:i32 = call %tint_div_i32, %33, 1000i
- store %x_70, %34
- %36:i32 = load %x_72
- %37:i32 = add %36, 1i
- store %x_73, %37
- %38:i32 = load %x_70
- store %x_69, %38
- %39:i32 = load %x_73
- store %x_72, %39
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %x_80:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
- %41:i32 = load %x_69
- %42:i32 = call %tint_mod_i32, %41, 16i
- %44:ptr<function, vec4<f32>, read_write> = access %indexable, %42
- %45:vec4<f32> = load %44
- store %x_GLF_color, %45
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %48:void = call %main_1
- %49:vec4<f32> = load %x_GLF_color
- %50:main_out = construct %49
- ret %50
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %53:bool = eq %rhs, 0i
- %54:bool = eq %lhs, -2147483648i
- %55:bool = eq %rhs, -1i
- %56:bool = and %54, %55
- %57:bool = or %53, %56
- %58:i32 = select %rhs, 1i, %57
- %59:i32 = div %lhs, %58
- ret %59
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %62:bool = eq %rhs_1, 0i
- %63:bool = eq %lhs_1, -2147483648i
- %64:bool = eq %rhs_1, -1i
- %65:bool = and %63, %64
- %66:bool = or %62, %65
- %67:i32 = select %rhs_1, 1i, %66
- %68:i32 = let %67
- %69:i32 = div %lhs_1, %68
- %70:i32 = mul %69, %68
- %71:i32 = sub %lhs_1, %70
- ret %71
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %73:i32 = convert %value
- %74:bool = gte %value, -2147483648.0f
- %75:i32 = select -2147483648i, %73, %74
- %76:bool = lte %value, 2147483520.0f
- %77:i32 = select 2147483647i, %75, %76
- ret %77
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl
deleted file mode 100644
index cf23ec9..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,149 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %x_69_phi:ptr<function, i32, read_write> = var
- %x_72_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_55:vec4<f32> = let %9
- %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %12:vec2<f32> = load %11
- %x_58:vec2<f32> = let %12
- %14:f32 = access %x_55, 0u
- %15:f32 = access %x_55, 1u
- %16:vec2<f32> = construct %14, %15
- %17:vec2<f32> = div %16, %x_58
- %x_59:vec2<f32> = let %17
- %19:f32 = access %x_59, 0u
- %20:f32 = mul %19, 10.0f
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = let %21
- %24:f32 = access %x_59, 1u
- %25:f32 = mul %24, 10.0f
- %26:i32 = call %tint_f32_to_i32, %25
- %27:i32 = mul %26, 10i
- %28:i32 = add %23, %27
- %x_67:i32 = let %28
- store %x_69_phi, 100i
- store %x_72_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_70:ptr<function, i32, read_write> = var
- %x_73:ptr<function, i32, read_write> = var
- %32:i32 = load %x_69_phi
- store %x_69, %32
- %33:i32 = load %x_72_phi
- %x_72:i32 = let %33
- %35:bool = lt %x_72, %x_67
- if %35 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %36:i32 = load %x_69
- %37:i32 = bitcast %36
- %38:i32 = mul 4i, %37
- %39:i32 = let %38
- %40:i32 = load %x_69
- %41:i32 = bitcast %40
- %42:i32 = sub 1000i, %41
- %43:i32 = mul %39, %42
- %44:i32 = call %tint_div_i32, %43, 1000i
- store %x_70, %44
- %46:i32 = add %x_72, 1i
- store %x_73, %46
- %47:i32 = load %x_70
- store %x_69_phi, %47
- %48:i32 = load %x_73
- store %x_72_phi, %48
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %x_80:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
- %50:i32 = load %x_69
- %51:i32 = call %tint_mod_i32, %50, 16i
- %53:i32 = bitcast %51
- %54:ptr<function, vec4<f32>, read_write> = access %indexable, %53
- %55:vec4<f32> = load %54
- %x_82:vec4<f32> = let %55
- store %x_GLF_color, %x_82
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B7: {
- store %gl_FragCoord, %gl_FragCoord_param
- %59:void = call %main_1
- %60:vec4<f32> = load %x_GLF_color
- %61:main_out = construct %60
- ret %61
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B8: {
- %64:bool = eq %rhs, 0i
- %65:bool = eq %lhs, -2147483648i
- %66:bool = eq %rhs, -1i
- %67:bool = and %65, %66
- %68:bool = or %64, %67
- %69:i32 = select %rhs, 1i, %68
- %70:i32 = div %lhs, %69
- ret %70
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B9: {
- %73:bool = eq %rhs_1, 0i
- %74:bool = eq %lhs_1, -2147483648i
- %75:bool = eq %rhs_1, -1i
- %76:bool = and %74, %75
- %77:bool = or %73, %76
- %78:i32 = select %rhs_1, 1i, %77
- %79:i32 = let %78
- %80:i32 = div %lhs_1, %79
- %81:i32 = mul %80, %79
- %82:i32 = sub %lhs_1, %81
- ret %82
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B10: {
- %84:i32 = convert %value
- %85:bool = gte %value, -2147483648.0f
- %86:i32 = select -2147483648i, %84, %85
- %87:bool = lte %value, 2147483520.0f
- %88:i32 = select 2147483647i, %86, %87
- ret %88
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl
deleted file mode 100644
index bef05c1..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,150 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_65:ptr<function, i32, read_write> = var
- %x_68:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %9:vec2<f32> = swizzle %8, xy
- %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %11:vec2<f32> = load %10
- %12:vec2<f32> = div %9, %11
- %13:vec2<f32> = mul %12, 8.0f
- %14:vec2<f32> = floor %13
- %x_57:vec2<f32> = let %14
- %16:f32 = access %x_57, 0u
- %17:i32 = call %tint_f32_to_i32, %16
- %19:i32 = mul %17, 8i
- %20:i32 = let %19
- %21:f32 = access %x_57, 1u
- %22:i32 = call %tint_f32_to_i32, %21
- %23:i32 = add %20, %22
- %x_63:i32 = let %23
- store %x_65, 0i
- store %x_68, %x_63
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_79:ptr<function, i32, read_write> = var
- %x_80:ptr<function, i32, read_write> = var
- %x_69:ptr<function, i32, read_write> = var
- %28:i32 = load %x_68
- %29:bool = gt %28, 1i
- if %29 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %30:i32 = load %x_68
- %31:i32 = and %30, 1i
- %32:bool = eq %31, 1i
- if %32 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %33:i32 = load %x_68
- %34:i32 = mul 3i, %33
- %35:i32 = add %34, 1i
- store %x_79, %35
- %36:i32 = load %x_79
- store %x_69, %36
- exit_if # if_2
- }
- $B8: { # false
- %37:i32 = load %x_68
- %38:i32 = call %tint_div_i32, %37, 2i
- store %x_80, %38
- %40:i32 = load %x_80
- store %x_69, %40
- exit_if # if_2
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %41:i32 = load %x_65
- %42:i32 = add %41, 1i
- store %x_65, %42
- %43:i32 = load %x_69
- store %x_68, %43
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %44:i32 = load %x_65
- %45:i32 = call %tint_mod_i32, %44, 16i
- %47:ptr<function, vec4<f32>, read_write> = access %indexable, %45
- %48:vec4<f32> = load %47
- store %x_GLF_color, %48
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B9: {
- store %gl_FragCoord, %gl_FragCoord_param
- %51:void = call %main_1
- %52:vec4<f32> = load %x_GLF_color
- %53:main_out = construct %52
- ret %53
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %56:bool = eq %rhs, 0i
- %57:bool = eq %lhs, -2147483648i
- %58:bool = eq %rhs, -1i
- %59:bool = and %57, %58
- %60:bool = or %56, %59
- %61:i32 = select %rhs, 1i, %60
- %62:i32 = div %lhs, %61
- ret %62
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B11: {
- %65:bool = eq %rhs_1, 0i
- %66:bool = eq %lhs_1, -2147483648i
- %67:bool = eq %rhs_1, -1i
- %68:bool = and %66, %67
- %69:bool = or %65, %68
- %70:i32 = select %rhs_1, 1i, %69
- %71:i32 = let %70
- %72:i32 = div %lhs_1, %71
- %73:i32 = mul %72, %71
- %74:i32 = sub %lhs_1, %73
- ret %74
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %76:i32 = convert %value
- %77:bool = gte %value, -2147483648.0f
- %78:i32 = select -2147483648i, %76, %77
- %79:bool = lte %value, 2147483520.0f
- %80:i32 = select 2147483647i, %78, %79
- ret %80
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl
deleted file mode 100644
index ee51673..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,159 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_65:ptr<function, i32, read_write> = var
- %x_65_phi:ptr<function, i32, read_write> = var
- %x_68_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_51:vec4<f32> = let %9
- %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %12:vec2<f32> = load %11
- %x_54:vec2<f32> = let %12
- %14:f32 = access %x_51, 0u
- %15:f32 = access %x_51, 1u
- %16:vec2<f32> = construct %14, %15
- %17:vec2<f32> = div %16, %x_54
- %18:vec2<f32> = mul %17, 8.0f
- %19:vec2<f32> = floor %18
- %x_57:vec2<f32> = let %19
- %21:f32 = access %x_57, 0u
- %22:i32 = call %tint_f32_to_i32, %21
- %24:i32 = mul %22, 8i
- %25:i32 = let %24
- %26:f32 = access %x_57, 1u
- %27:i32 = call %tint_f32_to_i32, %26
- %28:i32 = add %25, %27
- %x_63:i32 = let %28
- store %x_65_phi, 0i
- store %x_68_phi, %x_63
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_79:ptr<function, i32, read_write> = var
- %x_80:ptr<function, i32, read_write> = var
- %x_69_phi:ptr<function, i32, read_write> = var
- %33:i32 = load %x_65_phi
- store %x_65, %33
- %34:i32 = load %x_68_phi
- %x_68:i32 = let %34
- %36:bool = gt %x_68, 1i
- if %36 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %37:i32 = and %x_68, 1i
- %38:bool = eq %37, 1i
- if %38 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %39:i32 = mul 3i, %x_68
- %40:i32 = add %39, 1i
- store %x_79, %40
- %41:i32 = load %x_79
- store %x_69_phi, %41
- exit_if # if_2
- }
- $B8: { # false
- %42:i32 = call %tint_div_i32, %x_68, 2i
- store %x_80, %42
- %44:i32 = load %x_80
- store %x_69_phi, %44
- exit_if # if_2
- }
- }
- %45:i32 = load %x_69_phi
- %x_69:i32 = let %45
- continue # -> $B4
- }
- $B4: { # continuing
- %47:i32 = load %x_65
- %48:i32 = add %47, 1i
- %49:i32 = bitcast %48
- store %x_65_phi, %49
- store %x_68_phi, %x_69
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %50:i32 = load %x_65
- %51:i32 = call %tint_mod_i32, %50, 16i
- %53:i32 = bitcast %51
- %54:ptr<function, vec4<f32>, read_write> = access %indexable, %53
- %55:vec4<f32> = load %54
- %x_83:vec4<f32> = let %55
- store %x_GLF_color, %x_83
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B9: {
- store %gl_FragCoord, %gl_FragCoord_param
- %59:void = call %main_1
- %60:vec4<f32> = load %x_GLF_color
- %61:main_out = construct %60
- ret %61
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %64:bool = eq %rhs, 0i
- %65:bool = eq %lhs, -2147483648i
- %66:bool = eq %rhs, -1i
- %67:bool = and %65, %66
- %68:bool = or %64, %67
- %69:i32 = select %rhs, 1i, %68
- %70:i32 = div %lhs, %69
- ret %70
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B11: {
- %73:bool = eq %rhs_1, 0i
- %74:bool = eq %lhs_1, -2147483648i
- %75:bool = eq %rhs_1, -1i
- %76:bool = and %74, %75
- %77:bool = or %73, %76
- %78:i32 = select %rhs_1, 1i, %77
- %79:i32 = let %78
- %80:i32 = div %lhs_1, %79
- %81:i32 = mul %80, %79
- %82:i32 = sub %lhs_1, %81
- ret %82
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %84:i32 = convert %value
- %85:bool = gte %value, -2147483648.0f
- %86:i32 = select -2147483648i, %84, %85
- %87:bool = lte %value, 2147483520.0f
- %88:i32 = select 2147483647i, %86, %87
- ret %88
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl
deleted file mode 100644
index 2168e8f..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,166 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_71:ptr<function, i32, read_write> = var
- %x_74:ptr<function, i32, read_write> = var
- %8:vec4<f32> = load %gl_FragCoord
- %x_54:vec4<f32> = let %8
- %10:vec4<f32> = load %gl_FragCoord
- %11:vec2<f32> = swizzle %10, xy
- %x_55:vec2<f32> = let %11
- %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %14:vec2<f32> = load %13
- %15:vec2<f32> = div %x_55, %14
- %16:vec2<f32> = mul %15, 8.0f
- %x_61:vec2<f32> = let %16
- %18:vec2<f32> = floor %x_61
- %x_62:vec2<f32> = let %18
- %20:f32 = access %x_62, 0u
- %21:i32 = call %tint_f32_to_i32, %20
- %23:i32 = mul %21, 8i
- %24:i32 = let %23
- %25:f32 = access %x_62, 1u
- %26:i32 = call %tint_f32_to_i32, %25
- %27:i32 = add %24, %26
- %x_69:i32 = let %27
- store %x_71, 0i
- store %x_74, %x_69
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_85:ptr<function, i32, read_write> = var
- %x_86:ptr<function, i32, read_write> = var
- %x_75:ptr<function, i32, read_write> = var
- %32:i32 = load %x_74
- %33:bool = gt %32, 1i
- if %33 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %34:i32 = load %x_74
- %35:i32 = and %34, 1i
- %36:bool = eq %35, 1i
- if %36 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %37:i32 = load %x_74
- %38:i32 = mul 3i, %37
- %39:i32 = add %38, 1i
- store %x_85, %39
- %40:i32 = load %x_85
- store %x_75, %40
- exit_if # if_2
- }
- $B8: { # false
- %41:i32 = load %x_74
- %42:i32 = call %tint_div_i32, %41, 2i
- store %x_86, %42
- %44:i32 = load %x_86
- store %x_75, %44
- exit_if # if_2
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %45:i32 = load %x_71
- %46:i32 = add %45, 1i
- store %x_71, %46
- %47:i32 = load %x_75
- store %x_74, %47
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %48:array<vec4<f32>, 16> = load %indexable
- %x_88:array<vec4<f32>, 16> = let %48
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_88
- %50:array<vec4<f32>, 16> = construct vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), %x_54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- %51:vec4<f32> = access %50, 1u
- %x_89:vec4<f32> = let %51
- %53:vec4<f32> = construct 0.0f, 8.0f, %x_55
- %54:vec4<f32> = let %53
- %55:vec4<f32> = construct %x_61, 0.5f, 1.0f
- %56:array<vec4<f32>, 16> = construct vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), %54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), %55
- %x_90:array<vec4<f32>, 16> = let %56
- %58:i32 = load %x_71
- %59:i32 = call %tint_mod_i32, %58, 16i
- %61:ptr<function, vec4<f32>, read_write> = access %indexable, %59
- %62:vec4<f32> = load %61
- store %x_GLF_color, %62
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B9: {
- store %gl_FragCoord, %gl_FragCoord_param
- %65:void = call %main_1
- %66:vec4<f32> = load %x_GLF_color
- %67:main_out = construct %66
- ret %67
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %70:bool = eq %rhs, 0i
- %71:bool = eq %lhs, -2147483648i
- %72:bool = eq %rhs, -1i
- %73:bool = and %71, %72
- %74:bool = or %70, %73
- %75:i32 = select %rhs, 1i, %74
- %76:i32 = div %lhs, %75
- ret %76
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B11: {
- %79:bool = eq %rhs_1, 0i
- %80:bool = eq %lhs_1, -2147483648i
- %81:bool = eq %rhs_1, -1i
- %82:bool = and %80, %81
- %83:bool = or %79, %82
- %84:i32 = select %rhs_1, 1i, %83
- %85:i32 = let %84
- %86:i32 = div %lhs_1, %85
- %87:i32 = mul %86, %85
- %88:i32 = sub %lhs_1, %87
- ret %88
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %90:i32 = convert %value
- %91:bool = gte %value, -2147483648.0f
- %92:i32 = select -2147483648i, %90, %91
- %93:bool = lte %value, 2147483520.0f
- %94:i32 = select 2147483647i, %92, %93
- ret %94
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl
deleted file mode 100644
index 29ae266..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,173 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_71:ptr<function, i32, read_write> = var
- %x_71_phi:ptr<function, i32, read_write> = var
- %x_74_phi:ptr<function, i32, read_write> = var
- %9:vec4<f32> = load %gl_FragCoord
- %x_54:vec4<f32> = let %9
- %11:f32 = access %x_54, 0u
- %12:f32 = access %x_54, 1u
- %13:vec2<f32> = construct %11, %12
- %x_55:vec2<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_58:vec2<f32> = let %16
- %18:vec2<f32> = div %x_55, %x_58
- %19:vec2<f32> = mul %18, 8.0f
- %x_61:vec2<f32> = let %19
- %21:vec2<f32> = floor %x_61
- %x_62:vec2<f32> = let %21
- %23:f32 = access %x_62, 0u
- %24:i32 = call %tint_f32_to_i32, %23
- %26:i32 = mul %24, 8i
- %27:i32 = let %26
- %28:f32 = access %x_62, 1u
- %29:i32 = call %tint_f32_to_i32, %28
- %30:i32 = add %27, %29
- %x_69:i32 = let %30
- store %x_71_phi, 0i
- store %x_74_phi, %x_69
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_85:ptr<function, i32, read_write> = var
- %x_86:ptr<function, i32, read_write> = var
- %x_75_phi:ptr<function, i32, read_write> = var
- %35:i32 = load %x_71_phi
- store %x_71, %35
- %36:i32 = load %x_74_phi
- %x_74:i32 = let %36
- %38:bool = gt %x_74, 1i
- if %38 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %39:i32 = and %x_74, 1i
- %40:bool = eq %39, 1i
- if %40 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %41:i32 = mul 3i, %x_74
- %42:i32 = add %41, 1i
- store %x_85, %42
- %43:i32 = load %x_85
- store %x_75_phi, %43
- exit_if # if_2
- }
- $B8: { # false
- %44:i32 = call %tint_div_i32, %x_74, 2i
- store %x_86, %44
- %46:i32 = load %x_86
- store %x_75_phi, %46
- exit_if # if_2
- }
- }
- %47:i32 = load %x_75_phi
- %x_75:i32 = let %47
- continue # -> $B4
- }
- $B4: { # continuing
- %49:i32 = load %x_71
- %50:i32 = add %49, 1i
- %51:i32 = bitcast %50
- store %x_71_phi, %51
- store %x_74_phi, %x_75
- next_iteration # -> $B3
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %52:array<vec4<f32>, 16> = load %indexable
- %x_88:array<vec4<f32>, 16> = let %52
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_88
- %54:array<vec4<f32>, 16> = construct vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), %x_54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- %55:vec4<f32> = access %54, 1u
- %x_89:vec4<f32> = let %55
- %57:vec4<f32> = construct 0.0f, 8.0f, %x_55
- %58:vec4<f32> = let %57
- %59:vec4<f32> = construct %x_61, 0.5f, 1.0f
- %60:array<vec4<f32>, 16> = construct vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), %58, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), %59
- %x_90:array<vec4<f32>, 16> = let %60
- %62:i32 = load %x_71
- %63:i32 = call %tint_mod_i32, %62, 16i
- %65:i32 = bitcast %63
- %66:ptr<function, vec4<f32>, read_write> = access %indexable, %65
- %67:vec4<f32> = load %66
- %x_92:vec4<f32> = let %67
- store %x_GLF_color, %x_92
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B9: {
- store %gl_FragCoord, %gl_FragCoord_param
- %71:void = call %main_1
- %72:vec4<f32> = load %x_GLF_color
- %73:main_out = construct %72
- ret %73
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B10: {
- %76:bool = eq %rhs, 0i
- %77:bool = eq %lhs, -2147483648i
- %78:bool = eq %rhs, -1i
- %79:bool = and %77, %78
- %80:bool = or %76, %79
- %81:i32 = select %rhs, 1i, %80
- %82:i32 = div %lhs, %81
- ret %82
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B11: {
- %85:bool = eq %rhs_1, 0i
- %86:bool = eq %lhs_1, -2147483648i
- %87:bool = eq %rhs_1, -1i
- %88:bool = and %86, %87
- %89:bool = or %85, %88
- %90:i32 = select %rhs_1, 1i, %89
- %91:i32 = let %90
- %92:i32 = div %lhs_1, %91
- %93:i32 = mul %92, %91
- %94:i32 = sub %lhs_1, %93
- ret %94
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B12: {
- %96:i32 = convert %value
- %97:bool = gte %value, -2147483648.0f
- %98:i32 = select -2147483648i, %96, %97
- %99:bool = lte %value, 2147483520.0f
- %100:i32 = select 2147483647i, %98, %99
- ret %100
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl
deleted file mode 100644
index 546198e..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,212 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_77:ptr<function, vec2<i32>, read_write> = var
- %x_80:ptr<function, i32, read_write> = var
- %x_110:ptr<function, vec2<i32>, read_write> = var
- %x_111:ptr<function, vec2<i32>, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_116:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %13:vec2<f32> = swizzle %12, xy
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %16:vec2<f32> = div %13, %15
- %x_60:vec2<f32> = let %16
- %18:f32 = access %x_60, 0u
- %19:f32 = mul %18, 8.0f
- %20:i32 = call %tint_f32_to_i32, %19
- %x_63:i32 = let %20
- %23:f32 = access %x_60, 1u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_66:i32 = let %25
- %27:i32 = and %x_63, 5i
- %28:i32 = and %x_66, 10i
- %29:i32 = or %27, %28
- %30:i32 = mul %29, 8i
- %31:i32 = and %x_66, 5i
- %32:i32 = and %x_63, 10i
- %33:i32 = or %31, %32
- %34:i32 = add %30, %33
- %35:vec2<i32> = construct %34, 0i
- store %x_77, %35
- store %x_80, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_91:ptr<function, vec2<i32>, read_write> = var
- %x_92:ptr<function, vec2<i32>, read_write> = var
- %x_99:ptr<function, vec2<i32>, read_write> = var
- %x_100:ptr<function, vec2<i32>, read_write> = var
- %x_81:ptr<function, i32, read_write> = var
- %41:i32 = load %x_80
- %42:bool = lt %41, 100i
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:vec2<i32> = load %x_77
- store %x_92, %43
- %44:i32 = load_vector_element %x_77, 0u
- %45:bool = gt %44, 0i
- if %45 [t: $B7] { # if_2
- $B7: { # true
- %46:vec2<i32> = load %x_77
- store %x_91, %46
- %47:i32 = load_vector_element %x_77, 1u
- %48:i32 = sub %47, 1i
- store_vector_element %x_91, 1u, %48
- %49:vec2<i32> = load %x_91
- store %x_92, %49
- exit_if # if_2
- }
- }
- %50:vec2<i32> = load %x_92
- store %x_100, %50
- %51:i32 = load_vector_element %x_92, 0u
- %52:bool = lt %51, 0i
- if %52 [t: $B8] { # if_3
- $B8: { # true
- %53:vec2<i32> = load %x_92
- store %x_99, %53
- %54:i32 = load_vector_element %x_92, 1u
- %55:i32 = add %54, 1i
- store_vector_element %x_99, 1u, %55
- %56:vec2<i32> = load %x_99
- store %x_100, %56
- exit_if # if_3
- }
- }
- %57:vec2<i32> = load %x_100
- %x_78_1:ptr<function, vec2<i32>, read_write> = var, %57
- %59:i32 = load_vector_element %x_100, 0u
- %60:i32 = let %59
- %61:i32 = load_vector_element %x_100, 1u
- %62:i32 = call %tint_div_i32, %61, 2i
- %64:i32 = add %60, %62
- store_vector_element %x_78_1, 0u, %64
- %65:vec2<i32> = load %x_78_1
- %x_78:vec2<i32> = let %65
- continue # -> $B4
- }
- $B4: { # continuing
- %67:i32 = load %x_80
- %68:i32 = add %67, 1i
- store %x_81, %68
- store %x_77, %x_78
- %69:i32 = load %x_81
- store %x_80, %69
- next_iteration # -> $B3
- }
- }
- %70:i32 = load_vector_element %x_77, 0u
- %x_105:i32 = let %70
- %72:vec2<i32> = load %x_77
- store %x_111, %72
- %73:bool = lt %x_105, 0i
- if %73 [t: $B9] { # if_4
- $B9: { # true
- store %x_110, vec2<i32>(0i)
- %74:i32 = negation %x_105
- store_vector_element %x_110, 0u, %74
- %75:vec2<i32> = load %x_110
- store %x_111, %75
- exit_if # if_4
- }
- }
- %76:vec2<i32> = load %x_111
- store %x_113, %76
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_114:ptr<function, vec2<i32>, read_write> = var
- %78:i32 = load_vector_element %x_113, 0u
- store %x_116, %78
- %79:i32 = load %x_116
- %80:bool = gt %79, 15i
- if %80 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_114, vec2<i32>(0i)
- %81:i32 = load %x_116
- %82:i32 = sub %81, 16i
- store_vector_element %x_114, 0u, %82
- %83:vec2<i32> = load %x_114
- store %x_113, %83
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %84:i32 = load %x_116
- %85:ptr<function, vec4<f32>, read_write> = access %indexable, %84
- %86:vec4<f32> = load %85
- store %x_GLF_color, %86
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %89:void = call %main_1
- %90:vec4<f32> = load %x_GLF_color
- %91:main_out = construct %90
- ret %91
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %94:bool = eq %rhs, 0i
- %95:bool = eq %lhs, -2147483648i
- %96:bool = eq %rhs, -1i
- %97:bool = and %95, %96
- %98:bool = or %94, %97
- %99:i32 = select %rhs, 1i, %98
- %100:i32 = div %lhs, %99
- ret %100
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %102:i32 = convert %value
- %103:bool = gte %value, -2147483648.0f
- %104:i32 = select -2147483648i, %102, %103
- %105:bool = lte %value, 2147483520.0f
- %106:i32 = select 2147483647i, %104, %105
- ret %106
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl
deleted file mode 100644
index 37f898b..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,225 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_77:ptr<function, vec2<i32>, read_write> = var
- %x_110:ptr<function, vec2<i32>, read_write> = var
- %x_116:ptr<function, i32, read_write> = var
- %x_77_phi:ptr<function, vec2<i32>, read_write> = var
- %x_80_phi:ptr<function, i32, read_write> = var
- %x_111_phi:ptr<function, vec2<i32>, read_write> = var
- %x_113_phi:ptr<function, vec2<i32>, read_write> = var
- %13:vec4<f32> = load %gl_FragCoord
- %x_56:vec4<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_59:vec2<f32> = let %16
- %18:f32 = access %x_56, 0u
- %19:f32 = access %x_56, 1u
- %20:vec2<f32> = construct %18, %19
- %21:vec2<f32> = div %20, %x_59
- %x_60:vec2<f32> = let %21
- %23:f32 = access %x_60, 0u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_63:i32 = let %25
- %28:f32 = access %x_60, 1u
- %29:f32 = mul %28, 8.0f
- %30:i32 = call %tint_f32_to_i32, %29
- %x_66:i32 = let %30
- %32:i32 = and %x_63, 5i
- %33:i32 = and %x_66, 10i
- %34:i32 = or %32, %33
- %35:i32 = mul %34, 8i
- %36:i32 = and %x_66, 5i
- %37:i32 = and %x_63, 10i
- %38:i32 = or %36, %37
- %39:i32 = add %35, %38
- %40:vec2<i32> = construct %39, 0i
- %x_75:vec2<i32> = let %40
- store %x_77_phi, %x_75
- store %x_80_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_91:ptr<function, vec2<i32>, read_write> = var
- %x_99:ptr<function, vec2<i32>, read_write> = var
- %x_81:ptr<function, i32, read_write> = var
- %x_92_phi:ptr<function, vec2<i32>, read_write> = var
- %x_100_phi:ptr<function, vec2<i32>, read_write> = var
- %47:vec2<i32> = load %x_77_phi
- store %x_77, %47
- %48:i32 = load %x_80_phi
- %x_80:i32 = let %48
- %50:bool = lt %x_80, 100i
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:vec2<i32> = load %x_77
- store %x_92_phi, %51
- %52:i32 = load_vector_element %x_77, 0u
- %53:bool = gt %52, 0i
- if %53 [t: $B7] { # if_2
- $B7: { # true
- %54:vec2<i32> = load %x_77
- store %x_91, %54
- %55:i32 = load_vector_element %x_77, 1u
- %56:i32 = sub %55, 1i
- store_vector_element %x_91, 1u, %56
- %57:vec2<i32> = load %x_91
- store %x_92_phi, %57
- exit_if # if_2
- }
- }
- %58:vec2<i32> = load %x_92_phi
- %x_92:vec2<i32> = let %58
- store %x_100_phi, %x_92
- %60:i32 = access %x_92, 0u
- %61:bool = lt %60, 0i
- if %61 [t: $B8] { # if_3
- $B8: { # true
- store %x_99, %x_92
- %62:i32 = access %x_92, 1u
- %63:i32 = add %62, 1i
- store_vector_element %x_99, 1u, %63
- %64:vec2<i32> = load %x_99
- store %x_100_phi, %64
- exit_if # if_3
- }
- }
- %65:vec2<i32> = load %x_100_phi
- %x_100:vec2<i32> = let %65
- %x_78_1:ptr<function, vec2<i32>, read_write> = var, %x_100
- %68:i32 = access %x_100, 0u
- %69:i32 = access %x_100, 1u
- %70:i32 = call %tint_div_i32, %69, 2i
- %72:i32 = add %68, %70
- store_vector_element %x_78_1, 0u, %72
- %73:vec2<i32> = load %x_78_1
- %x_78:vec2<i32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_80, 1i
- store %x_81, %75
- store %x_77_phi, %x_78
- %76:i32 = load %x_81
- store %x_80_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:i32 = load_vector_element %x_77, 0u
- %x_105:i32 = let %77
- %79:vec2<i32> = load %x_77
- store %x_111_phi, %79
- %80:bool = lt %x_105, 0i
- if %80 [t: $B9] { # if_4
- $B9: { # true
- store %x_110, vec2<i32>(0i)
- %81:i32 = negation %x_105
- store_vector_element %x_110, 0u, %81
- %82:vec2<i32> = load %x_110
- store %x_111_phi, %82
- exit_if # if_4
- }
- }
- %83:vec2<i32> = load %x_111_phi
- %x_111:vec2<i32> = let %83
- store %x_113_phi, %x_111
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_114:ptr<function, vec2<i32>, read_write> = var
- %86:vec2<i32> = load %x_113_phi
- %x_113:vec2<i32> = let %86
- %88:i32 = access %x_113, 0u
- store %x_116, %88
- %89:i32 = load %x_116
- %90:bool = gt %89, 15i
- if %90 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_114, vec2<i32>(0i)
- %91:i32 = load %x_116
- %92:i32 = sub %91, 16i
- %93:i32 = bitcast %92
- store_vector_element %x_114, 0u, %93
- %94:vec2<i32> = load %x_114
- store %x_113_phi, %94
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %95:i32 = load %x_116
- %96:ptr<function, vec4<f32>, read_write> = access %indexable, %95
- %97:vec4<f32> = load %96
- %x_121:vec4<f32> = let %97
- store %x_GLF_color, %x_121
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %101:void = call %main_1
- %102:vec4<f32> = load %x_GLF_color
- %103:main_out = construct %102
- ret %103
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %106:bool = eq %rhs, 0i
- %107:bool = eq %lhs, -2147483648i
- %108:bool = eq %rhs, -1i
- %109:bool = and %107, %108
- %110:bool = or %106, %109
- %111:i32 = select %rhs, 1i, %110
- %112:i32 = div %lhs, %111
- ret %112
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %114:i32 = convert %value
- %115:bool = gte %value, -2147483648.0f
- %116:i32 = select -2147483648i, %114, %115
- %117:bool = lte %value, 2147483520.0f
- %118:i32 = select 2147483647i, %116, %117
- ret %118
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl
deleted file mode 100644
index 2d0afab3..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,216 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_83:ptr<function, i32, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_114:ptr<function, vec2<i32>, read_write> = var
- %x_116:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %13:vec2<f32> = swizzle %12, xy
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %16:vec2<f32> = div %13, %15
- %x_63:vec2<f32> = let %16
- %18:f32 = access %x_63, 0u
- %19:f32 = mul %18, 8.0f
- %20:i32 = call %tint_f32_to_i32, %19
- %x_66:i32 = let %20
- %23:f32 = access %x_63, 1u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_69:i32 = let %25
- %27:i32 = and %x_66, 5i
- %28:i32 = and %x_69, 10i
- %29:i32 = or %27, %28
- %30:i32 = mul %29, 8i
- %31:i32 = and %x_69, 5i
- %32:i32 = and %x_66, 10i
- %33:i32 = or %31, %32
- %34:i32 = add %30, %33
- %35:vec2<i32> = construct %34, 0i
- store %x_80, %35
- store %x_83, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_95:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_103:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %41:i32 = load %x_83
- %42:bool = lt %41, 100i
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:vec2<i32> = load %x_80
- store %x_95, %43
- %44:i32 = load_vector_element %x_80, 0u
- %45:bool = gt %44, 0i
- if %45 [t: $B7] { # if_2
- $B7: { # true
- %46:vec2<i32> = load %x_80
- store %x_94, %46
- %47:i32 = load_vector_element %x_80, 1u
- %48:i32 = sub %47, 1i
- store_vector_element %x_94, 1u, %48
- %49:vec2<i32> = load %x_94
- store %x_95, %49
- exit_if # if_2
- }
- }
- %50:vec2<i32> = load %x_95
- store %x_103, %50
- %51:i32 = load_vector_element %x_95, 0u
- %52:bool = lt %51, 0i
- if %52 [t: $B8] { # if_3
- $B8: { # true
- %53:vec2<i32> = load %x_95
- store %x_102, %53
- %54:i32 = load_vector_element %x_95, 1u
- %55:i32 = add %54, 1i
- store_vector_element %x_102, 1u, %55
- %56:vec2<i32> = load %x_102
- store %x_103, %56
- exit_if # if_3
- }
- }
- %57:vec2<i32> = load %x_103
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %57
- %59:i32 = load_vector_element %x_103, 0u
- %60:i32 = let %59
- %61:i32 = load_vector_element %x_103, 1u
- %62:i32 = call %tint_div_i32, %61, 2i
- %64:i32 = add %60, %62
- store_vector_element %x_81_1, 0u, %64
- %65:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %65
- continue # -> $B4
- }
- $B4: { # continuing
- %67:i32 = load %x_83
- %68:i32 = add %67, 1i
- store %x_84, %68
- store %x_80, %x_81
- %69:i32 = load %x_84
- store %x_83, %69
- next_iteration # -> $B3
- }
- }
- %70:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %70
- %72:vec2<i32> = load %x_80
- store %x_114, %72
- %73:bool = lt %x_108, 0i
- if %73 [t: $B9] { # if_4
- $B9: { # true
- store %x_113, vec2<i32>(0i)
- %74:i32 = negation %x_108
- store_vector_element %x_113, 0u, %74
- %75:vec2<i32> = load %x_113
- store %x_114, %75
- exit_if # if_4
- }
- }
- %76:vec2<i32> = load %x_114
- store %x_116, %76
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %78:i32 = load_vector_element %x_116, 0u
- store %x_119, %78
- %79:i32 = load %x_119
- %80:bool = gt %79, 15i
- if %80 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_117, vec2<i32>(0i)
- %81:i32 = load %x_119
- %82:i32 = sub %81, 16i
- store_vector_element %x_117, 0u, %82
- %83:vec2<i32> = load %x_117
- store %x_116, %83
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %84:array<vec4<f32>, 16> = load %indexable
- %x_123:array<vec4<f32>, 16> = let %84
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_123
- %86:i32 = load %x_119
- %87:ptr<function, vec4<f32>, read_write> = access %indexable, %86
- %88:vec4<f32> = load %87
- store %x_GLF_color, %88
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %91:void = call %main_1
- %92:vec4<f32> = load %x_GLF_color
- %93:main_out = construct %92
- ret %93
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %96:bool = eq %rhs, 0i
- %97:bool = eq %lhs, -2147483648i
- %98:bool = eq %rhs, -1i
- %99:bool = and %97, %98
- %100:bool = or %96, %99
- %101:i32 = select %rhs, 1i, %100
- %102:i32 = div %lhs, %101
- ret %102
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %104:i32 = convert %value
- %105:bool = gte %value, -2147483648.0f
- %106:i32 = select -2147483648i, %104, %105
- %107:bool = lte %value, 2147483520.0f
- %108:i32 = select 2147483647i, %106, %107
- ret %108
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl
deleted file mode 100644
index 11e508b..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,229 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %x_80_phi:ptr<function, vec2<i32>, read_write> = var
- %x_83_phi:ptr<function, i32, read_write> = var
- %x_114_phi:ptr<function, vec2<i32>, read_write> = var
- %x_116_phi:ptr<function, vec2<i32>, read_write> = var
- %13:vec4<f32> = load %gl_FragCoord
- %x_59:vec4<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_62:vec2<f32> = let %16
- %18:f32 = access %x_59, 0u
- %19:f32 = access %x_59, 1u
- %20:vec2<f32> = construct %18, %19
- %21:vec2<f32> = div %20, %x_62
- %x_63:vec2<f32> = let %21
- %23:f32 = access %x_63, 0u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_66:i32 = let %25
- %28:f32 = access %x_63, 1u
- %29:f32 = mul %28, 8.0f
- %30:i32 = call %tint_f32_to_i32, %29
- %x_69:i32 = let %30
- %32:i32 = and %x_66, 5i
- %33:i32 = and %x_69, 10i
- %34:i32 = or %32, %33
- %35:i32 = mul %34, 8i
- %36:i32 = and %x_69, 5i
- %37:i32 = and %x_66, 10i
- %38:i32 = or %36, %37
- %39:i32 = add %35, %38
- %40:vec2<i32> = construct %39, 0i
- %x_78:vec2<i32> = let %40
- store %x_80_phi, %x_78
- store %x_83_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %x_95_phi:ptr<function, vec2<i32>, read_write> = var
- %x_103_phi:ptr<function, vec2<i32>, read_write> = var
- %47:vec2<i32> = load %x_80_phi
- store %x_80, %47
- %48:i32 = load %x_83_phi
- %x_83:i32 = let %48
- %50:bool = lt %x_83, 100i
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:vec2<i32> = load %x_80
- store %x_95_phi, %51
- %52:i32 = load_vector_element %x_80, 0u
- %53:bool = gt %52, 0i
- if %53 [t: $B7] { # if_2
- $B7: { # true
- %54:vec2<i32> = load %x_80
- store %x_94, %54
- %55:i32 = load_vector_element %x_80, 1u
- %56:i32 = sub %55, 1i
- store_vector_element %x_94, 1u, %56
- %57:vec2<i32> = load %x_94
- store %x_95_phi, %57
- exit_if # if_2
- }
- }
- %58:vec2<i32> = load %x_95_phi
- %x_95:vec2<i32> = let %58
- store %x_103_phi, %x_95
- %60:i32 = access %x_95, 0u
- %61:bool = lt %60, 0i
- if %61 [t: $B8] { # if_3
- $B8: { # true
- store %x_102, %x_95
- %62:i32 = access %x_95, 1u
- %63:i32 = add %62, 1i
- store_vector_element %x_102, 1u, %63
- %64:vec2<i32> = load %x_102
- store %x_103_phi, %64
- exit_if # if_3
- }
- }
- %65:vec2<i32> = load %x_103_phi
- %x_103:vec2<i32> = let %65
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
- %68:i32 = access %x_103, 0u
- %69:i32 = access %x_103, 1u
- %70:i32 = call %tint_div_i32, %69, 2i
- %72:i32 = add %68, %70
- store_vector_element %x_81_1, 0u, %72
- %73:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_83, 1i
- store %x_84, %75
- store %x_80_phi, %x_81
- %76:i32 = load %x_84
- store %x_83_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %77
- %79:vec2<i32> = load %x_80
- store %x_114_phi, %79
- %80:bool = lt %x_108, 0i
- if %80 [t: $B9] { # if_4
- $B9: { # true
- store %x_113, vec2<i32>(0i)
- %81:i32 = negation %x_108
- store_vector_element %x_113, 0u, %81
- %82:vec2<i32> = load %x_113
- store %x_114_phi, %82
- exit_if # if_4
- }
- }
- %83:vec2<i32> = load %x_114_phi
- %x_114:vec2<i32> = let %83
- store %x_116_phi, %x_114
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %86:vec2<i32> = load %x_116_phi
- %x_116:vec2<i32> = let %86
- %88:i32 = access %x_116, 0u
- store %x_119, %88
- %89:i32 = load %x_119
- %90:bool = gt %89, 15i
- if %90 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_117, vec2<i32>(0i)
- %91:i32 = load %x_119
- %92:i32 = sub %91, 16i
- %93:i32 = bitcast %92
- store_vector_element %x_117, 0u, %93
- %94:vec2<i32> = load %x_117
- store %x_116_phi, %94
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %95:array<vec4<f32>, 16> = load %indexable
- %x_123:array<vec4<f32>, 16> = let %95
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_123
- %97:i32 = load %x_119
- %98:ptr<function, vec4<f32>, read_write> = access %indexable, %97
- %99:vec4<f32> = load %98
- %x_125:vec4<f32> = let %99
- store %x_GLF_color, %x_125
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %103:void = call %main_1
- %104:vec4<f32> = load %x_GLF_color
- %105:main_out = construct %104
- ret %105
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %108:bool = eq %rhs, 0i
- %109:bool = eq %lhs, -2147483648i
- %110:bool = eq %rhs, -1i
- %111:bool = and %109, %110
- %112:bool = or %108, %111
- %113:i32 = select %rhs, 1i, %112
- %114:i32 = div %lhs, %113
- ret %114
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %116:i32 = convert %value
- %117:bool = gte %value, -2147483648.0f
- %118:i32 = select -2147483648i, %116, %117
- %119:bool = lte %value, 2147483520.0f
- %120:i32 = select 2147483647i, %118, %119
- ret %120
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl
deleted file mode 100644
index 7b6e195..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,214 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_76:ptr<function, vec2<i32>, read_write> = var
- %x_79:ptr<function, i32, read_write> = var
- %x_109:ptr<function, vec2<i32>, read_write> = var
- %x_110:ptr<function, vec2<i32>, read_write> = var
- %x_112:ptr<function, vec2<i32>, read_write> = var
- %x_115:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %13:vec2<f32> = swizzle %12, xy
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %16:vec2<f32> = div %13, %15
- %x_59:vec2<f32> = let %16
- %18:f32 = access %x_59, 0u
- %19:f32 = mul %18, 8.0f
- %20:i32 = call %tint_f32_to_i32, %19
- %x_62:i32 = let %20
- %23:f32 = access %x_59, 1u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_65:i32 = let %25
- %27:i32 = and %x_62, 5i
- %28:i32 = and %x_65, 10i
- %29:i32 = or %27, %28
- %30:i32 = mul %29, 8i
- %31:i32 = and %x_65, 5i
- %32:i32 = and %x_62, 10i
- %33:i32 = or %31, %32
- %34:i32 = add %30, %33
- %35:vec2<i32> = construct %34, 0i
- store %x_76, %35
- store %x_79, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_90:ptr<function, vec2<i32>, read_write> = var
- %x_91:ptr<function, vec2<i32>, read_write> = var
- %x_98:ptr<function, vec2<i32>, read_write> = var
- %x_99:ptr<function, vec2<i32>, read_write> = var
- %x_80:ptr<function, i32, read_write> = var
- %41:i32 = load %x_79
- %42:bool = lt %41, 100i
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:vec2<i32> = load %x_76
- store %x_91, %43
- %44:i32 = load_vector_element %x_76, 0u
- %45:bool = gt %44, 0i
- if %45 [t: $B7] { # if_2
- $B7: { # true
- %46:vec2<i32> = load %x_76
- store %x_90, %46
- %47:i32 = load_vector_element %x_76, 1u
- %48:i32 = sub %47, 1i
- store_vector_element %x_90, 1u, %48
- %49:vec2<i32> = load %x_90
- store %x_91, %49
- exit_if # if_2
- }
- }
- %50:vec2<i32> = load %x_91
- store %x_99, %50
- %51:i32 = load_vector_element %x_91, 0u
- %52:bool = lt %51, 0i
- if %52 [t: $B8] { # if_3
- $B8: { # true
- %53:vec2<i32> = load %x_91
- store %x_98, %53
- %54:i32 = load_vector_element %x_91, 1u
- %55:i32 = add %54, 1i
- store_vector_element %x_98, 1u, %55
- %56:vec2<i32> = load %x_98
- store %x_99, %56
- exit_if # if_3
- }
- }
- %57:vec2<i32> = load %x_99
- %x_77_1:ptr<function, vec2<i32>, read_write> = var, %57
- %59:i32 = load_vector_element %x_99, 0u
- %60:i32 = let %59
- %61:i32 = load_vector_element %x_99, 1u
- %62:i32 = call %tint_div_i32, %61, 2i
- %64:i32 = add %60, %62
- store_vector_element %x_77_1, 0u, %64
- %65:vec2<i32> = load %x_77_1
- %x_77:vec2<i32> = let %65
- continue # -> $B4
- }
- $B4: { # continuing
- %67:i32 = load %x_79
- %68:i32 = add %67, 1i
- store %x_80, %68
- store %x_76, %x_77
- %69:i32 = load %x_80
- store %x_79, %69
- next_iteration # -> $B3
- }
- }
- %70:i32 = load_vector_element %x_76, 0u
- %x_104:i32 = let %70
- %72:vec2<i32> = load %x_76
- store %x_110, %72
- %73:bool = lt %x_104, 0i
- if %73 [t: $B9] { # if_4
- $B9: { # true
- %74:vec2<i32> = load %x_76
- store %x_109, %74
- %75:i32 = negation %x_104
- store_vector_element %x_109, 0u, %75
- %76:vec2<i32> = load %x_109
- store %x_110, %76
- exit_if # if_4
- }
- }
- %77:vec2<i32> = load %x_110
- store %x_112, %77
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %79:i32 = load_vector_element %x_112, 0u
- store %x_115, %79
- %80:i32 = load %x_115
- %81:bool = gt %80, 15i
- if %81 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- %82:vec2<i32> = load %x_112
- store %x_113, %82
- %83:i32 = load %x_115
- %84:i32 = sub %83, 16i
- store_vector_element %x_113, 0u, %84
- %85:vec2<i32> = load %x_113
- store %x_112, %85
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %86:i32 = load %x_115
- %87:ptr<function, vec4<f32>, read_write> = access %indexable, %86
- %88:vec4<f32> = load %87
- store %x_GLF_color, %88
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %91:void = call %main_1
- %92:vec4<f32> = load %x_GLF_color
- %93:main_out = construct %92
- ret %93
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %96:bool = eq %rhs, 0i
- %97:bool = eq %lhs, -2147483648i
- %98:bool = eq %rhs, -1i
- %99:bool = and %97, %98
- %100:bool = or %96, %99
- %101:i32 = select %rhs, 1i, %100
- %102:i32 = div %lhs, %101
- ret %102
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %104:i32 = convert %value
- %105:bool = gte %value, -2147483648.0f
- %106:i32 = select -2147483648i, %104, %105
- %107:bool = lte %value, 2147483520.0f
- %108:i32 = select 2147483647i, %106, %107
- ret %108
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl
deleted file mode 100644
index f48bba4..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,226 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_76:ptr<function, vec2<i32>, read_write> = var
- %x_109:ptr<function, vec2<i32>, read_write> = var
- %x_115:ptr<function, i32, read_write> = var
- %x_76_phi:ptr<function, vec2<i32>, read_write> = var
- %x_79_phi:ptr<function, i32, read_write> = var
- %x_110_phi:ptr<function, vec2<i32>, read_write> = var
- %x_112_phi:ptr<function, vec2<i32>, read_write> = var
- %13:vec4<f32> = load %gl_FragCoord
- %x_55:vec4<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_58:vec2<f32> = let %16
- %18:f32 = access %x_55, 0u
- %19:f32 = access %x_55, 1u
- %20:vec2<f32> = construct %18, %19
- %21:vec2<f32> = div %20, %x_58
- %x_59:vec2<f32> = let %21
- %23:f32 = access %x_59, 0u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_62:i32 = let %25
- %28:f32 = access %x_59, 1u
- %29:f32 = mul %28, 8.0f
- %30:i32 = call %tint_f32_to_i32, %29
- %x_65:i32 = let %30
- %32:i32 = and %x_62, 5i
- %33:i32 = and %x_65, 10i
- %34:i32 = or %32, %33
- %35:i32 = mul %34, 8i
- %36:i32 = and %x_65, 5i
- %37:i32 = and %x_62, 10i
- %38:i32 = or %36, %37
- %39:i32 = add %35, %38
- %40:vec2<i32> = construct %39, 0i
- %x_74:vec2<i32> = let %40
- store %x_76_phi, %x_74
- store %x_79_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_90:ptr<function, vec2<i32>, read_write> = var
- %x_98:ptr<function, vec2<i32>, read_write> = var
- %x_80:ptr<function, i32, read_write> = var
- %x_91_phi:ptr<function, vec2<i32>, read_write> = var
- %x_99_phi:ptr<function, vec2<i32>, read_write> = var
- %47:vec2<i32> = load %x_76_phi
- store %x_76, %47
- %48:i32 = load %x_79_phi
- %x_79:i32 = let %48
- %50:bool = lt %x_79, 100i
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:vec2<i32> = load %x_76
- store %x_91_phi, %51
- %52:i32 = load_vector_element %x_76, 0u
- %53:bool = gt %52, 0i
- if %53 [t: $B7] { # if_2
- $B7: { # true
- %54:vec2<i32> = load %x_76
- store %x_90, %54
- %55:i32 = load_vector_element %x_76, 1u
- %56:i32 = sub %55, 1i
- store_vector_element %x_90, 1u, %56
- %57:vec2<i32> = load %x_90
- store %x_91_phi, %57
- exit_if # if_2
- }
- }
- %58:vec2<i32> = load %x_91_phi
- %x_91:vec2<i32> = let %58
- store %x_99_phi, %x_91
- %60:i32 = access %x_91, 0u
- %61:bool = lt %60, 0i
- if %61 [t: $B8] { # if_3
- $B8: { # true
- store %x_98, %x_91
- %62:i32 = access %x_91, 1u
- %63:i32 = add %62, 1i
- store_vector_element %x_98, 1u, %63
- %64:vec2<i32> = load %x_98
- store %x_99_phi, %64
- exit_if # if_3
- }
- }
- %65:vec2<i32> = load %x_99_phi
- %x_99:vec2<i32> = let %65
- %x_77_1:ptr<function, vec2<i32>, read_write> = var, %x_99
- %68:i32 = access %x_99, 0u
- %69:i32 = access %x_99, 1u
- %70:i32 = call %tint_div_i32, %69, 2i
- %72:i32 = add %68, %70
- store_vector_element %x_77_1, 0u, %72
- %73:vec2<i32> = load %x_77_1
- %x_77:vec2<i32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_79, 1i
- store %x_80, %75
- store %x_76_phi, %x_77
- %76:i32 = load %x_80
- store %x_79_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:i32 = load_vector_element %x_76, 0u
- %x_104:i32 = let %77
- %79:vec2<i32> = load %x_76
- store %x_110_phi, %79
- %80:bool = lt %x_104, 0i
- if %80 [t: $B9] { # if_4
- $B9: { # true
- %81:vec2<i32> = load %x_76
- store %x_109, %81
- %82:i32 = negation %x_104
- store_vector_element %x_109, 0u, %82
- %83:vec2<i32> = load %x_109
- store %x_110_phi, %83
- exit_if # if_4
- }
- }
- %84:vec2<i32> = load %x_110_phi
- %x_110:vec2<i32> = let %84
- store %x_112_phi, %x_110
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %87:vec2<i32> = load %x_112_phi
- %x_112:vec2<i32> = let %87
- %89:i32 = access %x_112, 0u
- store %x_115, %89
- %90:i32 = load %x_115
- %91:bool = gt %90, 15i
- if %91 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_113, %x_112
- %92:i32 = load %x_115
- %93:i32 = sub %92, 16i
- %94:i32 = bitcast %93
- store_vector_element %x_113, 0u, %94
- %95:vec2<i32> = load %x_113
- store %x_112_phi, %95
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %96:i32 = load %x_115
- %97:ptr<function, vec4<f32>, read_write> = access %indexable, %96
- %98:vec4<f32> = load %97
- %x_120:vec4<f32> = let %98
- store %x_GLF_color, %x_120
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %102:void = call %main_1
- %103:vec4<f32> = load %x_GLF_color
- %104:main_out = construct %103
- ret %104
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %107:bool = eq %rhs, 0i
- %108:bool = eq %lhs, -2147483648i
- %109:bool = eq %rhs, -1i
- %110:bool = and %108, %109
- %111:bool = or %107, %110
- %112:i32 = select %rhs, 1i, %111
- %113:i32 = div %lhs, %112
- ret %113
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %115:i32 = convert %value
- %116:bool = gte %value, -2147483648.0f
- %117:i32 = select -2147483648i, %115, %116
- %118:bool = lte %value, 2147483520.0f
- %119:i32 = select 2147483647i, %117, %118
- ret %119
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl
deleted file mode 100644
index e4a6707..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,218 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_83:ptr<function, i32, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_114:ptr<function, vec2<i32>, read_write> = var
- %x_116:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %13:vec2<f32> = swizzle %12, xy
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %16:vec2<f32> = div %13, %15
- %x_62:vec2<f32> = let %16
- %18:f32 = access %x_62, 0u
- %19:f32 = mul %18, 8.0f
- %20:i32 = call %tint_f32_to_i32, %19
- %x_65:i32 = let %20
- %23:f32 = access %x_62, 1u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_69:i32 = let %25
- %27:i32 = and %x_65, 5i
- %28:i32 = and %x_69, 10i
- %29:i32 = or %27, %28
- %30:i32 = mul %29, 8i
- %31:i32 = and %x_69, 5i
- %32:i32 = and %x_65, 10i
- %33:i32 = or %31, %32
- %34:i32 = add %30, %33
- %35:vec2<i32> = construct %34, 0i
- store %x_80, %35
- store %x_83, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_95:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_103:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %41:i32 = load %x_83
- %42:bool = lt %41, 100i
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:vec2<i32> = load %x_80
- store %x_95, %43
- %44:i32 = load_vector_element %x_80, 0u
- %45:bool = gt %44, 0i
- if %45 [t: $B7] { # if_2
- $B7: { # true
- %46:vec2<i32> = load %x_80
- store %x_94, %46
- %47:i32 = load_vector_element %x_80, 1u
- %48:i32 = sub %47, 1i
- store_vector_element %x_94, 1u, %48
- %49:vec2<i32> = load %x_94
- store %x_95, %49
- exit_if # if_2
- }
- }
- %50:vec2<i32> = load %x_95
- store %x_103, %50
- %51:i32 = load_vector_element %x_95, 0u
- %52:bool = lt %51, 0i
- if %52 [t: $B8] { # if_3
- $B8: { # true
- %53:vec2<i32> = load %x_95
- store %x_102, %53
- %54:i32 = load_vector_element %x_95, 1u
- %55:i32 = add %54, 1i
- store_vector_element %x_102, 1u, %55
- %56:vec2<i32> = load %x_102
- store %x_103, %56
- exit_if # if_3
- }
- }
- %57:vec2<i32> = load %x_103
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %57
- %59:i32 = load_vector_element %x_103, 0u
- %60:i32 = let %59
- %61:i32 = load_vector_element %x_103, 1u
- %62:i32 = call %tint_div_i32, %61, 2i
- %64:i32 = add %60, %62
- store_vector_element %x_81_1, 0u, %64
- %65:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %65
- continue # -> $B4
- }
- $B4: { # continuing
- %67:i32 = load %x_83
- %68:i32 = add %67, 1i
- store %x_84, %68
- store %x_80, %x_81
- %69:i32 = load %x_84
- store %x_83, %69
- next_iteration # -> $B3
- }
- }
- %70:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %70
- %72:vec2<i32> = load %x_80
- store %x_114, %72
- %73:bool = lt %x_108, 0i
- if %73 [t: $B9] { # if_4
- $B9: { # true
- %74:vec2<i32> = load %x_80
- store %x_113, %74
- %75:i32 = negation %x_108
- store_vector_element %x_113, 0u, %75
- %76:vec2<i32> = load %x_113
- store %x_114, %76
- exit_if # if_4
- }
- }
- %77:vec2<i32> = load %x_114
- store %x_116, %77
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %79:i32 = load_vector_element %x_116, 0u
- store %x_119, %79
- %80:i32 = load %x_119
- %81:bool = gt %80, 15i
- if %81 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- %82:vec2<i32> = load %x_116
- store %x_117, %82
- %83:i32 = load %x_119
- %84:i32 = sub %83, 16i
- store_vector_element %x_117, 0u, %84
- %85:vec2<i32> = load %x_117
- store %x_116, %85
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %86:array<vec4<f32>, 16> = load %indexable
- %x_124:array<vec4<f32>, 16> = let %86
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_124
- %88:i32 = load %x_119
- %89:ptr<function, vec4<f32>, read_write> = access %indexable, %88
- %90:vec4<f32> = load %89
- store %x_GLF_color, %90
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %93:void = call %main_1
- %94:vec4<f32> = load %x_GLF_color
- %95:main_out = construct %94
- ret %95
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %98:bool = eq %rhs, 0i
- %99:bool = eq %lhs, -2147483648i
- %100:bool = eq %rhs, -1i
- %101:bool = and %99, %100
- %102:bool = or %98, %101
- %103:i32 = select %rhs, 1i, %102
- %104:i32 = div %lhs, %103
- ret %104
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %106:i32 = convert %value
- %107:bool = gte %value, -2147483648.0f
- %108:i32 = select -2147483648i, %106, %107
- %109:bool = lte %value, 2147483520.0f
- %110:i32 = select 2147483647i, %108, %109
- ret %110
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl
deleted file mode 100644
index a4cf65d..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,230 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %x_80_phi:ptr<function, vec2<i32>, read_write> = var
- %x_83_phi:ptr<function, i32, read_write> = var
- %x_114_phi:ptr<function, vec2<i32>, read_write> = var
- %x_116_phi:ptr<function, vec2<i32>, read_write> = var
- %13:vec4<f32> = load %gl_FragCoord
- %x_58:vec4<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_61:vec2<f32> = let %16
- %18:f32 = access %x_58, 0u
- %19:f32 = access %x_58, 1u
- %20:vec2<f32> = construct %18, %19
- %21:vec2<f32> = div %20, %x_61
- %x_62:vec2<f32> = let %21
- %23:f32 = access %x_62, 0u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_65:i32 = let %25
- %28:f32 = access %x_62, 1u
- %29:f32 = mul %28, 8.0f
- %30:i32 = call %tint_f32_to_i32, %29
- %x_69:i32 = let %30
- %32:i32 = and %x_65, 5i
- %33:i32 = and %x_69, 10i
- %34:i32 = or %32, %33
- %35:i32 = mul %34, 8i
- %36:i32 = and %x_69, 5i
- %37:i32 = and %x_65, 10i
- %38:i32 = or %36, %37
- %39:i32 = add %35, %38
- %40:vec2<i32> = construct %39, 0i
- %x_78:vec2<i32> = let %40
- store %x_80_phi, %x_78
- store %x_83_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %x_95_phi:ptr<function, vec2<i32>, read_write> = var
- %x_103_phi:ptr<function, vec2<i32>, read_write> = var
- %47:vec2<i32> = load %x_80_phi
- store %x_80, %47
- %48:i32 = load %x_83_phi
- %x_83:i32 = let %48
- %50:bool = lt %x_83, 100i
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:vec2<i32> = load %x_80
- store %x_95_phi, %51
- %52:i32 = load_vector_element %x_80, 0u
- %53:bool = gt %52, 0i
- if %53 [t: $B7] { # if_2
- $B7: { # true
- %54:vec2<i32> = load %x_80
- store %x_94, %54
- %55:i32 = load_vector_element %x_80, 1u
- %56:i32 = sub %55, 1i
- store_vector_element %x_94, 1u, %56
- %57:vec2<i32> = load %x_94
- store %x_95_phi, %57
- exit_if # if_2
- }
- }
- %58:vec2<i32> = load %x_95_phi
- %x_95:vec2<i32> = let %58
- store %x_103_phi, %x_95
- %60:i32 = access %x_95, 0u
- %61:bool = lt %60, 0i
- if %61 [t: $B8] { # if_3
- $B8: { # true
- store %x_102, %x_95
- %62:i32 = access %x_95, 1u
- %63:i32 = add %62, 1i
- store_vector_element %x_102, 1u, %63
- %64:vec2<i32> = load %x_102
- store %x_103_phi, %64
- exit_if # if_3
- }
- }
- %65:vec2<i32> = load %x_103_phi
- %x_103:vec2<i32> = let %65
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
- %68:i32 = access %x_103, 0u
- %69:i32 = access %x_103, 1u
- %70:i32 = call %tint_div_i32, %69, 2i
- %72:i32 = add %68, %70
- store_vector_element %x_81_1, 0u, %72
- %73:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_83, 1i
- store %x_84, %75
- store %x_80_phi, %x_81
- %76:i32 = load %x_84
- store %x_83_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %77
- %79:vec2<i32> = load %x_80
- store %x_114_phi, %79
- %80:bool = lt %x_108, 0i
- if %80 [t: $B9] { # if_4
- $B9: { # true
- %81:vec2<i32> = load %x_80
- store %x_113, %81
- %82:i32 = negation %x_108
- store_vector_element %x_113, 0u, %82
- %83:vec2<i32> = load %x_113
- store %x_114_phi, %83
- exit_if # if_4
- }
- }
- %84:vec2<i32> = load %x_114_phi
- %x_114:vec2<i32> = let %84
- store %x_116_phi, %x_114
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %87:vec2<i32> = load %x_116_phi
- %x_116:vec2<i32> = let %87
- %89:i32 = access %x_116, 0u
- store %x_119, %89
- %90:i32 = load %x_119
- %91:bool = gt %90, 15i
- if %91 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_117, %x_116
- %92:i32 = load %x_119
- %93:i32 = sub %92, 16i
- %94:i32 = bitcast %93
- store_vector_element %x_117, 0u, %94
- %95:vec2<i32> = load %x_117
- store %x_116_phi, %95
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %96:array<vec4<f32>, 16> = load %indexable
- %x_124:array<vec4<f32>, 16> = let %96
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
- store %indexable, %x_124
- %98:i32 = load %x_119
- %99:ptr<function, vec4<f32>, read_write> = access %indexable, %98
- %100:vec4<f32> = load %99
- %x_125:vec4<f32> = let %100
- store %x_GLF_color, %x_125
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %104:void = call %main_1
- %105:vec4<f32> = load %x_GLF_color
- %106:main_out = construct %105
- ret %106
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %109:bool = eq %rhs, 0i
- %110:bool = eq %lhs, -2147483648i
- %111:bool = eq %rhs, -1i
- %112:bool = and %110, %111
- %113:bool = or %109, %112
- %114:i32 = select %rhs, 1i, %113
- %115:i32 = div %lhs, %114
- ret %115
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %117:i32 = convert %value
- %118:bool = gte %value, -2147483648.0f
- %119:i32 = select -2147483648i, %117, %118
- %120:bool = lte %value, 2147483520.0f
- %121:i32 = select 2147483647i, %119, %120
- ret %121
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl
deleted file mode 100644
index 10601ee..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,214 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_83:ptr<function, i32, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_114:ptr<function, vec2<i32>, read_write> = var
- %x_116:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %12:vec4<f32> = load %gl_FragCoord
- %13:vec2<f32> = swizzle %12, xy
- %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %15:vec2<f32> = load %14
- %16:vec2<f32> = div %13, %15
- %x_62:vec2<f32> = let %16
- %18:f32 = access %x_62, 0u
- %19:f32 = mul %18, 8.0f
- %20:i32 = call %tint_f32_to_i32, %19
- %x_65:i32 = let %20
- %23:f32 = access %x_62, 1u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_69:i32 = let %25
- %27:i32 = and %x_65, 5i
- %28:i32 = and %x_69, 10i
- %29:i32 = or %27, %28
- %30:i32 = mul %29, 8i
- %31:i32 = and %x_69, 5i
- %32:i32 = and %x_65, 10i
- %33:i32 = or %31, %32
- %34:i32 = add %30, %33
- %35:vec2<i32> = construct %34, 0i
- store %x_80, %35
- store %x_83, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_95:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_103:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %41:i32 = load %x_83
- %42:bool = lt %41, 100i
- if %42 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %43:vec2<i32> = load %x_80
- store %x_95, %43
- %44:i32 = load_vector_element %x_80, 0u
- %45:bool = gt %44, 0i
- if %45 [t: $B7] { # if_2
- $B7: { # true
- %46:vec2<i32> = load %x_80
- store %x_94, %46
- %47:i32 = load_vector_element %x_80, 1u
- %48:i32 = sub %47, 1i
- store_vector_element %x_94, 1u, %48
- %49:vec2<i32> = load %x_94
- store %x_95, %49
- exit_if # if_2
- }
- }
- %50:vec2<i32> = load %x_95
- store %x_103, %50
- %51:i32 = load_vector_element %x_95, 0u
- %52:bool = lt %51, 0i
- if %52 [t: $B8] { # if_3
- $B8: { # true
- %53:vec2<i32> = load %x_95
- store %x_102, %53
- %54:i32 = load_vector_element %x_95, 1u
- %55:i32 = add %54, 1i
- store_vector_element %x_102, 1u, %55
- %56:vec2<i32> = load %x_102
- store %x_103, %56
- exit_if # if_3
- }
- }
- %57:vec2<i32> = load %x_103
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %57
- %59:i32 = load_vector_element %x_103, 0u
- %60:i32 = let %59
- %61:i32 = load_vector_element %x_103, 1u
- %62:i32 = call %tint_div_i32, %61, 2i
- %64:i32 = add %60, %62
- store_vector_element %x_81_1, 0u, %64
- %65:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %65
- continue # -> $B4
- }
- $B4: { # continuing
- %67:i32 = load %x_83
- %68:i32 = add %67, 1i
- store %x_84, %68
- store %x_80, %x_81
- %69:i32 = load %x_84
- store %x_83, %69
- next_iteration # -> $B3
- }
- }
- %70:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %70
- %72:vec2<i32> = load %x_80
- store %x_114, %72
- %73:bool = lt %x_108, 0i
- if %73 [t: $B9] { # if_4
- $B9: { # true
- %74:vec2<i32> = load %x_80
- store %x_113, %74
- %75:i32 = negation %x_108
- store_vector_element %x_113, 0u, %75
- %76:vec2<i32> = load %x_113
- store %x_114, %76
- exit_if # if_4
- }
- }
- %77:vec2<i32> = load %x_114
- store %x_116, %77
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %79:i32 = load_vector_element %x_116, 0u
- store %x_119, %79
- %80:i32 = load %x_119
- %81:bool = gt %80, 15i
- if %81 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- %82:vec2<i32> = load %x_116
- store %x_117, %82
- %83:i32 = load %x_119
- %84:i32 = sub %83, 16i
- store_vector_element %x_117, 0u, %84
- %85:vec2<i32> = load %x_117
- store %x_116, %85
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %86:i32 = load %x_119
- %87:ptr<function, vec4<f32>, read_write> = access %indexable, %86
- %88:vec4<f32> = load %87
- store %x_GLF_color, %88
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %91:void = call %main_1
- %92:vec4<f32> = load %x_GLF_color
- %93:main_out = construct %92
- ret %93
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %96:bool = eq %rhs, 0i
- %97:bool = eq %lhs, -2147483648i
- %98:bool = eq %rhs, -1i
- %99:bool = and %97, %98
- %100:bool = or %96, %99
- %101:i32 = select %rhs, 1i, %100
- %102:i32 = div %lhs, %101
- ret %102
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %104:i32 = convert %value
- %105:bool = gte %value, -2147483648.0f
- %106:i32 = select -2147483648i, %104, %105
- %107:bool = lte %value, 2147483520.0f
- %108:i32 = select 2147483647i, %106, %107
- ret %108
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl
deleted file mode 100644
index 91749ee1..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,226 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_80:ptr<function, vec2<i32>, read_write> = var
- %x_113:ptr<function, vec2<i32>, read_write> = var
- %x_119:ptr<function, i32, read_write> = var
- %x_80_phi:ptr<function, vec2<i32>, read_write> = var
- %x_83_phi:ptr<function, i32, read_write> = var
- %x_114_phi:ptr<function, vec2<i32>, read_write> = var
- %x_116_phi:ptr<function, vec2<i32>, read_write> = var
- %13:vec4<f32> = load %gl_FragCoord
- %x_58:vec4<f32> = let %13
- %15:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %16:vec2<f32> = load %15
- %x_61:vec2<f32> = let %16
- %18:f32 = access %x_58, 0u
- %19:f32 = access %x_58, 1u
- %20:vec2<f32> = construct %18, %19
- %21:vec2<f32> = div %20, %x_61
- %x_62:vec2<f32> = let %21
- %23:f32 = access %x_62, 0u
- %24:f32 = mul %23, 8.0f
- %25:i32 = call %tint_f32_to_i32, %24
- %x_65:i32 = let %25
- %28:f32 = access %x_62, 1u
- %29:f32 = mul %28, 8.0f
- %30:i32 = call %tint_f32_to_i32, %29
- %x_69:i32 = let %30
- %32:i32 = and %x_65, 5i
- %33:i32 = and %x_69, 10i
- %34:i32 = or %32, %33
- %35:i32 = mul %34, 8i
- %36:i32 = and %x_69, 5i
- %37:i32 = and %x_65, 10i
- %38:i32 = or %36, %37
- %39:i32 = add %35, %38
- %40:vec2<i32> = construct %39, 0i
- %x_78:vec2<i32> = let %40
- store %x_80_phi, %x_78
- store %x_83_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_94:ptr<function, vec2<i32>, read_write> = var
- %x_102:ptr<function, vec2<i32>, read_write> = var
- %x_84:ptr<function, i32, read_write> = var
- %x_95_phi:ptr<function, vec2<i32>, read_write> = var
- %x_103_phi:ptr<function, vec2<i32>, read_write> = var
- %47:vec2<i32> = load %x_80_phi
- store %x_80, %47
- %48:i32 = load %x_83_phi
- %x_83:i32 = let %48
- %50:bool = lt %x_83, 100i
- if %50 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %51:vec2<i32> = load %x_80
- store %x_95_phi, %51
- %52:i32 = load_vector_element %x_80, 0u
- %53:bool = gt %52, 0i
- if %53 [t: $B7] { # if_2
- $B7: { # true
- %54:vec2<i32> = load %x_80
- store %x_94, %54
- %55:i32 = load_vector_element %x_80, 1u
- %56:i32 = sub %55, 1i
- store_vector_element %x_94, 1u, %56
- %57:vec2<i32> = load %x_94
- store %x_95_phi, %57
- exit_if # if_2
- }
- }
- %58:vec2<i32> = load %x_95_phi
- %x_95:vec2<i32> = let %58
- store %x_103_phi, %x_95
- %60:i32 = access %x_95, 0u
- %61:bool = lt %60, 0i
- if %61 [t: $B8] { # if_3
- $B8: { # true
- store %x_102, %x_95
- %62:i32 = access %x_95, 1u
- %63:i32 = add %62, 1i
- store_vector_element %x_102, 1u, %63
- %64:vec2<i32> = load %x_102
- store %x_103_phi, %64
- exit_if # if_3
- }
- }
- %65:vec2<i32> = load %x_103_phi
- %x_103:vec2<i32> = let %65
- %x_81_1:ptr<function, vec2<i32>, read_write> = var, %x_103
- %68:i32 = access %x_103, 0u
- %69:i32 = access %x_103, 1u
- %70:i32 = call %tint_div_i32, %69, 2i
- %72:i32 = add %68, %70
- store_vector_element %x_81_1, 0u, %72
- %73:vec2<i32> = load %x_81_1
- %x_81:vec2<i32> = let %73
- continue # -> $B4
- }
- $B4: { # continuing
- %75:i32 = add %x_83, 1i
- store %x_84, %75
- store %x_80_phi, %x_81
- %76:i32 = load %x_84
- store %x_83_phi, %76
- next_iteration # -> $B3
- }
- }
- %77:i32 = load_vector_element %x_80, 0u
- %x_108:i32 = let %77
- %79:vec2<i32> = load %x_80
- store %x_114_phi, %79
- %80:bool = lt %x_108, 0i
- if %80 [t: $B9] { # if_4
- $B9: { # true
- %81:vec2<i32> = load %x_80
- store %x_113, %81
- %82:i32 = negation %x_108
- store_vector_element %x_113, 0u, %82
- %83:vec2<i32> = load %x_113
- store %x_114_phi, %83
- exit_if # if_4
- }
- }
- %84:vec2<i32> = load %x_114_phi
- %x_114:vec2<i32> = let %84
- store %x_116_phi, %x_114
- loop [b: $B10, c: $B11] { # loop_2
- $B10: { # body
- %x_117:ptr<function, vec2<i32>, read_write> = var
- %87:vec2<i32> = load %x_116_phi
- %x_116:vec2<i32> = let %87
- %89:i32 = access %x_116, 0u
- store %x_119, %89
- %90:i32 = load %x_119
- %91:bool = gt %90, 15i
- if %91 [t: $B12, f: $B13] { # if_5
- $B12: { # true
- exit_if # if_5
- }
- $B13: { # false
- exit_loop # loop_2
- }
- }
- continue # -> $B11
- }
- $B11: { # continuing
- store %x_117, %x_116
- %92:i32 = load %x_119
- %93:i32 = sub %92, 16i
- %94:i32 = bitcast %93
- store_vector_element %x_117, 0u, %94
- %95:vec2<i32> = load %x_117
- store %x_116_phi, %95
- next_iteration # -> $B10
- }
- }
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %96:i32 = load %x_119
- %97:ptr<function, vec4<f32>, read_write> = access %indexable, %96
- %98:vec4<f32> = load %97
- %x_124:vec4<f32> = let %98
- store %x_GLF_color, %x_124
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B14: {
- store %gl_FragCoord, %gl_FragCoord_param
- %102:void = call %main_1
- %103:vec4<f32> = load %x_GLF_color
- %104:main_out = construct %103
- ret %104
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B15: {
- %107:bool = eq %rhs, 0i
- %108:bool = eq %lhs, -2147483648i
- %109:bool = eq %rhs, -1i
- %110:bool = and %108, %109
- %111:bool = or %107, %110
- %112:i32 = select %rhs, 1i, %111
- %113:i32 = div %lhs, %112
- ret %113
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B16: {
- %115:i32 = convert %value
- %116:bool = gte %value, -2147483648.0f
- %117:i32 = select -2147483648i, %115, %116
- %118:bool = lte %value, 2147483520.0f
- %119:i32 = select 2147483647i, %117, %118
- ret %119
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl
deleted file mode 100644
index 04428d8..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,203 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_95:ptr<function, vec4<f32>, read_write> = var
- %x_98:ptr<function, i32, read_write> = var
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %12:array<vec4<f32>, 8> = load %x_81
- %x_86:array<vec4<f32>, 8> = let %12
- %14:vec4<f32> = load %gl_FragCoord
- %15:vec2<f32> = swizzle %14, xy
- %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %17:vec2<f32> = load %16
- %18:vec2<f32> = div %15, %17
- %19:vec2<f32> = mul %18, 32.0f
- %20:vec2<f32> = floor %19
- %x_93:vec2<f32> = let %20
- store %x_95, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_98, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_127:ptr<function, bool, read_write> = var
- %x_143:ptr<function, vec4<f32>, read_write> = var
- %x_96:ptr<function, vec4<f32>, read_write> = var
- %x_99:ptr<function, i32, read_write> = var
- %26:i32 = load %x_98
- %27:bool = lt %26, 8i
- if %27 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_104:ptr<function, vec4<f32>, read_write> = var
- store %x_82, %x_86
- %29:i32 = load %x_98
- %30:ptr<function, vec4<f32>, read_write> = access %x_82, %29
- %31:vec4<f32> = load %30
- store %x_104, %31
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %32:f32 = access %x_93, 0u
- %x_107:f32 = let %32
- %34:f32 = load_vector_element %x_104, 0u
- %x_108:f32 = let %34
- %36:bool = lt %x_107, %x_108
- if %36 [t: $B8] { # if_2
- $B8: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %37:f32 = access %x_93, 1u
- %x_112:f32 = let %37
- %39:f32 = load_vector_element %x_104, 1u
- %x_113:f32 = let %39
- %41:bool = lt %x_112, %x_113
- if %41 [t: $B9] { # if_3
- $B9: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %42:f32 = load_vector_element %x_104, 2u
- %43:f32 = add %x_108, %42
- %44:bool = gt %x_107, %43
- if %44 [t: $B10] { # if_4
- $B10: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %45:f32 = load_vector_element %x_104, 3u
- %46:f32 = add %x_113, %45
- %47:bool = gt %x_112, %46
- if %47 [t: $B11] { # if_5
- $B11: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- store %x_127, true
- exit_switch # switch_1
- }
- }
- %48:vec4<f32> = load %x_95
- store %x_96, %48
- %49:bool = load %x_127
- if %49 [t: $B12] { # if_6
- $B12: { # true
- store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %50:i32 = load %x_98
- %51:ptr<function, vec4<f32>, read_write> = access %x_83, %50
- %52:f32 = load_vector_element %51, 0u
- %x_131:f32 = let %52
- store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %54:i32 = load %x_98
- %55:ptr<function, vec4<f32>, read_write> = access %x_84, %54
- %56:f32 = load_vector_element %55, 1u
- %x_134:f32 = let %56
- %58:array<vec4<f32>, 8> = load %x_81
- %x_135:array<vec4<f32>, 8> = let %58
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- store %x_81, %x_135
- store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %60:i32 = call %tint_f32_to_i32, %x_131
- %62:i32 = let %60
- %63:i32 = call %tint_f32_to_i32, %x_134
- %64:i32 = mul %62, %63
- %65:i32 = load %x_98
- %66:i32 = mul %65, 9i
- %67:i32 = add %64, %66
- %68:i32 = add %67, 11i
- %69:i32 = call %tint_mod_i32, %68, 16i
- %71:ptr<function, vec4<f32>, read_write> = access %x_85, %69
- %72:vec4<f32> = load %71
- store %x_143, %72
- %73:vec4<f32> = load %x_143
- store %x_96, %73
- exit_if # if_6
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %74:i32 = load %x_98
- %75:i32 = add %74, 1i
- store %x_99, %75
- %76:vec4<f32> = load %x_96
- store %x_95, %76
- %77:i32 = load %x_99
- store %x_98, %77
- next_iteration # -> $B3
- }
- }
- %78:vec4<f32> = load %x_95
- store %x_GLF_color, %78
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %81:void = call %main_1
- %82:vec4<f32> = load %x_GLF_color
- %83:main_out = construct %82
- ret %83
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %86:bool = eq %rhs, 0i
- %87:bool = eq %lhs, -2147483648i
- %88:bool = eq %rhs, -1i
- %89:bool = and %87, %88
- %90:bool = or %86, %89
- %91:i32 = select %rhs, 1i, %90
- %92:i32 = let %91
- %93:i32 = div %lhs, %92
- %94:i32 = mul %93, %92
- %95:i32 = sub %lhs, %94
- ret %95
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %97:i32 = convert %value
- %98:bool = gte %value, -2147483648.0f
- %99:i32 = select -2147483648i, %97, %98
- %100:bool = lte %value, 2147483520.0f
- %101:i32 = select 2147483647i, %99, %100
- ret %101
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl
deleted file mode 100644
index 4811209..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,208 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_95:ptr<function, vec4<f32>, read_write> = var
- %x_95_phi:ptr<function, vec4<f32>, read_write> = var
- %x_98_phi:ptr<function, i32, read_write> = var
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %13:array<vec4<f32>, 8> = load %x_81
- %x_86:array<vec4<f32>, 8> = let %13
- %15:vec4<f32> = load %gl_FragCoord
- %x_87:vec4<f32> = let %15
- %17:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %18:vec2<f32> = load %17
- %x_90:vec2<f32> = let %18
- %20:f32 = access %x_87, 0u
- %21:f32 = access %x_87, 1u
- %22:vec2<f32> = construct %20, %21
- %23:vec2<f32> = div %22, %x_90
- %24:vec2<f32> = mul %23, 32.0f
- %25:vec2<f32> = floor %24
- %x_93:vec2<f32> = let %25
- store %x_95_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_98_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_143:ptr<function, vec4<f32>, read_write> = var
- %x_99:ptr<function, i32, read_write> = var
- %x_127_phi:ptr<function, bool, read_write> = var
- %x_96_phi:ptr<function, vec4<f32>, read_write> = var
- %31:vec4<f32> = load %x_95_phi
- store %x_95, %31
- %32:i32 = load %x_98_phi
- %x_98:i32 = let %32
- %34:bool = lt %x_98, 8i
- if %34 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_104:ptr<function, vec4<f32>, read_write> = var
- store %x_82, %x_86
- %36:ptr<function, vec4<f32>, read_write> = access %x_82, %x_98
- %37:vec4<f32> = load %36
- store %x_104, %37
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %38:f32 = access %x_93, 0u
- %x_107:f32 = let %38
- %40:f32 = load_vector_element %x_104, 0u
- %x_108:f32 = let %40
- %42:bool = lt %x_107, %x_108
- if %42 [t: $B8] { # if_2
- $B8: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %43:f32 = access %x_93, 1u
- %x_112:f32 = let %43
- %45:f32 = load_vector_element %x_104, 1u
- %x_113:f32 = let %45
- %47:bool = lt %x_112, %x_113
- if %47 [t: $B9] { # if_3
- $B9: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %48:f32 = load_vector_element %x_104, 2u
- %49:f32 = add %x_108, %48
- %50:bool = gt %x_107, %49
- if %50 [t: $B10] { # if_4
- $B10: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %51:f32 = load_vector_element %x_104, 3u
- %52:f32 = add %x_113, %51
- %53:bool = gt %x_112, %52
- if %53 [t: $B11] { # if_5
- $B11: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- store %x_127_phi, true
- exit_switch # switch_1
- }
- }
- %54:bool = load %x_127_phi
- %x_127:bool = let %54
- %56:vec4<f32> = load %x_95
- store %x_96_phi, %56
- if %x_127 [t: $B12] { # if_6
- $B12: { # true
- store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %57:ptr<function, vec4<f32>, read_write> = access %x_83, %x_98
- %58:f32 = load_vector_element %57, 0u
- %x_131:f32 = let %58
- store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %60:ptr<function, vec4<f32>, read_write> = access %x_84, %x_98
- %61:f32 = load_vector_element %60, 1u
- %x_134:f32 = let %61
- %63:array<vec4<f32>, 8> = load %x_81
- %x_135:array<vec4<f32>, 8> = let %63
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- store %x_81, %x_135
- store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %65:i32 = call %tint_f32_to_i32, %x_131
- %67:i32 = let %65
- %68:i32 = call %tint_f32_to_i32, %x_134
- %69:i32 = mul %67, %68
- %70:i32 = mul %x_98, 9i
- %71:i32 = add %69, %70
- %72:i32 = add %71, 11i
- %73:i32 = call %tint_mod_i32, %72, 16i
- %75:ptr<function, vec4<f32>, read_write> = access %x_85, %73
- %76:vec4<f32> = load %75
- store %x_143, %76
- %77:vec4<f32> = load %x_143
- store %x_96_phi, %77
- exit_if # if_6
- }
- }
- %78:vec4<f32> = load %x_96_phi
- %x_96:vec4<f32> = let %78
- continue # -> $B4
- }
- $B4: { # continuing
- %80:i32 = add %x_98, 1i
- store %x_99, %80
- store %x_95_phi, %x_96
- %81:i32 = load %x_99
- store %x_98_phi, %81
- next_iteration # -> $B3
- }
- }
- %82:vec4<f32> = load %x_95
- store %x_GLF_color, %82
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %85:void = call %main_1
- %86:vec4<f32> = load %x_GLF_color
- %87:main_out = construct %86
- ret %87
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %90:bool = eq %rhs, 0i
- %91:bool = eq %lhs, -2147483648i
- %92:bool = eq %rhs, -1i
- %93:bool = and %91, %92
- %94:bool = or %90, %93
- %95:i32 = select %rhs, 1i, %94
- %96:i32 = let %95
- %97:i32 = div %lhs, %96
- %98:i32 = mul %97, %96
- %99:i32 = sub %lhs, %98
- ret %99
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %101:i32 = convert %value
- %102:bool = gte %value, -2147483648.0f
- %103:i32 = select -2147483648i, %101, %102
- %104:bool = lte %value, 2147483520.0f
- %105:i32 = select 2147483647i, %103, %104
- ret %105
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl
deleted file mode 100644
index 3e3d461..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,199 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_95:ptr<function, vec4<f32>, read_write> = var
- %x_98:ptr<function, i32, read_write> = var
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %12:array<vec4<f32>, 8> = load %x_81
- %x_86:array<vec4<f32>, 8> = let %12
- %14:vec4<f32> = load %gl_FragCoord
- %15:vec2<f32> = swizzle %14, xy
- %16:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %17:vec2<f32> = load %16
- %18:vec2<f32> = div %15, %17
- %19:vec2<f32> = mul %18, 32.0f
- %20:vec2<f32> = floor %19
- %x_93:vec2<f32> = let %20
- store %x_95, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_98, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_127:ptr<function, bool, read_write> = var
- %x_142:ptr<function, vec4<f32>, read_write> = var
- %x_96:ptr<function, vec4<f32>, read_write> = var
- %x_99:ptr<function, i32, read_write> = var
- %26:i32 = load %x_98
- %27:bool = lt %26, 8i
- if %27 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_104:ptr<function, vec4<f32>, read_write> = var
- store %x_82, %x_86
- %29:i32 = load %x_98
- %30:ptr<function, vec4<f32>, read_write> = access %x_82, %29
- %31:vec4<f32> = load %30
- store %x_104, %31
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %32:f32 = access %x_93, 0u
- %x_107:f32 = let %32
- %34:f32 = load_vector_element %x_104, 0u
- %x_108:f32 = let %34
- %36:bool = lt %x_107, %x_108
- if %36 [t: $B8] { # if_2
- $B8: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %37:f32 = access %x_93, 1u
- %x_112:f32 = let %37
- %39:f32 = load_vector_element %x_104, 1u
- %x_113:f32 = let %39
- %41:bool = lt %x_112, %x_113
- if %41 [t: $B9] { # if_3
- $B9: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %42:f32 = load_vector_element %x_104, 2u
- %43:f32 = add %x_108, %42
- %44:bool = gt %x_107, %43
- if %44 [t: $B10] { # if_4
- $B10: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- %45:f32 = load_vector_element %x_104, 3u
- %46:f32 = add %x_113, %45
- %47:bool = gt %x_112, %46
- if %47 [t: $B11] { # if_5
- $B11: { # true
- store %x_127, false
- exit_switch # switch_1
- }
- }
- store %x_127, true
- exit_switch # switch_1
- }
- }
- %48:vec4<f32> = load %x_95
- store %x_96, %48
- %49:bool = load %x_127
- if %49 [t: $B12] { # if_6
- $B12: { # true
- store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %50:i32 = load %x_98
- %51:ptr<function, vec4<f32>, read_write> = access %x_83, %50
- %52:f32 = load_vector_element %51, 0u
- %x_131:f32 = let %52
- store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %54:i32 = load %x_98
- %55:ptr<function, vec4<f32>, read_write> = access %x_84, %54
- %56:f32 = load_vector_element %55, 1u
- %x_134:f32 = let %56
- store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %58:i32 = call %tint_f32_to_i32, %x_131
- %60:i32 = let %58
- %61:i32 = call %tint_f32_to_i32, %x_134
- %62:i32 = mul %60, %61
- %63:i32 = load %x_98
- %64:i32 = mul %63, 9i
- %65:i32 = add %62, %64
- %66:i32 = add %65, 11i
- %67:i32 = call %tint_mod_i32, %66, 16i
- %69:ptr<function, vec4<f32>, read_write> = access %x_85, %67
- %70:vec4<f32> = load %69
- store %x_142, %70
- %71:vec4<f32> = load %x_142
- store %x_96, %71
- exit_if # if_6
- }
- }
- continue # -> $B4
- }
- $B4: { # continuing
- %72:i32 = load %x_98
- %73:i32 = add %72, 1i
- store %x_99, %73
- %74:vec4<f32> = load %x_96
- store %x_95, %74
- %75:i32 = load %x_99
- store %x_98, %75
- next_iteration # -> $B3
- }
- }
- %76:vec4<f32> = load %x_95
- store %x_GLF_color, %76
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %79:void = call %main_1
- %80:vec4<f32> = load %x_GLF_color
- %81:main_out = construct %80
- ret %81
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %84:bool = eq %rhs, 0i
- %85:bool = eq %lhs, -2147483648i
- %86:bool = eq %rhs, -1i
- %87:bool = and %85, %86
- %88:bool = or %84, %87
- %89:i32 = select %rhs, 1i, %88
- %90:i32 = let %89
- %91:i32 = div %lhs, %90
- %92:i32 = mul %91, %90
- %93:i32 = sub %lhs, %92
- ret %93
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %95:i32 = convert %value
- %96:bool = gte %value, -2147483648.0f
- %97:i32 = select -2147483648i, %95, %96
- %98:bool = lte %value, 2147483520.0f
- %99:i32 = select 2147483647i, %97, %98
- ret %99
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl
deleted file mode 100644
index a5d0340..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,204 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_81:ptr<function, array<vec4<f32>, 8>, read_write> = var, array<vec4<f32>, 8>(vec4<f32>(0.0f))
- %x_82:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_83:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_84:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %x_85:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %x_95:ptr<function, vec4<f32>, read_write> = var
- %x_95_phi:ptr<function, vec4<f32>, read_write> = var
- %x_98_phi:ptr<function, i32, read_write> = var
- store %x_81, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %13:array<vec4<f32>, 8> = load %x_81
- %x_86:array<vec4<f32>, 8> = let %13
- %15:vec4<f32> = load %gl_FragCoord
- %x_87:vec4<f32> = let %15
- %17:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
- %18:vec2<f32> = load %17
- %x_90:vec2<f32> = let %18
- %20:f32 = access %x_87, 0u
- %21:f32 = access %x_87, 1u
- %22:vec2<f32> = construct %20, %21
- %23:vec2<f32> = div %22, %x_90
- %24:vec2<f32> = mul %23, 32.0f
- %25:vec2<f32> = floor %24
- %x_93:vec2<f32> = let %25
- store %x_95_phi, vec4<f32>(0.5f, 0.5f, 1.0f, 1.0f)
- store %x_98_phi, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %x_142:ptr<function, vec4<f32>, read_write> = var
- %x_99:ptr<function, i32, read_write> = var
- %x_127_phi:ptr<function, bool, read_write> = var
- %x_96_phi:ptr<function, vec4<f32>, read_write> = var
- %31:vec4<f32> = load %x_95_phi
- store %x_95, %31
- %32:i32 = load %x_98_phi
- %x_98:i32 = let %32
- %34:bool = lt %x_98, 8i
- if %34 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %x_104:ptr<function, vec4<f32>, read_write> = var
- store %x_82, %x_86
- %36:ptr<function, vec4<f32>, read_write> = access %x_82, %x_98
- %37:vec4<f32> = load %36
- store %x_104, %37
- switch 0u [c: (default, $B7)] { # switch_1
- $B7: { # case
- %38:f32 = access %x_93, 0u
- %x_107:f32 = let %38
- %40:f32 = load_vector_element %x_104, 0u
- %x_108:f32 = let %40
- %42:bool = lt %x_107, %x_108
- if %42 [t: $B8] { # if_2
- $B8: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %43:f32 = access %x_93, 1u
- %x_112:f32 = let %43
- %45:f32 = load_vector_element %x_104, 1u
- %x_113:f32 = let %45
- %47:bool = lt %x_112, %x_113
- if %47 [t: $B9] { # if_3
- $B9: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %48:f32 = load_vector_element %x_104, 2u
- %49:f32 = add %x_108, %48
- %50:bool = gt %x_107, %49
- if %50 [t: $B10] { # if_4
- $B10: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- %51:f32 = load_vector_element %x_104, 3u
- %52:f32 = add %x_113, %51
- %53:bool = gt %x_112, %52
- if %53 [t: $B11] { # if_5
- $B11: { # true
- store %x_127_phi, false
- exit_switch # switch_1
- }
- }
- store %x_127_phi, true
- exit_switch # switch_1
- }
- }
- %54:bool = load %x_127_phi
- %x_127:bool = let %54
- %56:vec4<f32> = load %x_95
- store %x_96_phi, %56
- if %x_127 [t: $B12] { # if_6
- $B12: { # true
- store %x_83, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %57:ptr<function, vec4<f32>, read_write> = access %x_83, %x_98
- %58:f32 = load_vector_element %57, 0u
- %x_131:f32 = let %58
- store %x_84, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %60:ptr<function, vec4<f32>, read_write> = access %x_84, %x_98
- %61:f32 = load_vector_element %60, 1u
- %x_134:f32 = let %61
- store %x_85, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %63:i32 = call %tint_f32_to_i32, %x_131
- %65:i32 = let %63
- %66:i32 = call %tint_f32_to_i32, %x_134
- %67:i32 = mul %65, %66
- %68:i32 = mul %x_98, 9i
- %69:i32 = add %67, %68
- %70:i32 = add %69, 11i
- %71:i32 = call %tint_mod_i32, %70, 16i
- %73:ptr<function, vec4<f32>, read_write> = access %x_85, %71
- %74:vec4<f32> = load %73
- store %x_142, %74
- %75:vec4<f32> = load %x_142
- store %x_96_phi, %75
- exit_if # if_6
- }
- }
- %76:vec4<f32> = load %x_96_phi
- %x_96:vec4<f32> = let %76
- continue # -> $B4
- }
- $B4: { # continuing
- %78:i32 = add %x_98, 1i
- store %x_99, %78
- store %x_95_phi, %x_96
- %79:i32 = load %x_99
- store %x_98_phi, %79
- next_iteration # -> $B3
- }
- }
- %80:vec4<f32> = load %x_95
- store %x_GLF_color, %80
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B13: {
- store %gl_FragCoord, %gl_FragCoord_param
- %83:void = call %main_1
- %84:vec4<f32> = load %x_GLF_color
- %85:main_out = construct %84
- ret %85
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B14: {
- %88:bool = eq %rhs, 0i
- %89:bool = eq %lhs, -2147483648i
- %90:bool = eq %rhs, -1i
- %91:bool = and %89, %90
- %92:bool = or %88, %91
- %93:i32 = select %rhs, 1i, %92
- %94:i32 = let %93
- %95:i32 = div %lhs, %94
- %96:i32 = mul %95, %94
- %97:i32 = sub %lhs, %96
- ret %97
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B15: {
- %99:i32 = convert %value
- %100:bool = gte %value, -2147483648.0f
- %101:i32 = select -2147483648i, %99, %100
- %102:bool = lte %value, 2147483520.0f
- %103:i32 = select 2147483647i, %101, %102
- ret %103
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl
deleted file mode 100644
index 21e6e74..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,477 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: QuicksortObject = struct @align(4) {
- numbers:array<i32, 10> @offset(0)
-}
-
-BST = struct @align(4) {
- data:i32 @offset(0)
- leftIndex:i32 @offset(4)
- rightIndex:i32 @offset(8)
-}
-
-buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %obj:ptr<private, QuicksortObject, read_write> = var
- %tree:ptr<private, array<BST, 10>, read_write> = var
- %x_50:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%node:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void {
- $B2: {
- %8:ptr<function, i32, read_write> = access %node, 0u
- %9:i32 = load %data
- store %8, %9
- %10:ptr<function, i32, read_write> = access %node, 1u
- store %10, -1i
- %11:ptr<function, i32, read_write> = access %node, 2u
- store %11, -1i
- ret
- }
-}
-%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void {
- $B3: {
- %baseIndex:ptr<function, i32, read_write> = var
- %param:ptr<function, BST, read_write> = var
- %param_1:ptr<function, i32, read_write> = var
- %param_2:ptr<function, BST, read_write> = var
- %param_3:ptr<function, i32, read_write> = var
- store %baseIndex, 0i
- loop [b: $B4, c: $B5] { # loop_1
- $B4: { # body
- %20:i32 = load %baseIndex
- %21:i32 = load %treeIndex
- %22:bool = lte %20, %21
- if %22 [t: $B6, f: $B7] { # if_1
- $B6: { # true
- exit_if # if_1
- }
- $B7: { # false
- exit_loop # loop_1
- }
- }
- %23:i32 = load %data_1
- %24:i32 = load %baseIndex
- %25:ptr<private, i32, read_write> = access %tree, %24, 0u
- %26:i32 = load %25
- %27:bool = lte %23, %26
- if %27 [t: $B8, f: $B9] { # if_2
- $B8: { # true
- %28:i32 = load %baseIndex
- %29:ptr<private, i32, read_write> = access %tree, %28, 1u
- %30:i32 = load %29
- %31:bool = eq %30, -1i
- if %31 [t: $B10, f: $B11] { # if_3
- $B10: { # true
- %32:i32 = load %baseIndex
- %x_236:i32 = let %32
- %34:ptr<private, i32, read_write> = access %tree, %x_236, 1u
- %35:i32 = load %treeIndex
- store %34, %35
- %36:i32 = load %treeIndex
- %x_239:i32 = let %36
- %38:ptr<private, BST, read_write> = access %tree, %x_239
- %39:BST = load %38
- store %param, %39
- %40:i32 = load %data_1
- store %param_1, %40
- %41:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
- %42:ptr<private, BST, read_write> = access %tree, %x_239
- %43:BST = load %param
- store %42, %43
- ret
- }
- $B11: { # false
- %44:i32 = load %baseIndex
- %45:ptr<private, i32, read_write> = access %tree, %44, 1u
- %46:i32 = load %45
- store %baseIndex, %46
- continue # -> $B5
- }
- }
- exit_if # if_2
- }
- $B9: { # false
- %47:i32 = load %baseIndex
- %48:ptr<private, i32, read_write> = access %tree, %47, 2u
- %49:i32 = load %48
- %50:bool = eq %49, -1i
- if %50 [t: $B12, f: $B13] { # if_4
- $B12: { # true
- %51:i32 = load %baseIndex
- %x_256:i32 = let %51
- %53:ptr<private, i32, read_write> = access %tree, %x_256, 2u
- %54:i32 = load %treeIndex
- store %53, %54
- %55:i32 = load %treeIndex
- %x_259:i32 = let %55
- %57:ptr<private, BST, read_write> = access %tree, %x_259
- %58:BST = load %57
- store %param_2, %58
- %59:i32 = load %data_1
- store %param_3, %59
- %60:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
- %61:ptr<private, BST, read_write> = access %tree, %x_259
- %62:BST = load %param_2
- store %61, %62
- ret
- }
- $B13: { # false
- %63:i32 = load %baseIndex
- %64:ptr<private, i32, read_write> = access %tree, %63, 2u
- %65:i32 = load %64
- store %baseIndex, %65
- continue # -> $B5
- }
- }
- exit_if # if_2
- }
- }
- unreachable
- }
- $B5: { # continuing
- next_iteration # -> $B4
- }
- }
- ret
- }
-}
-%identity_i1_ = func(%a:ptr<function, i32, read_write>):i32 {
- $B14: {
- %68:i32 = load %a
- %x_202:i32 = let %68
- %70:ptr<private, i32, read_write> = access %obj, 0u, %x_202
- %71:i32 = load %a
- store %70, %71
- %72:ptr<private, i32, read_write> = access %obj, 0u, 2i
- %73:i32 = load %72
- %x_206:i32 = let %73
- ret %x_206
- }
-}
-%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 {
- $B15: {
- %index:ptr<function, i32, read_write> = var
- %currentNode:ptr<function, BST, read_write> = var
- %x_270:ptr<function, i32, read_write> = var
- store %index, 0i
- loop [b: $B16, c: $B17] { # loop_2
- $B16: { # body
- %80:i32 = load %index
- %81:bool = neq %80, -1i
- if %81 [t: $B18, f: $B19] { # if_5
- $B18: { # true
- exit_if # if_5
- }
- $B19: { # false
- exit_loop # loop_2
- }
- }
- %82:i32 = load %index
- %83:ptr<private, BST, read_write> = access %tree, %82
- %84:BST = load %83
- store %currentNode, %84
- %85:ptr<function, i32, read_write> = access %currentNode, 0u
- %86:i32 = load %85
- %87:i32 = load %t
- %88:bool = eq %86, %87
- if %88 [t: $B20] { # if_6
- $B20: { # true
- %89:i32 = load %t
- %x_287:i32 = let %89
- ret %x_287
- }
- }
- %91:i32 = load %t
- %92:ptr<function, i32, read_write> = access %currentNode, 0u
- %93:i32 = load %92
- %94:bool = gt %91, %93
- if %94 [t: $B21, f: $B22] { # if_7
- $B21: { # true
- %95:ptr<function, i32, read_write> = access %currentNode, 2u
- %96:i32 = load %95
- store %x_270, %96
- exit_if # if_7
- }
- $B22: { # false
- %97:ptr<function, i32, read_write> = access %currentNode, 1u
- %98:i32 = load %97
- store %x_270, %98
- exit_if # if_7
- }
- }
- %99:i32 = load %x_270
- store %index, %99
- continue # -> $B17
- }
- $B17: { # continuing
- next_iteration # -> $B16
- }
- }
- ret -1i
- }
-}
-%main_1 = func():void {
- $B23: {
- %treeIndex_1:ptr<function, i32, read_write> = var
- %param_4:ptr<function, BST, read_write> = var
- %param_5:ptr<function, i32, read_write> = var
- %param_6:ptr<function, i32, read_write> = var
- %param_7:ptr<function, i32, read_write> = var
- %param_8:ptr<function, i32, read_write> = var
- %param_9:ptr<function, i32, read_write> = var
- %param_10:ptr<function, i32, read_write> = var
- %param_11:ptr<function, i32, read_write> = var
- %param_12:ptr<function, i32, read_write> = var
- %param_13:ptr<function, i32, read_write> = var
- %param_14:ptr<function, i32, read_write> = var
- %param_15:ptr<function, i32, read_write> = var
- %param_16:ptr<function, i32, read_write> = var
- %param_17:ptr<function, i32, read_write> = var
- %param_18:ptr<function, i32, read_write> = var
- %param_19:ptr<function, i32, read_write> = var
- %param_20:ptr<function, i32, read_write> = var
- %param_21:ptr<function, i32, read_write> = var
- %param_22:ptr<function, i32, read_write> = var
- %param_23:ptr<function, i32, read_write> = var
- %pp:ptr<function, i32, read_write> = var
- %looplimiter0:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %param_24:ptr<function, i32, read_write> = var
- %count:ptr<function, i32, read_write> = var
- %i_1:ptr<function, i32, read_write> = var
- %result:ptr<function, i32, read_write> = var
- %param_25:ptr<function, i32, read_write> = var
- store %treeIndex_1, 0i
- %130:ptr<private, BST, read_write> = access %tree, 0i
- %131:BST = load %130
- store %param_4, %131
- store %param_5, 9i
- %132:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
- %133:ptr<private, BST, read_write> = access %tree, 0i
- %134:BST = load %param_4
- store %133, %134
- %135:i32 = load %treeIndex_1
- %136:i32 = add %135, 1i
- store %treeIndex_1, %136
- %137:i32 = load %treeIndex_1
- store %param_6, %137
- store %param_7, 5i
- %138:void = call %insert_i1_i1_, %param_6, %param_7
- %139:i32 = load %treeIndex_1
- %140:i32 = add %139, 1i
- store %treeIndex_1, %140
- %141:i32 = load %treeIndex_1
- store %param_8, %141
- store %param_9, 12i
- %142:void = call %insert_i1_i1_, %param_8, %param_9
- %143:i32 = load %treeIndex_1
- %144:i32 = add %143, 1i
- store %treeIndex_1, %144
- %145:i32 = load %treeIndex_1
- store %param_10, %145
- store %param_11, 15i
- %146:void = call %insert_i1_i1_, %param_10, %param_11
- %147:i32 = load %treeIndex_1
- %148:i32 = add %147, 1i
- store %treeIndex_1, %148
- %149:i32 = load %treeIndex_1
- store %param_12, %149
- store %param_13, 7i
- %150:void = call %insert_i1_i1_, %param_12, %param_13
- %151:i32 = load %treeIndex_1
- %152:i32 = add %151, 1i
- store %treeIndex_1, %152
- %153:i32 = load %treeIndex_1
- store %param_14, %153
- store %param_15, 8i
- %154:void = call %insert_i1_i1_, %param_14, %param_15
- %155:i32 = load %treeIndex_1
- %156:i32 = add %155, 1i
- store %treeIndex_1, %156
- %157:i32 = load %treeIndex_1
- store %param_16, %157
- store %param_17, 2i
- %158:void = call %insert_i1_i1_, %param_16, %param_17
- %159:i32 = load %treeIndex_1
- %160:i32 = add %159, 1i
- store %treeIndex_1, %160
- %161:i32 = load %treeIndex_1
- store %param_18, %161
- store %param_19, 6i
- %162:void = call %insert_i1_i1_, %param_18, %param_19
- %163:i32 = load %treeIndex_1
- %164:i32 = add %163, 1i
- store %treeIndex_1, %164
- %165:i32 = load %treeIndex_1
- store %param_20, %165
- store %param_21, 17i
- %166:void = call %insert_i1_i1_, %param_20, %param_21
- %167:i32 = load %treeIndex_1
- %168:i32 = add %167, 1i
- store %treeIndex_1, %168
- %169:i32 = load %treeIndex_1
- store %param_22, %169
- store %param_23, 13i
- %170:void = call %insert_i1_i1_, %param_22, %param_23
- store %pp, 0i
- store %looplimiter0, 0i
- store %i, 0i
- loop [b: $B24, c: $B25] { # loop_3
- $B24: { # body
- %171:i32 = load %i
- %172:bool = lt %171, 10000i
- if %172 [t: $B26, f: $B27] { # if_8
- $B26: { # true
- exit_if # if_8
- }
- $B27: { # false
- exit_loop # loop_3
- }
- }
- %173:i32 = load %looplimiter0
- %174:i32 = let %173
- %175:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
- %176:f32 = load_vector_element %175, 1u
- %177:i32 = call %tint_f32_to_i32, %176
- %179:bool = gte %174, %177
- if %179 [t: $B28] { # if_9
- $B28: { # true
- %180:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
- %181:f32 = load_vector_element %180, 1u
- %182:i32 = call %tint_f32_to_i32, %181
- %183:i32 = add 1i, %182
- store %param_24, %183
- %184:i32 = call %identity_i1_, %param_24
- %x_159:i32 = let %184
- store %pp, %x_159
- exit_loop # loop_3
- }
- }
- %186:i32 = load %looplimiter0
- %187:i32 = add %186, 1i
- store %looplimiter0, %187
- continue # -> $B25
- }
- $B25: { # continuing
- %188:i32 = load %i
- %189:i32 = add %188, 1i
- store %i, %189
- next_iteration # -> $B24
- }
- }
- %190:i32 = load %pp
- %191:bool = neq %190, 2i
- if %191 [t: $B29] { # if_10
- $B29: { # true
- ret
- }
- }
- store %count, 0i
- store %i_1, 0i
- loop [b: $B30, c: $B31] { # loop_4
- $B30: { # body
- %192:i32 = load %i_1
- %193:bool = lt %192, 20i
- if %193 [t: $B32, f: $B33] { # if_11
- $B32: { # true
- exit_if # if_11
- }
- $B33: { # false
- exit_loop # loop_4
- }
- }
- %194:i32 = load %i_1
- store %param_25, %194
- %195:i32 = call %search_i1_, %param_25
- %x_176:i32 = let %195
- store %result, %x_176
- %197:i32 = load %i_1
- %x_177:i32 = let %197
- switch %x_177 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, $B34), c: (default, $B35)] { # switch_1
- $B34: { # case
- %199:i32 = load %result
- %200:i32 = load %i_1
- %201:bool = eq %199, %200
- if %201 [t: $B36] { # if_12
- $B36: { # true
- %202:i32 = load %count
- %203:i32 = add %202, 1i
- store %count, %203
- exit_if # if_12
- }
- }
- exit_switch # switch_1
- }
- $B35: { # case
- %204:i32 = load %result
- %205:bool = eq %204, -1i
- if %205 [t: $B37] { # if_13
- $B37: { # true
- %206:i32 = load %count
- %207:i32 = add %206, 1i
- store %count, %207
- exit_if # if_13
- }
- }
- exit_switch # switch_1
- }
- }
- continue # -> $B31
- }
- $B31: { # continuing
- %208:i32 = load %i_1
- %209:i32 = add %208, 1i
- store %i_1, %209
- next_iteration # -> $B30
- }
- }
- %210:i32 = load %count
- %211:bool = eq %210, 20i
- if %211 [t: $B38, f: $B39] { # if_14
- $B38: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_14
- }
- $B39: { # false
- store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
- exit_if # if_14
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B40: {
- %213:void = call %main_1
- %214:vec4<f32> = load %x_GLF_color
- %215:main_out = construct %214
- ret %215
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B41: {
- %217:i32 = convert %value
- %218:bool = gte %value, -2147483648.0f
- %219:i32 = select -2147483648i, %217, %218
- %220:bool = lte %value, 2147483520.0f
- %221:i32 = select 2147483647i, %219, %220
- ret %221
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl
deleted file mode 100644
index 488bcf2..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,545 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: QuicksortObject = struct @align(4) {
- numbers:array<i32, 10> @offset(0)
-}
-
-BST = struct @align(4) {
- data:i32 @offset(0)
- leftIndex:i32 @offset(4)
- rightIndex:i32 @offset(8)
-}
-
-buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %obj:ptr<private, QuicksortObject, read_write> = var
- %tree:ptr<private, array<BST, 10>, read_write> = var
- %x_50:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%makeTreeNode_struct_BST_i1_i1_i11_i1_ = func(%node:ptr<function, BST, read_write>, %data:ptr<function, i32, read_write>):void {
- $B2: {
- %8:i32 = load %data
- %x_208:i32 = let %8
- %10:ptr<function, i32, read_write> = access %node, 0u
- store %10, %x_208
- %11:ptr<function, i32, read_write> = access %node, 1u
- store %11, -1i
- %12:ptr<function, i32, read_write> = access %node, 2u
- store %12, -1i
- ret
- }
-}
-%insert_i1_i1_ = func(%treeIndex:ptr<function, i32, read_write>, %data_1:ptr<function, i32, read_write>):void {
- $B3: {
- %baseIndex:ptr<function, i32, read_write> = var
- %param:ptr<function, BST, read_write> = var
- %param_1:ptr<function, i32, read_write> = var
- %param_2:ptr<function, BST, read_write> = var
- %param_3:ptr<function, i32, read_write> = var
- store %baseIndex, 0i
- loop [b: $B4, c: $B5] { # loop_1
- $B4: { # body
- %21:i32 = load %baseIndex
- %x_217:i32 = let %21
- %23:i32 = load %treeIndex
- %x_218:i32 = let %23
- %25:bool = lte %x_217, %x_218
- if %25 [t: $B6, f: $B7] { # if_1
- $B6: { # true
- exit_if # if_1
- }
- $B7: { # false
- exit_loop # loop_1
- }
- }
- %26:i32 = load %data_1
- %x_221:i32 = let %26
- %28:i32 = load %baseIndex
- %x_222:i32 = let %28
- %30:ptr<private, i32, read_write> = access %tree, %x_222, 0u
- %31:i32 = load %30
- %x_224:i32 = let %31
- %33:bool = lte %x_221, %x_224
- if %33 [t: $B8, f: $B9] { # if_2
- $B8: { # true
- %34:i32 = load %baseIndex
- %x_229:i32 = let %34
- %36:ptr<private, i32, read_write> = access %tree, %x_229, 1u
- %37:i32 = load %36
- %x_231:i32 = let %37
- %39:bool = eq %x_231, -1i
- if %39 [t: $B10, f: $B11] { # if_3
- $B10: { # true
- %40:i32 = load %baseIndex
- %x_236:i32 = let %40
- %42:i32 = load %treeIndex
- %x_237:i32 = let %42
- %44:ptr<private, i32, read_write> = access %tree, %x_236, 1u
- store %44, %x_237
- %45:i32 = load %treeIndex
- %x_239:i32 = let %45
- %47:ptr<private, BST, read_write> = access %tree, %x_239
- %48:BST = load %47
- %x_241:BST = let %48
- store %param, %x_241
- %50:i32 = load %data_1
- %x_242:i32 = let %50
- store %param_1, %x_242
- %52:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param, %param_1
- %53:BST = load %param
- %x_244:BST = let %53
- %55:ptr<private, BST, read_write> = access %tree, %x_239
- store %55, %x_244
- ret
- }
- $B11: { # false
- %56:i32 = load %baseIndex
- %x_246:i32 = let %56
- %58:ptr<private, i32, read_write> = access %tree, %x_246, 1u
- %59:i32 = load %58
- %x_248:i32 = let %59
- store %baseIndex, %x_248
- continue # -> $B5
- }
- }
- exit_if # if_2
- }
- $B9: { # false
- %61:i32 = load %baseIndex
- %x_249:i32 = let %61
- %63:ptr<private, i32, read_write> = access %tree, %x_249, 2u
- %64:i32 = load %63
- %x_251:i32 = let %64
- %66:bool = eq %x_251, -1i
- if %66 [t: $B12, f: $B13] { # if_4
- $B12: { # true
- %67:i32 = load %baseIndex
- %x_256:i32 = let %67
- %69:i32 = load %treeIndex
- %x_257:i32 = let %69
- %71:ptr<private, i32, read_write> = access %tree, %x_256, 2u
- store %71, %x_257
- %72:i32 = load %treeIndex
- %x_259:i32 = let %72
- %74:ptr<private, BST, read_write> = access %tree, %x_259
- %75:BST = load %74
- %x_261:BST = let %75
- store %param_2, %x_261
- %77:i32 = load %data_1
- %x_262:i32 = let %77
- store %param_3, %x_262
- %79:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_2, %param_3
- %80:BST = load %param_2
- %x_264:BST = let %80
- %82:ptr<private, BST, read_write> = access %tree, %x_259
- store %82, %x_264
- ret
- }
- $B13: { # false
- %83:i32 = load %baseIndex
- %x_266:i32 = let %83
- %85:ptr<private, i32, read_write> = access %tree, %x_266, 2u
- %86:i32 = load %85
- %x_268:i32 = let %86
- store %baseIndex, %x_268
- continue # -> $B5
- }
- }
- exit_if # if_2
- }
- }
- unreachable
- }
- $B5: { # continuing
- next_iteration # -> $B4
- }
- }
- ret
- }
-}
-%identity_i1_ = func(%a:ptr<function, i32, read_write>):i32 {
- $B14: {
- %90:i32 = load %a
- %x_202:i32 = let %90
- %92:i32 = load %a
- %x_203:i32 = let %92
- %94:ptr<private, i32, read_write> = access %obj, 0u, %x_202
- store %94, %x_203
- %95:ptr<private, i32, read_write> = access %obj, 0u, 2i
- %96:i32 = load %95
- %x_206:i32 = let %96
- ret %x_206
- }
-}
-%search_i1_ = func(%t:ptr<function, i32, read_write>):i32 {
- $B15: {
- %index:ptr<function, i32, read_write> = var
- %currentNode:ptr<function, BST, read_write> = var
- %x_270:ptr<function, i32, read_write> = var
- store %index, 0i
- loop [b: $B16, c: $B17] { # loop_2
- $B16: { # body
- %103:i32 = load %index
- %x_275:i32 = let %103
- %105:bool = neq %x_275, -1i
- if %105 [t: $B18, f: $B19] { # if_5
- $B18: { # true
- exit_if # if_5
- }
- $B19: { # false
- exit_loop # loop_2
- }
- }
- %106:i32 = load %index
- %x_278:i32 = let %106
- %108:ptr<private, BST, read_write> = access %tree, %x_278
- %109:BST = load %108
- %x_280:BST = let %109
- store %currentNode, %x_280
- %111:ptr<function, i32, read_write> = access %currentNode, 0u
- %112:i32 = load %111
- %x_282:i32 = let %112
- %114:i32 = load %t
- %x_283:i32 = let %114
- %116:bool = eq %x_282, %x_283
- if %116 [t: $B20] { # if_6
- $B20: { # true
- %117:i32 = load %t
- %x_287:i32 = let %117
- ret %x_287
- }
- }
- %119:i32 = load %t
- %x_288:i32 = let %119
- %121:ptr<function, i32, read_write> = access %currentNode, 0u
- %122:i32 = load %121
- %x_290:i32 = let %122
- %124:bool = gt %x_288, %x_290
- if %124 [t: $B21, f: $B22] { # if_7
- $B21: { # true
- %125:ptr<function, i32, read_write> = access %currentNode, 2u
- %126:i32 = load %125
- %x_296:i32 = let %126
- store %x_270, %x_296
- exit_if # if_7
- }
- $B22: { # false
- %128:ptr<function, i32, read_write> = access %currentNode, 1u
- %129:i32 = load %128
- %x_298:i32 = let %129
- store %x_270, %x_298
- exit_if # if_7
- }
- }
- %131:i32 = load %x_270
- %x_299:i32 = let %131
- store %index, %x_299
- continue # -> $B17
- }
- $B17: { # continuing
- next_iteration # -> $B16
- }
- }
- ret -1i
- }
-}
-%main_1 = func():void {
- $B23: {
- %treeIndex_1:ptr<function, i32, read_write> = var
- %param_4:ptr<function, BST, read_write> = var
- %param_5:ptr<function, i32, read_write> = var
- %param_6:ptr<function, i32, read_write> = var
- %param_7:ptr<function, i32, read_write> = var
- %param_8:ptr<function, i32, read_write> = var
- %param_9:ptr<function, i32, read_write> = var
- %param_10:ptr<function, i32, read_write> = var
- %param_11:ptr<function, i32, read_write> = var
- %param_12:ptr<function, i32, read_write> = var
- %param_13:ptr<function, i32, read_write> = var
- %param_14:ptr<function, i32, read_write> = var
- %param_15:ptr<function, i32, read_write> = var
- %param_16:ptr<function, i32, read_write> = var
- %param_17:ptr<function, i32, read_write> = var
- %param_18:ptr<function, i32, read_write> = var
- %param_19:ptr<function, i32, read_write> = var
- %param_20:ptr<function, i32, read_write> = var
- %param_21:ptr<function, i32, read_write> = var
- %param_22:ptr<function, i32, read_write> = var
- %param_23:ptr<function, i32, read_write> = var
- %pp:ptr<function, i32, read_write> = var
- %looplimiter0:ptr<function, i32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %param_24:ptr<function, i32, read_write> = var
- %count:ptr<function, i32, read_write> = var
- %i_1:ptr<function, i32, read_write> = var
- %result:ptr<function, i32, read_write> = var
- %param_25:ptr<function, i32, read_write> = var
- store %treeIndex_1, 0i
- %163:ptr<private, BST, read_write> = access %tree, 0i
- %164:BST = load %163
- %x_101:BST = let %164
- store %param_4, %x_101
- store %param_5, 9i
- %166:void = call %makeTreeNode_struct_BST_i1_i1_i11_i1_, %param_4, %param_5
- %167:BST = load %param_4
- %x_103:BST = let %167
- %169:ptr<private, BST, read_write> = access %tree, 0i
- store %169, %x_103
- %170:i32 = load %treeIndex_1
- %x_105:i32 = let %170
- %172:i32 = add %x_105, 1i
- store %treeIndex_1, %172
- %173:i32 = load %treeIndex_1
- %x_107:i32 = let %173
- store %param_6, %x_107
- store %param_7, 5i
- %175:void = call %insert_i1_i1_, %param_6, %param_7
- %176:i32 = load %treeIndex_1
- %x_109:i32 = let %176
- %178:i32 = add %x_109, 1i
- store %treeIndex_1, %178
- %179:i32 = load %treeIndex_1
- %x_111:i32 = let %179
- store %param_8, %x_111
- store %param_9, 12i
- %181:void = call %insert_i1_i1_, %param_8, %param_9
- %182:i32 = load %treeIndex_1
- %x_113:i32 = let %182
- %184:i32 = add %x_113, 1i
- store %treeIndex_1, %184
- %185:i32 = load %treeIndex_1
- %x_115:i32 = let %185
- store %param_10, %x_115
- store %param_11, 15i
- %187:void = call %insert_i1_i1_, %param_10, %param_11
- %188:i32 = load %treeIndex_1
- %x_117:i32 = let %188
- %190:i32 = add %x_117, 1i
- store %treeIndex_1, %190
- %191:i32 = load %treeIndex_1
- %x_119:i32 = let %191
- store %param_12, %x_119
- store %param_13, 7i
- %193:void = call %insert_i1_i1_, %param_12, %param_13
- %194:i32 = load %treeIndex_1
- %x_121:i32 = let %194
- %196:i32 = add %x_121, 1i
- store %treeIndex_1, %196
- %197:i32 = load %treeIndex_1
- %x_123:i32 = let %197
- store %param_14, %x_123
- store %param_15, 8i
- %199:void = call %insert_i1_i1_, %param_14, %param_15
- %200:i32 = load %treeIndex_1
- %x_125:i32 = let %200
- %202:i32 = add %x_125, 1i
- store %treeIndex_1, %202
- %203:i32 = load %treeIndex_1
- %x_127:i32 = let %203
- store %param_16, %x_127
- store %param_17, 2i
- %205:void = call %insert_i1_i1_, %param_16, %param_17
- %206:i32 = load %treeIndex_1
- %x_129:i32 = let %206
- %208:i32 = add %x_129, 1i
- store %treeIndex_1, %208
- %209:i32 = load %treeIndex_1
- %x_131:i32 = let %209
- store %param_18, %x_131
- store %param_19, 6i
- %211:void = call %insert_i1_i1_, %param_18, %param_19
- %212:i32 = load %treeIndex_1
- %x_133:i32 = let %212
- %214:i32 = add %x_133, 1i
- store %treeIndex_1, %214
- %215:i32 = load %treeIndex_1
- %x_135:i32 = let %215
- store %param_20, %x_135
- store %param_21, 17i
- %217:void = call %insert_i1_i1_, %param_20, %param_21
- %218:i32 = load %treeIndex_1
- %x_137:i32 = let %218
- %220:i32 = add %x_137, 1i
- store %treeIndex_1, %220
- %221:i32 = load %treeIndex_1
- %x_139:i32 = let %221
- store %param_22, %x_139
- store %param_23, 13i
- %223:void = call %insert_i1_i1_, %param_22, %param_23
- store %pp, 0i
- store %looplimiter0, 0i
- store %i, 0i
- loop [b: $B24, c: $B25] { # loop_3
- $B24: { # body
- %224:i32 = load %i
- %x_145:i32 = let %224
- %226:bool = lt %x_145, 10000i
- if %226 [t: $B26, f: $B27] { # if_8
- $B26: { # true
- exit_if # if_8
- }
- $B27: { # false
- exit_loop # loop_3
- }
- }
- %227:i32 = load %looplimiter0
- %x_148:i32 = let %227
- %229:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
- %230:f32 = load_vector_element %229, 1u
- %x_150:f32 = let %230
- %232:i32 = call %tint_f32_to_i32, %x_150
- %234:bool = gte %x_148, %232
- if %234 [t: $B28] { # if_9
- $B28: { # true
- %235:ptr<uniform, vec2<f32>, read> = access %x_50, 0u
- %236:f32 = load_vector_element %235, 1u
- %x_156:f32 = let %236
- %238:i32 = call %tint_f32_to_i32, %x_156
- %239:i32 = add 1i, %238
- store %param_24, %239
- %240:i32 = call %identity_i1_, %param_24
- %x_159:i32 = let %240
- store %pp, %x_159
- exit_loop # loop_3
- }
- }
- %242:i32 = load %looplimiter0
- %x_160:i32 = let %242
- %244:i32 = add %x_160, 1i
- store %looplimiter0, %244
- continue # -> $B25
- }
- $B25: { # continuing
- %245:i32 = load %i
- %x_162:i32 = let %245
- %247:i32 = add %x_162, 1i
- store %i, %247
- next_iteration # -> $B24
- }
- }
- %248:i32 = load %pp
- %x_164:i32 = let %248
- %250:bool = neq %x_164, 2i
- if %250 [t: $B29] { # if_10
- $B29: { # true
- ret
- }
- }
- store %count, 0i
- store %i_1, 0i
- loop [b: $B30, c: $B31] { # loop_4
- $B30: { # body
- %251:i32 = load %i_1
- %x_172:i32 = let %251
- %253:bool = lt %x_172, 20i
- if %253 [t: $B32, f: $B33] { # if_11
- $B32: { # true
- exit_if # if_11
- }
- $B33: { # false
- exit_loop # loop_4
- }
- }
- %254:i32 = load %i_1
- %x_175:i32 = let %254
- store %param_25, %x_175
- %256:i32 = call %search_i1_, %param_25
- %x_176:i32 = let %256
- store %result, %x_176
- %258:i32 = load %i_1
- %x_177:i32 = let %258
- switch %x_177 [c: (2i 5i 6i 7i 8i 9i 12i 13i 15i 17i, $B34), c: (default, $B35)] { # switch_1
- $B34: { # case
- %260:i32 = load %result
- %x_187:i32 = let %260
- %262:i32 = load %i_1
- %x_188:i32 = let %262
- %264:bool = eq %x_187, %x_188
- if %264 [t: $B36] { # if_12
- $B36: { # true
- %265:i32 = load %count
- %x_192:i32 = let %265
- %267:i32 = add %x_192, 1i
- store %count, %267
- exit_if # if_12
- }
- }
- exit_switch # switch_1
- }
- $B35: { # case
- %268:i32 = load %result
- %x_181:i32 = let %268
- %270:bool = eq %x_181, -1i
- if %270 [t: $B37] { # if_13
- $B37: { # true
- %271:i32 = load %count
- %x_185:i32 = let %271
- %273:i32 = add %x_185, 1i
- store %count, %273
- exit_if # if_13
- }
- }
- exit_switch # switch_1
- }
- }
- continue # -> $B31
- }
- $B31: { # continuing
- %274:i32 = load %i_1
- %x_194:i32 = let %274
- %276:i32 = add %x_194, 1i
- store %i_1, %276
- next_iteration # -> $B30
- }
- }
- %277:i32 = load %count
- %x_196:i32 = let %277
- %279:bool = eq %x_196, 20i
- if %279 [t: $B38, f: $B39] { # if_14
- $B38: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_14
- }
- $B39: { # false
- store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f)
- exit_if # if_14
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B40: {
- %281:void = call %main_1
- %282:vec4<f32> = load %x_GLF_color
- %283:main_out = construct %282
- ret %283
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B41: {
- %285:i32 = convert %value
- %286:bool = gte %value, -2147483648.0f
- %287:i32 = select -2147483648i, %285, %286
- %288:bool = lte %value, 2147483520.0f
- %289:i32 = select 2147483647i, %287, %288
- ret %289
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl
deleted file mode 100644
index c3c1389..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,154 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%collatz_i1_ = func(%v:ptr<function, i32, read_write>):i32 {
- $B2: {
- %count:ptr<function, i32, read_write> = var
- store %count, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %7:i32 = load %v
- %8:bool = gt %7, 1i
- if %8 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %9:i32 = load %v
- %10:i32 = and %9, 1i
- %11:bool = eq %10, 1i
- if %11 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %12:i32 = load %v
- %13:i32 = mul 3i, %12
- %14:i32 = add %13, 1i
- store %v, %14
- exit_if # if_2
- }
- $B8: { # false
- %15:i32 = load %v
- %16:i32 = call %tint_div_i32, %15, 2i
- store %v, %16
- exit_if # if_2
- }
- }
- %18:i32 = load %count
- %19:i32 = add %18, 1i
- store %count, %19
- continue # -> $B4
- }
- $B4: { # continuing
- next_iteration # -> $B3
- }
- }
- %20:i32 = load %count
- %x_105:i32 = let %20
- ret %x_105
- }
-}
-%main_1 = func():void {
- $B9: {
- %lin:ptr<function, vec2<f32>, read_write> = var
- %v_1:ptr<function, i32, read_write> = var
- %param:ptr<function, i32, read_write> = var
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %27:vec4<f32> = load %gl_FragCoord
- %28:vec2<f32> = swizzle %27, xy
- %29:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
- %30:vec2<f32> = load %29
- %31:vec2<f32> = div %28, %30
- store %lin, %31
- %32:vec2<f32> = load %lin
- %33:vec2<f32> = mul %32, 8.0f
- %34:vec2<f32> = floor %33
- store %lin, %34
- %35:f32 = load_vector_element %lin, 0u
- %36:i32 = call %tint_f32_to_i32, %35
- %38:i32 = mul %36, 8i
- %39:i32 = let %38
- %40:f32 = load_vector_element %lin, 1u
- %41:i32 = call %tint_f32_to_i32, %40
- %42:i32 = add %39, %41
- store %v_1, %42
- %43:i32 = load %v_1
- store %param, %43
- %44:i32 = call %collatz_i1_, %param
- %x_80:i32 = let %44
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %46:i32 = call %tint_mod_i32, %x_80, 16i
- %48:ptr<function, vec4<f32>, read_write> = access %indexable, %46
- %49:vec4<f32> = load %48
- store %x_GLF_color, %49
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %52:void = call %main_1
- %53:vec4<f32> = load %x_GLF_color
- %54:main_out = construct %53
- ret %54
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B11: {
- %57:bool = eq %rhs, 0i
- %58:bool = eq %lhs, -2147483648i
- %59:bool = eq %rhs, -1i
- %60:bool = and %58, %59
- %61:bool = or %57, %60
- %62:i32 = select %rhs, 1i, %61
- %63:i32 = div %lhs, %62
- ret %63
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B12: {
- %66:bool = eq %rhs_1, 0i
- %67:bool = eq %lhs_1, -2147483648i
- %68:bool = eq %rhs_1, -1i
- %69:bool = and %67, %68
- %70:bool = or %66, %69
- %71:i32 = select %rhs_1, 1i, %70
- %72:i32 = let %71
- %73:i32 = div %lhs_1, %72
- %74:i32 = mul %73, %72
- %75:i32 = sub %lhs_1, %74
- ret %75
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B13: {
- %77:i32 = convert %value
- %78:bool = gte %value, -2147483648.0f
- %79:i32 = select -2147483648i, %77, %78
- %80:bool = lte %value, 2147483520.0f
- %81:i32 = select 2147483647i, %79, %80
- ret %81
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl
deleted file mode 100644
index 53042c0..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,168 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_10:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%collatz_i1_ = func(%v:ptr<function, i32, read_write>):i32 {
- $B2: {
- %count:ptr<function, i32, read_write> = var
- store %count, 0i
- loop [b: $B3, c: $B4] { # loop_1
- $B3: { # body
- %7:i32 = load %v
- %x_89:i32 = let %7
- %9:bool = gt %x_89, 1i
- if %9 [t: $B5, f: $B6] { # if_1
- $B5: { # true
- exit_if # if_1
- }
- $B6: { # false
- exit_loop # loop_1
- }
- }
- %10:i32 = load %v
- %x_92:i32 = let %10
- %12:i32 = and %x_92, 1i
- %13:bool = eq %12, 1i
- if %13 [t: $B7, f: $B8] { # if_2
- $B7: { # true
- %14:i32 = load %v
- %x_98:i32 = let %14
- %16:i32 = mul 3i, %x_98
- %17:i32 = add %16, 1i
- store %v, %17
- exit_if # if_2
- }
- $B8: { # false
- %18:i32 = load %v
- %x_101:i32 = let %18
- %20:i32 = call %tint_div_i32, %x_101, 2i
- store %v, %20
- exit_if # if_2
- }
- }
- %22:i32 = load %count
- %x_103:i32 = let %22
- %24:i32 = add %x_103, 1i
- store %count, %24
- continue # -> $B4
- }
- $B4: { # continuing
- next_iteration # -> $B3
- }
- }
- %25:i32 = load %count
- %x_105:i32 = let %25
- ret %x_105
- }
-}
-%main_1 = func():void {
- $B9: {
- %lin:ptr<function, vec2<f32>, read_write> = var
- %v_1:ptr<function, i32, read_write> = var
- %param:ptr<function, i32, read_write> = var
- %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %32:vec4<f32> = load %gl_FragCoord
- %x_63:vec4<f32> = let %32
- %34:ptr<uniform, vec2<f32>, read> = access %x_10, 0u
- %35:vec2<f32> = load %34
- %x_66:vec2<f32> = let %35
- %37:f32 = access %x_63, 0u
- %38:f32 = access %x_63, 1u
- %39:vec2<f32> = construct %37, %38
- %40:vec2<f32> = div %39, %x_66
- store %lin, %40
- %41:vec2<f32> = load %lin
- %x_68:vec2<f32> = let %41
- %43:vec2<f32> = mul %x_68, 8.0f
- %44:vec2<f32> = floor %43
- store %lin, %44
- %45:f32 = load_vector_element %lin, 0u
- %x_72:f32 = let %45
- %47:f32 = load_vector_element %lin, 1u
- %x_76:f32 = let %47
- %49:i32 = call %tint_f32_to_i32, %x_72
- %51:i32 = mul %49, 8i
- %52:i32 = let %51
- %53:i32 = call %tint_f32_to_i32, %x_76
- %54:i32 = add %52, %53
- store %v_1, %54
- %55:i32 = load %v_1
- %x_79:i32 = let %55
- store %param, %x_79
- %57:i32 = call %collatz_i1_, %param
- %x_80:i32 = let %57
- store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %59:i32 = call %tint_mod_i32, %x_80, 16i
- %61:ptr<function, vec4<f32>, read_write> = access %indexable, %59
- %62:vec4<f32> = load %61
- %x_83:vec4<f32> = let %62
- store %x_GLF_color, %x_83
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B10: {
- store %gl_FragCoord, %gl_FragCoord_param
- %66:void = call %main_1
- %67:vec4<f32> = load %x_GLF_color
- %68:main_out = construct %67
- ret %68
- }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B11: {
- %71:bool = eq %rhs, 0i
- %72:bool = eq %lhs, -2147483648i
- %73:bool = eq %rhs, -1i
- %74:bool = and %72, %73
- %75:bool = or %71, %74
- %76:i32 = select %rhs, 1i, %75
- %77:i32 = div %lhs, %76
- ret %77
- }
-}
-%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 { # %lhs_1: 'lhs', %rhs_1: 'rhs'
- $B12: {
- %80:bool = eq %rhs_1, 0i
- %81:bool = eq %lhs_1, -2147483648i
- %82:bool = eq %rhs_1, -1i
- %83:bool = and %81, %82
- %84:bool = or %80, %83
- %85:i32 = select %rhs_1, 1i, %84
- %86:i32 = let %85
- %87:i32 = div %lhs_1, %86
- %88:i32 = mul %87, %86
- %89:i32 = sub %lhs_1, %88
- ret %89
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B13: {
- %91:i32 = convert %value
- %92:bool = gte %value, -2147483648.0f
- %93:i32 = select -2147483648i, %91, %92
- %94:bool = lte %value, 2147483520.0f
- %95:i32 = select 2147483647i, %93, %94
- ret %95
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl
deleted file mode 100644
index 2440ec1..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,234 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool {
- $B2: {
- %7:f32 = load_vector_element %pos, 0u
- %8:f32 = load_vector_element %quad, 0u
- %9:bool = lt %7, %8
- if %9 [t: $B3] { # if_1
- $B3: { # true
- ret false
- }
- }
- %10:f32 = load_vector_element %pos, 1u
- %11:f32 = load_vector_element %quad, 1u
- %12:bool = lt %10, %11
- if %12 [t: $B4] { # if_2
- $B4: { # true
- ret false
- }
- }
- %13:f32 = load_vector_element %pos, 0u
- %14:f32 = load_vector_element %quad, 0u
- %15:f32 = load_vector_element %quad, 2u
- %16:f32 = add %14, %15
- %17:bool = gt %13, %16
- if %17 [t: $B5] { # if_3
- $B5: { # true
- ret false
- }
- }
- %18:f32 = load_vector_element %pos, 1u
- %19:f32 = load_vector_element %quad, 1u
- %20:f32 = load_vector_element %quad, 3u
- %21:f32 = add %19, %20
- %22:bool = gt %18, %21
- if %22 [t: $B6] { # if_4
- $B6: { # true
- ret false
- }
- }
- ret true
- }
-}
-%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> {
- $B7: {
- %res:ptr<function, vec4<f32>, read_write> = var
- %x_144:ptr<function, f32, read_write> = var
- %x_145:ptr<function, f32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %param:ptr<function, vec2<f32>, read_write> = var
- %param_1:ptr<function, vec4<f32>, read_write> = var
- %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %35:f32 = load_vector_element %gl_FragCoord, 0u
- %36:bool = lt %35, 0.0f
- if %36 [t: $B8, f: $B9] { # if_5
- $B8: { # true
- store %x_144, -1.0f
- exit_if # if_5
- }
- $B9: { # false
- %37:f32 = load_vector_element %gl_FragCoord, 0u
- %38:bool = gte %37, 0.0f
- if %38 [t: $B10, f: $B11] { # if_6
- $B10: { # true
- %39:f32 = load_vector_element %gl_FragCoord, 0u
- %40:bool = gte %39, 0.0f
- %41:f32 = select 1.0f, 0.5f, %40
- store %x_145, %41
- exit_if # if_6
- }
- $B11: { # false
- store %x_145, 1.0f
- exit_if # if_6
- }
- }
- %42:f32 = load %x_145
- %43:f32 = min %42, 0.5f
- store %x_144, %43
- exit_if # if_5
- }
- }
- %44:f32 = load %x_144
- %45:f32 = clamp 0.5f, 0.5f, %44
- %46:vec4<f32> = construct %45, 0.5f, 1.0f, 1.0f
- store %res, %46
- store %i, 0i
- loop [b: $B12, c: $B13] { # loop_1
- $B12: { # body
- %47:i32 = load %i
- %48:bool = lt %47, 8i
- if %48 [t: $B14, f: $B15] { # if_7
- $B14: { # true
- exit_if # if_7
- }
- $B15: { # false
- exit_loop # loop_1
- }
- }
- %49:i32 = load %i
- %x_174:i32 = let %49
- %51:vec2<f32> = load %pos_1
- store %param, %51
- store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %52:ptr<function, vec4<f32>, read_write> = access %indexable, %x_174
- %53:vec4<f32> = load %52
- store %param_1, %53
- %54:bool = call %collision_vf2_vf4_, %param, %param_1
- %x_178:bool = let %54
- if %x_178 [t: $B16] { # if_8
- $B16: { # true
- %56:i32 = load %i
- %x_181:i32 = let %56
- store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %58:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_181
- %59:f32 = load_vector_element %58, 0u
- %x_183:f32 = let %59
- %61:i32 = load %i
- %x_185:i32 = let %61
- store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %63:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_185
- %64:f32 = load_vector_element %63, 1u
- %x_187:f32 = let %64
- %66:i32 = load %i
- %x_190:i32 = let %66
- store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %68:i32 = call %tint_f32_to_i32, %x_183
- %70:i32 = let %68
- %71:i32 = call %tint_f32_to_i32, %x_187
- %72:i32 = mul %70, %71
- %73:i32 = mul %x_190, 9i
- %74:i32 = add %72, %73
- %75:i32 = add %74, 11i
- %76:i32 = call %tint_mod_i32, %75, 16i
- %78:ptr<function, vec4<f32>, read_write> = access %indexable_3, %76
- %79:vec4<f32> = load %78
- store %res, %79
- exit_if # if_8
- }
- }
- continue # -> $B13
- }
- $B13: { # continuing
- %80:i32 = load %i
- %81:i32 = add %80, 1i
- store %i, %81
- next_iteration # -> $B12
- }
- }
- %82:vec4<f32> = load %res
- %x_199:vec4<f32> = let %82
- ret %x_199
- }
-}
-%main_1 = func():void {
- $B17: {
- %lin:ptr<function, vec2<f32>, read_write> = var
- %param_2:ptr<function, vec2<f32>, read_write> = var
- %87:vec4<f32> = load %gl_FragCoord
- %88:vec2<f32> = swizzle %87, xy
- %89:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
- %90:vec2<f32> = load %89
- %91:vec2<f32> = div %88, %90
- store %lin, %91
- %92:vec2<f32> = load %lin
- %93:vec2<f32> = mul %92, 32.0f
- %94:vec2<f32> = floor %93
- store %lin, %94
- %95:vec2<f32> = load %lin
- store %param_2, %95
- %96:vec4<f32> = call %match_vf2_, %param_2
- %x_107:vec4<f32> = let %96
- store %x_GLF_color, %x_107
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B18: {
- store %gl_FragCoord, %gl_FragCoord_param
- %100:void = call %main_1
- %101:vec4<f32> = load %x_GLF_color
- %102:main_out = construct %101
- ret %102
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B19: {
- %105:bool = eq %rhs, 0i
- %106:bool = eq %lhs, -2147483648i
- %107:bool = eq %rhs, -1i
- %108:bool = and %106, %107
- %109:bool = or %105, %108
- %110:i32 = select %rhs, 1i, %109
- %111:i32 = let %110
- %112:i32 = div %lhs, %111
- %113:i32 = mul %112, %111
- %114:i32 = sub %lhs, %113
- ret %114
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B20: {
- %116:i32 = convert %value
- %117:bool = gte %value, -2147483648.0f
- %118:i32 = select -2147483648i, %116, %117
- %119:bool = lte %value, 2147483520.0f
- %120:i32 = select 2147483647i, %118, %119
- ret %120
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl
deleted file mode 100644
index 435e6f5..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,260 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
- resolution:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %x_20:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%collision_vf2_vf4_ = func(%pos:ptr<function, vec2<f32>, read_write>, %quad:ptr<function, vec4<f32>, read_write>):bool {
- $B2: {
- %7:f32 = load_vector_element %pos, 0u
- %x_110:f32 = let %7
- %9:f32 = load_vector_element %quad, 0u
- %x_112:f32 = let %9
- %11:bool = lt %x_110, %x_112
- if %11 [t: $B3] { # if_1
- $B3: { # true
- ret false
- }
- }
- %12:f32 = load_vector_element %pos, 1u
- %x_117:f32 = let %12
- %14:f32 = load_vector_element %quad, 1u
- %x_119:f32 = let %14
- %16:bool = lt %x_117, %x_119
- if %16 [t: $B4] { # if_2
- $B4: { # true
- ret false
- }
- }
- %17:f32 = load_vector_element %pos, 0u
- %x_124:f32 = let %17
- %19:f32 = load_vector_element %quad, 0u
- %x_126:f32 = let %19
- %21:f32 = load_vector_element %quad, 2u
- %x_128:f32 = let %21
- %23:f32 = add %x_126, %x_128
- %24:bool = gt %x_124, %23
- if %24 [t: $B5] { # if_3
- $B5: { # true
- ret false
- }
- }
- %25:f32 = load_vector_element %pos, 1u
- %x_134:f32 = let %25
- %27:f32 = load_vector_element %quad, 1u
- %x_136:f32 = let %27
- %29:f32 = load_vector_element %quad, 3u
- %x_138:f32 = let %29
- %31:f32 = add %x_136, %x_138
- %32:bool = gt %x_134, %31
- if %32 [t: $B6] { # if_4
- $B6: { # true
- ret false
- }
- }
- ret true
- }
-}
-%match_vf2_ = func(%pos_1:ptr<function, vec2<f32>, read_write>):vec4<f32> {
- $B7: {
- %res:ptr<function, vec4<f32>, read_write> = var
- %x_144:ptr<function, f32, read_write> = var
- %x_145:ptr<function, f32, read_write> = var
- %i:ptr<function, i32, read_write> = var
- %param:ptr<function, vec2<f32>, read_write> = var
- %param_1:ptr<function, vec4<f32>, read_write> = var
- %indexable:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_1:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_2:ptr<function, array<vec4<f32>, 8>, read_write> = var
- %indexable_3:ptr<function, array<vec4<f32>, 16>, read_write> = var
- %45:f32 = load_vector_element %gl_FragCoord, 0u
- %x_147:f32 = let %45
- %47:bool = lt %x_147, 0.0f
- if %47 [t: $B8, f: $B9] { # if_5
- $B8: { # true
- store %x_144, -1.0f
- exit_if # if_5
- }
- $B9: { # false
- %48:f32 = load_vector_element %gl_FragCoord, 0u
- %x_153:f32 = let %48
- %50:bool = gte %x_153, 0.0f
- if %50 [t: $B10, f: $B11] { # if_6
- $B10: { # true
- %51:f32 = load_vector_element %gl_FragCoord, 0u
- %x_159:f32 = let %51
- %53:bool = gte %x_159, 0.0f
- %54:f32 = select 1.0f, 0.5f, %53
- store %x_145, %54
- exit_if # if_6
- }
- $B11: { # false
- store %x_145, 1.0f
- exit_if # if_6
- }
- }
- %55:f32 = load %x_145
- %x_162:f32 = let %55
- %57:f32 = min %x_162, 0.5f
- store %x_144, %57
- exit_if # if_5
- }
- }
- %58:f32 = load %x_144
- %x_164:f32 = let %58
- %60:f32 = clamp 0.5f, 0.5f, %x_164
- %61:vec4<f32> = construct %60, 0.5f, 1.0f, 1.0f
- store %res, %61
- store %i, 0i
- loop [b: $B12, c: $B13] { # loop_1
- $B12: { # body
- %62:i32 = load %i
- %x_171:i32 = let %62
- %64:bool = lt %x_171, 8i
- if %64 [t: $B14, f: $B15] { # if_7
- $B14: { # true
- exit_if # if_7
- }
- $B15: { # false
- exit_loop # loop_1
- }
- }
- %65:i32 = load %i
- %x_174:i32 = let %65
- %67:vec2<f32> = load %pos_1
- %x_175:vec2<f32> = let %67
- store %param, %x_175
- store %indexable, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %69:ptr<function, vec4<f32>, read_write> = access %indexable, %x_174
- %70:vec4<f32> = load %69
- %x_177:vec4<f32> = let %70
- store %param_1, %x_177
- %72:bool = call %collision_vf2_vf4_, %param, %param_1
- %x_178:bool = let %72
- if %x_178 [t: $B16] { # if_8
- $B16: { # true
- %74:i32 = load %i
- %x_181:i32 = let %74
- store %indexable_1, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %76:ptr<function, vec4<f32>, read_write> = access %indexable_1, %x_181
- %77:f32 = load_vector_element %76, 0u
- %x_183:f32 = let %77
- %79:i32 = load %i
- %x_185:i32 = let %79
- store %indexable_2, array<vec4<f32>, 8>(vec4<f32>(4.0f, 4.0f, 20.0f, 4.0f), vec4<f32>(4.0f, 4.0f, 4.0f, 20.0f), vec4<f32>(4.0f, 20.0f, 20.0f, 4.0f), vec4<f32>(20.0f, 4.0f, 4.0f, 8.0f), vec4<f32>(8.0f, 6.0f, 4.0f, 2.0f), vec4<f32>(2.0f, 12.0f, 2.0f, 4.0f), vec4<f32>(16.0f, 2.0f, 4.0f, 4.0f), vec4<f32>(12.0f, 22.0f, 4.0f, 4.0f))
- %81:ptr<function, vec4<f32>, read_write> = access %indexable_2, %x_185
- %82:f32 = load_vector_element %81, 1u
- %x_187:f32 = let %82
- %84:i32 = load %i
- %x_190:i32 = let %84
- store %indexable_3, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
- %86:i32 = call %tint_f32_to_i32, %x_183
- %88:i32 = let %86
- %89:i32 = call %tint_f32_to_i32, %x_187
- %90:i32 = mul %88, %89
- %91:i32 = mul %x_190, 9i
- %92:i32 = add %90, %91
- %93:i32 = add %92, 11i
- %94:i32 = call %tint_mod_i32, %93, 16i
- %96:ptr<function, vec4<f32>, read_write> = access %indexable_3, %94
- %97:vec4<f32> = load %96
- %x_196:vec4<f32> = let %97
- store %res, %x_196
- exit_if # if_8
- }
- }
- continue # -> $B13
- }
- $B13: { # continuing
- %99:i32 = load %i
- %x_197:i32 = let %99
- %101:i32 = add %x_197, 1i
- store %i, %101
- next_iteration # -> $B12
- }
- }
- %102:vec4<f32> = load %res
- %x_199:vec4<f32> = let %102
- ret %x_199
- }
-}
-%main_1 = func():void {
- $B17: {
- %lin:ptr<function, vec2<f32>, read_write> = var
- %param_2:ptr<function, vec2<f32>, read_write> = var
- %107:vec4<f32> = load %gl_FragCoord
- %x_98:vec4<f32> = let %107
- %109:ptr<uniform, vec2<f32>, read> = access %x_20, 0u
- %110:vec2<f32> = load %109
- %x_101:vec2<f32> = let %110
- %112:f32 = access %x_98, 0u
- %113:f32 = access %x_98, 1u
- %114:vec2<f32> = construct %112, %113
- %115:vec2<f32> = div %114, %x_101
- store %lin, %115
- %116:vec2<f32> = load %lin
- %x_103:vec2<f32> = let %116
- %118:vec2<f32> = mul %x_103, 32.0f
- %119:vec2<f32> = floor %118
- store %lin, %119
- %120:vec2<f32> = load %lin
- %x_106:vec2<f32> = let %120
- store %param_2, %x_106
- %122:vec4<f32> = call %match_vf2_, %param_2
- %x_107:vec4<f32> = let %122
- store %x_GLF_color, %x_107
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B18: {
- store %gl_FragCoord, %gl_FragCoord_param
- %126:void = call %main_1
- %127:vec4<f32> = load %x_GLF_color
- %128:main_out = construct %127
- ret %128
- }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
- $B19: {
- %131:bool = eq %rhs, 0i
- %132:bool = eq %lhs, -2147483648i
- %133:bool = eq %rhs, -1i
- %134:bool = and %132, %133
- %135:bool = or %131, %134
- %136:i32 = select %rhs, 1i, %135
- %137:i32 = let %136
- %138:i32 = div %lhs, %137
- %139:i32 = mul %138, %137
- %140:i32 = sub %lhs, %139
- ret %140
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B20: {
- %142:i32 = convert %value
- %143:bool = gte %value, -2147483648.0f
- %144:i32 = select -2147483648i, %142, %143
- %145:bool = lte %value, 2147483520.0f
- %146:i32 = select 2147483647i, %144, %145
- ret %146
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl
deleted file mode 100644
index bdc7c2e..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,94 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: struct_base = struct @align(4) {
- data:i32 @offset(0)
- leftIndex:i32 @offset(4)
- rightIndex:i32 @offset(8)
-}
-
-buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %struct_array:ptr<private, array<struct_base, 3>, read_write> = var
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %index:ptr<function, i32, read_write> = var
- store %struct_array, array<struct_base, 3>(struct_base(1i))
- store %index, 1i
- %6:ptr<private, i32, read_write> = access %struct_array, 1i, 2u
- store %6, 1i
- %7:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
- %8:i32 = load %7
- %9:bool = eq %8, 1i
- if %9 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- %10:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
- %11:f32 = load_vector_element %10, 0u
- %12:i32 = call %tint_f32_to_i32, %11
- %14:ptr<private, i32, read_write> = access %struct_array, %12, 2u
- %15:i32 = load %14
- store %index, %15
- exit_if # if_1
- }
- $B4: { # false
- %16:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
- %17:f32 = load_vector_element %16, 1u
- %18:i32 = call %tint_f32_to_i32, %17
- %19:ptr<private, i32, read_write> = access %struct_array, %18, 1u
- %20:i32 = load %19
- store %index, %20
- exit_if # if_1
- }
- }
- %21:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
- %22:i32 = load %21
- %23:bool = eq %22, 1i
- if %23 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_2
- }
- $B6: { # false
- store %x_GLF_color, vec4<f32>(1.0f)
- exit_if # if_2
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B7: {
- %25:void = call %main_1
- %26:vec4<f32> = load %x_GLF_color
- %27:main_out = construct %26
- ret %27
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B8: {
- %29:i32 = convert %value
- %30:bool = gte %value, -2147483648.0f
- %31:i32 = select -2147483648i, %29, %30
- %32:bool = lte %value, 2147483520.0f
- %33:i32 = select 2147483647i, %31, %32
- ret %33
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl
deleted file mode 100644
index 3a47ff9..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,100 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: struct_base = struct @align(4) {
- data:i32 @offset(0)
- leftIndex:i32 @offset(4)
- rightIndex:i32 @offset(8)
-}
-
-buf0 = struct @align(8) {
- injectionSwitch:vec2<f32> @offset(0)
-}
-
-main_out = struct @align(16) {
- x_GLF_color_1:vec4<f32> @offset(0), @location(0)
-}
-
-$B1: { # root
- %struct_array:ptr<private, array<struct_base, 3>, read_write> = var
- %x_8:ptr<uniform, buf0, read> = var @binding_point(0, 0)
- %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %index:ptr<function, i32, read_write> = var
- store %struct_array, array<struct_base, 3>(struct_base(1i))
- store %index, 1i
- %6:ptr<private, i32, read_write> = access %struct_array, 1i, 2u
- store %6, 1i
- %7:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
- %8:i32 = load %7
- %x_39:i32 = let %8
- %10:bool = eq %x_39, 1i
- if %10 [t: $B3, f: $B4] { # if_1
- $B3: { # true
- %11:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
- %12:f32 = load_vector_element %11, 0u
- %x_45:f32 = let %12
- %14:i32 = call %tint_f32_to_i32, %x_45
- %16:ptr<private, i32, read_write> = access %struct_array, %14, 2u
- %17:i32 = load %16
- %x_48:i32 = let %17
- store %index, %x_48
- exit_if # if_1
- }
- $B4: { # false
- %19:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
- %20:f32 = load_vector_element %19, 1u
- %x_50:f32 = let %20
- %22:i32 = call %tint_f32_to_i32, %x_50
- %23:ptr<private, i32, read_write> = access %struct_array, %22, 1u
- %24:i32 = load %23
- %x_53:i32 = let %24
- store %index, %x_53
- exit_if # if_1
- }
- }
- %26:ptr<private, i32, read_write> = access %struct_array, 1i, 1u
- %27:i32 = load %26
- %x_55:i32 = let %27
- %29:bool = eq %x_55, 1i
- if %29 [t: $B5, f: $B6] { # if_2
- $B5: { # true
- store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
- exit_if # if_2
- }
- $B6: { # false
- store %x_GLF_color, vec4<f32>(1.0f)
- exit_if # if_2
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func():main_out {
- $B7: {
- %31:void = call %main_1
- %32:vec4<f32> = load %x_GLF_color
- %33:main_out = construct %32
- ret %33
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B8: {
- %35:i32 = convert %value
- %36:bool = gte %value, -2147483648.0f
- %37:i32 = select -2147483648i, %35, %36
- %38:bool = lte %value, 2147483520.0f
- %39:i32 = select 2147483647i, %37, %38
- ret %39
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl
deleted file mode 100644
index 5fa0561..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,64 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_4_1:u32 @offset(0), @location(0), @interpolate(flat)
- gl_Position:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %x_3:ptr<private, vec2<f32>, read_write> = var
- %x_4:ptr<private, u32, read_write> = var
- %gl_Position:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:f32 = load_vector_element %x_3, 0u
- %6:f32 = add %5, 1.02777779102325439453f
- %7:f32 = mul %6, 18.0f
- %8:f32 = sub %7, 1.0f
- %9:u32 = call %tint_f32_to_u32, %8
- %11:u32 = let %9
- %12:f32 = load_vector_element %x_3, 1u
- %13:f32 = add %12, 1.02777779102325439453f
- %14:f32 = mul %13, 18.0f
- %15:f32 = sub %14, 1.0f
- %16:u32 = call %tint_f32_to_u32, %15
- %17:u32 = mul %16, 36u
- %18:u32 = add %11, %17
- store %x_4, %18
- %19:f32 = load_vector_element %x_3, 0u
- %20:f32 = load_vector_element %x_3, 1u
- %21:vec4<f32> = construct %19, %20, 0.0f, 1.0f
- store %gl_Position, %21
- ret
- }
-}
-%tint_symbol = @vertex func(%x_3_param:vec2<f32> [@location(0)]):main_out {
- $B3: {
- store %x_3, %x_3_param
- %24:void = call %main_1
- %25:u32 = load %x_4
- %26:vec4<f32> = load %gl_Position
- %27:main_out = construct %25, %26
- ret %27
- }
-}
-%tint_f32_to_u32 = func(%value:f32):u32 {
- $B4: {
- %29:u32 = convert %value
- %30:bool = gte %value, 0.0f
- %31:u32 = select 0u, %29, %30
- %32:bool = lte %value, 4294967040.0f
- %33:u32 = select 4294967295u, %31, %32
- ret %33
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl
deleted file mode 100644
index df8c87a..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,68 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
- x_4_1:u32 @offset(0), @location(0), @interpolate(flat)
- gl_Position:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %x_3:ptr<private, vec2<f32>, read_write> = var
- %x_4:ptr<private, u32, read_write> = var
- %gl_Position:ptr<private, vec4<f32>, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:f32 = load_vector_element %x_3, 0u
- %x_30:f32 = let %5
- %7:f32 = load_vector_element %x_3, 1u
- %x_36:f32 = let %7
- %9:f32 = add %x_30, 1.02777779102325439453f
- %10:f32 = mul %9, 18.0f
- %11:f32 = sub %10, 1.0f
- %12:u32 = call %tint_f32_to_u32, %11
- %14:u32 = let %12
- %15:f32 = add %x_36, 1.02777779102325439453f
- %16:f32 = mul %15, 18.0f
- %17:f32 = sub %16, 1.0f
- %18:u32 = call %tint_f32_to_u32, %17
- %19:u32 = mul %18, 36u
- %20:u32 = add %14, %19
- store %x_4, %20
- %21:vec2<f32> = load %x_3
- %x_43:vec2<f32> = let %21
- %23:f32 = access %x_43, 0u
- %24:f32 = access %x_43, 1u
- %25:vec4<f32> = construct %23, %24, 0.0f, 1.0f
- store %gl_Position, %25
- ret
- }
-}
-%tint_symbol = @vertex func(%x_3_param:vec2<f32> [@location(0)]):main_out {
- $B3: {
- store %x_3, %x_3_param
- %28:void = call %main_1
- %29:u32 = load %x_4
- %30:vec4<f32> = load %gl_Position
- %31:main_out = construct %29, %30
- ret %31
- }
-}
-%tint_f32_to_u32 = func(%value:f32):u32 {
- $B4: {
- %33:u32 = convert %value
- %34:bool = gte %value, 0.0f
- %35:u32 = select 0u, %33, %34
- %36:bool = lte %value, 4294967040.0f
- %37:u32 = select 4294967295u, %35, %36
- ret %37
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl
deleted file mode 100644
index 96f0c80..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,65 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:f32 = load_vector_element %x_2, 0u
- %6:i32 = call %tint_f32_to_i32, %5
- %8:i32 = and %6, 1i
- %9:i32 = let %8
- %10:f32 = load_vector_element %x_2, 1u
- %11:i32 = call %tint_f32_to_i32, %10
- %12:i32 = and %11, 1i
- %13:i32 = add %9, %12
- %14:i32 = load %x_3
- %15:i32 = add %13, %14
- %16:i32 = let %15
- %17:f32 = load_vector_element %x_2, 2u
- %18:i32 = call %tint_f32_to_i32, %17
- %19:bool = eq %16, %18
- if %19 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- store %x_4, 1i
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %23:void = call %main_1
- %24:i32 = load %x_4
- %25:main_out = construct %24
- ret %25
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %27:i32 = convert %value
- %28:bool = gte %value, -2147483648.0f
- %29:i32 = select -2147483648i, %27, %28
- %30:bool = lte %value, 2147483520.0f
- %31:i32 = select 2147483647i, %29, %30
- ret %31
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl
deleted file mode 100644
index 118798a..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,68 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:vec4<f32> = load %x_2
- %x_16:vec4<f32> = let %5
- %7:i32 = load %x_3
- %x_26:i32 = let %7
- %9:f32 = access %x_16, 0u
- %10:i32 = call %tint_f32_to_i32, %9
- %12:i32 = and %10, 1i
- %13:i32 = let %12
- %14:f32 = access %x_16, 1u
- %15:i32 = call %tint_f32_to_i32, %14
- %16:i32 = and %15, 1i
- %17:i32 = add %13, %16
- %18:i32 = add %17, %x_26
- %19:i32 = let %18
- %20:f32 = access %x_16, 2u
- %21:i32 = call %tint_f32_to_i32, %20
- %22:bool = eq %19, %21
- if %22 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- store %x_4, 1i
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %26:void = call %main_1
- %27:i32 = load %x_4
- %28:main_out = construct %27
- ret %28
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %30:i32 = convert %value
- %31:bool = gte %value, -2147483648.0f
- %32:i32 = select -2147483648i, %30, %31
- %33:bool = lte %value, 2147483520.0f
- %34:i32 = select 2147483647i, %32, %33
- ret %34
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 7c69af4..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,60 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- out_data_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %out_data:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_is_odd:ptr<function, bool, read_write> = var
- %y_is_odd:ptr<function, bool, read_write> = var
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %7:i32 = call %tint_f32_to_i32, %6
- %9:i32 = and %7, 1i
- %10:bool = eq %9, 1i
- store %x_is_odd, %10
- %11:f32 = load_vector_element %gl_FragCoord, 1u
- %12:i32 = call %tint_f32_to_i32, %11
- %13:i32 = and %12, 1i
- %14:bool = eq %13, 1i
- store %y_is_odd, %14
- %15:bool = load %x_is_odd
- %16:bool = load %y_is_odd
- %17:bool = or %15, %16
- %18:i32 = select 0i, 1i, %17
- store %out_data, %18
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B3: {
- store %gl_FragCoord, %gl_FragCoord_param
- %21:void = call %main_1
- %22:i32 = load %out_data
- %23:main_out = construct %22
- ret %23
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B4: {
- %25:i32 = convert %value
- %26:bool = gte %value, -2147483648.0f
- %27:i32 = select -2147483648i, %25, %26
- %28:bool = lte %value, 2147483520.0f
- %29:i32 = select 2147483647i, %27, %28
- ret %29
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl
deleted file mode 100644
index cdd96cd..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,64 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- out_data_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
- %out_data:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_is_odd:ptr<function, bool, read_write> = var
- %y_is_odd:ptr<function, bool, read_write> = var
- %6:f32 = load_vector_element %gl_FragCoord, 0u
- %x_24:f32 = let %6
- %8:i32 = call %tint_f32_to_i32, %x_24
- %10:i32 = and %8, 1i
- %11:bool = eq %10, 1i
- store %x_is_odd, %11
- %12:f32 = load_vector_element %gl_FragCoord, 1u
- %x_29:f32 = let %12
- %14:i32 = call %tint_f32_to_i32, %x_29
- %15:i32 = and %14, 1i
- %16:bool = eq %15, 1i
- store %y_is_odd, %16
- %17:bool = load %x_is_odd
- %x_33:bool = let %17
- %19:bool = load %y_is_odd
- %x_34:bool = let %19
- %21:bool = or %x_33, %x_34
- %22:i32 = select 0i, 1i, %21
- store %out_data, %22
- ret
- }
-}
-%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
- $B3: {
- store %gl_FragCoord, %gl_FragCoord_param
- %25:void = call %main_1
- %26:i32 = load %out_data
- %27:main_out = construct %26
- ret %27
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B4: {
- %29:i32 = convert %value
- %30:bool = gte %value, -2147483648.0f
- %31:i32 = select -2147483648i, %29, %30
- %32:bool = lte %value, 2147483520.0f
- %33:i32 = select 2147483647i, %31, %32
- ret %33
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl
deleted file mode 100644
index eb52e3c..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,68 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:vec4<f32> = load %x_2
- %x_16:vec4<f32> = let %5
- %7:i32 = load %x_3
- %x_26:i32 = let %7
- store %x_4, 1i
- %9:f32 = access %x_16, 0u
- %10:i32 = call %tint_f32_to_i32, %9
- %12:i32 = and %10, 1i
- %13:i32 = let %12
- %14:f32 = access %x_16, 1u
- %15:i32 = call %tint_f32_to_i32, %14
- %16:i32 = and %15, 1i
- %17:i32 = add %13, %16
- %18:i32 = add %17, %x_26
- %19:i32 = let %18
- %20:f32 = access %x_16, 2u
- %21:i32 = call %tint_f32_to_i32, %20
- %22:bool = eq %19, %21
- if %22 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %26:void = call %main_1
- %27:i32 = load %x_4
- %28:main_out = construct %27
- ret %28
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %30:i32 = convert %value
- %31:bool = gte %value, -2147483648.0f
- %32:i32 = select -2147483648i, %30, %31
- %33:bool = lte %value, 2147483520.0f
- %34:i32 = select 2147483647i, %32, %33
- ret %34
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl
deleted file mode 100644
index eb52e3c..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,68 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %5:vec4<f32> = load %x_2
- %x_16:vec4<f32> = let %5
- %7:i32 = load %x_3
- %x_26:i32 = let %7
- store %x_4, 1i
- %9:f32 = access %x_16, 0u
- %10:i32 = call %tint_f32_to_i32, %9
- %12:i32 = and %10, 1i
- %13:i32 = let %12
- %14:f32 = access %x_16, 1u
- %15:i32 = call %tint_f32_to_i32, %14
- %16:i32 = and %15, 1i
- %17:i32 = add %13, %16
- %18:i32 = add %17, %x_26
- %19:i32 = let %18
- %20:f32 = access %x_16, 2u
- %21:i32 = call %tint_f32_to_i32, %20
- %22:bool = eq %19, %21
- if %22 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %26:void = call %main_1
- %27:i32 = load %x_4
- %28:main_out = construct %27
- ret %28
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %30:i32 = convert %value
- %31:bool = gte %value, -2147483648.0f
- %32:i32 = select -2147483648i, %30, %31
- %33:bool = lte %value, 2147483520.0f
- %34:i32 = select 2147483647i, %32, %33
- ret %34
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl
deleted file mode 100644
index 13659a2..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,75 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
- field0:array<i32> @offset(0)
-}
-
-main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
- %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- store %x_4, 1i
- %6:f32 = load_vector_element %x_2, 0u
- %7:i32 = call %tint_f32_to_i32, %6
- %x_27:i32 = let %7
- %10:f32 = load_vector_element %x_2, 1u
- %11:i32 = call %tint_f32_to_i32, %10
- %x_28:i32 = let %11
- %13:i32 = and %x_27, 1i
- %14:i32 = and %x_28, 1i
- %15:i32 = add %13, %14
- %16:i32 = load %x_3
- %17:i32 = add %15, %16
- %18:i32 = let %17
- %19:f32 = load_vector_element %x_2, 2u
- %20:i32 = call %tint_f32_to_i32, %19
- %21:bool = eq %18, %20
- if %21 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- %22:i32 = mul %x_28, 8i
- %23:i32 = add %x_27, %22
- %24:ptr<storage, i32, read_write> = access %x_5, 0u, %23
- store %24, %x_27
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %28:void = call %main_1
- %29:i32 = load %x_4
- %30:main_out = construct %29
- ret %30
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %32:i32 = convert %value
- %33:bool = gte %value, -2147483648.0f
- %34:i32 = select -2147483648i, %32, %33
- %35:bool = lte %value, 2147483520.0f
- %36:i32 = select 2147483647i, %34, %35
- ret %36
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl
deleted file mode 100644
index e359fb6..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,77 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
- field0:array<i32> @offset(0)
-}
-
-main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
- %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- store %x_4, 1i
- %6:vec4<f32> = load %x_2
- %x_23:vec4<f32> = let %6
- %8:f32 = access %x_23, 0u
- %9:i32 = call %tint_f32_to_i32, %8
- %x_27:i32 = let %9
- %12:f32 = access %x_23, 1u
- %13:i32 = call %tint_f32_to_i32, %12
- %x_28:i32 = let %13
- %15:i32 = load %x_3
- %x_33:i32 = let %15
- %17:i32 = and %x_27, 1i
- %18:i32 = and %x_28, 1i
- %19:i32 = add %17, %18
- %20:i32 = add %19, %x_33
- %21:f32 = access %x_23, 2u
- %22:i32 = call %tint_f32_to_i32, %21
- %23:bool = eq %20, %22
- if %23 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- %24:i32 = mul %x_28, 8i
- %25:i32 = add %x_27, %24
- %26:ptr<storage, i32, read_write> = access %x_5, 0u, %25
- store %26, %x_27
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %30:void = call %main_1
- %31:i32 = load %x_4
- %32:main_out = construct %31
- ret %32
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %34:i32 = convert %value
- %35:bool = gte %value, -2147483648.0f
- %36:i32 = select -2147483648i, %34, %35
- %37:bool = lte %value, 2147483520.0f
- %38:i32 = select 2147483647i, %36, %37
- ret %38
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl
deleted file mode 100644
index ba7eaf9..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,77 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
- field0:array<i32> @offset(0)
-}
-
-main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
- %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- store %x_4, 1i
- %6:vec4<f32> = load %x_2
- %x_23:vec4<f32> = let %6
- %8:f32 = load_vector_element %x_2, 0u
- %9:i32 = call %tint_f32_to_i32, %8
- %x_27:i32 = let %9
- %12:f32 = load_vector_element %x_2, 1u
- %13:i32 = call %tint_f32_to_i32, %12
- %x_28:i32 = let %13
- %15:i32 = load %x_3
- %x_33:i32 = let %15
- %17:i32 = mul %x_28, 8i
- %18:i32 = add %x_27, %17
- %19:ptr<storage, i32, read_write> = access %x_5, 0u, %18
- store %19, %x_27
- %20:i32 = and %x_27, 1i
- %21:i32 = and %x_28, 1i
- %22:i32 = add %20, %21
- %23:i32 = add %22, %x_33
- %24:f32 = access %x_23, 2u
- %25:i32 = call %tint_f32_to_i32, %24
- %26:bool = eq %23, %25
- if %26 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %30:void = call %main_1
- %31:i32 = load %x_4
- %32:main_out = construct %31
- ret %32
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %34:i32 = convert %value
- %35:bool = gte %value, -2147483648.0f
- %36:i32 = select -2147483648i, %34, %35
- %37:bool = lte %value, 2147483520.0f
- %38:i32 = select 2147483647i, %36, %37
- ret %38
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl
deleted file mode 100644
index 537fcfa..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,77 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
- field0:array<i32> @offset(0)
-}
-
-main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
- %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
- $B2: {
- store %x_4, 1i
- %6:vec4<f32> = load %x_2
- %x_23:vec4<f32> = let %6
- %8:f32 = access %x_23, 0u
- %9:i32 = call %tint_f32_to_i32, %8
- %x_27:i32 = let %9
- %12:f32 = access %x_23, 1u
- %13:i32 = call %tint_f32_to_i32, %12
- %x_28:i32 = let %13
- %15:i32 = load %x_3
- %x_33:i32 = let %15
- %17:i32 = mul %x_28, 8i
- %18:i32 = add %x_27, %17
- %19:ptr<storage, i32, read_write> = access %x_5, 0u, %18
- store %19, %x_27
- %20:i32 = and %x_27, 1i
- %21:i32 = and %x_28, 1i
- %22:i32 = add %20, %21
- %23:i32 = add %22, %x_33
- %24:f32 = access %x_23, 2u
- %25:i32 = call %tint_f32_to_i32, %24
- %26:bool = eq %23, %25
- if %26 [t: $B3] { # if_1
- $B3: { # true
- exit_if # if_1
- }
- }
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B4: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %30:void = call %main_1
- %31:i32 = load %x_4
- %32:main_out = construct %31
- ret %32
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B5: {
- %34:i32 = convert %value
- %35:bool = gte %value, -2147483648.0f
- %36:i32 = select -2147483648i, %34, %35
- %37:bool = lte %value, 2147483520.0f
- %38:i32 = select 2147483647i, %36, %37
- ret %38
- }
-}
-
-unhandled variable address space
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl
deleted file mode 100644
index 40c7b84..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,95 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_33:ptr<function, i32, read_write> = var
- %6:vec4<f32> = load %x_2
- %x_18:vec4<f32> = let %6
- %8:i32 = load %x_3
- %x_28:i32 = let %8
- store %x_33, 0i
- %10:f32 = access %x_18, 0u
- %11:i32 = call %tint_f32_to_i32, %10
- %13:i32 = and %11, 1i
- %14:i32 = let %13
- %15:f32 = access %x_18, 1u
- %16:i32 = call %tint_f32_to_i32, %15
- %17:i32 = and %16, 1i
- %18:i32 = add %14, %17
- %19:i32 = add %18, %x_28
- %20:i32 = let %19
- %21:f32 = access %x_18, 2u
- %22:i32 = call %tint_f32_to_i32, %21
- %23:bool = eq %20, %22
- if %23 [t: $B3] { # if_1
- $B3: { # true
- loop [b: $B4, c: $B5] { # loop_1
- $B4: { # body
- %x_34:ptr<function, i32, read_write> = var
- %25:i32 = load %x_33
- %26:u32 = bitcast %25
- %27:bool = lt %26, 10u
- if %27 [t: $B6, f: $B7] { # if_2
- $B6: { # true
- exit_if # if_2
- }
- $B7: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B5
- }
- $B5: { # continuing
- %28:i32 = load %x_33
- %29:i32 = add %28, 1i
- store %x_34, %29
- %30:i32 = load %x_34
- store %x_33, %30
- next_iteration # -> $B4
- }
- }
- exit_if # if_1
- }
- }
- store %x_4, 1i
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B8: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %34:void = call %main_1
- %35:i32 = load %x_4
- %36:main_out = construct %35
- ret %36
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B9: {
- %38:i32 = convert %value
- %39:bool = gte %value, -2147483648.0f
- %40:i32 = select -2147483648i, %38, %39
- %41:bool = lte %value, 2147483520.0f
- %42:i32 = select 2147483647i, %40, %41
- ret %42
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl
deleted file mode 100644
index 2a16ab4..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,95 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
- x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
-}
-
-$B1: { # root
- %x_2:ptr<private, vec4<f32>, read_write> = var
- %x_3:ptr<private, i32, read_write> = var
- %x_4:ptr<private, i32, read_write> = var
-}
-
-%main_1 = func():void {
- $B2: {
- %x_33_phi:ptr<function, i32, read_write> = var
- %6:vec4<f32> = load %x_2
- %x_18:vec4<f32> = let %6
- %8:i32 = load %x_3
- %x_28:i32 = let %8
- store %x_33_phi, 0i
- %10:f32 = access %x_18, 0u
- %11:i32 = call %tint_f32_to_i32, %10
- %13:i32 = and %11, 1i
- %14:i32 = let %13
- %15:f32 = access %x_18, 1u
- %16:i32 = call %tint_f32_to_i32, %15
- %17:i32 = and %16, 1i
- %18:i32 = add %14, %17
- %19:i32 = add %18, %x_28
- %20:i32 = let %19
- %21:f32 = access %x_18, 2u
- %22:i32 = call %tint_f32_to_i32, %21
- %23:bool = eq %20, %22
- if %23 [t: $B3] { # if_1
- $B3: { # true
- loop [b: $B4, c: $B5] { # loop_1
- $B4: { # body
- %x_34:ptr<function, i32, read_write> = var
- %25:i32 = load %x_33_phi
- %x_33:i32 = let %25
- %27:u32 = bitcast %x_33
- %28:bool = lt %27, 10u
- if %28 [t: $B6, f: $B7] { # if_2
- $B6: { # true
- exit_if # if_2
- }
- $B7: { # false
- exit_loop # loop_1
- }
- }
- continue # -> $B5
- }
- $B5: { # continuing
- %29:i32 = add %x_33, 1i
- store %x_34, %29
- %30:i32 = load %x_34
- store %x_33_phi, %30
- next_iteration # -> $B4
- }
- }
- exit_if # if_1
- }
- }
- store %x_4, 1i
- ret
- }
-}
-%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
- $B8: {
- store %x_2, %x_2_param
- store %x_3, %x_3_param
- %34:void = call %main_1
- %35:i32 = load %x_4
- %36:main_out = construct %35
- ret %36
- }
-}
-%tint_f32_to_i32 = func(%value:f32):i32 {
- $B9: {
- %38:i32 = convert %value
- %39:bool = gte %value, -2147483648.0f
- %40:i32 = select -2147483648i, %38, %39
- %41:bool = lte %value, 2147483520.0f
- %42:i32 = select 2147483647i, %40, %41
- ret %42
- }
-}
-
-invalid entry point IO struct uses
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************