• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 320 es
2
3#extension GL_NV_shader_subgroup_partitioned: enable
4
5layout (local_size_x = 8) in;
6
7layout(binding = 0) buffer Buffers
8{
9    vec4  f4;
10    ivec4 i4;
11    uvec4 u4;
12} data[4];
13
14void main()
15{
16    uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
17
18    uvec4 ballot = subgroupPartitionNV(invocation);
19
20    data[0].u4 = subgroupPartitionNV(data[0].f4.x);
21    data[0].u4 = subgroupPartitionNV(data[0].f4.xy);
22    data[0].u4 = subgroupPartitionNV(data[0].f4.xyz);
23    data[0].u4 = subgroupPartitionNV(data[0].f4);
24
25    data[0].u4 = subgroupPartitionNV(data[0].i4.x);
26    data[0].u4 = subgroupPartitionNV(data[0].i4.xy);
27    data[0].u4 = subgroupPartitionNV(data[0].i4.xyz);
28    data[0].u4 = subgroupPartitionNV(data[0].i4);
29
30    data[0].u4 = subgroupPartitionNV(data[0].u4.x);
31    data[0].u4 = subgroupPartitionNV(data[0].u4.xy);
32    data[0].u4 = subgroupPartitionNV(data[0].u4.xyz);
33    data[0].u4 = subgroupPartitionNV(data[0].u4);
34
35    data[1].u4 = subgroupPartitionNV(bool(data[0].i4.x));
36    data[1].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
37    data[1].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
38    data[1].u4 = subgroupPartitionNV(bvec4(data[0].i4));
39
40    data[1].f4.x   = subgroupPartitionedAddNV(data[0].f4.x, ballot);
41    data[1].f4.xy  = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
42    data[1].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
43    data[1].f4     = subgroupPartitionedAddNV(data[3].f4, ballot);
44
45    data[1].i4.x   = subgroupPartitionedAddNV(data[0].i4.x, ballot);
46    data[1].i4.xy  = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
47    data[1].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
48    data[1].i4     = subgroupPartitionedAddNV(data[3].i4, ballot);
49
50    data[1].u4.x   = subgroupPartitionedAddNV(data[0].u4.x, ballot);
51    data[1].u4.xy  = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
52    data[1].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
53    data[1].u4     = subgroupPartitionedAddNV(data[3].u4, ballot);
54
55    data[2].f4.x   = subgroupPartitionedMulNV(data[0].f4.x, ballot);
56    data[2].f4.xy  = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
57    data[2].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
58    data[2].f4     = subgroupPartitionedMulNV(data[3].f4, ballot);
59
60    data[2].i4.x   = subgroupPartitionedMulNV(data[0].i4.x, ballot);
61    data[2].i4.xy  = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
62    data[2].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
63    data[2].i4     = subgroupPartitionedMulNV(data[3].i4, ballot);
64
65    data[2].u4.x   = subgroupPartitionedMulNV(data[0].u4.x, ballot);
66    data[2].u4.xy  = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
67    data[2].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
68    data[2].u4     = subgroupPartitionedMulNV(data[3].u4, ballot);
69
70    data[2].f4.x   = subgroupPartitionedMinNV(data[0].f4.x, ballot);
71    data[2].f4.xy  = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
72    data[2].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
73    data[2].f4     = subgroupPartitionedMinNV(data[3].f4, ballot);
74
75    data[3].i4.x   = subgroupPartitionedMinNV(data[0].i4.x, ballot);
76    data[3].i4.xy  = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
77    data[3].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
78    data[3].i4     = subgroupPartitionedMinNV(data[3].i4, ballot);
79
80    data[3].u4.x   = subgroupPartitionedMinNV(data[0].u4.x, ballot);
81    data[3].u4.xy  = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
82    data[3].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
83    data[3].u4     = subgroupPartitionedMinNV(data[3].u4, ballot);
84
85    data[3].f4.x   = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
86    data[3].f4.xy  = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
87    data[3].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
88    data[3].f4     = subgroupPartitionedMaxNV(data[3].f4, ballot);
89
90    data[0].i4.x   = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
91    data[0].i4.xy  = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
92    data[0].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
93    data[0].i4     = subgroupPartitionedMaxNV(data[3].i4, ballot);
94
95    data[0].u4.x   = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
96    data[0].u4.xy  = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
97    data[0].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
98    data[0].u4     = subgroupPartitionedMaxNV(data[3].u4, ballot);
99
100    data[0].i4.x   = subgroupPartitionedAndNV(data[0].i4.x, ballot);
101    data[0].i4.xy  = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
102    data[0].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
103    data[0].i4     = subgroupPartitionedAndNV(data[3].i4, ballot);
104
105    data[1].u4.x   = subgroupPartitionedAndNV(data[0].u4.x, ballot);
106    data[1].u4.xy  = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
107    data[1].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
108    data[1].u4     = subgroupPartitionedAndNV(data[3].u4, ballot);
109
110    data[1].i4.x   =   int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
111    data[1].i4.xy  = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
112    data[1].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
113    data[1].i4     = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
114
115    data[1].i4.x   = subgroupPartitionedOrNV(data[0].i4.x, ballot);
116    data[1].i4.xy  = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
117    data[1].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
118    data[1].i4     = subgroupPartitionedOrNV(data[3].i4, ballot);
119
120    data[2].u4.x   = subgroupPartitionedOrNV(data[0].u4.x, ballot);
121    data[2].u4.xy  = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
122    data[2].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
123    data[2].u4     = subgroupPartitionedOrNV(data[3].u4, ballot);
124
125    data[2].i4.x   =   int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
126    data[2].i4.xy  = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
127    data[2].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
128    data[2].i4     = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
129
130    data[2].i4.x   = subgroupPartitionedXorNV(data[0].i4.x, ballot);
131    data[2].i4.xy  = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
132    data[2].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
133    data[2].i4     = subgroupPartitionedXorNV(data[3].i4, ballot);
134
135    data[2].u4.x   = subgroupPartitionedXorNV(data[0].u4.x, ballot);
136    data[2].u4.xy  = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
137    data[2].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
138    data[2].u4     = subgroupPartitionedXorNV(data[3].u4, ballot);
139
140    data[3].i4.x   =   int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
141    data[3].i4.xy  = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
142    data[3].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
143    data[3].i4     = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
144
145    data[3].f4.x   = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
146    data[3].f4.xy  = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
147    data[3].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
148    data[3].f4     = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
149
150    data[3].i4.x   = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
151    data[3].i4.xy  = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
152    data[3].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
153    data[3].i4     = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
154
155    data[3].u4.x   = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
156    data[3].u4.xy  = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
157    data[3].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
158    data[3].u4     = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
159
160    data[3].f4.x   = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
161    data[3].f4.xy  = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
162    data[3].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
163    data[3].f4     = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
164
165    data[3].i4.x   = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
166    data[3].i4.xy  = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
167    data[3].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
168    data[3].i4     = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
169
170    data[0].u4.x   = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
171    data[0].u4.xy  = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
172    data[0].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
173    data[0].u4     = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
174
175    data[0].f4.x   = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
176    data[0].f4.xy  = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
177    data[0].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
178    data[0].f4     = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
179
180    data[0].i4.x   = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
181    data[0].i4.xy  = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
182    data[0].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
183    data[0].i4     = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
184
185    data[0].u4.x   = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
186    data[0].u4.xy  = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
187    data[0].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
188    data[0].u4     = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
189
190    data[1].f4.x   = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
191    data[1].f4.xy  = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
192    data[1].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
193    data[1].f4     = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
194
195    data[1].i4.x   = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
196    data[1].i4.xy  = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
197    data[1].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
198    data[1].i4     = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
199
200    data[1].u4.x   = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
201    data[1].u4.xy  = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
202    data[1].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
203    data[1].u4     = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
204
205    data[1].i4.x   = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
206    data[1].i4.xy  = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
207    data[1].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
208    data[1].i4     = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
209
210    data[2].u4.x   = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
211    data[2].u4.xy  = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
212    data[2].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
213    data[2].u4     = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
214
215    data[2].i4.x   =   int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
216    data[2].i4.xy  = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
217    data[2].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
218    data[2].i4     = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
219
220    data[2].i4.x   = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
221    data[2].i4.xy  = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
222    data[2].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
223    data[2].i4     = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
224
225    data[2].u4.x   = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
226    data[2].u4.xy  = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
227    data[2].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
228    data[2].u4     = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
229
230    data[3].i4.x   =   int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
231    data[3].i4.xy  = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
232    data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
233    data[3].i4     = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
234
235    data[3].i4.x   = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
236    data[3].i4.xy  = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
237    data[3].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
238    data[3].i4     = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
239
240    data[3].u4.x   = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
241    data[3].u4.xy  = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
242    data[3].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
243    data[3].u4     = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
244
245    data[3].i4.x   =   int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
246    data[3].i4.xy  = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
247    data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
248    data[3].i4     = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
249
250    data[0].f4.x   = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
251    data[0].f4.xy  = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
252    data[0].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
253    data[0].f4     = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
254
255    data[0].i4.x   = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
256    data[0].i4.xy  = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
257    data[0].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
258    data[0].i4     = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
259
260    data[0].u4.x   = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
261    data[0].u4.xy  = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
262    data[0].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
263    data[0].u4     = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
264
265    data[0].f4.x   = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
266    data[0].f4.xy  = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
267    data[0].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
268    data[0].f4     = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
269
270    data[1].i4.x   = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
271    data[1].i4.xy  = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
272    data[1].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
273    data[1].i4     = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
274
275    data[1].u4.x   = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
276    data[1].u4.xy  = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
277    data[1].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
278    data[1].u4     = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
279
280    data[1].f4.x   = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
281    data[1].f4.xy  = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
282    data[1].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
283    data[1].f4     = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
284
285    data[1].i4.x   = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
286    data[1].i4.xy  = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
287    data[1].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
288    data[1].i4     = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
289
290    data[2].u4.x   = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
291    data[2].u4.xy  = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
292    data[2].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
293    data[2].u4     = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
294
295    data[2].f4.x   = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
296    data[2].f4.xy  = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
297    data[2].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
298    data[2].f4     = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
299
300    data[2].i4.x   = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
301    data[2].i4.xy  = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
302    data[2].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
303    data[2].i4     = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
304
305    data[2].u4.x   = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
306    data[2].u4.xy  = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
307    data[2].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
308    data[2].u4     = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
309
310    data[2].i4.x   = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
311    data[2].i4.xy  = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
312    data[2].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
313    data[2].i4     = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
314
315    data[2].u4.x   = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
316    data[2].u4.xy  = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
317    data[2].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
318    data[2].u4     = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
319
320    data[3].i4.x   =   int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
321    data[3].i4.xy  = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
322    data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
323    data[3].i4     = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
324
325    data[3].i4.x   = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
326    data[3].i4.xy  = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
327    data[3].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
328    data[3].i4     = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
329
330    data[3].u4.x   = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
331    data[3].u4.xy  = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
332    data[3].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
333    data[3].u4     = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
334
335    data[3].i4.x   =   int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
336    data[3].i4.xy  = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
337    data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
338    data[3].i4     = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
339
340    data[3].i4.x   = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
341    data[3].i4.xy  = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
342    data[3].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
343    data[3].i4     = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
344
345    data[0].u4.x   = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
346    data[0].u4.xy  = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
347    data[0].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
348    data[0].u4     = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
349
350    data[0].i4.x   =   int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
351    data[0].i4.xy  = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
352    data[0].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
353    data[0].i4     = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
354}
355