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 implicitly-sized array of uint)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:6            Constant:
0:6              0 (const uint)
0:6          '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:6        Test condition and select ( temp uint)
0:6          Condition
0:6          subgroupElect ( temp bool)
0:6          true case
0:6          '@gl_SubgroupSize' ( in uint unknown built-in variable)
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 implicitly-sized 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 implicitly-sized array of uint)
0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:6            Constant:
0:6              0 (const uint)
0:6          '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:6        Test condition and select ( temp uint)
0:6          Condition
0:6          subgroupElect ( temp bool)
0:6          true case
0:6          '@gl_SubgroupSize' ( in uint unknown built-in variable)
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 implicitly-sized array of uint @data})

// Module Version 10000
// Generated by (magic number): 80002
// 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 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
