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 int)
0:15              'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:15              Constant:
0:15                0 (const int)
0:15            Constant:
0:15              1 (const int)
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 int)
0:16                'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:16                Constant:
0:16                  0 (const int)
0:16              Constant:
0:16                -1 (const int)
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 int @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 int @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 int)
0:15              'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:15              Constant:
0:15                0 (const int)
0:15            Constant:
0:15              1 (const int)
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 int)
0:16                'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:16                Constant:
0:16                  0 (const int)
0:16              Constant:
0:16                -1 (const int)
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 int @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 int @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 42  "c2"
                              Name 43  "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 43(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 23(int)
              35:             TypePointer Uniform 34(sbuf_rw_i@count)
36(sbuf_rw_i@count):     35(ptr) Variable Uniform
              37:             TypePointer Uniform 23(int)
              39:     23(int) Constant 1
              40:      6(int) Constant 1
43(sbuf_rw_d@count):     35(ptr) Variable Uniform
              45:     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
          42(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
              41:      6(int) AtomicIAdd 38 40 17 39
                              Store 33(c1) 41
              44:     37(ptr) AccessChain 43(sbuf_rw_d@count) 24
              46:      6(int) AtomicIAdd 44 40 17 45
              47:      6(int) IAdd 46 45
                              Store 42(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) 40
              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 42(c2)
              57:    8(float) ConvertUToF 56
              58:    9(fvec4) CompositeConstruct 50 53 55 57
                              ReturnValue 58
                              FunctionEnd
