hlsl.attribute.expression.comp
Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9  Function Definition: @main( ( temp void)
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:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      Function Call: @main( ( temp void)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})


Linked compute stage:


Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9  Function Definition: @main( ( temp void)
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:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      Function Call: @main( ( temp void)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})

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

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