spv.specConstant.float16.comp
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 18

                              Capability Shader
                              Capability Float16
                              Capability StorageUniformBufferBlock16
                              Extension  "SPV_KHR_16bit_storage"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 450
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_float16"
                              Name 4  "main"
                              Name 7  "Output"
                              MemberName 7(Output) 0  "r0"
                              MemberName 7(Output) 1  "r1"
                              Name 9  "sb_out"
                              Name 12  "sc0"
                              Name 16  "sc1"
                              MemberDecorate 7(Output) 0 NonReadable
                              MemberDecorate 7(Output) 0 Offset 0
                              MemberDecorate 7(Output) 1 NonReadable
                              MemberDecorate 7(Output) 1 Offset 2
                              Decorate 7(Output) BufferBlock
                              Decorate 9(sb_out) DescriptorSet 0
                              Decorate 9(sb_out) Binding 0
                              Decorate 12(sc0) SpecId 1
                              Decorate 16(sc1) SpecId 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 16
       7(Output):             TypeStruct 6(float16_t) 6(float16_t)
               8:             TypePointer Uniform 7(Output)
       9(sb_out):      8(ptr) Variable Uniform
              10:             TypeInt 32 1
              11:     10(int) Constant 0
         12(sc0):6(float16_t) SpecConstant 18624
              13:             TypePointer Uniform 6(float16_t)
              15:     10(int) Constant 1
         16(sc1):6(float16_t) SpecConstant 52000
         4(main):           2 Function None 3
               5:             Label
              14:     13(ptr) AccessChain 9(sb_out) 11
                              Store 14 12(sc0)
              17:     13(ptr) AccessChain 9(sb_out) 15
                              Store 17 16(sc1)
                              Return
                              FunctionEnd
