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:8          Constant:
0:8            1.000000
0:8            0.000000
0:8            0.000000
0:8            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:8          Constant:
0:8            1.000000
0:8            0.000000
0:8            0.000000
0:8            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
