spv.drawParams.vert
// Module Version 10300
// Generated by (magic number): 80008
// Id's are bound by 29

                              Capability Shader
                              Capability DrawParameters
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 10 13 16 21
                              Source GLSL 450
                              SourceExtension  "GL_ARB_shader_draw_parameters"
                              Name 4  "main"
                              Name 8  "a"
                              Name 10  "gl_BaseVertexARB"
                              Name 12  "b"
                              Name 13  "gl_BaseInstanceARB"
                              Name 15  "c"
                              Name 16  "gl_DrawIDARB"
                              Name 21  "pos"
                              Decorate 10(gl_BaseVertexARB) BuiltIn BaseVertex
                              Decorate 13(gl_BaseInstanceARB) BuiltIn BaseInstance
                              Decorate 16(gl_DrawIDARB) BuiltIn DrawIndex
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               9:             TypePointer Input 6(int)
10(gl_BaseVertexARB):      9(ptr) Variable Input
13(gl_BaseInstanceARB):      9(ptr) Variable Input
16(gl_DrawIDARB):      9(ptr) Variable Input
              18:             TypeFloat 32
              19:             TypeVector 18(float) 3
              20:             TypePointer Output 19(fvec3)
         21(pos):     20(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
            8(a):      7(ptr) Variable Function
           12(b):      7(ptr) Variable Function
           15(c):      7(ptr) Variable Function
              11:      6(int) Load 10(gl_BaseVertexARB)
                              Store 8(a) 11
              14:      6(int) Load 13(gl_BaseInstanceARB)
                              Store 12(b) 14
              17:      6(int) Load 16(gl_DrawIDARB)
                              Store 15(c) 17
              22:      6(int) Load 8(a)
              23:   18(float) ConvertSToF 22
              24:      6(int) Load 12(b)
              25:   18(float) ConvertSToF 24
              26:      6(int) Load 15(c)
              27:   18(float) ConvertSToF 26
              28:   19(fvec3) CompositeConstruct 23 25 27
                              Store 21(pos) 28
                              Return
                              FunctionEnd
