1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 59
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
10               OpExecutionMode %main LocalSize 1 1 1
11               OpSource GLSL 450
12               OpName %main "main"
13               OpName %Foo "A"
14               OpMemberName %Foo 0 "a"
15               OpMemberName %Foo 1 "b"
16               OpName %A "A"
17               OpMemberName %A 0 "Data"
18               OpName %C1 "C1"
19               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
20               OpName %Foo_0 "A"
21               OpMemberName %Foo_0 0 "a"
22               OpMemberName %Foo_0 1 "b"
23               OpName %A_0 "A"
24               OpMemberName %A_0 0 "Data"
25               OpName %C2 "C2"
26               OpName %B "B"
27               OpMemberName %B 0 "Data"
28               OpName %C3 "C3"
29               OpName %B_0 "B"
30               OpMemberName %B_0 0 "Data"
31               OpName %C4 "C4"
32               OpMemberDecorate %Foo 0 Offset 0
33               OpMemberDecorate %Foo 1 Offset 4
34               OpDecorate %_runtimearr_Foo ArrayStride 8
35               OpMemberDecorate %A 0 Offset 0
36               OpDecorate %A BufferBlock
37               OpDecorate %C1 DescriptorSet 0
38               OpDecorate %C1 Binding 1
39               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
40               OpMemberDecorate %Foo_0 0 Offset 0
41               OpMemberDecorate %Foo_0 1 Offset 4
42               OpDecorate %_arr_Foo_0_uint_1024 ArrayStride 16
43               OpMemberDecorate %A_0 0 Offset 0
44               OpDecorate %A_0 Block
45               OpDecorate %C2 DescriptorSet 0
46               OpDecorate %C2 Binding 2
47               OpDecorate %_runtimearr_Foo_0 ArrayStride 8
48               OpMemberDecorate %B 0 Offset 0
49               OpDecorate %B BufferBlock
50               OpDecorate %C3 DescriptorSet 0
51               OpDecorate %C3 Binding 0
52               OpDecorate %_arr_Foo_0_uint_1024_0 ArrayStride 16
53               OpMemberDecorate %B_0 0 Offset 0
54               OpDecorate %B_0 Block
55               OpDecorate %C4 DescriptorSet 0
56               OpDecorate %C4 Binding 3
57       %void = OpTypeVoid
58          %3 = OpTypeFunction %void
59        %int = OpTypeInt 32 1
60        %Foo = OpTypeStruct %int %int
61%_runtimearr_Foo = OpTypeRuntimeArray %Foo
62          %A = OpTypeStruct %_runtimearr_Foo
63%_ptr_Uniform_A = OpTypePointer Uniform %A
64         %C1 = OpVariable %_ptr_Uniform_A Uniform
65      %int_0 = OpConstant %int 0
66       %uint = OpTypeInt 32 0
67     %v3uint = OpTypeVector %uint 3
68%_ptr_Input_v3uint = OpTypePointer Input %v3uint
69%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
70     %uint_0 = OpConstant %uint 0
71%_ptr_Input_uint = OpTypePointer Input %uint
72      %Foo_0 = OpTypeStruct %int %int
73  %uint_1024 = OpConstant %uint 1024
74%_arr_Foo_0_uint_1024 = OpTypeArray %Foo_0 %uint_1024
75        %A_0 = OpTypeStruct %_arr_Foo_0_uint_1024
76%_ptr_Uniform_A_0 = OpTypePointer Uniform %A_0
77         %C2 = OpVariable %_ptr_Uniform_A_0 Uniform
78%_ptr_Uniform_Foo_0 = OpTypePointer Uniform %Foo_0
79%_ptr_Uniform_Foo = OpTypePointer Uniform %Foo
80%_ptr_Uniform_int = OpTypePointer Uniform %int
81      %int_1 = OpConstant %int 1
82%_runtimearr_Foo_0 = OpTypeRuntimeArray %Foo
83          %B = OpTypeStruct %_runtimearr_Foo_0
84%_ptr_Uniform_B = OpTypePointer Uniform %B
85         %C3 = OpVariable %_ptr_Uniform_B Uniform
86%_arr_Foo_0_uint_1024_0 = OpTypeArray %Foo_0 %uint_1024
87        %B_0 = OpTypeStruct %_arr_Foo_0_uint_1024_0
88%_ptr_Uniform_B_0 = OpTypePointer Uniform %B_0
89         %C4 = OpVariable %_ptr_Uniform_B_0 Uniform
90       %main = OpFunction %void None %3
91          %5 = OpLabel
92         %19 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
93         %20 = OpLoad %uint %19
94         %27 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
95         %28 = OpLoad %uint %27
96         %30 = OpAccessChain %_ptr_Uniform_Foo_0 %C2 %int_0 %28
97         %31 = OpLoad %Foo_0 %30
98         %33 = OpAccessChain %_ptr_Uniform_Foo %C1 %int_0 %20
99         %34 = OpCompositeExtract %int %31 0
100         %36 = OpAccessChain %_ptr_Uniform_int %33 %int_0
101               OpStore %36 %34
102         %37 = OpCompositeExtract %int %31 1
103         %39 = OpAccessChain %_ptr_Uniform_int %33 %int_1
104               OpStore %39 %37
105         %44 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
106         %45 = OpLoad %uint %44
107         %50 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
108         %51 = OpLoad %uint %50
109         %52 = OpAccessChain %_ptr_Uniform_Foo_0 %C4 %int_0 %51
110         %53 = OpLoad %Foo_0 %52
111         %54 = OpAccessChain %_ptr_Uniform_Foo %C3 %int_0 %45
112         %55 = OpCompositeExtract %int %53 0
113         %56 = OpAccessChain %_ptr_Uniform_int %54 %int_0
114               OpStore %56 %55
115         %57 = OpCompositeExtract %int %53 1
116         %58 = OpAccessChain %_ptr_Uniform_int %54 %int_1
117               OpStore %58 %57
118               OpReturn
119               OpFunctionEnd
120