tools: Return position from generated vertex shaders

This is required to generate valid MSL code, and will soon be
validated by Tint too.

Change-Id: I4c5f5c4ecb1c91131c934de1132217d9f6be1f8e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53420
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.spvasm b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.spvasm
index 3c4624c..e517f8c 100644
--- a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.spvasm
@@ -1,19 +1,22 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 28
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
                OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
+               OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
                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 %arg_0 "arg_0"
+               OpName %tint_symbol_1 "tint_symbol_1"
                OpName %textureStore_2ed2a3 "textureStore_2ed2a3"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
                OpName %vertex_main "vertex_main"
                OpName %fragment_main "fragment_main"
                OpName %compute_main "compute_main"
@@ -21,6 +24,7 @@
                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
@@ -28,32 +32,42 @@
           %7 = OpTypeImage %float 1D 0 0 0 2 Rgba8Snorm
 %_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7
       %arg_0 = OpVariable %_ptr_UniformConstant_7 UniformConstant
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %11 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
        %void = OpTypeVoid
-          %8 = OpTypeFunction %void
+         %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
-    %v4float = OpTypeVector %float 4
-         %17 = OpConstantNull %v4float
+         %20 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%textureStore_2ed2a3 = OpFunction %void None %8
-         %11 = OpLabel
-         %13 = OpLoad %7 %arg_0
-               OpImageWrite %13 %int_1 %17
+%textureStore_2ed2a3 = OpFunction %void None %12
+         %15 = OpLabel
+         %17 = OpLoad %7 %arg_0
+               OpImageWrite %17 %int_1 %11
                OpReturn
                OpFunctionEnd
-%vertex_main = OpFunction %void None %8
-         %19 = OpLabel
-               OpStore %tint_pointsize %float_1
-         %21 = OpFunctionCall %void %textureStore_2ed2a3
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %8
+%tint_symbol_2 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %v4float
          %23 = OpLabel
-         %24 = OpFunctionCall %void %textureStore_2ed2a3
+               OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
-%compute_main = OpFunction %void None %8
-         %26 = OpLabel
+%vertex_main = OpFunction %void None %12
+         %25 = OpLabel
+               OpStore %tint_pointsize %float_1
          %27 = OpFunctionCall %void %textureStore_2ed2a3
+         %28 = OpFunctionCall %void %tint_symbol_2 %11
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %textureStore_2ed2a3
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_2ed2a3
                OpReturn
                OpFunctionEnd