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