hlsl.structbuffer.fn2.comp
Shader version: 500
local_size = (256, 1, 1)
0:? Sequence
0:5  Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
0:5    Function Parameters: 
0:5      'loc' ( in uint)
0:5      'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     Sequence
0:6      Sequence
0:6        move second child to first child ( temp 2-component vector of uint)
0:6          'result' ( temp 2-component vector of uint)
0:?           Sequence
0:6            move second child to first child ( temp int)
0:6              'byteAddrTemp' ( temp int)
0:6              right-shift ( temp int)
0:6                'loc' ( in uint)
0:6                Constant:
0:6                  2 (const int)
0:?             Construct vec2 ( temp 2-component vector of uint)
0:6              indirect index ( temp uint)
0:6                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6                  'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6                  Constant:
0:6                    0 (const uint)
0:6                'byteAddrTemp' ( temp int)
0:6              indirect index ( temp uint)
0:6                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6                  'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6                  Constant:
0:6                    0 (const uint)
0:6                add ( temp int)
0:6                  'byteAddrTemp' ( temp int)
0:6                  Constant:
0:6                    1 (const int)
0:7      Branch: Return with expression
0:7        'result' ( temp 2-component vector of uint)
0:12  Function Definition: @main(u1; ( temp void)
0:12    Function Parameters: 
0:12      'dispatchId' ( in uint)
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp 2-component vector of uint)
0:13          'result' ( temp 2-component vector of uint)
0:13          Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
0:13            'dispatchId' ( in uint)
0:13            'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:14      Sequence
0:14        imageStore ( temp void)
0:14          'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:14          'dispatchId' ( in uint)
0:14          'result' ( temp 2-component vector of uint)
0:14        'result' ( temp 2-component vector of uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'dispatchId' ( temp uint)
0:?         'dispatchId' ( in uint GlobalInvocationID)
0:12      Function Call: @main(u1; ( temp void)
0:?         'dispatchId' ( temp uint)
0:?   Linker Objects
0:?     'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:?     'dispatchId' ( in uint GlobalInvocationID)


Linked compute stage:


Shader version: 500
local_size = (256, 1, 1)
0:? Sequence
0:5  Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
0:5    Function Parameters: 
0:5      'loc' ( in uint)
0:5      'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     Sequence
0:6      Sequence
0:6        move second child to first child ( temp 2-component vector of uint)
0:6          'result' ( temp 2-component vector of uint)
0:?           Sequence
0:6            move second child to first child ( temp int)
0:6              'byteAddrTemp' ( temp int)
0:6              right-shift ( temp int)
0:6                'loc' ( in uint)
0:6                Constant:
0:6                  2 (const int)
0:?             Construct vec2 ( temp 2-component vector of uint)
0:6              indirect index ( temp uint)
0:6                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6                  'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6                  Constant:
0:6                    0 (const uint)
0:6                'byteAddrTemp' ( temp int)
0:6              indirect index ( temp uint)
0:6                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6                  'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6                  Constant:
0:6                    0 (const uint)
0:6                add ( temp int)
0:6                  'byteAddrTemp' ( temp int)
0:6                  Constant:
0:6                    1 (const int)
0:7      Branch: Return with expression
0:7        'result' ( temp 2-component vector of uint)
0:12  Function Definition: @main(u1; ( temp void)
0:12    Function Parameters: 
0:12      'dispatchId' ( in uint)
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp 2-component vector of uint)
0:13          'result' ( temp 2-component vector of uint)
0:13          Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
0:13            'dispatchId' ( in uint)
0:13            'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:14      Sequence
0:14        imageStore ( temp void)
0:14          'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:14          'dispatchId' ( in uint)
0:14          'result' ( temp 2-component vector of uint)
0:14        'result' ( temp 2-component vector of uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'dispatchId' ( temp uint)
0:?         'dispatchId' ( in uint GlobalInvocationID)
0:12      Function Call: @main(u1; ( temp void)
0:?         'dispatchId' ( temp uint)
0:?   Linker Objects
0:?     'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:?     'dispatchId' ( in uint GlobalInvocationID)

// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 61

                              Capability Shader
                              Capability ImageBuffer
                              Capability StorageImageExtendedFormats
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 56
                              ExecutionMode 4 LocalSize 256 1 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  ""
                              MemberName 9 0  "@data"
                              Name 15  "testLoad(u1;block--u1[0]1;"
                              Name 13  "loc"
                              Name 14  "buffer"
                              Name 19  "@main(u1;"
                              Name 18  "dispatchId"
                              Name 22  "result"
                              Name 25  "byteAddrTemp"
                              Name 43  "result"
                              Name 44  "g_input"
                              Name 45  "param"
                              Name 50  "g_output"
                              Name 54  "dispatchId"
                              Name 56  "dispatchId"
                              Name 58  "param"
                              Decorate 8 ArrayStride 4
                              MemberDecorate 9 0 NonWritable
                              MemberDecorate 9 0 Offset 0
                              Decorate 9 BufferBlock
                              Decorate 14(buffer) NonWritable
                              Decorate 44(g_input) DescriptorSet 0
                              Decorate 44(g_input) Binding 0
                              Decorate 50(g_output) DescriptorSet 0
                              Decorate 50(g_output) Binding 1
                              Decorate 56(dispatchId) BuiltIn GlobalInvocationId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeRuntimeArray 6(int)
               9:             TypeStruct 8
              10:             TypePointer Uniform 9(struct)
              11:             TypeVector 6(int) 2
              12:             TypeFunction 11(ivec2) 7(ptr) 10(ptr)
              17:             TypeFunction 2 7(ptr)
              21:             TypePointer Function 11(ivec2)
              23:             TypeInt 32 1
              24:             TypePointer Function 23(int)
              27:     23(int) Constant 2
              29:     23(int) Constant 0
              31:             TypePointer Uniform 6(int)
              35:     23(int) Constant 1
     44(g_input):     10(ptr) Variable Uniform
              48:             TypeImage 6(int) Buffer nonsampled format:Rg32ui
              49:             TypePointer UniformConstant 48
    50(g_output):     49(ptr) Variable UniformConstant
              55:             TypePointer Input 6(int)
  56(dispatchId):     55(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
  54(dispatchId):      7(ptr) Variable Function
       58(param):      7(ptr) Variable Function
              57:      6(int) Load 56(dispatchId)
                              Store 54(dispatchId) 57
              59:      6(int) Load 54(dispatchId)
                              Store 58(param) 59
              60:           2 FunctionCall 19(@main(u1;) 58(param)
                              Return
                              FunctionEnd
15(testLoad(u1;block--u1[0]1;):   11(ivec2) Function None 12
         13(loc):      7(ptr) FunctionParameter
      14(buffer):     10(ptr) FunctionParameter
              16:             Label
      22(result):     21(ptr) Variable Function
25(byteAddrTemp):     24(ptr) Variable Function
              26:      6(int) Load 13(loc)
              28:     23(int) ShiftRightLogical 26 27
                              Store 25(byteAddrTemp) 28
              30:     23(int) Load 25(byteAddrTemp)
              32:     31(ptr) AccessChain 14(buffer) 29 30
              33:      6(int) Load 32
              34:     23(int) Load 25(byteAddrTemp)
              36:     23(int) IAdd 34 35
              37:     31(ptr) AccessChain 14(buffer) 29 36
              38:      6(int) Load 37
              39:   11(ivec2) CompositeConstruct 33 38
                              Store 22(result) 39
              40:   11(ivec2) Load 22(result)
                              ReturnValue 40
                              FunctionEnd
   19(@main(u1;):           2 Function None 17
  18(dispatchId):      7(ptr) FunctionParameter
              20:             Label
      43(result):     21(ptr) Variable Function
       45(param):      7(ptr) Variable Function
              46:      6(int) Load 18(dispatchId)
                              Store 45(param) 46
              47:   11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 44(g_input)
                              Store 43(result) 47
              51:          48 Load 50(g_output)
              52:      6(int) Load 18(dispatchId)
              53:   11(ivec2) Load 43(result)
                              ImageWrite 51 52 53
                              Return
                              FunctionEnd
