1spv.atomic.comp
2// Module Version 10000
3// Generated by (magic number): 80007
4// Id's are bound by 74
5
6                              Capability Shader
7                              Capability AtomicStorage
8               1:             ExtInstImport  "GLSL.std.450"
9                              MemoryModel Logical GLSL450
10                              EntryPoint GLCompute 4  "main"
11                              ExecutionMode 4 LocalSize 1 1 1
12                              Source GLSL 450
13                              Name 4  "main"
14                              Name 10  "func(au1;"
15                              Name 9  "c"
16                              Name 12  "atoms("
17                              Name 20  "counter"
18                              Name 23  "val"
19                              Name 27  "countArr"
20                              Name 37  "origi"
21                              Name 39  "atomi"
22                              Name 42  "origu"
23                              Name 44  "atomu"
24                              Name 45  "value"
25                              Name 62  "dataSSB"
26                              MemberName 62(dataSSB) 0  "f"
27                              MemberName 62(dataSSB) 1  "n_frames_rendered"
28                              Name 64  "result"
29                              Name 71  "arrX"
30                              Name 72  "arrY"
31                              Name 73  "arrZ"
32                              Decorate 20(counter) Offset 0
33                              Decorate 20(counter) Binding 0
34                              Decorate 27(countArr) Offset 4
35                              Decorate 27(countArr) Binding 0
36                              MemberDecorate 62(dataSSB) 0 Restrict
37                              MemberDecorate 62(dataSSB) 0 Offset 0
38                              MemberDecorate 62(dataSSB) 1 Restrict
39                              MemberDecorate 62(dataSSB) 1 Offset 16
40                              Decorate 62(dataSSB) BufferBlock
41                              Decorate 64(result) DescriptorSet 0
42                              Decorate 64(result) Binding 0
43               2:             TypeVoid
44               3:             TypeFunction 2
45               6:             TypeInt 32 0
46               7:             TypePointer AtomicCounter 6(int)
47               8:             TypeFunction 6(int) 7(ptr)
48              14:      6(int) Constant 1
49              15:      6(int) Constant 0
50              19:      6(int) Constant 1032
51     20(counter):      7(ptr) Variable AtomicCounter
52              22:             TypePointer Function 6(int)
53              24:      6(int) Constant 4
54              25:             TypeArray 6(int) 24
55              26:             TypePointer AtomicCounter 25
56    27(countArr):     26(ptr) Variable AtomicCounter
57              28:             TypeInt 32 1
58              29:     28(int) Constant 2
59              33:     28(int) Constant 1
60              36:             TypePointer Function 28(int)
61              38:             TypePointer Workgroup 28(int)
62       39(atomi):     38(ptr) Variable Workgroup
63              40:     28(int) Constant 3
64              43:             TypePointer Workgroup 6(int)
65       44(atomu):     43(ptr) Variable Workgroup
66       45(value):     43(ptr) Variable Workgroup
67              48:      6(int) Constant 7
68              53:     28(int) Constant 7
69              57:      6(int) Constant 10
70              60:             TypeFloat 32
71              61:             TypeVector 28(int) 4
72     62(dataSSB):             TypeStruct 60(float) 61(ivec4)
73              63:             TypePointer Uniform 62(dataSSB)
74      64(result):     63(ptr) Variable Uniform
75              65:      6(int) Constant 2
76              66:             TypePointer Uniform 28(int)
77              69:             TypeArray 28(int) 14
78              70:             TypePointer Private 69
79        71(arrX):     70(ptr) Variable Private
80        72(arrY):     70(ptr) Variable Private
81        73(arrZ):     70(ptr) Variable Private
82         4(main):           2 Function None 3
83               5:             Label
84         23(val):     22(ptr) Variable Function
85                              MemoryBarrier 14 19
86              21:      6(int) FunctionCall 10(func(au1;) 20(counter)
87              30:      7(ptr) AccessChain 27(countArr) 29
88              31:      6(int) AtomicLoad 30 14 15
89                              Store 23(val) 31
90              32:      6(int) AtomicIDecrement 20(counter) 14 15
91              34:      6(int) ISub 32 33
92              35:      6(int) AtomicIIncrement 20(counter) 14 15
93                              Return
94                              FunctionEnd
95   10(func(au1;):      6(int) Function None 8
96            9(c):      7(ptr) FunctionParameter
97              11:             Label
98              16:      6(int) AtomicIIncrement 9(c) 14 15
99                              ReturnValue 16
100                              FunctionEnd
101      12(atoms():           2 Function None 3
102              13:             Label
103       37(origi):     36(ptr) Variable Function
104       42(origu):     22(ptr) Variable Function
105              41:     28(int) AtomicIAdd 39(atomi) 14 15 40
106                              Store 37(origi) 41
107              46:      6(int) Load 45(value)
108              47:      6(int) AtomicAnd 44(atomu) 14 15 46
109                              Store 42(origu) 47
110              49:      6(int) AtomicOr 44(atomu) 14 15 48
111                              Store 42(origu) 49
112              50:      6(int) AtomicXor 44(atomu) 14 15 48
113                              Store 42(origu) 50
114              51:      6(int) Load 45(value)
115              52:      6(int) AtomicUMin 44(atomu) 14 15 51
116                              Store 42(origu) 52
117              54:     28(int) AtomicSMax 39(atomi) 14 15 53
118                              Store 37(origi) 54
119              55:     28(int) Load 37(origi)
120              56:     28(int) AtomicExchange 39(atomi) 14 15 55
121                              Store 37(origi) 56
122              58:      6(int) Load 45(value)
123              59:      6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57
124                              Store 42(origu) 59
125              67:     66(ptr) AccessChain 64(result) 33 65
126              68:     28(int) AtomicIAdd 67 14 15 33
127                              Return
128                              FunctionEnd
129