hlsl.structbuffer.incdec.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7  Function Definition: @main(u1; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'pos' ( in uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of uint)
0:8          'result' ( temp 4-component vector of uint)
0:8          Constant:
0:8            0 (const uint)
0:8            0 (const uint)
0:8            0 (const uint)
0:8            0 (const uint)
0:10      direct index (layout( row_major std430) buffer 4-component vector of uint)
0:10        @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:10          'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:10          Constant:
0:10            0 (const uint)
0:10        Constant:
0:10          7 (const int)
0:11      direct index (layout( row_major std430) buffer 4-component vector of uint)
0:11        @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:11          'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:11          Constant:
0:11            0 (const uint)
0:11        Constant:
0:11          7 (const int)
0:13      move second child to first child ( temp 4-component vector of uint)
0:13        direct index (layout( row_major std430) buffer 4-component vector of uint)
0:13          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:13            'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:13            Constant:
0:13              0 (const uint)
0:13          Constant:
0:13            5 (const int)
0:13        Constant:
0:13          2 (const uint)
0:13          2 (const uint)
0:13          2 (const uint)
0:13          2 (const uint)
0:15      Sequence
0:15        move second child to first child ( temp uint)
0:15          'c1' ( temp uint)
0:15          AtomicAdd ( temp uint)
0:15            @count: direct index for structure ( temp uint)
0:15              'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:15              Constant:
0:15                0 (const int)
0:15            Constant:
0:15              1 (const uint)
0:16      Sequence
0:16        move second child to first child ( temp uint)
0:16          'c2' ( temp uint)
0:16          add ( temp uint)
0:16            AtomicAdd ( temp uint)
0:16              @count: direct index for structure ( temp uint)
0:16                'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:16                Constant:
0:16                  0 (const int)
0:16              Constant:
0:16                4294967295 (const uint)
0:16            Constant:
0:16              -1 (const int)
0:18      Branch: Return with expression
0:?         Construct vec4 ( temp 4-component vector of float)
0:18          Convert uint to float ( temp float)
0:18            direct index ( temp uint)
0:18              'result' ( temp 4-component vector of uint)
0:18              Constant:
0:18                0 (const int)
0:18          Convert uint to float ( temp float)
0:18            direct index ( temp uint)
0:18              'result' ( temp 4-component vector of uint)
0:18              Constant:
0:18                1 (const int)
0:18          Convert uint to float ( temp float)
0:18            'c1' ( temp uint)
0:18          Convert uint to float ( temp float)
0:18            'c2' ( temp uint)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:?     'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:?     'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:?     'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:?     'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @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:7  Function Definition: @main(u1; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'pos' ( in uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of uint)
0:8          'result' ( temp 4-component vector of uint)
0:8          Constant:
0:8            0 (const uint)
0:8            0 (const uint)
0:8            0 (const uint)
0:8            0 (const uint)
0:10      direct index (layout( row_major std430) buffer 4-component vector of uint)
0:10        @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:10          'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:10          Constant:
0:10            0 (const uint)
0:10        Constant:
0:10          7 (const int)
0:11      direct index (layout( row_major std430) buffer 4-component vector of uint)
0:11        @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:11          'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:11          Constant:
0:11            0 (const uint)
0:11        Constant:
0:11          7 (const int)
0:13      move second child to first child ( temp 4-component vector of uint)
0:13        direct index (layout( row_major std430) buffer 4-component vector of uint)
0:13          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint)
0:13            'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:13            Constant:
0:13              0 (const uint)
0:13          Constant:
0:13            5 (const int)
0:13        Constant:
0:13          2 (const uint)
0:13          2 (const uint)
0:13          2 (const uint)
0:13          2 (const uint)
0:15      Sequence
0:15        move second child to first child ( temp uint)
0:15          'c1' ( temp uint)
0:15          AtomicAdd ( temp uint)
0:15            @count: direct index for structure ( temp uint)
0:15              'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:15              Constant:
0:15                0 (const int)
0:15            Constant:
0:15              1 (const uint)
0:16      Sequence
0:16        move second child to first child ( temp uint)
0:16          'c2' ( temp uint)
0:16          add ( temp uint)
0:16            AtomicAdd ( temp uint)
0:16              @count: direct index for structure ( temp uint)
0:16                'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:16                Constant:
0:16                  0 (const int)
0:16              Constant:
0:16                4294967295 (const uint)
0:16            Constant:
0:16              -1 (const int)
0:18      Branch: Return with expression
0:?         Construct vec4 ( temp 4-component vector of float)
0:18          Convert uint to float ( temp float)
0:18            direct index ( temp uint)
0:18              'result' ( temp 4-component vector of uint)
0:18              Constant:
0:18                0 (const int)
0:18          Convert uint to float ( temp float)
0:18            direct index ( temp uint)
0:18              'result' ( temp 4-component vector of uint)
0:18              Constant:
0:18                1 (const int)
0:18          Convert uint to float ( temp float)
0:18            'c1' ( temp uint)
0:18          Convert uint to float ( temp float)
0:18            'c2' ( temp uint)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:?     'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:?     'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @data})
0:?     'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer uint @count})
0:?     'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of uint @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" 63 66
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 12  "@main(u1;"
                              Name 11  "pos"
                              Name 16  "result"
                              Name 20  "sbuf_rw_i"
                              MemberName 20(sbuf_rw_i) 0  "@data"
                              Name 22  "sbuf_rw_i"
                              Name 26  "sbuf_rw_d"
                              Name 27  "sbuf_rw_nocounter"
                              Name 33  "c1"
                              Name 34  "sbuf_rw_i@count"
                              MemberName 34(sbuf_rw_i@count) 0  "@count"
                              Name 36  "sbuf_rw_i@count"
                              Name 41  "c2"
                              Name 42  "sbuf_rw_d@count"
                              Name 61  "pos"
                              Name 63  "pos"
                              Name 66  "@entryPointOutput"
                              Name 67  "param"
                              Decorate 19 ArrayStride 16
                              MemberDecorate 20(sbuf_rw_i) 0 Offset 0
                              Decorate 20(sbuf_rw_i) BufferBlock
                              Decorate 22(sbuf_rw_i) DescriptorSet 0
                              Decorate 26(sbuf_rw_d) DescriptorSet 0
                              Decorate 27(sbuf_rw_nocounter) DescriptorSet 0
                              MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0
                              Decorate 34(sbuf_rw_i@count) BufferBlock
                              Decorate 36(sbuf_rw_i@count) DescriptorSet 0
                              Decorate 42(sbuf_rw_d@count) DescriptorSet 0
                              Decorate 63(pos) Flat
                              Decorate 63(pos) Location 0
                              Decorate 66(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeFloat 32
               9:             TypeVector 8(float) 4
              10:             TypeFunction 9(fvec4) 7(ptr)
              14:             TypeVector 6(int) 4
              15:             TypePointer Function 14(ivec4)
              17:      6(int) Constant 0
              18:   14(ivec4) ConstantComposite 17 17 17 17
              19:             TypeRuntimeArray 14(ivec4)
   20(sbuf_rw_i):             TypeStruct 19
              21:             TypePointer Uniform 20(sbuf_rw_i)
   22(sbuf_rw_i):     21(ptr) Variable Uniform
              23:             TypeInt 32 1
              24:     23(int) Constant 0
              25:     23(int) Constant 7
   26(sbuf_rw_d):     21(ptr) Variable Uniform
27(sbuf_rw_nocounter):     21(ptr) Variable Uniform
              28:     23(int) Constant 5
              29:      6(int) Constant 2
              30:   14(ivec4) ConstantComposite 29 29 29 29
              31:             TypePointer Uniform 14(ivec4)
34(sbuf_rw_i@count):             TypeStruct 6(int)
              35:             TypePointer Uniform 34(sbuf_rw_i@count)
36(sbuf_rw_i@count):     35(ptr) Variable Uniform
              37:             TypePointer Uniform 6(int)
              39:      6(int) Constant 1
42(sbuf_rw_d@count):     35(ptr) Variable Uniform
              44:      6(int) Constant 4294967295
              46:     23(int) Constant 4294967295
              62:             TypePointer Input 6(int)
         63(pos):     62(ptr) Variable Input
              65:             TypePointer Output 9(fvec4)
66(@entryPointOutput):     65(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         61(pos):      7(ptr) Variable Function
       67(param):      7(ptr) Variable Function
              64:      6(int) Load 63(pos)
                              Store 61(pos) 64
              68:      6(int) Load 61(pos)
                              Store 67(param) 68
              69:    9(fvec4) FunctionCall 12(@main(u1;) 67(param)
                              Store 66(@entryPointOutput) 69
                              Return
                              FunctionEnd
   12(@main(u1;):    9(fvec4) Function None 10
         11(pos):      7(ptr) FunctionParameter
              13:             Label
      16(result):     15(ptr) Variable Function
          33(c1):      7(ptr) Variable Function
          41(c2):      7(ptr) Variable Function
                              Store 16(result) 18
              32:     31(ptr) AccessChain 27(sbuf_rw_nocounter) 24 28
                              Store 32 30
              38:     37(ptr) AccessChain 36(sbuf_rw_i@count) 24
              40:      6(int) AtomicIAdd 38 39 17 39
                              Store 33(c1) 40
              43:     37(ptr) AccessChain 42(sbuf_rw_d@count) 24
              45:      6(int) AtomicIAdd 43 39 17 44
              47:      6(int) IAdd 45 46
                              Store 41(c2) 47
              48:      7(ptr) AccessChain 16(result) 17
              49:      6(int) Load 48
              50:    8(float) ConvertUToF 49
              51:      7(ptr) AccessChain 16(result) 39
              52:      6(int) Load 51
              53:    8(float) ConvertUToF 52
              54:      6(int) Load 33(c1)
              55:    8(float) ConvertUToF 54
              56:      6(int) Load 41(c2)
              57:    8(float) ConvertUToF 56
              58:    9(fvec4) CompositeConstruct 50 53 55 57
                              ReturnValue 58
                              FunctionEnd
