1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 97
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint GLCompute %main "main"
10               OpExecutionMode %main LocalSize 1 1 1
11               OpSource HLSL 500
12               OpName %main "main"
13               OpName %_main_ "@main("
14               OpName %a "a"
15               OpName %byteAddrTemp "byteAddrTemp"
16               OpName %MyFirstBuffer "MyFirstBuffer"
17               OpMemberName %MyFirstBuffer 0 "@data"
18               OpName %MyFirstBuffer_0 "MyFirstBuffer"
19               OpName %b "b"
20               OpName %byteAddrTemp_0 "byteAddrTemp"
21               OpName %MySecondBuffer "MySecondBuffer"
22               OpName %byteAddrTemp_1 "byteAddrTemp"
23               OpName %MyThirdBuffer "MyThirdBuffer"
24               OpDecorate %_runtimearr_uint ArrayStride 4
25               OpMemberDecorate %MyFirstBuffer 0 Offset 0
26               OpDecorate %MyFirstBuffer BufferBlock
27               OpDecorate %MyFirstBuffer_0 DescriptorSet 0
28               OpDecorate %MyFirstBuffer_0 Binding 0
29               OpDecorate %MySecondBuffer DescriptorSet 0
30               OpDecorate %MySecondBuffer Binding 0
31               OpDecorate %MyThirdBuffer DescriptorSet 0
32               OpDecorate %MyThirdBuffer Binding 0
33       %void = OpTypeVoid
34          %3 = OpTypeFunction %void
35       %uint = OpTypeInt 32 0
36     %v4uint = OpTypeVector %uint 4
37%_ptr_Function_v4uint = OpTypePointer Function %v4uint
38        %int = OpTypeInt 32 1
39%_ptr_Function_int = OpTypePointer Function %int
40      %int_0 = OpConstant %int 0
41      %int_2 = OpConstant %int 2
42%_runtimearr_uint = OpTypeRuntimeArray %uint
43%MyFirstBuffer = OpTypeStruct %_runtimearr_uint
44%_ptr_Uniform_MyFirstBuffer = OpTypePointer Uniform %MyFirstBuffer
45%MyFirstBuffer_0 = OpVariable %_ptr_Uniform_MyFirstBuffer Uniform
46%_ptr_Uniform_uint = OpTypePointer Uniform %uint
47      %int_1 = OpConstant %int 1
48      %int_3 = OpConstant %int 3
49      %int_4 = OpConstant %int 4
50%MySecondBuffer = OpVariable %_ptr_Uniform_MyFirstBuffer Uniform
51%MyThirdBuffer = OpVariable %_ptr_Uniform_MyFirstBuffer Uniform
52     %uint_0 = OpConstant %uint 0
53     %uint_1 = OpConstant %uint 1
54     %uint_2 = OpConstant %uint 2
55     %uint_3 = OpConstant %uint 3
56       %main = OpFunction %void None %3
57          %5 = OpLabel
58         %96 = OpFunctionCall %void %_main_
59               OpReturn
60               OpFunctionEnd
61     %_main_ = OpFunction %void None %3
62          %7 = OpLabel
63          %a = OpVariable %_ptr_Function_v4uint Function
64%byteAddrTemp = OpVariable %_ptr_Function_int Function
65          %b = OpVariable %_ptr_Function_v4uint Function
66%byteAddrTemp_0 = OpVariable %_ptr_Function_int Function
67%byteAddrTemp_1 = OpVariable %_ptr_Function_int Function
68         %17 = OpShiftRightArithmetic %int %int_0 %int_2
69               OpStore %byteAddrTemp %17
70         %22 = OpLoad %int %byteAddrTemp
71         %24 = OpAccessChain %_ptr_Uniform_uint %MyFirstBuffer_0 %int_0 %22
72         %25 = OpLoad %uint %24
73         %26 = OpLoad %int %byteAddrTemp
74         %28 = OpIAdd %int %26 %int_1
75         %29 = OpAccessChain %_ptr_Uniform_uint %MyFirstBuffer_0 %int_0 %28
76         %30 = OpLoad %uint %29
77         %31 = OpLoad %int %byteAddrTemp
78         %32 = OpIAdd %int %31 %int_2
79         %33 = OpAccessChain %_ptr_Uniform_uint %MyFirstBuffer_0 %int_0 %32
80         %34 = OpLoad %uint %33
81         %35 = OpLoad %int %byteAddrTemp
82         %37 = OpIAdd %int %35 %int_3
83         %38 = OpAccessChain %_ptr_Uniform_uint %MyFirstBuffer_0 %int_0 %37
84         %39 = OpLoad %uint %38
85         %40 = OpCompositeConstruct %v4uint %25 %30 %34 %39
86               OpStore %a %40
87         %44 = OpShiftRightArithmetic %int %int_4 %int_2
88               OpStore %byteAddrTemp_0 %44
89         %46 = OpLoad %int %byteAddrTemp_0
90         %47 = OpAccessChain %_ptr_Uniform_uint %MySecondBuffer %int_0 %46
91         %48 = OpLoad %uint %47
92         %49 = OpLoad %int %byteAddrTemp_0
93         %50 = OpIAdd %int %49 %int_1
94         %51 = OpAccessChain %_ptr_Uniform_uint %MySecondBuffer %int_0 %50
95         %52 = OpLoad %uint %51
96         %53 = OpLoad %int %byteAddrTemp_0
97         %54 = OpIAdd %int %53 %int_2
98         %55 = OpAccessChain %_ptr_Uniform_uint %MySecondBuffer %int_0 %54
99         %56 = OpLoad %uint %55
100         %57 = OpLoad %int %byteAddrTemp_0
101         %58 = OpIAdd %int %57 %int_3
102         %59 = OpAccessChain %_ptr_Uniform_uint %MySecondBuffer %int_0 %58
103         %60 = OpLoad %uint %59
104         %61 = OpCompositeConstruct %v4uint %48 %52 %56 %60
105               OpStore %b %61
106         %63 = OpShiftRightArithmetic %int %int_0 %int_2
107               OpStore %byteAddrTemp_1 %63
108         %65 = OpLoad %int %byteAddrTemp_1
109         %66 = OpLoad %v4uint %a
110         %67 = OpLoad %v4uint %b
111         %68 = OpIAdd %v4uint %66 %67
112         %70 = OpCompositeExtract %uint %68 0
113         %71 = OpAccessChain %_ptr_Uniform_uint %MyThirdBuffer %int_0 %65
114               OpStore %71 %70
115         %72 = OpLoad %int %byteAddrTemp_1
116         %73 = OpIAdd %int %72 %int_1
117         %74 = OpLoad %v4uint %a
118         %75 = OpLoad %v4uint %b
119         %76 = OpIAdd %v4uint %74 %75
120         %78 = OpCompositeExtract %uint %76 1
121         %79 = OpAccessChain %_ptr_Uniform_uint %MyThirdBuffer %int_0 %73
122               OpStore %79 %78
123         %80 = OpLoad %int %byteAddrTemp_1
124         %81 = OpIAdd %int %80 %int_2
125         %82 = OpLoad %v4uint %a
126         %83 = OpLoad %v4uint %b
127         %84 = OpIAdd %v4uint %82 %83
128         %86 = OpCompositeExtract %uint %84 2
129         %87 = OpAccessChain %_ptr_Uniform_uint %MyThirdBuffer %int_0 %81
130               OpStore %87 %86
131         %88 = OpLoad %int %byteAddrTemp_1
132         %89 = OpIAdd %int %88 %int_3
133         %90 = OpLoad %v4uint %a
134         %91 = OpLoad %v4uint %b
135         %92 = OpIAdd %v4uint %90 %91
136         %94 = OpCompositeExtract %uint %92 3
137         %95 = OpAccessChain %_ptr_Uniform_uint %MyThirdBuffer %int_0 %89
138               OpStore %95 %94
139               OpReturn
140               OpFunctionEnd
141