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): 8000b
// 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"
Decorate 14(Buffer) BufferBlock
MemberDecorate 14(Buffer) 0 Offset 0
MemberDecorate 14(Buffer) 1 Offset 8
Decorate 16(buf) Binding 0
Decorate 16(buf) DescriptorSet 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
|