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): 80008
// 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 22(sbuf_rw_i) Binding 0
                              Decorate 26(sbuf_rw_d) DescriptorSet 0
                              Decorate 26(sbuf_rw_d) Binding 0
                              Decorate 27(sbuf_rw_nocounter) DescriptorSet 0
                              Decorate 27(sbuf_rw_nocounter) Binding 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 36(sbuf_rw_i@count) Binding 0
                              Decorate 42(sbuf_rw_d@count) DescriptorSet 0
                              Decorate 42(sbuf_rw_d@count) Binding 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
