hlsl.attribute.expression.comp
Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9  Function Definition: @main( ( temp 4-component vector of float)
0:9    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp int)
0:11          'x' ( temp int)
0:11          Constant:
0:11            0 (const int)
0:11        Loop with condition tested first: Unroll
0:11          Loop Condition
0:11          Compare Less Than ( temp bool)
0:11            'x' ( temp int)
0:11            bound: direct index for structure ( uniform int)
0:11              'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
0:11              Constant:
0:11                0 (const uint)
0:11          No loop body
0:11          Loop Terminal Expression
0:11          Pre-Increment ( temp int)
0:11            'x' ( temp int)
0:14      Branch: Return with expression
0:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:9        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)


Linked compute stage:


Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9  Function Definition: @main( ( temp 4-component vector of float)
0:9    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp int)
0:11          'x' ( temp int)
0:11          Constant:
0:11            0 (const int)
0:11        Loop with condition tested first: Unroll
0:11          Loop Condition
0:11          Compare Less Than ( temp bool)
0:11            'x' ( temp int)
0:11            bound: direct index for structure ( uniform int)
0:11              'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
0:11              Constant:
0:11                0 (const uint)
0:11          No loop body
0:11          Loop Terminal Expression
0:11          Pre-Increment ( temp int)
0:11            'x' ( temp int)
0:14      Branch: Return with expression
0:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:9        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 37
                              ExecutionMode 4 LocalSize 4 6 8
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 13  "x"
                              Name 21  "$Global"
                              MemberName 21($Global) 0  "bound"
                              Name 23  ""
                              Name 37  "@entryPointOutput"
                              MemberDecorate 21($Global) 0 Offset 0
                              Decorate 21($Global) Block
                              Decorate 23 DescriptorSet 0
                              Decorate 37(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeInt 32 1
              12:             TypePointer Function 11(int)
              14:     11(int) Constant 0
     21($Global):             TypeStruct 11(int)
              22:             TypePointer Uniform 21($Global)
              23:     22(ptr) Variable Uniform
              24:             TypePointer Uniform 11(int)
              27:             TypeBool
              30:     11(int) Constant 1
              32:    6(float) Constant 0
              33:    7(fvec4) ConstantComposite 32 32 32 32
              36:             TypePointer Output 7(fvec4)
37(@entryPointOutput):     36(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              38:    7(fvec4) FunctionCall 9(@main()
                              Store 37(@entryPointOutput) 38
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
           13(x):     12(ptr) Variable Function
                              Store 13(x) 14
                              Branch 15
              15:             Label
                              LoopMerge 17 18 Unroll 
                              Branch 19
              19:             Label
              20:     11(int) Load 13(x)
              25:     24(ptr) AccessChain 23 14
              26:     11(int) Load 25
              28:    27(bool) SLessThan 20 26
                              BranchConditional 28 16 17
              16:               Label
                                Branch 18
              18:               Label
              29:     11(int)   Load 13(x)
              31:     11(int)   IAdd 29 30
                                Store 13(x) 31
                                Branch 15
              17:             Label
                              ReturnValue 33
                              FunctionEnd
