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