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