spv.builtInXFB.vert
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 21

                              Capability Shader
                              Capability TransformFeedback
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 10
                              ExecutionMode 4 Xfb
                              Source GLSL 450
                              Name 4  "main"
                              Name 8  "gl_PerVertex"
                              MemberName 8(gl_PerVertex) 0  "gl_Position"
                              MemberName 8(gl_PerVertex) 1  "gl_PointSize"
                              Name 10  ""
                              MemberDecorate 8(gl_PerVertex) 0 Offset 20
                              MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 8(gl_PerVertex) 1 Offset 16
                              MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize
                              Decorate 8(gl_PerVertex) Block
                              Decorate 10 XfbBuffer 1
                              Decorate 10 XfbStride 64
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
 8(gl_PerVertex):             TypeStruct 7(fvec4) 6(float)
               9:             TypePointer Output 8(gl_PerVertex)
              10:      9(ptr) Variable Output
              11:             TypeInt 32 1
              12:     11(int) Constant 0
              13:    6(float) Constant 1065353216
              14:    7(fvec4) ConstantComposite 13 13 13 13
              15:             TypePointer Output 7(fvec4)
              17:     11(int) Constant 1
              18:    6(float) Constant 1073741824
              19:             TypePointer Output 6(float)
         4(main):           2 Function None 3
               5:             Label
              16:     15(ptr) AccessChain 10 12
                              Store 16 14
              20:     19(ptr) AccessChain 10 17
                              Store 20 18
                              Return
                              FunctionEnd
