1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 64
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint Fragment %main "main" %pos_1 %_entryPointOutput
10               OpExecutionMode %main OriginUpperLeft
11               OpSource HLSL 500
12               OpName %main "main"
13               OpName %_main_vf4_ "@main(vf4;"
14               OpName %pos "pos"
15               OpName %Foo "Foo"
16               OpMemberName %Foo 0 "a"
17               OpMemberName %Foo 1 "b"
18               OpName %foo "foo"
19               OpName %Foo_0 "Foo"
20               OpMemberName %Foo_0 0 "a"
21               OpMemberName %Foo_0 1 "b"
22               OpName %buf "buf"
23               OpMemberName %buf 0 "results"
24               OpMemberName %buf 1 "bar"
25               OpName %_ ""
26               OpName %pos_0 "pos"
27               OpName %pos_1 "pos"
28               OpName %_entryPointOutput "@entryPointOutput"
29               OpName %param "param"
30               OpMemberDecorate %Foo_0 0 Offset 0
31               OpMemberDecorate %Foo_0 1 Offset 12
32               OpDecorate %_arr_Foo_0_uint_16 ArrayStride 16
33               OpMemberDecorate %buf 0 Offset 0
34               OpMemberDecorate %buf 1 Offset 256
35               OpDecorate %buf Block
36               OpDecorate %_ DescriptorSet 0
37               OpDecorate %_ Binding 0
38               OpDecorate %pos_1 BuiltIn FragCoord
39               OpDecorate %_entryPointOutput Location 0
40       %void = OpTypeVoid
41          %3 = OpTypeFunction %void
42      %float = OpTypeFloat 32
43    %v4float = OpTypeVector %float 4
44%_ptr_Function_v4float = OpTypePointer Function %v4float
45          %9 = OpTypeFunction %v4float %_ptr_Function_v4float
46    %v3float = OpTypeVector %float 3
47        %Foo = OpTypeStruct %v3float %float
48%_ptr_Function_Foo = OpTypePointer Function %Foo
49      %Foo_0 = OpTypeStruct %v3float %float
50       %uint = OpTypeInt 32 0
51    %uint_16 = OpConstant %uint 16
52%_arr_Foo_0_uint_16 = OpTypeArray %Foo_0 %uint_16
53        %buf = OpTypeStruct %_arr_Foo_0_uint_16 %v4float
54%_ptr_Uniform_buf = OpTypePointer Uniform %buf
55          %_ = OpVariable %_ptr_Uniform_buf Uniform
56        %int = OpTypeInt 32 1
57      %int_0 = OpConstant %int 0
58     %uint_0 = OpConstant %uint 0
59%_ptr_Function_float = OpTypePointer Function %float
60     %int_16 = OpConstant %int 16
61%_ptr_Uniform_Foo_0 = OpTypePointer Uniform %Foo_0
62%_ptr_Function_v3float = OpTypePointer Function %v3float
63      %int_1 = OpConstant %int 1
64%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
65    %float_0 = OpConstant %float 0
66%_ptr_Input_v4float = OpTypePointer Input %v4float
67      %pos_1 = OpVariable %_ptr_Input_v4float Input
68%_ptr_Output_v4float = OpTypePointer Output %v4float
69%_entryPointOutput = OpVariable %_ptr_Output_v4float Output
70       %main = OpFunction %void None %3
71          %5 = OpLabel
72      %pos_0 = OpVariable %_ptr_Function_v4float Function
73      %param = OpVariable %_ptr_Function_v4float Function
74         %58 = OpLoad %v4float %pos_1
75               OpStore %pos_0 %58
76         %62 = OpLoad %v4float %pos_0
77               OpStore %param %62
78         %63 = OpFunctionCall %v4float %_main_vf4_ %param
79               OpStore %_entryPointOutput %63
80               OpReturn
81               OpFunctionEnd
82 %_main_vf4_ = OpFunction %v4float None %9
83        %pos = OpFunctionParameter %_ptr_Function_v4float
84         %12 = OpLabel
85        %foo = OpVariable %_ptr_Function_Foo Function
86         %28 = OpAccessChain %_ptr_Function_float %pos %uint_0
87         %29 = OpLoad %float %28
88         %30 = OpConvertFToS %int %29
89         %32 = OpSMod %int %30 %int_16
90         %34 = OpAccessChain %_ptr_Uniform_Foo_0 %_ %int_0 %32
91         %35 = OpLoad %Foo_0 %34
92         %36 = OpCompositeExtract %v3float %35 0
93         %38 = OpAccessChain %_ptr_Function_v3float %foo %int_0
94               OpStore %38 %36
95         %39 = OpCompositeExtract %float %35 1
96         %41 = OpAccessChain %_ptr_Function_float %foo %int_1
97               OpStore %41 %39
98         %42 = OpAccessChain %_ptr_Function_v3float %foo %int_0
99         %43 = OpLoad %v3float %42
100         %45 = OpAccessChain %_ptr_Uniform_v4float %_ %int_1
101         %46 = OpLoad %v4float %45
102         %47 = OpVectorShuffle %v3float %46 %46 0 1 2
103         %48 = OpDot %float %43 %47
104         %49 = OpAccessChain %_ptr_Function_float %foo %int_1
105         %50 = OpLoad %float %49
106         %52 = OpCompositeConstruct %v4float %48 %50 %float_0 %float_0
107               OpReturnValue %52
108               OpFunctionEnd
109