spv.while-simple.vert

Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 24

                              Source ESSL 300
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 9  "i"
                              Name 22  "gl_VertexID"
                              Name 23  "gl_InstanceID"
                              Decorate 22(gl_VertexID) BuiltIn VertexId
                              Decorate 22(gl_VertexID) NoStaticUse
                              Decorate 23(gl_InstanceID) BuiltIn InstanceId
                              Decorate 23(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:             TypePointer Input 7(int)
 22(gl_VertexID):     21(ptr) Variable Input
23(gl_InstanceID):     21(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
            9(i):      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
              18:      7(int)   Load 9(i)
              20:      7(int)   IAdd 18 19
                                Store 9(i) 20
                                Branch 11
              12:             Label
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
