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

                              Capability Shader
                              Capability ShaderSMBuiltinsNV
                              Extension  "SPV_NV_shader_sm_builtins"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 15 18 20 22 24
                              Source GLSL 450
                              SourceExtension  "GL_NV_shader_sm_builtins"
                              Name 4  "main"
                              Name 9  "Output"
                              MemberName 9(Output) 0  "result"
                              Name 11  ""
                              Name 15  "gl_VertexIndex"
                              Name 18  "gl_WarpsPerSMNV"
                              Name 20  "gl_SMCountNV"
                              Name 22  "gl_WarpIDNV"
                              Name 24  "gl_SMIDNV"
                              Decorate 8 ArrayStride 16
                              MemberDecorate 9(Output) 0 Offset 0
                              Decorate 9(Output) BufferBlock
                              Decorate 11 DescriptorSet 0
                              Decorate 11 Binding 0
                              Decorate 15(gl_VertexIndex) BuiltIn VertexIndex
                              Decorate 18(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV
                              Decorate 20(gl_SMCountNV) BuiltIn SMCountNV
                              Decorate 22(gl_WarpIDNV) BuiltIn WarpIDNV
                              Decorate 24(gl_SMIDNV) BuiltIn SMIDNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 4
               8:             TypeRuntimeArray 7(ivec4)
       9(Output):             TypeStruct 8
              10:             TypePointer Uniform 9(Output)
              11:     10(ptr) Variable Uniform
              12:             TypeInt 32 1
              13:     12(int) Constant 0
              14:             TypePointer Input 12(int)
15(gl_VertexIndex):     14(ptr) Variable Input
              17:             TypePointer Input 6(int)
18(gl_WarpsPerSMNV):     17(ptr) Variable Input
20(gl_SMCountNV):     17(ptr) Variable Input
 22(gl_WarpIDNV):     17(ptr) Variable Input
   24(gl_SMIDNV):     17(ptr) Variable Input
              27:             TypePointer Uniform 7(ivec4)
         4(main):           2 Function None 3
               5:             Label
              16:     12(int) Load 15(gl_VertexIndex)
              19:      6(int) Load 18(gl_WarpsPerSMNV)
              21:      6(int) Load 20(gl_SMCountNV)
              23:      6(int) Load 22(gl_WarpIDNV)
              25:      6(int) Load 24(gl_SMIDNV)
              26:    7(ivec4) CompositeConstruct 19 21 23 25
              28:     27(ptr) AccessChain 11 13 16
                              Store 28 26
                              Return
                              FunctionEnd
