1spv.atomicInt64.comp
2// Module Version 10000
3// Generated by (magic number): 8000a
4// Id's are bound by 149
5
6                              Capability Shader
7                              Capability Int64
8                              Capability Int64Atomics
9               1:             ExtInstImport  "GLSL.std.450"
10                              MemoryModel Logical GLSL450
11                              EntryPoint GLCompute 4  "main"
12                              ExecutionMode 4 LocalSize 16 16 1
13                              Source GLSL 450
14                              SourceExtension  "GL_ARB_gpu_shader_int64"
15                              SourceExtension  "GL_NV_shader_atomic_int64"
16                              Name 4  "main"
17                              Name 8  "i64"
18                              Name 12  "u64"
19                              Name 14  "Buffer"
20                              MemberName 14(Buffer) 0  "i64"
21                              MemberName 14(Buffer) 1  "u64"
22                              Name 16  "buf"
23                              Name 84  "Struct"
24                              MemberName 84(Struct) 0  "i64"
25                              MemberName 84(Struct) 1  "u64"
26                              Name 86  "s"
27                              MemberDecorate 14(Buffer) 0 Offset 0
28                              MemberDecorate 14(Buffer) 1 Offset 8
29                              Decorate 14(Buffer) BufferBlock
30                              Decorate 16(buf) DescriptorSet 0
31                              Decorate 16(buf) Binding 0
32                              Decorate 148 BuiltIn WorkgroupSize
33               2:             TypeVoid
34               3:             TypeFunction 2
35               6:             TypeInt 64 1
36               7:             TypePointer Function 6(int64_t)
37               9:  6(int64_t) Constant 0 0
38              10:             TypeInt 64 0
39              11:             TypePointer Function 10(int64_t)
40              13: 10(int64_t) Constant 0 0
41      14(Buffer):             TypeStruct 6(int64_t) 10(int64_t)
42              15:             TypePointer Uniform 14(Buffer)
43         16(buf):     15(ptr) Variable Uniform
44              17:             TypeInt 32 1
45              18:     17(int) Constant 0
46              19:             TypePointer Uniform 6(int64_t)
47              21:  6(int64_t) Constant 4294967272 4294967295
48              22:             TypeInt 32 0
49              23:     22(int) Constant 1
50              24:     22(int) Constant 0
51              28:     17(int) Constant 1
52              29:             TypePointer Uniform 10(int64_t)
53              31: 10(int64_t) Constant 15 240
54      84(Struct):             TypeStruct 6(int64_t) 10(int64_t)
55              85:             TypePointer Workgroup 84(Struct)
56           86(s):     85(ptr) Variable Workgroup
57              87:             TypePointer Workgroup 6(int64_t)
58              92:             TypePointer Workgroup 10(int64_t)
59             146:             TypeVector 22(int) 3
60             147:     22(int) Constant 16
61             148:  146(ivec3) ConstantComposite 147 147 23
62         4(main):           2 Function None 3
63               5:             Label
64          8(i64):      7(ptr) Variable Function
65         12(u64):     11(ptr) Variable Function
66                              Store 8(i64) 9
67                              Store 12(u64) 13
68              20:     19(ptr) AccessChain 16(buf) 18
69              25:  6(int64_t) AtomicSMin 20 23 24 21
70              26:  6(int64_t) Load 8(i64)
71              27:  6(int64_t) IAdd 26 25
72                              Store 8(i64) 27
73              30:     29(ptr) AccessChain 16(buf) 28
74              32: 10(int64_t) AtomicUMin 30 23 24 31
75              33: 10(int64_t) Load 12(u64)
76              34: 10(int64_t) IAdd 33 32
77                              Store 12(u64) 34
78              35:     19(ptr) AccessChain 16(buf) 18
79              36:  6(int64_t) AtomicSMax 35 23 24 21
80              37:  6(int64_t) Load 8(i64)
81              38:  6(int64_t) IAdd 37 36
82                              Store 8(i64) 38
83              39:     29(ptr) AccessChain 16(buf) 28
84              40: 10(int64_t) AtomicUMax 39 23 24 31
85              41: 10(int64_t) Load 12(u64)
86              42: 10(int64_t) IAdd 41 40
87                              Store 12(u64) 42
88              43:     19(ptr) AccessChain 16(buf) 18
89              44:  6(int64_t) AtomicAnd 43 23 24 21
90              45:  6(int64_t) Load 8(i64)
91              46:  6(int64_t) IAdd 45 44
92                              Store 8(i64) 46
93              47:     29(ptr) AccessChain 16(buf) 28
94              48: 10(int64_t) AtomicAnd 47 23 24 31
95              49: 10(int64_t) Load 12(u64)
96              50: 10(int64_t) IAdd 49 48
97                              Store 12(u64) 50
98              51:     19(ptr) AccessChain 16(buf) 18
99              52:  6(int64_t) AtomicOr 51 23 24 21
100              53:  6(int64_t) Load 8(i64)
101              54:  6(int64_t) IAdd 53 52
102                              Store 8(i64) 54
103              55:     29(ptr) AccessChain 16(buf) 28
104              56: 10(int64_t) AtomicOr 55 23 24 31
105              57: 10(int64_t) Load 12(u64)
106              58: 10(int64_t) IAdd 57 56
107                              Store 12(u64) 58
108              59:     19(ptr) AccessChain 16(buf) 18
109              60:  6(int64_t) AtomicXor 59 23 24 21
110              61:  6(int64_t) Load 8(i64)
111              62:  6(int64_t) IAdd 61 60
112                              Store 8(i64) 62
113              63:     29(ptr) AccessChain 16(buf) 28
114              64: 10(int64_t) AtomicXor 63 23 24 31
115              65: 10(int64_t) Load 12(u64)
116              66: 10(int64_t) IAdd 65 64
117                              Store 12(u64) 66
118              67:     19(ptr) AccessChain 16(buf) 18
119              68:  6(int64_t) AtomicIAdd 67 23 24 21
120              69:  6(int64_t) Load 8(i64)
121              70:  6(int64_t) IAdd 69 68
122                              Store 8(i64) 70
123              71:     19(ptr) AccessChain 16(buf) 18
124              72:  6(int64_t) AtomicExchange 71 23 24 21
125              73:  6(int64_t) Load 8(i64)
126              74:  6(int64_t) IAdd 73 72
127                              Store 8(i64) 74
128              75:     19(ptr) AccessChain 16(buf) 18
129              76:  6(int64_t) Load 8(i64)
130              77:  6(int64_t) AtomicCompareExchange 75 23 24 24 76 21
131              78:  6(int64_t) Load 8(i64)
132              79:  6(int64_t) IAdd 78 77
133                              Store 8(i64) 79
134              80:  6(int64_t) Load 8(i64)
135              81:     19(ptr) AccessChain 16(buf) 18
136                              Store 81 80
137              82: 10(int64_t) Load 12(u64)
138              83:     29(ptr) AccessChain 16(buf) 28
139                              Store 83 82
140                              Store 8(i64) 9
141                              Store 12(u64) 13
142              88:     87(ptr) AccessChain 86(s) 18
143              89:  6(int64_t) AtomicSMin 88 23 24 21
144              90:  6(int64_t) Load 8(i64)
145              91:  6(int64_t) IAdd 90 89
146                              Store 8(i64) 91
147              93:     92(ptr) AccessChain 86(s) 28
148              94: 10(int64_t) AtomicUMin 93 23 24 31
149              95: 10(int64_t) Load 12(u64)
150              96: 10(int64_t) IAdd 95 94
151                              Store 12(u64) 96
152              97:     87(ptr) AccessChain 86(s) 18
153              98:  6(int64_t) AtomicSMax 97 23 24 21
154              99:  6(int64_t) Load 8(i64)
155             100:  6(int64_t) IAdd 99 98
156                              Store 8(i64) 100
157             101:     92(ptr) AccessChain 86(s) 28
158             102: 10(int64_t) AtomicUMax 101 23 24 31
159             103: 10(int64_t) Load 12(u64)
160             104: 10(int64_t) IAdd 103 102
161                              Store 12(u64) 104
162             105:     87(ptr) AccessChain 86(s) 18
163             106:  6(int64_t) AtomicAnd 105 23 24 21
164             107:  6(int64_t) Load 8(i64)
165             108:  6(int64_t) IAdd 107 106
166                              Store 8(i64) 108
167             109:     92(ptr) AccessChain 86(s) 28
168             110: 10(int64_t) AtomicAnd 109 23 24 31
169             111: 10(int64_t) Load 12(u64)
170             112: 10(int64_t) IAdd 111 110
171                              Store 12(u64) 112
172             113:     87(ptr) AccessChain 86(s) 18
173             114:  6(int64_t) AtomicOr 113 23 24 21
174             115:  6(int64_t) Load 8(i64)
175             116:  6(int64_t) IAdd 115 114
176                              Store 8(i64) 116
177             117:     92(ptr) AccessChain 86(s) 28
178             118: 10(int64_t) AtomicOr 117 23 24 31
179             119: 10(int64_t) Load 12(u64)
180             120: 10(int64_t) IAdd 119 118
181                              Store 12(u64) 120
182             121:     87(ptr) AccessChain 86(s) 18
183             122:  6(int64_t) AtomicXor 121 23 24 21
184             123:  6(int64_t) Load 8(i64)
185             124:  6(int64_t) IAdd 123 122
186                              Store 8(i64) 124
187             125:     92(ptr) AccessChain 86(s) 28
188             126: 10(int64_t) AtomicXor 125 23 24 31
189             127: 10(int64_t) Load 12(u64)
190             128: 10(int64_t) IAdd 127 126
191                              Store 12(u64) 128
192             129:     87(ptr) AccessChain 86(s) 18
193             130:  6(int64_t) AtomicIAdd 129 23 24 21
194             131:  6(int64_t) Load 8(i64)
195             132:  6(int64_t) IAdd 131 130
196                              Store 8(i64) 132
197             133:     87(ptr) AccessChain 86(s) 18
198             134:  6(int64_t) AtomicExchange 133 23 24 21
199             135:  6(int64_t) Load 8(i64)
200             136:  6(int64_t) IAdd 135 134
201                              Store 8(i64) 136
202             137:     87(ptr) AccessChain 86(s) 18
203             138:  6(int64_t) Load 8(i64)
204             139:  6(int64_t) AtomicCompareExchange 137 23 24 24 138 21
205             140:  6(int64_t) Load 8(i64)
206             141:  6(int64_t) IAdd 140 139
207                              Store 8(i64) 141
208             142:  6(int64_t) Load 8(i64)
209             143:     87(ptr) AccessChain 86(s) 18
210                              Store 143 142
211             144: 10(int64_t) Load 12(u64)
212             145:     92(ptr) AccessChain 86(s) 28
213                              Store 145 144
214                              Return
215                              FunctionEnd
216