spv.doWhileLoop.frag

Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 11 17 27 32
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "color"
                              Name 11  "BaseColor"
                              Name 17  "bigColor"
                              Name 27  "d"
                              Name 32  "gl_FragColor"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypePointer Input 7(fvec4)
   11(BaseColor):     10(ptr) Variable Input
    17(bigColor):     10(ptr) Variable Input
              21:             TypeInt 32 0
              22:     21(int) Constant 0
              23:             TypePointer Function 6(float)
              26:             TypePointer Input 6(float)
           27(d):     26(ptr) Variable Input
              29:             TypeBool
              31:             TypePointer Output 7(fvec4)
32(gl_FragColor):     31(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
        9(color):      8(ptr) Variable Function
              12:    7(fvec4) Load 11(BaseColor)
                              Store 9(color) 12
                              Branch 13
              13:             Label
                              LoopMerge 15 16 None
                              Branch 14
              14:             Label
              18:    7(fvec4) Load 17(bigColor)
              19:    7(fvec4) Load 9(color)
              20:    7(fvec4) FAdd 19 18
                              Store 9(color) 20
                              Branch 16
              16:             Label
              24:     23(ptr) AccessChain 9(color) 22
              25:    6(float) Load 24
              28:    6(float) Load 27(d)
              30:    29(bool) FOrdLessThan 25 28
                              BranchConditional 30 13 15
              15:             Label
              33:    7(fvec4) Load 9(color)
                              Store 32(gl_FragColor) 33
                              Return
                              FunctionEnd
