spv.vulkan110.storageBuffer.vert
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 31

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 13
                              Source GLSL 450
                              Name 4  "main"
                              Name 11  "gl_PerVertex"
                              MemberName 11(gl_PerVertex) 0  "gl_Position"
                              MemberName 11(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 11(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 11(gl_PerVertex) 3  "gl_CullDistance"
                              Name 13  ""
                              Name 16  "ub"
                              MemberName 16(ub) 0  "a"
                              Name 18  "ubi"
                              Name 22  "bb"
                              MemberName 22(bb) 0  "b"
                              Name 24  "bbi"
                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 11(gl_PerVertex) Block
                              MemberDecorate 16(ub) 0 Offset 0
                              Decorate 16(ub) Block
                              Decorate 18(ubi) DescriptorSet 0
                              MemberDecorate 22(bb) 0 Offset 0
                              Decorate 22(bb) Block
                              Decorate 24(bbi) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 0
               9:      8(int) Constant 1
              10:             TypeArray 6(float) 9
11(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10 10
              12:             TypePointer Output 11(gl_PerVertex)
              13:     12(ptr) Variable Output
              14:             TypeInt 32 1
              15:     14(int) Constant 0
          16(ub):             TypeStruct 7(fvec4)
              17:             TypePointer Uniform 16(ub)
         18(ubi):     17(ptr) Variable Uniform
              19:             TypePointer Uniform 7(fvec4)
          22(bb):             TypeStruct 7(fvec4)
              23:             TypePointer StorageBuffer 22(bb)
         24(bbi):     23(ptr) Variable StorageBuffer
              25:             TypePointer StorageBuffer 7(fvec4)
              29:             TypePointer Output 7(fvec4)
         4(main):           2 Function None 3
               5:             Label
              20:     19(ptr) AccessChain 18(ubi) 15
              21:    7(fvec4) Load 20
              26:     25(ptr) AccessChain 24(bbi) 15
              27:    7(fvec4) Load 26
              28:    7(fvec4) FAdd 21 27
              30:     29(ptr) AccessChain 13 15
                              Store 30 28
                              Return
                              FunctionEnd
