xref: /aosp_15_r20/external/skia/tests/sksl/compute/AtomicDeclarations.asm.comp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint GLCompute %main "main"
5               OpExecutionMode %main LocalSize 64 1 1
6               OpName %S "S"
7               OpMemberName %S 0 "structMemberAtomic"
8               OpMemberName %S 1 "structMemberAtomicArray"
9               OpName %NestedS "NestedS"
10               OpMemberName %NestedS 0 "nestedStructWithAtomicMember"
11               OpName %ssbo "ssbo"
12               OpMemberName %ssbo 0 "ssboAtomic"
13               OpMemberName %ssbo 1 "ssboAtomicArray"
14               OpMemberName %ssbo 2 "ssboStructWithAtomicMember"
15               OpMemberName %ssbo 3 "ssboStructWithAtomicMemberArray"
16               OpMemberName %ssbo 4 "ssboNestedStructWithAtomicMember"
17               OpName %wgAtomic "wgAtomic"
18               OpName %wgAtomicArray "wgAtomicArray"
19               OpName %wgNestedStructWithAtomicMember "wgNestedStructWithAtomicMember"
20               OpName %main "main"
21               OpDecorate %_arr_uint_int_2 ArrayStride 4
22               OpMemberDecorate %S 0 Offset 0
23               OpMemberDecorate %S 0 RelaxedPrecision
24               OpMemberDecorate %S 1 Offset 4
25               OpMemberDecorate %S 1 RelaxedPrecision
26               OpDecorate %_arr_S_int_2 ArrayStride 12
27               OpMemberDecorate %NestedS 0 Offset 0
28               OpMemberDecorate %NestedS 0 RelaxedPrecision
29               OpMemberDecorate %ssbo 0 Offset 0
30               OpMemberDecorate %ssbo 0 RelaxedPrecision
31               OpMemberDecorate %ssbo 1 Offset 4
32               OpMemberDecorate %ssbo 1 RelaxedPrecision
33               OpMemberDecorate %ssbo 2 Offset 12
34               OpMemberDecorate %ssbo 2 RelaxedPrecision
35               OpMemberDecorate %ssbo 3 Offset 24
36               OpMemberDecorate %ssbo 3 RelaxedPrecision
37               OpMemberDecorate %ssbo 4 Offset 48
38               OpMemberDecorate %ssbo 4 RelaxedPrecision
39               OpDecorate %ssbo BufferBlock
40               OpDecorate %3 Binding 0
41               OpDecorate %3 DescriptorSet 0
42               OpDecorate %_arr_uint_int_2_0 ArrayStride 16
43       %uint = OpTypeInt 32 0
44        %int = OpTypeInt 32 1
45      %int_2 = OpConstant %int 2
46%_arr_uint_int_2 = OpTypeArray %uint %int_2
47          %S = OpTypeStruct %uint %_arr_uint_int_2
48%_arr_S_int_2 = OpTypeArray %S %int_2
49    %NestedS = OpTypeStruct %S
50       %ssbo = OpTypeStruct %uint %_arr_uint_int_2 %S %_arr_S_int_2 %NestedS
51%_ptr_Uniform_ssbo = OpTypePointer Uniform %ssbo
52          %3 = OpVariable %_ptr_Uniform_ssbo Uniform
53%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
54   %wgAtomic = OpVariable %_ptr_Workgroup_uint Workgroup
55%_arr_uint_int_2_0 = OpTypeArray %uint %int_2
56%_ptr_Workgroup__arr_uint_int_2_0 = OpTypePointer Workgroup %_arr_uint_int_2_0
57%wgAtomicArray = OpVariable %_ptr_Workgroup__arr_uint_int_2_0 Workgroup
58%_ptr_Workgroup_NestedS = OpTypePointer Workgroup %NestedS
59%wgNestedStructWithAtomicMember = OpVariable %_ptr_Workgroup_NestedS Workgroup
60       %void = OpTypeVoid
61         %21 = OpTypeFunction %void
62      %int_1 = OpConstant %int 1
63     %uint_2 = OpConstant %uint 2
64     %uint_0 = OpConstant %uint 0
65      %int_0 = OpConstant %int 0
66     %uint_1 = OpConstant %uint 1
67       %main = OpFunction %void None %21
68         %22 = OpLabel
69         %25 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1
70         %28 = OpAtomicLoad %uint %wgAtomic %uint_2 %uint_0
71         %23 = OpAtomicIAdd %uint %25 %uint_2 %uint_0 %28
72         %31 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_0
73         %33 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1
74         %32 = OpAtomicLoad %uint %33 %uint_2 %uint_0
75         %29 = OpAtomicIAdd %uint %31 %uint_2 %uint_0 %32
76         %35 = OpAccessChain %_ptr_Workgroup_uint %wgNestedStructWithAtomicMember %int_0 %int_0
77         %34 = OpAtomicIAdd %uint %35 %uint_2 %uint_0 %uint_1
78               OpReturn
79               OpFunctionEnd
80