spv.1.3.8bitstorage-ssbo.vert
// Module Version 10300
// Generated by (magic number): 80008
// Id's are bound by 28

                              Capability Shader
                              Capability StorageBuffer8BitAccess
                              Extension  "SPV_KHR_8bit_storage"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 18
                              Source GLSL 450
                              SourceExtension  "GL_EXT_shader_8bit_storage"
                              Name 4  "main"
                              Name 9  "color"
                              Name 12  "Vertices"
                              MemberName 12(Vertices) 0  "vertices"
                              Name 14  ""
                              Name 18  "gl_VertexIndex"
                              Decorate 9(color) Location 0
                              Decorate 11 ArrayStride 1
                              MemberDecorate 12(Vertices) 0 NonWritable
                              MemberDecorate 12(Vertices) 0 Offset 0
                              Decorate 12(Vertices) Block
                              Decorate 14 DescriptorSet 0
                              Decorate 14 Binding 0
                              Decorate 18(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:             TypeRuntimeArray 10(int8_t)
    12(Vertices):             TypeStruct 11
              13:             TypePointer StorageBuffer 12(Vertices)
              14:     13(ptr) Variable StorageBuffer
              15:             TypeInt 32 1
              16:     15(int) Constant 0
              17:             TypePointer Input 15(int)
18(gl_VertexIndex):     17(ptr) Variable Input
              20:             TypePointer StorageBuffer 10(int8_t)
              23:             TypeInt 32 0
         4(main):           2 Function None 3
               5:             Label
              19:     15(int) Load 18(gl_VertexIndex)
              21:     20(ptr) AccessChain 14 16 19
              22:  10(int8_t) Load 21
              24:     23(int) UConvert 22
              25:     15(int) Bitcast 24
              26:    6(float) ConvertSToF 25
              27:    7(fvec4) CompositeConstruct 26 26 26 26
                              Store 9(color) 27
                              Return
                              FunctionEnd
