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