               OpCapability GenericPointer
               OpCapability Linkage
               OpCapability Addresses
               OpCapability Kernel
               OpCapability Int8
               OpCapability Int16
               OpCapability Int64
               OpCapability Float16
               OpCapability Float64
               OpCapability DenormFlushToZero
         %39 = OpExtInstImport "OpenCL.std"
               OpMemoryModel Physical64 OpenCL
               OpEntryPoint Kernel %12 "func_ptr"
               OpExecutionMode %12 ContractionOff
               OpDecorate %12 LinkageAttributes "func_ptr" Export
       %void = OpTypeVoid
      %float = OpTypeFloat 32
         %42 = OpTypeFunction %float %float %float
%_ptr_Function_float = OpTypePointer Function %float
      %ulong = OpTypeInt 64 0
         %45 = OpTypeFunction %void %ulong %ulong
%_ptr_Function_ulong = OpTypePointer Function %ulong
%_ptr_Generic_ulong = OpTypePointer Generic %ulong
    %ulong_1 = OpConstant %ulong 1
    %ulong_0 = OpConstant %ulong 0
          %1 = OpFunction %float None %42
          %5 = OpFunctionParameter %float
          %6 = OpFunctionParameter %float
         %11 = OpLabel
          %3 = OpVariable %_ptr_Function_float Function
          %4 = OpVariable %_ptr_Function_float Function
          %2 = OpVariable %_ptr_Function_float Function
               OpStore %3 %5
               OpStore %4 %6
          %8 = OpLoad %float %3
          %9 = OpLoad %float %4
          %7 = OpFAdd %float %8 %9
               OpStore %2 %7
         %10 = OpLoad %float %2
               OpReturnValue %10
               OpFunctionEnd
         %12 = OpFunction %void None %45
         %20 = OpFunctionParameter %ulong
         %21 = OpFunctionParameter %ulong
         %37 = OpLabel
         %13 = OpVariable %_ptr_Function_ulong Function
         %14 = OpVariable %_ptr_Function_ulong Function
         %15 = OpVariable %_ptr_Function_ulong Function
         %16 = OpVariable %_ptr_Function_ulong Function
         %17 = OpVariable %_ptr_Function_ulong Function
         %18 = OpVariable %_ptr_Function_ulong Function
         %19 = OpVariable %_ptr_Function_ulong Function
               OpStore %13 %20
               OpStore %14 %21
         %22 = OpLoad %ulong %13 Aligned 8
               OpStore %15 %22
         %23 = OpLoad %ulong %14 Aligned 8
               OpStore %16 %23
         %25 = OpLoad %ulong %15
         %35 = OpConvertUToPtr %_ptr_Generic_ulong %25
         %24 = OpLoad %ulong %35 Aligned 8
               OpStore %17 %24
         %27 = OpLoad %ulong %17
         %26 = OpIAdd %ulong %27 %ulong_1
               OpStore %18 %26
         %28 = OpCopyObject %ulong %ulong_0
               OpStore %19 %28
         %30 = OpLoad %ulong %18
         %31 = OpLoad %ulong %19
         %29 = OpIAdd %ulong %30 %31
               OpStore %18 %29
         %32 = OpLoad %ulong %16
         %33 = OpLoad %ulong %18
         %36 = OpConvertUToPtr %_ptr_Generic_ulong %32
               OpStore %36 %33 Aligned 8
               OpReturn
               OpFunctionEnd
