spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 25

                              Capability Shader
                              Capability Float16
                              Capability Int16
                              Capability WorkgroupMemoryExplicitLayoutKHR
                              Capability WorkgroupMemoryExplicitLayout16BitAccessKHR
                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 10
                              ExecutionMode 4 LocalSize 2 1 1
                              Source GLSL 430
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types"
                              SourceExtension  "GL_EXT_shared_memory_block"
                              Name 4  "main"
                              Name 8  "first"
                              MemberName 8(first) 0  "a"
                              MemberName 8(first) 1  "f"
                              Name 10  ""
                              Decorate 8(first) Block
                              MemberDecorate 8(first) 0 Offset 0
                              MemberDecorate 8(first) 1 Offset 2
                              Decorate 24 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 16 1
               7:             TypeFloat 16
        8(first):             TypeStruct 6(int16_t) 7(float16_t)
               9:             TypePointer Workgroup 8(first)
              10:      9(ptr) Variable Workgroup
              11:             TypeInt 32 1
              12:     11(int) Constant 0
              13:  6(int16_t) Constant 3
              14:             TypePointer Workgroup 6(int16_t)
              16:     11(int) Constant 1
              17:7(float16_t) Constant 18982
              18:             TypePointer Workgroup 7(float16_t)
              20:             TypeInt 32 0
              21:             TypeVector 20(int) 3
              22:     20(int) Constant 2
              23:     20(int) Constant 1
              24:   21(ivec3) ConstantComposite 22 23 23
         4(main):           2 Function None 3
               5:             Label
              15:     14(ptr) AccessChain 10 12
                              Store 15 13
              19:     18(ptr) AccessChain 10 16
                              Store 19 17
                              Return
                              FunctionEnd
