spv.8bitstorage-ubo.vert
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 29

                              Capability Shader
                              Capability UniformAndStorageBuffer8BitAccess
                              Extension  "SPV_KHR_8bit_storage"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 20
                              Source GLSL 450
                              SourceExtension  "GL_EXT_shader_8bit_storage"
                              Name 4  "main"
                              Name 9  "color"
                              Name 14  "Vertices"
                              MemberName 14(Vertices) 0  "vertices"
                              Name 16  ""
                              Name 20  "gl_VertexIndex"
                              Decorate 9(color) Location 0
                              Decorate 13 ArrayStride 16
                              MemberDecorate 14(Vertices) 0 Offset 0
                              Decorate 14(Vertices) Block
                              Decorate 16 DescriptorSet 0
                              Decorate 16 Binding 0
                              Decorate 20(gl_VertexIndex) BuiltIn VertexIndex
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
        9(color):      8(ptr) Variable Output
              10:             TypeInt 8 0
              11:             TypeInt 32 0
              12:     11(int) Constant 512
              13:             TypeArray 10(int8_t) 12
    14(Vertices):             TypeStruct 13
              15:             TypePointer Uniform 14(Vertices)
              16:     15(ptr) Variable Uniform
              17:             TypeInt 32 1
              18:     17(int) Constant 0
              19:             TypePointer Input 17(int)
20(gl_VertexIndex):     19(ptr) Variable Input
              22:             TypePointer Uniform 10(int8_t)
         4(main):           2 Function None 3
               5:             Label
              21:     17(int) Load 20(gl_VertexIndex)
              23:     22(ptr) AccessChain 16 18 21
              24:  10(int8_t) Load 23
              25:     11(int) UConvert 24
              26:     17(int) Bitcast 25
              27:    6(float) ConvertSToF 26
              28:    7(fvec4) CompositeConstruct 27 27 27 27
                              Store 9(color) 28
                              Return
                              FunctionEnd
