hlsl.basic.comp
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:4  Function Definition: @main(i1;i1; ( temp void)
0:4    Function Parameters: 
0:4      'dti' ( in int)
0:4      'gti' ( in int)
0:?     Sequence
0:5      subtract ( temp int)
0:5        'dti' ( in int)
0:5        'gti' ( in int)
0:4  Function Definition: main( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp int)
0:?         'dti' ( temp int)
0:?         Construct int ( temp int)
0:?           'dti' ( in 3-component vector of int GlobalInvocationID)
0:4      move second child to first child ( temp int)
0:?         'gti' ( temp int)
0:?         Construct int ( temp int)
0:?           'gti' ( in 3-component vector of int LocalInvocationID)
0:4      Function Call: @main(i1;i1; ( temp void)
0:?         'dti' ( temp int)
0:?         'gti' ( temp int)
0:?   Linker Objects
0:?     'a' ( shared 100-element array of 4-component vector of float)
0:?     'dti' ( in 3-component vector of int GlobalInvocationID)
0:?     'gti' ( in 3-component vector of int LocalInvocationID)


Linked compute stage:


Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:4  Function Definition: @main(i1;i1; ( temp void)
0:4    Function Parameters: 
0:4      'dti' ( in int)
0:4      'gti' ( in int)
0:?     Sequence
0:5      subtract ( temp int)
0:5        'dti' ( in int)
0:5        'gti' ( in int)
0:4  Function Definition: main( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp int)
0:?         'dti' ( temp int)
0:?         Construct int ( temp int)
0:?           'dti' ( in 3-component vector of int GlobalInvocationID)
0:4      move second child to first child ( temp int)
0:?         'gti' ( temp int)
0:?         Construct int ( temp int)
0:?           'gti' ( in 3-component vector of int LocalInvocationID)
0:4      Function Call: @main(i1;i1; ( temp void)
0:?         'dti' ( temp int)
0:?         'gti' ( temp int)
0:?   Linker Objects
0:?     'a' ( shared 100-element array of 4-component vector of float)
0:?     'dti' ( in 3-component vector of int GlobalInvocationID)
0:?     'gti' ( in 3-component vector of int LocalInvocationID)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 19 23
                              ExecutionMode 4 LocalSize 1 1 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(i1;i1;"
                              Name 9  "dti"
                              Name 10  "gti"
                              Name 16  "dti"
                              Name 19  "dti"
                              Name 22  "gti"
                              Name 23  "gti"
                              Name 26  "param"
                              Name 28  "param"
                              Name 37  "a"
                              Decorate 19(dti) BuiltIn GlobalInvocationId
                              Decorate 23(gti) BuiltIn LocalInvocationId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               8:             TypeFunction 2 7(ptr) 7(ptr)
              17:             TypeVector 6(int) 3
              18:             TypePointer Input 17(ivec3)
         19(dti):     18(ptr) Variable Input
         23(gti):     18(ptr) Variable Input
              31:             TypeFloat 32
              32:             TypeVector 31(float) 4
              33:             TypeInt 32 0
              34:     33(int) Constant 100
              35:             TypeArray 32(fvec4) 34
              36:             TypePointer Workgroup 35
           37(a):     36(ptr) Variable Workgroup
         4(main):           2 Function None 3
               5:             Label
         16(dti):      7(ptr) Variable Function
         22(gti):      7(ptr) Variable Function
       26(param):      7(ptr) Variable Function
       28(param):      7(ptr) Variable Function
              20:   17(ivec3) Load 19(dti)
              21:      6(int) CompositeExtract 20 0
                              Store 16(dti) 21
              24:   17(ivec3) Load 23(gti)
              25:      6(int) CompositeExtract 24 0
                              Store 22(gti) 25
              27:      6(int) Load 16(dti)
                              Store 26(param) 27
              29:      6(int) Load 22(gti)
                              Store 28(param) 29
              30:           2 FunctionCall 11(@main(i1;i1;) 26(param) 28(param)
                              Return
                              FunctionEnd
11(@main(i1;i1;):           2 Function None 8
          9(dti):      7(ptr) FunctionParameter
         10(gti):      7(ptr) FunctionParameter
              12:             Label
              13:      6(int) Load 9(dti)
              14:      6(int) Load 10(gti)
              15:      6(int) ISub 13 14
                              Return
                              FunctionEnd
