1hlsl.structcopy.comp 2Shader version: 500 3local_size = (128, 1, 1) 40:? Sequence 50:20 Function Definition: @main(u1; ( temp void) 60:20 Function Parameters: 70:20 'id' ( in uint) 80:? Sequence 90:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 100:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 110:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 120:21 Constant: 130:21 0 (const int) 140:21 Constant: 150:21 1 (const uint) 160:21 2 (const uint) 170:21 3 (const uint) 180:22 Sequence 190:22 move second child to first child ( temp uint) 200:22 'count' ( temp uint) 210:22 count: direct index for structure ( temp uint) 220:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 230:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 240:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 250:22 Constant: 260:22 0 (const uint) 270:22 Constant: 280:22 0 (const int) 290:22 Constant: 300:22 0 (const int) 310:23 Sequence 320:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 330:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 340:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 350:23 Condition 360:23 Compare Greater Than ( temp bool) 370:23 'id' ( in uint) 380:23 'count' ( temp uint) 390:23 true case 400:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 410:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 420:23 subtract ( temp uint) 430:23 'id' ( in uint) 440:23 'count' ( temp uint) 450:23 false case 460:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 470:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 480:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 490:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 500:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 510:23 Constant: 520:23 0 (const uint) 530:23 Constant: 540:23 0 (const int) 550:23 Constant: 560:23 1 (const int) 570:23 'id' ( in uint) 580:25 AtomicAdd ( temp uint) 590:25 a: direct index for structure ( temp uint) 600:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 610:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 620:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 630:25 Constant: 640:25 0 (const uint) 650:25 Constant: 660:25 0 (const int) 670:25 Constant: 680:25 0 (const int) 690:25 a: direct index for structure ( temp uint) 700:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 710:25 Constant: 720:25 0 (const int) 730:26 AtomicAdd ( temp uint) 740:26 b: direct index for structure ( temp uint) 750:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 760:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 770:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 780:26 Constant: 790:26 0 (const uint) 800:26 Constant: 810:26 0 (const int) 820:26 Constant: 830:26 1 (const int) 840:26 b: direct index for structure ( temp uint) 850:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 860:26 Constant: 870:26 1 (const int) 880:27 AtomicAdd ( temp uint) 890:27 c: direct index for structure ( temp uint) 900:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 910:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 920:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 930:27 Constant: 940:27 0 (const uint) 950:27 Constant: 960:27 0 (const int) 970:27 Constant: 980:27 2 (const int) 990:27 c: direct index for structure ( temp uint) 1000:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 1010:27 Constant: 1020:27 2 (const int) 1030:20 Function Definition: main( ( temp void) 1040:20 Function Parameters: 1050:? Sequence 1060:20 move second child to first child ( temp uint) 1070:? 'id' ( temp uint) 1080:? 'id' ( in uint LocalInvocationIndex) 1090:20 Function Call: @main(u1; ( temp void) 1100:? 'id' ( temp uint) 1110:? Linker Objects 1120:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 1130:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 1140:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 1150:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 1160:? 1 (const uint) 1170:? 2 (const uint) 1180:? 3 (const uint) 1190:? 'id' ( in uint LocalInvocationIndex) 120 121 122Linked compute stage: 123 124 125Shader version: 500 126local_size = (128, 1, 1) 1270:? Sequence 1280:20 Function Definition: @main(u1; ( temp void) 1290:20 Function Parameters: 1300:20 'id' ( in uint) 1310:? Sequence 1320:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 1330:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) 1340:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 1350:21 Constant: 1360:21 0 (const int) 1370:21 Constant: 1380:21 1 (const uint) 1390:21 2 (const uint) 1400:21 3 (const uint) 1410:22 Sequence 1420:22 move second child to first child ( temp uint) 1430:22 'count' ( temp uint) 1440:22 count: direct index for structure ( temp uint) 1450:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 1460:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 1470:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 1480:22 Constant: 1490:22 0 (const uint) 1500:22 Constant: 1510:22 0 (const int) 1520:22 Constant: 1530:22 0 (const int) 1540:23 Sequence 1550:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) 1560:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 1570:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit 1580:23 Condition 1590:23 Compare Greater Than ( temp bool) 1600:23 'id' ( in uint) 1610:23 'count' ( temp uint) 1620:23 true case 1630:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 1640:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 1650:23 subtract ( temp uint) 1660:23 'id' ( in uint) 1670:23 'count' ( temp uint) 1680:23 false case 1690:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) 1700:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 1710:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 1720:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) 1730:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 1740:23 Constant: 1750:23 0 (const uint) 1760:23 Constant: 1770:23 0 (const int) 1780:23 Constant: 1790:23 1 (const int) 1800:23 'id' ( in uint) 1810:25 AtomicAdd ( temp uint) 1820:25 a: direct index for structure ( temp uint) 1830:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 1840:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 1850:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 1860:25 Constant: 1870:25 0 (const uint) 1880:25 Constant: 1890:25 0 (const int) 1900:25 Constant: 1910:25 0 (const int) 1920:25 a: direct index for structure ( temp uint) 1930:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 1940:25 Constant: 1950:25 0 (const int) 1960:26 AtomicAdd ( temp uint) 1970:26 b: direct index for structure ( temp uint) 1980:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 1990:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 2000:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 2010:26 Constant: 2020:26 0 (const uint) 2030:26 Constant: 2040:26 0 (const int) 2050:26 Constant: 2060:26 1 (const int) 2070:26 b: direct index for structure ( temp uint) 2080:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 2090:26 Constant: 2100:26 1 (const int) 2110:27 AtomicAdd ( temp uint) 2120:27 c: direct index for structure ( temp uint) 2130:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) 2140:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) 2150:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 2160:27 Constant: 2170:27 0 (const uint) 2180:27 Constant: 2190:27 0 (const int) 2200:27 Constant: 2210:27 2 (const int) 2220:27 c: direct index for structure ( temp uint) 2230:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) 2240:27 Constant: 2250:27 2 (const int) 2260:20 Function Definition: main( ( temp void) 2270:20 Function Parameters: 2280:? Sequence 2290:20 move second child to first child ( temp uint) 2300:? 'id' ( temp uint) 2310:? 'id' ( in uint LocalInvocationIndex) 2320:20 Function Call: @main(u1; ( temp void) 2330:? 'id' ( temp uint) 2340:? Linker Objects 2350:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) 2360:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) 2370:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) 2380:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) 2390:? 1 (const uint) 2400:? 2 (const uint) 2410:? 3 (const uint) 2420:? 'id' ( in uint LocalInvocationIndex) 243 244// Module Version 10000 245// Generated by (magic number): 8000b 246// Id's are bound by 88 247 248 Capability Shader 249 1: ExtInstImport "GLSL.std.450" 250 MemoryModel Logical GLSL450 251 EntryPoint GLCompute 4 "main" 83 252 ExecutionMode 4 LocalSize 128 1 1 253 Source HLSL 500 254 Name 4 "main" 255 Name 10 "@main(u1;" 256 Name 9 "id" 257 Name 12 "MyStruct" 258 MemberName 12(MyStruct) 0 "a" 259 MemberName 12(MyStruct) 1 "b" 260 MemberName 12(MyStruct) 2 "c" 261 Name 16 "s" 262 Name 25 "count" 263 Name 26 "MyStruct" 264 MemberName 26(MyStruct) 0 "a" 265 MemberName 26(MyStruct) 1 "b" 266 MemberName 26(MyStruct) 2 "c" 267 Name 28 "MyStructs" 268 MemberName 28(MyStructs) 0 "count" 269 MemberName 28(MyStructs) 1 "data" 270 Name 30 "sb" 271 MemberName 30(sb) 0 "@data" 272 Name 32 "sb" 273 Name 37 "ms" 274 Name 65 "o" 275 MemberName 65(o) 0 "@data" 276 Name 67 "o" 277 Name 81 "id" 278 Name 83 "id" 279 Name 85 "param" 280 MemberDecorate 26(MyStruct) 0 Offset 0 281 MemberDecorate 26(MyStruct) 1 Offset 4 282 MemberDecorate 26(MyStruct) 2 Offset 8 283 Decorate 27 ArrayStride 12 284 MemberDecorate 28(MyStructs) 0 Offset 0 285 MemberDecorate 28(MyStructs) 1 Offset 4 286 Decorate 28(MyStructs) BufferBlock 287 Decorate 29 ArrayStride 16 288 MemberDecorate 30(sb) 0 NonWritable 289 MemberDecorate 30(sb) 0 Offset 0 290 Decorate 30(sb) BufferBlock 291 Decorate 32(sb) DescriptorSet 0 292 Decorate 32(sb) Binding 0 293 Decorate 64 ArrayStride 12 294 MemberDecorate 65(o) 0 NonWritable 295 MemberDecorate 65(o) 0 Offset 0 296 Decorate 65(o) BufferBlock 297 Decorate 67(o) DescriptorSet 0 298 Decorate 67(o) Binding 1 299 Decorate 83(id) BuiltIn LocalInvocationIndex 300 2: TypeVoid 301 3: TypeFunction 2 302 6: TypeInt 32 0 303 7: TypePointer Function 6(int) 304 8: TypeFunction 2 7(ptr) 305 12(MyStruct): TypeStruct 6(int) 6(int) 6(int) 306 13: 6(int) Constant 128 307 14: TypeArray 12(MyStruct) 13 308 15: TypePointer Workgroup 14 309 16(s): 15(ptr) Variable Workgroup 310 17: TypeInt 32 1 311 18: 17(int) Constant 0 312 19: 6(int) Constant 1 313 20: 6(int) Constant 2 314 21: 6(int) Constant 3 315 22:12(MyStruct) ConstantComposite 19 20 21 316 23: TypePointer Workgroup 12(MyStruct) 317 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) 318 27: TypeRuntimeArray 26(MyStruct) 319 28(MyStructs): TypeStruct 6(int) 27 320 29: TypeRuntimeArray 28(MyStructs) 321 30(sb): TypeStruct 29 322 31: TypePointer Uniform 30(sb) 323 32(sb): 31(ptr) Variable Uniform 324 33: TypePointer Uniform 6(int) 325 36: TypePointer Function 12(MyStruct) 326 40: TypeBool 327 47: 17(int) Constant 1 328 49: TypePointer Uniform 26(MyStruct) 329 61: 17(int) Constant 2 330 64: TypeRuntimeArray 26(MyStruct) 331 65(o): TypeStruct 64 332 66: TypePointer Uniform 65(o) 333 67(o): 66(ptr) Variable Uniform 334 71: 6(int) Constant 0 335 82: TypePointer Input 6(int) 336 83(id): 82(ptr) Variable Input 337 4(main): 2 Function None 3 338 5: Label 339 81(id): 7(ptr) Variable Function 340 85(param): 7(ptr) Variable Function 341 84: 6(int) Load 83(id) 342 Store 81(id) 84 343 86: 6(int) Load 81(id) 344 Store 85(param) 86 345 87: 2 FunctionCall 10(@main(u1;) 85(param) 346 Return 347 FunctionEnd 348 10(@main(u1;): 2 Function None 8 349 9(id): 7(ptr) FunctionParameter 350 11: Label 351 25(count): 7(ptr) Variable Function 352 37(ms): 36(ptr) Variable Function 353 52: 36(ptr) Variable Function 354 24: 23(ptr) AccessChain 16(s) 18 355 Store 24 22 356 34: 33(ptr) AccessChain 32(sb) 18 18 18 357 35: 6(int) Load 34 358 Store 25(count) 35 359 38: 6(int) Load 9(id) 360 39: 6(int) Load 25(count) 361 41: 40(bool) UGreaterThan 38 39 362 42: 6(int) Load 9(id) 363 43: 6(int) Load 25(count) 364 44: 6(int) ISub 42 43 365 45: 23(ptr) AccessChain 16(s) 44 366 46:12(MyStruct) Load 45 367 48: 6(int) Load 9(id) 368 50: 49(ptr) AccessChain 32(sb) 18 18 47 48 369 51:26(MyStruct) Load 50 370 SelectionMerge 54 None 371 BranchConditional 41 53 55 372 53: Label 373 Store 52 46 374 Branch 54 375 55: Label 376 56: 6(int) CompositeExtract 51 0 377 57: 7(ptr) AccessChain 52 18 378 Store 57 56 379 58: 6(int) CompositeExtract 51 1 380 59: 7(ptr) AccessChain 52 47 381 Store 59 58 382 60: 6(int) CompositeExtract 51 2 383 62: 7(ptr) AccessChain 52 61 384 Store 62 60 385 Branch 54 386 54: Label 387 63:12(MyStruct) Load 52 388 Store 37(ms) 63 389 68: 33(ptr) AccessChain 67(o) 18 18 18 390 69: 7(ptr) AccessChain 37(ms) 18 391 70: 6(int) Load 69 392 72: 6(int) AtomicIAdd 68 19 71 70 393 73: 33(ptr) AccessChain 67(o) 18 18 47 394 74: 7(ptr) AccessChain 37(ms) 47 395 75: 6(int) Load 74 396 76: 6(int) AtomicIAdd 73 19 71 75 397 77: 33(ptr) AccessChain 67(o) 18 18 61 398 78: 7(ptr) AccessChain 37(ms) 61 399 79: 6(int) Load 78 400 80: 6(int) AtomicIAdd 77 19 71 79 401 Return 402 FunctionEnd 403