spv.for-continue-break.vert

Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 49

                              Source ESSL 300
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 9  "i"
                              Name 18  "A"
                              Name 26  "B"
                              Name 30  "C"
                              Name 37  "D"
                              Name 39  "E"
                              Name 40  "F"
                              Name 44  "G"
                              Name 47  "gl_VertexID"
                              Name 48  "gl_InstanceID"
                              Decorate 47(gl_VertexID) BuiltIn VertexId
                              Decorate 47(gl_VertexID) NoStaticUse
                              Decorate 48(gl_InstanceID) BuiltIn InstanceId
                              Decorate 48(gl_InstanceID) NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeInt 32 1
               8:             TypePointer Function 7(int)
              10:      7(int) Constant 0
              15:      7(int) Constant 10
              16:             TypeBool
              19:      7(int) Constant 1
              21:      7(int) Constant 2
              32:      7(int) Constant 3
              41:      7(int) Constant 12
              45:      7(int) Constant 99
              46:             TypePointer Input 7(int)
 47(gl_VertexID):     46(ptr) Variable Input
48(gl_InstanceID):     46(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
            9(i):      8(ptr) Variable Function
           18(A):      8(ptr) Variable Function
           26(B):      8(ptr) Variable Function
           30(C):      8(ptr) Variable Function
           37(D):      8(ptr) Variable Function
           39(E):      8(ptr) Variable Function
           40(F):      8(ptr) Variable Function
           44(G):      8(ptr) Variable Function
                              Store 9(i) 10
                              Branch 11
              11:             Label
              14:      7(int) Load 9(i)
              17:    16(bool) SLessThan 14 15
                              LoopMerge 12 None
                              BranchConditional 17 13 12
              13:               Label
                                Store 18(A) 19
              20:      7(int)   Load 9(i)
              22:      7(int)   SMod 20 21
              23:    16(bool)   IEqual 22 10
                                SelectionMerge 25 None
                                BranchConditional 23 24 25
              24:                 Label
                                  Store 26(B) 19
              27:      7(int)     Load 9(i)
              28:      7(int)     IAdd 27 19
                                  Store 9(i) 28
                                  Branch 11
              29:                 Label
                                  Store 30(C) 19
                                  Branch 25
              25:               Label
              31:      7(int)   Load 9(i)
              33:      7(int)   SMod 31 32
              34:    16(bool)   IEqual 33 10
                                SelectionMerge 36 None
                                BranchConditional 34 35 36
              35:                 Label
                                  Store 37(D) 19
                                  Branch 12
              38:                 Label
                                  Store 39(E) 19
                                  Branch 36
              36:               Label
                                Store 40(F) 41
              42:      7(int)   Load 9(i)
              43:      7(int)   IAdd 42 19
                                Store 9(i) 43
                                Branch 11
              12:             Label
                              Store 44(G) 45
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
