1spv.subgroupShuffleRelative.comp 2// Module Version 10300 3// Generated by (magic number): 8000a 4// Id's are bound by 379 5 6 Capability Shader 7 Capability Float64 8 Capability GroupNonUniform 9 Capability GroupNonUniformShuffleRelative 10 1: ExtInstImport "GLSL.std.450" 11 MemoryModel Logical GLSL450 12 EntryPoint GLCompute 4 "main" 10 12 13 ExecutionMode 4 LocalSize 8 8 1 14 Source GLSL 450 15 SourceExtension "GL_KHR_shader_subgroup_basic" 16 SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" 17 Name 4 "main" 18 Name 8 "invocation" 19 Name 10 "gl_SubgroupInvocationID" 20 Name 12 "gl_SubgroupSize" 21 Name 24 "Buffers" 22 MemberName 24(Buffers) 0 "f4" 23 MemberName 24(Buffers) 1 "i4" 24 MemberName 24(Buffers) 2 "u4" 25 MemberName 24(Buffers) 3 "d4" 26 Name 27 "data" 27 Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision 28 Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId 29 Decorate 11 RelaxedPrecision 30 Decorate 12(gl_SubgroupSize) RelaxedPrecision 31 Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize 32 Decorate 13 RelaxedPrecision 33 Decorate 14 RelaxedPrecision 34 Decorate 16 RelaxedPrecision 35 MemberDecorate 24(Buffers) 0 Offset 0 36 MemberDecorate 24(Buffers) 1 Offset 16 37 MemberDecorate 24(Buffers) 2 Offset 32 38 MemberDecorate 24(Buffers) 3 Offset 64 39 Decorate 24(Buffers) Block 40 Decorate 27(data) DescriptorSet 0 41 Decorate 27(data) Binding 0 42 Decorate 378 BuiltIn WorkgroupSize 43 2: TypeVoid 44 3: TypeFunction 2 45 6: TypeInt 32 0 46 7: TypePointer Function 6(int) 47 9: TypePointer Input 6(int) 4810(gl_SubgroupInvocationID): 9(ptr) Variable Input 4912(gl_SubgroupSize): 9(ptr) Variable Input 50 15: 6(int) Constant 4 51 17: TypeFloat 32 52 18: TypeVector 17(float) 4 53 19: TypeInt 32 1 54 20: TypeVector 19(int) 4 55 21: TypeVector 6(int) 4 56 22: TypeFloat 64 57 23: TypeVector 22(float64_t) 4 58 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 59 25: TypeArray 24(Buffers) 15 60 26: TypePointer StorageBuffer 25 61 27(data): 26(ptr) Variable StorageBuffer 62 29: 19(int) Constant 0 63 30: 6(int) Constant 0 64 31: TypePointer StorageBuffer 17(float) 65 35: 6(int) Constant 3 66 39: 19(int) Constant 1 67 40: TypeVector 17(float) 2 68 41: TypePointer StorageBuffer 18(fvec4) 69 51: 19(int) Constant 2 70 52: TypeVector 17(float) 3 71 62: 19(int) Constant 3 72 69: TypePointer StorageBuffer 19(int) 73 76: TypeVector 19(int) 2 74 77: TypePointer StorageBuffer 20(ivec4) 75 87: TypeVector 19(int) 3 76 103: TypePointer StorageBuffer 6(int) 77 110: TypeVector 6(int) 2 78 111: TypePointer StorageBuffer 21(ivec4) 79 121: TypeVector 6(int) 3 80 137: TypePointer StorageBuffer 22(float64_t) 81 144: TypeVector 22(float64_t) 2 82 145: TypePointer StorageBuffer 23(f64vec4) 83 155: TypeVector 22(float64_t) 3 84 173: TypeBool 85 183: 76(ivec2) ConstantComposite 29 29 86 184: TypeVector 173(bool) 2 87 188: 76(ivec2) ConstantComposite 39 39 88 197: 87(ivec3) ConstantComposite 29 29 29 89 198: TypeVector 173(bool) 3 90 202: 87(ivec3) ConstantComposite 39 39 39 91 210: 20(ivec4) ConstantComposite 29 29 29 29 92 211: TypeVector 173(bool) 4 93 215: 20(ivec4) ConstantComposite 39 39 39 39 94 376: 6(int) Constant 8 95 377: 6(int) Constant 1 96 378: 121(ivec3) ConstantComposite 376 376 377 97 4(main): 2 Function None 3 98 5: Label 99 8(invocation): 7(ptr) Variable Function 100 11: 6(int) Load 10(gl_SubgroupInvocationID) 101 13: 6(int) Load 12(gl_SubgroupSize) 102 14: 6(int) IAdd 11 13 103 16: 6(int) UMod 14 15 104 Store 8(invocation) 16 105 28: 6(int) Load 8(invocation) 106 32: 31(ptr) AccessChain 27(data) 29 29 30 107 33: 17(float) Load 32 108 34: 6(int) Load 8(invocation) 109 36: 17(float) GroupNonUniformShuffleUp 35 33 34 110 37: 31(ptr) AccessChain 27(data) 28 29 30 111 Store 37 36 112 38: 6(int) Load 8(invocation) 113 42: 41(ptr) AccessChain 27(data) 39 29 114 43: 18(fvec4) Load 42 115 44: 40(fvec2) VectorShuffle 43 43 0 1 116 45: 6(int) Load 8(invocation) 117 46: 40(fvec2) GroupNonUniformShuffleUp 35 44 45 118 47: 41(ptr) AccessChain 27(data) 38 29 119 48: 18(fvec4) Load 47 120 49: 18(fvec4) VectorShuffle 48 46 4 5 2 3 121 Store 47 49 122 50: 6(int) Load 8(invocation) 123 53: 41(ptr) AccessChain 27(data) 51 29 124 54: 18(fvec4) Load 53 125 55: 52(fvec3) VectorShuffle 54 54 0 1 2 126 56: 6(int) Load 8(invocation) 127 57: 52(fvec3) GroupNonUniformShuffleUp 35 55 56 128 58: 41(ptr) AccessChain 27(data) 50 29 129 59: 18(fvec4) Load 58 130 60: 18(fvec4) VectorShuffle 59 57 4 5 6 3 131 Store 58 60 132 61: 6(int) Load 8(invocation) 133 63: 41(ptr) AccessChain 27(data) 62 29 134 64: 18(fvec4) Load 63 135 65: 6(int) Load 8(invocation) 136 66: 18(fvec4) GroupNonUniformShuffleUp 35 64 65 137 67: 41(ptr) AccessChain 27(data) 61 29 138 Store 67 66 139 68: 6(int) Load 8(invocation) 140 70: 69(ptr) AccessChain 27(data) 29 39 30 141 71: 19(int) Load 70 142 72: 6(int) Load 8(invocation) 143 73: 19(int) GroupNonUniformShuffleUp 35 71 72 144 74: 69(ptr) AccessChain 27(data) 68 39 30 145 Store 74 73 146 75: 6(int) Load 8(invocation) 147 78: 77(ptr) AccessChain 27(data) 39 39 148 79: 20(ivec4) Load 78 149 80: 76(ivec2) VectorShuffle 79 79 0 1 150 81: 6(int) Load 8(invocation) 151 82: 76(ivec2) GroupNonUniformShuffleUp 35 80 81 152 83: 77(ptr) AccessChain 27(data) 75 39 153 84: 20(ivec4) Load 83 154 85: 20(ivec4) VectorShuffle 84 82 4 5 2 3 155 Store 83 85 156 86: 6(int) Load 8(invocation) 157 88: 77(ptr) AccessChain 27(data) 51 39 158 89: 20(ivec4) Load 88 159 90: 87(ivec3) VectorShuffle 89 89 0 1 2 160 91: 6(int) Load 8(invocation) 161 92: 87(ivec3) GroupNonUniformShuffleUp 35 90 91 162 93: 77(ptr) AccessChain 27(data) 86 39 163 94: 20(ivec4) Load 93 164 95: 20(ivec4) VectorShuffle 94 92 4 5 6 3 165 Store 93 95 166 96: 6(int) Load 8(invocation) 167 97: 77(ptr) AccessChain 27(data) 62 39 168 98: 20(ivec4) Load 97 169 99: 6(int) Load 8(invocation) 170 100: 20(ivec4) GroupNonUniformShuffleUp 35 98 99 171 101: 77(ptr) AccessChain 27(data) 96 39 172 Store 101 100 173 102: 6(int) Load 8(invocation) 174 104: 103(ptr) AccessChain 27(data) 29 51 30 175 105: 6(int) Load 104 176 106: 6(int) Load 8(invocation) 177 107: 6(int) GroupNonUniformShuffleUp 35 105 106 178 108: 103(ptr) AccessChain 27(data) 102 51 30 179 Store 108 107 180 109: 6(int) Load 8(invocation) 181 112: 111(ptr) AccessChain 27(data) 39 51 182 113: 21(ivec4) Load 112 183 114: 110(ivec2) VectorShuffle 113 113 0 1 184 115: 6(int) Load 8(invocation) 185 116: 110(ivec2) GroupNonUniformShuffleUp 35 114 115 186 117: 111(ptr) AccessChain 27(data) 109 51 187 118: 21(ivec4) Load 117 188 119: 21(ivec4) VectorShuffle 118 116 4 5 2 3 189 Store 117 119 190 120: 6(int) Load 8(invocation) 191 122: 111(ptr) AccessChain 27(data) 51 51 192 123: 21(ivec4) Load 122 193 124: 121(ivec3) VectorShuffle 123 123 0 1 2 194 125: 6(int) Load 8(invocation) 195 126: 121(ivec3) GroupNonUniformShuffleUp 35 124 125 196 127: 111(ptr) AccessChain 27(data) 120 51 197 128: 21(ivec4) Load 127 198 129: 21(ivec4) VectorShuffle 128 126 4 5 6 3 199 Store 127 129 200 130: 6(int) Load 8(invocation) 201 131: 111(ptr) AccessChain 27(data) 62 51 202 132: 21(ivec4) Load 131 203 133: 6(int) Load 8(invocation) 204 134: 21(ivec4) GroupNonUniformShuffleUp 35 132 133 205 135: 111(ptr) AccessChain 27(data) 130 51 206 Store 135 134 207 136: 6(int) Load 8(invocation) 208 138: 137(ptr) AccessChain 27(data) 29 62 30 209 139:22(float64_t) Load 138 210 140: 6(int) Load 8(invocation) 211 141:22(float64_t) GroupNonUniformShuffleUp 35 139 140 212 142: 137(ptr) AccessChain 27(data) 136 62 30 213 Store 142 141 214 143: 6(int) Load 8(invocation) 215 146: 145(ptr) AccessChain 27(data) 39 62 216 147: 23(f64vec4) Load 146 217 148:144(f64vec2) VectorShuffle 147 147 0 1 218 149: 6(int) Load 8(invocation) 219 150:144(f64vec2) GroupNonUniformShuffleUp 35 148 149 220 151: 145(ptr) AccessChain 27(data) 143 62 221 152: 23(f64vec4) Load 151 222 153: 23(f64vec4) VectorShuffle 152 150 4 5 2 3 223 Store 151 153 224 154: 6(int) Load 8(invocation) 225 156: 145(ptr) AccessChain 27(data) 51 62 226 157: 23(f64vec4) Load 156 227 158:155(f64vec3) VectorShuffle 157 157 0 1 2 228 159: 6(int) Load 8(invocation) 229 160:155(f64vec3) GroupNonUniformShuffleUp 35 158 159 230 161: 145(ptr) AccessChain 27(data) 154 62 231 162: 23(f64vec4) Load 161 232 163: 23(f64vec4) VectorShuffle 162 160 4 5 6 3 233 Store 161 163 234 164: 6(int) Load 8(invocation) 235 165: 145(ptr) AccessChain 27(data) 62 62 236 166: 23(f64vec4) Load 165 237 167: 6(int) Load 8(invocation) 238 168: 23(f64vec4) GroupNonUniformShuffleUp 35 166 167 239 169: 145(ptr) AccessChain 27(data) 164 62 240 Store 169 168 241 170: 6(int) Load 8(invocation) 242 171: 69(ptr) AccessChain 27(data) 29 39 30 243 172: 19(int) Load 171 244 174: 173(bool) SLessThan 172 29 245 175: 6(int) Load 8(invocation) 246 176: 173(bool) GroupNonUniformShuffleUp 35 174 175 247 177: 19(int) Select 176 39 29 248 178: 69(ptr) AccessChain 27(data) 170 39 30 249 Store 178 177 250 179: 6(int) Load 8(invocation) 251 180: 77(ptr) AccessChain 27(data) 39 39 252 181: 20(ivec4) Load 180 253 182: 76(ivec2) VectorShuffle 181 181 0 1 254 185: 184(bvec2) SLessThan 182 183 255 186: 6(int) Load 8(invocation) 256 187: 184(bvec2) GroupNonUniformShuffleUp 35 185 186 257 189: 76(ivec2) Select 187 188 183 258 190: 77(ptr) AccessChain 27(data) 179 39 259 191: 20(ivec4) Load 190 260 192: 20(ivec4) VectorShuffle 191 189 4 5 2 3 261 Store 190 192 262 193: 6(int) Load 8(invocation) 263 194: 77(ptr) AccessChain 27(data) 39 39 264 195: 20(ivec4) Load 194 265 196: 87(ivec3) VectorShuffle 195 195 0 1 2 266 199: 198(bvec3) SLessThan 196 197 267 200: 6(int) Load 8(invocation) 268 201: 198(bvec3) GroupNonUniformShuffleUp 35 199 200 269 203: 87(ivec3) Select 201 202 197 270 204: 77(ptr) AccessChain 27(data) 193 39 271 205: 20(ivec4) Load 204 272 206: 20(ivec4) VectorShuffle 205 203 4 5 6 3 273 Store 204 206 274 207: 6(int) Load 8(invocation) 275 208: 77(ptr) AccessChain 27(data) 39 39 276 209: 20(ivec4) Load 208 277 212: 211(bvec4) SLessThan 209 210 278 213: 6(int) Load 8(invocation) 279 214: 211(bvec4) GroupNonUniformShuffleUp 35 212 213 280 216: 20(ivec4) Select 214 215 210 281 217: 77(ptr) AccessChain 27(data) 207 39 282 Store 217 216 283 218: 6(int) Load 8(invocation) 284 219: 31(ptr) AccessChain 27(data) 29 29 30 285 220: 17(float) Load 219 286 221: 6(int) Load 8(invocation) 287 222: 17(float) GroupNonUniformShuffleDown 35 220 221 288 223: 31(ptr) AccessChain 27(data) 218 29 30 289 Store 223 222 290 224: 6(int) Load 8(invocation) 291 225: 41(ptr) AccessChain 27(data) 39 29 292 226: 18(fvec4) Load 225 293 227: 40(fvec2) VectorShuffle 226 226 0 1 294 228: 6(int) Load 8(invocation) 295 229: 40(fvec2) GroupNonUniformShuffleDown 35 227 228 296 230: 41(ptr) AccessChain 27(data) 224 29 297 231: 18(fvec4) Load 230 298 232: 18(fvec4) VectorShuffle 231 229 4 5 2 3 299 Store 230 232 300 233: 6(int) Load 8(invocation) 301 234: 41(ptr) AccessChain 27(data) 51 29 302 235: 18(fvec4) Load 234 303 236: 52(fvec3) VectorShuffle 235 235 0 1 2 304 237: 6(int) Load 8(invocation) 305 238: 52(fvec3) GroupNonUniformShuffleDown 35 236 237 306 239: 41(ptr) AccessChain 27(data) 233 29 307 240: 18(fvec4) Load 239 308 241: 18(fvec4) VectorShuffle 240 238 4 5 6 3 309 Store 239 241 310 242: 6(int) Load 8(invocation) 311 243: 41(ptr) AccessChain 27(data) 62 29 312 244: 18(fvec4) Load 243 313 245: 6(int) Load 8(invocation) 314 246: 18(fvec4) GroupNonUniformShuffleDown 35 244 245 315 247: 41(ptr) AccessChain 27(data) 242 29 316 Store 247 246 317 248: 6(int) Load 8(invocation) 318 249: 69(ptr) AccessChain 27(data) 29 39 30 319 250: 19(int) Load 249 320 251: 6(int) Load 8(invocation) 321 252: 19(int) GroupNonUniformShuffleDown 35 250 251 322 253: 69(ptr) AccessChain 27(data) 248 39 30 323 Store 253 252 324 254: 6(int) Load 8(invocation) 325 255: 77(ptr) AccessChain 27(data) 39 39 326 256: 20(ivec4) Load 255 327 257: 76(ivec2) VectorShuffle 256 256 0 1 328 258: 6(int) Load 8(invocation) 329 259: 76(ivec2) GroupNonUniformShuffleDown 35 257 258 330 260: 77(ptr) AccessChain 27(data) 254 39 331 261: 20(ivec4) Load 260 332 262: 20(ivec4) VectorShuffle 261 259 4 5 2 3 333 Store 260 262 334 263: 6(int) Load 8(invocation) 335 264: 77(ptr) AccessChain 27(data) 51 39 336 265: 20(ivec4) Load 264 337 266: 87(ivec3) VectorShuffle 265 265 0 1 2 338 267: 6(int) Load 8(invocation) 339 268: 87(ivec3) GroupNonUniformShuffleDown 35 266 267 340 269: 77(ptr) AccessChain 27(data) 263 39 341 270: 20(ivec4) Load 269 342 271: 20(ivec4) VectorShuffle 270 268 4 5 6 3 343 Store 269 271 344 272: 6(int) Load 8(invocation) 345 273: 77(ptr) AccessChain 27(data) 62 39 346 274: 20(ivec4) Load 273 347 275: 6(int) Load 8(invocation) 348 276: 20(ivec4) GroupNonUniformShuffleDown 35 274 275 349 277: 77(ptr) AccessChain 27(data) 272 39 350 Store 277 276 351 278: 6(int) Load 8(invocation) 352 279: 103(ptr) AccessChain 27(data) 29 51 30 353 280: 6(int) Load 279 354 281: 6(int) Load 8(invocation) 355 282: 6(int) GroupNonUniformShuffleDown 35 280 281 356 283: 103(ptr) AccessChain 27(data) 278 51 30 357 Store 283 282 358 284: 6(int) Load 8(invocation) 359 285: 111(ptr) AccessChain 27(data) 39 51 360 286: 21(ivec4) Load 285 361 287: 110(ivec2) VectorShuffle 286 286 0 1 362 288: 6(int) Load 8(invocation) 363 289: 110(ivec2) GroupNonUniformShuffleDown 35 287 288 364 290: 111(ptr) AccessChain 27(data) 284 51 365 291: 21(ivec4) Load 290 366 292: 21(ivec4) VectorShuffle 291 289 4 5 2 3 367 Store 290 292 368 293: 6(int) Load 8(invocation) 369 294: 111(ptr) AccessChain 27(data) 51 51 370 295: 21(ivec4) Load 294 371 296: 121(ivec3) VectorShuffle 295 295 0 1 2 372 297: 6(int) Load 8(invocation) 373 298: 121(ivec3) GroupNonUniformShuffleDown 35 296 297 374 299: 111(ptr) AccessChain 27(data) 293 51 375 300: 21(ivec4) Load 299 376 301: 21(ivec4) VectorShuffle 300 298 4 5 6 3 377 Store 299 301 378 302: 6(int) Load 8(invocation) 379 303: 111(ptr) AccessChain 27(data) 62 51 380 304: 21(ivec4) Load 303 381 305: 6(int) Load 8(invocation) 382 306: 21(ivec4) GroupNonUniformShuffleDown 35 304 305 383 307: 111(ptr) AccessChain 27(data) 302 51 384 Store 307 306 385 308: 6(int) Load 8(invocation) 386 309: 137(ptr) AccessChain 27(data) 29 62 30 387 310:22(float64_t) Load 309 388 311: 6(int) Load 8(invocation) 389 312:22(float64_t) GroupNonUniformShuffleDown 35 310 311 390 313: 137(ptr) AccessChain 27(data) 308 62 30 391 Store 313 312 392 314: 6(int) Load 8(invocation) 393 315: 145(ptr) AccessChain 27(data) 39 62 394 316: 23(f64vec4) Load 315 395 317:144(f64vec2) VectorShuffle 316 316 0 1 396 318: 6(int) Load 8(invocation) 397 319:144(f64vec2) GroupNonUniformShuffleDown 35 317 318 398 320: 145(ptr) AccessChain 27(data) 314 62 399 321: 23(f64vec4) Load 320 400 322: 23(f64vec4) VectorShuffle 321 319 4 5 2 3 401 Store 320 322 402 323: 6(int) Load 8(invocation) 403 324: 145(ptr) AccessChain 27(data) 51 62 404 325: 23(f64vec4) Load 324 405 326:155(f64vec3) VectorShuffle 325 325 0 1 2 406 327: 6(int) Load 8(invocation) 407 328:155(f64vec3) GroupNonUniformShuffleDown 35 326 327 408 329: 145(ptr) AccessChain 27(data) 323 62 409 330: 23(f64vec4) Load 329 410 331: 23(f64vec4) VectorShuffle 330 328 4 5 6 3 411 Store 329 331 412 332: 6(int) Load 8(invocation) 413 333: 145(ptr) AccessChain 27(data) 62 62 414 334: 23(f64vec4) Load 333 415 335: 6(int) Load 8(invocation) 416 336: 23(f64vec4) GroupNonUniformShuffleDown 35 334 335 417 337: 145(ptr) AccessChain 27(data) 332 62 418 Store 337 336 419 338: 6(int) Load 8(invocation) 420 339: 69(ptr) AccessChain 27(data) 29 39 30 421 340: 19(int) Load 339 422 341: 173(bool) SLessThan 340 29 423 342: 6(int) Load 8(invocation) 424 343: 173(bool) GroupNonUniformShuffleDown 35 341 342 425 344: 19(int) Select 343 39 29 426 345: 69(ptr) AccessChain 27(data) 338 39 30 427 Store 345 344 428 346: 6(int) Load 8(invocation) 429 347: 77(ptr) AccessChain 27(data) 39 39 430 348: 20(ivec4) Load 347 431 349: 76(ivec2) VectorShuffle 348 348 0 1 432 350: 184(bvec2) SLessThan 349 183 433 351: 6(int) Load 8(invocation) 434 352: 184(bvec2) GroupNonUniformShuffleDown 35 350 351 435 353: 76(ivec2) Select 352 188 183 436 354: 77(ptr) AccessChain 27(data) 346 39 437 355: 20(ivec4) Load 354 438 356: 20(ivec4) VectorShuffle 355 353 4 5 2 3 439 Store 354 356 440 357: 6(int) Load 8(invocation) 441 358: 77(ptr) AccessChain 27(data) 39 39 442 359: 20(ivec4) Load 358 443 360: 87(ivec3) VectorShuffle 359 359 0 1 2 444 361: 198(bvec3) SLessThan 360 197 445 362: 6(int) Load 8(invocation) 446 363: 198(bvec3) GroupNonUniformShuffleDown 35 361 362 447 364: 87(ivec3) Select 363 202 197 448 365: 77(ptr) AccessChain 27(data) 357 39 449 366: 20(ivec4) Load 365 450 367: 20(ivec4) VectorShuffle 366 364 4 5 6 3 451 Store 365 367 452 368: 6(int) Load 8(invocation) 453 369: 77(ptr) AccessChain 27(data) 39 39 454 370: 20(ivec4) Load 369 455 371: 211(bvec4) SLessThan 370 210 456 372: 6(int) Load 8(invocation) 457 373: 211(bvec4) GroupNonUniformShuffleDown 35 371 372 458 374: 20(ivec4) Select 373 215 210 459 375: 77(ptr) AccessChain 27(data) 368 39 460 Store 375 374 461 Return 462 FunctionEnd 463