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/textureStore/6cff2e.wgsl.expected.spvasm b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.spvasm
index 30fbe9b..8e80a59 100644
--- a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.spvasm
@@ -1,41 +1,40 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 39
+; Bound: 38
; 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 %textureStore_6cff2e "textureStore_6cff2e"
- 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 NonReadable
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 0 0 2 R32ui
-%_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 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+ %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%void = OpTypeVoid
%13 = OpTypeFunction %void
%int = OpTypeInt 32 1
@@ -43,34 +42,33 @@
%21 = OpConstantNull %v2int
%v4uint = OpTypeVector %uint 4
%23 = OpConstantNull %v4uint
- %24 = OpTypeFunction %void %v4float
+ %24 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1
%textureStore_6cff2e = OpFunction %void None %13
%16 = OpLabel
- %18 = OpLoad %7 %arg_0
+ %18 = OpLoad %11 %arg_0
OpImageWrite %18 %21 %23
OpReturn
OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %24
-%tint_symbol = OpFunctionParameter %v4float
- %27 = OpLabel
- OpStore %tint_symbol_1 %tint_symbol
- OpReturn
+%vertex_main_inner = OpFunction %v4float None %24
+ %26 = OpLabel
+ %27 = OpFunctionCall %void %textureStore_6cff2e
+ OpReturnValue %5
OpFunctionEnd
%vertex_main = OpFunction %void None %13
%29 = OpLabel
- OpStore %tint_pointsize %float_1
- %31 = OpFunctionCall %void %textureStore_6cff2e
- %32 = OpFunctionCall %void %tint_symbol_2 %12
+ %30 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %30
+ OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %13
- %34 = OpLabel
- %35 = OpFunctionCall %void %textureStore_6cff2e
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %textureStore_6cff2e
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %13
- %37 = OpLabel
- %38 = OpFunctionCall %void %textureStore_6cff2e
+ %36 = OpLabel
+ %37 = OpFunctionCall %void %textureStore_6cff2e
OpReturn
OpFunctionEnd