mirror of https://github.com/bkaradzic/bgfx
Updated glslang.
This commit is contained in:
parent
626db4a59f
commit
109ceef8b4
|
@ -1,7 +1,7 @@
|
||||||
spv.subgroupBallot.comp
|
spv.subgroupBallot.comp
|
||||||
// Module Version 10300
|
// Module Version 10300
|
||||||
// Generated by (magic number): 80007
|
// Generated by (magic number): 80007
|
||||||
// Id's are bound by 417
|
// Id's are bound by 397
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability Float64
|
Capability Float64
|
||||||
|
@ -51,7 +51,7 @@ spv.subgroupBallot.comp
|
||||||
Decorate 46(Buffers) Block
|
Decorate 46(Buffers) Block
|
||||||
Decorate 49(data) DescriptorSet 0
|
Decorate 49(data) DescriptorSet 0
|
||||||
Decorate 49(data) Binding 0
|
Decorate 49(data) Binding 0
|
||||||
Decorate 416 BuiltIn WorkgroupSize
|
Decorate 396 BuiltIn WorkgroupSize
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 0
|
6: TypeInt 32 0
|
||||||
|
@ -91,30 +91,30 @@ spv.subgroupBallot.comp
|
||||||
83: TypeVector 36(bool) 4
|
83: TypeVector 36(bool) 4
|
||||||
88: TypePointer StorageBuffer 17(ivec4)
|
88: TypePointer StorageBuffer 17(ivec4)
|
||||||
96: TypePointer StorageBuffer 40(float)
|
96: TypePointer StorageBuffer 40(float)
|
||||||
103: TypeVector 40(float) 2
|
102: TypeVector 40(float) 2
|
||||||
104: TypePointer StorageBuffer 41(fvec4)
|
103: TypePointer StorageBuffer 41(fvec4)
|
||||||
114: TypeVector 40(float) 3
|
112: TypeVector 40(float) 3
|
||||||
124: 42(int) Constant 3
|
121: 42(int) Constant 3
|
||||||
131: TypePointer StorageBuffer 42(int)
|
127: TypePointer StorageBuffer 42(int)
|
||||||
138: TypeVector 42(int) 2
|
133: TypeVector 42(int) 2
|
||||||
139: TypePointer StorageBuffer 43(ivec4)
|
134: TypePointer StorageBuffer 43(ivec4)
|
||||||
149: TypeVector 42(int) 3
|
143: TypeVector 42(int) 3
|
||||||
171: TypeVector 6(int) 2
|
162: TypeVector 6(int) 2
|
||||||
181: TypeVector 6(int) 3
|
171: TypeVector 6(int) 3
|
||||||
197: TypePointer StorageBuffer 44(float64_t)
|
185: TypePointer StorageBuffer 44(float64_t)
|
||||||
204: TypeVector 44(float64_t) 2
|
191: TypeVector 44(float64_t) 2
|
||||||
205: TypePointer StorageBuffer 45(f64vec4)
|
192: TypePointer StorageBuffer 45(f64vec4)
|
||||||
215: TypeVector 44(float64_t) 3
|
201: TypeVector 44(float64_t) 3
|
||||||
242: 138(ivec2) ConstantComposite 61 61
|
225: 133(ivec2) ConstantComposite 61 61
|
||||||
243: TypeVector 36(bool) 2
|
226: TypeVector 36(bool) 2
|
||||||
247: 138(ivec2) ConstantComposite 60 60
|
229: 133(ivec2) ConstantComposite 60 60
|
||||||
256: 149(ivec3) ConstantComposite 61 61 61
|
238: 143(ivec3) ConstantComposite 61 61 61
|
||||||
257: TypeVector 36(bool) 3
|
239: TypeVector 36(bool) 3
|
||||||
261: 149(ivec3) ConstantComposite 60 60 60
|
242: 143(ivec3) ConstantComposite 60 60 60
|
||||||
269: 43(ivec4) ConstantComposite 61 61 61 61
|
250: 43(ivec4) ConstantComposite 61 61 61 61
|
||||||
273: 43(ivec4) ConstantComposite 60 60 60 60
|
253: 43(ivec4) ConstantComposite 60 60 60 60
|
||||||
415: 6(int) Constant 8
|
395: 6(int) Constant 8
|
||||||
416: 181(ivec3) ConstantComposite 415 415 64
|
396: 171(ivec3) ConstantComposite 395 395 64
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(invocation): 7(ptr) Variable Function
|
8(invocation): 7(ptr) Variable Function
|
||||||
|
@ -179,346 +179,326 @@ spv.subgroupBallot.comp
|
||||||
87: Label
|
87: Label
|
||||||
92: 36(bool) Phi 85 5 91 86
|
92: 36(bool) Phi 85 5 91 86
|
||||||
SelectionMerge 94 None
|
SelectionMerge 94 None
|
||||||
BranchConditional 92 93 276
|
BranchConditional 92 93 256
|
||||||
93: Label
|
93: Label
|
||||||
95: 6(int) Load 8(invocation)
|
95: 6(int) Load 8(invocation)
|
||||||
97: 96(ptr) AccessChain 49(data) 61 61 54
|
97: 96(ptr) AccessChain 49(data) 61 61 54
|
||||||
98: 40(float) Load 97
|
98: 40(float) Load 97
|
||||||
99: 6(int) Load 8(invocation)
|
99: 40(float) GroupNonUniformBroadcast 38 98 38
|
||||||
100: 40(float) GroupNonUniformBroadcast 38 98 99
|
100: 96(ptr) AccessChain 49(data) 95 61 54
|
||||||
101: 96(ptr) AccessChain 49(data) 95 61 54
|
Store 100 99
|
||||||
Store 101 100
|
101: 6(int) Load 8(invocation)
|
||||||
102: 6(int) Load 8(invocation)
|
104: 103(ptr) AccessChain 49(data) 60 61
|
||||||
105: 104(ptr) AccessChain 49(data) 60 61
|
105: 41(fvec4) Load 104
|
||||||
106: 41(fvec4) Load 105
|
106: 102(fvec2) VectorShuffle 105 105 0 1
|
||||||
107: 103(fvec2) VectorShuffle 106 106 0 1
|
107: 102(fvec2) GroupNonUniformBroadcast 38 106 38
|
||||||
108: 6(int) Load 8(invocation)
|
108: 103(ptr) AccessChain 49(data) 101 61
|
||||||
109: 103(fvec2) GroupNonUniformBroadcast 38 107 108
|
109: 41(fvec4) Load 108
|
||||||
110: 104(ptr) AccessChain 49(data) 102 61
|
110: 41(fvec4) VectorShuffle 109 107 4 5 2 3
|
||||||
111: 41(fvec4) Load 110
|
Store 108 110
|
||||||
112: 41(fvec4) VectorShuffle 111 109 4 5 2 3
|
111: 6(int) Load 8(invocation)
|
||||||
Store 110 112
|
113: 103(ptr) AccessChain 49(data) 51 61
|
||||||
113: 6(int) Load 8(invocation)
|
114: 41(fvec4) Load 113
|
||||||
115: 104(ptr) AccessChain 49(data) 51 61
|
115: 112(fvec3) VectorShuffle 114 114 0 1 2
|
||||||
116: 41(fvec4) Load 115
|
116: 112(fvec3) GroupNonUniformBroadcast 38 115 38
|
||||||
117: 114(fvec3) VectorShuffle 116 116 0 1 2
|
117: 103(ptr) AccessChain 49(data) 111 61
|
||||||
118: 6(int) Load 8(invocation)
|
118: 41(fvec4) Load 117
|
||||||
119: 114(fvec3) GroupNonUniformBroadcast 38 117 118
|
119: 41(fvec4) VectorShuffle 118 116 4 5 6 3
|
||||||
120: 104(ptr) AccessChain 49(data) 113 61
|
Store 117 119
|
||||||
121: 41(fvec4) Load 120
|
120: 6(int) Load 8(invocation)
|
||||||
122: 41(fvec4) VectorShuffle 121 119 4 5 6 3
|
122: 103(ptr) AccessChain 49(data) 121 61
|
||||||
Store 120 122
|
123: 41(fvec4) Load 122
|
||||||
123: 6(int) Load 8(invocation)
|
124: 41(fvec4) GroupNonUniformBroadcast 38 123 38
|
||||||
125: 104(ptr) AccessChain 49(data) 124 61
|
125: 103(ptr) AccessChain 49(data) 120 61
|
||||||
126: 41(fvec4) Load 125
|
Store 125 124
|
||||||
127: 6(int) Load 8(invocation)
|
126: 6(int) Load 8(invocation)
|
||||||
128: 41(fvec4) GroupNonUniformBroadcast 38 126 127
|
128: 127(ptr) AccessChain 49(data) 61 60 54
|
||||||
129: 104(ptr) AccessChain 49(data) 123 61
|
129: 42(int) Load 128
|
||||||
Store 129 128
|
130: 42(int) GroupNonUniformBroadcast 38 129 72
|
||||||
130: 6(int) Load 8(invocation)
|
131: 127(ptr) AccessChain 49(data) 126 60 54
|
||||||
132: 131(ptr) AccessChain 49(data) 61 60 54
|
Store 131 130
|
||||||
133: 42(int) Load 132
|
132: 6(int) Load 8(invocation)
|
||||||
134: 6(int) Load 8(invocation)
|
135: 134(ptr) AccessChain 49(data) 60 60
|
||||||
135: 42(int) GroupNonUniformBroadcast 38 133 134
|
136: 43(ivec4) Load 135
|
||||||
136: 131(ptr) AccessChain 49(data) 130 60 54
|
137: 133(ivec2) VectorShuffle 136 136 0 1
|
||||||
Store 136 135
|
138: 133(ivec2) GroupNonUniformBroadcast 38 137 72
|
||||||
137: 6(int) Load 8(invocation)
|
139: 134(ptr) AccessChain 49(data) 132 60
|
||||||
140: 139(ptr) AccessChain 49(data) 60 60
|
140: 43(ivec4) Load 139
|
||||||
141: 43(ivec4) Load 140
|
141: 43(ivec4) VectorShuffle 140 138 4 5 2 3
|
||||||
142: 138(ivec2) VectorShuffle 141 141 0 1
|
Store 139 141
|
||||||
143: 6(int) Load 8(invocation)
|
142: 6(int) Load 8(invocation)
|
||||||
144: 138(ivec2) GroupNonUniformBroadcast 38 142 143
|
144: 134(ptr) AccessChain 49(data) 51 60
|
||||||
145: 139(ptr) AccessChain 49(data) 137 60
|
145: 43(ivec4) Load 144
|
||||||
146: 43(ivec4) Load 145
|
146: 143(ivec3) VectorShuffle 145 145 0 1 2
|
||||||
147: 43(ivec4) VectorShuffle 146 144 4 5 2 3
|
147: 143(ivec3) GroupNonUniformBroadcast 38 146 72
|
||||||
Store 145 147
|
148: 134(ptr) AccessChain 49(data) 142 60
|
||||||
148: 6(int) Load 8(invocation)
|
149: 43(ivec4) Load 148
|
||||||
150: 139(ptr) AccessChain 49(data) 51 60
|
150: 43(ivec4) VectorShuffle 149 147 4 5 6 3
|
||||||
151: 43(ivec4) Load 150
|
Store 148 150
|
||||||
152: 149(ivec3) VectorShuffle 151 151 0 1 2
|
151: 6(int) Load 8(invocation)
|
||||||
153: 6(int) Load 8(invocation)
|
152: 134(ptr) AccessChain 49(data) 121 60
|
||||||
154: 149(ivec3) GroupNonUniformBroadcast 38 152 153
|
153: 43(ivec4) Load 152
|
||||||
155: 139(ptr) AccessChain 49(data) 148 60
|
154: 43(ivec4) GroupNonUniformBroadcast 38 153 72
|
||||||
156: 43(ivec4) Load 155
|
155: 134(ptr) AccessChain 49(data) 151 60
|
||||||
157: 43(ivec4) VectorShuffle 156 154 4 5 6 3
|
Store 155 154
|
||||||
Store 155 157
|
156: 6(int) Load 8(invocation)
|
||||||
158: 6(int) Load 8(invocation)
|
157: 55(ptr) AccessChain 49(data) 61 51 54
|
||||||
159: 139(ptr) AccessChain 49(data) 124 60
|
158: 6(int) Load 157
|
||||||
160: 43(ivec4) Load 159
|
159: 6(int) GroupNonUniformBroadcast 38 158 64
|
||||||
|
160: 55(ptr) AccessChain 49(data) 156 51 54
|
||||||
|
Store 160 159
|
||||||
161: 6(int) Load 8(invocation)
|
161: 6(int) Load 8(invocation)
|
||||||
162: 43(ivec4) GroupNonUniformBroadcast 38 160 161
|
163: 88(ptr) AccessChain 49(data) 60 51
|
||||||
163: 139(ptr) AccessChain 49(data) 158 60
|
164: 17(ivec4) Load 163
|
||||||
Store 163 162
|
165: 162(ivec2) VectorShuffle 164 164 0 1
|
||||||
164: 6(int) Load 8(invocation)
|
166: 162(ivec2) GroupNonUniformBroadcast 38 165 64
|
||||||
165: 55(ptr) AccessChain 49(data) 61 51 54
|
167: 88(ptr) AccessChain 49(data) 161 51
|
||||||
166: 6(int) Load 165
|
168: 17(ivec4) Load 167
|
||||||
167: 6(int) Load 8(invocation)
|
169: 17(ivec4) VectorShuffle 168 166 4 5 2 3
|
||||||
168: 6(int) GroupNonUniformBroadcast 38 166 167
|
Store 167 169
|
||||||
169: 55(ptr) AccessChain 49(data) 164 51 54
|
|
||||||
Store 169 168
|
|
||||||
170: 6(int) Load 8(invocation)
|
170: 6(int) Load 8(invocation)
|
||||||
172: 88(ptr) AccessChain 49(data) 60 51
|
172: 88(ptr) AccessChain 49(data) 51 51
|
||||||
173: 17(ivec4) Load 172
|
173: 17(ivec4) Load 172
|
||||||
174: 171(ivec2) VectorShuffle 173 173 0 1
|
174: 171(ivec3) VectorShuffle 173 173 0 1 2
|
||||||
175: 6(int) Load 8(invocation)
|
175: 171(ivec3) GroupNonUniformBroadcast 38 174 64
|
||||||
176: 171(ivec2) GroupNonUniformBroadcast 38 174 175
|
176: 88(ptr) AccessChain 49(data) 170 51
|
||||||
177: 88(ptr) AccessChain 49(data) 170 51
|
177: 17(ivec4) Load 176
|
||||||
178: 17(ivec4) Load 177
|
178: 17(ivec4) VectorShuffle 177 175 4 5 6 3
|
||||||
179: 17(ivec4) VectorShuffle 178 176 4 5 2 3
|
Store 176 178
|
||||||
Store 177 179
|
179: 6(int) Load 8(invocation)
|
||||||
180: 6(int) Load 8(invocation)
|
180: 88(ptr) AccessChain 49(data) 121 51
|
||||||
182: 88(ptr) AccessChain 49(data) 51 51
|
181: 17(ivec4) Load 180
|
||||||
183: 17(ivec4) Load 182
|
182: 17(ivec4) GroupNonUniformBroadcast 38 181 64
|
||||||
184: 181(ivec3) VectorShuffle 183 183 0 1 2
|
183: 88(ptr) AccessChain 49(data) 179 51
|
||||||
185: 6(int) Load 8(invocation)
|
Store 183 182
|
||||||
186: 181(ivec3) GroupNonUniformBroadcast 38 184 185
|
184: 6(int) Load 8(invocation)
|
||||||
187: 88(ptr) AccessChain 49(data) 180 51
|
186: 185(ptr) AccessChain 49(data) 61 121 54
|
||||||
188: 17(ivec4) Load 187
|
187:44(float64_t) Load 186
|
||||||
189: 17(ivec4) VectorShuffle 188 186 4 5 6 3
|
188:44(float64_t) GroupNonUniformBroadcast 38 187 54
|
||||||
Store 187 189
|
189: 185(ptr) AccessChain 49(data) 184 121 54
|
||||||
|
Store 189 188
|
||||||
190: 6(int) Load 8(invocation)
|
190: 6(int) Load 8(invocation)
|
||||||
191: 88(ptr) AccessChain 49(data) 124 51
|
193: 192(ptr) AccessChain 49(data) 60 121
|
||||||
192: 17(ivec4) Load 191
|
194: 45(f64vec4) Load 193
|
||||||
193: 6(int) Load 8(invocation)
|
195:191(f64vec2) VectorShuffle 194 194 0 1
|
||||||
194: 17(ivec4) GroupNonUniformBroadcast 38 192 193
|
196:191(f64vec2) GroupNonUniformBroadcast 38 195 54
|
||||||
195: 88(ptr) AccessChain 49(data) 190 51
|
197: 192(ptr) AccessChain 49(data) 190 121
|
||||||
Store 195 194
|
198: 45(f64vec4) Load 197
|
||||||
196: 6(int) Load 8(invocation)
|
199: 45(f64vec4) VectorShuffle 198 196 4 5 2 3
|
||||||
198: 197(ptr) AccessChain 49(data) 61 124 54
|
Store 197 199
|
||||||
199:44(float64_t) Load 198
|
|
||||||
200: 6(int) Load 8(invocation)
|
200: 6(int) Load 8(invocation)
|
||||||
201:44(float64_t) GroupNonUniformBroadcast 38 199 200
|
202: 192(ptr) AccessChain 49(data) 51 121
|
||||||
202: 197(ptr) AccessChain 49(data) 196 124 54
|
203: 45(f64vec4) Load 202
|
||||||
Store 202 201
|
204:201(f64vec3) VectorShuffle 203 203 0 1 2
|
||||||
203: 6(int) Load 8(invocation)
|
205:201(f64vec3) GroupNonUniformBroadcast 38 204 54
|
||||||
206: 205(ptr) AccessChain 49(data) 60 124
|
206: 192(ptr) AccessChain 49(data) 200 121
|
||||||
207: 45(f64vec4) Load 206
|
207: 45(f64vec4) Load 206
|
||||||
208:204(f64vec2) VectorShuffle 207 207 0 1
|
208: 45(f64vec4) VectorShuffle 207 205 4 5 6 3
|
||||||
|
Store 206 208
|
||||||
209: 6(int) Load 8(invocation)
|
209: 6(int) Load 8(invocation)
|
||||||
210:204(f64vec2) GroupNonUniformBroadcast 38 208 209
|
210: 192(ptr) AccessChain 49(data) 121 121
|
||||||
211: 205(ptr) AccessChain 49(data) 203 124
|
211: 45(f64vec4) Load 210
|
||||||
212: 45(f64vec4) Load 211
|
212: 45(f64vec4) GroupNonUniformBroadcast 38 211 54
|
||||||
213: 45(f64vec4) VectorShuffle 212 210 4 5 2 3
|
213: 192(ptr) AccessChain 49(data) 209 121
|
||||||
Store 211 213
|
Store 213 212
|
||||||
214: 6(int) Load 8(invocation)
|
214: 6(int) Load 8(invocation)
|
||||||
216: 205(ptr) AccessChain 49(data) 51 124
|
215: 127(ptr) AccessChain 49(data) 61 60 54
|
||||||
217: 45(f64vec4) Load 216
|
216: 42(int) Load 215
|
||||||
218:215(f64vec3) VectorShuffle 217 217 0 1 2
|
217: 36(bool) SLessThan 216 61
|
||||||
219: 6(int) Load 8(invocation)
|
218: 36(bool) GroupNonUniformBroadcast 38 217 64
|
||||||
220:215(f64vec3) GroupNonUniformBroadcast 38 218 219
|
219: 42(int) Select 218 60 61
|
||||||
221: 205(ptr) AccessChain 49(data) 214 124
|
220: 127(ptr) AccessChain 49(data) 214 60 54
|
||||||
222: 45(f64vec4) Load 221
|
Store 220 219
|
||||||
223: 45(f64vec4) VectorShuffle 222 220 4 5 6 3
|
221: 6(int) Load 8(invocation)
|
||||||
Store 221 223
|
222: 134(ptr) AccessChain 49(data) 60 60
|
||||||
224: 6(int) Load 8(invocation)
|
223: 43(ivec4) Load 222
|
||||||
225: 205(ptr) AccessChain 49(data) 124 124
|
224: 133(ivec2) VectorShuffle 223 223 0 1
|
||||||
226: 45(f64vec4) Load 225
|
227: 226(bvec2) SLessThan 224 225
|
||||||
227: 6(int) Load 8(invocation)
|
228: 226(bvec2) GroupNonUniformBroadcast 38 227 64
|
||||||
228: 45(f64vec4) GroupNonUniformBroadcast 38 226 227
|
230: 133(ivec2) Select 228 229 225
|
||||||
229: 205(ptr) AccessChain 49(data) 224 124
|
231: 134(ptr) AccessChain 49(data) 221 60
|
||||||
Store 229 228
|
232: 43(ivec4) Load 231
|
||||||
230: 6(int) Load 8(invocation)
|
233: 43(ivec4) VectorShuffle 232 230 4 5 2 3
|
||||||
231: 131(ptr) AccessChain 49(data) 61 60 54
|
Store 231 233
|
||||||
232: 42(int) Load 231
|
|
||||||
233: 36(bool) SLessThan 232 61
|
|
||||||
234: 6(int) Load 8(invocation)
|
234: 6(int) Load 8(invocation)
|
||||||
235: 36(bool) GroupNonUniformBroadcast 38 233 234
|
235: 134(ptr) AccessChain 49(data) 60 60
|
||||||
236: 42(int) Select 235 60 61
|
236: 43(ivec4) Load 235
|
||||||
237: 131(ptr) AccessChain 49(data) 230 60 54
|
237: 143(ivec3) VectorShuffle 236 236 0 1 2
|
||||||
Store 237 236
|
240: 239(bvec3) SLessThan 237 238
|
||||||
238: 6(int) Load 8(invocation)
|
241: 239(bvec3) GroupNonUniformBroadcast 38 240 64
|
||||||
239: 139(ptr) AccessChain 49(data) 60 60
|
243: 143(ivec3) Select 241 242 238
|
||||||
240: 43(ivec4) Load 239
|
244: 134(ptr) AccessChain 49(data) 234 60
|
||||||
241: 138(ivec2) VectorShuffle 240 240 0 1
|
245: 43(ivec4) Load 244
|
||||||
244: 243(bvec2) SLessThan 241 242
|
246: 43(ivec4) VectorShuffle 245 243 4 5 6 3
|
||||||
245: 6(int) Load 8(invocation)
|
Store 244 246
|
||||||
246: 243(bvec2) GroupNonUniformBroadcast 38 244 245
|
247: 6(int) Load 8(invocation)
|
||||||
248: 138(ivec2) Select 246 247 242
|
248: 134(ptr) AccessChain 49(data) 60 60
|
||||||
249: 139(ptr) AccessChain 49(data) 238 60
|
249: 43(ivec4) Load 248
|
||||||
250: 43(ivec4) Load 249
|
251: 83(bvec4) SLessThan 249 250
|
||||||
251: 43(ivec4) VectorShuffle 250 248 4 5 2 3
|
252: 83(bvec4) GroupNonUniformBroadcast 38 251 64
|
||||||
Store 249 251
|
254: 43(ivec4) Select 252 253 250
|
||||||
252: 6(int) Load 8(invocation)
|
255: 134(ptr) AccessChain 49(data) 247 60
|
||||||
253: 139(ptr) AccessChain 49(data) 60 60
|
Store 255 254
|
||||||
254: 43(ivec4) Load 253
|
|
||||||
255: 149(ivec3) VectorShuffle 254 254 0 1 2
|
|
||||||
258: 257(bvec3) SLessThan 255 256
|
|
||||||
259: 6(int) Load 8(invocation)
|
|
||||||
260: 257(bvec3) GroupNonUniformBroadcast 38 258 259
|
|
||||||
262: 149(ivec3) Select 260 261 256
|
|
||||||
263: 139(ptr) AccessChain 49(data) 252 60
|
|
||||||
264: 43(ivec4) Load 263
|
|
||||||
265: 43(ivec4) VectorShuffle 264 262 4 5 6 3
|
|
||||||
Store 263 265
|
|
||||||
266: 6(int) Load 8(invocation)
|
|
||||||
267: 139(ptr) AccessChain 49(data) 60 60
|
|
||||||
268: 43(ivec4) Load 267
|
|
||||||
270: 83(bvec4) SLessThan 268 269
|
|
||||||
271: 6(int) Load 8(invocation)
|
|
||||||
272: 83(bvec4) GroupNonUniformBroadcast 38 270 271
|
|
||||||
274: 43(ivec4) Select 272 273 269
|
|
||||||
275: 139(ptr) AccessChain 49(data) 266 60
|
|
||||||
Store 275 274
|
|
||||||
Branch 94
|
Branch 94
|
||||||
276: Label
|
256: Label
|
||||||
277: 6(int) Load 8(invocation)
|
257: 6(int) Load 8(invocation)
|
||||||
278: 96(ptr) AccessChain 49(data) 61 61 54
|
258: 96(ptr) AccessChain 49(data) 61 61 54
|
||||||
279: 40(float) Load 278
|
259: 40(float) Load 258
|
||||||
280: 40(float) GroupNonUniformBroadcastFirst 38 279
|
260: 40(float) GroupNonUniformBroadcastFirst 38 259
|
||||||
281: 96(ptr) AccessChain 49(data) 277 61 54
|
261: 96(ptr) AccessChain 49(data) 257 61 54
|
||||||
Store 281 280
|
Store 261 260
|
||||||
282: 6(int) Load 8(invocation)
|
262: 6(int) Load 8(invocation)
|
||||||
283: 104(ptr) AccessChain 49(data) 60 61
|
263: 103(ptr) AccessChain 49(data) 60 61
|
||||||
284: 41(fvec4) Load 283
|
264: 41(fvec4) Load 263
|
||||||
285: 103(fvec2) VectorShuffle 284 284 0 1
|
265: 102(fvec2) VectorShuffle 264 264 0 1
|
||||||
286: 103(fvec2) GroupNonUniformBroadcastFirst 38 285
|
266: 102(fvec2) GroupNonUniformBroadcastFirst 38 265
|
||||||
287: 104(ptr) AccessChain 49(data) 282 61
|
267: 103(ptr) AccessChain 49(data) 262 61
|
||||||
288: 41(fvec4) Load 287
|
268: 41(fvec4) Load 267
|
||||||
289: 41(fvec4) VectorShuffle 288 286 4 5 2 3
|
269: 41(fvec4) VectorShuffle 268 266 4 5 2 3
|
||||||
Store 287 289
|
Store 267 269
|
||||||
290: 6(int) Load 8(invocation)
|
270: 6(int) Load 8(invocation)
|
||||||
291: 104(ptr) AccessChain 49(data) 51 61
|
271: 103(ptr) AccessChain 49(data) 51 61
|
||||||
292: 41(fvec4) Load 291
|
272: 41(fvec4) Load 271
|
||||||
293: 114(fvec3) VectorShuffle 292 292 0 1 2
|
273: 112(fvec3) VectorShuffle 272 272 0 1 2
|
||||||
294: 114(fvec3) GroupNonUniformBroadcastFirst 38 293
|
274: 112(fvec3) GroupNonUniformBroadcastFirst 38 273
|
||||||
295: 104(ptr) AccessChain 49(data) 290 61
|
275: 103(ptr) AccessChain 49(data) 270 61
|
||||||
296: 41(fvec4) Load 295
|
276: 41(fvec4) Load 275
|
||||||
297: 41(fvec4) VectorShuffle 296 294 4 5 6 3
|
277: 41(fvec4) VectorShuffle 276 274 4 5 6 3
|
||||||
Store 295 297
|
Store 275 277
|
||||||
298: 6(int) Load 8(invocation)
|
278: 6(int) Load 8(invocation)
|
||||||
299: 104(ptr) AccessChain 49(data) 124 61
|
279: 103(ptr) AccessChain 49(data) 121 61
|
||||||
300: 41(fvec4) Load 299
|
280: 41(fvec4) Load 279
|
||||||
301: 41(fvec4) GroupNonUniformBroadcastFirst 38 300
|
281: 41(fvec4) GroupNonUniformBroadcastFirst 38 280
|
||||||
302: 104(ptr) AccessChain 49(data) 298 61
|
282: 103(ptr) AccessChain 49(data) 278 61
|
||||||
Store 302 301
|
Store 282 281
|
||||||
303: 6(int) Load 8(invocation)
|
283: 6(int) Load 8(invocation)
|
||||||
304: 131(ptr) AccessChain 49(data) 61 60 54
|
284: 127(ptr) AccessChain 49(data) 61 60 54
|
||||||
305: 42(int) Load 304
|
285: 42(int) Load 284
|
||||||
306: 42(int) GroupNonUniformBroadcastFirst 38 305
|
286: 42(int) GroupNonUniformBroadcastFirst 38 285
|
||||||
307: 131(ptr) AccessChain 49(data) 303 60 54
|
287: 127(ptr) AccessChain 49(data) 283 60 54
|
||||||
Store 307 306
|
Store 287 286
|
||||||
308: 6(int) Load 8(invocation)
|
288: 6(int) Load 8(invocation)
|
||||||
309: 139(ptr) AccessChain 49(data) 60 60
|
289: 134(ptr) AccessChain 49(data) 60 60
|
||||||
310: 43(ivec4) Load 309
|
290: 43(ivec4) Load 289
|
||||||
311: 138(ivec2) VectorShuffle 310 310 0 1
|
291: 133(ivec2) VectorShuffle 290 290 0 1
|
||||||
312: 138(ivec2) GroupNonUniformBroadcastFirst 38 311
|
292: 133(ivec2) GroupNonUniformBroadcastFirst 38 291
|
||||||
313: 139(ptr) AccessChain 49(data) 308 60
|
293: 134(ptr) AccessChain 49(data) 288 60
|
||||||
314: 43(ivec4) Load 313
|
294: 43(ivec4) Load 293
|
||||||
315: 43(ivec4) VectorShuffle 314 312 4 5 2 3
|
295: 43(ivec4) VectorShuffle 294 292 4 5 2 3
|
||||||
Store 313 315
|
Store 293 295
|
||||||
316: 6(int) Load 8(invocation)
|
296: 6(int) Load 8(invocation)
|
||||||
317: 139(ptr) AccessChain 49(data) 51 60
|
297: 134(ptr) AccessChain 49(data) 51 60
|
||||||
318: 43(ivec4) Load 317
|
298: 43(ivec4) Load 297
|
||||||
319: 149(ivec3) VectorShuffle 318 318 0 1 2
|
299: 143(ivec3) VectorShuffle 298 298 0 1 2
|
||||||
320: 149(ivec3) GroupNonUniformBroadcastFirst 38 319
|
300: 143(ivec3) GroupNonUniformBroadcastFirst 38 299
|
||||||
321: 139(ptr) AccessChain 49(data) 316 60
|
301: 134(ptr) AccessChain 49(data) 296 60
|
||||||
322: 43(ivec4) Load 321
|
302: 43(ivec4) Load 301
|
||||||
323: 43(ivec4) VectorShuffle 322 320 4 5 6 3
|
303: 43(ivec4) VectorShuffle 302 300 4 5 6 3
|
||||||
Store 321 323
|
Store 301 303
|
||||||
324: 6(int) Load 8(invocation)
|
304: 6(int) Load 8(invocation)
|
||||||
325: 139(ptr) AccessChain 49(data) 124 60
|
305: 134(ptr) AccessChain 49(data) 121 60
|
||||||
326: 43(ivec4) Load 325
|
306: 43(ivec4) Load 305
|
||||||
327: 43(ivec4) GroupNonUniformBroadcastFirst 38 326
|
307: 43(ivec4) GroupNonUniformBroadcastFirst 38 306
|
||||||
328: 139(ptr) AccessChain 49(data) 324 60
|
308: 134(ptr) AccessChain 49(data) 304 60
|
||||||
Store 328 327
|
Store 308 307
|
||||||
329: 6(int) Load 8(invocation)
|
309: 6(int) Load 8(invocation)
|
||||||
330: 55(ptr) AccessChain 49(data) 61 51 54
|
310: 55(ptr) AccessChain 49(data) 61 51 54
|
||||||
331: 6(int) Load 330
|
311: 6(int) Load 310
|
||||||
332: 6(int) GroupNonUniformBroadcastFirst 38 331
|
312: 6(int) GroupNonUniformBroadcastFirst 38 311
|
||||||
333: 55(ptr) AccessChain 49(data) 329 51 54
|
313: 55(ptr) AccessChain 49(data) 309 51 54
|
||||||
Store 333 332
|
Store 313 312
|
||||||
334: 6(int) Load 8(invocation)
|
314: 6(int) Load 8(invocation)
|
||||||
335: 88(ptr) AccessChain 49(data) 60 51
|
315: 88(ptr) AccessChain 49(data) 60 51
|
||||||
336: 17(ivec4) Load 335
|
316: 17(ivec4) Load 315
|
||||||
337: 171(ivec2) VectorShuffle 336 336 0 1
|
317: 162(ivec2) VectorShuffle 316 316 0 1
|
||||||
338: 171(ivec2) GroupNonUniformBroadcastFirst 38 337
|
318: 162(ivec2) GroupNonUniformBroadcastFirst 38 317
|
||||||
339: 88(ptr) AccessChain 49(data) 334 51
|
319: 88(ptr) AccessChain 49(data) 314 51
|
||||||
340: 17(ivec4) Load 339
|
320: 17(ivec4) Load 319
|
||||||
341: 17(ivec4) VectorShuffle 340 338 4 5 2 3
|
321: 17(ivec4) VectorShuffle 320 318 4 5 2 3
|
||||||
Store 339 341
|
Store 319 321
|
||||||
342: 6(int) Load 8(invocation)
|
322: 6(int) Load 8(invocation)
|
||||||
343: 88(ptr) AccessChain 49(data) 51 51
|
323: 88(ptr) AccessChain 49(data) 51 51
|
||||||
344: 17(ivec4) Load 343
|
324: 17(ivec4) Load 323
|
||||||
345: 181(ivec3) VectorShuffle 344 344 0 1 2
|
325: 171(ivec3) VectorShuffle 324 324 0 1 2
|
||||||
346: 181(ivec3) GroupNonUniformBroadcastFirst 38 345
|
326: 171(ivec3) GroupNonUniformBroadcastFirst 38 325
|
||||||
347: 88(ptr) AccessChain 49(data) 342 51
|
327: 88(ptr) AccessChain 49(data) 322 51
|
||||||
348: 17(ivec4) Load 347
|
328: 17(ivec4) Load 327
|
||||||
349: 17(ivec4) VectorShuffle 348 346 4 5 6 3
|
329: 17(ivec4) VectorShuffle 328 326 4 5 6 3
|
||||||
Store 347 349
|
Store 327 329
|
||||||
350: 6(int) Load 8(invocation)
|
330: 6(int) Load 8(invocation)
|
||||||
351: 88(ptr) AccessChain 49(data) 124 51
|
331: 88(ptr) AccessChain 49(data) 121 51
|
||||||
352: 17(ivec4) Load 351
|
332: 17(ivec4) Load 331
|
||||||
353: 17(ivec4) GroupNonUniformBroadcastFirst 38 352
|
333: 17(ivec4) GroupNonUniformBroadcastFirst 38 332
|
||||||
354: 88(ptr) AccessChain 49(data) 350 51
|
334: 88(ptr) AccessChain 49(data) 330 51
|
||||||
Store 354 353
|
Store 334 333
|
||||||
355: 6(int) Load 8(invocation)
|
335: 6(int) Load 8(invocation)
|
||||||
356: 197(ptr) AccessChain 49(data) 61 124 54
|
336: 185(ptr) AccessChain 49(data) 61 121 54
|
||||||
357:44(float64_t) Load 356
|
337:44(float64_t) Load 336
|
||||||
358:44(float64_t) GroupNonUniformBroadcastFirst 38 357
|
338:44(float64_t) GroupNonUniformBroadcastFirst 38 337
|
||||||
359: 197(ptr) AccessChain 49(data) 355 124 54
|
339: 185(ptr) AccessChain 49(data) 335 121 54
|
||||||
Store 359 358
|
Store 339 338
|
||||||
360: 6(int) Load 8(invocation)
|
340: 6(int) Load 8(invocation)
|
||||||
361: 205(ptr) AccessChain 49(data) 60 124
|
341: 192(ptr) AccessChain 49(data) 60 121
|
||||||
362: 45(f64vec4) Load 361
|
342: 45(f64vec4) Load 341
|
||||||
363:204(f64vec2) VectorShuffle 362 362 0 1
|
343:191(f64vec2) VectorShuffle 342 342 0 1
|
||||||
364:204(f64vec2) GroupNonUniformBroadcastFirst 38 363
|
344:191(f64vec2) GroupNonUniformBroadcastFirst 38 343
|
||||||
365: 205(ptr) AccessChain 49(data) 360 124
|
345: 192(ptr) AccessChain 49(data) 340 121
|
||||||
366: 45(f64vec4) Load 365
|
346: 45(f64vec4) Load 345
|
||||||
367: 45(f64vec4) VectorShuffle 366 364 4 5 2 3
|
347: 45(f64vec4) VectorShuffle 346 344 4 5 2 3
|
||||||
Store 365 367
|
Store 345 347
|
||||||
|
348: 6(int) Load 8(invocation)
|
||||||
|
349: 192(ptr) AccessChain 49(data) 51 121
|
||||||
|
350: 45(f64vec4) Load 349
|
||||||
|
351:201(f64vec3) VectorShuffle 350 350 0 1 2
|
||||||
|
352:201(f64vec3) GroupNonUniformBroadcastFirst 38 351
|
||||||
|
353: 192(ptr) AccessChain 49(data) 348 121
|
||||||
|
354: 45(f64vec4) Load 353
|
||||||
|
355: 45(f64vec4) VectorShuffle 354 352 4 5 6 3
|
||||||
|
Store 353 355
|
||||||
|
356: 6(int) Load 8(invocation)
|
||||||
|
357: 192(ptr) AccessChain 49(data) 121 121
|
||||||
|
358: 45(f64vec4) Load 357
|
||||||
|
359: 45(f64vec4) GroupNonUniformBroadcastFirst 38 358
|
||||||
|
360: 192(ptr) AccessChain 49(data) 356 121
|
||||||
|
Store 360 359
|
||||||
|
361: 6(int) Load 8(invocation)
|
||||||
|
362: 127(ptr) AccessChain 49(data) 61 60 54
|
||||||
|
363: 42(int) Load 362
|
||||||
|
364: 36(bool) SLessThan 363 61
|
||||||
|
365: 36(bool) GroupNonUniformBroadcastFirst 38 364
|
||||||
|
366: 42(int) Select 365 60 61
|
||||||
|
367: 127(ptr) AccessChain 49(data) 361 60 54
|
||||||
|
Store 367 366
|
||||||
368: 6(int) Load 8(invocation)
|
368: 6(int) Load 8(invocation)
|
||||||
369: 205(ptr) AccessChain 49(data) 51 124
|
369: 134(ptr) AccessChain 49(data) 60 60
|
||||||
370: 45(f64vec4) Load 369
|
370: 43(ivec4) Load 369
|
||||||
371:215(f64vec3) VectorShuffle 370 370 0 1 2
|
371: 133(ivec2) VectorShuffle 370 370 0 1
|
||||||
372:215(f64vec3) GroupNonUniformBroadcastFirst 38 371
|
372: 226(bvec2) SLessThan 371 225
|
||||||
373: 205(ptr) AccessChain 49(data) 368 124
|
373: 226(bvec2) GroupNonUniformBroadcastFirst 38 372
|
||||||
374: 45(f64vec4) Load 373
|
374: 133(ivec2) Select 373 229 225
|
||||||
375: 45(f64vec4) VectorShuffle 374 372 4 5 6 3
|
375: 134(ptr) AccessChain 49(data) 368 60
|
||||||
Store 373 375
|
376: 43(ivec4) Load 375
|
||||||
376: 6(int) Load 8(invocation)
|
377: 43(ivec4) VectorShuffle 376 374 4 5 2 3
|
||||||
377: 205(ptr) AccessChain 49(data) 124 124
|
Store 375 377
|
||||||
378: 45(f64vec4) Load 377
|
378: 6(int) Load 8(invocation)
|
||||||
379: 45(f64vec4) GroupNonUniformBroadcastFirst 38 378
|
379: 134(ptr) AccessChain 49(data) 60 60
|
||||||
380: 205(ptr) AccessChain 49(data) 376 124
|
380: 43(ivec4) Load 379
|
||||||
Store 380 379
|
381: 143(ivec3) VectorShuffle 380 380 0 1 2
|
||||||
381: 6(int) Load 8(invocation)
|
382: 239(bvec3) SLessThan 381 238
|
||||||
382: 131(ptr) AccessChain 49(data) 61 60 54
|
383: 239(bvec3) GroupNonUniformBroadcastFirst 38 382
|
||||||
383: 42(int) Load 382
|
384: 143(ivec3) Select 383 242 238
|
||||||
384: 36(bool) SLessThan 383 61
|
385: 134(ptr) AccessChain 49(data) 378 60
|
||||||
385: 36(bool) GroupNonUniformBroadcastFirst 38 384
|
386: 43(ivec4) Load 385
|
||||||
386: 42(int) Select 385 60 61
|
387: 43(ivec4) VectorShuffle 386 384 4 5 6 3
|
||||||
387: 131(ptr) AccessChain 49(data) 381 60 54
|
Store 385 387
|
||||||
Store 387 386
|
|
||||||
388: 6(int) Load 8(invocation)
|
388: 6(int) Load 8(invocation)
|
||||||
389: 139(ptr) AccessChain 49(data) 60 60
|
389: 134(ptr) AccessChain 49(data) 60 60
|
||||||
390: 43(ivec4) Load 389
|
390: 43(ivec4) Load 389
|
||||||
391: 138(ivec2) VectorShuffle 390 390 0 1
|
391: 83(bvec4) SLessThan 390 250
|
||||||
392: 243(bvec2) SLessThan 391 242
|
392: 83(bvec4) GroupNonUniformBroadcastFirst 38 391
|
||||||
393: 243(bvec2) GroupNonUniformBroadcastFirst 38 392
|
393: 43(ivec4) Select 392 253 250
|
||||||
394: 138(ivec2) Select 393 247 242
|
394: 134(ptr) AccessChain 49(data) 388 60
|
||||||
395: 139(ptr) AccessChain 49(data) 388 60
|
Store 394 393
|
||||||
396: 43(ivec4) Load 395
|
|
||||||
397: 43(ivec4) VectorShuffle 396 394 4 5 2 3
|
|
||||||
Store 395 397
|
|
||||||
398: 6(int) Load 8(invocation)
|
|
||||||
399: 139(ptr) AccessChain 49(data) 60 60
|
|
||||||
400: 43(ivec4) Load 399
|
|
||||||
401: 149(ivec3) VectorShuffle 400 400 0 1 2
|
|
||||||
402: 257(bvec3) SLessThan 401 256
|
|
||||||
403: 257(bvec3) GroupNonUniformBroadcastFirst 38 402
|
|
||||||
404: 149(ivec3) Select 403 261 256
|
|
||||||
405: 139(ptr) AccessChain 49(data) 398 60
|
|
||||||
406: 43(ivec4) Load 405
|
|
||||||
407: 43(ivec4) VectorShuffle 406 404 4 5 6 3
|
|
||||||
Store 405 407
|
|
||||||
408: 6(int) Load 8(invocation)
|
|
||||||
409: 139(ptr) AccessChain 49(data) 60 60
|
|
||||||
410: 43(ivec4) Load 409
|
|
||||||
411: 83(bvec4) SLessThan 410 269
|
|
||||||
412: 83(bvec4) GroupNonUniformBroadcastFirst 38 411
|
|
||||||
413: 43(ivec4) Select 412 273 269
|
|
||||||
414: 139(ptr) AccessChain 49(data) 408 60
|
|
||||||
Store 414 413
|
|
||||||
Branch 94
|
Branch 94
|
||||||
94: Label
|
94: Label
|
||||||
Return
|
Return
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
spv.subgroupBallotNeg.comp
|
||||||
|
ERROR: 0:32: 'id' : argument must be compile-time constant
|
||||||
|
ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
SPIR-V is not generated for failed compile or link
|
|
@ -31,30 +31,30 @@ void main()
|
||||||
|
|
||||||
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
|
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
|
||||||
{
|
{
|
||||||
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation);
|
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3);
|
||||||
data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, invocation);
|
data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3);
|
||||||
data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, invocation);
|
data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3);
|
||||||
data[invocation].f4 = subgroupBroadcast(data[3].f4, invocation);
|
data[invocation].f4 = subgroupBroadcast(data[3].f4, 3);
|
||||||
|
|
||||||
data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, invocation);
|
data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2);
|
||||||
data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, invocation);
|
data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2);
|
||||||
data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, invocation);
|
data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2);
|
||||||
data[invocation].i4 = subgroupBroadcast(data[3].i4, invocation);
|
data[invocation].i4 = subgroupBroadcast(data[3].i4, 2);
|
||||||
|
|
||||||
data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, invocation);
|
data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1);
|
||||||
data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, invocation);
|
data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1);
|
||||||
data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, invocation);
|
data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1);
|
||||||
data[invocation].u4 = subgroupBroadcast(data[3].u4, invocation);
|
data[invocation].u4 = subgroupBroadcast(data[3].u4, 1);
|
||||||
|
|
||||||
data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, invocation);
|
data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0);
|
||||||
data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, invocation);
|
data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0);
|
||||||
data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, invocation);
|
data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0);
|
||||||
data[invocation].d4 = subgroupBroadcast(data[3].d4, invocation);
|
data[invocation].d4 = subgroupBroadcast(data[3].d4, 0);
|
||||||
|
|
||||||
data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, invocation));
|
data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1));
|
||||||
data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||||
data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||||
data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), invocation));
|
data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_ballot: enable
|
||||||
|
|
||||||
|
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
vec4 f4;
|
||||||
|
ivec4 i4;
|
||||||
|
uvec4 u4;
|
||||||
|
dvec4 d4;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||||
|
|
||||||
|
uvec4 relMask = gl_SubgroupEqMask +
|
||||||
|
gl_SubgroupGeMask +
|
||||||
|
gl_SubgroupGtMask +
|
||||||
|
gl_SubgroupLeMask +
|
||||||
|
gl_SubgroupLtMask;
|
||||||
|
|
||||||
|
uvec4 result = subgroupBallot(true);
|
||||||
|
|
||||||
|
data[invocation].u4.x = subgroupBallotBitCount(result);
|
||||||
|
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
|
||||||
|
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
|
||||||
|
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
|
||||||
|
|
||||||
|
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
|
||||||
|
}
|
|
@ -1998,6 +1998,10 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
||||||
case EOpSubgroupClusteredAnd:
|
case EOpSubgroupClusteredAnd:
|
||||||
case EOpSubgroupClusteredOr:
|
case EOpSubgroupClusteredOr:
|
||||||
case EOpSubgroupClusteredXor:
|
case EOpSubgroupClusteredXor:
|
||||||
|
// The <clusterSize> as used in the subgroupClustered<op>() operations must be:
|
||||||
|
// - An integral constant expression.
|
||||||
|
// - At least 1.
|
||||||
|
// - A power of 2.
|
||||||
if ((*argp)[1]->getAsConstantUnion() == nullptr)
|
if ((*argp)[1]->getAsConstantUnion() == nullptr)
|
||||||
error(loc, "argument must be compile-time constant", "cluster size", "");
|
error(loc, "argument must be compile-time constant", "cluster size", "");
|
||||||
else {
|
else {
|
||||||
|
@ -2009,6 +2013,12 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EOpSubgroupBroadcast:
|
||||||
|
// <id> must be an integral constant expression.
|
||||||
|
if ((*argp)[1]->getAsConstantUnion() == nullptr)
|
||||||
|
error(loc, "argument must be compile-time constant", "id", "");
|
||||||
|
break;
|
||||||
|
|
||||||
case EOpBarrier:
|
case EOpBarrier:
|
||||||
case EOpMemoryBarrier:
|
case EOpMemoryBarrier:
|
||||||
if (argp->size() > 0) {
|
if (argp->size() > 0) {
|
||||||
|
|
|
@ -388,6 +388,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||||
"spv.subgroupArithmetic.comp",
|
"spv.subgroupArithmetic.comp",
|
||||||
"spv.subgroupBasic.comp",
|
"spv.subgroupBasic.comp",
|
||||||
"spv.subgroupBallot.comp",
|
"spv.subgroupBallot.comp",
|
||||||
|
"spv.subgroupBallotNeg.comp",
|
||||||
"spv.subgroupClustered.comp",
|
"spv.subgroupClustered.comp",
|
||||||
"spv.subgroupClusteredNeg.comp",
|
"spv.subgroupClusteredNeg.comp",
|
||||||
"spv.subgroupPartitioned.comp",
|
"spv.subgroupPartitioned.comp",
|
||||||
|
|
Loading…
Reference in New Issue