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

                              Capability Shader
                              Capability SampleRateShading
                              Extension  "SPV_NV_sample_mask_override_coverage"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 11 19
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_NV_sample_mask_override_coverage"
                              Name 4  "main"
                              Name 11  "gl_SampleMask"
                              Name 19  "color"
                              Decorate 11(gl_SampleMask) BuiltIn SampleMask
                              Decorate 11(gl_SampleMask) OverrideCoverageNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeInt 32 0
               8:      7(int) Constant 1
               9:             TypeArray 6(int) 8
              10:             TypePointer Output 9
11(gl_SampleMask):     10(ptr) Variable Output
              12:      6(int) Constant 0
              13:      6(int) Constant 4294967295
              14:             TypePointer Output 6(int)
              16:             TypeFloat 32
              17:             TypeVector 16(float) 4
              18:             TypePointer Input 17(fvec4)
       19(color):     18(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              15:     14(ptr) AccessChain 11(gl_SampleMask) 12
                              Store 15 13
                              Return
                              FunctionEnd
