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): 80002
// Id's are bound by 76

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 64 67
                              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 50  "sbuf_a"
                              Name 52  "sbuf_a@count"
                              Name 53  "sbuf_c"
                              Name 54  "sbuf_c@count"
                              Name 55  "param"
                              Name 56  "param"
                              Name 57  "param"
                              Name 58  "param"
                              Name 62  "pos"
                              Name 64  "pos"
                              Name 67  "@entryPointOutput"
                              Name 68  "param"
                              Name 71  "sbuf_a@count"
                              MemberName 71(sbuf_a@count) 0  "@count"
                              Name 73  "sbuf_a@count"
                              Name 74  "sbuf_c@count"
                              Name 75  "sbuf_unused"
                              Decorate 8 ArrayStride 16
                              MemberDecorate 9 0 Offset 0
                              Decorate 9 BufferBlock
                              Decorate 12 BufferBlock
                              Decorate 50(sbuf_a) DescriptorSet 0
                              Decorate 52(sbuf_a@count) DescriptorSet 0
                              Decorate 53(sbuf_c) DescriptorSet 0
                              Decorate 54(sbuf_c@count) DescriptorSet 0
                              Decorate 64(pos) Flat
                              Decorate 64(pos) Location 0
                              Decorate 67(@entryPointOutput) Location 0
                              MemberDecorate 71(sbuf_a@count) 0 Offset 0
                              Decorate 71(sbuf_a@count) BufferBlock
                              Decorate 73(sbuf_a@count) DescriptorSet 0
                              Decorate 74(sbuf_c@count) DescriptorSet 0
                              Decorate 75(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 Function 9(struct)
              11:             TypeInt 32 1
              12:             TypeStruct 11(int)
              13:             TypePointer Function 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 Function 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 Function 7(fvec4)
              42:     11(int) Constant 4294967295
              49:             TypePointer Uniform 9(struct)
      50(sbuf_a):     49(ptr) Variable Uniform
              51:             TypePointer Uniform 12(struct)
52(sbuf_a@count):     51(ptr) Variable Uniform
      53(sbuf_c):     49(ptr) Variable Uniform
54(sbuf_c@count):     51(ptr) Variable Uniform
              63:             TypePointer Input 21(int)
         64(pos):     63(ptr) Variable Input
              66:             TypePointer Output 7(fvec4)
67(@entryPointOutput):     66(ptr) Variable Output
71(sbuf_a@count):             TypeStruct 11(int)
              72:             TypePointer Uniform 71(sbuf_a@count)
73(sbuf_a@count):     72(ptr) Variable Uniform
74(sbuf_c@count):     72(ptr) Variable Uniform
 75(sbuf_unused):     49(ptr) Variable Uniform
         4(main):           2 Function None 3
               5:             Label
         62(pos):     22(ptr) Variable Function
       68(param):     22(ptr) Variable Function
              65:     21(int) Load 64(pos)
                              Store 62(pos) 65
              69:     21(int) Load 62(pos)
                              Store 68(param) 69
              70:    7(fvec4) FunctionCall 25(@main(u1;) 68(param)
                              Store 67(@entryPointOutput) 70
                              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
       55(param):     10(ptr) Variable Function
       56(param):     13(ptr) Variable Function
       57(param):     10(ptr) Variable Function
       58(param):     13(ptr) Variable Function
              59:    7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 55(param) 56(param) 57(param) 58(param)
                              ReturnValue 59
                              FunctionEnd
