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

                              Capability Shader
                              Capability ShaderSMBuiltinsNV
                              Extension  "SPV_NV_shader_sm_builtins"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 9 11 13 15 17
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_NV_shader_sm_builtins"
                              Name 4  "main"
                              Name 9  "data"
                              Name 11  "gl_WarpsPerSMNV"
                              Name 13  "gl_SMCountNV"
                              Name 15  "gl_WarpIDNV"
                              Name 17  "gl_SMIDNV"
                              Decorate 9(data) Location 0
                              Decorate 11(gl_WarpsPerSMNV) Flat
                              Decorate 11(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV
                              Decorate 13(gl_SMCountNV) Flat
                              Decorate 13(gl_SMCountNV) BuiltIn SMCountNV
                              Decorate 15(gl_WarpIDNV) Flat
                              Decorate 15(gl_WarpIDNV) BuiltIn WarpIDNV
                              Decorate 17(gl_SMIDNV) Flat
                              Decorate 17(gl_SMIDNV) BuiltIn SMIDNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 4
               8:             TypePointer Output 7(ivec4)
         9(data):      8(ptr) Variable Output
              10:             TypePointer Input 6(int)
11(gl_WarpsPerSMNV):     10(ptr) Variable Input
13(gl_SMCountNV):     10(ptr) Variable Input
 15(gl_WarpIDNV):     10(ptr) Variable Input
   17(gl_SMIDNV):     10(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              12:      6(int) Load 11(gl_WarpsPerSMNV)
              14:      6(int) Load 13(gl_SMCountNV)
              16:      6(int) Load 15(gl_WarpIDNV)
              18:      6(int) Load 17(gl_SMIDNV)
              19:    7(ivec4) CompositeConstruct 12 14 16 18
                              Store 9(data) 19
                              Return
                              FunctionEnd
