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/textureSampleLevel/47daa4.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
index 237ca8a..c42defb 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
@@ -1,11 +1,11 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 49
 ; Schema: 0
                OpCapability Shader
                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
@@ -13,8 +13,11 @@
                OpName %tint_pointsize "tint_pointsize"
                OpName %arg_0 "arg_0"
                OpName %arg_1 "arg_1"
+               OpName %tint_symbol_1 "tint_symbol_1"
                OpName %textureSampleLevel_47daa4 "textureSampleLevel_47daa4"
                OpName %res "res"
+               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"
@@ -23,6 +26,7 @@
                OpDecorate %arg_0 Binding 0
                OpDecorate %arg_1 DescriptorSet 1
                OpDecorate %arg_1 Binding 1
+               OpDecorate %tint_symbol_1 BuiltIn Position
       %float = OpTypeFloat 32
 %_ptr_Output_float = OpTypePointer Output %float
           %4 = OpConstantNull %float
@@ -33,43 +37,54 @@
          %10 = OpTypeSampler
 %_ptr_UniformConstant_10 = OpTypePointer UniformConstant %10
       %arg_1 = OpVariable %_ptr_UniformConstant_10 UniformConstant
-       %void = OpTypeVoid
-         %11 = OpTypeFunction %void
     %v4float = OpTypeVector %float 4
-         %20 = OpTypeSampledImage %7
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %14 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %14
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+         %23 = OpTypeSampledImage %7
     %v2float = OpTypeVector %float 2
-         %23 = OpConstantNull %v2float
+         %26 = OpConstantNull %v2float
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
       %v2int = OpTypeVector %int 2
-         %28 = OpConstantNull %v2int
+         %31 = OpConstantNull %v2int
 %_ptr_Function_float = OpTypePointer Function %float
+         %34 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%textureSampleLevel_47daa4 = OpFunction %void None %11
-         %14 = OpLabel
+%textureSampleLevel_47daa4 = OpFunction %void None %15
+         %18 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %4
-         %18 = OpLoad %10 %arg_1
-         %19 = OpLoad %7 %arg_0
-         %21 = OpSampledImage %20 %19 %18
-         %24 = OpConvertSToF %float %int_1
-         %16 = OpImageSampleExplicitLod %v4float %21 %23 Lod|ConstOffset %24 %28
-         %15 = OpCompositeExtract %float %16 0
-               OpStore %res %15
+         %21 = OpLoad %10 %arg_1
+         %22 = OpLoad %7 %arg_0
+         %24 = OpSampledImage %23 %22 %21
+         %27 = OpConvertSToF %float %int_1
+         %20 = OpImageSampleExplicitLod %v4float %24 %26 Lod|ConstOffset %27 %31
+         %19 = OpCompositeExtract %float %20 0
+               OpStore %res %19
                OpReturn
                OpFunctionEnd
-%vertex_main = OpFunction %void None %11
-         %32 = OpLabel
-               OpStore %tint_pointsize %float_1
-         %34 = OpFunctionCall %void %textureSampleLevel_47daa4
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %v4float
+         %37 = OpLabel
+               OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
-%fragment_main = OpFunction %void None %11
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureSampleLevel_47daa4
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %11
+%vertex_main = OpFunction %void None %15
          %39 = OpLabel
-         %40 = OpFunctionCall %void %textureSampleLevel_47daa4
+               OpStore %tint_pointsize %float_1
+         %41 = OpFunctionCall %void %textureSampleLevel_47daa4
+         %42 = OpFunctionCall %void %tint_symbol_2 %14
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %15
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureSampleLevel_47daa4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %15
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureSampleLevel_47daa4
                OpReturn
                OpFunctionEnd