spirv: Use generic transform to process shader IO
The refactored CanonicalizeEntryPointIO transform makes it much easier
to handle SPIR-V style IO as well, and doing this removes a lot of
duplicated code. Remove all of the SPIR-V transform code for shader IO
and vertex point size.
Bug: tint:920
Change-Id: Id1b97517619b4d2fd09b45d5aee848259f3dfa77
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60840
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
index 2180701..72245ac 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
@@ -1,41 +1,40 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 42
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
- OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
OpEntryPoint Fragment %fragment_main "fragment_main"
OpEntryPoint GLCompute %compute_main "compute_main"
OpExecutionMode %fragment_main OriginUpperLeft
OpExecutionMode %compute_main LocalSize 1 1 1
- OpName %tint_pointsize "tint_pointsize"
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
OpName %arg_0 "arg_0"
- OpName %tint_symbol_1 "tint_symbol_1"
OpName %textureLoad_7c90e5 "textureLoad_7c90e5"
OpName %res "res"
- OpName %tint_symbol_2 "tint_symbol_2"
- OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main_inner "vertex_main_inner"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
- OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %arg_0 DescriptorSet 1
OpDecorate %arg_0 Binding 0
- OpDecorate %tint_symbol_1 BuiltIn Position
%float = OpTypeFloat 32
-%_ptr_Output_float = OpTypePointer Output %float
- %4 = OpConstantNull %float
-%tint_pointsize = OpVariable %_ptr_Output_float Output %4
- %uint = OpTypeInt 32 0
- %7 = OpTypeImage %uint 2D 0 1 0 1 Unknown
-%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7
- %arg_0 = OpVariable %_ptr_UniformConstant_7 UniformConstant
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
- %12 = OpConstantNull %v4float
-%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+ %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+ %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%void = OpTypeVoid
%13 = OpTypeFunction %void
%v4uint = OpTypeVector %uint 4
@@ -46,36 +45,35 @@
%24 = OpConstantComposite %v3int %int_0 %int_0 %int_1
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
%27 = OpConstantNull %v4uint
- %28 = OpTypeFunction %void %v4float
+ %28 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1
%textureLoad_7c90e5 = OpFunction %void None %13
%16 = OpLabel
%res = OpVariable %_ptr_Function_v4uint Function %27
- %19 = OpLoad %7 %arg_0
+ %19 = OpLoad %11 %arg_0
%17 = OpImageFetch %v4uint %19 %24 Lod %int_0
OpStore %res %17
OpReturn
OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %28
-%tint_symbol = OpFunctionParameter %v4float
- %31 = OpLabel
- OpStore %tint_symbol_1 %tint_symbol
- OpReturn
+%vertex_main_inner = OpFunction %v4float None %28
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %textureLoad_7c90e5
+ OpReturnValue %5
OpFunctionEnd
%vertex_main = OpFunction %void None %13
%33 = OpLabel
- OpStore %tint_pointsize %float_1
- %35 = OpFunctionCall %void %textureLoad_7c90e5
- %36 = OpFunctionCall %void %tint_symbol_2 %12
+ %34 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %34
+ OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %13
- %38 = OpLabel
- %39 = OpFunctionCall %void %textureLoad_7c90e5
+ %37 = OpLabel
+ %38 = OpFunctionCall %void %textureLoad_7c90e5
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %13
- %41 = OpLabel
- %42 = OpFunctionCall %void %textureLoad_7c90e5
+ %40 = OpLabel
+ %41 = OpFunctionCall %void %textureLoad_7c90e5
OpReturn
OpFunctionEnd