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 unknown built-in variable)
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 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 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 unknown built-in variable)
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 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 unsized 1-element array of uint @data})

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