spv.intrinsicsSpirvExecutionMode.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 12

                              Capability Shader
                              Capability StencilExportEXT
                              Extension  "SPV_EXT_shader_stencil_export"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 8 10
                              ExecutionMode 4 OriginUpperLeft
                              ExecutionMode 4 StencilRefReplacingEXT
                              Source GLSL 450
                              SourceExtension  "GL_EXT_spirv_intrinsics"
                              Name 4  "main"
                              Name 8  "gl_FragStencilRef"
                              Name 10  "color"
                              Decorate 8(gl_FragStencilRef) BuiltIn FragStencilRefEXT
                              Decorate 10(color) Flat
                              Decorate 10(color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Output 6(int)
8(gl_FragStencilRef):      7(ptr) Variable Output
               9:             TypePointer Input 6(int)
       10(color):      9(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              11:      6(int) Load 10(color)
                              Store 8(gl_FragStencilRef) 11
                              Return
                              FunctionEnd
