hlsl.wavevote.comp
Shader version: 500
local_size = (32, 16, 1)
0:? Sequence
0:5  Function Definition: @CSMain(vu3; ( temp void)
0:5    Function Parameters: 
0:5      'dti' ( in 3-component vector of uint)
0:?     Sequence
0:6      move second child to first child ( temp uint64_t)
0:6        indirect index (layout( row_major std430) buffer uint64_t)
0:6          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:6            Constant:
0:6              0 (const uint)
0:6          direct index ( temp uint)
0:6            'dti' ( in 3-component vector of uint)
0:6            Constant:
0:6              0 (const int)
0:6        packUint2x32 ( temp uint64_t)
0:6          vector swizzle ( temp 2-component vector of uint)
0:6            subgroupBallot ( temp 4-component vector of uint)
0:6              subgroupAny ( temp bool)
0:6                Compare Equal ( temp bool)
0:6                  direct index ( temp uint)
0:6                    'dti' ( in 3-component vector of uint)
0:6                    Constant:
0:6                      0 (const int)
0:6                  Constant:
0:6                    0 (const uint)
0:6            Sequence
0:6              Constant:
0:6                0 (const int)
0:6              Constant:
0:6                1 (const int)
0:7      move second child to first child ( temp uint64_t)
0:7        indirect index (layout( row_major std430) buffer uint64_t)
0:7          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:7            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:7            Constant:
0:7              0 (const uint)
0:7          direct index ( temp uint)
0:7            'dti' ( in 3-component vector of uint)
0:7            Constant:
0:7              1 (const int)
0:7        packUint2x32 ( temp uint64_t)
0:7          vector swizzle ( temp 2-component vector of uint)
0:7            subgroupBallot ( temp 4-component vector of uint)
0:7              subgroupAll ( temp bool)
0:7                Compare Equal ( temp bool)
0:7                  direct index ( temp uint)
0:7                    'dti' ( in 3-component vector of uint)
0:7                    Constant:
0:7                      1 (const int)
0:7                  Constant:
0:7                    0 (const uint)
0:7            Sequence
0:7              Constant:
0:7                0 (const int)
0:7              Constant:
0:7                1 (const int)
0:8      move second child to first child ( temp uint64_t)
0:8        indirect index (layout( row_major std430) buffer uint64_t)
0:8          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:8            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:8            Constant:
0:8              0 (const uint)
0:8          direct index ( temp uint)
0:8            'dti' ( in 3-component vector of uint)
0:8            Constant:
0:8              2 (const int)
0:8        packUint2x32 ( temp uint64_t)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            subgroupBallot ( temp 4-component vector of uint)
0:8              subgroupAllEqual ( temp bool)
0:8                Compare Equal ( temp bool)
0:8                  direct index ( temp uint)
0:8                    'dti' ( in 3-component vector of uint)
0:8                    Constant:
0:8                      2 (const int)
0:8                  Constant:
0:8                    0 (const uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:5  Function Definition: CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      move second child to first child ( temp 3-component vector of uint)
0:?         'dti' ( temp 3-component vector of uint)
0:?         'dti' ( in 3-component vector of uint GlobalInvocationID)
0:5      Function Call: @CSMain(vu3; ( temp void)
0:?         'dti' ( temp 3-component vector of uint)
0:?   Linker Objects
0:?     'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)


Linked compute stage:


Shader version: 500
local_size = (32, 16, 1)
0:? Sequence
0:5  Function Definition: @CSMain(vu3; ( temp void)
0:5    Function Parameters: 
0:5      'dti' ( in 3-component vector of uint)
0:?     Sequence
0:6      move second child to first child ( temp uint64_t)
0:6        indirect index (layout( row_major std430) buffer uint64_t)
0:6          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:6            Constant:
0:6              0 (const uint)
0:6          direct index ( temp uint)
0:6            'dti' ( in 3-component vector of uint)
0:6            Constant:
0:6              0 (const int)
0:6        packUint2x32 ( temp uint64_t)
0:6          vector swizzle ( temp 2-component vector of uint)
0:6            subgroupBallot ( temp 4-component vector of uint)
0:6              subgroupAny ( temp bool)
0:6                Compare Equal ( temp bool)
0:6                  direct index ( temp uint)
0:6                    'dti' ( in 3-component vector of uint)
0:6                    Constant:
0:6                      0 (const int)
0:6                  Constant:
0:6                    0 (const uint)
0:6            Sequence
0:6              Constant:
0:6                0 (const int)
0:6              Constant:
0:6                1 (const int)
0:7      move second child to first child ( temp uint64_t)
0:7        indirect index (layout( row_major std430) buffer uint64_t)
0:7          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:7            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:7            Constant:
0:7              0 (const uint)
0:7          direct index ( temp uint)
0:7            'dti' ( in 3-component vector of uint)
0:7            Constant:
0:7              1 (const int)
0:7        packUint2x32 ( temp uint64_t)
0:7          vector swizzle ( temp 2-component vector of uint)
0:7            subgroupBallot ( temp 4-component vector of uint)
0:7              subgroupAll ( temp bool)
0:7                Compare Equal ( temp bool)
0:7                  direct index ( temp uint)
0:7                    'dti' ( in 3-component vector of uint)
0:7                    Constant:
0:7                      1 (const int)
0:7                  Constant:
0:7                    0 (const uint)
0:7            Sequence
0:7              Constant:
0:7                0 (const int)
0:7              Constant:
0:7                1 (const int)
0:8      move second child to first child ( temp uint64_t)
0:8        indirect index (layout( row_major std430) buffer uint64_t)
0:8          @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
0:8            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:8            Constant:
0:8              0 (const uint)
0:8          direct index ( temp uint)
0:8            'dti' ( in 3-component vector of uint)
0:8            Constant:
0:8              2 (const int)
0:8        packUint2x32 ( temp uint64_t)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            subgroupBallot ( temp 4-component vector of uint)
0:8              subgroupAllEqual ( temp bool)
0:8                Compare Equal ( temp bool)
0:8                  direct index ( temp uint)
0:8                    'dti' ( in 3-component vector of uint)
0:8                    Constant:
0:8                      2 (const int)
0:8                  Constant:
0:8                    0 (const uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:5  Function Definition: CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      move second child to first child ( temp 3-component vector of uint)
0:?         'dti' ( temp 3-component vector of uint)
0:?         'dti' ( in 3-component vector of uint GlobalInvocationID)
0:5      Function Call: @CSMain(vu3; ( temp void)
0:?         'dti' ( temp 3-component vector of uint)
0:?   Linker Objects
0:?     'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)

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

                              Capability Shader
                              Capability Int64
                              Capability GroupNonUniform
                              Capability GroupNonUniformVote
                              Capability GroupNonUniformBallot
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "CSMain" 61
                              ExecutionMode 4 LocalSize 32 16 1
                              Source HLSL 500
                              Name 4  "CSMain"
                              Name 11  "@CSMain(vu3;"
                              Name 10  "dti"
                              Name 15  "data"
                              MemberName 15(data) 0  "@data"
                              Name 17  "data"
                              Name 59  "dti"
                              Name 61  "dti"
                              Name 63  "param"
                              Decorate 14 ArrayStride 8
                              MemberDecorate 15(data) 0 Offset 0
                              Decorate 15(data) BufferBlock
                              Decorate 17(data) DescriptorSet 0
                              Decorate 61(dti) BuiltIn GlobalInvocationId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 3
               8:             TypePointer Function 7(ivec3)
               9:             TypeFunction 2 8(ptr)
              13:             TypeInt 64 0
              14:             TypeRuntimeArray 13(int)
        15(data):             TypeStruct 14
              16:             TypePointer Uniform 15(data)
        17(data):     16(ptr) Variable Uniform
              18:             TypeInt 32 1
              19:     18(int) Constant 0
              20:      6(int) Constant 0
              21:             TypePointer Function 6(int)
              26:             TypeBool
              28:      6(int) Constant 3
              30:             TypeVector 6(int) 4
              32:             TypeVector 6(int) 2
              35:             TypePointer Uniform 13(int)
              37:      6(int) Constant 1
              48:      6(int) Constant 2
              60:             TypePointer Input 7(ivec3)
         61(dti):     60(ptr) Variable Input
       4(CSMain):           2 Function None 3
               5:             Label
         59(dti):      8(ptr) Variable Function
       63(param):      8(ptr) Variable Function
              62:    7(ivec3) Load 61(dti)
                              Store 59(dti) 62
              64:    7(ivec3) Load 59(dti)
                              Store 63(param) 64
              65:           2 FunctionCall 11(@CSMain(vu3;) 63(param)
                              Return
                              FunctionEnd
11(@CSMain(vu3;):           2 Function None 9
         10(dti):      8(ptr) FunctionParameter
              12:             Label
              22:     21(ptr) AccessChain 10(dti) 20
              23:      6(int) Load 22
              24:     21(ptr) AccessChain 10(dti) 20
              25:      6(int) Load 24
              27:    26(bool) IEqual 25 20
              29:    26(bool) GroupNonUniformAny 28 27
              31:   30(ivec4) GroupNonUniformBallot 28 29
              33:   32(ivec2) VectorShuffle 31 31 0 1
              34:     13(int) Bitcast 33
              36:     35(ptr) AccessChain 17(data) 19 23
                              Store 36 34
              38:     21(ptr) AccessChain 10(dti) 37
              39:      6(int) Load 38
              40:     21(ptr) AccessChain 10(dti) 37
              41:      6(int) Load 40
              42:    26(bool) IEqual 41 20
              43:    26(bool) GroupNonUniformAll 28 42
              44:   30(ivec4) GroupNonUniformBallot 28 43
              45:   32(ivec2) VectorShuffle 44 44 0 1
              46:     13(int) Bitcast 45
              47:     35(ptr) AccessChain 17(data) 19 39
                              Store 47 46
              49:     21(ptr) AccessChain 10(dti) 48
              50:      6(int) Load 49
              51:     21(ptr) AccessChain 10(dti) 48
              52:      6(int) Load 51
              53:    26(bool) IEqual 52 20
              54:    26(bool) GroupNonUniformAllEqual 28 53
              55:   30(ivec4) GroupNonUniformBallot 28 54
              56:   32(ivec2) VectorShuffle 55 55 0 1
              57:     13(int) Bitcast 56
              58:     35(ptr) AccessChain 17(data) 19 50
                              Store 58 57
                              Return
                              FunctionEnd
