hlsl.whileLoop.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' (layout(location=0 ) in 4-component vector of float)
0:?     Sequence
0:3      Loop with condition tested first
0:3        Loop Condition
0:3        Compare Not Equal (temp bool)
0:3          'input' (layout(location=0 ) in 4-component vector of float)
0:3          'input' (layout(location=0 ) in 4-component vector of float)
0:3        Loop Body
0:?         Sequence
0:3          Sequence
0:3            move second child to first child (temp 4-component vector of float)
0:?               '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:3              'input' (layout(location=0 ) in 4-component vector of float)
0:3            Branch: Return
0:4      Loop with condition tested first
0:4        Loop Condition
0:4        Constant:
0:4          false (const bool)
0:4        No loop body
0:5      Loop with condition tested first
0:5        Loop Condition
0:5        Constant:
0:5          false (const bool)
0:5        No loop body
0:6      Loop with condition tested first
0:6        Loop Condition
0:6        Constant:
0:6          false (const bool)
0:6        No loop body
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?     'input' (layout(location=0 ) in 4-component vector of float)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' (layout(location=0 ) in 4-component vector of float)
0:?     Sequence
0:3      Loop with condition tested first
0:3        Loop Condition
0:3        Compare Not Equal (temp bool)
0:3          'input' (layout(location=0 ) in 4-component vector of float)
0:3          'input' (layout(location=0 ) in 4-component vector of float)
0:3        Loop Body
0:?         Sequence
0:3          Sequence
0:3            move second child to first child (temp 4-component vector of float)
0:?               '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:3              'input' (layout(location=0 ) in 4-component vector of float)
0:3            Branch: Return
0:4      Loop with condition tested first
0:4        Loop Condition
0:4        Constant:
0:4          false (const bool)
0:4        No loop body
0:5      Loop with condition tested first
0:5        Loop Condition
0:5        Constant:
0:5          false (const bool)
0:5        No loop body
0:6      Loop with condition tested first
0:6        Loop Condition
0:6        Constant:
0:6          false (const bool)
0:6        No loop body
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?     'input' (layout(location=0 ) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 14 22
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "PixelShaderFunction"
                              Name 14  "input"
                              Name 22  "@entryPointOutput"
                              Decorate 14(input) Location 0
                              Decorate 22(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
              11:             TypeFloat 32
              12:             TypeVector 11(float) 4
              13:             TypePointer Input 12(fvec4)
       14(input):     13(ptr) Variable Input
              17:             TypeBool
              18:             TypeVector 17(bool) 4
              21:             TypePointer Output 12(fvec4)
22(@entryPointOutput):     21(ptr) Variable Output
              30:    17(bool) ConstantFalse
4(PixelShaderFunction):           2 Function None 3
               5:             Label
                              Branch 6
               6:             Label
                              LoopMerge 8 9 None
                              Branch 10
              10:             Label
              15:   12(fvec4) Load 14(input)
              16:   12(fvec4) Load 14(input)
              19:   18(bvec4) FOrdNotEqual 15 16
              20:    17(bool) Any 19
                              BranchConditional 20 7 8
               7:               Label
              23:   12(fvec4)   Load 14(input)
                                Store 22(@entryPointOutput) 23
                                Return
               9:               Label
                                Branch 6
               8:             Label
                              Branch 25
              25:             Label
                              LoopMerge 27 28 None
                              Branch 29
              29:             Label
                              BranchConditional 30 26 27
              26:               Label
                                Branch 28
              28:               Label
                                Branch 25
              27:             Label
                              Branch 31
              31:             Label
                              LoopMerge 33 34 None
                              Branch 35
              35:             Label
                              BranchConditional 30 32 33
              32:               Label
                                Branch 34
              34:               Label
                                Branch 31
              33:             Label
                              Branch 36
              36:             Label
                              LoopMerge 38 39 None
                              Branch 40
              40:             Label
                              BranchConditional 30 37 38
              37:               Label
                                Branch 39
              39:               Label
                                Branch 36
              38:             Label
                              Return
                              FunctionEnd
