               OpCapability GenericPointer
               OpCapability Linkage
               OpCapability Addresses
               OpCapability Kernel
               OpCapability Int8
               OpCapability Int16
               OpCapability Int64
               OpCapability Float16
               OpCapability Float64
         %46 = OpExtInstImport "OpenCL.std"
               OpMemoryModel Physical64 OpenCL
               OpEntryPoint Kernel %1 "mad_s32"
       %void = OpTypeVoid
      %ulong = OpTypeInt 64 0
         %49 = OpTypeFunction %void %ulong %ulong
%_ptr_Function_ulong = OpTypePointer Function %ulong
       %uint = OpTypeInt 32 0
%_ptr_Function_uint = OpTypePointer Function %uint
%_ptr_Generic_uint = OpTypePointer Generic %uint
    %ulong_4 = OpConstant %ulong 4
      %uchar = OpTypeInt 8 0
%_ptr_Generic_uchar = OpTypePointer Generic %uchar
    %ulong_8 = OpConstant %ulong 8
  %ulong_4_0 = OpConstant %ulong 4
  %ulong_8_0 = OpConstant %ulong 8
          %1 = OpFunction %void None %49
         %10 = OpFunctionParameter %ulong
         %11 = OpFunctionParameter %ulong
         %44 = 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_uint Function
          %7 = OpVariable %_ptr_Function_uint Function
          %8 = OpVariable %_ptr_Function_uint Function
          %9 = OpVariable %_ptr_Function_uint Function
               OpStore %2 %10
               OpStore %3 %11
         %12 = OpLoad %ulong %2 Aligned 8
               OpStore %4 %12
         %13 = OpLoad %ulong %3 Aligned 8
               OpStore %5 %13
         %15 = OpLoad %ulong %4
         %38 = OpConvertUToPtr %_ptr_Generic_uint %15
         %14 = OpLoad %uint %38 Aligned 4
               OpStore %7 %14
         %17 = OpLoad %ulong %4
         %39 = OpConvertUToPtr %_ptr_Generic_uint %17
         %56 = OpBitcast %_ptr_Generic_uchar %39
         %57 = OpInBoundsPtrAccessChain %_ptr_Generic_uchar %56 %ulong_4
         %31 = OpBitcast %_ptr_Generic_uint %57
         %16 = OpLoad %uint %31 Aligned 4
               OpStore %8 %16
         %19 = OpLoad %ulong %4
         %40 = OpConvertUToPtr %_ptr_Generic_uint %19
         %58 = OpBitcast %_ptr_Generic_uchar %40
         %59 = OpInBoundsPtrAccessChain %_ptr_Generic_uchar %58 %ulong_8
         %33 = OpBitcast %_ptr_Generic_uint %59
         %18 = OpLoad %uint %33 Aligned 4
               OpStore %9 %18
         %21 = OpLoad %uint %7
         %22 = OpLoad %uint %8
         %23 = OpLoad %uint %9
         %60 = OpIMul %uint %21 %22
         %20 = OpIAdd %uint %23 %60
               OpStore %6 %20
         %24 = OpLoad %ulong %5
         %25 = OpLoad %uint %6
         %41 = OpConvertUToPtr %_ptr_Generic_uint %24
               OpStore %41 %25 Aligned 4
         %26 = OpLoad %ulong %5
         %27 = OpLoad %uint %6
         %42 = OpConvertUToPtr %_ptr_Generic_uint %26
         %61 = OpBitcast %_ptr_Generic_uchar %42
         %62 = OpInBoundsPtrAccessChain %_ptr_Generic_uchar %61 %ulong_4_0
         %35 = OpBitcast %_ptr_Generic_uint %62
               OpStore %35 %27 Aligned 4
         %28 = OpLoad %ulong %5
         %29 = OpLoad %uint %6
         %43 = OpConvertUToPtr %_ptr_Generic_uint %28
         %63 = OpBitcast %_ptr_Generic_uchar %43
         %64 = OpInBoundsPtrAccessChain %_ptr_Generic_uchar %63 %ulong_8_0
         %37 = OpBitcast %_ptr_Generic_uint %64
               OpStore %37 %29 Aligned 4
               OpReturn
               OpFunctionEnd
