3 #extension GL_KHR_shader_subgroup_arithmetic: enable
\r
4 #extension GL_EXT_shader_subgroup_extended_types_int8: enable
\r
5 #extension GL_EXT_shader_subgroup_extended_types_int16: enable
\r
6 #extension GL_EXT_shader_subgroup_extended_types_int64: enable
\r
7 #extension GL_EXT_shader_subgroup_extended_types_float16: enable
\r
9 layout (local_size_x = 8) in;
\r
11 layout(binding = 0) buffer Buffers
\r
24 uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
\r
26 data[invocation].i8.x = subgroupAdd(data[0].i8.x);
\r
27 data[invocation].i8.xy = subgroupAdd(data[1].i8.xy);
\r
28 data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz);
\r
29 data[invocation].i8 = subgroupAdd(data[3].i8);
\r
31 data[invocation].i8.x = subgroupMul(data[0].i8.x);
\r
32 data[invocation].i8.xy = subgroupMul(data[1].i8.xy);
\r
33 data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz);
\r
34 data[invocation].i8 = subgroupMul(data[3].i8);
\r
36 data[invocation].i8.x = subgroupMin(data[0].i8.x);
\r
37 data[invocation].i8.xy = subgroupMin(data[1].i8.xy);
\r
38 data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz);
\r
39 data[invocation].i8 = subgroupMin(data[3].i8);
\r
41 data[invocation].i8.x = subgroupMax(data[0].i8.x);
\r
42 data[invocation].i8.xy = subgroupMax(data[1].i8.xy);
\r
43 data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz);
\r
44 data[invocation].i8 = subgroupMax(data[3].i8);
\r
46 data[invocation].i8.x = subgroupAnd(data[0].i8.x);
\r
47 data[invocation].i8.xy = subgroupAnd(data[1].i8.xy);
\r
48 data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz);
\r
49 data[invocation].i8 = subgroupAnd(data[3].i8);
\r
51 data[invocation].i8.x = subgroupOr(data[0].i8.x);
\r
52 data[invocation].i8.xy = subgroupOr(data[1].i8.xy);
\r
53 data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz);
\r
54 data[invocation].i8 = subgroupOr(data[3].i8);
\r
56 data[invocation].i8.x = subgroupXor(data[0].i8.x);
\r
57 data[invocation].i8.xy = subgroupXor(data[1].i8.xy);
\r
58 data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz);
\r
59 data[invocation].i8 = subgroupXor(data[3].i8);
\r
61 data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x);
\r
62 data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy);
\r
63 data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz);
\r
64 data[invocation].i8 = subgroupInclusiveAdd(data[3].i8);
\r
66 data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x);
\r
67 data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy);
\r
68 data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz);
\r
69 data[invocation].i8 = subgroupInclusiveMul(data[3].i8);
\r
71 data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x);
\r
72 data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy);
\r
73 data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz);
\r
74 data[invocation].i8 = subgroupInclusiveMin(data[3].i8);
\r
76 data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x);
\r
77 data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy);
\r
78 data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz);
\r
79 data[invocation].i8 = subgroupInclusiveMax(data[3].i8);
\r
81 data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x);
\r
82 data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy);
\r
83 data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz);
\r
84 data[invocation].i8 = subgroupInclusiveAnd(data[3].i8);
\r
86 data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x);
\r
87 data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy);
\r
88 data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz);
\r
89 data[invocation].i8 = subgroupInclusiveOr(data[3].i8);
\r
91 data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x);
\r
92 data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy);
\r
93 data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz);
\r
94 data[invocation].i8 = subgroupInclusiveXor(data[3].i8);
\r
96 data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x);
\r
97 data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy);
\r
98 data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz);
\r
99 data[invocation].i8 = subgroupExclusiveAdd(data[3].i8);
\r
101 data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x);
\r
102 data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy);
\r
103 data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz);
\r
104 data[invocation].i8 = subgroupExclusiveMul(data[3].i8);
\r
106 data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x);
\r
107 data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy);
\r
108 data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz);
\r
109 data[invocation].i8 = subgroupExclusiveMin(data[3].i8);
\r
111 data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x);
\r
112 data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy);
\r
113 data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz);
\r
114 data[invocation].i8 = subgroupExclusiveMax(data[3].i8);
\r
116 data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x);
\r
117 data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy);
\r
118 data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz);
\r
119 data[invocation].i8 = subgroupExclusiveAnd(data[3].i8);
\r
121 data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x);
\r
122 data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy);
\r
123 data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz);
\r
124 data[invocation].i8 = subgroupExclusiveOr(data[3].i8);
\r
126 data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x);
\r
127 data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy);
\r
128 data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz);
\r
129 data[invocation].i8 = subgroupExclusiveXor(data[3].i8);
\r
131 data[invocation].u8.x = subgroupAdd(data[0].u8.x);
\r
132 data[invocation].u8.xy = subgroupAdd(data[1].u8.xy);
\r
133 data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz);
\r
134 data[invocation].u8 = subgroupAdd(data[3].u8);
\r
136 data[invocation].u8.x = subgroupMul(data[0].u8.x);
\r
137 data[invocation].u8.xy = subgroupMul(data[1].u8.xy);
\r
138 data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz);
\r
139 data[invocation].u8 = subgroupMul(data[3].u8);
\r
141 data[invocation].u8.x = subgroupMin(data[0].u8.x);
\r
142 data[invocation].u8.xy = subgroupMin(data[1].u8.xy);
\r
143 data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz);
\r
144 data[invocation].u8 = subgroupMin(data[3].u8);
\r
146 data[invocation].u8.x = subgroupMax(data[0].u8.x);
\r
147 data[invocation].u8.xy = subgroupMax(data[1].u8.xy);
\r
148 data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz);
\r
149 data[invocation].u8 = subgroupMax(data[3].u8);
\r
151 data[invocation].u8.x = subgroupAnd(data[0].u8.x);
\r
152 data[invocation].u8.xy = subgroupAnd(data[1].u8.xy);
\r
153 data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz);
\r
154 data[invocation].u8 = subgroupAnd(data[3].u8);
\r
156 data[invocation].u8.x = subgroupOr(data[0].u8.x);
\r
157 data[invocation].u8.xy = subgroupOr(data[1].u8.xy);
\r
158 data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz);
\r
159 data[invocation].u8 = subgroupOr(data[3].u8);
\r
161 data[invocation].u8.x = subgroupXor(data[0].u8.x);
\r
162 data[invocation].u8.xy = subgroupXor(data[1].u8.xy);
\r
163 data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz);
\r
164 data[invocation].u8 = subgroupXor(data[3].u8);
\r
166 data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x);
\r
167 data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy);
\r
168 data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz);
\r
169 data[invocation].u8 = subgroupInclusiveAdd(data[3].u8);
\r
171 data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x);
\r
172 data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy);
\r
173 data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz);
\r
174 data[invocation].u8 = subgroupInclusiveMul(data[3].u8);
\r
176 data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x);
\r
177 data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy);
\r
178 data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz);
\r
179 data[invocation].u8 = subgroupInclusiveMin(data[3].u8);
\r
181 data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x);
\r
182 data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy);
\r
183 data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz);
\r
184 data[invocation].u8 = subgroupInclusiveMax(data[3].u8);
\r
186 data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x);
\r
187 data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy);
\r
188 data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz);
\r
189 data[invocation].u8 = subgroupInclusiveAnd(data[3].u8);
\r
191 data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x);
\r
192 data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy);
\r
193 data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz);
\r
194 data[invocation].u8 = subgroupInclusiveOr(data[3].u8);
\r
196 data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x);
\r
197 data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy);
\r
198 data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz);
\r
199 data[invocation].u8 = subgroupInclusiveXor(data[3].u8);
\r
201 data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x);
\r
202 data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy);
\r
203 data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz);
\r
204 data[invocation].u8 = subgroupExclusiveAdd(data[3].u8);
\r
206 data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x);
\r
207 data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy);
\r
208 data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz);
\r
209 data[invocation].u8 = subgroupExclusiveMul(data[3].u8);
\r
211 data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x);
\r
212 data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy);
\r
213 data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz);
\r
214 data[invocation].u8 = subgroupExclusiveMin(data[3].u8);
\r
216 data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x);
\r
217 data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy);
\r
218 data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz);
\r
219 data[invocation].u8 = subgroupExclusiveMax(data[3].u8);
\r
221 data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x);
\r
222 data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy);
\r
223 data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz);
\r
224 data[invocation].u8 = subgroupExclusiveAnd(data[3].u8);
\r
226 data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x);
\r
227 data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy);
\r
228 data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz);
\r
229 data[invocation].u8 = subgroupExclusiveOr(data[3].u8);
\r
231 data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x);
\r
232 data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy);
\r
233 data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz);
\r
234 data[invocation].u8 = subgroupExclusiveXor(data[3].u8);
\r
236 data[invocation].i16.x = subgroupAdd(data[0].i16.x);
\r
237 data[invocation].i16.xy = subgroupAdd(data[1].i16.xy);
\r
238 data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz);
\r
239 data[invocation].i16 = subgroupAdd(data[3].i16);
\r
241 data[invocation].i16.x = subgroupMul(data[0].i16.x);
\r
242 data[invocation].i16.xy = subgroupMul(data[1].i16.xy);
\r
243 data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz);
\r
244 data[invocation].i16 = subgroupMul(data[3].i16);
\r
246 data[invocation].i16.x = subgroupMin(data[0].i16.x);
\r
247 data[invocation].i16.xy = subgroupMin(data[1].i16.xy);
\r
248 data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz);
\r
249 data[invocation].i16 = subgroupMin(data[3].i16);
\r
251 data[invocation].i16.x = subgroupMax(data[0].i16.x);
\r
252 data[invocation].i16.xy = subgroupMax(data[1].i16.xy);
\r
253 data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz);
\r
254 data[invocation].i16 = subgroupMax(data[3].i16);
\r
256 data[invocation].i16.x = subgroupAnd(data[0].i16.x);
\r
257 data[invocation].i16.xy = subgroupAnd(data[1].i16.xy);
\r
258 data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz);
\r
259 data[invocation].i16 = subgroupAnd(data[3].i16);
\r
261 data[invocation].i16.x = subgroupOr(data[0].i16.x);
\r
262 data[invocation].i16.xy = subgroupOr(data[1].i16.xy);
\r
263 data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz);
\r
264 data[invocation].i16 = subgroupOr(data[3].i16);
\r
266 data[invocation].i16.x = subgroupXor(data[0].i16.x);
\r
267 data[invocation].i16.xy = subgroupXor(data[1].i16.xy);
\r
268 data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz);
\r
269 data[invocation].i16 = subgroupXor(data[3].i16);
\r
271 data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x);
\r
272 data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy);
\r
273 data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz);
\r
274 data[invocation].i16 = subgroupInclusiveAdd(data[3].i16);
\r
276 data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x);
\r
277 data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy);
\r
278 data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz);
\r
279 data[invocation].i16 = subgroupInclusiveMul(data[3].i16);
\r
281 data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x);
\r
282 data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy);
\r
283 data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz);
\r
284 data[invocation].i16 = subgroupInclusiveMin(data[3].i16);
\r
286 data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x);
\r
287 data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy);
\r
288 data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz);
\r
289 data[invocation].i16 = subgroupInclusiveMax(data[3].i16);
\r
291 data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x);
\r
292 data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy);
\r
293 data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz);
\r
294 data[invocation].i16 = subgroupInclusiveAnd(data[3].i16);
\r
296 data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x);
\r
297 data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy);
\r
298 data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz);
\r
299 data[invocation].i16 = subgroupInclusiveOr(data[3].i16);
\r
301 data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x);
\r
302 data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy);
\r
303 data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz);
\r
304 data[invocation].i16 = subgroupInclusiveXor(data[3].i16);
\r
306 data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x);
\r
307 data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy);
\r
308 data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz);
\r
309 data[invocation].i16 = subgroupExclusiveAdd(data[3].i16);
\r
311 data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x);
\r
312 data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy);
\r
313 data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz);
\r
314 data[invocation].i16 = subgroupExclusiveMul(data[3].i16);
\r
316 data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x);
\r
317 data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy);
\r
318 data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz);
\r
319 data[invocation].i16 = subgroupExclusiveMin(data[3].i16);
\r
321 data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x);
\r
322 data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy);
\r
323 data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz);
\r
324 data[invocation].i16 = subgroupExclusiveMax(data[3].i16);
\r
326 data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x);
\r
327 data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy);
\r
328 data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz);
\r
329 data[invocation].i16 = subgroupExclusiveAnd(data[3].i16);
\r
331 data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x);
\r
332 data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy);
\r
333 data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz);
\r
334 data[invocation].i16 = subgroupExclusiveOr(data[3].i16);
\r
336 data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x);
\r
337 data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy);
\r
338 data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz);
\r
339 data[invocation].i16 = subgroupExclusiveXor(data[3].i16);
\r
341 data[invocation].u16.x = subgroupAdd(data[0].u16.x);
\r
342 data[invocation].u16.xy = subgroupAdd(data[1].u16.xy);
\r
343 data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz);
\r
344 data[invocation].u16 = subgroupAdd(data[3].u16);
\r
346 data[invocation].u16.x = subgroupMul(data[0].u16.x);
\r
347 data[invocation].u16.xy = subgroupMul(data[1].u16.xy);
\r
348 data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz);
\r
349 data[invocation].u16 = subgroupMul(data[3].u16);
\r
351 data[invocation].u16.x = subgroupMin(data[0].u16.x);
\r
352 data[invocation].u16.xy = subgroupMin(data[1].u16.xy);
\r
353 data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz);
\r
354 data[invocation].u16 = subgroupMin(data[3].u16);
\r
356 data[invocation].u16.x = subgroupMax(data[0].u16.x);
\r
357 data[invocation].u16.xy = subgroupMax(data[1].u16.xy);
\r
358 data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz);
\r
359 data[invocation].u16 = subgroupMax(data[3].u16);
\r
361 data[invocation].u16.x = subgroupAnd(data[0].u16.x);
\r
362 data[invocation].u16.xy = subgroupAnd(data[1].u16.xy);
\r
363 data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz);
\r
364 data[invocation].u16 = subgroupAnd(data[3].u16);
\r
366 data[invocation].u16.x = subgroupOr(data[0].u16.x);
\r
367 data[invocation].u16.xy = subgroupOr(data[1].u16.xy);
\r
368 data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz);
\r
369 data[invocation].u16 = subgroupOr(data[3].u16);
\r
371 data[invocation].u16.x = subgroupXor(data[0].u16.x);
\r
372 data[invocation].u16.xy = subgroupXor(data[1].u16.xy);
\r
373 data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz);
\r
374 data[invocation].u16 = subgroupXor(data[3].u16);
\r
376 data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x);
\r
377 data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy);
\r
378 data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz);
\r
379 data[invocation].u16 = subgroupInclusiveAdd(data[3].u16);
\r
381 data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x);
\r
382 data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy);
\r
383 data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz);
\r
384 data[invocation].u16 = subgroupInclusiveMul(data[3].u16);
\r
386 data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x);
\r
387 data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy);
\r
388 data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz);
\r
389 data[invocation].u16 = subgroupInclusiveMin(data[3].u16);
\r
391 data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x);
\r
392 data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy);
\r
393 data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz);
\r
394 data[invocation].u16 = subgroupInclusiveMax(data[3].u16);
\r
396 data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x);
\r
397 data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy);
\r
398 data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz);
\r
399 data[invocation].u16 = subgroupInclusiveAnd(data[3].u16);
\r
401 data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x);
\r
402 data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy);
\r
403 data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz);
\r
404 data[invocation].u16 = subgroupInclusiveOr(data[3].u16);
\r
406 data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x);
\r
407 data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy);
\r
408 data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz);
\r
409 data[invocation].u16 = subgroupInclusiveXor(data[3].u16);
\r
411 data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x);
\r
412 data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy);
\r
413 data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz);
\r
414 data[invocation].u16 = subgroupExclusiveAdd(data[3].u16);
\r
416 data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x);
\r
417 data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy);
\r
418 data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz);
\r
419 data[invocation].u16 = subgroupExclusiveMul(data[3].u16);
\r
421 data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x);
\r
422 data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy);
\r
423 data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz);
\r
424 data[invocation].u16 = subgroupExclusiveMin(data[3].u16);
\r
426 data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x);
\r
427 data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy);
\r
428 data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz);
\r
429 data[invocation].u16 = subgroupExclusiveMax(data[3].u16);
\r
431 data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x);
\r
432 data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy);
\r
433 data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz);
\r
434 data[invocation].u16 = subgroupExclusiveAnd(data[3].u16);
\r
436 data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x);
\r
437 data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy);
\r
438 data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz);
\r
439 data[invocation].u16 = subgroupExclusiveOr(data[3].u16);
\r
441 data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x);
\r
442 data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy);
\r
443 data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz);
\r
444 data[invocation].u16 = subgroupExclusiveXor(data[3].u16);
\r
446 data[invocation].i64.x = subgroupAdd(data[0].i64.x);
\r
447 data[invocation].i64.xy = subgroupAdd(data[1].i64.xy);
\r
448 data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz);
\r
449 data[invocation].i64 = subgroupAdd(data[3].i64);
\r
451 data[invocation].i64.x = subgroupMul(data[0].i64.x);
\r
452 data[invocation].i64.xy = subgroupMul(data[1].i64.xy);
\r
453 data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz);
\r
454 data[invocation].i64 = subgroupMul(data[3].i64);
\r
456 data[invocation].i64.x = subgroupMin(data[0].i64.x);
\r
457 data[invocation].i64.xy = subgroupMin(data[1].i64.xy);
\r
458 data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz);
\r
459 data[invocation].i64 = subgroupMin(data[3].i64);
\r
461 data[invocation].i64.x = subgroupMax(data[0].i64.x);
\r
462 data[invocation].i64.xy = subgroupMax(data[1].i64.xy);
\r
463 data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz);
\r
464 data[invocation].i64 = subgroupMax(data[3].i64);
\r
466 data[invocation].i64.x = subgroupAnd(data[0].i64.x);
\r
467 data[invocation].i64.xy = subgroupAnd(data[1].i64.xy);
\r
468 data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz);
\r
469 data[invocation].i64 = subgroupAnd(data[3].i64);
\r
471 data[invocation].i64.x = subgroupOr(data[0].i64.x);
\r
472 data[invocation].i64.xy = subgroupOr(data[1].i64.xy);
\r
473 data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz);
\r
474 data[invocation].i64 = subgroupOr(data[3].i64);
\r
476 data[invocation].i64.x = subgroupXor(data[0].i64.x);
\r
477 data[invocation].i64.xy = subgroupXor(data[1].i64.xy);
\r
478 data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz);
\r
479 data[invocation].i64 = subgroupXor(data[3].i64);
\r
481 data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x);
\r
482 data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy);
\r
483 data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz);
\r
484 data[invocation].i64 = subgroupInclusiveAdd(data[3].i64);
\r
486 data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x);
\r
487 data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy);
\r
488 data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz);
\r
489 data[invocation].i64 = subgroupInclusiveMul(data[3].i64);
\r
491 data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x);
\r
492 data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy);
\r
493 data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz);
\r
494 data[invocation].i64 = subgroupInclusiveMin(data[3].i64);
\r
496 data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x);
\r
497 data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy);
\r
498 data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz);
\r
499 data[invocation].i64 = subgroupInclusiveMax(data[3].i64);
\r
501 data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x);
\r
502 data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy);
\r
503 data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz);
\r
504 data[invocation].i64 = subgroupInclusiveAnd(data[3].i64);
\r
506 data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x);
\r
507 data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy);
\r
508 data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz);
\r
509 data[invocation].i64 = subgroupInclusiveOr(data[3].i64);
\r
511 data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x);
\r
512 data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy);
\r
513 data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz);
\r
514 data[invocation].i64 = subgroupInclusiveXor(data[3].i64);
\r
516 data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x);
\r
517 data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy);
\r
518 data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz);
\r
519 data[invocation].i64 = subgroupExclusiveAdd(data[3].i64);
\r
521 data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x);
\r
522 data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy);
\r
523 data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz);
\r
524 data[invocation].i64 = subgroupExclusiveMul(data[3].i64);
\r
526 data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x);
\r
527 data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy);
\r
528 data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz);
\r
529 data[invocation].i64 = subgroupExclusiveMin(data[3].i64);
\r
531 data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x);
\r
532 data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy);
\r
533 data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz);
\r
534 data[invocation].i64 = subgroupExclusiveMax(data[3].i64);
\r
536 data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x);
\r
537 data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy);
\r
538 data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz);
\r
539 data[invocation].i64 = subgroupExclusiveAnd(data[3].i64);
\r
541 data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x);
\r
542 data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy);
\r
543 data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz);
\r
544 data[invocation].i64 = subgroupExclusiveOr(data[3].i64);
\r
546 data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x);
\r
547 data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy);
\r
548 data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz);
\r
549 data[invocation].i64 = subgroupExclusiveXor(data[3].i64);
\r
551 data[invocation].u64.x = subgroupAdd(data[0].u64.x);
\r
552 data[invocation].u64.xy = subgroupAdd(data[1].u64.xy);
\r
553 data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz);
\r
554 data[invocation].u64 = subgroupAdd(data[3].u64);
\r
556 data[invocation].u64.x = subgroupMul(data[0].u64.x);
\r
557 data[invocation].u64.xy = subgroupMul(data[1].u64.xy);
\r
558 data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz);
\r
559 data[invocation].u64 = subgroupMul(data[3].u64);
\r
561 data[invocation].u64.x = subgroupMin(data[0].u64.x);
\r
562 data[invocation].u64.xy = subgroupMin(data[1].u64.xy);
\r
563 data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz);
\r
564 data[invocation].u64 = subgroupMin(data[3].u64);
\r
566 data[invocation].u64.x = subgroupMax(data[0].u64.x);
\r
567 data[invocation].u64.xy = subgroupMax(data[1].u64.xy);
\r
568 data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz);
\r
569 data[invocation].u64 = subgroupMax(data[3].u64);
\r
571 data[invocation].u64.x = subgroupAnd(data[0].u64.x);
\r
572 data[invocation].u64.xy = subgroupAnd(data[1].u64.xy);
\r
573 data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz);
\r
574 data[invocation].u64 = subgroupAnd(data[3].u64);
\r
576 data[invocation].u64.x = subgroupOr(data[0].u64.x);
\r
577 data[invocation].u64.xy = subgroupOr(data[1].u64.xy);
\r
578 data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz);
\r
579 data[invocation].u64 = subgroupOr(data[3].u64);
\r
581 data[invocation].u64.x = subgroupXor(data[0].u64.x);
\r
582 data[invocation].u64.xy = subgroupXor(data[1].u64.xy);
\r
583 data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz);
\r
584 data[invocation].u64 = subgroupXor(data[3].u64);
\r
586 data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x);
\r
587 data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy);
\r
588 data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz);
\r
589 data[invocation].u64 = subgroupInclusiveAdd(data[3].u64);
\r
591 data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x);
\r
592 data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy);
\r
593 data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz);
\r
594 data[invocation].u64 = subgroupInclusiveMul(data[3].u64);
\r
596 data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x);
\r
597 data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy);
\r
598 data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz);
\r
599 data[invocation].u64 = subgroupInclusiveMin(data[3].u64);
\r
601 data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x);
\r
602 data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy);
\r
603 data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz);
\r
604 data[invocation].u64 = subgroupInclusiveMax(data[3].u64);
\r
606 data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x);
\r
607 data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy);
\r
608 data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz);
\r
609 data[invocation].u64 = subgroupInclusiveAnd(data[3].u64);
\r
611 data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x);
\r
612 data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy);
\r
613 data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz);
\r
614 data[invocation].u64 = subgroupInclusiveOr(data[3].u64);
\r
616 data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x);
\r
617 data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy);
\r
618 data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz);
\r
619 data[invocation].u64 = subgroupInclusiveXor(data[3].u64);
\r
621 data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x);
\r
622 data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy);
\r
623 data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz);
\r
624 data[invocation].u64 = subgroupExclusiveAdd(data[3].u64);
\r
626 data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x);
\r
627 data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy);
\r
628 data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz);
\r
629 data[invocation].u64 = subgroupExclusiveMul(data[3].u64);
\r
631 data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x);
\r
632 data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy);
\r
633 data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz);
\r
634 data[invocation].u64 = subgroupExclusiveMin(data[3].u64);
\r
636 data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x);
\r
637 data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy);
\r
638 data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz);
\r
639 data[invocation].u64 = subgroupExclusiveMax(data[3].u64);
\r
641 data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x);
\r
642 data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy);
\r
643 data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz);
\r
644 data[invocation].u64 = subgroupExclusiveAnd(data[3].u64);
\r
646 data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x);
\r
647 data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy);
\r
648 data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz);
\r
649 data[invocation].u64 = subgroupExclusiveOr(data[3].u64);
\r
651 data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x);
\r
652 data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy);
\r
653 data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz);
\r
654 data[invocation].u64 = subgroupExclusiveXor(data[3].u64);
\r
656 data[invocation].f16.x = subgroupAdd(data[0].f16.x);
\r
657 data[invocation].f16.xy = subgroupAdd(data[1].f16.xy);
\r
658 data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz);
\r
659 data[invocation].f16 = subgroupAdd(data[3].f16);
\r
661 data[invocation].f16.x = subgroupMul(data[0].f16.x);
\r
662 data[invocation].f16.xy = subgroupMul(data[1].f16.xy);
\r
663 data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz);
\r
664 data[invocation].f16 = subgroupMul(data[3].f16);
\r
666 data[invocation].f16.x = subgroupMin(data[0].f16.x);
\r
667 data[invocation].f16.xy = subgroupMin(data[1].f16.xy);
\r
668 data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz);
\r
669 data[invocation].f16 = subgroupMin(data[3].f16);
\r
671 data[invocation].f16.x = subgroupMax(data[0].f16.x);
\r
672 data[invocation].f16.xy = subgroupMax(data[1].f16.xy);
\r
673 data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz);
\r
674 data[invocation].f16 = subgroupMax(data[3].f16);
\r
676 data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x);
\r
677 data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy);
\r
678 data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz);
\r
679 data[invocation].f16 = subgroupInclusiveAdd(data[3].f16);
\r
681 data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x);
\r
682 data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy);
\r
683 data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz);
\r
684 data[invocation].f16 = subgroupInclusiveMul(data[3].f16);
\r
686 data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x);
\r
687 data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy);
\r
688 data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz);
\r
689 data[invocation].f16 = subgroupInclusiveMin(data[3].f16);
\r
691 data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x);
\r
692 data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy);
\r
693 data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz);
\r
694 data[invocation].f16 = subgroupInclusiveMax(data[3].f16);
\r
696 data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x);
\r
697 data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy);
\r
698 data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz);
\r
699 data[invocation].f16 = subgroupExclusiveAdd(data[3].f16);
\r
701 data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x);
\r
702 data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy);
\r
703 data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz);
\r
704 data[invocation].f16 = subgroupExclusiveMul(data[3].f16);
\r
706 data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x);
\r
707 data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy);
\r
708 data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz);
\r
709 data[invocation].f16 = subgroupExclusiveMin(data[3].f16);
\r
711 data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x);
\r
712 data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy);
\r
713 data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz);
\r
714 data[invocation].f16 = subgroupExclusiveMax(data[3].f16);
\r