               OpCapability GenericPointer
               OpCapability Linkage
               OpCapability Addresses
               OpCapability Kernel
               OpCapability Int8
               OpCapability Int16
               OpCapability Int64
               OpCapability Float16
               OpCapability Float64
         %61 = OpExtInstImport "OpenCL.std"
               OpMemoryModel Physical64 OpenCL
               OpEntryPoint Kernel %1 "vector_extract"
       %void = OpTypeVoid
      %ulong = OpTypeInt 64 0
         %64 = OpTypeFunction %void %ulong %ulong
%_ptr_Function_ulong = OpTypePointer Function %ulong
     %ushort = OpTypeInt 16 0
%_ptr_Function_ushort = OpTypePointer Function %ushort
   %v4ushort = OpTypeVector %ushort 4
%_ptr_Function_v4ushort = OpTypePointer Function %v4ushort
      %uchar = OpTypeInt 8 0
    %v4uchar = OpTypeVector %uchar 4
%_ptr_CrossWorkgroup_v4uchar = OpTypePointer CrossWorkgroup %v4uchar
          %1 = OpFunction %void None %64
         %17 = OpFunctionParameter %ulong
         %18 = OpFunctionParameter %ulong
         %59 = OpLabel
          %2 = OpVariable %_ptr_Function_ulong Function
          %3 = OpVariable %_ptr_Function_ulong Function
          %4 = OpVariable %_ptr_Function_ulong Function
          %5 = OpVariable %_ptr_Function_ulong Function
          %6 = OpVariable %_ptr_Function_ushort Function
          %7 = OpVariable %_ptr_Function_ushort Function
          %8 = OpVariable %_ptr_Function_ushort Function
          %9 = OpVariable %_ptr_Function_ushort Function
         %10 = OpVariable %_ptr_Function_v4ushort Function
               OpStore %2 %17
               OpStore %3 %18
         %19 = OpLoad %ulong %2 Aligned 8
               OpStore %4 %19
         %20 = OpLoad %ulong %3 Aligned 8
               OpStore %5 %20
         %21 = OpLoad %ulong %4
         %49 = OpConvertUToPtr %_ptr_CrossWorkgroup_v4uchar %21
         %11 = OpLoad %v4uchar %49 Aligned 4
         %50 = OpCompositeExtract %uchar %11 0
         %51 = OpCompositeExtract %uchar %11 1
         %52 = OpCompositeExtract %uchar %11 2
         %53 = OpCompositeExtract %uchar %11 3
         %73 = OpBitcast %uchar %50
         %22 = OpUConvert %ushort %73
         %74 = OpBitcast %uchar %51
         %23 = OpUConvert %ushort %74
         %75 = OpBitcast %uchar %52
         %24 = OpUConvert %ushort %75
         %76 = OpBitcast %uchar %53
         %25 = OpUConvert %ushort %76
               OpStore %6 %22
               OpStore %7 %23
               OpStore %8 %24
               OpStore %9 %25
         %26 = OpLoad %ushort %7
         %27 = OpLoad %ushort %8
         %28 = OpLoad %ushort %9
         %29 = OpLoad %ushort %6
         %77 = OpUndef %v4ushort
         %78 = OpCompositeInsert %v4ushort %26 %77 0
         %79 = OpCompositeInsert %v4ushort %27 %78 1
         %80 = OpCompositeInsert %v4ushort %28 %79 2
         %81 = OpCompositeInsert %v4ushort %29 %80 3
         %12 = OpCopyObject %v4ushort %81
         %30 = OpCopyObject %v4ushort %12
               OpStore %10 %30
         %31 = OpLoad %v4ushort %10
         %13 = OpCopyObject %v4ushort %31
         %32 = OpCompositeExtract %ushort %13 0
         %33 = OpCompositeExtract %ushort %13 1
         %34 = OpCompositeExtract %ushort %13 2
         %35 = OpCompositeExtract %ushort %13 3
               OpStore %8 %32
               OpStore %9 %33
               OpStore %6 %34
               OpStore %7 %35
         %36 = OpLoad %ushort %8
         %37 = OpLoad %ushort %9
         %38 = OpLoad %ushort %6
         %39 = OpLoad %ushort %7
         %82 = OpUndef %v4ushort
         %83 = OpCompositeInsert %v4ushort %36 %82 0
         %84 = OpCompositeInsert %v4ushort %37 %83 1
         %85 = OpCompositeInsert %v4ushort %38 %84 2
         %86 = OpCompositeInsert %v4ushort %39 %85 3
         %15 = OpCopyObject %v4ushort %86
         %14 = OpCopyObject %v4ushort %15
         %40 = OpCompositeExtract %ushort %14 0
         %41 = OpCompositeExtract %ushort %14 1
         %42 = OpCompositeExtract %ushort %14 2
         %43 = OpCompositeExtract %ushort %14 3
               OpStore %9 %40
               OpStore %6 %41
               OpStore %7 %42
               OpStore %8 %43
         %44 = OpLoad %ushort %6
         %45 = OpLoad %ushort %7
         %46 = OpLoad %ushort %8
         %47 = OpLoad %ushort %9
         %87 = OpBitcast %ushort %44
         %54 = OpUConvert %uchar %87
         %88 = OpBitcast %ushort %45
         %55 = OpUConvert %uchar %88
         %89 = OpBitcast %ushort %46
         %56 = OpUConvert %uchar %89
         %90 = OpBitcast %ushort %47
         %57 = OpUConvert %uchar %90
         %91 = OpUndef %v4uchar
         %92 = OpCompositeInsert %v4uchar %54 %91 0
         %93 = OpCompositeInsert %v4uchar %55 %92 1
         %94 = OpCompositeInsert %v4uchar %56 %93 2
         %95 = OpCompositeInsert %v4uchar %57 %94 3
         %16 = OpCopyObject %v4uchar %95
         %48 = OpLoad %ulong %5
         %58 = OpConvertUToPtr %_ptr_CrossWorkgroup_v4uchar %48
               OpStore %58 %16 Aligned 4
               OpReturn
               OpFunctionEnd
