spv.noBuiltInLoc.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 35

                              Capability Shader
                              Capability AtomicStorage
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 11 18 33 34
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "bar"
                              Name 11  "foo"
                              Name 16  "gl_PerVertex"
                              MemberName 16(gl_PerVertex) 0  "gl_Position"
                              MemberName 16(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 16(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 16(gl_PerVertex) 3  "gl_CullDistance"
                              Name 18  ""
                              Name 24  "uv1"
                              Name 26  "uv2"
                              Name 29  "uv3"
                              Name 31  "a_uint"
                              Name 33  "gl_VertexID"
                              Name 34  "gl_InstanceID"
                              Decorate 9(bar) Location 0
                              Decorate 11(foo) Location 0
                              MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 16(gl_PerVertex) Block
                              Decorate 24(uv1) Location 0
                              Decorate 24(uv1) DescriptorSet 0
                              Decorate 26(uv2) Location 1
                              Decorate 26(uv2) DescriptorSet 0
                              Decorate 29(uv3) Location 2
                              Decorate 29(uv3) DescriptorSet 0
                              Decorate 31(a_uint) Offset 0
                              Decorate 31(a_uint) DescriptorSet 0
                              Decorate 31(a_uint) Binding 0
                              Decorate 33(gl_VertexID) BuiltIn VertexId
                              Decorate 34(gl_InstanceID) BuiltIn InstanceId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
          9(bar):      8(ptr) Variable Output
              10:             TypePointer Input 7(fvec4)
         11(foo):     10(ptr) Variable Input
              13:             TypeInt 32 0
              14:     13(int) Constant 1
              15:             TypeArray 6(float) 14
16(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 15 15
              17:             TypePointer Output 16(gl_PerVertex)
              18:     17(ptr) Variable Output
              19:             TypeInt 32 1
              20:     19(int) Constant 0
              23:             TypePointer UniformConstant 7(fvec4)
         24(uv1):     23(ptr) Variable UniformConstant
              25:             TypePointer UniformConstant 6(float)
         26(uv2):     25(ptr) Variable UniformConstant
              27:             TypeVector 6(float) 3
              28:             TypePointer UniformConstant 27(fvec3)
         29(uv3):     28(ptr) Variable UniformConstant
              30:             TypePointer AtomicCounter 13(int)
      31(a_uint):     30(ptr) Variable AtomicCounter
              32:             TypePointer Input 19(int)
 33(gl_VertexID):     32(ptr) Variable Input
34(gl_InstanceID):     32(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              12:    7(fvec4) Load 11(foo)
                              Store 9(bar) 12
              21:    7(fvec4) Load 11(foo)
              22:      8(ptr) AccessChain 18 20
                              Store 22 21
                              Return
                              FunctionEnd
