spv.16bitxfb.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 59

                              Capability Shader
                              Capability Float16
                              Capability Int16
                              Capability TransformFeedback
                              Capability StorageInputOutput16
                              Extension  "SPV_KHR_16bit_storage"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 12 18 36 39 46 49
                              ExecutionMode 4 Xfb
                              Source GLSL 450
                              SourceExtension  "GL_AMD_gpu_shader_half_float"
                              SourceExtension  "GL_AMD_gpu_shader_int16"
                              Name 4  "main"
                              Name 9  "of16v3"
                              Name 12  "if16v4"
                              Name 16  "F16Out"
                              MemberName 16(F16Out) 0  "of16"
                              MemberName 16(F16Out) 1  "of16v2"
                              Name 18  ""
                              Name 36  "oi16v3"
                              Name 39  "ii16v4"
                              Name 44  "I16Out"
                              MemberName 44(I16Out) 0  "ou16"
                              MemberName 44(I16Out) 1  "ou16v2"
                              Name 46  ""
                              Name 49  "iu16v4"
                              Decorate 9(of16v3) Location 0
                              Decorate 9(of16v3) XfbBuffer 0
                              Decorate 9(of16v3) XfbStride 6
                              Decorate 9(of16v3) Offset 0
                              Decorate 12(if16v4) Location 0
                              MemberDecorate 16(F16Out) 0 Offset 0
                              MemberDecorate 16(F16Out) 1 Offset 2
                              Decorate 16(F16Out) Block
                              Decorate 18 Location 1
                              Decorate 18 XfbBuffer 1
                              Decorate 18 XfbStride 6
                              Decorate 36(oi16v3) Location 5
                              Decorate 36(oi16v3) XfbBuffer 2
                              Decorate 36(oi16v3) XfbStride 6
                              Decorate 36(oi16v3) Offset 0
                              Decorate 39(ii16v4) Location 1
                              MemberDecorate 44(I16Out) 0 Offset 0
                              MemberDecorate 44(I16Out) 1 Offset 2
                              Decorate 44(I16Out) Block
                              Decorate 46 Location 6
                              Decorate 46 XfbBuffer 3
                              Decorate 46 XfbStride 6
                              Decorate 49(iu16v4) Location 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 16
               7:             TypeVector 6(float16_t) 3
               8:             TypePointer Output 7(f16vec3)
       9(of16v3):      8(ptr) Variable Output
              10:             TypeVector 6(float16_t) 4
              11:             TypePointer Input 10(f16vec4)
      12(if16v4):     11(ptr) Variable Input
              15:             TypeVector 6(float16_t) 2
      16(F16Out):             TypeStruct 6(float16_t) 15(f16vec2)
              17:             TypePointer Output 16(F16Out)
              18:     17(ptr) Variable Output
              19:             TypeInt 32 1
              20:     19(int) Constant 0
              21:             TypeInt 32 0
              22:     21(int) Constant 0
              23:             TypePointer Input 6(float16_t)
              26:             TypePointer Output 6(float16_t)
              28:     19(int) Constant 1
              31:             TypePointer Output 15(f16vec2)
              33:             TypeInt 16 1
              34:             TypeVector 33(int16_t) 3
              35:             TypePointer Output 34(i16vec3)
      36(oi16v3):     35(ptr) Variable Output
              37:             TypeVector 33(int16_t) 4
              38:             TypePointer Input 37(i16vec4)
      39(ii16v4):     38(ptr) Variable Input
              42:             TypeInt 16 0
              43:             TypeVector 42(int16_t) 2
      44(I16Out):             TypeStruct 42(int16_t) 43(i16vec2)
              45:             TypePointer Output 44(I16Out)
              46:     45(ptr) Variable Output
              47:             TypeVector 42(int16_t) 4
              48:             TypePointer Input 47(i16vec4)
      49(iu16v4):     48(ptr) Variable Input
              50:             TypePointer Input 42(int16_t)
              53:             TypePointer Output 42(int16_t)
              57:             TypePointer Output 43(i16vec2)
         4(main):           2 Function None 3
               5:             Label
              13: 10(f16vec4) Load 12(if16v4)
              14:  7(f16vec3) VectorShuffle 13 13 0 1 2
                              Store 9(of16v3) 14
              24:     23(ptr) AccessChain 12(if16v4) 22
              25:6(float16_t) Load 24
              27:     26(ptr) AccessChain 18 20
                              Store 27 25
              29: 10(f16vec4) Load 12(if16v4)
              30: 15(f16vec2) VectorShuffle 29 29 0 1
              32:     31(ptr) AccessChain 18 28
                              Store 32 30
              40: 37(i16vec4) Load 39(ii16v4)
              41: 34(i16vec3) VectorShuffle 40 40 0 1 2
                              Store 36(oi16v3) 41
              51:     50(ptr) AccessChain 49(iu16v4) 22
              52: 42(int16_t) Load 51
              54:     53(ptr) AccessChain 46 20
                              Store 54 52
              55: 47(i16vec4) Load 49(iu16v4)
              56: 43(i16vec2) VectorShuffle 55 55 0 1
              58:     57(ptr) AccessChain 46 28
                              Store 58 56
                              Return
                              FunctionEnd
