hlsl.structbuffer.append.fn.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8  Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
0:8    Function Parameters: 
0:8      'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:8      'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:8      'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:8      'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:?     Sequence
0:9      move second child to first child ( temp 4-component vector of float)
0:9        indirect index ( buffer 4-component vector of float)
0:9          @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
0:9            'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:9            Constant:
0:9              0 (const uint)
0:9          AtomicAdd ( temp uint)
0:9            @count: direct index for structure ( temp int)
0:9              'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:9              Constant:
0:9                0 (const int)
0:9            Constant:
0:9              1 (const int)
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:10      Branch: Return with expression
0:10        indirect index ( buffer 4-component vector of float)
0:10          @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
0:10            'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:10            Constant:
0:10              0 (const uint)
0:10          add ( temp uint)
0:10            AtomicAdd ( temp uint)
0:10              @count: direct index for structure ( temp int)
0:10                'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:10                Constant:
0:10                  0 (const int)
0:10              Constant:
0:10                -1 (const int)
0:10            Constant:
0:10              -1 (const int)
0:19  Function Definition: @main(u1; ( temp 4-component vector of float)
0:19    Function Parameters: 
0:19      'pos' ( in uint)
0:?     Sequence
0:22      Branch: Return with expression
0:22        Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
0:22          'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:22          'sbuf_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:22          'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:22          'sbuf_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:19  Function Definition: main( ( temp void)
0:19    Function Parameters: 
0:?     Sequence
0:19      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:19      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:?     'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:?     'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8  Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
0:8    Function Parameters: 
0:8      'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:8      'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:8      'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:8      'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:?     Sequence
0:9      move second child to first child ( temp 4-component vector of float)
0:9        indirect index ( buffer 4-component vector of float)
0:9          @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
0:9            'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:9            Constant:
0:9              0 (const uint)
0:9          AtomicAdd ( temp uint)
0:9            @count: direct index for structure ( temp int)
0:9              'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:9              Constant:
0:9                0 (const int)
0:9            Constant:
0:9              1 (const int)
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:10      Branch: Return with expression
0:10        indirect index ( buffer 4-component vector of float)
0:10          @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
0:10            'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:10            Constant:
0:10              0 (const uint)
0:10          add ( temp uint)
0:10            AtomicAdd ( temp uint)
0:10              @count: direct index for structure ( temp int)
0:10                'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:10                Constant:
0:10                  0 (const int)
0:10              Constant:
0:10                -1 (const int)
0:10            Constant:
0:10              -1 (const int)
0:19  Function Definition: @main(u1; ( temp 4-component vector of float)
0:19    Function Parameters: 
0:19      'pos' ( in uint)
0:?     Sequence
0:22      Branch: Return with expression
0:22        Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
0:22          'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:22          'sbuf_a@count' ( buffer block{layout( row_major std430) buffer int @count})
0:22          'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:22          'sbuf_c@count' ( buffer block{layout( row_major std430) buffer int @count})
0:19  Function Definition: main( ( temp void)
0:19    Function Parameters: 
0:?     Sequence
0:19      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:19      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:?     'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:?     'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 58 61
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  ""
                              MemberName 9 0  "@data"
                              Name 12  ""
                              MemberName 12 0  "@count"
                              Name 19  "Fn2(block--vf4[0]1;block--vf4[0]1;"
                              Name 15  "arg_a"
                              Name 16  "arg_a@count"
                              Name 17  "arg_c"
                              Name 18  "arg_c@count"
                              Name 25  "@main(u1;"
                              Name 24  "pos"
                              Name 49  "sbuf_a"
                              Name 50  "sbuf_a@count"
                              Name 51  "sbuf_c"
                              Name 52  "sbuf_c@count"
                              Name 56  "pos"
                              Name 58  "pos"
                              Name 61  "@entryPointOutput"
                              Name 62  "param"
                              Name 65  "sbuf_a@count"
                              MemberName 65(sbuf_a@count) 0  "@count"
                              Name 67  "sbuf_a@count"
                              Name 68  "sbuf_c@count"
                              Name 69  "sbuf_unused"
                              Decorate 8 ArrayStride 16
                              MemberDecorate 9 0 Offset 0
                              Decorate 9 BufferBlock
                              Decorate 12 BufferBlock
                              Decorate 49(sbuf_a) DescriptorSet 0
                              Decorate 50(sbuf_a@count) DescriptorSet 0
                              Decorate 51(sbuf_c) DescriptorSet 0
                              Decorate 52(sbuf_c@count) DescriptorSet 0
                              Decorate 58(pos) Flat
                              Decorate 58(pos) Location 0
                              Decorate 61(@entryPointOutput) Location 0
                              MemberDecorate 65(sbuf_a@count) 0 Offset 0
                              Decorate 65(sbuf_a@count) BufferBlock
                              Decorate 67(sbuf_a@count) DescriptorSet 0
                              Decorate 68(sbuf_c@count) DescriptorSet 0
                              Decorate 69(sbuf_unused) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeRuntimeArray 7(fvec4)
               9:             TypeStruct 8
              10:             TypePointer Uniform 9(struct)
              11:             TypeInt 32 1
              12:             TypeStruct 11(int)
              13:             TypePointer Uniform 12(struct)
              14:             TypeFunction 7(fvec4) 10(ptr) 13(ptr) 10(ptr) 13(ptr)
              21:             TypeInt 32 0
              22:             TypePointer Function 21(int)
              23:             TypeFunction 7(fvec4) 22(ptr)
              27:     11(int) Constant 0
              28:             TypePointer Uniform 11(int)
              30:     11(int) Constant 1
              31:     21(int) Constant 1
              32:     21(int) Constant 0
              34:    6(float) Constant 1065353216
              35:    6(float) Constant 1073741824
              36:    6(float) Constant 1077936128
              37:    6(float) Constant 1082130432
              38:    7(fvec4) ConstantComposite 34 35 36 37
              39:             TypePointer Uniform 7(fvec4)
              42:     11(int) Constant 4294967295
      49(sbuf_a):     10(ptr) Variable Uniform
50(sbuf_a@count):     13(ptr) Variable Uniform
      51(sbuf_c):     10(ptr) Variable Uniform
52(sbuf_c@count):     13(ptr) Variable Uniform
              57:             TypePointer Input 21(int)
         58(pos):     57(ptr) Variable Input
              60:             TypePointer Output 7(fvec4)
61(@entryPointOutput):     60(ptr) Variable Output
65(sbuf_a@count):             TypeStruct 11(int)
              66:             TypePointer Uniform 65(sbuf_a@count)
67(sbuf_a@count):     66(ptr) Variable Uniform
68(sbuf_c@count):     66(ptr) Variable Uniform
 69(sbuf_unused):     10(ptr) Variable Uniform
         4(main):           2 Function None 3
               5:             Label
         56(pos):     22(ptr) Variable Function
       62(param):     22(ptr) Variable Function
              59:     21(int) Load 58(pos)
                              Store 56(pos) 59
              63:     21(int) Load 56(pos)
                              Store 62(param) 63
              64:    7(fvec4) FunctionCall 25(@main(u1;) 62(param)
                              Store 61(@entryPointOutput) 64
                              Return
                              FunctionEnd
19(Fn2(block--vf4[0]1;block--vf4[0]1;):    7(fvec4) Function None 14
       15(arg_a):     10(ptr) FunctionParameter
 16(arg_a@count):     13(ptr) FunctionParameter
       17(arg_c):     10(ptr) FunctionParameter
 18(arg_c@count):     13(ptr) FunctionParameter
              20:             Label
              29:     28(ptr) AccessChain 16(arg_a@count) 27
              33:     21(int) AtomicIAdd 29 31 32 30
              40:     39(ptr) AccessChain 15(arg_a) 27 33
                              Store 40 38
              41:     28(ptr) AccessChain 18(arg_c@count) 27
              43:     21(int) AtomicIAdd 41 31 32 42
              44:     21(int) IAdd 43 42
              45:     39(ptr) AccessChain 17(arg_c) 27 44
              46:    7(fvec4) Load 45
                              ReturnValue 46
                              FunctionEnd
   25(@main(u1;):    7(fvec4) Function None 23
         24(pos):     22(ptr) FunctionParameter
              26:             Label
              53:    7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 49(sbuf_a) 50(sbuf_a@count) 51(sbuf_c) 52(sbuf_c@count)
                              ReturnValue 53
                              FunctionEnd
