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