hlsl.structcopy.comp
Shader version: 500
local_size = (128, 1, 1)
0:? Sequence
0:20  Function Definition: @main(u1; ( temp void)
0:20    Function Parameters: 
0:20      'id' ( in uint)
0:?     Sequence
0:21      move second child to first child ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:21        direct index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:21          's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:21          Constant:
0:21            0 (const int)
0:21        Constant:
0:21          1 (const uint)
0:21          2 (const uint)
0:21          3 (const uint)
0:22      Sequence
0:22        move second child to first child ( temp uint)
0:22          'count' ( temp uint)
0:22          count: direct index for structure ( temp uint)
0: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})
0: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})
0: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})
0:22                Constant:
0:22                  0 (const uint)
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:23      Sequence
0:23        move second child to first child ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23          Test condition and select ( temp structure{ temp uint a,  temp uint b,  temp uint c}): no shortcircuit
0:23            Condition
0:23            Compare Greater Than ( temp bool)
0:23              'id' ( in uint)
0:23              'count' ( temp uint)
0:23            true case
0:23            indirect index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23              's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:23              subtract ( temp uint)
0:23                'id' ( in uint)
0:23                'count' ( temp uint)
0:23            false case
0:23            indirect index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23              data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0: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})
0:23                    Constant:
0:23                      0 (const uint)
0:23                  Constant:
0:23                    0 (const int)
0:23                Constant:
0:23                  1 (const int)
0:23              'id' ( in uint)
0:25      AtomicAdd ( temp uint)
0:25        a: direct index for structure ( temp uint)
0:25          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:25              Constant:
0:25                0 (const uint)
0:25            Constant:
0:25              0 (const int)
0:25          Constant:
0:25            0 (const int)
0:25        a: direct index for structure ( temp uint)
0:25          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:25          Constant:
0:25            0 (const int)
0:26      AtomicAdd ( temp uint)
0:26        b: direct index for structure ( temp uint)
0:26          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:26              Constant:
0:26                0 (const uint)
0:26            Constant:
0:26              0 (const int)
0:26          Constant:
0:26            1 (const int)
0:26        b: direct index for structure ( temp uint)
0:26          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:26          Constant:
0:26            1 (const int)
0:27      AtomicAdd ( temp uint)
0:27        c: direct index for structure ( temp uint)
0:27          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:27              Constant:
0:27                0 (const uint)
0:27            Constant:
0:27              0 (const int)
0:27          Constant:
0:27            2 (const int)
0:27        c: direct index for structure ( temp uint)
0:27          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:27          Constant:
0:27            2 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp uint)
0:?         'id' ( temp uint)
0:?         'id' ( in uint LocalInvocationIndex)
0:20      Function Call: @main(u1; ( temp void)
0:?         'id' ( temp uint)
0:?   Linker Objects
0:?     '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})
0:?     '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})
0:?     's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:?     'deflt' ( const structure{ temp uint a,  temp uint b,  temp uint c})
0:?       1 (const uint)
0:?       2 (const uint)
0:?       3 (const uint)
0:?     'id' ( in uint LocalInvocationIndex)


Linked compute stage:


Shader version: 500
local_size = (128, 1, 1)
0:? Sequence
0:20  Function Definition: @main(u1; ( temp void)
0:20    Function Parameters: 
0:20      'id' ( in uint)
0:?     Sequence
0:21      move second child to first child ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:21        direct index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:21          's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:21          Constant:
0:21            0 (const int)
0:21        Constant:
0:21          1 (const uint)
0:21          2 (const uint)
0:21          3 (const uint)
0:22      Sequence
0:22        move second child to first child ( temp uint)
0:22          'count' ( temp uint)
0:22          count: direct index for structure ( temp uint)
0: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})
0: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})
0: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})
0:22                Constant:
0:22                  0 (const uint)
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:23      Sequence
0:23        move second child to first child ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23          Test condition and select ( temp structure{ temp uint a,  temp uint b,  temp uint c}): no shortcircuit
0:23            Condition
0:23            Compare Greater Than ( temp bool)
0:23              'id' ( in uint)
0:23              'count' ( temp uint)
0:23            true case
0:23            indirect index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23              's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:23              subtract ( temp uint)
0:23                'id' ( in uint)
0:23                'count' ( temp uint)
0:23            false case
0:23            indirect index ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:23              data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0: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})
0:23                    Constant:
0:23                      0 (const uint)
0:23                  Constant:
0:23                    0 (const int)
0:23                Constant:
0:23                  1 (const int)
0:23              'id' ( in uint)
0:25      AtomicAdd ( temp uint)
0:25        a: direct index for structure ( temp uint)
0:25          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:25              Constant:
0:25                0 (const uint)
0:25            Constant:
0:25              0 (const int)
0:25          Constant:
0:25            0 (const int)
0:25        a: direct index for structure ( temp uint)
0:25          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:25          Constant:
0:25            0 (const int)
0:26      AtomicAdd ( temp uint)
0:26        b: direct index for structure ( temp uint)
0:26          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:26              Constant:
0:26                0 (const uint)
0:26            Constant:
0:26              0 (const int)
0:26          Constant:
0:26            1 (const int)
0:26        b: direct index for structure ( temp uint)
0:26          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:26          Constant:
0:26            1 (const int)
0:27      AtomicAdd ( temp uint)
0:27        c: direct index for structure ( temp uint)
0:27          direct index (layout( row_major std430) buffer structure{ temp uint a,  temp uint b,  temp uint c})
0: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})
0: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})
0:27              Constant:
0:27                0 (const uint)
0:27            Constant:
0:27              0 (const int)
0:27          Constant:
0:27            2 (const int)
0:27        c: direct index for structure ( temp uint)
0:27          'ms' ( temp structure{ temp uint a,  temp uint b,  temp uint c})
0:27          Constant:
0:27            2 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp uint)
0:?         'id' ( temp uint)
0:?         'id' ( in uint LocalInvocationIndex)
0:20      Function Call: @main(u1; ( temp void)
0:?         'id' ( temp uint)
0:?   Linker Objects
0:?     '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})
0:?     '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})
0:?     's' ( shared 128-element array of structure{ temp uint a,  temp uint b,  temp uint c})
0:?     'deflt' ( const structure{ temp uint a,  temp uint b,  temp uint c})
0:?       1 (const uint)
0:?       2 (const uint)
0:?       3 (const uint)
0:?     'id' ( in uint LocalInvocationIndex)

// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 88

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 83
                              ExecutionMode 4 LocalSize 128 1 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 10  "@main(u1;"
                              Name 9  "id"
                              Name 12  "MyStruct"
                              MemberName 12(MyStruct) 0  "a"
                              MemberName 12(MyStruct) 1  "b"
                              MemberName 12(MyStruct) 2  "c"
                              Name 16  "s"
                              Name 25  "count"
                              Name 26  "MyStruct"
                              MemberName 26(MyStruct) 0  "a"
                              MemberName 26(MyStruct) 1  "b"
                              MemberName 26(MyStruct) 2  "c"
                              Name 28  "MyStructs"
                              MemberName 28(MyStructs) 0  "count"
                              MemberName 28(MyStructs) 1  "data"
                              Name 30  "sb"
                              MemberName 30(sb) 0  "@data"
                              Name 32  "sb"
                              Name 37  "ms"
                              Name 65  "o"
                              MemberName 65(o) 0  "@data"
                              Name 67  "o"
                              Name 81  "id"
                              Name 83  "id"
                              Name 85  "param"
                              MemberDecorate 26(MyStruct) 0 Offset 0
                              MemberDecorate 26(MyStruct) 1 Offset 4
                              MemberDecorate 26(MyStruct) 2 Offset 8
                              Decorate 27 ArrayStride 12
                              MemberDecorate 28(MyStructs) 0 Offset 0
                              MemberDecorate 28(MyStructs) 1 Offset 4
                              Decorate 28(MyStructs) BufferBlock
                              Decorate 29 ArrayStride 16
                              MemberDecorate 30(sb) 0 NonWritable
                              MemberDecorate 30(sb) 0 Offset 0
                              Decorate 30(sb) BufferBlock
                              Decorate 32(sb) DescriptorSet 0
                              Decorate 32(sb) Binding 0
                              Decorate 64 ArrayStride 12
                              MemberDecorate 65(o) 0 NonWritable
                              MemberDecorate 65(o) 0 Offset 0
                              Decorate 65(o) BufferBlock
                              Decorate 67(o) DescriptorSet 0
                              Decorate 67(o) Binding 1
                              Decorate 83(id) BuiltIn LocalInvocationIndex
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeFunction 2 7(ptr)
    12(MyStruct):             TypeStruct 6(int) 6(int) 6(int)
              13:      6(int) Constant 128
              14:             TypeArray 12(MyStruct) 13
              15:             TypePointer Workgroup 14
           16(s):     15(ptr) Variable Workgroup
              17:             TypeInt 32 1
              18:     17(int) Constant 0
              19:      6(int) Constant 1
              20:      6(int) Constant 2
              21:      6(int) Constant 3
              22:12(MyStruct) ConstantComposite 19 20 21
              23:             TypePointer Workgroup 12(MyStruct)
    26(MyStruct):             TypeStruct 6(int) 6(int) 6(int)
              27:             TypeRuntimeArray 26(MyStruct)
   28(MyStructs):             TypeStruct 6(int) 27
              29:             TypeRuntimeArray 28(MyStructs)
          30(sb):             TypeStruct 29
              31:             TypePointer Uniform 30(sb)
          32(sb):     31(ptr) Variable Uniform
              33:             TypePointer Uniform 6(int)
              36:             TypePointer Function 12(MyStruct)
              40:             TypeBool
              47:     17(int) Constant 1
              49:             TypePointer Uniform 26(MyStruct)
              61:     17(int) Constant 2
              64:             TypeRuntimeArray 26(MyStruct)
           65(o):             TypeStruct 64
              66:             TypePointer Uniform 65(o)
           67(o):     66(ptr) Variable Uniform
              71:      6(int) Constant 0
              82:             TypePointer Input 6(int)
          83(id):     82(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
          81(id):      7(ptr) Variable Function
       85(param):      7(ptr) Variable Function
              84:      6(int) Load 83(id)
                              Store 81(id) 84
              86:      6(int) Load 81(id)
                              Store 85(param) 86
              87:           2 FunctionCall 10(@main(u1;) 85(param)
                              Return
                              FunctionEnd
   10(@main(u1;):           2 Function None 8
           9(id):      7(ptr) FunctionParameter
              11:             Label
       25(count):      7(ptr) Variable Function
          37(ms):     36(ptr) Variable Function
              52:     36(ptr) Variable Function
              24:     23(ptr) AccessChain 16(s) 18
                              Store 24 22
              34:     33(ptr) AccessChain 32(sb) 18 18 18
              35:      6(int) Load 34
                              Store 25(count) 35
              38:      6(int) Load 9(id)
              39:      6(int) Load 25(count)
              41:    40(bool) UGreaterThan 38 39
              42:      6(int) Load 9(id)
              43:      6(int) Load 25(count)
              44:      6(int) ISub 42 43
              45:     23(ptr) AccessChain 16(s) 44
              46:12(MyStruct) Load 45
              48:      6(int) Load 9(id)
              50:     49(ptr) AccessChain 32(sb) 18 18 47 48
              51:26(MyStruct) Load 50
                              SelectionMerge 54 None
                              BranchConditional 41 53 55
              53:               Label
                                Store 52 46
                                Branch 54
              55:               Label
              56:      6(int)   CompositeExtract 51 0
              57:      7(ptr)   AccessChain 52 18
                                Store 57 56
              58:      6(int)   CompositeExtract 51 1
              59:      7(ptr)   AccessChain 52 47
                                Store 59 58
              60:      6(int)   CompositeExtract 51 2
              62:      7(ptr)   AccessChain 52 61
                                Store 62 60
                                Branch 54
              54:             Label
              63:12(MyStruct) Load 52
                              Store 37(ms) 63
              68:     33(ptr) AccessChain 67(o) 18 18 18
              69:      7(ptr) AccessChain 37(ms) 18
              70:      6(int) Load 69
              72:      6(int) AtomicIAdd 68 19 71 70
              73:     33(ptr) AccessChain 67(o) 18 18 47
              74:      7(ptr) AccessChain 37(ms) 47
              75:      6(int) Load 74
              76:      6(int) AtomicIAdd 73 19 71 75
              77:     33(ptr) AccessChain 67(o) 18 18 61
              78:      7(ptr) AccessChain 37(ms) 61
              79:      6(int) Load 78
              80:      6(int) AtomicIAdd 77 19 71 79
                              Return
                              FunctionEnd
