1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 62
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint Vertex %main "main" %_ %gl_VertexIndex %a_position
10               OpSource GLSL 450
11               OpName %main "main"
12               OpName %gl_PerVertex "gl_PerVertex"
13               OpMemberName %gl_PerVertex 0 "gl_Position"
14               OpMemberName %gl_PerVertex 1 "gl_PointSize"
15               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
16               OpMemberName %gl_PerVertex 3 "gl_CullDistance"
17               OpName %_ ""
18               OpName %Struct "Struct"
19               OpMemberName %Struct 0 "flags"
20               OpName %defaultUniformsVS "defaultUniformsVS"
21               OpMemberName %defaultUniformsVS 0 "flags"
22               OpMemberName %defaultUniformsVS 1 "uquad"
23               OpMemberName %defaultUniformsVS 2 "umatrix"
24               OpName %__0 ""
25               OpName %gl_VertexIndex "gl_VertexIndex"
26               OpName %a_position "a_position"
27               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
28               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
29               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
30               OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
31               OpDecorate %gl_PerVertex Block
32               OpDecorate %_arr_uint_uint_1 ArrayStride 16
33               OpMemberDecorate %Struct 0 Offset 0
34               OpDecorate %_arr_v2float_uint_4 ArrayStride 16
35               OpMemberDecorate %defaultUniformsVS 0 Offset 0
36               OpMemberDecorate %defaultUniformsVS 1 Offset 16
37               OpMemberDecorate %defaultUniformsVS 2 ColMajor
38               OpMemberDecorate %defaultUniformsVS 2 Offset 80
39               OpMemberDecorate %defaultUniformsVS 2 MatrixStride 16
40               OpDecorate %defaultUniformsVS Block
41               OpDecorate %__0 DescriptorSet 0
42               OpDecorate %__0 Binding 0
43               OpDecorate %gl_VertexIndex BuiltIn VertexIndex
44               OpDecorate %a_position Location 0
45       %void = OpTypeVoid
46          %3 = OpTypeFunction %void
47      %float = OpTypeFloat 32
48    %v4float = OpTypeVector %float 4
49       %uint = OpTypeInt 32 0
50     %uint_1 = OpConstant %uint 1
51%_arr_float_uint_1 = OpTypeArray %float %uint_1
52%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
53%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
54          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
55        %int = OpTypeInt 32 1
56      %int_0 = OpConstant %int 0
57%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
58     %Struct = OpTypeStruct %_arr_uint_uint_1
59    %v2float = OpTypeVector %float 2
60     %uint_4 = OpConstant %uint 4
61%_arr_v2float_uint_4 = OpTypeArray %v2float %uint_4
62%mat4v4float = OpTypeMatrix %v4float 4
63%defaultUniformsVS = OpTypeStruct %Struct %_arr_v2float_uint_4 %mat4v4float
64%_ptr_Uniform_defaultUniformsVS = OpTypePointer Uniform %defaultUniformsVS
65        %__0 = OpVariable %_ptr_Uniform_defaultUniformsVS Uniform
66      %int_2 = OpConstant %int 2
67%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
68      %int_1 = OpConstant %int 1
69%_ptr_Input_int = OpTypePointer Input %int
70%gl_VertexIndex = OpVariable %_ptr_Input_int Input
71%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
72%_ptr_Input_v4float = OpTypePointer Input %v4float
73 %a_position = OpVariable %_ptr_Input_v4float Input
74     %uint_2 = OpConstant %uint 2
75%_ptr_Input_float = OpTypePointer Input %float
76     %uint_3 = OpConstant %uint 3
77%_ptr_Output_v4float = OpTypePointer Output %v4float
78%_ptr_Uniform_uint = OpTypePointer Uniform %uint
79       %bool = OpTypeBool
80     %uint_0 = OpConstant %uint 0
81    %float_0 = OpConstant %float 0
82%_ptr_Output_float = OpTypePointer Output %float
83       %main = OpFunction %void None %3
84          %5 = OpLabel
85         %27 = OpAccessChain %_ptr_Uniform_mat4v4float %__0 %int_2
86         %28 = OpLoad %mat4v4float %27
87         %32 = OpLoad %int %gl_VertexIndex
88         %34 = OpAccessChain %_ptr_Uniform_v2float %__0 %int_1 %32
89         %35 = OpLoad %v2float %34
90         %40 = OpAccessChain %_ptr_Input_float %a_position %uint_2
91         %41 = OpLoad %float %40
92         %43 = OpAccessChain %_ptr_Input_float %a_position %uint_3
93         %44 = OpLoad %float %43
94         %45 = OpCompositeExtract %float %35 0
95         %46 = OpCompositeExtract %float %35 1
96         %47 = OpCompositeConstruct %v4float %45 %46 %41 %44
97         %48 = OpMatrixTimesVector %v4float %28 %47
98         %50 = OpAccessChain %_ptr_Output_v4float %_ %int_0
99               OpStore %50 %48
100         %52 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %int_0 %int_0
101         %53 = OpLoad %uint %52
102         %56 = OpINotEqual %bool %53 %uint_0
103               OpSelectionMerge %58 None
104               OpBranchConditional %56 %57 %58
105         %57 = OpLabel
106         %61 = OpAccessChain %_ptr_Output_float %_ %int_0 %uint_2
107               OpStore %61 %float_0
108               OpBranch %58
109         %58 = OpLabel
110               OpReturn
111               OpFunctionEnd
112