hlsl.groupid.comp
Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7  Function Definition: @main(vu2; ( temp void)
0:7    Function Parameters: 
0:7      'vGroupId' ( in 2-component vector of uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of float)
0:8          'storeTemp' ( temp 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             0.000000
0:?             0.000000
0:?             1.000000
0:8        imageStore ( temp void)
0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            'vGroupId' ( in 2-component vector of uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:8          'storeTemp' ( temp 4-component vector of float)
0:8        'storeTemp' ( temp 4-component vector of float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp 2-component vector of uint)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?         Construct uvec2 ( temp 2-component vector of uint)
0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7      Function Call: @main(vu2; ( temp void)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?   Linker Objects
0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)


Linked compute stage:


Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7  Function Definition: @main(vu2; ( temp void)
0:7    Function Parameters: 
0:7      'vGroupId' ( in 2-component vector of uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of float)
0:8          'storeTemp' ( temp 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             0.000000
0:?             0.000000
0:?             1.000000
0:8        imageStore ( temp void)
0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            'vGroupId' ( in 2-component vector of uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:8          'storeTemp' ( temp 4-component vector of float)
0:8        'storeTemp' ( temp 4-component vector of float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp 2-component vector of uint)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?         Construct uvec2 ( temp 2-component vector of uint)
0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7      Function Call: @main(vu2; ( temp void)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?   Linker Objects
0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 37

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 29
                              ExecutionMode 4 LocalSize 8 8 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vu2;"
                              Name 10  "vGroupId"
                              Name 16  "storeTemp"
                              Name 22  "OutputTexture"
                              Name 26  "vGroupId"
                              Name 29  "vGroupId"
                              Name 34  "param"
                              Decorate 22(OutputTexture) DescriptorSet 0
                              Decorate 22(OutputTexture) Binding 0
                              Decorate 29(vGroupId) BuiltIn WorkgroupId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 2
               8:             TypePointer Function 7(ivec2)
               9:             TypeFunction 2 8(ptr)
              13:             TypeFloat 32
              14:             TypeVector 13(float) 4
              15:             TypePointer Function 14(fvec4)
              17:   13(float) Constant 1065353216
              18:   13(float) Constant 0
              19:   14(fvec4) ConstantComposite 17 18 18 17
              20:             TypeImage 13(float) 2D nonsampled format:Rgba32f
              21:             TypePointer UniformConstant 20
22(OutputTexture):     21(ptr) Variable UniformConstant
              27:             TypeVector 6(int) 3
              28:             TypePointer Input 27(ivec3)
    29(vGroupId):     28(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
    26(vGroupId):      8(ptr) Variable Function
       34(param):      8(ptr) Variable Function
              30:   27(ivec3) Load 29(vGroupId)
              31:      6(int) CompositeExtract 30 0
              32:      6(int) CompositeExtract 30 1
              33:    7(ivec2) CompositeConstruct 31 32
                              Store 26(vGroupId) 33
              35:    7(ivec2) Load 26(vGroupId)
                              Store 34(param) 35
              36:           2 FunctionCall 11(@main(vu2;) 34(param)
                              Return
                              FunctionEnd
  11(@main(vu2;):           2 Function None 9
    10(vGroupId):      8(ptr) FunctionParameter
              12:             Label
   16(storeTemp):     15(ptr) Variable Function
                              Store 16(storeTemp) 19
              23:          20 Load 22(OutputTexture)
              24:    7(ivec2) Load 10(vGroupId)
              25:   14(fvec4) Load 16(storeTemp)
                              ImageWrite 23 24 25
                              Return
                              FunctionEnd
