hlsl.wavequery.comp
Shader version: 500
local_size = (32, 16, 1)
0:? Sequence
0:5  Function Definition: @CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:6      move second child to first child ( temp uint)
0:6        indirect index (layout( row_major std430) buffer uint)
0:6          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6            Constant:
0:6              0 (const uint)
0:6          '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
0:6        Test condition and select ( temp uint): no shortcircuit
0:6          Condition
0:6          subgroupElect ( temp bool)
0:6          true case
0:6          '@gl_SubgroupSize' ( in uint SubgroupSize)
0:6          false case
0:6          Constant:
0:6            0 (const uint)
0:5  Function Definition: CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      Function Call: @CSMain( ( temp void)
0:?   Linker Objects
0:?     'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})


Linked compute stage:


Shader version: 500
local_size = (32, 16, 1)
0:? Sequence
0:5  Function Definition: @CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:6      move second child to first child ( temp uint)
0:6        indirect index (layout( row_major std430) buffer uint)
0:6          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:6            Constant:
0:6              0 (const uint)
0:6          '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
0:6        Test condition and select ( temp uint): no shortcircuit
0:6          Condition
0:6          subgroupElect ( temp bool)
0:6          true case
0:6          '@gl_SubgroupSize' ( in uint SubgroupSize)
0:6          false case
0:6          Constant:
0:6            0 (const uint)
0:5  Function Definition: CSMain( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      Function Call: @CSMain( ( temp void)
0:?   Linker Objects
0:?     'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})

// Module Version 10300
// Generated by (magic number): 80008
// Id's are bound by 28

                              Capability Shader
                              Capability GroupNonUniform
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "CSMain" 16 21
                              ExecutionMode 4 LocalSize 32 16 1
                              Source HLSL 500
                              Name 4  "CSMain"
                              Name 6  "@CSMain("
                              Name 10  "data"
                              MemberName 10(data) 0  "@data"
                              Name 12  "data"
                              Name 16  "@gl_SubgroupInvocationID"
                              Name 21  "@gl_SubgroupSize"
                              Decorate 9 ArrayStride 4
                              MemberDecorate 10(data) 0 Offset 0
                              Decorate 10(data) BufferBlock
                              Decorate 12(data) DescriptorSet 0
                              Decorate 12(data) Binding 0
                              Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                              Decorate 21(@gl_SubgroupSize) BuiltIn SubgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               8:             TypeInt 32 0
               9:             TypeRuntimeArray 8(int)
        10(data):             TypeStruct 9
              11:             TypePointer Uniform 10(data)
        12(data):     11(ptr) Variable Uniform
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:             TypePointer Input 8(int)
16(@gl_SubgroupInvocationID):     15(ptr) Variable Input
              18:             TypeBool
              19:      8(int) Constant 3
21(@gl_SubgroupSize):     15(ptr) Variable Input
              23:      8(int) Constant 0
              25:             TypePointer Uniform 8(int)
       4(CSMain):           2 Function None 3
               5:             Label
              27:           2 FunctionCall 6(@CSMain()
                              Return
                              FunctionEnd
     6(@CSMain():           2 Function None 3
               7:             Label
              17:      8(int) Load 16(@gl_SubgroupInvocationID)
              20:    18(bool) GroupNonUniformElect 19
              22:      8(int) Load 21(@gl_SubgroupSize)
              24:      8(int) Select 20 22 23
              26:     25(ptr) AccessChain 12(data) 14 17
                              Store 26 24
                              Return
                              FunctionEnd
