test: Add missing .expected files
Theses were missing from https://dawn-review.googlesource.com/c/tint/+/56140
Change-Id: Iece1c69923024da2ce9473e205c18eb9568872b9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/56548
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/test/bug/tint/534.wgsl.expected.hlsl b/test/bug/tint/534.wgsl.expected.hlsl
new file mode 100644
index 0000000..19f5f6b
--- /dev/null
+++ b/test/bug/tint/534.wgsl.expected.hlsl
@@ -0,0 +1,67 @@
+void Set_uint4(inout uint4 vec, int idx, uint val) {
+ switch(idx) {
+ case 0: vec[0] = val; break;
+ case 1: vec[1] = val; break;
+ case 2: vec[2] = val; break;
+ case 3: vec[3] = val; break;
+ }
+}
+
+Texture2D<float4> src : register(t0, space0);
+Texture2D<float4> tint_symbol : register(t1, space0);
+RWByteAddressBuffer output : register(u2, space0);
+cbuffer cbuffer_uniforms : register(b3, space0) {
+ uint4 uniforms[1];
+};
+
+uint ConvertToFp16FloatValue(float fp32) {
+ return 1u;
+}
+
+struct tint_symbol_2 {
+ uint3 GlobalInvocationID : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_2 tint_symbol_1) {
+ const uint3 GlobalInvocationID = tint_symbol_1.GlobalInvocationID;
+ int2 tint_tmp;
+ src.GetDimensions(tint_tmp.x, tint_tmp.y);
+ int2 size = tint_tmp;
+ int2 dstTexCoord = int2(GlobalInvocationID.xy);
+ int2 srcTexCoord = dstTexCoord;
+ const int scalar_offset = (0u) / 4;
+ if ((uniforms[scalar_offset / 4][scalar_offset % 4] == 1u)) {
+ srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
+ }
+ float4 srcColor = src.Load(int3(srcTexCoord, 0));
+ float4 dstColor = tint_symbol.Load(int3(dstTexCoord, 0));
+ bool success = true;
+ uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
+ uint4 dstColorBits = uint4(dstColor);
+ {
+ uint i = 0u;
+ while (true) {
+ const int scalar_offset_1 = (12u) / 4;
+ if (!((i < uniforms[scalar_offset_1 / 4][scalar_offset_1 % 4]))) {
+ break;
+ }
+ Set_uint4(srcColorBits, i, ConvertToFp16FloatValue(srcColor[i]));
+ bool tint_tmp_1 = success;
+ if (tint_tmp_1) {
+ tint_tmp_1 = (srcColorBits[i] == dstColorBits[i]);
+ }
+ success = (tint_tmp_1);
+ {
+ i = (i + 1u);
+ }
+ }
+ }
+ uint outputIndex = ((GlobalInvocationID.y * uint(size.x)) + GlobalInvocationID.x);
+ if (success) {
+ output.Store((4u * outputIndex), asuint(uint(1)));
+ } else {
+ output.Store((4u * outputIndex), asuint(uint(0)));
+ }
+ return;
+}
diff --git a/test/bug/tint/534.wgsl.expected.msl b/test/bug/tint/534.wgsl.expected.msl
new file mode 100644
index 0000000..429c94b
--- /dev/null
+++ b/test/bug/tint/534.wgsl.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct Uniforms {
+ /* 0x0000 */ uint dstTextureFlipY;
+ /* 0x0004 */ uint isFloat16;
+ /* 0x0008 */ uint isRGB10A2Unorm;
+ /* 0x000c */ uint channelCount;
+};
+struct OutputBuf {
+ /* 0x0000 */ uint result[1];
+};
+
+uint ConvertToFp16FloatValue(float fp32) {
+ return 1u;
+}
+
+kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_2 [[texture(0)]], texture2d<float, access::sample> tint_symbol_3 [[texture(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(3)]], device OutputBuf& output [[buffer(2)]]) {
+ int2 size = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
+ int2 dstTexCoord = int2(GlobalInvocationID.xy);
+ int2 srcTexCoord = dstTexCoord;
+ if ((uniforms.dstTextureFlipY == 1u)) {
+ srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
+ }
+ float4 srcColor = tint_symbol_2.read(uint2(srcTexCoord), 0);
+ float4 dstColor = tint_symbol_3.read(uint2(dstTexCoord), 0);
+ bool success = true;
+ uint4 srcColorBits = 0u;
+ uint4 dstColorBits = uint4(dstColor);
+ {
+ uint i = 0u;
+ while (true) {
+ if (!((i < uniforms.channelCount))) {
+ break;
+ }
+ srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
+ success = (success && (srcColorBits[i] == dstColorBits[i]));
+ {
+ i = (i + 1u);
+ }
+ }
+ }
+ uint outputIndex = ((GlobalInvocationID.y * uint(size.x)) + GlobalInvocationID.x);
+ if (success) {
+ output.result[outputIndex] = uint(1);
+ } else {
+ output.result[outputIndex] = uint(0);
+ }
+ return;
+}
+
diff --git a/test/bug/tint/534.wgsl.expected.spvasm b/test/bug/tint/534.wgsl.expected.spvasm
new file mode 100644
index 0000000..9f983e6
--- /dev/null
+++ b/test/bug/tint/534.wgsl.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 135
+; Schema: 0
+ OpCapability Shader
+ OpCapability ImageQuery
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint GLCompute %main "main" %tint_symbol
+ OpExecutionMode %main LocalSize 1 1 1
+ OpName %src "src"
+ OpName %dst "dst"
+ OpName %OutputBuf "OutputBuf"
+ OpMemberName %OutputBuf 0 "result"
+ OpName %output "output"
+ OpName %Uniforms "Uniforms"
+ OpMemberName %Uniforms 0 "dstTextureFlipY"
+ OpMemberName %Uniforms 1 "isFloat16"
+ OpMemberName %Uniforms 2 "isRGB10A2Unorm"
+ OpMemberName %Uniforms 3 "channelCount"
+ OpName %uniforms "uniforms"
+ OpName %tint_symbol "tint_symbol"
+ OpName %ConvertToFp16FloatValue "ConvertToFp16FloatValue"
+ OpName %fp32 "fp32"
+ OpName %main "main"
+ OpName %size "size"
+ OpName %dstTexCoord "dstTexCoord"
+ OpName %srcTexCoord "srcTexCoord"
+ OpName %srcColor "srcColor"
+ OpName %dstColor "dstColor"
+ OpName %success "success"
+ OpName %srcColorBits "srcColorBits"
+ OpName %dstColorBits "dstColorBits"
+ OpName %i "i"
+ OpName %outputIndex "outputIndex"
+ OpDecorate %src DescriptorSet 0
+ OpDecorate %src Binding 0
+ OpDecorate %dst DescriptorSet 0
+ OpDecorate %dst Binding 1
+ OpDecorate %OutputBuf Block
+ OpMemberDecorate %OutputBuf 0 Offset 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpDecorate %output DescriptorSet 0
+ OpDecorate %output Binding 2
+ OpDecorate %Uniforms Block
+ OpMemberDecorate %Uniforms 0 Offset 0
+ OpMemberDecorate %Uniforms 1 Offset 4
+ OpMemberDecorate %Uniforms 2 Offset 8
+ OpMemberDecorate %Uniforms 3 Offset 12
+ OpDecorate %uniforms NonWritable
+ OpDecorate %uniforms DescriptorSet 0
+ OpDecorate %uniforms Binding 3
+ OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+ %float = OpTypeFloat 32
+ %3 = OpTypeImage %float 2D 0 0 0 1 Unknown
+%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
+ %src = OpVariable %_ptr_UniformConstant_3 UniformConstant
+ %dst = OpVariable %_ptr_UniformConstant_3 UniformConstant
+ %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+ %OutputBuf = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_OutputBuf = OpTypePointer StorageBuffer %OutputBuf
+ %output = OpVariable %_ptr_StorageBuffer_OutputBuf StorageBuffer
+ %Uniforms = OpTypeStruct %uint %uint %uint %uint
+%_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms
+ %uniforms = OpVariable %_ptr_Uniform_Uniforms Uniform
+ %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+ %17 = OpTypeFunction %uint %float
+ %uint_1 = OpConstant %uint 1
+ %void = OpTypeVoid
+ %22 = OpTypeFunction %void
+ %int = OpTypeInt 32 1
+ %v2int = OpTypeVector %int 2
+ %int_0 = OpConstant %int 0
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+ %33 = OpConstantNull %v2int
+ %v2uint = OpTypeVector %uint 2
+ %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+ %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+ %int_1 = OpConstant %int 1
+ %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+ %64 = OpConstantNull %v4float
+ %true = OpConstantTrue %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+ %72 = OpConstantNull %bool
+ %v4uint = OpTypeVector %uint 4
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+ %76 = OpConstantNull %v4uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %82 = OpConstantNull %uint
+ %uint_3 = OpConstant %uint 3
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%ConvertToFp16FloatValue = OpFunction %uint None %17
+ %fp32 = OpFunctionParameter %float
+ %20 = OpLabel
+ OpReturnValue %uint_1
+ OpFunctionEnd
+ %main = OpFunction %void None %22
+ %25 = OpLabel
+ %size = OpVariable %_ptr_Function_v2int Function %33
+%dstTexCoord = OpVariable %_ptr_Function_v2int Function %33
+%srcTexCoord = OpVariable %_ptr_Function_v2int Function %33
+ %srcColor = OpVariable %_ptr_Function_v4float Function %64
+ %dstColor = OpVariable %_ptr_Function_v4float Function %64
+ %success = OpVariable %_ptr_Function_bool Function %72
+%srcColorBits = OpVariable %_ptr_Function_v4uint Function %76
+%dstColorBits = OpVariable %_ptr_Function_v4uint Function %76
+ %i = OpVariable %_ptr_Function_uint Function %82
+%outputIndex = OpVariable %_ptr_Function_uint Function %82
+ %29 = OpLoad %3 %src
+ %26 = OpImageQuerySizeLod %v2int %29 %int_0
+ OpStore %size %26
+ %36 = OpLoad %v3uint %tint_symbol
+ %37 = OpVectorShuffle %v2uint %36 %36 0 1
+ %34 = OpBitcast %v2int %37
+ OpStore %dstTexCoord %34
+ %39 = OpLoad %v2int %dstTexCoord
+ OpStore %srcTexCoord %39
+ %43 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
+ %44 = OpLoad %uint %43
+ %45 = OpIEqual %bool %44 %uint_1
+ OpSelectionMerge %47 None
+ OpBranchConditional %45 %48 %47
+ %48 = OpLabel
+ %50 = OpAccessChain %_ptr_Function_int %srcTexCoord %uint_1
+ %51 = OpAccessChain %_ptr_Function_int %size %uint_1
+ %52 = OpLoad %int %51
+ %53 = OpAccessChain %_ptr_Function_int %dstTexCoord %uint_1
+ %54 = OpLoad %int %53
+ %55 = OpISub %int %52 %54
+ %57 = OpISub %int %55 %int_1
+ OpStore %50 %57
+ OpBranch %47
+ %47 = OpLabel
+ %60 = OpLoad %3 %src
+ %61 = OpLoad %v2int %srcTexCoord
+ %58 = OpImageFetch %v4float %60 %61 Lod %int_0
+ OpStore %srcColor %58
+ %66 = OpLoad %3 %dst
+ %67 = OpLoad %v2int %dstTexCoord
+ %65 = OpImageFetch %v4float %66 %67 Lod %int_0
+ OpStore %dstColor %65
+ OpStore %success %true
+ %78 = OpLoad %v4float %dstColor
+ %77 = OpConvertFToU %v4uint %78
+ OpStore %dstColorBits %77
+ OpStore %i %uint_0
+ OpBranch %83
+ %83 = OpLabel
+ OpLoopMerge %84 %85 None
+ OpBranch %86
+ %86 = OpLabel
+ %88 = OpLoad %uint %i
+ %90 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3
+ %91 = OpLoad %uint %90
+ %92 = OpULessThan %bool %88 %91
+ %87 = OpLogicalNot %bool %92
+ OpSelectionMerge %93 None
+ OpBranchConditional %87 %94 %93
+ %94 = OpLabel
+ OpBranch %84
+ %93 = OpLabel
+ %95 = OpLoad %uint %i
+ %96 = OpAccessChain %_ptr_Function_uint %srcColorBits %95
+ %98 = OpLoad %uint %i
+ %100 = OpAccessChain %_ptr_Function_float %srcColor %98
+ %101 = OpLoad %float %100
+ %97 = OpFunctionCall %uint %ConvertToFp16FloatValue %101
+ OpStore %96 %97
+ %102 = OpLoad %bool %success
+ OpSelectionMerge %103 None
+ OpBranchConditional %102 %104 %103
+ %104 = OpLabel
+ %105 = OpLoad %uint %i
+ %106 = OpAccessChain %_ptr_Function_uint %srcColorBits %105
+ %107 = OpLoad %uint %106
+ %108 = OpLoad %uint %i
+ %109 = OpAccessChain %_ptr_Function_uint %dstColorBits %108
+ %110 = OpLoad %uint %109
+ %111 = OpIEqual %bool %107 %110
+ OpBranch %103
+ %103 = OpLabel
+ %112 = OpPhi %bool %102 %93 %111 %104
+ OpStore %success %112
+ OpBranch %85
+ %85 = OpLabel
+ %113 = OpLoad %uint %i
+ %114 = OpIAdd %uint %113 %uint_1
+ OpStore %i %114
+ OpBranch %83
+ %84 = OpLabel
+ %116 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1
+ %117 = OpLoad %uint %116
+ %119 = OpAccessChain %_ptr_Function_int %size %uint_0
+ %120 = OpLoad %int %119
+ %118 = OpBitcast %uint %120
+ %121 = OpIMul %uint %117 %118
+ %122 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0
+ %123 = OpLoad %uint %122
+ %124 = OpIAdd %uint %121 %123
+ OpStore %outputIndex %124
+ %126 = OpLoad %bool %success
+ OpSelectionMerge %127 None
+ OpBranchConditional %126 %128 %129
+ %128 = OpLabel
+ %130 = OpLoad %uint %outputIndex
+ %132 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %130
+ OpStore %132 %uint_1
+ OpBranch %127
+ %129 = OpLabel
+ %133 = OpLoad %uint %outputIndex
+ %134 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %133
+ OpStore %134 %uint_0
+ OpBranch %127
+ %127 = OpLabel
+ OpReturn
+ OpFunctionEnd
diff --git a/test/bug/tint/534.wgsl.expected.wgsl b/test/bug/tint/534.wgsl.expected.wgsl
new file mode 100644
index 0000000..91a330b
--- /dev/null
+++ b/test/bug/tint/534.wgsl.expected.wgsl
@@ -0,0 +1,59 @@
+[[block]]
+struct Uniforms {
+ dstTextureFlipY : u32;
+ isFloat16 : u32;
+ isRGB10A2Unorm : u32;
+ channelCount : u32;
+};
+
+[[block]]
+struct OutputBuf {
+ result : [[stride(4)]] array<u32>;
+};
+
+[[group(0), binding(0)]] var src : texture_2d<f32>;
+
+[[group(0), binding(1)]] var dst : texture_2d<f32>;
+
+[[group(0), binding(2)]] var<storage, read_write> output : OutputBuf;
+
+[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+
+fn ConvertToFp16FloatValue(fp32 : f32) -> u32 {
+ return 1u;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+ var size : vec2<i32> = textureDimensions(src);
+ var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
+ var srcTexCoord : vec2<i32> = dstTexCoord;
+ if ((uniforms.dstTextureFlipY == 1u)) {
+ srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
+ }
+ var srcColor : vec4<f32> = textureLoad(src, srcTexCoord, 0);
+ var dstColor : vec4<f32> = textureLoad(dst, dstTexCoord, 0);
+ var success : bool = true;
+ var srcColorBits : vec4<u32>;
+ var dstColorBits : vec4<u32> = vec4<u32>(dstColor);
+ {
+ var i : u32 = 0u;
+ loop {
+ if (!((i < uniforms.channelCount))) {
+ break;
+ }
+ srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
+ success = (success && (srcColorBits[i] == dstColorBits[i]));
+
+ continuing {
+ i = (i + 1u);
+ }
+ }
+ }
+ var outputIndex : u32 = ((GlobalInvocationID.y * u32(size.x)) + GlobalInvocationID.x);
+ if (success) {
+ output.result[outputIndex] = u32(1);
+ } else {
+ output.result[outputIndex] = u32(0);
+ }
+}