ERROR: LoadError: Enzyme compilation failed. Current scope: ; ModuleID = 'start' source_filename = "start" target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64-ni:10:11:12:13" target triple = "nvptx64-nvidia-cuda" %printf_args.0 = type { i64 } @0 = private unnamed_addr constant [36 x i8] c"ERROR: Out-of-bounds array access.\0A\00", align 1 @exception4 = private unnamed_addr constant [10 x i8] c"exception\00", align 1 @exception6 = private unnamed_addr constant [10 x i8] c"exception\00", align 1 @exception7 = private unnamed_addr constant [10 x i8] c"exception\00", align 1 @exception9 = private unnamed_addr constant [13 x i8] c"bounds error\00", align 1 @.str = private unnamed_addr constant [11 x i8] c"__CUDA_FTZ\00", align 1 @.str.2 = private unnamed_addr constant [17 x i8] c"__CUDA_PREC_SQRT\00", align 1 @.str.1 = private unnamed_addr constant [12 x i8] c"__CUDA_ARCH\00", align 1 @__cudart_i2opi_f = internal unnamed_addr addrspace(1) constant [6 x i32] [i32 1011060801, i32 -614296167, i32 -181084736, i32 -64530479, i32 1313084713, i32 -1560706194], align 4 @__cudart_i2opi_d = internal unnamed_addr addrspace(1) constant [18 x i64] [i64 7780917995555872008, i64 4397547296490951402, i64 8441921394348257659, i64 5712322887342352941, i64 7869616827067468215, i64 -1211730484530615009, i64 2303758334597371919, i64 -7168499653074671557, i64 4148332274289687028, i64 -1613291254968254911, i64 -1692731182770600828, i64 -135693905287338178, i64 452944820249399836, i64 -5249950069107600672, i64 -121206125134887583, i64 -2638381946312093631, i64 -277156292786332224, i64 -6703182060581546711], align 8 @__cudart_sin_cos_coeffs = internal unnamed_addr addrspace(1) constant [16 x double] [double 0x3DE5DB65F9785EBA, double 0xBE5AE5F12CB0D246, double 0x3EC71DE369ACE392, double 0xBF2A01A019DB62A1, double 0x3F81111111110818, double 0xBFC5555555555554, double 0.000000e+00, double 0.000000e+00, double 0xBDA8FF8320FD8164, double 0x3E21EEA7C1EF8528, double 0xBE927E4F8E06E6D9, double 0x3EFA01A019DDBCE9, double 0xBF56C16C16C15D47, double 0x3FA5555555555551, double -5.000000e-01, double 1.000000e+00], align 8 @1 = private unnamed_addr constant [108 x i8] c"ERROR: a %s was thrown during kernel execution.\0A Run Julia on debug level 2 for device stack traces.\0A\00", align 1 @2 = private unnamed_addr constant [110 x i8] c"WARNING: could not signal exception status to the host, execution will continue.\0A Please file a bug.\0A\00", align 1 ; Function Attrs: nofree readnone declare {}*** @julia.get_pgcstack() local_unnamed_addr #0 declare i32 @vprintf(i8*, i8*) local_unnamed_addr #1 ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0i8.p11i8.i64(i8* noalias nocapture writeonly, i8 addrspace(11)* noalias nocapture readonly, i64, i1 immarg) #2 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.y() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.z() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ntid.x() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ntid.y() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.ntid.z() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.tid.y() #3 ; Function Attrs: nounwind readnone speculatable declare i32 @llvm.nvvm.read.ptx.sreg.tid.z() #3 ; Function Attrs: argmemonly nounwind readonly declare float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* nocapture, i32) #4 ; Function Attrs: noinline noreturn define internal fastcc void @julia__throw_boundserror_25134() unnamed_addr #5 !dbg !48 { top: %0 = call {}*** @julia.get_pgcstack() %1 = call i32 @vprintf(i8* noundef getelementptr inbounds ([36 x i8], [36 x i8]* @0, i64 0, i64 0), i8* noundef null), !dbg !50 call fastcc void @gpu_report_exception(i64 noundef ptrtoint ([10 x i8]* @exception4 to i64)), !dbg !66 call fastcc void @gpu_signal_exception(), !dbg !66 call void asm sideeffect "exit;", ""() #139, !dbg !66 unreachable, !dbg !66 } ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.ctlz.i32(i32, i1 immarg) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.ctlz.i64(i64, i1 immarg) #6 declare i32 @__nvvm_reflect(i8*) local_unnamed_addr #7 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.floor.ftz.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.floor.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.floor.d(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fabs.ftz.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fabs.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fabs.d(double) #6 ; Function Attrs: nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.rcp.approx.ftz.d(double) #8 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmin.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmin.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmax.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmax.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.rsqrt.approx.ftz.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.rsqrt.approx.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fmin.d(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fmax.d(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.rsqrt.approx.d(double) #8 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.trunc.d(double) #6 ; Function Attrs: noinline nounwind define dso_local float @__nv_exp2f(float %x) local_unnamed_addr #9 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 br i1 %.not, label %4, label %2 2: ; preds = %0 %3 = call float @llvm.nvvm.ex2.approx.ftz.f(float %x) #139 br label %__exp2f.exit 4: ; preds = %0 %5 = call float @llvm.nvvm.ex2.approx.f(float %x) #139 br label %__exp2f.exit __exp2f.exit: ; preds = %4, %2 %.0 = phi float [ %3, %2 ], [ %5, %4 ] ret float %.0 } ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.ex2.approx.ftz.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.ex2.approx.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.trunc.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.saturate.ftz.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.saturate.f(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rn.ftz.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rn.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rz.ftz.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rz.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rm.ftz.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rm.f(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fma.rn.d(double, double, double) #6 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.div.approx.ftz.f(float, float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.div.approx.f(float, float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.sqrt.rn.ftz.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.sqrt.rn.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.sqrt.rn.d(double) #8 ; Function Attrs: noinline nounwind define dso_local float @__nv_sqrtf(float %x) local_unnamed_addr #10 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 br i1 %.not, label %8, label %2 2: ; preds = %0 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %3, 0 br i1 %.not2, label %6, label %4 4: ; preds = %2 %5 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %x) #139 br label %__nvvm_sqrt_f.exit 6: ; preds = %2 %7 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %x) #139 br label %__nvvm_sqrt_f.exit 8: ; preds = %0 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %9, 0 br i1 %.not1, label %12, label %10 10: ; preds = %8 %11 = call float @llvm.sqrt.f32(float %x) br label %__nvvm_sqrt_f.exit 12: ; preds = %8 %13 = call float @llvm.nvvm.sqrt.approx.f(float %x) #139 br label %__nvvm_sqrt_f.exit __nvvm_sqrt_f.exit: ; preds = %12, %10, %6, %4 %.0 = phi float [ %5, %4 ], [ %7, %6 ], [ %11, %10 ], [ %13, %12 ] ret float %.0 } ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.sqrt.approx.ftz.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.sqrt.approx.f(float) #8 ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_sqrt(double %x) local_unnamed_addr #11 { %1 = call double @llvm.sqrt.f64(double %x) #140 ret double %1 } ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.add.rn.d(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.add.rz.d(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.mul.rn.d(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rn.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rn.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rz.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rn.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rn.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rz.ftz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rz.f(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.rn(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.f2i.rn.ftz(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.f2i.rn(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.f2i.rz(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.lohi.i2d(i32, i32) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.lo(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.hi(double) #6 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.lg2.approx.ftz.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.lg2.approx.f(float) #8 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.round.f(float) #6 ; Function Attrs: noinline nounwind define dso_local i32 @__nv_isinff(float %a) local_unnamed_addr #12 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp oeq float %.0, 0x7FF0000000000000 %4 = zext i1 %3 to i32 ret i32 %4 } ; Function Attrs: noinline nounwind define dso_local float @__nv_sinf(float %a) local_unnamed_addr #13 { __nv_float2int_rn.exit.i.i: %result.i.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call i32 @llvm.nvvm.f2i.rn.ftz(float %0) #139 %3 = call i32 @llvm.nvvm.f2i.rn(float %0) #139 %.01 = select i1 %.not, i32 %3, i32 %2 %4 = sitofp i32 %.01 to float %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %5, 0 %6 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBFF921FB40000000, float %a) #139 %7 = call float @llvm.fma.f32(float %4, float noundef 0xBFF921FB40000000, float %a) %.02 = select i1 %.not1, float %7, float %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBE74442D00000000, float %.02) #139 %10 = call float @llvm.fma.f32(float %4, float noundef 0xBE74442D00000000, float %.02) %.03 = select i1 %.not2, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBCF84698A0000000, float %.03) #139 %13 = call float @llvm.fma.f32(float %4, float noundef 0xBCF84698A0000000, float %.03) %.04 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %16 = call float @llvm.fabs.f32(float %a) %.06 = select i1 %.not4, float %16, float %15 %17 = fcmp ult float %.06, 1.056150e+05 br i1 %17, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_float2int_rn.exit.i.i %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %18, 0 %.07 = select i1 %.not17, float %16, float %15 %19 = fcmp oeq float %.07, 0x7FF0000000000000 br i1 %19, label %__nv_fmul_rn.exit.i.i, label %23 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.mul.rn.ftz.f(float %a, float noundef 0.000000e+00) #139 %22 = fmul float %a, 0.000000e+00 %.08 = select i1 %.not23, float %22, float %21 br label %__internal_trig_reduction_kernel.exit.i 23: ; preds = %__nv_isinff.exit.i.i %24 = bitcast float %a to i32 %25 = lshr i32 %24, 23 %26 = and i32 %25, 255 %27 = add nsw i32 %26, -128 %28 = shl i32 %24, 8 %29 = or i32 %28, -2147483648 %30 = lshr i32 %27, 5 br label %31 31: ; preds = %23, %31 %iq.i.i.i.025 = phi i32 [ 0, %23 ], [ %39, %31 ] %hi.i.i.i.024 = phi i32 [ 0, %23 ], [ %37, %31 ] %32 = zext i32 %iq.i.i.i.025 to i64 %33 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %32 %34 = load i32, i32 addrspace(1)* %33, align 4 %35 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %34, i32 %29, i32 %hi.i.i.i.024) #141, !srcloc !67 %36 = extractvalue { i32, i32 } %35, 0 %37 = extractvalue { i32, i32 } %35, 1 %38 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %32 store i32 %36, i32* %38, align 4, !noalias !68 %39 = add nuw nsw i32 %iq.i.i.i.025, 1 %exitcond.not = icmp eq i32 %39, 6 br i1 %exitcond.not, label %40, label %31, !llvm.loop !71 40: ; preds = %31 %41 = and i32 %24, -2147483648 %42 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 6 store i32 %37, i32* %42, align 4, !noalias !68 %43 = and i32 %25, 31 %44 = sub nsw i32 6, %30 %45 = sext i32 %44 to i64 %46 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %45 %47 = load i32, i32* %46, align 4 %48 = sub nsw i32 5, %30 %49 = sext i32 %48 to i64 %50 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %49 %51 = load i32, i32* %50, align 4 %.not18 = icmp eq i32 %43, 0 br i1 %.not18, label %__internal_trig_reduction_slowpath.exit.i.i, label %52 52: ; preds = %40 %53 = sub nsw i32 4, %30 %54 = sub nuw nsw i32 32, %43 %55 = shl i32 %47, %43 %56 = lshr i32 %51, %54 %57 = add i32 %56, %55 %58 = shl i32 %51, %43 %59 = sext i32 %53 to i64 %60 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %59 %61 = load i32, i32* %60, align 4 %62 = lshr i32 %61, %54 %63 = add i32 %62, %58 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %52, %40 %hi.i.i.i.1 = phi i32 [ %57, %52 ], [ %47, %40 ] %lo.i.i.i.0 = phi i32 [ %63, %52 ], [ %51, %40 ] %64 = lshr i32 %hi.i.i.i.1, 30 %65 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %66 = shl i32 %lo.i.i.i.0, 2 %67 = lshr i32 %65, 31 %68 = add nuw nsw i32 %67, %64 %.not19 = icmp eq i32 %41, 0 %69 = sub nsw i32 0, %68 %spec.select = select i1 %.not19, i32 %68, i32 %69 %.not20 = icmp sgt i32 %65, -1 %70 = xor i32 %41, -2147483648 %s.i.i.i.0 = select i1 %.not20, i32 %41, i32 %70 %not..not20 = xor i1 %.not20, true %71 = sext i1 %not..not20 to i32 %hi.i.i.i.2 = xor i32 %65, %71 %lo.i.i.i.1 = xor i32 %66, %71 %72 = zext i32 %hi.i.i.i.2 to i64 %73 = shl nuw i64 %72, 32 %74 = zext i32 %lo.i.i.i.1 to i64 %75 = or i64 %73, %74 %76 = sitofp i64 %75 to double %77 = fmul double %76, 0x3BF921FB54442D19 %78 = fptrunc double %77 to float %.not22 = icmp eq i32 %s.i.i.i.0, 0 %79 = fneg float %78 %r.i.i.i.0 = select i1 %.not22, float %78, float %79 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_float2int_rn.exit.i.i %i.i.1 = phi i32 [ %.01, %__nv_float2int_rn.exit.i.i ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.04, %__nv_float2int_rn.exit.i.i ], [ %.08, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.mul.rn.ftz.f(float %t.i.i.1, float %t.i.i.1) #139 %82 = fmul float %t.i.i.1, %t.i.i.1 %.011 = select i1 %.not5, float %82, float %81 %83 = and i32 %i.i.1, 1 %.not6 = icmp eq i32 %83, 0 %84 = select i1 %.not6, float %t.i.i.1, float 1.000000e+00 %85 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %85, 0 %86 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %84, float noundef 0.000000e+00) #139 %87 = call float @llvm.fma.f32(float %.011, float %84, float noundef 0.000000e+00) %.012 = select i1 %.not7, float %87, float %86 br i1 %.not6, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %88 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %88, 0 %89 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.011, float noundef 0xBF56C0FDA0000000) #139 %90 = call float @llvm.fma.f32(float %.011, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.013 = select i1 %.not16, float %90, float %89 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %91 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %92 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %93 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.013, %__internal_fmad.exit1.i.i ] %94 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %94, 0 %95 = call float @llvm.nvvm.fma.rn.ftz.f(float %93, float %.011, float noundef %92) #139 %96 = call float @llvm.fma.f32(float %93, float %.011, float noundef %92) %.010 = select i1 %.not10, float %96, float %95 %97 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %97, 0 %98 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.011, float noundef %91) #139 %99 = call float @llvm.fma.f32(float %.010, float %.011, float noundef %91) %.09 = select i1 %.not12, float %99, float %98 %100 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %100, 0 %101 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %.012, float %84) #139 %102 = call float @llvm.fma.f32(float %.09, float %.012, float %84) %.05 = select i1 %.not13, float %102, float %101 %103 = and i32 %i.i.1, 2 %.not14 = icmp eq i32 %103, 0 br i1 %.not14, label %__internal_accurate_sinf.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %104 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %104, 0 %105 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %106 = call float @llvm.fma.f32(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0 = select i1 %.not15, float %106, float %105 br label %__internal_accurate_sinf.exit __internal_accurate_sinf.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i.0 = phi float [ %.0, %__internal_fmad.exit5.i.i ], [ %.05, %__internal_fmad.exit2.i.i ] ret float %z.i.i.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_cosf(float %a) local_unnamed_addr #14 { __nv_float2int_rn.exit.i.i: %result.i.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call i32 @llvm.nvvm.f2i.rn.ftz(float %0) #139 %3 = call i32 @llvm.nvvm.f2i.rn(float %0) #139 %.01 = select i1 %.not, i32 %3, i32 %2 %4 = sitofp i32 %.01 to float %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %5, 0 %6 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBFF921FB40000000, float %a) #139 %7 = call float @llvm.fma.f32(float %4, float noundef 0xBFF921FB40000000, float %a) %.02 = select i1 %.not1, float %7, float %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBE74442D00000000, float %.02) #139 %10 = call float @llvm.fma.f32(float %4, float noundef 0xBE74442D00000000, float %.02) %.03 = select i1 %.not2, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBCF84698A0000000, float %.03) #139 %13 = call float @llvm.fma.f32(float %4, float noundef 0xBCF84698A0000000, float %.03) %.04 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %16 = call float @llvm.fabs.f32(float %a) %.06 = select i1 %.not4, float %16, float %15 %17 = fcmp ult float %.06, 1.056150e+05 br i1 %17, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_float2int_rn.exit.i.i %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %18, 0 %.07 = select i1 %.not17, float %16, float %15 %19 = fcmp oeq float %.07, 0x7FF0000000000000 br i1 %19, label %__nv_fmul_rn.exit.i.i, label %23 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.mul.rn.ftz.f(float %a, float noundef 0.000000e+00) #139 %22 = fmul float %a, 0.000000e+00 %.08 = select i1 %.not23, float %22, float %21 br label %__internal_trig_reduction_kernel.exit.i 23: ; preds = %__nv_isinff.exit.i.i %24 = bitcast float %a to i32 %25 = lshr i32 %24, 23 %26 = and i32 %25, 255 %27 = add nsw i32 %26, -128 %28 = shl i32 %24, 8 %29 = or i32 %28, -2147483648 %30 = lshr i32 %27, 5 br label %31 31: ; preds = %23, %31 %iq.i.i.i.025 = phi i32 [ 0, %23 ], [ %39, %31 ] %hi.i.i.i.024 = phi i32 [ 0, %23 ], [ %37, %31 ] %32 = zext i32 %iq.i.i.i.025 to i64 %33 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %32 %34 = load i32, i32 addrspace(1)* %33, align 4 %35 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %34, i32 %29, i32 %hi.i.i.i.024) #141, !srcloc !67 %36 = extractvalue { i32, i32 } %35, 0 %37 = extractvalue { i32, i32 } %35, 1 %38 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %32 store i32 %36, i32* %38, align 4, !noalias !68 %39 = add nuw nsw i32 %iq.i.i.i.025, 1 %exitcond.not = icmp eq i32 %39, 6 br i1 %exitcond.not, label %40, label %31, !llvm.loop !71 40: ; preds = %31 %41 = and i32 %24, -2147483648 %42 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 6 store i32 %37, i32* %42, align 4, !noalias !68 %43 = and i32 %25, 31 %44 = sub nsw i32 6, %30 %45 = sext i32 %44 to i64 %46 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %45 %47 = load i32, i32* %46, align 4 %48 = sub nsw i32 5, %30 %49 = sext i32 %48 to i64 %50 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %49 %51 = load i32, i32* %50, align 4 %.not18 = icmp eq i32 %43, 0 br i1 %.not18, label %__internal_trig_reduction_slowpath.exit.i.i, label %52 52: ; preds = %40 %53 = sub nsw i32 4, %30 %54 = sub nuw nsw i32 32, %43 %55 = shl i32 %47, %43 %56 = lshr i32 %51, %54 %57 = add i32 %56, %55 %58 = shl i32 %51, %43 %59 = sext i32 %53 to i64 %60 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %59 %61 = load i32, i32* %60, align 4 %62 = lshr i32 %61, %54 %63 = add i32 %62, %58 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %52, %40 %hi.i.i.i.1 = phi i32 [ %57, %52 ], [ %47, %40 ] %lo.i.i.i.0 = phi i32 [ %63, %52 ], [ %51, %40 ] %64 = lshr i32 %hi.i.i.i.1, 30 %65 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %66 = shl i32 %lo.i.i.i.0, 2 %67 = lshr i32 %65, 31 %68 = add nuw nsw i32 %67, %64 %.not19 = icmp eq i32 %41, 0 %69 = sub nsw i32 0, %68 %spec.select = select i1 %.not19, i32 %68, i32 %69 %.not20 = icmp sgt i32 %65, -1 %70 = xor i32 %41, -2147483648 %s.i.i.i.0 = select i1 %.not20, i32 %41, i32 %70 %not..not20 = xor i1 %.not20, true %71 = sext i1 %not..not20 to i32 %hi.i.i.i.2 = xor i32 %65, %71 %lo.i.i.i.1 = xor i32 %66, %71 %72 = zext i32 %hi.i.i.i.2 to i64 %73 = shl nuw i64 %72, 32 %74 = zext i32 %lo.i.i.i.1 to i64 %75 = or i64 %73, %74 %76 = sitofp i64 %75 to double %77 = fmul double %76, 0x3BF921FB54442D19 %78 = fptrunc double %77 to float %.not22 = icmp eq i32 %s.i.i.i.0, 0 %79 = fneg float %78 %r.i.i.i.0 = select i1 %.not22, float %78, float %79 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_float2int_rn.exit.i.i %i.i.1 = phi i32 [ %.01, %__nv_float2int_rn.exit.i.i ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.04, %__nv_float2int_rn.exit.i.i ], [ %.08, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %80 = add i32 %i.i.1, 1 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.mul.rn.ftz.f(float %t.i.i.1, float %t.i.i.1) #139 %83 = fmul float %t.i.i.1, %t.i.i.1 %.011 = select i1 %.not5, float %83, float %82 %84 = and i32 %80, 1 %.not6 = icmp eq i32 %84, 0 %85 = select i1 %.not6, float %t.i.i.1, float 1.000000e+00 %86 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %86, 0 %87 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %85, float noundef 0.000000e+00) #139 %88 = call float @llvm.fma.f32(float %.011, float %85, float noundef 0.000000e+00) %.012 = select i1 %.not7, float %88, float %87 br i1 %.not6, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %89 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %89, 0 %90 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.011, float noundef 0xBF56C0FDA0000000) #139 %91 = call float @llvm.fma.f32(float %.011, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.013 = select i1 %.not16, float %91, float %90 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %92 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %93 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %94 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.013, %__internal_fmad.exit1.i.i ] %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float %94, float %.011, float noundef %93) #139 %97 = call float @llvm.fma.f32(float %94, float %.011, float noundef %93) %.010 = select i1 %.not10, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.011, float noundef %92) #139 %100 = call float @llvm.fma.f32(float %.010, float %.011, float noundef %92) %.09 = select i1 %.not12, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %101, 0 %102 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %.012, float %85) #139 %103 = call float @llvm.fma.f32(float %.09, float %.012, float %85) %.05 = select i1 %.not13, float %103, float %102 %104 = and i32 %80, 2 %.not14 = icmp eq i32 %104, 0 br i1 %.not14, label %__internal_accurate_cosf.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %105, 0 %106 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %107 = call float @llvm.fma.f32(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0 = select i1 %.not15, float %107, float %106 br label %__internal_accurate_cosf.exit __internal_accurate_cosf.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i.0 = phi float [ %.0, %__internal_fmad.exit5.i.i ], [ %.05, %__internal_fmad.exit2.i.i ] ret float %z.i.i.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_tanf(float %a) local_unnamed_addr #15 { __nv_float2int_rn.exit.i: %result.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call i32 @llvm.nvvm.f2i.rn.ftz(float %0) #139 %3 = call i32 @llvm.nvvm.f2i.rn(float %0) #139 %.01 = select i1 %.not, i32 %3, i32 %2 %4 = sitofp i32 %.01 to float %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %5, 0 %6 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBFF921FB40000000, float %a) #139 %7 = call float @llvm.fma.f32(float %4, float noundef 0xBFF921FB40000000, float %a) %.03 = select i1 %.not1, float %7, float %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBE74442D00000000, float %.03) #139 %10 = call float @llvm.fma.f32(float %4, float noundef 0xBE74442D00000000, float %.03) %.04 = select i1 %.not2, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %4, float noundef 0xBCF84698A0000000, float %.04) #139 %13 = call float @llvm.fma.f32(float %4, float noundef 0xBCF84698A0000000, float %.04) %.05 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %16 = call float @llvm.fabs.f32(float %a) %.06 = select i1 %.not4, float %16, float %15 %17 = fcmp ult float %.06, 1.056150e+05 br i1 %17, label %__internal_trig_reduction_kernel.exit, label %__nv_isinff.exit.i __nv_isinff.exit.i: ; preds = %__nv_float2int_rn.exit.i %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %18, 0 %.07 = select i1 %.not14, float %16, float %15 %19 = fcmp oeq float %.07, 0x7FF0000000000000 br i1 %19, label %__nv_fmul_rn.exit.i, label %23 __nv_fmul_rn.exit.i: ; preds = %__nv_isinff.exit.i %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.mul.rn.ftz.f(float %a, float noundef 0.000000e+00) #139 %22 = fmul float %a, 0.000000e+00 %.08 = select i1 %.not20, float %22, float %21 br label %__internal_trig_reduction_kernel.exit 23: ; preds = %__nv_isinff.exit.i %24 = bitcast float %a to i32 %25 = lshr i32 %24, 23 %26 = and i32 %25, 255 %27 = add nsw i32 %26, -128 %28 = shl i32 %24, 8 %29 = or i32 %28, -2147483648 %30 = lshr i32 %27, 5 br label %31 31: ; preds = %23, %31 %iq.i.i.022 = phi i32 [ 0, %23 ], [ %39, %31 ] %hi.i.i.021 = phi i32 [ 0, %23 ], [ %37, %31 ] %32 = zext i32 %iq.i.i.022 to i64 %33 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %32 %34 = load i32, i32 addrspace(1)* %33, align 4 %35 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %34, i32 %29, i32 %hi.i.i.021) #141, !srcloc !67 %36 = extractvalue { i32, i32 } %35, 0 %37 = extractvalue { i32, i32 } %35, 1 %38 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i, i64 0, i64 %32 store i32 %36, i32* %38, align 4, !noalias !68 %39 = add nuw nsw i32 %iq.i.i.022, 1 %exitcond.not = icmp eq i32 %39, 6 br i1 %exitcond.not, label %40, label %31, !llvm.loop !71 40: ; preds = %31 %41 = and i32 %24, -2147483648 %42 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i, i64 0, i64 6 store i32 %37, i32* %42, align 4, !noalias !68 %43 = and i32 %25, 31 %44 = sub nsw i32 6, %30 %45 = sext i32 %44 to i64 %46 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i, i64 0, i64 %45 %47 = load i32, i32* %46, align 4 %48 = sub nsw i32 5, %30 %49 = sext i32 %48 to i64 %50 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i, i64 0, i64 %49 %51 = load i32, i32* %50, align 4 %.not15 = icmp eq i32 %43, 0 br i1 %.not15, label %__internal_trig_reduction_slowpath.exit.i, label %52 52: ; preds = %40 %53 = sub nsw i32 4, %30 %54 = sub nuw nsw i32 32, %43 %55 = shl i32 %47, %43 %56 = lshr i32 %51, %54 %57 = add i32 %56, %55 %58 = shl i32 %51, %43 %59 = sext i32 %53 to i64 %60 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i, i64 0, i64 %59 %61 = load i32, i32* %60, align 4 %62 = lshr i32 %61, %54 %63 = add i32 %62, %58 br label %__internal_trig_reduction_slowpath.exit.i __internal_trig_reduction_slowpath.exit.i: ; preds = %52, %40 %hi.i.i.1 = phi i32 [ %57, %52 ], [ %47, %40 ] %lo.i.i.0 = phi i32 [ %63, %52 ], [ %51, %40 ] %64 = lshr i32 %hi.i.i.1, 30 %65 = call i32 @llvm.fshl.i32(i32 %hi.i.i.1, i32 %lo.i.i.0, i32 noundef 2) %66 = shl i32 %lo.i.i.0, 2 %67 = lshr i32 %65, 31 %68 = add nuw nsw i32 %67, %64 %.not16 = icmp eq i32 %41, 0 %69 = sub nsw i32 0, %68 %spec.select = select i1 %.not16, i32 %68, i32 %69 %.not17 = icmp sgt i32 %65, -1 %70 = xor i32 %41, -2147483648 %s.i.i.0 = select i1 %.not17, i32 %41, i32 %70 %not..not17 = xor i1 %.not17, true %71 = sext i1 %not..not17 to i32 %hi.i.i.2 = xor i32 %65, %71 %lo.i.i.1 = xor i32 %66, %71 %72 = zext i32 %hi.i.i.2 to i64 %73 = shl nuw i64 %72, 32 %74 = zext i32 %lo.i.i.1 to i64 %75 = or i64 %73, %74 %76 = sitofp i64 %75 to double %77 = fmul double %76, 0x3BF921FB54442D19 %78 = fptrunc double %77 to float %.not19 = icmp eq i32 %s.i.i.0, 0 %79 = fneg float %78 %r.i.i.0 = select i1 %.not19, float %78, float %79 br label %__internal_trig_reduction_kernel.exit __internal_trig_reduction_kernel.exit: ; preds = %__nv_fmul_rn.exit.i, %__internal_trig_reduction_slowpath.exit.i, %__nv_float2int_rn.exit.i %i.1 = phi i32 [ %.01, %__nv_float2int_rn.exit.i ], [ 0, %__nv_fmul_rn.exit.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i ] %t.i.1 = phi float [ %.05, %__nv_float2int_rn.exit.i ], [ %.08, %__nv_fmul_rn.exit.i ], [ %r.i.i.0, %__internal_trig_reduction_slowpath.exit.i ] %80 = fmul float %t.i.1, %t.i.1 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F83200000000000, float %80, float noundef 0x3F6AC00000000000) #139 %83 = call float @llvm.fma.f32(float %80, float noundef 0x3F83200000000000, float noundef 0x3F6AC00000000000) %.012 = select i1 %.not5, float %83, float %82 %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %84, 0 %85 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %80, float noundef 0x3F98E00000000000) #139 %86 = call float @llvm.fma.f32(float %.012, float %80, float noundef 0x3F98E00000000000) %.013 = select i1 %.not6, float %86, float %85 %87 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %87, 0 %88 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %80, float noundef 0x3FAB600000000000) #139 %89 = call float @llvm.fma.f32(float %.013, float %80, float noundef 0x3FAB600000000000) %.014 = select i1 %.not7, float %89, float %88 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %90, 0 %91 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %80, float noundef 0x3FC1128700000000) #139 %92 = call float @llvm.fma.f32(float %.014, float %80, float noundef 0x3FC1128700000000) %.011 = select i1 %.not8, float %92, float %91 %93 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %93, 0 %94 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %80, float noundef 0x3FD5555100000000) #139 %95 = call float @llvm.fma.f32(float %.011, float %80, float noundef 0x3FD5555100000000) %.010 = select i1 %.not9, float %95, float %94 %96 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %96, 0 %97 = call float @llvm.nvvm.mul.rn.ftz.f(float %80, float %t.i.1) #139 %98 = fmul float %t.i.1, %80 %.09 = select i1 %.not10, float %98, float %97 %99 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %99, 0 %100 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.09, float %t.i.1) #139 %101 = call float @llvm.fma.f32(float %.010, float %.09, float %t.i.1) %.02 = select i1 %.not11, float %101, float %100 %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %102, 0 %103 = call float @llvm.nvvm.fabs.ftz.f(float %t.i.1) #139 %104 = call float @llvm.fabs.f32(float %t.i.1) %.0 = select i1 %.not12, float %104, float %103 %105 = fcmp oeq float %.0, 0x3F40168780000000 %t.i1.0 = select i1 %105, float %t.i.1, float %.02 %106 = and i32 %i.1, 1 %.not13 = icmp eq i32 %106, 0 br i1 %.not13, label %110, label %107 107: ; preds = %__internal_trig_reduction_kernel.exit %108 = fneg float %t.i1.0 %109 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %108) #141, !srcloc !73 br label %110 110: ; preds = %107, %__internal_trig_reduction_kernel.exit %z.0 = phi float [ %109, %107 ], [ %t.i1.0, %__internal_trig_reduction_kernel.exit ] ret float %z.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_log2f(float %a) local_unnamed_addr #16 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1060439283 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) #139 %10 = call float @llvm.fma.f32(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) %.08 = select i1 %.not, float %10, float %9 %11 = fadd float %6, -1.000000e+00 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FB8D64FE0000000, float %11, float noundef 0xBFC58FE600000000) #139 %14 = call float @llvm.fma.f32(float %11, float noundef 0x3FB8D64FE0000000, float noundef 0xBFC58FE600000000) %.010 = select i1 %.not1, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %11, float noundef 0x3FC5F9E540000000) #139 %17 = call float @llvm.fma.f32(float %.010, float %11, float noundef 0x3FC5F9E540000000) %.011 = select i1 %.not2, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %11, float noundef 0xBFC6E9C860000000) #139 %20 = call float @llvm.fma.f32(float %.011, float %11, float noundef 0xBFC6E9C860000000) %.012 = select i1 %.not3, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %11, float noundef 0x3FCA417E80000000) #139 %23 = call float @llvm.fma.f32(float %.012, float %11, float noundef 0x3FCA417E80000000) %.09 = select i1 %.not4, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %11, float noundef 0xBFCEC79160000000) #139 %26 = call float @llvm.fma.f32(float %.09, float %11, float noundef 0xBFCEC79160000000) %.05 = select i1 %.not5, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %11, float noundef 0x3FD277F320000000) #139 %29 = call float @llvm.fma.f32(float %.05, float %11, float noundef 0x3FD277F320000000) %.01 = select i1 %.not6, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %11, float noundef 0xBFD7154920000000) #139 %32 = call float @llvm.fma.f32(float %.01, float %11, float noundef 0xBFD7154920000000) %.0 = select i1 %.not7, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %11, float noundef 0x3FDEC70940000000) #139 %35 = call float @llvm.fma.f32(float %.0, float %11, float noundef 0x3FDEC70940000000) %.07 = select i1 %.not8, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %11, float noundef 0xBFE7154760000000) #139 %38 = call float @llvm.fma.f32(float %.07, float %11, float noundef 0xBFE7154760000000) %.06 = select i1 %.not9, float %38, float %37 %39 = fmul float %11, %.06 %40 = fmul float %11, %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %11, float noundef 0x3FF7154760000000, float %40) #139 %43 = call float @llvm.fma.f32(float %11, float noundef 0x3FF7154760000000, float %40) %.04 = select i1 %.not10, float %43, float %42 %44 = fadd float %.08, %.04 %45 = icmp ugt i32 %2, 2139095039 br i1 %45, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_log2f.exit __nv_fmaf_rn.exit.i: ; preds = %__nv_fmaf_rn.exit10.i %46 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %46, 0 %47 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %48 = call float @llvm.fma.f32(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.03 = select i1 %.not11, float %48, float %47 br label %__internal_accurate_log2f.exit __internal_accurate_log2f.exit: ; preds = %__nv_fmaf_rn.exit.i, %__nv_fmaf_rn.exit10.i %r.i.0 = phi float [ %.03, %__nv_fmaf_rn.exit.i ], [ %44, %__nv_fmaf_rn.exit10.i ] %49 = fcmp oeq float %.02, 0.000000e+00 %r.i.1 = select i1 %49, float 0xFFF0000000000000, float %r.i.0 ret float %r.i.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_expf(float %a) local_unnamed_addr #17 { __nv_fmaf_rn.exit.i.i: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x3F777313A0000000, float noundef 5.000000e-01) #139 %2 = call float @llvm.fma.f32(float %a, float noundef 0x3F777313A0000000, float noundef 5.000000e-01) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.saturate.ftz.f(float %.02) #139 %5 = call float @llvm.nvvm.saturate.f(float %.02) #139 %.03 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fma.rm.ftz.f(float %.03, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %8 = call float @llvm.nvvm.fma.rm.f(float %.03, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %.04 = select i1 %.not2, float %8, float %7 %9 = fadd float %.04, 0xC168000FE0000000 %10 = fneg float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x3FF7154760000000, float %10) #139 %13 = call float @llvm.fma.f32(float %a, float noundef 0x3FF7154760000000, float %10) %.0 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x3E54AE0C00000000, float %.0) #139 %16 = call float @llvm.fma.f32(float %a, float noundef 0x3E54AE0C00000000, float %.0) %.01 = select i1 %.not4, float %16, float %15 %17 = bitcast float %.04 to i32 %18 = shl i32 %17, 23 %19 = bitcast i32 %18 to float %20 = call float @llvm.nvvm.ex2.approx.ftz.f(float %.01) #139 %21 = fmul float %20, %19 ret float %21 } ; Function Attrs: noinline nounwind define dso_local float @__nv_exp10f(float %a) local_unnamed_addr #18 { __nv_fmaf_rn.exit.i.i: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x3F8AFF4C40000000, float noundef 5.000000e-01) #139 %2 = call float @llvm.fma.f32(float %a, float noundef 0x3F8AFF4C40000000, float noundef 5.000000e-01) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.saturate.ftz.f(float %.02) #139 %5 = call float @llvm.nvvm.saturate.f(float %.02) #139 %.03 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fma.rm.ftz.f(float %.03, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %8 = call float @llvm.nvvm.fma.rm.f(float %.03, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %.04 = select i1 %.not2, float %8, float %7 %9 = fadd float %.04, 0xC168000FE0000000 %10 = fneg float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x400A934F00000000, float %10) #139 %13 = call float @llvm.fma.f32(float %a, float noundef 0x400A934F00000000, float %10) %.0 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x3E72F346E0000000, float %.0) #139 %16 = call float @llvm.fma.f32(float %a, float noundef 0x3E72F346E0000000, float %.0) %.01 = select i1 %.not4, float %16, float %15 %17 = bitcast float %.04 to i32 %18 = shl i32 %17, 23 %19 = bitcast i32 %18 to float %20 = call float @llvm.nvvm.ex2.approx.ftz.f(float %.01) #139 %21 = fmul float %20, %19 ret float %21 } ; Function Attrs: noinline nounwind define dso_local float @__nv_coshf(float %a) local_unnamed_addr #19 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.mul.rn.ftz.f(float %.01, float noundef 0x3FF7154760000000) #139 %5 = fmul float %.01, 0x3FF7154760000000 %.06 = select i1 %.not1, float %5, float %4 %6 = call float @llvm.trunc.f32(float %.06) %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.fabs.ftz.f(float %6) #139 %9 = call float @llvm.fabs.f32(float %6) %.04 = select i1 %.not2, float %9, float %8 %10 = fcmp ogt float %.04, 1.260000e+02 %11 = bitcast float %6 to i32 %12 = and i32 %11, -2147483648 %13 = or i32 %12, 1123811328 %14 = bitcast i32 %13 to float %j.i.0 = select i1 %10, float %14, float %6 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0xBFE62E4300000000, float %.01) #139 %17 = call float @llvm.fma.f32(float %j.i.0, float noundef 0xBFE62E4300000000, float %.01) %.03 = select i1 %.not3, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0x3E205C6100000000, float %.03) #139 %20 = call float @llvm.fma.f32(float %j.i.0, float noundef 0x3E205C6100000000, float %.03) %.02 = select i1 %.not4, float %20, float %19 %21 = fmul float %.02, 0x3FF7154760000000 %22 = fadd float %j.i.0, 0x4168000FA0000000 %23 = bitcast float %22 to i32 %24 = shl i32 %23, 23 %25 = bitcast i32 %24 to float %26 = call float @llvm.nvvm.ex2.approx.ftz.f(float %21) #139 %27 = fmul float %26, %25 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %28, 0 br i1 %.not5, label %31, label %29 29: ; preds = %__nv_fabsf.exit %30 = call float @llvm.nvvm.div.approx.ftz.f(float noundef 1.250000e-01, float %27) #139 br label %__nv_fast_fdividef.exit 31: ; preds = %__nv_fabsf.exit %32 = call float @llvm.nvvm.div.approx.f(float noundef 1.250000e-01, float %27) #139 br label %__nv_fast_fdividef.exit __nv_fast_fdividef.exit: ; preds = %31, %29 %.05 = phi float [ %30, %29 ], [ %32, %31 ] %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.000000e+00, float %27, float %.05) #139 %35 = call float @llvm.fma.f32(float %27, float noundef 2.000000e+00, float %.05) %.0 = select i1 %.not6, float %35, float %34 %36 = fcmp oge float %.01, 9.000000e+01 %z.0 = select i1 %36, float 0x7FF0000000000000, float %.0 ret float %z.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_sinhf(float %a) local_unnamed_addr #20 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp ult float %.01, 1.000000e+00 br i1 %3, label %__internal_fmad.exit4, label %__nv_fmul_rn.exit.i __nv_fmul_rn.exit.i: ; preds = %__nv_fabsf.exit %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.mul.rn.ftz.f(float %.01, float noundef 0x3FF7154760000000) #139 %6 = fmul float %.01, 0x3FF7154760000000 %.06 = select i1 %.not5, float %6, float %5 %7 = call float @llvm.trunc.f32(float %.06) %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fabs.ftz.f(float %7) #139 %10 = call float @llvm.fabs.f32(float %7) %.05 = select i1 %.not6, float %10, float %9 %11 = fcmp ogt float %.05, 1.260000e+02 %12 = bitcast float %7 to i32 %13 = and i32 %12, -2147483648 %14 = or i32 %13, 1123811328 %15 = bitcast i32 %14 to float %j.i.0 = select i1 %11, float %15, float %7 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0xBFE62E4300000000, float %.01) #139 %18 = call float @llvm.fma.f32(float %j.i.0, float noundef 0xBFE62E4300000000, float %.01) %.04 = select i1 %.not7, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %19, 0 %20 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0x3E205C6100000000, float %.04) #139 %21 = call float @llvm.fma.f32(float %j.i.0, float noundef 0x3E205C6100000000, float %.04) %.02 = select i1 %.not8, float %21, float %20 %22 = fmul float %.02, 0x3FF7154760000000 %23 = fadd float %j.i.0, 0x4168000FA0000000 %24 = bitcast float %23 to i32 %25 = shl i32 %24, 23 %26 = bitcast i32 %25 to float %27 = call float @llvm.nvvm.ex2.approx.ftz.f(float %22) #139 %28 = fmul float %27, %26 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %29, 0 br i1 %.not9, label %32, label %30 30: ; preds = %__nv_fmul_rn.exit.i %31 = call float @llvm.nvvm.div.approx.ftz.f(float noundef 1.250000e-01, float %28) #139 br label %__nv_fast_fdividef.exit 32: ; preds = %__nv_fmul_rn.exit.i %33 = call float @llvm.nvvm.div.approx.f(float noundef 1.250000e-01, float %28) #139 br label %__nv_fast_fdividef.exit __nv_fast_fdividef.exit: ; preds = %32, %30 %.07 = phi float [ %31, %30 ], [ %33, %32 ] %34 = fneg float %.07 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.000000e+00, float %28, float %34) #139 %37 = call float @llvm.fma.f32(float %28, float noundef 2.000000e+00, float %34) %.08 = select i1 %.not10, float %37, float %36 %38 = fcmp oge float %.01, 9.000000e+01 %z.0 = select i1 %38, float 0x7FF0000000000000, float %.08 %39 = bitcast float %z.0 to i32 %40 = bitcast float %a to i32 %41 = and i32 %40, -2147483648 %42 = or i32 %41, %39 %43 = bitcast i32 %42 to float br label %58 __internal_fmad.exit4: ; preds = %__nv_fabsf.exit %44 = fmul float %a, %a %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EC7A15B40000000, float %44, float noundef 0x3F29FFE920000000) #139 %47 = call float @llvm.fma.f32(float %44, float noundef 0x3EC7A15B40000000, float noundef 0x3F29FFE920000000) %.09 = select i1 %.not1, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %44, float noundef 0x3F81111340000000) #139 %50 = call float @llvm.fma.f32(float %.09, float %44, float noundef 0x3F81111340000000) %.010 = select i1 %.not2, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %44, float noundef 0x3FC5555560000000) #139 %53 = call float @llvm.fma.f32(float %.010, float %44, float noundef 0x3FC5555560000000) %.03 = select i1 %.not3, float %53, float %52 %54 = fmul float %44, %.03 %55 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %55, 0 %56 = call float @llvm.nvvm.fma.rn.ftz.f(float %54, float %a, float %a) #139 %57 = call float @llvm.fma.f32(float %54, float %a, float %a) %.0 = select i1 %.not4, float %57, float %56 br label %58 58: ; preds = %__internal_fmad.exit4, %__nv_fast_fdividef.exit %z.1 = phi float [ %43, %__nv_fast_fdividef.exit ], [ %.0, %__internal_fmad.exit4 ] ret float %z.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_tanhf(float %a) local_unnamed_addr #21 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp ult float %.01, 0x3FE3333340000000 br i1 %3, label %__internal_fmad.exit3, label %__internal_fmad.exit1 __internal_fmad.exit1: ; preds = %__nv_fabsf.exit %4 = fmul float %.01, 0x4007154760000000 %5 = call float @llvm.nvvm.ex2.approx.ftz.f(float %4) #139 %6 = fadd float %5, 1.000000e+00 %7 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %6) #141, !srcloc !73 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %7, float noundef -2.000000e+00, float noundef 1.000000e+00) #139 %10 = call float @llvm.fma.f32(float %7, float noundef -2.000000e+00, float noundef 1.000000e+00) %.03 = select i1 %.not6, float %10, float %9 %11 = fcmp oge float %.01, 0x4022059680000000 %s.0 = select i1 %11, float 1.000000e+00, float %.03 %12 = bitcast float %s.0 to i32 %13 = bitcast float %a to i32 %14 = and i32 %13, -2147483648 %15 = or i32 %14, %12 %16 = bitcast i32 %15 to float br label %33 __internal_fmad.exit3: ; preds = %__nv_fabsf.exit %17 = fmul float %a, %a %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F901E1040000000, float %17, float noundef 0xBFAAC795C0000000) #139 %20 = call float @llvm.fma.f32(float %17, float noundef 0x3F901E1040000000, float noundef 0xBFAAC795C0000000) %.06 = select i1 %.not1, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %17, float noundef 0x3FC10B2820000000) #139 %23 = call float @llvm.fma.f32(float %.06, float %17, float noundef 0x3FC10B2820000000) %.05 = select i1 %.not2, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %17, float noundef 0xBFD5553DA0000000) #139 %26 = call float @llvm.fma.f32(float %.05, float %17, float noundef 0xBFD5553DA0000000) %.0 = select i1 %.not3, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %17, float noundef 0.000000e+00) #139 %29 = call float @llvm.fma.f32(float %.0, float %17, float noundef 0.000000e+00) %.04 = select i1 %.not4, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %a, float %a) #139 %32 = call float @llvm.fma.f32(float %.04, float %a, float %a) %.02 = select i1 %.not5, float %32, float %31 br label %33 33: ; preds = %__internal_fmad.exit3, %__internal_fmad.exit1 %s.1 = phi float [ %16, %__internal_fmad.exit1 ], [ %.02, %__internal_fmad.exit3 ] ret float %s.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_atan2f(float %a, float %b) local_unnamed_addr #22 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %2 = call float @llvm.fabs.f32(float %b) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %5 = call float @llvm.fabs.f32(float %a) %.03 = select i1 %.not3, float %5, float %4 %6 = fcmp oeq float %.02, 0.000000e+00 %7 = fcmp oeq float %.03, 0.000000e+00 %or.cond = select i1 %6, i1 %7, i1 false br i1 %or.cond, label %8, label %16 8: ; preds = %__nv_fabsf.exit %9 = bitcast float %b to i32 %10 = icmp slt i32 %9, 0 %11 = select i1 %10, i32 1078530011, i32 0 %12 = bitcast float %a to i32 %13 = and i32 %12, -2147483648 %14 = or i32 %11, %13 %15 = bitcast i32 %14 to float br label %68 16: ; preds = %__nv_fabsf.exit %17 = fcmp oeq float %.02, 0x7FF0000000000000 %18 = fcmp oeq float %.03, 0x7FF0000000000000 %or.cond2 = select i1 %17, i1 %18, i1 false br i1 %or.cond2, label %19, label %__nv_fmaxf.exit 19: ; preds = %16 %20 = bitcast float %b to i32 %21 = icmp slt i32 %20, 0 %22 = select i1 %21, i32 1075235812, i32 1061752795 %23 = bitcast float %a to i32 %24 = and i32 %23, -2147483648 %25 = or i32 %22, %24 %26 = bitcast i32 %25 to float br label %68 __nv_fmaxf.exit: ; preds = %16 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fmax.ftz.f(float %.03, float %.02) #139 %29 = call float @llvm.maxnum.f32(float %.03, float %.02) %.01 = select i1 %.not4, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fmin.ftz.f(float %.03, float %.02) #139 %32 = call float @llvm.minnum.f32(float %.03, float %.02) %.0 = select i1 %.not5, float %32, float %31 %33 = fdiv float %.0, %.01 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.mul.rn.ftz.f(float %33, float %33) #139 %36 = fmul float %33, %33 %.04 = select i1 %.not6, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float noundef 0xBFEA58FD40000000, float noundef 0xC016B31060000000) #139 %39 = call float @llvm.fma.f32(float %.04, float noundef 0xBFEA58FD40000000, float noundef 0xC016B31060000000) %.05 = select i1 %.not7, float %39, float %38 %40 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %40, 0 %41 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %.04, float noundef 0xC01A4320E0000000) #139 %42 = call float @llvm.fma.f32(float %.05, float %.04, float noundef 0xC01A4320E0000000) %.06 = select i1 %.not8, float %42, float %41 %43 = fmul float %.04, %.06 %44 = fmul float %33, %43 %45 = fadd float %.04, 0x4026ABB800000000 %46 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %46, 0 %47 = call float @llvm.nvvm.fma.rn.ftz.f(float %45, float %.04, float noundef 0x403CD7AC00000000) #139 %48 = call float @llvm.fma.f32(float %45, float %.04, float noundef 0x403CD7AC00000000) %.07 = select i1 %.not9, float %48, float %47 %49 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %49, 0 %50 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %.04, float noundef 0x4033B25900000000) #139 %51 = call float @llvm.fma.f32(float %.07, float %.04, float noundef 0x4033B25900000000) %.08 = select i1 %.not10, float %51, float %50 %52 = fdiv float 1.000000e+00, %.08 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float %44, float %52, float %33) #139 %55 = call float @llvm.fma.f32(float %44, float %52, float %33) %.09 = select i1 %.not11, float %55, float %54 %56 = fcmp ogt float %.03, %.02 %57 = fsub float 0x3FF921FB60000000, %.09 %t0.0 = select i1 %56, float %57, float %.09 %58 = bitcast float %b to i32 %59 = icmp slt i32 %58, 0 %60 = fsub float 0x400921FB60000000, %t0.0 %t0.1 = select i1 %59, float %60, float %t0.0 %61 = bitcast float %t0.1 to i32 %62 = bitcast float %a to i32 %63 = and i32 %62, -2147483648 %64 = or i32 %63, %61 %65 = bitcast i32 %64 to float %66 = fadd float %.02, %.03 %67 = fcmp ole float %66, 0x7FF0000000000000 %t0.2 = select i1 %67, float %65, float %66 br label %68 68: ; preds = %19, %__nv_fmaxf.exit, %8 %t0.4 = phi float [ %15, %8 ], [ %26, %19 ], [ %t0.2, %__nv_fmaxf.exit ] ret float %t0.4 } ; Function Attrs: noinline nounwind define dso_local float @__nv_atanf(float %a) local_unnamed_addr #23 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp ogt float %.0, 1.000000e+00 br i1 %3, label %4, label %__internal_fmad.exit.i 4: ; preds = %__nv_fabsf.exit %5 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0) #141, !srcloc !73 br label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %4, %__nv_fabsf.exit %t1.0 = phi float [ %5, %4 ], [ %.0, %__nv_fabsf.exit ] %6 = fmul float %t1.0, %t1.0 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F64121540000000, float %6, float noundef 0xBF8D7C29E0000000) #139 %9 = call float @llvm.fma.f32(float %6, float noundef 0x3F64121540000000, float noundef 0xBF8D7C29E0000000) %.01 = select i1 %.not1, float %9, float %8 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %6, float noundef 0x3FA4672FC0000000) #139 %12 = call float @llvm.fma.f32(float %.01, float %6, float noundef 0x3FA4672FC0000000) %.02 = select i1 %.not2, float %12, float %11 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %6, float noundef 0xBFB2914F40000000) #139 %15 = call float @llvm.fma.f32(float %.02, float %6, float noundef 0xBFB2914F40000000) %.03 = select i1 %.not3, float %15, float %14 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %6, float noundef 0x3FBAED6420000000) #139 %18 = call float @llvm.fma.f32(float %.03, float %6, float noundef 0x3FBAED6420000000) %.04 = select i1 %.not4, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %19, 0 %20 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %6, float noundef 0xBFC223D100000000) #139 %21 = call float @llvm.fma.f32(float %.04, float %6, float noundef 0xBFC223D100000000) %.05 = select i1 %.not5, float %21, float %20 %22 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %22, 0 %23 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %6, float noundef 0x3FC995EC00000000) #139 %24 = call float @llvm.fma.f32(float %.05, float %6, float noundef 0x3FC995EC00000000) %.06 = select i1 %.not6, float %24, float %23 %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %6, float noundef 0xBFD55544E0000000) #139 %27 = call float @llvm.fma.f32(float %.06, float %6, float noundef 0xBFD55544E0000000) %.07 = select i1 %.not7, float %27, float %26 %28 = fmul float %6, %.07 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float %t1.0, float %t1.0) #139 %31 = call float @llvm.fma.f32(float %28, float %t1.0, float %t1.0) %.08 = select i1 %.not8, float %31, float %30 br i1 %3, label %__internal_fmad.exit, label %36 __internal_fmad.exit: ; preds = %__internal_fmad.exit.i %32 = fneg float %.08 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %32) #139 %35 = call float @llvm.fma.f32(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %32) %.09 = select i1 %.not9, float %35, float %34 br label %36 36: ; preds = %__internal_fmad.exit, %__internal_fmad.exit.i %t1.1 = phi float [ %.09, %__internal_fmad.exit ], [ %.08, %__internal_fmad.exit.i ] %37 = fcmp ugt float %.0, 0x7FF0000000000000 br i1 %37, label %44, label %38 38: ; preds = %36 %39 = bitcast float %t1.1 to i32 %40 = bitcast float %a to i32 %41 = and i32 %40, -2147483648 %42 = or i32 %41, %39 %43 = bitcast i32 %42 to float br label %44 44: ; preds = %38, %36 %t1.2 = phi float [ %43, %38 ], [ %t1.1, %36 ] ret float %t1.2 } ; Function Attrs: noinline nounwind define dso_local float @__nv_asinf(float %a) local_unnamed_addr #24 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fneg float %.01 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 5.000000e-01, float %3, float noundef 5.000000e-01) #139 %6 = call float @llvm.fma.f32(float %3, float noundef 5.000000e-01, float noundef 5.000000e-01) %.02 = select i1 %.not1, float %6, float %5 %7 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.02) #139 %8 = fmul float %7, %.02 %9 = fmul float %7, 5.000000e-01 %10 = fneg float %8 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %10, float %9, float noundef 5.000000e-01) #139 %13 = call float @llvm.fma.f32(float %10, float %9, float noundef 5.000000e-01) %.05 = select i1 %.not2, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %8, float %.05, float %8) #139 %16 = call float @llvm.fma.f32(float %8, float %.05, float %8) %.06 = select i1 %.not3, float %16, float %15 %17 = fcmp oeq float %.01, 1.000000e+00 %18 = select i1 %17, float 0.000000e+00, float %.06 %19 = fcmp ogt float %.01, 0x3FE1EB8520000000 %20 = select i1 %19, float %18, float %.01 %21 = fmul float %20, %20 %22 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %22, 0 %23 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FA9BA5EE0000000, float %21, float noundef 0x3F933952E0000000) #139 %24 = call float @llvm.fma.f32(float %21, float noundef 0x3FA9BA5EE0000000, float noundef 0x3F933952E0000000) %.07 = select i1 %.not4, float %24, float %23 %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %21, float noundef 0x3FA7F21D00000000) #139 %27 = call float @llvm.fma.f32(float %.07, float %21, float noundef 0x3FA7F21D00000000) %.08 = select i1 %.not5, float %27, float %26 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %21, float noundef 0x3FB32799E0000000) #139 %30 = call float @llvm.fma.f32(float %.08, float %21, float noundef 0x3FB32799E0000000) %.09 = select i1 %.not6, float %30, float %29 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %21, float noundef 0x3FC5558080000000) #139 %33 = call float @llvm.fma.f32(float %.09, float %21, float noundef 0x3FC5558080000000) %.04 = select i1 %.not7, float %33, float %32 %34 = fmul float %21, %.04 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %34, float %20, float %20) #139 %37 = call float @llvm.fma.f32(float %34, float %20, float %20) %.0 = select i1 %.not8, float %37, float %36 %38 = fmul float %.0, -2.000000e+00 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %38) #139 %41 = call float @llvm.fma.f32(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %38) %.03 = select i1 %.not9, float %41, float %40 %z.0 = select i1 %19, float %.03, float %.0 %42 = fcmp ugt float %z.0, 0x7FF0000000000000 br i1 %42, label %49, label %43 43: ; preds = %__nv_fabsf.exit %44 = bitcast float %z.0 to i32 %45 = bitcast float %a to i32 %46 = and i32 %45, -2147483648 %47 = or i32 %46, %44 %48 = bitcast i32 %47 to float br label %49 49: ; preds = %43, %__nv_fabsf.exit %z.1 = phi float [ %48, %43 ], [ %z.0, %__nv_fabsf.exit ] ret float %z.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_acosf(float %a) local_unnamed_addr #25 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fneg float %.01 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 5.000000e-01, float %3, float noundef 5.000000e-01) #139 %6 = call float @llvm.fma.f32(float %3, float noundef 5.000000e-01, float noundef 5.000000e-01) %.02 = select i1 %.not1, float %6, float %5 %7 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.02) #139 %8 = fmul float %7, %.02 %9 = fmul float %7, 5.000000e-01 %10 = fneg float %8 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %10, float %9, float noundef 5.000000e-01) #139 %13 = call float @llvm.fma.f32(float %10, float %9, float noundef 5.000000e-01) %.05 = select i1 %.not2, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %8, float %.05, float %8) #139 %16 = call float @llvm.fma.f32(float %8, float %.05, float %8) %.06 = select i1 %.not3, float %16, float %15 %17 = fcmp oeq float %.01, 1.000000e+00 %18 = select i1 %17, float 0.000000e+00, float %.06 %19 = fcmp ogt float %.01, 0x3FE1EB8520000000 %20 = select i1 %19, float %18, float %.01 %21 = bitcast float %20 to i32 %22 = bitcast float %a to i32 %23 = and i32 %22, -2147483648 %24 = or i32 %23, %21 %25 = bitcast i32 %24 to float %26 = fmul float %25, %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FA21D9DE0000000, float %26, float noundef 0x3F91635760000000) #139 %29 = call float @llvm.fma.f32(float %26, float noundef 0x3FA21D9DE0000000, float noundef 0x3F91635760000000) %.07 = select i1 %.not4, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %26, float noundef 0x3F9F805180000000) #139 %32 = call float @llvm.fma.f32(float %.07, float %26, float noundef 0x3F9F805180000000) %.08 = select i1 %.not5, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %26, float noundef 0x3FA6E42720000000) #139 %35 = call float @llvm.fma.f32(float %.08, float %26, float noundef 0x3FA6E42720000000) %.010 = select i1 %.not6, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %26, float noundef 0x3FB3327B60000000) #139 %38 = call float @llvm.fma.f32(float %.010, float %26, float noundef 0x3FB3327B60000000) %.09 = select i1 %.not7, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %26, float noundef 0x3FC55558C0000000) #139 %41 = call float @llvm.fma.f32(float %.09, float %26, float noundef 0x3FC55558C0000000) %.04 = select i1 %.not8, float %41, float %40 %42 = fmul float %26, %.04 %43 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %43, 0 %44 = call float @llvm.nvvm.fma.rn.ftz.f(float %42, float %25, float %25) #139 %45 = call float @llvm.fma.f32(float %42, float %25, float %25) %.0 = select i1 %.not9, float %45, float %44 %46 = fneg float %.0 %47 = select i1 %19, float %.0, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %47) #139 %50 = call float @llvm.fma.f32(float noundef 0x3FEDDCB020000000, float noundef 0x3FFAEE9D60000000, float %47) %.03 = select i1 %.not10, float %50, float %49 %51 = fcmp ogt float %a, 0x3FE1EB8520000000 %52 = select i1 %51, float %.0, float %.03 %53 = fmul float %52, 2.000000e+00 %z.0 = select i1 %19, float %53, float %52 ret float %z.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_logf(float %a) local_unnamed_addr #26 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1059760811 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) #139 %10 = call float @llvm.fma.f32(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) %.08 = select i1 %.not, float %10, float %9 %11 = fadd float %6, -1.000000e+00 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %11, float noundef 0x3FC2073EC0000000) #139 %14 = call float @llvm.fma.f32(float %11, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.010 = select i1 %.not1, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %11, float noundef 0xBFBF19B980000000) #139 %17 = call float @llvm.fma.f32(float %.010, float %11, float noundef 0xBFBF19B980000000) %.011 = select i1 %.not2, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %11, float noundef 0x3FC1E52AA0000000) #139 %20 = call float @llvm.fma.f32(float %.011, float %11, float noundef 0x3FC1E52AA0000000) %.012 = select i1 %.not3, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %11, float noundef 0xBFC55B1720000000) #139 %23 = call float @llvm.fma.f32(float %.012, float %11, float noundef 0xBFC55B1720000000) %.09 = select i1 %.not4, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %11, float noundef 0x3FC99DA160000000) #139 %26 = call float @llvm.fma.f32(float %.09, float %11, float noundef 0x3FC99DA160000000) %.05 = select i1 %.not5, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %11, float noundef 0xBFCFFFE440000000) #139 %29 = call float @llvm.fma.f32(float %.05, float %11, float noundef 0xBFCFFFE440000000) %.01 = select i1 %.not6, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %11, float noundef 0x3FD5554F00000000) #139 %32 = call float @llvm.fma.f32(float %.01, float %11, float noundef 0x3FD5554F00000000) %.0 = select i1 %.not7, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %11, float noundef -5.000000e-01) #139 %35 = call float @llvm.fma.f32(float %.0, float %11, float noundef -5.000000e-01) %.07 = select i1 %.not8, float %35, float %34 %36 = fmul float %11, %.07 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %36, float %11, float %11) #139 %39 = call float @llvm.fma.f32(float %36, float %11, float %11) %.06 = select i1 %.not9, float %39, float %38 %40 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %40, 0 %41 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float noundef 0x3FE62E4300000000, float %.06) #139 %42 = call float @llvm.fma.f32(float %.08, float noundef 0x3FE62E4300000000, float %.06) %.04 = select i1 %.not10, float %42, float %41 %43 = icmp ugt i32 %2, 2139095039 br i1 %43, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i: ; preds = %__nv_fmaf_rn.exit10.i %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %46 = call float @llvm.fma.f32(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.03 = select i1 %.not11, float %46, float %45 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i, %__nv_fmaf_rn.exit10.i %r.i.0 = phi float [ %.03, %__nv_fmaf_rn.exit.i ], [ %.04, %__nv_fmaf_rn.exit10.i ] %47 = fcmp oeq float %.02, 0.000000e+00 %r.i.1 = select i1 %47, float 0xFFF0000000000000, float %r.i.0 ret float %r.i.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_log10f(float %a) local_unnamed_addr #27 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1059760811 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) #139 %10 = call float @llvm.fma.f32(float %7, float noundef 0x3E80000000000000, float noundef %i.i.0) %.08 = select i1 %.not, float %10, float %9 %11 = fadd float %6, -1.000000e+00 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %11, float noundef 0x3FC2073EC0000000) #139 %14 = call float @llvm.fma.f32(float %11, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.010 = select i1 %.not1, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %11, float noundef 0xBFBF19B980000000) #139 %17 = call float @llvm.fma.f32(float %.010, float %11, float noundef 0xBFBF19B980000000) %.011 = select i1 %.not2, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %11, float noundef 0x3FC1E52AA0000000) #139 %20 = call float @llvm.fma.f32(float %.011, float %11, float noundef 0x3FC1E52AA0000000) %.012 = select i1 %.not3, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %11, float noundef 0xBFC55B1720000000) #139 %23 = call float @llvm.fma.f32(float %.012, float %11, float noundef 0xBFC55B1720000000) %.09 = select i1 %.not4, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %11, float noundef 0x3FC99DA160000000) #139 %26 = call float @llvm.fma.f32(float %.09, float %11, float noundef 0x3FC99DA160000000) %.05 = select i1 %.not5, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %11, float noundef 0xBFCFFFE440000000) #139 %29 = call float @llvm.fma.f32(float %.05, float %11, float noundef 0xBFCFFFE440000000) %.01 = select i1 %.not6, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %11, float noundef 0x3FD5554F00000000) #139 %32 = call float @llvm.fma.f32(float %.01, float %11, float noundef 0x3FD5554F00000000) %.0 = select i1 %.not7, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %11, float noundef -5.000000e-01) #139 %35 = call float @llvm.fma.f32(float %.0, float %11, float noundef -5.000000e-01) %.07 = select i1 %.not8, float %35, float %34 %36 = fmul float %11, %.07 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %36, float %11, float %11) #139 %39 = call float @llvm.fma.f32(float %36, float %11, float %11) %.06 = select i1 %.not9, float %39, float %38 %40 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %40, 0 %41 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float noundef 0x3FE62E4300000000, float %.06) #139 %42 = call float @llvm.fma.f32(float %.08, float noundef 0x3FE62E4300000000, float %.06) %.04 = select i1 %.not10, float %42, float %41 %43 = icmp ugt i32 %2, 2139095039 br i1 %43, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i: ; preds = %__nv_fmaf_rn.exit10.i %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %46 = call float @llvm.fma.f32(float %.02, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.03 = select i1 %.not11, float %46, float %45 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i, %__nv_fmaf_rn.exit10.i %r.i.0 = phi float [ %.03, %__nv_fmaf_rn.exit.i ], [ %.04, %__nv_fmaf_rn.exit10.i ] %47 = fcmp oeq float %.02, 0.000000e+00 %r.i.0.op = fmul float %r.i.0, 0x3FDBCB7B20000000 %48 = select i1 %47, float 0xFFF0000000000000, float %r.i.0.op ret float %48 } ; Function Attrs: noinline nounwind define dso_local float @__nv_log1pf(float %a) local_unnamed_addr #28 { __nv_fadd_rz.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.add.rz.ftz.f(float %a, float noundef 1.000000e+00) #139 %2 = call float @llvm.nvvm.add.rz.f(float %a, float noundef 1.000000e+00) #139 %.01 = select i1 %.not, float %2, float %1 %3 = bitcast float %.01 to i32 %4 = add i32 %3, -1061158912 %5 = and i32 %4, -8388608 %6 = bitcast float %a to i32 %7 = sub i32 %6, %5 %8 = bitcast i32 %7 to float %9 = sub i32 1082130432, %5 %10 = bitcast i32 %9 to float %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.500000e-01, float %10, float noundef -1.000000e+00) #139 %13 = call float @llvm.fma.f32(float %10, float noundef 2.500000e-01, float noundef -1.000000e+00) %.09 = select i1 %.not1, float %13, float %12 %14 = fadd float %.09, %8 %15 = sitofp i32 %5 to float %16 = fmul float %15, 0x3E80000000000000 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFA737EF00000000, float %14, float noundef 0x3FBB000240000000) #139 %19 = call float @llvm.fma.f32(float %14, float noundef 0xBFA737EF00000000, float noundef 0x3FBB000240000000) %.012 = select i1 %.not2, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %14, float noundef 0xBFC0EF1C00000000) #139 %22 = call float @llvm.fma.f32(float %.012, float %14, float noundef 0xBFC0EF1C00000000) %.010 = select i1 %.not3, float %22, float %21 %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %14, float noundef 0x3FC28C8EA0000000) #139 %25 = call float @llvm.fma.f32(float %.010, float %14, float noundef 0x3FC28C8EA0000000) %.06 = select i1 %.not4, float %25, float %24 %26 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %26, 0 %27 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %14, float noundef 0xBFC54D1BA0000000) #139 %28 = call float @llvm.fma.f32(float %.06, float %14, float noundef 0xBFC54D1BA0000000) %.02 = select i1 %.not5, float %28, float %27 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %14, float noundef 0x3FC995F3C0000000) #139 %31 = call float @llvm.fma.f32(float %.02, float %14, float noundef 0x3FC995F3C0000000) %.0 = select i1 %.not6, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %14, float noundef 0xBFD0000840000000) #139 %34 = call float @llvm.fma.f32(float %.0, float %14, float noundef 0xBFD0000840000000) %.011 = select i1 %.not7, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %14, float noundef 0x3FD5555CC0000000) #139 %37 = call float @llvm.fma.f32(float %.011, float %14, float noundef 0x3FD5555CC0000000) %.08 = select i1 %.not8, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %14, float noundef -5.000000e-01) #139 %40 = call float @llvm.fma.f32(float %.08, float %14, float noundef -5.000000e-01) %.07 = select i1 %.not9, float %40, float %39 %41 = fmul float %14, %.07 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %41, float %14, float %14) #139 %44 = call float @llvm.fma.f32(float %41, float %14, float %14) %.05 = select i1 %.not10, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %16, float noundef 0x3FE62E4300000000, float %.05) #139 %47 = call float @llvm.fma.f32(float %16, float noundef 0x3FE62E4300000000, float %.05) %.04 = select i1 %.not11, float %47, float %46 %48 = icmp ugt i32 %6, 2139095039 br i1 %48, label %49, label %56 49: ; preds = %__nv_fadd_rz.exit %50 = icmp sgt i32 %6, -1082130432 br i1 %50, label %__nv_fmaf_rn.exit, label %54 __nv_fmaf_rn.exit: ; preds = %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %53 = call float @llvm.fma.f32(float %a, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.03 = select i1 %.not12, float %53, float %52 br label %54 54: ; preds = %__nv_fmaf_rn.exit, %49 %r.0 = phi float [ %.03, %__nv_fmaf_rn.exit ], [ %.04, %49 ] %55 = fcmp oeq float %a, 0.000000e+00 %r.1 = select i1 %55, float -0.000000e+00, float %r.0 br label %56 56: ; preds = %54, %__nv_fadd_rz.exit %r.2 = phi float [ %r.1, %54 ], [ %.04, %__nv_fadd_rz.exit ] ret float %r.2 } ; Function Attrs: noinline nounwind define dso_local float @__nv_acoshf(float %a) local_unnamed_addr #29 { %1 = fadd float %a, -1.000000e+00 %2 = bitcast float %1 to i32 %3 = icmp ugt i32 %2, 1258291200 br i1 %3, label %__nv_fmaf_rn.exit10.i13, label %__nv_fmul_rz.exit __nv_fmaf_rn.exit10.i13: ; preds = %0 %4 = fcmp olt float %1, 0x3810000000000000 %5 = fmul float %1, 0x4160000000000000 %.021 = select i1 %4, float %5, float %1 %i.i11.0 = select i1 %4, float -2.300000e+01, float 0.000000e+00 %6 = bitcast float %.021 to i32 %7 = add i32 %6, -1059760811 %8 = and i32 %7, -8388608 %9 = sub i32 %6, %8 %10 = bitcast i32 %9 to float %11 = sitofp i32 %8 to float %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %11, float noundef 0x3E80000000000000, float noundef %i.i11.0) #139 %14 = call float @llvm.fma.f32(float %11, float noundef 0x3E80000000000000, float noundef %i.i11.0) %.028 = select i1 %.not18, float %14, float %13 %15 = fadd float %10, -1.000000e+00 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %15, float noundef 0x3FC2073EC0000000) #139 %18 = call float @llvm.fma.f32(float %15, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.027 = select i1 %.not19, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %19, 0 %20 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %15, float noundef 0xBFBF19B980000000) #139 %21 = call float @llvm.fma.f32(float %.027, float %15, float noundef 0xBFBF19B980000000) %.023 = select i1 %.not20, float %21, float %20 %22 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %22, 0 %23 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %15, float noundef 0x3FC1E52AA0000000) #139 %24 = call float @llvm.fma.f32(float %.023, float %15, float noundef 0x3FC1E52AA0000000) %.020 = select i1 %.not21, float %24, float %23 %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %15, float noundef 0xBFC55B1720000000) #139 %27 = call float @llvm.fma.f32(float %.020, float %15, float noundef 0xBFC55B1720000000) %.018 = select i1 %.not22, float %27, float %26 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %15, float noundef 0x3FC99DA160000000) #139 %30 = call float @llvm.fma.f32(float %.018, float %15, float noundef 0x3FC99DA160000000) %.014 = select i1 %.not23, float %30, float %29 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %15, float noundef 0xBFCFFFE440000000) #139 %33 = call float @llvm.fma.f32(float %.014, float %15, float noundef 0xBFCFFFE440000000) %.010 = select i1 %.not24, float %33, float %32 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %15, float noundef 0x3FD5554F00000000) #139 %36 = call float @llvm.fma.f32(float %.010, float %15, float noundef 0x3FD5554F00000000) %.06 = select i1 %.not25, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %15, float noundef -5.000000e-01) #139 %39 = call float @llvm.fma.f32(float %.06, float %15, float noundef -5.000000e-01) %.026 = select i1 %.not26, float %39, float %38 %40 = fmul float %15, %.026 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %40, float %15, float %15) #139 %43 = call float @llvm.fma.f32(float %40, float %15, float %15) %.025 = select i1 %.not27, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float noundef 0x3FE62E4300000000, float %.025) #139 %46 = call float @llvm.fma.f32(float %.028, float noundef 0x3FE62E4300000000, float %.025) %.024 = select i1 %.not28, float %46, float %45 %47 = icmp ugt i32 %6, 2139095039 br i1 %47, label %__nv_fmaf_rn.exit.i22, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i22: ; preds = %__nv_fmaf_rn.exit10.i13 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %50 = call float @llvm.fma.f32(float %.021, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.022 = select i1 %.not29, float %50, float %49 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i22, %__nv_fmaf_rn.exit10.i13 %r.i10.0 = phi float [ %.022, %__nv_fmaf_rn.exit.i22 ], [ %.024, %__nv_fmaf_rn.exit10.i13 ] %51 = fcmp oeq float %.021, 0.000000e+00 %r.i10.0.op = fadd float %r.i10.0, 0x3FE62E4300000000 %52 = select i1 %51, float 0xFFF0000000000000, float %r.i10.0.op br label %__nv_log1pf.exit __nv_fmul_rz.exit: ; preds = %0 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.mul.rz.ftz.f(float %a, float %1) #139 %55 = call float @llvm.nvvm.mul.rz.f(float %a, float %1) #139 %.03 = select i1 %.not, float %55, float %54 %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.add.rn.ftz.f(float %.03, float %1) #139 %58 = fadd float %1, %.03 %.01 = select i1 %.not1, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %59, 0 br i1 %.not2, label %66, label %60 60: ; preds = %__nv_fmul_rz.exit %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %61, 0 br i1 %.not17, label %64, label %62 62: ; preds = %60 %63 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.01) #139 br label %__nv_sqrtf.exit 64: ; preds = %60 %65 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.01) #139 br label %__nv_sqrtf.exit 66: ; preds = %__nv_fmul_rz.exit %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %67, 0 br i1 %.not3, label %70, label %68 68: ; preds = %66 %69 = call float @llvm.sqrt.f32(float %.01) br label %__nv_sqrtf.exit 70: ; preds = %66 %71 = call float @llvm.nvvm.sqrt.approx.f(float %.01) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %70, %68, %64, %62 %.0 = phi float [ %63, %62 ], [ %65, %64 ], [ %69, %68 ], [ %71, %70 ] %72 = fadd float %1, %.0 %73 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %73, 0 %74 = call float @llvm.nvvm.add.rz.ftz.f(float %72, float noundef 1.000000e+00) #139 %75 = call float @llvm.nvvm.add.rz.f(float %72, float noundef 1.000000e+00) #139 %.02 = select i1 %.not4, float %75, float %74 %76 = bitcast float %.02 to i32 %77 = add i32 %76, -1061158912 %78 = and i32 %77, -8388608 %79 = bitcast float %72 to i32 %80 = sub i32 %79, %78 %81 = bitcast i32 %80 to float %82 = sub i32 1082130432, %78 %83 = bitcast i32 %82 to float %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %84, 0 %85 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.500000e-01, float %83, float noundef -1.000000e+00) #139 %86 = call float @llvm.fma.f32(float %83, float noundef 2.500000e-01, float noundef -1.000000e+00) %.011 = select i1 %.not5, float %86, float %85 %87 = fadd float %.011, %81 %88 = sitofp i32 %78 to float %89 = fmul float %88, 0x3E80000000000000 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %90, 0 %91 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFA737EF00000000, float %87, float noundef 0x3FBB000240000000) #139 %92 = call float @llvm.fma.f32(float %87, float noundef 0xBFA737EF00000000, float noundef 0x3FBB000240000000) %.013 = select i1 %.not6, float %92, float %91 %93 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %93, 0 %94 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %87, float noundef 0xBFC0EF1C00000000) #139 %95 = call float @llvm.fma.f32(float %.013, float %87, float noundef 0xBFC0EF1C00000000) %.015 = select i1 %.not7, float %95, float %94 %96 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %96, 0 %97 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %87, float noundef 0x3FC28C8EA0000000) #139 %98 = call float @llvm.fma.f32(float %.015, float %87, float noundef 0x3FC28C8EA0000000) %.016 = select i1 %.not8, float %98, float %97 %99 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %99, 0 %100 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %87, float noundef 0xBFC54D1BA0000000) #139 %101 = call float @llvm.fma.f32(float %.016, float %87, float noundef 0xBFC54D1BA0000000) %.017 = select i1 %.not9, float %101, float %100 %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %102, 0 %103 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %87, float noundef 0x3FC995F3C0000000) #139 %104 = call float @llvm.fma.f32(float %.017, float %87, float noundef 0x3FC995F3C0000000) %.019 = select i1 %.not10, float %104, float %103 %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %105, 0 %106 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %87, float noundef 0xBFD0000840000000) #139 %107 = call float @llvm.fma.f32(float %.019, float %87, float noundef 0xBFD0000840000000) %.012 = select i1 %.not11, float %107, float %106 %108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %108, 0 %109 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %87, float noundef 0x3FD5555CC0000000) #139 %110 = call float @llvm.fma.f32(float %.012, float %87, float noundef 0x3FD5555CC0000000) %.09 = select i1 %.not12, float %110, float %109 %111 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %111, 0 %112 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %87, float noundef -5.000000e-01) #139 %113 = call float @llvm.fma.f32(float %.09, float %87, float noundef -5.000000e-01) %.08 = select i1 %.not13, float %113, float %112 %114 = fmul float %87, %.08 %115 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %115, 0 %116 = call float @llvm.nvvm.fma.rn.ftz.f(float %114, float %87, float %87) #139 %117 = call float @llvm.fma.f32(float %114, float %87, float %87) %.07 = select i1 %.not14, float %117, float %116 %118 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %118, 0 %119 = call float @llvm.nvvm.fma.rn.ftz.f(float %89, float noundef 0x3FE62E4300000000, float %.07) #139 %120 = call float @llvm.fma.f32(float %89, float noundef 0x3FE62E4300000000, float %.07) %.05 = select i1 %.not15, float %120, float %119 %121 = icmp ugt i32 %79, 2139095039 br i1 %121, label %122, label %__nv_log1pf.exit 122: ; preds = %__nv_sqrtf.exit %123 = icmp sgt i32 %79, -1082130432 br i1 %123, label %__nv_fmaf_rn.exit.i, label %127 __nv_fmaf_rn.exit.i: ; preds = %122 %124 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %124, 0 %125 = call float @llvm.nvvm.fma.rn.ftz.f(float %72, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %126 = call float @llvm.fma.f32(float %72, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.04 = select i1 %.not16, float %126, float %125 br label %127 127: ; preds = %__nv_fmaf_rn.exit.i, %122 %r.i.0 = phi float [ %.04, %__nv_fmaf_rn.exit.i ], [ %.05, %122 ] %128 = fcmp oeq float %72, 0.000000e+00 %r.i.1 = select i1 %128, float -0.000000e+00, float %r.i.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %__nv_sqrtf.exit, %127, %__internal_accurate_logf.exit %t.0 = phi float [ %52, %__internal_accurate_logf.exit ], [ %r.i.1, %127 ], [ %.05, %__nv_sqrtf.exit ] ret float %t.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_asinhf(float %a) local_unnamed_addr #30 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp ogt float %.0, 0x47D0000000000000 br i1 %3, label %4, label %__internal_fmad.exit 4: ; preds = %__nv_fabsf.exit %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %5, 0 br i1 %.not19, label %8, label %6 6: ; preds = %4 %7 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.0) #139 br label %__nv_fast_logf.exit 8: ; preds = %4 %9 = call float @llvm.nvvm.lg2.approx.f(float %.0) #139 br label %__nv_fast_logf.exit __nv_fast_logf.exit: ; preds = %8, %6 %.01 = phi float [ %7, %6 ], [ %9, %8 ] %10 = fmul float %.01, 0x3FE62E4300000000 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.add.rn.ftz.f(float noundef 0x3FE62E4300000000, float %10) #139 %13 = fadd float %10, 0x3FE62E4300000000 %.02 = select i1 %.not20, float %13, float %12 br label %__nv_log1pf.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %14 = fdiv float 1.000000e+00, %.0 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %14, float %14, float noundef 1.000000e+00) #139 %17 = call float @llvm.fma.f32(float %14, float %14, float noundef 1.000000e+00) %.03 = select i1 %.not1, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %18, 0 br i1 %.not2, label %25, label %19 19: ; preds = %__internal_fmad.exit %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %20, 0 br i1 %.not18, label %23, label %21 21: ; preds = %19 %22 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.03) #139 br label %__nv_sqrtf.exit 23: ; preds = %19 %24 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.03) #139 br label %__nv_sqrtf.exit 25: ; preds = %__internal_fmad.exit %26 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %26, 0 br i1 %.not3, label %29, label %27 27: ; preds = %25 %28 = call float @llvm.sqrt.f32(float %.03) br label %__nv_sqrtf.exit 29: ; preds = %25 %30 = call float @llvm.nvvm.sqrt.approx.f(float %.03) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %29, %27, %23, %21 %.04 = phi float [ %22, %21 ], [ %24, %23 ], [ %28, %27 ], [ %30, %29 ] %31 = fadd float %14, %.04 %32 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %31) #141, !srcloc !73 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float %32, float %.0) #139 %35 = call float @llvm.fma.f32(float %.0, float %32, float %.0) %.05 = select i1 %.not4, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.add.rz.ftz.f(float %.05, float noundef 1.000000e+00) #139 %38 = call float @llvm.nvvm.add.rz.f(float %.05, float noundef 1.000000e+00) #139 %.06 = select i1 %.not5, float %38, float %37 %39 = bitcast float %.06 to i32 %40 = add i32 %39, -1061158912 %41 = and i32 %40, -8388608 %42 = bitcast float %.05 to i32 %43 = sub i32 %42, %41 %44 = bitcast i32 %43 to float %45 = sub i32 1082130432, %41 %46 = bitcast i32 %45 to float %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.500000e-01, float %46, float noundef -1.000000e+00) #139 %49 = call float @llvm.fma.f32(float %46, float noundef 2.500000e-01, float noundef -1.000000e+00) %.014 = select i1 %.not6, float %49, float %48 %50 = fadd float %.014, %44 %51 = sitofp i32 %41 to float %52 = fmul float %51, 0x3E80000000000000 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFA737EF00000000, float %50, float noundef 0x3FBB000240000000) #139 %55 = call float @llvm.fma.f32(float %50, float noundef 0xBFA737EF00000000, float noundef 0x3FBB000240000000) %.016 = select i1 %.not7, float %55, float %54 %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %50, float noundef 0xBFC0EF1C00000000) #139 %58 = call float @llvm.fma.f32(float %.016, float %50, float noundef 0xBFC0EF1C00000000) %.018 = select i1 %.not8, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %50, float noundef 0x3FC28C8EA0000000) #139 %61 = call float @llvm.fma.f32(float %.018, float %50, float noundef 0x3FC28C8EA0000000) %.017 = select i1 %.not9, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %50, float noundef 0xBFC54D1BA0000000) #139 %64 = call float @llvm.fma.f32(float %.017, float %50, float noundef 0xBFC54D1BA0000000) %.013 = select i1 %.not10, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %50, float noundef 0x3FC995F3C0000000) #139 %67 = call float @llvm.fma.f32(float %.013, float %50, float noundef 0x3FC995F3C0000000) %.09 = select i1 %.not11, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %50, float noundef 0xBFD0000840000000) #139 %70 = call float @llvm.fma.f32(float %.09, float %50, float noundef 0xBFD0000840000000) %.015 = select i1 %.not12, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %50, float noundef 0x3FD5555CC0000000) #139 %73 = call float @llvm.fma.f32(float %.015, float %50, float noundef 0x3FD5555CC0000000) %.012 = select i1 %.not13, float %73, float %72 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %50, float noundef -5.000000e-01) #139 %76 = call float @llvm.fma.f32(float %.012, float %50, float noundef -5.000000e-01) %.011 = select i1 %.not14, float %76, float %75 %77 = fmul float %50, %.011 %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %78, 0 %79 = call float @llvm.nvvm.fma.rn.ftz.f(float %77, float %50, float %50) #139 %80 = call float @llvm.fma.f32(float %77, float %50, float %50) %.010 = select i1 %.not15, float %80, float %79 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.fma.rn.ftz.f(float %52, float noundef 0x3FE62E4300000000, float %.010) #139 %83 = call float @llvm.fma.f32(float %52, float noundef 0x3FE62E4300000000, float %.010) %.08 = select i1 %.not16, float %83, float %82 %84 = icmp ugt i32 %42, 2139095039 br i1 %84, label %85, label %__nv_log1pf.exit 85: ; preds = %__nv_sqrtf.exit %86 = icmp sgt i32 %42, -1082130432 br i1 %86, label %__nv_fmaf_rn.exit.i, label %90 __nv_fmaf_rn.exit.i: ; preds = %85 %87 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %87, 0 %88 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %89 = call float @llvm.fma.f32(float %.05, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.07 = select i1 %.not17, float %89, float %88 br label %90 90: ; preds = %__nv_fmaf_rn.exit.i, %85 %r.i2.0 = phi float [ %.07, %__nv_fmaf_rn.exit.i ], [ %.08, %85 ] %91 = fcmp oeq float %.05, 0.000000e+00 %r.i2.1 = select i1 %91, float -0.000000e+00, float %r.i2.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %__nv_sqrtf.exit, %90, %__nv_fast_logf.exit %t.0 = phi float [ %.02, %__nv_fast_logf.exit ], [ %r.i2.1, %90 ], [ %.08, %__nv_sqrtf.exit ] %92 = fcmp ugt float %.0, 0x7FF0000000000000 br i1 %92, label %99, label %93 93: ; preds = %__nv_log1pf.exit %94 = bitcast float %t.0 to i32 %95 = bitcast float %a to i32 %96 = and i32 %95, -2147483648 %97 = or i32 %96, %94 %98 = bitcast i32 %97 to float br label %99 99: ; preds = %93, %__nv_log1pf.exit %t.1 = phi float [ %98, %93 ], [ %t.0, %__nv_log1pf.exit ] ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_atanhf(float %a) local_unnamed_addr #31 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fsub float 1.000000e+00, %.0 %4 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %3) #141, !srcloc !73 %5 = fmul float %4, 2.000000e+00 %6 = fmul float %5, %.0 %7 = fcmp ogt float %.0, 0x47D0000000000000 %t.0 = select i1 %7, float -2.000000e+00, float %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.add.rz.ftz.f(float %t.0, float noundef 1.000000e+00) #139 %10 = call float @llvm.nvvm.add.rz.f(float %t.0, float noundef 1.000000e+00) #139 %.01 = select i1 %.not1, float %10, float %9 %11 = bitcast float %.01 to i32 %12 = add i32 %11, -1061158912 %13 = and i32 %12, -8388608 %14 = bitcast float %t.0 to i32 %15 = sub i32 %14, %13 %16 = bitcast i32 %15 to float %17 = sub i32 1082130432, %13 %18 = bitcast i32 %17 to float %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %19, 0 %20 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.500000e-01, float %18, float noundef -1.000000e+00) #139 %21 = call float @llvm.fma.f32(float %18, float noundef 2.500000e-01, float noundef -1.000000e+00) %.07 = select i1 %.not2, float %21, float %20 %22 = fadd float %.07, %16 %23 = sitofp i32 %13 to float %24 = fmul float %23, 0x3E80000000000000 %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFA737EF00000000, float %22, float noundef 0x3FBB000240000000) #139 %27 = call float @llvm.fma.f32(float %22, float noundef 0xBFA737EF00000000, float noundef 0x3FBB000240000000) %.010 = select i1 %.not3, float %27, float %26 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %22, float noundef 0xBFC0EF1C00000000) #139 %30 = call float @llvm.fma.f32(float %.010, float %22, float noundef 0xBFC0EF1C00000000) %.012 = select i1 %.not4, float %30, float %29 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %22, float noundef 0x3FC28C8EA0000000) #139 %33 = call float @llvm.fma.f32(float %.012, float %22, float noundef 0x3FC28C8EA0000000) %.013 = select i1 %.not5, float %33, float %32 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %22, float noundef 0xBFC54D1BA0000000) #139 %36 = call float @llvm.fma.f32(float %.013, float %22, float noundef 0xBFC54D1BA0000000) %.014 = select i1 %.not6, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %22, float noundef 0x3FC995F3C0000000) #139 %39 = call float @llvm.fma.f32(float %.014, float %22, float noundef 0x3FC995F3C0000000) %.011 = select i1 %.not7, float %39, float %38 %40 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %40, 0 %41 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %22, float noundef 0xBFD0000840000000) #139 %42 = call float @llvm.fma.f32(float %.011, float %22, float noundef 0xBFD0000840000000) %.08 = select i1 %.not8, float %42, float %41 %43 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %43, 0 %44 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %22, float noundef 0x3FD5555CC0000000) #139 %45 = call float @llvm.fma.f32(float %.08, float %22, float noundef 0x3FD5555CC0000000) %.06 = select i1 %.not9, float %45, float %44 %46 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %46, 0 %47 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %22, float noundef -5.000000e-01) #139 %48 = call float @llvm.fma.f32(float %.06, float %22, float noundef -5.000000e-01) %.05 = select i1 %.not10, float %48, float %47 %49 = fmul float %22, %.05 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %49, float %22, float %22) #139 %52 = call float @llvm.fma.f32(float %49, float %22, float %22) %.04 = select i1 %.not11, float %52, float %51 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float %24, float noundef 0x3FE62E4300000000, float %.04) #139 %55 = call float @llvm.fma.f32(float %24, float noundef 0x3FE62E4300000000, float %.04) %.03 = select i1 %.not12, float %55, float %54 %56 = icmp ugt i32 %14, 2139095039 br i1 %56, label %57, label %__nv_log1pf.exit 57: ; preds = %__nv_fabsf.exit %58 = icmp sgt i32 %14, -1082130432 br i1 %58, label %__nv_fmaf_rn.exit.i, label %62 __nv_fmaf_rn.exit.i: ; preds = %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %t.0, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %61 = call float @llvm.fma.f32(float %t.0, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.02 = select i1 %.not14, float %61, float %60 br label %62 62: ; preds = %__nv_fmaf_rn.exit.i, %57 %r.i1.0 = phi float [ %.02, %__nv_fmaf_rn.exit.i ], [ %.03, %57 ] %63 = fcmp oeq float %t.0, 0.000000e+00 %r.i1.1 = select i1 %63, float -0.000000e+00, float %r.i1.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %62, %__nv_fabsf.exit %r.i1.2 = phi float [ %r.i1.1, %62 ], [ %.03, %__nv_fabsf.exit ] %64 = fmul float %r.i1.2, 5.000000e-01 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fabs.ftz.f(float %64) #139 %67 = call float @llvm.fabs.f32(float %64) %.09 = select i1 %.not13, float %67, float %66 %68 = fcmp ugt float %.09, 0x7FF0000000000000 br i1 %68, label %75, label %69 69: ; preds = %__nv_log1pf.exit %70 = bitcast float %64 to i32 %71 = bitcast float %a to i32 %72 = and i32 %71, -2147483648 %73 = or i32 %72, %70 %74 = bitcast i32 %73 to float br label %75 75: ; preds = %69, %__nv_log1pf.exit %t.1 = phi float [ %74, %69 ], [ %64, %__nv_log1pf.exit ] ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_expm1f(float %a) local_unnamed_addr #32 { __nv_fabsf.exit: %0 = fmul float %a, 0x3FF7154760000000 %1 = call float @llvm.round.f32(float %0) #140 %2 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %2, 0 %3 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %4 = call float @llvm.fabs.f32(float %a) %.03 = select i1 %.not, float %4, float %3 %5 = fcmp olt float %.03, 0x3FDA3D70A0000000 %t.0 = select i1 %5, float 0.000000e+00, float %1 %6 = fneg float %t.0 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.fma.rn.ftz.f(float %6, float noundef 0x3FE62E4000000000, float %a) #139 %9 = call float @llvm.fma.f32(float %6, float noundef 0x3FE62E4000000000, float %a) %.04 = select i1 %.not1, float %9, float %8 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fma.rn.ftz.f(float %6, float noundef 0x3EB7F7D1C0000000, float %.04) #139 %12 = call float @llvm.fma.f32(float %6, float noundef 0x3EB7F7D1C0000000, float %.04) %.05 = select i1 %.not2, float %12, float %11 %13 = fcmp oeq float %t.0, 1.280000e+02 %14 = fadd float %t.0, -1.000000e+00 %j.0 = select i1 %13, float %14, float %t.0 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F56BD7CC0000000, float %.05, float noundef 0x3F812ACC60000000) #139 %17 = call float @llvm.fma.f32(float %.05, float noundef 0x3F56BD7CC0000000, float noundef 0x3F812ACC60000000) %.07 = select i1 %.not3, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %.05, float noundef 0x3FA5557C60000000) #139 %20 = call float @llvm.fma.f32(float %.07, float %.05, float noundef 0x3FA5557C60000000) %.08 = select i1 %.not4, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %.05, float noundef 0x3FC5553EC0000000) #139 %23 = call float @llvm.fma.f32(float %.08, float %.05, float noundef 0x3FC5553EC0000000) %.09 = select i1 %.not5, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %.05, float noundef 0x3FDFFFFFC0000000) #139 %26 = call float @llvm.fma.f32(float %.09, float %.05, float noundef 0x3FDFFFFFC0000000) %.06 = select i1 %.not6, float %26, float %25 %27 = fmul float %.05, %.06 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %27, float %.05, float %.05) #139 %30 = call float @llvm.fma.f32(float %27, float %.05, float %.05) %.01 = select i1 %.not7, float %30, float %29 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %31, 0 br i1 %.not8, label %34, label %32 32: ; preds = %__nv_fabsf.exit %33 = call float @llvm.nvvm.ex2.approx.ftz.f(float %j.0) #139 br label %__nv_exp2f.exit 34: ; preds = %__nv_fabsf.exit %35 = call float @llvm.nvvm.ex2.approx.f(float %j.0) #139 br label %__nv_exp2f.exit __nv_exp2f.exit: ; preds = %34, %32 %.0 = phi float [ %33, %32 ], [ %35, %34 ] %36 = fadd float %.0, -1.000000e+00 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %.0, float %36) #139 %39 = call float @llvm.fma.f32(float %.01, float %.0, float %36) %.02 = select i1 %.not9, float %39, float %38 %40 = select i1 %13, float %.02, float -0.000000e+00 %u.0 = fadd float %.02, %40 %41 = fcmp ogt float %j.0, 1.280000e+02 %u.1 = select i1 %41, float 0x7FF0000000000000, float %u.0 %42 = fcmp olt float %j.0, -2.500000e+01 %u.2 = select i1 %42, float -1.000000e+00, float %u.1 %43 = fcmp oeq float %a, 0.000000e+00 %44 = fadd float %a, %a %u.3 = select i1 %43, float %44, float %u.2 ret float %u.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_hypotf(float %a, float %b) local_unnamed_addr #33 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.01 = select i1 %.not1, float %5, float %4 %6 = bitcast float %.01 to i32 %7 = bitcast float %.0 to i32 %min.cond.not = icmp sgt i32 %6, %7 %min = select i1 %min.cond.not, i32 %7, i32 %6 %8 = bitcast i32 %min to float %max = select i1 %min.cond.not, i32 %6, i32 %7 %9 = bitcast i32 %max to float %10 = and i32 %max, -33554432 %11 = sub i32 2122317824, %10 %12 = bitcast i32 %11 to float %13 = fmul float %8, %12 %14 = fmul float %9, %12 %15 = fmul float %13, %13 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %14, float %14, float %15) #139 %18 = call float @llvm.fma.f32(float %14, float %14, float %15) %.03 = select i1 %.not2, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %19, 0 br i1 %.not3, label %26, label %20 20: ; preds = %__nv_fabsf.exit %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %21, 0 br i1 %.not5, label %24, label %22 22: ; preds = %20 %23 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.03) #139 br label %__nv_sqrtf.exit 24: ; preds = %20 %25 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.03) #139 br label %__nv_sqrtf.exit 26: ; preds = %__nv_fabsf.exit %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %27, 0 br i1 %.not4, label %30, label %28 28: ; preds = %26 %29 = call float @llvm.sqrt.f32(float %.03) br label %__nv_sqrtf.exit 30: ; preds = %26 %31 = call float @llvm.nvvm.sqrt.approx.f(float %.03) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %30, %28, %24, %22 %.02 = phi float [ %23, %22 ], [ %25, %24 ], [ %29, %28 ], [ %31, %30 ] %32 = or i32 %10, 8388608 %33 = bitcast i32 %32 to float %34 = fmul float %.02, %33 %35 = fcmp oeq float %8, 0.000000e+00 %res.0 = select i1 %35, float %9, float %34 %36 = fcmp oeq float %8, 0x7FF0000000000000 %res.1 = select i1 %36, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_rhypotf(float %a, float %b) local_unnamed_addr #34 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.01 = select i1 %.not1, float %5, float %4 %6 = bitcast float %.01 to i32 %7 = bitcast float %.0 to i32 %min.cond.not = icmp sgt i32 %6, %7 %min = select i1 %min.cond.not, i32 %7, i32 %6 %8 = bitcast i32 %min to float %max = select i1 %min.cond.not, i32 %6, i32 %7 %9 = bitcast i32 %max to float %10 = and i32 %max, -33554432 %11 = sub i32 2122317824, %10 %12 = bitcast i32 %11 to float %13 = fmul float %8, %12 %14 = fmul float %9, %12 %15 = fmul float %13, %13 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %14, float %14, float %15) #139 %18 = call float @llvm.fma.f32(float %14, float %14, float %15) %.03 = select i1 %.not2, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %19, 0 br i1 %.not3, label %22, label %20 20: ; preds = %__nv_fabsf.exit %21 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.03) #139 br label %__nv_rsqrtf.exit 22: ; preds = %__nv_fabsf.exit %23 = call float @llvm.nvvm.rsqrt.approx.f(float %.03) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %22, %20 %.02 = phi float [ %21, %20 ], [ %23, %22 ] %24 = fmul float %.02, %12 %25 = fcmp oeq float %8, 0x7FF0000000000000 %res.0 = select i1 %25, float 0.000000e+00, float %24 ret float %res.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_norm3df(float %a, float %b, float %c) local_unnamed_addr #35 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.04 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fabs.ftz.f(float %c) #139 %8 = call float @llvm.fabs.f32(float %c) %.05 = select i1 %.not2, float %8, float %7 %9 = fadd float %.02, %.04 %10 = fadd float %9, %.05 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fmin.ftz.f(float %.02, float %.04) #139 %13 = call float @llvm.minnum.f32(float %.02, float %.04) %.06 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fmax.ftz.f(float %.02, float %.04) #139 %16 = call float @llvm.maxnum.f32(float %.02, float %.04) %.07 = select i1 %.not4, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fmin.ftz.f(float %.07, float %.05) #139 %19 = call float @llvm.minnum.f32(float %.07, float %.05) %.08 = select i1 %.not5, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fmax.ftz.f(float %.07, float %.05) #139 %22 = call float @llvm.maxnum.f32(float %.07, float %.05) %.09 = select i1 %.not6, float %22, float %21 %23 = bitcast float %.09 to i32 %24 = and i32 %23, -33554432 %25 = sub i32 2122317824, %24 %26 = bitcast i32 %25 to float %27 = fmul float %.08, %26 %28 = fmul float %.06, %26 %29 = fmul float %.09, %26 %30 = fmul float %27, %27 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float %28, float %30) #139 %33 = call float @llvm.fma.f32(float %28, float %28, float %30) %.01 = select i1 %.not7, float %33, float %32 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.fma.rn.ftz.f(float %29, float %29, float %.01) #139 %36 = call float @llvm.fma.f32(float %29, float %29, float %.01) %.0 = select i1 %.not8, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %37, 0 br i1 %.not9, label %44, label %38 38: ; preds = %__nv_fabsf.exit %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %39, 0 br i1 %.not11, label %42, label %40 40: ; preds = %38 %41 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 42: ; preds = %38 %43 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 44: ; preds = %__nv_fabsf.exit %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %45, 0 br i1 %.not10, label %48, label %46 46: ; preds = %44 %47 = call float @llvm.sqrt.f32(float %.0) br label %__nv_sqrtf.exit 48: ; preds = %44 %49 = call float @llvm.nvvm.sqrt.approx.f(float %.0) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %48, %46, %42, %40 %.03 = phi float [ %41, %40 ], [ %43, %42 ], [ %47, %46 ], [ %49, %48 ] %50 = or i32 %24, 8388608 %51 = bitcast i32 %50 to float %52 = fmul float %.03, %51 %53 = fcmp ogt float %10, %.09 %res.0 = select i1 %53, float %52, float %10 %54 = fcmp oeq float %.09, 0x7FF0000000000000 %res.1 = select i1 %54, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_rnorm3df(float %a, float %b, float %c) local_unnamed_addr #36 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.03 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fabs.ftz.f(float %c) #139 %8 = call float @llvm.fabs.f32(float %c) %.04 = select i1 %.not2, float %8, float %7 %9 = fadd float %.02, %.03 %10 = fadd float %9, %.04 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fmin.ftz.f(float %.02, float %.03) #139 %13 = call float @llvm.minnum.f32(float %.02, float %.03) %.05 = select i1 %.not3, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fmax.ftz.f(float %.02, float %.03) #139 %16 = call float @llvm.maxnum.f32(float %.02, float %.03) %.06 = select i1 %.not4, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fmin.ftz.f(float %.06, float %.04) #139 %19 = call float @llvm.minnum.f32(float %.06, float %.04) %.08 = select i1 %.not5, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fmax.ftz.f(float %.06, float %.04) #139 %22 = call float @llvm.maxnum.f32(float %.06, float %.04) %.09 = select i1 %.not6, float %22, float %21 %23 = bitcast float %.09 to i32 %24 = and i32 %23, -33554432 %25 = sub i32 2122317824, %24 %26 = bitcast i32 %25 to float %27 = fmul float %.08, %26 %28 = fmul float %.05, %26 %29 = fmul float %.09, %26 %30 = fmul float %27, %27 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float %28, float %30) #139 %33 = call float @llvm.fma.f32(float %28, float %28, float %30) %.01 = select i1 %.not7, float %33, float %32 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.fma.rn.ftz.f(float %29, float %29, float %.01) #139 %36 = call float @llvm.fma.f32(float %29, float %29, float %.01) %.0 = select i1 %.not8, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %37, 0 br i1 %.not9, label %40, label %38 38: ; preds = %__nv_fabsf.exit %39 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0) #139 br label %__nv_rsqrtf.exit 40: ; preds = %__nv_fabsf.exit %41 = call float @llvm.nvvm.rsqrt.approx.f(float %.0) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %40, %38 %.07 = phi float [ %39, %38 ], [ %41, %40 ] %42 = fmul float %.07, %26 %43 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %43, 0 %44 = call float @llvm.nvvm.fabs.ftz.f(float %10) #139 %45 = call float @llvm.fabs.f32(float %10) %.010 = select i1 %.not10, float %45, float %44 %46 = fcmp ugt float %.010, 0x7FF0000000000000 %res.0 = select i1 %46, float %10, float %42 %47 = fcmp oeq float %.09, 0x7FF0000000000000 %res.1 = select i1 %47, float 0.000000e+00, float %res.0 ret float %res.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_norm4df(float %a, float %b, float %c, float %d) local_unnamed_addr #37 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.02 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.03 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fabs.ftz.f(float %c) #139 %8 = call float @llvm.fabs.f32(float %c) %.04 = select i1 %.not2, float %8, float %7 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fabs.ftz.f(float %d) #139 %11 = call float @llvm.fabs.f32(float %d) %.06 = select i1 %.not3, float %11, float %10 %12 = fadd float %.02, %.03 %13 = fadd float %12, %.06 %14 = fadd float %.04, %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fmin.ftz.f(float %.02, float %.03) #139 %17 = call float @llvm.minnum.f32(float %.02, float %.03) %.07 = select i1 %.not4, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fmax.ftz.f(float %.02, float %.03) #139 %20 = call float @llvm.maxnum.f32(float %.02, float %.03) %.08 = select i1 %.not5, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fmin.ftz.f(float %.08, float %.04) #139 %23 = call float @llvm.minnum.f32(float %.08, float %.04) %.09 = select i1 %.not6, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fmax.ftz.f(float %.08, float %.04) #139 %26 = call float @llvm.maxnum.f32(float %.08, float %.04) %.010 = select i1 %.not7, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fmin.ftz.f(float %.010, float %.06) #139 %29 = call float @llvm.minnum.f32(float %.010, float %.06) %.011 = select i1 %.not8, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fmax.ftz.f(float %.010, float %.06) #139 %32 = call float @llvm.maxnum.f32(float %.010, float %.06) %.012 = select i1 %.not9, float %32, float %31 %33 = bitcast float %.012 to i32 %34 = and i32 %33, -33554432 %35 = sub i32 2122317824, %34 %36 = bitcast i32 %35 to float %37 = fmul float %.011, %36 %38 = fmul float %.09, %36 %39 = fmul float %.07, %36 %40 = fmul float %.012, %36 %41 = fmul float %37, %37 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %38, float %38, float %41) #139 %44 = call float @llvm.fma.f32(float %38, float %38, float %41) %.05 = select i1 %.not10, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %39, float %39, float %.05) #139 %47 = call float @llvm.fma.f32(float %39, float %39, float %.05) %.01 = select i1 %.not11, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %40, float %40, float %.01) #139 %50 = call float @llvm.fma.f32(float %40, float %40, float %.01) %.0 = select i1 %.not12, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %51, 0 br i1 %.not13, label %58, label %52 52: ; preds = %__nv_fabsf.exit %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %53, 0 br i1 %.not15, label %56, label %54 54: ; preds = %52 %55 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 56: ; preds = %52 %57 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 58: ; preds = %__nv_fabsf.exit %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %59, 0 br i1 %.not14, label %62, label %60 60: ; preds = %58 %61 = call float @llvm.sqrt.f32(float %.0) br label %__nv_sqrtf.exit 62: ; preds = %58 %63 = call float @llvm.nvvm.sqrt.approx.f(float %.0) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %62, %60, %56, %54 %.013 = phi float [ %55, %54 ], [ %57, %56 ], [ %61, %60 ], [ %63, %62 ] %64 = or i32 %34, 8388608 %65 = bitcast i32 %64 to float %66 = fmul float %.013, %65 %67 = fcmp ogt float %14, %.012 %res.0 = select i1 %67, float %66, float %14 %68 = fcmp oeq float %.012, 0x7FF0000000000000 %res.1 = select i1 %68, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_rnorm4df(float %a, float %b, float %c, float %d) local_unnamed_addr #38 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.04 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %5 = call float @llvm.fabs.f32(float %b) %.05 = select i1 %.not1, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fabs.ftz.f(float %c) #139 %8 = call float @llvm.fabs.f32(float %c) %.06 = select i1 %.not2, float %8, float %7 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fabs.ftz.f(float %d) #139 %11 = call float @llvm.fabs.f32(float %d) %.07 = select i1 %.not3, float %11, float %10 %12 = fadd float %.04, %.05 %13 = fadd float %12, %.07 %14 = fadd float %.06, %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fmin.ftz.f(float %.04, float %.05) #139 %17 = call float @llvm.minnum.f32(float %.04, float %.05) %.08 = select i1 %.not4, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fmax.ftz.f(float %.04, float %.05) #139 %20 = call float @llvm.maxnum.f32(float %.04, float %.05) %.010 = select i1 %.not5, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fmin.ftz.f(float %.010, float %.06) #139 %23 = call float @llvm.minnum.f32(float %.010, float %.06) %.011 = select i1 %.not6, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fmax.ftz.f(float %.010, float %.06) #139 %26 = call float @llvm.maxnum.f32(float %.010, float %.06) %.012 = select i1 %.not7, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fmin.ftz.f(float %.012, float %.07) #139 %29 = call float @llvm.minnum.f32(float %.012, float %.07) %.013 = select i1 %.not8, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fmax.ftz.f(float %.012, float %.07) #139 %32 = call float @llvm.maxnum.f32(float %.012, float %.07) %.014 = select i1 %.not9, float %32, float %31 %33 = bitcast float %.014 to i32 %34 = and i32 %33, -33554432 %35 = sub i32 2122317824, %34 %36 = bitcast i32 %35 to float %37 = fmul float %.013, %36 %38 = fmul float %.011, %36 %39 = fmul float %.08, %36 %40 = fmul float %.014, %36 %41 = fmul float %37, %37 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %38, float %38, float %41) #139 %44 = call float @llvm.fma.f32(float %38, float %38, float %41) %.02 = select i1 %.not10, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %39, float %39, float %.02) #139 %47 = call float @llvm.fma.f32(float %39, float %39, float %.02) %.01 = select i1 %.not11, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %40, float %40, float %.01) #139 %50 = call float @llvm.fma.f32(float %40, float %40, float %.01) %.0 = select i1 %.not12, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %51, 0 br i1 %.not13, label %54, label %52 52: ; preds = %__nv_fabsf.exit %53 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0) #139 br label %__nv_rsqrtf.exit 54: ; preds = %__nv_fabsf.exit %55 = call float @llvm.nvvm.rsqrt.approx.f(float %.0) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %54, %52 %.03 = phi float [ %53, %52 ], [ %55, %54 ] %56 = fmul float %.03, %36 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fabs.ftz.f(float %14) #139 %59 = call float @llvm.fabs.f32(float %14) %.09 = select i1 %.not14, float %59, float %58 %60 = fcmp ugt float %.09, 0x7FF0000000000000 %res.0 = select i1 %60, float %14, float %56 %61 = fcmp oeq float %.014, 0x7FF0000000000000 %res.1 = select i1 %61, float 0.000000e+00, float %res.0 ret float %res.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_normf(i32 %dim, float* nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) %t) local_unnamed_addr #39 { __nv_fabsf.exit: %0 = load float, float* %t, align 4 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.fabs.ftz.f(float %0) #139 %3 = call float @llvm.fabs.f32(float %0) %.02 = select i1 %.not, float %3, float %2 %4 = icmp sgt i32 %dim, 1 br i1 %4, label %__nv_fabsf.exit1.lr.ph, label %._crit_edge __nv_fabsf.exit1.lr.ph: ; preds = %__nv_fabsf.exit %5 = add nsw i32 %dim, -1 %xtraiter = and i32 %5, 1 %6 = icmp eq i32 %dim, 2 br i1 %6, label %._crit_edge.unr-lcssa, label %__nv_fabsf.exit1.lr.ph.new __nv_fabsf.exit1.lr.ph.new: ; preds = %__nv_fabsf.exit1.lr.ph %unroll_iter = and i32 %5, -2 br label %__nv_fabsf.exit1 __nv_fabsf.exit1: ; preds = %__nv_fabsf.exit1, %__nv_fabsf.exit1.lr.ph.new %i.015 = phi i32 [ 1, %__nv_fabsf.exit1.lr.ph.new ], [ %26, %__nv_fabsf.exit1 ] %largest.014 = phi float [ %.02, %__nv_fabsf.exit1.lr.ph.new ], [ %.05.1, %__nv_fabsf.exit1 ] %niter = phi i32 [ 0, %__nv_fabsf.exit1.lr.ph.new ], [ %niter.next.1, %__nv_fabsf.exit1 ] %7 = zext i32 %i.015 to i64 %8 = getelementptr inbounds float, float* %t, i64 %7 %9 = load float, float* %8, align 4 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fabs.ftz.f(float %9) #139 %12 = call float @llvm.fabs.f32(float %9) %.04 = select i1 %.not9, float %12, float %11 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fmax.ftz.f(float %.04, float %largest.014) #139 %15 = call float @llvm.maxnum.f32(float %.04, float %largest.014) %.05 = select i1 %.not10, float %15, float %14 %16 = add nuw nsw i32 %i.015, 1 %17 = zext i32 %16 to i64 %18 = getelementptr inbounds float, float* %t, i64 %17 %19 = load float, float* %18, align 4 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9.1 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fabs.ftz.f(float %19) #139 %22 = call float @llvm.fabs.f32(float %19) %.04.1 = select i1 %.not9.1, float %22, float %21 %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10.1 = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fmax.ftz.f(float %.04.1, float %.05) #139 %25 = call float @llvm.maxnum.f32(float %.04.1, float %.05) %.05.1 = select i1 %.not10.1, float %25, float %24 %26 = add nuw nsw i32 %i.015, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %._crit_edge.unr-lcssa.loopexit, label %__nv_fabsf.exit1 ._crit_edge.unr-lcssa.loopexit: ; preds = %__nv_fabsf.exit1 %phi.cast = zext i32 %26 to i64 br label %._crit_edge.unr-lcssa ._crit_edge.unr-lcssa: ; preds = %._crit_edge.unr-lcssa.loopexit, %__nv_fabsf.exit1.lr.ph %.05.lcssa.ph = phi float [ undef, %__nv_fabsf.exit1.lr.ph ], [ %.05.1, %._crit_edge.unr-lcssa.loopexit ] %i.015.unr = phi i64 [ 1, %__nv_fabsf.exit1.lr.ph ], [ %phi.cast, %._crit_edge.unr-lcssa.loopexit ] %largest.014.unr = phi float [ %.02, %__nv_fabsf.exit1.lr.ph ], [ %.05.1, %._crit_edge.unr-lcssa.loopexit ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %._crit_edge, label %__nv_fabsf.exit1.epil.preheader __nv_fabsf.exit1.epil.preheader: ; preds = %._crit_edge.unr-lcssa %27 = getelementptr inbounds float, float* %t, i64 %i.015.unr %28 = load float, float* %27, align 4 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9.epil = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fabs.ftz.f(float %28) #139 %31 = call float @llvm.fabs.f32(float %28) %.04.epil = select i1 %.not9.epil, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10.epil = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fmax.ftz.f(float %.04.epil, float %largest.014.unr) #139 %34 = call float @llvm.maxnum.f32(float %.04.epil, float %largest.014.unr) %.05.epil = select i1 %.not10.epil, float %34, float %33 br label %._crit_edge ._crit_edge: ; preds = %__nv_fabsf.exit1.epil.preheader, %._crit_edge.unr-lcssa, %__nv_fabsf.exit %largest.0.lcssa = phi float [ %.02, %__nv_fabsf.exit ], [ %.05.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.05.epil, %__nv_fabsf.exit1.epil.preheader ] %35 = bitcast float %largest.0.lcssa to i32 %36 = and i32 %35, -33554432 %37 = sub i32 2122317824, %36 %38 = bitcast i32 %37 to float %39 = fmul float %largest.0.lcssa, %38 %40 = icmp sgt i32 %dim, 0 br i1 %40, label %__nv_fabsf.exit5, label %__nv_fmaf_rn.exit6 __nv_fabsf.exit5: ; preds = %._crit_edge, %54 %j.013 = phi i32 [ %j.1, %54 ], [ 0, %._crit_edge ] %i.112 = phi i32 [ %55, %54 ], [ 0, %._crit_edge ] %res0.011 = phi float [ %res0.1, %54 ], [ 0.000000e+00, %._crit_edge ] %41 = zext i32 %i.112 to i64 %42 = getelementptr inbounds float, float* %t, i64 %41 %43 = load float, float* %42, align 4 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fabs.ftz.f(float %43) #139 %46 = call float @llvm.fabs.f32(float %43) %.03 = select i1 %.not7, float %46, float %45 %47 = fmul float %.03, %38 %48 = fcmp une float %47, %39 %49 = icmp ne i32 %i.112, %j.013 %or.cond = select i1 %48, i1 true, i1 %49 br i1 %or.cond, label %__nv_fmaf_rn.exit, label %54 __nv_fmaf_rn.exit: ; preds = %__nv_fabsf.exit5 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %47, float %47, float %res0.011) #139 %52 = call float @llvm.fma.f32(float %47, float %47, float %res0.011) %.01 = select i1 %.not8, float %52, float %51 %53 = add nsw i32 %j.013, 1 br label %54 54: ; preds = %__nv_fmaf_rn.exit, %__nv_fabsf.exit5 %res0.1 = phi float [ %.01, %__nv_fmaf_rn.exit ], [ %res0.011, %__nv_fabsf.exit5 ] %j.1 = phi i32 [ %53, %__nv_fmaf_rn.exit ], [ %j.013, %__nv_fabsf.exit5 ] %55 = add nuw nsw i32 %i.112, 1 %exitcond.not = icmp eq i32 %55, %dim br i1 %exitcond.not, label %__nv_fmaf_rn.exit6, label %__nv_fabsf.exit5 __nv_fmaf_rn.exit6: ; preds = %54, %._crit_edge %res0.0.lcssa = phi float [ 0.000000e+00, %._crit_edge ], [ %res0.1, %54 ] %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %39, float %39, float %res0.0.lcssa) #139 %58 = call float @llvm.fma.f32(float %39, float %39, float %res0.0.lcssa) %.0 = select i1 %.not3, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %59, 0 br i1 %.not4, label %66, label %60 60: ; preds = %__nv_fmaf_rn.exit6 %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %61, 0 br i1 %.not6, label %64, label %62 62: ; preds = %60 %63 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 64: ; preds = %60 %65 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %.0) #139 br label %__nv_sqrtf.exit 66: ; preds = %__nv_fmaf_rn.exit6 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %67, 0 br i1 %.not5, label %70, label %68 68: ; preds = %66 %69 = call float @llvm.sqrt.f32(float %.0) br label %__nv_sqrtf.exit 70: ; preds = %66 %71 = call float @llvm.nvvm.sqrt.approx.f(float %.0) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %70, %68, %64, %62 %.06 = phi float [ %63, %62 ], [ %65, %64 ], [ %69, %68 ], [ %71, %70 ] %72 = or i32 %36, 8388608 %73 = bitcast i32 %72 to float %74 = fmul float %.06, %73 %75 = fcmp oeq float %res0.0.lcssa, 0.000000e+00 %76 = fcmp oeq float %largest.0.lcssa, 0x7FF0000000000000 %or.cond2 = select i1 %75, i1 true, i1 %76 %res.0 = select i1 %or.cond2, float %largest.0.lcssa, float %74 ret float %res.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_rnormf(i32 %dim, float* nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) %t) local_unnamed_addr #40 { __nv_fabsf.exit: %0 = load float, float* %t, align 4 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.fabs.ftz.f(float %0) #139 %3 = call float @llvm.fabs.f32(float %0) %.03 = select i1 %.not, float %3, float %2 %4 = icmp sgt i32 %dim, 1 br i1 %4, label %__nv_fabsf.exit1.lr.ph, label %._crit_edge __nv_fabsf.exit1.lr.ph: ; preds = %__nv_fabsf.exit %5 = add nsw i32 %dim, -1 %xtraiter = and i32 %5, 1 %6 = icmp eq i32 %dim, 2 br i1 %6, label %._crit_edge.unr-lcssa, label %__nv_fabsf.exit1.lr.ph.new __nv_fabsf.exit1.lr.ph.new: ; preds = %__nv_fabsf.exit1.lr.ph %unroll_iter = and i32 %5, -2 br label %__nv_fabsf.exit1 __nv_fabsf.exit1: ; preds = %__nv_fabsf.exit1, %__nv_fabsf.exit1.lr.ph.new %i.011 = phi i32 [ 1, %__nv_fabsf.exit1.lr.ph.new ], [ %26, %__nv_fabsf.exit1 ] %largest.010 = phi float [ %.03, %__nv_fabsf.exit1.lr.ph.new ], [ %.05.1, %__nv_fabsf.exit1 ] %niter = phi i32 [ 0, %__nv_fabsf.exit1.lr.ph.new ], [ %niter.next.1, %__nv_fabsf.exit1 ] %7 = zext i32 %i.011 to i64 %8 = getelementptr inbounds float, float* %t, i64 %7 %9 = load float, float* %8, align 4 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fabs.ftz.f(float %9) #139 %12 = call float @llvm.fabs.f32(float %9) %.04 = select i1 %.not5, float %12, float %11 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fmax.ftz.f(float %.04, float %largest.010) #139 %15 = call float @llvm.maxnum.f32(float %.04, float %largest.010) %.05 = select i1 %.not6, float %15, float %14 %16 = add nuw nsw i32 %i.011, 1 %17 = zext i32 %16 to i64 %18 = getelementptr inbounds float, float* %t, i64 %17 %19 = load float, float* %18, align 4 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5.1 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fabs.ftz.f(float %19) #139 %22 = call float @llvm.fabs.f32(float %19) %.04.1 = select i1 %.not5.1, float %22, float %21 %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6.1 = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fmax.ftz.f(float %.04.1, float %.05) #139 %25 = call float @llvm.maxnum.f32(float %.04.1, float %.05) %.05.1 = select i1 %.not6.1, float %25, float %24 %26 = add nuw nsw i32 %i.011, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %._crit_edge.unr-lcssa.loopexit, label %__nv_fabsf.exit1 ._crit_edge.unr-lcssa.loopexit: ; preds = %__nv_fabsf.exit1 %phi.cast = zext i32 %26 to i64 br label %._crit_edge.unr-lcssa ._crit_edge.unr-lcssa: ; preds = %._crit_edge.unr-lcssa.loopexit, %__nv_fabsf.exit1.lr.ph %.05.lcssa.ph = phi float [ undef, %__nv_fabsf.exit1.lr.ph ], [ %.05.1, %._crit_edge.unr-lcssa.loopexit ] %i.011.unr = phi i64 [ 1, %__nv_fabsf.exit1.lr.ph ], [ %phi.cast, %._crit_edge.unr-lcssa.loopexit ] %largest.010.unr = phi float [ %.03, %__nv_fabsf.exit1.lr.ph ], [ %.05.1, %._crit_edge.unr-lcssa.loopexit ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %._crit_edge, label %__nv_fabsf.exit1.epil.preheader __nv_fabsf.exit1.epil.preheader: ; preds = %._crit_edge.unr-lcssa %27 = getelementptr inbounds float, float* %t, i64 %i.011.unr %28 = load float, float* %27, align 4 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5.epil = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fabs.ftz.f(float %28) #139 %31 = call float @llvm.fabs.f32(float %28) %.04.epil = select i1 %.not5.epil, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6.epil = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fmax.ftz.f(float %.04.epil, float %largest.010.unr) #139 %34 = call float @llvm.maxnum.f32(float %.04.epil, float %largest.010.unr) %.05.epil = select i1 %.not6.epil, float %34, float %33 br label %._crit_edge ._crit_edge: ; preds = %__nv_fabsf.exit1.epil.preheader, %._crit_edge.unr-lcssa, %__nv_fabsf.exit %largest.0.lcssa = phi float [ %.03, %__nv_fabsf.exit ], [ %.05.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.05.epil, %__nv_fabsf.exit1.epil.preheader ] %35 = bitcast float %largest.0.lcssa to i32 %36 = and i32 %35, -33554432 %37 = sub i32 2122317824, %36 %38 = bitcast i32 %37 to float %39 = fmul float %largest.0.lcssa, %38 %40 = icmp sgt i32 %dim, 0 br i1 %40, label %__nv_fabsf.exit4, label %__nv_fmaf_rn.exit __nv_fabsf.exit4: ; preds = %._crit_edge, %54 %j.09 = phi i32 [ %j.1, %54 ], [ 0, %._crit_edge ] %i.18 = phi i32 [ %55, %54 ], [ 0, %._crit_edge ] %res0.07 = phi float [ %res0.1, %54 ], [ 0.000000e+00, %._crit_edge ] %41 = zext i32 %i.18 to i64 %42 = getelementptr inbounds float, float* %t, i64 %41 %43 = load float, float* %42, align 4 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fabs.ftz.f(float %43) #139 %46 = call float @llvm.fabs.f32(float %43) %.01 = select i1 %.not3, float %46, float %45 %47 = fmul float %.01, %38 %48 = fcmp une float %47, %39 %49 = icmp ne i32 %i.18, %j.09 %or.cond = select i1 %48, i1 true, i1 %49 br i1 %or.cond, label %__nv_fmaf_rn.exit5, label %54 __nv_fmaf_rn.exit5: ; preds = %__nv_fabsf.exit4 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %47, float %47, float %res0.07) #139 %52 = call float @llvm.fma.f32(float %47, float %47, float %res0.07) %.0 = select i1 %.not4, float %52, float %51 %53 = add nsw i32 %j.09, 1 br label %54 54: ; preds = %__nv_fmaf_rn.exit5, %__nv_fabsf.exit4 %res0.1 = phi float [ %.0, %__nv_fmaf_rn.exit5 ], [ %res0.07, %__nv_fabsf.exit4 ] %j.1 = phi i32 [ %53, %__nv_fmaf_rn.exit5 ], [ %j.09, %__nv_fabsf.exit4 ] %55 = add nuw nsw i32 %i.18, 1 %exitcond.not = icmp eq i32 %55, %dim br i1 %exitcond.not, label %__nv_fmaf_rn.exit, label %__nv_fabsf.exit4 __nv_fmaf_rn.exit: ; preds = %54, %._crit_edge %res0.0.lcssa = phi float [ 0.000000e+00, %._crit_edge ], [ %res0.1, %54 ] %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %39, float %39, float %res0.0.lcssa) #139 %58 = call float @llvm.fma.f32(float %39, float %39, float %res0.0.lcssa) %.02 = select i1 %.not1, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %59, 0 br i1 %.not2, label %62, label %60 60: ; preds = %__nv_fmaf_rn.exit %61 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.02) #139 br label %__nv_rsqrtf.exit 62: ; preds = %__nv_fmaf_rn.exit %63 = call float @llvm.nvvm.rsqrt.approx.f(float %.02) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %62, %60 %.06 = phi float [ %61, %60 ], [ %63, %62 ] %64 = fmul float %.06, %38 %65 = fcmp oeq float %largest.0.lcssa, 0x7FF0000000000000 %res.0 = select i1 %65, float 0.000000e+00, float %64 ret float %res.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_cbrtf(float %a) local_unnamed_addr #41 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 br i1 %.not1, label %6, label %4 4: ; preds = %__nv_fabsf.exit %5 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.01) #139 br label %__nv_fast_log2f.exit 6: ; preds = %__nv_fabsf.exit %7 = call float @llvm.nvvm.lg2.approx.f(float %.01) #139 br label %__nv_fast_log2f.exit __nv_fast_log2f.exit: ; preds = %6, %4 %.02 = phi float [ %5, %4 ], [ %7, %6 ] %8 = fmul float %.02, 0x3FD5555560000000 %9 = call float @llvm.nvvm.ex2.approx.ftz.f(float %8) #139 %10 = fmul float %9, %9 %11 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %10) #141, !srcloc !73 %12 = fneg float %.01 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fma.rn.ftz.f(float %11, float %12, float %9) #139 %15 = call float @llvm.fma.f32(float %11, float %12, float %9) %.0 = select i1 %.not2, float %15, float %14 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0, float noundef 0xBFD5555560000000, float %9) #139 %18 = call float @llvm.fma.f32(float %.0, float noundef 0xBFD5555560000000, float %9) %.03 = select i1 %.not3, float %18, float %17 %19 = fcmp olt float %a, 0.000000e+00 %20 = fneg float %.03 %t.0 = select i1 %19, float %20, float %.03 %21 = fadd float %a, %a %22 = fcmp oeq float %21, %a %t.1 = select i1 %22, float %21, float %t.0 ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_rcbrtf(float %a) local_unnamed_addr #42 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %3, 0 br i1 %.not1, label %6, label %4 4: ; preds = %__nv_fabsf.exit %5 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.01) #139 br label %__nv_fast_log2f.exit 6: ; preds = %__nv_fabsf.exit %7 = call float @llvm.nvvm.lg2.approx.f(float %.01) #139 br label %__nv_fast_log2f.exit __nv_fast_log2f.exit: ; preds = %6, %4 %.02 = phi float [ %5, %4 ], [ %7, %6 ] %8 = fmul float %.02, 0xBFD5555560000000 %9 = call float @llvm.nvvm.ex2.approx.ftz.f(float %8) #139 %10 = fmul float %9, %9 %11 = fneg float %.01 %12 = fmul float %9, %11 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fma.rn.ftz.f(float %10, float %12, float noundef 1.000000e+00) #139 %15 = call float @llvm.fma.f32(float %10, float %12, float noundef 1.000000e+00) %.03 = select i1 %.not2, float %15, float %14 %16 = fmul float %9, 0x3FD5555560000000 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %16, float %9) #139 %19 = call float @llvm.fma.f32(float %.03, float %16, float %9) %.0 = select i1 %.not3, float %19, float %18 %20 = fcmp olt float %a, 0.000000e+00 %21 = fneg float %.0 %t.0 = select i1 %20, float %21, float %.0 %22 = fadd float %a, %a %23 = fcmp oeq float %22, %a br i1 %23, label %24, label %26 24: ; preds = %__nv_fast_log2f.exit %25 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %a) #141, !srcloc !73 br label %26 26: ; preds = %24, %__nv_fast_log2f.exit %t.1 = phi float [ %25, %24 ], [ %t.0, %__nv_fast_log2f.exit ] ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_j0f(float %a) local_unnamed_addr #43 { __nv_fabsf.exit: %result.i.i.i = alloca [7 x i32], align 4 %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp ugt float %.01, 8.000000e+00 br i1 %3, label %__nv_isinff.exit, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %4 = fadd float %.01, 0xC0033D1520000000 %5 = fadd float %4, 0xBE7D2E3660000000 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %5, float noundef 0xBD35953660000000) #139 %8 = call float @llvm.fma.f32(float %5, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.02 = select i1 %.not39, float %8, float %7 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %5, float noundef 0x3D87E1C300000000) #139 %11 = call float @llvm.fma.f32(float %.02, float %5, float noundef 0x3D87E1C300000000) %.03 = select i1 %.not40, float %11, float %10 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %5, float noundef 0xBD9A82F020000000) #139 %14 = call float @llvm.fma.f32(float %.03, float %5, float noundef 0xBD9A82F020000000) %.05 = select i1 %.not41, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %5, float noundef 0xBDFD21E700000000) #139 %17 = call float @llvm.fma.f32(float %.05, float %5, float noundef 0xBDFD21E700000000) %.06 = select i1 %.not42, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %5, float noundef 0x3E04060B60000000) #139 %20 = call float @llvm.fma.f32(float %.06, float %5, float noundef 0x3E04060B60000000) %.07 = select i1 %.not43, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %5, float noundef 0x3E6F2E2860000000) #139 %23 = call float @llvm.fma.f32(float %.07, float %5, float noundef 0x3E6F2E2860000000) %.08 = select i1 %.not44, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %5, float noundef 0x3E1EEDF0A0000000) #139 %26 = call float @llvm.fma.f32(float %.08, float %5, float noundef 0x3E1EEDF0A0000000) %.09 = select i1 %.not45, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %5, float noundef 0xBED6DBF8C0000000) #139 %29 = call float @llvm.fma.f32(float %.09, float %5, float noundef 0xBED6DBF8C0000000) %.010 = select i1 %.not46, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %5, float noundef 0xBEDECCB920000000) #139 %32 = call float @llvm.fma.f32(float %.010, float %5, float noundef 0xBEDECCB920000000) %.012 = select i1 %.not47, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %5, float noundef 0x3F33C5BD60000000) #139 %35 = call float @llvm.fma.f32(float %.012, float %5, float noundef 0x3F33C5BD60000000) %.013 = select i1 %.not48, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %5, float noundef 0x3F495C6680000000) #139 %38 = call float @llvm.fma.f32(float %.013, float %5, float noundef 0x3F495C6680000000) %.014 = select i1 %.not49, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %5, float noundef 0xBF7DD54360000000) #139 %41 = call float @llvm.fma.f32(float %.014, float %5, float noundef 0xBF7DD54360000000) %.015 = select i1 %.not50, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %5, float noundef 0xBF9B4EE8E0000000) #139 %44 = call float @llvm.fma.f32(float %.015, float %5, float noundef 0xBF9B4EE8E0000000) %.016 = select i1 %.not51, float %44, float %43 %45 = fmul float %5, %.016 %46 = fadd float %.01, 0xC016148F60000000 %47 = fadd float %46, 0x3E734F46E0000000 %48 = fmul float %47, %45 %49 = fadd float %.01, 0xC0214EB560000000 %50 = fadd float %49, 0xBE9999BDA0000000 %51 = fmul float %50, %48 br label %215 __nv_isinff.exit: ; preds = %__nv_fabsf.exit %52 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %52, 0 %53 = call float @llvm.nvvm.fabs.ftz.f(float %.01) #139 %54 = call float @llvm.fabs.f32(float %.01) %.017 = select i1 %.not1, float %54, float %53 %55 = fcmp oeq float %.017, 0x7FF0000000000000 br i1 %55, label %215, label %__internal_fmad.exit13 __internal_fmad.exit13: ; preds = %__nv_isinff.exit %56 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.01) #141, !srcloc !73 %57 = fmul float %56, %56 %58 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %58, 0 %59 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %57, float noundef 0xBFE076F840000000) #139 %60 = call float @llvm.fma.f32(float %57, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.019 = select i1 %.not2, float %60, float %59 %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %61, 0 %62 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %57, float noundef 0x3FBA767E60000000) #139 %63 = call float @llvm.fma.f32(float %.019, float %57, float noundef 0x3FBA767E60000000) %.020 = select i1 %.not3, float %63, float %62 %64 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %64, 0 %65 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %57, float noundef 0xBFAFFFF6C0000000) #139 %66 = call float @llvm.fma.f32(float %.020, float %57, float noundef 0xBFAFFFF6C0000000) %.021 = select i1 %.not4, float %66, float %65 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %67, 0 %68 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %57, float noundef 1.000000e+00) #139 %69 = call float @llvm.fma.f32(float %.021, float %57, float noundef 1.000000e+00) %.022 = select i1 %.not5, float %69, float %68 %70 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %70, 0 %71 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %57, float noundef 0xBFCA4825A0000000) #139 %72 = call float @llvm.fma.f32(float %57, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.023 = select i1 %.not6, float %72, float %71 %73 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %73, 0 %74 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %57, float noundef 0x3FB0A9DA20000000) #139 %75 = call float @llvm.fma.f32(float %.023, float %57, float noundef 0x3FB0A9DA20000000) %.024 = select i1 %.not7, float %75, float %74 %76 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %76, 0 %77 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %57, float noundef 0xBFBFFFFFE0000000) #139 %78 = call float @llvm.fma.f32(float %.024, float %57, float noundef 0xBFBFFFFFE0000000) %.026 = select i1 %.not8, float %78, float %77 %79 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %79, 0 %80 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %56, float %.01) #139 %81 = call float @llvm.fma.f32(float %.026, float %56, float %.01) %.027 = select i1 %.not9, float %81, float %80 %82 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %82, 0 br i1 %.not10, label %85, label %83 83: ; preds = %__internal_fmad.exit13 %84 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.01) #139 br label %__nv_rsqrtf.exit 85: ; preds = %__internal_fmad.exit13 %86 = call float @llvm.nvvm.rsqrt.approx.f(float %.01) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %85, %83 %.028 = phi float [ %84, %83 ], [ %86, %85 ] %87 = fmul float %.028, 0x3FE9884540000000 %88 = fmul float %.022, %87 %89 = fmul float %.027, 0x3FE45F3060000000 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %90, 0 %91 = call i32 @llvm.nvvm.f2i.rn.ftz(float %89) #139 %92 = call i32 @llvm.nvvm.f2i.rn(float %89) #139 %.030 = select i1 %.not11, i32 %92, i32 %91 %93 = sitofp i32 %.030 to float %94 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %94, 0 %95 = call float @llvm.nvvm.fma.rn.ftz.f(float %93, float noundef 0xBFF921FB40000000, float %.027) #139 %96 = call float @llvm.fma.f32(float %93, float noundef 0xBFF921FB40000000, float %.027) %.031 = select i1 %.not12, float %96, float %95 %97 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %97, 0 %98 = call float @llvm.nvvm.fma.rn.ftz.f(float %93, float noundef 0xBE74442D00000000, float %.031) #139 %99 = call float @llvm.fma.f32(float %93, float noundef 0xBE74442D00000000, float %.031) %.032 = select i1 %.not13, float %99, float %98 %100 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %100, 0 %101 = call float @llvm.nvvm.fma.rn.ftz.f(float %93, float noundef 0xBCF84698A0000000, float %.032) #139 %102 = call float @llvm.fma.f32(float %93, float noundef 0xBCF84698A0000000, float %.032) %.033 = select i1 %.not14, float %102, float %101 %103 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %103, 0 %104 = call float @llvm.nvvm.fabs.ftz.f(float %.027) #139 %105 = call float @llvm.fabs.f32(float %.027) %.035 = select i1 %.not15, float %105, float %104 %106 = fcmp ult float %.035, 1.056150e+05 br i1 %106, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_rsqrtf.exit %107 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %107, 0 %.036 = select i1 %.not32, float %105, float %104 %108 = fcmp oeq float %.036, 0x7FF0000000000000 br i1 %108, label %__nv_fmul_rn.exit.i.i, label %112 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %109 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %109, 0 %110 = call float @llvm.nvvm.mul.rn.ftz.f(float %.027, float noundef 0.000000e+00) #139 %111 = fmul float %.027, 0.000000e+00 %.037 = select i1 %.not38, float %111, float %110 br label %__internal_trig_reduction_kernel.exit.i 112: ; preds = %__nv_isinff.exit.i.i %113 = bitcast float %.027 to i32 %114 = lshr i32 %113, 23 %115 = and i32 %114, 255 %116 = add nsw i32 %115, -128 %117 = shl i32 %113, 8 %118 = or i32 %117, -2147483648 %119 = lshr i32 %116, 5 br label %120 120: ; preds = %112, %120 %iq.i.i.i.053 = phi i32 [ 0, %112 ], [ %128, %120 ] %hi.i.i.i.052 = phi i32 [ 0, %112 ], [ %126, %120 ] %121 = zext i32 %iq.i.i.i.053 to i64 %122 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %121 %123 = load i32, i32 addrspace(1)* %122, align 4 %124 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %123, i32 %118, i32 %hi.i.i.i.052) #141, !srcloc !67 %125 = extractvalue { i32, i32 } %124, 0 %126 = extractvalue { i32, i32 } %124, 1 %127 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %121 store i32 %125, i32* %127, align 4, !noalias !68 %128 = add nuw nsw i32 %iq.i.i.i.053, 1 %exitcond.not = icmp eq i32 %128, 6 br i1 %exitcond.not, label %129, label %120, !llvm.loop !71 129: ; preds = %120 %130 = and i32 %113, -2147483648 %131 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 6 store i32 %126, i32* %131, align 4, !noalias !68 %132 = and i32 %114, 31 %133 = sub nsw i32 6, %119 %134 = sext i32 %133 to i64 %135 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %134 %136 = load i32, i32* %135, align 4 %137 = sub nsw i32 5, %119 %138 = sext i32 %137 to i64 %139 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %138 %140 = load i32, i32* %139, align 4 %.not33 = icmp eq i32 %132, 0 br i1 %.not33, label %__internal_trig_reduction_slowpath.exit.i.i, label %141 141: ; preds = %129 %142 = sub nsw i32 4, %119 %143 = sub nuw nsw i32 32, %132 %144 = shl i32 %136, %132 %145 = lshr i32 %140, %143 %146 = add i32 %145, %144 %147 = shl i32 %140, %132 %148 = sext i32 %142 to i64 %149 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %148 %150 = load i32, i32* %149, align 4 %151 = lshr i32 %150, %143 %152 = add i32 %151, %147 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %141, %129 %hi.i.i.i.1 = phi i32 [ %146, %141 ], [ %136, %129 ] %lo.i.i.i.0 = phi i32 [ %152, %141 ], [ %140, %129 ] %153 = lshr i32 %hi.i.i.i.1, 30 %154 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %155 = shl i32 %lo.i.i.i.0, 2 %156 = lshr i32 %154, 31 %157 = add nuw nsw i32 %156, %153 %.not34 = icmp eq i32 %130, 0 %158 = sub nsw i32 0, %157 %spec.select = select i1 %.not34, i32 %157, i32 %158 %.not35 = icmp sgt i32 %154, -1 %159 = xor i32 %130, -2147483648 %s.i.i.i.0 = select i1 %.not35, i32 %130, i32 %159 %not..not35 = xor i1 %.not35, true %160 = sext i1 %not..not35 to i32 %hi.i.i.i.2 = xor i32 %154, %160 %lo.i.i.i.1 = xor i32 %155, %160 %161 = zext i32 %hi.i.i.i.2 to i64 %162 = shl nuw i64 %161, 32 %163 = zext i32 %lo.i.i.i.1 to i64 %164 = or i64 %162, %163 %165 = sitofp i64 %164 to double %166 = fmul double %165, 0x3BF921FB54442D19 %167 = fptrunc double %166 to float %.not37 = icmp eq i32 %s.i.i.i.0, 0 %168 = fneg float %167 %r.i.i.i.0 = select i1 %.not37, float %167, float %168 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_rsqrtf.exit %i.i.1 = phi i32 [ %.030, %__nv_rsqrtf.exit ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.033, %__nv_rsqrtf.exit ], [ %.037, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %169 = and i32 %i.i.1, 3 %170 = uitofp i32 %169 to float %171 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %171, 0 %172 = call float @llvm.nvvm.fma.rn.ftz.f(float %170, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %173 = call float @llvm.fma.f32(float %170, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.040 = select i1 %.not16, float %173, float %172 %174 = fadd float %t.i.i.1, %.040 %175 = fmul float %174, 0x3FE45F3060000000 %176 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %176, 0 %177 = call i32 @llvm.nvvm.f2i.rn.ftz(float %175) #139 %178 = call i32 @llvm.nvvm.f2i.rn(float %175) #139 %.041 = select i1 %.not17, i32 %178, i32 %177 %179 = sitofp i32 %.041 to float %180 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %180, 0 %181 = call float @llvm.nvvm.fma.rn.ftz.f(float %179, float noundef 0xBFF921FB40000000, float %174) #139 %182 = call float @llvm.fma.f32(float %179, float noundef 0xBFF921FB40000000, float %174) %.039 = select i1 %.not18, float %182, float %181 %183 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %183, 0 %184 = call float @llvm.nvvm.fma.rn.ftz.f(float %179, float noundef 0xBE74442D00000000, float %.039) #139 %185 = call float @llvm.fma.f32(float %179, float noundef 0xBE74442D00000000, float %.039) %.038 = select i1 %.not19, float %185, float %184 %186 = add i32 %.041, 1 %187 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %187, 0 %188 = call float @llvm.nvvm.mul.rn.ftz.f(float %.038, float %.038) #139 %189 = fmul float %.038, %.038 %.034 = select i1 %.not20, float %189, float %188 %190 = and i32 %186, 1 %.not21 = icmp eq i32 %190, 0 %191 = select i1 %.not21, float %.038, float 1.000000e+00 %192 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %192, 0 %193 = call float @llvm.nvvm.fma.rn.ftz.f(float %.034, float %191, float noundef 0.000000e+00) #139 %194 = call float @llvm.fma.f32(float %.034, float %191, float noundef 0.000000e+00) %.029 = select i1 %.not22, float %194, float %193 br i1 %.not21, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %195 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %195, 0 %196 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.034, float noundef 0xBF56C0FDA0000000) #139 %197 = call float @llvm.fma.f32(float %.034, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.025 = select i1 %.not31, float %197, float %196 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %198 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %199 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %200 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.025, %__internal_fmad.exit1.i.i ] %201 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %201, 0 %202 = call float @llvm.nvvm.fma.rn.ftz.f(float %200, float %.034, float noundef %199) #139 %203 = call float @llvm.fma.f32(float %200, float %.034, float noundef %199) %.018 = select i1 %.not25, float %203, float %202 %204 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %204, 0 %205 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %.034, float noundef %198) #139 %206 = call float @llvm.fma.f32(float %.018, float %.034, float noundef %198) %.011 = select i1 %.not27, float %206, float %205 %207 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %207, 0 %208 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %.029, float %191) #139 %209 = call float @llvm.fma.f32(float %.011, float %.029, float %191) %.04 = select i1 %.not28, float %209, float %208 %210 = and i32 %186, 2 %.not29 = icmp eq i32 %210, 0 br i1 %.not29, label %__internal_cos_offset_f.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %211 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %211, 0 %212 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %213 = call float @llvm.fma.f32(float %.04, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0 = select i1 %.not30, float %213, float %212 br label %__internal_cos_offset_f.exit __internal_cos_offset_f.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i.0 = phi float [ %.0, %__internal_fmad.exit5.i.i ], [ %.04, %__internal_fmad.exit2.i.i ] %214 = fmul float %88, %z.i.i.0 br label %215 215: ; preds = %__internal_cos_offset_f.exit, %__nv_isinff.exit, %__internal_fmad.exit %r.1 = phi float [ %51, %__internal_fmad.exit ], [ %214, %__internal_cos_offset_f.exit ], [ 0.000000e+00, %__nv_isinff.exit ] ret float %r.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_j1f(float %a) local_unnamed_addr #44 { __nv_fabsf.exit: %result.i.i.i = alloca [7 x i32], align 4 %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp ugt float %.0, 8.000000e+00 br i1 %3, label %__nv_isinff.exit, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %4 = fadd float %.0, 0xC00EA75580000000 %5 = fadd float %4, 0x3E74A121E0000000 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %5, float noundef 0x3D7037E840000000) #139 %8 = call float @llvm.fma.f32(float %5, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.01 = select i1 %.not39, float %8, float %7 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %5, float noundef 0xBDBC43D820000000) #139 %11 = call float @llvm.fma.f32(float %.01, float %5, float noundef 0xBDBC43D820000000) %.02 = select i1 %.not40, float %11, float %10 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %5, float noundef 0xBDEBBBDFE0000000) #139 %14 = call float @llvm.fma.f32(float %.02, float %5, float noundef 0xBDEBBBDFE0000000) %.03 = select i1 %.not41, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %5, float noundef 0x3E336193A0000000) #139 %17 = call float @llvm.fma.f32(float %.03, float %5, float noundef 0x3E336193A0000000) %.04 = select i1 %.not42, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %5, float noundef 0x3E5D022E60000000) #139 %20 = call float @llvm.fma.f32(float %.04, float %5, float noundef 0x3E5D022E60000000) %.06 = select i1 %.not43, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %5, float noundef 0xBEA1F1B900000000) #139 %23 = call float @llvm.fma.f32(float %.06, float %5, float noundef 0xBEA1F1B900000000) %.07 = select i1 %.not44, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %5, float noundef 0xBEC3CCA7A0000000) #139 %26 = call float @llvm.fma.f32(float %.07, float %5, float noundef 0xBEC3CCA7A0000000) %.08 = select i1 %.not45, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %5, float noundef 0x3F059B38A0000000) #139 %29 = call float @llvm.fma.f32(float %.08, float %5, float noundef 0x3F059B38A0000000) %.09 = select i1 %.not46, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %5, float noundef 0x3F1F3D6200000000) #139 %32 = call float @llvm.fma.f32(float %.09, float %5, float noundef 0x3F1F3D6200000000) %.010 = select i1 %.not47, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %5, float noundef 0xBF5D9D7380000000) #139 %35 = call float @llvm.fma.f32(float %.010, float %5, float noundef 0xBF5D9D7380000000) %.011 = select i1 %.not48, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %5, float noundef 0xBF64EDFFA0000000) #139 %38 = call float @llvm.fma.f32(float %.011, float %5, float noundef 0xBF64EDFFA0000000) %.013 = select i1 %.not49, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %5, float noundef 0x3FA0E73260000000) #139 %41 = call float @llvm.fma.f32(float %.013, float %5, float noundef 0x3FA0E73260000000) %.014 = select i1 %.not50, float %41, float %40 %42 = fadd float %.0, 0xC01C0FF600000000 %43 = fadd float %42, 0x3E88971B60000000 %44 = fmul float %43, %.014 %45 = fmul float %5, %44 %46 = fmul float %.0, %45 br label %210 __nv_isinff.exit: ; preds = %__nv_fabsf.exit %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fabs.ftz.f(float %.0) #139 %49 = call float @llvm.fabs.f32(float %.0) %.015 = select i1 %.not1, float %49, float %48 %50 = fcmp oeq float %.015, 0x7FF0000000000000 br i1 %50, label %210, label %__internal_fmad.exit12 __internal_fmad.exit12: ; preds = %__nv_isinff.exit %51 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0) #141, !srcloc !73 %52 = fmul float %51, %51 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %52, float noundef 0x3FE7FEFD20000000) #139 %55 = call float @llvm.fma.f32(float %52, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.016 = select i1 %.not2, float %55, float %54 %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %52, float noundef 0xBFC8B175C0000000) #139 %58 = call float @llvm.fma.f32(float %.016, float %52, float noundef 0xBFC8B175C0000000) %.017 = select i1 %.not3, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %52, float noundef 0x3FC7FFF160000000) #139 %61 = call float @llvm.fma.f32(float %.017, float %52, float noundef 0x3FC7FFF160000000) %.018 = select i1 %.not4, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %52, float noundef 1.000000e+00) #139 %64 = call float @llvm.fma.f32(float %.018, float %52, float noundef 1.000000e+00) %.020 = select i1 %.not5, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %52, float noundef 0x3FD72295A0000000) #139 %67 = call float @llvm.fma.f32(float %52, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.021 = select i1 %.not6, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %52, float noundef 0xBFC4FE5D80000000) #139 %70 = call float @llvm.fma.f32(float %.021, float %52, float noundef 0xBFC4FE5D80000000) %.022 = select i1 %.not7, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %52, float noundef 0x3FD7FFFFA0000000) #139 %73 = call float @llvm.fma.f32(float %.022, float %52, float noundef 0x3FD7FFFFA0000000) %.023 = select i1 %.not8, float %73, float %72 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %51, float %.0) #139 %76 = call float @llvm.fma.f32(float %.023, float %51, float %.0) %.024 = select i1 %.not9, float %76, float %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %77, 0 br i1 %.not10, label %80, label %78 78: ; preds = %__internal_fmad.exit12 %79 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0) #139 br label %__nv_rsqrtf.exit 80: ; preds = %__internal_fmad.exit12 %81 = call float @llvm.nvvm.rsqrt.approx.f(float %.0) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %80, %78 %.025 = phi float [ %79, %78 ], [ %81, %80 ] %82 = fmul float %.025, 0x3FE9884540000000 %83 = fmul float %.020, %82 %84 = fmul float %.024, 0x3FE45F3060000000 %85 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %85, 0 %86 = call i32 @llvm.nvvm.f2i.rn.ftz(float %84) #139 %87 = call i32 @llvm.nvvm.f2i.rn(float %84) #139 %.027 = select i1 %.not11, i32 %87, i32 %86 %88 = sitofp i32 %.027 to float %89 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %89, 0 %90 = call float @llvm.nvvm.fma.rn.ftz.f(float %88, float noundef 0xBFF921FB40000000, float %.024) #139 %91 = call float @llvm.fma.f32(float %88, float noundef 0xBFF921FB40000000, float %.024) %.029 = select i1 %.not12, float %91, float %90 %92 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %92, 0 %93 = call float @llvm.nvvm.fma.rn.ftz.f(float %88, float noundef 0xBE74442D00000000, float %.029) #139 %94 = call float @llvm.fma.f32(float %88, float noundef 0xBE74442D00000000, float %.029) %.030 = select i1 %.not13, float %94, float %93 %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float %88, float noundef 0xBCF84698A0000000, float %.030) #139 %97 = call float @llvm.fma.f32(float %88, float noundef 0xBCF84698A0000000, float %.030) %.031 = select i1 %.not14, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fabs.ftz.f(float %.024) #139 %100 = call float @llvm.fabs.f32(float %.024) %.032 = select i1 %.not15, float %100, float %99 %101 = fcmp ult float %.032, 1.056150e+05 br i1 %101, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_rsqrtf.exit %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %102, 0 %.033 = select i1 %.not32, float %100, float %99 %103 = fcmp oeq float %.033, 0x7FF0000000000000 br i1 %103, label %__nv_fmul_rn.exit.i.i, label %107 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %104 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %104, 0 %105 = call float @llvm.nvvm.mul.rn.ftz.f(float %.024, float noundef 0.000000e+00) #139 %106 = fmul float %.024, 0.000000e+00 %.034 = select i1 %.not38, float %106, float %105 br label %__internal_trig_reduction_kernel.exit.i 107: ; preds = %__nv_isinff.exit.i.i %108 = bitcast float %.024 to i32 %109 = lshr i32 %108, 23 %110 = and i32 %109, 255 %111 = add nsw i32 %110, -128 %112 = shl i32 %108, 8 %113 = or i32 %112, -2147483648 %114 = lshr i32 %111, 5 br label %115 115: ; preds = %107, %115 %iq.i.i.i.052 = phi i32 [ 0, %107 ], [ %123, %115 ] %hi.i.i.i.051 = phi i32 [ 0, %107 ], [ %121, %115 ] %116 = zext i32 %iq.i.i.i.052 to i64 %117 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %116 %118 = load i32, i32 addrspace(1)* %117, align 4 %119 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %118, i32 %113, i32 %hi.i.i.i.051) #141, !srcloc !67 %120 = extractvalue { i32, i32 } %119, 0 %121 = extractvalue { i32, i32 } %119, 1 %122 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %116 store i32 %120, i32* %122, align 4, !noalias !68 %123 = add nuw nsw i32 %iq.i.i.i.052, 1 %exitcond.not = icmp eq i32 %123, 6 br i1 %exitcond.not, label %124, label %115, !llvm.loop !71 124: ; preds = %115 %125 = and i32 %108, -2147483648 %126 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 6 store i32 %121, i32* %126, align 4, !noalias !68 %127 = and i32 %109, 31 %128 = sub nsw i32 6, %114 %129 = sext i32 %128 to i64 %130 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %129 %131 = load i32, i32* %130, align 4 %132 = sub nsw i32 5, %114 %133 = sext i32 %132 to i64 %134 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %133 %135 = load i32, i32* %134, align 4 %.not33 = icmp eq i32 %127, 0 br i1 %.not33, label %__internal_trig_reduction_slowpath.exit.i.i, label %136 136: ; preds = %124 %137 = sub nsw i32 4, %114 %138 = sub nuw nsw i32 32, %127 %139 = shl i32 %131, %127 %140 = lshr i32 %135, %138 %141 = add i32 %140, %139 %142 = shl i32 %135, %127 %143 = sext i32 %137 to i64 %144 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i, i64 0, i64 %143 %145 = load i32, i32* %144, align 4 %146 = lshr i32 %145, %138 %147 = add i32 %146, %142 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %136, %124 %hi.i.i.i.1 = phi i32 [ %141, %136 ], [ %131, %124 ] %lo.i.i.i.0 = phi i32 [ %147, %136 ], [ %135, %124 ] %148 = lshr i32 %hi.i.i.i.1, 30 %149 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %150 = shl i32 %lo.i.i.i.0, 2 %151 = lshr i32 %149, 31 %152 = add nuw nsw i32 %151, %148 %.not34 = icmp eq i32 %125, 0 %153 = sub nsw i32 0, %152 %spec.select = select i1 %.not34, i32 %152, i32 %153 %.not35 = icmp sgt i32 %149, -1 %154 = xor i32 %125, -2147483648 %s.i.i.i.0 = select i1 %.not35, i32 %125, i32 %154 %not..not35 = xor i1 %.not35, true %155 = sext i1 %not..not35 to i32 %hi.i.i.i.2 = xor i32 %149, %155 %lo.i.i.i.1 = xor i32 %150, %155 %156 = zext i32 %hi.i.i.i.2 to i64 %157 = shl nuw i64 %156, 32 %158 = zext i32 %lo.i.i.i.1 to i64 %159 = or i64 %157, %158 %160 = sitofp i64 %159 to double %161 = fmul double %160, 0x3BF921FB54442D19 %162 = fptrunc double %161 to float %.not37 = icmp eq i32 %s.i.i.i.0, 0 %163 = fneg float %162 %r.i.i.i.0 = select i1 %.not37, float %162, float %163 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_rsqrtf.exit %i.i.1 = phi i32 [ %.027, %__nv_rsqrtf.exit ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.031, %__nv_rsqrtf.exit ], [ %.034, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %164 = and i32 %i.i.1, 3 %165 = uitofp i32 %164 to float %166 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %166, 0 %167 = call float @llvm.nvvm.fma.rn.ftz.f(float %165, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %168 = call float @llvm.fma.f32(float %165, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.037 = select i1 %.not16, float %168, float %167 %169 = fadd float %t.i.i.1, %.037 %170 = fmul float %169, 0x3FE45F3060000000 %171 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %171, 0 %172 = call i32 @llvm.nvvm.f2i.rn.ftz(float %170) #139 %173 = call i32 @llvm.nvvm.f2i.rn(float %170) #139 %.038 = select i1 %.not17, i32 %173, i32 %172 %174 = sitofp i32 %.038 to float %175 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %175, 0 %176 = call float @llvm.nvvm.fma.rn.ftz.f(float %174, float noundef 0xBFF921FB40000000, float %169) #139 %177 = call float @llvm.fma.f32(float %174, float noundef 0xBFF921FB40000000, float %169) %.039 = select i1 %.not18, float %177, float %176 %178 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %178, 0 %179 = call float @llvm.nvvm.fma.rn.ftz.f(float %174, float noundef 0xBE74442D00000000, float %.039) #139 %180 = call float @llvm.fma.f32(float %174, float noundef 0xBE74442D00000000, float %.039) %.040 = select i1 %.not19, float %180, float %179 %181 = add i32 %.038, 1 %182 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %182, 0 %183 = call float @llvm.nvvm.mul.rn.ftz.f(float %.040, float %.040) #139 %184 = fmul float %.040, %.040 %.036 = select i1 %.not20, float %184, float %183 %185 = and i32 %181, 1 %.not21 = icmp eq i32 %185, 0 %186 = select i1 %.not21, float %.040, float 1.000000e+00 %187 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %187, 0 %188 = call float @llvm.nvvm.fma.rn.ftz.f(float %.036, float %186, float noundef 0.000000e+00) #139 %189 = call float @llvm.fma.f32(float %.036, float %186, float noundef 0.000000e+00) %.035 = select i1 %.not22, float %189, float %188 br i1 %.not21, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %190 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %190, 0 %191 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.036, float noundef 0xBF56C0FDA0000000) #139 %192 = call float @llvm.fma.f32(float %.036, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.028 = select i1 %.not31, float %192, float %191 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %193 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %194 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %195 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.028, %__internal_fmad.exit1.i.i ] %196 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %196, 0 %197 = call float @llvm.nvvm.fma.rn.ftz.f(float %195, float %.036, float noundef %194) #139 %198 = call float @llvm.fma.f32(float %195, float %.036, float noundef %194) %.026 = select i1 %.not25, float %198, float %197 %199 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %199, 0 %200 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %.036, float noundef %193) #139 %201 = call float @llvm.fma.f32(float %.026, float %.036, float noundef %193) %.019 = select i1 %.not27, float %201, float %200 %202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %202, 0 %203 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %.035, float %186) #139 %204 = call float @llvm.fma.f32(float %.019, float %.035, float %186) %.012 = select i1 %.not28, float %204, float %203 %205 = and i32 %181, 2 %.not29 = icmp eq i32 %205, 0 br i1 %.not29, label %__internal_cos_offset_f.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %206 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %206, 0 %207 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %208 = call float @llvm.fma.f32(float %.012, float noundef -1.000000e+00, float noundef 0.000000e+00) %.05 = select i1 %.not30, float %208, float %207 br label %__internal_cos_offset_f.exit __internal_cos_offset_f.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i.0 = phi float [ %.05, %__internal_fmad.exit5.i.i ], [ %.012, %__internal_fmad.exit2.i.i ] %209 = fmul float %83, %z.i.i.0 br label %210 210: ; preds = %__internal_cos_offset_f.exit, %__nv_isinff.exit, %__internal_fmad.exit %r.1 = phi float [ %46, %__internal_fmad.exit ], [ %209, %__internal_cos_offset_f.exit ], [ 0.000000e+00, %__nv_isinff.exit ] %211 = fcmp olt float %a, 0.000000e+00 %212 = fneg float %r.1 %r.2 = select i1 %211, float %212, float %r.1 %213 = fcmp olt float %.0, 0x39B4484C00000000 br i1 %213, label %214, label %221 214: ; preds = %210 %215 = bitcast float %a to i32 %216 = and i32 %215, -2147483648 %217 = bitcast float %r.2 to i32 %218 = and i32 %217, 2147483647 %219 = or i32 %218, %216 %220 = bitcast i32 %219 to float br label %221 221: ; preds = %214, %210 %r.3 = phi float [ %220, %214 ], [ %r.2, %210 ] ret float %r.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_y0f(float %a) local_unnamed_addr #45 { __nv_fabsf.exit: %result.i.i.i.i = alloca [7 x i32], align 4 %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp ugt float %.01, 0x3FDC982EC0000000 br i1 %3, label %287, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %4 = fmul float %.01, %.01 %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %5, 0 %6 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E7B7CB580000000, float %4, float noundef 0xBEE3E936C0000000) #139 %7 = call float @llvm.fma.f32(float %4, float noundef 0x3E7B7CB580000000, float noundef 0xBEE3E936C0000000) %.02 = select i1 %.not68, float %7, float %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not69 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %4, float noundef 0x3F41A62000000000) #139 %10 = call float @llvm.fma.f32(float %.02, float %4, float noundef 0x3F41A62000000000) %.03 = select i1 %.not69, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not70 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %4, float noundef 0xBF9075B1C0000000) #139 %13 = call float @llvm.fma.f32(float %.03, float %4, float noundef 0xBF9075B1C0000000) %.05 = select i1 %.not70, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %4, float noundef 0x3FC6BBCB40000000) #139 %16 = call float @llvm.fma.f32(float %.05, float %4, float noundef 0x3FC6BBCB40000000) %.06 = select i1 %.not71, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %4, float noundef 0xBFB2E4D6A0000000) #139 %19 = call float @llvm.fma.f32(float %.06, float %4, float noundef 0xBFB2E4D6A0000000) %.07 = select i1 %.not72, float %19, float %18 %20 = fcmp olt float %.01, 0x3810000000000000 %21 = fmul float %.01, 0x4160000000000000 %.09 = select i1 %20, float %21, float %.01 %i.i.0 = select i1 %20, float -2.300000e+01, float 0.000000e+00 %22 = bitcast float %.09 to i32 %23 = add i32 %22, -1059760811 %24 = and i32 %23, -8388608 %25 = sub i32 %22, %24 %26 = bitcast i32 %25 to float %27 = sitofp i32 %24 to float %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %27, float noundef 0x3E80000000000000, float noundef %i.i.0) #139 %30 = call float @llvm.fma.f32(float %27, float noundef 0x3E80000000000000, float noundef %i.i.0) %.014 = select i1 %.not73, float %30, float %29 %31 = fadd float %26, -1.000000e+00 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %31, float noundef 0x3FC2073EC0000000) #139 %34 = call float @llvm.fma.f32(float %31, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.016 = select i1 %.not74, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %31, float noundef 0xBFBF19B980000000) #139 %37 = call float @llvm.fma.f32(float %.016, float %31, float noundef 0xBFBF19B980000000) %.017 = select i1 %.not75, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not76 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %31, float noundef 0x3FC1E52AA0000000) #139 %40 = call float @llvm.fma.f32(float %.017, float %31, float noundef 0x3FC1E52AA0000000) %.018 = select i1 %.not76, float %40, float %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %31, float noundef 0xBFC55B1720000000) #139 %43 = call float @llvm.fma.f32(float %.018, float %31, float noundef 0xBFC55B1720000000) %.019 = select i1 %.not77, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not78 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %31, float noundef 0x3FC99DA160000000) #139 %46 = call float @llvm.fma.f32(float %.019, float %31, float noundef 0x3FC99DA160000000) %.020 = select i1 %.not78, float %46, float %45 %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not79 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %31, float noundef 0xBFCFFFE440000000) #139 %49 = call float @llvm.fma.f32(float %.020, float %31, float noundef 0xBFCFFFE440000000) %.021 = select i1 %.not79, float %49, float %48 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %31, float noundef 0x3FD5554F00000000) #139 %52 = call float @llvm.fma.f32(float %.021, float %31, float noundef 0x3FD5554F00000000) %.023 = select i1 %.not80, float %52, float %51 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not81 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %31, float noundef -5.000000e-01) #139 %55 = call float @llvm.fma.f32(float %.023, float %31, float noundef -5.000000e-01) %.013 = select i1 %.not81, float %55, float %54 %56 = fmul float %31, %.013 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %56, float %31, float %31) #139 %59 = call float @llvm.fma.f32(float %56, float %31, float %31) %.012 = select i1 %.not82, float %59, float %58 %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %60, 0 %61 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float noundef 0x3FE62E4300000000, float %.012) #139 %62 = call float @llvm.fma.f32(float %.014, float noundef 0x3FE62E4300000000, float %.012) %.011 = select i1 %.not83, float %62, float %61 %63 = icmp ugt i32 %22, 2139095039 br i1 %63, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i: ; preds = %__internal_fmad.exit %64 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not137 = icmp eq i32 %64, 0 %65 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %66 = call float @llvm.fma.f32(float %.09, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.010 = select i1 %.not137, float %66, float %65 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i, %__internal_fmad.exit %r.i.0 = phi float [ %.010, %__nv_fmaf_rn.exit.i ], [ %.011, %__internal_fmad.exit ] %67 = fcmp oeq float %.09, 0.000000e+00 %r.i.0.op = fmul float %r.i.0, 0x3FE45F3060000000 %68 = select i1 %67, float 0xFFF0000000000000, float %r.i.0.op %69 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not84 = icmp eq i32 %69, 0 %70 = call float @llvm.nvvm.fabs.ftz.f(float %.01) #139 %71 = call float @llvm.fabs.f32(float %.01) %.024 = select i1 %.not84, float %71, float %70 %72 = fcmp ugt float %.024, 8.000000e+00 br i1 %72, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__internal_accurate_logf.exit %73 = fadd float %.024, 0xC0033D1520000000 %74 = fadd float %73, 0xBE7D2E3660000000 %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not124 = icmp eq i32 %75, 0 %76 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %74, float noundef 0xBD35953660000000) #139 %77 = call float @llvm.fma.f32(float %74, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.025 = select i1 %.not124, float %77, float %76 %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not125 = icmp eq i32 %78, 0 %79 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float %74, float noundef 0x3D87E1C300000000) #139 %80 = call float @llvm.fma.f32(float %.025, float %74, float noundef 0x3D87E1C300000000) %.027 = select i1 %.not125, float %80, float %79 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not126 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %74, float noundef 0xBD9A82F020000000) #139 %83 = call float @llvm.fma.f32(float %.027, float %74, float noundef 0xBD9A82F020000000) %.028 = select i1 %.not126, float %83, float %82 %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not127 = icmp eq i32 %84, 0 %85 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float %74, float noundef 0xBDFD21E700000000) #139 %86 = call float @llvm.fma.f32(float %.028, float %74, float noundef 0xBDFD21E700000000) %.029 = select i1 %.not127, float %86, float %85 %87 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not128 = icmp eq i32 %87, 0 %88 = call float @llvm.nvvm.fma.rn.ftz.f(float %.029, float %74, float noundef 0x3E04060B60000000) #139 %89 = call float @llvm.fma.f32(float %.029, float %74, float noundef 0x3E04060B60000000) %.030 = select i1 %.not128, float %89, float %88 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not129 = icmp eq i32 %90, 0 %91 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float %74, float noundef 0x3E6F2E2860000000) #139 %92 = call float @llvm.fma.f32(float %.030, float %74, float noundef 0x3E6F2E2860000000) %.031 = select i1 %.not129, float %92, float %91 %93 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not130 = icmp eq i32 %93, 0 %94 = call float @llvm.nvvm.fma.rn.ftz.f(float %.031, float %74, float noundef 0x3E1EEDF0A0000000) #139 %95 = call float @llvm.fma.f32(float %.031, float %74, float noundef 0x3E1EEDF0A0000000) %.032 = select i1 %.not130, float %95, float %94 %96 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not131 = icmp eq i32 %96, 0 %97 = call float @llvm.nvvm.fma.rn.ftz.f(float %.032, float %74, float noundef 0xBED6DBF8C0000000) #139 %98 = call float @llvm.fma.f32(float %.032, float %74, float noundef 0xBED6DBF8C0000000) %.034 = select i1 %.not131, float %98, float %97 %99 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not132 = icmp eq i32 %99, 0 %100 = call float @llvm.nvvm.fma.rn.ftz.f(float %.034, float %74, float noundef 0xBEDECCB920000000) #139 %101 = call float @llvm.fma.f32(float %.034, float %74, float noundef 0xBEDECCB920000000) %.035 = select i1 %.not132, float %101, float %100 %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not133 = icmp eq i32 %102, 0 %103 = call float @llvm.nvvm.fma.rn.ftz.f(float %.035, float %74, float noundef 0x3F33C5BD60000000) #139 %104 = call float @llvm.fma.f32(float %.035, float %74, float noundef 0x3F33C5BD60000000) %.036 = select i1 %.not133, float %104, float %103 %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not134 = icmp eq i32 %105, 0 %106 = call float @llvm.nvvm.fma.rn.ftz.f(float %.036, float %74, float noundef 0x3F495C6680000000) #139 %107 = call float @llvm.fma.f32(float %.036, float %74, float noundef 0x3F495C6680000000) %.037 = select i1 %.not134, float %107, float %106 %108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not135 = icmp eq i32 %108, 0 %109 = call float @llvm.nvvm.fma.rn.ftz.f(float %.037, float %74, float noundef 0xBF7DD54360000000) #139 %110 = call float @llvm.fma.f32(float %.037, float %74, float noundef 0xBF7DD54360000000) %.038 = select i1 %.not135, float %110, float %109 %111 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not136 = icmp eq i32 %111, 0 %112 = call float @llvm.nvvm.fma.rn.ftz.f(float %.038, float %74, float noundef 0xBF9B4EE8E0000000) #139 %113 = call float @llvm.fma.f32(float %.038, float %74, float noundef 0xBF9B4EE8E0000000) %.039 = select i1 %.not136, float %113, float %112 %114 = fmul float %74, %.039 %115 = fadd float %.024, 0xC016148F60000000 %116 = fadd float %115, 0x3E734F46E0000000 %117 = fmul float %116, %114 %118 = fadd float %.024, 0xC0214EB560000000 %119 = fadd float %118, 0xBE9999BDA0000000 %120 = fmul float %119, %117 br label %__nv_j0f.exit __nv_isinff.exit.i: ; preds = %__internal_accurate_logf.exit %121 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not85 = icmp eq i32 %121, 0 %122 = call float @llvm.nvvm.fabs.ftz.f(float %.024) #139 %123 = call float @llvm.fabs.f32(float %.024) %.040 = select i1 %.not85, float %123, float %122 %124 = fcmp oeq float %.040, 0x7FF0000000000000 br i1 %124, label %__nv_j0f.exit, label %__internal_fmad.exit13.i __internal_fmad.exit13.i: ; preds = %__nv_isinff.exit.i %125 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.024) #141, !srcloc !73 %126 = fmul float %125, %125 %127 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not86 = icmp eq i32 %127, 0 %128 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %126, float noundef 0xBFE076F840000000) #139 %129 = call float @llvm.fma.f32(float %126, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.041 = select i1 %.not86, float %129, float %128 %130 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not87 = icmp eq i32 %130, 0 %131 = call float @llvm.nvvm.fma.rn.ftz.f(float %.041, float %126, float noundef 0x3FBA767E60000000) #139 %132 = call float @llvm.fma.f32(float %.041, float %126, float noundef 0x3FBA767E60000000) %.043 = select i1 %.not87, float %132, float %131 %133 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not88 = icmp eq i32 %133, 0 %134 = call float @llvm.nvvm.fma.rn.ftz.f(float %.043, float %126, float noundef 0xBFAFFFF6C0000000) #139 %135 = call float @llvm.fma.f32(float %.043, float %126, float noundef 0xBFAFFFF6C0000000) %.044 = select i1 %.not88, float %135, float %134 %136 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not89 = icmp eq i32 %136, 0 %137 = call float @llvm.nvvm.fma.rn.ftz.f(float %.044, float %126, float noundef 1.000000e+00) #139 %138 = call float @llvm.fma.f32(float %.044, float %126, float noundef 1.000000e+00) %.045 = select i1 %.not89, float %138, float %137 %139 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not90 = icmp eq i32 %139, 0 %140 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %126, float noundef 0xBFCA4825A0000000) #139 %141 = call float @llvm.fma.f32(float %126, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.047 = select i1 %.not90, float %141, float %140 %142 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not91 = icmp eq i32 %142, 0 %143 = call float @llvm.nvvm.fma.rn.ftz.f(float %.047, float %126, float noundef 0x3FB0A9DA20000000) #139 %144 = call float @llvm.fma.f32(float %.047, float %126, float noundef 0x3FB0A9DA20000000) %.048 = select i1 %.not91, float %144, float %143 %145 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not92 = icmp eq i32 %145, 0 %146 = call float @llvm.nvvm.fma.rn.ftz.f(float %.048, float %126, float noundef 0xBFBFFFFFE0000000) #139 %147 = call float @llvm.fma.f32(float %.048, float %126, float noundef 0xBFBFFFFFE0000000) %.049 = select i1 %.not92, float %147, float %146 %148 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not93 = icmp eq i32 %148, 0 %149 = call float @llvm.nvvm.fma.rn.ftz.f(float %.049, float %125, float %.024) #139 %150 = call float @llvm.fma.f32(float %.049, float %125, float %.024) %.051 = select i1 %.not93, float %150, float %149 %151 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not94 = icmp eq i32 %151, 0 br i1 %.not94, label %154, label %152 152: ; preds = %__internal_fmad.exit13.i %153 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.024) #139 br label %__nv_rsqrtf.exit.i 154: ; preds = %__internal_fmad.exit13.i %155 = call float @llvm.nvvm.rsqrt.approx.f(float %.024) #139 br label %__nv_rsqrtf.exit.i __nv_rsqrtf.exit.i: ; preds = %154, %152 %.053 = phi float [ %153, %152 ], [ %155, %154 ] %156 = fmul float %.053, 0x3FE9884540000000 %157 = fmul float %.045, %156 %158 = fmul float %.051, 0x3FE45F3060000000 %159 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not95 = icmp eq i32 %159, 0 %160 = call i32 @llvm.nvvm.f2i.rn.ftz(float %158) #139 %161 = call i32 @llvm.nvvm.f2i.rn(float %158) #139 %.054 = select i1 %.not95, i32 %161, i32 %160 %162 = sitofp i32 %.054 to float %163 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not96 = icmp eq i32 %163, 0 %164 = call float @llvm.nvvm.fma.rn.ftz.f(float %162, float noundef 0xBFF921FB40000000, float %.051) #139 %165 = call float @llvm.fma.f32(float %162, float noundef 0xBFF921FB40000000, float %.051) %.055 = select i1 %.not96, float %165, float %164 %166 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not97 = icmp eq i32 %166, 0 %167 = call float @llvm.nvvm.fma.rn.ftz.f(float %162, float noundef 0xBE74442D00000000, float %.055) #139 %168 = call float @llvm.fma.f32(float %162, float noundef 0xBE74442D00000000, float %.055) %.056 = select i1 %.not97, float %168, float %167 %169 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not98 = icmp eq i32 %169, 0 %170 = call float @llvm.nvvm.fma.rn.ftz.f(float %162, float noundef 0xBCF84698A0000000, float %.056) #139 %171 = call float @llvm.fma.f32(float %162, float noundef 0xBCF84698A0000000, float %.056) %.057 = select i1 %.not98, float %171, float %170 %172 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not99 = icmp eq i32 %172, 0 %173 = call float @llvm.nvvm.fabs.ftz.f(float %.051) #139 %174 = call float @llvm.fabs.f32(float %.051) %.058 = select i1 %.not99, float %174, float %173 %175 = fcmp ult float %.058, 1.056150e+05 br i1 %175, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__nv_rsqrtf.exit.i %176 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not117 = icmp eq i32 %176, 0 %.059 = select i1 %.not117, float %174, float %173 %177 = fcmp oeq float %.059, 0x7FF0000000000000 br i1 %177, label %__nv_fmul_rn.exit.i.i.i, label %181 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %178 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not123 = icmp eq i32 %178, 0 %179 = call float @llvm.nvvm.mul.rn.ftz.f(float %.051, float noundef 0.000000e+00) #139 %180 = fmul float %.051, 0.000000e+00 %.060 = select i1 %.not123, float %180, float %179 br label %__internal_trig_reduction_kernel.exit.i.i 181: ; preds = %__nv_isinff.exit.i.i.i %182 = bitcast float %.051 to i32 %183 = lshr i32 %182, 23 %184 = and i32 %183, 255 %185 = add nsw i32 %184, -128 %186 = shl i32 %182, 8 %187 = or i32 %186, -2147483648 %188 = lshr i32 %185, 5 br label %189 189: ; preds = %181, %189 %iq.i.i.i.i.0141 = phi i32 [ 0, %181 ], [ %197, %189 ] %hi.i.i.i.i.0140 = phi i32 [ 0, %181 ], [ %195, %189 ] %190 = zext i32 %iq.i.i.i.i.0141 to i64 %191 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %190 %192 = load i32, i32 addrspace(1)* %191, align 4 %193 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %192, i32 %187, i32 %hi.i.i.i.i.0140) #141, !srcloc !67 %194 = extractvalue { i32, i32 } %193, 0 %195 = extractvalue { i32, i32 } %193, 1 %196 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %190 store i32 %194, i32* %196, align 4, !noalias !68 %197 = add nuw nsw i32 %iq.i.i.i.i.0141, 1 %exitcond146.not = icmp eq i32 %197, 6 br i1 %exitcond146.not, label %198, label %189, !llvm.loop !71 198: ; preds = %189 %199 = and i32 %182, -2147483648 %200 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %195, i32* %200, align 4, !noalias !68 %201 = and i32 %183, 31 %202 = sub nsw i32 6, %188 %203 = sext i32 %202 to i64 %204 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %203 %205 = load i32, i32* %204, align 4 %206 = sub nsw i32 5, %188 %207 = sext i32 %206 to i64 %208 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %207 %209 = load i32, i32* %208, align 4 %.not118 = icmp eq i32 %201, 0 br i1 %.not118, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %210 210: ; preds = %198 %211 = sub nsw i32 4, %188 %212 = sub nuw nsw i32 32, %201 %213 = shl i32 %205, %201 %214 = lshr i32 %209, %212 %215 = add i32 %214, %213 %216 = shl i32 %209, %201 %217 = sext i32 %211 to i64 %218 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %217 %219 = load i32, i32* %218, align 4 %220 = lshr i32 %219, %212 %221 = add i32 %220, %216 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %210, %198 %hi.i.i.i.i.1 = phi i32 [ %215, %210 ], [ %205, %198 ] %lo.i.i.i.i.0 = phi i32 [ %221, %210 ], [ %209, %198 ] %222 = lshr i32 %hi.i.i.i.i.1, 30 %223 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 noundef 2) %224 = shl i32 %lo.i.i.i.i.0, 2 %225 = lshr i32 %223, 31 %226 = add nuw nsw i32 %225, %222 %.not119 = icmp eq i32 %199, 0 %227 = sub nsw i32 0, %226 %spec.select = select i1 %.not119, i32 %226, i32 %227 %.not120 = icmp sgt i32 %223, -1 %228 = xor i32 %199, -2147483648 %s.i.i.i.i.0 = select i1 %.not120, i32 %199, i32 %228 %not..not120 = xor i1 %.not120, true %229 = sext i1 %not..not120 to i32 %hi.i.i.i.i.2 = xor i32 %223, %229 %lo.i.i.i.i.1 = xor i32 %224, %229 %230 = zext i32 %hi.i.i.i.i.2 to i64 %231 = shl nuw i64 %230, 32 %232 = zext i32 %lo.i.i.i.i.1 to i64 %233 = or i64 %231, %232 %234 = sitofp i64 %233 to double %235 = fmul double %234, 0x3BF921FB54442D19 %236 = fptrunc double %235 to float %.not122 = icmp eq i32 %s.i.i.i.i.0, 0 %237 = fneg float %236 %r.i.i.i.i.0 = select i1 %.not122, float %236, float %237 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__nv_rsqrtf.exit.i %i.i.i.1 = phi i32 [ %.054, %__nv_rsqrtf.exit.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %.057, %__nv_rsqrtf.exit.i ], [ %.060, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %238 = and i32 %i.i.i.1, 3 %239 = uitofp i32 %238 to float %240 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not100 = icmp eq i32 %240, 0 %241 = call float @llvm.nvvm.fma.rn.ftz.f(float %239, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %242 = call float @llvm.fma.f32(float %239, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.061 = select i1 %.not100, float %242, float %241 %243 = fadd float %t.i.i.i.1, %.061 %244 = fmul float %243, 0x3FE45F3060000000 %245 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not101 = icmp eq i32 %245, 0 %246 = call i32 @llvm.nvvm.f2i.rn.ftz(float %244) #139 %247 = call i32 @llvm.nvvm.f2i.rn(float %244) #139 %.062 = select i1 %.not101, i32 %247, i32 %246 %248 = sitofp i32 %.062 to float %249 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not102 = icmp eq i32 %249, 0 %250 = call float @llvm.nvvm.fma.rn.ftz.f(float %248, float noundef 0xBFF921FB40000000, float %243) #139 %251 = call float @llvm.fma.f32(float %248, float noundef 0xBFF921FB40000000, float %243) %.064 = select i1 %.not102, float %251, float %250 %252 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not103 = icmp eq i32 %252, 0 %253 = call float @llvm.nvvm.fma.rn.ftz.f(float %248, float noundef 0xBE74442D00000000, float %.064) #139 %254 = call float @llvm.fma.f32(float %248, float noundef 0xBE74442D00000000, float %.064) %.065 = select i1 %.not103, float %254, float %253 %255 = add i32 %.062, 1 %256 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not104 = icmp eq i32 %256, 0 %257 = call float @llvm.nvvm.mul.rn.ftz.f(float %.065, float %.065) #139 %258 = fmul float %.065, %.065 %.066 = select i1 %.not104, float %258, float %257 %259 = and i32 %255, 1 %.not105 = icmp eq i32 %259, 0 %260 = select i1 %.not105, float %.065, float 1.000000e+00 %261 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not106 = icmp eq i32 %261, 0 %262 = call float @llvm.nvvm.fma.rn.ftz.f(float %.066, float %260, float noundef 0.000000e+00) #139 %263 = call float @llvm.fma.f32(float %.066, float %260, float noundef 0.000000e+00) %.068 = select i1 %.not106, float %263, float %262 br i1 %.not105, label %__internal_fmad.exit2.i.i.i, label %__internal_fmad.exit1.i.i.i __internal_fmad.exit1.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i %264 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not116 = icmp eq i32 %264, 0 %265 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.066, float noundef 0xBF56C0FDA0000000) #139 %266 = call float @llvm.fma.f32(float %.066, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.069 = select i1 %.not116, float %266, float %265 br label %__internal_fmad.exit2.i.i.i __internal_fmad.exit2.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i, %__internal_fmad.exit1.i.i.i %267 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i ] %268 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i ] %269 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i ], [ %.069, %__internal_fmad.exit1.i.i.i ] %270 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not109 = icmp eq i32 %270, 0 %271 = call float @llvm.nvvm.fma.rn.ftz.f(float %269, float %.066, float noundef %268) #139 %272 = call float @llvm.fma.f32(float %269, float %.066, float noundef %268) %.071 = select i1 %.not109, float %272, float %271 %273 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not111 = icmp eq i32 %273, 0 %274 = call float @llvm.nvvm.fma.rn.ftz.f(float %.071, float %.066, float noundef %267) #139 %275 = call float @llvm.fma.f32(float %.071, float %.066, float noundef %267) %.073 = select i1 %.not111, float %275, float %274 %276 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not112 = icmp eq i32 %276, 0 %277 = call float @llvm.nvvm.fma.rn.ftz.f(float %.073, float %.068, float %260) #139 %278 = call float @llvm.fma.f32(float %.073, float %.068, float %260) %.074 = select i1 %.not112, float %278, float %277 %279 = and i32 %255, 2 %.not113 = icmp eq i32 %279, 0 br i1 %.not113, label %__internal_cos_offset_f.exit.i, label %__internal_fmad.exit5.i.i.i __internal_fmad.exit5.i.i.i: ; preds = %__internal_fmad.exit2.i.i.i %280 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not115 = icmp eq i32 %280, 0 %281 = call float @llvm.nvvm.fma.rn.ftz.f(float %.074, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %282 = call float @llvm.fma.f32(float %.074, float noundef -1.000000e+00, float noundef 0.000000e+00) %.075 = select i1 %.not115, float %282, float %281 br label %__internal_cos_offset_f.exit.i __internal_cos_offset_f.exit.i: ; preds = %__internal_fmad.exit5.i.i.i, %__internal_fmad.exit2.i.i.i %z.i.i.i.0 = phi float [ %.075, %__internal_fmad.exit5.i.i.i ], [ %.074, %__internal_fmad.exit2.i.i.i ] %283 = fmul float %157, %z.i.i.i.0 br label %__nv_j0f.exit __nv_j0f.exit: ; preds = %__internal_cos_offset_f.exit.i, %__nv_isinff.exit.i, %__internal_fmad.exit.i %r.i5.1 = phi float [ %120, %__internal_fmad.exit.i ], [ %283, %__internal_cos_offset_f.exit.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %284 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not114 = icmp eq i32 %284, 0 %285 = call float @llvm.nvvm.fma.rn.ftz.f(float %68, float %r.i5.1, float %.07) #139 %286 = call float @llvm.fma.f32(float %68, float %r.i5.1, float %.07) %.077 = select i1 %.not114, float %286, float %285 br label %549 287: ; preds = %__nv_fabsf.exit %288 = fcmp ugt float %.01, 0x3FFECF5F00000000 br i1 %288, label %328, label %__internal_fmad.exit9 __internal_fmad.exit9: ; preds = %287 %289 = fadd float %.01, 0xBFEC982EC0000000 %290 = fadd float %289, 0x3E4CAFA060000000 %291 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not56 = icmp eq i32 %291, 0 %292 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F9BB91660000000, float %290, float noundef 0xBFC04AE980000000) #139 %293 = call float @llvm.fma.f32(float %290, float noundef 0x3F9BB91660000000, float noundef 0xBFC04AE980000000) %.078 = select i1 %.not56, float %293, float %292 %294 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %294, 0 %295 = call float @llvm.nvvm.fma.rn.ftz.f(float %.078, float %290, float noundef 0x3FCFE59920000000) #139 %296 = call float @llvm.fma.f32(float %.078, float %290, float noundef 0x3FCFE59920000000) %.079 = select i1 %.not57, float %296, float %295 %297 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not58 = icmp eq i32 %297, 0 %298 = call float @llvm.nvvm.fma.rn.ftz.f(float %.079, float %290, float noundef 0xBFD17E5360000000) #139 %299 = call float @llvm.fma.f32(float %.079, float %290, float noundef 0xBFD17E5360000000) %.081 = select i1 %.not58, float %299, float %298 %300 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not59 = icmp eq i32 %300, 0 %301 = call float @llvm.nvvm.fma.rn.ftz.f(float %.081, float %290, float noundef 0x3FCB79D260000000) #139 %302 = call float @llvm.fma.f32(float %.081, float %290, float noundef 0x3FCB79D260000000) %.082 = select i1 %.not59, float %302, float %301 %303 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %303, 0 %304 = call float @llvm.nvvm.fma.rn.ftz.f(float %.082, float %290, float noundef 0xBFC7189FE0000000) #139 %305 = call float @llvm.fma.f32(float %.082, float %290, float noundef 0xBFC7189FE0000000) %.083 = select i1 %.not60, float %305, float %304 %306 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not61 = icmp eq i32 %306, 0 %307 = call float @llvm.nvvm.fma.rn.ftz.f(float %.083, float %290, float noundef 0x3FC84EE9A0000000) #139 %308 = call float @llvm.fma.f32(float %.083, float %290, float noundef 0x3FC84EE9A0000000) %.085 = select i1 %.not61, float %308, float %307 %309 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not62 = icmp eq i32 %309, 0 %310 = call float @llvm.nvvm.fma.rn.ftz.f(float %.085, float %290, float noundef 0xBFCA4B9640000000) #139 %311 = call float @llvm.fma.f32(float %.085, float %290, float noundef 0xBFCA4B9640000000) %.086 = select i1 %.not62, float %311, float %310 %312 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %312, 0 %313 = call float @llvm.nvvm.fma.rn.ftz.f(float %.086, float %290, float noundef 0x3FCC1E87A0000000) #139 %314 = call float @llvm.fma.f32(float %.086, float %290, float noundef 0x3FCC1E87A0000000) %.087 = select i1 %.not63, float %314, float %313 %315 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not64 = icmp eq i32 %315, 0 %316 = call float @llvm.nvvm.fma.rn.ftz.f(float %.087, float %290, float noundef 0xBFCCF228A0000000) #139 %317 = call float @llvm.fma.f32(float %.087, float %290, float noundef 0xBFCCF228A0000000) %.088 = select i1 %.not64, float %317, float %316 %318 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %318, 0 %319 = call float @llvm.nvvm.fma.rn.ftz.f(float %.088, float %290, float noundef 0x3FCC3A4940000000) #139 %320 = call float @llvm.fma.f32(float %.088, float %290, float noundef 0x3FCC3A4940000000) %.089 = select i1 %.not65, float %320, float %319 %321 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not66 = icmp eq i32 %321, 0 %322 = call float @llvm.nvvm.fma.rn.ftz.f(float %.089, float %290, float noundef 0xBFDF7E35A0000000) #139 %323 = call float @llvm.fma.f32(float %.089, float %290, float noundef 0xBFDF7E35A0000000) %.090 = select i1 %.not66, float %323, float %322 %324 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %324, 0 %325 = call float @llvm.nvvm.fma.rn.ftz.f(float %.090, float %290, float noundef 0x3FEC243760000000) #139 %326 = call float @llvm.fma.f32(float %.090, float %290, float noundef 0x3FEC243760000000) %.092 = select i1 %.not67, float %326, float %325 %327 = fmul float %290, %.092 br label %549 328: ; preds = %287 %329 = fcmp ugt float %.01, 0x40161663C0000000 br i1 %329, label %360, label %__internal_fmad.exit33 __internal_fmad.exit33: ; preds = %328 %330 = fadd float %.01, 0xC00FA95340000000 %331 = fadd float %330, 0xBE7B30AD40000000 %332 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %332, 0 %333 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBE893BA7E0000000, float %331, float noundef 0xBE8BC4C0E0000000) #139 %334 = call float @llvm.fma.f32(float %331, float noundef 0xBE893BA7E0000000, float noundef 0xBE8BC4C0E0000000) %.094 = select i1 %.not47, float %334, float %333 %335 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %335, 0 %336 = call float @llvm.nvvm.fma.rn.ftz.f(float %.094, float %331, float noundef 0xBED0AE0C80000000) #139 %337 = call float @llvm.fma.f32(float %.094, float %331, float noundef 0xBED0AE0C80000000) %.095 = select i1 %.not48, float %337, float %336 %338 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %338, 0 %339 = call float @llvm.nvvm.fma.rn.ftz.f(float %.095, float %331, float noundef 0x3F0AA8C200000000) #139 %340 = call float @llvm.fma.f32(float %.095, float %331, float noundef 0x3F0AA8C200000000) %.096 = select i1 %.not49, float %340, float %339 %341 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %341, 0 %342 = call float @llvm.nvvm.fma.rn.ftz.f(float %.096, float %331, float noundef 0x3F2959DAE0000000) #139 %343 = call float @llvm.fma.f32(float %.096, float %331, float noundef 0x3F2959DAE0000000) %.097 = select i1 %.not50, float %343, float %342 %344 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %344, 0 %345 = call float @llvm.nvvm.fma.rn.ftz.f(float %.097, float %331, float noundef 0xBF61E34180000000) #139 %346 = call float @llvm.fma.f32(float %.097, float %331, float noundef 0xBF61E34180000000) %.098 = select i1 %.not51, float %346, float %345 %347 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %347, 0 %348 = call float @llvm.nvvm.fma.rn.ftz.f(float %.098, float %331, float noundef 0xBF7C0FE5C0000000) #139 %349 = call float @llvm.fma.f32(float %.098, float %331, float noundef 0xBF7C0FE5C0000000) %.099 = select i1 %.not52, float %349, float %348 %350 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %350, 0 %351 = call float @llvm.nvvm.fma.rn.ftz.f(float %.099, float %331, float noundef 0x3FADF6D6A0000000) #139 %352 = call float @llvm.fma.f32(float %.099, float %331, float noundef 0x3FADF6D6A0000000) %.0101 = select i1 %.not53, float %352, float %351 %353 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %353, 0 %354 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0101, float %331, float noundef 0x3FAA09BE20000000) #139 %355 = call float @llvm.fma.f32(float %.0101, float %331, float noundef 0x3FAA09BE20000000) %.0102 = select i1 %.not54, float %355, float %354 %356 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %356, 0 %357 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0102, float %331, float noundef 0xBFD9C34260000000) #139 %358 = call float @llvm.fma.f32(float %.0102, float %331, float noundef 0xBFD9C34260000000) %.0103 = select i1 %.not55, float %358, float %357 %359 = fmul float %331, %.0103 br label %549 360: ; preds = %328 %361 = fcmp ugt float %.01, 0x40214EF300000000 br i1 %361, label %__nv_isinff.exit, label %__internal_fmad.exit51 __internal_fmad.exit51: ; preds = %360 %362 = fadd float %.01, 0xC01C581DC0000000 %363 = fadd float %362, 0xBE739C8400000000 %364 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %364, 0 %365 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA219D7C0000000, float %363, float noundef 0x3EC53B4D80000000) #139 %366 = call float @llvm.fma.f32(float %363, float noundef 0x3EA219D7C0000000, float noundef 0x3EC53B4D80000000) %.0104 = select i1 %.not39, float %366, float %365 %367 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %367, 0 %368 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0104, float %363, float noundef 0xBF080A9800000000) #139 %369 = call float @llvm.fma.f32(float %.0104, float %363, float noundef 0xBF080A9800000000) %.0105 = select i1 %.not40, float %369, float %368 %370 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %370, 0 %371 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0105, float %363, float noundef 0xBF22631560000000) #139 %372 = call float @llvm.fma.f32(float %.0105, float %363, float noundef 0xBF22631560000000) %.0106 = select i1 %.not41, float %372, float %371 %373 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %373, 0 %374 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0106, float %363, float noundef 0x3F61D32420000000) #139 %375 = call float @llvm.fma.f32(float %.0106, float %363, float noundef 0x3F61D32420000000) %.0108 = select i1 %.not42, float %375, float %374 %376 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %376, 0 %377 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0108, float %363, float noundef 0x3F6B2E9AA0000000) #139 %378 = call float @llvm.fma.f32(float %.0108, float %363, float noundef 0x3F6B2E9AA0000000) %.0109 = select i1 %.not43, float %378, float %377 %379 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %379, 0 %380 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0109, float %363, float noundef 0xBFA8969AE0000000) #139 %381 = call float @llvm.fma.f32(float %.0109, float %363, float noundef 0xBFA8969AE0000000) %.0110 = select i1 %.not44, float %381, float %380 %382 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %382, 0 %383 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0110, float %363, float noundef 0xBF95AEF320000000) #139 %384 = call float @llvm.fma.f32(float %.0110, float %363, float noundef 0xBF95AEF320000000) %.0111 = select i1 %.not45, float %384, float %383 %385 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %385, 0 %386 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0111, float %363, float noundef 0x3FD334CCA0000000) #139 %387 = call float @llvm.fma.f32(float %.0111, float %363, float noundef 0x3FD334CCA0000000) %.0112 = select i1 %.not46, float %387, float %386 %388 = fmul float %363, %.0112 br label %549 __nv_isinff.exit: ; preds = %360 %389 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %389, 0 %390 = call float @llvm.nvvm.fabs.ftz.f(float %.01) #139 %391 = call float @llvm.fabs.f32(float %.01) %.0113 = select i1 %.not2, float %391, float %390 %392 = fcmp oeq float %.0113, 0x7FF0000000000000 br i1 %392, label %549, label %__internal_fmad.exit70 __internal_fmad.exit70: ; preds = %__nv_isinff.exit %393 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.01) #141, !srcloc !73 %394 = fmul float %393, %393 %395 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %395, 0 %396 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFD98D3E60000000, float %394, float noundef 0x3FBA1ABE00000000) #139 %397 = call float @llvm.fma.f32(float %394, float noundef 0xBFD98D3E60000000, float noundef 0x3FBA1ABE00000000) %.0115 = select i1 %.not3, float %397, float %396 %398 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %398, 0 %399 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0115, float %394, float noundef 0xBFAFFF0AA0000000) #139 %400 = call float @llvm.fma.f32(float %.0115, float %394, float noundef 0xBFAFFF0AA0000000) %.0116 = select i1 %.not4, float %400, float %399 %401 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %401, 0 %402 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0116, float %394, float noundef 1.000000e+00) #139 %403 = call float @llvm.fma.f32(float %.0116, float %394, float noundef 1.000000e+00) %.0117 = select i1 %.not5, float %403, float %402 %404 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %404, 0 %405 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF199AC20000000, float %394, float noundef 0xBFCA1A6380000000) #139 %406 = call float @llvm.fma.f32(float %394, float noundef 0x3FF199AC20000000, float noundef 0xBFCA1A6380000000) %.0114 = select i1 %.not6, float %406, float %405 %407 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %407, 0 %408 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0114, float %394, float noundef 0x3FB0A8F060000000) #139 %409 = call float @llvm.fma.f32(float %.0114, float %394, float noundef 0x3FB0A8F060000000) %.0107 = select i1 %.not7, float %409, float %408 %410 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %410, 0 %411 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0107, float %394, float noundef 0xBFBFFFFF60000000) #139 %412 = call float @llvm.fma.f32(float %.0107, float %394, float noundef 0xBFBFFFFF60000000) %.0100 = select i1 %.not8, float %412, float %411 %413 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %413, 0 %414 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0100, float %393, float %.01) #139 %415 = call float @llvm.fma.f32(float %.0100, float %393, float %.01) %.093 = select i1 %.not9, float %415, float %414 %416 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %416, 0 br i1 %.not10, label %419, label %417 417: ; preds = %__internal_fmad.exit70 %418 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.01) #139 br label %__nv_rsqrtf.exit 419: ; preds = %__internal_fmad.exit70 %420 = call float @llvm.nvvm.rsqrt.approx.f(float %.01) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %419, %417 %.091 = phi float [ %418, %417 ], [ %420, %419 ] %421 = fmul float %.091, 0x3FE9884540000000 %422 = fmul float %.0117, %421 %423 = fmul float %.093, 0x3FE45F3060000000 %424 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %424, 0 %425 = call i32 @llvm.nvvm.f2i.rn.ftz(float %423) #139 %426 = call i32 @llvm.nvvm.f2i.rn(float %423) #139 %.084 = select i1 %.not11, i32 %426, i32 %425 %427 = sitofp i32 %.084 to float %428 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %428, 0 %429 = call float @llvm.nvvm.fma.rn.ftz.f(float %427, float noundef 0xBFF921FB40000000, float %.093) #139 %430 = call float @llvm.fma.f32(float %427, float noundef 0xBFF921FB40000000, float %.093) %.080 = select i1 %.not12, float %430, float %429 %431 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %431, 0 %432 = call float @llvm.nvvm.fma.rn.ftz.f(float %427, float noundef 0xBE74442D00000000, float %.080) #139 %433 = call float @llvm.fma.f32(float %427, float noundef 0xBE74442D00000000, float %.080) %.076 = select i1 %.not13, float %433, float %432 %434 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %434, 0 %435 = call float @llvm.nvvm.fma.rn.ftz.f(float %427, float noundef 0xBCF84698A0000000, float %.076) #139 %436 = call float @llvm.fma.f32(float %427, float noundef 0xBCF84698A0000000, float %.076) %.072 = select i1 %.not14, float %436, float %435 %437 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %437, 0 %438 = call float @llvm.nvvm.fabs.ftz.f(float %.093) #139 %439 = call float @llvm.fabs.f32(float %.093) %.070 = select i1 %.not15, float %439, float %438 %440 = fcmp ult float %.070, 1.056150e+05 br i1 %440, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_rsqrtf.exit %441 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %441, 0 %.067 = select i1 %.not32, float %439, float %438 %442 = fcmp oeq float %.067, 0x7FF0000000000000 br i1 %442, label %__nv_fmul_rn.exit.i.i, label %446 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %443 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %443, 0 %444 = call float @llvm.nvvm.mul.rn.ftz.f(float %.093, float noundef 0.000000e+00) #139 %445 = fmul float %.093, 0.000000e+00 %.063 = select i1 %.not38, float %445, float %444 br label %__internal_trig_reduction_kernel.exit.i 446: ; preds = %__nv_isinff.exit.i.i %447 = bitcast float %.093 to i32 %448 = lshr i32 %447, 23 %449 = and i32 %448, 255 %450 = add nsw i32 %449, -128 %451 = shl i32 %447, 8 %452 = or i32 %451, -2147483648 %453 = lshr i32 %450, 5 br label %454 454: ; preds = %446, %454 %hi.i.i.i.0139 = phi i32 [ 0, %446 ], [ %460, %454 ] %iq.i.i.i.0138 = phi i32 [ 0, %446 ], [ %462, %454 ] %455 = zext i32 %iq.i.i.i.0138 to i64 %456 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %455 %457 = load i32, i32 addrspace(1)* %456, align 4 %458 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %457, i32 %452, i32 %hi.i.i.i.0139) #141, !srcloc !67 %459 = extractvalue { i32, i32 } %458, 0 %460 = extractvalue { i32, i32 } %458, 1 %461 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %455 store i32 %459, i32* %461, align 4, !noalias !68 %462 = add nuw nsw i32 %iq.i.i.i.0138, 1 %exitcond.not = icmp eq i32 %462, 6 br i1 %exitcond.not, label %463, label %454, !llvm.loop !71 463: ; preds = %454 %464 = and i32 %447, -2147483648 %465 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %460, i32* %465, align 4, !noalias !68 %466 = and i32 %448, 31 %467 = sub nsw i32 6, %453 %468 = sext i32 %467 to i64 %469 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %468 %470 = load i32, i32* %469, align 4 %471 = sub nsw i32 5, %453 %472 = sext i32 %471 to i64 %473 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %472 %474 = load i32, i32* %473, align 4 %.not33 = icmp eq i32 %466, 0 br i1 %.not33, label %__internal_trig_reduction_slowpath.exit.i.i, label %475 475: ; preds = %463 %476 = sub nsw i32 4, %453 %477 = sub nuw nsw i32 32, %466 %478 = shl i32 %470, %466 %479 = lshr i32 %474, %477 %480 = add i32 %479, %478 %481 = shl i32 %474, %466 %482 = sext i32 %476 to i64 %483 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %482 %484 = load i32, i32* %483, align 4 %485 = lshr i32 %484, %477 %486 = add i32 %485, %481 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %475, %463 %lo.i.i.i.0 = phi i32 [ %486, %475 ], [ %474, %463 ] %hi.i.i.i.1 = phi i32 [ %480, %475 ], [ %470, %463 ] %487 = lshr i32 %hi.i.i.i.1, 30 %488 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %489 = shl i32 %lo.i.i.i.0, 2 %490 = lshr i32 %488, 31 %491 = add nuw nsw i32 %490, %487 %.not34 = icmp eq i32 %464, 0 %492 = sub nsw i32 0, %491 %spec.select1 = select i1 %.not34, i32 %491, i32 %492 %.not35 = icmp sgt i32 %488, -1 %493 = xor i32 %464, -2147483648 %not..not35 = xor i1 %.not35, true %494 = sext i1 %not..not35 to i32 %lo.i.i.i.1 = xor i32 %489, %494 %hi.i.i.i.2 = xor i32 %488, %494 %s.i.i.i.0 = select i1 %.not35, i32 %464, i32 %493 %495 = zext i32 %hi.i.i.i.2 to i64 %496 = shl nuw i64 %495, 32 %497 = zext i32 %lo.i.i.i.1 to i64 %498 = or i64 %496, %497 %499 = sitofp i64 %498 to double %500 = fmul double %499, 0x3BF921FB54442D19 %501 = fptrunc double %500 to float %.not37 = icmp eq i32 %s.i.i.i.0, 0 %502 = fneg float %501 %r.i.i.i.0 = select i1 %.not37, float %501, float %502 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_rsqrtf.exit %i.i85.1 = phi i32 [ %.084, %__nv_rsqrtf.exit ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.072, %__nv_rsqrtf.exit ], [ %.063, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %503 = and i32 %i.i85.1, 3 %504 = uitofp i32 %503 to float %505 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %505, 0 %506 = call float @llvm.nvvm.fma.rn.ftz.f(float %504, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %507 = call float @llvm.fma.f32(float %504, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.052 = select i1 %.not16, float %507, float %506 %508 = fadd float %t.i.i.1, %.052 %509 = fmul float %508, 0x3FE45F3060000000 %510 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %510, 0 %511 = call i32 @llvm.nvvm.f2i.rn.ftz(float %509) #139 %512 = call i32 @llvm.nvvm.f2i.rn(float %509) #139 %.050 = select i1 %.not17, i32 %512, i32 %511 %513 = sitofp i32 %.050 to float %514 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %514, 0 %515 = call float @llvm.nvvm.fma.rn.ftz.f(float %513, float noundef 0xBFF921FB40000000, float %508) #139 %516 = call float @llvm.fma.f32(float %513, float noundef 0xBFF921FB40000000, float %508) %.046 = select i1 %.not18, float %516, float %515 %517 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %517, 0 %518 = call float @llvm.nvvm.fma.rn.ftz.f(float %513, float noundef 0xBE74442D00000000, float %.046) #139 %519 = call float @llvm.fma.f32(float %513, float noundef 0xBE74442D00000000, float %.046) %.042 = select i1 %.not19, float %519, float %518 %520 = add i32 %.050, 1 %521 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %521, 0 %522 = call float @llvm.nvvm.mul.rn.ftz.f(float %.042, float %.042) #139 %523 = fmul float %.042, %.042 %.033 = select i1 %.not20, float %523, float %522 %524 = and i32 %520, 1 %.not21 = icmp eq i32 %524, 0 %525 = select i1 %.not21, float %.042, float 1.000000e+00 %526 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %526, 0 %527 = call float @llvm.nvvm.fma.rn.ftz.f(float %.033, float %525, float noundef 0.000000e+00) #139 %528 = call float @llvm.fma.f32(float %.033, float %525, float noundef 0.000000e+00) %.026 = select i1 %.not22, float %528, float %527 br i1 %.not21, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %529 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %529, 0 %530 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.033, float noundef 0xBF56C0FDA0000000) #139 %531 = call float @llvm.fma.f32(float %.033, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.022 = select i1 %.not31, float %531, float %530 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %532 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %533 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %534 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.022, %__internal_fmad.exit1.i.i ] %535 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %535, 0 %536 = call float @llvm.nvvm.fma.rn.ftz.f(float %534, float %.033, float noundef %533) #139 %537 = call float @llvm.fma.f32(float %534, float %.033, float noundef %533) %.015 = select i1 %.not25, float %537, float %536 %538 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %538, 0 %539 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %.033, float noundef %532) #139 %540 = call float @llvm.fma.f32(float %.015, float %.033, float noundef %532) %.08 = select i1 %.not27, float %540, float %539 %541 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %541, 0 %542 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %.026, float %525) #139 %543 = call float @llvm.fma.f32(float %.08, float %.026, float %525) %.04 = select i1 %.not28, float %543, float %542 %544 = and i32 %520, 2 %.not29 = icmp eq i32 %544, 0 br i1 %.not29, label %__internal_cos_offset_f.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %545 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %545, 0 %546 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %547 = call float @llvm.fma.f32(float %.04, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0 = select i1 %.not30, float %547, float %546 br label %__internal_cos_offset_f.exit __internal_cos_offset_f.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i83.0 = phi float [ %.0, %__internal_fmad.exit5.i.i ], [ %.04, %__internal_fmad.exit2.i.i ] %548 = fmul float %422, %z.i.i83.0 br label %549 549: ; preds = %__internal_fmad.exit9, %__internal_fmad.exit51, %__nv_isinff.exit, %__internal_cos_offset_f.exit, %__internal_fmad.exit33, %__nv_j0f.exit %r.4 = phi float [ %.077, %__nv_j0f.exit ], [ %327, %__internal_fmad.exit9 ], [ %359, %__internal_fmad.exit33 ], [ %388, %__internal_fmad.exit51 ], [ %548, %__internal_cos_offset_f.exit ], [ 0.000000e+00, %__nv_isinff.exit ] %550 = fcmp olt float %a, 0.000000e+00 %r.5 = select i1 %550, float 0x7FFFFFFFE0000000, float %r.4 ret float %r.5 } ; Function Attrs: noinline nounwind define dso_local float @__nv_y1f(float %a) local_unnamed_addr #46 { __nv_fabsf.exit: %result.i.i.i.i = alloca [7 x i32], align 4 %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp olt float %.01, 0x3810000000000000 br i1 %3, label %4, label %6 4: ; preds = %__nv_fabsf.exit %5 = fdiv float 0xBFE45F3060000000, %.01 br label %551 6: ; preds = %__nv_fabsf.exit %7 = fcmp ugt float %.01, 0x3FFB2D5880000000 br i1 %7, label %298, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %6 %8 = fmul float %.01, %.01 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E428C5980000000, float %8, float noundef 0xBEB0A4FB40000000) #139 %11 = call float @llvm.fma.f32(float %8, float noundef 0x3E428C5980000000, float noundef 0xBEB0A4FB40000000) %.02 = select i1 %.not65, float %11, float %10 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not66 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %8, float noundef 0x3F12C7D2A0000000) #139 %14 = call float @llvm.fma.f32(float %.02, float %8, float noundef 0x3F12C7D2A0000000) %.03 = select i1 %.not66, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %8, float noundef 0xBF6835B960000000) #139 %17 = call float @llvm.fma.f32(float %.03, float %8, float noundef 0xBF6835B960000000) %.04 = select i1 %.not67, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %8, float noundef 0x3FABD39760000000) #139 %20 = call float @llvm.fma.f32(float %.04, float %8, float noundef 0x3FABD39760000000) %.06 = select i1 %.not68, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not69 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %8, float noundef 0xBFC9186620000000) #139 %23 = call float @llvm.fma.f32(float %.06, float %8, float noundef 0xBFC9186620000000) %.07 = select i1 %.not69, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not70 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fabs.ftz.f(float %.01) #139 %26 = call float @llvm.fabs.f32(float %.01) %.08 = select i1 %.not70, float %26, float %25 %27 = fcmp ugt float %.08, 8.000000e+00 br i1 %27, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__internal_fmad.exit %28 = fadd float %.08, 0xC00EA75580000000 %29 = fadd float %28, 0x3E74A121E0000000 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not123 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %29, float noundef 0x3D7037E840000000) #139 %32 = call float @llvm.fma.f32(float %29, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.010 = select i1 %.not123, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not124 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %29, float noundef 0xBDBC43D820000000) #139 %35 = call float @llvm.fma.f32(float %.010, float %29, float noundef 0xBDBC43D820000000) %.011 = select i1 %.not124, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not125 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %29, float noundef 0xBDEBBBDFE0000000) #139 %38 = call float @llvm.fma.f32(float %.011, float %29, float noundef 0xBDEBBBDFE0000000) %.012 = select i1 %.not125, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not126 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %29, float noundef 0x3E336193A0000000) #139 %41 = call float @llvm.fma.f32(float %.012, float %29, float noundef 0x3E336193A0000000) %.013 = select i1 %.not126, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not127 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %29, float noundef 0x3E5D022E60000000) #139 %44 = call float @llvm.fma.f32(float %.013, float %29, float noundef 0x3E5D022E60000000) %.014 = select i1 %.not127, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not128 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %29, float noundef 0xBEA1F1B900000000) #139 %47 = call float @llvm.fma.f32(float %.014, float %29, float noundef 0xBEA1F1B900000000) %.015 = select i1 %.not128, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not129 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %29, float noundef 0xBEC3CCA7A0000000) #139 %50 = call float @llvm.fma.f32(float %.015, float %29, float noundef 0xBEC3CCA7A0000000) %.017 = select i1 %.not129, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not130 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %29, float noundef 0x3F059B38A0000000) #139 %53 = call float @llvm.fma.f32(float %.017, float %29, float noundef 0x3F059B38A0000000) %.018 = select i1 %.not130, float %53, float %52 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not131 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %29, float noundef 0x3F1F3D6200000000) #139 %56 = call float @llvm.fma.f32(float %.018, float %29, float noundef 0x3F1F3D6200000000) %.019 = select i1 %.not131, float %56, float %55 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not132 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %29, float noundef 0xBF5D9D7380000000) #139 %59 = call float @llvm.fma.f32(float %.019, float %29, float noundef 0xBF5D9D7380000000) %.020 = select i1 %.not132, float %59, float %58 %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not133 = icmp eq i32 %60, 0 %61 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %29, float noundef 0xBF64EDFFA0000000) #139 %62 = call float @llvm.fma.f32(float %.020, float %29, float noundef 0xBF64EDFFA0000000) %.021 = select i1 %.not133, float %62, float %61 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not134 = icmp eq i32 %63, 0 %64 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %29, float noundef 0x3FA0E73260000000) #139 %65 = call float @llvm.fma.f32(float %.021, float %29, float noundef 0x3FA0E73260000000) %.022 = select i1 %.not134, float %65, float %64 %66 = fadd float %.08, 0xC01C0FF600000000 %67 = fadd float %66, 0x3E88971B60000000 %68 = fmul float %67, %.022 %69 = fmul float %29, %68 %70 = fmul float %.08, %69 br label %234 __nv_isinff.exit.i: ; preds = %__internal_fmad.exit %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fabs.ftz.f(float %.08) #139 %73 = call float @llvm.fabs.f32(float %.08) %.024 = select i1 %.not71, float %73, float %72 %74 = fcmp oeq float %.024, 0x7FF0000000000000 br i1 %74, label %234, label %__internal_fmad.exit12.i __internal_fmad.exit12.i: ; preds = %__nv_isinff.exit.i %75 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.08) #141, !srcloc !73 %76 = fmul float %75, %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %76, float noundef 0x3FE7FEFD20000000) #139 %79 = call float @llvm.fma.f32(float %76, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.025 = select i1 %.not72, float %79, float %78 %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float %76, float noundef 0xBFC8B175C0000000) #139 %82 = call float @llvm.fma.f32(float %.025, float %76, float noundef 0xBFC8B175C0000000) %.026 = select i1 %.not73, float %82, float %81 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %83, 0 %84 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %76, float noundef 0x3FC7FFF160000000) #139 %85 = call float @llvm.fma.f32(float %.026, float %76, float noundef 0x3FC7FFF160000000) %.027 = select i1 %.not74, float %85, float %84 %86 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %86, 0 %87 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %76, float noundef 1.000000e+00) #139 %88 = call float @llvm.fma.f32(float %.027, float %76, float noundef 1.000000e+00) %.028 = select i1 %.not75, float %88, float %87 %89 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not76 = icmp eq i32 %89, 0 %90 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %76, float noundef 0x3FD72295A0000000) #139 %91 = call float @llvm.fma.f32(float %76, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.029 = select i1 %.not76, float %91, float %90 %92 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %92, 0 %93 = call float @llvm.nvvm.fma.rn.ftz.f(float %.029, float %76, float noundef 0xBFC4FE5D80000000) #139 %94 = call float @llvm.fma.f32(float %.029, float %76, float noundef 0xBFC4FE5D80000000) %.031 = select i1 %.not77, float %94, float %93 %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not78 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float %.031, float %76, float noundef 0x3FD7FFFFA0000000) #139 %97 = call float @llvm.fma.f32(float %.031, float %76, float noundef 0x3FD7FFFFA0000000) %.032 = select i1 %.not78, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not79 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fma.rn.ftz.f(float %.032, float %75, float %.08) #139 %100 = call float @llvm.fma.f32(float %.032, float %75, float %.08) %.033 = select i1 %.not79, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %101, 0 br i1 %.not80, label %104, label %102 102: ; preds = %__internal_fmad.exit12.i %103 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.08) #139 br label %__nv_rsqrtf.exit.i 104: ; preds = %__internal_fmad.exit12.i %105 = call float @llvm.nvvm.rsqrt.approx.f(float %.08) #139 br label %__nv_rsqrtf.exit.i __nv_rsqrtf.exit.i: ; preds = %104, %102 %.034 = phi float [ %103, %102 ], [ %105, %104 ] %106 = fmul float %.034, 0x3FE9884540000000 %107 = fmul float %.028, %106 %108 = fmul float %.033, 0x3FE45F3060000000 %109 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not81 = icmp eq i32 %109, 0 %110 = call i32 @llvm.nvvm.f2i.rn.ftz(float %108) #139 %111 = call i32 @llvm.nvvm.f2i.rn(float %108) #139 %.036 = select i1 %.not81, i32 %111, i32 %110 %112 = sitofp i32 %.036 to float %113 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %113, 0 %114 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBFF921FB40000000, float %.033) #139 %115 = call float @llvm.fma.f32(float %112, float noundef 0xBFF921FB40000000, float %.033) %.037 = select i1 %.not82, float %115, float %114 %116 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %116, 0 %117 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBE74442D00000000, float %.037) #139 %118 = call float @llvm.fma.f32(float %112, float noundef 0xBE74442D00000000, float %.037) %.038 = select i1 %.not83, float %118, float %117 %119 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not84 = icmp eq i32 %119, 0 %120 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBCF84698A0000000, float %.038) #139 %121 = call float @llvm.fma.f32(float %112, float noundef 0xBCF84698A0000000, float %.038) %.039 = select i1 %.not84, float %121, float %120 %122 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not85 = icmp eq i32 %122, 0 %123 = call float @llvm.nvvm.fabs.ftz.f(float %.033) #139 %124 = call float @llvm.fabs.f32(float %.033) %.040 = select i1 %.not85, float %124, float %123 %125 = fcmp ult float %.040, 1.056150e+05 br i1 %125, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__nv_rsqrtf.exit.i %126 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not116 = icmp eq i32 %126, 0 %.042 = select i1 %.not116, float %124, float %123 %127 = fcmp oeq float %.042, 0x7FF0000000000000 br i1 %127, label %__nv_fmul_rn.exit.i.i.i, label %131 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %128 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not122 = icmp eq i32 %128, 0 %129 = call float @llvm.nvvm.mul.rn.ftz.f(float %.033, float noundef 0.000000e+00) #139 %130 = fmul float %.033, 0.000000e+00 %.043 = select i1 %.not122, float %130, float %129 br label %__internal_trig_reduction_kernel.exit.i.i 131: ; preds = %__nv_isinff.exit.i.i.i %132 = bitcast float %.033 to i32 %133 = lshr i32 %132, 23 %134 = and i32 %133, 255 %135 = add nsw i32 %134, -128 %136 = shl i32 %132, 8 %137 = or i32 %136, -2147483648 %138 = lshr i32 %135, 5 br label %139 139: ; preds = %131, %139 %iq.i.i.i.i.0138 = phi i32 [ 0, %131 ], [ %147, %139 ] %hi.i.i.i.i.0137 = phi i32 [ 0, %131 ], [ %145, %139 ] %140 = zext i32 %iq.i.i.i.i.0138 to i64 %141 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %140 %142 = load i32, i32 addrspace(1)* %141, align 4 %143 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %142, i32 %137, i32 %hi.i.i.i.i.0137) #141, !srcloc !67 %144 = extractvalue { i32, i32 } %143, 0 %145 = extractvalue { i32, i32 } %143, 1 %146 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %140 store i32 %144, i32* %146, align 4, !noalias !68 %147 = add nuw nsw i32 %iq.i.i.i.i.0138, 1 %exitcond143.not = icmp eq i32 %147, 6 br i1 %exitcond143.not, label %148, label %139, !llvm.loop !71 148: ; preds = %139 %149 = and i32 %132, -2147483648 %150 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %145, i32* %150, align 4, !noalias !68 %151 = and i32 %133, 31 %152 = sub nsw i32 6, %138 %153 = sext i32 %152 to i64 %154 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %153 %155 = load i32, i32* %154, align 4 %156 = sub nsw i32 5, %138 %157 = sext i32 %156 to i64 %158 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %157 %159 = load i32, i32* %158, align 4 %.not117 = icmp eq i32 %151, 0 br i1 %.not117, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %160 160: ; preds = %148 %161 = sub nsw i32 4, %138 %162 = sub nuw nsw i32 32, %151 %163 = shl i32 %155, %151 %164 = lshr i32 %159, %162 %165 = add i32 %164, %163 %166 = shl i32 %159, %151 %167 = sext i32 %161 to i64 %168 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %167 %169 = load i32, i32* %168, align 4 %170 = lshr i32 %169, %162 %171 = add i32 %170, %166 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %160, %148 %hi.i.i.i.i.1 = phi i32 [ %165, %160 ], [ %155, %148 ] %lo.i.i.i.i.0 = phi i32 [ %171, %160 ], [ %159, %148 ] %172 = lshr i32 %hi.i.i.i.i.1, 30 %173 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 noundef 2) %174 = shl i32 %lo.i.i.i.i.0, 2 %175 = lshr i32 %173, 31 %176 = add nuw nsw i32 %175, %172 %.not118 = icmp eq i32 %149, 0 %177 = sub nsw i32 0, %176 %spec.select = select i1 %.not118, i32 %176, i32 %177 %.not119 = icmp sgt i32 %173, -1 %178 = xor i32 %149, -2147483648 %s.i.i.i.i.0 = select i1 %.not119, i32 %149, i32 %178 %not..not119 = xor i1 %.not119, true %179 = sext i1 %not..not119 to i32 %hi.i.i.i.i.2 = xor i32 %173, %179 %lo.i.i.i.i.1 = xor i32 %174, %179 %180 = zext i32 %hi.i.i.i.i.2 to i64 %181 = shl nuw i64 %180, 32 %182 = zext i32 %lo.i.i.i.i.1 to i64 %183 = or i64 %181, %182 %184 = sitofp i64 %183 to double %185 = fmul double %184, 0x3BF921FB54442D19 %186 = fptrunc double %185 to float %.not121 = icmp eq i32 %s.i.i.i.i.0, 0 %187 = fneg float %186 %r.i.i.i.i.0 = select i1 %.not121, float %186, float %187 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__nv_rsqrtf.exit.i %i.i.i.1 = phi i32 [ %.036, %__nv_rsqrtf.exit.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %.039, %__nv_rsqrtf.exit.i ], [ %.043, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %188 = and i32 %i.i.i.1, 3 %189 = uitofp i32 %188 to float %190 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not86 = icmp eq i32 %190, 0 %191 = call float @llvm.nvvm.fma.rn.ftz.f(float %189, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %192 = call float @llvm.fma.f32(float %189, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.047 = select i1 %.not86, float %192, float %191 %193 = fadd float %t.i.i.i.1, %.047 %194 = fmul float %193, 0x3FE45F3060000000 %195 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not87 = icmp eq i32 %195, 0 %196 = call i32 @llvm.nvvm.f2i.rn.ftz(float %194) #139 %197 = call i32 @llvm.nvvm.f2i.rn(float %194) #139 %.048 = select i1 %.not87, i32 %197, i32 %196 %198 = sitofp i32 %.048 to float %199 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not88 = icmp eq i32 %199, 0 %200 = call float @llvm.nvvm.fma.rn.ftz.f(float %198, float noundef 0xBFF921FB40000000, float %193) #139 %201 = call float @llvm.fma.f32(float %198, float noundef 0xBFF921FB40000000, float %193) %.049 = select i1 %.not88, float %201, float %200 %202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not89 = icmp eq i32 %202, 0 %203 = call float @llvm.nvvm.fma.rn.ftz.f(float %198, float noundef 0xBE74442D00000000, float %.049) #139 %204 = call float @llvm.fma.f32(float %198, float noundef 0xBE74442D00000000, float %.049) %.050 = select i1 %.not89, float %204, float %203 %205 = add i32 %.048, 1 %206 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not90 = icmp eq i32 %206, 0 %207 = call float @llvm.nvvm.mul.rn.ftz.f(float %.050, float %.050) #139 %208 = fmul float %.050, %.050 %.051 = select i1 %.not90, float %208, float %207 %209 = and i32 %205, 1 %.not91 = icmp eq i32 %209, 0 %210 = select i1 %.not91, float %.050, float 1.000000e+00 %211 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not92 = icmp eq i32 %211, 0 %212 = call float @llvm.nvvm.fma.rn.ftz.f(float %.051, float %210, float noundef 0.000000e+00) #139 %213 = call float @llvm.fma.f32(float %.051, float %210, float noundef 0.000000e+00) %.052 = select i1 %.not92, float %213, float %212 br i1 %.not91, label %__internal_fmad.exit2.i.i.i, label %__internal_fmad.exit1.i.i.i __internal_fmad.exit1.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i %214 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not115 = icmp eq i32 %214, 0 %215 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.051, float noundef 0xBF56C0FDA0000000) #139 %216 = call float @llvm.fma.f32(float %.051, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.053 = select i1 %.not115, float %216, float %215 br label %__internal_fmad.exit2.i.i.i __internal_fmad.exit2.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i, %__internal_fmad.exit1.i.i.i %217 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i ] %218 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i ] %219 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i ], [ %.053, %__internal_fmad.exit1.i.i.i ] %220 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not95 = icmp eq i32 %220, 0 %221 = call float @llvm.nvvm.fma.rn.ftz.f(float %219, float %.051, float noundef %218) #139 %222 = call float @llvm.fma.f32(float %219, float %.051, float noundef %218) %.054 = select i1 %.not95, float %222, float %221 %223 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not97 = icmp eq i32 %223, 0 %224 = call float @llvm.nvvm.fma.rn.ftz.f(float %.054, float %.051, float noundef %217) #139 %225 = call float @llvm.fma.f32(float %.054, float %.051, float noundef %217) %.055 = select i1 %.not97, float %225, float %224 %226 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not98 = icmp eq i32 %226, 0 %227 = call float @llvm.nvvm.fma.rn.ftz.f(float %.055, float %.052, float %210) #139 %228 = call float @llvm.fma.f32(float %.055, float %.052, float %210) %.056 = select i1 %.not98, float %228, float %227 %229 = and i32 %205, 2 %.not99 = icmp eq i32 %229, 0 br i1 %.not99, label %__internal_cos_offset_f.exit.i, label %__internal_fmad.exit5.i.i.i __internal_fmad.exit5.i.i.i: ; preds = %__internal_fmad.exit2.i.i.i %230 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not114 = icmp eq i32 %230, 0 %231 = call float @llvm.nvvm.fma.rn.ftz.f(float %.056, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %232 = call float @llvm.fma.f32(float %.056, float noundef -1.000000e+00, float noundef 0.000000e+00) %.057 = select i1 %.not114, float %232, float %231 br label %__internal_cos_offset_f.exit.i __internal_cos_offset_f.exit.i: ; preds = %__internal_fmad.exit5.i.i.i, %__internal_fmad.exit2.i.i.i %z.i.i.i.0 = phi float [ %.057, %__internal_fmad.exit5.i.i.i ], [ %.056, %__internal_fmad.exit2.i.i.i ] %233 = fmul float %107, %z.i.i.i.0 br label %234 234: ; preds = %__internal_cos_offset_f.exit.i, %__nv_isinff.exit.i, %__internal_fmad.exit.i %r.i.1 = phi float [ %70, %__internal_fmad.exit.i ], [ %233, %__internal_cos_offset_f.exit.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %235 = fcmp olt float %.01, 0.000000e+00 %236 = fneg float %r.i.1 %r.i.2 = select i1 %235, float %236, float %r.i.1 %237 = fcmp olt float %.08, 0x39B4484C00000000 br i1 %237, label %238, label %.__nv_j1f.exit_crit_edge .__nv_j1f.exit_crit_edge: ; preds = %234 %.pre = bitcast float %.01 to i32 br label %__nv_j1f.exit 238: ; preds = %234 %239 = bitcast float %.01 to i32 %240 = and i32 %239, -2147483648 %241 = bitcast float %r.i.2 to i32 %242 = and i32 %241, 2147483647 %243 = or i32 %242, %240 %244 = bitcast i32 %243 to float br label %__nv_j1f.exit __nv_j1f.exit: ; preds = %.__nv_j1f.exit_crit_edge, %238 %.pre-phi = phi i32 [ %.pre, %.__nv_j1f.exit_crit_edge ], [ %239, %238 ] %r.i.3 = phi float [ %r.i.2, %.__nv_j1f.exit_crit_edge ], [ %244, %238 ] %245 = add i32 %.pre-phi, -1059760811 %246 = and i32 %245, -8388608 %247 = sub i32 %.pre-phi, %246 %248 = bitcast i32 %247 to float %249 = sitofp i32 %246 to float %250 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not100 = icmp eq i32 %250, 0 %251 = call float @llvm.nvvm.fma.rn.ftz.f(float %249, float noundef 0x3E80000000000000, float noundef 0.000000e+00) #139 %252 = call float @llvm.fma.f32(float %249, float noundef 0x3E80000000000000, float noundef 0.000000e+00) %.064 = select i1 %.not100, float %252, float %251 %253 = fadd float %248, -1.000000e+00 %254 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not101 = icmp eq i32 %254, 0 %255 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %253, float noundef 0x3FC2073EC0000000) #139 %256 = call float @llvm.fma.f32(float %253, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.065 = select i1 %.not101, float %256, float %255 %257 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not102 = icmp eq i32 %257, 0 %258 = call float @llvm.nvvm.fma.rn.ftz.f(float %.065, float %253, float noundef 0xBFBF19B980000000) #139 %259 = call float @llvm.fma.f32(float %.065, float %253, float noundef 0xBFBF19B980000000) %.066 = select i1 %.not102, float %259, float %258 %260 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not103 = icmp eq i32 %260, 0 %261 = call float @llvm.nvvm.fma.rn.ftz.f(float %.066, float %253, float noundef 0x3FC1E52AA0000000) #139 %262 = call float @llvm.fma.f32(float %.066, float %253, float noundef 0x3FC1E52AA0000000) %.067 = select i1 %.not103, float %262, float %261 %263 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not104 = icmp eq i32 %263, 0 %264 = call float @llvm.nvvm.fma.rn.ftz.f(float %.067, float %253, float noundef 0xBFC55B1720000000) #139 %265 = call float @llvm.fma.f32(float %.067, float %253, float noundef 0xBFC55B1720000000) %.069 = select i1 %.not104, float %265, float %264 %266 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not105 = icmp eq i32 %266, 0 %267 = call float @llvm.nvvm.fma.rn.ftz.f(float %.069, float %253, float noundef 0x3FC99DA160000000) #139 %268 = call float @llvm.fma.f32(float %.069, float %253, float noundef 0x3FC99DA160000000) %.070 = select i1 %.not105, float %268, float %267 %269 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not106 = icmp eq i32 %269, 0 %270 = call float @llvm.nvvm.fma.rn.ftz.f(float %.070, float %253, float noundef 0xBFCFFFE440000000) #139 %271 = call float @llvm.fma.f32(float %.070, float %253, float noundef 0xBFCFFFE440000000) %.072 = select i1 %.not106, float %271, float %270 %272 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not107 = icmp eq i32 %272, 0 %273 = call float @llvm.nvvm.fma.rn.ftz.f(float %.072, float %253, float noundef 0x3FD5554F00000000) #139 %274 = call float @llvm.fma.f32(float %.072, float %253, float noundef 0x3FD5554F00000000) %.074 = select i1 %.not107, float %274, float %273 %275 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not108 = icmp eq i32 %275, 0 %276 = call float @llvm.nvvm.fma.rn.ftz.f(float %.074, float %253, float noundef -5.000000e-01) #139 %277 = call float @llvm.fma.f32(float %.074, float %253, float noundef -5.000000e-01) %.062 = select i1 %.not108, float %277, float %276 %278 = fmul float %253, %.062 %279 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not109 = icmp eq i32 %279, 0 %280 = call float @llvm.nvvm.fma.rn.ftz.f(float %278, float %253, float %253) #139 %281 = call float @llvm.fma.f32(float %278, float %253, float %253) %.061 = select i1 %.not109, float %281, float %280 %282 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not110 = icmp eq i32 %282, 0 %283 = call float @llvm.nvvm.fma.rn.ftz.f(float %.064, float noundef 0x3FE62E4300000000, float %.061) #139 %284 = call float @llvm.fma.f32(float %.064, float noundef 0x3FE62E4300000000, float %.061) %.060 = select i1 %.not110, float %284, float %283 %285 = icmp ugt i32 %.pre-phi, 2139095039 br i1 %285, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i: ; preds = %__nv_j1f.exit %286 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not113 = icmp eq i32 %286, 0 %287 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %288 = call float @llvm.fma.f32(float %.01, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.059 = select i1 %.not113, float %288, float %287 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i, %__nv_j1f.exit %r.i5.0 = phi float [ %.059, %__nv_fmaf_rn.exit.i ], [ %.060, %__nv_j1f.exit ] %289 = fcmp oeq float %.01, 0.000000e+00 %r.i5.1 = select i1 %289, float 0xFFF0000000000000, float %r.i5.0 %290 = fdiv float -1.000000e+00, %.01 %291 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not111 = icmp eq i32 %291, 0 %292 = call float @llvm.nvvm.fma.rn.ftz.f(float %r.i.3, float %r.i5.1, float %290) #139 %293 = call float @llvm.fma.f32(float %r.i.3, float %r.i5.1, float %290) %.075 = select i1 %.not111, float %293, float %292 %294 = fmul float %.075, 0x3FE45F3060000000 %295 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not112 = icmp eq i32 %295, 0 %296 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %.01, float %294) #139 %297 = call float @llvm.fma.f32(float %.07, float %.01, float %294) %.076 = select i1 %.not112, float %297, float %296 br label %551 298: ; preds = %6 %299 = fcmp ugt float %.01, 0x400E81DDC0000000 br i1 %299, label %330, label %__internal_fmad.exit11 __internal_fmad.exit11: ; preds = %298 %300 = fadd float %.01, 0xC00193BEE0000000 %301 = fadd float %300, 0x3E76401B80000000 %302 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not56 = icmp eq i32 %302, 0 %303 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBEF13C53A0000000, float %301, float noundef 0x3F20C95100000000) #139 %304 = call float @llvm.fma.f32(float %301, float noundef 0xBEF13C53A0000000, float noundef 0x3F20C95100000000) %.078 = select i1 %.not56, float %304, float %303 %305 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %305, 0 %306 = call float @llvm.nvvm.fma.rn.ftz.f(float %.078, float %301, float noundef 0xBF3E1561A0000000) #139 %307 = call float @llvm.fma.f32(float %.078, float %301, float noundef 0xBF3E1561A0000000) %.079 = select i1 %.not57, float %307, float %306 %308 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not58 = icmp eq i32 %308, 0 %309 = call float @llvm.nvvm.fma.rn.ftz.f(float %.079, float %301, float noundef 0x3F51EC2040000000) #139 %310 = call float @llvm.fma.f32(float %.079, float %301, float noundef 0x3F51EC2040000000) %.080 = select i1 %.not58, float %310, float %309 %311 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not59 = icmp eq i32 %311, 0 %312 = call float @llvm.nvvm.fma.rn.ftz.f(float %.080, float %301, float noundef 0xBF658E08A0000000) #139 %313 = call float @llvm.fma.f32(float %.080, float %301, float noundef 0xBF658E08A0000000) %.082 = select i1 %.not59, float %313, float %312 %314 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %314, 0 %315 = call float @llvm.nvvm.fma.rn.ftz.f(float %.082, float %301, float noundef 0x3F7E6BBEE0000000) #139 %316 = call float @llvm.fma.f32(float %.082, float %301, float noundef 0x3F7E6BBEE0000000) %.083 = select i1 %.not60, float %316, float %315 %317 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not61 = icmp eq i32 %317, 0 %318 = call float @llvm.nvvm.fma.rn.ftz.f(float %.083, float %301, float noundef 0xBF73A12F80000000) #139 %319 = call float @llvm.fma.f32(float %.083, float %301, float noundef 0xBF73A12F80000000) %.084 = select i1 %.not61, float %319, float %318 %320 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not62 = icmp eq i32 %320, 0 %321 = call float @llvm.nvvm.fma.rn.ftz.f(float %.084, float %301, float noundef 0xBFA0D2D140000000) #139 %322 = call float @llvm.fma.f32(float %.084, float %301, float noundef 0xBFA0D2D140000000) %.086 = select i1 %.not62, float %322, float %321 %323 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %323, 0 %324 = call float @llvm.nvvm.fma.rn.ftz.f(float %.086, float %301, float noundef 0xBFBE56FBE0000000) #139 %325 = call float @llvm.fma.f32(float %.086, float %301, float noundef 0xBFBE56FBE0000000) %.087 = select i1 %.not63, float %325, float %324 %326 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not64 = icmp eq i32 %326, 0 %327 = call float @llvm.nvvm.fma.rn.ftz.f(float %.087, float %301, float noundef 0x3FE0AA4840000000) #139 %328 = call float @llvm.fma.f32(float %.087, float %301, float noundef 0x3FE0AA4840000000) %.088 = select i1 %.not64, float %328, float %327 %329 = fmul float %301, %.088 br label %551 330: ; preds = %298 %331 = fcmp ugt float %.01, 0x401C0D26E0000000 br i1 %331, label %362, label %__internal_fmad.exit29 __internal_fmad.exit29: ; preds = %330 %332 = fadd float %.01, 0xC015B7FE40000000 %333 = fadd float %332, 0xBE8D0F6060000000 %334 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %334, 0 %335 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E57CAFA00000000, float %333, float noundef 0xBEA11482C0000000) #139 %336 = call float @llvm.fma.f32(float %333, float noundef 0x3E57CAFA00000000, float noundef 0xBEA11482C0000000) %.089 = select i1 %.not47, float %336, float %335 %337 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %337, 0 %338 = call float @llvm.nvvm.fma.rn.ftz.f(float %.089, float %333, float noundef 0xBEC7F14280000000) #139 %339 = call float @llvm.fma.f32(float %.089, float %333, float noundef 0xBEC7F14280000000) %.090 = select i1 %.not48, float %339, float %338 %340 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %340, 0 %341 = call float @llvm.nvvm.fma.rn.ftz.f(float %.090, float %333, float noundef 0x3F084FC040000000) #139 %342 = call float @llvm.fma.f32(float %.090, float %333, float noundef 0x3F084FC040000000) %.091 = select i1 %.not49, float %342, float %341 %343 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %343, 0 %344 = call float @llvm.nvvm.fma.rn.ftz.f(float %.091, float %333, float noundef 0x3F23376380000000) #139 %345 = call float @llvm.fma.f32(float %.091, float %333, float noundef 0x3F23376380000000) %.093 = select i1 %.not50, float %345, float %344 %346 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %346, 0 %347 = call float @llvm.nvvm.fma.rn.ftz.f(float %.093, float %333, float noundef 0xBF61BE3FA0000000) #139 %348 = call float @llvm.fma.f32(float %.093, float %333, float noundef 0xBF61BE3FA0000000) %.095 = select i1 %.not51, float %348, float %347 %349 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %349, 0 %350 = call float @llvm.nvvm.fma.rn.ftz.f(float %.095, float %333, float noundef 0xBF710A3120000000) #139 %351 = call float @llvm.fma.f32(float %.095, float %333, float noundef 0xBF710A3120000000) %.096 = select i1 %.not52, float %351, float %350 %352 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %352, 0 %353 = call float @llvm.nvvm.fma.rn.ftz.f(float %.096, float %333, float noundef 0x3FAA15D820000000) #139 %354 = call float @llvm.fma.f32(float %.096, float %333, float noundef 0x3FAA15D820000000) %.097 = select i1 %.not53, float %354, float %353 %355 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %355, 0 %356 = call float @llvm.nvvm.fma.rn.ftz.f(float %.097, float %333, float noundef 0x3FA00B9F80000000) #139 %357 = call float @llvm.fma.f32(float %.097, float %333, float noundef 0x3FA00B9F80000000) %.098 = select i1 %.not54, float %357, float %356 %358 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %358, 0 %359 = call float @llvm.nvvm.fma.rn.ftz.f(float %.098, float %333, float noundef 0xBFD5C7C560000000) #139 %360 = call float @llvm.fma.f32(float %.098, float %333, float noundef 0xBFD5C7C560000000) %.099 = select i1 %.not55, float %360, float %359 %361 = fmul float %333, %.099 br label %551 362: ; preds = %330 %363 = fcmp ugt float %.01, 0x4024585C60000000 br i1 %363, label %__nv_isinff.exit, label %__internal_fmad.exit47 __internal_fmad.exit47: ; preds = %362 %364 = fadd float %.01, 0xC0213127A0000000 %365 = fadd float %364, 0xBE9CC2D360000000 %366 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %366, 0 %367 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA19E7060000000, float %365, float noundef 0x3EC05205C0000000) #139 %368 = call float @llvm.fma.f32(float %365, float noundef 0x3EA19E7060000000, float noundef 0x3EC05205C0000000) %.0100 = select i1 %.not39, float %368, float %367 %369 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %369, 0 %370 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0100, float %365, float noundef 0xBF06EBEE20000000) #139 %371 = call float @llvm.fma.f32(float %.0100, float %365, float noundef 0xBF06EBEE20000000) %.0102 = select i1 %.not40, float %371, float %370 %372 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %372, 0 %373 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0102, float %365, float noundef 0xBF1B3F5500000000) #139 %374 = call float @llvm.fma.f32(float %.0102, float %365, float noundef 0xBF1B3F5500000000) %.0103 = select i1 %.not41, float %374, float %373 %375 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %375, 0 %376 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0103, float %365, float noundef 0x3F607A3340000000) #139 %377 = call float @llvm.fma.f32(float %.0103, float %365, float noundef 0x3F607A3340000000) %.0104 = select i1 %.not42, float %377, float %376 %378 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %378, 0 %379 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0104, float %365, float noundef 0x3F63CE6DA0000000) #139 %380 = call float @llvm.fma.f32(float %.0104, float %365, float noundef 0x3F63CE6DA0000000) %.0105 = select i1 %.not43, float %380, float %379 %381 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %381, 0 %382 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0105, float %365, float noundef 0xBFA6395CA0000000) #139 %383 = call float @llvm.fma.f32(float %.0105, float %365, float noundef 0xBFA6395CA0000000) %.0106 = select i1 %.not44, float %383, float %382 %384 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %384, 0 %385 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0106, float %365, float noundef 0xBF902B36C0000000) #139 %386 = call float @llvm.fma.f32(float %.0106, float %365, float noundef 0xBF902B36C0000000) %.0107 = select i1 %.not45, float %386, float %385 %387 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %387, 0 %388 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0107, float %365, float noundef 0x3FD15F9940000000) #139 %389 = call float @llvm.fma.f32(float %.0107, float %365, float noundef 0x3FD15F9940000000) %.0109 = select i1 %.not46, float %389, float %388 %390 = fmul float %365, %.0109 br label %551 __nv_isinff.exit: ; preds = %362 %391 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %391, 0 %392 = call float @llvm.nvvm.fabs.ftz.f(float %.01) #139 %393 = call float @llvm.fabs.f32(float %.01) %.0110 = select i1 %.not2, float %393, float %392 %394 = fcmp oeq float %.0110, 0x7FF0000000000000 br i1 %394, label %551, label %__internal_fmad.exit66 __internal_fmad.exit66: ; preds = %__nv_isinff.exit %395 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.01) #141, !srcloc !73 %396 = fmul float %395, %395 %397 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %397, 0 %398 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FE4CFEC00000000, float %396, float noundef 0xBFC8957200000000) #139 %399 = call float @llvm.fma.f32(float %396, float noundef 0x3FE4CFEC00000000, float noundef 0xBFC8957200000000) %.0111 = select i1 %.not3, float %399, float %398 %400 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %400, 0 %401 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0111, float %396, float noundef 0x3FC7FFD7E0000000) #139 %402 = call float @llvm.fma.f32(float %.0111, float %396, float noundef 0x3FC7FFD7E0000000) %.0112 = select i1 %.not4, float %402, float %401 %403 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %403, 0 %404 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0112, float %396, float noundef 1.000000e+00) #139 %405 = call float @llvm.fma.f32(float %.0112, float %396, float noundef 1.000000e+00) %.0113 = select i1 %.not5, float %405, float %404 %406 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %406, 0 %407 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFFC9C3560000000, float %396, float noundef 0x3FD76E7560000000) #139 %408 = call float @llvm.fma.f32(float %396, float noundef 0xBFFC9C3560000000, float noundef 0x3FD76E7560000000) %.0114 = select i1 %.not6, float %408, float %407 %409 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %409, 0 %410 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0114, float %396, float noundef 0xBFC4FF6DC0000000) #139 %411 = call float @llvm.fma.f32(float %.0114, float %396, float noundef 0xBFC4FF6DC0000000) %.0108 = select i1 %.not7, float %411, float %410 %412 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %412, 0 %413 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0108, float %396, float noundef 0x3FD7FFFFE0000000) #139 %414 = call float @llvm.fma.f32(float %.0108, float %396, float noundef 0x3FD7FFFFE0000000) %.0101 = select i1 %.not8, float %414, float %413 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %415, 0 %416 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0101, float %395, float %.01) #139 %417 = call float @llvm.fma.f32(float %.0101, float %395, float %.01) %.094 = select i1 %.not9, float %417, float %416 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %418, 0 br i1 %.not10, label %421, label %419 419: ; preds = %__internal_fmad.exit66 %420 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.01) #139 br label %__nv_rsqrtf.exit 421: ; preds = %__internal_fmad.exit66 %422 = call float @llvm.nvvm.rsqrt.approx.f(float %.01) #139 br label %__nv_rsqrtf.exit __nv_rsqrtf.exit: ; preds = %421, %419 %.092 = phi float [ %420, %419 ], [ %422, %421 ] %423 = fmul float %.092, 0x3FE9884540000000 %424 = fmul float %.0113, %423 %425 = fmul float %.094, 0x3FE45F3060000000 %426 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %426, 0 %427 = call i32 @llvm.nvvm.f2i.rn.ftz(float %425) #139 %428 = call i32 @llvm.nvvm.f2i.rn(float %425) #139 %.085 = select i1 %.not11, i32 %428, i32 %427 %429 = sitofp i32 %.085 to float %430 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %430, 0 %431 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBFF921FB40000000, float %.094) #139 %432 = call float @llvm.fma.f32(float %429, float noundef 0xBFF921FB40000000, float %.094) %.081 = select i1 %.not12, float %432, float %431 %433 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %433, 0 %434 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBE74442D00000000, float %.081) #139 %435 = call float @llvm.fma.f32(float %429, float noundef 0xBE74442D00000000, float %.081) %.077 = select i1 %.not13, float %435, float %434 %436 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %436, 0 %437 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBCF84698A0000000, float %.077) #139 %438 = call float @llvm.fma.f32(float %429, float noundef 0xBCF84698A0000000, float %.077) %.073 = select i1 %.not14, float %438, float %437 %439 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %439, 0 %440 = call float @llvm.nvvm.fabs.ftz.f(float %.094) #139 %441 = call float @llvm.fabs.f32(float %.094) %.071 = select i1 %.not15, float %441, float %440 %442 = fcmp ult float %.071, 1.056150e+05 br i1 %442, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_rsqrtf.exit %443 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %443, 0 %.068 = select i1 %.not32, float %441, float %440 %444 = fcmp oeq float %.068, 0x7FF0000000000000 br i1 %444, label %__nv_fmul_rn.exit.i.i, label %448 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %445 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %445, 0 %446 = call float @llvm.nvvm.mul.rn.ftz.f(float %.094, float noundef 0.000000e+00) #139 %447 = fmul float %.094, 0.000000e+00 %.063 = select i1 %.not38, float %447, float %446 br label %__internal_trig_reduction_kernel.exit.i 448: ; preds = %__nv_isinff.exit.i.i %449 = bitcast float %.094 to i32 %450 = lshr i32 %449, 23 %451 = and i32 %450, 255 %452 = add nsw i32 %451, -128 %453 = shl i32 %449, 8 %454 = or i32 %453, -2147483648 %455 = lshr i32 %452, 5 br label %456 456: ; preds = %448, %456 %hi.i.i.i.0136 = phi i32 [ 0, %448 ], [ %462, %456 ] %iq.i.i.i.0135 = phi i32 [ 0, %448 ], [ %464, %456 ] %457 = zext i32 %iq.i.i.i.0135 to i64 %458 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %457 %459 = load i32, i32 addrspace(1)* %458, align 4 %460 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %459, i32 %454, i32 %hi.i.i.i.0136) #141, !srcloc !67 %461 = extractvalue { i32, i32 } %460, 0 %462 = extractvalue { i32, i32 } %460, 1 %463 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %457 store i32 %461, i32* %463, align 4, !noalias !68 %464 = add nuw nsw i32 %iq.i.i.i.0135, 1 %exitcond.not = icmp eq i32 %464, 6 br i1 %exitcond.not, label %465, label %456, !llvm.loop !71 465: ; preds = %456 %466 = and i32 %449, -2147483648 %467 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %462, i32* %467, align 4, !noalias !68 %468 = and i32 %450, 31 %469 = sub nsw i32 6, %455 %470 = sext i32 %469 to i64 %471 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %470 %472 = load i32, i32* %471, align 4 %473 = sub nsw i32 5, %455 %474 = sext i32 %473 to i64 %475 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %474 %476 = load i32, i32* %475, align 4 %.not33 = icmp eq i32 %468, 0 br i1 %.not33, label %__internal_trig_reduction_slowpath.exit.i.i, label %477 477: ; preds = %465 %478 = sub nsw i32 4, %455 %479 = sub nuw nsw i32 32, %468 %480 = shl i32 %472, %468 %481 = lshr i32 %476, %479 %482 = add i32 %481, %480 %483 = shl i32 %476, %468 %484 = sext i32 %478 to i64 %485 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %484 %486 = load i32, i32* %485, align 4 %487 = lshr i32 %486, %479 %488 = add i32 %487, %483 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %477, %465 %lo.i.i.i.0 = phi i32 [ %488, %477 ], [ %476, %465 ] %hi.i.i.i.1 = phi i32 [ %482, %477 ], [ %472, %465 ] %489 = lshr i32 %hi.i.i.i.1, 30 %490 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 noundef 2) %491 = shl i32 %lo.i.i.i.0, 2 %492 = lshr i32 %490, 31 %493 = add nuw nsw i32 %492, %489 %.not34 = icmp eq i32 %466, 0 %494 = sub nsw i32 0, %493 %spec.select1 = select i1 %.not34, i32 %493, i32 %494 %.not35 = icmp sgt i32 %490, -1 %495 = xor i32 %466, -2147483648 %not..not35 = xor i1 %.not35, true %496 = sext i1 %not..not35 to i32 %lo.i.i.i.1 = xor i32 %491, %496 %hi.i.i.i.2 = xor i32 %490, %496 %s.i.i.i.0 = select i1 %.not35, i32 %466, i32 %495 %497 = zext i32 %hi.i.i.i.2 to i64 %498 = shl nuw i64 %497, 32 %499 = zext i32 %lo.i.i.i.1 to i64 %500 = or i64 %498, %499 %501 = sitofp i64 %500 to double %502 = fmul double %501, 0x3BF921FB54442D19 %503 = fptrunc double %502 to float %.not37 = icmp eq i32 %s.i.i.i.0, 0 %504 = fneg float %503 %r.i.i.i.0 = select i1 %.not37, float %503, float %504 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_rsqrtf.exit %i.i81.1 = phi i32 [ %.085, %__nv_rsqrtf.exit ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %.073, %__nv_rsqrtf.exit ], [ %.063, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %505 = and i32 %i.i81.1, 3 %506 = uitofp i32 %505 to float %507 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %507, 0 %508 = call float @llvm.nvvm.fma.rn.ftz.f(float %506, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) #139 %509 = call float @llvm.fma.f32(float %506, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) %.046 = select i1 %.not16, float %509, float %508 %510 = fadd float %t.i.i.1, %.046 %511 = fmul float %510, 0x3FE45F3060000000 %512 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %512, 0 %513 = call i32 @llvm.nvvm.f2i.rn.ftz(float %511) #139 %514 = call i32 @llvm.nvvm.f2i.rn(float %511) #139 %.045 = select i1 %.not17, i32 %514, i32 %513 %515 = sitofp i32 %.045 to float %516 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %516, 0 %517 = call float @llvm.nvvm.fma.rn.ftz.f(float %515, float noundef 0xBFF921FB40000000, float %510) #139 %518 = call float @llvm.fma.f32(float %515, float noundef 0xBFF921FB40000000, float %510) %.044 = select i1 %.not18, float %518, float %517 %519 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %519, 0 %520 = call float @llvm.nvvm.fma.rn.ftz.f(float %515, float noundef 0xBE74442D00000000, float %.044) #139 %521 = call float @llvm.fma.f32(float %515, float noundef 0xBE74442D00000000, float %.044) %.041 = select i1 %.not19, float %521, float %520 %522 = add i32 %.045, 1 %523 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %523, 0 %524 = call float @llvm.nvvm.mul.rn.ftz.f(float %.041, float %.041) #139 %525 = fmul float %.041, %.041 %.035 = select i1 %.not20, float %525, float %524 %526 = and i32 %522, 1 %.not21 = icmp eq i32 %526, 0 %527 = select i1 %.not21, float %.041, float 1.000000e+00 %528 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %528, 0 %529 = call float @llvm.nvvm.fma.rn.ftz.f(float %.035, float %527, float noundef 0.000000e+00) #139 %530 = call float @llvm.fma.f32(float %.035, float %527, float noundef 0.000000e+00) %.030 = select i1 %.not22, float %530, float %529 br i1 %.not21, label %__internal_fmad.exit2.i.i, label %__internal_fmad.exit1.i.i __internal_fmad.exit1.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i %531 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %531, 0 %532 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.035, float noundef 0xBF56C0FDA0000000) #139 %533 = call float @llvm.fma.f32(float %.035, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.023 = select i1 %.not31, float %533, float %532 br label %__internal_fmad.exit2.i.i __internal_fmad.exit2.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit1.i.i %534 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i ] %535 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i ] %536 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i ], [ %.023, %__internal_fmad.exit1.i.i ] %537 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %537, 0 %538 = call float @llvm.nvvm.fma.rn.ftz.f(float %536, float %.035, float noundef %535) #139 %539 = call float @llvm.fma.f32(float %536, float %.035, float noundef %535) %.016 = select i1 %.not25, float %539, float %538 %540 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %540, 0 %541 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %.035, float noundef %534) #139 %542 = call float @llvm.fma.f32(float %.016, float %.035, float noundef %534) %.09 = select i1 %.not27, float %542, float %541 %543 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %543, 0 %544 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %.030, float %527) #139 %545 = call float @llvm.fma.f32(float %.09, float %.030, float %527) %.05 = select i1 %.not28, float %545, float %544 %546 = and i32 %522, 2 %.not29 = icmp eq i32 %546, 0 br i1 %.not29, label %__internal_cos_offset_f.exit, label %__internal_fmad.exit5.i.i __internal_fmad.exit5.i.i: ; preds = %__internal_fmad.exit2.i.i %547 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %547, 0 %548 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %549 = call float @llvm.fma.f32(float %.05, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0 = select i1 %.not30, float %549, float %548 br label %__internal_cos_offset_f.exit __internal_cos_offset_f.exit: ; preds = %__internal_fmad.exit5.i.i, %__internal_fmad.exit2.i.i %z.i.i79.0 = phi float [ %.0, %__internal_fmad.exit5.i.i ], [ %.05, %__internal_fmad.exit2.i.i ] %550 = fmul float %424, %z.i.i79.0 br label %551 551: ; preds = %__internal_accurate_logf.exit, %__internal_fmad.exit29, %__internal_cos_offset_f.exit, %__nv_isinff.exit, %__internal_fmad.exit47, %__internal_fmad.exit11, %4 %r.5 = phi float [ %5, %4 ], [ %.076, %__internal_accurate_logf.exit ], [ %329, %__internal_fmad.exit11 ], [ %361, %__internal_fmad.exit29 ], [ %390, %__internal_fmad.exit47 ], [ %550, %__internal_cos_offset_f.exit ], [ 0.000000e+00, %__nv_isinff.exit ] %552 = fcmp olt float %a, 0.000000e+00 %r.6 = select i1 %552, float 0x7FFFFFFFE0000000, float %r.5 ret float %r.6 } ; Function Attrs: noinline nounwind define dso_local float @__nv_ynf(i32 %n, float %a) local_unnamed_addr #47 { __nv_fabsf.exit.i: %result.i.i.i.i.i = alloca [7 x i32], align 4 %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.03 = select i1 %.not, float %2, float %1 %3 = fcmp olt float %.03, 0x3810000000000000 br i1 %3, label %4, label %6 4: ; preds = %__nv_fabsf.exit.i %5 = fdiv float 0xBFE45F3060000000, %.03 br label %__nv_y1f.exit 6: ; preds = %__nv_fabsf.exit.i %7 = fcmp ugt float %.03, 0x3FFB2D5880000000 br i1 %7, label %298, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %6 %8 = fmul float %.03, %.03 %9 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not483 = icmp eq i32 %9, 0 %10 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E428C5980000000, float %8, float noundef 0xBEB0A4FB40000000) #139 %11 = call float @llvm.fma.f32(float %8, float noundef 0x3E428C5980000000, float noundef 0xBEB0A4FB40000000) %.04 = select i1 %.not483, float %11, float %10 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not484 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %8, float noundef 0x3F12C7D2A0000000) #139 %14 = call float @llvm.fma.f32(float %.04, float %8, float noundef 0x3F12C7D2A0000000) %.05 = select i1 %.not484, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not485 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %8, float noundef 0xBF6835B960000000) #139 %17 = call float @llvm.fma.f32(float %.05, float %8, float noundef 0xBF6835B960000000) %.07 = select i1 %.not485, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not486 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %8, float noundef 0x3FABD39760000000) #139 %20 = call float @llvm.fma.f32(float %.07, float %8, float noundef 0x3FABD39760000000) %.09 = select i1 %.not486, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not487 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %8, float noundef 0xBFC9186620000000) #139 %23 = call float @llvm.fma.f32(float %.09, float %8, float noundef 0xBFC9186620000000) %.010 = select i1 %.not487, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not488 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fabs.ftz.f(float %.03) #139 %26 = call float @llvm.fabs.f32(float %.03) %.011 = select i1 %.not488, float %26, float %25 %27 = fcmp ugt float %.011, 8.000000e+00 br i1 %27, label %__nv_isinff.exit.i.i, label %__internal_fmad.exit.i.i __internal_fmad.exit.i.i: ; preds = %__internal_fmad.exit.i %28 = fadd float %.011, 0xC00EA75580000000 %29 = fadd float %28, 0x3E74A121E0000000 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not541 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %29, float noundef 0x3D7037E840000000) #139 %32 = call float @llvm.fma.f32(float %29, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.012 = select i1 %.not541, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not542 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %29, float noundef 0xBDBC43D820000000) #139 %35 = call float @llvm.fma.f32(float %.012, float %29, float noundef 0xBDBC43D820000000) %.014 = select i1 %.not542, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not543 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %29, float noundef 0xBDEBBBDFE0000000) #139 %38 = call float @llvm.fma.f32(float %.014, float %29, float noundef 0xBDEBBBDFE0000000) %.015 = select i1 %.not543, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not544 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %29, float noundef 0x3E336193A0000000) #139 %41 = call float @llvm.fma.f32(float %.015, float %29, float noundef 0x3E336193A0000000) %.016 = select i1 %.not544, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not545 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %29, float noundef 0x3E5D022E60000000) #139 %44 = call float @llvm.fma.f32(float %.016, float %29, float noundef 0x3E5D022E60000000) %.017 = select i1 %.not545, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not546 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %29, float noundef 0xBEA1F1B900000000) #139 %47 = call float @llvm.fma.f32(float %.017, float %29, float noundef 0xBEA1F1B900000000) %.018 = select i1 %.not546, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not547 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %29, float noundef 0xBEC3CCA7A0000000) #139 %50 = call float @llvm.fma.f32(float %.018, float %29, float noundef 0xBEC3CCA7A0000000) %.019 = select i1 %.not547, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not548 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %29, float noundef 0x3F059B38A0000000) #139 %53 = call float @llvm.fma.f32(float %.019, float %29, float noundef 0x3F059B38A0000000) %.021 = select i1 %.not548, float %53, float %52 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not549 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %29, float noundef 0x3F1F3D6200000000) #139 %56 = call float @llvm.fma.f32(float %.021, float %29, float noundef 0x3F1F3D6200000000) %.022 = select i1 %.not549, float %56, float %55 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not550 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %29, float noundef 0xBF5D9D7380000000) #139 %59 = call float @llvm.fma.f32(float %.022, float %29, float noundef 0xBF5D9D7380000000) %.023 = select i1 %.not550, float %59, float %58 %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not551 = icmp eq i32 %60, 0 %61 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %29, float noundef 0xBF64EDFFA0000000) #139 %62 = call float @llvm.fma.f32(float %.023, float %29, float noundef 0xBF64EDFFA0000000) %.024 = select i1 %.not551, float %62, float %61 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not552 = icmp eq i32 %63, 0 %64 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %29, float noundef 0x3FA0E73260000000) #139 %65 = call float @llvm.fma.f32(float %.024, float %29, float noundef 0x3FA0E73260000000) %.025 = select i1 %.not552, float %65, float %64 %66 = fadd float %.011, 0xC01C0FF600000000 %67 = fadd float %66, 0x3E88971B60000000 %68 = fmul float %67, %.025 %69 = fmul float %29, %68 %70 = fmul float %.011, %69 br label %234 __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit.i %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not489 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fabs.ftz.f(float %.011) #139 %73 = call float @llvm.fabs.f32(float %.011) %.026 = select i1 %.not489, float %73, float %72 %74 = fcmp oeq float %.026, 0x7FF0000000000000 br i1 %74, label %234, label %__internal_fmad.exit12.i.i __internal_fmad.exit12.i.i: ; preds = %__nv_isinff.exit.i.i %75 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.011) #141, !srcloc !73 %76 = fmul float %75, %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not490 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %76, float noundef 0x3FE7FEFD20000000) #139 %79 = call float @llvm.fma.f32(float %76, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.028 = select i1 %.not490, float %79, float %78 %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not491 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float %76, float noundef 0xBFC8B175C0000000) #139 %82 = call float @llvm.fma.f32(float %.028, float %76, float noundef 0xBFC8B175C0000000) %.029 = select i1 %.not491, float %82, float %81 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not492 = icmp eq i32 %83, 0 %84 = call float @llvm.nvvm.fma.rn.ftz.f(float %.029, float %76, float noundef 0x3FC7FFF160000000) #139 %85 = call float @llvm.fma.f32(float %.029, float %76, float noundef 0x3FC7FFF160000000) %.030 = select i1 %.not492, float %85, float %84 %86 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not493 = icmp eq i32 %86, 0 %87 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float %76, float noundef 1.000000e+00) #139 %88 = call float @llvm.fma.f32(float %.030, float %76, float noundef 1.000000e+00) %.031 = select i1 %.not493, float %88, float %87 %89 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not494 = icmp eq i32 %89, 0 %90 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %76, float noundef 0x3FD72295A0000000) #139 %91 = call float @llvm.fma.f32(float %76, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.032 = select i1 %.not494, float %91, float %90 %92 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not495 = icmp eq i32 %92, 0 %93 = call float @llvm.nvvm.fma.rn.ftz.f(float %.032, float %76, float noundef 0xBFC4FE5D80000000) #139 %94 = call float @llvm.fma.f32(float %.032, float %76, float noundef 0xBFC4FE5D80000000) %.033 = select i1 %.not495, float %94, float %93 %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not496 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float %.033, float %76, float noundef 0x3FD7FFFFA0000000) #139 %97 = call float @llvm.fma.f32(float %.033, float %76, float noundef 0x3FD7FFFFA0000000) %.035 = select i1 %.not496, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not497 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fma.rn.ftz.f(float %.035, float %75, float %.011) #139 %100 = call float @llvm.fma.f32(float %.035, float %75, float %.011) %.036 = select i1 %.not497, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not498 = icmp eq i32 %101, 0 br i1 %.not498, label %104, label %102 102: ; preds = %__internal_fmad.exit12.i.i %103 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.011) #139 br label %__nv_rsqrtf.exit.i.i 104: ; preds = %__internal_fmad.exit12.i.i %105 = call float @llvm.nvvm.rsqrt.approx.f(float %.011) #139 br label %__nv_rsqrtf.exit.i.i __nv_rsqrtf.exit.i.i: ; preds = %104, %102 %.037 = phi float [ %103, %102 ], [ %105, %104 ] %106 = fmul float %.037, 0x3FE9884540000000 %107 = fmul float %.031, %106 %108 = fmul float %.036, 0x3FE45F3060000000 %109 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not499 = icmp eq i32 %109, 0 %110 = call i32 @llvm.nvvm.f2i.rn.ftz(float %108) #139 %111 = call i32 @llvm.nvvm.f2i.rn(float %108) #139 %.039 = select i1 %.not499, i32 %111, i32 %110 %112 = sitofp i32 %.039 to float %113 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not500 = icmp eq i32 %113, 0 %114 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBFF921FB40000000, float %.036) #139 %115 = call float @llvm.fma.f32(float %112, float noundef 0xBFF921FB40000000, float %.036) %.040 = select i1 %.not500, float %115, float %114 %116 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not501 = icmp eq i32 %116, 0 %117 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBE74442D00000000, float %.040) #139 %118 = call float @llvm.fma.f32(float %112, float noundef 0xBE74442D00000000, float %.040) %.041 = select i1 %.not501, float %118, float %117 %119 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not502 = icmp eq i32 %119, 0 %120 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float noundef 0xBCF84698A0000000, float %.041) #139 %121 = call float @llvm.fma.f32(float %112, float noundef 0xBCF84698A0000000, float %.041) %.042 = select i1 %.not502, float %121, float %120 %122 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not503 = icmp eq i32 %122, 0 %123 = call float @llvm.nvvm.fabs.ftz.f(float %.036) #139 %124 = call float @llvm.fabs.f32(float %.036) %.044 = select i1 %.not503, float %124, float %123 %125 = fcmp ult float %.044, 1.056150e+05 br i1 %125, label %__internal_trig_reduction_kernel.exit.i.i.i, label %__nv_isinff.exit.i.i.i.i __nv_isinff.exit.i.i.i.i: ; preds = %__nv_rsqrtf.exit.i.i %126 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not534 = icmp eq i32 %126, 0 %.045 = select i1 %.not534, float %124, float %123 %127 = fcmp oeq float %.045, 0x7FF0000000000000 br i1 %127, label %__nv_fmul_rn.exit.i.i.i.i, label %131 __nv_fmul_rn.exit.i.i.i.i: ; preds = %__nv_isinff.exit.i.i.i.i %128 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not540 = icmp eq i32 %128, 0 %129 = call float @llvm.nvvm.mul.rn.ftz.f(float %.036, float noundef 0.000000e+00) #139 %130 = fmul float %.036, 0.000000e+00 %.046 = select i1 %.not540, float %130, float %129 br label %__internal_trig_reduction_kernel.exit.i.i.i 131: ; preds = %__nv_isinff.exit.i.i.i.i %132 = bitcast float %.036 to i32 %133 = lshr i32 %132, 23 %134 = and i32 %133, 255 %135 = add nsw i32 %134, -128 %136 = shl i32 %132, 8 %137 = or i32 %136, -2147483648 %138 = lshr i32 %135, 5 br label %139 139: ; preds = %131, %139 %iq.i.i.i.i.i.0571 = phi i32 [ 0, %131 ], [ %147, %139 ] %hi.i.i.i.i.i.0570 = phi i32 [ 0, %131 ], [ %145, %139 ] %140 = zext i32 %iq.i.i.i.i.i.0571 to i64 %141 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %140 %142 = load i32, i32 addrspace(1)* %141, align 4 %143 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %142, i32 %137, i32 %hi.i.i.i.i.i.0570) #141, !srcloc !67 %144 = extractvalue { i32, i32 } %143, 0 %145 = extractvalue { i32, i32 } %143, 1 %146 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %140 store i32 %144, i32* %146, align 4, !noalias !68 %147 = add nuw nsw i32 %iq.i.i.i.i.i.0571, 1 %exitcond601.not = icmp eq i32 %147, 6 br i1 %exitcond601.not, label %148, label %139, !llvm.loop !71 148: ; preds = %139 %149 = and i32 %132, -2147483648 %150 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %145, i32* %150, align 4, !noalias !68 %151 = and i32 %133, 31 %152 = sub nsw i32 6, %138 %153 = sext i32 %152 to i64 %154 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %153 %155 = load i32, i32* %154, align 4 %156 = sub nsw i32 5, %138 %157 = sext i32 %156 to i64 %158 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %157 %159 = load i32, i32* %158, align 4 %.not535 = icmp eq i32 %151, 0 br i1 %.not535, label %__internal_trig_reduction_slowpath.exit.i.i.i.i, label %160 160: ; preds = %148 %161 = sub nsw i32 4, %138 %162 = sub nuw nsw i32 32, %151 %163 = shl i32 %155, %151 %164 = lshr i32 %159, %162 %165 = add i32 %164, %163 %166 = shl i32 %159, %151 %167 = sext i32 %161 to i64 %168 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %167 %169 = load i32, i32* %168, align 4 %170 = lshr i32 %169, %162 %171 = add i32 %170, %166 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i.i: ; preds = %160, %148 %hi.i.i.i.i.i.1 = phi i32 [ %165, %160 ], [ %155, %148 ] %lo.i.i.i.i.i.0 = phi i32 [ %171, %160 ], [ %159, %148 ] %172 = lshr i32 %hi.i.i.i.i.i.1, 30 %173 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i.1, i32 %lo.i.i.i.i.i.0, i32 noundef 2) %174 = shl i32 %lo.i.i.i.i.i.0, 2 %175 = lshr i32 %173, 31 %176 = add nuw nsw i32 %175, %172 %.not536 = icmp eq i32 %149, 0 %177 = sub nsw i32 0, %176 %spec.select = select i1 %.not536, i32 %176, i32 %177 %.not537 = icmp sgt i32 %173, -1 %178 = xor i32 %149, -2147483648 %s.i.i.i.i.i.0 = select i1 %.not537, i32 %149, i32 %178 %not..not537 = xor i1 %.not537, true %179 = sext i1 %not..not537 to i32 %hi.i.i.i.i.i.2 = xor i32 %173, %179 %lo.i.i.i.i.i.1 = xor i32 %174, %179 %180 = zext i32 %hi.i.i.i.i.i.2 to i64 %181 = shl nuw i64 %180, 32 %182 = zext i32 %lo.i.i.i.i.i.1 to i64 %183 = or i64 %181, %182 %184 = sitofp i64 %183 to double %185 = fmul double %184, 0x3BF921FB54442D19 %186 = fptrunc double %185 to float %.not539 = icmp eq i32 %s.i.i.i.i.i.0, 0 %187 = fneg float %186 %r.i.i.i.i.i.0 = select i1 %.not539, float %186, float %187 br label %__internal_trig_reduction_kernel.exit.i.i.i __internal_trig_reduction_kernel.exit.i.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i.i, %__nv_rsqrtf.exit.i.i %i.i.i.i.1 = phi i32 [ %.039, %__nv_rsqrtf.exit.i.i ], [ 0, %__nv_fmul_rn.exit.i.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i.i ] %t.i.i.i.i.1 = phi float [ %.042, %__nv_rsqrtf.exit.i.i ], [ %.046, %__nv_fmul_rn.exit.i.i.i.i ], [ %r.i.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i ] %188 = and i32 %i.i.i.i.1, 3 %189 = uitofp i32 %188 to float %190 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not504 = icmp eq i32 %190, 0 %191 = call float @llvm.nvvm.fma.rn.ftz.f(float %189, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %192 = call float @llvm.fma.f32(float %189, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.048 = select i1 %.not504, float %192, float %191 %193 = fadd float %t.i.i.i.i.1, %.048 %194 = fmul float %193, 0x3FE45F3060000000 %195 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not505 = icmp eq i32 %195, 0 %196 = call i32 @llvm.nvvm.f2i.rn.ftz(float %194) #139 %197 = call i32 @llvm.nvvm.f2i.rn(float %194) #139 %.049 = select i1 %.not505, i32 %197, i32 %196 %198 = sitofp i32 %.049 to float %199 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not506 = icmp eq i32 %199, 0 %200 = call float @llvm.nvvm.fma.rn.ftz.f(float %198, float noundef 0xBFF921FB40000000, float %193) #139 %201 = call float @llvm.fma.f32(float %198, float noundef 0xBFF921FB40000000, float %193) %.050 = select i1 %.not506, float %201, float %200 %202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not507 = icmp eq i32 %202, 0 %203 = call float @llvm.nvvm.fma.rn.ftz.f(float %198, float noundef 0xBE74442D00000000, float %.050) #139 %204 = call float @llvm.fma.f32(float %198, float noundef 0xBE74442D00000000, float %.050) %.052 = select i1 %.not507, float %204, float %203 %205 = add i32 %.049, 1 %206 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not508 = icmp eq i32 %206, 0 %207 = call float @llvm.nvvm.mul.rn.ftz.f(float %.052, float %.052) #139 %208 = fmul float %.052, %.052 %.053 = select i1 %.not508, float %208, float %207 %209 = and i32 %205, 1 %.not509 = icmp eq i32 %209, 0 %210 = select i1 %.not509, float %.052, float 1.000000e+00 %211 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not510 = icmp eq i32 %211, 0 %212 = call float @llvm.nvvm.fma.rn.ftz.f(float %.053, float %210, float noundef 0.000000e+00) #139 %213 = call float @llvm.fma.f32(float %.053, float %210, float noundef 0.000000e+00) %.055 = select i1 %.not510, float %213, float %212 br i1 %.not509, label %__internal_fmad.exit2.i.i.i.i, label %__internal_fmad.exit1.i.i.i.i __internal_fmad.exit1.i.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i %214 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not533 = icmp eq i32 %214, 0 %215 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.053, float noundef 0xBF56C0FDA0000000) #139 %216 = call float @llvm.fma.f32(float %.053, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.056 = select i1 %.not533, float %216, float %215 br label %__internal_fmad.exit2.i.i.i.i __internal_fmad.exit2.i.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i, %__internal_fmad.exit1.i.i.i.i %217 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i.i ] %218 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i.i ] %219 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i.i ], [ %.056, %__internal_fmad.exit1.i.i.i.i ] %220 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not513 = icmp eq i32 %220, 0 %221 = call float @llvm.nvvm.fma.rn.ftz.f(float %219, float %.053, float noundef %218) #139 %222 = call float @llvm.fma.f32(float %219, float %.053, float noundef %218) %.057 = select i1 %.not513, float %222, float %221 %223 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not515 = icmp eq i32 %223, 0 %224 = call float @llvm.nvvm.fma.rn.ftz.f(float %.057, float %.053, float noundef %217) #139 %225 = call float @llvm.fma.f32(float %.057, float %.053, float noundef %217) %.059 = select i1 %.not515, float %225, float %224 %226 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not516 = icmp eq i32 %226, 0 %227 = call float @llvm.nvvm.fma.rn.ftz.f(float %.059, float %.055, float %210) #139 %228 = call float @llvm.fma.f32(float %.059, float %.055, float %210) %.061 = select i1 %.not516, float %228, float %227 %229 = and i32 %205, 2 %.not517 = icmp eq i32 %229, 0 br i1 %.not517, label %__internal_cos_offset_f.exit.i.i, label %__internal_fmad.exit5.i.i.i.i __internal_fmad.exit5.i.i.i.i: ; preds = %__internal_fmad.exit2.i.i.i.i %230 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not532 = icmp eq i32 %230, 0 %231 = call float @llvm.nvvm.fma.rn.ftz.f(float %.061, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %232 = call float @llvm.fma.f32(float %.061, float noundef -1.000000e+00, float noundef 0.000000e+00) %.062 = select i1 %.not532, float %232, float %231 br label %__internal_cos_offset_f.exit.i.i __internal_cos_offset_f.exit.i.i: ; preds = %__internal_fmad.exit5.i.i.i.i, %__internal_fmad.exit2.i.i.i.i %z.i.i.i.i.0 = phi float [ %.062, %__internal_fmad.exit5.i.i.i.i ], [ %.061, %__internal_fmad.exit2.i.i.i.i ] %233 = fmul float %107, %z.i.i.i.i.0 br label %234 234: ; preds = %__internal_cos_offset_f.exit.i.i, %__nv_isinff.exit.i.i, %__internal_fmad.exit.i.i %r.i.i.1 = phi float [ %70, %__internal_fmad.exit.i.i ], [ %233, %__internal_cos_offset_f.exit.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i.i ] %235 = fcmp olt float %.03, 0.000000e+00 %236 = fneg float %r.i.i.1 %r.i.i.2 = select i1 %235, float %236, float %r.i.i.1 %237 = fcmp olt float %.011, 0x39B4484C00000000 br i1 %237, label %238, label %.__nv_j1f.exit.i_crit_edge .__nv_j1f.exit.i_crit_edge: ; preds = %234 %.pre602 = bitcast float %.03 to i32 br label %__nv_j1f.exit.i 238: ; preds = %234 %239 = bitcast float %.03 to i32 %240 = and i32 %239, -2147483648 %241 = bitcast float %r.i.i.2 to i32 %242 = and i32 %241, 2147483647 %243 = or i32 %242, %240 %244 = bitcast i32 %243 to float br label %__nv_j1f.exit.i __nv_j1f.exit.i: ; preds = %.__nv_j1f.exit.i_crit_edge, %238 %.pre-phi603 = phi i32 [ %.pre602, %.__nv_j1f.exit.i_crit_edge ], [ %239, %238 ] %r.i.i.3 = phi float [ %r.i.i.2, %.__nv_j1f.exit.i_crit_edge ], [ %244, %238 ] %245 = add i32 %.pre-phi603, -1059760811 %246 = and i32 %245, -8388608 %247 = sub i32 %.pre-phi603, %246 %248 = bitcast i32 %247 to float %249 = sitofp i32 %246 to float %250 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not518 = icmp eq i32 %250, 0 %251 = call float @llvm.nvvm.fma.rn.ftz.f(float %249, float noundef 0x3E80000000000000, float noundef 0.000000e+00) #139 %252 = call float @llvm.fma.f32(float %249, float noundef 0x3E80000000000000, float noundef 0.000000e+00) %.068 = select i1 %.not518, float %252, float %251 %253 = fadd float %248, -1.000000e+00 %254 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not519 = icmp eq i32 %254, 0 %255 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %253, float noundef 0x3FC2073EC0000000) #139 %256 = call float @llvm.fma.f32(float %253, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.069 = select i1 %.not519, float %256, float %255 %257 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not520 = icmp eq i32 %257, 0 %258 = call float @llvm.nvvm.fma.rn.ftz.f(float %.069, float %253, float noundef 0xBFBF19B980000000) #139 %259 = call float @llvm.fma.f32(float %.069, float %253, float noundef 0xBFBF19B980000000) %.070 = select i1 %.not520, float %259, float %258 %260 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not521 = icmp eq i32 %260, 0 %261 = call float @llvm.nvvm.fma.rn.ftz.f(float %.070, float %253, float noundef 0x3FC1E52AA0000000) #139 %262 = call float @llvm.fma.f32(float %.070, float %253, float noundef 0x3FC1E52AA0000000) %.071 = select i1 %.not521, float %262, float %261 %263 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not522 = icmp eq i32 %263, 0 %264 = call float @llvm.nvvm.fma.rn.ftz.f(float %.071, float %253, float noundef 0xBFC55B1720000000) #139 %265 = call float @llvm.fma.f32(float %.071, float %253, float noundef 0xBFC55B1720000000) %.072 = select i1 %.not522, float %265, float %264 %266 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not523 = icmp eq i32 %266, 0 %267 = call float @llvm.nvvm.fma.rn.ftz.f(float %.072, float %253, float noundef 0x3FC99DA160000000) #139 %268 = call float @llvm.fma.f32(float %.072, float %253, float noundef 0x3FC99DA160000000) %.073 = select i1 %.not523, float %268, float %267 %269 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not524 = icmp eq i32 %269, 0 %270 = call float @llvm.nvvm.fma.rn.ftz.f(float %.073, float %253, float noundef 0xBFCFFFE440000000) #139 %271 = call float @llvm.fma.f32(float %.073, float %253, float noundef 0xBFCFFFE440000000) %.074 = select i1 %.not524, float %271, float %270 %272 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not525 = icmp eq i32 %272, 0 %273 = call float @llvm.nvvm.fma.rn.ftz.f(float %.074, float %253, float noundef 0x3FD5554F00000000) #139 %274 = call float @llvm.fma.f32(float %.074, float %253, float noundef 0x3FD5554F00000000) %.075 = select i1 %.not525, float %274, float %273 %275 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not526 = icmp eq i32 %275, 0 %276 = call float @llvm.nvvm.fma.rn.ftz.f(float %.075, float %253, float noundef -5.000000e-01) #139 %277 = call float @llvm.fma.f32(float %.075, float %253, float noundef -5.000000e-01) %.067 = select i1 %.not526, float %277, float %276 %278 = fmul float %253, %.067 %279 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not527 = icmp eq i32 %279, 0 %280 = call float @llvm.nvvm.fma.rn.ftz.f(float %278, float %253, float %253) #139 %281 = call float @llvm.fma.f32(float %278, float %253, float %253) %.066 = select i1 %.not527, float %281, float %280 %282 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not528 = icmp eq i32 %282, 0 %283 = call float @llvm.nvvm.fma.rn.ftz.f(float %.068, float noundef 0x3FE62E4300000000, float %.066) #139 %284 = call float @llvm.fma.f32(float %.068, float noundef 0x3FE62E4300000000, float %.066) %.065 = select i1 %.not528, float %284, float %283 %285 = icmp ugt i32 %.pre-phi603, 2139095039 br i1 %285, label %__nv_fmaf_rn.exit.i.i, label %__internal_accurate_logf.exit.i __nv_fmaf_rn.exit.i.i: ; preds = %__nv_j1f.exit.i %286 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not531 = icmp eq i32 %286, 0 %287 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %288 = call float @llvm.fma.f32(float %.03, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.064 = select i1 %.not531, float %288, float %287 br label %__internal_accurate_logf.exit.i __internal_accurate_logf.exit.i: ; preds = %__nv_fmaf_rn.exit.i.i, %__nv_j1f.exit.i %r.i5.i.0 = phi float [ %.064, %__nv_fmaf_rn.exit.i.i ], [ %.065, %__nv_j1f.exit.i ] %289 = fcmp oeq float %.03, 0.000000e+00 %r.i5.i.1 = select i1 %289, float 0xFFF0000000000000, float %r.i5.i.0 %290 = fdiv float -1.000000e+00, %.03 %291 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not529 = icmp eq i32 %291, 0 %292 = call float @llvm.nvvm.fma.rn.ftz.f(float %r.i.i.3, float %r.i5.i.1, float %290) #139 %293 = call float @llvm.fma.f32(float %r.i.i.3, float %r.i5.i.1, float %290) %.076 = select i1 %.not529, float %293, float %292 %294 = fmul float %.076, 0x3FE45F3060000000 %295 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not530 = icmp eq i32 %295, 0 %296 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.03, float %294) #139 %297 = call float @llvm.fma.f32(float %.010, float %.03, float %294) %.077 = select i1 %.not530, float %297, float %296 br label %__nv_y1f.exit 298: ; preds = %6 %299 = fcmp ugt float %.03, 0x400E81DDC0000000 br i1 %299, label %330, label %__internal_fmad.exit11.i __internal_fmad.exit11.i: ; preds = %298 %300 = fadd float %.03, 0xC00193BEE0000000 %301 = fadd float %300, 0x3E76401B80000000 %302 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not474 = icmp eq i32 %302, 0 %303 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBEF13C53A0000000, float %301, float noundef 0x3F20C95100000000) #139 %304 = call float @llvm.fma.f32(float %301, float noundef 0xBEF13C53A0000000, float noundef 0x3F20C95100000000) %.078 = select i1 %.not474, float %304, float %303 %305 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not475 = icmp eq i32 %305, 0 %306 = call float @llvm.nvvm.fma.rn.ftz.f(float %.078, float %301, float noundef 0xBF3E1561A0000000) #139 %307 = call float @llvm.fma.f32(float %.078, float %301, float noundef 0xBF3E1561A0000000) %.079 = select i1 %.not475, float %307, float %306 %308 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not476 = icmp eq i32 %308, 0 %309 = call float @llvm.nvvm.fma.rn.ftz.f(float %.079, float %301, float noundef 0x3F51EC2040000000) #139 %310 = call float @llvm.fma.f32(float %.079, float %301, float noundef 0x3F51EC2040000000) %.080 = select i1 %.not476, float %310, float %309 %311 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not477 = icmp eq i32 %311, 0 %312 = call float @llvm.nvvm.fma.rn.ftz.f(float %.080, float %301, float noundef 0xBF658E08A0000000) #139 %313 = call float @llvm.fma.f32(float %.080, float %301, float noundef 0xBF658E08A0000000) %.082 = select i1 %.not477, float %313, float %312 %314 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not478 = icmp eq i32 %314, 0 %315 = call float @llvm.nvvm.fma.rn.ftz.f(float %.082, float %301, float noundef 0x3F7E6BBEE0000000) #139 %316 = call float @llvm.fma.f32(float %.082, float %301, float noundef 0x3F7E6BBEE0000000) %.083 = select i1 %.not478, float %316, float %315 %317 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not479 = icmp eq i32 %317, 0 %318 = call float @llvm.nvvm.fma.rn.ftz.f(float %.083, float %301, float noundef 0xBF73A12F80000000) #139 %319 = call float @llvm.fma.f32(float %.083, float %301, float noundef 0xBF73A12F80000000) %.084 = select i1 %.not479, float %319, float %318 %320 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not480 = icmp eq i32 %320, 0 %321 = call float @llvm.nvvm.fma.rn.ftz.f(float %.084, float %301, float noundef 0xBFA0D2D140000000) #139 %322 = call float @llvm.fma.f32(float %.084, float %301, float noundef 0xBFA0D2D140000000) %.085 = select i1 %.not480, float %322, float %321 %323 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not481 = icmp eq i32 %323, 0 %324 = call float @llvm.nvvm.fma.rn.ftz.f(float %.085, float %301, float noundef 0xBFBE56FBE0000000) #139 %325 = call float @llvm.fma.f32(float %.085, float %301, float noundef 0xBFBE56FBE0000000) %.087 = select i1 %.not481, float %325, float %324 %326 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not482 = icmp eq i32 %326, 0 %327 = call float @llvm.nvvm.fma.rn.ftz.f(float %.087, float %301, float noundef 0x3FE0AA4840000000) #139 %328 = call float @llvm.fma.f32(float %.087, float %301, float noundef 0x3FE0AA4840000000) %.088 = select i1 %.not482, float %328, float %327 %329 = fmul float %301, %.088 br label %__nv_y1f.exit 330: ; preds = %298 %331 = fcmp ugt float %.03, 0x401C0D26E0000000 br i1 %331, label %362, label %__internal_fmad.exit29.i __internal_fmad.exit29.i: ; preds = %330 %332 = fadd float %.03, 0xC015B7FE40000000 %333 = fadd float %332, 0xBE8D0F6060000000 %334 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not465 = icmp eq i32 %334, 0 %335 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E57CAFA00000000, float %333, float noundef 0xBEA11482C0000000) #139 %336 = call float @llvm.fma.f32(float %333, float noundef 0x3E57CAFA00000000, float noundef 0xBEA11482C0000000) %.090 = select i1 %.not465, float %336, float %335 %337 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not466 = icmp eq i32 %337, 0 %338 = call float @llvm.nvvm.fma.rn.ftz.f(float %.090, float %333, float noundef 0xBEC7F14280000000) #139 %339 = call float @llvm.fma.f32(float %.090, float %333, float noundef 0xBEC7F14280000000) %.092 = select i1 %.not466, float %339, float %338 %340 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not467 = icmp eq i32 %340, 0 %341 = call float @llvm.nvvm.fma.rn.ftz.f(float %.092, float %333, float noundef 0x3F084FC040000000) #139 %342 = call float @llvm.fma.f32(float %.092, float %333, float noundef 0x3F084FC040000000) %.093 = select i1 %.not467, float %342, float %341 %343 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not468 = icmp eq i32 %343, 0 %344 = call float @llvm.nvvm.fma.rn.ftz.f(float %.093, float %333, float noundef 0x3F23376380000000) #139 %345 = call float @llvm.fma.f32(float %.093, float %333, float noundef 0x3F23376380000000) %.094 = select i1 %.not468, float %345, float %344 %346 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not469 = icmp eq i32 %346, 0 %347 = call float @llvm.nvvm.fma.rn.ftz.f(float %.094, float %333, float noundef 0xBF61BE3FA0000000) #139 %348 = call float @llvm.fma.f32(float %.094, float %333, float noundef 0xBF61BE3FA0000000) %.096 = select i1 %.not469, float %348, float %347 %349 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not470 = icmp eq i32 %349, 0 %350 = call float @llvm.nvvm.fma.rn.ftz.f(float %.096, float %333, float noundef 0xBF710A3120000000) #139 %351 = call float @llvm.fma.f32(float %.096, float %333, float noundef 0xBF710A3120000000) %.097 = select i1 %.not470, float %351, float %350 %352 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not471 = icmp eq i32 %352, 0 %353 = call float @llvm.nvvm.fma.rn.ftz.f(float %.097, float %333, float noundef 0x3FAA15D820000000) #139 %354 = call float @llvm.fma.f32(float %.097, float %333, float noundef 0x3FAA15D820000000) %.098 = select i1 %.not471, float %354, float %353 %355 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not472 = icmp eq i32 %355, 0 %356 = call float @llvm.nvvm.fma.rn.ftz.f(float %.098, float %333, float noundef 0x3FA00B9F80000000) #139 %357 = call float @llvm.fma.f32(float %.098, float %333, float noundef 0x3FA00B9F80000000) %.0100 = select i1 %.not472, float %357, float %356 %358 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not473 = icmp eq i32 %358, 0 %359 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0100, float %333, float noundef 0xBFD5C7C560000000) #139 %360 = call float @llvm.fma.f32(float %.0100, float %333, float noundef 0xBFD5C7C560000000) %.0101 = select i1 %.not473, float %360, float %359 %361 = fmul float %333, %.0101 br label %__nv_y1f.exit 362: ; preds = %330 %363 = fcmp ugt float %.03, 0x4024585C60000000 br i1 %363, label %__nv_isinff.exit.i, label %__internal_fmad.exit47.i __internal_fmad.exit47.i: ; preds = %362 %364 = fadd float %.03, 0xC0213127A0000000 %365 = fadd float %364, 0xBE9CC2D360000000 %366 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not457 = icmp eq i32 %366, 0 %367 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA19E7060000000, float %365, float noundef 0x3EC05205C0000000) #139 %368 = call float @llvm.fma.f32(float %365, float noundef 0x3EA19E7060000000, float noundef 0x3EC05205C0000000) %.0102 = select i1 %.not457, float %368, float %367 %369 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not458 = icmp eq i32 %369, 0 %370 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0102, float %365, float noundef 0xBF06EBEE20000000) #139 %371 = call float @llvm.fma.f32(float %.0102, float %365, float noundef 0xBF06EBEE20000000) %.0104 = select i1 %.not458, float %371, float %370 %372 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not459 = icmp eq i32 %372, 0 %373 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0104, float %365, float noundef 0xBF1B3F5500000000) #139 %374 = call float @llvm.fma.f32(float %.0104, float %365, float noundef 0xBF1B3F5500000000) %.0105 = select i1 %.not459, float %374, float %373 %375 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not460 = icmp eq i32 %375, 0 %376 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0105, float %365, float noundef 0x3F607A3340000000) #139 %377 = call float @llvm.fma.f32(float %.0105, float %365, float noundef 0x3F607A3340000000) %.0106 = select i1 %.not460, float %377, float %376 %378 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not461 = icmp eq i32 %378, 0 %379 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0106, float %365, float noundef 0x3F63CE6DA0000000) #139 %380 = call float @llvm.fma.f32(float %.0106, float %365, float noundef 0x3F63CE6DA0000000) %.0107 = select i1 %.not461, float %380, float %379 %381 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not462 = icmp eq i32 %381, 0 %382 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0107, float %365, float noundef 0xBFA6395CA0000000) #139 %383 = call float @llvm.fma.f32(float %.0107, float %365, float noundef 0xBFA6395CA0000000) %.0108 = select i1 %.not462, float %383, float %382 %384 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not463 = icmp eq i32 %384, 0 %385 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0108, float %365, float noundef 0xBF902B36C0000000) #139 %386 = call float @llvm.fma.f32(float %.0108, float %365, float noundef 0xBF902B36C0000000) %.0109 = select i1 %.not463, float %386, float %385 %387 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not464 = icmp eq i32 %387, 0 %388 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0109, float %365, float noundef 0x3FD15F9940000000) #139 %389 = call float @llvm.fma.f32(float %.0109, float %365, float noundef 0x3FD15F9940000000) %.0111 = select i1 %.not464, float %389, float %388 %390 = fmul float %365, %.0111 br label %__nv_y1f.exit __nv_isinff.exit.i: ; preds = %362 %391 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %391, 0 %392 = call float @llvm.nvvm.fabs.ftz.f(float %.03) #139 %393 = call float @llvm.fabs.f32(float %.03) %.0113 = select i1 %.not8, float %393, float %392 %394 = fcmp oeq float %.0113, 0x7FF0000000000000 br i1 %394, label %__nv_y1f.exit, label %__internal_fmad.exit66.i __internal_fmad.exit66.i: ; preds = %__nv_isinff.exit.i %395 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.03) #141, !srcloc !73 %396 = fmul float %395, %395 %397 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %397, 0 %398 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FE4CFEC00000000, float %396, float noundef 0xBFC8957200000000) #139 %399 = call float @llvm.fma.f32(float %396, float noundef 0x3FE4CFEC00000000, float noundef 0xBFC8957200000000) %.0114 = select i1 %.not9, float %399, float %398 %400 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %400, 0 %401 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0114, float %396, float noundef 0x3FC7FFD7E0000000) #139 %402 = call float @llvm.fma.f32(float %.0114, float %396, float noundef 0x3FC7FFD7E0000000) %.0115 = select i1 %.not10, float %402, float %401 %403 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %403, 0 %404 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0115, float %396, float noundef 1.000000e+00) #139 %405 = call float @llvm.fma.f32(float %.0115, float %396, float noundef 1.000000e+00) %.0116 = select i1 %.not11, float %405, float %404 %406 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %406, 0 %407 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFFC9C3560000000, float %396, float noundef 0x3FD76E7560000000) #139 %408 = call float @llvm.fma.f32(float %396, float noundef 0xBFFC9C3560000000, float noundef 0x3FD76E7560000000) %.0117 = select i1 %.not12, float %408, float %407 %409 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %409, 0 %410 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0117, float %396, float noundef 0xBFC4FF6DC0000000) #139 %411 = call float @llvm.fma.f32(float %.0117, float %396, float noundef 0xBFC4FF6DC0000000) %.0118 = select i1 %.not13, float %411, float %410 %412 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %412, 0 %413 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0118, float %396, float noundef 0x3FD7FFFFE0000000) #139 %414 = call float @llvm.fma.f32(float %.0118, float %396, float noundef 0x3FD7FFFFE0000000) %.0120 = select i1 %.not14, float %414, float %413 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %415, 0 %416 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0120, float %395, float %.03) #139 %417 = call float @llvm.fma.f32(float %.0120, float %395, float %.03) %.0121 = select i1 %.not15, float %417, float %416 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %418, 0 br i1 %.not16, label %421, label %419 419: ; preds = %__internal_fmad.exit66.i %420 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.03) #139 br label %__nv_rsqrtf.exit.i 421: ; preds = %__internal_fmad.exit66.i %422 = call float @llvm.nvvm.rsqrt.approx.f(float %.03) #139 br label %__nv_rsqrtf.exit.i __nv_rsqrtf.exit.i: ; preds = %421, %419 %.0122 = phi float [ %420, %419 ], [ %422, %421 ] %423 = fmul float %.0122, 0x3FE9884540000000 %424 = fmul float %.0116, %423 %425 = fmul float %.0121, 0x3FE45F3060000000 %426 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %426, 0 %427 = call i32 @llvm.nvvm.f2i.rn.ftz(float %425) #139 %428 = call i32 @llvm.nvvm.f2i.rn(float %425) #139 %.0124 = select i1 %.not17, i32 %428, i32 %427 %429 = sitofp i32 %.0124 to float %430 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %430, 0 %431 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBFF921FB40000000, float %.0121) #139 %432 = call float @llvm.fma.f32(float %429, float noundef 0xBFF921FB40000000, float %.0121) %.0125 = select i1 %.not18, float %432, float %431 %433 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %433, 0 %434 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBE74442D00000000, float %.0125) #139 %435 = call float @llvm.fma.f32(float %429, float noundef 0xBE74442D00000000, float %.0125) %.0126 = select i1 %.not19, float %435, float %434 %436 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %436, 0 %437 = call float @llvm.nvvm.fma.rn.ftz.f(float %429, float noundef 0xBCF84698A0000000, float %.0126) #139 %438 = call float @llvm.fma.f32(float %429, float noundef 0xBCF84698A0000000, float %.0126) %.0127 = select i1 %.not20, float %438, float %437 %439 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %439, 0 %440 = call float @llvm.nvvm.fabs.ftz.f(float %.0121) #139 %441 = call float @llvm.fabs.f32(float %.0121) %.0129 = select i1 %.not21, float %441, float %440 %442 = fcmp ult float %.0129, 1.056150e+05 br i1 %442, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__nv_rsqrtf.exit.i %443 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not450 = icmp eq i32 %443, 0 %.0130 = select i1 %.not450, float %441, float %440 %444 = fcmp oeq float %.0130, 0x7FF0000000000000 br i1 %444, label %__nv_fmul_rn.exit.i.i.i, label %448 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %445 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not456 = icmp eq i32 %445, 0 %446 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0121, float noundef 0.000000e+00) #139 %447 = fmul float %.0121, 0.000000e+00 %.0131 = select i1 %.not456, float %447, float %446 br label %__internal_trig_reduction_kernel.exit.i.i 448: ; preds = %__nv_isinff.exit.i.i.i %449 = bitcast float %.0121 to i32 %450 = lshr i32 %449, 23 %451 = and i32 %450, 255 %452 = add nsw i32 %451, -128 %453 = shl i32 %449, 8 %454 = or i32 %453, -2147483648 %455 = lshr i32 %452, 5 br label %456 456: ; preds = %448, %456 %iq.i.i.i.i.0569 = phi i32 [ 0, %448 ], [ %464, %456 ] %hi.i.i.i.i.0568 = phi i32 [ 0, %448 ], [ %462, %456 ] %457 = zext i32 %iq.i.i.i.i.0569 to i64 %458 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %457 %459 = load i32, i32 addrspace(1)* %458, align 4 %460 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %459, i32 %454, i32 %hi.i.i.i.i.0568) #141, !srcloc !67 %461 = extractvalue { i32, i32 } %460, 0 %462 = extractvalue { i32, i32 } %460, 1 %463 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %457 store i32 %461, i32* %463, align 4, !noalias !68 %464 = add nuw nsw i32 %iq.i.i.i.i.0569, 1 %exitcond600.not = icmp eq i32 %464, 6 br i1 %exitcond600.not, label %465, label %456, !llvm.loop !71 465: ; preds = %456 %466 = and i32 %449, -2147483648 %467 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %462, i32* %467, align 4, !noalias !68 %468 = and i32 %450, 31 %469 = sub nsw i32 6, %455 %470 = sext i32 %469 to i64 %471 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %470 %472 = load i32, i32* %471, align 4 %473 = sub nsw i32 5, %455 %474 = sext i32 %473 to i64 %475 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %474 %476 = load i32, i32* %475, align 4 %.not451 = icmp eq i32 %468, 0 br i1 %.not451, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %477 477: ; preds = %465 %478 = sub nsw i32 4, %455 %479 = sub nuw nsw i32 32, %468 %480 = shl i32 %472, %468 %481 = lshr i32 %476, %479 %482 = add i32 %481, %480 %483 = shl i32 %476, %468 %484 = sext i32 %478 to i64 %485 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %484 %486 = load i32, i32* %485, align 4 %487 = lshr i32 %486, %479 %488 = add i32 %487, %483 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %477, %465 %hi.i.i.i.i.1 = phi i32 [ %482, %477 ], [ %472, %465 ] %lo.i.i.i.i.0 = phi i32 [ %488, %477 ], [ %476, %465 ] %489 = lshr i32 %hi.i.i.i.i.1, 30 %490 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 noundef 2) %491 = shl i32 %lo.i.i.i.i.0, 2 %492 = lshr i32 %490, 31 %493 = add nuw nsw i32 %492, %489 %.not452 = icmp eq i32 %466, 0 %494 = sub nsw i32 0, %493 %spec.select1 = select i1 %.not452, i32 %493, i32 %494 %.not453 = icmp sgt i32 %490, -1 %495 = xor i32 %466, -2147483648 %s.i.i.i.i.0 = select i1 %.not453, i32 %466, i32 %495 %not..not453 = xor i1 %.not453, true %496 = sext i1 %not..not453 to i32 %hi.i.i.i.i.2 = xor i32 %490, %496 %lo.i.i.i.i.1 = xor i32 %491, %496 %497 = zext i32 %hi.i.i.i.i.2 to i64 %498 = shl nuw i64 %497, 32 %499 = zext i32 %lo.i.i.i.i.1 to i64 %500 = or i64 %498, %499 %501 = sitofp i64 %500 to double %502 = fmul double %501, 0x3BF921FB54442D19 %503 = fptrunc double %502 to float %.not455 = icmp eq i32 %s.i.i.i.i.0, 0 %504 = fneg float %503 %r.i.i.i.i.0 = select i1 %.not455, float %503, float %504 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__nv_rsqrtf.exit.i %i.i81.i.1 = phi i32 [ %.0124, %__nv_rsqrtf.exit.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %.0127, %__nv_rsqrtf.exit.i ], [ %.0131, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %505 = and i32 %i.i81.i.1, 3 %506 = uitofp i32 %505 to float %507 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %507, 0 %508 = call float @llvm.nvvm.fma.rn.ftz.f(float %506, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) #139 %509 = call float @llvm.fma.f32(float %506, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) %.0133 = select i1 %.not22, float %509, float %508 %510 = fadd float %t.i.i.i.1, %.0133 %511 = fmul float %510, 0x3FE45F3060000000 %512 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %512, 0 %513 = call i32 @llvm.nvvm.f2i.rn.ftz(float %511) #139 %514 = call i32 @llvm.nvvm.f2i.rn(float %511) #139 %.0135 = select i1 %.not23, i32 %514, i32 %513 %515 = sitofp i32 %.0135 to float %516 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %516, 0 %517 = call float @llvm.nvvm.fma.rn.ftz.f(float %515, float noundef 0xBFF921FB40000000, float %510) #139 %518 = call float @llvm.fma.f32(float %515, float noundef 0xBFF921FB40000000, float %510) %.0136 = select i1 %.not24, float %518, float %517 %519 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %519, 0 %520 = call float @llvm.nvvm.fma.rn.ftz.f(float %515, float noundef 0xBE74442D00000000, float %.0136) #139 %521 = call float @llvm.fma.f32(float %515, float noundef 0xBE74442D00000000, float %.0136) %.0137 = select i1 %.not25, float %521, float %520 %522 = add i32 %.0135, 1 %523 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %523, 0 %524 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0137, float %.0137) #139 %525 = fmul float %.0137, %.0137 %.0138 = select i1 %.not26, float %525, float %524 %526 = and i32 %522, 1 %.not27 = icmp eq i32 %526, 0 %527 = select i1 %.not27, float %.0137, float 1.000000e+00 %528 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %528, 0 %529 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0138, float %527, float noundef 0.000000e+00) #139 %530 = call float @llvm.fma.f32(float %.0138, float %527, float noundef 0.000000e+00) %.0139 = select i1 %.not28, float %530, float %529 br i1 %.not27, label %__internal_fmad.exit2.i.i.i, label %__internal_fmad.exit1.i.i.i __internal_fmad.exit1.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i %531 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not449 = icmp eq i32 %531, 0 %532 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0138, float noundef 0xBF56C0FDA0000000) #139 %533 = call float @llvm.fma.f32(float %.0138, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0141 = select i1 %.not449, float %533, float %532 br label %__internal_fmad.exit2.i.i.i __internal_fmad.exit2.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i, %__internal_fmad.exit1.i.i.i %534 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i ] %535 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i ] %536 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i ], [ %.0141, %__internal_fmad.exit1.i.i.i ] %537 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %537, 0 %538 = call float @llvm.nvvm.fma.rn.ftz.f(float %536, float %.0138, float noundef %535) #139 %539 = call float @llvm.fma.f32(float %536, float %.0138, float noundef %535) %.0142 = select i1 %.not31, float %539, float %538 %540 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not33 = icmp eq i32 %540, 0 %541 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0142, float %.0138, float noundef %534) #139 %542 = call float @llvm.fma.f32(float %.0142, float %.0138, float noundef %534) %.0143 = select i1 %.not33, float %542, float %541 %543 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not34 = icmp eq i32 %543, 0 %544 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0143, float %.0139, float %527) #139 %545 = call float @llvm.fma.f32(float %.0143, float %.0139, float %527) %.0144 = select i1 %.not34, float %545, float %544 %546 = and i32 %522, 2 %.not35 = icmp eq i32 %546, 0 br i1 %.not35, label %__internal_cos_offset_f.exit.i, label %__internal_fmad.exit5.i.i.i __internal_fmad.exit5.i.i.i: ; preds = %__internal_fmad.exit2.i.i.i %547 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not448 = icmp eq i32 %547, 0 %548 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0144, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %549 = call float @llvm.fma.f32(float %.0144, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0145 = select i1 %.not448, float %549, float %548 br label %__internal_cos_offset_f.exit.i __internal_cos_offset_f.exit.i: ; preds = %__internal_fmad.exit5.i.i.i, %__internal_fmad.exit2.i.i.i %z.i.i79.i.0 = phi float [ %.0145, %__internal_fmad.exit5.i.i.i ], [ %.0144, %__internal_fmad.exit2.i.i.i ] %550 = fmul float %424, %z.i.i79.i.0 br label %__nv_y1f.exit __nv_y1f.exit: ; preds = %__internal_accurate_logf.exit.i, %__internal_fmad.exit29.i, %__internal_cos_offset_f.exit.i, %__nv_isinff.exit.i, %__internal_fmad.exit47.i, %__internal_fmad.exit11.i, %4 %r.i.5 = phi float [ %5, %4 ], [ %.077, %__internal_accurate_logf.exit.i ], [ %329, %__internal_fmad.exit11.i ], [ %361, %__internal_fmad.exit29.i ], [ %390, %__internal_fmad.exit47.i ], [ %550, %__internal_cos_offset_f.exit.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %551 = fcmp olt float %a, 0.000000e+00 %r.i.6 = select i1 %551, float 0x7FFFFFFFE0000000, float %r.i.5 %552 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not36 = icmp eq i32 %552, 0 %.0147 = select i1 %.not36, float %2, float %1 %553 = fcmp ugt float %.0147, 0x3FDC982EC0000000 br i1 %553, label %837, label %__internal_fmad.exit.i83 __internal_fmad.exit.i83: ; preds = %__nv_y1f.exit %554 = fmul float %.0147, %.0147 %555 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not378 = icmp eq i32 %555, 0 %556 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E7B7CB580000000, float %554, float noundef 0xBEE3E936C0000000) #139 %557 = call float @llvm.fma.f32(float %554, float noundef 0x3E7B7CB580000000, float noundef 0xBEE3E936C0000000) %.0148 = select i1 %.not378, float %557, float %556 %558 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not379 = icmp eq i32 %558, 0 %559 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0148, float %554, float noundef 0x3F41A62000000000) #139 %560 = call float @llvm.fma.f32(float %.0148, float %554, float noundef 0x3F41A62000000000) %.0150 = select i1 %.not379, float %560, float %559 %561 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not380 = icmp eq i32 %561, 0 %562 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0150, float %554, float noundef 0xBF9075B1C0000000) #139 %563 = call float @llvm.fma.f32(float %.0150, float %554, float noundef 0xBF9075B1C0000000) %.0151 = select i1 %.not380, float %563, float %562 %564 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not381 = icmp eq i32 %564, 0 %565 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0151, float %554, float noundef 0x3FC6BBCB40000000) #139 %566 = call float @llvm.fma.f32(float %.0151, float %554, float noundef 0x3FC6BBCB40000000) %.0152 = select i1 %.not381, float %566, float %565 %567 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not382 = icmp eq i32 %567, 0 %568 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0152, float %554, float noundef 0xBFB2E4D6A0000000) #139 %569 = call float @llvm.fma.f32(float %.0152, float %554, float noundef 0xBFB2E4D6A0000000) %.0153 = select i1 %.not382, float %569, float %568 %570 = fcmp olt float %.0147, 0x3810000000000000 %571 = fmul float %.0147, 0x4160000000000000 %.0155 = select i1 %570, float %571, float %.0147 %i.i.i72.0 = select i1 %570, float -2.300000e+01, float 0.000000e+00 %572 = bitcast float %.0155 to i32 %573 = add i32 %572, -1059760811 %574 = and i32 %573, -8388608 %575 = sub i32 %572, %574 %576 = bitcast i32 %575 to float %577 = sitofp i32 %574 to float %578 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not383 = icmp eq i32 %578, 0 %579 = call float @llvm.nvvm.fma.rn.ftz.f(float %577, float noundef 0x3E80000000000000, float noundef %i.i.i72.0) #139 %580 = call float @llvm.fma.f32(float %577, float noundef 0x3E80000000000000, float noundef %i.i.i72.0) %.0161 = select i1 %.not383, float %580, float %579 %581 = fadd float %576, -1.000000e+00 %582 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not384 = icmp eq i32 %582, 0 %583 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %581, float noundef 0x3FC2073EC0000000) #139 %584 = call float @llvm.fma.f32(float %581, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.0162 = select i1 %.not384, float %584, float %583 %585 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not385 = icmp eq i32 %585, 0 %586 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0162, float %581, float noundef 0xBFBF19B980000000) #139 %587 = call float @llvm.fma.f32(float %.0162, float %581, float noundef 0xBFBF19B980000000) %.0163 = select i1 %.not385, float %587, float %586 %588 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not386 = icmp eq i32 %588, 0 %589 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0163, float %581, float noundef 0x3FC1E52AA0000000) #139 %590 = call float @llvm.fma.f32(float %.0163, float %581, float noundef 0x3FC1E52AA0000000) %.0164 = select i1 %.not386, float %590, float %589 %591 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not387 = icmp eq i32 %591, 0 %592 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0164, float %581, float noundef 0xBFC55B1720000000) #139 %593 = call float @llvm.fma.f32(float %.0164, float %581, float noundef 0xBFC55B1720000000) %.0165 = select i1 %.not387, float %593, float %592 %594 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not388 = icmp eq i32 %594, 0 %595 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0165, float %581, float noundef 0x3FC99DA160000000) #139 %596 = call float @llvm.fma.f32(float %.0165, float %581, float noundef 0x3FC99DA160000000) %.0166 = select i1 %.not388, float %596, float %595 %597 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not389 = icmp eq i32 %597, 0 %598 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0166, float %581, float noundef 0xBFCFFFE440000000) #139 %599 = call float @llvm.fma.f32(float %.0166, float %581, float noundef 0xBFCFFFE440000000) %.0168 = select i1 %.not389, float %599, float %598 %600 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not390 = icmp eq i32 %600, 0 %601 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0168, float %581, float noundef 0x3FD5554F00000000) #139 %602 = call float @llvm.fma.f32(float %.0168, float %581, float noundef 0x3FD5554F00000000) %.0169 = select i1 %.not390, float %602, float %601 %603 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not391 = icmp eq i32 %603, 0 %604 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0169, float %581, float noundef -5.000000e-01) #139 %605 = call float @llvm.fma.f32(float %.0169, float %581, float noundef -5.000000e-01) %.0159 = select i1 %.not391, float %605, float %604 %606 = fmul float %581, %.0159 %607 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not392 = icmp eq i32 %607, 0 %608 = call float @llvm.nvvm.fma.rn.ftz.f(float %606, float %581, float %581) #139 %609 = call float @llvm.fma.f32(float %606, float %581, float %581) %.0158 = select i1 %.not392, float %609, float %608 %610 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not393 = icmp eq i32 %610, 0 %611 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0161, float noundef 0x3FE62E4300000000, float %.0158) #139 %612 = call float @llvm.fma.f32(float %.0161, float noundef 0x3FE62E4300000000, float %.0158) %.0157 = select i1 %.not393, float %612, float %611 %613 = icmp ugt i32 %572, 2139095039 br i1 %613, label %__nv_fmaf_rn.exit.i.i99, label %__internal_accurate_logf.exit.i100 __nv_fmaf_rn.exit.i.i99: ; preds = %__internal_fmad.exit.i83 %614 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not447 = icmp eq i32 %614, 0 %615 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0155, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %616 = call float @llvm.fma.f32(float %.0155, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.0156 = select i1 %.not447, float %616, float %615 br label %__internal_accurate_logf.exit.i100 __internal_accurate_logf.exit.i100: ; preds = %__nv_fmaf_rn.exit.i.i99, %__internal_fmad.exit.i83 %r.i.i71.0 = phi float [ %.0156, %__nv_fmaf_rn.exit.i.i99 ], [ %.0157, %__internal_fmad.exit.i83 ] %617 = fcmp oeq float %.0155, 0.000000e+00 %r.i.i71.0.op = fmul float %r.i.i71.0, 0x3FE45F3060000000 %618 = select i1 %617, float 0xFFF0000000000000, float %r.i.i71.0.op %619 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not394 = icmp eq i32 %619, 0 %620 = call float @llvm.nvvm.fabs.ftz.f(float %.0147) #139 %621 = call float @llvm.fabs.f32(float %.0147) %.0170 = select i1 %.not394, float %621, float %620 %622 = fcmp ugt float %.0170, 8.000000e+00 br i1 %622, label %__nv_isinff.exit.i.i115, label %__internal_fmad.exit.i.i102 __internal_fmad.exit.i.i102: ; preds = %__internal_accurate_logf.exit.i100 %623 = fadd float %.0170, 0xC0033D1520000000 %624 = fadd float %623, 0xBE7D2E3660000000 %625 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not434 = icmp eq i32 %625, 0 %626 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %624, float noundef 0xBD35953660000000) #139 %627 = call float @llvm.fma.f32(float %624, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.0172 = select i1 %.not434, float %627, float %626 %628 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not435 = icmp eq i32 %628, 0 %629 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0172, float %624, float noundef 0x3D87E1C300000000) #139 %630 = call float @llvm.fma.f32(float %.0172, float %624, float noundef 0x3D87E1C300000000) %.0173 = select i1 %.not435, float %630, float %629 %631 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not436 = icmp eq i32 %631, 0 %632 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0173, float %624, float noundef 0xBD9A82F020000000) #139 %633 = call float @llvm.fma.f32(float %.0173, float %624, float noundef 0xBD9A82F020000000) %.0174 = select i1 %.not436, float %633, float %632 %634 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not437 = icmp eq i32 %634, 0 %635 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0174, float %624, float noundef 0xBDFD21E700000000) #139 %636 = call float @llvm.fma.f32(float %.0174, float %624, float noundef 0xBDFD21E700000000) %.0175 = select i1 %.not437, float %636, float %635 %637 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not438 = icmp eq i32 %637, 0 %638 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0175, float %624, float noundef 0x3E04060B60000000) #139 %639 = call float @llvm.fma.f32(float %.0175, float %624, float noundef 0x3E04060B60000000) %.0176 = select i1 %.not438, float %639, float %638 %640 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not439 = icmp eq i32 %640, 0 %641 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0176, float %624, float noundef 0x3E6F2E2860000000) #139 %642 = call float @llvm.fma.f32(float %.0176, float %624, float noundef 0x3E6F2E2860000000) %.0177 = select i1 %.not439, float %642, float %641 %643 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not440 = icmp eq i32 %643, 0 %644 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0177, float %624, float noundef 0x3E1EEDF0A0000000) #139 %645 = call float @llvm.fma.f32(float %.0177, float %624, float noundef 0x3E1EEDF0A0000000) %.0179 = select i1 %.not440, float %645, float %644 %646 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not441 = icmp eq i32 %646, 0 %647 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0179, float %624, float noundef 0xBED6DBF8C0000000) #139 %648 = call float @llvm.fma.f32(float %.0179, float %624, float noundef 0xBED6DBF8C0000000) %.0180 = select i1 %.not441, float %648, float %647 %649 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not442 = icmp eq i32 %649, 0 %650 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0180, float %624, float noundef 0xBEDECCB920000000) #139 %651 = call float @llvm.fma.f32(float %.0180, float %624, float noundef 0xBEDECCB920000000) %.0181 = select i1 %.not442, float %651, float %650 %652 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not443 = icmp eq i32 %652, 0 %653 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0181, float %624, float noundef 0x3F33C5BD60000000) #139 %654 = call float @llvm.fma.f32(float %.0181, float %624, float noundef 0x3F33C5BD60000000) %.0182 = select i1 %.not443, float %654, float %653 %655 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not444 = icmp eq i32 %655, 0 %656 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0182, float %624, float noundef 0x3F495C6680000000) #139 %657 = call float @llvm.fma.f32(float %.0182, float %624, float noundef 0x3F495C6680000000) %.0183 = select i1 %.not444, float %657, float %656 %658 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not445 = icmp eq i32 %658, 0 %659 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0183, float %624, float noundef 0xBF7DD54360000000) #139 %660 = call float @llvm.fma.f32(float %.0183, float %624, float noundef 0xBF7DD54360000000) %.0184 = select i1 %.not445, float %660, float %659 %661 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not446 = icmp eq i32 %661, 0 %662 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0184, float %624, float noundef 0xBF9B4EE8E0000000) #139 %663 = call float @llvm.fma.f32(float %.0184, float %624, float noundef 0xBF9B4EE8E0000000) %.0186 = select i1 %.not446, float %663, float %662 %664 = fmul float %624, %.0186 %665 = fadd float %.0170, 0xC016148F60000000 %666 = fadd float %665, 0x3E734F46E0000000 %667 = fmul float %666, %664 %668 = fadd float %.0170, 0xC0214EB560000000 %669 = fadd float %668, 0xBE9999BDA0000000 %670 = fmul float %669, %667 br label %__nv_j0f.exit.i __nv_isinff.exit.i.i115: ; preds = %__internal_accurate_logf.exit.i100 %671 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not395 = icmp eq i32 %671, 0 %672 = call float @llvm.nvvm.fabs.ftz.f(float %.0170) #139 %673 = call float @llvm.fabs.f32(float %.0170) %.0187 = select i1 %.not395, float %673, float %672 %674 = fcmp oeq float %.0187, 0x7FF0000000000000 br i1 %674, label %__nv_j0f.exit.i, label %__internal_fmad.exit13.i.i116 __internal_fmad.exit13.i.i116: ; preds = %__nv_isinff.exit.i.i115 %675 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0170) #141, !srcloc !73 %676 = fmul float %675, %675 %677 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not396 = icmp eq i32 %677, 0 %678 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %676, float noundef 0xBFE076F840000000) #139 %679 = call float @llvm.fma.f32(float %676, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.0188 = select i1 %.not396, float %679, float %678 %680 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not397 = icmp eq i32 %680, 0 %681 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0188, float %676, float noundef 0x3FBA767E60000000) #139 %682 = call float @llvm.fma.f32(float %.0188, float %676, float noundef 0x3FBA767E60000000) %.0189 = select i1 %.not397, float %682, float %681 %683 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not398 = icmp eq i32 %683, 0 %684 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0189, float %676, float noundef 0xBFAFFFF6C0000000) #139 %685 = call float @llvm.fma.f32(float %.0189, float %676, float noundef 0xBFAFFFF6C0000000) %.0190 = select i1 %.not398, float %685, float %684 %686 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not399 = icmp eq i32 %686, 0 %687 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0190, float %676, float noundef 1.000000e+00) #139 %688 = call float @llvm.fma.f32(float %.0190, float %676, float noundef 1.000000e+00) %.0191 = select i1 %.not399, float %688, float %687 %689 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not400 = icmp eq i32 %689, 0 %690 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %676, float noundef 0xBFCA4825A0000000) #139 %691 = call float @llvm.fma.f32(float %676, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.0193 = select i1 %.not400, float %691, float %690 %692 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not401 = icmp eq i32 %692, 0 %693 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0193, float %676, float noundef 0x3FB0A9DA20000000) #139 %694 = call float @llvm.fma.f32(float %.0193, float %676, float noundef 0x3FB0A9DA20000000) %.0194 = select i1 %.not401, float %694, float %693 %695 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not402 = icmp eq i32 %695, 0 %696 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0194, float %676, float noundef 0xBFBFFFFFE0000000) #139 %697 = call float @llvm.fma.f32(float %.0194, float %676, float noundef 0xBFBFFFFFE0000000) %.0195 = select i1 %.not402, float %697, float %696 %698 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not403 = icmp eq i32 %698, 0 %699 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0195, float %675, float %.0170) #139 %700 = call float @llvm.fma.f32(float %.0195, float %675, float %.0170) %.0196 = select i1 %.not403, float %700, float %699 %701 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not404 = icmp eq i32 %701, 0 br i1 %.not404, label %704, label %702 702: ; preds = %__internal_fmad.exit13.i.i116 %703 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0170) #139 br label %__nv_rsqrtf.exit.i.i123 704: ; preds = %__internal_fmad.exit13.i.i116 %705 = call float @llvm.nvvm.rsqrt.approx.f(float %.0170) #139 br label %__nv_rsqrtf.exit.i.i123 __nv_rsqrtf.exit.i.i123: ; preds = %704, %702 %.0197 = phi float [ %703, %702 ], [ %705, %704 ] %706 = fmul float %.0197, 0x3FE9884540000000 %707 = fmul float %.0191, %706 %708 = fmul float %.0196, 0x3FE45F3060000000 %709 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not405 = icmp eq i32 %709, 0 %710 = call i32 @llvm.nvvm.f2i.rn.ftz(float %708) #139 %711 = call i32 @llvm.nvvm.f2i.rn(float %708) #139 %.0199 = select i1 %.not405, i32 %711, i32 %710 %712 = sitofp i32 %.0199 to float %713 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not406 = icmp eq i32 %713, 0 %714 = call float @llvm.nvvm.fma.rn.ftz.f(float %712, float noundef 0xBFF921FB40000000, float %.0196) #139 %715 = call float @llvm.fma.f32(float %712, float noundef 0xBFF921FB40000000, float %.0196) %.0200 = select i1 %.not406, float %715, float %714 %716 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not407 = icmp eq i32 %716, 0 %717 = call float @llvm.nvvm.fma.rn.ftz.f(float %712, float noundef 0xBE74442D00000000, float %.0200) #139 %718 = call float @llvm.fma.f32(float %712, float noundef 0xBE74442D00000000, float %.0200) %.0202 = select i1 %.not407, float %718, float %717 %719 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not408 = icmp eq i32 %719, 0 %720 = call float @llvm.nvvm.fma.rn.ftz.f(float %712, float noundef 0xBCF84698A0000000, float %.0202) #139 %721 = call float @llvm.fma.f32(float %712, float noundef 0xBCF84698A0000000, float %.0202) %.0203 = select i1 %.not408, float %721, float %720 %722 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not409 = icmp eq i32 %722, 0 %723 = call float @llvm.nvvm.fabs.ftz.f(float %.0196) #139 %724 = call float @llvm.fabs.f32(float %.0196) %.0204 = select i1 %.not409, float %724, float %723 %725 = fcmp ult float %.0204, 1.056150e+05 br i1 %725, label %__internal_trig_reduction_kernel.exit.i.i.i132, label %__nv_isinff.exit.i.i.i.i129 __nv_isinff.exit.i.i.i.i129: ; preds = %__nv_rsqrtf.exit.i.i123 %726 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not427 = icmp eq i32 %726, 0 %.0205 = select i1 %.not427, float %724, float %723 %727 = fcmp oeq float %.0205, 0x7FF0000000000000 br i1 %727, label %__nv_fmul_rn.exit.i.i.i.i130, label %731 __nv_fmul_rn.exit.i.i.i.i130: ; preds = %__nv_isinff.exit.i.i.i.i129 %728 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not433 = icmp eq i32 %728, 0 %729 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0196, float noundef 0.000000e+00) #139 %730 = fmul float %.0196, 0.000000e+00 %.0206 = select i1 %.not433, float %730, float %729 br label %__internal_trig_reduction_kernel.exit.i.i.i132 731: ; preds = %__nv_isinff.exit.i.i.i.i129 %732 = bitcast float %.0196 to i32 %733 = lshr i32 %732, 23 %734 = and i32 %733, 255 %735 = add nsw i32 %734, -128 %736 = shl i32 %732, 8 %737 = or i32 %736, -2147483648 %738 = lshr i32 %735, 5 br label %739 739: ; preds = %731, %739 %iq.i.i.i.i.i41.0567 = phi i32 [ 0, %731 ], [ %747, %739 ] %hi.i.i.i.i.i36.0566 = phi i32 [ 0, %731 ], [ %745, %739 ] %740 = zext i32 %iq.i.i.i.i.i41.0567 to i64 %741 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %740 %742 = load i32, i32 addrspace(1)* %741, align 4 %743 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %742, i32 %737, i32 %hi.i.i.i.i.i36.0566) #141, !srcloc !67 %744 = extractvalue { i32, i32 } %743, 0 %745 = extractvalue { i32, i32 } %743, 1 %746 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %740 store i32 %744, i32* %746, align 4, !noalias !68 %747 = add nuw nsw i32 %iq.i.i.i.i.i41.0567, 1 %exitcond599.not = icmp eq i32 %747, 6 br i1 %exitcond599.not, label %748, label %739, !llvm.loop !71 748: ; preds = %739 %749 = and i32 %732, -2147483648 %750 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %745, i32* %750, align 4, !noalias !68 %751 = and i32 %733, 31 %752 = sub nsw i32 6, %738 %753 = sext i32 %752 to i64 %754 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %753 %755 = load i32, i32* %754, align 4 %756 = sub nsw i32 5, %738 %757 = sext i32 %756 to i64 %758 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %757 %759 = load i32, i32* %758, align 4 %.not428 = icmp eq i32 %751, 0 br i1 %.not428, label %__internal_trig_reduction_slowpath.exit.i.i.i.i131, label %760 760: ; preds = %748 %761 = sub nsw i32 4, %738 %762 = sub nuw nsw i32 32, %751 %763 = shl i32 %755, %751 %764 = lshr i32 %759, %762 %765 = add i32 %764, %763 %766 = shl i32 %759, %751 %767 = sext i32 %761 to i64 %768 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %767 %769 = load i32, i32* %768, align 4 %770 = lshr i32 %769, %762 %771 = add i32 %770, %766 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i131 __internal_trig_reduction_slowpath.exit.i.i.i.i131: ; preds = %760, %748 %hi.i.i.i.i.i36.1 = phi i32 [ %765, %760 ], [ %755, %748 ] %lo.i.i.i.i.i37.0 = phi i32 [ %771, %760 ], [ %759, %748 ] %772 = lshr i32 %hi.i.i.i.i.i36.1, 30 %773 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i36.1, i32 %lo.i.i.i.i.i37.0, i32 noundef 2) %774 = shl i32 %lo.i.i.i.i.i37.0, 2 %775 = lshr i32 %773, 31 %776 = add nuw nsw i32 %775, %772 %.not429 = icmp eq i32 %749, 0 %777 = sub nsw i32 0, %776 %spec.select2 = select i1 %.not429, i32 %776, i32 %777 %.not430 = icmp sgt i32 %773, -1 %778 = xor i32 %749, -2147483648 %s.i.i.i.i.i34.0 = select i1 %.not430, i32 %749, i32 %778 %not..not430 = xor i1 %.not430, true %779 = sext i1 %not..not430 to i32 %hi.i.i.i.i.i36.2 = xor i32 %773, %779 %lo.i.i.i.i.i37.1 = xor i32 %774, %779 %780 = zext i32 %hi.i.i.i.i.i36.2 to i64 %781 = shl nuw i64 %780, 32 %782 = zext i32 %lo.i.i.i.i.i37.1 to i64 %783 = or i64 %781, %782 %784 = sitofp i64 %783 to double %785 = fmul double %784, 0x3BF921FB54442D19 %786 = fptrunc double %785 to float %.not432 = icmp eq i32 %s.i.i.i.i.i34.0, 0 %787 = fneg float %786 %r.i.i.i.i.i45.0 = select i1 %.not432, float %786, float %787 br label %__internal_trig_reduction_kernel.exit.i.i.i132 __internal_trig_reduction_kernel.exit.i.i.i132: ; preds = %__nv_fmul_rn.exit.i.i.i.i130, %__internal_trig_reduction_slowpath.exit.i.i.i.i131, %__nv_rsqrtf.exit.i.i123 %i.i.i.i51.1 = phi i32 [ %.0199, %__nv_rsqrtf.exit.i.i123 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i130 ], [ %spec.select2, %__internal_trig_reduction_slowpath.exit.i.i.i.i131 ] %t.i.i.i.i48.1 = phi float [ %.0203, %__nv_rsqrtf.exit.i.i123 ], [ %.0206, %__nv_fmul_rn.exit.i.i.i.i130 ], [ %r.i.i.i.i.i45.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i131 ] %788 = and i32 %i.i.i.i51.1, 3 %789 = uitofp i32 %788 to float %790 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not410 = icmp eq i32 %790, 0 %791 = call float @llvm.nvvm.fma.rn.ftz.f(float %789, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %792 = call float @llvm.fma.f32(float %789, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.0209 = select i1 %.not410, float %792, float %791 %793 = fadd float %t.i.i.i.i48.1, %.0209 %794 = fmul float %793, 0x3FE45F3060000000 %795 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not411 = icmp eq i32 %795, 0 %796 = call i32 @llvm.nvvm.f2i.rn.ftz(float %794) #139 %797 = call i32 @llvm.nvvm.f2i.rn(float %794) #139 %.0210 = select i1 %.not411, i32 %797, i32 %796 %798 = sitofp i32 %.0210 to float %799 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not412 = icmp eq i32 %799, 0 %800 = call float @llvm.nvvm.fma.rn.ftz.f(float %798, float noundef 0xBFF921FB40000000, float %793) #139 %801 = call float @llvm.fma.f32(float %798, float noundef 0xBFF921FB40000000, float %793) %.0211 = select i1 %.not412, float %801, float %800 %802 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not413 = icmp eq i32 %802, 0 %803 = call float @llvm.nvvm.fma.rn.ftz.f(float %798, float noundef 0xBE74442D00000000, float %.0211) #139 %804 = call float @llvm.fma.f32(float %798, float noundef 0xBE74442D00000000, float %.0211) %.0212 = select i1 %.not413, float %804, float %803 %805 = add i32 %.0210, 1 %806 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not414 = icmp eq i32 %806, 0 %807 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0212, float %.0212) #139 %808 = fmul float %.0212, %.0212 %.0214 = select i1 %.not414, float %808, float %807 %809 = and i32 %805, 1 %.not415 = icmp eq i32 %809, 0 %810 = select i1 %.not415, float %.0212, float 1.000000e+00 %811 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not416 = icmp eq i32 %811, 0 %812 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0214, float %810, float noundef 0.000000e+00) #139 %813 = call float @llvm.fma.f32(float %.0214, float %810, float noundef 0.000000e+00) %.0215 = select i1 %.not416, float %813, float %812 br i1 %.not415, label %__internal_fmad.exit2.i.i.i.i140, label %__internal_fmad.exit1.i.i.i.i139 __internal_fmad.exit1.i.i.i.i139: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i132 %814 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not426 = icmp eq i32 %814, 0 %815 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0214, float noundef 0xBF56C0FDA0000000) #139 %816 = call float @llvm.fma.f32(float %.0214, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0216 = select i1 %.not426, float %816, float %815 br label %__internal_fmad.exit2.i.i.i.i140 __internal_fmad.exit2.i.i.i.i140: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i132, %__internal_fmad.exit1.i.i.i.i139 %817 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i.i132 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i.i139 ] %818 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i.i132 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i.i139 ] %819 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i.i132 ], [ %.0216, %__internal_fmad.exit1.i.i.i.i139 ] %820 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not419 = icmp eq i32 %820, 0 %821 = call float @llvm.nvvm.fma.rn.ftz.f(float %819, float %.0214, float noundef %818) #139 %822 = call float @llvm.fma.f32(float %819, float %.0214, float noundef %818) %.0217 = select i1 %.not419, float %822, float %821 %823 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not421 = icmp eq i32 %823, 0 %824 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0217, float %.0214, float noundef %817) #139 %825 = call float @llvm.fma.f32(float %.0217, float %.0214, float noundef %817) %.0218 = select i1 %.not421, float %825, float %824 %826 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not422 = icmp eq i32 %826, 0 %827 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0218, float %.0215, float %810) #139 %828 = call float @llvm.fma.f32(float %.0218, float %.0215, float %810) %.0219 = select i1 %.not422, float %828, float %827 %829 = and i32 %805, 2 %.not423 = icmp eq i32 %829, 0 br i1 %.not423, label %__internal_cos_offset_f.exit.i.i144, label %__internal_fmad.exit5.i.i.i.i143 __internal_fmad.exit5.i.i.i.i143: ; preds = %__internal_fmad.exit2.i.i.i.i140 %830 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not425 = icmp eq i32 %830, 0 %831 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0219, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %832 = call float @llvm.fma.f32(float %.0219, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0221 = select i1 %.not425, float %832, float %831 br label %__internal_cos_offset_f.exit.i.i144 __internal_cos_offset_f.exit.i.i144: ; preds = %__internal_fmad.exit5.i.i.i.i143, %__internal_fmad.exit2.i.i.i.i140 %z.i.i.i.i27.0 = phi float [ %.0221, %__internal_fmad.exit5.i.i.i.i143 ], [ %.0219, %__internal_fmad.exit2.i.i.i.i140 ] %833 = fmul float %707, %z.i.i.i.i27.0 br label %__nv_j0f.exit.i __nv_j0f.exit.i: ; preds = %__internal_cos_offset_f.exit.i.i144, %__nv_isinff.exit.i.i115, %__internal_fmad.exit.i.i102 %r.i5.i57.1 = phi float [ %670, %__internal_fmad.exit.i.i102 ], [ %833, %__internal_cos_offset_f.exit.i.i144 ], [ 0.000000e+00, %__nv_isinff.exit.i.i115 ] %834 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not424 = icmp eq i32 %834, 0 %835 = call float @llvm.nvvm.fma.rn.ftz.f(float %618, float %r.i5.i57.1, float %.0153) #139 %836 = call float @llvm.fma.f32(float %618, float %r.i5.i57.1, float %.0153) %.0222 = select i1 %.not424, float %836, float %835 br label %__nv_y0f.exit 837: ; preds = %__nv_y1f.exit %838 = fcmp ugt float %.0147, 0x3FFECF5F00000000 br i1 %838, label %878, label %__internal_fmad.exit9.i146 __internal_fmad.exit9.i146: ; preds = %837 %839 = fadd float %.0147, 0xBFEC982EC0000000 %840 = fadd float %839, 0x3E4CAFA060000000 %841 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not366 = icmp eq i32 %841, 0 %842 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F9BB91660000000, float %840, float noundef 0xBFC04AE980000000) #139 %843 = call float @llvm.fma.f32(float %840, float noundef 0x3F9BB91660000000, float noundef 0xBFC04AE980000000) %.0223 = select i1 %.not366, float %843, float %842 %844 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not367 = icmp eq i32 %844, 0 %845 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0223, float %840, float noundef 0x3FCFE59920000000) #139 %846 = call float @llvm.fma.f32(float %.0223, float %840, float noundef 0x3FCFE59920000000) %.0224 = select i1 %.not367, float %846, float %845 %847 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not368 = icmp eq i32 %847, 0 %848 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0224, float %840, float noundef 0xBFD17E5360000000) #139 %849 = call float @llvm.fma.f32(float %.0224, float %840, float noundef 0xBFD17E5360000000) %.0225 = select i1 %.not368, float %849, float %848 %850 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not369 = icmp eq i32 %850, 0 %851 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0225, float %840, float noundef 0x3FCB79D260000000) #139 %852 = call float @llvm.fma.f32(float %.0225, float %840, float noundef 0x3FCB79D260000000) %.0226 = select i1 %.not369, float %852, float %851 %853 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not370 = icmp eq i32 %853, 0 %854 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0226, float %840, float noundef 0xBFC7189FE0000000) #139 %855 = call float @llvm.fma.f32(float %.0226, float %840, float noundef 0xBFC7189FE0000000) %.0228 = select i1 %.not370, float %855, float %854 %856 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not371 = icmp eq i32 %856, 0 %857 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0228, float %840, float noundef 0x3FC84EE9A0000000) #139 %858 = call float @llvm.fma.f32(float %.0228, float %840, float noundef 0x3FC84EE9A0000000) %.0229 = select i1 %.not371, float %858, float %857 %859 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not372 = icmp eq i32 %859, 0 %860 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0229, float %840, float noundef 0xBFCA4B9640000000) #139 %861 = call float @llvm.fma.f32(float %.0229, float %840, float noundef 0xBFCA4B9640000000) %.0230 = select i1 %.not372, float %861, float %860 %862 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not373 = icmp eq i32 %862, 0 %863 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0230, float %840, float noundef 0x3FCC1E87A0000000) #139 %864 = call float @llvm.fma.f32(float %.0230, float %840, float noundef 0x3FCC1E87A0000000) %.0231 = select i1 %.not373, float %864, float %863 %865 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not374 = icmp eq i32 %865, 0 %866 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0231, float %840, float noundef 0xBFCCF228A0000000) #139 %867 = call float @llvm.fma.f32(float %.0231, float %840, float noundef 0xBFCCF228A0000000) %.0232 = select i1 %.not374, float %867, float %866 %868 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not375 = icmp eq i32 %868, 0 %869 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0232, float %840, float noundef 0x3FCC3A4940000000) #139 %870 = call float @llvm.fma.f32(float %.0232, float %840, float noundef 0x3FCC3A4940000000) %.0233 = select i1 %.not375, float %870, float %869 %871 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not376 = icmp eq i32 %871, 0 %872 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0233, float %840, float noundef 0xBFDF7E35A0000000) #139 %873 = call float @llvm.fma.f32(float %.0233, float %840, float noundef 0xBFDF7E35A0000000) %.0235 = select i1 %.not376, float %873, float %872 %874 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not377 = icmp eq i32 %874, 0 %875 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0235, float %840, float noundef 0x3FEC243760000000) #139 %876 = call float @llvm.fma.f32(float %.0235, float %840, float noundef 0x3FEC243760000000) %.0236 = select i1 %.not377, float %876, float %875 %877 = fmul float %840, %.0236 br label %__nv_y0f.exit 878: ; preds = %837 %879 = fcmp ugt float %.0147, 0x40161663C0000000 br i1 %879, label %910, label %__internal_fmad.exit33.i158 __internal_fmad.exit33.i158: ; preds = %878 %880 = fadd float %.0147, 0xC00FA95340000000 %881 = fadd float %880, 0xBE7B30AD40000000 %882 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not357 = icmp eq i32 %882, 0 %883 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBE893BA7E0000000, float %881, float noundef 0xBE8BC4C0E0000000) #139 %884 = call float @llvm.fma.f32(float %881, float noundef 0xBE893BA7E0000000, float noundef 0xBE8BC4C0E0000000) %.0237 = select i1 %.not357, float %884, float %883 %885 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not358 = icmp eq i32 %885, 0 %886 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0237, float %881, float noundef 0xBED0AE0C80000000) #139 %887 = call float @llvm.fma.f32(float %.0237, float %881, float noundef 0xBED0AE0C80000000) %.0238 = select i1 %.not358, float %887, float %886 %888 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not359 = icmp eq i32 %888, 0 %889 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0238, float %881, float noundef 0x3F0AA8C200000000) #139 %890 = call float @llvm.fma.f32(float %.0238, float %881, float noundef 0x3F0AA8C200000000) %.0239 = select i1 %.not359, float %890, float %889 %891 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not360 = icmp eq i32 %891, 0 %892 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0239, float %881, float noundef 0x3F2959DAE0000000) #139 %893 = call float @llvm.fma.f32(float %.0239, float %881, float noundef 0x3F2959DAE0000000) %.0240 = select i1 %.not360, float %893, float %892 %894 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not361 = icmp eq i32 %894, 0 %895 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0240, float %881, float noundef 0xBF61E34180000000) #139 %896 = call float @llvm.fma.f32(float %.0240, float %881, float noundef 0xBF61E34180000000) %.0242 = select i1 %.not361, float %896, float %895 %897 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not362 = icmp eq i32 %897, 0 %898 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0242, float %881, float noundef 0xBF7C0FE5C0000000) #139 %899 = call float @llvm.fma.f32(float %.0242, float %881, float noundef 0xBF7C0FE5C0000000) %.0243 = select i1 %.not362, float %899, float %898 %900 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not363 = icmp eq i32 %900, 0 %901 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0243, float %881, float noundef 0x3FADF6D6A0000000) #139 %902 = call float @llvm.fma.f32(float %.0243, float %881, float noundef 0x3FADF6D6A0000000) %.0244 = select i1 %.not363, float %902, float %901 %903 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not364 = icmp eq i32 %903, 0 %904 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0244, float %881, float noundef 0x3FAA09BE20000000) #139 %905 = call float @llvm.fma.f32(float %.0244, float %881, float noundef 0x3FAA09BE20000000) %.0245 = select i1 %.not364, float %905, float %904 %906 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not365 = icmp eq i32 %906, 0 %907 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0245, float %881, float noundef 0xBFD9C34260000000) #139 %908 = call float @llvm.fma.f32(float %.0245, float %881, float noundef 0xBFD9C34260000000) %.0246 = select i1 %.not365, float %908, float %907 %909 = fmul float %881, %.0246 br label %__nv_y0f.exit 910: ; preds = %878 %911 = fcmp ugt float %.0147, 0x40214EF300000000 br i1 %911, label %__nv_isinff.exit.i173, label %__internal_fmad.exit51.i167 __internal_fmad.exit51.i167: ; preds = %910 %912 = fadd float %.0147, 0xC01C581DC0000000 %913 = fadd float %912, 0xBE739C8400000000 %914 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not349 = icmp eq i32 %914, 0 %915 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA219D7C0000000, float %913, float noundef 0x3EC53B4D80000000) #139 %916 = call float @llvm.fma.f32(float %913, float noundef 0x3EA219D7C0000000, float noundef 0x3EC53B4D80000000) %.0247 = select i1 %.not349, float %916, float %915 %917 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not350 = icmp eq i32 %917, 0 %918 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0247, float %913, float noundef 0xBF080A9800000000) #139 %919 = call float @llvm.fma.f32(float %.0247, float %913, float noundef 0xBF080A9800000000) %.0249 = select i1 %.not350, float %919, float %918 %920 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not351 = icmp eq i32 %920, 0 %921 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0249, float %913, float noundef 0xBF22631560000000) #139 %922 = call float @llvm.fma.f32(float %.0249, float %913, float noundef 0xBF22631560000000) %.0250 = select i1 %.not351, float %922, float %921 %923 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not352 = icmp eq i32 %923, 0 %924 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0250, float %913, float noundef 0x3F61D32420000000) #139 %925 = call float @llvm.fma.f32(float %.0250, float %913, float noundef 0x3F61D32420000000) %.0251 = select i1 %.not352, float %925, float %924 %926 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not353 = icmp eq i32 %926, 0 %927 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0251, float %913, float noundef 0x3F6B2E9AA0000000) #139 %928 = call float @llvm.fma.f32(float %.0251, float %913, float noundef 0x3F6B2E9AA0000000) %.0252 = select i1 %.not353, float %928, float %927 %929 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not354 = icmp eq i32 %929, 0 %930 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0252, float %913, float noundef 0xBFA8969AE0000000) #139 %931 = call float @llvm.fma.f32(float %.0252, float %913, float noundef 0xBFA8969AE0000000) %.0253 = select i1 %.not354, float %931, float %930 %932 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not355 = icmp eq i32 %932, 0 %933 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0253, float %913, float noundef 0xBF95AEF320000000) #139 %934 = call float @llvm.fma.f32(float %.0253, float %913, float noundef 0xBF95AEF320000000) %.0254 = select i1 %.not355, float %934, float %933 %935 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not356 = icmp eq i32 %935, 0 %936 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0254, float %913, float noundef 0x3FD334CCA0000000) #139 %937 = call float @llvm.fma.f32(float %.0254, float %913, float noundef 0x3FD334CCA0000000) %.0256 = select i1 %.not356, float %937, float %936 %938 = fmul float %913, %.0256 br label %__nv_y0f.exit __nv_isinff.exit.i173: ; preds = %910 %939 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not37 = icmp eq i32 %939, 0 %940 = call float @llvm.nvvm.fabs.ftz.f(float %.0147) #139 %941 = call float @llvm.fabs.f32(float %.0147) %.0257 = select i1 %.not37, float %941, float %940 %942 = fcmp oeq float %.0257, 0x7FF0000000000000 br i1 %942, label %__nv_y0f.exit, label %__internal_fmad.exit70.i174 __internal_fmad.exit70.i174: ; preds = %__nv_isinff.exit.i173 %943 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0147) #141, !srcloc !73 %944 = fmul float %943, %943 %945 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %945, 0 %946 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFD98D3E60000000, float %944, float noundef 0x3FBA1ABE00000000) #139 %947 = call float @llvm.fma.f32(float %944, float noundef 0xBFD98D3E60000000, float noundef 0x3FBA1ABE00000000) %.0258 = select i1 %.not38, float %947, float %946 %948 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %948, 0 %949 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0258, float %944, float noundef 0xBFAFFF0AA0000000) #139 %950 = call float @llvm.fma.f32(float %.0258, float %944, float noundef 0xBFAFFF0AA0000000) %.0259 = select i1 %.not39, float %950, float %949 %951 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %951, 0 %952 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0259, float %944, float noundef 1.000000e+00) #139 %953 = call float @llvm.fma.f32(float %.0259, float %944, float noundef 1.000000e+00) %.0260 = select i1 %.not40, float %953, float %952 %954 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %954, 0 %955 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF199AC20000000, float %944, float noundef 0xBFCA1A6380000000) #139 %956 = call float @llvm.fma.f32(float %944, float noundef 0x3FF199AC20000000, float noundef 0xBFCA1A6380000000) %.0261 = select i1 %.not41, float %956, float %955 %957 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %957, 0 %958 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0261, float %944, float noundef 0x3FB0A8F060000000) #139 %959 = call float @llvm.fma.f32(float %.0261, float %944, float noundef 0x3FB0A8F060000000) %.0263 = select i1 %.not42, float %959, float %958 %960 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %960, 0 %961 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0263, float %944, float noundef 0xBFBFFFFF60000000) #139 %962 = call float @llvm.fma.f32(float %.0263, float %944, float noundef 0xBFBFFFFF60000000) %.0264 = select i1 %.not43, float %962, float %961 %963 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %963, 0 %964 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0264, float %943, float %.0147) #139 %965 = call float @llvm.fma.f32(float %.0264, float %943, float %.0147) %.0265 = select i1 %.not44, float %965, float %964 %966 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %966, 0 br i1 %.not45, label %969, label %967 967: ; preds = %__internal_fmad.exit70.i174 %968 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0147) #139 br label %__nv_rsqrtf.exit.i179 969: ; preds = %__internal_fmad.exit70.i174 %970 = call float @llvm.nvvm.rsqrt.approx.f(float %.0147) #139 br label %__nv_rsqrtf.exit.i179 __nv_rsqrtf.exit.i179: ; preds = %969, %967 %.0266 = phi float [ %968, %967 ], [ %970, %969 ] %971 = fmul float %.0266, 0x3FE9884540000000 %972 = fmul float %.0260, %971 %973 = fmul float %.0265, 0x3FE45F3060000000 %974 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %974, 0 %975 = call i32 @llvm.nvvm.f2i.rn.ftz(float %973) #139 %976 = call i32 @llvm.nvvm.f2i.rn(float %973) #139 %.0268 = select i1 %.not46, i32 %976, i32 %975 %977 = sitofp i32 %.0268 to float %978 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %978, 0 %979 = call float @llvm.nvvm.fma.rn.ftz.f(float %977, float noundef 0xBFF921FB40000000, float %.0265) #139 %980 = call float @llvm.fma.f32(float %977, float noundef 0xBFF921FB40000000, float %.0265) %.0269 = select i1 %.not47, float %980, float %979 %981 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %981, 0 %982 = call float @llvm.nvvm.fma.rn.ftz.f(float %977, float noundef 0xBE74442D00000000, float %.0269) #139 %983 = call float @llvm.fma.f32(float %977, float noundef 0xBE74442D00000000, float %.0269) %.0270 = select i1 %.not48, float %983, float %982 %984 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %984, 0 %985 = call float @llvm.nvvm.fma.rn.ftz.f(float %977, float noundef 0xBCF84698A0000000, float %.0270) #139 %986 = call float @llvm.fma.f32(float %977, float noundef 0xBCF84698A0000000, float %.0270) %.0272 = select i1 %.not49, float %986, float %985 %987 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %987, 0 %988 = call float @llvm.nvvm.fabs.ftz.f(float %.0265) #139 %989 = call float @llvm.fabs.f32(float %.0265) %.0273 = select i1 %.not50, float %989, float %988 %990 = fcmp ult float %.0273, 1.056150e+05 br i1 %990, label %__internal_trig_reduction_kernel.exit.i.i185, label %__nv_isinff.exit.i.i.i182 __nv_isinff.exit.i.i.i182: ; preds = %__nv_rsqrtf.exit.i179 %991 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not342 = icmp eq i32 %991, 0 %.0274 = select i1 %.not342, float %989, float %988 %992 = fcmp oeq float %.0274, 0x7FF0000000000000 br i1 %992, label %__nv_fmul_rn.exit.i.i.i183, label %996 __nv_fmul_rn.exit.i.i.i183: ; preds = %__nv_isinff.exit.i.i.i182 %993 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not348 = icmp eq i32 %993, 0 %994 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0265, float noundef 0.000000e+00) #139 %995 = fmul float %.0265, 0.000000e+00 %.0275 = select i1 %.not348, float %995, float %994 br label %__internal_trig_reduction_kernel.exit.i.i185 996: ; preds = %__nv_isinff.exit.i.i.i182 %997 = bitcast float %.0265 to i32 %998 = lshr i32 %997, 23 %999 = and i32 %998, 255 %1000 = add nsw i32 %999, -128 %1001 = shl i32 %997, 8 %1002 = or i32 %1001, -2147483648 %1003 = lshr i32 %1000, 5 br label %1004 1004: ; preds = %996, %1004 %iq.i.i.i.i15.0565 = phi i32 [ 0, %996 ], [ %1012, %1004 ] %hi.i.i.i.i10.0564 = phi i32 [ 0, %996 ], [ %1010, %1004 ] %1005 = zext i32 %iq.i.i.i.i15.0565 to i64 %1006 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %1005 %1007 = load i32, i32 addrspace(1)* %1006, align 4 %1008 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %1007, i32 %1002, i32 %hi.i.i.i.i10.0564) #141, !srcloc !67 %1009 = extractvalue { i32, i32 } %1008, 0 %1010 = extractvalue { i32, i32 } %1008, 1 %1011 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1005 store i32 %1009, i32* %1011, align 4, !noalias !68 %1012 = add nuw nsw i32 %iq.i.i.i.i15.0565, 1 %exitcond598.not = icmp eq i32 %1012, 6 br i1 %exitcond598.not, label %1013, label %1004, !llvm.loop !71 1013: ; preds = %1004 %1014 = and i32 %997, -2147483648 %1015 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %1010, i32* %1015, align 4, !noalias !68 %1016 = and i32 %998, 31 %1017 = sub nsw i32 6, %1003 %1018 = sext i32 %1017 to i64 %1019 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1018 %1020 = load i32, i32* %1019, align 4 %1021 = sub nsw i32 5, %1003 %1022 = sext i32 %1021 to i64 %1023 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1022 %1024 = load i32, i32* %1023, align 4 %.not343 = icmp eq i32 %1016, 0 br i1 %.not343, label %__internal_trig_reduction_slowpath.exit.i.i.i184, label %1025 1025: ; preds = %1013 %1026 = sub nsw i32 4, %1003 %1027 = sub nuw nsw i32 32, %1016 %1028 = shl i32 %1020, %1016 %1029 = lshr i32 %1024, %1027 %1030 = add i32 %1029, %1028 %1031 = shl i32 %1024, %1016 %1032 = sext i32 %1026 to i64 %1033 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1032 %1034 = load i32, i32* %1033, align 4 %1035 = lshr i32 %1034, %1027 %1036 = add i32 %1035, %1031 br label %__internal_trig_reduction_slowpath.exit.i.i.i184 __internal_trig_reduction_slowpath.exit.i.i.i184: ; preds = %1025, %1013 %hi.i.i.i.i10.1 = phi i32 [ %1030, %1025 ], [ %1020, %1013 ] %lo.i.i.i.i11.0 = phi i32 [ %1036, %1025 ], [ %1024, %1013 ] %1037 = lshr i32 %hi.i.i.i.i10.1, 30 %1038 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i10.1, i32 %lo.i.i.i.i11.0, i32 noundef 2) %1039 = shl i32 %lo.i.i.i.i11.0, 2 %1040 = lshr i32 %1038, 31 %1041 = add nuw nsw i32 %1040, %1037 %.not344 = icmp eq i32 %1014, 0 %1042 = sub nsw i32 0, %1041 %spec.select3 = select i1 %.not344, i32 %1041, i32 %1042 %.not345 = icmp sgt i32 %1038, -1 %1043 = xor i32 %1014, -2147483648 %s.i.i.i.i9.0 = select i1 %.not345, i32 %1014, i32 %1043 %not..not345 = xor i1 %.not345, true %1044 = sext i1 %not..not345 to i32 %hi.i.i.i.i10.2 = xor i32 %1038, %1044 %lo.i.i.i.i11.1 = xor i32 %1039, %1044 %1045 = zext i32 %hi.i.i.i.i10.2 to i64 %1046 = shl nuw i64 %1045, 32 %1047 = zext i32 %lo.i.i.i.i11.1 to i64 %1048 = or i64 %1046, %1047 %1049 = sitofp i64 %1048 to double %1050 = fmul double %1049, 0x3BF921FB54442D19 %1051 = fptrunc double %1050 to float %.not347 = icmp eq i32 %s.i.i.i.i9.0, 0 %1052 = fneg float %1051 %r.i.i.i.i19.0 = select i1 %.not347, float %1051, float %1052 br label %__internal_trig_reduction_kernel.exit.i.i185 __internal_trig_reduction_kernel.exit.i.i185: ; preds = %__nv_fmul_rn.exit.i.i.i183, %__internal_trig_reduction_slowpath.exit.i.i.i184, %__nv_rsqrtf.exit.i179 %i.i85.i.1 = phi i32 [ %.0268, %__nv_rsqrtf.exit.i179 ], [ 0, %__nv_fmul_rn.exit.i.i.i183 ], [ %spec.select3, %__internal_trig_reduction_slowpath.exit.i.i.i184 ] %t.i.i.i22.1 = phi float [ %.0272, %__nv_rsqrtf.exit.i179 ], [ %.0275, %__nv_fmul_rn.exit.i.i.i183 ], [ %r.i.i.i.i19.0, %__internal_trig_reduction_slowpath.exit.i.i.i184 ] %1053 = and i32 %i.i85.i.1, 3 %1054 = uitofp i32 %1053 to float %1055 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %1055, 0 %1056 = call float @llvm.nvvm.fma.rn.ftz.f(float %1054, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %1057 = call float @llvm.fma.f32(float %1054, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.0278 = select i1 %.not51, float %1057, float %1056 %1058 = fadd float %t.i.i.i22.1, %.0278 %1059 = fmul float %1058, 0x3FE45F3060000000 %1060 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %1060, 0 %1061 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1059) #139 %1062 = call i32 @llvm.nvvm.f2i.rn(float %1059) #139 %.0279 = select i1 %.not52, i32 %1062, i32 %1061 %1063 = sitofp i32 %.0279 to float %1064 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %1064, 0 %1065 = call float @llvm.nvvm.fma.rn.ftz.f(float %1063, float noundef 0xBFF921FB40000000, float %1058) #139 %1066 = call float @llvm.fma.f32(float %1063, float noundef 0xBFF921FB40000000, float %1058) %.0280 = select i1 %.not53, float %1066, float %1065 %1067 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %1067, 0 %1068 = call float @llvm.nvvm.fma.rn.ftz.f(float %1063, float noundef 0xBE74442D00000000, float %.0280) #139 %1069 = call float @llvm.fma.f32(float %1063, float noundef 0xBE74442D00000000, float %.0280) %.0281 = select i1 %.not54, float %1069, float %1068 %1070 = add i32 %.0279, 1 %1071 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %1071, 0 %1072 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0281, float %.0281) #139 %1073 = fmul float %.0281, %.0281 %.0282 = select i1 %.not55, float %1073, float %1072 %1074 = and i32 %1070, 1 %.not56 = icmp eq i32 %1074, 0 %1075 = select i1 %.not56, float %.0281, float 1.000000e+00 %1076 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %1076, 0 %1077 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0282, float %1075, float noundef 0.000000e+00) #139 %1078 = call float @llvm.fma.f32(float %.0282, float %1075, float noundef 0.000000e+00) %.0284 = select i1 %.not57, float %1078, float %1077 br i1 %.not56, label %__internal_fmad.exit2.i.i.i190, label %__internal_fmad.exit1.i.i.i189 __internal_fmad.exit1.i.i.i189: ; preds = %__internal_trig_reduction_kernel.exit.i.i185 %1079 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not341 = icmp eq i32 %1079, 0 %1080 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0282, float noundef 0xBF56C0FDA0000000) #139 %1081 = call float @llvm.fma.f32(float %.0282, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0285 = select i1 %.not341, float %1081, float %1080 br label %__internal_fmad.exit2.i.i.i190 __internal_fmad.exit2.i.i.i190: ; preds = %__internal_trig_reduction_kernel.exit.i.i185, %__internal_fmad.exit1.i.i.i189 %1082 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i185 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i189 ] %1083 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i185 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i189 ] %1084 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i185 ], [ %.0285, %__internal_fmad.exit1.i.i.i189 ] %1085 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %1085, 0 %1086 = call float @llvm.nvvm.fma.rn.ftz.f(float %1084, float %.0282, float noundef %1083) #139 %1087 = call float @llvm.fma.f32(float %1084, float %.0282, float noundef %1083) %.0286 = select i1 %.not60, float %1087, float %1086 %1088 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not62 = icmp eq i32 %1088, 0 %1089 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0286, float %.0282, float noundef %1082) #139 %1090 = call float @llvm.fma.f32(float %.0286, float %.0282, float noundef %1082) %.0287 = select i1 %.not62, float %1090, float %1089 %1091 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %1091, 0 %1092 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0287, float %.0284, float %1075) #139 %1093 = call float @llvm.fma.f32(float %.0287, float %.0284, float %1075) %.0288 = select i1 %.not63, float %1093, float %1092 %1094 = and i32 %1070, 2 %.not64 = icmp eq i32 %1094, 0 br i1 %.not64, label %__internal_cos_offset_f.exit.i194, label %__internal_fmad.exit5.i.i.i193 __internal_fmad.exit5.i.i.i193: ; preds = %__internal_fmad.exit2.i.i.i190 %1095 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not340 = icmp eq i32 %1095, 0 %1096 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0288, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %1097 = call float @llvm.fma.f32(float %.0288, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0289 = select i1 %.not340, float %1097, float %1096 br label %__internal_cos_offset_f.exit.i194 __internal_cos_offset_f.exit.i194: ; preds = %__internal_fmad.exit5.i.i.i193, %__internal_fmad.exit2.i.i.i190 %z.i.i83.i.0 = phi float [ %.0289, %__internal_fmad.exit5.i.i.i193 ], [ %.0288, %__internal_fmad.exit2.i.i.i190 ] %1098 = fmul float %972, %z.i.i83.i.0 br label %__nv_y0f.exit __nv_y0f.exit: ; preds = %__internal_fmad.exit9.i146, %__internal_fmad.exit51.i167, %__nv_isinff.exit.i173, %__internal_cos_offset_f.exit.i194, %__internal_fmad.exit33.i158, %__nv_j0f.exit.i %r.i75.4 = phi float [ %.0222, %__nv_j0f.exit.i ], [ %877, %__internal_fmad.exit9.i146 ], [ %909, %__internal_fmad.exit33.i158 ], [ %938, %__internal_fmad.exit51.i167 ], [ %1098, %__internal_cos_offset_f.exit.i194 ], [ 0.000000e+00, %__nv_isinff.exit.i173 ] %r.i75.5 = select i1 %551, float 0x7FFFFFFFE0000000, float %r.i75.4 switch i32 %n, label %2195 [ i32 0, label %__nv_fabsf.exit.i281 i32 1, label %__nv_fabsf.exit.i496 ] __nv_fabsf.exit.i281: ; preds = %__nv_y0f.exit %1099 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not199 = icmp eq i32 %1099, 0 %.0291 = select i1 %.not199, float %2, float %1 %1100 = fcmp ugt float %.0291, 0x3FDC982EC0000000 br i1 %1100, label %1384, label %__internal_fmad.exit.i282 __internal_fmad.exit.i282: ; preds = %__nv_fabsf.exit.i281 %1101 = fmul float %.0291, %.0291 %1102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not266 = icmp eq i32 %1102, 0 %1103 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E7B7CB580000000, float %1101, float noundef 0xBEE3E936C0000000) #139 %1104 = call float @llvm.fma.f32(float %1101, float noundef 0x3E7B7CB580000000, float noundef 0xBEE3E936C0000000) %.0293 = select i1 %.not266, float %1104, float %1103 %1105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not267 = icmp eq i32 %1105, 0 %1106 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0293, float %1101, float noundef 0x3F41A62000000000) #139 %1107 = call float @llvm.fma.f32(float %.0293, float %1101, float noundef 0x3F41A62000000000) %.0294 = select i1 %.not267, float %1107, float %1106 %1108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not268 = icmp eq i32 %1108, 0 %1109 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0294, float %1101, float noundef 0xBF9075B1C0000000) #139 %1110 = call float @llvm.fma.f32(float %.0294, float %1101, float noundef 0xBF9075B1C0000000) %.0295 = select i1 %.not268, float %1110, float %1109 %1111 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not269 = icmp eq i32 %1111, 0 %1112 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0295, float %1101, float noundef 0x3FC6BBCB40000000) #139 %1113 = call float @llvm.fma.f32(float %.0295, float %1101, float noundef 0x3FC6BBCB40000000) %.0296 = select i1 %.not269, float %1113, float %1112 %1114 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not270 = icmp eq i32 %1114, 0 %1115 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0296, float %1101, float noundef 0xBFB2E4D6A0000000) #139 %1116 = call float @llvm.fma.f32(float %.0296, float %1101, float noundef 0xBFB2E4D6A0000000) %.0297 = select i1 %.not270, float %1116, float %1115 %1117 = fcmp olt float %.0291, 0x3810000000000000 %1118 = fmul float %.0291, 0x4160000000000000 %.0299 = select i1 %1117, float %1118, float %.0291 %i.i.i271.0 = select i1 %1117, float -2.300000e+01, float 0.000000e+00 %1119 = bitcast float %.0299 to i32 %1120 = add i32 %1119, -1059760811 %1121 = and i32 %1120, -8388608 %1122 = sub i32 %1119, %1121 %1123 = bitcast i32 %1122 to float %1124 = sitofp i32 %1121 to float %1125 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not271 = icmp eq i32 %1125, 0 %1126 = call float @llvm.nvvm.fma.rn.ftz.f(float %1124, float noundef 0x3E80000000000000, float noundef %i.i.i271.0) #139 %1127 = call float @llvm.fma.f32(float %1124, float noundef 0x3E80000000000000, float noundef %i.i.i271.0) %.0305 = select i1 %.not271, float %1127, float %1126 %1128 = fadd float %1123, -1.000000e+00 %1129 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not272 = icmp eq i32 %1129, 0 %1130 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %1128, float noundef 0x3FC2073EC0000000) #139 %1131 = call float @llvm.fma.f32(float %1128, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.0306 = select i1 %.not272, float %1131, float %1130 %1132 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not273 = icmp eq i32 %1132, 0 %1133 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0306, float %1128, float noundef 0xBFBF19B980000000) #139 %1134 = call float @llvm.fma.f32(float %.0306, float %1128, float noundef 0xBFBF19B980000000) %.0308 = select i1 %.not273, float %1134, float %1133 %1135 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not274 = icmp eq i32 %1135, 0 %1136 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0308, float %1128, float noundef 0x3FC1E52AA0000000) #139 %1137 = call float @llvm.fma.f32(float %.0308, float %1128, float noundef 0x3FC1E52AA0000000) %.0309 = select i1 %.not274, float %1137, float %1136 %1138 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not275 = icmp eq i32 %1138, 0 %1139 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0309, float %1128, float noundef 0xBFC55B1720000000) #139 %1140 = call float @llvm.fma.f32(float %.0309, float %1128, float noundef 0xBFC55B1720000000) %.0310 = select i1 %.not275, float %1140, float %1139 %1141 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not276 = icmp eq i32 %1141, 0 %1142 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0310, float %1128, float noundef 0x3FC99DA160000000) #139 %1143 = call float @llvm.fma.f32(float %.0310, float %1128, float noundef 0x3FC99DA160000000) %.0312 = select i1 %.not276, float %1143, float %1142 %1144 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not277 = icmp eq i32 %1144, 0 %1145 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0312, float %1128, float noundef 0xBFCFFFE440000000) #139 %1146 = call float @llvm.fma.f32(float %.0312, float %1128, float noundef 0xBFCFFFE440000000) %.0313 = select i1 %.not277, float %1146, float %1145 %1147 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not278 = icmp eq i32 %1147, 0 %1148 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0313, float %1128, float noundef 0x3FD5554F00000000) #139 %1149 = call float @llvm.fma.f32(float %.0313, float %1128, float noundef 0x3FD5554F00000000) %.0314 = select i1 %.not278, float %1149, float %1148 %1150 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not279 = icmp eq i32 %1150, 0 %1151 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0314, float %1128, float noundef -5.000000e-01) #139 %1152 = call float @llvm.fma.f32(float %.0314, float %1128, float noundef -5.000000e-01) %.0304 = select i1 %.not279, float %1152, float %1151 %1153 = fmul float %1128, %.0304 %1154 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not280 = icmp eq i32 %1154, 0 %1155 = call float @llvm.nvvm.fma.rn.ftz.f(float %1153, float %1128, float %1128) #139 %1156 = call float @llvm.fma.f32(float %1153, float %1128, float %1128) %.0302 = select i1 %.not280, float %1156, float %1155 %1157 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not281 = icmp eq i32 %1157, 0 %1158 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0305, float noundef 0x3FE62E4300000000, float %.0302) #139 %1159 = call float @llvm.fma.f32(float %.0305, float noundef 0x3FE62E4300000000, float %.0302) %.0301 = select i1 %.not281, float %1159, float %1158 %1160 = icmp ugt i32 %1119, 2139095039 br i1 %1160, label %__nv_fmaf_rn.exit.i.i298, label %__internal_accurate_logf.exit.i299 __nv_fmaf_rn.exit.i.i298: ; preds = %__internal_fmad.exit.i282 %1161 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not335 = icmp eq i32 %1161, 0 %1162 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0299, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %1163 = call float @llvm.fma.f32(float %.0299, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.0300 = select i1 %.not335, float %1163, float %1162 br label %__internal_accurate_logf.exit.i299 __internal_accurate_logf.exit.i299: ; preds = %__nv_fmaf_rn.exit.i.i298, %__internal_fmad.exit.i282 %r.i.i270.0 = phi float [ %.0300, %__nv_fmaf_rn.exit.i.i298 ], [ %.0301, %__internal_fmad.exit.i282 ] %1164 = fcmp oeq float %.0299, 0.000000e+00 %r.i.i270.0.op = fmul float %r.i.i270.0, 0x3FE45F3060000000 %1165 = select i1 %1164, float 0xFFF0000000000000, float %r.i.i270.0.op %1166 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not282 = icmp eq i32 %1166, 0 %1167 = call float @llvm.nvvm.fabs.ftz.f(float %.0291) #139 %1168 = call float @llvm.fabs.f32(float %.0291) %.0317 = select i1 %.not282, float %1168, float %1167 %1169 = fcmp ugt float %.0317, 8.000000e+00 br i1 %1169, label %__nv_isinff.exit.i.i314, label %__internal_fmad.exit.i.i301 __internal_fmad.exit.i.i301: ; preds = %__internal_accurate_logf.exit.i299 %1170 = fadd float %.0317, 0xC0033D1520000000 %1171 = fadd float %1170, 0xBE7D2E3660000000 %1172 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not322 = icmp eq i32 %1172, 0 %1173 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %1171, float noundef 0xBD35953660000000) #139 %1174 = call float @llvm.fma.f32(float %1171, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.0318 = select i1 %.not322, float %1174, float %1173 %1175 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not323 = icmp eq i32 %1175, 0 %1176 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0318, float %1171, float noundef 0x3D87E1C300000000) #139 %1177 = call float @llvm.fma.f32(float %.0318, float %1171, float noundef 0x3D87E1C300000000) %.0319 = select i1 %.not323, float %1177, float %1176 %1178 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not324 = icmp eq i32 %1178, 0 %1179 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0319, float %1171, float noundef 0xBD9A82F020000000) #139 %1180 = call float @llvm.fma.f32(float %.0319, float %1171, float noundef 0xBD9A82F020000000) %.0321 = select i1 %.not324, float %1180, float %1179 %1181 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not325 = icmp eq i32 %1181, 0 %1182 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0321, float %1171, float noundef 0xBDFD21E700000000) #139 %1183 = call float @llvm.fma.f32(float %.0321, float %1171, float noundef 0xBDFD21E700000000) %.0322 = select i1 %.not325, float %1183, float %1182 %1184 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not326 = icmp eq i32 %1184, 0 %1185 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0322, float %1171, float noundef 0x3E04060B60000000) #139 %1186 = call float @llvm.fma.f32(float %.0322, float %1171, float noundef 0x3E04060B60000000) %.0323 = select i1 %.not326, float %1186, float %1185 %1187 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not327 = icmp eq i32 %1187, 0 %1188 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0323, float %1171, float noundef 0x3E6F2E2860000000) #139 %1189 = call float @llvm.fma.f32(float %.0323, float %1171, float noundef 0x3E6F2E2860000000) %.0325 = select i1 %.not327, float %1189, float %1188 %1190 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not328 = icmp eq i32 %1190, 0 %1191 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0325, float %1171, float noundef 0x3E1EEDF0A0000000) #139 %1192 = call float @llvm.fma.f32(float %.0325, float %1171, float noundef 0x3E1EEDF0A0000000) %.0326 = select i1 %.not328, float %1192, float %1191 %1193 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not329 = icmp eq i32 %1193, 0 %1194 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0326, float %1171, float noundef 0xBED6DBF8C0000000) #139 %1195 = call float @llvm.fma.f32(float %.0326, float %1171, float noundef 0xBED6DBF8C0000000) %.0327 = select i1 %.not329, float %1195, float %1194 %1196 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not330 = icmp eq i32 %1196, 0 %1197 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0327, float %1171, float noundef 0xBEDECCB920000000) #139 %1198 = call float @llvm.fma.f32(float %.0327, float %1171, float noundef 0xBEDECCB920000000) %.0329 = select i1 %.not330, float %1198, float %1197 %1199 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not331 = icmp eq i32 %1199, 0 %1200 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0329, float %1171, float noundef 0x3F33C5BD60000000) #139 %1201 = call float @llvm.fma.f32(float %.0329, float %1171, float noundef 0x3F33C5BD60000000) %.0330 = select i1 %.not331, float %1201, float %1200 %1202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not332 = icmp eq i32 %1202, 0 %1203 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0330, float %1171, float noundef 0x3F495C6680000000) #139 %1204 = call float @llvm.fma.f32(float %.0330, float %1171, float noundef 0x3F495C6680000000) %.0331 = select i1 %.not332, float %1204, float %1203 %1205 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not333 = icmp eq i32 %1205, 0 %1206 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0331, float %1171, float noundef 0xBF7DD54360000000) #139 %1207 = call float @llvm.fma.f32(float %.0331, float %1171, float noundef 0xBF7DD54360000000) %.0333 = select i1 %.not333, float %1207, float %1206 %1208 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not334 = icmp eq i32 %1208, 0 %1209 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0333, float %1171, float noundef 0xBF9B4EE8E0000000) #139 %1210 = call float @llvm.fma.f32(float %.0333, float %1171, float noundef 0xBF9B4EE8E0000000) %.0334 = select i1 %.not334, float %1210, float %1209 %1211 = fmul float %1171, %.0334 %1212 = fadd float %.0317, 0xC016148F60000000 %1213 = fadd float %1212, 0x3E734F46E0000000 %1214 = fmul float %1213, %1211 %1215 = fadd float %.0317, 0xC0214EB560000000 %1216 = fadd float %1215, 0xBE9999BDA0000000 %1217 = fmul float %1216, %1214 br label %__nv_j0f.exit.i345 __nv_isinff.exit.i.i314: ; preds = %__internal_accurate_logf.exit.i299 %1218 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not283 = icmp eq i32 %1218, 0 %1219 = call float @llvm.nvvm.fabs.ftz.f(float %.0317) #139 %1220 = call float @llvm.fabs.f32(float %.0317) %.0335 = select i1 %.not283, float %1220, float %1219 %1221 = fcmp oeq float %.0335, 0x7FF0000000000000 br i1 %1221, label %__nv_j0f.exit.i345, label %__internal_fmad.exit13.i.i315 __internal_fmad.exit13.i.i315: ; preds = %__nv_isinff.exit.i.i314 %1222 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0317) #141, !srcloc !73 %1223 = fmul float %1222, %1222 %1224 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not284 = icmp eq i32 %1224, 0 %1225 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %1223, float noundef 0xBFE076F840000000) #139 %1226 = call float @llvm.fma.f32(float %1223, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.0336 = select i1 %.not284, float %1226, float %1225 %1227 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not285 = icmp eq i32 %1227, 0 %1228 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0336, float %1223, float noundef 0x3FBA767E60000000) #139 %1229 = call float @llvm.fma.f32(float %.0336, float %1223, float noundef 0x3FBA767E60000000) %.0338 = select i1 %.not285, float %1229, float %1228 %1230 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not286 = icmp eq i32 %1230, 0 %1231 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0338, float %1223, float noundef 0xBFAFFFF6C0000000) #139 %1232 = call float @llvm.fma.f32(float %.0338, float %1223, float noundef 0xBFAFFFF6C0000000) %.0339 = select i1 %.not286, float %1232, float %1231 %1233 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not287 = icmp eq i32 %1233, 0 %1234 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0339, float %1223, float noundef 1.000000e+00) #139 %1235 = call float @llvm.fma.f32(float %.0339, float %1223, float noundef 1.000000e+00) %.0340 = select i1 %.not287, float %1235, float %1234 %1236 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not288 = icmp eq i32 %1236, 0 %1237 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %1223, float noundef 0xBFCA4825A0000000) #139 %1238 = call float @llvm.fma.f32(float %1223, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.0341 = select i1 %.not288, float %1238, float %1237 %1239 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not289 = icmp eq i32 %1239, 0 %1240 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0341, float %1223, float noundef 0x3FB0A9DA20000000) #139 %1241 = call float @llvm.fma.f32(float %.0341, float %1223, float noundef 0x3FB0A9DA20000000) %.0342 = select i1 %.not289, float %1241, float %1240 %1242 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not290 = icmp eq i32 %1242, 0 %1243 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0342, float %1223, float noundef 0xBFBFFFFFE0000000) #139 %1244 = call float @llvm.fma.f32(float %.0342, float %1223, float noundef 0xBFBFFFFFE0000000) %.0344 = select i1 %.not290, float %1244, float %1243 %1245 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not291 = icmp eq i32 %1245, 0 %1246 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0344, float %1222, float %.0317) #139 %1247 = call float @llvm.fma.f32(float %.0344, float %1222, float %.0317) %.0345 = select i1 %.not291, float %1247, float %1246 %1248 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not292 = icmp eq i32 %1248, 0 br i1 %.not292, label %1251, label %1249 1249: ; preds = %__internal_fmad.exit13.i.i315 %1250 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0317) #139 br label %__nv_rsqrtf.exit.i.i323 1251: ; preds = %__internal_fmad.exit13.i.i315 %1252 = call float @llvm.nvvm.rsqrt.approx.f(float %.0317) #139 br label %__nv_rsqrtf.exit.i.i323 __nv_rsqrtf.exit.i.i323: ; preds = %1251, %1249 %.0346 = phi float [ %1250, %1249 ], [ %1252, %1251 ] %1253 = fmul float %.0346, 0x3FE9884540000000 %1254 = fmul float %.0340, %1253 %1255 = fmul float %.0345, 0x3FE45F3060000000 %1256 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not293 = icmp eq i32 %1256, 0 %1257 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1255) #139 %1258 = call i32 @llvm.nvvm.f2i.rn(float %1255) #139 %.0347 = select i1 %.not293, i32 %1258, i32 %1257 %1259 = sitofp i32 %.0347 to float %1260 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not294 = icmp eq i32 %1260, 0 %1261 = call float @llvm.nvvm.fma.rn.ftz.f(float %1259, float noundef 0xBFF921FB40000000, float %.0345) #139 %1262 = call float @llvm.fma.f32(float %1259, float noundef 0xBFF921FB40000000, float %.0345) %.0348 = select i1 %.not294, float %1262, float %1261 %1263 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not295 = icmp eq i32 %1263, 0 %1264 = call float @llvm.nvvm.fma.rn.ftz.f(float %1259, float noundef 0xBE74442D00000000, float %.0348) #139 %1265 = call float @llvm.fma.f32(float %1259, float noundef 0xBE74442D00000000, float %.0348) %.0349 = select i1 %.not295, float %1265, float %1264 %1266 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not296 = icmp eq i32 %1266, 0 %1267 = call float @llvm.nvvm.fma.rn.ftz.f(float %1259, float noundef 0xBCF84698A0000000, float %.0349) #139 %1268 = call float @llvm.fma.f32(float %1259, float noundef 0xBCF84698A0000000, float %.0349) %.0351 = select i1 %.not296, float %1268, float %1267 %1269 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not297 = icmp eq i32 %1269, 0 %1270 = call float @llvm.nvvm.fabs.ftz.f(float %.0345) #139 %1271 = call float @llvm.fabs.f32(float %.0345) %.0352 = select i1 %.not297, float %1271, float %1270 %1272 = fcmp ult float %.0352, 1.056150e+05 br i1 %1272, label %__internal_trig_reduction_kernel.exit.i.i.i332, label %__nv_isinff.exit.i.i.i.i329 __nv_isinff.exit.i.i.i.i329: ; preds = %__nv_rsqrtf.exit.i.i323 %1273 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not315 = icmp eq i32 %1273, 0 %.0353 = select i1 %.not315, float %1271, float %1270 %1274 = fcmp oeq float %.0353, 0x7FF0000000000000 br i1 %1274, label %__nv_fmul_rn.exit.i.i.i.i330, label %1278 __nv_fmul_rn.exit.i.i.i.i330: ; preds = %__nv_isinff.exit.i.i.i.i329 %1275 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not321 = icmp eq i32 %1275, 0 %1276 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0345, float noundef 0.000000e+00) #139 %1277 = fmul float %.0345, 0.000000e+00 %.0354 = select i1 %.not321, float %1277, float %1276 br label %__internal_trig_reduction_kernel.exit.i.i.i332 1278: ; preds = %__nv_isinff.exit.i.i.i.i329 %1279 = bitcast float %.0345 to i32 %1280 = lshr i32 %1279, 23 %1281 = and i32 %1280, 255 %1282 = add nsw i32 %1281, -128 %1283 = shl i32 %1279, 8 %1284 = or i32 %1283, -2147483648 %1285 = lshr i32 %1282, 5 br label %1286 1286: ; preds = %1278, %1286 %iq.i.i.i.i.i240.0559 = phi i32 [ 0, %1278 ], [ %1294, %1286 ] %hi.i.i.i.i.i235.0558 = phi i32 [ 0, %1278 ], [ %1292, %1286 ] %1287 = zext i32 %iq.i.i.i.i.i240.0559 to i64 %1288 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %1287 %1289 = load i32, i32 addrspace(1)* %1288, align 4 %1290 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %1289, i32 %1284, i32 %hi.i.i.i.i.i235.0558) #141, !srcloc !67 %1291 = extractvalue { i32, i32 } %1290, 0 %1292 = extractvalue { i32, i32 } %1290, 1 %1293 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1287 store i32 %1291, i32* %1293, align 4, !noalias !68 %1294 = add nuw nsw i32 %iq.i.i.i.i.i240.0559, 1 %exitcond595.not = icmp eq i32 %1294, 6 br i1 %exitcond595.not, label %1295, label %1286, !llvm.loop !71 1295: ; preds = %1286 %1296 = and i32 %1279, -2147483648 %1297 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %1292, i32* %1297, align 4, !noalias !68 %1298 = and i32 %1280, 31 %1299 = sub nsw i32 6, %1285 %1300 = sext i32 %1299 to i64 %1301 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1300 %1302 = load i32, i32* %1301, align 4 %1303 = sub nsw i32 5, %1285 %1304 = sext i32 %1303 to i64 %1305 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1304 %1306 = load i32, i32* %1305, align 4 %.not316 = icmp eq i32 %1298, 0 br i1 %.not316, label %__internal_trig_reduction_slowpath.exit.i.i.i.i331, label %1307 1307: ; preds = %1295 %1308 = sub nsw i32 4, %1285 %1309 = sub nuw nsw i32 32, %1298 %1310 = shl i32 %1302, %1298 %1311 = lshr i32 %1306, %1309 %1312 = add i32 %1311, %1310 %1313 = shl i32 %1306, %1298 %1314 = sext i32 %1308 to i64 %1315 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1314 %1316 = load i32, i32* %1315, align 4 %1317 = lshr i32 %1316, %1309 %1318 = add i32 %1317, %1313 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i331 __internal_trig_reduction_slowpath.exit.i.i.i.i331: ; preds = %1307, %1295 %hi.i.i.i.i.i235.1 = phi i32 [ %1312, %1307 ], [ %1302, %1295 ] %lo.i.i.i.i.i236.0 = phi i32 [ %1318, %1307 ], [ %1306, %1295 ] %1319 = lshr i32 %hi.i.i.i.i.i235.1, 30 %1320 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i235.1, i32 %lo.i.i.i.i.i236.0, i32 noundef 2) %1321 = shl i32 %lo.i.i.i.i.i236.0, 2 %1322 = lshr i32 %1320, 31 %1323 = add nuw nsw i32 %1322, %1319 %.not317 = icmp eq i32 %1296, 0 %1324 = sub nsw i32 0, %1323 %spec.select4 = select i1 %.not317, i32 %1323, i32 %1324 %.not318 = icmp sgt i32 %1320, -1 %1325 = xor i32 %1296, -2147483648 %s.i.i.i.i.i233.0 = select i1 %.not318, i32 %1296, i32 %1325 %not..not318 = xor i1 %.not318, true %1326 = sext i1 %not..not318 to i32 %hi.i.i.i.i.i235.2 = xor i32 %1320, %1326 %lo.i.i.i.i.i236.1 = xor i32 %1321, %1326 %1327 = zext i32 %hi.i.i.i.i.i235.2 to i64 %1328 = shl nuw i64 %1327, 32 %1329 = zext i32 %lo.i.i.i.i.i236.1 to i64 %1330 = or i64 %1328, %1329 %1331 = sitofp i64 %1330 to double %1332 = fmul double %1331, 0x3BF921FB54442D19 %1333 = fptrunc double %1332 to float %.not320 = icmp eq i32 %s.i.i.i.i.i233.0, 0 %1334 = fneg float %1333 %r.i.i.i.i.i244.0 = select i1 %.not320, float %1333, float %1334 br label %__internal_trig_reduction_kernel.exit.i.i.i332 __internal_trig_reduction_kernel.exit.i.i.i332: ; preds = %__nv_fmul_rn.exit.i.i.i.i330, %__internal_trig_reduction_slowpath.exit.i.i.i.i331, %__nv_rsqrtf.exit.i.i323 %i.i.i.i250.1 = phi i32 [ %.0347, %__nv_rsqrtf.exit.i.i323 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i330 ], [ %spec.select4, %__internal_trig_reduction_slowpath.exit.i.i.i.i331 ] %t.i.i.i.i247.1 = phi float [ %.0351, %__nv_rsqrtf.exit.i.i323 ], [ %.0354, %__nv_fmul_rn.exit.i.i.i.i330 ], [ %r.i.i.i.i.i244.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i331 ] %1335 = and i32 %i.i.i.i250.1, 3 %1336 = uitofp i32 %1335 to float %1337 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not298 = icmp eq i32 %1337, 0 %1338 = call float @llvm.nvvm.fma.rn.ftz.f(float %1336, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %1339 = call float @llvm.fma.f32(float %1336, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.0356 = select i1 %.not298, float %1339, float %1338 %1340 = fadd float %t.i.i.i.i247.1, %.0356 %1341 = fmul float %1340, 0x3FE45F3060000000 %1342 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not299 = icmp eq i32 %1342, 0 %1343 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1341) #139 %1344 = call i32 @llvm.nvvm.f2i.rn(float %1341) #139 %.0357 = select i1 %.not299, i32 %1344, i32 %1343 %1345 = sitofp i32 %.0357 to float %1346 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not300 = icmp eq i32 %1346, 0 %1347 = call float @llvm.nvvm.fma.rn.ftz.f(float %1345, float noundef 0xBFF921FB40000000, float %1340) #139 %1348 = call float @llvm.fma.f32(float %1345, float noundef 0xBFF921FB40000000, float %1340) %.0358 = select i1 %.not300, float %1348, float %1347 %1349 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not301 = icmp eq i32 %1349, 0 %1350 = call float @llvm.nvvm.fma.rn.ftz.f(float %1345, float noundef 0xBE74442D00000000, float %.0358) #139 %1351 = call float @llvm.fma.f32(float %1345, float noundef 0xBE74442D00000000, float %.0358) %.0359 = select i1 %.not301, float %1351, float %1350 %1352 = add i32 %.0357, 1 %1353 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not302 = icmp eq i32 %1353, 0 %1354 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0359, float %.0359) #139 %1355 = fmul float %.0359, %.0359 %.0361 = select i1 %.not302, float %1355, float %1354 %1356 = and i32 %1352, 1 %.not303 = icmp eq i32 %1356, 0 %1357 = select i1 %.not303, float %.0359, float 1.000000e+00 %1358 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not304 = icmp eq i32 %1358, 0 %1359 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0361, float %1357, float noundef 0.000000e+00) #139 %1360 = call float @llvm.fma.f32(float %.0361, float %1357, float noundef 0.000000e+00) %.0362 = select i1 %.not304, float %1360, float %1359 br i1 %.not303, label %__internal_fmad.exit2.i.i.i.i340, label %__internal_fmad.exit1.i.i.i.i339 __internal_fmad.exit1.i.i.i.i339: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i332 %1361 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not314 = icmp eq i32 %1361, 0 %1362 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0361, float noundef 0xBF56C0FDA0000000) #139 %1363 = call float @llvm.fma.f32(float %.0361, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0363 = select i1 %.not314, float %1363, float %1362 br label %__internal_fmad.exit2.i.i.i.i340 __internal_fmad.exit2.i.i.i.i340: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i332, %__internal_fmad.exit1.i.i.i.i339 %1364 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i.i332 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i.i339 ] %1365 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i.i332 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i.i339 ] %1366 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i.i332 ], [ %.0363, %__internal_fmad.exit1.i.i.i.i339 ] %1367 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not307 = icmp eq i32 %1367, 0 %1368 = call float @llvm.nvvm.fma.rn.ftz.f(float %1366, float %.0361, float noundef %1365) #139 %1369 = call float @llvm.fma.f32(float %1366, float %.0361, float noundef %1365) %.0364 = select i1 %.not307, float %1369, float %1368 %1370 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not309 = icmp eq i32 %1370, 0 %1371 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0364, float %.0361, float noundef %1364) #139 %1372 = call float @llvm.fma.f32(float %.0364, float %.0361, float noundef %1364) %.0365 = select i1 %.not309, float %1372, float %1371 %1373 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not310 = icmp eq i32 %1373, 0 %1374 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0365, float %.0362, float %1357) #139 %1375 = call float @llvm.fma.f32(float %.0365, float %.0362, float %1357) %.0367 = select i1 %.not310, float %1375, float %1374 %1376 = and i32 %1352, 2 %.not311 = icmp eq i32 %1376, 0 br i1 %.not311, label %__internal_cos_offset_f.exit.i.i344, label %__internal_fmad.exit5.i.i.i.i343 __internal_fmad.exit5.i.i.i.i343: ; preds = %__internal_fmad.exit2.i.i.i.i340 %1377 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not313 = icmp eq i32 %1377, 0 %1378 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0367, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %1379 = call float @llvm.fma.f32(float %.0367, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0368 = select i1 %.not313, float %1379, float %1378 br label %__internal_cos_offset_f.exit.i.i344 __internal_cos_offset_f.exit.i.i344: ; preds = %__internal_fmad.exit5.i.i.i.i343, %__internal_fmad.exit2.i.i.i.i340 %z.i.i.i.i226.0 = phi float [ %.0368, %__internal_fmad.exit5.i.i.i.i343 ], [ %.0367, %__internal_fmad.exit2.i.i.i.i340 ] %1380 = fmul float %1254, %z.i.i.i.i226.0 br label %__nv_j0f.exit.i345 __nv_j0f.exit.i345: ; preds = %__internal_cos_offset_f.exit.i.i344, %__nv_isinff.exit.i.i314, %__internal_fmad.exit.i.i301 %r.i5.i256.1 = phi float [ %1217, %__internal_fmad.exit.i.i301 ], [ %1380, %__internal_cos_offset_f.exit.i.i344 ], [ 0.000000e+00, %__nv_isinff.exit.i.i314 ] %1381 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not312 = icmp eq i32 %1381, 0 %1382 = call float @llvm.nvvm.fma.rn.ftz.f(float %1165, float %r.i5.i256.1, float %.0297) #139 %1383 = call float @llvm.fma.f32(float %1165, float %r.i5.i256.1, float %.0297) %.0369 = select i1 %.not312, float %1383, float %1382 br label %__nv_y0f.exit406 1384: ; preds = %__nv_fabsf.exit.i281 %1385 = fcmp ugt float %.0291, 0x3FFECF5F00000000 br i1 %1385, label %1425, label %__internal_fmad.exit9.i347 __internal_fmad.exit9.i347: ; preds = %1384 %1386 = fadd float %.0291, 0xBFEC982EC0000000 %1387 = fadd float %1386, 0x3E4CAFA060000000 %1388 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not254 = icmp eq i32 %1388, 0 %1389 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F9BB91660000000, float %1387, float noundef 0xBFC04AE980000000) #139 %1390 = call float @llvm.fma.f32(float %1387, float noundef 0x3F9BB91660000000, float noundef 0xBFC04AE980000000) %.0370 = select i1 %.not254, float %1390, float %1389 %1391 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not255 = icmp eq i32 %1391, 0 %1392 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0370, float %1387, float noundef 0x3FCFE59920000000) #139 %1393 = call float @llvm.fma.f32(float %.0370, float %1387, float noundef 0x3FCFE59920000000) %.0371 = select i1 %.not255, float %1393, float %1392 %1394 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not256 = icmp eq i32 %1394, 0 %1395 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0371, float %1387, float noundef 0xBFD17E5360000000) #139 %1396 = call float @llvm.fma.f32(float %.0371, float %1387, float noundef 0xBFD17E5360000000) %.0372 = select i1 %.not256, float %1396, float %1395 %1397 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not257 = icmp eq i32 %1397, 0 %1398 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0372, float %1387, float noundef 0x3FCB79D260000000) #139 %1399 = call float @llvm.fma.f32(float %.0372, float %1387, float noundef 0x3FCB79D260000000) %.0374 = select i1 %.not257, float %1399, float %1398 %1400 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not258 = icmp eq i32 %1400, 0 %1401 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0374, float %1387, float noundef 0xBFC7189FE0000000) #139 %1402 = call float @llvm.fma.f32(float %.0374, float %1387, float noundef 0xBFC7189FE0000000) %.0375 = select i1 %.not258, float %1402, float %1401 %1403 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not259 = icmp eq i32 %1403, 0 %1404 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0375, float %1387, float noundef 0x3FC84EE9A0000000) #139 %1405 = call float @llvm.fma.f32(float %.0375, float %1387, float noundef 0x3FC84EE9A0000000) %.0376 = select i1 %.not259, float %1405, float %1404 %1406 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not260 = icmp eq i32 %1406, 0 %1407 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0376, float %1387, float noundef 0xBFCA4B9640000000) #139 %1408 = call float @llvm.fma.f32(float %.0376, float %1387, float noundef 0xBFCA4B9640000000) %.0377 = select i1 %.not260, float %1408, float %1407 %1409 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not261 = icmp eq i32 %1409, 0 %1410 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0377, float %1387, float noundef 0x3FCC1E87A0000000) #139 %1411 = call float @llvm.fma.f32(float %.0377, float %1387, float noundef 0x3FCC1E87A0000000) %.0378 = select i1 %.not261, float %1411, float %1410 %1412 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not262 = icmp eq i32 %1412, 0 %1413 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0378, float %1387, float noundef 0xBFCCF228A0000000) #139 %1414 = call float @llvm.fma.f32(float %.0378, float %1387, float noundef 0xBFCCF228A0000000) %.0379 = select i1 %.not262, float %1414, float %1413 %1415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not263 = icmp eq i32 %1415, 0 %1416 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0379, float %1387, float noundef 0x3FCC3A4940000000) #139 %1417 = call float @llvm.fma.f32(float %.0379, float %1387, float noundef 0x3FCC3A4940000000) %.0381 = select i1 %.not263, float %1417, float %1416 %1418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not264 = icmp eq i32 %1418, 0 %1419 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0381, float %1387, float noundef 0xBFDF7E35A0000000) #139 %1420 = call float @llvm.fma.f32(float %.0381, float %1387, float noundef 0xBFDF7E35A0000000) %.0382 = select i1 %.not264, float %1420, float %1419 %1421 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not265 = icmp eq i32 %1421, 0 %1422 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0382, float %1387, float noundef 0x3FEC243760000000) #139 %1423 = call float @llvm.fma.f32(float %.0382, float %1387, float noundef 0x3FEC243760000000) %.0383 = select i1 %.not265, float %1423, float %1422 %1424 = fmul float %1387, %.0383 br label %__nv_y0f.exit406 1425: ; preds = %1384 %1426 = fcmp ugt float %.0291, 0x40161663C0000000 br i1 %1426, label %1457, label %__internal_fmad.exit33.i359 __internal_fmad.exit33.i359: ; preds = %1425 %1427 = fadd float %.0291, 0xC00FA95340000000 %1428 = fadd float %1427, 0xBE7B30AD40000000 %1429 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not245 = icmp eq i32 %1429, 0 %1430 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBE893BA7E0000000, float %1428, float noundef 0xBE8BC4C0E0000000) #139 %1431 = call float @llvm.fma.f32(float %1428, float noundef 0xBE893BA7E0000000, float noundef 0xBE8BC4C0E0000000) %.0384 = select i1 %.not245, float %1431, float %1430 %1432 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not246 = icmp eq i32 %1432, 0 %1433 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0384, float %1428, float noundef 0xBED0AE0C80000000) #139 %1434 = call float @llvm.fma.f32(float %.0384, float %1428, float noundef 0xBED0AE0C80000000) %.0385 = select i1 %.not246, float %1434, float %1433 %1435 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not247 = icmp eq i32 %1435, 0 %1436 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0385, float %1428, float noundef 0x3F0AA8C200000000) #139 %1437 = call float @llvm.fma.f32(float %.0385, float %1428, float noundef 0x3F0AA8C200000000) %.0386 = select i1 %.not247, float %1437, float %1436 %1438 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not248 = icmp eq i32 %1438, 0 %1439 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0386, float %1428, float noundef 0x3F2959DAE0000000) #139 %1440 = call float @llvm.fma.f32(float %.0386, float %1428, float noundef 0x3F2959DAE0000000) %.0388 = select i1 %.not248, float %1440, float %1439 %1441 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not249 = icmp eq i32 %1441, 0 %1442 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0388, float %1428, float noundef 0xBF61E34180000000) #139 %1443 = call float @llvm.fma.f32(float %.0388, float %1428, float noundef 0xBF61E34180000000) %.0389 = select i1 %.not249, float %1443, float %1442 %1444 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not250 = icmp eq i32 %1444, 0 %1445 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0389, float %1428, float noundef 0xBF7C0FE5C0000000) #139 %1446 = call float @llvm.fma.f32(float %.0389, float %1428, float noundef 0xBF7C0FE5C0000000) %.0390 = select i1 %.not250, float %1446, float %1445 %1447 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not251 = icmp eq i32 %1447, 0 %1448 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0390, float %1428, float noundef 0x3FADF6D6A0000000) #139 %1449 = call float @llvm.fma.f32(float %.0390, float %1428, float noundef 0x3FADF6D6A0000000) %.0391 = select i1 %.not251, float %1449, float %1448 %1450 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not252 = icmp eq i32 %1450, 0 %1451 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0391, float %1428, float noundef 0x3FAA09BE20000000) #139 %1452 = call float @llvm.fma.f32(float %.0391, float %1428, float noundef 0x3FAA09BE20000000) %.0392 = select i1 %.not252, float %1452, float %1451 %1453 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not253 = icmp eq i32 %1453, 0 %1454 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0392, float %1428, float noundef 0xBFD9C34260000000) #139 %1455 = call float @llvm.fma.f32(float %.0392, float %1428, float noundef 0xBFD9C34260000000) %.0393 = select i1 %.not253, float %1455, float %1454 %1456 = fmul float %1428, %.0393 br label %__nv_y0f.exit406 1457: ; preds = %1425 %1458 = fcmp ugt float %.0291, 0x40214EF300000000 br i1 %1458, label %__nv_isinff.exit.i376, label %__internal_fmad.exit51.i368 __internal_fmad.exit51.i368: ; preds = %1457 %1459 = fadd float %.0291, 0xC01C581DC0000000 %1460 = fadd float %1459, 0xBE739C8400000000 %1461 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not237 = icmp eq i32 %1461, 0 %1462 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA219D7C0000000, float %1460, float noundef 0x3EC53B4D80000000) #139 %1463 = call float @llvm.fma.f32(float %1460, float noundef 0x3EA219D7C0000000, float noundef 0x3EC53B4D80000000) %.0395 = select i1 %.not237, float %1463, float %1462 %1464 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not238 = icmp eq i32 %1464, 0 %1465 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0395, float %1460, float noundef 0xBF080A9800000000) #139 %1466 = call float @llvm.fma.f32(float %.0395, float %1460, float noundef 0xBF080A9800000000) %.0396 = select i1 %.not238, float %1466, float %1465 %1467 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not239 = icmp eq i32 %1467, 0 %1468 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0396, float %1460, float noundef 0xBF22631560000000) #139 %1469 = call float @llvm.fma.f32(float %.0396, float %1460, float noundef 0xBF22631560000000) %.0397 = select i1 %.not239, float %1469, float %1468 %1470 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not240 = icmp eq i32 %1470, 0 %1471 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0397, float %1460, float noundef 0x3F61D32420000000) #139 %1472 = call float @llvm.fma.f32(float %.0397, float %1460, float noundef 0x3F61D32420000000) %.0398 = select i1 %.not240, float %1472, float %1471 %1473 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not241 = icmp eq i32 %1473, 0 %1474 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0398, float %1460, float noundef 0x3F6B2E9AA0000000) #139 %1475 = call float @llvm.fma.f32(float %.0398, float %1460, float noundef 0x3F6B2E9AA0000000) %.0399 = select i1 %.not241, float %1475, float %1474 %1476 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not242 = icmp eq i32 %1476, 0 %1477 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0399, float %1460, float noundef 0xBFA8969AE0000000) #139 %1478 = call float @llvm.fma.f32(float %.0399, float %1460, float noundef 0xBFA8969AE0000000) %.0400 = select i1 %.not242, float %1478, float %1477 %1479 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not243 = icmp eq i32 %1479, 0 %1480 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0400, float %1460, float noundef 0xBF95AEF320000000) #139 %1481 = call float @llvm.fma.f32(float %.0400, float %1460, float noundef 0xBF95AEF320000000) %.0402 = select i1 %.not243, float %1481, float %1480 %1482 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not244 = icmp eq i32 %1482, 0 %1483 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0402, float %1460, float noundef 0x3FD334CCA0000000) #139 %1484 = call float @llvm.fma.f32(float %.0402, float %1460, float noundef 0x3FD334CCA0000000) %.0403 = select i1 %.not244, float %1484, float %1483 %1485 = fmul float %1460, %.0403 br label %__nv_y0f.exit406 __nv_isinff.exit.i376: ; preds = %1457 %1486 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not200 = icmp eq i32 %1486, 0 %1487 = call float @llvm.nvvm.fabs.ftz.f(float %.0291) #139 %1488 = call float @llvm.fabs.f32(float %.0291) %.0404 = select i1 %.not200, float %1488, float %1487 %1489 = fcmp oeq float %.0404, 0x7FF0000000000000 br i1 %1489, label %__nv_y0f.exit406, label %__internal_fmad.exit70.i377 __internal_fmad.exit70.i377: ; preds = %__nv_isinff.exit.i376 %1490 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0291) #141, !srcloc !73 %1491 = fmul float %1490, %1490 %1492 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not201 = icmp eq i32 %1492, 0 %1493 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFD98D3E60000000, float %1491, float noundef 0x3FBA1ABE00000000) #139 %1494 = call float @llvm.fma.f32(float %1491, float noundef 0xBFD98D3E60000000, float noundef 0x3FBA1ABE00000000) %.0405 = select i1 %.not201, float %1494, float %1493 %1495 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not202 = icmp eq i32 %1495, 0 %1496 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0405, float %1491, float noundef 0xBFAFFF0AA0000000) #139 %1497 = call float @llvm.fma.f32(float %.0405, float %1491, float noundef 0xBFAFFF0AA0000000) %.0406 = select i1 %.not202, float %1497, float %1496 %1498 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not203 = icmp eq i32 %1498, 0 %1499 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0406, float %1491, float noundef 1.000000e+00) #139 %1500 = call float @llvm.fma.f32(float %.0406, float %1491, float noundef 1.000000e+00) %.0407 = select i1 %.not203, float %1500, float %1499 %1501 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not204 = icmp eq i32 %1501, 0 %1502 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF199AC20000000, float %1491, float noundef 0xBFCA1A6380000000) #139 %1503 = call float @llvm.fma.f32(float %1491, float noundef 0x3FF199AC20000000, float noundef 0xBFCA1A6380000000) %.0408 = select i1 %.not204, float %1503, float %1502 %1504 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not205 = icmp eq i32 %1504, 0 %1505 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0408, float %1491, float noundef 0x3FB0A8F060000000) #139 %1506 = call float @llvm.fma.f32(float %.0408, float %1491, float noundef 0x3FB0A8F060000000) %.0409 = select i1 %.not205, float %1506, float %1505 %1507 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not206 = icmp eq i32 %1507, 0 %1508 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0409, float %1491, float noundef 0xBFBFFFFF60000000) #139 %1509 = call float @llvm.fma.f32(float %.0409, float %1491, float noundef 0xBFBFFFFF60000000) %.0411 = select i1 %.not206, float %1509, float %1508 %1510 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not207 = icmp eq i32 %1510, 0 %1511 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0411, float %1490, float %.0291) #139 %1512 = call float @llvm.fma.f32(float %.0411, float %1490, float %.0291) %.0412 = select i1 %.not207, float %1512, float %1511 %1513 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not208 = icmp eq i32 %1513, 0 br i1 %.not208, label %1516, label %1514 1514: ; preds = %__internal_fmad.exit70.i377 %1515 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0291) #139 br label %__nv_rsqrtf.exit.i384 1516: ; preds = %__internal_fmad.exit70.i377 %1517 = call float @llvm.nvvm.rsqrt.approx.f(float %.0291) #139 br label %__nv_rsqrtf.exit.i384 __nv_rsqrtf.exit.i384: ; preds = %1516, %1514 %.0413 = phi float [ %1515, %1514 ], [ %1517, %1516 ] %1518 = fmul float %.0413, 0x3FE9884540000000 %1519 = fmul float %.0407, %1518 %1520 = fmul float %.0412, 0x3FE45F3060000000 %1521 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not209 = icmp eq i32 %1521, 0 %1522 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1520) #139 %1523 = call i32 @llvm.nvvm.f2i.rn(float %1520) #139 %.0417 = select i1 %.not209, i32 %1523, i32 %1522 %1524 = sitofp i32 %.0417 to float %1525 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not210 = icmp eq i32 %1525, 0 %1526 = call float @llvm.nvvm.fma.rn.ftz.f(float %1524, float noundef 0xBFF921FB40000000, float %.0412) #139 %1527 = call float @llvm.fma.f32(float %1524, float noundef 0xBFF921FB40000000, float %.0412) %.0418 = select i1 %.not210, float %1527, float %1526 %1528 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not211 = icmp eq i32 %1528, 0 %1529 = call float @llvm.nvvm.fma.rn.ftz.f(float %1524, float noundef 0xBE74442D00000000, float %.0418) #139 %1530 = call float @llvm.fma.f32(float %1524, float noundef 0xBE74442D00000000, float %.0418) %.0419 = select i1 %.not211, float %1530, float %1529 %1531 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not212 = icmp eq i32 %1531, 0 %1532 = call float @llvm.nvvm.fma.rn.ftz.f(float %1524, float noundef 0xBCF84698A0000000, float %.0419) #139 %1533 = call float @llvm.fma.f32(float %1524, float noundef 0xBCF84698A0000000, float %.0419) %.0420 = select i1 %.not212, float %1533, float %1532 %1534 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not213 = icmp eq i32 %1534, 0 %1535 = call float @llvm.nvvm.fabs.ftz.f(float %.0412) #139 %1536 = call float @llvm.fabs.f32(float %.0412) %.0421 = select i1 %.not213, float %1536, float %1535 %1537 = fcmp ult float %.0421, 1.056150e+05 br i1 %1537, label %__internal_trig_reduction_kernel.exit.i.i393, label %__nv_isinff.exit.i.i.i390 __nv_isinff.exit.i.i.i390: ; preds = %__nv_rsqrtf.exit.i384 %1538 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not230 = icmp eq i32 %1538, 0 %.0422 = select i1 %.not230, float %1536, float %1535 %1539 = fcmp oeq float %.0422, 0x7FF0000000000000 br i1 %1539, label %__nv_fmul_rn.exit.i.i.i391, label %1543 __nv_fmul_rn.exit.i.i.i391: ; preds = %__nv_isinff.exit.i.i.i390 %1540 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not236 = icmp eq i32 %1540, 0 %1541 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0412, float noundef 0.000000e+00) #139 %1542 = fmul float %.0412, 0.000000e+00 %.0423 = select i1 %.not236, float %1542, float %1541 br label %__internal_trig_reduction_kernel.exit.i.i393 1543: ; preds = %__nv_isinff.exit.i.i.i390 %1544 = bitcast float %.0412 to i32 %1545 = lshr i32 %1544, 23 %1546 = and i32 %1545, 255 %1547 = add nsw i32 %1546, -128 %1548 = shl i32 %1544, 8 %1549 = or i32 %1548, -2147483648 %1550 = lshr i32 %1547, 5 br label %1551 1551: ; preds = %1543, %1551 %iq.i.i.i.i210.0557 = phi i32 [ 0, %1543 ], [ %1559, %1551 ] %hi.i.i.i.i205.0556 = phi i32 [ 0, %1543 ], [ %1557, %1551 ] %1552 = zext i32 %iq.i.i.i.i210.0557 to i64 %1553 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %1552 %1554 = load i32, i32 addrspace(1)* %1553, align 4 %1555 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %1554, i32 %1549, i32 %hi.i.i.i.i205.0556) #141, !srcloc !67 %1556 = extractvalue { i32, i32 } %1555, 0 %1557 = extractvalue { i32, i32 } %1555, 1 %1558 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1552 store i32 %1556, i32* %1558, align 4, !noalias !68 %1559 = add nuw nsw i32 %iq.i.i.i.i210.0557, 1 %exitcond.not = icmp eq i32 %1559, 6 br i1 %exitcond.not, label %1560, label %1551, !llvm.loop !71 1560: ; preds = %1551 %1561 = and i32 %1544, -2147483648 %1562 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %1557, i32* %1562, align 4, !noalias !68 %1563 = and i32 %1545, 31 %1564 = sub nsw i32 6, %1550 %1565 = sext i32 %1564 to i64 %1566 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1565 %1567 = load i32, i32* %1566, align 4 %1568 = sub nsw i32 5, %1550 %1569 = sext i32 %1568 to i64 %1570 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1569 %1571 = load i32, i32* %1570, align 4 %.not231 = icmp eq i32 %1563, 0 br i1 %.not231, label %__internal_trig_reduction_slowpath.exit.i.i.i392, label %1572 1572: ; preds = %1560 %1573 = sub nsw i32 4, %1550 %1574 = sub nuw nsw i32 32, %1563 %1575 = shl i32 %1567, %1563 %1576 = lshr i32 %1571, %1574 %1577 = add i32 %1576, %1575 %1578 = shl i32 %1571, %1563 %1579 = sext i32 %1573 to i64 %1580 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1579 %1581 = load i32, i32* %1580, align 4 %1582 = lshr i32 %1581, %1574 %1583 = add i32 %1582, %1578 br label %__internal_trig_reduction_slowpath.exit.i.i.i392 __internal_trig_reduction_slowpath.exit.i.i.i392: ; preds = %1572, %1560 %hi.i.i.i.i205.1 = phi i32 [ %1577, %1572 ], [ %1567, %1560 ] %lo.i.i.i.i206.0 = phi i32 [ %1583, %1572 ], [ %1571, %1560 ] %1584 = lshr i32 %hi.i.i.i.i205.1, 30 %1585 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i205.1, i32 %lo.i.i.i.i206.0, i32 noundef 2) %1586 = shl i32 %lo.i.i.i.i206.0, 2 %1587 = lshr i32 %1585, 31 %1588 = add nuw nsw i32 %1587, %1584 %.not232 = icmp eq i32 %1561, 0 %1589 = sub nsw i32 0, %1588 %spec.select5 = select i1 %.not232, i32 %1588, i32 %1589 %.not233 = icmp sgt i32 %1585, -1 %1590 = xor i32 %1561, -2147483648 %s.i.i.i.i204.0 = select i1 %.not233, i32 %1561, i32 %1590 %not..not233 = xor i1 %.not233, true %1591 = sext i1 %not..not233 to i32 %hi.i.i.i.i205.2 = xor i32 %1585, %1591 %lo.i.i.i.i206.1 = xor i32 %1586, %1591 %1592 = zext i32 %hi.i.i.i.i205.2 to i64 %1593 = shl nuw i64 %1592, 32 %1594 = zext i32 %lo.i.i.i.i206.1 to i64 %1595 = or i64 %1593, %1594 %1596 = sitofp i64 %1595 to double %1597 = fmul double %1596, 0x3BF921FB54442D19 %1598 = fptrunc double %1597 to float %.not235 = icmp eq i32 %s.i.i.i.i204.0, 0 %1599 = fneg float %1598 %r.i.i.i.i214.0 = select i1 %.not235, float %1598, float %1599 br label %__internal_trig_reduction_kernel.exit.i.i393 __internal_trig_reduction_kernel.exit.i.i393: ; preds = %__nv_fmul_rn.exit.i.i.i391, %__internal_trig_reduction_slowpath.exit.i.i.i392, %__nv_rsqrtf.exit.i384 %i.i85.i220.1 = phi i32 [ %.0417, %__nv_rsqrtf.exit.i384 ], [ 0, %__nv_fmul_rn.exit.i.i.i391 ], [ %spec.select5, %__internal_trig_reduction_slowpath.exit.i.i.i392 ] %t.i.i.i217.1 = phi float [ %.0420, %__nv_rsqrtf.exit.i384 ], [ %.0423, %__nv_fmul_rn.exit.i.i.i391 ], [ %r.i.i.i.i214.0, %__internal_trig_reduction_slowpath.exit.i.i.i392 ] %1600 = and i32 %i.i85.i220.1, 3 %1601 = uitofp i32 %1600 to float %1602 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not214 = icmp eq i32 %1602, 0 %1603 = call float @llvm.nvvm.fma.rn.ftz.f(float %1601, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %1604 = call float @llvm.fma.f32(float %1601, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.0424 = select i1 %.not214, float %1604, float %1603 %1605 = fadd float %t.i.i.i217.1, %.0424 %1606 = fmul float %1605, 0x3FE45F3060000000 %1607 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not215 = icmp eq i32 %1607, 0 %1608 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1606) #139 %1609 = call i32 @llvm.nvvm.f2i.rn(float %1606) #139 %.0425 = select i1 %.not215, i32 %1609, i32 %1608 %1610 = sitofp i32 %.0425 to float %1611 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not216 = icmp eq i32 %1611, 0 %1612 = call float @llvm.nvvm.fma.rn.ftz.f(float %1610, float noundef 0xBFF921FB40000000, float %1605) #139 %1613 = call float @llvm.fma.f32(float %1610, float noundef 0xBFF921FB40000000, float %1605) %.0426 = select i1 %.not216, float %1613, float %1612 %1614 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not217 = icmp eq i32 %1614, 0 %1615 = call float @llvm.nvvm.fma.rn.ftz.f(float %1610, float noundef 0xBE74442D00000000, float %.0426) #139 %1616 = call float @llvm.fma.f32(float %1610, float noundef 0xBE74442D00000000, float %.0426) %.0427 = select i1 %.not217, float %1616, float %1615 %1617 = add i32 %.0425, 1 %1618 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not218 = icmp eq i32 %1618, 0 %1619 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0427, float %.0427) #139 %1620 = fmul float %.0427, %.0427 %.0428 = select i1 %.not218, float %1620, float %1619 %1621 = and i32 %1617, 1 %.not219 = icmp eq i32 %1621, 0 %1622 = select i1 %.not219, float %.0427, float 1.000000e+00 %1623 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not220 = icmp eq i32 %1623, 0 %1624 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0428, float %1622, float noundef 0.000000e+00) #139 %1625 = call float @llvm.fma.f32(float %.0428, float %1622, float noundef 0.000000e+00) %.0429 = select i1 %.not220, float %1625, float %1624 br i1 %.not219, label %__internal_fmad.exit2.i.i.i401, label %__internal_fmad.exit1.i.i.i400 __internal_fmad.exit1.i.i.i400: ; preds = %__internal_trig_reduction_kernel.exit.i.i393 %1626 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not229 = icmp eq i32 %1626, 0 %1627 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0428, float noundef 0xBF56C0FDA0000000) #139 %1628 = call float @llvm.fma.f32(float %.0428, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0431 = select i1 %.not229, float %1628, float %1627 br label %__internal_fmad.exit2.i.i.i401 __internal_fmad.exit2.i.i.i401: ; preds = %__internal_trig_reduction_kernel.exit.i.i393, %__internal_fmad.exit1.i.i.i400 %1629 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i393 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i400 ] %1630 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i393 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i400 ] %1631 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i393 ], [ %.0431, %__internal_fmad.exit1.i.i.i400 ] %1632 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not223 = icmp eq i32 %1632, 0 %1633 = call float @llvm.nvvm.fma.rn.ftz.f(float %1631, float %.0428, float noundef %1630) #139 %1634 = call float @llvm.fma.f32(float %1631, float %.0428, float noundef %1630) %.0432 = select i1 %.not223, float %1634, float %1633 %1635 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not225 = icmp eq i32 %1635, 0 %1636 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0432, float %.0428, float noundef %1629) #139 %1637 = call float @llvm.fma.f32(float %.0432, float %.0428, float noundef %1629) %.0433 = select i1 %.not225, float %1637, float %1636 %1638 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not226 = icmp eq i32 %1638, 0 %1639 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0433, float %.0429, float %1622) #139 %1640 = call float @llvm.fma.f32(float %.0433, float %.0429, float %1622) %.0434 = select i1 %.not226, float %1640, float %1639 %1641 = and i32 %1617, 2 %.not227 = icmp eq i32 %1641, 0 br i1 %.not227, label %__internal_cos_offset_f.exit.i405, label %__internal_fmad.exit5.i.i.i404 __internal_fmad.exit5.i.i.i404: ; preds = %__internal_fmad.exit2.i.i.i401 %1642 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not228 = icmp eq i32 %1642, 0 %1643 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0434, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %1644 = call float @llvm.fma.f32(float %.0434, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0436 = select i1 %.not228, float %1644, float %1643 br label %__internal_cos_offset_f.exit.i405 __internal_cos_offset_f.exit.i405: ; preds = %__internal_fmad.exit5.i.i.i404, %__internal_fmad.exit2.i.i.i401 %z.i.i83.i197.0 = phi float [ %.0436, %__internal_fmad.exit5.i.i.i404 ], [ %.0434, %__internal_fmad.exit2.i.i.i401 ] %1645 = fmul float %1519, %z.i.i83.i197.0 br label %__nv_y0f.exit406 __nv_y0f.exit406: ; preds = %__internal_fmad.exit9.i347, %__internal_fmad.exit51.i368, %__nv_isinff.exit.i376, %__internal_cos_offset_f.exit.i405, %__internal_fmad.exit33.i359, %__nv_j0f.exit.i345 %r.i274.4 = phi float [ %.0369, %__nv_j0f.exit.i345 ], [ %1424, %__internal_fmad.exit9.i347 ], [ %1456, %__internal_fmad.exit33.i359 ], [ %1485, %__internal_fmad.exit51.i368 ], [ %1645, %__internal_cos_offset_f.exit.i405 ], [ 0.000000e+00, %__nv_isinff.exit.i376 ] %r.i274.5 = select i1 %551, float 0x7FFFFFFFE0000000, float %r.i274.4 br label %2229 __nv_fabsf.exit.i496: ; preds = %__nv_y0f.exit %1646 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %1646, 0 %.0439 = select i1 %.not65, float %2, float %1 %1647 = fcmp olt float %.0439, 0x3810000000000000 br i1 %1647, label %1648, label %1650 1648: ; preds = %__nv_fabsf.exit.i496 %1649 = fdiv float 0xBFE45F3060000000, %.0439 br label %__nv_y1f.exit618 1650: ; preds = %__nv_fabsf.exit.i496 %1651 = fcmp ugt float %.0439, 0x3FFB2D5880000000 br i1 %1651, label %1942, label %__internal_fmad.exit.i497 __internal_fmad.exit.i497: ; preds = %1650 %1652 = fmul float %.0439, %.0439 %1653 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not129 = icmp eq i32 %1653, 0 %1654 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E428C5980000000, float %1652, float noundef 0xBEB0A4FB40000000) #139 %1655 = call float @llvm.fma.f32(float %1652, float noundef 0x3E428C5980000000, float noundef 0xBEB0A4FB40000000) %.0441 = select i1 %.not129, float %1655, float %1654 %1656 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not130 = icmp eq i32 %1656, 0 %1657 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0441, float %1652, float noundef 0x3F12C7D2A0000000) #139 %1658 = call float @llvm.fma.f32(float %.0441, float %1652, float noundef 0x3F12C7D2A0000000) %.0442 = select i1 %.not130, float %1658, float %1657 %1659 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not131 = icmp eq i32 %1659, 0 %1660 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0442, float %1652, float noundef 0xBF6835B960000000) #139 %1661 = call float @llvm.fma.f32(float %.0442, float %1652, float noundef 0xBF6835B960000000) %.0443 = select i1 %.not131, float %1661, float %1660 %1662 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not132 = icmp eq i32 %1662, 0 %1663 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0443, float %1652, float noundef 0x3FABD39760000000) #139 %1664 = call float @llvm.fma.f32(float %.0443, float %1652, float noundef 0x3FABD39760000000) %.0445 = select i1 %.not132, float %1664, float %1663 %1665 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not133 = icmp eq i32 %1665, 0 %1666 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0445, float %1652, float noundef 0xBFC9186620000000) #139 %1667 = call float @llvm.fma.f32(float %.0445, float %1652, float noundef 0xBFC9186620000000) %.0446 = select i1 %.not133, float %1667, float %1666 %1668 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not134 = icmp eq i32 %1668, 0 %1669 = call float @llvm.nvvm.fabs.ftz.f(float %.0439) #139 %1670 = call float @llvm.fabs.f32(float %.0439) %.0448 = select i1 %.not134, float %1670, float %1669 %1671 = fcmp ugt float %.0448, 8.000000e+00 br i1 %1671, label %__nv_isinff.exit.i.i515, label %__internal_fmad.exit.i.i503 __internal_fmad.exit.i.i503: ; preds = %__internal_fmad.exit.i497 %1672 = fadd float %.0448, 0xC00EA75580000000 %1673 = fadd float %1672, 0x3E74A121E0000000 %1674 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not187 = icmp eq i32 %1674, 0 %1675 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %1673, float noundef 0x3D7037E840000000) #139 %1676 = call float @llvm.fma.f32(float %1673, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.0449 = select i1 %.not187, float %1676, float %1675 %1677 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not188 = icmp eq i32 %1677, 0 %1678 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0449, float %1673, float noundef 0xBDBC43D820000000) #139 %1679 = call float @llvm.fma.f32(float %.0449, float %1673, float noundef 0xBDBC43D820000000) %.0450 = select i1 %.not188, float %1679, float %1678 %1680 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not189 = icmp eq i32 %1680, 0 %1681 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0450, float %1673, float noundef 0xBDEBBBDFE0000000) #139 %1682 = call float @llvm.fma.f32(float %.0450, float %1673, float noundef 0xBDEBBBDFE0000000) %.0451 = select i1 %.not189, float %1682, float %1681 %1683 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not190 = icmp eq i32 %1683, 0 %1684 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0451, float %1673, float noundef 0x3E336193A0000000) #139 %1685 = call float @llvm.fma.f32(float %.0451, float %1673, float noundef 0x3E336193A0000000) %.0453 = select i1 %.not190, float %1685, float %1684 %1686 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not191 = icmp eq i32 %1686, 0 %1687 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0453, float %1673, float noundef 0x3E5D022E60000000) #139 %1688 = call float @llvm.fma.f32(float %.0453, float %1673, float noundef 0x3E5D022E60000000) %.0455 = select i1 %.not191, float %1688, float %1687 %1689 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not192 = icmp eq i32 %1689, 0 %1690 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0455, float %1673, float noundef 0xBEA1F1B900000000) #139 %1691 = call float @llvm.fma.f32(float %.0455, float %1673, float noundef 0xBEA1F1B900000000) %.0456 = select i1 %.not192, float %1691, float %1690 %1692 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not193 = icmp eq i32 %1692, 0 %1693 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0456, float %1673, float noundef 0xBEC3CCA7A0000000) #139 %1694 = call float @llvm.fma.f32(float %.0456, float %1673, float noundef 0xBEC3CCA7A0000000) %.0457 = select i1 %.not193, float %1694, float %1693 %1695 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not194 = icmp eq i32 %1695, 0 %1696 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0457, float %1673, float noundef 0x3F059B38A0000000) #139 %1697 = call float @llvm.fma.f32(float %.0457, float %1673, float noundef 0x3F059B38A0000000) %.0458 = select i1 %.not194, float %1697, float %1696 %1698 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not195 = icmp eq i32 %1698, 0 %1699 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0458, float %1673, float noundef 0x3F1F3D6200000000) #139 %1700 = call float @llvm.fma.f32(float %.0458, float %1673, float noundef 0x3F1F3D6200000000) %.0459 = select i1 %.not195, float %1700, float %1699 %1701 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not196 = icmp eq i32 %1701, 0 %1702 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0459, float %1673, float noundef 0xBF5D9D7380000000) #139 %1703 = call float @llvm.fma.f32(float %.0459, float %1673, float noundef 0xBF5D9D7380000000) %.0460 = select i1 %.not196, float %1703, float %1702 %1704 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not197 = icmp eq i32 %1704, 0 %1705 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0460, float %1673, float noundef 0xBF64EDFFA0000000) #139 %1706 = call float @llvm.fma.f32(float %.0460, float %1673, float noundef 0xBF64EDFFA0000000) %.0462 = select i1 %.not197, float %1706, float %1705 %1707 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not198 = icmp eq i32 %1707, 0 %1708 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0462, float %1673, float noundef 0x3FA0E73260000000) #139 %1709 = call float @llvm.fma.f32(float %.0462, float %1673, float noundef 0x3FA0E73260000000) %.0463 = select i1 %.not198, float %1709, float %1708 %1710 = fadd float %.0448, 0xC01C0FF600000000 %1711 = fadd float %1710, 0x3E88971B60000000 %1712 = fmul float %1711, %.0463 %1713 = fmul float %1673, %1712 %1714 = fmul float %.0448, %1713 br label %1878 __nv_isinff.exit.i.i515: ; preds = %__internal_fmad.exit.i497 %1715 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not135 = icmp eq i32 %1715, 0 %1716 = call float @llvm.nvvm.fabs.ftz.f(float %.0448) #139 %1717 = call float @llvm.fabs.f32(float %.0448) %.0464 = select i1 %.not135, float %1717, float %1716 %1718 = fcmp oeq float %.0464, 0x7FF0000000000000 br i1 %1718, label %1878, label %__internal_fmad.exit12.i.i516 __internal_fmad.exit12.i.i516: ; preds = %__nv_isinff.exit.i.i515 %1719 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0448) #141, !srcloc !73 %1720 = fmul float %1719, %1719 %1721 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not136 = icmp eq i32 %1721, 0 %1722 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %1720, float noundef 0x3FE7FEFD20000000) #139 %1723 = call float @llvm.fma.f32(float %1720, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.0465 = select i1 %.not136, float %1723, float %1722 %1724 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not137 = icmp eq i32 %1724, 0 %1725 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0465, float %1720, float noundef 0xBFC8B175C0000000) #139 %1726 = call float @llvm.fma.f32(float %.0465, float %1720, float noundef 0xBFC8B175C0000000) %.0466 = select i1 %.not137, float %1726, float %1725 %1727 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not138 = icmp eq i32 %1727, 0 %1728 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0466, float %1720, float noundef 0x3FC7FFF160000000) #139 %1729 = call float @llvm.fma.f32(float %.0466, float %1720, float noundef 0x3FC7FFF160000000) %.0467 = select i1 %.not138, float %1729, float %1728 %1730 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not139 = icmp eq i32 %1730, 0 %1731 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0467, float %1720, float noundef 1.000000e+00) #139 %1732 = call float @llvm.fma.f32(float %.0467, float %1720, float noundef 1.000000e+00) %.0469 = select i1 %.not139, float %1732, float %1731 %1733 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not140 = icmp eq i32 %1733, 0 %1734 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %1720, float noundef 0x3FD72295A0000000) #139 %1735 = call float @llvm.fma.f32(float %1720, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.0470 = select i1 %.not140, float %1735, float %1734 %1736 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not141 = icmp eq i32 %1736, 0 %1737 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0470, float %1720, float noundef 0xBFC4FE5D80000000) #139 %1738 = call float @llvm.fma.f32(float %.0470, float %1720, float noundef 0xBFC4FE5D80000000) %.0468 = select i1 %.not141, float %1738, float %1737 %1739 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not142 = icmp eq i32 %1739, 0 %1740 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0468, float %1720, float noundef 0x3FD7FFFFA0000000) #139 %1741 = call float @llvm.fma.f32(float %.0468, float %1720, float noundef 0x3FD7FFFFA0000000) %.0461 = select i1 %.not142, float %1741, float %1740 %1742 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not143 = icmp eq i32 %1742, 0 %1743 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0461, float %1719, float %.0448) #139 %1744 = call float @llvm.fma.f32(float %.0461, float %1719, float %.0448) %.0454 = select i1 %.not143, float %1744, float %1743 %1745 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not144 = icmp eq i32 %1745, 0 br i1 %.not144, label %1748, label %1746 1746: ; preds = %__internal_fmad.exit12.i.i516 %1747 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0448) #139 br label %__nv_rsqrtf.exit.i.i524 1748: ; preds = %__internal_fmad.exit12.i.i516 %1749 = call float @llvm.nvvm.rsqrt.approx.f(float %.0448) #139 br label %__nv_rsqrtf.exit.i.i524 __nv_rsqrtf.exit.i.i524: ; preds = %1748, %1746 %.0452 = phi float [ %1747, %1746 ], [ %1749, %1748 ] %1750 = fmul float %.0452, 0x3FE9884540000000 %1751 = fmul float %.0469, %1750 %1752 = fmul float %.0454, 0x3FE45F3060000000 %1753 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not145 = icmp eq i32 %1753, 0 %1754 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1752) #139 %1755 = call i32 @llvm.nvvm.f2i.rn(float %1752) #139 %.0447 = select i1 %.not145, i32 %1755, i32 %1754 %1756 = sitofp i32 %.0447 to float %1757 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not146 = icmp eq i32 %1757, 0 %1758 = call float @llvm.nvvm.fma.rn.ftz.f(float %1756, float noundef 0xBFF921FB40000000, float %.0454) #139 %1759 = call float @llvm.fma.f32(float %1756, float noundef 0xBFF921FB40000000, float %.0454) %.0444 = select i1 %.not146, float %1759, float %1758 %1760 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not147 = icmp eq i32 %1760, 0 %1761 = call float @llvm.nvvm.fma.rn.ftz.f(float %1756, float noundef 0xBE74442D00000000, float %.0444) #139 %1762 = call float @llvm.fma.f32(float %1756, float noundef 0xBE74442D00000000, float %.0444) %.0440 = select i1 %.not147, float %1762, float %1761 %1763 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not148 = icmp eq i32 %1763, 0 %1764 = call float @llvm.nvvm.fma.rn.ftz.f(float %1756, float noundef 0xBCF84698A0000000, float %.0440) #139 %1765 = call float @llvm.fma.f32(float %1756, float noundef 0xBCF84698A0000000, float %.0440) %.0438 = select i1 %.not148, float %1765, float %1764 %1766 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not149 = icmp eq i32 %1766, 0 %1767 = call float @llvm.nvvm.fabs.ftz.f(float %.0454) #139 %1768 = call float @llvm.fabs.f32(float %.0454) %.0437 = select i1 %.not149, float %1768, float %1767 %1769 = fcmp ult float %.0437, 1.056150e+05 br i1 %1769, label %__internal_trig_reduction_kernel.exit.i.i.i533, label %__nv_isinff.exit.i.i.i.i530 __nv_isinff.exit.i.i.i.i530: ; preds = %__nv_rsqrtf.exit.i.i524 %1770 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not180 = icmp eq i32 %1770, 0 %.0435 = select i1 %.not180, float %1768, float %1767 %1771 = fcmp oeq float %.0435, 0x7FF0000000000000 br i1 %1771, label %__nv_fmul_rn.exit.i.i.i.i531, label %1775 __nv_fmul_rn.exit.i.i.i.i531: ; preds = %__nv_isinff.exit.i.i.i.i530 %1772 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not186 = icmp eq i32 %1772, 0 %1773 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0454, float noundef 0.000000e+00) #139 %1774 = fmul float %.0454, 0.000000e+00 %.0430 = select i1 %.not186, float %1774, float %1773 br label %__internal_trig_reduction_kernel.exit.i.i.i533 1775: ; preds = %__nv_isinff.exit.i.i.i.i530 %1776 = bitcast float %.0454 to i32 %1777 = lshr i32 %1776, 23 %1778 = and i32 %1777, 255 %1779 = add nsw i32 %1778, -128 %1780 = shl i32 %1776, 8 %1781 = or i32 %1780, -2147483648 %1782 = lshr i32 %1779, 5 br label %1783 1783: ; preds = %1775, %1783 %hi.i.i.i.i.i461.0563 = phi i32 [ 0, %1775 ], [ %1789, %1783 ] %iq.i.i.i.i.i466.0562 = phi i32 [ 0, %1775 ], [ %1791, %1783 ] %1784 = zext i32 %iq.i.i.i.i.i466.0562 to i64 %1785 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %1784 %1786 = load i32, i32 addrspace(1)* %1785, align 4 %1787 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %1786, i32 %1781, i32 %hi.i.i.i.i.i461.0563) #141, !srcloc !67 %1788 = extractvalue { i32, i32 } %1787, 0 %1789 = extractvalue { i32, i32 } %1787, 1 %1790 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1784 store i32 %1788, i32* %1790, align 4, !noalias !68 %1791 = add nuw nsw i32 %iq.i.i.i.i.i466.0562, 1 %exitcond597.not = icmp eq i32 %1791, 6 br i1 %exitcond597.not, label %1792, label %1783, !llvm.loop !71 1792: ; preds = %1783 %1793 = and i32 %1776, -2147483648 %1794 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %1789, i32* %1794, align 4, !noalias !68 %1795 = and i32 %1777, 31 %1796 = sub nsw i32 6, %1782 %1797 = sext i32 %1796 to i64 %1798 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1797 %1799 = load i32, i32* %1798, align 4 %1800 = sub nsw i32 5, %1782 %1801 = sext i32 %1800 to i64 %1802 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1801 %1803 = load i32, i32* %1802, align 4 %.not181 = icmp eq i32 %1795, 0 br i1 %.not181, label %__internal_trig_reduction_slowpath.exit.i.i.i.i532, label %1804 1804: ; preds = %1792 %1805 = sub nsw i32 4, %1782 %1806 = sub nuw nsw i32 32, %1795 %1807 = shl i32 %1799, %1795 %1808 = lshr i32 %1803, %1806 %1809 = add i32 %1808, %1807 %1810 = shl i32 %1803, %1795 %1811 = sext i32 %1805 to i64 %1812 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %1811 %1813 = load i32, i32* %1812, align 4 %1814 = lshr i32 %1813, %1806 %1815 = add i32 %1814, %1810 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i532 __internal_trig_reduction_slowpath.exit.i.i.i.i532: ; preds = %1804, %1792 %lo.i.i.i.i.i462.0 = phi i32 [ %1815, %1804 ], [ %1803, %1792 ] %hi.i.i.i.i.i461.1 = phi i32 [ %1809, %1804 ], [ %1799, %1792 ] %1816 = lshr i32 %hi.i.i.i.i.i461.1, 30 %1817 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i461.1, i32 %lo.i.i.i.i.i462.0, i32 noundef 2) %1818 = shl i32 %lo.i.i.i.i.i462.0, 2 %1819 = lshr i32 %1817, 31 %1820 = add nuw nsw i32 %1819, %1816 %.not182 = icmp eq i32 %1793, 0 %1821 = sub nsw i32 0, %1820 %spec.select6 = select i1 %.not182, i32 %1820, i32 %1821 %.not183 = icmp sgt i32 %1817, -1 %1822 = xor i32 %1793, -2147483648 %not..not183 = xor i1 %.not183, true %1823 = sext i1 %not..not183 to i32 %lo.i.i.i.i.i462.1 = xor i32 %1818, %1823 %hi.i.i.i.i.i461.2 = xor i32 %1817, %1823 %s.i.i.i.i.i459.0 = select i1 %.not183, i32 %1793, i32 %1822 %1824 = zext i32 %hi.i.i.i.i.i461.2 to i64 %1825 = shl nuw i64 %1824, 32 %1826 = zext i32 %lo.i.i.i.i.i462.1 to i64 %1827 = or i64 %1825, %1826 %1828 = sitofp i64 %1827 to double %1829 = fmul double %1828, 0x3BF921FB54442D19 %1830 = fptrunc double %1829 to float %.not185 = icmp eq i32 %s.i.i.i.i.i459.0, 0 %1831 = fneg float %1830 %r.i.i.i.i.i470.0 = select i1 %.not185, float %1830, float %1831 br label %__internal_trig_reduction_kernel.exit.i.i.i533 __internal_trig_reduction_kernel.exit.i.i.i533: ; preds = %__nv_fmul_rn.exit.i.i.i.i531, %__internal_trig_reduction_slowpath.exit.i.i.i.i532, %__nv_rsqrtf.exit.i.i524 %i.i.i.i476.1 = phi i32 [ %.0447, %__nv_rsqrtf.exit.i.i524 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i531 ], [ %spec.select6, %__internal_trig_reduction_slowpath.exit.i.i.i.i532 ] %t.i.i.i.i473.1 = phi float [ %.0438, %__nv_rsqrtf.exit.i.i524 ], [ %.0430, %__nv_fmul_rn.exit.i.i.i.i531 ], [ %r.i.i.i.i.i470.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i532 ] %1832 = and i32 %i.i.i.i476.1, 3 %1833 = uitofp i32 %1832 to float %1834 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not150 = icmp eq i32 %1834, 0 %1835 = call float @llvm.nvvm.fma.rn.ftz.f(float %1833, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %1836 = call float @llvm.fma.f32(float %1833, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.0416 = select i1 %.not150, float %1836, float %1835 %1837 = fadd float %t.i.i.i.i473.1, %.0416 %1838 = fmul float %1837, 0x3FE45F3060000000 %1839 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not151 = icmp eq i32 %1839, 0 %1840 = call i32 @llvm.nvvm.f2i.rn.ftz(float %1838) #139 %1841 = call i32 @llvm.nvvm.f2i.rn(float %1838) #139 %.0415 = select i1 %.not151, i32 %1841, i32 %1840 %1842 = sitofp i32 %.0415 to float %1843 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not152 = icmp eq i32 %1843, 0 %1844 = call float @llvm.nvvm.fma.rn.ftz.f(float %1842, float noundef 0xBFF921FB40000000, float %1837) #139 %1845 = call float @llvm.fma.f32(float %1842, float noundef 0xBFF921FB40000000, float %1837) %.0414 = select i1 %.not152, float %1845, float %1844 %1846 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not153 = icmp eq i32 %1846, 0 %1847 = call float @llvm.nvvm.fma.rn.ftz.f(float %1842, float noundef 0xBE74442D00000000, float %.0414) #139 %1848 = call float @llvm.fma.f32(float %1842, float noundef 0xBE74442D00000000, float %.0414) %.0410 = select i1 %.not153, float %1848, float %1847 %1849 = add i32 %.0415, 1 %1850 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not154 = icmp eq i32 %1850, 0 %1851 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0410, float %.0410) #139 %1852 = fmul float %.0410, %.0410 %.0401 = select i1 %.not154, float %1852, float %1851 %1853 = and i32 %1849, 1 %.not155 = icmp eq i32 %1853, 0 %1854 = select i1 %.not155, float %.0410, float 1.000000e+00 %1855 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not156 = icmp eq i32 %1855, 0 %1856 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0401, float %1854, float noundef 0.000000e+00) #139 %1857 = call float @llvm.fma.f32(float %.0401, float %1854, float noundef 0.000000e+00) %.0394 = select i1 %.not156, float %1857, float %1856 br i1 %.not155, label %__internal_fmad.exit2.i.i.i.i541, label %__internal_fmad.exit1.i.i.i.i540 __internal_fmad.exit1.i.i.i.i540: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i533 %1858 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not179 = icmp eq i32 %1858, 0 %1859 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0401, float noundef 0xBF56C0FDA0000000) #139 %1860 = call float @llvm.fma.f32(float %.0401, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0387 = select i1 %.not179, float %1860, float %1859 br label %__internal_fmad.exit2.i.i.i.i541 __internal_fmad.exit2.i.i.i.i541: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i533, %__internal_fmad.exit1.i.i.i.i540 %1861 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i.i533 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i.i540 ] %1862 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i.i533 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i.i540 ] %1863 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i.i533 ], [ %.0387, %__internal_fmad.exit1.i.i.i.i540 ] %1864 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not159 = icmp eq i32 %1864, 0 %1865 = call float @llvm.nvvm.fma.rn.ftz.f(float %1863, float %.0401, float noundef %1862) #139 %1866 = call float @llvm.fma.f32(float %1863, float %.0401, float noundef %1862) %.0380 = select i1 %.not159, float %1866, float %1865 %1867 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not161 = icmp eq i32 %1867, 0 %1868 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0380, float %.0401, float noundef %1861) #139 %1869 = call float @llvm.fma.f32(float %.0380, float %.0401, float noundef %1861) %.0373 = select i1 %.not161, float %1869, float %1868 %1870 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not162 = icmp eq i32 %1870, 0 %1871 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0373, float %.0394, float %1854) #139 %1872 = call float @llvm.fma.f32(float %.0373, float %.0394, float %1854) %.0366 = select i1 %.not162, float %1872, float %1871 %1873 = and i32 %1849, 2 %.not163 = icmp eq i32 %1873, 0 br i1 %.not163, label %__internal_cos_offset_f.exit.i.i545, label %__internal_fmad.exit5.i.i.i.i544 __internal_fmad.exit5.i.i.i.i544: ; preds = %__internal_fmad.exit2.i.i.i.i541 %1874 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not178 = icmp eq i32 %1874, 0 %1875 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0366, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %1876 = call float @llvm.fma.f32(float %.0366, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0360 = select i1 %.not178, float %1876, float %1875 br label %__internal_cos_offset_f.exit.i.i545 __internal_cos_offset_f.exit.i.i545: ; preds = %__internal_fmad.exit5.i.i.i.i544, %__internal_fmad.exit2.i.i.i.i541 %z.i.i.i.i452.0 = phi float [ %.0360, %__internal_fmad.exit5.i.i.i.i544 ], [ %.0366, %__internal_fmad.exit2.i.i.i.i541 ] %1877 = fmul float %1751, %z.i.i.i.i452.0 br label %1878 1878: ; preds = %__internal_cos_offset_f.exit.i.i545, %__nv_isinff.exit.i.i515, %__internal_fmad.exit.i.i503 %r.i.i482.1 = phi float [ %1714, %__internal_fmad.exit.i.i503 ], [ %1877, %__internal_cos_offset_f.exit.i.i545 ], [ 0.000000e+00, %__nv_isinff.exit.i.i515 ] %1879 = fcmp olt float %.0439, 0.000000e+00 %1880 = fneg float %r.i.i482.1 %r.i.i482.2 = select i1 %1879, float %1880, float %r.i.i482.1 %1881 = fcmp olt float %.0448, 0x39B4484C00000000 br i1 %1881, label %1882, label %.__nv_j1f.exit.i546_crit_edge .__nv_j1f.exit.i546_crit_edge: ; preds = %1878 %.pre = bitcast float %.0439 to i32 br label %__nv_j1f.exit.i546 1882: ; preds = %1878 %1883 = bitcast float %.0439 to i32 %1884 = and i32 %1883, -2147483648 %1885 = bitcast float %r.i.i482.2 to i32 %1886 = and i32 %1885, 2147483647 %1887 = or i32 %1886, %1884 %1888 = bitcast i32 %1887 to float br label %__nv_j1f.exit.i546 __nv_j1f.exit.i546: ; preds = %.__nv_j1f.exit.i546_crit_edge, %1882 %.pre-phi = phi i32 [ %.pre, %.__nv_j1f.exit.i546_crit_edge ], [ %1883, %1882 ] %r.i.i482.3 = phi float [ %r.i.i482.2, %.__nv_j1f.exit.i546_crit_edge ], [ %1888, %1882 ] %1889 = add i32 %.pre-phi, -1059760811 %1890 = and i32 %1889, -8388608 %1891 = sub i32 %.pre-phi, %1890 %1892 = bitcast i32 %1891 to float %1893 = sitofp i32 %1890 to float %1894 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not164 = icmp eq i32 %1894, 0 %1895 = call float @llvm.nvvm.fma.rn.ftz.f(float %1893, float noundef 0x3E80000000000000, float noundef 0.000000e+00) #139 %1896 = call float @llvm.fma.f32(float %1893, float noundef 0x3E80000000000000, float noundef 0.000000e+00) %.0328 = select i1 %.not164, float %1896, float %1895 %1897 = fadd float %1892, -1.000000e+00 %1898 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not165 = icmp eq i32 %1898, 0 %1899 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %1897, float noundef 0x3FC2073EC0000000) #139 %1900 = call float @llvm.fma.f32(float %1897, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.0324 = select i1 %.not165, float %1900, float %1899 %1901 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not166 = icmp eq i32 %1901, 0 %1902 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0324, float %1897, float noundef 0xBFBF19B980000000) #139 %1903 = call float @llvm.fma.f32(float %.0324, float %1897, float noundef 0xBFBF19B980000000) %.0320 = select i1 %.not166, float %1903, float %1902 %1904 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not167 = icmp eq i32 %1904, 0 %1905 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0320, float %1897, float noundef 0x3FC1E52AA0000000) #139 %1906 = call float @llvm.fma.f32(float %.0320, float %1897, float noundef 0x3FC1E52AA0000000) %.0316 = select i1 %.not167, float %1906, float %1905 %1907 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not168 = icmp eq i32 %1907, 0 %1908 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0316, float %1897, float noundef 0xBFC55B1720000000) #139 %1909 = call float @llvm.fma.f32(float %.0316, float %1897, float noundef 0xBFC55B1720000000) %.0315 = select i1 %.not168, float %1909, float %1908 %1910 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not169 = icmp eq i32 %1910, 0 %1911 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0315, float %1897, float noundef 0x3FC99DA160000000) #139 %1912 = call float @llvm.fma.f32(float %.0315, float %1897, float noundef 0x3FC99DA160000000) %.0311 = select i1 %.not169, float %1912, float %1911 %1913 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not170 = icmp eq i32 %1913, 0 %1914 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0311, float %1897, float noundef 0xBFCFFFE440000000) #139 %1915 = call float @llvm.fma.f32(float %.0311, float %1897, float noundef 0xBFCFFFE440000000) %.0307 = select i1 %.not170, float %1915, float %1914 %1916 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not171 = icmp eq i32 %1916, 0 %1917 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0307, float %1897, float noundef 0x3FD5554F00000000) #139 %1918 = call float @llvm.fma.f32(float %.0307, float %1897, float noundef 0x3FD5554F00000000) %.0303 = select i1 %.not171, float %1918, float %1917 %1919 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not172 = icmp eq i32 %1919, 0 %1920 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0303, float %1897, float noundef -5.000000e-01) #139 %1921 = call float @llvm.fma.f32(float %.0303, float %1897, float noundef -5.000000e-01) %.0332 = select i1 %.not172, float %1921, float %1920 %1922 = fmul float %1897, %.0332 %1923 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not173 = icmp eq i32 %1923, 0 %1924 = call float @llvm.nvvm.fma.rn.ftz.f(float %1922, float %1897, float %1897) #139 %1925 = call float @llvm.fma.f32(float %1922, float %1897, float %1897) %.0337 = select i1 %.not173, float %1925, float %1924 %1926 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not174 = icmp eq i32 %1926, 0 %1927 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0328, float noundef 0x3FE62E4300000000, float %.0337) #139 %1928 = call float @llvm.fma.f32(float %.0328, float noundef 0x3FE62E4300000000, float %.0337) %.0343 = select i1 %.not174, float %1928, float %1927 %1929 = icmp ugt i32 %.pre-phi, 2139095039 br i1 %1929, label %__nv_fmaf_rn.exit.i.i558, label %__internal_accurate_logf.exit.i559 __nv_fmaf_rn.exit.i.i558: ; preds = %__nv_j1f.exit.i546 %1930 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not177 = icmp eq i32 %1930, 0 %1931 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0439, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %1932 = call float @llvm.fma.f32(float %.0439, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.0350 = select i1 %.not177, float %1932, float %1931 br label %__internal_accurate_logf.exit.i559 __internal_accurate_logf.exit.i559: ; preds = %__nv_fmaf_rn.exit.i.i558, %__nv_j1f.exit.i546 %r.i5.i445.0 = phi float [ %.0350, %__nv_fmaf_rn.exit.i.i558 ], [ %.0343, %__nv_j1f.exit.i546 ] %1933 = fcmp oeq float %.0439, 0.000000e+00 %r.i5.i445.1 = select i1 %1933, float 0xFFF0000000000000, float %r.i5.i445.0 %1934 = fdiv float -1.000000e+00, %.0439 %1935 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not175 = icmp eq i32 %1935, 0 %1936 = call float @llvm.nvvm.fma.rn.ftz.f(float %r.i.i482.3, float %r.i5.i445.1, float %1934) #139 %1937 = call float @llvm.fma.f32(float %r.i.i482.3, float %r.i5.i445.1, float %1934) %.0298 = select i1 %.not175, float %1937, float %1936 %1938 = fmul float %.0298, 0x3FE45F3060000000 %1939 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not176 = icmp eq i32 %1939, 0 %1940 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0446, float %.0439, float %1938) #139 %1941 = call float @llvm.fma.f32(float %.0446, float %.0439, float %1938) %.0292 = select i1 %.not176, float %1941, float %1940 br label %__nv_y1f.exit618 1942: ; preds = %1650 %1943 = fcmp ugt float %.0439, 0x400E81DDC0000000 br i1 %1943, label %1974, label %__internal_fmad.exit11.i562 __internal_fmad.exit11.i562: ; preds = %1942 %1944 = fadd float %.0439, 0xC00193BEE0000000 %1945 = fadd float %1944, 0x3E76401B80000000 %1946 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not120 = icmp eq i32 %1946, 0 %1947 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBEF13C53A0000000, float %1945, float noundef 0x3F20C95100000000) #139 %1948 = call float @llvm.fma.f32(float %1945, float noundef 0xBEF13C53A0000000, float noundef 0x3F20C95100000000) %.0290 = select i1 %.not120, float %1948, float %1947 %1949 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not121 = icmp eq i32 %1949, 0 %1950 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0290, float %1945, float noundef 0xBF3E1561A0000000) #139 %1951 = call float @llvm.fma.f32(float %.0290, float %1945, float noundef 0xBF3E1561A0000000) %.0283 = select i1 %.not121, float %1951, float %1950 %1952 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not122 = icmp eq i32 %1952, 0 %1953 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0283, float %1945, float noundef 0x3F51EC2040000000) #139 %1954 = call float @llvm.fma.f32(float %.0283, float %1945, float noundef 0x3F51EC2040000000) %.0277 = select i1 %.not122, float %1954, float %1953 %1955 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not123 = icmp eq i32 %1955, 0 %1956 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0277, float %1945, float noundef 0xBF658E08A0000000) #139 %1957 = call float @llvm.fma.f32(float %.0277, float %1945, float noundef 0xBF658E08A0000000) %.0276 = select i1 %.not123, float %1957, float %1956 %1958 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not124 = icmp eq i32 %1958, 0 %1959 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0276, float %1945, float noundef 0x3F7E6BBEE0000000) #139 %1960 = call float @llvm.fma.f32(float %.0276, float %1945, float noundef 0x3F7E6BBEE0000000) %.0271 = select i1 %.not124, float %1960, float %1959 %1961 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not125 = icmp eq i32 %1961, 0 %1962 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0271, float %1945, float noundef 0xBF73A12F80000000) #139 %1963 = call float @llvm.fma.f32(float %.0271, float %1945, float noundef 0xBF73A12F80000000) %.0267 = select i1 %.not125, float %1963, float %1962 %1964 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not126 = icmp eq i32 %1964, 0 %1965 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0267, float %1945, float noundef 0xBFA0D2D140000000) #139 %1966 = call float @llvm.fma.f32(float %.0267, float %1945, float noundef 0xBFA0D2D140000000) %.0262 = select i1 %.not126, float %1966, float %1965 %1967 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not127 = icmp eq i32 %1967, 0 %1968 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0262, float %1945, float noundef 0xBFBE56FBE0000000) #139 %1969 = call float @llvm.fma.f32(float %.0262, float %1945, float noundef 0xBFBE56FBE0000000) %.0255 = select i1 %.not127, float %1969, float %1968 %1970 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not128 = icmp eq i32 %1970, 0 %1971 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0255, float %1945, float noundef 0x3FE0AA4840000000) #139 %1972 = call float @llvm.fma.f32(float %.0255, float %1945, float noundef 0x3FE0AA4840000000) %.0248 = select i1 %.not128, float %1972, float %1971 %1973 = fmul float %1945, %.0248 br label %__nv_y1f.exit618 1974: ; preds = %1942 %1975 = fcmp ugt float %.0439, 0x401C0D26E0000000 br i1 %1975, label %2006, label %__internal_fmad.exit29.i571 __internal_fmad.exit29.i571: ; preds = %1974 %1976 = fadd float %.0439, 0xC015B7FE40000000 %1977 = fadd float %1976, 0xBE8D0F6060000000 %1978 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not111 = icmp eq i32 %1978, 0 %1979 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E57CAFA00000000, float %1977, float noundef 0xBEA11482C0000000) #139 %1980 = call float @llvm.fma.f32(float %1977, float noundef 0x3E57CAFA00000000, float noundef 0xBEA11482C0000000) %.0241 = select i1 %.not111, float %1980, float %1979 %1981 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not112 = icmp eq i32 %1981, 0 %1982 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0241, float %1977, float noundef 0xBEC7F14280000000) #139 %1983 = call float @llvm.fma.f32(float %.0241, float %1977, float noundef 0xBEC7F14280000000) %.0234 = select i1 %.not112, float %1983, float %1982 %1984 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not113 = icmp eq i32 %1984, 0 %1985 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0234, float %1977, float noundef 0x3F084FC040000000) #139 %1986 = call float @llvm.fma.f32(float %.0234, float %1977, float noundef 0x3F084FC040000000) %.0227 = select i1 %.not113, float %1986, float %1985 %1987 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not114 = icmp eq i32 %1987, 0 %1988 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0227, float %1977, float noundef 0x3F23376380000000) #139 %1989 = call float @llvm.fma.f32(float %.0227, float %1977, float noundef 0x3F23376380000000) %.0220 = select i1 %.not114, float %1989, float %1988 %1990 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not115 = icmp eq i32 %1990, 0 %1991 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0220, float %1977, float noundef 0xBF61BE3FA0000000) #139 %1992 = call float @llvm.fma.f32(float %.0220, float %1977, float noundef 0xBF61BE3FA0000000) %.0213 = select i1 %.not115, float %1992, float %1991 %1993 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not116 = icmp eq i32 %1993, 0 %1994 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0213, float %1977, float noundef 0xBF710A3120000000) #139 %1995 = call float @llvm.fma.f32(float %.0213, float %1977, float noundef 0xBF710A3120000000) %.0208 = select i1 %.not116, float %1995, float %1994 %1996 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not117 = icmp eq i32 %1996, 0 %1997 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0208, float %1977, float noundef 0x3FAA15D820000000) #139 %1998 = call float @llvm.fma.f32(float %.0208, float %1977, float noundef 0x3FAA15D820000000) %.0207 = select i1 %.not117, float %1998, float %1997 %1999 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not118 = icmp eq i32 %1999, 0 %2000 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0207, float %1977, float noundef 0x3FA00B9F80000000) #139 %2001 = call float @llvm.fma.f32(float %.0207, float %1977, float noundef 0x3FA00B9F80000000) %.0201 = select i1 %.not118, float %2001, float %2000 %2002 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not119 = icmp eq i32 %2002, 0 %2003 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0201, float %1977, float noundef 0xBFD5C7C560000000) #139 %2004 = call float @llvm.fma.f32(float %.0201, float %1977, float noundef 0xBFD5C7C560000000) %.0198 = select i1 %.not119, float %2004, float %2003 %2005 = fmul float %1977, %.0198 br label %__nv_y1f.exit618 2006: ; preds = %1974 %2007 = fcmp ugt float %.0439, 0x4024585C60000000 br i1 %2007, label %__nv_isinff.exit.i588, label %__internal_fmad.exit47.i580 __internal_fmad.exit47.i580: ; preds = %2006 %2008 = fadd float %.0439, 0xC0213127A0000000 %2009 = fadd float %2008, 0xBE9CC2D360000000 %2010 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not103 = icmp eq i32 %2010, 0 %2011 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EA19E7060000000, float %2009, float noundef 0x3EC05205C0000000) #139 %2012 = call float @llvm.fma.f32(float %2009, float noundef 0x3EA19E7060000000, float noundef 0x3EC05205C0000000) %.0192 = select i1 %.not103, float %2012, float %2011 %2013 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not104 = icmp eq i32 %2013, 0 %2014 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0192, float %2009, float noundef 0xBF06EBEE20000000) #139 %2015 = call float @llvm.fma.f32(float %.0192, float %2009, float noundef 0xBF06EBEE20000000) %.0185 = select i1 %.not104, float %2015, float %2014 %2016 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not105 = icmp eq i32 %2016, 0 %2017 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0185, float %2009, float noundef 0xBF1B3F5500000000) #139 %2018 = call float @llvm.fma.f32(float %.0185, float %2009, float noundef 0xBF1B3F5500000000) %.0178 = select i1 %.not105, float %2018, float %2017 %2019 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not106 = icmp eq i32 %2019, 0 %2020 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0178, float %2009, float noundef 0x3F607A3340000000) #139 %2021 = call float @llvm.fma.f32(float %.0178, float %2009, float noundef 0x3F607A3340000000) %.0171 = select i1 %.not106, float %2021, float %2020 %2022 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not107 = icmp eq i32 %2022, 0 %2023 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0171, float %2009, float noundef 0x3F63CE6DA0000000) #139 %2024 = call float @llvm.fma.f32(float %.0171, float %2009, float noundef 0x3F63CE6DA0000000) %.0167 = select i1 %.not107, float %2024, float %2023 %2025 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not108 = icmp eq i32 %2025, 0 %2026 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0167, float %2009, float noundef 0xBFA6395CA0000000) #139 %2027 = call float @llvm.fma.f32(float %.0167, float %2009, float noundef 0xBFA6395CA0000000) %.0160 = select i1 %.not108, float %2027, float %2026 %2028 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not109 = icmp eq i32 %2028, 0 %2029 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0160, float %2009, float noundef 0xBF902B36C0000000) #139 %2030 = call float @llvm.fma.f32(float %.0160, float %2009, float noundef 0xBF902B36C0000000) %.0154 = select i1 %.not109, float %2030, float %2029 %2031 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not110 = icmp eq i32 %2031, 0 %2032 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0154, float %2009, float noundef 0x3FD15F9940000000) #139 %2033 = call float @llvm.fma.f32(float %.0154, float %2009, float noundef 0x3FD15F9940000000) %.0149 = select i1 %.not110, float %2033, float %2032 %2034 = fmul float %2009, %.0149 br label %__nv_y1f.exit618 __nv_isinff.exit.i588: ; preds = %2006 %2035 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not66 = icmp eq i32 %2035, 0 %2036 = call float @llvm.nvvm.fabs.ftz.f(float %.0439) #139 %2037 = call float @llvm.fabs.f32(float %.0439) %.0146 = select i1 %.not66, float %2037, float %2036 %2038 = fcmp oeq float %.0146, 0x7FF0000000000000 br i1 %2038, label %__nv_y1f.exit618, label %__internal_fmad.exit66.i589 __internal_fmad.exit66.i589: ; preds = %__nv_isinff.exit.i588 %2039 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0439) #141, !srcloc !73 %2040 = fmul float %2039, %2039 %2041 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %2041, 0 %2042 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FE4CFEC00000000, float %2040, float noundef 0xBFC8957200000000) #139 %2043 = call float @llvm.fma.f32(float %2040, float noundef 0x3FE4CFEC00000000, float noundef 0xBFC8957200000000) %.0140 = select i1 %.not67, float %2043, float %2042 %2044 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %2044, 0 %2045 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0140, float %2040, float noundef 0x3FC7FFD7E0000000) #139 %2046 = call float @llvm.fma.f32(float %.0140, float %2040, float noundef 0x3FC7FFD7E0000000) %.0134 = select i1 %.not68, float %2046, float %2045 %2047 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not69 = icmp eq i32 %2047, 0 %2048 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0134, float %2040, float noundef 1.000000e+00) #139 %2049 = call float @llvm.fma.f32(float %.0134, float %2040, float noundef 1.000000e+00) %.0132 = select i1 %.not69, float %2049, float %2048 %2050 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not70 = icmp eq i32 %2050, 0 %2051 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFFC9C3560000000, float %2040, float noundef 0x3FD76E7560000000) #139 %2052 = call float @llvm.fma.f32(float %2040, float noundef 0xBFFC9C3560000000, float noundef 0x3FD76E7560000000) %.0128 = select i1 %.not70, float %2052, float %2051 %2053 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %2053, 0 %2054 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0128, float %2040, float noundef 0xBFC4FF6DC0000000) #139 %2055 = call float @llvm.fma.f32(float %.0128, float %2040, float noundef 0xBFC4FF6DC0000000) %.0123 = select i1 %.not71, float %2055, float %2054 %2056 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %2056, 0 %2057 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0123, float %2040, float noundef 0x3FD7FFFFE0000000) #139 %2058 = call float @llvm.fma.f32(float %.0123, float %2040, float noundef 0x3FD7FFFFE0000000) %.0119 = select i1 %.not72, float %2058, float %2057 %2059 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %2059, 0 %2060 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0119, float %2039, float %.0439) #139 %2061 = call float @llvm.fma.f32(float %.0119, float %2039, float %.0439) %.0112 = select i1 %.not73, float %2061, float %2060 %2062 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %2062, 0 br i1 %.not74, label %2065, label %2063 2063: ; preds = %__internal_fmad.exit66.i589 %2064 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0439) #139 br label %__nv_rsqrtf.exit.i596 2065: ; preds = %__internal_fmad.exit66.i589 %2066 = call float @llvm.nvvm.rsqrt.approx.f(float %.0439) #139 br label %__nv_rsqrtf.exit.i596 __nv_rsqrtf.exit.i596: ; preds = %2065, %2063 %.0110 = phi float [ %2064, %2063 ], [ %2066, %2065 ] %2067 = fmul float %.0110, 0x3FE9884540000000 %2068 = fmul float %.0132, %2067 %2069 = fmul float %.0112, 0x3FE45F3060000000 %2070 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %2070, 0 %2071 = call i32 @llvm.nvvm.f2i.rn.ftz(float %2069) #139 %2072 = call i32 @llvm.nvvm.f2i.rn(float %2069) #139 %.0103 = select i1 %.not75, i32 %2072, i32 %2071 %2073 = sitofp i32 %.0103 to float %2074 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not76 = icmp eq i32 %2074, 0 %2075 = call float @llvm.nvvm.fma.rn.ftz.f(float %2073, float noundef 0xBFF921FB40000000, float %.0112) #139 %2076 = call float @llvm.fma.f32(float %2073, float noundef 0xBFF921FB40000000, float %.0112) %.099 = select i1 %.not76, float %2076, float %2075 %2077 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %2077, 0 %2078 = call float @llvm.nvvm.fma.rn.ftz.f(float %2073, float noundef 0xBE74442D00000000, float %.099) #139 %2079 = call float @llvm.fma.f32(float %2073, float noundef 0xBE74442D00000000, float %.099) %.095 = select i1 %.not77, float %2079, float %2078 %2080 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not78 = icmp eq i32 %2080, 0 %2081 = call float @llvm.nvvm.fma.rn.ftz.f(float %2073, float noundef 0xBCF84698A0000000, float %.095) #139 %2082 = call float @llvm.fma.f32(float %2073, float noundef 0xBCF84698A0000000, float %.095) %.091 = select i1 %.not78, float %2082, float %2081 %2083 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not79 = icmp eq i32 %2083, 0 %2084 = call float @llvm.nvvm.fabs.ftz.f(float %.0112) #139 %2085 = call float @llvm.fabs.f32(float %.0112) %.089 = select i1 %.not79, float %2085, float %2084 %2086 = fcmp ult float %.089, 1.056150e+05 br i1 %2086, label %__internal_trig_reduction_kernel.exit.i.i605, label %__nv_isinff.exit.i.i.i602 __nv_isinff.exit.i.i.i602: ; preds = %__nv_rsqrtf.exit.i596 %2087 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not96 = icmp eq i32 %2087, 0 %.086 = select i1 %.not96, float %2085, float %2084 %2088 = fcmp oeq float %.086, 0x7FF0000000000000 br i1 %2088, label %__nv_fmul_rn.exit.i.i.i603, label %2092 __nv_fmul_rn.exit.i.i.i603: ; preds = %__nv_isinff.exit.i.i.i602 %2089 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not102 = icmp eq i32 %2089, 0 %2090 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0112, float noundef 0.000000e+00) #139 %2091 = fmul float %.0112, 0.000000e+00 %.081 = select i1 %.not102, float %2091, float %2090 br label %__internal_trig_reduction_kernel.exit.i.i605 2092: ; preds = %__nv_isinff.exit.i.i.i602 %2093 = bitcast float %.0112 to i32 %2094 = lshr i32 %2093, 23 %2095 = and i32 %2094, 255 %2096 = add nsw i32 %2095, -128 %2097 = shl i32 %2093, 8 %2098 = or i32 %2097, -2147483648 %2099 = lshr i32 %2096, 5 br label %2100 2100: ; preds = %2092, %2100 %hi.i.i.i.i417.0561 = phi i32 [ 0, %2092 ], [ %2106, %2100 ] %iq.i.i.i.i422.0560 = phi i32 [ 0, %2092 ], [ %2108, %2100 ] %2101 = zext i32 %iq.i.i.i.i422.0560 to i64 %2102 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %2101 %2103 = load i32, i32 addrspace(1)* %2102, align 4 %2104 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %2103, i32 %2098, i32 %hi.i.i.i.i417.0561) #141, !srcloc !67 %2105 = extractvalue { i32, i32 } %2104, 0 %2106 = extractvalue { i32, i32 } %2104, 1 %2107 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %2101 store i32 %2105, i32* %2107, align 4, !noalias !68 %2108 = add nuw nsw i32 %iq.i.i.i.i422.0560, 1 %exitcond596.not = icmp eq i32 %2108, 6 br i1 %exitcond596.not, label %2109, label %2100, !llvm.loop !71 2109: ; preds = %2100 %2110 = and i32 %2093, -2147483648 %2111 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 6 store i32 %2106, i32* %2111, align 4, !noalias !68 %2112 = and i32 %2094, 31 %2113 = sub nsw i32 6, %2099 %2114 = sext i32 %2113 to i64 %2115 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %2114 %2116 = load i32, i32* %2115, align 4 %2117 = sub nsw i32 5, %2099 %2118 = sext i32 %2117 to i64 %2119 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %2118 %2120 = load i32, i32* %2119, align 4 %.not97 = icmp eq i32 %2112, 0 br i1 %.not97, label %__internal_trig_reduction_slowpath.exit.i.i.i604, label %2121 2121: ; preds = %2109 %2122 = sub nsw i32 4, %2099 %2123 = sub nuw nsw i32 32, %2112 %2124 = shl i32 %2116, %2112 %2125 = lshr i32 %2120, %2123 %2126 = add i32 %2125, %2124 %2127 = shl i32 %2120, %2112 %2128 = sext i32 %2122 to i64 %2129 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i.i, i64 0, i64 %2128 %2130 = load i32, i32* %2129, align 4 %2131 = lshr i32 %2130, %2123 %2132 = add i32 %2131, %2127 br label %__internal_trig_reduction_slowpath.exit.i.i.i604 __internal_trig_reduction_slowpath.exit.i.i.i604: ; preds = %2121, %2109 %lo.i.i.i.i418.0 = phi i32 [ %2132, %2121 ], [ %2120, %2109 ] %hi.i.i.i.i417.1 = phi i32 [ %2126, %2121 ], [ %2116, %2109 ] %2133 = lshr i32 %hi.i.i.i.i417.1, 30 %2134 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i417.1, i32 %lo.i.i.i.i418.0, i32 noundef 2) %2135 = shl i32 %lo.i.i.i.i418.0, 2 %2136 = lshr i32 %2134, 31 %2137 = add nuw nsw i32 %2136, %2133 %.not98 = icmp eq i32 %2110, 0 %2138 = sub nsw i32 0, %2137 %spec.select7 = select i1 %.not98, i32 %2137, i32 %2138 %.not99 = icmp sgt i32 %2134, -1 %2139 = xor i32 %2110, -2147483648 %not..not99 = xor i1 %.not99, true %2140 = sext i1 %not..not99 to i32 %lo.i.i.i.i418.1 = xor i32 %2135, %2140 %hi.i.i.i.i417.2 = xor i32 %2134, %2140 %s.i.i.i.i416.0 = select i1 %.not99, i32 %2110, i32 %2139 %2141 = zext i32 %hi.i.i.i.i417.2 to i64 %2142 = shl nuw i64 %2141, 32 %2143 = zext i32 %lo.i.i.i.i418.1 to i64 %2144 = or i64 %2142, %2143 %2145 = sitofp i64 %2144 to double %2146 = fmul double %2145, 0x3BF921FB54442D19 %2147 = fptrunc double %2146 to float %.not101 = icmp eq i32 %s.i.i.i.i416.0, 0 %2148 = fneg float %2147 %r.i.i.i.i426.0 = select i1 %.not101, float %2147, float %2148 br label %__internal_trig_reduction_kernel.exit.i.i605 __internal_trig_reduction_kernel.exit.i.i605: ; preds = %__nv_fmul_rn.exit.i.i.i603, %__internal_trig_reduction_slowpath.exit.i.i.i604, %__nv_rsqrtf.exit.i596 %i.i81.i432.1 = phi i32 [ %.0103, %__nv_rsqrtf.exit.i596 ], [ 0, %__nv_fmul_rn.exit.i.i.i603 ], [ %spec.select7, %__internal_trig_reduction_slowpath.exit.i.i.i604 ] %t.i.i.i429.1 = phi float [ %.091, %__nv_rsqrtf.exit.i596 ], [ %.081, %__nv_fmul_rn.exit.i.i.i603 ], [ %r.i.i.i.i426.0, %__internal_trig_reduction_slowpath.exit.i.i.i604 ] %2149 = and i32 %i.i81.i432.1, 3 %2150 = uitofp i32 %2149 to float %2151 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %2151, 0 %2152 = call float @llvm.nvvm.fma.rn.ftz.f(float %2150, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) #139 %2153 = call float @llvm.fma.f32(float %2150, float noundef 0x3FF921FB60000000, float noundef 0xC00F6A7A20000000) %.060 = select i1 %.not80, float %2153, float %2152 %2154 = fadd float %t.i.i.i429.1, %.060 %2155 = fmul float %2154, 0x3FE45F3060000000 %2156 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not81 = icmp eq i32 %2156, 0 %2157 = call i32 @llvm.nvvm.f2i.rn.ftz(float %2155) #139 %2158 = call i32 @llvm.nvvm.f2i.rn(float %2155) #139 %.058 = select i1 %.not81, i32 %2158, i32 %2157 %2159 = sitofp i32 %.058 to float %2160 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %2160, 0 %2161 = call float @llvm.nvvm.fma.rn.ftz.f(float %2159, float noundef 0xBFF921FB40000000, float %2154) #139 %2162 = call float @llvm.fma.f32(float %2159, float noundef 0xBFF921FB40000000, float %2154) %.054 = select i1 %.not82, float %2162, float %2161 %2163 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %2163, 0 %2164 = call float @llvm.nvvm.fma.rn.ftz.f(float %2159, float noundef 0xBE74442D00000000, float %.054) #139 %2165 = call float @llvm.fma.f32(float %2159, float noundef 0xBE74442D00000000, float %.054) %.051 = select i1 %.not83, float %2165, float %2164 %2166 = add i32 %.058, 1 %2167 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not84 = icmp eq i32 %2167, 0 %2168 = call float @llvm.nvvm.mul.rn.ftz.f(float %.051, float %.051) #139 %2169 = fmul float %.051, %.051 %.047 = select i1 %.not84, float %2169, float %2168 %2170 = and i32 %2166, 1 %.not85 = icmp eq i32 %2170, 0 %2171 = select i1 %.not85, float %.051, float 1.000000e+00 %2172 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not86 = icmp eq i32 %2172, 0 %2173 = call float @llvm.nvvm.fma.rn.ftz.f(float %.047, float %2171, float noundef 0.000000e+00) #139 %2174 = call float @llvm.fma.f32(float %.047, float %2171, float noundef 0.000000e+00) %.043 = select i1 %.not86, float %2174, float %2173 br i1 %.not85, label %__internal_fmad.exit2.i.i.i613, label %__internal_fmad.exit1.i.i.i612 __internal_fmad.exit1.i.i.i612: ; preds = %__internal_trig_reduction_kernel.exit.i.i605 %2175 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not95 = icmp eq i32 %2175, 0 %2176 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.047, float noundef 0xBF56C0FDA0000000) #139 %2177 = call float @llvm.fma.f32(float %.047, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.038 = select i1 %.not95, float %2177, float %2176 br label %__internal_fmad.exit2.i.i.i613 __internal_fmad.exit2.i.i.i613: ; preds = %__internal_trig_reduction_kernel.exit.i.i605, %__internal_fmad.exit1.i.i.i612 %2178 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i605 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i612 ] %2179 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i605 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i612 ] %2180 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i605 ], [ %.038, %__internal_fmad.exit1.i.i.i612 ] %2181 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not89 = icmp eq i32 %2181, 0 %2182 = call float @llvm.nvvm.fma.rn.ftz.f(float %2180, float %.047, float noundef %2179) #139 %2183 = call float @llvm.fma.f32(float %2180, float %.047, float noundef %2179) %.034 = select i1 %.not89, float %2183, float %2182 %2184 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not91 = icmp eq i32 %2184, 0 %2185 = call float @llvm.nvvm.fma.rn.ftz.f(float %.034, float %.047, float noundef %2178) #139 %2186 = call float @llvm.fma.f32(float %.034, float %.047, float noundef %2178) %.027 = select i1 %.not91, float %2186, float %2185 %2187 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not92 = icmp eq i32 %2187, 0 %2188 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %.043, float %2171) #139 %2189 = call float @llvm.fma.f32(float %.027, float %.043, float %2171) %.020 = select i1 %.not92, float %2189, float %2188 %2190 = and i32 %2166, 2 %.not93 = icmp eq i32 %2190, 0 br i1 %.not93, label %__internal_cos_offset_f.exit.i617, label %__internal_fmad.exit5.i.i.i616 __internal_fmad.exit5.i.i.i616: ; preds = %__internal_fmad.exit2.i.i.i613 %2191 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not94 = icmp eq i32 %2191, 0 %2192 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %2193 = call float @llvm.fma.f32(float %.020, float noundef -1.000000e+00, float noundef 0.000000e+00) %.013 = select i1 %.not94, float %2193, float %2192 br label %__internal_cos_offset_f.exit.i617 __internal_cos_offset_f.exit.i617: ; preds = %__internal_fmad.exit5.i.i.i616, %__internal_fmad.exit2.i.i.i613 %z.i.i79.i409.0 = phi float [ %.013, %__internal_fmad.exit5.i.i.i616 ], [ %.020, %__internal_fmad.exit2.i.i.i613 ] %2194 = fmul float %2068, %z.i.i79.i409.0 br label %__nv_y1f.exit618 __nv_y1f.exit618: ; preds = %__internal_accurate_logf.exit.i559, %__internal_fmad.exit29.i571, %__internal_cos_offset_f.exit.i617, %__nv_isinff.exit.i588, %__internal_fmad.exit47.i580, %__internal_fmad.exit11.i562, %1648 %r.i489.5 = phi float [ %1649, %1648 ], [ %.0292, %__internal_accurate_logf.exit.i559 ], [ %1973, %__internal_fmad.exit11.i562 ], [ %2005, %__internal_fmad.exit29.i571 ], [ %2034, %__internal_fmad.exit47.i580 ], [ %2194, %__internal_cos_offset_f.exit.i617 ], [ 0.000000e+00, %__nv_isinff.exit.i588 ] %r.i489.6 = select i1 %551, float 0x7FFFFFFFE0000000, float %r.i489.5 br label %2229 2195: ; preds = %__nv_y0f.exit %2196 = icmp slt i32 %n, 0 %2197 = fcmp ult float %a, 0.000000e+00 %or.cond = select i1 %2196, i1 true, i1 %2197 br i1 %or.cond, label %2229, label %__nv_fabsf.exit __nv_fabsf.exit: ; preds = %2195 %2198 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not336 = icmp eq i32 %2198, 0 %.08 = select i1 %.not336, float %2, float %1 %2199 = fcmp olt float %.08, 0x3810000000000000 br i1 %2199, label %__nv_fabsf.exit620, label %__internal_fmad.exit.lr.ph __nv_fabsf.exit620: ; preds = %__nv_fabsf.exit %2200 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not339 = icmp eq i32 %2200, 0 %.06 = select i1 %.not339, float %2, float %1 %2201 = fdiv float -1.000000e+09, %.06 br label %2229 __internal_fmad.exit.lr.ph: ; preds = %__nv_fabsf.exit %2202 = fdiv float 2.000000e+00, %a %2203 = add nsw i32 %n, -1 %xtraiter = and i32 %2203, 1 %2204 = icmp eq i32 %n, 2 br i1 %2204, label %.__nv_isnanf.exit_crit_edge.unr-lcssa, label %__internal_fmad.exit.lr.ph.new __internal_fmad.exit.lr.ph.new: ; preds = %__internal_fmad.exit.lr.ph %unroll_iter = and i32 %2203, -2 br label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__internal_fmad.exit, %__internal_fmad.exit.lr.ph.new %i.0555 = phi i32 [ 1, %__internal_fmad.exit.lr.ph.new ], [ %2218, %__internal_fmad.exit ] %yim1.0554 = phi float [ %r.i75.5, %__internal_fmad.exit.lr.ph.new ], [ %.02, %__internal_fmad.exit ] %yi.0553 = phi float [ %r.i.6, %__internal_fmad.exit.lr.ph.new ], [ %.02.1, %__internal_fmad.exit ] %niter = phi i32 [ 0, %__internal_fmad.exit.lr.ph.new ], [ %niter.next.1, %__internal_fmad.exit ] %2205 = sitofp i32 %i.0555 to float %2206 = fmul float %2202, %2205 %2207 = fneg float %yim1.0554 %2208 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not338 = icmp eq i32 %2208, 0 %2209 = call float @llvm.nvvm.fma.rn.ftz.f(float %2206, float %yi.0553, float %2207) #139 %2210 = call float @llvm.fma.f32(float %2206, float %yi.0553, float %2207) %.02 = select i1 %.not338, float %2210, float %2209 %2211 = add nuw nsw i32 %i.0555, 1 %2212 = sitofp i32 %2211 to float %2213 = fmul float %2202, %2212 %2214 = fneg float %yi.0553 %2215 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not338.1 = icmp eq i32 %2215, 0 %2216 = call float @llvm.nvvm.fma.rn.ftz.f(float %2213, float %.02, float %2214) #139 %2217 = call float @llvm.fma.f32(float %2213, float %.02, float %2214) %.02.1 = select i1 %.not338.1, float %2217, float %2216 %2218 = add nuw nsw i32 %i.0555, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit, label %__internal_fmad.exit .__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit: ; preds = %__internal_fmad.exit %phi.cast = sitofp i32 %2218 to float br label %.__nv_isnanf.exit_crit_edge.unr-lcssa .__nv_isnanf.exit_crit_edge.unr-lcssa: ; preds = %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit, %__internal_fmad.exit.lr.ph %.02.lcssa.ph = phi float [ undef, %__internal_fmad.exit.lr.ph ], [ %.02.1, %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit ] %i.0555.unr = phi float [ 1.000000e+00, %__internal_fmad.exit.lr.ph ], [ %phi.cast, %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit ] %yim1.0554.unr = phi float [ %r.i75.5, %__internal_fmad.exit.lr.ph ], [ %.02, %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit ] %yi.0553.unr = phi float [ %r.i.6, %__internal_fmad.exit.lr.ph ], [ %.02.1, %.__nv_isnanf.exit_crit_edge.unr-lcssa.loopexit ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %__nv_isnanf.exit, label %__internal_fmad.exit.epil.preheader __internal_fmad.exit.epil.preheader: ; preds = %.__nv_isnanf.exit_crit_edge.unr-lcssa %2219 = fmul float %2202, %i.0555.unr %2220 = fneg float %yim1.0554.unr %2221 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not338.epil = icmp eq i32 %2221, 0 %2222 = call float @llvm.nvvm.fma.rn.ftz.f(float %2219, float %yi.0553.unr, float %2220) #139 %2223 = call float @llvm.fma.f32(float %2219, float %yi.0553.unr, float %2220) %.02.epil = select i1 %.not338.epil, float %2223, float %2222 br label %__nv_isnanf.exit __nv_isnanf.exit: ; preds = %__internal_fmad.exit.epil.preheader, %.__nv_isnanf.exit_crit_edge.unr-lcssa %yip1.0.lcssa = phi float [ %.02.lcssa.ph, %.__nv_isnanf.exit_crit_edge.unr-lcssa ], [ %.02.epil, %__internal_fmad.exit.epil.preheader ] %2224 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not337 = icmp eq i32 %2224, 0 %2225 = call float @llvm.nvvm.fabs.ftz.f(float %yip1.0.lcssa) #139 %2226 = call float @llvm.fabs.f32(float %yip1.0.lcssa) %.0 = select i1 %.not337, float %2226, float %2225 %2227 = fcmp ugt float %.0, 0x7FF0000000000000 br i1 %2227, label %2228, label %2229 2228: ; preds = %__nv_isnanf.exit br label %2229 2229: ; preds = %2195, %__nv_isnanf.exit, %2228, %__nv_fabsf.exit620, %__nv_y1f.exit618, %__nv_y0f.exit406 %.01 = phi float [ %r.i274.5, %__nv_y0f.exit406 ], [ %r.i489.6, %__nv_y1f.exit618 ], [ %2201, %__nv_fabsf.exit620 ], [ 0xFFF0000000000000, %2228 ], [ %yip1.0.lcssa, %__nv_isnanf.exit ], [ 0x7FFFFFFFE0000000, %2195 ] ret float %.01 } ; Function Attrs: noinline nounwind define dso_local float @__nv_jnf(i32 %n, float %a) local_unnamed_addr #48 { %result.i.i.i.i = alloca [7 x i32], align 4 switch i32 %n, label %437 [ i32 0, label %__nv_fabsf.exit.i i32 1, label %__nv_fabsf.exit.i40 ] __nv_fabsf.exit.i: ; preds = %0 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %3 = call float @llvm.fabs.f32(float %a) %.05 = select i1 %.not55, float %3, float %2 %4 = fcmp ugt float %.05, 8.000000e+00 br i1 %4, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__nv_fabsf.exit.i %5 = fadd float %.05, 0xC0033D1520000000 %6 = fadd float %5, 0xBE7D2E3660000000 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not94 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %6, float noundef 0xBD35953660000000) #139 %9 = call float @llvm.fma.f32(float %6, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.06 = select i1 %.not94, float %9, float %8 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not95 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %6, float noundef 0x3D87E1C300000000) #139 %12 = call float @llvm.fma.f32(float %.06, float %6, float noundef 0x3D87E1C300000000) %.07 = select i1 %.not95, float %12, float %11 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not96 = icmp eq i32 %13, 0 %14 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %6, float noundef 0xBD9A82F020000000) #139 %15 = call float @llvm.fma.f32(float %.07, float %6, float noundef 0xBD9A82F020000000) %.09 = select i1 %.not96, float %15, float %14 %16 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not97 = icmp eq i32 %16, 0 %17 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %6, float noundef 0xBDFD21E700000000) #139 %18 = call float @llvm.fma.f32(float %.09, float %6, float noundef 0xBDFD21E700000000) %.010 = select i1 %.not97, float %18, float %17 %19 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not98 = icmp eq i32 %19, 0 %20 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %6, float noundef 0x3E04060B60000000) #139 %21 = call float @llvm.fma.f32(float %.010, float %6, float noundef 0x3E04060B60000000) %.011 = select i1 %.not98, float %21, float %20 %22 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not99 = icmp eq i32 %22, 0 %23 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %6, float noundef 0x3E6F2E2860000000) #139 %24 = call float @llvm.fma.f32(float %.011, float %6, float noundef 0x3E6F2E2860000000) %.012 = select i1 %.not99, float %24, float %23 %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not100 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %6, float noundef 0x3E1EEDF0A0000000) #139 %27 = call float @llvm.fma.f32(float %.012, float %6, float noundef 0x3E1EEDF0A0000000) %.013 = select i1 %.not100, float %27, float %26 %28 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not101 = icmp eq i32 %28, 0 %29 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %6, float noundef 0xBED6DBF8C0000000) #139 %30 = call float @llvm.fma.f32(float %.013, float %6, float noundef 0xBED6DBF8C0000000) %.014 = select i1 %.not101, float %30, float %29 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not102 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %6, float noundef 0xBEDECCB920000000) #139 %33 = call float @llvm.fma.f32(float %.014, float %6, float noundef 0xBEDECCB920000000) %.016 = select i1 %.not102, float %33, float %32 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not103 = icmp eq i32 %34, 0 %35 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %6, float noundef 0x3F33C5BD60000000) #139 %36 = call float @llvm.fma.f32(float %.016, float %6, float noundef 0x3F33C5BD60000000) %.017 = select i1 %.not103, float %36, float %35 %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not104 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %6, float noundef 0x3F495C6680000000) #139 %39 = call float @llvm.fma.f32(float %.017, float %6, float noundef 0x3F495C6680000000) %.018 = select i1 %.not104, float %39, float %38 %40 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not105 = icmp eq i32 %40, 0 %41 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %6, float noundef 0xBF7DD54360000000) #139 %42 = call float @llvm.fma.f32(float %.018, float %6, float noundef 0xBF7DD54360000000) %.019 = select i1 %.not105, float %42, float %41 %43 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not106 = icmp eq i32 %43, 0 %44 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %6, float noundef 0xBF9B4EE8E0000000) #139 %45 = call float @llvm.fma.f32(float %.019, float %6, float noundef 0xBF9B4EE8E0000000) %.020 = select i1 %.not106, float %45, float %44 %46 = fmul float %6, %.020 %47 = fadd float %.05, 0xC016148F60000000 %48 = fadd float %47, 0x3E734F46E0000000 %49 = fmul float %48, %46 %50 = fadd float %.05, 0xC0214EB560000000 %51 = fadd float %50, 0xBE9999BDA0000000 %52 = fmul float %51, %49 br label %__nv_j0f.exit __nv_isinff.exit.i: ; preds = %__nv_fabsf.exit.i %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not56 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fabs.ftz.f(float %.05) #139 %55 = call float @llvm.fabs.f32(float %.05) %.021 = select i1 %.not56, float %55, float %54 %56 = fcmp oeq float %.021, 0x7FF0000000000000 br i1 %56, label %__nv_j0f.exit, label %__internal_fmad.exit13.i __internal_fmad.exit13.i: ; preds = %__nv_isinff.exit.i %57 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.05) #141, !srcloc !73 %58 = fmul float %57, %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %58, float noundef 0xBFE076F840000000) #139 %61 = call float @llvm.fma.f32(float %58, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.023 = select i1 %.not57, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not58 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %58, float noundef 0x3FBA767E60000000) #139 %64 = call float @llvm.fma.f32(float %.023, float %58, float noundef 0x3FBA767E60000000) %.024 = select i1 %.not58, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not59 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %58, float noundef 0xBFAFFFF6C0000000) #139 %67 = call float @llvm.fma.f32(float %.024, float %58, float noundef 0xBFAFFFF6C0000000) %.025 = select i1 %.not59, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float %58, float noundef 1.000000e+00) #139 %70 = call float @llvm.fma.f32(float %.025, float %58, float noundef 1.000000e+00) %.026 = select i1 %.not60, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not61 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %58, float noundef 0xBFCA4825A0000000) #139 %73 = call float @llvm.fma.f32(float %58, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.027 = select i1 %.not61, float %73, float %72 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not62 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %58, float noundef 0x3FB0A9DA20000000) #139 %76 = call float @llvm.fma.f32(float %.027, float %58, float noundef 0x3FB0A9DA20000000) %.028 = select i1 %.not62, float %76, float %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float %58, float noundef 0xBFBFFFFFE0000000) #139 %79 = call float @llvm.fma.f32(float %.028, float %58, float noundef 0xBFBFFFFFE0000000) %.030 = select i1 %.not63, float %79, float %78 %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not64 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float %57, float %.05) #139 %82 = call float @llvm.fma.f32(float %.030, float %57, float %.05) %.031 = select i1 %.not64, float %82, float %81 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %83, 0 br i1 %.not65, label %86, label %84 84: ; preds = %__internal_fmad.exit13.i %85 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.05) #139 br label %__nv_rsqrtf.exit.i 86: ; preds = %__internal_fmad.exit13.i %87 = call float @llvm.nvvm.rsqrt.approx.f(float %.05) #139 br label %__nv_rsqrtf.exit.i __nv_rsqrtf.exit.i: ; preds = %86, %84 %.032 = phi float [ %85, %84 ], [ %87, %86 ] %88 = fmul float %.032, 0x3FE9884540000000 %89 = fmul float %.026, %88 %90 = fmul float %.031, 0x3FE45F3060000000 %91 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not66 = icmp eq i32 %91, 0 %92 = call i32 @llvm.nvvm.f2i.rn.ftz(float %90) #139 %93 = call i32 @llvm.nvvm.f2i.rn(float %90) #139 %.034 = select i1 %.not66, i32 %93, i32 %92 %94 = sitofp i32 %.034 to float %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float %94, float noundef 0xBFF921FB40000000, float %.031) #139 %97 = call float @llvm.fma.f32(float %94, float noundef 0xBFF921FB40000000, float %.031) %.035 = select i1 %.not67, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fma.rn.ftz.f(float %94, float noundef 0xBE74442D00000000, float %.035) #139 %100 = call float @llvm.fma.f32(float %94, float noundef 0xBE74442D00000000, float %.035) %.036 = select i1 %.not68, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not69 = icmp eq i32 %101, 0 %102 = call float @llvm.nvvm.fma.rn.ftz.f(float %94, float noundef 0xBCF84698A0000000, float %.036) #139 %103 = call float @llvm.fma.f32(float %94, float noundef 0xBCF84698A0000000, float %.036) %.037 = select i1 %.not69, float %103, float %102 %104 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not70 = icmp eq i32 %104, 0 %105 = call float @llvm.nvvm.fabs.ftz.f(float %.031) #139 %106 = call float @llvm.fabs.f32(float %.031) %.039 = select i1 %.not70, float %106, float %105 %107 = fcmp ult float %.039, 1.056150e+05 br i1 %107, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__nv_rsqrtf.exit.i %108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not87 = icmp eq i32 %108, 0 %.040 = select i1 %.not87, float %106, float %105 %109 = fcmp oeq float %.040, 0x7FF0000000000000 br i1 %109, label %__nv_fmul_rn.exit.i.i.i, label %113 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %110 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not93 = icmp eq i32 %110, 0 %111 = call float @llvm.nvvm.mul.rn.ftz.f(float %.031, float noundef 0.000000e+00) #139 %112 = fmul float %.031, 0.000000e+00 %.041 = select i1 %.not93, float %112, float %111 br label %__internal_trig_reduction_kernel.exit.i.i 113: ; preds = %__nv_isinff.exit.i.i.i %114 = bitcast float %.031 to i32 %115 = lshr i32 %114, 23 %116 = and i32 %115, 255 %117 = add nsw i32 %116, -128 %118 = shl i32 %114, 8 %119 = or i32 %118, -2147483648 %120 = lshr i32 %117, 5 br label %121 121: ; preds = %113, %121 %iq.i.i.i.i.0233 = phi i32 [ 0, %113 ], [ %129, %121 ] %hi.i.i.i.i.0232 = phi i32 [ 0, %113 ], [ %127, %121 ] %122 = zext i32 %iq.i.i.i.i.0233 to i64 %123 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %122 %124 = load i32, i32 addrspace(1)* %123, align 4 %125 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %124, i32 %119, i32 %hi.i.i.i.i.0232) #141, !srcloc !67 %126 = extractvalue { i32, i32 } %125, 0 %127 = extractvalue { i32, i32 } %125, 1 %128 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %122 store i32 %126, i32* %128, align 4, !noalias !68 %129 = add nuw nsw i32 %iq.i.i.i.i.0233, 1 %exitcond248.not = icmp eq i32 %129, 6 br i1 %exitcond248.not, label %130, label %121, !llvm.loop !71 130: ; preds = %121 %131 = and i32 %114, -2147483648 %132 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %127, i32* %132, align 4, !noalias !68 %133 = and i32 %115, 31 %134 = sub nsw i32 6, %120 %135 = sext i32 %134 to i64 %136 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %135 %137 = load i32, i32* %136, align 4 %138 = sub nsw i32 5, %120 %139 = sext i32 %138 to i64 %140 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %139 %141 = load i32, i32* %140, align 4 %.not88 = icmp eq i32 %133, 0 br i1 %.not88, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %142 142: ; preds = %130 %143 = sub nsw i32 4, %120 %144 = sub nuw nsw i32 32, %133 %145 = shl i32 %137, %133 %146 = lshr i32 %141, %144 %147 = add i32 %146, %145 %148 = shl i32 %141, %133 %149 = sext i32 %143 to i64 %150 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %149 %151 = load i32, i32* %150, align 4 %152 = lshr i32 %151, %144 %153 = add i32 %152, %148 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %142, %130 %hi.i.i.i.i.1 = phi i32 [ %147, %142 ], [ %137, %130 ] %lo.i.i.i.i.0 = phi i32 [ %153, %142 ], [ %141, %130 ] %154 = lshr i32 %hi.i.i.i.i.1, 30 %155 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 noundef 2) %156 = shl i32 %lo.i.i.i.i.0, 2 %157 = lshr i32 %155, 31 %158 = add nuw nsw i32 %157, %154 %.not89 = icmp eq i32 %131, 0 %159 = sub nsw i32 0, %158 %spec.select = select i1 %.not89, i32 %158, i32 %159 %.not90 = icmp sgt i32 %155, -1 %160 = xor i32 %131, -2147483648 %s.i.i.i.i.0 = select i1 %.not90, i32 %131, i32 %160 %not..not90 = xor i1 %.not90, true %161 = sext i1 %not..not90 to i32 %hi.i.i.i.i.2 = xor i32 %155, %161 %lo.i.i.i.i.1 = xor i32 %156, %161 %162 = zext i32 %hi.i.i.i.i.2 to i64 %163 = shl nuw i64 %162, 32 %164 = zext i32 %lo.i.i.i.i.1 to i64 %165 = or i64 %163, %164 %166 = sitofp i64 %165 to double %167 = fmul double %166, 0x3BF921FB54442D19 %168 = fptrunc double %167 to float %.not92 = icmp eq i32 %s.i.i.i.i.0, 0 %169 = fneg float %168 %r.i.i.i.i.0 = select i1 %.not92, float %168, float %169 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__nv_rsqrtf.exit.i %i.i.i.1 = phi i32 [ %.034, %__nv_rsqrtf.exit.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %.037, %__nv_rsqrtf.exit.i ], [ %.041, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %170 = and i32 %i.i.i.1, 3 %171 = uitofp i32 %170 to float %172 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %172, 0 %173 = call float @llvm.nvvm.fma.rn.ftz.f(float %171, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %174 = call float @llvm.fma.f32(float %171, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.044 = select i1 %.not71, float %174, float %173 %175 = fadd float %t.i.i.i.1, %.044 %176 = fmul float %175, 0x3FE45F3060000000 %177 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %177, 0 %178 = call i32 @llvm.nvvm.f2i.rn.ftz(float %176) #139 %179 = call i32 @llvm.nvvm.f2i.rn(float %176) #139 %.045 = select i1 %.not72, i32 %179, i32 %178 %180 = sitofp i32 %.045 to float %181 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %181, 0 %182 = call float @llvm.nvvm.fma.rn.ftz.f(float %180, float noundef 0xBFF921FB40000000, float %175) #139 %183 = call float @llvm.fma.f32(float %180, float noundef 0xBFF921FB40000000, float %175) %.046 = select i1 %.not73, float %183, float %182 %184 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %184, 0 %185 = call float @llvm.nvvm.fma.rn.ftz.f(float %180, float noundef 0xBE74442D00000000, float %.046) #139 %186 = call float @llvm.fma.f32(float %180, float noundef 0xBE74442D00000000, float %.046) %.048 = select i1 %.not74, float %186, float %185 %187 = add i32 %.045, 1 %188 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %188, 0 %189 = call float @llvm.nvvm.mul.rn.ftz.f(float %.048, float %.048) #139 %190 = fmul float %.048, %.048 %.050 = select i1 %.not75, float %190, float %189 %191 = and i32 %187, 1 %.not76 = icmp eq i32 %191, 0 %192 = select i1 %.not76, float %.048, float 1.000000e+00 %193 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %193, 0 %194 = call float @llvm.nvvm.fma.rn.ftz.f(float %.050, float %192, float noundef 0.000000e+00) #139 %195 = call float @llvm.fma.f32(float %.050, float %192, float noundef 0.000000e+00) %.051 = select i1 %.not77, float %195, float %194 br i1 %.not76, label %__internal_fmad.exit2.i.i.i, label %__internal_fmad.exit1.i.i.i __internal_fmad.exit1.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i %196 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not86 = icmp eq i32 %196, 0 %197 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.050, float noundef 0xBF56C0FDA0000000) #139 %198 = call float @llvm.fma.f32(float %.050, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.052 = select i1 %.not86, float %198, float %197 br label %__internal_fmad.exit2.i.i.i __internal_fmad.exit2.i.i.i: ; preds = %__internal_trig_reduction_kernel.exit.i.i, %__internal_fmad.exit1.i.i.i %199 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i ] %200 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i ] %201 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i ], [ %.052, %__internal_fmad.exit1.i.i.i ] %202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %202, 0 %203 = call float @llvm.nvvm.fma.rn.ftz.f(float %201, float %.050, float noundef %200) #139 %204 = call float @llvm.fma.f32(float %201, float %.050, float noundef %200) %.053 = select i1 %.not80, float %204, float %203 %205 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %205, 0 %206 = call float @llvm.nvvm.fma.rn.ftz.f(float %.053, float %.050, float noundef %199) #139 %207 = call float @llvm.fma.f32(float %.053, float %.050, float noundef %199) %.054 = select i1 %.not82, float %207, float %206 %208 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %208, 0 %209 = call float @llvm.nvvm.fma.rn.ftz.f(float %.054, float %.051, float %192) #139 %210 = call float @llvm.fma.f32(float %.054, float %.051, float %192) %.055 = select i1 %.not83, float %210, float %209 %211 = and i32 %187, 2 %.not84 = icmp eq i32 %211, 0 br i1 %.not84, label %__internal_cos_offset_f.exit.i, label %__internal_fmad.exit5.i.i.i __internal_fmad.exit5.i.i.i: ; preds = %__internal_fmad.exit2.i.i.i %212 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not85 = icmp eq i32 %212, 0 %213 = call float @llvm.nvvm.fma.rn.ftz.f(float %.055, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %214 = call float @llvm.fma.f32(float %.055, float noundef -1.000000e+00, float noundef 0.000000e+00) %.056 = select i1 %.not85, float %214, float %213 br label %__internal_cos_offset_f.exit.i __internal_cos_offset_f.exit.i: ; preds = %__internal_fmad.exit5.i.i.i, %__internal_fmad.exit2.i.i.i %z.i.i.i.0 = phi float [ %.056, %__internal_fmad.exit5.i.i.i ], [ %.055, %__internal_fmad.exit2.i.i.i ] %215 = fmul float %89, %z.i.i.i.0 br label %__nv_j0f.exit __nv_fabsf.exit.i40: ; preds = %0 %216 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %216, 0 %217 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %218 = call float @llvm.fabs.f32(float %a) %.057 = select i1 %.not, float %218, float %217 %219 = fcmp ugt float %.057, 8.000000e+00 br i1 %219, label %__nv_isinff.exit.i53, label %__internal_fmad.exit.i41 __internal_fmad.exit.i41: ; preds = %__nv_fabsf.exit.i40 %220 = fadd float %.057, 0xC00EA75580000000 %221 = fadd float %220, 0x3E74A121E0000000 %222 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %222, 0 %223 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %221, float noundef 0x3D7037E840000000) #139 %224 = call float @llvm.fma.f32(float %221, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.058 = select i1 %.not43, float %224, float %223 %225 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %225, 0 %226 = call float @llvm.nvvm.fma.rn.ftz.f(float %.058, float %221, float noundef 0xBDBC43D820000000) #139 %227 = call float @llvm.fma.f32(float %.058, float %221, float noundef 0xBDBC43D820000000) %.059 = select i1 %.not44, float %227, float %226 %228 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %228, 0 %229 = call float @llvm.nvvm.fma.rn.ftz.f(float %.059, float %221, float noundef 0xBDEBBBDFE0000000) #139 %230 = call float @llvm.fma.f32(float %.059, float %221, float noundef 0xBDEBBBDFE0000000) %.060 = select i1 %.not45, float %230, float %229 %231 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %231, 0 %232 = call float @llvm.nvvm.fma.rn.ftz.f(float %.060, float %221, float noundef 0x3E336193A0000000) #139 %233 = call float @llvm.fma.f32(float %.060, float %221, float noundef 0x3E336193A0000000) %.061 = select i1 %.not46, float %233, float %232 %234 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %234, 0 %235 = call float @llvm.nvvm.fma.rn.ftz.f(float %.061, float %221, float noundef 0x3E5D022E60000000) #139 %236 = call float @llvm.fma.f32(float %.061, float %221, float noundef 0x3E5D022E60000000) %.062 = select i1 %.not47, float %236, float %235 %237 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %237, 0 %238 = call float @llvm.nvvm.fma.rn.ftz.f(float %.062, float %221, float noundef 0xBEA1F1B900000000) #139 %239 = call float @llvm.fma.f32(float %.062, float %221, float noundef 0xBEA1F1B900000000) %.063 = select i1 %.not48, float %239, float %238 %240 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %240, 0 %241 = call float @llvm.nvvm.fma.rn.ftz.f(float %.063, float %221, float noundef 0xBEC3CCA7A0000000) #139 %242 = call float @llvm.fma.f32(float %.063, float %221, float noundef 0xBEC3CCA7A0000000) %.064 = select i1 %.not49, float %242, float %241 %243 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %243, 0 %244 = call float @llvm.nvvm.fma.rn.ftz.f(float %.064, float %221, float noundef 0x3F059B38A0000000) #139 %245 = call float @llvm.fma.f32(float %.064, float %221, float noundef 0x3F059B38A0000000) %.065 = select i1 %.not50, float %245, float %244 %246 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %246, 0 %247 = call float @llvm.nvvm.fma.rn.ftz.f(float %.065, float %221, float noundef 0x3F1F3D6200000000) #139 %248 = call float @llvm.fma.f32(float %.065, float %221, float noundef 0x3F1F3D6200000000) %.066 = select i1 %.not51, float %248, float %247 %249 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %249, 0 %250 = call float @llvm.nvvm.fma.rn.ftz.f(float %.066, float %221, float noundef 0xBF5D9D7380000000) #139 %251 = call float @llvm.fma.f32(float %.066, float %221, float noundef 0xBF5D9D7380000000) %.067 = select i1 %.not52, float %251, float %250 %252 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %252, 0 %253 = call float @llvm.nvvm.fma.rn.ftz.f(float %.067, float %221, float noundef 0xBF64EDFFA0000000) #139 %254 = call float @llvm.fma.f32(float %.067, float %221, float noundef 0xBF64EDFFA0000000) %.068 = select i1 %.not53, float %254, float %253 %255 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %255, 0 %256 = call float @llvm.nvvm.fma.rn.ftz.f(float %.068, float %221, float noundef 0x3FA0E73260000000) #139 %257 = call float @llvm.fma.f32(float %.068, float %221, float noundef 0x3FA0E73260000000) %.070 = select i1 %.not54, float %257, float %256 %258 = fadd float %.057, 0xC01C0FF600000000 %259 = fadd float %258, 0x3E88971B60000000 %260 = fmul float %259, %.070 %261 = fmul float %221, %260 %262 = fmul float %.057, %261 br label %426 __nv_isinff.exit.i53: ; preds = %__nv_fabsf.exit.i40 %263 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %263, 0 %264 = call float @llvm.nvvm.fabs.ftz.f(float %.057) #139 %265 = call float @llvm.fabs.f32(float %.057) %.071 = select i1 %.not5, float %265, float %264 %266 = fcmp oeq float %.071, 0x7FF0000000000000 br i1 %266, label %426, label %__internal_fmad.exit12.i54 __internal_fmad.exit12.i54: ; preds = %__nv_isinff.exit.i53 %267 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.057) #141, !srcloc !73 %268 = fmul float %267, %267 %269 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %269, 0 %270 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %268, float noundef 0x3FE7FEFD20000000) #139 %271 = call float @llvm.fma.f32(float %268, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.072 = select i1 %.not6, float %271, float %270 %272 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %272, 0 %273 = call float @llvm.nvvm.fma.rn.ftz.f(float %.072, float %268, float noundef 0xBFC8B175C0000000) #139 %274 = call float @llvm.fma.f32(float %.072, float %268, float noundef 0xBFC8B175C0000000) %.073 = select i1 %.not7, float %274, float %273 %275 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %275, 0 %276 = call float @llvm.nvvm.fma.rn.ftz.f(float %.073, float %268, float noundef 0x3FC7FFF160000000) #139 %277 = call float @llvm.fma.f32(float %.073, float %268, float noundef 0x3FC7FFF160000000) %.075 = select i1 %.not8, float %277, float %276 %278 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %278, 0 %279 = call float @llvm.nvvm.fma.rn.ftz.f(float %.075, float %268, float noundef 1.000000e+00) #139 %280 = call float @llvm.fma.f32(float %.075, float %268, float noundef 1.000000e+00) %.076 = select i1 %.not9, float %280, float %279 %281 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %281, 0 %282 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %268, float noundef 0x3FD72295A0000000) #139 %283 = call float @llvm.fma.f32(float %268, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.078 = select i1 %.not10, float %283, float %282 %284 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %284, 0 %285 = call float @llvm.nvvm.fma.rn.ftz.f(float %.078, float %268, float noundef 0xBFC4FE5D80000000) #139 %286 = call float @llvm.fma.f32(float %.078, float %268, float noundef 0xBFC4FE5D80000000) %.080 = select i1 %.not11, float %286, float %285 %287 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %287, 0 %288 = call float @llvm.nvvm.fma.rn.ftz.f(float %.080, float %268, float noundef 0x3FD7FFFFA0000000) #139 %289 = call float @llvm.fma.f32(float %.080, float %268, float noundef 0x3FD7FFFFA0000000) %.081 = select i1 %.not12, float %289, float %288 %290 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %290, 0 %291 = call float @llvm.nvvm.fma.rn.ftz.f(float %.081, float %267, float %.057) #139 %292 = call float @llvm.fma.f32(float %.081, float %267, float %.057) %.082 = select i1 %.not13, float %292, float %291 %293 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %293, 0 br i1 %.not14, label %296, label %294 294: ; preds = %__internal_fmad.exit12.i54 %295 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.057) #139 br label %__nv_rsqrtf.exit.i62 296: ; preds = %__internal_fmad.exit12.i54 %297 = call float @llvm.nvvm.rsqrt.approx.f(float %.057) #139 br label %__nv_rsqrtf.exit.i62 __nv_rsqrtf.exit.i62: ; preds = %296, %294 %.084 = phi float [ %295, %294 ], [ %297, %296 ] %298 = fmul float %.084, 0x3FE9884540000000 %299 = fmul float %.076, %298 %300 = fmul float %.082, 0x3FE45F3060000000 %301 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %301, 0 %302 = call i32 @llvm.nvvm.f2i.rn.ftz(float %300) #139 %303 = call i32 @llvm.nvvm.f2i.rn(float %300) #139 %.087 = select i1 %.not15, i32 %303, i32 %302 %304 = sitofp i32 %.087 to float %305 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %305, 0 %306 = call float @llvm.nvvm.fma.rn.ftz.f(float %304, float noundef 0xBFF921FB40000000, float %.082) #139 %307 = call float @llvm.fma.f32(float %304, float noundef 0xBFF921FB40000000, float %.082) %.088 = select i1 %.not16, float %307, float %306 %308 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %308, 0 %309 = call float @llvm.nvvm.fma.rn.ftz.f(float %304, float noundef 0xBE74442D00000000, float %.088) #139 %310 = call float @llvm.fma.f32(float %304, float noundef 0xBE74442D00000000, float %.088) %.089 = select i1 %.not17, float %310, float %309 %311 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %311, 0 %312 = call float @llvm.nvvm.fma.rn.ftz.f(float %304, float noundef 0xBCF84698A0000000, float %.089) #139 %313 = call float @llvm.fma.f32(float %304, float noundef 0xBCF84698A0000000, float %.089) %.090 = select i1 %.not18, float %313, float %312 %314 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %314, 0 %315 = call float @llvm.nvvm.fabs.ftz.f(float %.082) #139 %316 = call float @llvm.fabs.f32(float %.082) %.091 = select i1 %.not19, float %316, float %315 %317 = fcmp ult float %.091, 1.056150e+05 br i1 %317, label %__internal_trig_reduction_kernel.exit.i.i71, label %__nv_isinff.exit.i.i.i68 __nv_isinff.exit.i.i.i68: ; preds = %__nv_rsqrtf.exit.i62 %318 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not36 = icmp eq i32 %318, 0 %.092 = select i1 %.not36, float %316, float %315 %319 = fcmp oeq float %.092, 0x7FF0000000000000 br i1 %319, label %__nv_fmul_rn.exit.i.i.i69, label %323 __nv_fmul_rn.exit.i.i.i69: ; preds = %__nv_isinff.exit.i.i.i68 %320 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %320, 0 %321 = call float @llvm.nvvm.mul.rn.ftz.f(float %.082, float noundef 0.000000e+00) #139 %322 = fmul float %.082, 0.000000e+00 %.094 = select i1 %.not42, float %322, float %321 br label %__internal_trig_reduction_kernel.exit.i.i71 323: ; preds = %__nv_isinff.exit.i.i.i68 %324 = bitcast float %.082 to i32 %325 = lshr i32 %324, 23 %326 = and i32 %325, 255 %327 = add nsw i32 %326, -128 %328 = shl i32 %324, 8 %329 = or i32 %328, -2147483648 %330 = lshr i32 %327, 5 br label %331 331: ; preds = %323, %331 %iq.i.i.i.i18.0235 = phi i32 [ 0, %323 ], [ %339, %331 ] %hi.i.i.i.i13.0234 = phi i32 [ 0, %323 ], [ %337, %331 ] %332 = zext i32 %iq.i.i.i.i18.0235 to i64 %333 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %332 %334 = load i32, i32 addrspace(1)* %333, align 4 %335 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %334, i32 %329, i32 %hi.i.i.i.i13.0234) #141, !srcloc !67 %336 = extractvalue { i32, i32 } %335, 0 %337 = extractvalue { i32, i32 } %335, 1 %338 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %332 store i32 %336, i32* %338, align 4, !noalias !68 %339 = add nuw nsw i32 %iq.i.i.i.i18.0235, 1 %exitcond249.not = icmp eq i32 %339, 6 br i1 %exitcond249.not, label %340, label %331, !llvm.loop !71 340: ; preds = %331 %341 = and i32 %324, -2147483648 %342 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %337, i32* %342, align 4, !noalias !68 %343 = and i32 %325, 31 %344 = sub nsw i32 6, %330 %345 = sext i32 %344 to i64 %346 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %345 %347 = load i32, i32* %346, align 4 %348 = sub nsw i32 5, %330 %349 = sext i32 %348 to i64 %350 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %349 %351 = load i32, i32* %350, align 4 %.not37 = icmp eq i32 %343, 0 br i1 %.not37, label %__internal_trig_reduction_slowpath.exit.i.i.i70, label %352 352: ; preds = %340 %353 = sub nsw i32 4, %330 %354 = sub nuw nsw i32 32, %343 %355 = shl i32 %347, %343 %356 = lshr i32 %351, %354 %357 = add i32 %356, %355 %358 = shl i32 %351, %343 %359 = sext i32 %353 to i64 %360 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %359 %361 = load i32, i32* %360, align 4 %362 = lshr i32 %361, %354 %363 = add i32 %362, %358 br label %__internal_trig_reduction_slowpath.exit.i.i.i70 __internal_trig_reduction_slowpath.exit.i.i.i70: ; preds = %352, %340 %hi.i.i.i.i13.1 = phi i32 [ %357, %352 ], [ %347, %340 ] %lo.i.i.i.i14.0 = phi i32 [ %363, %352 ], [ %351, %340 ] %364 = lshr i32 %hi.i.i.i.i13.1, 30 %365 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i13.1, i32 %lo.i.i.i.i14.0, i32 noundef 2) %366 = shl i32 %lo.i.i.i.i14.0, 2 %367 = lshr i32 %365, 31 %368 = add nuw nsw i32 %367, %364 %.not38 = icmp eq i32 %341, 0 %369 = sub nsw i32 0, %368 %spec.select1 = select i1 %.not38, i32 %368, i32 %369 %.not39 = icmp sgt i32 %365, -1 %370 = xor i32 %341, -2147483648 %s.i.i.i.i11.0 = select i1 %.not39, i32 %341, i32 %370 %not..not39 = xor i1 %.not39, true %371 = sext i1 %not..not39 to i32 %hi.i.i.i.i13.2 = xor i32 %365, %371 %lo.i.i.i.i14.1 = xor i32 %366, %371 %372 = zext i32 %hi.i.i.i.i13.2 to i64 %373 = shl nuw i64 %372, 32 %374 = zext i32 %lo.i.i.i.i14.1 to i64 %375 = or i64 %373, %374 %376 = sitofp i64 %375 to double %377 = fmul double %376, 0x3BF921FB54442D19 %378 = fptrunc double %377 to float %.not41 = icmp eq i32 %s.i.i.i.i11.0, 0 %379 = fneg float %378 %r.i.i.i.i22.0 = select i1 %.not41, float %378, float %379 br label %__internal_trig_reduction_kernel.exit.i.i71 __internal_trig_reduction_kernel.exit.i.i71: ; preds = %__nv_fmul_rn.exit.i.i.i69, %__internal_trig_reduction_slowpath.exit.i.i.i70, %__nv_rsqrtf.exit.i62 %i.i.i28.1 = phi i32 [ %.087, %__nv_rsqrtf.exit.i62 ], [ 0, %__nv_fmul_rn.exit.i.i.i69 ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i.i70 ] %t.i.i.i25.1 = phi float [ %.090, %__nv_rsqrtf.exit.i62 ], [ %.094, %__nv_fmul_rn.exit.i.i.i69 ], [ %r.i.i.i.i22.0, %__internal_trig_reduction_slowpath.exit.i.i.i70 ] %380 = and i32 %i.i.i28.1, 3 %381 = uitofp i32 %380 to float %382 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %382, 0 %383 = call float @llvm.nvvm.fma.rn.ftz.f(float %381, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %384 = call float @llvm.fma.f32(float %381, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.097 = select i1 %.not20, float %384, float %383 %385 = fadd float %t.i.i.i25.1, %.097 %386 = fmul float %385, 0x3FE45F3060000000 %387 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %387, 0 %388 = call i32 @llvm.nvvm.f2i.rn.ftz(float %386) #139 %389 = call i32 @llvm.nvvm.f2i.rn(float %386) #139 %.098 = select i1 %.not21, i32 %389, i32 %388 %390 = sitofp i32 %.098 to float %391 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %391, 0 %392 = call float @llvm.nvvm.fma.rn.ftz.f(float %390, float noundef 0xBFF921FB40000000, float %385) #139 %393 = call float @llvm.fma.f32(float %390, float noundef 0xBFF921FB40000000, float %385) %.099 = select i1 %.not22, float %393, float %392 %394 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %394, 0 %395 = call float @llvm.nvvm.fma.rn.ftz.f(float %390, float noundef 0xBE74442D00000000, float %.099) #139 %396 = call float @llvm.fma.f32(float %390, float noundef 0xBE74442D00000000, float %.099) %.0100 = select i1 %.not23, float %396, float %395 %397 = add i32 %.098, 1 %398 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %398, 0 %399 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0100, float %.0100) #139 %400 = fmul float %.0100, %.0100 %.0102 = select i1 %.not24, float %400, float %399 %401 = and i32 %397, 1 %.not25 = icmp eq i32 %401, 0 %402 = select i1 %.not25, float %.0100, float 1.000000e+00 %403 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %403, 0 %404 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0102, float %402, float noundef 0.000000e+00) #139 %405 = call float @llvm.fma.f32(float %.0102, float %402, float noundef 0.000000e+00) %.0103 = select i1 %.not26, float %405, float %404 br i1 %.not25, label %__internal_fmad.exit2.i.i.i79, label %__internal_fmad.exit1.i.i.i78 __internal_fmad.exit1.i.i.i78: ; preds = %__internal_trig_reduction_kernel.exit.i.i71 %406 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not35 = icmp eq i32 %406, 0 %407 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0102, float noundef 0xBF56C0FDA0000000) #139 %408 = call float @llvm.fma.f32(float %.0102, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0104 = select i1 %.not35, float %408, float %407 br label %__internal_fmad.exit2.i.i.i79 __internal_fmad.exit2.i.i.i79: ; preds = %__internal_trig_reduction_kernel.exit.i.i71, %__internal_fmad.exit1.i.i.i78 %409 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i71 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i78 ] %410 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i71 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i78 ] %411 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i71 ], [ %.0104, %__internal_fmad.exit1.i.i.i78 ] %412 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %412, 0 %413 = call float @llvm.nvvm.fma.rn.ftz.f(float %411, float %.0102, float noundef %410) #139 %414 = call float @llvm.fma.f32(float %411, float %.0102, float noundef %410) %.0105 = select i1 %.not29, float %414, float %413 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %415, 0 %416 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0105, float %.0102, float noundef %409) #139 %417 = call float @llvm.fma.f32(float %.0105, float %.0102, float noundef %409) %.0106 = select i1 %.not31, float %417, float %416 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %418, 0 %419 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0106, float %.0103, float %402) #139 %420 = call float @llvm.fma.f32(float %.0106, float %.0103, float %402) %.0108 = select i1 %.not32, float %420, float %419 %421 = and i32 %397, 2 %.not33 = icmp eq i32 %421, 0 br i1 %.not33, label %__internal_cos_offset_f.exit.i83, label %__internal_fmad.exit5.i.i.i82 __internal_fmad.exit5.i.i.i82: ; preds = %__internal_fmad.exit2.i.i.i79 %422 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not34 = icmp eq i32 %422, 0 %423 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0108, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %424 = call float @llvm.fma.f32(float %.0108, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0109 = select i1 %.not34, float %424, float %423 br label %__internal_cos_offset_f.exit.i83 __internal_cos_offset_f.exit.i83: ; preds = %__internal_fmad.exit5.i.i.i82, %__internal_fmad.exit2.i.i.i79 %z.i.i.i4.0 = phi float [ %.0109, %__internal_fmad.exit5.i.i.i82 ], [ %.0108, %__internal_fmad.exit2.i.i.i79 ] %425 = fmul float %299, %z.i.i.i4.0 br label %426 426: ; preds = %__internal_cos_offset_f.exit.i83, %__nv_isinff.exit.i53, %__internal_fmad.exit.i41 %r.i34.1 = phi float [ %262, %__internal_fmad.exit.i41 ], [ %425, %__internal_cos_offset_f.exit.i83 ], [ 0.000000e+00, %__nv_isinff.exit.i53 ] %427 = fcmp olt float %a, 0.000000e+00 %428 = fneg float %r.i34.1 %r.i34.2 = select i1 %427, float %428, float %r.i34.1 %429 = fcmp olt float %.057, 0x39B4484C00000000 br i1 %429, label %430, label %__nv_j0f.exit 430: ; preds = %426 %431 = bitcast float %a to i32 %432 = and i32 %431, -2147483648 %433 = bitcast float %r.i34.2 to i32 %434 = and i32 %433, 2147483647 %435 = or i32 %434, %432 %436 = bitcast i32 %435 to float br label %__nv_j0f.exit 437: ; preds = %0 %438 = icmp slt i32 %n, 0 br i1 %438, label %__nv_j0f.exit, label %__nv_fabsf.exit __nv_fabsf.exit: ; preds = %437 %439 = icmp ugt i32 %n, 4 %440 = zext i1 %439 to i32 %441 = add nuw nsw i32 %440, %n %442 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not107 = icmp eq i32 %442, 0 %443 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %444 = call float @llvm.fabs.f32(float %a) %.0110 = select i1 %.not107, float %444, float %443 %445 = sitofp i32 %441 to float %446 = fcmp ogt float %.0110, %445 br i1 %446, label %__nv_fabsf.exit.i124, label %897 __nv_fabsf.exit.i124: ; preds = %__nv_fabsf.exit %447 = fdiv float 2.000000e+00, %a %448 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not113 = icmp eq i32 %448, 0 %.0112 = select i1 %.not113, float %444, float %443 %449 = fcmp ugt float %.0112, 8.000000e+00 br i1 %449, label %__nv_isinff.exit.i137, label %__internal_fmad.exit.i125 __internal_fmad.exit.i125: ; preds = %__nv_fabsf.exit.i124 %450 = fadd float %.0112, 0xC00EA75580000000 %451 = fadd float %450, 0x3E74A121E0000000 %452 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not205 = icmp eq i32 %452, 0 %453 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3D35E68C60000000, float %451, float noundef 0x3D7037E840000000) #139 %454 = call float @llvm.fma.f32(float %451, float noundef 0x3D35E68C60000000, float noundef 0x3D7037E840000000) %.0113 = select i1 %.not205, float %454, float %453 %455 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not206 = icmp eq i32 %455, 0 %456 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0113, float %451, float noundef 0xBDBC43D820000000) #139 %457 = call float @llvm.fma.f32(float %.0113, float %451, float noundef 0xBDBC43D820000000) %.0114 = select i1 %.not206, float %457, float %456 %458 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not207 = icmp eq i32 %458, 0 %459 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0114, float %451, float noundef 0xBDEBBBDFE0000000) #139 %460 = call float @llvm.fma.f32(float %.0114, float %451, float noundef 0xBDEBBBDFE0000000) %.0115 = select i1 %.not207, float %460, float %459 %461 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not208 = icmp eq i32 %461, 0 %462 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0115, float %451, float noundef 0x3E336193A0000000) #139 %463 = call float @llvm.fma.f32(float %.0115, float %451, float noundef 0x3E336193A0000000) %.0116 = select i1 %.not208, float %463, float %462 %464 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not209 = icmp eq i32 %464, 0 %465 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0116, float %451, float noundef 0x3E5D022E60000000) #139 %466 = call float @llvm.fma.f32(float %.0116, float %451, float noundef 0x3E5D022E60000000) %.0117 = select i1 %.not209, float %466, float %465 %467 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not210 = icmp eq i32 %467, 0 %468 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0117, float %451, float noundef 0xBEA1F1B900000000) #139 %469 = call float @llvm.fma.f32(float %.0117, float %451, float noundef 0xBEA1F1B900000000) %.0119 = select i1 %.not210, float %469, float %468 %470 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not211 = icmp eq i32 %470, 0 %471 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0119, float %451, float noundef 0xBEC3CCA7A0000000) #139 %472 = call float @llvm.fma.f32(float %.0119, float %451, float noundef 0xBEC3CCA7A0000000) %.0120 = select i1 %.not211, float %472, float %471 %473 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not212 = icmp eq i32 %473, 0 %474 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0120, float %451, float noundef 0x3F059B38A0000000) #139 %475 = call float @llvm.fma.f32(float %.0120, float %451, float noundef 0x3F059B38A0000000) %.0121 = select i1 %.not212, float %475, float %474 %476 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not213 = icmp eq i32 %476, 0 %477 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0121, float %451, float noundef 0x3F1F3D6200000000) #139 %478 = call float @llvm.fma.f32(float %.0121, float %451, float noundef 0x3F1F3D6200000000) %.0122 = select i1 %.not213, float %478, float %477 %479 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not214 = icmp eq i32 %479, 0 %480 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0122, float %451, float noundef 0xBF5D9D7380000000) #139 %481 = call float @llvm.fma.f32(float %.0122, float %451, float noundef 0xBF5D9D7380000000) %.0123 = select i1 %.not214, float %481, float %480 %482 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not215 = icmp eq i32 %482, 0 %483 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0123, float %451, float noundef 0xBF64EDFFA0000000) #139 %484 = call float @llvm.fma.f32(float %.0123, float %451, float noundef 0xBF64EDFFA0000000) %.0124 = select i1 %.not215, float %484, float %483 %485 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not216 = icmp eq i32 %485, 0 %486 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0124, float %451, float noundef 0x3FA0E73260000000) #139 %487 = call float @llvm.fma.f32(float %.0124, float %451, float noundef 0x3FA0E73260000000) %.0126 = select i1 %.not216, float %487, float %486 %488 = fadd float %.0112, 0xC01C0FF600000000 %489 = fadd float %488, 0x3E88971B60000000 %490 = fmul float %489, %.0126 %491 = fmul float %451, %490 %492 = fmul float %.0112, %491 br label %656 __nv_isinff.exit.i137: ; preds = %__nv_fabsf.exit.i124 %493 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not114 = icmp eq i32 %493, 0 %494 = call float @llvm.nvvm.fabs.ftz.f(float %.0112) #139 %495 = call float @llvm.fabs.f32(float %.0112) %.0127 = select i1 %.not114, float %495, float %494 %496 = fcmp oeq float %.0127, 0x7FF0000000000000 br i1 %496, label %656, label %__internal_fmad.exit12.i138 __internal_fmad.exit12.i138: ; preds = %__nv_isinff.exit.i137 %497 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0112) #141, !srcloc !73 %498 = fmul float %497, %497 %499 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not115 = icmp eq i32 %499, 0 %500 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC0105966E0000000, float %498, float noundef 0x3FE7FEFD20000000) #139 %501 = call float @llvm.fma.f32(float %498, float noundef 0xC0105966E0000000, float noundef 0x3FE7FEFD20000000) %.0128 = select i1 %.not115, float %501, float %500 %502 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not116 = icmp eq i32 %502, 0 %503 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0128, float %498, float noundef 0xBFC8B175C0000000) #139 %504 = call float @llvm.fma.f32(float %.0128, float %498, float noundef 0xBFC8B175C0000000) %.0129 = select i1 %.not116, float %504, float %503 %505 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not117 = icmp eq i32 %505, 0 %506 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0129, float %498, float noundef 0x3FC7FFF160000000) #139 %507 = call float @llvm.fma.f32(float %.0129, float %498, float noundef 0x3FC7FFF160000000) %.0130 = select i1 %.not117, float %507, float %506 %508 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not118 = icmp eq i32 %508, 0 %509 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0130, float %498, float noundef 1.000000e+00) #139 %510 = call float @llvm.fma.f32(float %.0130, float %498, float noundef 1.000000e+00) %.0131 = select i1 %.not118, float %510, float %509 %511 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not119 = icmp eq i32 %511, 0 %512 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFF9477440000000, float %498, float noundef 0x3FD72295A0000000) #139 %513 = call float @llvm.fma.f32(float %498, float noundef 0xBFF9477440000000, float noundef 0x3FD72295A0000000) %.0133 = select i1 %.not119, float %513, float %512 %514 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not120 = icmp eq i32 %514, 0 %515 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0133, float %498, float noundef 0xBFC4FE5D80000000) #139 %516 = call float @llvm.fma.f32(float %.0133, float %498, float noundef 0xBFC4FE5D80000000) %.0134 = select i1 %.not120, float %516, float %515 %517 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not121 = icmp eq i32 %517, 0 %518 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0134, float %498, float noundef 0x3FD7FFFFA0000000) #139 %519 = call float @llvm.fma.f32(float %.0134, float %498, float noundef 0x3FD7FFFFA0000000) %.0135 = select i1 %.not121, float %519, float %518 %520 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not122 = icmp eq i32 %520, 0 %521 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0135, float %497, float %.0112) #139 %522 = call float @llvm.fma.f32(float %.0135, float %497, float %.0112) %.0136 = select i1 %.not122, float %522, float %521 %523 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not123 = icmp eq i32 %523, 0 br i1 %.not123, label %526, label %524 524: ; preds = %__internal_fmad.exit12.i138 %525 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0112) #139 br label %__nv_rsqrtf.exit.i146 526: ; preds = %__internal_fmad.exit12.i138 %527 = call float @llvm.nvvm.rsqrt.approx.f(float %.0112) #139 br label %__nv_rsqrtf.exit.i146 __nv_rsqrtf.exit.i146: ; preds = %526, %524 %.0137 = phi float [ %525, %524 ], [ %527, %526 ] %528 = fmul float %.0137, 0x3FE9884540000000 %529 = fmul float %.0131, %528 %530 = fmul float %.0136, 0x3FE45F3060000000 %531 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not124 = icmp eq i32 %531, 0 %532 = call i32 @llvm.nvvm.f2i.rn.ftz(float %530) #139 %533 = call i32 @llvm.nvvm.f2i.rn(float %530) #139 %.0139 = select i1 %.not124, i32 %533, i32 %532 %534 = sitofp i32 %.0139 to float %535 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not125 = icmp eq i32 %535, 0 %536 = call float @llvm.nvvm.fma.rn.ftz.f(float %534, float noundef 0xBFF921FB40000000, float %.0136) #139 %537 = call float @llvm.fma.f32(float %534, float noundef 0xBFF921FB40000000, float %.0136) %.0140 = select i1 %.not125, float %537, float %536 %538 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not126 = icmp eq i32 %538, 0 %539 = call float @llvm.nvvm.fma.rn.ftz.f(float %534, float noundef 0xBE74442D00000000, float %.0140) #139 %540 = call float @llvm.fma.f32(float %534, float noundef 0xBE74442D00000000, float %.0140) %.0142 = select i1 %.not126, float %540, float %539 %541 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not127 = icmp eq i32 %541, 0 %542 = call float @llvm.nvvm.fma.rn.ftz.f(float %534, float noundef 0xBCF84698A0000000, float %.0142) #139 %543 = call float @llvm.fma.f32(float %534, float noundef 0xBCF84698A0000000, float %.0142) %.0143 = select i1 %.not127, float %543, float %542 %544 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not128 = icmp eq i32 %544, 0 %545 = call float @llvm.nvvm.fabs.ftz.f(float %.0136) #139 %546 = call float @llvm.fabs.f32(float %.0136) %.0144 = select i1 %.not128, float %546, float %545 %547 = fcmp ult float %.0144, 1.056150e+05 br i1 %547, label %__internal_trig_reduction_kernel.exit.i.i155, label %__nv_isinff.exit.i.i.i152 __nv_isinff.exit.i.i.i152: ; preds = %__nv_rsqrtf.exit.i146 %548 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not198 = icmp eq i32 %548, 0 %.0145 = select i1 %.not198, float %546, float %545 %549 = fcmp oeq float %.0145, 0x7FF0000000000000 br i1 %549, label %__nv_fmul_rn.exit.i.i.i153, label %553 __nv_fmul_rn.exit.i.i.i153: ; preds = %__nv_isinff.exit.i.i.i152 %550 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not204 = icmp eq i32 %550, 0 %551 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0136, float noundef 0.000000e+00) #139 %552 = fmul float %.0136, 0.000000e+00 %.0146 = select i1 %.not204, float %552, float %551 br label %__internal_trig_reduction_kernel.exit.i.i155 553: ; preds = %__nv_isinff.exit.i.i.i152 %554 = bitcast float %.0136 to i32 %555 = lshr i32 %554, 23 %556 = and i32 %555, 255 %557 = add nsw i32 %556, -128 %558 = shl i32 %554, 8 %559 = or i32 %558, -2147483648 %560 = lshr i32 %557, 5 br label %561 561: ; preds = %553, %561 %iq.i.i.i.i102.0223 = phi i32 [ 0, %553 ], [ %569, %561 ] %hi.i.i.i.i97.0222 = phi i32 [ 0, %553 ], [ %567, %561 ] %562 = zext i32 %iq.i.i.i.i102.0223 to i64 %563 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %562 %564 = load i32, i32 addrspace(1)* %563, align 4 %565 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %564, i32 %559, i32 %hi.i.i.i.i97.0222) #141, !srcloc !67 %566 = extractvalue { i32, i32 } %565, 0 %567 = extractvalue { i32, i32 } %565, 1 %568 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %562 store i32 %566, i32* %568, align 4, !noalias !68 %569 = add nuw nsw i32 %iq.i.i.i.i102.0223, 1 %exitcond247.not = icmp eq i32 %569, 6 br i1 %exitcond247.not, label %570, label %561, !llvm.loop !71 570: ; preds = %561 %571 = and i32 %554, -2147483648 %572 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %567, i32* %572, align 4, !noalias !68 %573 = and i32 %555, 31 %574 = sub nsw i32 6, %560 %575 = sext i32 %574 to i64 %576 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %575 %577 = load i32, i32* %576, align 4 %578 = sub nsw i32 5, %560 %579 = sext i32 %578 to i64 %580 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %579 %581 = load i32, i32* %580, align 4 %.not199 = icmp eq i32 %573, 0 br i1 %.not199, label %__internal_trig_reduction_slowpath.exit.i.i.i154, label %582 582: ; preds = %570 %583 = sub nsw i32 4, %560 %584 = sub nuw nsw i32 32, %573 %585 = shl i32 %577, %573 %586 = lshr i32 %581, %584 %587 = add i32 %586, %585 %588 = shl i32 %581, %573 %589 = sext i32 %583 to i64 %590 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %589 %591 = load i32, i32* %590, align 4 %592 = lshr i32 %591, %584 %593 = add i32 %592, %588 br label %__internal_trig_reduction_slowpath.exit.i.i.i154 __internal_trig_reduction_slowpath.exit.i.i.i154: ; preds = %582, %570 %hi.i.i.i.i97.1 = phi i32 [ %587, %582 ], [ %577, %570 ] %lo.i.i.i.i98.0 = phi i32 [ %593, %582 ], [ %581, %570 ] %594 = lshr i32 %hi.i.i.i.i97.1, 30 %595 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i97.1, i32 %lo.i.i.i.i98.0, i32 noundef 2) %596 = shl i32 %lo.i.i.i.i98.0, 2 %597 = lshr i32 %595, 31 %598 = add nuw nsw i32 %597, %594 %.not200 = icmp eq i32 %571, 0 %599 = sub nsw i32 0, %598 %spec.select2 = select i1 %.not200, i32 %598, i32 %599 %.not201 = icmp sgt i32 %595, -1 %600 = xor i32 %571, -2147483648 %s.i.i.i.i95.0 = select i1 %.not201, i32 %571, i32 %600 %not..not201 = xor i1 %.not201, true %601 = sext i1 %not..not201 to i32 %hi.i.i.i.i97.2 = xor i32 %595, %601 %lo.i.i.i.i98.1 = xor i32 %596, %601 %602 = zext i32 %hi.i.i.i.i97.2 to i64 %603 = shl nuw i64 %602, 32 %604 = zext i32 %lo.i.i.i.i98.1 to i64 %605 = or i64 %603, %604 %606 = sitofp i64 %605 to double %607 = fmul double %606, 0x3BF921FB54442D19 %608 = fptrunc double %607 to float %.not203 = icmp eq i32 %s.i.i.i.i95.0, 0 %609 = fneg float %608 %r.i.i.i.i106.0 = select i1 %.not203, float %608, float %609 br label %__internal_trig_reduction_kernel.exit.i.i155 __internal_trig_reduction_kernel.exit.i.i155: ; preds = %__nv_fmul_rn.exit.i.i.i153, %__internal_trig_reduction_slowpath.exit.i.i.i154, %__nv_rsqrtf.exit.i146 %i.i.i112.1 = phi i32 [ %.0139, %__nv_rsqrtf.exit.i146 ], [ 0, %__nv_fmul_rn.exit.i.i.i153 ], [ %spec.select2, %__internal_trig_reduction_slowpath.exit.i.i.i154 ] %t.i.i.i109.1 = phi float [ %.0143, %__nv_rsqrtf.exit.i146 ], [ %.0146, %__nv_fmul_rn.exit.i.i.i153 ], [ %r.i.i.i.i106.0, %__internal_trig_reduction_slowpath.exit.i.i.i154 ] %610 = and i32 %i.i.i112.1, 3 %611 = uitofp i32 %610 to float %612 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not129 = icmp eq i32 %612, 0 %613 = call float @llvm.nvvm.fma.rn.ftz.f(float %611, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) #139 %614 = call float @llvm.fma.f32(float %611, float noundef 0x3FF921FB60000000, float noundef 0xC002D97C80000000) %.0149 = select i1 %.not129, float %614, float %613 %615 = fadd float %t.i.i.i109.1, %.0149 %616 = fmul float %615, 0x3FE45F3060000000 %617 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not130 = icmp eq i32 %617, 0 %618 = call i32 @llvm.nvvm.f2i.rn.ftz(float %616) #139 %619 = call i32 @llvm.nvvm.f2i.rn(float %616) #139 %.0150 = select i1 %.not130, i32 %619, i32 %618 %620 = sitofp i32 %.0150 to float %621 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not131 = icmp eq i32 %621, 0 %622 = call float @llvm.nvvm.fma.rn.ftz.f(float %620, float noundef 0xBFF921FB40000000, float %615) #139 %623 = call float @llvm.fma.f32(float %620, float noundef 0xBFF921FB40000000, float %615) %.0151 = select i1 %.not131, float %623, float %622 %624 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not132 = icmp eq i32 %624, 0 %625 = call float @llvm.nvvm.fma.rn.ftz.f(float %620, float noundef 0xBE74442D00000000, float %.0151) #139 %626 = call float @llvm.fma.f32(float %620, float noundef 0xBE74442D00000000, float %.0151) %.0152 = select i1 %.not132, float %626, float %625 %627 = add i32 %.0150, 1 %628 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not133 = icmp eq i32 %628, 0 %629 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0152, float %.0152) #139 %630 = fmul float %.0152, %.0152 %.0154 = select i1 %.not133, float %630, float %629 %631 = and i32 %627, 1 %.not134 = icmp eq i32 %631, 0 %632 = select i1 %.not134, float %.0152, float 1.000000e+00 %633 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not135 = icmp eq i32 %633, 0 %634 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0154, float %632, float noundef 0.000000e+00) #139 %635 = call float @llvm.fma.f32(float %.0154, float %632, float noundef 0.000000e+00) %.0155 = select i1 %.not135, float %635, float %634 br i1 %.not134, label %__internal_fmad.exit2.i.i.i163, label %__internal_fmad.exit1.i.i.i162 __internal_fmad.exit1.i.i.i162: ; preds = %__internal_trig_reduction_kernel.exit.i.i155 %636 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not197 = icmp eq i32 %636, 0 %637 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0154, float noundef 0xBF56C0FDA0000000) #139 %638 = call float @llvm.fma.f32(float %.0154, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.0156 = select i1 %.not197, float %638, float %637 br label %__internal_fmad.exit2.i.i.i163 __internal_fmad.exit2.i.i.i163: ; preds = %__internal_trig_reduction_kernel.exit.i.i155, %__internal_fmad.exit1.i.i.i162 %639 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i155 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i162 ] %640 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i155 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i162 ] %641 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i155 ], [ %.0156, %__internal_fmad.exit1.i.i.i162 ] %642 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not138 = icmp eq i32 %642, 0 %643 = call float @llvm.nvvm.fma.rn.ftz.f(float %641, float %.0154, float noundef %640) #139 %644 = call float @llvm.fma.f32(float %641, float %.0154, float noundef %640) %.0157 = select i1 %.not138, float %644, float %643 %645 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not140 = icmp eq i32 %645, 0 %646 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0157, float %.0154, float noundef %639) #139 %647 = call float @llvm.fma.f32(float %.0157, float %.0154, float noundef %639) %.0158 = select i1 %.not140, float %647, float %646 %648 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not141 = icmp eq i32 %648, 0 %649 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0158, float %.0155, float %632) #139 %650 = call float @llvm.fma.f32(float %.0158, float %.0155, float %632) %.0159 = select i1 %.not141, float %650, float %649 %651 = and i32 %627, 2 %.not142 = icmp eq i32 %651, 0 br i1 %.not142, label %__internal_cos_offset_f.exit.i167, label %__internal_fmad.exit5.i.i.i166 __internal_fmad.exit5.i.i.i166: ; preds = %__internal_fmad.exit2.i.i.i163 %652 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not196 = icmp eq i32 %652, 0 %653 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0159, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %654 = call float @llvm.fma.f32(float %.0159, float noundef -1.000000e+00, float noundef 0.000000e+00) %.0161 = select i1 %.not196, float %654, float %653 br label %__internal_cos_offset_f.exit.i167 __internal_cos_offset_f.exit.i167: ; preds = %__internal_fmad.exit5.i.i.i166, %__internal_fmad.exit2.i.i.i163 %z.i.i.i88.0 = phi float [ %.0161, %__internal_fmad.exit5.i.i.i166 ], [ %.0159, %__internal_fmad.exit2.i.i.i163 ] %655 = fmul float %529, %z.i.i.i88.0 br label %656 656: ; preds = %__internal_cos_offset_f.exit.i167, %__nv_isinff.exit.i137, %__internal_fmad.exit.i125 %r.i118.1 = phi float [ %492, %__internal_fmad.exit.i125 ], [ %655, %__internal_cos_offset_f.exit.i167 ], [ 0.000000e+00, %__nv_isinff.exit.i137 ] %657 = fcmp olt float %a, 0.000000e+00 %658 = fneg float %r.i118.1 %r.i118.2 = select i1 %657, float %658, float %r.i118.1 %659 = fcmp olt float %.0112, 0x39B4484C00000000 br i1 %659, label %660, label %__nv_j1f.exit168 660: ; preds = %656 %661 = bitcast float %a to i32 %662 = and i32 %661, -2147483648 %663 = bitcast float %r.i118.2 to i32 %664 = and i32 %663, 2147483647 %665 = or i32 %664, %662 %666 = bitcast i32 %665 to float br label %__nv_j1f.exit168 __nv_j1f.exit168: ; preds = %660, %656 %r.i118.3 = phi float [ %666, %660 ], [ %r.i118.2, %656 ] %667 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not143 = icmp eq i32 %667, 0 %.0162 = select i1 %.not143, float %444, float %443 %668 = fcmp ugt float %.0162, 8.000000e+00 br i1 %668, label %__nv_isinff.exit.i220, label %__internal_fmad.exit.i207 __internal_fmad.exit.i207: ; preds = %__nv_j1f.exit168 %669 = fadd float %.0162, 0xC0033D1520000000 %670 = fadd float %669, 0xBE7D2E3660000000 %671 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not183 = icmp eq i32 %671, 0 %672 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBCD6771CE0000000, float %670, float noundef 0xBD35953660000000) #139 %673 = call float @llvm.fma.f32(float %670, float noundef 0xBCD6771CE0000000, float noundef 0xBD35953660000000) %.0163 = select i1 %.not183, float %673, float %672 %674 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not184 = icmp eq i32 %674, 0 %675 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0163, float %670, float noundef 0x3D87E1C300000000) #139 %676 = call float @llvm.fma.f32(float %.0163, float %670, float noundef 0x3D87E1C300000000) %.0165 = select i1 %.not184, float %676, float %675 %677 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not185 = icmp eq i32 %677, 0 %678 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0165, float %670, float noundef 0xBD9A82F020000000) #139 %679 = call float @llvm.fma.f32(float %.0165, float %670, float noundef 0xBD9A82F020000000) %.0166 = select i1 %.not185, float %679, float %678 %680 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not186 = icmp eq i32 %680, 0 %681 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0166, float %670, float noundef 0xBDFD21E700000000) #139 %682 = call float @llvm.fma.f32(float %.0166, float %670, float noundef 0xBDFD21E700000000) %.0167 = select i1 %.not186, float %682, float %681 %683 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not187 = icmp eq i32 %683, 0 %684 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0167, float %670, float noundef 0x3E04060B60000000) #139 %685 = call float @llvm.fma.f32(float %.0167, float %670, float noundef 0x3E04060B60000000) %.0168 = select i1 %.not187, float %685, float %684 %686 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not188 = icmp eq i32 %686, 0 %687 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0168, float %670, float noundef 0x3E6F2E2860000000) #139 %688 = call float @llvm.fma.f32(float %.0168, float %670, float noundef 0x3E6F2E2860000000) %.0169 = select i1 %.not188, float %688, float %687 %689 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not189 = icmp eq i32 %689, 0 %690 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0169, float %670, float noundef 0x3E1EEDF0A0000000) #139 %691 = call float @llvm.fma.f32(float %.0169, float %670, float noundef 0x3E1EEDF0A0000000) %.0170 = select i1 %.not189, float %691, float %690 %692 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not190 = icmp eq i32 %692, 0 %693 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0170, float %670, float noundef 0xBED6DBF8C0000000) #139 %694 = call float @llvm.fma.f32(float %.0170, float %670, float noundef 0xBED6DBF8C0000000) %.0164 = select i1 %.not190, float %694, float %693 %695 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not191 = icmp eq i32 %695, 0 %696 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0164, float %670, float noundef 0xBEDECCB920000000) #139 %697 = call float @llvm.fma.f32(float %.0164, float %670, float noundef 0xBEDECCB920000000) %.0160 = select i1 %.not191, float %697, float %696 %698 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not192 = icmp eq i32 %698, 0 %699 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0160, float %670, float noundef 0x3F33C5BD60000000) #139 %700 = call float @llvm.fma.f32(float %.0160, float %670, float noundef 0x3F33C5BD60000000) %.0153 = select i1 %.not192, float %700, float %699 %701 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not193 = icmp eq i32 %701, 0 %702 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0153, float %670, float noundef 0x3F495C6680000000) #139 %703 = call float @llvm.fma.f32(float %.0153, float %670, float noundef 0x3F495C6680000000) %.0148 = select i1 %.not193, float %703, float %702 %704 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not194 = icmp eq i32 %704, 0 %705 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0148, float %670, float noundef 0xBF7DD54360000000) #139 %706 = call float @llvm.fma.f32(float %.0148, float %670, float noundef 0xBF7DD54360000000) %.0147 = select i1 %.not194, float %706, float %705 %707 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not195 = icmp eq i32 %707, 0 %708 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0147, float %670, float noundef 0xBF9B4EE8E0000000) #139 %709 = call float @llvm.fma.f32(float %.0147, float %670, float noundef 0xBF9B4EE8E0000000) %.0141 = select i1 %.not195, float %709, float %708 %710 = fmul float %670, %.0141 %711 = fadd float %.0162, 0xC016148F60000000 %712 = fadd float %711, 0x3E734F46E0000000 %713 = fmul float %712, %710 %714 = fadd float %.0162, 0xC0214EB560000000 %715 = fadd float %714, 0xBE9999BDA0000000 %716 = fmul float %715, %713 br label %__nv_j0f.exit251 __nv_isinff.exit.i220: ; preds = %__nv_j1f.exit168 %717 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not144 = icmp eq i32 %717, 0 %718 = call float @llvm.nvvm.fabs.ftz.f(float %.0162) #139 %719 = call float @llvm.fabs.f32(float %.0162) %.0138 = select i1 %.not144, float %719, float %718 %720 = fcmp oeq float %.0138, 0x7FF0000000000000 br i1 %720, label %__nv_j0f.exit251, label %__internal_fmad.exit13.i221 __internal_fmad.exit13.i221: ; preds = %__nv_isinff.exit.i220 %721 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.0162) #141, !srcloc !73 %722 = fmul float %721, %721 %723 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not145 = icmp eq i32 %723, 0 %724 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400ADFD260000000, float %722, float noundef 0xBFE076F840000000) #139 %725 = call float @llvm.fma.f32(float %722, float noundef 0x400ADFD260000000, float noundef 0xBFE076F840000000) %.0132 = select i1 %.not145, float %725, float %724 %726 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not146 = icmp eq i32 %726, 0 %727 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0132, float %722, float noundef 0x3FBA767E60000000) #139 %728 = call float @llvm.fma.f32(float %.0132, float %722, float noundef 0x3FBA767E60000000) %.0125 = select i1 %.not146, float %728, float %727 %729 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not147 = icmp eq i32 %729, 0 %730 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0125, float %722, float noundef 0xBFAFFFF6C0000000) #139 %731 = call float @llvm.fma.f32(float %.0125, float %722, float noundef 0xBFAFFFF6C0000000) %.0118 = select i1 %.not147, float %731, float %730 %732 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not148 = icmp eq i32 %732, 0 %733 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0118, float %722, float noundef 1.000000e+00) #139 %734 = call float @llvm.fma.f32(float %.0118, float %722, float noundef 1.000000e+00) %.0111 = select i1 %.not148, float %734, float %733 %735 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not149 = icmp eq i32 %735, 0 %736 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF23C0120000000, float %722, float noundef 0xBFCA4825A0000000) #139 %737 = call float @llvm.fma.f32(float %722, float noundef 0x3FF23C0120000000, float noundef 0xBFCA4825A0000000) %.0107 = select i1 %.not149, float %737, float %736 %738 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not150 = icmp eq i32 %738, 0 %739 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0107, float %722, float noundef 0x3FB0A9DA20000000) #139 %740 = call float @llvm.fma.f32(float %.0107, float %722, float noundef 0x3FB0A9DA20000000) %.0101 = select i1 %.not150, float %740, float %739 %741 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not151 = icmp eq i32 %741, 0 %742 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0101, float %722, float noundef 0xBFBFFFFFE0000000) #139 %743 = call float @llvm.fma.f32(float %.0101, float %722, float noundef 0xBFBFFFFFE0000000) %.096 = select i1 %.not151, float %743, float %742 %744 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not152 = icmp eq i32 %744, 0 %745 = call float @llvm.nvvm.fma.rn.ftz.f(float %.096, float %721, float %.0162) #139 %746 = call float @llvm.fma.f32(float %.096, float %721, float %.0162) %.095 = select i1 %.not152, float %746, float %745 %747 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not153 = icmp eq i32 %747, 0 br i1 %.not153, label %750, label %748 748: ; preds = %__internal_fmad.exit13.i221 %749 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %.0162) #139 br label %__nv_rsqrtf.exit.i229 750: ; preds = %__internal_fmad.exit13.i221 %751 = call float @llvm.nvvm.rsqrt.approx.f(float %.0162) #139 br label %__nv_rsqrtf.exit.i229 __nv_rsqrtf.exit.i229: ; preds = %750, %748 %.093 = phi float [ %749, %748 ], [ %751, %750 ] %752 = fmul float %.093, 0x3FE9884540000000 %753 = fmul float %.0111, %752 %754 = fmul float %.095, 0x3FE45F3060000000 %755 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not154 = icmp eq i32 %755, 0 %756 = call i32 @llvm.nvvm.f2i.rn.ftz(float %754) #139 %757 = call i32 @llvm.nvvm.f2i.rn(float %754) #139 %.086 = select i1 %.not154, i32 %757, i32 %756 %758 = sitofp i32 %.086 to float %759 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not155 = icmp eq i32 %759, 0 %760 = call float @llvm.nvvm.fma.rn.ftz.f(float %758, float noundef 0xBFF921FB40000000, float %.095) #139 %761 = call float @llvm.fma.f32(float %758, float noundef 0xBFF921FB40000000, float %.095) %.085 = select i1 %.not155, float %761, float %760 %762 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not156 = icmp eq i32 %762, 0 %763 = call float @llvm.nvvm.fma.rn.ftz.f(float %758, float noundef 0xBE74442D00000000, float %.085) #139 %764 = call float @llvm.fma.f32(float %758, float noundef 0xBE74442D00000000, float %.085) %.083 = select i1 %.not156, float %764, float %763 %765 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not157 = icmp eq i32 %765, 0 %766 = call float @llvm.nvvm.fma.rn.ftz.f(float %758, float noundef 0xBCF84698A0000000, float %.083) #139 %767 = call float @llvm.fma.f32(float %758, float noundef 0xBCF84698A0000000, float %.083) %.079 = select i1 %.not157, float %767, float %766 %768 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not158 = icmp eq i32 %768, 0 %769 = call float @llvm.nvvm.fabs.ftz.f(float %.095) #139 %770 = call float @llvm.fabs.f32(float %.095) %.077 = select i1 %.not158, float %770, float %769 %771 = fcmp ult float %.077, 1.056150e+05 br i1 %771, label %__internal_trig_reduction_kernel.exit.i.i238, label %__nv_isinff.exit.i.i.i235 __nv_isinff.exit.i.i.i235: ; preds = %__nv_rsqrtf.exit.i229 %772 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not176 = icmp eq i32 %772, 0 %.074 = select i1 %.not176, float %770, float %769 %773 = fcmp oeq float %.074, 0x7FF0000000000000 br i1 %773, label %__nv_fmul_rn.exit.i.i.i236, label %777 __nv_fmul_rn.exit.i.i.i236: ; preds = %__nv_isinff.exit.i.i.i235 %774 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not182 = icmp eq i32 %774, 0 %775 = call float @llvm.nvvm.mul.rn.ftz.f(float %.095, float noundef 0.000000e+00) #139 %776 = fmul float %.095, 0.000000e+00 %.069 = select i1 %.not182, float %776, float %775 br label %__internal_trig_reduction_kernel.exit.i.i238 777: ; preds = %__nv_isinff.exit.i.i.i235 %778 = bitcast float %.095 to i32 %779 = lshr i32 %778, 23 %780 = and i32 %779, 255 %781 = add nsw i32 %780, -128 %782 = shl i32 %778, 8 %783 = or i32 %782, -2147483648 %784 = lshr i32 %781, 5 br label %785 785: ; preds = %777, %785 %hi.i.i.i.i179.0221 = phi i32 [ 0, %777 ], [ %791, %785 ] %iq.i.i.i.i184.0220 = phi i32 [ 0, %777 ], [ %793, %785 ] %786 = zext i32 %iq.i.i.i.i184.0220 to i64 %787 = getelementptr inbounds [6 x i32], [6 x i32] addrspace(1)* @__cudart_i2opi_f, i64 0, i64 %786 %788 = load i32, i32 addrspace(1)* %787, align 4 %789 = call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %788, i32 %783, i32 %hi.i.i.i.i179.0221) #141, !srcloc !67 %790 = extractvalue { i32, i32 } %789, 0 %791 = extractvalue { i32, i32 } %789, 1 %792 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %786 store i32 %790, i32* %792, align 4, !noalias !68 %793 = add nuw nsw i32 %iq.i.i.i.i184.0220, 1 %exitcond.not = icmp eq i32 %793, 6 br i1 %exitcond.not, label %794, label %785, !llvm.loop !71 794: ; preds = %785 %795 = and i32 %778, -2147483648 %796 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 6 store i32 %791, i32* %796, align 4, !noalias !68 %797 = and i32 %779, 31 %798 = sub nsw i32 6, %784 %799 = sext i32 %798 to i64 %800 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %799 %801 = load i32, i32* %800, align 4 %802 = sub nsw i32 5, %784 %803 = sext i32 %802 to i64 %804 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %803 %805 = load i32, i32* %804, align 4 %.not177 = icmp eq i32 %797, 0 br i1 %.not177, label %__internal_trig_reduction_slowpath.exit.i.i.i237, label %806 806: ; preds = %794 %807 = sub nsw i32 4, %784 %808 = sub nuw nsw i32 32, %797 %809 = shl i32 %801, %797 %810 = lshr i32 %805, %808 %811 = add i32 %810, %809 %812 = shl i32 %805, %797 %813 = sext i32 %807 to i64 %814 = getelementptr inbounds [7 x i32], [7 x i32]* %result.i.i.i.i, i64 0, i64 %813 %815 = load i32, i32* %814, align 4 %816 = lshr i32 %815, %808 %817 = add i32 %816, %812 br label %__internal_trig_reduction_slowpath.exit.i.i.i237 __internal_trig_reduction_slowpath.exit.i.i.i237: ; preds = %806, %794 %lo.i.i.i.i180.0 = phi i32 [ %817, %806 ], [ %805, %794 ] %hi.i.i.i.i179.1 = phi i32 [ %811, %806 ], [ %801, %794 ] %818 = lshr i32 %hi.i.i.i.i179.1, 30 %819 = call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i179.1, i32 %lo.i.i.i.i180.0, i32 noundef 2) %820 = shl i32 %lo.i.i.i.i180.0, 2 %821 = lshr i32 %819, 31 %822 = add nuw nsw i32 %821, %818 %.not178 = icmp eq i32 %795, 0 %823 = sub nsw i32 0, %822 %spec.select3 = select i1 %.not178, i32 %822, i32 %823 %.not179 = icmp sgt i32 %819, -1 %824 = xor i32 %795, -2147483648 %not..not179 = xor i1 %.not179, true %825 = sext i1 %not..not179 to i32 %lo.i.i.i.i180.1 = xor i32 %820, %825 %hi.i.i.i.i179.2 = xor i32 %819, %825 %s.i.i.i.i177.0 = select i1 %.not179, i32 %795, i32 %824 %826 = zext i32 %hi.i.i.i.i179.2 to i64 %827 = shl nuw i64 %826, 32 %828 = zext i32 %lo.i.i.i.i180.1 to i64 %829 = or i64 %827, %828 %830 = sitofp i64 %829 to double %831 = fmul double %830, 0x3BF921FB54442D19 %832 = fptrunc double %831 to float %.not181 = icmp eq i32 %s.i.i.i.i177.0, 0 %833 = fneg float %832 %r.i.i.i.i188.0 = select i1 %.not181, float %832, float %833 br label %__internal_trig_reduction_kernel.exit.i.i238 __internal_trig_reduction_kernel.exit.i.i238: ; preds = %__nv_fmul_rn.exit.i.i.i236, %__internal_trig_reduction_slowpath.exit.i.i.i237, %__nv_rsqrtf.exit.i229 %i.i.i194.1 = phi i32 [ %.086, %__nv_rsqrtf.exit.i229 ], [ 0, %__nv_fmul_rn.exit.i.i.i236 ], [ %spec.select3, %__internal_trig_reduction_slowpath.exit.i.i.i237 ] %t.i.i.i191.1 = phi float [ %.079, %__nv_rsqrtf.exit.i229 ], [ %.069, %__nv_fmul_rn.exit.i.i.i236 ], [ %r.i.i.i.i188.0, %__internal_trig_reduction_slowpath.exit.i.i.i237 ] %834 = and i32 %i.i.i194.1, 3 %835 = uitofp i32 %834 to float %836 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not159 = icmp eq i32 %836, 0 %837 = call float @llvm.nvvm.fma.rn.ftz.f(float %835, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) #139 %838 = call float @llvm.fma.f32(float %835, float noundef 0x3FF921FB60000000, float noundef 0xBFE921FB60000000) %.049 = select i1 %.not159, float %838, float %837 %839 = fadd float %t.i.i.i191.1, %.049 %840 = fmul float %839, 0x3FE45F3060000000 %841 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not160 = icmp eq i32 %841, 0 %842 = call i32 @llvm.nvvm.f2i.rn.ftz(float %840) #139 %843 = call i32 @llvm.nvvm.f2i.rn(float %840) #139 %.047 = select i1 %.not160, i32 %843, i32 %842 %844 = sitofp i32 %.047 to float %845 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not161 = icmp eq i32 %845, 0 %846 = call float @llvm.nvvm.fma.rn.ftz.f(float %844, float noundef 0xBFF921FB40000000, float %839) #139 %847 = call float @llvm.fma.f32(float %844, float noundef 0xBFF921FB40000000, float %839) %.043 = select i1 %.not161, float %847, float %846 %848 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not162 = icmp eq i32 %848, 0 %849 = call float @llvm.nvvm.fma.rn.ftz.f(float %844, float noundef 0xBE74442D00000000, float %.043) #139 %850 = call float @llvm.fma.f32(float %844, float noundef 0xBE74442D00000000, float %.043) %.042 = select i1 %.not162, float %850, float %849 %851 = add i32 %.047, 1 %852 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not163 = icmp eq i32 %852, 0 %853 = call float @llvm.nvvm.mul.rn.ftz.f(float %.042, float %.042) #139 %854 = fmul float %.042, %.042 %.038 = select i1 %.not163, float %854, float %853 %855 = and i32 %851, 1 %.not164 = icmp eq i32 %855, 0 %856 = select i1 %.not164, float %.042, float 1.000000e+00 %857 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not165 = icmp eq i32 %857, 0 %858 = call float @llvm.nvvm.fma.rn.ftz.f(float %.038, float %856, float noundef 0.000000e+00) #139 %859 = call float @llvm.fma.f32(float %.038, float %856, float noundef 0.000000e+00) %.033 = select i1 %.not165, float %859, float %858 br i1 %.not164, label %__internal_fmad.exit2.i.i.i246, label %__internal_fmad.exit1.i.i.i245 __internal_fmad.exit1.i.i.i245: ; preds = %__internal_trig_reduction_kernel.exit.i.i238 %860 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not175 = icmp eq i32 %860, 0 %861 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.038, float noundef 0xBF56C0FDA0000000) #139 %862 = call float @llvm.fma.f32(float %.038, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.029 = select i1 %.not175, float %862, float %861 br label %__internal_fmad.exit2.i.i.i246 __internal_fmad.exit2.i.i.i246: ; preds = %__internal_trig_reduction_kernel.exit.i.i238, %__internal_fmad.exit1.i.i.i245 %863 = phi float [ 0xBFC5555500000000, %__internal_trig_reduction_kernel.exit.i.i238 ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i.i.i245 ] %864 = phi float [ 0x3F8110BC80000000, %__internal_trig_reduction_kernel.exit.i.i238 ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i.i.i245 ] %865 = phi float [ 0xBF29A82A60000000, %__internal_trig_reduction_kernel.exit.i.i238 ], [ %.029, %__internal_fmad.exit1.i.i.i245 ] %866 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not168 = icmp eq i32 %866, 0 %867 = call float @llvm.nvvm.fma.rn.ftz.f(float %865, float %.038, float noundef %864) #139 %868 = call float @llvm.fma.f32(float %865, float %.038, float noundef %864) %.022 = select i1 %.not168, float %868, float %867 %869 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not170 = icmp eq i32 %869, 0 %870 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %.038, float noundef %863) #139 %871 = call float @llvm.fma.f32(float %.022, float %.038, float noundef %863) %.015 = select i1 %.not170, float %871, float %870 %872 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not171 = icmp eq i32 %872, 0 %873 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %.033, float %856) #139 %874 = call float @llvm.fma.f32(float %.015, float %.033, float %856) %.08 = select i1 %.not171, float %874, float %873 %875 = and i32 %851, 2 %.not172 = icmp eq i32 %875, 0 br i1 %.not172, label %__internal_cos_offset_f.exit.i250, label %__internal_fmad.exit5.i.i.i249 __internal_fmad.exit5.i.i.i249: ; preds = %__internal_fmad.exit2.i.i.i246 %876 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not174 = icmp eq i32 %876, 0 %877 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %878 = call float @llvm.fma.f32(float %.08, float noundef -1.000000e+00, float noundef 0.000000e+00) %.04 = select i1 %.not174, float %878, float %877 br label %__internal_cos_offset_f.exit.i250 __internal_cos_offset_f.exit.i250: ; preds = %__internal_fmad.exit5.i.i.i249, %__internal_fmad.exit2.i.i.i246 %z.i.i.i170.0 = phi float [ %.04, %__internal_fmad.exit5.i.i.i249 ], [ %.08, %__internal_fmad.exit2.i.i.i246 ] %879 = fmul float %753, %z.i.i.i170.0 br label %__nv_j0f.exit251 __nv_j0f.exit251: ; preds = %__internal_cos_offset_f.exit.i250, %__nv_isinff.exit.i220, %__internal_fmad.exit.i207 %r.i200.1 = phi float [ %716, %__internal_fmad.exit.i207 ], [ %879, %__internal_cos_offset_f.exit.i250 ], [ 0.000000e+00, %__nv_isinff.exit.i220 ] %880 = icmp sgt i32 %n, 1 br i1 %880, label %__internal_fmad.exit.lr.ph, label %__nv_j0f.exit __internal_fmad.exit.lr.ph: ; preds = %__nv_j0f.exit251 %881 = add nsw i32 %n, -1 %xtraiter = and i32 %881, 1 %882 = icmp eq i32 %n, 2 br i1 %882, label %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa, label %__internal_fmad.exit.lr.ph.new __internal_fmad.exit.lr.ph.new: ; preds = %__internal_fmad.exit.lr.ph %unroll_iter = and i32 %881, -2 br label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__internal_fmad.exit, %__internal_fmad.exit.lr.ph.new %jim1.0219 = phi float [ %r.i200.1, %__internal_fmad.exit.lr.ph.new ], [ %.02, %__internal_fmad.exit ] %ji.0218 = phi float [ %r.i118.3, %__internal_fmad.exit.lr.ph.new ], [ %.02.1, %__internal_fmad.exit ] %i.0217 = phi i32 [ 1, %__internal_fmad.exit.lr.ph.new ], [ %896, %__internal_fmad.exit ] %niter = phi i32 [ 0, %__internal_fmad.exit.lr.ph.new ], [ %niter.next.1, %__internal_fmad.exit ] %883 = sitofp i32 %i.0217 to float %884 = fmul float %ji.0218, %883 %885 = fneg float %jim1.0219 %886 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not173 = icmp eq i32 %886, 0 %887 = call float @llvm.nvvm.fma.rn.ftz.f(float %884, float %447, float %885) #139 %888 = call float @llvm.fma.f32(float %884, float %447, float %885) %.02 = select i1 %.not173, float %888, float %887 %889 = add nuw nsw i32 %i.0217, 1 %890 = sitofp i32 %889 to float %891 = fmul float %.02, %890 %892 = fneg float %ji.0218 %893 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not173.1 = icmp eq i32 %893, 0 %894 = call float @llvm.nvvm.fma.rn.ftz.f(float %891, float %447, float %892) #139 %895 = call float @llvm.fma.f32(float %891, float %447, float %892) %.02.1 = select i1 %.not173.1, float %895, float %894 %896 = add nuw nsw i32 %i.0217, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit, label %__internal_fmad.exit 897: ; preds = %__nv_fabsf.exit %898 = mul nsw i32 %n, 40 %899 = sitofp i32 %898 to float %900 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not108 = icmp eq i32 %900, 0 br i1 %.not108, label %907, label %901 901: ; preds = %897 %902 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not112 = icmp eq i32 %902, 0 br i1 %.not112, label %905, label %903 903: ; preds = %901 %904 = call float @llvm.nvvm.sqrt.rn.ftz.f(float %899) #139 br label %__nv_sqrtf.exit 905: ; preds = %901 %906 = call float @llvm.nvvm.sqrt.approx.ftz.f(float %899) #139 br label %__nv_sqrtf.exit 907: ; preds = %897 %908 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0)) #139 %.not109 = icmp eq i32 %908, 0 br i1 %.not109, label %911, label %909 909: ; preds = %907 %910 = call float @llvm.sqrt.f32(float %899) br label %__nv_sqrtf.exit 911: ; preds = %907 %912 = call float @llvm.nvvm.sqrt.approx.f(float %899) #139 br label %__nv_sqrtf.exit __nv_sqrtf.exit: ; preds = %911, %909, %905, %903 %.01 = phi float [ %904, %903 ], [ %906, %905 ], [ %910, %909 ], [ %912, %911 ] %913 = fptosi float %.01 to i32 %914 = add nsw i32 %913, %n %915 = and i32 %914, -2 %916 = icmp sgt i32 %915, 0 br i1 %916, label %__nv_fabsf.exit252, label %__nv_j0f.exit __nv_fabsf.exit252: ; preds = %__nv_sqrtf.exit, %931 %ji1.0228 = phi float [ %jim12.0, %931 ], [ 1.000000e+00, %__nv_sqrtf.exit ] %i.1227 = phi i32 [ %932, %931 ], [ %915, %__nv_sqrtf.exit ] %sum.0226 = phi float [ %sum.2, %931 ], [ 0.000000e+00, %__nv_sqrtf.exit ] %lambda.0225 = phi float [ %spec.select4, %931 ], [ 0.000000e+00, %__nv_sqrtf.exit ] %jip1.1224 = phi float [ %jip1.2, %931 ], [ 0.000000e+00, %__nv_sqrtf.exit ] %917 = sitofp i32 %i.1227 to float %918 = fmul float %917, 2.000000e+00 %919 = fdiv float %918, %a %920 = fmul float %ji1.0228, %919 %921 = fsub float %920, %jip1.1224 %922 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not110 = icmp eq i32 %922, 0 %923 = call float @llvm.nvvm.fabs.ftz.f(float %921) #139 %924 = call float @llvm.fabs.f32(float %921) %.0 = select i1 %.not110, float %924, float %923 %925 = fcmp ogt float %.0, 0x430C6BF520000000 br i1 %925, label %926, label %931 926: ; preds = %__nv_fabsf.exit252 %927 = fmul float %921, 0x3CD203AFA0000000 %928 = fmul float %ji1.0228, 0x3CD203AFA0000000 %929 = fmul float %lambda.0225, 0x3CD203AFA0000000 %930 = fmul float %sum.0226, 0x3CD203AFA0000000 br label %931 931: ; preds = %926, %__nv_fabsf.exit252 %jip1.2 = phi float [ %928, %926 ], [ %ji1.0228, %__nv_fabsf.exit252 ] %lambda.1 = phi float [ %929, %926 ], [ %lambda.0225, %__nv_fabsf.exit252 ] %sum.1 = phi float [ %930, %926 ], [ %sum.0226, %__nv_fabsf.exit252 ] %jim12.0 = phi float [ %927, %926 ], [ %921, %__nv_fabsf.exit252 ] %932 = add nsw i32 %i.1227, -1 %933 = icmp eq i32 %932, %n %spec.select4 = select i1 %933, float %jim12.0, float %lambda.1 %934 = and i32 %i.1227, 1 %.not111 = icmp eq i32 %934, 0 %935 = fmul float %jim12.0, 2.000000e+00 %936 = select i1 %.not111, float -0.000000e+00, float %935 %sum.2 = fadd float %sum.1, %936 %937 = icmp ugt i32 %i.1227, 1 br i1 %937, label %__nv_fabsf.exit252, label %._crit_edge ._crit_edge: ; preds = %931 %938 = fsub float %sum.2, %jim12.0 %939 = fdiv float %spec.select4, %938 br label %__nv_j0f.exit .__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit: ; preds = %__internal_fmad.exit %phi.cast = sitofp i32 %896 to float br label %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa .__nv_j0f.exit.loopexit_crit_edge.unr-lcssa: ; preds = %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit, %__internal_fmad.exit.lr.ph %.02.lcssa.ph = phi float [ undef, %__internal_fmad.exit.lr.ph ], [ %.02.1, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit ] %jim1.0219.unr = phi float [ %r.i200.1, %__internal_fmad.exit.lr.ph ], [ %.02, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit ] %ji.0218.unr = phi float [ %r.i118.3, %__internal_fmad.exit.lr.ph ], [ %.02.1, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit ] %i.0217.unr = phi float [ 1.000000e+00, %__internal_fmad.exit.lr.ph ], [ %phi.cast, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa.loopexit ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %__nv_j0f.exit, label %__internal_fmad.exit.epil.preheader __internal_fmad.exit.epil.preheader: ; preds = %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa %940 = fmul float %ji.0218.unr, %i.0217.unr %941 = fneg float %jim1.0219.unr %942 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not173.epil = icmp eq i32 %942, 0 %943 = call float @llvm.nvvm.fma.rn.ftz.f(float %940, float %447, float %941) #139 %944 = call float @llvm.fma.f32(float %940, float %447, float %941) %.02.epil = select i1 %.not173.epil, float %944, float %943 br label %__nv_j0f.exit __nv_j0f.exit: ; preds = %__nv_j0f.exit251, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa, %__internal_fmad.exit.epil.preheader, %__nv_sqrtf.exit, %._crit_edge, %437, %426, %430, %__internal_fmad.exit.i, %__nv_isinff.exit.i, %__internal_cos_offset_f.exit.i %.03 = phi float [ %52, %__internal_fmad.exit.i ], [ %215, %__internal_cos_offset_f.exit.i ], [ 0.000000e+00, %__nv_isinff.exit.i ], [ %436, %430 ], [ %r.i34.2, %426 ], [ 0x7FFFFFFFE0000000, %437 ], [ %939, %._crit_edge ], [ -0.000000e+00, %__nv_sqrtf.exit ], [ 0.000000e+00, %__nv_j0f.exit251 ], [ %.02.lcssa.ph, %.__nv_j0f.exit.loopexit_crit_edge.unr-lcssa ], [ %.02.epil, %__internal_fmad.exit.epil.preheader ] ret float %.03 } ; Function Attrs: noinline nounwind define dso_local float @__nv_erff(float %a) local_unnamed_addr #49 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp oge float %.0, 0x3FF00C1FC0000000 br i1 %3, label %__nv_fabsf.exit1, label %5 __nv_fabsf.exit1: ; preds = %__nv_fabsf.exit %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %4, 0 %.01 = select i1 %.not8, float %2, float %1 br label %__internal_fmad.exit 5: ; preds = %__nv_fabsf.exit %6 = fmul float %a, %a br label %__internal_fmad.exit __internal_fmad.exit: ; preds = %5, %__nv_fabsf.exit1 %7 = phi float [ 0x3FC06EBA60000000, %5 ], [ 0x3FE4214280000000, %__nv_fabsf.exit1 ] %8 = phi float [ 0xBFD8127580000000, %5 ], [ 0x3FED369F20000000, %__nv_fabsf.exit1 ] %9 = phi float [ 0x3FBCE315E0000000, %5 ], [ 0x3FC46AA320000000, %__nv_fabsf.exit1 ] %10 = phi float [ 0xBF9B837CE0000000, %5 ], [ 0xBFA49B3340000000, %__nv_fabsf.exit1 ] %11 = phi float [ 0x3F755ABD40000000, %5 ], [ 0x3F813233E0000000, %__nv_fabsf.exit1 ] %12 = phi float [ 0xBF4AE9A400000000, %5 ], [ 0xBF55C00B60000000, %__nv_fabsf.exit1 ] %13 = phi float [ 0x3F163D2D40000000, %5 ], [ 0x3F1D698740000000, %__nv_fabsf.exit1 ] %14 = phi float [ %6, %5 ], [ %.01, %__nv_fabsf.exit1 ] %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef %13, float %14, float noundef %12) #139 %17 = call float @llvm.fma.f32(float noundef %13, float %14, float noundef %12) %.02 = select i1 %.not1, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %14, float noundef %11) #139 %20 = call float @llvm.fma.f32(float %.02, float %14, float noundef %11) %.03 = select i1 %.not2, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %14, float noundef %10) #139 %23 = call float @llvm.fma.f32(float %.03, float %14, float noundef %10) %.04 = select i1 %.not3, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %14, float noundef %9) #139 %26 = call float @llvm.fma.f32(float %.04, float %14, float noundef %9) %.05 = select i1 %.not4, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %14, float noundef %8) #139 %29 = call float @llvm.fma.f32(float %.05, float %14, float noundef %8) %.06 = select i1 %.not5, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %14, float noundef %7) #139 %32 = call float @llvm.fma.f32(float %.06, float %14, float noundef %7) %.07 = select i1 %.not6, float %32, float %31 %33 = fneg float %14 %34 = select i1 %3, float %33, float %a %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %34, float %34) #139 %37 = call float @llvm.fma.f32(float %.07, float %34, float %34) %.08 = select i1 %.not7, float %37, float %36 br i1 %3, label %38, label %46 38: ; preds = %__internal_fmad.exit %39 = call float @llvm.nvvm.ex2.approx.ftz.f(float %.08) #139 %40 = fsub float 1.000000e+00, %39 %41 = bitcast float %40 to i32 %42 = bitcast float %a to i32 %43 = and i32 %42, -2147483648 %44 = or i32 %43, %41 %45 = bitcast i32 %44 to float br label %46 46: ; preds = %38, %__internal_fmad.exit %r.0 = phi float [ %45, %38 ], [ %.08, %__internal_fmad.exit ] ret float %r.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_erfinvf(float %a) local_unnamed_addr #50 { __nv_fmaf_rn.exit: %0 = fneg float %a %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.fma.rn.ftz.f(float %a, float %0, float noundef 1.000000e+00) #139 %3 = call float @llvm.fma.f32(float %a, float %0, float noundef 1.000000e+00) %.0 = select i1 %.not, float %3, float %2 %4 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.0) #139 %5 = fneg float %4 %6 = fcmp olt float %4, 0xC020666660000000 br i1 %6, label %__internal_fmad.exit, label %__internal_fmad.exit.i __internal_fmad.exit: ; preds = %__nv_fmaf_rn.exit %7 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %5) #139 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFE2E09420000000, float %7, float noundef 0xBFE53754A0000000) #139 %10 = call float @llvm.fma.f32(float %7, float noundef 0xBFE2E09420000000, float noundef 0xBFE53754A0000000) %.011 = select i1 %.not10, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %7, float noundef 0x3FF98D5B80000000) #139 %13 = call float @llvm.fma.f32(float %.011, float %7, float noundef 0x3FF98D5B80000000) %.012 = select i1 %.not11, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %7, float noundef 0xBFE59B5DA0000000) #139 %16 = call float @llvm.fma.f32(float %.012, float %7, float noundef 0xBFE59B5DA0000000) %.013 = select i1 %.not12, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %7, float noundef 0xBFB860A6E0000000) #139 %19 = call float @llvm.fma.f32(float %.013, float %7, float noundef 0xBFB860A6E0000000) %.014 = select i1 %.not13, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %7, float noundef 0x3FEABB3720000000) #139 %22 = call float @llvm.fma.f32(float %.014, float %7, float noundef 0x3FEABB3720000000) %.07 = select i1 %.not14, float %22, float %21 %23 = fdiv float 1.000000e+00, %7 %24 = fmul float %23, %.07 %25 = bitcast float %24 to i32 %26 = bitcast float %a to i32 %27 = and i32 %26, -2147483648 %28 = or i32 %27, %25 %29 = bitcast i32 %28 to float br label %58 __internal_fmad.exit.i: ; preds = %__nv_fmaf_rn.exit %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBDF14C6E00000000, float %5, float noundef 0x3E443EC8A0000000) #139 %32 = call float @llvm.fma.f32(float %5, float noundef 0xBDF14C6E00000000, float noundef 0x3E443EC8A0000000) %.01 = select i1 %.not1, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %5, float noundef 0xBE802DFB40000000) #139 %35 = call float @llvm.fma.f32(float %.01, float %5, float noundef 0xBE802DFB40000000) %.02 = select i1 %.not2, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %5, float noundef 0x3E8D1F08C0000000) #139 %38 = call float @llvm.fma.f32(float %.02, float %5, float noundef 0x3E8D1F08C0000000) %.03 = select i1 %.not3, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %5, float noundef 0x3EE0E85540000000) #139 %41 = call float @llvm.fma.f32(float %.03, float %5, float noundef 0x3EE0E85540000000) %.04 = select i1 %.not4, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %5, float noundef 0xBF009B69A0000000) #139 %44 = call float @llvm.fma.f32(float %.04, float %5, float noundef 0xBF009B69A0000000) %.05 = select i1 %.not5, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %5, float noundef 0xBF495FD420000000) #139 %47 = call float @llvm.fma.f32(float %.05, float %5, float noundef 0xBF495FD420000000) %.06 = select i1 %.not6, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %5, float noundef 0x3F76B804E0000000) #139 %50 = call float @llvm.fma.f32(float %.06, float %5, float noundef 0x3F76B804E0000000) %.08 = select i1 %.not7, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %5, float noundef 0x3FC495C1E0000000) #139 %53 = call float @llvm.fma.f32(float %.08, float %5, float noundef 0x3FC495C1E0000000) %.09 = select i1 %.not8, float %53, float %52 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %5, float noundef 0x3FEC5BF880000000) #139 %56 = call float @llvm.fma.f32(float %.09, float %5, float noundef 0x3FEC5BF880000000) %.010 = select i1 %.not9, float %56, float %55 %57 = fmul float %.010, %a br label %58 58: ; preds = %__internal_fmad.exit.i, %__internal_fmad.exit %t.0 = phi float [ %29, %__internal_fmad.exit ], [ %57, %__internal_fmad.exit.i ] ret float %t.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_erfcf(float %a) local_unnamed_addr #51 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fadd float %.01, -4.000000e+00 %4 = fadd float %.01, 4.000000e+00 %5 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %4) #141, !srcloc !73 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.mul.rn.ftz.f(float %3, float %5) #139 %8 = fmul float %5, %3 %.04 = select i1 %.not1, float %8, float %7 %9 = fadd float %.04, 1.000000e+00 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %10, 0 %11 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -4.000000e+00, float %9, float %.01) #139 %12 = call float @llvm.fma.f32(float %9, float noundef -4.000000e+00, float %.01) %.05 = select i1 %.not2, float %12, float %11 %13 = fneg float %.04 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %13, float %.01, float %.05) #139 %16 = call float @llvm.fma.f32(float %13, float %.01, float %.05) %.06 = select i1 %.not3, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float %5, float %.06, float %.04) #139 %19 = call float @llvm.fma.f32(float %5, float %.06, float %.04) %.07 = select i1 %.not4, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F4D341220000000, float %.07, float noundef 0x3F7CDC0B60000000) #139 %22 = call float @llvm.fma.f32(float %.07, float noundef 0x3F4D341220000000, float noundef 0x3F7CDC0B60000000) %.08 = select i1 %.not5, float %22, float %21 %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %.07, float noundef 0xBF903F6960000000) #139 %25 = call float @llvm.fma.f32(float %.08, float %.07, float noundef 0xBF903F6960000000) %.010 = select i1 %.not6, float %25, float %24 %26 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %26, 0 %27 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.07, float noundef 0x3FA2A6E760000000) #139 %28 = call float @llvm.fma.f32(float %.010, float %.07, float noundef 0x3FA2A6E760000000) %.011 = select i1 %.not7, float %28, float %27 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %.07, float noundef 0xBFB10F8B40000000) #139 %31 = call float @llvm.fma.f32(float %.011, float %.07, float noundef 0xBFB10F8B40000000) %.012 = select i1 %.not8, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %.07, float noundef 0x3FB8043AA0000000) #139 %34 = call float @llvm.fma.f32(float %.012, float %.07, float noundef 0x3FB8043AA0000000) %.013 = select i1 %.not9, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %.07, float noundef 0xBFB9DA8480000000) #139 %37 = call float @llvm.fma.f32(float %.013, float %.07, float noundef 0xBFB9DA8480000000) %.014 = select i1 %.not10, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %.07, float noundef 0x3FB16E9BC0000000) #139 %40 = call float @llvm.fma.f32(float %.014, float %.07, float noundef 0x3FB16E9BC0000000) %.015 = select i1 %.not11, float %40, float %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %.07, float noundef 0x3F8F7E2E00000000) #139 %43 = call float @llvm.fma.f32(float %.015, float %.07, float noundef 0x3F8F7E2E00000000) %.016 = select i1 %.not12, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %.07, float noundef 0xBFC1DF1A80000000) #139 %46 = call float @llvm.fma.f32(float %.016, float %.07, float noundef 0xBFC1DF1A80000000) %.017 = select i1 %.not13, float %46, float %45 %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %.07, float noundef 0x3FF3BA5920000000) #139 %49 = call float @llvm.fma.f32(float %.017, float %.07, float noundef 0x3FF3BA5920000000) %.018 = select i1 %.not14, float %49, float %48 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.000000e+00, float %.01, float noundef 1.000000e+00) #139 %52 = call float @llvm.fma.f32(float %.01, float noundef 2.000000e+00, float noundef 1.000000e+00) %.019 = select i1 %.not15, float %52, float %51 %53 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.019) #141, !srcloc !73 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.mul.rn.ftz.f(float %.018, float %53) #139 %56 = fmul float %53, %.018 %.020 = select i1 %.not16, float %56, float %55 %57 = fmul float %.020, -2.000000e+00 %58 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %58, 0 %59 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %57, float %.018) #139 %60 = call float @llvm.fma.f32(float %.01, float %57, float %.018) %.021 = select i1 %.not17, float %60, float %59 %61 = fsub float %.021, %.020 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %61, float %53, float %.020) #139 %64 = call float @llvm.fma.f32(float %61, float %53, float %.020) %.022 = select i1 %.not18, float %64, float %63 %65 = fneg float %.01 %66 = fmul float %.01, %65 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %67, 0 %68 = call float @llvm.nvvm.mul.rn.ftz.f(float %66, float noundef 0x3FF7154760000000) #139 %69 = fmul float %66, 0x3FF7154760000000 %.03 = select i1 %.not19, float %69, float %68 %70 = call float @llvm.trunc.f32(float %.03) %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fabs.ftz.f(float %70) #139 %73 = call float @llvm.fabs.f32(float %70) %.09 = select i1 %.not20, float %73, float %72 %74 = fcmp ogt float %.09, 1.260000e+02 %75 = bitcast float %70 to i32 %76 = and i32 %75, -2147483648 %77 = or i32 %76, 1123811328 %78 = bitcast i32 %77 to float %j.i.0 = select i1 %74, float %78, float %70 %79 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %79, 0 %80 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0xBFE62E4300000000, float %66) #139 %81 = call float @llvm.fma.f32(float %j.i.0, float noundef 0xBFE62E4300000000, float %66) %.023 = select i1 %.not21, float %81, float %80 %82 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %82, 0 %83 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.0, float noundef 0x3E205C6100000000, float %.023) #139 %84 = call float @llvm.fma.f32(float %j.i.0, float noundef 0x3E205C6100000000, float %.023) %.024 = select i1 %.not22, float %84, float %83 %85 = fmul float %.024, 0x3FF7154760000000 %86 = fadd float %j.i.0, 0x4168000FE0000000 %87 = bitcast float %86 to i32 %88 = shl i32 %87, 23 %89 = bitcast i32 %88 to float %90 = call float @llvm.nvvm.ex2.approx.ftz.f(float %85) #139 %91 = fmul float %90, %89 %92 = fneg float %66 %93 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %93, 0 %94 = call float @llvm.nvvm.fma.rn.ftz.f(float %65, float %.01, float %92) #139 %95 = call float @llvm.fma.f32(float %65, float %.01, float %92) %.02 = select i1 %.not23, float %95, float %94 %96 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %96, 0 %97 = call float @llvm.nvvm.fma.rn.ftz.f(float %91, float %.02, float %91) #139 %98 = call float @llvm.fma.f32(float %91, float %.02, float %91) %.0 = select i1 %.not24, float %98, float %97 %99 = fmul float %.0, %.022 %100 = fcmp ogt float %.01, 0x40241C2900000000 %t1.0 = select i1 %100, float 0.000000e+00, float %99 %101 = fcmp olt float %a, 0.000000e+00 %102 = fsub float 2.000000e+00, %t1.0 %103 = select i1 %101, float %102, float %t1.0 ret float %103 } ; Function Attrs: noinline nounwind define dso_local float @__nv_erfcxf(float %a) local_unnamed_addr #52 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp olt float %.01, 0x40241C2900000000 br i1 %3, label %__nv_fmul_rn.exit.i, label %66 __nv_fmul_rn.exit.i: ; preds = %__nv_fabsf.exit %4 = fadd float %.01, -4.000000e+00 %5 = fadd float %.01, 4.000000e+00 %6 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %5) #141, !srcloc !73 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.mul.rn.ftz.f(float %4, float %6) #139 %9 = fmul float %4, %6 %.03 = select i1 %.not14, float %9, float %8 %10 = fadd float %.03, 1.000000e+00 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -4.000000e+00, float %10, float %.01) #139 %13 = call float @llvm.fma.f32(float %10, float noundef -4.000000e+00, float %.01) %.04 = select i1 %.not15, float %13, float %12 %14 = fneg float %.03 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %14, float %.01, float %.04) #139 %17 = call float @llvm.fma.f32(float %14, float %.01, float %.04) %.05 = select i1 %.not16, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %6, float %.05, float %.03) #139 %20 = call float @llvm.fma.f32(float %6, float %.05, float %.03) %.06 = select i1 %.not17, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F4D341220000000, float %.06, float noundef 0x3F7CDC0B60000000) #139 %23 = call float @llvm.fma.f32(float %.06, float noundef 0x3F4D341220000000, float noundef 0x3F7CDC0B60000000) %.07 = select i1 %.not18, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %.06, float noundef 0xBF903F6960000000) #139 %26 = call float @llvm.fma.f32(float %.07, float %.06, float noundef 0xBF903F6960000000) %.08 = select i1 %.not19, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %.06, float noundef 0x3FA2A6E760000000) #139 %29 = call float @llvm.fma.f32(float %.08, float %.06, float noundef 0x3FA2A6E760000000) %.010 = select i1 %.not20, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %.06, float noundef 0xBFB10F8B40000000) #139 %32 = call float @llvm.fma.f32(float %.010, float %.06, float noundef 0xBFB10F8B40000000) %.011 = select i1 %.not21, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %.06, float noundef 0x3FB8043AA0000000) #139 %35 = call float @llvm.fma.f32(float %.011, float %.06, float noundef 0x3FB8043AA0000000) %.012 = select i1 %.not22, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %.06, float noundef 0xBFB9DA8480000000) #139 %38 = call float @llvm.fma.f32(float %.012, float %.06, float noundef 0xBFB9DA8480000000) %.014 = select i1 %.not23, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %.06, float noundef 0x3FB16E9BC0000000) #139 %41 = call float @llvm.fma.f32(float %.014, float %.06, float noundef 0x3FB16E9BC0000000) %.016 = select i1 %.not24, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %.06, float noundef 0x3F8F7E2E00000000) #139 %44 = call float @llvm.fma.f32(float %.016, float %.06, float noundef 0x3F8F7E2E00000000) %.017 = select i1 %.not25, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %.06, float noundef 0xBFC1DF1A80000000) #139 %47 = call float @llvm.fma.f32(float %.017, float %.06, float noundef 0xBFC1DF1A80000000) %.018 = select i1 %.not26, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %.06, float noundef 0x3FF3BA5920000000) #139 %50 = call float @llvm.fma.f32(float %.018, float %.06, float noundef 0x3FF3BA5920000000) %.020 = select i1 %.not27, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.000000e+00, float %.01, float noundef 1.000000e+00) #139 %53 = call float @llvm.fma.f32(float %.01, float noundef 2.000000e+00, float noundef 1.000000e+00) %.021 = select i1 %.not28, float %53, float %52 %54 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.021) #141, !srcloc !73 %55 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %55, 0 %56 = call float @llvm.nvvm.mul.rn.ftz.f(float %.020, float %54) #139 %57 = fmul float %54, %.020 %.022 = select i1 %.not29, float %57, float %56 %58 = fmul float %.022, -2.000000e+00 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %58, float %.020) #139 %61 = call float @llvm.fma.f32(float %.01, float %58, float %.020) %.023 = select i1 %.not30, float %61, float %60 %62 = fsub float %.023, %.022 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %63, 0 %64 = call float @llvm.nvvm.fma.rn.ftz.f(float %62, float %54, float %.022) #139 %65 = call float @llvm.fma.f32(float %62, float %54, float %.022) %.024 = select i1 %.not31, float %65, float %64 br label %88 66: ; preds = %__nv_fabsf.exit %67 = fmul float %.01, 2.500000e-01 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %68, 0 br i1 %.not1, label %71, label %69 69: ; preds = %66 %70 = call float @llvm.nvvm.div.approx.ftz.f(float noundef 2.500000e-01, float %67) #139 br label %__nv_fast_fdividef.exit 71: ; preds = %66 %72 = call float @llvm.nvvm.div.approx.f(float noundef 2.500000e-01, float %67) #139 br label %__nv_fast_fdividef.exit __nv_fast_fdividef.exit: ; preds = %71, %69 %.025 = phi float [ %70, %69 ], [ %72, %71 ] %73 = fmul float %.025, %.025 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 6.562500e+00, float %73, float noundef -1.875000e+00) #139 %76 = call float @llvm.fma.f32(float %73, float noundef 6.562500e+00, float noundef -1.875000e+00) %.026 = select i1 %.not2, float %76, float %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %73, float noundef 7.500000e-01) #139 %79 = call float @llvm.fma.f32(float %.026, float %73, float noundef 7.500000e-01) %.027 = select i1 %.not3, float %79, float %78 %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.fma.rn.ftz.f(float %.027, float %73, float noundef -5.000000e-01) #139 %82 = call float @llvm.fma.f32(float %.027, float %73, float noundef -5.000000e-01) %.028 = select i1 %.not4, float %82, float %81 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %83, 0 %84 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float %73, float noundef 1.000000e+00) #139 %85 = call float @llvm.fma.f32(float %.028, float %73, float noundef 1.000000e+00) %.029 = select i1 %.not5, float %85, float %84 %86 = fmul float %.025, 0x3FE20DD760000000 %87 = fmul float %86, %.029 br label %88 88: ; preds = %__nv_fast_fdividef.exit, %__nv_fmul_rn.exit.i %t1.0 = phi float [ %.024, %__nv_fmul_rn.exit.i ], [ %87, %__nv_fast_fdividef.exit ] %89 = fcmp olt float %a, 0.000000e+00 br i1 %89, label %__nv_fmul_rz.exit, label %125 __nv_fmul_rz.exit: ; preds = %88 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %90, 0 %91 = call float @llvm.nvvm.mul.rz.ftz.f(float %.01, float %.01) #139 %92 = call float @llvm.nvvm.mul.rz.f(float %.01, float %.01) #139 %.030 = select i1 %.not6, float %92, float %91 %93 = fneg float %.030 %94 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %94, 0 %95 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float %.01, float %93) #139 %96 = call float @llvm.fma.f32(float %.01, float %.01, float %93) %.031 = select i1 %.not7, float %96, float %95 %97 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %97, 0 %98 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float noundef 0x3F777313A0000000, float noundef 5.000000e-01) #139 %99 = call float @llvm.fma.f32(float %.030, float noundef 0x3F777313A0000000, float noundef 5.000000e-01) %.015 = select i1 %.not8, float %99, float %98 %100 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %100, 0 %101 = call float @llvm.nvvm.saturate.ftz.f(float %.015) #139 %102 = call float @llvm.nvvm.saturate.f(float %.015) #139 %.013 = select i1 %.not9, float %102, float %101 %103 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %103, 0 %104 = call float @llvm.nvvm.fma.rm.ftz.f(float %.013, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %105 = call float @llvm.nvvm.fma.rm.f(float %.013, float noundef 2.520000e+02, float noundef 0x4168000020000000) #139 %.09 = select i1 %.not10, float %105, float %104 %106 = fadd float %.09, 0xC168000FE0000000 %107 = fneg float %106 %108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %108, 0 %109 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float noundef 0x3FF7154760000000, float %107) #139 %110 = call float @llvm.fma.f32(float %.030, float noundef 0x3FF7154760000000, float %107) %.02 = select i1 %.not11, float %110, float %109 %111 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %111, 0 %112 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float noundef 0x3E54AE0C00000000, float %.02) #139 %113 = call float @llvm.fma.f32(float %.030, float noundef 0x3E54AE0C00000000, float %.02) %.019 = select i1 %.not12, float %113, float %112 %114 = bitcast float %.09 to i32 %115 = shl i32 %114, 23 %116 = bitcast i32 %115 to float %117 = call float @llvm.nvvm.ex2.approx.ftz.f(float %.019) #139 %118 = fmul float %117, %116 %119 = fadd float %118, %118 %120 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %120, 0 %121 = call float @llvm.nvvm.fma.rn.ftz.f(float %119, float %.031, float %119) #139 %122 = call float @llvm.fma.f32(float %119, float %.031, float %119) %.0 = select i1 %.not13, float %122, float %121 %123 = fsub float %.0, %t1.0 %124 = fcmp oeq float %119, 0x7FF0000000000000 %t1.1 = select i1 %124, float %119, float %123 br label %125 125: ; preds = %__nv_fmul_rz.exit, %88 %t1.2 = phi float [ %t1.1, %__nv_fmul_rz.exit ], [ %t1.0, %88 ] ret float %t1.2 } ; Function Attrs: noinline nounwind define dso_local float @__nv_erfcinvf(float %a) local_unnamed_addr #53 { __nv_fadd_rn.exit: %0 = fneg float %a %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.add.rn.ftz.f(float noundef 2.000000e+00, float %0) #139 %3 = fsub float 2.000000e+00, %a %.01 = select i1 %.not, float %3, float %2 %4 = fcmp oge float %a, 0x3F6BDA5120000000 %5 = fcmp ole float %a, 0x3FFFF212E0000000 %or.cond = and i1 %4, %5 br i1 %or.cond, label %__nv_fmul_rn.exit, label %41 __nv_fmul_rn.exit: ; preds = %__nv_fadd_rn.exit %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.mul.rn.ftz.f(float %.01, float %a) #139 %8 = fmul float %.01, %a %.02 = select i1 %.not11, float %8, float %7 %9 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.02) #139 %10 = fneg float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBDF14C6E00000000, float %10, float noundef 0x3E443EC8A0000000) #139 %13 = call float @llvm.fma.f32(float %10, float noundef 0xBDF14C6E00000000, float noundef 0x3E443EC8A0000000) %.04 = select i1 %.not12, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %10, float noundef 0xBE802DFB40000000) #139 %16 = call float @llvm.fma.f32(float %.04, float %10, float noundef 0xBE802DFB40000000) %.05 = select i1 %.not13, float %16, float %15 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %17, 0 %18 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %10, float noundef 0x3E8D1F08C0000000) #139 %19 = call float @llvm.fma.f32(float %.05, float %10, float noundef 0x3E8D1F08C0000000) %.07 = select i1 %.not14, float %19, float %18 %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %10, float noundef 0x3EE0E85540000000) #139 %22 = call float @llvm.fma.f32(float %.07, float %10, float noundef 0x3EE0E85540000000) %.08 = select i1 %.not15, float %22, float %21 %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %10, float noundef 0xBF009B69A0000000) #139 %25 = call float @llvm.fma.f32(float %.08, float %10, float noundef 0xBF009B69A0000000) %.09 = select i1 %.not16, float %25, float %24 %26 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %26, 0 %27 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %10, float noundef 0xBF495FD420000000) #139 %28 = call float @llvm.fma.f32(float %.09, float %10, float noundef 0xBF495FD420000000) %.010 = select i1 %.not17, float %28, float %27 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %10, float noundef 0x3F76B804E0000000) #139 %31 = call float @llvm.fma.f32(float %.010, float %10, float noundef 0x3F76B804E0000000) %.011 = select i1 %.not18, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %10, float noundef 0x3FC495C1E0000000) #139 %34 = call float @llvm.fma.f32(float %.011, float %10, float noundef 0x3FC495C1E0000000) %.012 = select i1 %.not19, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %10, float noundef 0x3FEC5BF880000000) #139 %37 = call float @llvm.fma.f32(float %.012, float %10, float noundef 0x3FEC5BF880000000) %.014 = select i1 %.not20, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %0, float %.014) #139 %40 = call float @llvm.fma.f32(float %.014, float %0, float %.014) %.015 = select i1 %.not21, float %40, float %39 br label %79 41: ; preds = %__nv_fadd_rn.exit %42 = fcmp ogt float %a, 1.000000e+00 %p.0 = select i1 %42, float %.01, float %a %43 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %43, 0 br i1 %.not1, label %46, label %44 44: ; preds = %41 %45 = call float @llvm.nvvm.lg2.approx.ftz.f(float %p.0) #139 br label %__nv_fast_log2f.exit 46: ; preds = %41 %47 = call float @llvm.nvvm.lg2.approx.f(float %p.0) #139 br label %__nv_fast_log2f.exit __nv_fast_log2f.exit: ; preds = %46, %44 %.016 = phi float [ %45, %44 ], [ %47, %46 ] %48 = fneg float %.016 %49 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %48) #139 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC04F8E7E20000000, float %49, float noundef 0x405FDF0520000000) #139 %52 = call float @llvm.fma.f32(float %49, float noundef 0xC04F8E7E20000000, float noundef 0x405FDF0520000000) %.017 = select i1 %.not2, float %52, float %51 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %49, float noundef 0xC05C86C380000000) #139 %55 = call float @llvm.fma.f32(float %.017, float %49, float noundef 0xC05C86C380000000) %.018 = select i1 %.not3, float %55, float %54 %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %49, float noundef 0x404E29B360000000) #139 %58 = call float @llvm.fma.f32(float %.018, float %49, float noundef 0x404E29B360000000) %.019 = select i1 %.not4, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %49, float noundef 0xC035CA3660000000) #139 %61 = call float @llvm.fma.f32(float %.019, float %49, float noundef 0xC035CA3660000000) %.021 = select i1 %.not5, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %49, float noundef 0x4019DEA080000000) #139 %64 = call float @llvm.fma.f32(float %.021, float %49, float noundef 0x4019DEA080000000) %.020 = select i1 %.not6, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %49, float noundef 0xBFFD53C0A0000000) #139 %67 = call float @llvm.fma.f32(float %.020, float %49, float noundef 0xBFFD53C0A0000000) %.013 = select i1 %.not7, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %49, float noundef 0xBF9F0E3E80000000) #139 %70 = call float @llvm.fma.f32(float %.013, float %49, float noundef 0xBF9F0E3E80000000) %.06 = select i1 %.not8, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %49, float noundef 0x3FEAA6EEA0000000) #139 %73 = call float @llvm.fma.f32(float %.06, float %49, float noundef 0x3FEAA6EEA0000000) %.0 = select i1 %.not9, float %73, float %72 %74 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %49) #141, !srcloc !73 %75 = fneg float %74 %t.0 = select i1 %42, float %75, float %74 %76 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %76, 0 %77 = call float @llvm.nvvm.mul.rn.ftz.f(float %.0, float %t.0) #139 %78 = fmul float %t.0, %.0 %.03 = select i1 %.not10, float %78, float %77 br label %79 79: ; preds = %__nv_fast_log2f.exit, %__nv_fmul_rn.exit %t.1 = phi float [ %.015, %__nv_fmul_rn.exit ], [ %.03, %__nv_fast_log2f.exit ] ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_normcdfinvf(float %a) local_unnamed_addr #54 { __nv_fadd_rn.exit.i: %0 = fadd float %a, %a %1 = fneg float %0 %2 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %2, 0 %3 = call float @llvm.nvvm.add.rn.ftz.f(float noundef 2.000000e+00, float %1) #139 %4 = fsub float 2.000000e+00, %0 %.01 = select i1 %.not, float %4, float %3 %5 = fcmp oge float %0, 0x3F6BDA5120000000 %6 = fcmp ole float %0, 0x3FFFF212E0000000 %or.cond = and i1 %5, %6 br i1 %or.cond, label %__nv_fmul_rn.exit.i, label %42 __nv_fmul_rn.exit.i: ; preds = %__nv_fadd_rn.exit.i %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.mul.rn.ftz.f(float %.01, float %0) #139 %9 = fmul float %0, %.01 %.03 = select i1 %.not12, float %9, float %8 %10 = call float @llvm.nvvm.lg2.approx.ftz.f(float %.03) #139 %11 = fneg float %10 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBDF14C6E00000000, float %11, float noundef 0x3E443EC8A0000000) #139 %14 = call float @llvm.fma.f32(float %11, float noundef 0xBDF14C6E00000000, float noundef 0x3E443EC8A0000000) %.05 = select i1 %.not13, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %11, float noundef 0xBE802DFB40000000) #139 %17 = call float @llvm.fma.f32(float %.05, float %11, float noundef 0xBE802DFB40000000) %.06 = select i1 %.not14, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %11, float noundef 0x3E8D1F08C0000000) #139 %20 = call float @llvm.fma.f32(float %.06, float %11, float noundef 0x3E8D1F08C0000000) %.07 = select i1 %.not15, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %11, float noundef 0x3EE0E85540000000) #139 %23 = call float @llvm.fma.f32(float %.07, float %11, float noundef 0x3EE0E85540000000) %.09 = select i1 %.not16, float %23, float %22 %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %11, float noundef 0xBF009B69A0000000) #139 %26 = call float @llvm.fma.f32(float %.09, float %11, float noundef 0xBF009B69A0000000) %.010 = select i1 %.not17, float %26, float %25 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float %11, float noundef 0xBF495FD420000000) #139 %29 = call float @llvm.fma.f32(float %.010, float %11, float noundef 0xBF495FD420000000) %.011 = select i1 %.not18, float %29, float %28 %30 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %30, 0 %31 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %11, float noundef 0x3F76B804E0000000) #139 %32 = call float @llvm.fma.f32(float %.011, float %11, float noundef 0x3F76B804E0000000) %.012 = select i1 %.not19, float %32, float %31 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %11, float noundef 0x3FC495C1E0000000) #139 %35 = call float @llvm.fma.f32(float %.012, float %11, float noundef 0x3FC495C1E0000000) %.013 = select i1 %.not20, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %11, float noundef 0x3FEC5BF880000000) #139 %38 = call float @llvm.fma.f32(float %.013, float %11, float noundef 0x3FEC5BF880000000) %.014 = select i1 %.not21, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %1, float %.014) #139 %41 = call float @llvm.fma.f32(float %.014, float %1, float %.014) %.016 = select i1 %.not22, float %41, float %40 br label %__nv_erfcinvf.exit 42: ; preds = %__nv_fadd_rn.exit.i %43 = fcmp ogt float %0, 1.000000e+00 %p.i.0 = select i1 %43, float %.01, float %0 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %44, 0 br i1 %.not1, label %47, label %45 45: ; preds = %42 %46 = call float @llvm.nvvm.lg2.approx.ftz.f(float %p.i.0) #139 br label %__nv_fast_log2f.exit.i 47: ; preds = %42 %48 = call float @llvm.nvvm.lg2.approx.f(float %p.i.0) #139 br label %__nv_fast_log2f.exit.i __nv_fast_log2f.exit.i: ; preds = %47, %45 %.017 = phi float [ %46, %45 ], [ %48, %47 ] %49 = fneg float %.017 %50 = call float @llvm.nvvm.rsqrt.approx.ftz.f(float %49) #139 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC04F8E7E20000000, float %50, float noundef 0x405FDF0520000000) #139 %53 = call float @llvm.fma.f32(float %50, float noundef 0xC04F8E7E20000000, float noundef 0x405FDF0520000000) %.018 = select i1 %.not2, float %53, float %52 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %50, float noundef 0xC05C86C380000000) #139 %56 = call float @llvm.fma.f32(float %.018, float %50, float noundef 0xC05C86C380000000) %.019 = select i1 %.not3, float %56, float %55 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %50, float noundef 0x404E29B360000000) #139 %59 = call float @llvm.fma.f32(float %.019, float %50, float noundef 0x404E29B360000000) %.020 = select i1 %.not4, float %59, float %58 %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %60, 0 %61 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %50, float noundef 0xC035CA3660000000) #139 %62 = call float @llvm.fma.f32(float %.020, float %50, float noundef 0xC035CA3660000000) %.021 = select i1 %.not5, float %62, float %61 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %63, 0 %64 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %50, float noundef 0x4019DEA080000000) #139 %65 = call float @llvm.fma.f32(float %.021, float %50, float noundef 0x4019DEA080000000) %.022 = select i1 %.not6, float %65, float %64 %66 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %66, 0 %67 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %50, float noundef 0xBFFD53C0A0000000) #139 %68 = call float @llvm.fma.f32(float %.022, float %50, float noundef 0xBFFD53C0A0000000) %.015 = select i1 %.not7, float %68, float %67 %69 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %69, 0 %70 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %50, float noundef 0xBF9F0E3E80000000) #139 %71 = call float @llvm.fma.f32(float %.015, float %50, float noundef 0xBF9F0E3E80000000) %.08 = select i1 %.not8, float %71, float %70 %72 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %72, 0 %73 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %50, float noundef 0x3FEAA6EEA0000000) #139 %74 = call float @llvm.fma.f32(float %.08, float %50, float noundef 0x3FEAA6EEA0000000) %.02 = select i1 %.not9, float %74, float %73 %75 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %50) #141, !srcloc !73 %76 = fneg float %75 %t.i.0 = select i1 %43, float %76, float %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.mul.rn.ftz.f(float %.02, float %t.i.0) #139 %79 = fmul float %t.i.0, %.02 %.04 = select i1 %.not10, float %79, float %78 br label %__nv_erfcinvf.exit __nv_erfcinvf.exit: ; preds = %__nv_fast_log2f.exit.i, %__nv_fmul_rn.exit.i %t.i.1 = phi float [ %.016, %__nv_fmul_rn.exit.i ], [ %.04, %__nv_fast_log2f.exit.i ] %80 = fmul float %t.i.1, 0xBFF6A09E60000000 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.add.rn.ftz.f(float %80, float noundef 0.000000e+00) #139 %83 = fadd float %80, 0.000000e+00 %.0 = select i1 %.not11, float %83, float %82 ret float %.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_normcdff(float %a) local_unnamed_addr #55 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.03 = select i1 %.not, float %2, float %1 %3 = fcmp ogt float %.03, 1.450000e+01 %4 = bitcast float %a to i32 %5 = and i32 %4, -2147483648 %6 = or i32 %5, 1097334784 %7 = bitcast i32 %6 to float %.02 = select i1 %3, float %7, float %a %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.mul.rn.ftz.f(float %.02, float noundef 0xBFE6A09E60000000) #139 %10 = fmul float %.02, 0xBFE6A09E60000000 %.06 = select i1 %.not1, float %10, float %9 %11 = fneg float %.06 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %12, 0 %13 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float noundef 0xBFE6A09E60000000, float %11) #139 %14 = call float @llvm.fma.f32(float %.02, float noundef 0xBFE6A09E60000000, float %11) %.07 = select i1 %.not2, float %14, float %13 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %15, 0 %16 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float noundef 0xBE49FCEF40000000, float %.07) #139 %17 = call float @llvm.fma.f32(float %.02, float noundef 0xBE49FCEF40000000, float %.07) %.09 = select i1 %.not3, float %17, float %16 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %18, 0 %19 = call float @llvm.nvvm.add.rn.ftz.f(float %.06, float %.09) #139 %20 = fadd float %.06, %.09 %.010 = select i1 %.not4, float %20, float %19 %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fabs.ftz.f(float %.010) #139 %23 = call float @llvm.fabs.f32(float %.010) %.011 = select i1 %.not5, float %23, float %22 %24 = fadd float %.011, -4.000000e+00 %25 = fadd float %.011, 4.000000e+00 %26 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %25) #141, !srcloc !73 %27 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %27, 0 %28 = call float @llvm.nvvm.mul.rn.ftz.f(float %24, float %26) #139 %29 = fmul float %26, %24 %.013 = select i1 %.not6, float %29, float %28 %30 = fadd float %.013, 1.000000e+00 %31 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %31, 0 %32 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -4.000000e+00, float %30, float %.011) #139 %33 = call float @llvm.fma.f32(float %30, float noundef -4.000000e+00, float %.011) %.014 = select i1 %.not7, float %33, float %32 %34 = fneg float %.013 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %34, float %.011, float %.014) #139 %37 = call float @llvm.fma.f32(float %34, float %.011, float %.014) %.015 = select i1 %.not8, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %26, float %.015, float %.013) #139 %40 = call float @llvm.fma.f32(float %26, float %.015, float %.013) %.016 = select i1 %.not9, float %40, float %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F4D341220000000, float %.016, float noundef 0x3F7CDC0B60000000) #139 %43 = call float @llvm.fma.f32(float %.016, float noundef 0x3F4D341220000000, float noundef 0x3F7CDC0B60000000) %.017 = select i1 %.not10, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %.016, float noundef 0xBF903F6960000000) #139 %46 = call float @llvm.fma.f32(float %.017, float %.016, float noundef 0xBF903F6960000000) %.018 = select i1 %.not11, float %46, float %45 %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %.016, float noundef 0x3FA2A6E760000000) #139 %49 = call float @llvm.fma.f32(float %.018, float %.016, float noundef 0x3FA2A6E760000000) %.019 = select i1 %.not12, float %49, float %48 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %.016, float noundef 0xBFB10F8B40000000) #139 %52 = call float @llvm.fma.f32(float %.019, float %.016, float noundef 0xBFB10F8B40000000) %.020 = select i1 %.not13, float %52, float %51 %53 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %53, 0 %54 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %.016, float noundef 0x3FB8043AA0000000) #139 %55 = call float @llvm.fma.f32(float %.020, float %.016, float noundef 0x3FB8043AA0000000) %.021 = select i1 %.not14, float %55, float %54 %56 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %56, 0 %57 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %.016, float noundef 0xBFB9DA8480000000) #139 %58 = call float @llvm.fma.f32(float %.021, float %.016, float noundef 0xBFB9DA8480000000) %.022 = select i1 %.not15, float %58, float %57 %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %.016, float noundef 0x3FB16E9BC0000000) #139 %61 = call float @llvm.fma.f32(float %.022, float %.016, float noundef 0x3FB16E9BC0000000) %.024 = select i1 %.not16, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %.016, float noundef 0x3F8F7E2E00000000) #139 %64 = call float @llvm.fma.f32(float %.024, float %.016, float noundef 0x3F8F7E2E00000000) %.025 = select i1 %.not17, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float %.016, float noundef 0xBFC1DF1A80000000) #139 %67 = call float @llvm.fma.f32(float %.025, float %.016, float noundef 0xBFC1DF1A80000000) %.026 = select i1 %.not18, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %.016, float noundef 0x3FF3BA5920000000) #139 %70 = call float @llvm.fma.f32(float %.026, float %.016, float noundef 0x3FF3BA5920000000) %.027 = select i1 %.not19, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 2.000000e+00, float %.011, float noundef 1.000000e+00) #139 %73 = call float @llvm.fma.f32(float %.011, float noundef 2.000000e+00, float noundef 1.000000e+00) %.028 = select i1 %.not20, float %73, float %72 %74 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.028) #141, !srcloc !73 %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %75, 0 %76 = call float @llvm.nvvm.mul.rn.ftz.f(float %.027, float %74) #139 %77 = fmul float %74, %.027 %.029 = select i1 %.not21, float %77, float %76 %78 = fmul float %.029, -2.000000e+00 %79 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %79, 0 %80 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %78, float %.027) #139 %81 = call float @llvm.fma.f32(float %.011, float %78, float %.027) %.030 = select i1 %.not22, float %81, float %80 %82 = fsub float %.030, %.029 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %83, 0 %84 = call float @llvm.nvvm.fma.rn.ftz.f(float %82, float %74, float %.029) #139 %85 = call float @llvm.fma.f32(float %82, float %74, float %.029) %.031 = select i1 %.not23, float %85, float %84 %86 = fneg float %.011 %87 = fmul float %.011, %86 %88 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %88, 0 %89 = call float @llvm.nvvm.mul.rn.ftz.f(float %87, float noundef 0x3FF7154760000000) #139 %90 = fmul float %87, 0x3FF7154760000000 %.08 = select i1 %.not24, float %90, float %89 %91 = call float @llvm.trunc.f32(float %.08) %92 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %92, 0 %93 = call float @llvm.nvvm.fabs.ftz.f(float %91) #139 %94 = call float @llvm.fabs.f32(float %91) %.012 = select i1 %.not25, float %94, float %93 %95 = fcmp ogt float %.012, 1.260000e+02 %96 = bitcast float %91 to i32 %97 = and i32 %96, -2147483648 %98 = or i32 %97, 1123811328 %99 = bitcast i32 %98 to float %j.i.i.0 = select i1 %95, float %99, float %91 %100 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %100, 0 %101 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.i.0, float noundef 0xBFE62E4300000000, float %87) #139 %102 = call float @llvm.fma.f32(float %j.i.i.0, float noundef 0xBFE62E4300000000, float %87) %.023 = select i1 %.not26, float %102, float %101 %103 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %103, 0 %104 = call float @llvm.nvvm.fma.rn.ftz.f(float %j.i.i.0, float noundef 0x3E205C6100000000, float %.023) #139 %105 = call float @llvm.fma.f32(float %j.i.i.0, float noundef 0x3E205C6100000000, float %.023) %.032 = select i1 %.not27, float %105, float %104 %106 = fmul float %.032, 0x3FF7154760000000 %107 = fadd float %j.i.i.0, 0x4168000FE0000000 %108 = bitcast float %107 to i32 %109 = shl i32 %108, 23 %110 = bitcast i32 %109 to float %111 = call float @llvm.nvvm.ex2.approx.ftz.f(float %106) #139 %112 = fmul float %111, %110 %113 = fneg float %87 %114 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %114, 0 %115 = call float @llvm.nvvm.fma.rn.ftz.f(float %86, float %.011, float %113) #139 %116 = call float @llvm.fma.f32(float %86, float %.011, float %113) %.04 = select i1 %.not28, float %116, float %115 %117 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %117, 0 %118 = call float @llvm.nvvm.fma.rn.ftz.f(float %112, float %.04, float %112) #139 %119 = call float @llvm.fma.f32(float %112, float %.04, float %112) %.01 = select i1 %.not29, float %119, float %118 %120 = fmul float %.01, %.031 %121 = fcmp ogt float %.011, 0x40241C2900000000 %t1.i.0 = select i1 %121, float 0.000000e+00, float %120 %122 = fcmp olt float %.010, 0.000000e+00 %123 = fsub float 2.000000e+00, %t1.i.0 %124 = select i1 %122, float %123, float %t1.i.0 %125 = fcmp olt float %.02, -1.000000e+00 br i1 %125, label %__nv_fadd_rn.exit2, label %135 __nv_fadd_rn.exit2: ; preds = %__nv_fabsf.exit %126 = fsub float %.06, %.010 %127 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %127, 0 %128 = call float @llvm.nvvm.add.rn.ftz.f(float %126, float %.09) #139 %129 = fadd float %.09, %126 %.0 = select i1 %.not30, float %129, float %128 %130 = fmul float %.010, -2.000000e+00 %131 = fmul float %130, %124 %132 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %132, 0 %133 = call float @llvm.nvvm.fma.rn.ftz.f(float %131, float %.0, float %124) #139 %134 = call float @llvm.fma.f32(float %131, float %.0, float %124) %.05 = select i1 %.not31, float %134, float %133 br label %135 135: ; preds = %__nv_fadd_rn.exit2, %__nv_fabsf.exit %z.0 = phi float [ %.05, %__nv_fadd_rn.exit2 ], [ %124, %__nv_fabsf.exit ] %136 = fmul float %z.0, 5.000000e-01 ret float %136 } ; Function Attrs: noinline nounwind define dso_local float @__nv_lgammaf(float %a) local_unnamed_addr #56 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.02 = select i1 %.not, float %2, float %1 %3 = fcmp ult float %.02, 3.000000e+00 br i1 %3, label %103, label %4 4: ; preds = %__nv_fabsf.exit %5 = fcmp ult float %.02, 0x401F333340000000 br i1 %5, label %__internal_fmad.exit5.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %4 %6 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.02) #141, !srcloc !73 %7 = fmul float %6, %6 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not88 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F497CEAA0000000, float %7, float noundef 0xBF66C12A60000000) #139 %10 = call float @llvm.fma.f32(float %7, float noundef 0x3F497CEAA0000000, float noundef 0xBF66C12A60000000) %.05 = select i1 %.not88, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not89 = icmp eq i32 %11, 0 %12 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %7, float noundef 0x3FB5555460000000) #139 %13 = call float @llvm.fma.f32(float %.05, float %7, float noundef 0x3FB5555460000000) %.06 = select i1 %.not89, float %13, float %12 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not90 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.fma.rn.ftz.f(float %.06, float %6, float noundef 0x3FED67F1C0000000) #139 %16 = call float @llvm.fma.f32(float %.06, float %6, float noundef 0x3FED67F1C0000000) %.07 = select i1 %.not90, float %16, float %15 %17 = fcmp olt float %.02, 0x3810000000000000 %18 = fmul float %.02, 0x4160000000000000 %.010 = select i1 %17, float %18, float %.02 %i.i.i.0 = select i1 %17, float -2.300000e+01, float 0.000000e+00 %19 = bitcast float %.010 to i32 %20 = add i32 %19, -1059760811 %21 = and i32 %20, -8388608 %22 = sub i32 %19, %21 %23 = bitcast i32 %22 to float %24 = sitofp i32 %21 to float %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not91 = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fma.rn.ftz.f(float %24, float noundef 0x3E80000000000000, float noundef %i.i.i.0) #139 %27 = call float @llvm.fma.f32(float %24, float noundef 0x3E80000000000000, float noundef %i.i.i.0) %.016 = select i1 %.not91, float %27, float %26 %28 = fadd float %23, -1.000000e+00 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not92 = icmp eq i32 %29, 0 %30 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %28, float noundef 0x3FC2073EC0000000) #139 %31 = call float @llvm.fma.f32(float %28, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.018 = select i1 %.not92, float %31, float %30 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not93 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float %.018, float %28, float noundef 0xBFBF19B980000000) #139 %34 = call float @llvm.fma.f32(float %.018, float %28, float noundef 0xBFBF19B980000000) %.019 = select i1 %.not93, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not94 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %28, float noundef 0x3FC1E52AA0000000) #139 %37 = call float @llvm.fma.f32(float %.019, float %28, float noundef 0x3FC1E52AA0000000) %.020 = select i1 %.not94, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not95 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %28, float noundef 0xBFC55B1720000000) #139 %40 = call float @llvm.fma.f32(float %.020, float %28, float noundef 0xBFC55B1720000000) %.022 = select i1 %.not95, float %40, float %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not96 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %.022, float %28, float noundef 0x3FC99DA160000000) #139 %43 = call float @llvm.fma.f32(float %.022, float %28, float noundef 0x3FC99DA160000000) %.023 = select i1 %.not96, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not97 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float %28, float noundef 0xBFCFFFE440000000) #139 %46 = call float @llvm.fma.f32(float %.023, float %28, float noundef 0xBFCFFFE440000000) %.024 = select i1 %.not97, float %46, float %45 %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not98 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %28, float noundef 0x3FD5554F00000000) #139 %49 = call float @llvm.fma.f32(float %.024, float %28, float noundef 0x3FD5554F00000000) %.026 = select i1 %.not98, float %49, float %48 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not99 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %28, float noundef -5.000000e-01) #139 %52 = call float @llvm.fma.f32(float %.026, float %28, float noundef -5.000000e-01) %.015 = select i1 %.not99, float %52, float %51 %53 = fmul float %28, %.015 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not100 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %53, float %28, float %28) #139 %56 = call float @llvm.fma.f32(float %53, float %28, float %28) %.014 = select i1 %.not100, float %56, float %55 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not101 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float noundef 0x3FE62E4300000000, float %.014) #139 %59 = call float @llvm.fma.f32(float %.016, float noundef 0x3FE62E4300000000, float %.014) %.012 = select i1 %.not101, float %59, float %58 %60 = icmp ugt i32 %19, 2139095039 br i1 %60, label %__nv_fmaf_rn.exit.i.i, label %__internal_accurate_logf.exit.i __nv_fmaf_rn.exit.i.i: ; preds = %__internal_fmad.exit.i %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not104 = icmp eq i32 %61, 0 %62 = call float @llvm.nvvm.fma.rn.ftz.f(float %.010, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %63 = call float @llvm.fma.f32(float %.010, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.011 = select i1 %.not104, float %63, float %62 br label %__internal_accurate_logf.exit.i __internal_accurate_logf.exit.i: ; preds = %__nv_fmaf_rn.exit.i.i, %__internal_fmad.exit.i %r.i3.i.0 = phi float [ %.011, %__nv_fmaf_rn.exit.i.i ], [ %.012, %__internal_fmad.exit.i ] %64 = fcmp oeq float %.010, 0.000000e+00 %r.i3.i.0.op = fmul float %r.i3.i.0, 5.000000e-01 %65 = select i1 %64, float 0xFFF0000000000000, float %r.i3.i.0.op %66 = fadd float %.02, -5.000000e-01 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not102 = icmp eq i32 %67, 0 %68 = call float @llvm.nvvm.mul.rn.ftz.f(float %65, float %66) #139 %69 = fmul float %66, %65 %.027 = select i1 %.not102, float %69, float %68 %70 = fsub float %.027, %.02 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not103 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.add.rn.ftz.f(float %.027, float %.07) #139 %73 = fadd float %.07, %.027 %.028 = select i1 %.not103, float %73, float %72 %74 = fadd float %70, %.028 %75 = fcmp oeq float %.02, 0x7FF0000000000000 %t.i.0 = select i1 %75, float %.02, float %74 br label %__internal_lgammaf_pos.exit __internal_fmad.exit5.i: ; preds = %4 %76 = fadd float %.02, -3.000000e+00 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xC087671F60000000, float %76, float noundef 0xC0C81EDF00000000) #139 %79 = call float @llvm.fma.f32(float %76, float noundef 0xC087671F60000000, float noundef 0xC0C81EDF00000000) %.030 = select i1 %.not80, float %79, float %78 %80 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not81 = icmp eq i32 %80, 0 %81 = call float @llvm.nvvm.fma.rn.ftz.f(float %.030, float %76, float noundef 0xC0E40CAC00000000) #139 %82 = call float @llvm.fma.f32(float %.030, float %76, float noundef 0xC0E40CAC00000000) %.031 = select i1 %.not81, float %82, float %81 %83 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %83, 0 %84 = call float @llvm.nvvm.fma.rn.ftz.f(float %.031, float %76, float noundef 0xC0E796D540000000) #139 %85 = call float @llvm.fma.f32(float %.031, float %76, float noundef 0xC0E796D540000000) %.032 = select i1 %.not82, float %85, float %84 %86 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %86, 0 %87 = call float @llvm.nvvm.fma.rn.ftz.f(float %.032, float %76, float noundef 0xC10175CB40000000) #139 %88 = call float @llvm.fma.f32(float %.032, float %76, float noundef 0xC10175CB40000000) %.033 = select i1 %.not83, float %88, float %87 %89 = fadd float %76, 0xC070340400000000 %90 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not84 = icmp eq i32 %90, 0 %91 = call float @llvm.nvvm.fma.rn.ftz.f(float %89, float %76, float noundef 0xC0C50C9700000000) #139 %92 = call float @llvm.fma.f32(float %89, float %76, float noundef 0xC0C50C9700000000) %.035 = select i1 %.not84, float %92, float %91 %93 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not85 = icmp eq i32 %93, 0 %94 = call float @llvm.nvvm.fma.rn.ftz.f(float %.035, float %76, float noundef 0xC0F6A0D0C0000000) #139 %95 = call float @llvm.fma.f32(float %.035, float %76, float noundef 0xC0F6A0D0C0000000) %.036 = select i1 %.not85, float %95, float %94 %96 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not86 = icmp eq i32 %96, 0 %97 = call float @llvm.nvvm.fma.rn.ftz.f(float %.036, float %76, float noundef 0xC109308CA0000000) #139 %98 = call float @llvm.fma.f32(float %.036, float %76, float noundef 0xC109308CA0000000) %.037 = select i1 %.not86, float %98, float %97 %99 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.037) #141, !srcloc !73 %100 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not87 = icmp eq i32 %100, 0 %101 = call float @llvm.nvvm.fma.rn.ftz.f(float %.033, float %99, float %76) #139 %102 = call float @llvm.fma.f32(float %.033, float %99, float %76) %.038 = select i1 %.not87, float %102, float %101 br label %__internal_lgammaf_pos.exit 103: ; preds = %__nv_fabsf.exit %104 = fcmp ult float %.02, 1.500000e+00 br i1 %104, label %134, label %__internal_fmad.exit22.i __internal_fmad.exit22.i: ; preds = %103 %105 = fadd float %.02, -2.000000e+00 %106 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %106, 0 %107 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F0A00FF40000000, float %105, float noundef 0xBF2CF40040000000) #139 %108 = call float @llvm.fma.f32(float %105, float noundef 0x3F0A00FF40000000, float noundef 0xBF2CF40040000000) %.039 = select i1 %.not71, float %108, float %107 %109 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %109, 0 %110 = call float @llvm.nvvm.fma.rn.ftz.f(float %.039, float %105, float noundef 0x3F41BCDF80000000) #139 %111 = call float @llvm.fma.f32(float %.039, float %105, float noundef 0x3F41BCDF80000000) %.041 = select i1 %.not72, float %111, float %110 %112 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %112, 0 %113 = call float @llvm.nvvm.fma.rn.ftz.f(float %.041, float %105, float noundef 0xBF53BC1C40000000) #139 %114 = call float @llvm.fma.f32(float %.041, float %105, float noundef 0xBF53BC1C40000000) %.042 = select i1 %.not73, float %114, float %113 %115 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %115, 0 %116 = call float @llvm.nvvm.fma.rn.ftz.f(float %.042, float %105, float noundef 0x3F67A0B6E0000000) #139 %117 = call float @llvm.fma.f32(float %.042, float %105, float noundef 0x3F67A0B6E0000000) %.043 = select i1 %.not74, float %117, float %116 %118 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %118, 0 %119 = call float @llvm.nvvm.fma.rn.ftz.f(float %.043, float %105, float noundef 0xBF7E3D6200000000) #139 %120 = call float @llvm.fma.f32(float %.043, float %105, float noundef 0xBF7E3D6200000000) %.044 = select i1 %.not75, float %120, float %119 %121 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not76 = icmp eq i32 %121, 0 %122 = call float @llvm.nvvm.fma.rn.ftz.f(float %.044, float %105, float noundef 0x3F95134500000000) #139 %123 = call float @llvm.fma.f32(float %.044, float %105, float noundef 0x3F95134500000000) %.045 = select i1 %.not76, float %123, float %122 %124 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %124, 0 %125 = call float @llvm.nvvm.fma.rn.ftz.f(float %.045, float %105, float noundef 0xBFB13E0340000000) #139 %126 = call float @llvm.fma.f32(float %.045, float %105, float noundef 0xBFB13E0340000000) %.046 = select i1 %.not77, float %126, float %125 %127 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not78 = icmp eq i32 %127, 0 %128 = call float @llvm.nvvm.fma.rn.ftz.f(float %.046, float %105, float noundef 0x3FD4A34CC0000000) #139 %129 = call float @llvm.fma.f32(float %.046, float %105, float noundef 0x3FD4A34CC0000000) %.047 = select i1 %.not78, float %129, float %128 %130 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not79 = icmp eq i32 %130, 0 %131 = call float @llvm.nvvm.fma.rn.ftz.f(float %.047, float %105, float noundef 0x3FDB0EE600000000) #139 %132 = call float @llvm.fma.f32(float %.047, float %105, float noundef 0x3FDB0EE600000000) %.048 = select i1 %.not79, float %132, float %131 %133 = fmul float %105, %.048 br label %__internal_lgammaf_pos.exit 134: ; preds = %103 %135 = fcmp ult float %.02, 0x3FE6666660000000 br i1 %135, label %__internal_fmad.exit60.i, label %__internal_fmad.exit40.i __internal_fmad.exit40.i: ; preds = %134 %136 = fsub float 1.000000e+00, %.02 %137 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not61 = icmp eq i32 %137, 0 %138 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FA77DEEC0000000, float %136, float noundef 0x3FBA8EAEE0000000) #139 %139 = call float @llvm.fma.f32(float %136, float noundef 0x3FA77DEEC0000000, float noundef 0x3FBA8EAEE0000000) %.049 = select i1 %.not61, float %139, float %138 %140 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not62 = icmp eq i32 %140, 0 %141 = call float @llvm.nvvm.fma.rn.ftz.f(float %.049, float %136, float noundef 0x3FBF700F20000000) #139 %142 = call float @llvm.fma.f32(float %.049, float %136, float noundef 0x3FBF700F20000000) %.050 = select i1 %.not62, float %142, float %141 %143 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %143, 0 %144 = call float @llvm.nvvm.fma.rn.ftz.f(float %.050, float %136, float noundef 0x3FC052B6A0000000) #139 %145 = call float @llvm.fma.f32(float %.050, float %136, float noundef 0x3FC052B6A0000000) %.051 = select i1 %.not63, float %145, float %144 %146 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not64 = icmp eq i32 %146, 0 %147 = call float @llvm.nvvm.fma.rn.ftz.f(float %.051, float %136, float noundef 0x3FC254ECA0000000) #139 %148 = call float @llvm.fma.f32(float %.051, float %136, float noundef 0x3FC254ECA0000000) %.053 = select i1 %.not64, float %148, float %147 %149 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %149, 0 %150 = call float @llvm.nvvm.fma.rn.ftz.f(float %.053, float %136, float noundef 0x3FC5AD0CE0000000) #139 %151 = call float @llvm.fma.f32(float %.053, float %136, float noundef 0x3FC5AD0CE0000000) %.054 = select i1 %.not65, float %151, float %150 %152 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not66 = icmp eq i32 %152, 0 %153 = call float @llvm.nvvm.fma.rn.ftz.f(float %.054, float %136, float noundef 0x3FCA8C57E0000000) #139 %154 = call float @llvm.fma.f32(float %.054, float %136, float noundef 0x3FCA8C57E0000000) %.055 = select i1 %.not66, float %154, float %153 %155 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %155, 0 %156 = call float @llvm.nvvm.fma.rn.ftz.f(float %.055, float %136, float noundef 0x3FD1514E40000000) #139 %157 = call float @llvm.fma.f32(float %.055, float %136, float noundef 0x3FD1514E40000000) %.056 = select i1 %.not67, float %157, float %156 %158 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %158, 0 %159 = call float @llvm.nvvm.fma.rn.ftz.f(float %.056, float %136, float noundef 0x3FD9A4D480000000) #139 %160 = call float @llvm.fma.f32(float %.056, float %136, float noundef 0x3FD9A4D480000000) %.057 = select i1 %.not68, float %160, float %159 %161 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not69 = icmp eq i32 %161, 0 %162 = call float @llvm.nvvm.fma.rn.ftz.f(float %.057, float %136, float noundef 0x3FEA51A640000000) #139 %163 = call float @llvm.fma.f32(float %.057, float %136, float noundef 0x3FEA51A640000000) %.058 = select i1 %.not69, float %163, float %162 %164 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not70 = icmp eq i32 %164, 0 %165 = call float @llvm.nvvm.fma.rn.ftz.f(float %.058, float %136, float noundef 0x3FE2788D00000000) #139 %166 = call float @llvm.fma.f32(float %.058, float %136, float noundef 0x3FE2788D00000000) %.059 = select i1 %.not70, float %166, float %165 %167 = fmul float %136, %.059 br label %__internal_lgammaf_pos.exit __internal_fmad.exit60.i: ; preds = %134 %168 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %168, 0 %169 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F6D6390C0000000, float %.02, float noundef 0xBF76690F00000000) #139 %170 = call float @llvm.fma.f32(float %.02, float noundef 0x3F6D6390C0000000, float noundef 0xBF76690F00000000) %.061 = select i1 %.not1, float %170, float %169 %171 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %171, 0 %172 = call float @llvm.nvvm.fma.rn.ftz.f(float %.061, float %.02, float noundef 0xBFA6D95DE0000000) #139 %173 = call float @llvm.fma.f32(float %.061, float %.02, float noundef 0xBFA6D95DE0000000) %.063 = select i1 %.not2, float %173, float %172 %174 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %174, 0 %175 = call float @llvm.nvvm.fma.rn.ftz.f(float %.063, float %.02, float noundef 0x3FC56AAAA0000000) #139 %176 = call float @llvm.fma.f32(float %.063, float %.02, float noundef 0x3FC56AAAA0000000) %.065 = select i1 %.not3, float %176, float %175 %177 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %177, 0 %178 = call float @llvm.nvvm.fma.rn.ftz.f(float %.065, float %.02, float noundef 0xBFA592D8E0000000) #139 %179 = call float @llvm.fma.f32(float %.065, float %.02, float noundef 0xBFA592D8E0000000) %.066 = select i1 %.not4, float %179, float %178 %180 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %180, 0 %181 = call float @llvm.nvvm.fma.rn.ftz.f(float %.066, float %.02, float noundef 0xBFE4FCDD60000000) #139 %182 = call float @llvm.fma.f32(float %.066, float %.02, float noundef 0xBFE4FCDD60000000) %.067 = select i1 %.not5, float %182, float %181 %183 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %183, 0 %184 = call float @llvm.nvvm.fma.rn.ftz.f(float %.067, float %.02, float noundef 0x3FE2788C60000000) #139 %185 = call float @llvm.fma.f32(float %.067, float %.02, float noundef 0x3FE2788C60000000) %.068 = select i1 %.not6, float %185, float %184 %186 = fmul float %.02, %.068 %187 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %187, 0 %188 = call float @llvm.nvvm.fma.rn.ftz.f(float %186, float %.02, float %.02) #139 %189 = call float @llvm.fma.f32(float %186, float %.02, float %.02) %.069 = select i1 %.not7, float %189, float %188 %190 = fcmp olt float %.069, 0x3810000000000000 %191 = fmul float %.069, 0x4160000000000000 %.071 = select i1 %190, float %191, float %.069 %i.i82.i.0 = select i1 %190, float -2.300000e+01, float 0.000000e+00 %192 = bitcast float %.071 to i32 %193 = add i32 %192, -1059760811 %194 = and i32 %193, -8388608 %195 = sub i32 %192, %194 %196 = bitcast i32 %195 to float %197 = sitofp i32 %194 to float %198 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %198, 0 %199 = call float @llvm.nvvm.fma.rn.ftz.f(float %197, float noundef 0x3E80000000000000, float noundef %i.i82.i.0) #139 %200 = call float @llvm.fma.f32(float %197, float noundef 0x3E80000000000000, float noundef %i.i82.i.0) %.077 = select i1 %.not8, float %200, float %199 %201 = fadd float %196, -1.000000e+00 %202 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %202, 0 %203 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %201, float noundef 0x3FC2073EC0000000) #139 %204 = call float @llvm.fma.f32(float %201, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.078 = select i1 %.not9, float %204, float %203 %205 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %205, 0 %206 = call float @llvm.nvvm.fma.rn.ftz.f(float %.078, float %201, float noundef 0xBFBF19B980000000) #139 %207 = call float @llvm.fma.f32(float %.078, float %201, float noundef 0xBFBF19B980000000) %.079 = select i1 %.not10, float %207, float %206 %208 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %208, 0 %209 = call float @llvm.nvvm.fma.rn.ftz.f(float %.079, float %201, float noundef 0x3FC1E52AA0000000) #139 %210 = call float @llvm.fma.f32(float %.079, float %201, float noundef 0x3FC1E52AA0000000) %.080 = select i1 %.not11, float %210, float %209 %211 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %211, 0 %212 = call float @llvm.nvvm.fma.rn.ftz.f(float %.080, float %201, float noundef 0xBFC55B1720000000) #139 %213 = call float @llvm.fma.f32(float %.080, float %201, float noundef 0xBFC55B1720000000) %.081 = select i1 %.not12, float %213, float %212 %214 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %214, 0 %215 = call float @llvm.nvvm.fma.rn.ftz.f(float %.081, float %201, float noundef 0x3FC99DA160000000) #139 %216 = call float @llvm.fma.f32(float %.081, float %201, float noundef 0x3FC99DA160000000) %.083 = select i1 %.not13, float %216, float %215 %217 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %217, 0 %218 = call float @llvm.nvvm.fma.rn.ftz.f(float %.083, float %201, float noundef 0xBFCFFFE440000000) #139 %219 = call float @llvm.fma.f32(float %.083, float %201, float noundef 0xBFCFFFE440000000) %.084 = select i1 %.not14, float %219, float %218 %220 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %220, 0 %221 = call float @llvm.nvvm.fma.rn.ftz.f(float %.084, float %201, float noundef 0x3FD5554F00000000) #139 %222 = call float @llvm.fma.f32(float %.084, float %201, float noundef 0x3FD5554F00000000) %.085 = select i1 %.not15, float %222, float %221 %223 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %223, 0 %224 = call float @llvm.nvvm.fma.rn.ftz.f(float %.085, float %201, float noundef -5.000000e-01) #139 %225 = call float @llvm.fma.f32(float %.085, float %201, float noundef -5.000000e-01) %.076 = select i1 %.not16, float %225, float %224 %226 = fmul float %201, %.076 %227 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %227, 0 %228 = call float @llvm.nvvm.fma.rn.ftz.f(float %226, float %201, float %201) #139 %229 = call float @llvm.fma.f32(float %226, float %201, float %201) %.074 = select i1 %.not17, float %229, float %228 %230 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %230, 0 %231 = call float @llvm.nvvm.fma.rn.ftz.f(float %.077, float noundef 0x3FE62E4300000000, float %.074) #139 %232 = call float @llvm.fma.f32(float %.077, float noundef 0x3FE62E4300000000, float %.074) %.073 = select i1 %.not18, float %232, float %231 %233 = icmp ugt i32 %192, 2139095039 br i1 %233, label %__nv_fmaf_rn.exit.i95.i, label %__internal_accurate_logf.exit96.i __nv_fmaf_rn.exit.i95.i: ; preds = %__internal_fmad.exit60.i %234 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %234, 0 %235 = call float @llvm.nvvm.fma.rn.ftz.f(float %.071, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %236 = call float @llvm.fma.f32(float %.071, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.072 = select i1 %.not60, float %236, float %235 br label %__internal_accurate_logf.exit96.i __internal_accurate_logf.exit96.i: ; preds = %__nv_fmaf_rn.exit.i95.i, %__internal_fmad.exit60.i %r.i81.i.0 = phi float [ %.072, %__nv_fmaf_rn.exit.i95.i ], [ %.073, %__internal_fmad.exit60.i ] %237 = fcmp oeq float %.071, 0.000000e+00 %r.i81.i.1 = select i1 %237, float 0xFFF0000000000000, float %r.i81.i.0 %238 = fneg float %r.i81.i.1 br label %__internal_lgammaf_pos.exit __internal_lgammaf_pos.exit: ; preds = %__internal_fmad.exit22.i, %__internal_accurate_logf.exit96.i, %__internal_fmad.exit40.i, %__internal_accurate_logf.exit.i, %__internal_fmad.exit5.i %t.i.4 = phi float [ %t.i.0, %__internal_accurate_logf.exit.i ], [ %.038, %__internal_fmad.exit5.i ], [ %133, %__internal_fmad.exit22.i ], [ %167, %__internal_fmad.exit40.i ], [ %238, %__internal_accurate_logf.exit96.i ] %239 = fcmp ult float %a, 0.000000e+00 br i1 %239, label %__nv_fabsf.exit1, label %388 __nv_fabsf.exit1: ; preds = %__internal_lgammaf_pos.exit %240 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %240, 0 %.086 = select i1 %.not19, float %2, float %1 %241 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %241, 0 %242 = call float @llvm.nvvm.floor.ftz.f(float %.086) #139 %243 = call float @llvm.floor.f32(float %.086) %.087 = select i1 %.not20, float %243, float %242 %244 = fcmp oeq float %.086, %.087 br i1 %244, label %388, label %245 245: ; preds = %__nv_fabsf.exit1 %246 = fcmp olt float %.086, 0x3BFD83C940000000 br i1 %246, label %__nv_fmaf_rn.exit10.i, label %__internal_fmad.exit __nv_fmaf_rn.exit10.i: ; preds = %245 %247 = fcmp olt float %.086, 0x3810000000000000 %248 = fmul float %.086, 0x4160000000000000 %.089 = select i1 %247, float %248, float %.086 %i.i.0 = select i1 %247, float -2.300000e+01, float 0.000000e+00 %249 = bitcast float %.089 to i32 %250 = add i32 %249, -1059760811 %251 = and i32 %250, -8388608 %252 = sub i32 %249, %251 %253 = bitcast i32 %252 to float %254 = sitofp i32 %251 to float %255 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %255, 0 %256 = call float @llvm.nvvm.fma.rn.ftz.f(float %254, float noundef 0x3E80000000000000, float noundef %i.i.0) #139 %257 = call float @llvm.fma.f32(float %254, float noundef 0x3E80000000000000, float noundef %i.i.0) %.095 = select i1 %.not48, float %257, float %256 %258 = fadd float %253, -1.000000e+00 %259 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %259, 0 %260 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %258, float noundef 0x3FC2073EC0000000) #139 %261 = call float @llvm.fma.f32(float %258, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.096 = select i1 %.not49, float %261, float %260 %262 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %262, 0 %263 = call float @llvm.nvvm.fma.rn.ftz.f(float %.096, float %258, float noundef 0xBFBF19B980000000) #139 %264 = call float @llvm.fma.f32(float %.096, float %258, float noundef 0xBFBF19B980000000) %.097 = select i1 %.not50, float %264, float %263 %265 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %265, 0 %266 = call float @llvm.nvvm.fma.rn.ftz.f(float %.097, float %258, float noundef 0x3FC1E52AA0000000) #139 %267 = call float @llvm.fma.f32(float %.097, float %258, float noundef 0x3FC1E52AA0000000) %.098 = select i1 %.not51, float %267, float %266 %268 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %268, 0 %269 = call float @llvm.nvvm.fma.rn.ftz.f(float %.098, float %258, float noundef 0xBFC55B1720000000) #139 %270 = call float @llvm.fma.f32(float %.098, float %258, float noundef 0xBFC55B1720000000) %.099 = select i1 %.not52, float %270, float %269 %271 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %271, 0 %272 = call float @llvm.nvvm.fma.rn.ftz.f(float %.099, float %258, float noundef 0x3FC99DA160000000) #139 %273 = call float @llvm.fma.f32(float %.099, float %258, float noundef 0x3FC99DA160000000) %.0101 = select i1 %.not53, float %273, float %272 %274 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %274, 0 %275 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0101, float %258, float noundef 0xBFCFFFE440000000) #139 %276 = call float @llvm.fma.f32(float %.0101, float %258, float noundef 0xBFCFFFE440000000) %.0102 = select i1 %.not54, float %276, float %275 %277 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %277, 0 %278 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0102, float %258, float noundef 0x3FD5554F00000000) #139 %279 = call float @llvm.fma.f32(float %.0102, float %258, float noundef 0x3FD5554F00000000) %.0103 = select i1 %.not55, float %279, float %278 %280 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not56 = icmp eq i32 %280, 0 %281 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0103, float %258, float noundef -5.000000e-01) #139 %282 = call float @llvm.fma.f32(float %.0103, float %258, float noundef -5.000000e-01) %.094 = select i1 %.not56, float %282, float %281 %283 = fmul float %258, %.094 %284 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %284, 0 %285 = call float @llvm.nvvm.fma.rn.ftz.f(float %283, float %258, float %258) #139 %286 = call float @llvm.fma.f32(float %283, float %258, float %258) %.092 = select i1 %.not57, float %286, float %285 %287 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not58 = icmp eq i32 %287, 0 %288 = call float @llvm.nvvm.fma.rn.ftz.f(float %.095, float noundef 0x3FE62E4300000000, float %.092) #139 %289 = call float @llvm.fma.f32(float %.095, float noundef 0x3FE62E4300000000, float %.092) %.091 = select i1 %.not58, float %289, float %288 %290 = icmp ugt i32 %249, 2139095039 br i1 %290, label %__nv_fmaf_rn.exit.i, label %__internal_accurate_logf.exit __nv_fmaf_rn.exit.i: ; preds = %__nv_fmaf_rn.exit10.i %291 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not59 = icmp eq i32 %291, 0 %292 = call float @llvm.nvvm.fma.rn.ftz.f(float %.089, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %293 = call float @llvm.fma.f32(float %.089, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.090 = select i1 %.not59, float %293, float %292 br label %__internal_accurate_logf.exit __internal_accurate_logf.exit: ; preds = %__nv_fmaf_rn.exit.i, %__nv_fmaf_rn.exit10.i %r.i.0 = phi float [ %.090, %__nv_fmaf_rn.exit.i ], [ %.091, %__nv_fmaf_rn.exit10.i ] %294 = fcmp oeq float %.089, 0.000000e+00 %r.i.1 = select i1 %294, float 0xFFF0000000000000, float %r.i.0 %295 = fneg float %r.i.1 br label %388 __internal_fmad.exit: ; preds = %245 %296 = fmul float %.086, 2.000000e+00 %297 = call float @llvm.round.f32(float %296) %298 = fptosi float %297 to i32 %299 = fneg float %297 %300 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %300, 0 %301 = call float @llvm.nvvm.fma.rn.ftz.f(float %299, float noundef 5.000000e-01, float %.086) #139 %302 = call float @llvm.fma.f32(float %299, float noundef 5.000000e-01, float %.086) %.0104 = select i1 %.not21, float %302, float %301 %303 = fmul float %.0104, 0x400921FB60000000 %304 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %304, 0 %305 = call float @llvm.nvvm.mul.rn.ftz.f(float %303, float %303) #139 %306 = fmul float %303, %303 %.0100 = select i1 %.not22, float %306, float %305 %307 = and i32 %298, 1 %.not23 = icmp eq i32 %307, 0 %308 = select i1 %.not23, float %303, float 1.000000e+00 %309 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %309, 0 %310 = call float @llvm.nvvm.fma.rn.ftz.f(float %.0100, float %308, float noundef 0.000000e+00) #139 %311 = call float @llvm.fma.f32(float %.0100, float %308, float noundef 0.000000e+00) %.093 = select i1 %.not24, float %311, float %310 br i1 %.not23, label %__internal_fmad.exit2.i9, label %__internal_fmad.exit1.i8 __internal_fmad.exit1.i8: ; preds = %__internal_fmad.exit %312 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %312, 0 %313 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3EF9758000000000, float %.0100, float noundef 0xBF56C0FDA0000000) #139 %314 = call float @llvm.fma.f32(float %.0100, float noundef 0x3EF9758000000000, float noundef 0xBF56C0FDA0000000) %.088 = select i1 %.not47, float %314, float %313 br label %__internal_fmad.exit2.i9 __internal_fmad.exit2.i9: ; preds = %__internal_fmad.exit, %__internal_fmad.exit1.i8 %315 = phi float [ 0xBFC5555500000000, %__internal_fmad.exit ], [ 0xBFDFFFFFE0000000, %__internal_fmad.exit1.i8 ] %316 = phi float [ 0x3F8110BC80000000, %__internal_fmad.exit ], [ 0x3FA5555760000000, %__internal_fmad.exit1.i8 ] %317 = phi float [ 0xBF29A82A60000000, %__internal_fmad.exit ], [ %.088, %__internal_fmad.exit1.i8 ] %318 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %318, 0 %319 = call float @llvm.nvvm.fma.rn.ftz.f(float %317, float %.0100, float noundef %316) #139 %320 = call float @llvm.fma.f32(float %317, float %.0100, float noundef %316) %.082 = select i1 %.not27, float %320, float %319 %321 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %321, 0 %322 = call float @llvm.nvvm.fma.rn.ftz.f(float %.082, float %.0100, float noundef %315) #139 %323 = call float @llvm.fma.f32(float %.082, float %.0100, float noundef %315) %.075 = select i1 %.not29, float %323, float %322 %324 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %324, 0 %325 = call float @llvm.nvvm.fma.rn.ftz.f(float %.075, float %.093, float %308) #139 %326 = call float @llvm.fma.f32(float %.075, float %.093, float %308) %.070 = select i1 %.not30, float %326, float %325 %327 = and i32 %298, 2 %.not31 = icmp eq i32 %327, 0 br i1 %.not31, label %__internal_sin_cos_kernel.exit, label %__internal_fmad.exit5.i10 __internal_fmad.exit5.i10: ; preds = %__internal_fmad.exit2.i9 %328 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %328, 0 %329 = call float @llvm.nvvm.fma.rn.ftz.f(float %.070, float noundef -1.000000e+00, float noundef 0.000000e+00) #139 %330 = call float @llvm.fma.f32(float %.070, float noundef -1.000000e+00, float noundef 0.000000e+00) %.064 = select i1 %.not46, float %330, float %329 br label %__internal_sin_cos_kernel.exit __internal_sin_cos_kernel.exit: ; preds = %__internal_fmad.exit5.i10, %__internal_fmad.exit2.i9 %z.i.0 = phi float [ %.064, %__internal_fmad.exit5.i10 ], [ %.070, %__internal_fmad.exit2.i9 ] %331 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %331, 0 %332 = call float @llvm.nvvm.fabs.ftz.f(float %z.i.0) #139 %333 = call float @llvm.fabs.f32(float %z.i.0) %.062 = select i1 %.not32, float %333, float %332 %334 = fmul float %.086, %.062 %335 = fcmp olt float %334, 0x3810000000000000 %336 = fmul float %334, 0x4160000000000000 %i.i21.0 = select i1 %335, float -2.300000e+01, float 0.000000e+00 %.060 = select i1 %335, float %336, float %334 %337 = bitcast float %.060 to i32 %338 = add i32 %337, -1059760811 %339 = and i32 %338, -8388608 %340 = sub i32 %337, %339 %341 = bitcast i32 %340 to float %342 = sitofp i32 %339 to float %343 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not33 = icmp eq i32 %343, 0 %344 = call float @llvm.nvvm.fma.rn.ftz.f(float %342, float noundef 0x3E80000000000000, float noundef %i.i21.0) #139 %345 = call float @llvm.fma.f32(float %342, float noundef 0x3E80000000000000, float noundef %i.i21.0) %.025 = select i1 %.not33, float %345, float %344 %346 = fadd float %341, -1.000000e+00 %347 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not34 = icmp eq i32 %347, 0 %348 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFC0AA04E0000000, float %346, float noundef 0x3FC2073EC0000000) #139 %349 = call float @llvm.fma.f32(float %346, float noundef 0xBFC0AA04E0000000, float noundef 0x3FC2073EC0000000) %.021 = select i1 %.not34, float %349, float %348 %350 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not35 = icmp eq i32 %350, 0 %351 = call float @llvm.nvvm.fma.rn.ftz.f(float %.021, float %346, float noundef 0xBFBF19B980000000) #139 %352 = call float @llvm.fma.f32(float %.021, float %346, float noundef 0xBFBF19B980000000) %.017 = select i1 %.not35, float %352, float %351 %353 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not36 = icmp eq i32 %353, 0 %354 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %346, float noundef 0x3FC1E52AA0000000) #139 %355 = call float @llvm.fma.f32(float %.017, float %346, float noundef 0x3FC1E52AA0000000) %.013 = select i1 %.not36, float %355, float %354 %356 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not37 = icmp eq i32 %356, 0 %357 = call float @llvm.nvvm.fma.rn.ftz.f(float %.013, float %346, float noundef 0xBFC55B1720000000) #139 %358 = call float @llvm.fma.f32(float %.013, float %346, float noundef 0xBFC55B1720000000) %.09 = select i1 %.not37, float %358, float %357 %359 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %359, 0 %360 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %346, float noundef 0x3FC99DA160000000) #139 %361 = call float @llvm.fma.f32(float %.09, float %346, float noundef 0x3FC99DA160000000) %.08 = select i1 %.not38, float %361, float %360 %362 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %362, 0 %363 = call float @llvm.nvvm.fma.rn.ftz.f(float %.08, float %346, float noundef 0xBFCFFFE440000000) #139 %364 = call float @llvm.fma.f32(float %.08, float %346, float noundef 0xBFCFFFE440000000) %.04 = select i1 %.not39, float %364, float %363 %365 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %365, 0 %366 = call float @llvm.nvvm.fma.rn.ftz.f(float %.04, float %346, float noundef 0x3FD5554F00000000) #139 %367 = call float @llvm.fma.f32(float %.04, float %346, float noundef 0x3FD5554F00000000) %.03 = select i1 %.not40, float %367, float %366 %368 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %368, 0 %369 = call float @llvm.nvvm.fma.rn.ftz.f(float %.03, float %346, float noundef -5.000000e-01) #139 %370 = call float @llvm.fma.f32(float %.03, float %346, float noundef -5.000000e-01) %.029 = select i1 %.not41, float %370, float %369 %371 = fmul float %346, %.029 %372 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %372, 0 %373 = call float @llvm.nvvm.fma.rn.ftz.f(float %371, float %346, float %346) #139 %374 = call float @llvm.fma.f32(float %371, float %346, float %346) %.034 = select i1 %.not42, float %374, float %373 %375 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %375, 0 %376 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float noundef 0x3FE62E4300000000, float %.034) #139 %377 = call float @llvm.fma.f32(float %.025, float noundef 0x3FE62E4300000000, float %.034) %.040 = select i1 %.not43, float %377, float %376 %378 = icmp ugt i32 %337, 2139095039 br i1 %378, label %__nv_fmaf_rn.exit.i34, label %__internal_accurate_logf.exit35 __nv_fmaf_rn.exit.i34: ; preds = %__internal_sin_cos_kernel.exit %379 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %379, 0 %380 = call float @llvm.nvvm.fma.rn.ftz.f(float %.060, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) #139 %381 = call float @llvm.fma.f32(float %.060, float noundef 0x7FF0000000000000, float noundef 0x7FF0000000000000) %.052 = select i1 %.not45, float %381, float %380 br label %__internal_accurate_logf.exit35 __internal_accurate_logf.exit35: ; preds = %__nv_fmaf_rn.exit.i34, %__internal_sin_cos_kernel.exit %r.i20.0 = phi float [ %.052, %__nv_fmaf_rn.exit.i34 ], [ %.040, %__internal_sin_cos_kernel.exit ] %382 = fcmp oeq float %.060, 0.000000e+00 %r.i20.0.op = fsub float 0x3FF250D040000000, %r.i20.0 %383 = select i1 %382, float 0x7FF0000000000000, float %r.i20.0.op %384 = fneg float %t.i.4 %385 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %385, 0 %386 = call float @llvm.nvvm.fma.rn.ftz.f(float %383, float noundef 1.000000e+00, float %384) #139 %387 = fsub float %383, %t.i.4 %.0 = select i1 %.not44, float %387, float %386 br label %388 388: ; preds = %__nv_fabsf.exit1, %__internal_lgammaf_pos.exit, %__internal_accurate_logf.exit35, %__internal_accurate_logf.exit %.01 = phi float [ %295, %__internal_accurate_logf.exit ], [ %.0, %__internal_accurate_logf.exit35 ], [ %t.i.4, %__internal_lgammaf_pos.exit ], [ 0x7FF0000000000000, %__nv_fabsf.exit1 ] ret float %.01 } ; Function Attrs: noinline nounwind define dso_local float @__nv_ldexpf(float %a, i32 %b) local_unnamed_addr #57 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp oeq float %.01, 0.000000e+00 %4 = fcmp oeq float %.01, 0x7FF0000000000000 %or.cond = or i1 %3, %4 %5 = icmp eq i32 %b, 0 %or.cond2 = select i1 %or.cond, i1 true, i1 %5 br i1 %or.cond2, label %6, label %9 6: ; preds = %__nv_fabsf.exit %7 = fcmp ogt float %.01, 0.000000e+00 %8 = select i1 %7, float -0.000000e+00, float %a %.0 = fadd float %8, %a br label %38 9: ; preds = %__nv_fabsf.exit %10 = call i32 @llvm.abs.i32(i32 %b, i1 noundef false) %11 = icmp slt i32 %10, 126 br i1 %11, label %12, label %16 12: ; preds = %9 %13 = sitofp i32 %b to float %14 = call float @llvm.nvvm.ex2.approx.ftz.f(float %13) #139 %15 = fmul float %14, %a br label %38 16: ; preds = %9 %17 = icmp ult i32 %10, 252 br i1 %17, label %18, label %27 18: ; preds = %16 %19 = sdiv i32 %b, 2 %20 = sub nsw i32 %b, %19 %21 = sitofp i32 %19 to float %22 = call float @llvm.nvvm.ex2.approx.ftz.f(float %21) #139 %23 = fmul float %22, %a %24 = sitofp i32 %20 to float %25 = call float @llvm.nvvm.ex2.approx.ftz.f(float %24) #139 %26 = fmul float %23, %25 br label %38 27: ; preds = %16 %28 = sdiv i32 %b, 4 %29 = sitofp i32 %28 to float %30 = call float @llvm.nvvm.ex2.approx.ftz.f(float %29) #139 %.neg = mul nsw i32 %28, -3 %31 = add i32 %.neg, %b %32 = fmul float %30, %a %33 = fmul float %30, %32 %34 = fmul float %30, %33 %35 = sitofp i32 %31 to float %36 = call float @llvm.nvvm.ex2.approx.ftz.f(float %35) #139 %37 = fmul float %36, %34 br label %38 38: ; preds = %12, %27, %18, %6 %.3 = phi float [ %.0, %6 ], [ %15, %12 ], [ %26, %18 ], [ %37, %27 ] ret float %.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_scalbnf(float %a, i32 %b) local_unnamed_addr #58 { __nv_fabsf.exit.i: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp oeq float %.01, 0.000000e+00 %4 = fcmp oeq float %.01, 0x7FF0000000000000 %or.cond = or i1 %3, %4 %5 = icmp eq i32 %b, 0 %or.cond2 = select i1 %or.cond, i1 true, i1 %5 br i1 %or.cond2, label %6, label %9 6: ; preds = %__nv_fabsf.exit.i %7 = fcmp ogt float %.01, 0.000000e+00 %8 = select i1 %7, float -0.000000e+00, float %a %.0 = fadd float %8, %a br label %__nv_ldexpf.exit 9: ; preds = %__nv_fabsf.exit.i %10 = call i32 @llvm.abs.i32(i32 %b, i1 noundef false) %11 = icmp slt i32 %10, 126 br i1 %11, label %12, label %16 12: ; preds = %9 %13 = sitofp i32 %b to float %14 = call float @llvm.nvvm.ex2.approx.ftz.f(float %13) #139 %15 = fmul float %14, %a br label %__nv_ldexpf.exit 16: ; preds = %9 %17 = icmp ult i32 %10, 252 br i1 %17, label %18, label %27 18: ; preds = %16 %19 = sdiv i32 %b, 2 %20 = sub nsw i32 %b, %19 %21 = sitofp i32 %19 to float %22 = call float @llvm.nvvm.ex2.approx.ftz.f(float %21) #139 %23 = fmul float %22, %a %24 = sitofp i32 %20 to float %25 = call float @llvm.nvvm.ex2.approx.ftz.f(float %24) #139 %26 = fmul float %23, %25 br label %__nv_ldexpf.exit 27: ; preds = %16 %28 = sdiv i32 %b, 4 %29 = sitofp i32 %28 to float %30 = call float @llvm.nvvm.ex2.approx.ftz.f(float %29) #139 %.neg = mul nsw i32 %28, -3 %31 = add i32 %.neg, %b %32 = fmul float %30, %a %33 = fmul float %30, %32 %34 = fmul float %30, %33 %35 = sitofp i32 %31 to float %36 = call float @llvm.nvvm.ex2.approx.ftz.f(float %35) #139 %37 = fmul float %36, %34 br label %__nv_ldexpf.exit __nv_ldexpf.exit: ; preds = %12, %27, %18, %6 %.3 = phi float [ %.0, %6 ], [ %15, %12 ], [ %26, %18 ], [ %37, %27 ] ret float %.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_frexpf(float %a, i32* nocapture nofree writeonly %b) local_unnamed_addr #59 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.01 = select i1 %.not, float %2, float %1 %3 = fcmp olt float %.01, 0x3810000000000000 %4 = fmul float %a, 0x4170000000000000 %.0 = select i1 %3, float %4, float %a %5 = bitcast float %.0 to i32 %6 = lshr i32 %5, 23 %7 = and i32 %6, 255 %8 = fcmp oeq float %.01, 0.000000e+00 %9 = icmp eq i32 %7, 255 %or.cond = select i1 %8, i1 true, i1 %9 br i1 %or.cond, label %10, label %12 10: ; preds = %__nv_fabsf.exit %11 = fadd float %.0, %.0 br label %18 12: ; preds = %__nv_fabsf.exit %13 = select i1 %3, i32 -150, i32 -126 %14 = add nsw i32 %13, %7 %15 = and i32 %5, -2139095041 %16 = or i32 %15, 1056964608 %17 = bitcast i32 %16 to float br label %18 18: ; preds = %12, %10 %.1 = phi float [ %11, %10 ], [ %17, %12 ] %expo.0 = phi i32 [ 0, %10 ], [ %14, %12 ] store i32 %expo.0, i32* %b, align 4, !noalias !68 ret float %.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_modff(float %a, float* nocapture nofree writeonly %b) local_unnamed_addr #60 { __nv_finitef.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = fcmp olt float %.0, 0x7FF0000000000000 br i1 %3, label %4, label %__nv_isinff.exit 4: ; preds = %__nv_finitef.exit %5 = call float @llvm.trunc.f32(float %a) store float %5, float* %b, align 4, !noalias !68 %6 = fsub float %a, %5 %7 = bitcast float %6 to i32 %8 = bitcast float %a to i32 %9 = and i32 %8, -2147483648 %10 = or i32 %9, %7 %11 = bitcast i32 %10 to float br label %20 __nv_isinff.exit: ; preds = %__nv_finitef.exit %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %12, 0 %.01 = select i1 %.not1, float %2, float %1 %13 = fcmp oeq float %.01, 0x7FF0000000000000 br i1 %13, label %14, label %18 14: ; preds = %__nv_isinff.exit store float %a, float* %b, align 4, !noalias !68 %15 = bitcast float %a to i32 %16 = and i32 %15, -2147483648 %17 = bitcast i32 %16 to float br label %20 18: ; preds = %__nv_isinff.exit %19 = fadd float %a, %a store float %19, float* %b, align 4, !noalias !68 br label %20 20: ; preds = %14, %18, %4 %t.1 = phi float [ %11, %4 ], [ %17, %14 ], [ %19, %18 ] ret float %t.1 } ; Function Attrs: noinline nounwind define dso_local float @__nv_fmodf(float %x, float %y) local_unnamed_addr #61 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %y) #139 %2 = call float @llvm.fabs.f32(float %y) %.0 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %x) #139 %5 = call float @llvm.fabs.f32(float %x) %.01 = select i1 %.not2, float %5, float %4 %6 = fcmp olt float %.01, %.0 br i1 %6, label %__internal_fmodf_kernel.exit, label %7 7: ; preds = %__nv_fabsf.exit %8 = fmul float %.0, 0x4160000000000000 %9 = fcmp ugt float %.01, %8 br i1 %9, label %40, label %10 10: ; preds = %7 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %11, 0 br i1 %.not10, label %14, label %12 12: ; preds = %10 %13 = call float @llvm.nvvm.div.approx.ftz.f(float %.01, float %.0) #139 br label %__nv_fast_fdividef.exit.i.i 14: ; preds = %10 %15 = call float @llvm.nvvm.div.approx.f(float %.01, float %.0) #139 br label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %14, %12 %.02 = phi float [ %13, %12 ], [ %15, %14 ] %16 = call float @llvm.trunc.f32(float %.02) %17 = fneg float %.0 %18 = call float @llvm.fma.f32(float %17, float %16, float %.01) %19 = bitcast float %18 to i32 %20 = bitcast float %.0 to i32 %.not11 = icmp ult i32 %19, %20 br i1 %.not11, label %__internal_fmodf_fastpath_quot.exit.i, label %21 21: ; preds = %__nv_fast_fdividef.exit.i.i %22 = icmp ugt i32 %19, -2147483648 br i1 %22, label %23, label %27 23: ; preds = %21 %24 = fadd float %16, -1.000000e+00 %25 = fcmp olt float %18, %17 %26 = fadd float %24, -1.000000e+00 %quotient.i.i.0 = select i1 %25, float %26, float %24 br label %__internal_fmodf_fastpath_quot.exit.i 27: ; preds = %21 %28 = fadd float %16, 1.000000e+00 %29 = fmul float %.0, 2.000000e+00 %30 = fcmp ult float %18, %29 br i1 %30, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %27 %31 = fadd float %28, 1.000000e+00 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -3.000000e+00, float %.0, float %18) #139 %34 = call float @llvm.fma.f32(float %.0, float noundef -3.000000e+00, float %18) %.03 = select i1 %.not13, float %34, float %33 %35 = fcmp oge float %.03, 0.000000e+00 %36 = fadd float %31, 1.000000e+00 %quotient.i.i.1 = select i1 %35, float %36, float %31 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %23, %__nv_fmaf_rn.exit.i.i, %27, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %16, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %23 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %28, %27 ] %37 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %37, 0 %38 = call float @llvm.nvvm.fma.rn.ftz.f(float %17, float %quotient.i.i.4, float %.01) #139 %39 = call float @llvm.fma.f32(float %17, float %quotient.i.i.4, float %.01) %.04 = select i1 %.not12, float %39, float %38 br label %__internal_fmodf_kernel.exit 40: ; preds = %7 %41 = bitcast float %.01 to i32 %42 = bitcast float %8 to i32 %43 = and i32 %42, -8388608 %44 = and i32 %41, 8388607 %45 = or i32 %44, 1065353216 %46 = and i32 %42, 8388607 %47 = or i32 %46, 1065353216 %48 = bitcast i32 %45 to float %49 = bitcast i32 %47 to float %50 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %49) #141, !srcloc !73 %51 = add i32 %42, -192937984 %52 = and i32 %51, -8388608 %53 = sub i32 %41, %52 %54 = and i32 %53, -8388608 %.not17 = icmp eq i32 %54, 0 br i1 %.not17, label %__internal_fmodf_slowpath_mod.exit.i, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %40 %55 = fneg float %49 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.016 = phi i32 [ %45, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %79, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.015 = phi i32 [ %54, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %78, %__nv_fmaf_rn.exit4.i.i ] %56 = icmp ult i32 %i.i.i.015, 192937984 %min2 = select i1 %56, i32 %i.i.i.015, i32 192937984 %57 = add i32 %min2, %ux.i.i.016 %58 = bitcast i32 %57 to float %59 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %59, 0 %60 = call float @llvm.nvvm.fma.rn.ftz.f(float %58, float %50, float noundef -0.000000e+00) #139 %61 = fmul float %50, %58 %.010 = select i1 %.not4, float %61, float %60 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %55, float %.010, float %58) #139 %64 = call float @llvm.fma.f32(float %55, float %.010, float %58) %.011 = select i1 %.not5, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %50, float %.010) #139 %67 = call float @llvm.fma.f32(float %.011, float %50, float %.010) %.012 = select i1 %.not6, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %55, float %.012, float %58) #139 %70 = call float @llvm.fma.f32(float %55, float %.012, float %58) %.09 = select i1 %.not7, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rz.ftz.f(float %.09, float %50, float %.012) #139 %73 = call float @llvm.nvvm.fma.rz.f(float %.09, float %50, float %.012) #139 %.08 = select i1 %.not8, float %73, float %72 %74 = call float @llvm.trunc.f32(float %.08) %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %75, 0 %76 = call float @llvm.nvvm.fma.rn.ftz.f(float %55, float %74, float %58) #139 %77 = call float @llvm.fma.f32(float %55, float %74, float %58) %.07 = select i1 %.not9, float %77, float %76 %78 = sub i32 %i.i.i.015, %min2 %79 = bitcast float %.07 to i32 %80 = icmp ne i32 %78, 0 %81 = icmp ne i32 %79, 0 %spec.select = select i1 %80, i1 %81, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__nv_fmaf_rn.exit4.i.i, %40 %.06.lcssa = phi float [ %48, %40 ], [ %.07, %__nv_fmaf_rn.exit4.i.i ] %82 = bitcast i32 %43 to float %83 = fcmp ule float %.0, 0.000000e+00 %84 = icmp ugt i32 %41, 2139095039 %or.cond = select i1 %83, i1 true, i1 %84 %85 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %82 %86 = fmul float %.06.lcssa, 0x3E80000000000000 %87 = fmul float %85, %86 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__internal_fmodf_fastpath_quot.exit.i, %__internal_fmodf_slowpath_mod.exit.i, %__nv_fabsf.exit %ans.i.1 = phi float [ %.01, %__nv_fabsf.exit ], [ %.04, %__internal_fmodf_fastpath_quot.exit.i ], [ %87, %__internal_fmodf_slowpath_mod.exit.i ] %88 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %88, 0 %89 = call float @llvm.nvvm.fabs.ftz.f(float %ans.i.1) #139 %90 = call float @llvm.fabs.f32(float %ans.i.1) %.05 = select i1 %.not3, float %90, float %89 %91 = fcmp ugt float %.05, 0x7FF0000000000000 br i1 %91, label %98, label %92 92: ; preds = %__internal_fmodf_kernel.exit %93 = bitcast float %ans.i.1 to i32 %94 = bitcast float %x to i32 %95 = and i32 %94, -2147483648 %96 = or i32 %95, %93 %97 = bitcast i32 %96 to float br label %98 98: ; preds = %__internal_fmodf_kernel.exit, %92 %99 = phi float [ %97, %92 ], [ %ans.i.1, %__internal_fmodf_kernel.exit ] ret float %99 } ; Function Attrs: noinline nounwind define dso_local float @__nv_remainderf(float %x, float %y) local_unnamed_addr #62 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %y) #139 %2 = call float @llvm.fabs.f32(float %y) %.01 = select i1 %.not, float %2, float %1 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %x) #139 %5 = call float @llvm.fabs.f32(float %x) %.02 = select i1 %.not6, float %5, float %4 %6 = fmul float %.02, 2.000000e+00 %7 = fcmp olt float %.02, %.01 br i1 %7, label %__internal_fmodf_kernel.exit, label %8 8: ; preds = %__nv_fabsf.exit %9 = fmul float %.01, 0x4160000000000000 %10 = fcmp ugt float %.02, %9 br i1 %10, label %43, label %11 11: ; preds = %8 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %12, 0 br i1 %.not17, label %15, label %13 13: ; preds = %11 %14 = call float @llvm.nvvm.div.approx.ftz.f(float %.02, float %.01) #139 br label %__nv_fast_fdividef.exit.i.i 15: ; preds = %11 %16 = call float @llvm.nvvm.div.approx.f(float %.02, float %.01) #139 br label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %15, %13 %.04 = phi float [ %14, %13 ], [ %16, %15 ] %17 = call float @llvm.trunc.f32(float %.04) %18 = fneg float %.01 %19 = call float @llvm.fma.f32(float %18, float %17, float %.02) %20 = bitcast float %19 to i32 %21 = bitcast float %.01 to i32 %.not18 = icmp ult i32 %20, %21 br i1 %.not18, label %__internal_fmodf_fastpath_quot.exit.i, label %22 22: ; preds = %__nv_fast_fdividef.exit.i.i %23 = icmp ugt i32 %20, -2147483648 br i1 %23, label %24, label %28 24: ; preds = %22 %25 = fadd float %17, -1.000000e+00 %26 = fcmp olt float %19, %18 %27 = fadd float %25, -1.000000e+00 %quotient.i.i.0 = select i1 %26, float %27, float %25 br label %__internal_fmodf_fastpath_quot.exit.i 28: ; preds = %22 %29 = fadd float %17, 1.000000e+00 %30 = fmul float %.01, 2.000000e+00 %31 = fcmp ult float %19, %30 br i1 %31, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %28 %32 = fadd float %29, 1.000000e+00 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -3.000000e+00, float %.01, float %19) #139 %35 = call float @llvm.fma.f32(float %.01, float noundef -3.000000e+00, float %19) %.05 = select i1 %.not20, float %35, float %34 %36 = fcmp oge float %.05, 0.000000e+00 %37 = fadd float %32, 1.000000e+00 %quotient.i.i.1 = select i1 %36, float %37, float %32 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %24, %__nv_fmaf_rn.exit.i.i, %28, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %17, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %24 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %29, %28 ] %38 = fptoui float %quotient.i.i.4 to i32 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float %18, float %quotient.i.i.4, float %.02) #139 %41 = call float @llvm.fma.f32(float %18, float %quotient.i.i.4, float %.02) %.06 = select i1 %.not19, float %41, float %40 %42 = call float @llvm.fma.f32(float %41, float noundef 2.000000e+00, float noundef 0.000000e+00) br label %__internal_fmodf_kernel.exit 43: ; preds = %8 %44 = bitcast float %.02 to i32 %45 = bitcast float %9 to i32 %46 = and i32 %45, -8388608 %47 = and i32 %44, 8388607 %48 = or i32 %47, 1065353216 %49 = and i32 %45, 8388607 %50 = or i32 %49, 1065353216 %51 = bitcast i32 %48 to float %52 = bitcast i32 %50 to float %53 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %52) #141, !srcloc !73 %54 = add i32 %45, -192937984 %55 = and i32 %54, -8388608 %56 = sub i32 %44, %55 %57 = and i32 %56, -8388608 %.not26 = icmp eq i32 %57, 0 br i1 %.not26, label %__internal_fmodf_slowpath_mod.exit.i, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %43 %58 = fneg float %52 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.023 = phi i32 [ %48, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %82, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.022 = phi i32 [ %57, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %81, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.021 = phi i32 [ 0, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %86, %__nv_fmaf_rn.exit4.i.i ] %59 = icmp ult i32 %i.i.i.022, 192937984 %min2 = select i1 %59, i32 %i.i.i.022, i32 192937984 %60 = add i32 %min2, %ux.i.i.023 %61 = bitcast i32 %60 to float %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %62, 0 %63 = call float @llvm.nvvm.fma.rn.ftz.f(float %61, float %53, float noundef -0.000000e+00) #139 %64 = fmul float %53, %61 %.013 = select i1 %.not11, float %64, float %63 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %58, float %.013, float %61) #139 %67 = call float @llvm.fma.f32(float %58, float %.013, float %61) %.014 = select i1 %.not12, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.014, float %53, float %.013) #139 %70 = call float @llvm.fma.f32(float %.014, float %53, float %.013) %.015 = select i1 %.not13, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float %58, float %.015, float %61) #139 %73 = call float @llvm.fma.f32(float %58, float %.015, float %61) %.012 = select i1 %.not14, float %73, float %72 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rz.ftz.f(float %.012, float %53, float %.015) #139 %76 = call float @llvm.nvvm.fma.rz.f(float %.012, float %53, float %.015) #139 %.011 = select i1 %.not15, float %76, float %75 %77 = call float @llvm.trunc.f32(float %.011) %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %78, 0 %79 = call float @llvm.nvvm.fma.rn.ftz.f(float %58, float %77, float %61) #139 %80 = call float @llvm.fma.f32(float %58, float %77, float %61) %.010 = select i1 %.not16, float %80, float %79 %81 = sub i32 %i.i.i.022, %min2 %82 = bitcast float %.010 to i32 %83 = lshr i32 %min2, 23 %84 = shl i32 %quotient.i8.i.021, %83 %85 = fptoui float %77 to i32 %86 = add i32 %84, %85 %87 = icmp ne i32 %81, 0 %88 = icmp ne i32 %82, 0 %spec.select = select i1 %87, i1 %88, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__nv_fmaf_rn.exit4.i.i, %43 %.09.lcssa = phi float [ %51, %43 ], [ %.010, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.0.lcssa = phi i32 [ 0, %43 ], [ %86, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.0.lcssa = phi i32 [ 0, %43 ], [ %81, %__nv_fmaf_rn.exit4.i.i ] %89 = lshr i32 %i.i.i.0.lcssa, 23 %min.cond = icmp ult i32 %i.i.i.0.lcssa, 33554432 %min = select i1 %min.cond, i32 %89, i32 3 %90 = shl i32 %quotient.i8.i.0.lcssa, %min %91 = bitcast i32 %46 to float %92 = fcmp ule float %.01, 0.000000e+00 %93 = icmp ugt i32 %44, 2139095039 %or.cond = select i1 %92, i1 true, i1 %93 %94 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %91 %95 = fmul float %.09.lcssa, 0x3E80000000000000 %96 = fmul float %94, %95 %97 = fmul float %.09.lcssa, 0x3E90000000000000 %98 = fmul float %94, %97 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__internal_fmodf_fastpath_quot.exit.i, %__internal_fmodf_slowpath_mod.exit.i, %__nv_fabsf.exit %ignore_quot.1 = phi i32 [ 0, %__nv_fabsf.exit ], [ %38, %__internal_fmodf_fastpath_quot.exit.i ], [ %90, %__internal_fmodf_slowpath_mod.exit.i ] %twoans.1 = phi float [ %6, %__nv_fabsf.exit ], [ %42, %__internal_fmodf_fastpath_quot.exit.i ], [ %98, %__internal_fmodf_slowpath_mod.exit.i ] %ans.i.1 = phi float [ %.02, %__nv_fabsf.exit ], [ %.06, %__internal_fmodf_fastpath_quot.exit.i ], [ %96, %__internal_fmodf_slowpath_mod.exit.i ] %99 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %100 = icmp eq i32 %99, 0 %101 = fmul float %ans.i.1, 2.000000e+00 %spec.select2 = select i1 %100, float %101, float %twoans.1 %102 = fcmp ogt float %spec.select2, %.01 br i1 %102, label %107, label %103 103: ; preds = %__internal_fmodf_kernel.exit %104 = fcmp oeq float %spec.select2, %.01 %105 = and i32 %ignore_quot.1, 1 %106 = icmp ne i32 %105, 0 %or.cond4 = select i1 %104, i1 %106, i1 false br i1 %or.cond4, label %107, label %__internal_remainderf_round_to_nearest_even.exit 107: ; preds = %103, %__internal_fmodf_kernel.exit %108 = fcmp olt float %ans.i.1, 0x3810000000000000 br i1 %108, label %109, label %115 109: ; preds = %107 %110 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %110, 0 br i1 %.not9, label %115, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %109 %111 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %111, 0 %112 = call float @llvm.nvvm.fma.rn.ftz.f(float %.01, float noundef -2.000000e+00, float %spec.select2) #139 %113 = call float @llvm.fma.f32(float %.01, float noundef -2.000000e+00, float %spec.select2) %.03 = select i1 %.not10, float %113, float %112 %114 = fmul float %.03, 5.000000e-01 br label %__internal_remainderf_round_to_nearest_even.exit 115: ; preds = %109, %107 %116 = fsub float %ans.i.1, %.01 br label %__internal_remainderf_round_to_nearest_even.exit __internal_remainderf_round_to_nearest_even.exit: ; preds = %__internal_fmad.exit.i, %115, %103 %.1 = phi float [ %ans.i.1, %103 ], [ %114, %__internal_fmad.exit.i ], [ %116, %115 ] %117 = bitcast float %x to i32 %.not7 = icmp sgt i32 %117, -1 br i1 %.not7, label %123, label %__nv_isnanf.exit __nv_isnanf.exit: ; preds = %__internal_remainderf_round_to_nearest_even.exit %118 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %118, 0 %119 = call float @llvm.nvvm.fabs.ftz.f(float %.1) #139 %120 = call float @llvm.fabs.f32(float %.1) %.0 = select i1 %.not8, float %120, float %119 %121 = fcmp ole float %.0, 0x7FF0000000000000 %122 = fneg float %.1 %spec.select5 = select i1 %121, float %122, float %.1 br label %123 123: ; preds = %__nv_isnanf.exit, %__internal_remainderf_round_to_nearest_even.exit %ans.0 = phi float [ %.1, %__internal_remainderf_round_to_nearest_even.exit ], [ %spec.select5, %__nv_isnanf.exit ] ret float %ans.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_remquof(float %x, float %y, i32* nocapture nofree writeonly %quo) local_unnamed_addr #63 { __nv_fabsf.exit: %0 = bitcast float %x to i32 %1 = bitcast float %y to i32 %2 = xor i32 %1, %0 %.lobit = ashr i32 %2, 31 %3 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %3, 0 %4 = call float @llvm.nvvm.fabs.ftz.f(float %y) #139 %5 = call float @llvm.fabs.f32(float %y) %.05 = select i1 %.not, float %5, float %4 %6 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %6, 0 %7 = call float @llvm.nvvm.fabs.ftz.f(float %x) #139 %8 = call float @llvm.fabs.f32(float %x) %.06 = select i1 %.not6, float %8, float %7 %9 = fmul float %.06, 2.000000e+00 %10 = fcmp olt float %.06, %.05 br i1 %10, label %__internal_fmodf_kernel.exit, label %11 11: ; preds = %__nv_fabsf.exit %12 = fmul float %.05, 0x4160000000000000 %13 = fcmp ugt float %.06, %12 br i1 %13, label %46, label %14 14: ; preds = %11 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %15, 0 br i1 %.not18, label %18, label %16 16: ; preds = %14 %17 = call float @llvm.nvvm.div.approx.ftz.f(float %.06, float %.05) #139 br label %__nv_fast_fdividef.exit.i.i 18: ; preds = %14 %19 = call float @llvm.nvvm.div.approx.f(float %.06, float %.05) #139 br label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %18, %16 %.08 = phi float [ %17, %16 ], [ %19, %18 ] %20 = call float @llvm.trunc.f32(float %.08) %21 = fneg float %.05 %22 = call float @llvm.fma.f32(float %21, float %20, float %.06) %23 = bitcast float %22 to i32 %24 = bitcast float %.05 to i32 %.not19 = icmp ult i32 %23, %24 br i1 %.not19, label %__internal_fmodf_fastpath_quot.exit.i, label %25 25: ; preds = %__nv_fast_fdividef.exit.i.i %26 = icmp ugt i32 %23, -2147483648 br i1 %26, label %27, label %31 27: ; preds = %25 %28 = fadd float %20, -1.000000e+00 %29 = fcmp olt float %22, %21 %30 = fadd float %28, -1.000000e+00 %quotient.i.i.0 = select i1 %29, float %30, float %28 br label %__internal_fmodf_fastpath_quot.exit.i 31: ; preds = %25 %32 = fadd float %20, 1.000000e+00 %33 = fmul float %.05, 2.000000e+00 %34 = fcmp ult float %22, %33 br i1 %34, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %31 %35 = fadd float %32, 1.000000e+00 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef -3.000000e+00, float %.05, float %22) #139 %38 = call float @llvm.fma.f32(float %.05, float noundef -3.000000e+00, float %22) %.09 = select i1 %.not21, float %38, float %37 %39 = fcmp oge float %.09, 0.000000e+00 %40 = fadd float %35, 1.000000e+00 %quotient.i.i.1 = select i1 %39, float %40, float %35 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %27, %__nv_fmaf_rn.exit.i.i, %31, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %20, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %27 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %32, %31 ] %41 = fptoui float %quotient.i.i.4 to i32 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %21, float %quotient.i.i.4, float %.06) #139 %44 = call float @llvm.fma.f32(float %21, float %quotient.i.i.4, float %.06) %.010 = select i1 %.not20, float %44, float %43 %45 = call float @llvm.fma.f32(float %44, float noundef 2.000000e+00, float noundef 0.000000e+00) br label %__internal_fmodf_kernel.exit 46: ; preds = %11 %47 = bitcast float %.06 to i32 %48 = bitcast float %12 to i32 %49 = and i32 %48, -8388608 %50 = and i32 %47, 8388607 %51 = or i32 %50, 1065353216 %52 = and i32 %48, 8388607 %53 = or i32 %52, 1065353216 %54 = bitcast i32 %51 to float %55 = bitcast i32 %53 to float %56 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %55) #141, !srcloc !73 %57 = add i32 %48, -192937984 %58 = and i32 %57, -8388608 %59 = sub i32 %47, %58 %60 = and i32 %59, -8388608 %.not27 = icmp eq i32 %60, 0 br i1 %.not27, label %__internal_fmodf_slowpath_mod.exit.i, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %46 %61 = fneg float %55 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.024 = phi i32 [ %51, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %85, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.023 = phi i32 [ %60, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %84, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.022 = phi i32 [ 0, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %89, %__nv_fmaf_rn.exit4.i.i ] %62 = icmp ult i32 %i.i.i.023, 192937984 %min2 = select i1 %62, i32 %i.i.i.023, i32 192937984 %63 = add i32 %min2, %ux.i.i.024 %64 = bitcast i32 %63 to float %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %64, float %56, float noundef -0.000000e+00) #139 %67 = fmul float %56, %64 %.012 = select i1 %.not12, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %61, float %.012, float %64) #139 %70 = call float @llvm.fma.f32(float %61, float %.012, float %64) %.011 = select i1 %.not13, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.fma.rn.ftz.f(float %.011, float %56, float %.012) #139 %73 = call float @llvm.fma.f32(float %.011, float %56, float %.012) %.07 = select i1 %.not14, float %73, float %72 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.fma.rn.ftz.f(float %61, float %.07, float %64) #139 %76 = call float @llvm.fma.f32(float %61, float %.07, float %64) %.014 = select i1 %.not15, float %76, float %75 %77 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %77, 0 %78 = call float @llvm.nvvm.fma.rz.ftz.f(float %.014, float %56, float %.07) #139 %79 = call float @llvm.nvvm.fma.rz.f(float %.014, float %56, float %.07) #139 %.016 = select i1 %.not16, float %79, float %78 %80 = call float @llvm.trunc.f32(float %.016) %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %81, 0 %82 = call float @llvm.nvvm.fma.rn.ftz.f(float %61, float %80, float %64) #139 %83 = call float @llvm.fma.f32(float %61, float %80, float %64) %.015 = select i1 %.not17, float %83, float %82 %84 = sub i32 %i.i.i.023, %min2 %85 = bitcast float %.015 to i32 %86 = lshr i32 %min2, 23 %87 = shl i32 %quotient.i8.i.022, %86 %88 = fptoui float %80 to i32 %89 = add i32 %87, %88 %90 = icmp ne i32 %84, 0 %91 = icmp ne i32 %85, 0 %spec.select = select i1 %90, i1 %91, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__nv_fmaf_rn.exit4.i.i, %46 %.013.lcssa = phi float [ %54, %46 ], [ %.015, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.0.lcssa = phi i32 [ 0, %46 ], [ %89, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.0.lcssa = phi i32 [ 0, %46 ], [ %84, %__nv_fmaf_rn.exit4.i.i ] %92 = lshr i32 %i.i.i.0.lcssa, 23 %min.cond = icmp ult i32 %i.i.i.0.lcssa, 33554432 %min = select i1 %min.cond, i32 %92, i32 3 %93 = shl i32 %quotient.i8.i.0.lcssa, %min %94 = bitcast i32 %49 to float %95 = fcmp ule float %.05, 0.000000e+00 %96 = icmp ugt i32 %47, 2139095039 %or.cond = select i1 %95, i1 true, i1 %96 %97 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %94 %98 = fmul float %.013.lcssa, 0x3E80000000000000 %99 = fmul float %97, %98 %100 = fmul float %.013.lcssa, 0x3E90000000000000 %101 = fmul float %97, %100 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__internal_fmodf_fastpath_quot.exit.i, %__internal_fmodf_slowpath_mod.exit.i, %__nv_fabsf.exit %quot.1 = phi i32 [ 0, %__nv_fabsf.exit ], [ %41, %__internal_fmodf_fastpath_quot.exit.i ], [ %93, %__internal_fmodf_slowpath_mod.exit.i ] %twoans.1 = phi float [ %9, %__nv_fabsf.exit ], [ %45, %__internal_fmodf_fastpath_quot.exit.i ], [ %101, %__internal_fmodf_slowpath_mod.exit.i ] %ans.i.1 = phi float [ %.06, %__nv_fabsf.exit ], [ %.010, %__internal_fmodf_fastpath_quot.exit.i ], [ %99, %__internal_fmodf_slowpath_mod.exit.i ] %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %103 = icmp eq i32 %102, 0 %104 = fmul float %ans.i.1, 2.000000e+00 %spec.select2 = select i1 %103, float %104, float %twoans.1 %105 = fcmp ogt float %spec.select2, %.05 br i1 %105, label %110, label %106 106: ; preds = %__internal_fmodf_kernel.exit %107 = fcmp oeq float %spec.select2, %.05 %108 = and i32 %quot.1, 1 %109 = icmp ne i32 %108, 0 %or.cond4 = select i1 %107, i1 %109, i1 false br i1 %or.cond4, label %110, label %__internal_remainderf_round_to_nearest_even.exit 110: ; preds = %106, %__internal_fmodf_kernel.exit %111 = add i32 %quot.1, 1 %112 = fcmp olt float %ans.i.1, 0x3810000000000000 br i1 %112, label %113, label %119 113: ; preds = %110 %114 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %114, 0 br i1 %.not10, label %119, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %113 %115 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %115, 0 %116 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float noundef -2.000000e+00, float %spec.select2) #139 %117 = call float @llvm.fma.f32(float %.05, float noundef -2.000000e+00, float %spec.select2) %.04 = select i1 %.not11, float %117, float %116 %118 = fmul float %.04, 5.000000e-01 br label %__internal_remainderf_round_to_nearest_even.exit 119: ; preds = %113, %110 %120 = fsub float %ans.i.1, %.05 br label %__internal_remainderf_round_to_nearest_even.exit __internal_remainderf_round_to_nearest_even.exit: ; preds = %__internal_fmad.exit.i, %119, %106 %quot.2 = phi i32 [ %quot.1, %106 ], [ %111, %119 ], [ %111, %__internal_fmad.exit.i ] %.1 = phi float [ %ans.i.1, %106 ], [ %120, %119 ], [ %118, %__internal_fmad.exit.i ] %.not7 = icmp sgt i32 %0, -1 br i1 %.not7, label %__nv_isnanf.exit, label %__nv_isnanf.exit3 __nv_isnanf.exit3: ; preds = %__internal_remainderf_round_to_nearest_even.exit %121 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %121, 0 %122 = call float @llvm.nvvm.fabs.ftz.f(float %.1) #139 %123 = call float @llvm.fabs.f32(float %.1) %.01 = select i1 %.not9, float %123, float %122 %124 = fcmp ole float %.01, 0x7FF0000000000000 %125 = fneg float %.1 %spec.select5 = select i1 %124, float %125, float %.1 br label %__nv_isnanf.exit __nv_isnanf.exit: ; preds = %__nv_isnanf.exit3, %__internal_remainderf_round_to_nearest_even.exit %ans.0 = phi float [ %.1, %__internal_remainderf_round_to_nearest_even.exit ], [ %spec.select5, %__nv_isnanf.exit3 ] %126 = and i32 %quot.2, 7 %127 = xor i32 %126, %.lobit %128 = sub nsw i32 %127, %.lobit %129 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %129, 0 %130 = call float @llvm.nvvm.fabs.ftz.f(float %ans.0) #139 %131 = call float @llvm.fabs.f32(float %ans.0) %.0 = select i1 %.not8, float %131, float %130 %132 = fcmp ugt float %.0, 0x7FF0000000000000 %133 = select i1 %132, i32 0, i32 %128 store i32 %133, i32* %quo, align 4, !noalias !68 ret float %ans.0 } ; Function Attrs: noinline nounwind define dso_local float @__nv_powif(float %a, i32 %b) local_unnamed_addr #64 { %1 = call i32 @llvm.abs.i32(i32 %b, i1 noundef false) br label %2 2: ; preds = %__nv_fmul_rn.exit, %0 %.01 = phi float [ %a, %0 ], [ %.02, %__nv_fmul_rn.exit ] %e.0 = phi i32 [ %1, %0 ], [ %13, %__nv_fmul_rn.exit ] %r.0 = phi float [ 1.000000e+00, %0 ], [ %r.1, %__nv_fmul_rn.exit ] %3 = and i32 %e.0, 1 %.not = icmp eq i32 %3, 0 br i1 %.not, label %7, label %__nv_fmul_rn.exit1 __nv_fmul_rn.exit1: ; preds = %2 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.mul.rn.ftz.f(float %r.0, float %.01) #139 %6 = fmul float %.01, %r.0 %.0 = select i1 %.not2, float %6, float %5 br label %7 7: ; preds = %__nv_fmul_rn.exit1, %2 %r.1 = phi float [ %.0, %__nv_fmul_rn.exit1 ], [ %r.0, %2 ] %8 = icmp ult i32 %e.0, 2 br i1 %8, label %9, label %__nv_fmul_rn.exit 9: ; preds = %7 %10 = icmp slt i32 %b, 0 %11 = fdiv float 1.000000e+00, %r.1 %12 = select i1 %10, float %11, float %r.1 ret float %12 __nv_fmul_rn.exit: ; preds = %7 %13 = lshr i32 %e.0, 1 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %14, 0 %15 = call float @llvm.nvvm.mul.rn.ftz.f(float %.01, float %.01) #139 %16 = fmul float %.01, %.01 %.02 = select i1 %.not1, float %16, float %15 br label %2 } ; Function Attrs: nofree noinline nosync nounwind readnone define dso_local double @__nv_powi(double %a, i32 %b) local_unnamed_addr #65 { %1 = call i32 @llvm.abs.i32(i32 %b, i1 noundef false) %2 = and i32 %1, 1 %.not1 = icmp eq i32 %2, 0 %3 = select i1 %.not1, double 1.000000e+00, double %a %4 = icmp ult i32 %1, 2 br i1 %4, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %0 %spec.select.lcssa = phi double [ %3, %0 ], [ %spec.select, %.lr.ph ] %5 = icmp slt i32 %b, 0 %6 = fdiv double 1.000000e+00, %spec.select.lcssa %7 = select i1 %5, double %6, double %spec.select.lcssa ret double %7 .lr.ph: ; preds = %0, %.lr.ph %spec.select4 = phi double [ %spec.select, %.lr.ph ], [ %3, %0 ] %e.03 = phi i32 [ %8, %.lr.ph ], [ %1, %0 ] %.02 = phi double [ %9, %.lr.ph ], [ %a, %0 ] %8 = lshr i32 %e.03, 1 %9 = fmul double %.02, %.02 %10 = and i32 %e.03, 2 %.not = icmp eq i32 %10, 0 %11 = select i1 %.not, double 1.000000e+00, double %9 %spec.select = fmul double %spec.select4, %11 %12 = icmp ult i32 %e.03, 4 br i1 %12, label %._crit_edge, label %.lr.ph } ; Function Attrs: noinline nounwind define dso_local float @__nv_powf(float %a, float %b) local_unnamed_addr #66 { __nv_fabsf.exit: %0 = fmul float %b, 5.000000e-01 %1 = call float @llvm.trunc.f32(float %0) #140 %2 = fmul float %1, 2.000000e+00 %3 = fsub float %b, %2 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.fabs.ftz.f(float %3) #139 %6 = call float @llvm.fabs.f32(float %3) %.010 = select i1 %.not, float %6, float %5 %7 = fcmp oeq float %.010, 1.000000e+00 %8 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %8, 0 %9 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %10 = call float @llvm.fabs.f32(float %a) %.011 = select i1 %.not1, float %10, float %9 %11 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %11, 0 %12 = fcmp olt float %.011, 0x3810000000000000 %13 = fmul float %.011, 0x4170000000000000 %14 = select i1 %.not2, i1 %12, i1 false %.114 = select i1 %14, float %13, float %.011 %expo.i.i.1 = select i1 %14, float -2.400000e+01, float 0.000000e+00 %15 = bitcast float %.114 to i32 %16 = add i32 %15, -1060439283 %17 = and i32 %16, -8388608 %18 = sub i32 %15, %17 %19 = bitcast i32 %18 to float %20 = sitofp i32 %17 to float %21 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %21, 0 %22 = call float @llvm.nvvm.fma.rn.ftz.f(float %20, float noundef 0x3E80000000000000, float noundef %expo.i.i.1) #139 %23 = call float @llvm.fma.f32(float %20, float noundef 0x3E80000000000000, float noundef %expo.i.i.1) %.021 = select i1 %.not3, float %23, float %22 %24 = fadd float %19, -1.000000e+00 %25 = fadd float %19, 1.000000e+00 %26 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %25) #141, !srcloc !73 %27 = fmul float %24, 2.000000e+00 %28 = fmul float %26, %27 %29 = fmul float %28, %28 %30 = fsub float %24, %28 %31 = fmul float %30, 2.000000e+00 %32 = fneg float %28 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %33, 0 %34 = call float @llvm.nvvm.fma.rn.ftz.f(float %32, float %24, float %31) #139 %35 = call float @llvm.fma.f32(float %32, float %24, float %31) %.022 = select i1 %.not4, float %35, float %34 %36 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %36, 0 %37 = call float @llvm.nvvm.mul.rn.ftz.f(float %26, float %.022) #139 %38 = fmul float %26, %.022 %.023 = select i1 %.not5, float %38, float %37 %39 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %39, 0 %40 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F45865C80000000, float %29, float noundef 0x3F6A5CFB60000000) #139 %41 = call float @llvm.fma.f32(float %29, float noundef 0x3F45865C80000000, float noundef 0x3F6A5CFB60000000) %.024 = select i1 %.not6, float %41, float %40 %42 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %42, 0 %43 = call float @llvm.nvvm.fma.rn.ftz.f(float %.024, float %29, float noundef 0x3F92776E60000000) #139 %44 = call float @llvm.fma.f32(float %.024, float %29, float noundef 0x3F92776E60000000) %.025 = select i1 %.not7, float %44, float %43 %45 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %45, 0 %46 = call float @llvm.nvvm.fma.rn.ftz.f(float %.025, float %29, float noundef 0x3FBEC709E0000000) #139 %47 = call float @llvm.fma.f32(float %.025, float %29, float noundef 0x3FBEC709E0000000) %.027 = select i1 %.not8, float %47, float %46 %48 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %48, 0 %49 = call float @llvm.nvvm.mul.rn.ftz.f(float %.027, float %29) #139 %50 = fmul float %29, %.027 %.028 = select i1 %.not9, float %50, float %49 %51 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %51, 0 %52 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float noundef 0x3FF7154760000000, float %.021) #139 %53 = call float @llvm.fma.f32(float %28, float noundef 0x3FF7154760000000, float %.021) %.029 = select i1 %.not10, float %53, float %52 %54 = fsub float %.021, %.029 %55 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not11 = icmp eq i32 %55, 0 %56 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float noundef 0x3FF7154760000000, float %54) #139 %57 = call float @llvm.fma.f32(float %28, float noundef 0x3FF7154760000000, float %54) %.030 = select i1 %.not11, float %57, float %56 %58 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %58, 0 %59 = call float @llvm.nvvm.fma.rn.ftz.f(float %.023, float noundef 0x3FF7154760000000, float %.030) #139 %60 = call float @llvm.fma.f32(float %.023, float noundef 0x3FF7154760000000, float %.030) %.031 = select i1 %.not12, float %60, float %59 %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %61, 0 %62 = call float @llvm.nvvm.fma.rn.ftz.f(float %28, float noundef 0x3E54ABC680000000, float %.031) #139 %63 = call float @llvm.fma.f32(float %28, float noundef 0x3E54ABC680000000, float %.031) %.032 = select i1 %.not13, float %63, float %62 %64 = fmul float %.028, 3.000000e+00 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %65, 0 %66 = call float @llvm.nvvm.fma.rn.ftz.f(float %64, float %.023, float %.032) #139 %67 = call float @llvm.fma.f32(float %64, float %.023, float %.032) %.020 = select i1 %.not14, float %67, float %66 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %68, 0 %69 = call float @llvm.nvvm.fma.rn.ftz.f(float %.028, float %28, float %.020) #139 %70 = call float @llvm.fma.f32(float %.028, float %28, float %.020) %.018 = select i1 %.not15, float %70, float %69 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %71, 0 %72 = call float @llvm.nvvm.add.rn.ftz.f(float %.029, float %.018) #139 %73 = fadd float %.029, %.018 %.015 = select i1 %.not16, float %73, float %72 %74 = fneg float %.029 %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %75, 0 %76 = call float @llvm.nvvm.add.rn.ftz.f(float %.015, float %74) #139 %77 = fsub float %.015, %.029 %.016 = select i1 %.not17, float %77, float %76 %78 = fneg float %.016 %79 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %79, 0 %80 = call float @llvm.nvvm.add.rn.ftz.f(float %.018, float %78) #139 %81 = fsub float %.018, %.016 %.017 = select i1 %.not18, float %81, float %80 %82 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %82, 0 %83 = call float @llvm.nvvm.mul.rn.ftz.f(float %.015, float %b) #139 %84 = fmul float %.015, %b %.034 = select i1 %.not19, float %84, float %83 %85 = fneg float %.034 %86 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %86, 0 %87 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float %b, float %85) #139 %88 = call float @llvm.fma.f32(float %.015, float %b, float %85) %.035 = select i1 %.not20, float %88, float %87 %89 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %89, 0 %90 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %b, float %.035) #139 %91 = call float @llvm.fma.f32(float %.017, float %b, float %.035) %.036 = select i1 %.not21, float %91, float %90 %92 = call float @llvm.round.f32(float %.034) %93 = fsub float %.034, %92 %94 = fadd float %93, %.036 %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F23F971C0000000, float %94, float noundef 0x3F55F0BDA0000000) #139 %97 = call float @llvm.fma.f32(float %94, float noundef 0x3F23F971C0000000, float noundef 0x3F55F0BDA0000000) %.026 = select i1 %.not22, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %94, float noundef 0x3F83B30AC0000000) #139 %100 = call float @llvm.fma.f32(float %.026, float %94, float noundef 0x3F83B30AC0000000) %.019 = select i1 %.not23, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %101, 0 %102 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %94, float noundef 0x3FAC6AF760000000) #139 %103 = call float @llvm.fma.f32(float %.019, float %94, float noundef 0x3FAC6AF760000000) %.012 = select i1 %.not24, float %103, float %102 %104 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %104, 0 %105 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %94, float noundef 0x3FCEBFBD80000000) #139 %106 = call float @llvm.fma.f32(float %.012, float %94, float noundef 0x3FCEBFBD80000000) %.09 = select i1 %.not25, float %106, float %105 %107 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %107, 0 %108 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %94, float noundef 0x3FE62E4300000000) #139 %109 = call float @llvm.fma.f32(float %.09, float %94, float noundef 0x3FE62E4300000000) %.02 = select i1 %.not26, float %109, float %108 %110 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %110, 0 %111 = call float @llvm.nvvm.fma.rn.ftz.f(float %.02, float %94, float noundef 1.000000e+00) #139 %112 = call float @llvm.fma.f32(float %.02, float %94, float noundef 1.000000e+00) %.033 = select i1 %.not27, float %112, float %111 %113 = fptosi float %92 to i32 %114 = fcmp ogt float %92, 0.000000e+00 %115 = select i1 %114, i32 0, i32 -2097152000 %116 = add nsw i32 %115, 2130706432 %117 = bitcast i32 %116 to float %118 = fmul float %.033, %117 %119 = shl i32 %113, 23 %120 = sub i32 %119, %115 %121 = bitcast i32 %120 to float %122 = fmul float %118, %121 %123 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %123, 0 %124 = call float @llvm.nvvm.fabs.ftz.f(float %.034) #139 %125 = call float @llvm.fabs.f32(float %.034) %.0 = select i1 %.not28, float %125, float %124 %126 = fcmp ogt float %.0, 1.520000e+02 %127 = fcmp olt float %.034, 0.000000e+00 %128 = select i1 %127, float 0.000000e+00, float 0x7FF0000000000000 %t.i.0 = select i1 %126, float %128, float %122 %129 = fcmp oeq float %a, 1.000000e+00 %130 = fcmp oeq float %b, 0.000000e+00 %or.cond = select i1 %129, i1 true, i1 %130 br i1 %or.cond, label %__internal_powf_special_cases.exit, label %__nv_isnanf.exit.i __nv_isnanf.exit.i: ; preds = %__nv_fabsf.exit %131 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %131, 0 %.03 = select i1 %.not29, float %10, float %9 %132 = fcmp ugt float %.03, 0x7FF0000000000000 br i1 %132, label %__nv_fadd_rn.exit.i, label %__nv_isnanf.exit2.i __nv_isnanf.exit2.i: ; preds = %__nv_isnanf.exit.i %133 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %133, 0 %134 = call float @llvm.nvvm.fabs.ftz.f(float %b) #139 %135 = call float @llvm.fabs.f32(float %b) %.04 = select i1 %.not30, float %135, float %134 %136 = fcmp ugt float %.04, 0x7FF0000000000000 br i1 %136, label %__nv_fadd_rn.exit.i, label %140 __nv_fadd_rn.exit.i: ; preds = %__nv_isnanf.exit2.i, %__nv_isnanf.exit.i %137 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not34 = icmp eq i32 %137, 0 %138 = call float @llvm.nvvm.add.rn.ftz.f(float %a, float %b) #139 %139 = fadd float %a, %b %.05 = select i1 %.not34, float %139, float %138 br label %__internal_powf_special_cases.exit 140: ; preds = %__nv_isnanf.exit2.i %141 = fcmp oeq float %a, 0.000000e+00 br i1 %141, label %144, label %__nv_isinff.exit.i __nv_isinff.exit.i: ; preds = %140 %142 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %142, 0 %.06 = select i1 %.not31, float %10, float %9 %143 = fcmp oeq float %.06, 0x7FF0000000000000 br i1 %143, label %144, label %151 144: ; preds = %__nv_isinff.exit.i, %140 %145 = fadd float %a, %a %146 = bitcast float %145 to i32 %147 = fcmp olt float %b, 0.000000e+00 %148 = xor i32 %146, 2139095040 %ti.i.0 = select i1 %147, i32 %148, i32 %146 %149 = and i32 %ti.i.0, 2147483647 %ti.i.1 = select i1 %7, i32 %ti.i.0, i32 %149 %150 = bitcast i32 %ti.i.1 to float br label %__internal_powf_special_cases.exit 151: ; preds = %__nv_isinff.exit.i %152 = fcmp oeq float %a, -1.000000e+00 br i1 %152, label %__nv_isinff.exit7.i, label %155 __nv_isinff.exit7.i: ; preds = %151 %153 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not33 = icmp eq i32 %153, 0 %.08 = select i1 %.not33, float %135, float %134 %154 = fcmp oeq float %.08, 0x7FF0000000000000 br i1 %154, label %__internal_powf_special_cases.exit, label %155 155: ; preds = %__nv_isinff.exit7.i, %151 %156 = fcmp olt float %a, 0.000000e+00 br i1 %156, label %__nv_floorf.exit.i, label %__internal_powf_special_cases.exit __nv_floorf.exit.i: ; preds = %155 %157 = fneg float %t.i.0 %spec.select = select i1 %7, float %157, float %t.i.0 %158 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %158, 0 %159 = call float @llvm.nvvm.floor.ftz.f(float %b) #139 %160 = call float @llvm.floor.f32(float %b) %.07 = select i1 %.not32, float %160, float %159 %161 = fcmp une float %.07, %b %.1 = select i1 %161, float 0x7FFFFFFFE0000000, float %spec.select br label %__internal_powf_special_cases.exit __internal_powf_special_cases.exit: ; preds = %__nv_fadd_rn.exit.i, %__nv_isinff.exit7.i, %__nv_floorf.exit.i, %155, %144, %__nv_fabsf.exit %.6 = phi float [ 1.000000e+00, %__nv_fabsf.exit ], [ %.05, %__nv_fadd_rn.exit.i ], [ %150, %144 ], [ 1.000000e+00, %__nv_isinff.exit7.i ], [ %.1, %__nv_floorf.exit.i ], [ %t.i.0, %155 ] ret float %.6 } ; Function Attrs: noinline nounwind define dso_local float @__nv_tgammaf(float %a) local_unnamed_addr #67 { __nv_fabsf.exit: %0 = fcmp olt float %a, 0.000000e+00 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 %2 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %3 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %3, float %2 %4 = fcmp ult float %.0, 1.500000e+00 br i1 %4, label %__internal_fmad.exit.i1, label %__nv_fabsf.exit.i __nv_fabsf.exit.i: ; preds = %__nv_fabsf.exit %5 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not12 = icmp eq i32 %5, 0 %.03 = select i1 %.not12, float %3, float %2 %6 = fcmp ogt float %.03, 0x40448CCCC0000000 %x.i.0 = select i1 %6, float 0x40448CCCC0000000, float %a %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not13 = icmp eq i32 %7, 0 %8 = call float @llvm.nvvm.fabs.ftz.f(float %x.i.0) #139 %9 = call float @llvm.fabs.f32(float %x.i.0) %.04 = select i1 %.not13, float %9, float %8 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not14 = icmp eq i32 %10, 0 %11 = fcmp olt float %.04, 0x3810000000000000 %12 = fmul float %.04, 0x4170000000000000 %13 = select i1 %.not14, i1 %11, i1 false %.1 = select i1 %13, float %12, float %.04 %expo.i.i.1 = select i1 %13, float -2.400000e+01, float 0.000000e+00 %14 = bitcast float %.1 to i32 %15 = add i32 %14, -1060439283 %16 = and i32 %15, -8388608 %17 = sub i32 %14, %16 %18 = bitcast i32 %17 to float %19 = sitofp i32 %16 to float %20 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not15 = icmp eq i32 %20, 0 %21 = call float @llvm.nvvm.fma.rn.ftz.f(float %19, float noundef 0x3E80000000000000, float noundef %expo.i.i.1) #139 %22 = call float @llvm.fma.f32(float %19, float noundef 0x3E80000000000000, float noundef %expo.i.i.1) %.013 = select i1 %.not15, float %22, float %21 %23 = fadd float %18, -1.000000e+00 %24 = fadd float %18, 1.000000e+00 %25 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %24) #141, !srcloc !73 %26 = fmul float %23, 2.000000e+00 %27 = fmul float %25, %26 %28 = fmul float %27, %27 %29 = fsub float %23, %27 %30 = fmul float %29, 2.000000e+00 %31 = fneg float %27 %32 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not16 = icmp eq i32 %32, 0 %33 = call float @llvm.nvvm.fma.rn.ftz.f(float %31, float %23, float %30) #139 %34 = call float @llvm.fma.f32(float %31, float %23, float %30) %.014 = select i1 %.not16, float %34, float %33 %35 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not17 = icmp eq i32 %35, 0 %36 = call float @llvm.nvvm.mul.rn.ftz.f(float %25, float %.014) #139 %37 = fmul float %25, %.014 %.015 = select i1 %.not17, float %37, float %36 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not18 = icmp eq i32 %38, 0 %39 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F45865C80000000, float %28, float noundef 0x3F6A5CFB60000000) #139 %40 = call float @llvm.fma.f32(float %28, float noundef 0x3F45865C80000000, float noundef 0x3F6A5CFB60000000) %.016 = select i1 %.not18, float %40, float %39 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not19 = icmp eq i32 %41, 0 %42 = call float @llvm.nvvm.fma.rn.ftz.f(float %.016, float %28, float noundef 0x3F92776E60000000) #139 %43 = call float @llvm.fma.f32(float %.016, float %28, float noundef 0x3F92776E60000000) %.017 = select i1 %.not19, float %43, float %42 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not20 = icmp eq i32 %44, 0 %45 = call float @llvm.nvvm.fma.rn.ftz.f(float %.017, float %28, float noundef 0x3FBEC709E0000000) #139 %46 = call float @llvm.fma.f32(float %.017, float %28, float noundef 0x3FBEC709E0000000) %.018 = select i1 %.not20, float %46, float %45 %47 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not21 = icmp eq i32 %47, 0 %48 = call float @llvm.nvvm.mul.rn.ftz.f(float %.018, float %28) #139 %49 = fmul float %28, %.018 %.020 = select i1 %.not21, float %49, float %48 %50 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not22 = icmp eq i32 %50, 0 %51 = call float @llvm.nvvm.fma.rn.ftz.f(float %27, float noundef 0x3FF7154760000000, float %.013) #139 %52 = call float @llvm.fma.f32(float %27, float noundef 0x3FF7154760000000, float %.013) %.021 = select i1 %.not22, float %52, float %51 %53 = fsub float %.013, %.021 %54 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %54, 0 %55 = call float @llvm.nvvm.fma.rn.ftz.f(float %27, float noundef 0x3FF7154760000000, float %53) #139 %56 = call float @llvm.fma.f32(float %27, float noundef 0x3FF7154760000000, float %53) %.022 = select i1 %.not23, float %56, float %55 %57 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not24 = icmp eq i32 %57, 0 %58 = call float @llvm.nvvm.fma.rn.ftz.f(float %.015, float noundef 0x3FF7154760000000, float %.022) #139 %59 = call float @llvm.fma.f32(float %.015, float noundef 0x3FF7154760000000, float %.022) %.023 = select i1 %.not24, float %59, float %58 %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not25 = icmp eq i32 %60, 0 %61 = call float @llvm.nvvm.fma.rn.ftz.f(float %27, float noundef 0x3E54ABC680000000, float %.023) #139 %62 = call float @llvm.fma.f32(float %27, float noundef 0x3E54ABC680000000, float %.023) %.024 = select i1 %.not25, float %62, float %61 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not26 = icmp eq i32 %63, 0 %64 = call float @llvm.nvvm.fma.rn.ftz.f(float %.020, float %27, float %.024) #139 %65 = call float @llvm.fma.f32(float %.020, float %27, float %.024) %.010 = select i1 %.not26, float %65, float %64 %66 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not27 = icmp eq i32 %66, 0 %67 = call float @llvm.nvvm.add.rn.ftz.f(float %.021, float %.010) #139 %68 = fadd float %.021, %.010 %.07 = select i1 %.not27, float %68, float %67 %69 = fneg float %.021 %70 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not28 = icmp eq i32 %70, 0 %71 = call float @llvm.nvvm.add.rn.ftz.f(float %.07, float %69) #139 %72 = fsub float %.07, %.021 %.08 = select i1 %.not28, float %72, float %71 %73 = fneg float %.08 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not29 = icmp eq i32 %74, 0 %75 = call float @llvm.nvvm.add.rn.ftz.f(float %.010, float %73) #139 %76 = fsub float %.010, %.08 %.09 = select i1 %.not29, float %76, float %75 %77 = fadd float %.04, -5.000000e-01 %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not30 = icmp eq i32 %78, 0 %79 = call float @llvm.nvvm.mul.rn.ftz.f(float %.07, float %77) #139 %80 = fmul float %77, %.07 %.025 = select i1 %.not30, float %80, float %79 %81 = fneg float %.025 %82 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not31 = icmp eq i32 %82, 0 %83 = call float @llvm.nvvm.fma.rn.ftz.f(float %.07, float %77, float %81) #139 %84 = call float @llvm.fma.f32(float %.07, float %77, float %81) %.027 = select i1 %.not31, float %84, float %83 %85 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not32 = icmp eq i32 %85, 0 %86 = call float @llvm.nvvm.fma.rn.ftz.f(float %.09, float %77, float %.027) #139 %87 = call float @llvm.fma.f32(float %.09, float %77, float %.027) %.028 = select i1 %.not32, float %87, float %86 %88 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not33 = icmp eq i32 %88, 0 %89 = call float @llvm.nvvm.mul.rn.ftz.f(float noundef 0x3FF7154760000000, float %.04) #139 %90 = fmul float %.04, 0x3FF7154760000000 %.029 = select i1 %.not33, float %90, float %89 %91 = fneg float %.029 %92 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not34 = icmp eq i32 %92, 0 %93 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FF7154760000000, float %.04, float %91) #139 %94 = call float @llvm.fma.f32(float %.04, float noundef 0x3FF7154760000000, float %91) %.030 = select i1 %.not34, float %94, float %93 %95 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not35 = icmp eq i32 %95, 0 %96 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3E54AE0C00000000, float %.04, float %.030) #139 %97 = call float @llvm.fma.f32(float %.04, float noundef 0x3E54AE0C00000000, float %.030) %.031 = select i1 %.not35, float %97, float %96 %98 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not36 = icmp eq i32 %98, 0 %99 = call float @llvm.nvvm.add.rn.ftz.f(float %.025, float %91) #139 %100 = fsub float %.025, %.029 %.032 = select i1 %.not36, float %100, float %99 %101 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not37 = icmp eq i32 %101, 0 %102 = call float @llvm.nvvm.add.rn.ftz.f(float %.032, float %.029) #139 %103 = fadd float %.029, %.032 %.034 = select i1 %.not37, float %103, float %102 %104 = fneg float %.034 %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not38 = icmp eq i32 %105, 0 %106 = call float @llvm.nvvm.add.rn.ftz.f(float %.032, float %104) #139 %107 = fsub float %.032, %.034 %.035 = select i1 %.not38, float %107, float %106 %108 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not39 = icmp eq i32 %108, 0 %109 = call float @llvm.nvvm.add.rn.ftz.f(float %.025, float %104) #139 %110 = fsub float %.025, %.034 %.036 = select i1 %.not39, float %110, float %109 %111 = fneg float %.035 %112 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not40 = icmp eq i32 %112, 0 %113 = call float @llvm.nvvm.add.rn.ftz.f(float %91, float %111) #139 %114 = fsub float %111, %.029 %.037 = select i1 %.not40, float %114, float %113 %115 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not41 = icmp eq i32 %115, 0 %116 = call float @llvm.nvvm.add.rn.ftz.f(float %.036, float %.037) #139 %117 = fadd float %.036, %.037 %.038 = select i1 %.not41, float %117, float %116 %118 = fsub float %.028, %.031 %119 = fadd float %118, %.038 br i1 %0, label %120, label %__nv_fmaf.exit2.i.i 120: ; preds = %__nv_fabsf.exit.i %121 = fneg float %.032 %122 = fneg float %119 %123 = fcmp ogt float %.04, 3.300000e+01 %124 = fsub float 4.800000e+01, %.032 %arg.i.0.0 = select i1 %123, float %124, float %121 br label %__nv_fmaf.exit2.i.i __nv_fmaf.exit2.i.i: ; preds = %120, %__nv_fabsf.exit.i %arg.i.0.1 = phi float [ %arg.i.0.0, %120 ], [ %.032, %__nv_fabsf.exit.i ] %arg.i.1.0 = phi float [ %122, %120 ], [ %119, %__nv_fabsf.exit.i ] %125 = call float @llvm.round.f32(float %arg.i.0.1) %126 = fsub float %arg.i.0.1, %125 %127 = fadd float %arg.i.1.0, %126 %128 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not42 = icmp eq i32 %128, 0 %129 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F23F971C0000000, float %127, float noundef 0x3F55F0BDA0000000) #139 %130 = call float @llvm.fma.f32(float %127, float noundef 0x3F23F971C0000000, float noundef 0x3F55F0BDA0000000) %.041 = select i1 %.not42, float %130, float %129 %131 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not43 = icmp eq i32 %131, 0 %132 = call float @llvm.nvvm.fma.rn.ftz.f(float %.041, float %127, float noundef 0x3F83B30AC0000000) #139 %133 = call float @llvm.fma.f32(float %.041, float %127, float noundef 0x3F83B30AC0000000) %.042 = select i1 %.not43, float %133, float %132 %134 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not44 = icmp eq i32 %134, 0 %135 = call float @llvm.nvvm.fma.rn.ftz.f(float %.042, float %127, float noundef 0x3FAC6AF760000000) #139 %136 = call float @llvm.fma.f32(float %.042, float %127, float noundef 0x3FAC6AF760000000) %.043 = select i1 %.not44, float %136, float %135 %137 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not45 = icmp eq i32 %137, 0 %138 = call float @llvm.nvvm.fma.rn.ftz.f(float %.043, float %127, float noundef 0x3FCEBFBD80000000) #139 %139 = call float @llvm.fma.f32(float %.043, float %127, float noundef 0x3FCEBFBD80000000) %.044 = select i1 %.not45, float %139, float %138 %140 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not46 = icmp eq i32 %140, 0 %141 = call float @llvm.nvvm.fma.rn.ftz.f(float %.044, float %127, float noundef 0x3FE62E4300000000) #139 %142 = call float @llvm.fma.f32(float %.044, float %127, float noundef 0x3FE62E4300000000) %.046 = select i1 %.not46, float %142, float %141 %143 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not47 = icmp eq i32 %143, 0 %144 = call float @llvm.nvvm.fma.rn.ftz.f(float %.046, float %127, float noundef 1.000000e+00) #139 %145 = call float @llvm.fma.f32(float %.046, float %127, float noundef 1.000000e+00) %.040 = select i1 %.not47, float %145, float %144 %146 = fptosi float %125 to i32 %147 = fcmp ogt float %125, 0.000000e+00 %148 = select i1 %147, i32 0, i32 -2097152000 %149 = add nsw i32 %148, 2130706432 %150 = bitcast i32 %149 to float %151 = fmul float %.040, %150 %152 = shl i32 %146, 23 %153 = sub i32 %152, %148 %154 = bitcast i32 %153 to float %155 = fmul float %151, %154 %156 = fmul float %155, 0x40040D9320000000 %157 = call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %.04) #141, !srcloc !73 %158 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not48 = icmp eq i32 %158, 0 %159 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3F11EF2E20000000, float %157, float noundef 0xBF0A87DB00000000) #139 %160 = call float @llvm.fma.f32(float %157, float noundef 0x3F11EF2E20000000, float noundef 0xBF0A87DB00000000) %.047 = select i1 %.not48, float %160, float %159 %161 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not49 = icmp eq i32 %161, 0 %162 = call float @llvm.nvvm.fma.rn.ftz.f(float %.047, float %157, float noundef 0xBF3BB4D7C0000000) #139 %163 = call float @llvm.fma.f32(float %.047, float %157, float noundef 0xBF3BB4D7C0000000) %.048 = select i1 %.not49, float %163, float %162 %164 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not50 = icmp eq i32 %164, 0 %165 = call float @llvm.nvvm.fma.rn.ftz.f(float %.048, float %157, float noundef 0x3F504157C0000000) #139 %166 = call float @llvm.fma.f32(float %.048, float %157, float noundef 0x3F504157C0000000) %.049 = select i1 %.not50, float %166, float %165 %167 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not51 = icmp eq i32 %167, 0 %168 = call float @llvm.nvvm.fma.rn.ftz.f(float %.049, float %157, float noundef 0xBF32415FA0000000) #139 %169 = call float @llvm.fma.f32(float %.049, float %157, float noundef 0xBF32415FA0000000) %.050 = select i1 %.not51, float %169, float %168 %170 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not52 = icmp eq i32 %170, 0 %171 = call float @llvm.nvvm.fma.rn.ftz.f(float %.050, float %157, float noundef 0xBF65E9AC80000000) #139 %172 = call float @llvm.fma.f32(float %.050, float %157, float noundef 0xBF65E9AC80000000) %.051 = select i1 %.not52, float %172, float %171 %173 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not53 = icmp eq i32 %173, 0 %174 = call float @llvm.nvvm.fma.rn.ftz.f(float %.051, float %157, float noundef 0x3F6C70E640000000) #139 %175 = call float @llvm.fma.f32(float %.051, float %157, float noundef 0x3F6C70E640000000) %.053 = select i1 %.not53, float %175, float %174 %176 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not54 = icmp eq i32 %176, 0 %177 = call float @llvm.nvvm.fma.rn.ftz.f(float %.053, float %157, float noundef 0x3FB5555580000000) #139 %178 = call float @llvm.fma.f32(float %.053, float %157, float noundef 0x3FB5555580000000) %.054 = select i1 %.not54, float %178, float %177 br i1 %0, label %__internal_fmad.exit35.i, label %__internal_fmad.exit45.i __internal_fmad.exit35.i: ; preds = %__nv_fmaf.exit2.i.i %179 = fmul float %157, %.054 %180 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not56 = icmp eq i32 %180, 0 %181 = call float @llvm.nvvm.fma.rn.ftz.f(float %179, float %x.i.0, float %x.i.0) #139 %182 = call float @llvm.fma.f32(float %179, float %x.i.0, float %x.i.0) %.055 = select i1 %.not56, float %182, float %181 %183 = fadd float %.04, %.04 %184 = call float @llvm.round.f32(float %183) %185 = fptosi float %184 to i32 %186 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not57 = icmp eq i32 %186, 0 %187 = call float @llvm.nvvm.fma.rn.ftz.f(float %184, float noundef -5.000000e-01, float %.04) #139 %188 = call float @llvm.fma.f32(float %184, float noundef -5.000000e-01, float %.04) %.075 = select i1 %.not57, float %188, float %187 %189 = and i32 %185, 1 %190 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not58 = icmp eq i32 %190, 0 %191 = call float @llvm.nvvm.mul.rn.ftz.f(float %.075, float %.075) #139 %192 = fmul float %.075, %.075 %.056 = select i1 %.not58, float %192, float %191 %193 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %194 = icmp sgt i32 %193, 820 br i1 %194, label %__internal_fmad.exit.i.i.i, label %__internal_fmad.exit9.i.i.i __internal_fmad.exit.i.i.i: ; preds = %__internal_fmad.exit35.i %195 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not76 = icmp eq i32 %195, 0 %196 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBFE2F59920000000, float %.056, float noundef 0x400466B200000000) #139 %197 = call float @llvm.fma.f32(float %.056, float noundef 0xBFE2F59920000000, float noundef 0x400466B200000000) %.057 = select i1 %.not76, float %197, float %196 %198 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not77 = icmp eq i32 %198, 0 %199 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FCD09C240000000, float %.056, float noundef 0xBFF55A5C00000000) #139 %200 = call float @llvm.fma.f32(float %.056, float noundef 0x3FCD09C240000000, float noundef 0xBFF55A5C00000000) %.058 = select i1 %.not77, float %200, float %199 %201 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not78 = icmp eq i32 %201, 0 %202 = call float @llvm.nvvm.fma.rn.ftz.f(float %.057, float %.056, float noundef 0xC014ABBEC0000000) #139 %203 = call float @llvm.fma.f32(float %.057, float %.056, float noundef 0xC014ABBEC0000000) %.060 = select i1 %.not78, float %203, float %202 %204 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not79 = icmp eq i32 %204, 0 %205 = call float @llvm.nvvm.fma.rn.ftz.f(float %.058, float %.056, float noundef 0x40103C19E0000000) #139 %206 = call float @llvm.fma.f32(float %.058, float %.056, float noundef 0x40103C19E0000000) %.061 = select i1 %.not79, float %206, float %205 %207 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not80 = icmp eq i32 %207, 0 %208 = call float @llvm.nvvm.fma.rn.ftz.f(float %.056, float %.075, float noundef 0.000000e+00) #139 %209 = call float @llvm.fma.f32(float %.056, float %.075, float noundef 0.000000e+00) %.062 = select i1 %.not80, float %209, float %208 %210 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not81 = icmp eq i32 %210, 0 %211 = call float @llvm.nvvm.fma.rn.ftz.f(float %.061, float %.056, float noundef 0xC013BD3CC0000000) #139 %212 = call float @llvm.fma.f32(float %.061, float %.056, float noundef 0xC013BD3CC0000000) %.063 = select i1 %.not81, float %212, float %211 %213 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not82 = icmp eq i32 %213, 0 %214 = call float @llvm.nvvm.fma.rn.ftz.f(float %.060, float %.062, float noundef 0.000000e+00) #139 %215 = call float @llvm.fma.f32(float %.060, float %.062, float noundef 0.000000e+00) %.064 = select i1 %.not82, float %215, float %214 %216 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not83 = icmp eq i32 %216, 0 %217 = call float @llvm.nvvm.fma.rn.ftz.f(float %.063, float %.056, float noundef 1.000000e+00) #139 %218 = call float @llvm.fma.f32(float %.063, float %.056, float noundef 1.000000e+00) %.065 = select i1 %.not83, float %218, float %217 %219 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not84 = icmp eq i32 %219, 0 %220 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400921FB60000000, float %.075, float %.064) #139 %221 = call float @llvm.fma.f32(float %.075, float noundef 0x400921FB60000000, float %.064) %.067 = select i1 %.not84, float %221, float %220 br label %__internal_tgammaf_sinpi.exit.i __internal_fmad.exit9.i.i.i: ; preds = %__internal_fmad.exit35.i %.not59 = icmp eq i32 %189, 0 %..075 = select i1 %.not59, float %.075, float 1.000000e+00 %222 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not60 = icmp eq i32 %222, 0 %223 = call float @llvm.nvvm.fma.rn.ftz.f(float %.056, float %..075, float noundef 0.000000e+00) #139 %224 = call float @llvm.fma.f32(float %.056, float %..075, float noundef 0.000000e+00) %.068 = select i1 %.not60, float %224, float %223 br i1 %.not59, label %__internal_fmad.exit11.i.i.i, label %__internal_fmad.exit10.i.i.i __internal_fmad.exit10.i.i.i: ; preds = %__internal_fmad.exit9.i.i.i %225 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not75 = icmp eq i32 %225, 0 %226 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x3FCD09C240000000, float %.056, float noundef 0xBFF55A5C00000000) #139 %227 = call float @llvm.fma.f32(float %.056, float noundef 0x3FCD09C240000000, float noundef 0xBFF55A5C00000000) %.069 = select i1 %.not75, float %227, float %226 br label %__internal_fmad.exit11.i.i.i __internal_fmad.exit11.i.i.i: ; preds = %__internal_fmad.exit9.i.i.i, %__internal_fmad.exit10.i.i.i %228 = phi float [ 0.000000e+00, %__internal_fmad.exit9.i.i.i ], [ 1.000000e+00, %__internal_fmad.exit10.i.i.i ] %229 = phi float [ 0xC014ABBEC0000000, %__internal_fmad.exit9.i.i.i ], [ 0xC013BD3CC0000000, %__internal_fmad.exit10.i.i.i ] %230 = phi float [ 0x400466B200000000, %__internal_fmad.exit9.i.i.i ], [ 0x40103C19E0000000, %__internal_fmad.exit10.i.i.i ] %231 = phi float [ 0xBFE2F59920000000, %__internal_fmad.exit9.i.i.i ], [ %.069, %__internal_fmad.exit10.i.i.i ] %232 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not63 = icmp eq i32 %232, 0 %233 = call float @llvm.nvvm.fma.rn.ftz.f(float %231, float %.056, float noundef %230) #139 %234 = call float @llvm.fma.f32(float %231, float %.056, float noundef %230) %.070 = select i1 %.not63, float %234, float %233 %235 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not65 = icmp eq i32 %235, 0 %236 = call float @llvm.nvvm.fma.rn.ftz.f(float %.070, float %.056, float noundef %229) #139 %237 = call float @llvm.fma.f32(float %.070, float %.056, float noundef %229) %.071 = select i1 %.not65, float %237, float %236 %238 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not67 = icmp eq i32 %238, 0 %239 = call float @llvm.nvvm.fma.rn.ftz.f(float %.071, float %.068, float noundef %228) #139 %240 = call float @llvm.fma.f32(float %.071, float %.068, float noundef %228) %.072 = select i1 %.not67, float %240, float %239 %241 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not68 = icmp eq i32 %241, 0 %242 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0x400921FB60000000, float %.075, float %.072) #139 %243 = call float @llvm.fma.f32(float %.075, float noundef 0x400921FB60000000, float %.072) %.074 = select i1 %.not68, float %243, float %242 br label %__internal_tgammaf_sinpi.exit.i __internal_tgammaf_sinpi.exit.i: ; preds = %__internal_fmad.exit11.i.i.i, %__internal_fmad.exit.i.i.i %rc.i.i.i.0 = phi float [ %.065, %__internal_fmad.exit.i.i.i ], [ %.072, %__internal_fmad.exit11.i.i.i ] %rs.i.i.i.0 = phi float [ %.067, %__internal_fmad.exit.i.i.i ], [ %.074, %__internal_fmad.exit11.i.i.i ] %.not69 = icmp eq i32 %189, 0 %rc.i.i.i.0.rs.i.i.i.0 = select i1 %.not69, float %rs.i.i.i.0, float %rc.i.i.i.0 %244 = and i32 %185, 2 %.not70 = icmp eq i32 %244, 0 %245 = fsub float 0.000000e+00, %rc.i.i.i.0.rs.i.i.i.0 %246 = select i1 %.not70, float %rc.i.i.i.0.rs.i.i.i.0, float %245 %247 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not71 = icmp eq i32 %247, 0 %248 = call float @llvm.nvvm.mul.rn.ftz.f(float %.055, float %246) #139 %249 = fmul float %.055, %246 %.077 = select i1 %.not71, float %249, float %248 %250 = fneg float %.077 %251 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not72 = icmp eq i32 %251, 0 %252 = call float @llvm.nvvm.fma.rn.ftz.f(float %.055, float %246, float %250) #139 %253 = call float @llvm.fma.f32(float %.055, float %246, float %250) %.076 = select i1 %.not72, float %253, float %252 %254 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not73 = icmp eq i32 %254, 0 br i1 %.not73, label %257, label %255 255: ; preds = %__internal_tgammaf_sinpi.exit.i %256 = call float @llvm.nvvm.div.approx.ftz.f(float noundef 1.000000e+00, float %.077) #139 br label %__nv_fast_fdividef.exit.i 257: ; preds = %__internal_tgammaf_sinpi.exit.i %258 = call float @llvm.nvvm.div.approx.f(float noundef 1.000000e+00, float %.077) #139 br label %__nv_fast_fdividef.exit.i __nv_fast_fdividef.exit.i: ; preds = %257, %255 %.073 = phi float [ %256, %255 ], [ %258, %257 ] %259 = fneg float %.073 %260 = fmul float %.073, %259 %261 = fmul float %.076, %260 %262 = fmul float %156, %261 %263 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not74 = icmp eq i32 %263, 0 %264 = call float @llvm.nvvm.fma.rn.ftz.f(float %156, float %.073, float %262) #139 %265 = call float @llvm.fma.f32(float %156, float %.073, float %262) %.066 = select i1 %.not74, float %265, float %264 %266 = fmul float %.066, 5.000000e-01 %267 = fcmp ogt float %.04, 3.300000e+01 %268 = fmul float %266, 0x3CF0000000000000 %s.i.0 = select i1 %267, float %268, float %266 br label %__internal_tgammaf_stirling.exit __internal_fmad.exit45.i: ; preds = %__nv_fmaf.exit2.i.i %269 = fmul float %157, %.054 %270 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not55 = icmp eq i32 %270, 0 %271 = call float @llvm.nvvm.fma.rn.ftz.f(float %269, float %156, float %156) #139 %272 = call float @llvm.fma.f32(float %269, float %156, float %156) %.059 = select i1 %.not55, float %272, float %271 br label %__internal_tgammaf_stirling.exit __internal_fmad.exit.i1: ; preds = %__nv_fabsf.exit %273 = fcmp olt float %a, -5.000000e-01 %a. = select i1 %273, float %a, float 1.000000e+00 %274 = fcmp oeq float %a, 0.000000e+00 %275 = call float @llvm.round.f32(float %a) %276 = select i1 %274, float 0.000000e+00, float %275 %277 = fsub float %a, %276 %278 = fcmp ole float %a, 5.000000e-01 %279 = select i1 %278, float %277, float 1.000000e+00 %fy.0 = fmul float %a., %279 %280 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %280, 0 %281 = call float @llvm.nvvm.fma.rn.ftz.f(float noundef 0xBF5193ECC0000000, float %277, float noundef 0x3F7D207AE0000000) #139 %282 = call float @llvm.fma.f32(float %277, float noundef 0xBF5193ECC0000000, float noundef 0x3F7D207AE0000000) %.052 = select i1 %.not1, float %282, float %281 %283 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %283, 0 %284 = call float @llvm.nvvm.fma.rn.ftz.f(float %.052, float %277, float noundef 0xBF83C01600000000) #139 %285 = call float @llvm.fma.f32(float %.052, float %277, float noundef 0xBF83C01600000000) %.045 = select i1 %.not2, float %285, float %284 %286 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not3 = icmp eq i32 %286, 0 %287 = call float @llvm.nvvm.fma.rn.ftz.f(float %.045, float %277, float noundef 0xBFA598A440000000) #139 %288 = call float @llvm.fma.f32(float %.045, float %277, float noundef 0xBFA598A440000000) %.039 = select i1 %.not3, float %288, float %287 %289 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not4 = icmp eq i32 %289, 0 %290 = call float @llvm.nvvm.fma.rn.ftz.f(float %.039, float %277, float noundef 0x3FC5513660000000) #139 %291 = call float @llvm.fma.f32(float %.039, float %277, float noundef 0x3FC5513660000000) %.033 = select i1 %.not4, float %291, float %290 %292 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not5 = icmp eq i32 %292, 0 %293 = call float @llvm.nvvm.fma.rn.ftz.f(float %.033, float %277, float noundef 0xBFA58180A0000000) #139 %294 = call float @llvm.fma.f32(float %.033, float %277, float noundef 0xBFA58180A0000000) %.026 = select i1 %.not5, float %294, float %293 %295 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %295, 0 %296 = call float @llvm.nvvm.fma.rn.ftz.f(float %.026, float %277, float noundef 0xBFE4FCF440000000) #139 %297 = call float @llvm.fma.f32(float %.026, float %277, float noundef 0xBFE4FCF440000000) %.019 = select i1 %.not6, float %297, float %296 %298 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %298, 0 %299 = call float @llvm.nvvm.fma.rn.ftz.f(float %.019, float %277, float noundef 0x3FE2788D00000000) #139 %300 = call float @llvm.fma.f32(float %.019, float %277, float noundef 0x3FE2788D00000000) %.012 = select i1 %.not7, float %300, float %299 %301 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not8 = icmp eq i32 %301, 0 %302 = call float @llvm.nvvm.fma.rn.ftz.f(float %.012, float %fy.0, float noundef 0.000000e+00) #139 %303 = call float @llvm.fma.f32(float %.012, float %fy.0, float noundef 0.000000e+00) %.05 = select i1 %.not8, float %303, float %302 %304 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not9 = icmp eq i32 %304, 0 %305 = call float @llvm.nvvm.fma.rn.ftz.f(float %.05, float %277, float %fy.0) #139 %306 = call float @llvm.fma.f32(float %.05, float %277, float %fy.0) %.02 = select i1 %.not9, float %306, float %305 %307 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not10 = icmp eq i32 %307, 0 br i1 %.not10, label %310, label %308 308: ; preds = %__internal_fmad.exit.i1 %309 = call float @llvm.nvvm.div.approx.ftz.f(float noundef 1.000000e+00, float %.02) #139 br label %__internal_tgammaf_stirling.exit 310: ; preds = %__internal_fmad.exit.i1 %311 = call float @llvm.nvvm.div.approx.f(float noundef 1.000000e+00, float %.02) #139 br label %__internal_tgammaf_stirling.exit __internal_tgammaf_stirling.exit: ; preds = %308, %310, %__nv_fast_fdividef.exit.i, %__internal_fmad.exit45.i %s.0 = phi float [ %s.i.0, %__nv_fast_fdividef.exit.i ], [ %.059, %__internal_fmad.exit45.i ], [ %309, %308 ], [ %311, %310 ] br i1 %0, label %312, label %320 312: ; preds = %__internal_tgammaf_stirling.exit %313 = call float @llvm.trunc.f32(float %a) %314 = fcmp oeq float %313, %a br i1 %314, label %320, label %315 315: ; preds = %312 %316 = fcmp olt float %a, 0xC0448CCCC0000000 br i1 %316, label %317, label %320 317: ; preds = %315 %318 = fptosi float %a to i32 %319 = and i32 %318, 1 %.not11 = icmp eq i32 %319, 0 %spec.select = select i1 %.not11, float %s.0, float 0.000000e+00 br label %320 320: ; preds = %312, %317, %315, %__internal_tgammaf_stirling.exit %s.3 = phi float [ %s.0, %__internal_tgammaf_stirling.exit ], [ %s.0, %315 ], [ %spec.select, %317 ], [ 0x7FFFFFFFE0000000, %312 ] ret float %s.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_roundf(float %a) local_unnamed_addr #68 { __nv_fadd_rz.exit: %0 = bitcast float %a to i32 %1 = and i32 %0, -2147483648 %2 = or i32 %1, 1056964608 %3 = bitcast i32 %2 to float %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %4, 0 %5 = call float @llvm.nvvm.add.rz.ftz.f(float %a, float %3) #139 %6 = call float @llvm.nvvm.add.rz.f(float %a, float %3) #139 %.0 = select i1 %.not, float %6, float %5 %7 = call float @llvm.trunc.f32(float %.0) ret float %7 } ; Function Attrs: noinline nounwind define dso_local float @__nv_fdimf(float %a, float %b) local_unnamed_addr #69 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %1, 0 br i1 %.not, label %4, label %2 2: ; preds = %0 %3 = call float asm "sub.rn.ftz.f32 $0, $1, $2;", "=f,f,f"(float %a, float %b) #141, !srcloc !74 br label %__nv_fsub_rn.exit 4: ; preds = %0 %5 = call float asm "sub.rn.f32 $0, $1, $2;", "=f,f,f"(float %a, float %b) #141, !srcloc !75 br label %__nv_fsub_rn.exit __nv_fsub_rn.exit: ; preds = %4, %2 %res.i.0 = phi float [ %3, %2 ], [ %5, %4 ] %6 = fcmp ole float %a, %b %t.0 = select i1 %6, float 0.000000e+00, float %res.i.0 ret float %t.0 } ; Function Attrs: noinline nounwind define dso_local i32 @__nv_ilogbf(float %a) local_unnamed_addr #70 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = bitcast float %.0 to i32 %4 = icmp ult i32 %3, 8388608 br i1 %4, label %5, label %9 5: ; preds = %__nv_fabsf.exit %6 = call i32 @llvm.ctlz.i32(i32 %3, i1 noundef false), !range !76 %7 = sub nuw nsw i32 -118, %6 %8 = icmp eq i32 %3, 0 %expo.0 = select i1 %8, i32 -2147483648, i32 %7 br label %14 9: ; preds = %__nv_fabsf.exit %10 = lshr i32 %3, 23 %11 = add nsw i32 %10, -127 %12 = icmp eq i32 %3, 2139095040 %spec.select = select i1 %12, i32 2147483647, i32 %11 %13 = icmp ugt i32 %3, 2139095040 %expo.2 = select i1 %13, i32 -2147483648, i32 %spec.select br label %14 14: ; preds = %9, %5 %expo.3 = phi i32 [ %expo.0, %5 ], [ %expo.2, %9 ] ret i32 %expo.3 } ; Function Attrs: noinline nounwind define dso_local float @__nv_logbf(float %a) local_unnamed_addr #71 { __nv_fabsf.exit: %0 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %0, 0 %1 = call float @llvm.nvvm.fabs.ftz.f(float %a) #139 %2 = call float @llvm.fabs.f32(float %a) %.0 = select i1 %.not, float %2, float %1 %3 = bitcast float %.0 to i32 %4 = icmp ult i32 %3, 8388608 br i1 %4, label %5, label %10 5: ; preds = %__nv_fabsf.exit %6 = call i32 @llvm.ctlz.i32(i32 %3, i1 noundef false), !range !76 %7 = sub nuw nsw i32 -118, %6 %8 = sitofp i32 %7 to float %9 = fcmp oeq float %a, 0.000000e+00 %res.0 = select i1 %9, float 0xFFF0000000000000, float %8 br label %16 10: ; preds = %__nv_fabsf.exit %11 = lshr i32 %3, 23 %12 = add nsw i32 %11, -127 %13 = sitofp i32 %12 to float %14 = icmp ugt i32 %3, 2139095039 %15 = fmul float %a, %a %spec.select = select i1 %14, float %15, float %13 br label %16 16: ; preds = %10, %5 %res.2 = phi float [ %res.0, %5 ], [ %spec.select, %10 ] ret float %res.2 } ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.round.d(double) #6 ; Function Attrs: argmemonly noinline nosync nounwind define internal fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %quadrant) unnamed_addr #72 { %result = alloca [5 x i64], align 8 %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %2 = and i32 %1, -2147483648 %3 = lshr i32 %1, 20 %4 = and i32 %3, 2047 %5 = icmp eq i32 %4, 2047 br i1 %5, label %86, label %6 6: ; preds = %0 %7 = add nsw i32 %4, -1024 %8 = bitcast double %a to i64 %9 = shl i64 %8, 11 %10 = or i64 %9, -9223372036854775808 %11 = lshr i32 %7, 6 %12 = sub nsw i32 15, %11 %13 = sub nsw i32 19, %11 %min.cond = icmp ult i32 %7, 128 %min = select i1 %min.cond, i32 18, i32 %13 %14 = icmp slt i32 %12, %min br i1 %14, label %.lr.ph, label %._crit_edge24 ._crit_edge24: ; preds = %6 %.pre = add nsw i32 %11, -15 br label %._crit_edge .lr.ph: ; preds = %6 %.neg13 = add nsw i32 %11, -15 br label %15 15: ; preds = %.lr.ph, %15 %q.019 = phi i32 [ %12, %.lr.ph ], [ %25, %15 ] %p.122.018 = phi i64 [ 0, %.lr.ph ], [ %21, %15 ] %16 = sext i32 %q.019 to i64 %17 = getelementptr inbounds [18 x i64], [18 x i64] addrspace(1)* @__cudart_i2opi_d, i64 0, i64 %16 %18 = load i64, i64 addrspace(1)* %17, align 8 %19 = call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, alo, ahi, blo, bhi, clo, chi;\0A\09mov.b64 {alo,ahi}, $2; \0A\09mov.b64 {blo,bhi}, $3; \0A\09mov.b64 {clo,chi}, $4; \0A\09mad.lo.cc.u32 r0, alo, blo, clo;\0A\09madc.hi.cc.u32 r1, alo, blo, chi;\0A\09madc.hi.u32 r2, alo, bhi, 0;\0A\09mad.lo.cc.u32 r1, alo, bhi, r1;\0A\09madc.hi.cc.u32 r2, ahi, blo, r2;\0A\09madc.hi.u32 r3, ahi, bhi, 0;\0A\09mad.lo.cc.u32 r1, ahi, blo, r1;\0A\09madc.lo.cc.u32 r2, ahi, bhi, r2;\0A\09addc.u32 r3, r3, 0; \0A\09mov.b64 $0, {r0,r1}; \0A\09mov.b64 $1, {r2,r3}; \0A\09}", "=l,=l,l,l,l"(i64 %18, i64 %10, i64 %p.122.018) #141, !srcloc !77 %20 = extractvalue { i64, i64 } %19, 0 %21 = extractvalue { i64, i64 } %19, 1 %22 = add i32 %.neg13, %q.019 %23 = sext i32 %22 to i64 %24 = getelementptr inbounds [5 x i64], [5 x i64]* %result, i64 0, i64 %23 store i64 %20, i64* %24, align 8, !noalias !68 %25 = add nsw i32 %q.019, 1 %exitcond.not = icmp eq i32 %25, %min br i1 %exitcond.not, label %._crit_edge, label %15, !llvm.loop !78 ._crit_edge: ; preds = %15, %._crit_edge24 %.neg.pre-phi = phi i32 [ %.pre, %._crit_edge24 ], [ %.neg13, %15 ] %p.122.0.lcssa = phi i64 [ 0, %._crit_edge24 ], [ %21, %15 ] %q.0.lcssa = phi i32 [ %12, %._crit_edge24 ], [ %min, %15 ] %26 = add nsw i32 %.neg.pre-phi, %q.0.lcssa %27 = sext i32 %26 to i64 %28 = getelementptr inbounds [5 x i64], [5 x i64]* %result, i64 0, i64 %27 store i64 %p.122.0.lcssa, i64* %28, align 8, !noalias !68 %29 = and i32 %3, 63 %30 = getelementptr inbounds [5 x i64], [5 x i64]* %result, i64 0, i64 2 %31 = load i64, i64* %30, align 8 %32 = getelementptr inbounds [5 x i64], [5 x i64]* %result, i64 0, i64 3 %33 = load i64, i64* %32, align 8 %.not = icmp eq i32 %29, 0 br i1 %.not, label %46, label %34 34: ; preds = %._crit_edge %35 = sub nuw nsw i32 64, %29 %36 = zext i32 %29 to i64 %37 = shl i64 %33, %36 %38 = zext i32 %35 to i64 %39 = lshr i64 %31, %38 %40 = or i64 %37, %39 %41 = shl i64 %31, %36 %42 = getelementptr inbounds [5 x i64], [5 x i64]* %result, i64 0, i64 1 %43 = load i64, i64* %42, align 8 %44 = lshr i64 %43, %38 %45 = or i64 %44, %41 br label %46 46: ; preds = %34, %._crit_edge %hi.0 = phi i64 [ %40, %34 ], [ %33, %._crit_edge ] %lo.0 = phi i64 [ %45, %34 ], [ %31, %._crit_edge ] %47 = lshr i64 %hi.0, 62 %48 = trunc i64 %47 to i32 %49 = call i64 @llvm.fshl.i64(i64 %hi.0, i64 %lo.0, i64 noundef 2) %50 = shl i64 %lo.0, 2 %51 = lshr i64 %49, 63 %52 = trunc i64 %51 to i32 %53 = add nuw nsw i32 %52, %48 %.not1 = icmp eq i32 %2, 0 %54 = sub nsw i32 0, %53 %spec.select = select i1 %.not1, i32 %53, i32 %54 store i32 %spec.select, i32* %quadrant, align 4, !noalias !68 %.not2 = icmp sgt i64 %49, -1 br i1 %.not2, label %60, label %55 55: ; preds = %46 %56 = call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, a0, a1, a2, a3, b0, b1, b2, b3;\0A\09mov.b64 {a0,a1}, $2;\0A\09mov.b64 {a2,a3}, $3;\0A\09mov.b64 {b0,b1}, $4;\0A\09mov.b64 {b2,b3}, $5;\0A\09sub.cc.u32 r0, a0, b0; \0A\09subc.cc.u32 r1, a1, b1; \0A\09subc.cc.u32 r2, a2, b2; \0A\09subc.u32 r3, a3, b3; \0A\09mov.b64 $0, {r0,r1};\0A\09mov.b64 $1, {r2,r3};\0A\09}", "=l,=l,l,l,l,l"(i64 0, i64 0, i64 %50, i64 %49) #141, !srcloc !79 %57 = extractvalue { i64, i64 } %56, 0 %58 = extractvalue { i64, i64 } %56, 1 %59 = xor i32 %2, -2147483648 br label %60 60: ; preds = %55, %46 %hi.1 = phi i64 [ %58, %55 ], [ %49, %46 ] %lo.1 = phi i64 [ %57, %55 ], [ %50, %46 ] %s.0 = phi i32 [ %59, %55 ], [ %2, %46 ] %ctlz = call i64 @llvm.ctlz.i64(i64 %hi.1, i1 noundef false), !range !80 %.not3 = icmp eq i64 %ctlz, 0 br i1 %.not3, label %66, label %61 61: ; preds = %60 %62 = shl i64 %hi.1, %ctlz %63 = sub nuw nsw i64 64, %ctlz %64 = lshr i64 %lo.1, %63 %65 = or i64 %64, %62 br label %66 66: ; preds = %61, %60 %hi.2 = phi i64 [ %65, %61 ], [ %hi.1, %60 ] %67 = call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, alo, ahi, blo, bhi;\0A\09mov.b64 {alo,ahi}, $2; \0A\09mov.b64 {blo,bhi}, $3; \0A\09mul.lo.u32 r0, alo, blo; \0A\09mul.hi.u32 r1, alo, blo; \0A\09mad.lo.cc.u32 r1, alo, bhi, r1;\0A\09madc.hi.u32 r2, alo, bhi, 0;\0A\09mad.lo.cc.u32 r1, ahi, blo, r1;\0A\09madc.hi.cc.u32 r2, ahi, blo, r2;\0A\09madc.hi.u32 r3, ahi, bhi, 0;\0A\09mad.lo.cc.u32 r2, ahi, bhi, r2;\0A\09addc.u32 r3, r3, 0; \0A\09mov.b64 $0, {r0,r1}; \0A\09mov.b64 $1, {r2,r3}; \0A\09}", "=l,=l,l,l"(i64 %hi.2, i64 -3958705157555305931) #141, !srcloc !81 %68 = extractvalue { i64, i64 } %67, 1 %69 = icmp sgt i64 %68, 0 br i1 %69, label %70, label %75 70: ; preds = %66 %71 = extractvalue { i64, i64 } %67, 0 %72 = call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, a0, a1, a2, a3, b0, b1, b2, b3;\0A\09mov.b64 {a0,a1}, $2;\0A\09mov.b64 {a2,a3}, $3;\0A\09mov.b64 {b0,b1}, $4;\0A\09mov.b64 {b2,b3}, $5;\0A\09add.cc.u32 r0, a0, b0; \0A\09addc.cc.u32 r1, a1, b1; \0A\09addc.cc.u32 r2, a2, b2; \0A\09addc.u32 r3, a3, b3; \0A\09mov.b64 $0, {r0,r1};\0A\09mov.b64 $1, {r2,r3};\0A\09}", "=l,=l,l,l,l,l"(i64 %71, i64 %68, i64 %71, i64 %68) #141, !srcloc !82 %73 = extractvalue { i64, i64 } %72, 1 %74 = add nuw nsw i64 %ctlz, 1 br label %75 75: ; preds = %70, %66 %hi.3 = phi i64 [ %73, %70 ], [ %68, %66 ] %e.0 = phi i64 [ %74, %70 ], [ %ctlz, %66 ] %76 = zext i32 %s.0 to i64 %77 = shl nuw i64 %76, 32 %.neg10 = mul nsw i64 %e.0, -4503599627370496 %78 = add nsw i64 %.neg10, 4602678819172646912 %79 = add i64 %hi.3, 1 %80 = lshr i64 %79, 10 %81 = add nuw nsw i64 %80, 1 %82 = lshr i64 %81, 1 %83 = add nuw nsw i64 %78, %82 %84 = or i64 %83, %77 %85 = bitcast i64 %84 to double br label %86 86: ; preds = %0, %75 %.0 = phi double [ %85, %75 ], [ %a, %0 ] ret double %.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_sin(double %a) local_unnamed_addr #73 { %q.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 350 br i1 %2, label %6, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 370 br i1 %5, label %6, label %61 6: ; preds = %3, %0 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 200 br i1 %8, label %15, label %9 9: ; preds = %6 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %11 = icmp eq i32 %10, 350 br i1 %11, label %15, label %12 12: ; preds = %9 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %14 = icmp eq i32 %13, 370 br i1 %14, label %15, label %18 15: ; preds = %12, %9, %6 %16 = call double @llvm.fabs.f64(double %a) %17 = fcmp oeq double %16, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 18: ; preds = %12 %19 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %20 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %21 = and i32 %20, 2147483647 %22 = icmp eq i32 %21, 2146435072 %23 = icmp eq i32 %19, 0 %24 = select i1 %22, i1 %23, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %18, %15 %.02.in = phi i1 [ %17, %15 ], [ %24, %18 ] br i1 %.02.in, label %25, label %27 25: ; preds = %__nv_isinfd.exit.i %26 = fmul double %a, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i 27: ; preds = %__nv_isinfd.exit.i %28 = fmul double %a, 0x3FE45F306DC9C883 %29 = call i32 @llvm.nvvm.d2i.rn(double %28) #139 store i32 %29, i32* %q.i.i, align 4, !noalias !68 %30 = sitofp i32 %29 to double %31 = fneg double %30 %32 = call double @llvm.fma.f64(double %31, double noundef 0x3FF921FB54442D18, double %a) %33 = call double @llvm.fma.f64(double %31, double noundef 0x3C91A62633145C00, double %32) %34 = call double @llvm.fma.f64(double %31, double noundef 0x397B839A252049C0, double %33) %35 = call double @llvm.fabs.f64(double %a) %36 = fcmp ult double %35, 0x41E0000000000000 br i1 %36, label %__internal_trig_reduction_kerneld.exit.i, label %37 37: ; preds = %27 %38 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre7 = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %27, %37, %25 %i.i.0 = phi i32 [ 0, %25 ], [ %.pre7, %37 ], [ %29, %27 ] %.01 = phi double [ %26, %25 ], [ %38, %37 ], [ %34, %27 ] %39 = fmul double %.01, %.01 %40 = call double @llvm.fma.f64(double %39, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %41 = call double @llvm.fma.f64(double %40, double %39, double noundef 0xBE927E4F8E06E6D9) %42 = call double @llvm.fma.f64(double %41, double %39, double noundef 0x3EFA01A019DDBCE9) %43 = call double @llvm.fma.f64(double %42, double %39, double noundef 0xBF56C16C16C15D47) %44 = call double @llvm.fma.f64(double %43, double %39, double noundef 0x3FA5555555555551) %45 = call double @llvm.fma.f64(double %44, double %39, double noundef -5.000000e-01) %46 = call double @llvm.fma.f64(double %45, double %39, double noundef 1.000000e+00) %47 = call double @llvm.fma.f64(double %39, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %48 = call double @llvm.fma.f64(double %47, double %39, double noundef 0x3EC71DE369ACE392) %49 = call double @llvm.fma.f64(double %48, double %39, double noundef 0xBF2A01A019DB62A1) %50 = call double @llvm.fma.f64(double %49, double %39, double noundef 0x3F81111111110818) %51 = call double @llvm.fma.f64(double %50, double %39, double noundef 0xBFC5555555555554) %52 = call double @llvm.fma.f64(double %51, double %39, double noundef 0.000000e+00) %53 = call double @llvm.fma.f64(double %52, double %.01, double %.01) %54 = and i32 %i.i.0, 1 %.not5 = icmp eq i32 %54, 0 %spec.select = select i1 %.not5, double %53, double %46 %55 = and i32 %i.i.0, 2 %.not6 = icmp eq i32 %55, 0 br i1 %.not6, label %__nv_sincos.exit, label %56 56: ; preds = %__internal_trig_reduction_kerneld.exit.i %57 = call i32 @llvm.nvvm.d2i.hi(double %spec.select) #139 %58 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #139 %59 = xor i32 %57, -2147483648 %60 = call double @llvm.nvvm.lohi.i2d(i32 %58, i32 %59) #139 br label %__nv_sincos.exit 61: ; preds = %3 %62 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %63 = icmp eq i32 %62, 200 br i1 %63, label %70, label %64 64: ; preds = %61 %65 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %66 = icmp eq i32 %65, 350 br i1 %66, label %70, label %67 67: ; preds = %64 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %69 = icmp eq i32 %68, 370 br i1 %69, label %70, label %73 70: ; preds = %67, %64, %61 %71 = call double @llvm.fabs.f64(double %a) %72 = fcmp oeq double %71, 0x7FF0000000000000 br label %__nv_isinfd.exit 73: ; preds = %67 %74 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %75 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %76 = and i32 %75, 2147483647 %77 = icmp eq i32 %76, 2146435072 %78 = icmp eq i32 %74, 0 %79 = select i1 %77, i1 %78, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %73, %70 %.03.in = phi i1 [ %72, %70 ], [ %79, %73 ] br i1 %.03.in, label %80, label %82 80: ; preds = %__nv_isinfd.exit %81 = fmul double %a, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit 82: ; preds = %__nv_isinfd.exit %83 = fmul double %a, 0x3FE45F306DC9C883 %84 = call i32 @llvm.nvvm.d2i.rn(double %83) #139 store i32 %84, i32* %q.i, align 4, !noalias !68 %85 = sitofp i32 %84 to double %86 = fneg double %85 %87 = call double @llvm.fma.f64(double %86, double noundef 0x3FF921FB54442D18, double %a) %88 = call double @llvm.fma.f64(double %86, double noundef 0x3C91A62633145C00, double %87) %89 = call double @llvm.fma.f64(double %86, double noundef 0x397B839A252049C0, double %88) %90 = call double @llvm.fabs.f64(double %a) %91 = fcmp ult double %90, 0x41E0000000000000 br i1 %91, label %__internal_sin_cos_kerneld.exit, label %92 92: ; preds = %82 %93 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i) #139 %.pre = load i32, i32* %q.i, align 4 br label %__internal_sin_cos_kerneld.exit __internal_sin_cos_kerneld.exit: ; preds = %82, %92, %80 %i.0 = phi i32 [ 0, %80 ], [ %.pre, %92 ], [ %84, %82 ] %z.0 = phi double [ %81, %80 ], [ %93, %92 ], [ %89, %82 ] %94 = shl i32 %i.0, 3 %95 = and i32 %94, 8 %96 = zext i32 %95 to i64 %97 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %96 %98 = fmul double %z.0, %z.0 %99 = and i32 %i.0, 1 %.not = icmp eq i32 %99, 0 %100 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %101 = getelementptr inbounds double, double addrspace(1)* %97, i64 1 %102 = load double, double addrspace(1)* %101, align 8 %103 = call double @llvm.fma.f64(double noundef %100, double %98, double %102) %104 = getelementptr inbounds double, double addrspace(1)* %97, i64 2 %105 = load double, double addrspace(1)* %104, align 8 %106 = call double @llvm.fma.f64(double %103, double %98, double %105) %107 = getelementptr inbounds double, double addrspace(1)* %97, i64 3 %108 = load double, double addrspace(1)* %107, align 8 %109 = call double @llvm.fma.f64(double %106, double %98, double %108) %110 = getelementptr inbounds double, double addrspace(1)* %97, i64 4 %111 = load double, double addrspace(1)* %110, align 8 %112 = call double @llvm.fma.f64(double %109, double %98, double %111) %113 = getelementptr inbounds double, double addrspace(1)* %97, i64 5 %114 = load double, double addrspace(1)* %113, align 8 %115 = call double @llvm.fma.f64(double %112, double %98, double %114) %116 = getelementptr inbounds double, double addrspace(1)* %97, i64 6 %117 = load double, double addrspace(1)* %116, align 8 %118 = call double @llvm.fma.f64(double %115, double %98, double %117) %119 = call double @llvm.fma.f64(double %118, double %z.0, double %z.0) %120 = call double @llvm.fma.f64(double %118, double %98, double noundef 1.000000e+00) %spec.select2 = select i1 %.not, double %119, double %120 %121 = and i32 %i.0, 2 %.not4 = icmp eq i32 %121, 0 %122 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not4, double %spec.select2, double %122 br label %__nv_sincos.exit __nv_sincos.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i, %56, %__internal_sin_cos_kerneld.exit %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit ], [ %60, %56 ], [ %spec.select, %__internal_trig_reduction_kerneld.exit.i ] ret double %.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_cos(double %a) local_unnamed_addr #74 { %q.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 350 br i1 %2, label %6, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 370 br i1 %5, label %6, label %65 6: ; preds = %3, %0 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 200 br i1 %8, label %15, label %9 9: ; preds = %6 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %11 = icmp eq i32 %10, 350 br i1 %11, label %15, label %12 12: ; preds = %9 %13 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %14 = icmp eq i32 %13, 370 br i1 %14, label %15, label %18 15: ; preds = %12, %9, %6 %16 = call double @llvm.fabs.f64(double %a) %17 = fcmp oeq double %16, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 18: ; preds = %12 %19 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %20 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %21 = and i32 %20, 2147483647 %22 = icmp eq i32 %21, 2146435072 %23 = icmp eq i32 %19, 0 %24 = select i1 %22, i1 %23, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %18, %15 %.02.in = phi i1 [ %17, %15 ], [ %24, %18 ] br i1 %.02.in, label %25, label %27 25: ; preds = %__nv_isinfd.exit.i %26 = fmul double %a, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i 27: ; preds = %__nv_isinfd.exit.i %28 = fmul double %a, 0x3FE45F306DC9C883 %29 = call i32 @llvm.nvvm.d2i.rn(double %28) #139 store i32 %29, i32* %q.i.i, align 4, !noalias !68 %30 = sitofp i32 %29 to double %31 = fneg double %30 %32 = call double @llvm.fma.f64(double %31, double noundef 0x3FF921FB54442D18, double %a) %33 = call double @llvm.fma.f64(double %31, double noundef 0x3C91A62633145C00, double %32) %34 = call double @llvm.fma.f64(double %31, double noundef 0x397B839A252049C0, double %33) %35 = call double @llvm.fabs.f64(double %a) %36 = fcmp ult double %35, 0x41E0000000000000 br i1 %36, label %__internal_trig_reduction_kerneld.exit.i, label %37 37: ; preds = %27 %38 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre7 = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %27, %37, %25 %i.i.0 = phi i32 [ 0, %25 ], [ %.pre7, %37 ], [ %29, %27 ] %.01 = phi double [ %26, %25 ], [ %38, %37 ], [ %34, %27 ] %39 = fmul double %.01, %.01 %40 = call double @llvm.fma.f64(double %39, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %41 = call double @llvm.fma.f64(double %40, double %39, double noundef 0xBE927E4F8E06E6D9) %42 = call double @llvm.fma.f64(double %41, double %39, double noundef 0x3EFA01A019DDBCE9) %43 = call double @llvm.fma.f64(double %42, double %39, double noundef 0xBF56C16C16C15D47) %44 = call double @llvm.fma.f64(double %43, double %39, double noundef 0x3FA5555555555551) %45 = call double @llvm.fma.f64(double %44, double %39, double noundef -5.000000e-01) %46 = call double @llvm.fma.f64(double %45, double %39, double noundef 1.000000e+00) %47 = call double @llvm.fma.f64(double %39, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %48 = call double @llvm.fma.f64(double %47, double %39, double noundef 0x3EC71DE369ACE392) %49 = call double @llvm.fma.f64(double %48, double %39, double noundef 0xBF2A01A019DB62A1) %50 = call double @llvm.fma.f64(double %49, double %39, double noundef 0x3F81111111110818) %51 = call double @llvm.fma.f64(double %50, double %39, double noundef 0xBFC5555555555554) %52 = call double @llvm.fma.f64(double %51, double %39, double noundef 0.000000e+00) %53 = call double @llvm.fma.f64(double %52, double %.01, double %.01) %54 = call i32 @llvm.nvvm.d2i.hi(double %53) #139 %55 = call i32 @llvm.nvvm.d2i.lo(double %53) #139 %56 = xor i32 %54, -2147483648 %57 = call double @llvm.nvvm.lohi.i2d(i32 %55, i32 %56) #139 %58 = and i32 %i.i.0, 1 %.not5 = icmp eq i32 %58, 0 %spec.select1 = select i1 %.not5, double %46, double %57 %59 = and i32 %i.i.0, 2 %.not6 = icmp eq i32 %59, 0 br i1 %.not6, label %__nv_sincos.exit, label %60 60: ; preds = %__internal_trig_reduction_kerneld.exit.i %61 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %62 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %63 = xor i32 %61, -2147483648 %64 = call double @llvm.nvvm.lohi.i2d(i32 %62, i32 %63) #139 br label %__nv_sincos.exit 65: ; preds = %3 %66 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %67 = icmp eq i32 %66, 200 br i1 %67, label %74, label %68 68: ; preds = %65 %69 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %70 = icmp eq i32 %69, 350 br i1 %70, label %74, label %71 71: ; preds = %68 %72 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %73 = icmp eq i32 %72, 370 br i1 %73, label %74, label %77 74: ; preds = %71, %68, %65 %75 = call double @llvm.fabs.f64(double %a) %76 = fcmp oeq double %75, 0x7FF0000000000000 br label %__nv_isinfd.exit 77: ; preds = %71 %78 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %79 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %80 = and i32 %79, 2147483647 %81 = icmp eq i32 %80, 2146435072 %82 = icmp eq i32 %78, 0 %83 = select i1 %81, i1 %82, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %77, %74 %.03.in = phi i1 [ %76, %74 ], [ %83, %77 ] br i1 %.03.in, label %84, label %86 84: ; preds = %__nv_isinfd.exit %85 = fmul double %a, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit 86: ; preds = %__nv_isinfd.exit %87 = fmul double %a, 0x3FE45F306DC9C883 %88 = call i32 @llvm.nvvm.d2i.rn(double %87) #139 store i32 %88, i32* %q.i, align 4, !noalias !68 %89 = sitofp i32 %88 to double %90 = fneg double %89 %91 = call double @llvm.fma.f64(double %90, double noundef 0x3FF921FB54442D18, double %a) %92 = call double @llvm.fma.f64(double %90, double noundef 0x3C91A62633145C00, double %91) %93 = call double @llvm.fma.f64(double %90, double noundef 0x397B839A252049C0, double %92) %94 = call double @llvm.fabs.f64(double %a) %95 = fcmp ult double %94, 0x41E0000000000000 br i1 %95, label %__internal_trig_reduction_kerneld.exit, label %96 96: ; preds = %86 %97 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i) #139 %.pre = load i32, i32* %q.i, align 4 br label %__internal_trig_reduction_kerneld.exit __internal_trig_reduction_kerneld.exit: ; preds = %96, %86 %98 = phi i32 [ %.pre, %96 ], [ %88, %86 ] %t.i1.0 = phi double [ %97, %96 ], [ %93, %86 ] %phi.bo = add i32 %98, 1 br label %__internal_sin_cos_kerneld.exit __internal_sin_cos_kerneld.exit: ; preds = %__internal_trig_reduction_kerneld.exit, %84 %i.0 = phi i32 [ 1, %84 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit ] %z.0 = phi double [ %85, %84 ], [ %t.i1.0, %__internal_trig_reduction_kerneld.exit ] %99 = shl i32 %i.0, 3 %100 = and i32 %99, 8 %101 = zext i32 %100 to i64 %102 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %101 %103 = fmul double %z.0, %z.0 %104 = and i32 %i.0, 1 %.not = icmp eq i32 %104, 0 %105 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %106 = getelementptr inbounds double, double addrspace(1)* %102, i64 1 %107 = load double, double addrspace(1)* %106, align 8 %108 = call double @llvm.fma.f64(double noundef %105, double %103, double %107) %109 = getelementptr inbounds double, double addrspace(1)* %102, i64 2 %110 = load double, double addrspace(1)* %109, align 8 %111 = call double @llvm.fma.f64(double %108, double %103, double %110) %112 = getelementptr inbounds double, double addrspace(1)* %102, i64 3 %113 = load double, double addrspace(1)* %112, align 8 %114 = call double @llvm.fma.f64(double %111, double %103, double %113) %115 = getelementptr inbounds double, double addrspace(1)* %102, i64 4 %116 = load double, double addrspace(1)* %115, align 8 %117 = call double @llvm.fma.f64(double %114, double %103, double %116) %118 = getelementptr inbounds double, double addrspace(1)* %102, i64 5 %119 = load double, double addrspace(1)* %118, align 8 %120 = call double @llvm.fma.f64(double %117, double %103, double %119) %121 = getelementptr inbounds double, double addrspace(1)* %102, i64 6 %122 = load double, double addrspace(1)* %121, align 8 %123 = call double @llvm.fma.f64(double %120, double %103, double %122) %124 = call double @llvm.fma.f64(double %123, double %z.0, double %z.0) %125 = call double @llvm.fma.f64(double %123, double %103, double noundef 1.000000e+00) %spec.select2 = select i1 %.not, double %124, double %125 %126 = and i32 %i.0, 2 %.not4 = icmp eq i32 %126, 0 %127 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not4, double %spec.select2, double %127 br label %__nv_sincos.exit __nv_sincos.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i, %60, %__internal_sin_cos_kerneld.exit %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit ], [ %64, %60 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i ] ret double %.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_tan(double %a) local_unnamed_addr #75 { %q.i = alloca i32, align 4 %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 200 br i1 %2, label %9, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 350 br i1 %5, label %9, label %6 6: ; preds = %3 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 370 br i1 %8, label %9, label %12 9: ; preds = %6, %3, %0 %10 = call double @llvm.fabs.f64(double %a) %11 = fcmp oeq double %10, 0x7FF0000000000000 br label %__nv_isinfd.exit 12: ; preds = %6 %13 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %14 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %15 = and i32 %14, 2147483647 %16 = icmp eq i32 %15, 2146435072 %17 = icmp eq i32 %13, 0 %18 = select i1 %16, i1 %17, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %12, %9 %.0.in = phi i1 [ %11, %9 ], [ %18, %12 ] br i1 %.0.in, label %19, label %21 19: ; preds = %__nv_isinfd.exit %20 = fmul double %a, 0.000000e+00 br label %34 21: ; preds = %__nv_isinfd.exit %22 = fmul double %a, 0x3FE45F306DC9C883 %23 = call i32 @llvm.nvvm.d2i.rn(double %22) #139 store i32 %23, i32* %q.i, align 4, !noalias !68 %24 = sitofp i32 %23 to double %25 = fneg double %24 %26 = call double @llvm.fma.f64(double %25, double noundef 0x3FF921FB54442D18, double %a) %27 = call double @llvm.fma.f64(double %25, double noundef 0x3C91A62633145C00, double %26) %28 = call double @llvm.fma.f64(double %25, double noundef 0x397B839A252049C0, double %27) %29 = call double @llvm.fabs.f64(double %a) %30 = fcmp ult double %29, 0x41E0000000000000 br i1 %30, label %__internal_trig_reduction_kerneld.exit, label %31 31: ; preds = %21 %32 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i) #139 %.pre = load i32, i32* %q.i, align 4 br label %__internal_trig_reduction_kerneld.exit __internal_trig_reduction_kerneld.exit: ; preds = %31, %21 %33 = phi i32 [ %.pre, %31 ], [ %23, %21 ] %t.i.0 = phi double [ %32, %31 ], [ %28, %21 ] %phi.bo = and i32 %33, 1 %phi.cmp = icmp eq i32 %phi.bo, 0 br label %34 34: ; preds = %__internal_trig_reduction_kerneld.exit, %19 %i.0 = phi i1 [ true, %19 ], [ %phi.cmp, %__internal_trig_reduction_kerneld.exit ] %z.0 = phi double [ %20, %19 ], [ %t.i.0, %__internal_trig_reduction_kerneld.exit ] %35 = fmul double %z.0, %z.0 %36 = call double @llvm.fma.f64(double %35, double noundef 0x3EE48DAC2799BCB9, double noundef 0xBEF9757C5B27EBB1) %37 = call double @llvm.fma.f64(double %36, double %35, double noundef 0x3F0980E90FD91E04) %38 = call double @llvm.fma.f64(double %37, double %35, double noundef 0xBEFAE2B0417D7E1D) %39 = call double @llvm.fma.f64(double %38, double %35, double noundef 0x3F119F5341BFBA57) %40 = call double @llvm.fma.f64(double %39, double %35, double noundef 0x3F15E791A00F6919) %41 = call double @llvm.fma.f64(double %40, double %35, double noundef 0x3F2FF2E7FADEC73A) %42 = call double @llvm.fma.f64(double %41, double %35, double noundef 0x3F434BC1B206DA62) %43 = call double @llvm.fma.f64(double %42, double %35, double noundef 0x3F57DB18EF2F83F9) %44 = call double @llvm.fma.f64(double %43, double %35, double noundef 0x3F6D6D2E7AE49FBC) %45 = call double @llvm.fma.f64(double %44, double %35, double noundef 0x3F8226E3A816A776) %46 = call double @llvm.fma.f64(double %45, double %35, double noundef 0x3F9664F485D25660) %47 = call double @llvm.fma.f64(double %46, double %35, double noundef 0x3FABA1BA1BABF31D) %48 = call double @llvm.fma.f64(double %47, double %35, double noundef 0x3FC11111111105D2) %49 = call double @llvm.fma.f64(double %48, double %35, double noundef 0x3FD555555555555E) %50 = fmul double %35, %49 %51 = call double @llvm.fma.f64(double %50, double %z.0, double %z.0) br i1 %i.0, label %__internal_tan_kerneld.exit, label %52 52: ; preds = %34 %53 = fsub double %51, %z.0 %54 = fneg double %53 %55 = call double @llvm.fma.f64(double %50, double %z.0, double %54) %56 = call double @llvm.nvvm.rcp.approx.ftz.d(double %51) #139 %57 = fneg double %51 %58 = call double @llvm.fma.f64(double %57, double %56, double noundef 1.000000e+00) %59 = call double @llvm.fma.f64(double %58, double %58, double %58) %60 = call double @llvm.fma.f64(double %59, double %56, double %56) %61 = fneg double %60 %62 = call double @llvm.fma.f64(double %51, double %61, double noundef 1.000000e+00) %63 = call double @llvm.fma.f64(double %61, double %55, double %62) %64 = call double @llvm.fma.f64(double %63, double %61, double %61) br label %__internal_tan_kerneld.exit __internal_tan_kerneld.exit: ; preds = %52, %34 %q.i1.0 = phi double [ %64, %52 ], [ %51, %34 ] ret double %q.i1.0 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_log(double %a) local_unnamed_addr #76 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = call i32 @llvm.nvvm.d2i.hi(double %5) #142 %7 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.0, 20 %13 = add nsw i32 %e.0, %12 %14 = and i32 %ihi.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %15) #142 %17 = icmp sgt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = call i32 @llvm.nvvm.d2i.lo(double %16) #142 %20 = call i32 @llvm.nvvm.d2i.hi(double %16) #142 %21 = add i32 %20, -1048576 %22 = call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #142 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.0, -1.000000e+00 %26 = fadd double %m.0, 1.000000e+00 %27 = call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #142 %28 = fneg double %26 %29 = call double @llvm.fma.f64(double %28, double %27, double noundef 1.000000e+00) #140 %30 = call double @llvm.fma.f64(double %29, double %29, double %29) #140 %31 = call double @llvm.fma.f64(double %30, double %27, double %27) #140 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = call double @llvm.fma.f64(double %34, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %36 = call double @llvm.fma.f64(double %35, double %34, double noundef 0x3EF3B2669F02676F) #140 %37 = call double @llvm.fma.f64(double %36, double %34, double noundef 0x3F1745CBA9AB0956) #140 %38 = call double @llvm.fma.f64(double %37, double %34, double noundef 0x3F3C71C72D1B5154) #140 %39 = call double @llvm.fma.f64(double %38, double %34, double noundef 0x3F624924923BE72D) #140 %40 = call double @llvm.fma.f64(double %39, double %34, double noundef 0x3F8999999999A3C4) #140 %41 = call double @llvm.fma.f64(double %40, double %34, double noundef 0x3FB5555555555554) #140 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = call double @llvm.fma.f64(double %44, double %25, double %43) #140 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = call double @llvm.fma.f64(double %47, double %33, double %46) #140 %49 = xor i32 %e.1, -2147483648 %50 = call double @llvm.nvvm.lohi.i2d(i32 %49, i32 noundef 1127219200) #142 %51 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %52 = fsub double %50, %51 %53 = call double @llvm.fma.f64(double %52, double noundef 0x3FE62E42FEFA39EF, double %33) #140 %54 = fneg double %52 %55 = call double @llvm.fma.f64(double %54, double noundef 0x3FE62E42FEFA39EF, double %53) #140 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = call double @llvm.fma.f64(double %52, double noundef 0x3C7ABC9E3B39803F, double %57) #140 %59 = fadd double %53, %58 br label %65 60: ; preds = %8 %61 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %62 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %65 65: ; preds = %60, %24 %q.1 = phi double [ %59, %24 ], [ %q.0, %60 ] ret double %q.1 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_log2(double %a) local_unnamed_addr #77 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = call i32 @llvm.nvvm.d2i.hi(double %5) #142 %7 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.i.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.i.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.i.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.i.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.i.0, 20 %13 = add nsw i32 %e.i.0, %12 %14 = and i32 %ihi.i.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %15) #142 %17 = icmp sgt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = call i32 @llvm.nvvm.d2i.lo(double %16) #142 %20 = call i32 @llvm.nvvm.d2i.hi(double %16) #142 %21 = add i32 %20, -1048576 %22 = call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #142 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.i.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.i.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.i.0, -1.000000e+00 %26 = fadd double %m.i.0, 1.000000e+00 %27 = call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #142 %28 = fneg double %26 %29 = call double @llvm.fma.f64(double %28, double %27, double noundef 1.000000e+00) #140 %30 = call double @llvm.fma.f64(double %29, double %29, double %29) #140 %31 = call double @llvm.fma.f64(double %30, double %27, double %27) #140 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = call double @llvm.fma.f64(double %34, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %36 = call double @llvm.fma.f64(double %35, double %34, double noundef 0x3EF3B2669F02676F) #140 %37 = call double @llvm.fma.f64(double %36, double %34, double noundef 0x3F1745CBA9AB0956) #140 %38 = call double @llvm.fma.f64(double %37, double %34, double noundef 0x3F3C71C72D1B5154) #140 %39 = call double @llvm.fma.f64(double %38, double %34, double noundef 0x3F624924923BE72D) #140 %40 = call double @llvm.fma.f64(double %39, double %34, double noundef 0x3F8999999999A3C4) #140 %41 = call double @llvm.fma.f64(double %40, double %34, double noundef 0x3FB5555555555554) #140 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = call double @llvm.fma.f64(double %44, double %25, double %43) #140 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = call double @llvm.fma.f64(double %47, double %33, double %46) #140 %49 = xor i32 %e.i.1, -2147483648 %50 = call double @llvm.nvvm.lohi.i2d(i32 %49, i32 noundef 1127219200) #142 %51 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %52 = fsub double %50, %51 %53 = call double @llvm.fma.f64(double %52, double noundef 0x3FE62E42FEFA39EF, double %33) #140 %54 = fneg double %52 %55 = call double @llvm.fma.f64(double %54, double noundef 0x3FE62E42FEFA39EF, double %53) #140 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = call double @llvm.fma.f64(double %52, double noundef 0x3C7ABC9E3B39803F, double %57) #140 %59 = fadd double %53, %58 br label %__nv_log.exit 60: ; preds = %8 %61 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %62 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.i.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %__nv_log.exit __nv_log.exit: ; preds = %60, %24 %q.i.1 = phi double [ %59, %24 ], [ %q.i.0, %60 ] %65 = fmul double %q.i.1, 0x3C7777D0FFDA0D24 %66 = call double @llvm.fma.f64(double %q.i.1, double noundef 0x3FF71547652B82FE, double %65) #140 ret double %66 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_log10(double %a) local_unnamed_addr #78 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = call i32 @llvm.nvvm.d2i.hi(double %5) #142 %7 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.i.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.i.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.i.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.i.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.i.0, 20 %13 = add nsw i32 %e.i.0, %12 %14 = and i32 %ihi.i.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %15) #142 %17 = icmp sgt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = call i32 @llvm.nvvm.d2i.lo(double %16) #142 %20 = call i32 @llvm.nvvm.d2i.hi(double %16) #142 %21 = add i32 %20, -1048576 %22 = call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #142 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.i.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.i.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.i.0, -1.000000e+00 %26 = fadd double %m.i.0, 1.000000e+00 %27 = call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #142 %28 = fneg double %26 %29 = call double @llvm.fma.f64(double %28, double %27, double noundef 1.000000e+00) #140 %30 = call double @llvm.fma.f64(double %29, double %29, double %29) #140 %31 = call double @llvm.fma.f64(double %30, double %27, double %27) #140 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = call double @llvm.fma.f64(double %34, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %36 = call double @llvm.fma.f64(double %35, double %34, double noundef 0x3EF3B2669F02676F) #140 %37 = call double @llvm.fma.f64(double %36, double %34, double noundef 0x3F1745CBA9AB0956) #140 %38 = call double @llvm.fma.f64(double %37, double %34, double noundef 0x3F3C71C72D1B5154) #140 %39 = call double @llvm.fma.f64(double %38, double %34, double noundef 0x3F624924923BE72D) #140 %40 = call double @llvm.fma.f64(double %39, double %34, double noundef 0x3F8999999999A3C4) #140 %41 = call double @llvm.fma.f64(double %40, double %34, double noundef 0x3FB5555555555554) #140 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = call double @llvm.fma.f64(double %44, double %25, double %43) #140 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = call double @llvm.fma.f64(double %47, double %33, double %46) #140 %49 = xor i32 %e.i.1, -2147483648 %50 = call double @llvm.nvvm.lohi.i2d(i32 %49, i32 noundef 1127219200) #142 %51 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %52 = fsub double %50, %51 %53 = call double @llvm.fma.f64(double %52, double noundef 0x3FE62E42FEFA39EF, double %33) #140 %54 = fneg double %52 %55 = call double @llvm.fma.f64(double %54, double noundef 0x3FE62E42FEFA39EF, double %53) #140 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = call double @llvm.fma.f64(double %52, double noundef 0x3C7ABC9E3B39803F, double %57) #140 %59 = fadd double %53, %58 br label %__nv_log.exit 60: ; preds = %8 %61 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %62 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.i.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %__nv_log.exit __nv_log.exit: ; preds = %60, %24 %q.i.1 = phi double [ %59, %24 ], [ %q.i.0, %60 ] %65 = fmul double %q.i.1, 0x3C695355BAAAFAD3 %66 = call double @llvm.fma.f64(double %q.i.1, double noundef 0x3FDBCB7B1526E50E, double %65) #140 ret double %66 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_log1p(double %a) local_unnamed_addr #79 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = bitcast i32 %1 to float %3 = fcmp olt float %2, 0x3FFCAAAAA0000000 %4 = fcmp ogt float %2, 0xBFFB333320000000 %or.cond = and i1 %3, %4 br i1 %or.cond, label %5, label %22 5: ; preds = %0 %6 = fadd double %a, 2.000000e+00 %7 = fdiv double %a, %6 %8 = fneg double %a %9 = fmul double %7, %8 %10 = fadd double %9, %a %11 = fmul double %10, %10 %12 = call double @llvm.fma.f64(double %11, double noundef 0x3EB372FB2FBE14B5, double noundef 0x3ED087FFCEB2DC44) #140 %13 = call double @llvm.fma.f64(double %12, double %11, double noundef 0x3EF3B9FF890F468C) #140 %14 = call double @llvm.fma.f64(double %13, double %11, double noundef 0x3F17457EFD51BAF8) #140 %15 = call double @llvm.fma.f64(double %14, double %11, double noundef 0x3F3C71C8DE3CE825) #140 %16 = call double @llvm.fma.f64(double %15, double %11, double noundef 0x3F6249248FA4661F) #140 %17 = call double @llvm.fma.f64(double %16, double %11, double noundef 0x3F899999999D70C4) #140 %18 = call double @llvm.fma.f64(double %17, double %11, double noundef 0x3FB5555555555462) #140 %19 = fmul double %11, %18 %20 = call double @llvm.fma.f64(double %19, double %10, double %9) #140 %21 = fadd double %20, %a br label %__nv_log.exit 22: ; preds = %0 %23 = fadd double %a, 1.000000e+00 %24 = call i32 @llvm.nvvm.d2i.hi(double %23) #142 %25 = call i32 @llvm.nvvm.d2i.lo(double %23) #142 %26 = icmp slt i32 %24, 1048576 br i1 %26, label %27, label %31 27: ; preds = %22 %28 = fmul double %23, 0x4350000000000000 %29 = call i32 @llvm.nvvm.d2i.hi(double %28) #142 %30 = call i32 @llvm.nvvm.d2i.lo(double %28) #142 br label %31 31: ; preds = %27, %22 %.0 = phi double [ %28, %27 ], [ %23, %22 ] %ihi.i.0 = phi i32 [ %29, %27 ], [ %24, %22 ] %ilo.i.0 = phi i32 [ %30, %27 ], [ %25, %22 ] %e.i.0 = phi i32 [ -1077, %27 ], [ -1023, %22 ] %32 = add i32 %ihi.i.0, -1 %33 = icmp ult i32 %32, 2146435071 br i1 %33, label %34, label %83 34: ; preds = %31 %35 = lshr i32 %ihi.i.0, 20 %36 = add nsw i32 %e.i.0, %35 %37 = and i32 %ihi.i.0, -2146435073 %38 = or i32 %37, 1072693248 %39 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %38) #142 %40 = icmp sgt i32 %38, 1073127582 br i1 %40, label %41, label %47 41: ; preds = %34 %42 = call i32 @llvm.nvvm.d2i.lo(double %39) #142 %43 = call i32 @llvm.nvvm.d2i.hi(double %39) #142 %44 = add i32 %43, -1048576 %45 = call double @llvm.nvvm.lohi.i2d(i32 %42, i32 %44) #142 %46 = add nsw i32 %36, 1 br label %47 47: ; preds = %41, %34 %m.i.0 = phi double [ %45, %41 ], [ %39, %34 ] %e.i.1 = phi i32 [ %46, %41 ], [ %36, %34 ] %48 = fadd double %m.i.0, -1.000000e+00 %49 = fadd double %m.i.0, 1.000000e+00 %50 = call double @llvm.nvvm.rcp.approx.ftz.d(double %49) #142 %51 = fneg double %49 %52 = call double @llvm.fma.f64(double %51, double %50, double noundef 1.000000e+00) #140 %53 = call double @llvm.fma.f64(double %52, double %52, double %52) #140 %54 = call double @llvm.fma.f64(double %53, double %50, double %50) #140 %55 = fmul double %48, %54 %56 = fadd double %55, %55 %57 = fmul double %56, %56 %58 = call double @llvm.fma.f64(double %57, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %59 = call double @llvm.fma.f64(double %58, double %57, double noundef 0x3EF3B2669F02676F) #140 %60 = call double @llvm.fma.f64(double %59, double %57, double noundef 0x3F1745CBA9AB0956) #140 %61 = call double @llvm.fma.f64(double %60, double %57, double noundef 0x3F3C71C72D1B5154) #140 %62 = call double @llvm.fma.f64(double %61, double %57, double noundef 0x3F624924923BE72D) #140 %63 = call double @llvm.fma.f64(double %62, double %57, double noundef 0x3F8999999999A3C4) #140 %64 = call double @llvm.fma.f64(double %63, double %57, double noundef 0x3FB5555555555554) #140 %65 = fsub double %48, %56 %66 = fmul double %65, 2.000000e+00 %67 = fneg double %56 %68 = call double @llvm.fma.f64(double %67, double %48, double %66) #140 %69 = fmul double %54, %68 %70 = fmul double %57, %64 %71 = call double @llvm.fma.f64(double %70, double %56, double %69) #140 %72 = xor i32 %e.i.1, -2147483648 %73 = call double @llvm.nvvm.lohi.i2d(i32 %72, i32 noundef 1127219200) #142 %74 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %75 = fsub double %73, %74 %76 = call double @llvm.fma.f64(double %75, double noundef 0x3FE62E42FEFA39EF, double %56) #140 %77 = fneg double %75 %78 = call double @llvm.fma.f64(double %77, double noundef 0x3FE62E42FEFA39EF, double %76) #140 %79 = fsub double %78, %56 %80 = fsub double %71, %79 %81 = call double @llvm.fma.f64(double %75, double noundef 0x3C7ABC9E3B39803F, double %80) #140 %82 = fadd double %76, %81 br label %__nv_log.exit 83: ; preds = %31 %84 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %85 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %86 = bitcast i32 %85 to float %87 = fcmp oeq float %86, 0.000000e+00 %q.i.0 = select i1 %87, double 0xFFF0000000000000, double %84 br label %__nv_log.exit __nv_log.exit: ; preds = %47, %83, %5 %t.0 = phi double [ %21, %5 ], [ %82, %47 ], [ %q.i.0, %83 ] ret double %t.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_exp(double %a) local_unnamed_addr #80 { __internal_fast_icmp_abs_lt.exit3: %0 = call double @llvm.fma.f64(double %a, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %1 = call i32 @llvm.nvvm.d2i.lo(double %0) #142 %2 = fadd double %0, 0xC338000000000000 %3 = call double @llvm.fma.f64(double %2, double noundef 0xBFE62E42FEFA39EF, double %a) #140 %4 = call double @llvm.fma.f64(double %2, double noundef 0xBC7ABC9E3B39803F, double %3) #140 %5 = call double @llvm.fma.f64(double %4, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %6 = call double @llvm.fma.f64(double %5, double %4, double noundef 0x3EC71DEE62401315) #140 %7 = call double @llvm.fma.f64(double %6, double %4, double noundef 0x3EFA01997C89EB71) #140 %8 = call double @llvm.fma.f64(double %7, double %4, double noundef 0x3F2A01A014761F65) #140 %9 = call double @llvm.fma.f64(double %8, double %4, double noundef 0x3F56C16C1852B7AF) #140 %10 = call double @llvm.fma.f64(double %9, double %4, double noundef 0x3F81111111122322) #140 %11 = call double @llvm.fma.f64(double %10, double %4, double noundef 0x3FA55555555502A1) #140 %12 = call double @llvm.fma.f64(double %11, double %4, double noundef 0x3FC5555555555511) #140 %13 = call double @llvm.fma.f64(double %12, double %4, double noundef 0x3FE000000000000B) #140 %14 = call double @llvm.fma.f64(double %13, double %4, double noundef 1.000000e+00) #140 %15 = call double @llvm.fma.f64(double %14, double %4, double noundef 1.000000e+00) #140 %16 = call i32 @llvm.nvvm.d2i.lo(double %15) #142 %17 = call i32 @llvm.nvvm.d2i.hi(double %15) #142 %18 = shl i32 %1, 20 %19 = add i32 %17, %18 %20 = call double @llvm.nvvm.lohi.i2d(i32 %16, i32 %19) #142 %21 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %22 = bitcast i32 %21 to float %23 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %23, 0 %24 = call float @llvm.nvvm.fabs.ftz.f(float %22) #139 %25 = call float @llvm.fabs.f32(float %22) %.01 = select i1 %.not, float %25, float %24 %26 = fcmp olt float %.01, 0x4010C46560000000 br i1 %26, label %41, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit3 %27 = fcmp olt double %a, 0.000000e+00 %28 = fadd double %a, 0x7FF0000000000000 %z.0 = select i1 %27, double 0.000000e+00, double %28 %29 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %29, 0 %.0 = select i1 %.not1, float %25, float %24 %30 = fcmp olt float %.0, 0x4010E90000000000 br i1 %30, label %31, label %41 31: ; preds = %__internal_fast_icmp_abs_lt.exit %32 = sdiv i32 %1, 2 %33 = shl i32 %32, 20 %34 = add i32 %17, %33 %35 = call double @llvm.nvvm.lohi.i2d(i32 %16, i32 %34) #139 %36 = sub nsw i32 %1, %32 %37 = shl i32 %36, 20 %38 = add nsw i32 %37, 1072693248 %39 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %38) #139 %40 = fmul double %39, %35 br label %41 41: ; preds = %__internal_fast_icmp_abs_lt.exit, %31, %__internal_fast_icmp_abs_lt.exit3 %z.2 = phi double [ %20, %__internal_fast_icmp_abs_lt.exit3 ], [ %40, %31 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: noinline nounwind define dso_local double @__nv_exp2(double %a) local_unnamed_addr #81 { __internal_fast_icmp_abs_lt.exit4: %0 = fadd double %a, 0x4338000000000000 %1 = fadd double %0, 0xC338000000000000 %2 = call i32 @llvm.nvvm.d2i.lo(double %0) #142 %3 = fsub double %a, %1 %4 = fmul double %3, 0x3C7ABC9E3B39803F %5 = call double @llvm.fma.f64(double %3, double noundef 0x3FE62E42FEFA39EF, double %4) #140 %6 = call double @llvm.fma.f64(double %5, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %7 = call double @llvm.fma.f64(double %6, double %5, double noundef 0x3EC71DEE62401315) #140 %8 = call double @llvm.fma.f64(double %7, double %5, double noundef 0x3EFA01997C89EB71) #140 %9 = call double @llvm.fma.f64(double %8, double %5, double noundef 0x3F2A01A014761F65) #140 %10 = call double @llvm.fma.f64(double %9, double %5, double noundef 0x3F56C16C1852B7AF) #140 %11 = call double @llvm.fma.f64(double %10, double %5, double noundef 0x3F81111111122322) #140 %12 = call double @llvm.fma.f64(double %11, double %5, double noundef 0x3FA55555555502A1) #140 %13 = call double @llvm.fma.f64(double %12, double %5, double noundef 0x3FC5555555555511) #140 %14 = call double @llvm.fma.f64(double %13, double %5, double noundef 0x3FE000000000000B) #140 %15 = call double @llvm.fma.f64(double %14, double %5, double noundef 1.000000e+00) #140 %16 = call double @llvm.fma.f64(double %15, double %5, double noundef 1.000000e+00) #140 %17 = call i32 @llvm.nvvm.d2i.lo(double %16) #142 %18 = call i32 @llvm.nvvm.d2i.hi(double %16) #142 %19 = shl i32 %2, 20 %20 = add i32 %18, %19 %21 = call double @llvm.nvvm.lohi.i2d(i32 %17, i32 %20) #142 %22 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %23 = bitcast i32 %22 to float %24 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %24, 0 %25 = call float @llvm.nvvm.fabs.ftz.f(float %23) #139 %26 = call float @llvm.fabs.f32(float %23) %.01 = select i1 %.not, float %26, float %25 %27 = fcmp olt float %.01, 0x4011FE0000000000 br i1 %27, label %45, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit4 %28 = icmp slt i32 %22, 0 %29 = select i1 %28, double 0.000000e+00, double 0x7FF0000000000000 %30 = call double @llvm.fabs.f64(double %a) %31 = fcmp ugt double %30, 0x7FF0000000000000 %32 = fadd double %a, %a %z.0 = select i1 %31, double %32, double %29 %33 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %33, 0 %.0 = select i1 %.not1, float %26, float %25 %34 = fcmp olt float %.0, 0x4012198000000000 br i1 %34, label %35, label %45 35: ; preds = %__internal_fast_icmp_abs_lt.exit %36 = sdiv i32 %2, 2 %37 = shl i32 %36, 20 %38 = add i32 %18, %37 %39 = call double @llvm.nvvm.lohi.i2d(i32 %17, i32 %38) #139 %40 = sub nsw i32 %2, %36 %41 = shl i32 %40, 20 %42 = add nsw i32 %41, 1072693248 %43 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %42) #139 %44 = fmul double %43, %39 br label %45 45: ; preds = %__internal_fast_icmp_abs_lt.exit, %35, %__internal_fast_icmp_abs_lt.exit4 %z.2 = phi double [ %21, %__internal_fast_icmp_abs_lt.exit4 ], [ %44, %35 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: noinline nounwind define dso_local double @__nv_exp10(double %a) local_unnamed_addr #82 { __internal_fast_icmp_abs_lt.exit4: %0 = call double @llvm.fma.f64(double %a, double noundef 0x400A934F0979A371, double noundef 0x4338000000000000) #140 %1 = call i32 @llvm.nvvm.d2i.lo(double %0) #142 %2 = fadd double %0, 0xC338000000000000 %3 = call double @llvm.fma.f64(double %2, double noundef 0xBFD34413509F79FF, double %a) #140 %4 = call double @llvm.fma.f64(double %2, double noundef 0x3C49DC1DA994FD21, double %3) #140 %5 = fmul double %4, 0xBCAF48AD494EA3E9 %6 = call double @llvm.fma.f64(double %4, double noundef 0x40026BB1BBB55516, double %5) #140 %7 = call double @llvm.fma.f64(double %6, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %8 = call double @llvm.fma.f64(double %7, double %6, double noundef 0x3EC71DEE62401315) #140 %9 = call double @llvm.fma.f64(double %8, double %6, double noundef 0x3EFA01997C89EB71) #140 %10 = call double @llvm.fma.f64(double %9, double %6, double noundef 0x3F2A01A014761F65) #140 %11 = call double @llvm.fma.f64(double %10, double %6, double noundef 0x3F56C16C1852B7AF) #140 %12 = call double @llvm.fma.f64(double %11, double %6, double noundef 0x3F81111111122322) #140 %13 = call double @llvm.fma.f64(double %12, double %6, double noundef 0x3FA55555555502A1) #140 %14 = call double @llvm.fma.f64(double %13, double %6, double noundef 0x3FC5555555555511) #140 %15 = call double @llvm.fma.f64(double %14, double %6, double noundef 0x3FE000000000000B) #140 %16 = call double @llvm.fma.f64(double %15, double %6, double noundef 1.000000e+00) #140 %17 = call double @llvm.fma.f64(double %16, double %6, double noundef 1.000000e+00) #140 %18 = call i32 @llvm.nvvm.d2i.lo(double %17) #142 %19 = call i32 @llvm.nvvm.d2i.hi(double %17) #142 %20 = shl i32 %1, 20 %21 = add i32 %19, %20 %22 = call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %21) #142 %23 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %24 = bitcast i32 %23 to float %25 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %25, 0 %26 = call float @llvm.nvvm.fabs.ftz.f(float %24) #139 %27 = call float @llvm.fabs.f32(float %24) %.01 = select i1 %.not, float %27, float %26 %28 = fcmp olt float %.01, 0x400E674E20000000 br i1 %28, label %46, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit4 %29 = icmp slt i32 %23, 0 %30 = select i1 %29, double 0.000000e+00, double 0x7FF0000000000000 %31 = call double @llvm.fabs.f64(double %a) %32 = fcmp ugt double %31, 0x7FF0000000000000 %33 = fadd double %a, %a %z.0 = select i1 %32, double %33, double %30 %34 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %34, 0 %.0 = select i1 %.not1, float %27, float %26 %35 = fcmp olt float %.0, 0x400E873700000000 br i1 %35, label %36, label %46 36: ; preds = %__internal_fast_icmp_abs_lt.exit %37 = sdiv i32 %1, 2 %38 = shl i32 %37, 20 %39 = add i32 %19, %38 %40 = call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %39) #139 %41 = sub nsw i32 %1, %37 %42 = shl i32 %41, 20 %43 = add nsw i32 %42, 1072693248 %44 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %43) #139 %45 = fmul double %44, %40 br label %46 46: ; preds = %__internal_fast_icmp_abs_lt.exit, %36, %__internal_fast_icmp_abs_lt.exit4 %z.2 = phi double [ %22, %__internal_fast_icmp_abs_lt.exit4 ], [ %45, %36 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_expm1(double %a) local_unnamed_addr #83 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = bitcast i32 %1 to float %3 = fcmp olt float %2, 0x4010C5C860000000 %4 = fcmp ogt float %2, 0xC009500000000000 %or.cond = and i1 %3, %4 br i1 %or.cond, label %__internal_expm1_scaled.exit, label %32 __internal_expm1_scaled.exit: ; preds = %0 %5 = call double @llvm.fma.f64(double %a, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %6 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 %7 = fadd double %5, 0xC338000000000000 %8 = call double @llvm.fma.f64(double %7, double noundef 0xBFE62E42FEFA39EF, double %a) #140 %9 = call double @llvm.fma.f64(double %7, double noundef 0xBC7ABC9E3B39803F, double %8) #140 %10 = shl i32 %1, 1 %11 = icmp ult i32 %10, 2142496327 %spec.select = select i1 %11, double %a, double %9 %spec.select2 = select i1 %11, i32 0, i32 %6 %12 = call double @llvm.fma.f64(double %spec.select, double noundef 0x3E21F4076ACD15B6, double noundef 0x3E5AF86D8EBD13CD) #140 %13 = call double @llvm.fma.f64(double %12, double %spec.select, double noundef 0x3E927E5092BA033D) #140 %14 = call double @llvm.fma.f64(double %13, double %spec.select, double noundef 0x3EC71DDE6C5F9DA1) #140 %15 = call double @llvm.fma.f64(double %14, double %spec.select, double noundef 0x3EFA01A018D034E6) #140 %16 = call double @llvm.fma.f64(double %15, double %spec.select, double noundef 0x3F2A01A01B3B6940) #140 %17 = call double @llvm.fma.f64(double %16, double %spec.select, double noundef 0x3F56C16C16C1B5DD) #140 %18 = call double @llvm.fma.f64(double %17, double %spec.select, double noundef 0x3F8111111110F74D) #140 %19 = call double @llvm.fma.f64(double %18, double %spec.select, double noundef 0x3FA555555555554D) #140 %20 = call double @llvm.fma.f64(double %19, double %spec.select, double noundef 0x3FC5555555555557) #140 %21 = call double @llvm.fma.f64(double %20, double %spec.select, double noundef 5.000000e-01) #140 %22 = fmul double %spec.select, %21 %23 = call double @llvm.fma.f64(double %22, double %spec.select, double %spec.select) #140 %24 = icmp eq i32 %spec.select2, 1024 %spec.select2.op = shl i32 %spec.select2, 20 %spec.select2.op.op = add i32 %spec.select2.op, 1072693248 %25 = select i1 %24, i32 2145386496, i32 %spec.select2.op.op %26 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %25) #142 %27 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 noundef 1072693248) #142 %28 = fsub double %26, %27 %29 = call double @llvm.fma.f64(double %23, double %26, double %28) #140 %30 = select i1 %24, double %29, double -0.000000e+00 %t.i.0 = fadd double %29, %30 %31 = icmp eq i32 %10, 0 %t.i.1 = select i1 %31, double %spec.select, double %t.i.0 br label %38 32: ; preds = %0 %33 = icmp slt i32 %1, 0 %34 = select i1 %33, double -1.000000e+00, double 0x7FF0000000000000 %35 = call double @llvm.fabs.f64(double %a) #140 %36 = fcmp ugt double %35, 0x7FF0000000000000 %37 = fadd double %a, %a %t.0 = select i1 %36, double %37, double %34 br label %38 38: ; preds = %32, %__internal_expm1_scaled.exit %t.1 = phi double [ %t.i.1, %__internal_expm1_scaled.exit ], [ %t.0, %32 ] ret double %t.1 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_cosh(double %a) local_unnamed_addr #84 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2147483647 %3 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %4 = call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #142 %5 = call i32 @llvm.nvvm.d2i.hi(double %4) #142 %6 = icmp ult i32 %5, 1082536911 br i1 %6, label %7, label %36 7: ; preds = %0 %8 = call double @llvm.fma.f64(double %4, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %9 = call i32 @llvm.nvvm.d2i.lo(double %8) #142 %10 = fadd double %8, 0xC338000000000000 %11 = call double @llvm.fma.f64(double %10, double noundef 0xBFE62E42FEFA39EF, double %4) #140 %12 = call double @llvm.fma.f64(double %10, double noundef 0xBC7ABC9E3B39803F, double %11) #140 %13 = call double @llvm.fma.f64(double %12, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %14 = call double @llvm.fma.f64(double %13, double %12, double noundef 0x3EC71DEE62401315) #140 %15 = call double @llvm.fma.f64(double %14, double %12, double noundef 0x3EFA01997C89EB71) #140 %16 = call double @llvm.fma.f64(double %15, double %12, double noundef 0x3F2A01A014761F65) #140 %17 = call double @llvm.fma.f64(double %16, double %12, double noundef 0x3F56C16C1852B7AF) #140 %18 = call double @llvm.fma.f64(double %17, double %12, double noundef 0x3F81111111122322) #140 %19 = call double @llvm.fma.f64(double %18, double %12, double noundef 0x3FA55555555502A1) #140 %20 = call double @llvm.fma.f64(double %19, double %12, double noundef 0x3FC5555555555511) #140 %21 = call double @llvm.fma.f64(double %20, double %12, double noundef 0x3FE000000000000B) #140 %22 = call double @llvm.fma.f64(double %21, double %12, double noundef 1.000000e+00) #140 %23 = call double @llvm.fma.f64(double %22, double %12, double noundef 1.000000e+00) #140 %24 = call i32 @llvm.nvvm.d2i.lo(double %23) #142 %25 = call i32 @llvm.nvvm.d2i.hi(double %23) #142 %26 = shl i32 %9, 20 %27 = add i32 %26, -2097152 %28 = add i32 %27, %25 %29 = call double @llvm.nvvm.lohi.i2d(i32 %24, i32 %28) #142 %30 = call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #142 %31 = fneg double %29 %32 = call double @llvm.fma.f64(double %31, double %30, double noundef 1.000000e+00) #140 %33 = call double @llvm.fma.f64(double %32, double %32, double %32) #140 %34 = call double @llvm.fma.f64(double %33, double %30, double %30) #140 %35 = call double @llvm.fma.f64(double %34, double noundef 6.250000e-02, double %29) #140 br label %38 36: ; preds = %0 %37 = fcmp ole double %a, 0x7FF0000000000000 %.0 = select i1 %37, double 0x7FF0000000000000, double %a br label %38 38: ; preds = %36, %7 %.1 = phi double [ %35, %7 ], [ %.0, %36 ] %39 = fadd double %.1, %.1 ret double %39 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_sinh(double %a) local_unnamed_addr #85 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2147483647 %3 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %4 = call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #142 %5 = icmp ult i32 %2, 1072693248 br i1 %5, label %6, label %__internal_expm1_scaled.exit 6: ; preds = %0 %7 = fmul double %4, %4 %8 = call double @llvm.fma.f64(double %7, double noundef 0x3D6B4C75AB274C53, double noundef 0x3DE611A561D87DEF) #140 %9 = call double @llvm.fma.f64(double %8, double %7, double noundef 0x3E5AE64671B18F5C) #140 %10 = call double @llvm.fma.f64(double %9, double %7, double noundef 0x3EC71DE3A465B1E4) #140 %11 = call double @llvm.fma.f64(double %10, double %7, double noundef 0x3F2A01A01A02899D) #140 %12 = call double @llvm.fma.f64(double %11, double %7, double noundef 0x3F811111111110A6) #140 %13 = call double @llvm.fma.f64(double %12, double %7, double noundef 0x3FC5555555555556) #140 %14 = fmul double %7, %13 %15 = call double @llvm.fma.f64(double %14, double %4, double %4) #140 br label %49 __internal_expm1_scaled.exit: ; preds = %0 %16 = call i32 @llvm.nvvm.d2i.hi(double %4) #142 %17 = call double @llvm.fma.f64(double %4, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %18 = call i32 @llvm.nvvm.d2i.lo(double %17) #142 %19 = add nsw i32 %18, -1 %20 = fadd double %17, 0xC338000000000000 %21 = call double @llvm.fma.f64(double %20, double noundef 0xBFE62E42FEFA39EF, double %4) #140 %22 = call double @llvm.fma.f64(double %20, double noundef 0xBC7ABC9E3B39803F, double %21) #140 %23 = shl i32 %16, 1 %24 = icmp ult i32 %23, 2142496327 %spec.select = select i1 %24, double %4, double %22 %spec.select1 = select i1 %24, i32 0, i32 %19 %25 = call double @llvm.fma.f64(double %spec.select, double noundef 0x3E21F4076ACD15B6, double noundef 0x3E5AF86D8EBD13CD) #140 %26 = call double @llvm.fma.f64(double %25, double %spec.select, double noundef 0x3E927E5092BA033D) #140 %27 = call double @llvm.fma.f64(double %26, double %spec.select, double noundef 0x3EC71DDE6C5F9DA1) #140 %28 = call double @llvm.fma.f64(double %27, double %spec.select, double noundef 0x3EFA01A018D034E6) #140 %29 = call double @llvm.fma.f64(double %28, double %spec.select, double noundef 0x3F2A01A01B3B6940) #140 %30 = call double @llvm.fma.f64(double %29, double %spec.select, double noundef 0x3F56C16C16C1B5DD) #140 %31 = call double @llvm.fma.f64(double %30, double %spec.select, double noundef 0x3F8111111110F74D) #140 %32 = call double @llvm.fma.f64(double %31, double %spec.select, double noundef 0x3FA555555555554D) #140 %33 = call double @llvm.fma.f64(double %32, double %spec.select, double noundef 0x3FC5555555555557) #140 %34 = call double @llvm.fma.f64(double %33, double %spec.select, double noundef 5.000000e-01) #140 %35 = fmul double %spec.select, %34 %36 = call double @llvm.fma.f64(double %35, double %spec.select, double %spec.select) #140 %37 = icmp eq i32 %spec.select1, 1024 %spec.select1.op = shl i32 %spec.select1, 20 %spec.select1.op.op = add i32 %spec.select1.op, 1072693248 %38 = select i1 %37, i32 2145386496, i32 %spec.select1.op.op %39 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %38) #142 %40 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 noundef 1071644672) #142 %41 = fsub double %39, %40 %42 = call double @llvm.fma.f64(double %36, double %39, double %41) #140 %43 = select i1 %37, double %42, double -0.000000e+00 %t.i.0 = fadd double %42, %43 %44 = icmp eq i32 %23, 0 %t.i.1 = select i1 %44, double %spec.select, double %t.i.0 %45 = call double @llvm.fma.f64(double %t.i.1, double noundef 2.000000e+00, double noundef 1.000000e+00) #140 %46 = fdiv double %t.i.1, %45 %47 = fadd double %t.i.1, %46 %48 = fcmp oge double %4, 0x408633CE8FB9F87E %z.0 = select i1 %48, double 0x7FF0000000000000, double %47 br label %49 49: ; preds = %__internal_expm1_scaled.exit, %6 %z.1 = phi double [ %15, %6 ], [ %z.0, %__internal_expm1_scaled.exit ] %50 = call i32 @llvm.nvvm.d2i.lo(double %z.1) #142 %51 = call i32 @llvm.nvvm.d2i.hi(double %z.1) #142 %52 = and i32 %1, -2147483648 %53 = or i32 %51, %52 %54 = call double @llvm.nvvm.lohi.i2d(i32 %50, i32 %53) #142 ret double %54 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_tanh(double %a) local_unnamed_addr #86 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2147483647 %3 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %4 = call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #142 %5 = fcmp ult double %4, 0x3FE4F92224DD2F1A br i1 %5, label %43, label %__internal_mexpm1.exit __internal_mexpm1.exit: ; preds = %0 %6 = fmul double %4, 2.000000e+00 %7 = fptrunc double %6 to float %8 = fmul float %7, 0x3FF7154760000000 %9 = call float @llvm.round.f32(float %8) #140 %10 = fpext float %9 to double %11 = fneg double %10 %12 = call double @llvm.fma.f64(double %11, double noundef 0x3FE62E42FEFA39EF, double %6) #140 %13 = call double @llvm.fma.f64(double %12, double noundef 0x3E5AE904A4741B81, double noundef 0x3E928A27F89B6999) #140 %14 = call double @llvm.fma.f64(double %13, double %12, double noundef 0x3EC71DE715FF7E07) #140 %15 = call double @llvm.fma.f64(double %14, double %12, double noundef 0x3EFA019A6B0AC45A) #140 %16 = call double @llvm.fma.f64(double %15, double %12, double noundef 0x3F2A01A017EED94F) #140 %17 = call double @llvm.fma.f64(double %16, double %12, double noundef 0x3F56C16C17F2A71B) #140 %18 = call double @llvm.fma.f64(double %17, double %12, double noundef 0x3F811111111173C4) #140 %19 = call double @llvm.fma.f64(double %18, double %12, double noundef 0x3FA555555555211A) #140 %20 = call double @llvm.fma.f64(double %19, double %12, double noundef 0x3FC5555555555540) #140 %21 = call double @llvm.fma.f64(double %20, double %12, double noundef 0x3FE0000000000005) #140 %22 = fmul double %12, %21 %23 = call double @llvm.fma.f64(double %22, double %12, double %12) #140 %24 = call float @llvm.nvvm.ex2.approx.ftz.f(float %9) #142 %25 = fpext float %24 to double %26 = fsub double 1.000000e+00, %25 %27 = fneg double %23 %28 = call double @llvm.fma.f64(double %27, double %25, double %26) #140 %29 = fsub double 2.000000e+00, %28 %30 = call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #142 %31 = fneg double %29 %32 = call double @llvm.fma.f64(double %31, double %30, double noundef 1.000000e+00) #140 %33 = call double @llvm.fma.f64(double %32, double %32, double %32) #140 %34 = call double @llvm.fma.f64(double %33, double %30, double %30) #140 %35 = fneg double %34 %36 = call double @llvm.fma.f64(double %35, double noundef 2.000000e+00, double noundef 1.000000e+00) #140 %37 = icmp ugt i32 %2, 1077088193 %r.0 = select i1 %37, double 1.000000e+00, double %36 %38 = call i32 @llvm.nvvm.d2i.lo(double %r.0) #142 %39 = call i32 @llvm.nvvm.d2i.hi(double %r.0) #142 %40 = and i32 %1, -2147483648 %41 = or i32 %39, %40 %42 = call double @llvm.nvvm.lohi.i2d(i32 %38, i32 %41) #142 br label %57 43: ; preds = %0 %44 = fmul double %a, %a %45 = call double @llvm.fma.f64(double %44, double noundef 0xBEF0BC46E2F5E964, double noundef 0x3F14359F420AFC3D) #140 %46 = call double @llvm.fma.f64(double %45, double %44, double noundef 0xBF2DF9F0728C5D84) #140 %47 = call double @llvm.fma.f64(double %46, double %44, double noundef 0x3F4337D1CEC4F033) #140 %48 = call double @llvm.fma.f64(double %47, double %44, double noundef 0xBF57D6E9674335B3) #140 %49 = call double @llvm.fma.f64(double %48, double %44, double noundef 0x3F6D6D000D7AAD3D) #140 %50 = call double @llvm.fma.f64(double %49, double %44, double noundef 0xBF8226E1F3CF1EF5) #140 %51 = call double @llvm.fma.f64(double %50, double %44, double noundef 0x3F9664F47EC0C8CF) #140 %52 = call double @llvm.fma.f64(double %51, double %44, double noundef 0xBFABA1BA1B80AB40) #140 %53 = call double @llvm.fma.f64(double %52, double %44, double noundef 0x3FC111111110FA4A) #140 %54 = call double @llvm.fma.f64(double %53, double %44, double noundef 0xBFD5555555555550) #140 %55 = call double @llvm.fma.f64(double %54, double %44, double noundef 0.000000e+00) #140 %56 = call double @llvm.fma.f64(double %55, double %a, double %a) #140 br label %57 57: ; preds = %43, %__internal_mexpm1.exit %r.1 = phi double [ %42, %__internal_mexpm1.exit ], [ %56, %43 ] ret double %r.1 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_atan2(double %a, double %b) local_unnamed_addr #87 { %1 = call double @llvm.fabs.f64(double %b) #140 %2 = call double @llvm.fabs.f64(double %a) #140 %3 = fcmp oeq double %b, 0.000000e+00 %4 = fcmp oeq double %a, 0.000000e+00 %or.cond = select i1 %3, i1 %4, i1 false br i1 %or.cond, label %5, label %15 5: ; preds = %0 %6 = call i32 @llvm.nvvm.d2i.hi(double %b) #142 %7 = icmp slt i32 %6, 0 %8 = select i1 %7, double 0x400921FB54442D18, double 0.000000e+00 %9 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %10 = call i32 @llvm.nvvm.d2i.lo(double noundef %8) #142 %11 = call i32 @llvm.nvvm.d2i.hi(double noundef %8) #142 %12 = and i32 %9, -2147483648 %13 = or i32 %11, %12 %14 = call double @llvm.nvvm.lohi.i2d(i32 %10, i32 %13) #142 br label %66 15: ; preds = %0 %16 = fcmp oeq double %1, 0x7FF0000000000000 %17 = fcmp oeq double %2, 0x7FF0000000000000 %or.cond2 = select i1 %16, i1 %17, i1 false br i1 %or.cond2, label %18, label %28 18: ; preds = %15 %19 = call i32 @llvm.nvvm.d2i.hi(double %b) #142 %20 = icmp slt i32 %19, 0 %21 = select i1 %20, double 0x4002D97C7F3321D2, double 0x3FE921FB54442D18 %22 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %23 = call i32 @llvm.nvvm.d2i.lo(double noundef %21) #142 %24 = call i32 @llvm.nvvm.d2i.hi(double noundef %21) #142 %25 = and i32 %22, -2147483648 %26 = or i32 %24, %25 %27 = call double @llvm.nvvm.lohi.i2d(i32 %23, i32 %26) #142 br label %66 28: ; preds = %15 %29 = call double @llvm.maxnum.f64(double %2, double %1) #140 %30 = call double @llvm.minnum.f64(double %2, double %1) #140 %31 = fdiv double %30, %29 %32 = fmul double %31, %31 %33 = call double @llvm.fma.f64(double %32, double noundef 0xBEF53E1D2A25FF7E, double noundef 0x3F2D3B63DBB65B49) #140 %34 = call double @llvm.fma.f64(double %33, double %32, double noundef 0xBF5312788DDE082E) #140 %35 = call double @llvm.fma.f64(double %34, double %32, double noundef 0x3F6F9690C8249315) #140 %36 = call double @llvm.fma.f64(double %35, double %32, double noundef 0xBF82CF5AABC7CF0D) #140 %37 = call double @llvm.fma.f64(double %36, double %32, double noundef 0x3F9162B0B2A3BFDE) #140 %38 = call double @llvm.fma.f64(double %37, double %32, double noundef 0xBF9A7256FEB6FC6B) #140 %39 = call double @llvm.fma.f64(double %38, double %32, double noundef 0x3FA171560CE4A489) #140 %40 = call double @llvm.fma.f64(double %39, double %32, double noundef 0xBFA4F44D841450E4) #140 %41 = call double @llvm.fma.f64(double %40, double %32, double noundef 0x3FA7EE3D3F36BB95) #140 %42 = call double @llvm.fma.f64(double %41, double %32, double noundef 0xBFAAD32AE04A9FD1) #140 %43 = call double @llvm.fma.f64(double %42, double %32, double noundef 0x3FAE17813D66954F) #140 %44 = call double @llvm.fma.f64(double %43, double %32, double noundef 0xBFB11089CA9A5BCD) #140 %45 = call double @llvm.fma.f64(double %44, double %32, double noundef 0x3FB3B12B2DB51738) #140 %46 = call double @llvm.fma.f64(double %45, double %32, double noundef 0xBFB745D022F8DC5C) #140 %47 = call double @llvm.fma.f64(double %46, double %32, double noundef 0x3FBC71C709DFE927) #140 %48 = call double @llvm.fma.f64(double %47, double %32, double noundef 0xBFC2492491FA1744) #140 %49 = call double @llvm.fma.f64(double %48, double %32, double noundef 0x3FC99999999840D2) #140 %50 = call double @llvm.fma.f64(double %49, double %32, double noundef 0xBFD555555555544C) #140 %51 = fmul double %32, %50 %52 = call double @llvm.fma.f64(double %51, double %31, double %31) #140 %53 = fcmp ogt double %2, %1 %54 = fsub double 0x3FF921FB54442D18, %52 %t0.0 = select i1 %53, double %54, double %52 %55 = call i32 @llvm.nvvm.d2i.hi(double %b) #142 %56 = icmp slt i32 %55, 0 %57 = fsub double 0x400921FB54442D18, %t0.0 %t0.1 = select i1 %56, double %57, double %t0.0 %58 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %59 = call i32 @llvm.nvvm.d2i.lo(double %t0.1) #142 %60 = call i32 @llvm.nvvm.d2i.hi(double %t0.1) #142 %61 = and i32 %58, -2147483648 %62 = or i32 %60, %61 %63 = call double @llvm.nvvm.lohi.i2d(i32 %59, i32 %62) #142 %64 = fadd double %2, %1 %65 = fcmp ole double %64, 0x7FF0000000000000 %t0.2 = select i1 %65, double %63, double %64 br label %66 66: ; preds = %18, %28, %5 %t0.4 = phi double [ %14, %5 ], [ %27, %18 ], [ %t0.2, %28 ] ret double %t0.4 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_atan(double %a) local_unnamed_addr #88 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ogt double %1, 1.000000e+00 br i1 %2, label %3, label %10 3: ; preds = %0 %4 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #142 %5 = fneg double %1 %6 = call double @llvm.fma.f64(double %5, double %4, double noundef 1.000000e+00) #140 %7 = call double @llvm.fma.f64(double %6, double %6, double %6) #140 %8 = call double @llvm.fma.f64(double %7, double %4, double %4) #140 %9 = fcmp oeq double %1, 0x7FF0000000000000 %t1.0 = select i1 %9, double 0.000000e+00, double %8 br label %10 10: ; preds = %3, %0 %t1.1 = phi double [ %t1.0, %3 ], [ %1, %0 ] %11 = fmul double %t1.1, %t1.1 %12 = call double @llvm.fma.f64(double %11, double noundef 0xBEF53E1D2A25FF7E, double noundef 0x3F2D3B63DBB65B49) #140 %13 = call double @llvm.fma.f64(double %12, double %11, double noundef 0xBF5312788DDE082E) #140 %14 = call double @llvm.fma.f64(double %13, double %11, double noundef 0x3F6F9690C8249315) #140 %15 = call double @llvm.fma.f64(double %14, double %11, double noundef 0xBF82CF5AABC7CF0D) #140 %16 = call double @llvm.fma.f64(double %15, double %11, double noundef 0x3F9162B0B2A3BFDE) #140 %17 = call double @llvm.fma.f64(double %16, double %11, double noundef 0xBF9A7256FEB6FC6B) #140 %18 = call double @llvm.fma.f64(double %17, double %11, double noundef 0x3FA171560CE4A489) #140 %19 = call double @llvm.fma.f64(double %18, double %11, double noundef 0xBFA4F44D841450E4) #140 %20 = call double @llvm.fma.f64(double %19, double %11, double noundef 0x3FA7EE3D3F36BB95) #140 %21 = call double @llvm.fma.f64(double %20, double %11, double noundef 0xBFAAD32AE04A9FD1) #140 %22 = call double @llvm.fma.f64(double %21, double %11, double noundef 0x3FAE17813D66954F) #140 %23 = call double @llvm.fma.f64(double %22, double %11, double noundef 0xBFB11089CA9A5BCD) #140 %24 = call double @llvm.fma.f64(double %23, double %11, double noundef 0x3FB3B12B2DB51738) #140 %25 = call double @llvm.fma.f64(double %24, double %11, double noundef 0xBFB745D022F8DC5C) #140 %26 = call double @llvm.fma.f64(double %25, double %11, double noundef 0x3FBC71C709DFE927) #140 %27 = call double @llvm.fma.f64(double %26, double %11, double noundef 0xBFC2492491FA1744) #140 %28 = call double @llvm.fma.f64(double %27, double %11, double noundef 0x3FC99999999840D2) #140 %29 = call double @llvm.fma.f64(double %28, double %11, double noundef 0xBFD555555555544C) #140 %30 = fmul double %11, %29 %31 = call double @llvm.fma.f64(double %30, double %t1.1, double %t1.1) #140 %32 = fsub double 0x3FF921FB54442D18, %31 %t1.2 = select i1 %2, double %32, double %31 %33 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %34 = call i32 @llvm.nvvm.d2i.lo(double %t1.2) #142 %35 = call i32 @llvm.nvvm.d2i.hi(double %t1.2) #142 %36 = and i32 %33, -2147483648 %37 = or i32 %35, %36 %38 = call double @llvm.nvvm.lohi.i2d(i32 %34, i32 %37) #142 ret double %38 } ; Function Attrs: noinline nounwind define dso_local double @__nv_asin(double %a) local_unnamed_addr #89 { __nv_fabsf.exit: %0 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %1 = bitcast i32 %0 to float %2 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %2, 0 %3 = call float @llvm.nvvm.fabs.ftz.f(float %1) #139 %4 = call float @llvm.fabs.f32(float %1) %.0 = select i1 %.not, float %4, float %3 %5 = fcmp olt float %.0, 0x3FFC4CCCC0000000 br i1 %5, label %6, label %22 6: ; preds = %__nv_fabsf.exit %7 = fmul double %a, %a %8 = call double @llvm.fma.f64(double %7, double noundef 0x3FB0066BDC1895E9, double noundef 0xBFB3823B180754AF) %9 = call double @llvm.fma.f64(double %8, double %7, double noundef 0x3FB11E52CC2F79AE) %10 = call double @llvm.fma.f64(double %9, double %7, double noundef 0xBF924EAF3526861B) %11 = call double @llvm.fma.f64(double %10, double %7, double noundef 0x3F91DF02A31E6CB7) %12 = call double @llvm.fma.f64(double %11, double %7, double noundef 0x3F847D18B0EEC6CC) %13 = call double @llvm.fma.f64(double %12, double %7, double noundef 0x3F8D0AF961BA53B0) %14 = call double @llvm.fma.f64(double %13, double %7, double noundef 0x3F91BF7734CF1C48) %15 = call double @llvm.fma.f64(double %14, double %7, double noundef 0x3F96E91483144EF7) %16 = call double @llvm.fma.f64(double %15, double %7, double noundef 0x3F9F1C6E0A4F9F81) %17 = call double @llvm.fma.f64(double %16, double %7, double noundef 0x3FA6DB6DC27FA92B) %18 = call double @llvm.fma.f64(double %17, double %7, double noundef 0x3FB333333320F91B) %19 = call double @llvm.fma.f64(double %18, double %7, double noundef 0x3FC5555555555F4D) %20 = fmul double %7, %19 %21 = call double @llvm.fma.f64(double %20, double %a, double %a) br label %65 22: ; preds = %__nv_fabsf.exit %23 = call double @llvm.fabs.f64(double %a) %24 = call double @llvm.fma.f64(double %23, double noundef -5.000000e-01, double noundef 5.000000e-01) %25 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %24) #141, !srcloc !83 %26 = call i32 @llvm.nvvm.d2i.lo(double %25) #139 %27 = call i32 @llvm.nvvm.d2i.hi(double %25) #139 %28 = add i32 %27, -1048576 %29 = call double @llvm.nvvm.lohi.i2d(i32 %26, i32 %28) #139 %30 = fmul double %24, %25 %31 = fneg double %30 %32 = call double @llvm.fma.f64(double %30, double %31, double %24) %33 = call double @llvm.fma.f64(double %32, double %29, double %30) %34 = fneg double %33 %35 = call double @llvm.fma.f64(double %25, double %34, double noundef 1.000000e+00) %36 = call double @llvm.fma.f64(double %35, double %29, double %29) %37 = call double @llvm.fma.f64(double %33, double %34, double %24) %38 = call double @llvm.fma.f64(double %37, double %36, double %33) %39 = call i32 @llvm.nvvm.d2i.hi(double %24) #139 %40 = icmp slt i32 %39, 0 %spec.select = select i1 %40, double 0xFFF8000000000000, double %38 %41 = fcmp one double %24, 0.000000e+00 %t0.1 = select i1 %41, double %spec.select, double %24 %42 = call double @llvm.fma.f64(double %24, double noundef 0x3FB0066BDC1895E9, double noundef 0xBFB3823B180754AF) %43 = call double @llvm.fma.f64(double %42, double %24, double noundef 0x3FB11E52CC2F79AE) %44 = call double @llvm.fma.f64(double %43, double %24, double noundef 0xBF924EAF3526861B) %45 = call double @llvm.fma.f64(double %44, double %24, double noundef 0x3F91DF02A31E6CB7) %46 = call double @llvm.fma.f64(double %45, double %24, double noundef 0x3F847D18B0EEC6CC) %47 = call double @llvm.fma.f64(double %46, double %24, double noundef 0x3F8D0AF961BA53B0) %48 = call double @llvm.fma.f64(double %47, double %24, double noundef 0x3F91BF7734CF1C48) %49 = call double @llvm.fma.f64(double %48, double %24, double noundef 0x3F96E91483144EF7) %50 = call double @llvm.fma.f64(double %49, double %24, double noundef 0x3F9F1C6E0A4F9F81) %51 = call double @llvm.fma.f64(double %50, double %24, double noundef 0x3FA6DB6DC27FA92B) %52 = call double @llvm.fma.f64(double %51, double %24, double noundef 0x3FB333333320F91B) %53 = call double @llvm.fma.f64(double %52, double %24, double noundef 0x3FC5555555555F4D) %54 = fmul double %24, %53 %55 = fmul double %t0.1, -2.000000e+00 %56 = call double @llvm.fma.f64(double %55, double %54, double noundef 0x3C91A62633145C07) %57 = fadd double %55, 0x3FE921FB54442D18 %58 = fadd double %57, %56 %59 = fadd double %58, 0x3FE921FB54442D18 %60 = call i32 @llvm.nvvm.d2i.lo(double %59) #139 %61 = call i32 @llvm.nvvm.d2i.hi(double %59) #139 %62 = and i32 %0, -2147483648 %63 = or i32 %61, %62 %64 = call double @llvm.nvvm.lohi.i2d(i32 %60, i32 %63) #139 br label %65 65: ; preds = %22, %6 %t1.0 = phi double [ %21, %6 ], [ %64, %22 ] ret double %t1.0 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_acos(double %a) local_unnamed_addr #90 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call double @llvm.fabs.f64(double %a) #140 %3 = call i32 @llvm.nvvm.d2i.hi(double %2) #142 %4 = icmp slt i32 %3, 1071801958 br i1 %4, label %5, label %28 5: ; preds = %0 %6 = fmul double %a, %a %7 = call double @llvm.fma.f64(double %6, double noundef 0x3FB0066BDC1895E9, double noundef 0xBFB3823B180754AF) #140 %8 = call double @llvm.fma.f64(double %7, double %6, double noundef 0x3FB11E52CC2F79AE) #140 %9 = call double @llvm.fma.f64(double %8, double %6, double noundef 0xBF924EAF3526861B) #140 %10 = call double @llvm.fma.f64(double %9, double %6, double noundef 0x3F91DF02A31E6CB7) #140 %11 = call double @llvm.fma.f64(double %10, double %6, double noundef 0x3F847D18B0EEC6CC) #140 %12 = call double @llvm.fma.f64(double %11, double %6, double noundef 0x3F8D0AF961BA53B0) #140 %13 = call double @llvm.fma.f64(double %12, double %6, double noundef 0x3F91BF7734CF1C48) #140 %14 = call double @llvm.fma.f64(double %13, double %6, double noundef 0x3F96E91483144EF7) #140 %15 = call double @llvm.fma.f64(double %14, double %6, double noundef 0x3F9F1C6E0A4F9F81) #140 %16 = call double @llvm.fma.f64(double %15, double %6, double noundef 0x3FA6DB6DC27FA92B) #140 %17 = call double @llvm.fma.f64(double %16, double %6, double noundef 0x3FB333333320F91B) #140 %18 = call double @llvm.fma.f64(double %17, double %6, double noundef 0x3FC5555555555F4D) #140 %19 = fmul double %6, %18 %20 = call double @llvm.fma.f64(double %19, double %2, double %2) #140 %21 = icmp slt i32 %1, 0 br i1 %21, label %22, label %25 22: ; preds = %5 %23 = fadd double %20, 0x3C91A62633145C07 %24 = fadd double %23, 0x3FF921FB54442D18 br label %73 25: ; preds = %5 %26 = fadd double %20, 0xBC91A62633145C07 %27 = fsub double 0x3FF921FB54442D18, %26 br label %73 28: ; preds = %0 %29 = fsub double 1.000000e+00, %2 %30 = call i32 @llvm.nvvm.d2i.lo(double %29) #142 %31 = call i32 @llvm.nvvm.d2i.hi(double %29) #142 %32 = add i32 %31, -1048576 %33 = call double @llvm.nvvm.lohi.i2d(i32 %30, i32 %32) #142 %34 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %33) #141, !srcloc !83 %35 = call i32 @llvm.nvvm.d2i.lo(double %34) #139 %36 = call i32 @llvm.nvvm.d2i.hi(double %34) #139 %37 = add i32 %36, -1048576 %38 = call double @llvm.nvvm.lohi.i2d(i32 %35, i32 %37) #139 %39 = fmul double %33, %34 %40 = fneg double %39 %41 = call double @llvm.fma.f64(double %39, double %40, double %33) %42 = call double @llvm.fma.f64(double %41, double %38, double %39) %43 = fneg double %42 %44 = call double @llvm.fma.f64(double %34, double %43, double noundef 1.000000e+00) %45 = call double @llvm.fma.f64(double %44, double %38, double %38) %46 = call double @llvm.fma.f64(double %42, double %43, double %33) %47 = call double @llvm.fma.f64(double %46, double %45, double %42) %48 = call i32 @llvm.nvvm.d2i.lo(double %47) #139 %49 = call i32 @llvm.nvvm.d2i.hi(double %47) #139 %50 = add i32 %49, 1048576 %51 = call double @llvm.nvvm.lohi.i2d(i32 %48, i32 %50) #139 %52 = call double @llvm.fma.f64(double %29, double noundef 0x3EC715B371155F70, double noundef 0xBEBAC2FE66FAAC4B) %53 = call double @llvm.fma.f64(double %52, double %29, double noundef 0x3ED9A9B88EFCD9B8) %54 = call double @llvm.fma.f64(double %53, double %29, double noundef 0x3EDD0F40A8A0C4C3) %55 = call double @llvm.fma.f64(double %54, double %29, double noundef 0x3EF46D4CFA9E0E1F) %56 = call double @llvm.fma.f64(double %55, double %29, double noundef 0x3F079C168D1E2422) %57 = call double @llvm.fma.f64(double %56, double %29, double noundef 0x3F1C9A88C3BCA540) %58 = call double @llvm.fma.f64(double %57, double %29, double noundef 0x3F31C4E64BD476DF) %59 = call double @llvm.fma.f64(double %58, double %29, double noundef 0x3F46E8BA60009C8F) %60 = call double @llvm.fma.f64(double %59, double %29, double noundef 0x3F5F1C71C62B05A2) %61 = call double @llvm.fma.f64(double %60, double %29, double noundef 0x3F76DB6DB6DC9F2C) %62 = call double @llvm.fma.f64(double %61, double %29, double noundef 0x3F9333333333329C) %63 = call double @llvm.fma.f64(double %62, double %29, double noundef 0x3FB5555555555555) %64 = icmp slt i32 %31, 1 %65 = fmul double %2, 0.000000e+00 %66 = fmul double %29, %63 %67 = call double @llvm.fma.f64(double %66, double %51, double %51) %t0.1 = select i1 %64, double %65, double %67 %68 = icmp slt i32 %31, 0 %69 = fmul double %t0.1, 0x7FF0000000000000 %t0.2 = select i1 %68, double %69, double %t0.1 %70 = icmp slt i32 %1, 0 %71 = fadd double %t0.2, 0xBCA1A62633145C07 %72 = fsub double 0x400921FB54442D18, %71 %t0.3 = select i1 %70, double %72, double %t0.2 br label %73 73: ; preds = %22, %25, %28 %t0.4 = phi double [ %t0.3, %28 ], [ %24, %22 ], [ %27, %25 ] ret double %t0.4 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_acosh(double %a) local_unnamed_addr #91 { %1 = fadd double %a, -1.000000e+00 %2 = call i32 @llvm.nvvm.d2i.hi(double %1) #142 %3 = icmp ugt i32 %2, 1127219199 br i1 %3, label %4, label %69 4: ; preds = %0 %5 = call i32 @llvm.nvvm.d2i.lo(double %1) #142 %6 = icmp slt i32 %2, 1048576 br i1 %6, label %7, label %11 7: ; preds = %4 %8 = fmul double %1, 0x4350000000000000 %9 = call i32 @llvm.nvvm.d2i.hi(double %8) #142 %10 = call i32 @llvm.nvvm.d2i.lo(double %8) #142 br label %11 11: ; preds = %7, %4 %.01 = phi double [ %8, %7 ], [ %1, %4 ] %ihi.i.0 = phi i32 [ %9, %7 ], [ %2, %4 ] %ilo.i.0 = phi i32 [ %10, %7 ], [ %5, %4 ] %e.i.0 = phi i32 [ -1077, %7 ], [ -1023, %4 ] %12 = add i32 %ihi.i.0, -1 %13 = icmp ult i32 %12, 2146435071 br i1 %13, label %14, label %63 14: ; preds = %11 %15 = lshr i32 %ihi.i.0, 20 %16 = add nsw i32 %e.i.0, %15 %17 = and i32 %ihi.i.0, -2146435073 %18 = or i32 %17, 1072693248 %19 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %18) #142 %20 = icmp sgt i32 %18, 1073127582 br i1 %20, label %21, label %27 21: ; preds = %14 %22 = call i32 @llvm.nvvm.d2i.lo(double %19) #142 %23 = call i32 @llvm.nvvm.d2i.hi(double %19) #142 %24 = add i32 %23, -1048576 %25 = call double @llvm.nvvm.lohi.i2d(i32 %22, i32 %24) #142 %26 = add nsw i32 %16, 1 br label %27 27: ; preds = %21, %14 %m.i.0 = phi double [ %25, %21 ], [ %19, %14 ] %e.i.1 = phi i32 [ %26, %21 ], [ %16, %14 ] %28 = fadd double %m.i.0, -1.000000e+00 %29 = fadd double %m.i.0, 1.000000e+00 %30 = call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #142 %31 = fneg double %29 %32 = call double @llvm.fma.f64(double %31, double %30, double noundef 1.000000e+00) #140 %33 = call double @llvm.fma.f64(double %32, double %32, double %32) #140 %34 = call double @llvm.fma.f64(double %33, double %30, double %30) #140 %35 = fmul double %28, %34 %36 = fadd double %35, %35 %37 = fmul double %36, %36 %38 = call double @llvm.fma.f64(double %37, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %39 = call double @llvm.fma.f64(double %38, double %37, double noundef 0x3EF3B2669F02676F) #140 %40 = call double @llvm.fma.f64(double %39, double %37, double noundef 0x3F1745CBA9AB0956) #140 %41 = call double @llvm.fma.f64(double %40, double %37, double noundef 0x3F3C71C72D1B5154) #140 %42 = call double @llvm.fma.f64(double %41, double %37, double noundef 0x3F624924923BE72D) #140 %43 = call double @llvm.fma.f64(double %42, double %37, double noundef 0x3F8999999999A3C4) #140 %44 = call double @llvm.fma.f64(double %43, double %37, double noundef 0x3FB5555555555554) #140 %45 = fsub double %28, %36 %46 = fmul double %45, 2.000000e+00 %47 = fneg double %36 %48 = call double @llvm.fma.f64(double %47, double %28, double %46) #140 %49 = fmul double %34, %48 %50 = fmul double %37, %44 %51 = call double @llvm.fma.f64(double %50, double %36, double %49) #140 %52 = xor i32 %e.i.1, -2147483648 %53 = call double @llvm.nvvm.lohi.i2d(i32 %52, i32 noundef 1127219200) #142 %54 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %55 = fsub double %53, %54 %56 = call double @llvm.fma.f64(double %55, double noundef 0x3FE62E42FEFA39EF, double %36) #140 %57 = fneg double %55 %58 = call double @llvm.fma.f64(double %57, double noundef 0x3FE62E42FEFA39EF, double %56) #140 %59 = fsub double %58, %36 %60 = fsub double %51, %59 %61 = call double @llvm.fma.f64(double %55, double noundef 0x3C7ABC9E3B39803F, double %60) #140 %62 = fadd double %56, %61 br label %__nv_log.exit 63: ; preds = %11 %64 = call double @llvm.fma.f64(double %.01, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %65 = call i32 @llvm.nvvm.d2i.hi(double %.01) #142 %66 = bitcast i32 %65 to float %67 = fcmp oeq float %66, 0.000000e+00 %q.i.0 = select i1 %67, double 0xFFF0000000000000, double %64 br label %__nv_log.exit __nv_log.exit: ; preds = %63, %27 %q.i.1 = phi double [ %62, %27 ], [ %q.i.0, %63 ] %68 = fadd double %q.i.1, 0x3FE62E42FEFA39EF br label %174 69: ; preds = %0 %70 = call double @llvm.fma.f64(double %a, double %1, double %1) #140 %71 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %70) #141, !srcloc !83 %72 = call i32 @llvm.nvvm.d2i.lo(double %71) #139 %73 = call i32 @llvm.nvvm.d2i.hi(double %71) #139 %74 = add i32 %73, -1048576 %75 = call double @llvm.nvvm.lohi.i2d(i32 %72, i32 %74) #139 %76 = fmul double %70, %71 %77 = fneg double %76 %78 = call double @llvm.fma.f64(double %76, double %77, double %70) %79 = call double @llvm.fma.f64(double %78, double %75, double %76) %80 = fneg double %79 %81 = call double @llvm.fma.f64(double %71, double %80, double noundef 1.000000e+00) %82 = call double @llvm.fma.f64(double %81, double %75, double %75) %83 = call double @llvm.fma.f64(double %79, double %80, double %70) %84 = call double @llvm.fma.f64(double %83, double %82, double %79) %85 = fadd double %1, %84 %86 = call i32 @llvm.nvvm.d2i.hi(double %85) #139 %87 = bitcast i32 %86 to float %88 = fcmp olt float %87, 0x3FFCAAAAA0000000 %89 = fcmp ogt float %87, 0xBFFB333320000000 %or.cond2 = and i1 %88, %89 br i1 %or.cond2, label %90, label %107 90: ; preds = %69 %91 = fadd double %85, 2.000000e+00 %92 = fdiv double %85, %91 %93 = fneg double %85 %94 = fmul double %92, %93 %95 = fadd double %85, %94 %96 = fmul double %95, %95 %97 = call double @llvm.fma.f64(double %96, double noundef 0x3EB372FB2FBE14B5, double noundef 0x3ED087FFCEB2DC44) %98 = call double @llvm.fma.f64(double %97, double %96, double noundef 0x3EF3B9FF890F468C) %99 = call double @llvm.fma.f64(double %98, double %96, double noundef 0x3F17457EFD51BAF8) %100 = call double @llvm.fma.f64(double %99, double %96, double noundef 0x3F3C71C8DE3CE825) %101 = call double @llvm.fma.f64(double %100, double %96, double noundef 0x3F6249248FA4661F) %102 = call double @llvm.fma.f64(double %101, double %96, double noundef 0x3F899999999D70C4) %103 = call double @llvm.fma.f64(double %102, double %96, double noundef 0x3FB5555555555462) %104 = fmul double %96, %103 %105 = call double @llvm.fma.f64(double %104, double %95, double %94) %106 = fadd double %85, %105 br label %__nv_log1p.exit 107: ; preds = %69 %108 = fadd double %85, 1.000000e+00 %109 = call i32 @llvm.nvvm.d2i.hi(double %108) #139 %110 = call i32 @llvm.nvvm.d2i.lo(double %108) #139 %111 = icmp slt i32 %109, 1048576 br i1 %111, label %112, label %116 112: ; preds = %107 %113 = fmul double %108, 0x4350000000000000 %114 = call i32 @llvm.nvvm.d2i.hi(double %113) #139 %115 = call i32 @llvm.nvvm.d2i.lo(double %113) #139 br label %116 116: ; preds = %112, %107 %.0 = phi double [ %113, %112 ], [ %108, %107 ] %ihi.i.i.0 = phi i32 [ %114, %112 ], [ %109, %107 ] %ilo.i.i.0 = phi i32 [ %115, %112 ], [ %110, %107 ] %e.i.i.0 = phi i32 [ -1077, %112 ], [ -1023, %107 ] %117 = add i32 %ihi.i.i.0, -1 %118 = icmp ult i32 %117, 2146435071 br i1 %118, label %119, label %168 119: ; preds = %116 %120 = lshr i32 %ihi.i.i.0, 20 %121 = add nsw i32 %e.i.i.0, %120 %122 = and i32 %ihi.i.i.0, -2146435073 %123 = or i32 %122, 1072693248 %124 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %123) #139 %125 = icmp sgt i32 %123, 1073127582 br i1 %125, label %126, label %132 126: ; preds = %119 %127 = call i32 @llvm.nvvm.d2i.lo(double %124) #139 %128 = call i32 @llvm.nvvm.d2i.hi(double %124) #139 %129 = add i32 %128, -1048576 %130 = call double @llvm.nvvm.lohi.i2d(i32 %127, i32 %129) #139 %131 = add nsw i32 %121, 1 br label %132 132: ; preds = %126, %119 %m.i.i.0 = phi double [ %130, %126 ], [ %124, %119 ] %e.i.i.1 = phi i32 [ %131, %126 ], [ %121, %119 ] %133 = fadd double %m.i.i.0, -1.000000e+00 %134 = fadd double %m.i.i.0, 1.000000e+00 %135 = call double @llvm.nvvm.rcp.approx.ftz.d(double %134) #139 %136 = fneg double %134 %137 = call double @llvm.fma.f64(double %136, double %135, double noundef 1.000000e+00) %138 = call double @llvm.fma.f64(double %137, double %137, double %137) %139 = call double @llvm.fma.f64(double %138, double %135, double %135) %140 = fmul double %133, %139 %141 = fadd double %140, %140 %142 = fmul double %141, %141 %143 = call double @llvm.fma.f64(double %142, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %144 = call double @llvm.fma.f64(double %143, double %142, double noundef 0x3EF3B2669F02676F) %145 = call double @llvm.fma.f64(double %144, double %142, double noundef 0x3F1745CBA9AB0956) %146 = call double @llvm.fma.f64(double %145, double %142, double noundef 0x3F3C71C72D1B5154) %147 = call double @llvm.fma.f64(double %146, double %142, double noundef 0x3F624924923BE72D) %148 = call double @llvm.fma.f64(double %147, double %142, double noundef 0x3F8999999999A3C4) %149 = call double @llvm.fma.f64(double %148, double %142, double noundef 0x3FB5555555555554) %150 = fsub double %133, %141 %151 = fmul double %150, 2.000000e+00 %152 = fneg double %141 %153 = call double @llvm.fma.f64(double %152, double %133, double %151) %154 = fmul double %139, %153 %155 = fmul double %142, %149 %156 = call double @llvm.fma.f64(double %155, double %141, double %154) %157 = xor i32 %e.i.i.1, -2147483648 %158 = call double @llvm.nvvm.lohi.i2d(i32 %157, i32 noundef 1127219200) #139 %159 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %160 = fsub double %158, %159 %161 = call double @llvm.fma.f64(double %160, double noundef 0x3FE62E42FEFA39EF, double %141) %162 = fneg double %160 %163 = call double @llvm.fma.f64(double %162, double noundef 0x3FE62E42FEFA39EF, double %161) %164 = fsub double %163, %141 %165 = fsub double %156, %164 %166 = call double @llvm.fma.f64(double %160, double noundef 0x3C7ABC9E3B39803F, double %165) %167 = fadd double %161, %166 br label %__nv_log1p.exit 168: ; preds = %116 %169 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %170 = call i32 @llvm.nvvm.d2i.hi(double %.0) #139 %171 = bitcast i32 %170 to float %172 = fcmp oeq float %171, 0.000000e+00 %q.i.i.0 = select i1 %172, double 0xFFF0000000000000, double %169 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %132, %168, %90 %t.i.0 = phi double [ %106, %90 ], [ %167, %132 ], [ %q.i.i.0, %168 ] %173 = icmp eq i32 %2, 0 %spec.select = select i1 %173, double %1, double %t.i.0 br label %174 174: ; preds = %__nv_log1p.exit, %__nv_log.exit %r.1 = phi double [ %68, %__nv_log.exit ], [ %spec.select, %__nv_log1p.exit ] ret double %r.1 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_asinh(double %a) local_unnamed_addr #92 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %3 = and i32 %1, 2147483647 %4 = call double @llvm.nvvm.lohi.i2d(i32 %2, i32 %3) #142 %5 = icmp ugt i32 %3, 1138753535 br i1 %5, label %6, label %72 6: ; preds = %0 %7 = call i32 @llvm.nvvm.d2i.hi(double %4) #142 %8 = call i32 @llvm.nvvm.d2i.lo(double %4) #142 %9 = icmp slt i32 %7, 1048576 br i1 %9, label %10, label %14 10: ; preds = %6 %11 = fmul double %4, 0x4350000000000000 %12 = call i32 @llvm.nvvm.d2i.hi(double %11) #142 %13 = call i32 @llvm.nvvm.d2i.lo(double %11) #142 br label %14 14: ; preds = %10, %6 %.01 = phi double [ %11, %10 ], [ %4, %6 ] %ihi.i.0 = phi i32 [ %12, %10 ], [ %7, %6 ] %ilo.i.0 = phi i32 [ %13, %10 ], [ %8, %6 ] %e.i.0 = phi i32 [ -1077, %10 ], [ -1023, %6 ] %15 = add i32 %ihi.i.0, -1 %16 = icmp ult i32 %15, 2146435071 br i1 %16, label %17, label %66 17: ; preds = %14 %18 = lshr i32 %ihi.i.0, 20 %19 = add nsw i32 %e.i.0, %18 %20 = and i32 %ihi.i.0, -2146435073 %21 = or i32 %20, 1072693248 %22 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %21) #142 %23 = icmp sgt i32 %21, 1073127582 br i1 %23, label %24, label %30 24: ; preds = %17 %25 = call i32 @llvm.nvvm.d2i.lo(double %22) #142 %26 = call i32 @llvm.nvvm.d2i.hi(double %22) #142 %27 = add i32 %26, -1048576 %28 = call double @llvm.nvvm.lohi.i2d(i32 %25, i32 %27) #142 %29 = add nsw i32 %19, 1 br label %30 30: ; preds = %24, %17 %m.i.0 = phi double [ %28, %24 ], [ %22, %17 ] %e.i.1 = phi i32 [ %29, %24 ], [ %19, %17 ] %31 = fadd double %m.i.0, -1.000000e+00 %32 = fadd double %m.i.0, 1.000000e+00 %33 = call double @llvm.nvvm.rcp.approx.ftz.d(double %32) #142 %34 = fneg double %32 %35 = call double @llvm.fma.f64(double %34, double %33, double noundef 1.000000e+00) #140 %36 = call double @llvm.fma.f64(double %35, double %35, double %35) #140 %37 = call double @llvm.fma.f64(double %36, double %33, double %33) #140 %38 = fmul double %31, %37 %39 = fadd double %38, %38 %40 = fmul double %39, %39 %41 = call double @llvm.fma.f64(double %40, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %42 = call double @llvm.fma.f64(double %41, double %40, double noundef 0x3EF3B2669F02676F) #140 %43 = call double @llvm.fma.f64(double %42, double %40, double noundef 0x3F1745CBA9AB0956) #140 %44 = call double @llvm.fma.f64(double %43, double %40, double noundef 0x3F3C71C72D1B5154) #140 %45 = call double @llvm.fma.f64(double %44, double %40, double noundef 0x3F624924923BE72D) #140 %46 = call double @llvm.fma.f64(double %45, double %40, double noundef 0x3F8999999999A3C4) #140 %47 = call double @llvm.fma.f64(double %46, double %40, double noundef 0x3FB5555555555554) #140 %48 = fsub double %31, %39 %49 = fmul double %48, 2.000000e+00 %50 = fneg double %39 %51 = call double @llvm.fma.f64(double %50, double %31, double %49) #140 %52 = fmul double %37, %51 %53 = fmul double %40, %47 %54 = call double @llvm.fma.f64(double %53, double %39, double %52) #140 %55 = xor i32 %e.i.1, -2147483648 %56 = call double @llvm.nvvm.lohi.i2d(i32 %55, i32 noundef 1127219200) #142 %57 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %58 = fsub double %56, %57 %59 = call double @llvm.fma.f64(double %58, double noundef 0x3FE62E42FEFA39EF, double %39) #140 %60 = fneg double %58 %61 = call double @llvm.fma.f64(double %60, double noundef 0x3FE62E42FEFA39EF, double %59) #140 %62 = fsub double %61, %39 %63 = fsub double %54, %62 %64 = call double @llvm.fma.f64(double %58, double noundef 0x3C7ABC9E3B39803F, double %63) #140 %65 = fadd double %59, %64 br label %__nv_log.exit 66: ; preds = %14 %67 = call double @llvm.fma.f64(double %.01, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %68 = call i32 @llvm.nvvm.d2i.hi(double %.01) #142 %69 = bitcast i32 %68 to float %70 = fcmp oeq float %69, 0.000000e+00 %q.i.0 = select i1 %70, double 0xFFF0000000000000, double %67 br label %__nv_log.exit __nv_log.exit: ; preds = %66, %30 %q.i.1 = phi double [ %65, %30 ], [ %q.i.0, %66 ] %71 = fadd double %q.i.1, 0x3FE62E42FEFA39EF br label %__nv_log1p.exit 72: ; preds = %0 %73 = fmul double %a, %a %74 = call double @llvm.fma.f64(double %a, double %a, double noundef 1.000000e+00) #140 %75 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %74) #141, !srcloc !83 %76 = call i32 @llvm.nvvm.d2i.lo(double %75) #139 %77 = call i32 @llvm.nvvm.d2i.hi(double %75) #139 %78 = add i32 %77, -1048576 %79 = call double @llvm.nvvm.lohi.i2d(i32 %76, i32 %78) #139 %80 = fmul double %74, %75 %81 = fneg double %80 %82 = call double @llvm.fma.f64(double %80, double %81, double %74) %83 = call double @llvm.fma.f64(double %82, double %79, double %80) %84 = fneg double %83 %85 = call double @llvm.fma.f64(double %75, double %84, double noundef 1.000000e+00) %86 = call double @llvm.fma.f64(double %85, double %79, double %79) %87 = call double @llvm.fma.f64(double %83, double %84, double %74) %88 = call double @llvm.fma.f64(double %87, double %86, double %83) %89 = fadd double %88, 1.000000e+00 %90 = fdiv double %73, %89 %91 = fadd double %4, %90 %92 = call i32 @llvm.nvvm.d2i.hi(double %91) #139 %93 = bitcast i32 %92 to float %94 = fcmp olt float %93, 0x3FFCAAAAA0000000 %95 = fcmp ogt float %93, 0xBFFB333320000000 %or.cond2 = and i1 %94, %95 br i1 %or.cond2, label %96, label %113 96: ; preds = %72 %97 = fadd double %91, 2.000000e+00 %98 = fdiv double %91, %97 %99 = fneg double %91 %100 = fmul double %98, %99 %101 = fadd double %91, %100 %102 = fmul double %101, %101 %103 = call double @llvm.fma.f64(double %102, double noundef 0x3EB372FB2FBE14B5, double noundef 0x3ED087FFCEB2DC44) %104 = call double @llvm.fma.f64(double %103, double %102, double noundef 0x3EF3B9FF890F468C) %105 = call double @llvm.fma.f64(double %104, double %102, double noundef 0x3F17457EFD51BAF8) %106 = call double @llvm.fma.f64(double %105, double %102, double noundef 0x3F3C71C8DE3CE825) %107 = call double @llvm.fma.f64(double %106, double %102, double noundef 0x3F6249248FA4661F) %108 = call double @llvm.fma.f64(double %107, double %102, double noundef 0x3F899999999D70C4) %109 = call double @llvm.fma.f64(double %108, double %102, double noundef 0x3FB5555555555462) %110 = fmul double %102, %109 %111 = call double @llvm.fma.f64(double %110, double %101, double %100) %112 = fadd double %91, %111 br label %__nv_log1p.exit 113: ; preds = %72 %114 = fadd double %91, 1.000000e+00 %115 = call i32 @llvm.nvvm.d2i.hi(double %114) #139 %116 = call i32 @llvm.nvvm.d2i.lo(double %114) #139 %117 = icmp slt i32 %115, 1048576 br i1 %117, label %118, label %122 118: ; preds = %113 %119 = fmul double %114, 0x4350000000000000 %120 = call i32 @llvm.nvvm.d2i.hi(double %119) #139 %121 = call i32 @llvm.nvvm.d2i.lo(double %119) #139 br label %122 122: ; preds = %118, %113 %.0 = phi double [ %119, %118 ], [ %114, %113 ] %ihi.i.i.0 = phi i32 [ %120, %118 ], [ %115, %113 ] %ilo.i.i.0 = phi i32 [ %121, %118 ], [ %116, %113 ] %e.i.i.0 = phi i32 [ -1077, %118 ], [ -1023, %113 ] %123 = add i32 %ihi.i.i.0, -1 %124 = icmp ult i32 %123, 2146435071 br i1 %124, label %125, label %174 125: ; preds = %122 %126 = lshr i32 %ihi.i.i.0, 20 %127 = add nsw i32 %e.i.i.0, %126 %128 = and i32 %ihi.i.i.0, -2146435073 %129 = or i32 %128, 1072693248 %130 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %129) #139 %131 = icmp sgt i32 %129, 1073127582 br i1 %131, label %132, label %138 132: ; preds = %125 %133 = call i32 @llvm.nvvm.d2i.lo(double %130) #139 %134 = call i32 @llvm.nvvm.d2i.hi(double %130) #139 %135 = add i32 %134, -1048576 %136 = call double @llvm.nvvm.lohi.i2d(i32 %133, i32 %135) #139 %137 = add nsw i32 %127, 1 br label %138 138: ; preds = %132, %125 %m.i.i.0 = phi double [ %136, %132 ], [ %130, %125 ] %e.i.i.1 = phi i32 [ %137, %132 ], [ %127, %125 ] %139 = fadd double %m.i.i.0, -1.000000e+00 %140 = fadd double %m.i.i.0, 1.000000e+00 %141 = call double @llvm.nvvm.rcp.approx.ftz.d(double %140) #139 %142 = fneg double %140 %143 = call double @llvm.fma.f64(double %142, double %141, double noundef 1.000000e+00) %144 = call double @llvm.fma.f64(double %143, double %143, double %143) %145 = call double @llvm.fma.f64(double %144, double %141, double %141) %146 = fmul double %139, %145 %147 = fadd double %146, %146 %148 = fmul double %147, %147 %149 = call double @llvm.fma.f64(double %148, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %150 = call double @llvm.fma.f64(double %149, double %148, double noundef 0x3EF3B2669F02676F) %151 = call double @llvm.fma.f64(double %150, double %148, double noundef 0x3F1745CBA9AB0956) %152 = call double @llvm.fma.f64(double %151, double %148, double noundef 0x3F3C71C72D1B5154) %153 = call double @llvm.fma.f64(double %152, double %148, double noundef 0x3F624924923BE72D) %154 = call double @llvm.fma.f64(double %153, double %148, double noundef 0x3F8999999999A3C4) %155 = call double @llvm.fma.f64(double %154, double %148, double noundef 0x3FB5555555555554) %156 = fsub double %139, %147 %157 = fmul double %156, 2.000000e+00 %158 = fneg double %147 %159 = call double @llvm.fma.f64(double %158, double %139, double %157) %160 = fmul double %145, %159 %161 = fmul double %148, %155 %162 = call double @llvm.fma.f64(double %161, double %147, double %160) %163 = xor i32 %e.i.i.1, -2147483648 %164 = call double @llvm.nvvm.lohi.i2d(i32 %163, i32 noundef 1127219200) #139 %165 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %166 = fsub double %164, %165 %167 = call double @llvm.fma.f64(double %166, double noundef 0x3FE62E42FEFA39EF, double %147) %168 = fneg double %166 %169 = call double @llvm.fma.f64(double %168, double noundef 0x3FE62E42FEFA39EF, double %167) %170 = fsub double %169, %147 %171 = fsub double %162, %170 %172 = call double @llvm.fma.f64(double %166, double noundef 0x3C7ABC9E3B39803F, double %171) %173 = fadd double %167, %172 br label %__nv_log1p.exit 174: ; preds = %122 %175 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %176 = call i32 @llvm.nvvm.d2i.hi(double %.0) #139 %177 = bitcast i32 %176 to float %178 = fcmp oeq float %177, 0.000000e+00 %q.i.i.0 = select i1 %178, double 0xFFF0000000000000, double %175 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %96, %174, %138, %__nv_log.exit %t.0 = phi double [ %71, %__nv_log.exit ], [ %112, %96 ], [ %173, %138 ], [ %q.i.i.0, %174 ] %179 = call i32 @llvm.nvvm.d2i.lo(double %t.0) #139 %180 = call i32 @llvm.nvvm.d2i.hi(double %t.0) #139 %181 = and i32 %1, -2147483648 %182 = or i32 %180, %181 %183 = call double @llvm.nvvm.lohi.i2d(i32 %179, i32 %182) #139 ret double %183 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_atanh(double %a) local_unnamed_addr #93 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fmul double %1, 2.000000e+00 %3 = fsub double 1.000000e+00, %1 %4 = fdiv double %2, %3 %5 = call i32 @llvm.nvvm.d2i.hi(double %4) #142 %6 = bitcast i32 %5 to float %7 = fcmp olt float %6, 0x3FFCAAAAA0000000 %8 = fcmp ogt float %6, 0xBFFB333320000000 %or.cond = and i1 %7, %8 br i1 %or.cond, label %9, label %26 9: ; preds = %0 %10 = fadd double %4, 2.000000e+00 %11 = fdiv double %4, %10 %12 = fneg double %4 %13 = fmul double %11, %12 %14 = fadd double %4, %13 %15 = fmul double %14, %14 %16 = call double @llvm.fma.f64(double %15, double noundef 0x3EB372FB2FBE14B5, double noundef 0x3ED087FFCEB2DC44) #140 %17 = call double @llvm.fma.f64(double %16, double %15, double noundef 0x3EF3B9FF890F468C) #140 %18 = call double @llvm.fma.f64(double %17, double %15, double noundef 0x3F17457EFD51BAF8) #140 %19 = call double @llvm.fma.f64(double %18, double %15, double noundef 0x3F3C71C8DE3CE825) #140 %20 = call double @llvm.fma.f64(double %19, double %15, double noundef 0x3F6249248FA4661F) #140 %21 = call double @llvm.fma.f64(double %20, double %15, double noundef 0x3F899999999D70C4) #140 %22 = call double @llvm.fma.f64(double %21, double %15, double noundef 0x3FB5555555555462) #140 %23 = fmul double %15, %22 %24 = call double @llvm.fma.f64(double %23, double %14, double %13) #140 %25 = fadd double %4, %24 br label %__nv_log1p.exit 26: ; preds = %0 %27 = fadd double %4, 1.000000e+00 %28 = call i32 @llvm.nvvm.d2i.hi(double %27) #142 %29 = call i32 @llvm.nvvm.d2i.lo(double %27) #142 %30 = icmp slt i32 %28, 1048576 br i1 %30, label %31, label %35 31: ; preds = %26 %32 = fmul double %27, 0x4350000000000000 %33 = call i32 @llvm.nvvm.d2i.hi(double %32) #142 %34 = call i32 @llvm.nvvm.d2i.lo(double %32) #142 br label %35 35: ; preds = %31, %26 %.0 = phi double [ %32, %31 ], [ %27, %26 ] %ihi.i.i.0 = phi i32 [ %33, %31 ], [ %28, %26 ] %ilo.i.i.0 = phi i32 [ %34, %31 ], [ %29, %26 ] %e.i.i.0 = phi i32 [ -1077, %31 ], [ -1023, %26 ] %36 = add i32 %ihi.i.i.0, -1 %37 = icmp ult i32 %36, 2146435071 br i1 %37, label %38, label %87 38: ; preds = %35 %39 = lshr i32 %ihi.i.i.0, 20 %40 = add nsw i32 %e.i.i.0, %39 %41 = and i32 %ihi.i.i.0, -2146435073 %42 = or i32 %41, 1072693248 %43 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %42) #142 %44 = icmp sgt i32 %42, 1073127582 br i1 %44, label %45, label %51 45: ; preds = %38 %46 = call i32 @llvm.nvvm.d2i.lo(double %43) #142 %47 = call i32 @llvm.nvvm.d2i.hi(double %43) #142 %48 = add i32 %47, -1048576 %49 = call double @llvm.nvvm.lohi.i2d(i32 %46, i32 %48) #142 %50 = add nsw i32 %40, 1 br label %51 51: ; preds = %45, %38 %m.i.i.0 = phi double [ %49, %45 ], [ %43, %38 ] %e.i.i.1 = phi i32 [ %50, %45 ], [ %40, %38 ] %52 = fadd double %m.i.i.0, -1.000000e+00 %53 = fadd double %m.i.i.0, 1.000000e+00 %54 = call double @llvm.nvvm.rcp.approx.ftz.d(double %53) #142 %55 = fneg double %53 %56 = call double @llvm.fma.f64(double %55, double %54, double noundef 1.000000e+00) #140 %57 = call double @llvm.fma.f64(double %56, double %56, double %56) #140 %58 = call double @llvm.fma.f64(double %57, double %54, double %54) #140 %59 = fmul double %52, %58 %60 = fadd double %59, %59 %61 = fmul double %60, %60 %62 = call double @llvm.fma.f64(double %61, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %63 = call double @llvm.fma.f64(double %62, double %61, double noundef 0x3EF3B2669F02676F) #140 %64 = call double @llvm.fma.f64(double %63, double %61, double noundef 0x3F1745CBA9AB0956) #140 %65 = call double @llvm.fma.f64(double %64, double %61, double noundef 0x3F3C71C72D1B5154) #140 %66 = call double @llvm.fma.f64(double %65, double %61, double noundef 0x3F624924923BE72D) #140 %67 = call double @llvm.fma.f64(double %66, double %61, double noundef 0x3F8999999999A3C4) #140 %68 = call double @llvm.fma.f64(double %67, double %61, double noundef 0x3FB5555555555554) #140 %69 = fsub double %52, %60 %70 = fmul double %69, 2.000000e+00 %71 = fneg double %60 %72 = call double @llvm.fma.f64(double %71, double %52, double %70) #140 %73 = fmul double %58, %72 %74 = fmul double %61, %68 %75 = call double @llvm.fma.f64(double %74, double %60, double %73) #140 %76 = xor i32 %e.i.i.1, -2147483648 %77 = call double @llvm.nvvm.lohi.i2d(i32 %76, i32 noundef 1127219200) #142 %78 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %79 = fsub double %77, %78 %80 = call double @llvm.fma.f64(double %79, double noundef 0x3FE62E42FEFA39EF, double %60) #140 %81 = fneg double %79 %82 = call double @llvm.fma.f64(double %81, double noundef 0x3FE62E42FEFA39EF, double %80) #140 %83 = fsub double %82, %60 %84 = fsub double %75, %83 %85 = call double @llvm.fma.f64(double %79, double noundef 0x3C7ABC9E3B39803F, double %84) #140 %86 = fadd double %80, %85 br label %__nv_log1p.exit 87: ; preds = %35 %88 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %89 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %90 = bitcast i32 %89 to float %91 = fcmp oeq float %90, 0.000000e+00 %q.i.i.0 = select i1 %91, double 0xFFF0000000000000, double %88 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %51, %87, %9 %t.i.0 = phi double [ %25, %9 ], [ %86, %51 ], [ %q.i.i.0, %87 ] %92 = fmul double %t.i.0, 5.000000e-01 %93 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %94 = call i32 @llvm.nvvm.d2i.lo(double %92) #142 %95 = call i32 @llvm.nvvm.d2i.hi(double %92) #142 %96 = and i32 %93, -2147483648 %97 = or i32 %95, %96 %98 = call double @llvm.nvvm.lohi.i2d(i32 %94, i32 %97) #142 ret double %98 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_hypot(double %a, double %b) local_unnamed_addr #94 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = bitcast double %2 to i64 %4 = bitcast double %1 to i64 %min.cond.not = icmp ugt i64 %3, %4 %min = select i1 %min.cond.not, i64 %4, i64 %3 %5 = bitcast i64 %min to double %max = select i1 %min.cond.not, i64 %3, i64 %4 %6 = bitcast i64 %max to double %7 = call i32 @llvm.nvvm.d2i.hi(double %6) #142 %8 = and i32 %7, -4194304 %9 = sub i32 2144337920, %8 %10 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %9) #142 %11 = fmul double %10, %5 %12 = fmul double %10, %6 %13 = fmul double %11, %11 %14 = call double @llvm.fma.f64(double %12, double %12, double %13) #140 %15 = call double @llvm.minnum.f64(double %14, double noundef 0x7FEFFFFFFFFFFFFF) #140 %16 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %15) #141, !srcloc !84 %17 = fneg double %16 %18 = fmul double %16, %17 %19 = call double @llvm.fma.f64(double %15, double %18, double noundef 1.000000e+00) %20 = call double @llvm.fma.f64(double %19, double noundef 3.750000e-01, double noundef 5.000000e-01) %21 = fmul double %16, %19 %22 = call double @llvm.fma.f64(double %20, double %21, double %16) %23 = fmul double %14, %22 %24 = or i32 %8, 1048576 %25 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %24) #139 %26 = fmul double %25, %23 %27 = fcmp oeq double %5, 0.000000e+00 %res.0 = select i1 %27, double %6, double %26 %28 = call i32 @llvm.nvvm.d2i.hi(double %5) #139 %29 = call i32 @llvm.nvvm.d2i.hi(double noundef 0x7FF0000000000000) #139 %.not = icmp ult i32 %28, %29 %res.1 = select i1 %.not, double %res.0, double %5 ret double %res.1 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_rhypot(double %a, double %b) local_unnamed_addr #95 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = bitcast double %2 to i64 %4 = bitcast double %1 to i64 %min.cond.not = icmp ugt i64 %3, %4 %min = select i1 %min.cond.not, i64 %4, i64 %3 %5 = bitcast i64 %min to double %max = select i1 %min.cond.not, i64 %3, i64 %4 %6 = bitcast i64 %max to double %7 = call i32 @llvm.nvvm.d2i.hi(double %6) #142 %8 = and i32 %7, -4194304 %9 = sub i32 2144337920, %8 %10 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %9) #142 %11 = fmul double %10, %5 %12 = fmul double %10, %6 %13 = fmul double %11, %11 %14 = call double @llvm.fma.f64(double %12, double %12, double %13) #140 %15 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %14) #141, !srcloc !84 %16 = fneg double %15 %17 = fmul double %15, %16 %18 = call double @llvm.fma.f64(double %14, double %17, double noundef 1.000000e+00) %19 = call double @llvm.fma.f64(double %18, double noundef 3.750000e-01, double noundef 5.000000e-01) %20 = fmul double %15, %18 %21 = call double @llvm.fma.f64(double %19, double %20, double %15) %22 = fmul double %10, %21 %23 = call i32 @llvm.nvvm.d2i.hi(double %22) #139 %24 = call i32 @llvm.nvvm.d2i.hi(double noundef 0x7FF0000000000000) #139 %.not = icmp ult i32 %23, %24 br i1 %.not, label %33, label %25 25: ; preds = %0 %26 = call double @llvm.fabs.f64(double %6) %27 = fcmp ugt double %26, 0x7FF0000000000000 %28 = fadd double %6, %5 %29 = fcmp une double %6, 0x7FF0000000000000 %30 = select i1 %29, i32 %24, i32 0 %31 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %30) #139 %res.0 = select i1 %27, double %28, double %31 %32 = fcmp oeq double %5, 0x7FF0000000000000 %res.1 = select i1 %32, double 0.000000e+00, double %res.0 br label %33 33: ; preds = %25, %0 %res.2 = phi double [ %res.1, %25 ], [ %22, %0 ] ret double %res.2 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_norm3d(double %a, double %b, double %c) local_unnamed_addr #96 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = call double @llvm.fabs.f64(double %c) #140 %4 = fadd double %1, %2 %5 = fadd double %4, %3 %6 = call double @llvm.minnum.f64(double %1, double %2) #140 %7 = call double @llvm.maxnum.f64(double %1, double %2) #140 %8 = call double @llvm.minnum.f64(double %7, double %3) #140 %9 = call double @llvm.maxnum.f64(double %7, double %3) #140 %10 = call i32 @llvm.nvvm.d2i.hi(double %9) #142 %11 = and i32 %10, -4194304 %12 = sub i32 2144337920, %11 %13 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %12) #142 %14 = fmul double %8, %13 %15 = fmul double %6, %13 %16 = fmul double %9, %13 %17 = fmul double %14, %14 %18 = call double @llvm.fma.f64(double %15, double %15, double %17) #140 %19 = call double @llvm.fma.f64(double %16, double %16, double %18) #140 %20 = call double @llvm.minnum.f64(double %19, double noundef 0x7FEFFFFFFFFFFFFF) #140 %21 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %20) #141, !srcloc !84 %22 = fneg double %21 %23 = fmul double %21, %22 %24 = call double @llvm.fma.f64(double %20, double %23, double noundef 1.000000e+00) %25 = call double @llvm.fma.f64(double %24, double noundef 3.750000e-01, double noundef 5.000000e-01) %26 = fmul double %21, %24 %27 = call double @llvm.fma.f64(double %25, double %26, double %21) %28 = fmul double %19, %27 %29 = or i32 %11, 1048576 %30 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %29) #139 %31 = fmul double %30, %28 %32 = fcmp ogt double %5, %9 %res.0 = select i1 %32, double %31, double %5 %33 = call i32 @llvm.nvvm.d2i.hi(double noundef 0x7FF0000000000000) #139 %.not = icmp ult i32 %10, %33 %res.1 = select i1 %.not, double %res.0, double %9 ret double %res.1 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_rnorm3d(double %a, double %b, double %c) local_unnamed_addr #97 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = call double @llvm.fabs.f64(double %c) #140 %4 = fadd double %1, %2 %5 = fadd double %4, %3 %6 = call double @llvm.minnum.f64(double %1, double %2) #140 %7 = call double @llvm.maxnum.f64(double %1, double %2) #140 %8 = call double @llvm.minnum.f64(double %7, double %3) #140 %9 = call double @llvm.maxnum.f64(double %7, double %3) #140 %10 = call i32 @llvm.nvvm.d2i.hi(double %9) #142 %11 = and i32 %10, -4194304 %12 = sub i32 2144337920, %11 %13 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %12) #142 %14 = fmul double %8, %13 %15 = fmul double %6, %13 %16 = fmul double %9, %13 %17 = fmul double %14, %14 %18 = call double @llvm.fma.f64(double %15, double %15, double %17) #140 %19 = call double @llvm.fma.f64(double %16, double %16, double %18) #140 %20 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %19) #141, !srcloc !84 %21 = fneg double %20 %22 = fmul double %20, %21 %23 = call double @llvm.fma.f64(double %19, double %22, double noundef 1.000000e+00) %24 = call double @llvm.fma.f64(double %23, double noundef 3.750000e-01, double noundef 5.000000e-01) %25 = fmul double %20, %23 %26 = call double @llvm.fma.f64(double %24, double %25, double %20) %27 = fmul double %13, %26 %28 = fcmp ogt double %5, 0.000000e+00 %29 = fadd double %5, 0x7FF0000000000000 %res.0 = select i1 %28, double %27, double %29 %30 = fcmp oeq double %9, 0x7FF0000000000000 %res.1 = select i1 %30, double 0.000000e+00, double %res.0 ret double %res.1 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_norm4d(double %a, double %b, double %c, double %d) local_unnamed_addr #98 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = call double @llvm.fabs.f64(double %c) #140 %4 = call double @llvm.fabs.f64(double %d) #140 %5 = fadd double %1, %2 %6 = fadd double %5, %3 %7 = fadd double %6, %4 %8 = call double @llvm.minnum.f64(double %1, double %2) #140 %9 = call double @llvm.maxnum.f64(double %1, double %2) #140 %10 = call double @llvm.minnum.f64(double %9, double %3) #140 %11 = call double @llvm.maxnum.f64(double %9, double %3) #140 %12 = call double @llvm.minnum.f64(double %11, double %4) #140 %13 = call double @llvm.maxnum.f64(double %11, double %4) #140 %14 = call i32 @llvm.nvvm.d2i.hi(double %13) #142 %15 = and i32 %14, -4194304 %16 = sub i32 2144337920, %15 %17 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %16) #142 %18 = fmul double %12, %17 %19 = fmul double %10, %17 %20 = fmul double %8, %17 %21 = fmul double %13, %17 %22 = fmul double %18, %18 %23 = call double @llvm.fma.f64(double %19, double %19, double %22) #140 %24 = call double @llvm.fma.f64(double %20, double %20, double %23) #140 %25 = call double @llvm.fma.f64(double %21, double %21, double %24) #140 %26 = call double @llvm.minnum.f64(double %25, double noundef 0x7FEFFFFFFFFFFFFF) #140 %27 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %26) #141, !srcloc !84 %28 = fneg double %27 %29 = fmul double %27, %28 %30 = call double @llvm.fma.f64(double %26, double %29, double noundef 1.000000e+00) %31 = call double @llvm.fma.f64(double %30, double noundef 3.750000e-01, double noundef 5.000000e-01) %32 = fmul double %27, %30 %33 = call double @llvm.fma.f64(double %31, double %32, double %27) %34 = fmul double %25, %33 %35 = or i32 %15, 1048576 %36 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %35) #139 %37 = fmul double %36, %34 %38 = fcmp ogt double %7, %13 %res.0 = select i1 %38, double %37, double %7 %39 = call i32 @llvm.nvvm.d2i.hi(double noundef 0x7FF0000000000000) #139 %.not = icmp ult i32 %14, %39 %res.1 = select i1 %.not, double %res.0, double %13 ret double %res.1 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_rnorm4d(double %a, double %b, double %c, double %d) local_unnamed_addr #99 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = call double @llvm.fabs.f64(double %b) #140 %3 = call double @llvm.fabs.f64(double %c) #140 %4 = call double @llvm.fabs.f64(double %d) #140 %5 = fadd double %1, %2 %6 = fadd double %5, %3 %7 = fadd double %6, %4 %8 = call double @llvm.minnum.f64(double %1, double %2) #140 %9 = call double @llvm.maxnum.f64(double %1, double %2) #140 %10 = call double @llvm.minnum.f64(double %9, double %3) #140 %11 = call double @llvm.maxnum.f64(double %9, double %3) #140 %12 = call double @llvm.minnum.f64(double %11, double %4) #140 %13 = call double @llvm.maxnum.f64(double %11, double %4) #140 %14 = call i32 @llvm.nvvm.d2i.hi(double %13) #142 %15 = and i32 %14, -4194304 %16 = sub i32 2144337920, %15 %17 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %16) #142 %18 = fmul double %12, %17 %19 = fmul double %10, %17 %20 = fmul double %8, %17 %21 = fmul double %13, %17 %22 = fmul double %18, %18 %23 = call double @llvm.fma.f64(double %19, double %19, double %22) #140 %24 = call double @llvm.fma.f64(double %20, double %20, double %23) #140 %25 = call double @llvm.fma.f64(double %21, double %21, double %24) #140 %26 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %25) #141, !srcloc !84 %27 = fneg double %26 %28 = fmul double %26, %27 %29 = call double @llvm.fma.f64(double %25, double %28, double noundef 1.000000e+00) %30 = call double @llvm.fma.f64(double %29, double noundef 3.750000e-01, double noundef 5.000000e-01) %31 = fmul double %26, %29 %32 = call double @llvm.fma.f64(double %30, double %31, double %26) %33 = fmul double %17, %32 %34 = fcmp ogt double %7, 0.000000e+00 %35 = fadd double %7, 0x7FF0000000000000 %res.0 = select i1 %34, double %33, double %35 %36 = fcmp oeq double %13, 0x7FF0000000000000 %res.1 = select i1 %36, double 0.000000e+00, double %res.0 ret double %res.1 } ; Function Attrs: argmemonly noinline nosync nounwind readonly define dso_local double @__nv_norm(i32 %dim, double* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %t) local_unnamed_addr #100 { %1 = load double, double* %t, align 8 %2 = call double @llvm.fabs.f64(double %1) %3 = icmp sgt i32 %dim, 1 br i1 %3, label %.lr.ph7, label %._crit_edge8 .lr.ph7: ; preds = %0 %4 = add nsw i32 %dim, -1 %5 = add nsw i32 %dim, -2 %xtraiter12 = and i32 %4, 3 %6 = icmp ult i32 %5, 3 br i1 %6, label %._crit_edge8.unr-lcssa, label %.lr.ph7.new .lr.ph7.new: ; preds = %.lr.ph7 %unroll_iter15 = and i32 %4, -4 br label %7 7: ; preds = %7, %.lr.ph7.new %i.05 = phi i32 [ 1, %.lr.ph7.new ], [ %31, %7 ] %largest.04 = phi double [ %2, %.lr.ph7.new ], [ %30, %7 ] %niter16 = phi i32 [ 0, %.lr.ph7.new ], [ %niter16.next.3, %7 ] %8 = zext i32 %i.05 to i64 %9 = getelementptr inbounds double, double* %t, i64 %8 %10 = load double, double* %9, align 8 %11 = call double @llvm.fabs.f64(double %10) %12 = call double @llvm.maxnum.f64(double %11, double %largest.04) %13 = add nuw nsw i32 %i.05, 1 %14 = zext i32 %13 to i64 %15 = getelementptr inbounds double, double* %t, i64 %14 %16 = load double, double* %15, align 8 %17 = call double @llvm.fabs.f64(double %16) %18 = call double @llvm.maxnum.f64(double %17, double %12) %19 = add nuw nsw i32 %i.05, 2 %20 = zext i32 %19 to i64 %21 = getelementptr inbounds double, double* %t, i64 %20 %22 = load double, double* %21, align 8 %23 = call double @llvm.fabs.f64(double %22) %24 = call double @llvm.maxnum.f64(double %23, double %18) %25 = add nuw nsw i32 %i.05, 3 %26 = zext i32 %25 to i64 %27 = getelementptr inbounds double, double* %t, i64 %26 %28 = load double, double* %27, align 8 %29 = call double @llvm.fabs.f64(double %28) %30 = call double @llvm.maxnum.f64(double %29, double %24) %31 = add nuw nsw i32 %i.05, 4 %niter16.next.3 = add i32 %niter16, 4 %niter16.ncmp.3.not = icmp eq i32 %niter16.next.3, %unroll_iter15 br i1 %niter16.ncmp.3.not, label %._crit_edge8.unr-lcssa, label %7 ._crit_edge8.unr-lcssa: ; preds = %7, %.lr.ph7 %.lcssa.ph = phi double [ undef, %.lr.ph7 ], [ %30, %7 ] %i.05.unr = phi i32 [ 1, %.lr.ph7 ], [ %31, %7 ] %largest.04.unr = phi double [ %2, %.lr.ph7 ], [ %30, %7 ] %lcmp.mod13.not = icmp eq i32 %xtraiter12, 0 br i1 %lcmp.mod13.not, label %._crit_edge8, label %.epil.preheader11 .epil.preheader11: ; preds = %._crit_edge8.unr-lcssa, %.epil.preheader11 %i.05.epil = phi i32 [ %37, %.epil.preheader11 ], [ %i.05.unr, %._crit_edge8.unr-lcssa ] %largest.04.epil = phi double [ %36, %.epil.preheader11 ], [ %largest.04.unr, %._crit_edge8.unr-lcssa ] %epil.iter = phi i32 [ %epil.iter.next, %.epil.preheader11 ], [ 0, %._crit_edge8.unr-lcssa ] %32 = zext i32 %i.05.epil to i64 %33 = getelementptr inbounds double, double* %t, i64 %32 %34 = load double, double* %33, align 8 %35 = call double @llvm.fabs.f64(double %34) %36 = call double @llvm.maxnum.f64(double %35, double %largest.04.epil) %37 = add nuw nsw i32 %i.05.epil, 1 %epil.iter.next = add i32 %epil.iter, 1 %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter12 br i1 %epil.iter.cmp.not, label %._crit_edge8, label %.epil.preheader11, !llvm.loop !85 ._crit_edge8: ; preds = %.epil.preheader11, %._crit_edge8.unr-lcssa, %0 %largest.0.lcssa = phi double [ %2, %0 ], [ %.lcssa.ph, %._crit_edge8.unr-lcssa ], [ %36, %.epil.preheader11 ] %38 = call i32 @llvm.nvvm.d2i.hi(double %largest.0.lcssa) #139 %39 = and i32 %38, -4194304 %40 = sub i32 2144337920, %39 %41 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %40) #139 %42 = fmul double %largest.0.lcssa, %41 %43 = icmp sgt i32 %dim, 0 br i1 %43, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %._crit_edge8 %xtraiter = and i32 %dim, 1 %44 = icmp eq i32 %dim, 1 br i1 %44, label %._crit_edge.unr-lcssa, label %.lr.ph.new .lr.ph.new: ; preds = %.lr.ph %unroll_iter = and i32 %dim, -2 br label %45 45: ; preds = %._crit_edge17, %.lr.ph.new %46 = phi double [ %1, %.lr.ph.new ], [ %.pre, %._crit_edge17 ] %j.03 = phi i32 [ 0, %.lr.ph.new ], [ %j.1.1, %._crit_edge17 ] %i.12 = phi i32 [ 0, %.lr.ph.new ], [ %63, %._crit_edge17 ] %res0.01 = phi double [ 0.000000e+00, %.lr.ph.new ], [ %res0.1.1, %._crit_edge17 ] %niter = phi i32 [ 0, %.lr.ph.new ], [ %niter.next.1, %._crit_edge17 ] %47 = call double @llvm.fabs.f64(double %46) %48 = fmul double %41, %47 %49 = fcmp une double %48, %42 %50 = icmp ne i32 %i.12, %j.03 %or.cond = select i1 %49, i1 true, i1 %50 %51 = call double @llvm.fma.f64(double %48, double %48, double %res0.01) %res0.1 = select i1 %or.cond, double %51, double %res0.01 %52 = zext i1 %or.cond to i32 %j.1 = add nuw nsw i32 %j.03, %52 %53 = or i32 %i.12, 1 %54 = zext i32 %53 to i64 %55 = getelementptr inbounds double, double* %t, i64 %54 %56 = load double, double* %55, align 8 %57 = call double @llvm.fabs.f64(double %56) %58 = fmul double %41, %57 %59 = fcmp une double %58, %42 %60 = icmp ne i32 %53, %j.1 %or.cond.1 = select i1 %59, i1 true, i1 %60 %61 = call double @llvm.fma.f64(double %58, double %58, double %res0.1) %res0.1.1 = select i1 %or.cond.1, double %61, double %res0.1 %62 = zext i1 %or.cond.1 to i32 %j.1.1 = add nuw nsw i32 %j.1, %62 %63 = add nuw nsw i32 %i.12, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %._crit_edge.unr-lcssa, label %._crit_edge17 ._crit_edge17: ; preds = %45 %.phi.trans.insert = zext i32 %63 to i64 %.phi.trans.insert18 = getelementptr inbounds double, double* %t, i64 %.phi.trans.insert %.pre = load double, double* %.phi.trans.insert18, align 8 br label %45 ._crit_edge.unr-lcssa: ; preds = %45, %.lr.ph %res0.1.lcssa.ph = phi double [ undef, %.lr.ph ], [ %res0.1.1, %45 ] %j.03.unr = phi i32 [ 0, %.lr.ph ], [ %j.1.1, %45 ] %i.12.unr = phi i32 [ 0, %.lr.ph ], [ %63, %45 ] %res0.01.unr = phi double [ 0.000000e+00, %.lr.ph ], [ %res0.1.1, %45 ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader .epil.preheader: ; preds = %._crit_edge.unr-lcssa %64 = zext i32 %i.12.unr to i64 %65 = getelementptr inbounds double, double* %t, i64 %64 %66 = load double, double* %65, align 8 %67 = call double @llvm.fabs.f64(double %66) %68 = fmul double %41, %67 %69 = fcmp une double %68, %42 %70 = icmp ne i32 %i.12.unr, %j.03.unr %or.cond.epil = select i1 %69, i1 true, i1 %70 %71 = call double @llvm.fma.f64(double %68, double %68, double %res0.01.unr) %res0.1.epil = select i1 %or.cond.epil, double %71, double %res0.01.unr br label %._crit_edge ._crit_edge: ; preds = %.epil.preheader, %._crit_edge.unr-lcssa, %._crit_edge8 %res0.0.lcssa = phi double [ 0.000000e+00, %._crit_edge8 ], [ %res0.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %res0.1.epil, %.epil.preheader ] %72 = call double @llvm.fma.f64(double %42, double %42, double %res0.0.lcssa) %73 = call double @llvm.minnum.f64(double %72, double noundef 0x7FEFFFFFFFFFFFFF) %74 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %73) #141, !srcloc !84 %75 = fneg double %74 %76 = fmul double %74, %75 %77 = call double @llvm.fma.f64(double %73, double %76, double noundef 1.000000e+00) %78 = fcmp oeq double %res0.0.lcssa, 0.000000e+00 br i1 %78, label %88, label %79 79: ; preds = %._crit_edge %80 = call double @llvm.fma.f64(double %77, double noundef 3.750000e-01, double noundef 5.000000e-01) %81 = fmul double %74, %77 %82 = call double @llvm.fma.f64(double %80, double %81, double %74) %83 = fmul double %72, %82 %84 = or i32 %39, 1048576 %85 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %84) #139 %86 = fmul double %85, %83 %87 = call i32 @llvm.nvvm.d2i.hi(double noundef 0x7FF0000000000000) #139 %.not = icmp ult i32 %38, %87 br i1 %.not, label %89, label %88 88: ; preds = %79, %._crit_edge br label %89 89: ; preds = %88, %79 %res.0 = phi double [ %largest.0.lcssa, %88 ], [ %86, %79 ] ret double %res.0 } ; Function Attrs: argmemonly nofree noinline nosync nounwind readonly define dso_local double @__nv_rnorm(i32 %dim, double* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %t) local_unnamed_addr #101 { %1 = load double, double* %t, align 8 %2 = call double @llvm.fabs.f64(double %1) %3 = icmp sgt i32 %dim, 1 br i1 %3, label %.lr.ph7, label %._crit_edge8 .lr.ph7: ; preds = %0 %4 = add nsw i32 %dim, -1 %5 = add nsw i32 %dim, -2 %xtraiter12 = and i32 %4, 3 %6 = icmp ult i32 %5, 3 br i1 %6, label %._crit_edge8.unr-lcssa, label %.lr.ph7.new .lr.ph7.new: ; preds = %.lr.ph7 %unroll_iter15 = and i32 %4, -4 br label %7 7: ; preds = %7, %.lr.ph7.new %i.05 = phi i32 [ 1, %.lr.ph7.new ], [ %31, %7 ] %largest.04 = phi double [ %2, %.lr.ph7.new ], [ %30, %7 ] %niter16 = phi i32 [ 0, %.lr.ph7.new ], [ %niter16.next.3, %7 ] %8 = zext i32 %i.05 to i64 %9 = getelementptr inbounds double, double* %t, i64 %8 %10 = load double, double* %9, align 8 %11 = call double @llvm.fabs.f64(double %10) %12 = call double @llvm.maxnum.f64(double %11, double %largest.04) %13 = add nuw nsw i32 %i.05, 1 %14 = zext i32 %13 to i64 %15 = getelementptr inbounds double, double* %t, i64 %14 %16 = load double, double* %15, align 8 %17 = call double @llvm.fabs.f64(double %16) %18 = call double @llvm.maxnum.f64(double %17, double %12) %19 = add nuw nsw i32 %i.05, 2 %20 = zext i32 %19 to i64 %21 = getelementptr inbounds double, double* %t, i64 %20 %22 = load double, double* %21, align 8 %23 = call double @llvm.fabs.f64(double %22) %24 = call double @llvm.maxnum.f64(double %23, double %18) %25 = add nuw nsw i32 %i.05, 3 %26 = zext i32 %25 to i64 %27 = getelementptr inbounds double, double* %t, i64 %26 %28 = load double, double* %27, align 8 %29 = call double @llvm.fabs.f64(double %28) %30 = call double @llvm.maxnum.f64(double %29, double %24) %31 = add nuw nsw i32 %i.05, 4 %niter16.next.3 = add i32 %niter16, 4 %niter16.ncmp.3.not = icmp eq i32 %niter16.next.3, %unroll_iter15 br i1 %niter16.ncmp.3.not, label %._crit_edge8.unr-lcssa, label %7 ._crit_edge8.unr-lcssa: ; preds = %7, %.lr.ph7 %.lcssa.ph = phi double [ undef, %.lr.ph7 ], [ %30, %7 ] %i.05.unr = phi i32 [ 1, %.lr.ph7 ], [ %31, %7 ] %largest.04.unr = phi double [ %2, %.lr.ph7 ], [ %30, %7 ] %lcmp.mod13.not = icmp eq i32 %xtraiter12, 0 br i1 %lcmp.mod13.not, label %._crit_edge8, label %.epil.preheader11 .epil.preheader11: ; preds = %._crit_edge8.unr-lcssa, %.epil.preheader11 %i.05.epil = phi i32 [ %37, %.epil.preheader11 ], [ %i.05.unr, %._crit_edge8.unr-lcssa ] %largest.04.epil = phi double [ %36, %.epil.preheader11 ], [ %largest.04.unr, %._crit_edge8.unr-lcssa ] %epil.iter = phi i32 [ %epil.iter.next, %.epil.preheader11 ], [ 0, %._crit_edge8.unr-lcssa ] %32 = zext i32 %i.05.epil to i64 %33 = getelementptr inbounds double, double* %t, i64 %32 %34 = load double, double* %33, align 8 %35 = call double @llvm.fabs.f64(double %34) %36 = call double @llvm.maxnum.f64(double %35, double %largest.04.epil) %37 = add nuw nsw i32 %i.05.epil, 1 %epil.iter.next = add i32 %epil.iter, 1 %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter12 br i1 %epil.iter.cmp.not, label %._crit_edge8, label %.epil.preheader11, !llvm.loop !87 ._crit_edge8: ; preds = %.epil.preheader11, %._crit_edge8.unr-lcssa, %0 %largest.0.lcssa = phi double [ %2, %0 ], [ %.lcssa.ph, %._crit_edge8.unr-lcssa ], [ %36, %.epil.preheader11 ] %38 = call i32 @llvm.nvvm.d2i.hi(double %largest.0.lcssa) #139 %39 = and i32 %38, -4194304 %40 = sub i32 2144337920, %39 %41 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %40) #139 %42 = fmul double %largest.0.lcssa, %41 %43 = icmp sgt i32 %dim, 0 br i1 %43, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %._crit_edge8 %xtraiter = and i32 %dim, 1 %44 = icmp eq i32 %dim, 1 br i1 %44, label %._crit_edge.unr-lcssa, label %.lr.ph.new .lr.ph.new: ; preds = %.lr.ph %unroll_iter = and i32 %dim, -2 br label %45 45: ; preds = %._crit_edge17, %.lr.ph.new %46 = phi double [ %1, %.lr.ph.new ], [ %.pre, %._crit_edge17 ] %j.03 = phi i32 [ 0, %.lr.ph.new ], [ %j.1.1, %._crit_edge17 ] %i.12 = phi i32 [ 0, %.lr.ph.new ], [ %63, %._crit_edge17 ] %res0.01 = phi double [ 0.000000e+00, %.lr.ph.new ], [ %res0.1.1, %._crit_edge17 ] %niter = phi i32 [ 0, %.lr.ph.new ], [ %niter.next.1, %._crit_edge17 ] %47 = call double @llvm.fabs.f64(double %46) %48 = fmul double %41, %47 %49 = fcmp une double %48, %42 %50 = icmp ne i32 %i.12, %j.03 %or.cond = select i1 %49, i1 true, i1 %50 %51 = call double @llvm.fma.f64(double %48, double %48, double %res0.01) %res0.1 = select i1 %or.cond, double %51, double %res0.01 %52 = zext i1 %or.cond to i32 %j.1 = add nuw nsw i32 %j.03, %52 %53 = or i32 %i.12, 1 %54 = zext i32 %53 to i64 %55 = getelementptr inbounds double, double* %t, i64 %54 %56 = load double, double* %55, align 8 %57 = call double @llvm.fabs.f64(double %56) %58 = fmul double %41, %57 %59 = fcmp une double %58, %42 %60 = icmp ne i32 %53, %j.1 %or.cond.1 = select i1 %59, i1 true, i1 %60 %61 = call double @llvm.fma.f64(double %58, double %58, double %res0.1) %res0.1.1 = select i1 %or.cond.1, double %61, double %res0.1 %62 = zext i1 %or.cond.1 to i32 %j.1.1 = add nuw nsw i32 %j.1, %62 %63 = add nuw nsw i32 %i.12, 2 %niter.next.1 = add i32 %niter, 2 %niter.ncmp.1.not = icmp eq i32 %niter.next.1, %unroll_iter br i1 %niter.ncmp.1.not, label %._crit_edge.unr-lcssa, label %._crit_edge17 ._crit_edge17: ; preds = %45 %.phi.trans.insert = zext i32 %63 to i64 %.phi.trans.insert18 = getelementptr inbounds double, double* %t, i64 %.phi.trans.insert %.pre = load double, double* %.phi.trans.insert18, align 8 br label %45 ._crit_edge.unr-lcssa: ; preds = %45, %.lr.ph %res0.1.lcssa.ph = phi double [ undef, %.lr.ph ], [ %res0.1.1, %45 ] %j.03.unr = phi i32 [ 0, %.lr.ph ], [ %j.1.1, %45 ] %i.12.unr = phi i32 [ 0, %.lr.ph ], [ %63, %45 ] %res0.01.unr = phi double [ 0.000000e+00, %.lr.ph ], [ %res0.1.1, %45 ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader .epil.preheader: ; preds = %._crit_edge.unr-lcssa %64 = zext i32 %i.12.unr to i64 %65 = getelementptr inbounds double, double* %t, i64 %64 %66 = load double, double* %65, align 8 %67 = call double @llvm.fabs.f64(double %66) %68 = fmul double %41, %67 %69 = fcmp une double %68, %42 %70 = icmp ne i32 %i.12.unr, %j.03.unr %or.cond.epil = select i1 %69, i1 true, i1 %70 %71 = call double @llvm.fma.f64(double %68, double %68, double %res0.01.unr) %res0.1.epil = select i1 %or.cond.epil, double %71, double %res0.01.unr br label %._crit_edge ._crit_edge: ; preds = %.epil.preheader, %._crit_edge.unr-lcssa, %._crit_edge8 %res0.0.lcssa = phi double [ 0.000000e+00, %._crit_edge8 ], [ %res0.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %res0.1.epil, %.epil.preheader ] %72 = call double @llvm.fma.f64(double %42, double %42, double %res0.0.lcssa) %73 = call double @llvm.nvvm.rsqrt.approx.d(double %72) #139 %74 = fmul double %41, %73 %75 = fcmp oeq double %largest.0.lcssa, 0x7FF0000000000000 %res.0 = select i1 %75, double 0.000000e+00, double %74 ret double %res.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_cbrt(double %a) local_unnamed_addr #102 { %1 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %3 = and i32 %2, 2147483647 %4 = fcmp une double %a, 0.000000e+00 %5 = icmp ult i32 %3, 2146435072 %or.cond = select i1 %4, i1 %5, i1 false br i1 %or.cond, label %__nv_float2int_rn.exit, label %50 __nv_float2int_rn.exit: ; preds = %0 %6 = icmp ult i32 %3, 1048576 %7 = call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %3) #142 %8 = fmul double %7, 0x4350000000000000 %9 = call i32 @llvm.nvvm.d2i.lo(double %8) #142 %10 = call i32 @llvm.nvvm.d2i.hi(double %8) #142 %ilo.0 = select i1 %6, i32 %9, i32 %1 %ihi.0 = select i1 %6, i32 %10, i32 %3 %denorm.0.neg = select i1 %6, i32 4078, i32 1048576 %expo.0 = lshr i32 %ihi.0, 20 %11 = add nsw i32 %expo.0, -1022 %12 = sitofp i32 %11 to float %13 = fmul float %12, 0x3FD5555560000000 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %14, 0 %15 = call i32 @llvm.nvvm.f2i.rn.ftz(float %13) #139 %16 = call i32 @llvm.nvvm.f2i.rn(float %13) #139 %.0 = select i1 %.not, i32 %16, i32 %15 %.neg = mul i32 %.0, -3145728 %17 = add i32 %.neg, %ihi.0 %18 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %17) #139 %19 = fptrunc double %18 to float %20 = call float @llvm.nvvm.lg2.approx.ftz.f(float %19) #139 %21 = fmul float %20, 0x3FD5555560000000 %22 = call float @llvm.nvvm.ex2.approx.ftz.f(float %21) #139 %23 = fpext float %22 to double %24 = fmul double %23, %23 %25 = call i32 @llvm.nvvm.d2i.lo(double %24) #139 %26 = call i32 @llvm.nvvm.d2i.hi(double %24) #139 %27 = add i32 %26, 1048576 %28 = call double @llvm.nvvm.lohi.i2d(i32 %25, i32 %27) #139 %29 = call double @llvm.fma.f64(double %28, double %23, double %18) %30 = call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #139 %31 = fneg double %29 %32 = call double @llvm.fma.f64(double %31, double %30, double noundef 1.000000e+00) %33 = call double @llvm.fma.f64(double %32, double %32, double %32) %34 = call double @llvm.fma.f64(double %33, double %30, double %30) %35 = fneg double %23 %36 = call double @llvm.fma.f64(double %24, double %35, double %18) %37 = fmul double %36, %34 %38 = call double @llvm.fma.f64(double %23, double %37, double %23) %39 = call i32 @llvm.nvvm.d2i.lo(double %38) #139 %40 = call i32 @llvm.nvvm.d2i.hi(double %38) #139 %41 = add i32 %.0, %denorm.0.neg %42 = shl i32 %41, 20 %43 = add nsw i32 %40, %42 %44 = call double @llvm.nvvm.lohi.i2d(i32 %39, i32 %43) #139 %45 = call i32 @llvm.nvvm.d2i.lo(double %44) #139 %46 = call i32 @llvm.nvvm.d2i.hi(double %44) #139 %47 = and i32 %2, -2147483648 %48 = or i32 %46, %47 %49 = call double @llvm.nvvm.lohi.i2d(i32 %45, i32 %48) #139 br label %52 50: ; preds = %0 %51 = fadd double %a, %a br label %52 52: ; preds = %50, %__nv_float2int_rn.exit %t.0 = phi double [ %49, %__nv_float2int_rn.exit ], [ %51, %50 ] ret double %t.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_rcbrt(double %a) local_unnamed_addr #103 { %1 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %3 = and i32 %2, 2147483647 %4 = fcmp une double %a, 0.000000e+00 %5 = icmp ult i32 %3, 2146435072 %or.cond = select i1 %4, i1 %5, i1 false br i1 %or.cond, label %__nv_float2int_rn.exit, label %43 __nv_float2int_rn.exit: ; preds = %0 %6 = icmp ult i32 %3, 1048576 %7 = call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %3) #142 %8 = fmul double %7, 0x4350000000000000 %9 = call i32 @llvm.nvvm.d2i.lo(double %8) #142 %10 = call i32 @llvm.nvvm.d2i.hi(double %8) #142 %ilo.0 = select i1 %6, i32 %9, i32 %1 %ihi.0 = select i1 %6, i32 %10, i32 %3 %denorm.0.neg.neg = select i1 %6, i32 18, i32 1048576 %expo.0 = lshr i32 %ihi.0, 20 %11 = add nsw i32 %expo.0, -1022 %12 = sitofp i32 %11 to float %13 = fmul float %12, 0x3FD5555560000000 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %14, 0 %15 = call i32 @llvm.nvvm.f2i.rn.ftz(float %13) #139 %16 = call i32 @llvm.nvvm.f2i.rn(float %13) #139 %.0 = select i1 %.not, i32 %16, i32 %15 %.neg = mul i32 %.0, -3145728 %17 = add i32 %.neg, %ihi.0 %18 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %17) #139 %19 = fptrunc double %18 to float %20 = call float @llvm.nvvm.lg2.approx.ftz.f(float %19) #139 %21 = fmul float %20, 0xBFD5555560000000 %22 = call float @llvm.nvvm.ex2.approx.ftz.f(float %21) #139 %23 = fpext float %22 to double %24 = fmul double %23, %23 %25 = fmul double %18, %23 %26 = fneg double %25 %27 = call double @llvm.fma.f64(double %24, double %26, double noundef 1.000000e+00) %28 = call double @llvm.fma.f64(double %18, double %23, double %26) %29 = fneg double %28 %30 = call double @llvm.fma.f64(double %24, double %29, double %27) %31 = fneg double %24 %32 = call double @llvm.fma.f64(double %23, double %23, double %31) %33 = fneg double %32 %34 = call double @llvm.fma.f64(double %25, double %33, double %30) %35 = call double @llvm.fma.f64(double %34, double noundef 0x3FCC71C71C71C71C, double noundef 0x3FD5555555555555) %36 = fmul double %34, %23 %37 = call double @llvm.fma.f64(double %35, double %36, double %23) %38 = call i32 @llvm.nvvm.d2i.lo(double %37) #139 %39 = call i32 @llvm.nvvm.d2i.hi(double %37) #139 %.neg1 = sub i32 %denorm.0.neg.neg, %.0 %40 = shl i32 %.neg1, 20 %41 = add nsw i32 %39, %40 %42 = call double @llvm.nvvm.lohi.i2d(i32 %38, i32 %41) #139 br label %49 43: ; preds = %0 %44 = xor i32 %3, 2146435072 %45 = call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %44) #139 %46 = call double @llvm.fabs.f64(double %a) %47 = fcmp ugt double %46, 0x7FF0000000000000 %48 = fadd double %a, %a %spec.select = select i1 %47, double %48, double %45 br label %49 49: ; preds = %43, %__nv_float2int_rn.exit %t.1 = phi double [ %42, %__nv_float2int_rn.exit ], [ %spec.select, %43 ] %50 = call i32 @llvm.nvvm.d2i.lo(double %t.1) #139 %51 = call i32 @llvm.nvvm.d2i.hi(double %t.1) #139 %52 = and i32 %2, -2147483648 %53 = or i32 %51, %52 %54 = call double @llvm.nvvm.lohi.i2d(i32 %50, i32 %53) #139 ret double %54 } ; Function Attrs: noinline nounwind define dso_local double @__nv_pow(double %a, double %b) local_unnamed_addr #104 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.hi(double %b) #142 %3 = lshr i32 %2, 20 %4 = and i32 %3, 2047 %5 = add nsw i32 %4, -1012 %6 = bitcast double %b to i64 %7 = zext i32 %5 to i64 %8 = shl i64 %6, %7 %9 = icmp eq i64 %8, -9223372036854775808 %10 = zext i1 %9 to i32 %11 = call double @llvm.fabs.f64(double %a) #140 %12 = call fastcc double @__internal_accurate_pow(double %11, double %b) #139 %13 = fcmp oeq double %a, 0.000000e+00 br i1 %13, label %14, label %20 14: ; preds = %0 %15 = call double @llvm.fabs.f64(double %b) %16 = fcmp oeq double %15, 5.000000e-01 %bIsOddInteger.0 = select i1 %16, i32 0, i32 %10 %.not = icmp eq i32 %bIsOddInteger.0, 0 %thi.0 = select i1 %.not, i32 0, i32 %1 %17 = icmp slt i32 %2, 0 %18 = or i32 %thi.0, 2146435072 %thi.1 = select i1 %17, i32 %18, i32 %thi.0 %19 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %thi.1) #139 br label %28 20: ; preds = %0 %21 = icmp slt i32 %1, 0 %or.cond = select i1 %21, i1 %9, i1 false %22 = call i32 @llvm.nvvm.d2i.lo(double %12) #139 %23 = call i32 @llvm.nvvm.d2i.hi(double %12) #139 %24 = xor i32 %23, -2147483648 %25 = call double @llvm.nvvm.lohi.i2d(i32 %22, i32 %24) #139 %t.0 = select i1 %or.cond, double %25, double %12 %26 = call double @llvm.trunc.f64(double %b) %27 = fcmp une double %26, %b %or.cond2 = select i1 %21, i1 %27, i1 false %t.1 = select i1 %or.cond2, double 0xFFF8000000000000, double %t.0 br label %28 28: ; preds = %20, %14 %t.2 = phi double [ %19, %14 ], [ %t.1, %20 ] %bIsOddInteger.1 = phi i32 [ %bIsOddInteger.0, %14 ], [ %10, %20 ] %29 = fadd double %a, %b %30 = call i32 @llvm.nvvm.d2i.hi(double %29) #139 %31 = and i32 %30, 2146435072 %32 = icmp eq i32 %31, 2146435072 br i1 %32, label %33, label %84 33: ; preds = %28 %34 = fcmp ugt double %11, 0x7FF0000000000000 %35 = call double @llvm.fabs.f64(double %b) %36 = fcmp ugt double %35, 0x7FF0000000000000 %or.cond8 = select i1 %34, i1 true, i1 %36 br i1 %or.cond8, label %84, label %37 37: ; preds = %33 %38 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %39 = icmp eq i32 %38, 200 br i1 %39, label %46, label %40 40: ; preds = %37 %41 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %42 = icmp eq i32 %41, 350 br i1 %42, label %46, label %43 43: ; preds = %40 %44 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %45 = icmp eq i32 %44, 370 br i1 %45, label %46, label %48 46: ; preds = %43, %40, %37 %47 = fcmp oeq double %35, 0x7FF0000000000000 br label %__nv_isinfd.exit4 48: ; preds = %43 %49 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %50 = and i32 %2, 2147483647 %51 = icmp eq i32 %50, 2146435072 %52 = icmp eq i32 %49, 0 %53 = select i1 %51, i1 %52, i1 false br label %__nv_isinfd.exit4 __nv_isinfd.exit4: ; preds = %48, %46 %.01.in = phi i1 [ %47, %46 ], [ %53, %48 ] br i1 %.01.in, label %54, label %60 54: ; preds = %__nv_isinfd.exit4 %55 = fcmp ogt double %11, 1.000000e+00 %thi.2 = select i1 %55, i32 2146435072, i32 0 %56 = icmp slt i32 %2, 0 %57 = xor i32 %thi.2, 2146435072 %thi.3 = select i1 %56, i32 %57, i32 %thi.2 %58 = fcmp oeq double %a, -1.000000e+00 %thi.4 = select i1 %58, i32 1072693248, i32 %thi.3 %59 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %thi.4) #139 br label %84 60: ; preds = %__nv_isinfd.exit4 %61 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %62 = icmp eq i32 %61, 200 br i1 %62, label %69, label %63 63: ; preds = %60 %64 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %65 = icmp eq i32 %64, 350 br i1 %65, label %69, label %66 66: ; preds = %63 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %68 = icmp eq i32 %67, 370 br i1 %68, label %69, label %71 69: ; preds = %66, %63, %60 %70 = fcmp oeq double %11, 0x7FF0000000000000 br label %__nv_isinfd.exit 71: ; preds = %66 %72 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %73 = and i32 %1, 2147483647 %74 = icmp eq i32 %73, 2146435072 %75 = icmp eq i32 %72, 0 %76 = select i1 %74, i1 %75, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %71, %69 %.0.in = phi i1 [ %70, %69 ], [ %76, %71 ] br i1 %.0.in, label %77, label %84 77: ; preds = %__nv_isinfd.exit %.inv = icmp slt i32 %2, 0 %spec.select = select i1 %.inv, i32 0, i32 2146435072 %78 = icmp slt i32 %1, 0 %79 = icmp ne i32 %bIsOddInteger.1, 0 %or.cond3 = select i1 %78, i1 %79, i1 false %80 = and i32 %2, 2147483647 %81 = icmp ne i32 %80, 1071644672 %or.cond5 = select i1 %or.cond3, i1 %81, i1 false %82 = or i32 %spec.select, -2147483648 %thi.6 = select i1 %or.cond5, i32 %82, i32 %spec.select %83 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %thi.6) #139 br label %84 84: ; preds = %33, %__nv_isinfd.exit, %77, %54, %28 %t.6 = phi double [ %t.2, %28 ], [ %59, %54 ], [ %83, %77 ], [ %t.2, %__nv_isinfd.exit ], [ %29, %33 ] %85 = fcmp oeq double %a, 1.000000e+00 %86 = fcmp oeq double %b, 0.000000e+00 %or.cond6 = select i1 %85, i1 true, i1 %86 %t.7 = select i1 %or.cond6, double 1.000000e+00, double %t.6 ret double %t.7 } ; Function Attrs: noinline nounwind define internal fastcc double @__internal_accurate_pow(double %a, double %b) unnamed_addr #105 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %3 = lshr i32 %1, 20 %4 = icmp ult i32 %1, 1048576 br i1 %4, label %5, label %11 5: ; preds = %0 %6 = fmul double %a, 0x4350000000000000 %7 = call i32 @llvm.nvvm.d2i.hi(double %6) #142 %8 = call i32 @llvm.nvvm.d2i.lo(double %6) #142 %9 = lshr i32 %7, 20 %10 = add nsw i32 %9, -54 br label %11 11: ; preds = %5, %0 %ilo.i.0 = phi i32 [ %8, %5 ], [ %2, %0 ] %ihi.i.0 = phi i32 [ %7, %5 ], [ %1, %0 ] %expo.i.0 = phi i32 [ %10, %5 ], [ %3, %0 ] %12 = add nsw i32 %expo.i.0, -1023 %13 = and i32 %ihi.i.0, -2146435073 %14 = or i32 %13, 1072693248 %15 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %14) #142 %16 = icmp ugt i32 %14, 1073127582 br i1 %16, label %17, label %__internal_log_ext_prec.exit 17: ; preds = %11 %18 = call i32 @llvm.nvvm.d2i.lo(double %15) #142 %19 = call i32 @llvm.nvvm.d2i.hi(double %15) #142 %20 = add i32 %19, -1048576 %21 = call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %20) #142 %22 = add nsw i32 %expo.i.0, -1022 br label %__internal_log_ext_prec.exit __internal_log_ext_prec.exit: ; preds = %17, %11 %m.i.0 = phi double [ %21, %17 ], [ %15, %11 ] %expo.i.1 = phi i32 [ %22, %17 ], [ %12, %11 ] %23 = fadd double %m.i.0, -1.000000e+00 %24 = fadd double %m.i.0, 1.000000e+00 %25 = call double @llvm.nvvm.rcp.approx.ftz.d(double %24) #142 %26 = fneg double %24 %27 = call double @llvm.fma.f64(double %26, double %25, double noundef 1.000000e+00) #140 %28 = call double @llvm.fma.f64(double %27, double %27, double %27) #140 %29 = call double @llvm.fma.f64(double %28, double %25, double %25) #140 %30 = fmul double %23, %29 %31 = fadd double %30, %30 %32 = fmul double %31, %31 %33 = call double @llvm.fma.f64(double %32, double noundef 0x3EB0F5FF7D2CAFE2, double noundef 0x3ED0F5D241AD3B5A) #140 %34 = call double @llvm.fma.f64(double %33, double %32, double noundef 0x3EF3B20A75488A3F) #140 %35 = call double @llvm.fma.f64(double %34, double %32, double noundef 0x3F1745CDE4FAECD5) #140 %36 = call double @llvm.fma.f64(double %35, double %32, double noundef 0x3F3C71C7258A578B) #140 %37 = call double @llvm.fma.f64(double %36, double %32, double noundef 0x3F6249249242B910) #140 %38 = call double @llvm.fma.f64(double %37, double %32, double noundef 0x3F89999999999DFB) #140 %39 = fmul double %32, %38 %40 = fsub double %23, %31 %41 = fmul double %40, 2.000000e+00 %42 = fneg double %31 %43 = call double @llvm.fma.f64(double %42, double %23, double %41) #140 %44 = fmul double %29, %43 %45 = fadd double %39, 0x3FB5555555555555 %46 = fsub double 0x3FB5555555555555, %45 %47 = fadd double %39, %46 %48 = fadd double %47, 0.000000e+00 %49 = fadd double %48, 0xBC46A4CB00B9E7B0 %50 = fadd double %45, %49 %51 = fsub double %45, %50 %52 = fadd double %49, %51 %53 = fneg double %32 %54 = call double @llvm.fma.f64(double %31, double %31, double %53) #140 %55 = call i32 @llvm.nvvm.d2i.lo(double %44) #142 %56 = call i32 @llvm.nvvm.d2i.hi(double %44) #142 %57 = add i32 %56, 1048576 %58 = call double @llvm.nvvm.lohi.i2d(i32 %55, i32 %57) #142 %59 = call double @llvm.fma.f64(double %31, double %58, double %54) #140 %60 = fmul double %31, %32 %61 = fneg double %60 %62 = call double @llvm.fma.f64(double %32, double %31, double %61) #140 %63 = call double @llvm.fma.f64(double %32, double %44, double %62) #140 %64 = call double @llvm.fma.f64(double %59, double %31, double %63) #140 %65 = fmul double %60, %50 %66 = fneg double %65 %67 = call double @llvm.fma.f64(double %50, double %60, double %66) #140 %68 = call double @llvm.fma.f64(double %50, double %64, double %67) #140 %69 = call double @llvm.fma.f64(double %52, double %60, double %68) #140 %70 = fadd double %65, %69 %71 = fsub double %65, %70 %72 = fadd double %69, %71 %73 = fadd double %31, %70 %74 = fsub double %31, %73 %75 = fadd double %70, %74 %76 = fadd double %72, %75 %77 = fadd double %44, %76 %78 = fadd double %73, %77 %79 = fsub double %73, %78 %80 = fadd double %77, %79 %81 = xor i32 %expo.i.1, -2147483648 %82 = call double @llvm.nvvm.lohi.i2d(i32 %81, i32 noundef 1127219200) #142 %83 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %84 = fsub double %82, %83 %85 = call double @llvm.fma.f64(double %84, double noundef 0x3FE62E42FEFA39EF, double %78) #140 %86 = fneg double %84 %87 = call double @llvm.fma.f64(double %86, double noundef 0x3FE62E42FEFA39EF, double %85) #140 %88 = fsub double %87, %78 %89 = fsub double %80, %88 %90 = call double @llvm.fma.f64(double %84, double noundef 0x3C7ABC9E3B39803F, double %89) #140 %91 = fadd double %85, %90 %92 = fsub double %85, %91 %93 = fadd double %90, %92 %94 = call i32 @llvm.nvvm.d2i.hi(double %b) #142 %95 = call i32 @llvm.nvvm.d2i.lo(double %b) #142 %96 = shl i32 %94, 1 %97 = icmp ugt i32 %96, -33554433 %98 = and i32 %94, -15728641 %spec.select = select i1 %97, i32 %98, i32 %94 %99 = call double @llvm.nvvm.lohi.i2d(i32 %95, i32 %spec.select) #142 %100 = fmul double %99, %91 %101 = fneg double %100 %102 = call double @llvm.fma.f64(double %91, double %99, double %101) #140 %103 = call double @llvm.fma.f64(double %93, double %99, double %102) #140 %104 = fadd double %100, %103 %105 = call double @llvm.fma.f64(double %104, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %106 = call i32 @llvm.nvvm.d2i.lo(double %105) #142 %107 = fadd double %105, 0xC338000000000000 %108 = call double @llvm.fma.f64(double %107, double noundef 0xBFE62E42FEFA39EF, double %104) #140 %109 = call double @llvm.fma.f64(double %107, double noundef 0xBC7ABC9E3B39803F, double %108) #140 %110 = call double @llvm.fma.f64(double %109, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %111 = call double @llvm.fma.f64(double %110, double %109, double noundef 0x3EC71DEE62401315) #140 %112 = call double @llvm.fma.f64(double %111, double %109, double noundef 0x3EFA01997C89EB71) #140 %113 = call double @llvm.fma.f64(double %112, double %109, double noundef 0x3F2A01A014761F65) #140 %114 = call double @llvm.fma.f64(double %113, double %109, double noundef 0x3F56C16C1852B7AF) #140 %115 = call double @llvm.fma.f64(double %114, double %109, double noundef 0x3F81111111122322) #140 %116 = call double @llvm.fma.f64(double %115, double %109, double noundef 0x3FA55555555502A1) #140 %117 = call double @llvm.fma.f64(double %116, double %109, double noundef 0x3FC5555555555511) #140 %118 = call double @llvm.fma.f64(double %117, double %109, double noundef 0x3FE000000000000B) #140 %119 = call double @llvm.fma.f64(double %118, double %109, double noundef 1.000000e+00) #140 %120 = call double @llvm.fma.f64(double %119, double %109, double noundef 1.000000e+00) #140 %121 = call i32 @llvm.nvvm.d2i.lo(double %120) #142 %122 = call i32 @llvm.nvvm.d2i.hi(double %120) #142 %123 = shl i32 %106, 20 %124 = add i32 %122, %123 %125 = call double @llvm.nvvm.lohi.i2d(i32 %121, i32 %124) #142 %126 = call i32 @llvm.nvvm.d2i.hi(double %104) #142 %127 = bitcast i32 %126 to float %128 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %128, 0 %129 = call float @llvm.nvvm.fabs.ftz.f(float %127) #139 %130 = call float @llvm.fabs.f32(float %127) %.02 = select i1 %.not, float %130, float %129 %131 = fcmp olt float %.02, 0x4010C46560000000 br i1 %131, label %__nv_exp.exit, label %__internal_fast_icmp_abs_lt.exit.i __internal_fast_icmp_abs_lt.exit.i: ; preds = %__internal_log_ext_prec.exit %132 = fcmp olt double %104, 0.000000e+00 %133 = fadd double %104, 0x7FF0000000000000 %z.i.0 = select i1 %132, double 0.000000e+00, double %133 %134 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %134, 0 %.01 = select i1 %.not2, float %130, float %129 %135 = fcmp olt float %.01, 0x4010E90000000000 br i1 %135, label %136, label %__nv_exp.exit 136: ; preds = %__internal_fast_icmp_abs_lt.exit.i %137 = sdiv i32 %106, 2 %138 = shl i32 %137, 20 %139 = add i32 %122, %138 %140 = call double @llvm.nvvm.lohi.i2d(i32 %121, i32 %139) #139 %141 = sub nsw i32 %106, %137 %142 = shl i32 %141, 20 %143 = add nsw i32 %142, 1072693248 %144 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %143) #139 %145 = fmul double %144, %140 br label %__nv_exp.exit __nv_exp.exit: ; preds = %__internal_fast_icmp_abs_lt.exit.i, %136, %__internal_log_ext_prec.exit %z.i.2 = phi double [ %125, %__internal_log_ext_prec.exit ], [ %145, %136 ], [ %z.i.0, %__internal_fast_icmp_abs_lt.exit.i ] %146 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %147 = icmp eq i32 %146, 200 br i1 %147, label %154, label %148 148: ; preds = %__nv_exp.exit %149 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %150 = icmp eq i32 %149, 350 br i1 %150, label %154, label %151 151: ; preds = %148 %152 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %153 = icmp eq i32 %152, 370 br i1 %153, label %154, label %157 154: ; preds = %151, %148, %__nv_exp.exit %155 = call double @llvm.fabs.f64(double %z.i.2) %156 = fcmp oeq double %155, 0x7FF0000000000000 br label %__nv_isinfd.exit 157: ; preds = %151 %158 = call i32 @llvm.nvvm.d2i.lo(double %z.i.2) #139 %159 = call i32 @llvm.nvvm.d2i.hi(double %z.i.2) #139 %160 = and i32 %159, 2147483647 %161 = icmp eq i32 %160, 2146435072 %162 = icmp eq i32 %158, 0 %163 = select i1 %161, i1 %162, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %157, %154 %.0.in = phi i1 [ %156, %154 ], [ %163, %157 ] %164 = fsub double %100, %104 %165 = fadd double %103, %164 %166 = call double @llvm.fma.f64(double %z.i.2, double %165, double %z.i.2) %spec.select1 = select i1 %.0.in, double %z.i.2, double %166 ret double %spec.select1 } ; Function Attrs: noinline nounwind define dso_local double @__nv_j0(double %a) local_unnamed_addr #106 { %q.i.i.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x400FB319F277BBE5 br i1 %2, label %23, label %3 3: ; preds = %0 %4 = fadd double %1, 0xC0033D152E971B40 %5 = fadd double %4, 0x3CA0F539D7DA258E %6 = call double @llvm.fma.f64(double %5, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) #140 %7 = call double @llvm.fma.f64(double %6, double %5, double noundef 0x3D3FAB983CAE498B) #140 %8 = call double @llvm.fma.f64(double %7, double %5, double noundef 0x3D7CD7C018579B88) #140 %9 = call double @llvm.fma.f64(double %8, double %5, double noundef 0xBDBBDD2342D64FDD) #140 %10 = call double @llvm.fma.f64(double %9, double %5, double noundef 0xBDF5C2D9416B1E2B) #140 %11 = call double @llvm.fma.f64(double %10, double %5, double noundef 0x3E32951D73174DD5) #140 %12 = call double @llvm.fma.f64(double %11, double %5, double noundef 0x3E67FF99802CAEB5) #140 %13 = call double @llvm.fma.f64(double %12, double %5, double noundef 0xBEA1CCE305C4C9F7) #140 %14 = call double @llvm.fma.f64(double %13, double %5, double noundef 0xBED232C77E29E1BB) #140 %15 = call double @llvm.fma.f64(double %14, double %5, double noundef 0x3F06ED3B9F0EF757) #140 %16 = call double @llvm.fma.f64(double %15, double %5, double noundef 0x3F315382BA096A62) #140 %17 = call double @llvm.fma.f64(double %16, double %5, double noundef 0xBF61F992590D1AE4) #140 %18 = call double @llvm.fma.f64(double %17, double %5, double noundef 0xBF81BB1CBE1A465F) #140 %19 = call double @llvm.fma.f64(double %18, double %5, double noundef 0x3FACFAE864368D84) #140 %20 = call double @llvm.fma.f64(double %19, double %5, double noundef 0x3FBBA1DEEA0294A3) #140 %21 = call double @llvm.fma.f64(double %20, double %5, double noundef 0xBFE09CDB36551280) #140 %22 = fmul double %5, %21 br label %256 23: ; preds = %0 %24 = fcmp ugt double %1, 0x401C58FD1A62F5EC br i1 %24, label %45, label %25 25: ; preds = %23 %26 = fadd double %1, 0xC016148F5B2C2E45 %27 = fadd double %26, 0xBC975054CD60A517 %28 = call double @llvm.fma.f64(double %27, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) #140 %29 = call double @llvm.fma.f64(double %28, double %27, double noundef 0xBD4100E33E3FB413) #140 %30 = call double @llvm.fma.f64(double %29, double %27, double noundef 0xBD7846076D004627) #140 %31 = call double @llvm.fma.f64(double %30, double %27, double noundef 0x3DBE2F1D4F90720D) #140 %32 = call double @llvm.fma.f64(double %31, double %27, double noundef 0x3DF1D03B1E4A119B) #140 %33 = call double @llvm.fma.f64(double %32, double %27, double noundef 0xBE341D72B1B3BCE9) #140 %34 = call double @llvm.fma.f64(double %33, double %27, double noundef 0xBE62DA37CE2A9EF8) #140 %35 = call double @llvm.fma.f64(double %34, double %27, double noundef 0x3EA32E6D9974F763) #140 %36 = call double @llvm.fma.f64(double %35, double %27, double noundef 0x3ECAD77D744A1879) #140 %37 = call double @llvm.fma.f64(double %36, double %27, double noundef 0xBF0863F481A37337) #140 %38 = call double @llvm.fma.f64(double %37, double %27, double noundef 0xBF26F641F418F0F4) #140 %39 = call double @llvm.fma.f64(double %38, double %27, double noundef 0x3F627E31FE9A969E) #140 %40 = call double @llvm.fma.f64(double %39, double %27, double noundef 0x3F72F7FFE9025628) #140 %41 = call double @llvm.fma.f64(double %40, double %27, double noundef 0xBFAB2150CB41E8BF) #140 %42 = call double @llvm.fma.f64(double %41, double %27, double noundef 0xBF9F8F72E7A848DE) #140 %43 = call double @llvm.fma.f64(double %42, double %27, double noundef 0x3FD5C6E60A097823) #140 %44 = fmul double %27, %43 br label %256 45: ; preds = %23 %46 = fcmp ugt double %1, 0x402471FCB6A7A8C0 br i1 %46, label %67, label %47 47: ; preds = %45 %48 = fadd double %1, 0xC0214EB56CCCDECA %49 = fadd double %48, 0x3CB51970714C7C25 %50 = call double @llvm.fma.f64(double %49, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) #140 %51 = call double @llvm.fma.f64(double %50, double %49, double noundef 0x3D417EC150ECDCE7) #140 %52 = call double @llvm.fma.f64(double %51, double %49, double noundef 0x3D7438F5EA1D10B2) #140 %53 = call double @llvm.fma.f64(double %52, double %49, double noundef 0xBDBEDAE7EC2C9E87) #140 %54 = call double @llvm.fma.f64(double %53, double %49, double noundef 0xBDECADD2C4B91F58) #140 %55 = call double @llvm.fma.f64(double %54, double %49, double noundef 0x3E34582C8EE12204) #140 %56 = call double @llvm.fma.f64(double %55, double %49, double noundef 0x3E5CEDA451DD20F8) #140 %57 = call double @llvm.fma.f64(double %56, double %49, double noundef 0xBEA30E8CC3165E2F) #140 %58 = call double @llvm.fma.f64(double %57, double %49, double noundef 0xBEC3324842BB1A2E) #140 %59 = call double @llvm.fma.f64(double %58, double %49, double noundef 0x3F07800BC54FBDDB) #140 %60 = call double @llvm.fma.f64(double %59, double %49, double noundef 0x3F1D79605276949A) #140 %61 = call double @llvm.fma.f64(double %60, double %49, double noundef 0xBF60E0D60385A629) #140 %62 = call double @llvm.fma.f64(double %61, double %49, double noundef 0xBF648E63600D82F3) #140 %63 = call double @llvm.fma.f64(double %62, double %49, double noundef 0x3FA68B984EC6493A) #140 %64 = call double @llvm.fma.f64(double %63, double %49, double noundef 0x3F900F7FCF183E0B) #140 %65 = call double @llvm.fma.f64(double %64, double %49, double noundef 0xBFD15F7977A772D4) #140 %66 = fmul double %49, %65 br label %256 67: ; preds = %45 %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %69 = icmp eq i32 %68, 200 br i1 %69, label %76, label %70 70: ; preds = %67 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %72 = icmp eq i32 %71, 350 br i1 %72, label %76, label %73 73: ; preds = %70 %74 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %75 = icmp eq i32 %74, 370 br i1 %75, label %76, label %78 76: ; preds = %73, %70, %67 %77 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit 78: ; preds = %73 %79 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %80 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %81 = and i32 %80, 2147483647 %82 = icmp eq i32 %81, 2146435072 %83 = icmp eq i32 %79, 0 %84 = select i1 %82, i1 %83, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %78, %76 %.05.in = phi i1 [ %77, %76 ], [ %84, %78 ] br i1 %.05.in, label %256, label %85 85: ; preds = %__nv_isinfd.exit %86 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %87 = fneg double %1 %88 = call double @llvm.fma.f64(double %87, double %86, double noundef 1.000000e+00) %89 = call double @llvm.fma.f64(double %88, double %88, double %88) %90 = call double @llvm.fma.f64(double %89, double %86, double %86) %91 = fmul double %90, %90 %92 = call double @llvm.fma.f64(double %91, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %93 = call double @llvm.fma.f64(double %92, double %91, double noundef 0xC05751787E247BD4) %94 = call double @llvm.fma.f64(double %93, double %91, double noundef 0x401704C4E5FC36B2) %95 = call double @llvm.fma.f64(double %94, double %91, double noundef 0xBFE15B747A2FD531) %96 = call double @llvm.fma.f64(double %95, double %91, double noundef 0x3FBA7FEACF6CB79B) %97 = call double @llvm.fma.f64(double %96, double %91, double noundef 0xBFAFFFFFEDDCF548) %98 = call double @llvm.fma.f64(double %97, double %91, double noundef 0x3FEFFFFFFFFFC9E5) %99 = call double @llvm.fma.f64(double %91, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %100 = call double @llvm.fma.f64(double %99, double %91, double noundef 0xC0C7A2FC1972F05A) %101 = call double @llvm.fma.f64(double %100, double %91, double noundef 0x407EBA131F7E5BEB) %102 = call double @llvm.fma.f64(double %101, double %91, double noundef 0xC0373B92E6E7CC7D) %103 = call double @llvm.fma.f64(double %102, double %91, double noundef 0x3FFA31BEE63A2F08) %104 = call double @llvm.fma.f64(double %103, double %91, double noundef 0xBFCAD320104D5D05) %105 = call double @llvm.fma.f64(double %104, double %91, double noundef 0x3FB0AAAA9C76D07E) %106 = call double @llvm.fma.f64(double %105, double %91, double noundef 0xBFBFFFFFFFFDACEC) %107 = call double @llvm.fma.f64(double %106, double %90, double %1) %108 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %109 = fmul double %108, 0x3FE9884533D43651 %110 = fmul double %109, %98 %111 = fmul double %107, 0x3FE45F306DC9C883 %112 = call i32 @llvm.nvvm.d2i.rn(double %111) #139 store i32 %112, i32* %q.i.i, align 4, !noalias !68 %113 = sitofp i32 %112 to double %114 = fneg double %113 %115 = call double @llvm.fma.f64(double %114, double noundef 0x3FF921FB54442D18, double %107) %116 = call double @llvm.fma.f64(double %114, double noundef 0x3C91A62633145C00, double %115) %117 = call double @llvm.fma.f64(double %114, double noundef 0x397B839A252049C0, double %116) %118 = call double @llvm.fabs.f64(double %107) %119 = fcmp ult double %118, 0x41E0000000000000 br i1 %119, label %__internal_trig_reduction_kerneld.exit.i, label %120 120: ; preds = %85 %121 = call fastcc double @__internal_trig_reduction_slowpathd(double %107, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %120, %85 %122 = phi i32 [ %.pre, %120 ], [ %112, %85 ] %t.i.i.0 = phi double [ %121, %120 ], [ %117, %85 ] %123 = and i32 %122, 3 %124 = uitofp i32 %123 to double %125 = fadd double %t.i.i.0, 0xBFE921FB54442D18 %126 = fmul double %124, 0x3FF921FB54442D18 %127 = fadd double %125, %126 %128 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %129 = icmp eq i32 %128, 350 br i1 %129, label %133, label %130 130: ; preds = %__internal_trig_reduction_kerneld.exit.i %131 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %132 = icmp eq i32 %131, 370 br i1 %132, label %133, label %192 133: ; preds = %130, %__internal_trig_reduction_kerneld.exit.i %134 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %135 = icmp eq i32 %134, 200 br i1 %135, label %142, label %136 136: ; preds = %133 %137 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %138 = icmp eq i32 %137, 350 br i1 %138, label %142, label %139 139: ; preds = %136 %140 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %141 = icmp eq i32 %140, 370 br i1 %141, label %142, label %145 142: ; preds = %139, %136, %133 %143 = call double @llvm.fabs.f64(double %127) %144 = fcmp oeq double %143, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 145: ; preds = %139 %146 = call i32 @llvm.nvvm.d2i.lo(double %127) #139 %147 = call i32 @llvm.nvvm.d2i.hi(double %127) #139 %148 = and i32 %147, 2147483647 %149 = icmp eq i32 %148, 2146435072 %150 = icmp eq i32 %146, 0 %151 = select i1 %149, i1 %150, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %145, %142 %.02.in = phi i1 [ %144, %142 ], [ %151, %145 ] br i1 %.02.in, label %152, label %154 152: ; preds = %__nv_isinfd.exit.i.i.i %153 = fmul double %127, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i 154: ; preds = %__nv_isinfd.exit.i.i.i %155 = fmul double %127, 0x3FE45F306DC9C883 %156 = call i32 @llvm.nvvm.d2i.rn(double %155) #139 store i32 %156, i32* %q.i.i.i.i, align 4, !noalias !68 %157 = sitofp i32 %156 to double %158 = fneg double %157 %159 = call double @llvm.fma.f64(double %158, double noundef 0x3FF921FB54442D18, double %127) %160 = call double @llvm.fma.f64(double %158, double noundef 0x3C91A62633145C00, double %159) %161 = call double @llvm.fma.f64(double %158, double noundef 0x397B839A252049C0, double %160) %162 = call double @llvm.fabs.f64(double %127) %163 = fcmp ult double %162, 0x41E0000000000000 br i1 %163, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %164 164: ; preds = %154 %165 = call fastcc double @__internal_trig_reduction_slowpathd(double %127, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre8 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %154, %164, %152 %i.i.i.i.0 = phi i32 [ 0, %152 ], [ %.pre8, %164 ], [ %156, %154 ] %.01 = phi double [ %153, %152 ], [ %165, %164 ], [ %161, %154 ] %166 = fmul double %.01, %.01 %167 = call double @llvm.fma.f64(double %166, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %168 = call double @llvm.fma.f64(double %167, double %166, double noundef 0xBE927E4F8E06E6D9) %169 = call double @llvm.fma.f64(double %168, double %166, double noundef 0x3EFA01A019DDBCE9) %170 = call double @llvm.fma.f64(double %169, double %166, double noundef 0xBF56C16C16C15D47) %171 = call double @llvm.fma.f64(double %170, double %166, double noundef 0x3FA5555555555551) %172 = call double @llvm.fma.f64(double %171, double %166, double noundef -5.000000e-01) %173 = call double @llvm.fma.f64(double %172, double %166, double noundef 1.000000e+00) %174 = call double @llvm.fma.f64(double %166, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %175 = call double @llvm.fma.f64(double %174, double %166, double noundef 0x3EC71DE369ACE392) %176 = call double @llvm.fma.f64(double %175, double %166, double noundef 0xBF2A01A019DB62A1) %177 = call double @llvm.fma.f64(double %176, double %166, double noundef 0x3F81111111110818) %178 = call double @llvm.fma.f64(double %177, double %166, double noundef 0xBFC5555555555554) %179 = call double @llvm.fma.f64(double %178, double %166, double noundef 0.000000e+00) %180 = call double @llvm.fma.f64(double %179, double %.01, double %.01) %181 = call i32 @llvm.nvvm.d2i.hi(double %180) #139 %182 = call i32 @llvm.nvvm.d2i.lo(double %180) #139 %183 = xor i32 %181, -2147483648 %184 = call double @llvm.nvvm.lohi.i2d(i32 %182, i32 %183) #139 %185 = and i32 %i.i.i.i.0, 1 %.not5 = icmp eq i32 %185, 0 %spec.select1 = select i1 %.not5, double %173, double %184 %186 = and i32 %i.i.i.i.0, 2 %.not6 = icmp eq i32 %186, 0 br i1 %.not6, label %__internal_cos_offset.exit, label %187 187: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i %188 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %189 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %190 = xor i32 %188, -2147483648 %191 = call double @llvm.nvvm.lohi.i2d(i32 %189, i32 %190) #139 br label %__internal_cos_offset.exit 192: ; preds = %130 %193 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %194 = icmp eq i32 %193, 200 br i1 %194, label %201, label %195 195: ; preds = %192 %196 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %197 = icmp eq i32 %196, 350 br i1 %197, label %201, label %198 198: ; preds = %195 %199 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %200 = icmp eq i32 %199, 370 br i1 %200, label %201, label %204 201: ; preds = %198, %195, %192 %202 = call double @llvm.fabs.f64(double %127) %203 = fcmp oeq double %202, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i 204: ; preds = %198 %205 = call i32 @llvm.nvvm.d2i.lo(double %127) #139 %206 = call i32 @llvm.nvvm.d2i.hi(double %127) #139 %207 = and i32 %206, 2147483647 %208 = icmp eq i32 %207, 2146435072 %209 = icmp eq i32 %205, 0 %210 = select i1 %208, i1 %209, i1 false br label %__nv_isinfd.exit.i.i __nv_isinfd.exit.i.i: ; preds = %204, %201 %.03.in = phi i1 [ %203, %201 ], [ %210, %204 ] br i1 %.03.in, label %211, label %213 211: ; preds = %__nv_isinfd.exit.i.i %212 = fmul double %127, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i 213: ; preds = %__nv_isinfd.exit.i.i %214 = fmul double %127, 0x3FE45F306DC9C883 %215 = call i32 @llvm.nvvm.d2i.rn(double %214) #139 store i32 %215, i32* %q.i.i.i, align 4, !noalias !68 %216 = sitofp i32 %215 to double %217 = fneg double %216 %218 = call double @llvm.fma.f64(double %217, double noundef 0x3FF921FB54442D18, double %127) %219 = call double @llvm.fma.f64(double %217, double noundef 0x3C91A62633145C00, double %218) %220 = call double @llvm.fma.f64(double %217, double noundef 0x397B839A252049C0, double %219) %221 = call double @llvm.fabs.f64(double %127) %222 = fcmp ult double %221, 0x41E0000000000000 br i1 %222, label %__internal_trig_reduction_kerneld.exit.i.i, label %223 223: ; preds = %213 %224 = call fastcc double @__internal_trig_reduction_slowpathd(double %127, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre7 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %223, %213 %225 = phi i32 [ %.pre7, %223 ], [ %215, %213 ] %t.i1.i.i.0 = phi double [ %224, %223 ], [ %220, %213 ] %phi.bo = add i32 %225, 1 br label %__internal_sin_cos_kerneld.exit.i.i __internal_sin_cos_kerneld.exit.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i, %211 %i.i.i.0 = phi i32 [ 1, %211 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i ] %z.i.i.0 = phi double [ %212, %211 ], [ %t.i1.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i ] %226 = shl i32 %i.i.i.0, 3 %227 = and i32 %226, 8 %228 = zext i32 %227 to i64 %229 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %228 %230 = fmul double %z.i.i.0, %z.i.i.0 %231 = and i32 %i.i.i.0, 1 %.not = icmp eq i32 %231, 0 %232 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %233 = getelementptr inbounds double, double addrspace(1)* %229, i64 1 %234 = load double, double addrspace(1)* %233, align 8 %235 = call double @llvm.fma.f64(double noundef %232, double %230, double %234) %236 = getelementptr inbounds double, double addrspace(1)* %229, i64 2 %237 = load double, double addrspace(1)* %236, align 8 %238 = call double @llvm.fma.f64(double %235, double %230, double %237) %239 = getelementptr inbounds double, double addrspace(1)* %229, i64 3 %240 = load double, double addrspace(1)* %239, align 8 %241 = call double @llvm.fma.f64(double %238, double %230, double %240) %242 = getelementptr inbounds double, double addrspace(1)* %229, i64 4 %243 = load double, double addrspace(1)* %242, align 8 %244 = call double @llvm.fma.f64(double %241, double %230, double %243) %245 = getelementptr inbounds double, double addrspace(1)* %229, i64 5 %246 = load double, double addrspace(1)* %245, align 8 %247 = call double @llvm.fma.f64(double %244, double %230, double %246) %248 = getelementptr inbounds double, double addrspace(1)* %229, i64 6 %249 = load double, double addrspace(1)* %248, align 8 %250 = call double @llvm.fma.f64(double %247, double %230, double %249) %251 = call double @llvm.fma.f64(double %250, double %z.i.i.0, double %z.i.i.0) %252 = call double @llvm.fma.f64(double %250, double %230, double noundef 1.000000e+00) %spec.select2 = select i1 %.not, double %251, double %252 %253 = and i32 %i.i.i.0, 2 %.not4 = icmp eq i32 %253, 0 %254 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not4, double %spec.select2, double %254 br label %__internal_cos_offset.exit __internal_cos_offset.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i, %187, %__internal_sin_cos_kerneld.exit.i.i %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i ], [ %191, %187 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i ] %255 = fmul double %110, %.0 br label %256 256: ; preds = %25, %__internal_cos_offset.exit, %__nv_isinfd.exit, %47, %3 %r.3 = phi double [ %22, %3 ], [ %44, %25 ], [ %66, %47 ], [ %255, %__internal_cos_offset.exit ], [ 0.000000e+00, %__nv_isinfd.exit ] ret double %r.3 } ; Function Attrs: noinline nounwind define dso_local double @__nv_j1(double %a) local_unnamed_addr #107 { %q.i.i.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x400353AABAD7B784 br i1 %2, label %20, label %3 3: ; preds = %0 %4 = call double @llvm.fma.f64(double %1, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) #140 %5 = call double @llvm.fma.f64(double %4, double %1, double noundef 0x3D5503F5A491E487) #140 %6 = call double @llvm.fma.f64(double %5, double %1, double noundef 0x3DC1F29940C2403A) #140 %7 = call double @llvm.fma.f64(double %6, double %1, double noundef 0x3D84CF9302EACDEF) #140 %8 = call double @llvm.fma.f64(double %7, double %1, double noundef 0xBE384A53DBBCA436) #140 %9 = call double @llvm.fma.f64(double %8, double %1, double noundef 0x3D9779BEE4F63BCC) #140 %10 = call double @llvm.fma.f64(double %9, double %1, double noundef 0x3EA6C160E414F3F0) #140 %11 = call double @llvm.fma.f64(double %10, double %1, double noundef 0x3D8F3D2F12430699) #140 %12 = call double @llvm.fma.f64(double %11, double %1, double noundef 0xBF0C71C72C0CED04) #140 %13 = call double @llvm.fma.f64(double %12, double %1, double noundef 0x3D659BCA506F1128) #140 %14 = call double @llvm.fma.f64(double %13, double %1, double noundef 0x3F65555555506982) #140 %15 = call double @llvm.fma.f64(double %14, double %1, double noundef 0x3D15BA0B425F1BFB) #140 %16 = call double @llvm.fma.f64(double %15, double %1, double noundef 0xBFB0000000000065) #140 %17 = call double @llvm.fma.f64(double %16, double %1, double noundef 0x3C8729A7253FB679) #140 %18 = call double @llvm.fma.f64(double %17, double %1, double noundef 5.000000e-01) #140 %19 = fmul double %1, %18 br label %252 20: ; preds = %0 %21 = fcmp ugt double %1, 0x4015B1D0574614EA br i1 %21, label %41, label %22 22: ; preds = %20 %23 = fadd double %1, 0xC00EA75575AF6F09 %24 = fadd double %23, 0x3CA60155A9D1B256 %25 = call double @llvm.fma.f64(double %24, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) #140 %26 = call double @llvm.fma.f64(double %25, double %24, double noundef 0x3D76013AC1E5E222) #140 %27 = call double @llvm.fma.f64(double %26, double %24, double noundef 0xBDBEC315D96D5F03) #140 %28 = call double @llvm.fma.f64(double %27, double %24, double noundef 0xBDF03BE1B4B57207) #140 %29 = call double @llvm.fma.f64(double %28, double %24, double noundef 0x3E345695F8B660F7) #140 %30 = call double @llvm.fma.f64(double %29, double %24, double noundef 0x3E617069FCFCFFF4) #140 %31 = call double @llvm.fma.f64(double %30, double %24, double noundef 0xBEA33825C36745EB) #140 %32 = call double @llvm.fma.f64(double %31, double %24, double noundef 0xBEC9799D4F90931B) #140 %33 = call double @llvm.fma.f64(double %32, double %24, double noundef 0x3F083A06E2F7DF13) #140 %34 = call double @llvm.fma.f64(double %33, double %24, double noundef 0x3F26E4C2D53A7CF6) #140 %35 = call double @llvm.fma.f64(double %34, double %24, double noundef 0xBF624B3409957B1C) #140 %36 = call double @llvm.fma.f64(double %35, double %24, double noundef 0xBF7537544C3325DF) #140 %37 = call double @llvm.fma.f64(double %36, double %24, double noundef 0x3FAB589D1DA138E2) #140 %38 = call double @llvm.fma.f64(double %37, double %24, double noundef 0x3FAAE8A39F51AD13) #140 %39 = call double @llvm.fma.f64(double %38, double %24, double noundef 0xBFD9C6CF582CBF7F) #140 %40 = fmul double %24, %39 br label %252 41: ; preds = %20 %42 = fcmp ugt double %1, 0x40213065E54C1AA9 br i1 %42, label %62, label %43 43: ; preds = %41 %44 = fadd double %1, 0xC01C0FF5F3B47250 %45 = fadd double %44, 0x3C9B226D9D243827 %46 = call double @llvm.fma.f64(double %45, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) #140 %47 = call double @llvm.fma.f64(double %46, double %45, double noundef 0xBD73B7DD4A6608FB) #140 %48 = call double @llvm.fma.f64(double %47, double %45, double noundef 0x3DBEC5E01482C750) #140 %49 = call double @llvm.fma.f64(double %48, double %45, double noundef 0x3DEC62BB9E882103) #140 %50 = call double @llvm.fma.f64(double %49, double %45, double noundef 0xBE34462EED732A23) #140 %51 = call double @llvm.fma.f64(double %50, double %45, double noundef 0xBE5D48DCAD7DC59B) #140 %52 = call double @llvm.fma.f64(double %51, double %45, double noundef 0x3EA3026DF29167E9) #140 %53 = call double @llvm.fma.f64(double %52, double %45, double noundef 0x3EC4255B0119666C) #140 %54 = call double @llvm.fma.f64(double %53, double %45, double noundef 0xBF0796A751B32693) #140 %55 = call double @llvm.fma.f64(double %54, double %45, double noundef 0xBF207358BBDBA284) #140 %56 = call double @llvm.fma.f64(double %55, double %45, double noundef 0x3F613FBC7D6927B1) #140 %57 = call double @llvm.fma.f64(double %56, double %45, double noundef 0x3F69A4B292E3DD75) #140 %58 = call double @llvm.fma.f64(double %57, double %45, double noundef 0xBFA80C83BDEEE4FB) #140 %59 = call double @llvm.fma.f64(double %58, double %45, double noundef 0xBF95E70DC60362BF) #140 %60 = call double @llvm.fma.f64(double %59, double %45, double noundef 0x3FD33518B3874E8A) #140 %61 = fmul double %45, %60 br label %252 62: ; preds = %41 %63 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %64 = icmp eq i32 %63, 200 br i1 %64, label %71, label %65 65: ; preds = %62 %66 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %67 = icmp eq i32 %66, 350 br i1 %67, label %71, label %68 68: ; preds = %65 %69 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %70 = icmp eq i32 %69, 370 br i1 %70, label %71, label %73 71: ; preds = %68, %65, %62 %72 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit 73: ; preds = %68 %74 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %75 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %76 = and i32 %75, 2147483647 %77 = icmp eq i32 %76, 2146435072 %78 = icmp eq i32 %74, 0 %79 = select i1 %77, i1 %78, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %73, %71 %.05.in = phi i1 [ %72, %71 ], [ %79, %73 ] br i1 %.05.in, label %252, label %80 80: ; preds = %__nv_isinfd.exit %81 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %82 = fneg double %1 %83 = call double @llvm.fma.f64(double %82, double %81, double noundef 1.000000e+00) %84 = call double @llvm.fma.f64(double %83, double %83, double %83) %85 = call double @llvm.fma.f64(double %84, double %81, double %81) %86 = fmul double %85, %85 %87 = call double @llvm.fma.f64(double %86, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %88 = call double @llvm.fma.f64(double %87, double %86, double noundef 0x405B89354DA77324) %89 = call double @llvm.fma.f64(double %88, double %86, double noundef 0xC01E352294653188) %90 = call double @llvm.fma.f64(double %89, double %86, double noundef 0x3FE9BC7DB16BD7A7) %91 = call double @llvm.fma.f64(double %90, double %86, double noundef 0xBFC8BFE1C3A4F741) %92 = call double @llvm.fma.f64(double %91, double %86, double noundef 0x3FC7FFFFF0D00BE2) %93 = call double @llvm.fma.f64(double %92, double %86, double noundef 0x3FF00000000068CC) %94 = call double @llvm.fma.f64(double %86, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %95 = call double @llvm.fma.f64(double %94, double %86, double noundef 0xC11764222AD7C910) %96 = call double @llvm.fma.f64(double %95, double %86, double noundef 0x40CEB02E0C306857) %97 = call double @llvm.fma.f64(double %96, double %86, double noundef 0xC08351859FA2B23B) %98 = call double @llvm.fma.f64(double %97, double %86, double noundef 0x403E65A07AF51F42) %99 = call double @llvm.fma.f64(double %98, double %86, double noundef 0xC002F2B817F77A57) %100 = call double @llvm.fma.f64(double %99, double %86, double noundef 0x3FD7BCC34DA069FD) %101 = call double @llvm.fma.f64(double %100, double %86, double noundef 0xBFC4FFFFF8A44463) %102 = call double @llvm.fma.f64(double %101, double %86, double noundef 0x3FD7FFFFFFFF5CD7) %103 = call double @llvm.fma.f64(double %102, double %85, double %1) %104 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %105 = fmul double %104, 0x3FE9884533D43651 %106 = fmul double %105, %93 %107 = fmul double %103, 0x3FE45F306DC9C883 %108 = call i32 @llvm.nvvm.d2i.rn(double %107) #139 store i32 %108, i32* %q.i.i, align 4, !noalias !68 %109 = sitofp i32 %108 to double %110 = fneg double %109 %111 = call double @llvm.fma.f64(double %110, double noundef 0x3FF921FB54442D18, double %103) %112 = call double @llvm.fma.f64(double %110, double noundef 0x3C91A62633145C00, double %111) %113 = call double @llvm.fma.f64(double %110, double noundef 0x397B839A252049C0, double %112) %114 = call double @llvm.fabs.f64(double %103) %115 = fcmp ult double %114, 0x41E0000000000000 br i1 %115, label %__internal_trig_reduction_kerneld.exit.i, label %116 116: ; preds = %80 %117 = call fastcc double @__internal_trig_reduction_slowpathd(double %103, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %116, %80 %118 = phi i32 [ %.pre, %116 ], [ %108, %80 ] %t.i.i.0 = phi double [ %117, %116 ], [ %113, %80 ] %119 = and i32 %118, 3 %120 = uitofp i32 %119 to double %121 = fadd double %t.i.i.0, 0xC002D97C7F3321D2 %122 = fmul double %120, 0x3FF921FB54442D18 %123 = fadd double %121, %122 %124 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %125 = icmp eq i32 %124, 350 br i1 %125, label %129, label %126 126: ; preds = %__internal_trig_reduction_kerneld.exit.i %127 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %128 = icmp eq i32 %127, 370 br i1 %128, label %129, label %188 129: ; preds = %126, %__internal_trig_reduction_kerneld.exit.i %130 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %131 = icmp eq i32 %130, 200 br i1 %131, label %138, label %132 132: ; preds = %129 %133 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %134 = icmp eq i32 %133, 350 br i1 %134, label %138, label %135 135: ; preds = %132 %136 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %137 = icmp eq i32 %136, 370 br i1 %137, label %138, label %141 138: ; preds = %135, %132, %129 %139 = call double @llvm.fabs.f64(double %123) %140 = fcmp oeq double %139, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 141: ; preds = %135 %142 = call i32 @llvm.nvvm.d2i.lo(double %123) #139 %143 = call i32 @llvm.nvvm.d2i.hi(double %123) #139 %144 = and i32 %143, 2147483647 %145 = icmp eq i32 %144, 2146435072 %146 = icmp eq i32 %142, 0 %147 = select i1 %145, i1 %146, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %141, %138 %.02.in = phi i1 [ %140, %138 ], [ %147, %141 ] br i1 %.02.in, label %148, label %150 148: ; preds = %__nv_isinfd.exit.i.i.i %149 = fmul double %123, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i 150: ; preds = %__nv_isinfd.exit.i.i.i %151 = fmul double %123, 0x3FE45F306DC9C883 %152 = call i32 @llvm.nvvm.d2i.rn(double %151) #139 store i32 %152, i32* %q.i.i.i.i, align 4, !noalias !68 %153 = sitofp i32 %152 to double %154 = fneg double %153 %155 = call double @llvm.fma.f64(double %154, double noundef 0x3FF921FB54442D18, double %123) %156 = call double @llvm.fma.f64(double %154, double noundef 0x3C91A62633145C00, double %155) %157 = call double @llvm.fma.f64(double %154, double noundef 0x397B839A252049C0, double %156) %158 = call double @llvm.fabs.f64(double %123) %159 = fcmp ult double %158, 0x41E0000000000000 br i1 %159, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %160 160: ; preds = %150 %161 = call fastcc double @__internal_trig_reduction_slowpathd(double %123, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre8 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %150, %160, %148 %i.i.i.i.0 = phi i32 [ 0, %148 ], [ %.pre8, %160 ], [ %152, %150 ] %.01 = phi double [ %149, %148 ], [ %161, %160 ], [ %157, %150 ] %162 = fmul double %.01, %.01 %163 = call double @llvm.fma.f64(double %162, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %164 = call double @llvm.fma.f64(double %163, double %162, double noundef 0xBE927E4F8E06E6D9) %165 = call double @llvm.fma.f64(double %164, double %162, double noundef 0x3EFA01A019DDBCE9) %166 = call double @llvm.fma.f64(double %165, double %162, double noundef 0xBF56C16C16C15D47) %167 = call double @llvm.fma.f64(double %166, double %162, double noundef 0x3FA5555555555551) %168 = call double @llvm.fma.f64(double %167, double %162, double noundef -5.000000e-01) %169 = call double @llvm.fma.f64(double %168, double %162, double noundef 1.000000e+00) %170 = call double @llvm.fma.f64(double %162, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %171 = call double @llvm.fma.f64(double %170, double %162, double noundef 0x3EC71DE369ACE392) %172 = call double @llvm.fma.f64(double %171, double %162, double noundef 0xBF2A01A019DB62A1) %173 = call double @llvm.fma.f64(double %172, double %162, double noundef 0x3F81111111110818) %174 = call double @llvm.fma.f64(double %173, double %162, double noundef 0xBFC5555555555554) %175 = call double @llvm.fma.f64(double %174, double %162, double noundef 0.000000e+00) %176 = call double @llvm.fma.f64(double %175, double %.01, double %.01) %177 = call i32 @llvm.nvvm.d2i.hi(double %176) #139 %178 = call i32 @llvm.nvvm.d2i.lo(double %176) #139 %179 = xor i32 %177, -2147483648 %180 = call double @llvm.nvvm.lohi.i2d(i32 %178, i32 %179) #139 %181 = and i32 %i.i.i.i.0, 1 %.not5 = icmp eq i32 %181, 0 %spec.select1 = select i1 %.not5, double %169, double %180 %182 = and i32 %i.i.i.i.0, 2 %.not6 = icmp eq i32 %182, 0 br i1 %.not6, label %__internal_cos_offset.exit, label %183 183: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i %184 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %185 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %186 = xor i32 %184, -2147483648 %187 = call double @llvm.nvvm.lohi.i2d(i32 %185, i32 %186) #139 br label %__internal_cos_offset.exit 188: ; preds = %126 %189 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %190 = icmp eq i32 %189, 200 br i1 %190, label %197, label %191 191: ; preds = %188 %192 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %193 = icmp eq i32 %192, 350 br i1 %193, label %197, label %194 194: ; preds = %191 %195 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %196 = icmp eq i32 %195, 370 br i1 %196, label %197, label %200 197: ; preds = %194, %191, %188 %198 = call double @llvm.fabs.f64(double %123) %199 = fcmp oeq double %198, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i 200: ; preds = %194 %201 = call i32 @llvm.nvvm.d2i.lo(double %123) #139 %202 = call i32 @llvm.nvvm.d2i.hi(double %123) #139 %203 = and i32 %202, 2147483647 %204 = icmp eq i32 %203, 2146435072 %205 = icmp eq i32 %201, 0 %206 = select i1 %204, i1 %205, i1 false br label %__nv_isinfd.exit.i.i __nv_isinfd.exit.i.i: ; preds = %200, %197 %.03.in = phi i1 [ %199, %197 ], [ %206, %200 ] br i1 %.03.in, label %207, label %209 207: ; preds = %__nv_isinfd.exit.i.i %208 = fmul double %123, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i 209: ; preds = %__nv_isinfd.exit.i.i %210 = fmul double %123, 0x3FE45F306DC9C883 %211 = call i32 @llvm.nvvm.d2i.rn(double %210) #139 store i32 %211, i32* %q.i.i.i, align 4, !noalias !68 %212 = sitofp i32 %211 to double %213 = fneg double %212 %214 = call double @llvm.fma.f64(double %213, double noundef 0x3FF921FB54442D18, double %123) %215 = call double @llvm.fma.f64(double %213, double noundef 0x3C91A62633145C00, double %214) %216 = call double @llvm.fma.f64(double %213, double noundef 0x397B839A252049C0, double %215) %217 = call double @llvm.fabs.f64(double %123) %218 = fcmp ult double %217, 0x41E0000000000000 br i1 %218, label %__internal_trig_reduction_kerneld.exit.i.i, label %219 219: ; preds = %209 %220 = call fastcc double @__internal_trig_reduction_slowpathd(double %123, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre7 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %219, %209 %221 = phi i32 [ %.pre7, %219 ], [ %211, %209 ] %t.i1.i.i.0 = phi double [ %220, %219 ], [ %216, %209 ] %phi.bo = add i32 %221, 1 br label %__internal_sin_cos_kerneld.exit.i.i __internal_sin_cos_kerneld.exit.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i, %207 %i.i.i.0 = phi i32 [ 1, %207 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i ] %z.i.i.0 = phi double [ %208, %207 ], [ %t.i1.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i ] %222 = shl i32 %i.i.i.0, 3 %223 = and i32 %222, 8 %224 = zext i32 %223 to i64 %225 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %224 %226 = fmul double %z.i.i.0, %z.i.i.0 %227 = and i32 %i.i.i.0, 1 %.not = icmp eq i32 %227, 0 %228 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %229 = getelementptr inbounds double, double addrspace(1)* %225, i64 1 %230 = load double, double addrspace(1)* %229, align 8 %231 = call double @llvm.fma.f64(double noundef %228, double %226, double %230) %232 = getelementptr inbounds double, double addrspace(1)* %225, i64 2 %233 = load double, double addrspace(1)* %232, align 8 %234 = call double @llvm.fma.f64(double %231, double %226, double %233) %235 = getelementptr inbounds double, double addrspace(1)* %225, i64 3 %236 = load double, double addrspace(1)* %235, align 8 %237 = call double @llvm.fma.f64(double %234, double %226, double %236) %238 = getelementptr inbounds double, double addrspace(1)* %225, i64 4 %239 = load double, double addrspace(1)* %238, align 8 %240 = call double @llvm.fma.f64(double %237, double %226, double %239) %241 = getelementptr inbounds double, double addrspace(1)* %225, i64 5 %242 = load double, double addrspace(1)* %241, align 8 %243 = call double @llvm.fma.f64(double %240, double %226, double %242) %244 = getelementptr inbounds double, double addrspace(1)* %225, i64 6 %245 = load double, double addrspace(1)* %244, align 8 %246 = call double @llvm.fma.f64(double %243, double %226, double %245) %247 = call double @llvm.fma.f64(double %246, double %z.i.i.0, double %z.i.i.0) %248 = call double @llvm.fma.f64(double %246, double %226, double noundef 1.000000e+00) %spec.select2 = select i1 %.not, double %247, double %248 %249 = and i32 %i.i.i.0, 2 %.not4 = icmp eq i32 %249, 0 %250 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not4, double %spec.select2, double %250 br label %__internal_cos_offset.exit __internal_cos_offset.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i, %183, %__internal_sin_cos_kerneld.exit.i.i %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i ], [ %187, %183 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i ] %251 = fmul double %106, %.0 br label %252 252: ; preds = %22, %__internal_cos_offset.exit, %__nv_isinfd.exit, %43, %3 %r.3 = phi double [ %19, %3 ], [ %40, %22 ], [ %61, %43 ], [ %251, %__internal_cos_offset.exit ], [ 0.000000e+00, %__nv_isinfd.exit ] %253 = fcmp olt double %a, 0.000000e+00 %254 = fneg double %r.3 %r.4 = select i1 %253, double %254, double %r.3 %255 = fcmp olt double %1, 1.000000e-30 %256 = fmul double %a, 5.000000e-01 %r.5 = select i1 %255, double %256, double %r.4 ret double %r.5 } ; Function Attrs: noinline nounwind define dso_local double @__nv_y0(double %a) local_unnamed_addr #108 { %q.i.i.i.i9 = alloca i32, align 4 %q.i.i.i.i.i = alloca i32, align 4 %q.i.i.i20 = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x3FE97F4A8F9D3F28 br i1 %2, label %335, label %3 3: ; preds = %0 %4 = fmul double %a, %a %5 = call double @llvm.fma.f64(double %4, double noundef 0x3C8EFBD0A1B77C65, double noundef 0xBD13098C51C18514) #140 %6 = call double @llvm.fma.f64(double %5, double %4, double noundef 0x3D923102D2F5F2F5) #140 %7 = call double @llvm.fma.f64(double %6, double %4, double noundef 0xBE0A5F2DEE7D526E) #140 %8 = call double @llvm.fma.f64(double %7, double %4, double noundef 0x3E7BB77E758B38AF) #140 %9 = call double @llvm.fma.f64(double %8, double %4, double noundef 0xBEE3D1A206EC4F36) #140 %10 = call double @llvm.fma.f64(double %9, double %4, double noundef 0x3F4183DCD3ED6294) #140 %11 = call double @llvm.fma.f64(double %10, double %4, double noundef 0xBF903921CF04F123) #140 %12 = call double @llvm.fma.f64(double %11, double %4, double noundef 0x3FC5DB69D7753176) #140 %13 = fadd double %4, 0xBFDBA96740000000 %14 = fadd double %13, 0x3E15A30C80000000 %15 = fmul double %14, %12 %16 = call i32 @llvm.nvvm.d2i.hi(double %1) #142 %17 = call i32 @llvm.nvvm.d2i.lo(double %1) #142 %18 = icmp slt i32 %16, 1048576 br i1 %18, label %19, label %23 19: ; preds = %3 %20 = fmul double %1, 0x4350000000000000 %21 = call i32 @llvm.nvvm.d2i.hi(double %20) #142 %22 = call i32 @llvm.nvvm.d2i.lo(double %20) #142 br label %23 23: ; preds = %19, %3 %.05 = phi double [ %20, %19 ], [ %1, %3 ] %ihi.i.0 = phi i32 [ %21, %19 ], [ %16, %3 ] %ilo.i.0 = phi i32 [ %22, %19 ], [ %17, %3 ] %e.i.0 = phi i32 [ -1077, %19 ], [ -1023, %3 ] %24 = add i32 %ihi.i.0, -1 %25 = icmp ult i32 %24, 2146435071 br i1 %25, label %26, label %75 26: ; preds = %23 %27 = lshr i32 %ihi.i.0, 20 %28 = add nsw i32 %e.i.0, %27 %29 = and i32 %ihi.i.0, -2146435073 %30 = or i32 %29, 1072693248 %31 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %30) #142 %32 = icmp sgt i32 %30, 1073127582 br i1 %32, label %33, label %39 33: ; preds = %26 %34 = call i32 @llvm.nvvm.d2i.lo(double %31) #142 %35 = call i32 @llvm.nvvm.d2i.hi(double %31) #142 %36 = add i32 %35, -1048576 %37 = call double @llvm.nvvm.lohi.i2d(i32 %34, i32 %36) #142 %38 = add nsw i32 %28, 1 br label %39 39: ; preds = %33, %26 %m.i.0 = phi double [ %37, %33 ], [ %31, %26 ] %e.i.1 = phi i32 [ %38, %33 ], [ %28, %26 ] %40 = fadd double %m.i.0, -1.000000e+00 %41 = fadd double %m.i.0, 1.000000e+00 %42 = call double @llvm.nvvm.rcp.approx.ftz.d(double %41) #142 %43 = fneg double %41 %44 = call double @llvm.fma.f64(double %43, double %42, double noundef 1.000000e+00) #140 %45 = call double @llvm.fma.f64(double %44, double %44, double %44) #140 %46 = call double @llvm.fma.f64(double %45, double %42, double %42) #140 %47 = fmul double %40, %46 %48 = fadd double %47, %47 %49 = fmul double %48, %48 %50 = call double @llvm.fma.f64(double %49, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %51 = call double @llvm.fma.f64(double %50, double %49, double noundef 0x3EF3B2669F02676F) #140 %52 = call double @llvm.fma.f64(double %51, double %49, double noundef 0x3F1745CBA9AB0956) #140 %53 = call double @llvm.fma.f64(double %52, double %49, double noundef 0x3F3C71C72D1B5154) #140 %54 = call double @llvm.fma.f64(double %53, double %49, double noundef 0x3F624924923BE72D) #140 %55 = call double @llvm.fma.f64(double %54, double %49, double noundef 0x3F8999999999A3C4) #140 %56 = call double @llvm.fma.f64(double %55, double %49, double noundef 0x3FB5555555555554) #140 %57 = fsub double %40, %48 %58 = fmul double %57, 2.000000e+00 %59 = fneg double %48 %60 = call double @llvm.fma.f64(double %59, double %40, double %58) #140 %61 = fmul double %46, %60 %62 = fmul double %49, %56 %63 = call double @llvm.fma.f64(double %62, double %48, double %61) #140 %64 = xor i32 %e.i.1, -2147483648 %65 = call double @llvm.nvvm.lohi.i2d(i32 %64, i32 noundef 1127219200) #142 %66 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %67 = fsub double %65, %66 %68 = call double @llvm.fma.f64(double %67, double noundef 0x3FE62E42FEFA39EF, double %48) #140 %69 = fneg double %67 %70 = call double @llvm.fma.f64(double %69, double noundef 0x3FE62E42FEFA39EF, double %68) #140 %71 = fsub double %70, %48 %72 = fsub double %63, %71 %73 = call double @llvm.fma.f64(double %67, double noundef 0x3C7ABC9E3B39803F, double %72) #140 %74 = fadd double %68, %73 br label %__nv_log.exit 75: ; preds = %23 %76 = call double @llvm.fma.f64(double %.05, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %77 = call i32 @llvm.nvvm.d2i.hi(double %.05) #142 %78 = bitcast i32 %77 to float %79 = fcmp oeq float %78, 0.000000e+00 %q.i3.0 = select i1 %79, double 0xFFF0000000000000, double %76 br label %__nv_log.exit __nv_log.exit: ; preds = %75, %39 %q.i3.1 = phi double [ %74, %39 ], [ %q.i3.0, %75 ] %80 = fmul double %q.i3.1, 0x3FE45F306DC9C883 %81 = fcmp ugt double %1, 0x400FB319F277BBE5 br i1 %81, label %102, label %82 82: ; preds = %__nv_log.exit %83 = fadd double %1, 0xC0033D152E971B40 %84 = fadd double %83, 0x3CA0F539D7DA258E %85 = call double @llvm.fma.f64(double %84, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) #140 %86 = call double @llvm.fma.f64(double %85, double %84, double noundef 0x3D3FAB983CAE498B) #140 %87 = call double @llvm.fma.f64(double %86, double %84, double noundef 0x3D7CD7C018579B88) #140 %88 = call double @llvm.fma.f64(double %87, double %84, double noundef 0xBDBBDD2342D64FDD) #140 %89 = call double @llvm.fma.f64(double %88, double %84, double noundef 0xBDF5C2D9416B1E2B) #140 %90 = call double @llvm.fma.f64(double %89, double %84, double noundef 0x3E32951D73174DD5) #140 %91 = call double @llvm.fma.f64(double %90, double %84, double noundef 0x3E67FF99802CAEB5) #140 %92 = call double @llvm.fma.f64(double %91, double %84, double noundef 0xBEA1CCE305C4C9F7) #140 %93 = call double @llvm.fma.f64(double %92, double %84, double noundef 0xBED232C77E29E1BB) #140 %94 = call double @llvm.fma.f64(double %93, double %84, double noundef 0x3F06ED3B9F0EF757) #140 %95 = call double @llvm.fma.f64(double %94, double %84, double noundef 0x3F315382BA096A62) #140 %96 = call double @llvm.fma.f64(double %95, double %84, double noundef 0xBF61F992590D1AE4) #140 %97 = call double @llvm.fma.f64(double %96, double %84, double noundef 0xBF81BB1CBE1A465F) #140 %98 = call double @llvm.fma.f64(double %97, double %84, double noundef 0x3FACFAE864368D84) #140 %99 = call double @llvm.fma.f64(double %98, double %84, double noundef 0x3FBBA1DEEA0294A3) #140 %100 = call double @llvm.fma.f64(double %99, double %84, double noundef 0xBFE09CDB36551280) #140 %101 = fmul double %84, %100 br label %__nv_j0.exit 102: ; preds = %__nv_log.exit %103 = fcmp ugt double %1, 0x401C58FD1A62F5EC br i1 %103, label %124, label %104 104: ; preds = %102 %105 = fadd double %1, 0xC016148F5B2C2E45 %106 = fadd double %105, 0xBC975054CD60A517 %107 = call double @llvm.fma.f64(double %106, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) #140 %108 = call double @llvm.fma.f64(double %107, double %106, double noundef 0xBD4100E33E3FB413) #140 %109 = call double @llvm.fma.f64(double %108, double %106, double noundef 0xBD7846076D004627) #140 %110 = call double @llvm.fma.f64(double %109, double %106, double noundef 0x3DBE2F1D4F90720D) #140 %111 = call double @llvm.fma.f64(double %110, double %106, double noundef 0x3DF1D03B1E4A119B) #140 %112 = call double @llvm.fma.f64(double %111, double %106, double noundef 0xBE341D72B1B3BCE9) #140 %113 = call double @llvm.fma.f64(double %112, double %106, double noundef 0xBE62DA37CE2A9EF8) #140 %114 = call double @llvm.fma.f64(double %113, double %106, double noundef 0x3EA32E6D9974F763) #140 %115 = call double @llvm.fma.f64(double %114, double %106, double noundef 0x3ECAD77D744A1879) #140 %116 = call double @llvm.fma.f64(double %115, double %106, double noundef 0xBF0863F481A37337) #140 %117 = call double @llvm.fma.f64(double %116, double %106, double noundef 0xBF26F641F418F0F4) #140 %118 = call double @llvm.fma.f64(double %117, double %106, double noundef 0x3F627E31FE9A969E) #140 %119 = call double @llvm.fma.f64(double %118, double %106, double noundef 0x3F72F7FFE9025628) #140 %120 = call double @llvm.fma.f64(double %119, double %106, double noundef 0xBFAB2150CB41E8BF) #140 %121 = call double @llvm.fma.f64(double %120, double %106, double noundef 0xBF9F8F72E7A848DE) #140 %122 = call double @llvm.fma.f64(double %121, double %106, double noundef 0x3FD5C6E60A097823) #140 %123 = fmul double %106, %122 br label %__nv_j0.exit 124: ; preds = %102 %125 = fcmp ugt double %1, 0x402471FCB6A7A8C0 br i1 %125, label %146, label %126 126: ; preds = %124 %127 = fadd double %1, 0xC0214EB56CCCDECA %128 = fadd double %127, 0x3CB51970714C7C25 %129 = call double @llvm.fma.f64(double %128, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) #140 %130 = call double @llvm.fma.f64(double %129, double %128, double noundef 0x3D417EC150ECDCE7) #140 %131 = call double @llvm.fma.f64(double %130, double %128, double noundef 0x3D7438F5EA1D10B2) #140 %132 = call double @llvm.fma.f64(double %131, double %128, double noundef 0xBDBEDAE7EC2C9E87) #140 %133 = call double @llvm.fma.f64(double %132, double %128, double noundef 0xBDECADD2C4B91F58) #140 %134 = call double @llvm.fma.f64(double %133, double %128, double noundef 0x3E34582C8EE12204) #140 %135 = call double @llvm.fma.f64(double %134, double %128, double noundef 0x3E5CEDA451DD20F8) #140 %136 = call double @llvm.fma.f64(double %135, double %128, double noundef 0xBEA30E8CC3165E2F) #140 %137 = call double @llvm.fma.f64(double %136, double %128, double noundef 0xBEC3324842BB1A2E) #140 %138 = call double @llvm.fma.f64(double %137, double %128, double noundef 0x3F07800BC54FBDDB) #140 %139 = call double @llvm.fma.f64(double %138, double %128, double noundef 0x3F1D79605276949A) #140 %140 = call double @llvm.fma.f64(double %139, double %128, double noundef 0xBF60E0D60385A629) #140 %141 = call double @llvm.fma.f64(double %140, double %128, double noundef 0xBF648E63600D82F3) #140 %142 = call double @llvm.fma.f64(double %141, double %128, double noundef 0x3FA68B984EC6493A) #140 %143 = call double @llvm.fma.f64(double %142, double %128, double noundef 0x3F900F7FCF183E0B) #140 %144 = call double @llvm.fma.f64(double %143, double %128, double noundef 0xBFD15F7977A772D4) #140 %145 = fmul double %128, %144 br label %__nv_j0.exit 146: ; preds = %124 %147 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %148 = icmp eq i32 %147, 200 br i1 %148, label %155, label %149 149: ; preds = %146 %150 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %151 = icmp eq i32 %150, 350 br i1 %151, label %155, label %152 152: ; preds = %149 %153 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %154 = icmp eq i32 %153, 370 br i1 %154, label %155, label %157 155: ; preds = %152, %149, %146 %156 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 157: ; preds = %152 %158 = and i32 %16, 2147483647 %159 = icmp eq i32 %158, 2146435072 %160 = icmp eq i32 %17, 0 %161 = select i1 %159, i1 %160, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %157, %155 %.012.in = phi i1 [ %156, %155 ], [ %161, %157 ] br i1 %.012.in, label %__nv_j0.exit, label %162 162: ; preds = %__nv_isinfd.exit.i %163 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %164 = fneg double %1 %165 = call double @llvm.fma.f64(double %164, double %163, double noundef 1.000000e+00) %166 = call double @llvm.fma.f64(double %165, double %165, double %165) %167 = call double @llvm.fma.f64(double %166, double %163, double %163) %168 = fmul double %167, %167 %169 = call double @llvm.fma.f64(double %168, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %170 = call double @llvm.fma.f64(double %169, double %168, double noundef 0xC05751787E247BD4) %171 = call double @llvm.fma.f64(double %170, double %168, double noundef 0x401704C4E5FC36B2) %172 = call double @llvm.fma.f64(double %171, double %168, double noundef 0xBFE15B747A2FD531) %173 = call double @llvm.fma.f64(double %172, double %168, double noundef 0x3FBA7FEACF6CB79B) %174 = call double @llvm.fma.f64(double %173, double %168, double noundef 0xBFAFFFFFEDDCF548) %175 = call double @llvm.fma.f64(double %174, double %168, double noundef 0x3FEFFFFFFFFFC9E5) %176 = call double @llvm.fma.f64(double %168, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %177 = call double @llvm.fma.f64(double %176, double %168, double noundef 0xC0C7A2FC1972F05A) %178 = call double @llvm.fma.f64(double %177, double %168, double noundef 0x407EBA131F7E5BEB) %179 = call double @llvm.fma.f64(double %178, double %168, double noundef 0xC0373B92E6E7CC7D) %180 = call double @llvm.fma.f64(double %179, double %168, double noundef 0x3FFA31BEE63A2F08) %181 = call double @llvm.fma.f64(double %180, double %168, double noundef 0xBFCAD320104D5D05) %182 = call double @llvm.fma.f64(double %181, double %168, double noundef 0x3FB0AAAA9C76D07E) %183 = call double @llvm.fma.f64(double %182, double %168, double noundef 0xBFBFFFFFFFFDACEC) %184 = call double @llvm.fma.f64(double %183, double %167, double %1) %185 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %186 = fmul double %185, 0x3FE9884533D43651 %187 = fmul double %186, %175 %188 = fmul double %184, 0x3FE45F306DC9C883 %189 = call i32 @llvm.nvvm.d2i.rn(double %188) #139 store i32 %189, i32* %q.i.i.i20, align 4, !noalias !68 %190 = sitofp i32 %189 to double %191 = fneg double %190 %192 = call double @llvm.fma.f64(double %191, double noundef 0x3FF921FB54442D18, double %184) %193 = call double @llvm.fma.f64(double %191, double noundef 0x3C91A62633145C00, double %192) %194 = call double @llvm.fma.f64(double %191, double noundef 0x397B839A252049C0, double %193) %195 = call double @llvm.fabs.f64(double %184) %196 = fcmp ult double %195, 0x41E0000000000000 br i1 %196, label %__internal_trig_reduction_kerneld.exit.i.i25, label %197 197: ; preds = %162 %198 = call fastcc double @__internal_trig_reduction_slowpathd(double %184, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i20) #139 %.pre = load i32, i32* %q.i.i.i20, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25 __internal_trig_reduction_kerneld.exit.i.i25: ; preds = %197, %162 %199 = phi i32 [ %.pre, %197 ], [ %189, %162 ] %t.i.i.i19.0 = phi double [ %198, %197 ], [ %194, %162 ] %200 = and i32 %199, 3 %201 = uitofp i32 %200 to double %202 = fadd double %t.i.i.i19.0, 0xBFE921FB54442D18 %203 = fmul double %201, 0x3FF921FB54442D18 %204 = fadd double %202, %203 %205 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %206 = icmp eq i32 %205, 350 br i1 %206, label %210, label %207 207: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25 %208 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %209 = icmp eq i32 %208, 370 br i1 %209, label %210, label %269 210: ; preds = %207, %__internal_trig_reduction_kerneld.exit.i.i25 %211 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %212 = icmp eq i32 %211, 200 br i1 %212, label %219, label %213 213: ; preds = %210 %214 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %215 = icmp eq i32 %214, 350 br i1 %215, label %219, label %216 216: ; preds = %213 %217 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %218 = icmp eq i32 %217, 370 br i1 %218, label %219, label %222 219: ; preds = %216, %213, %210 %220 = call double @llvm.fabs.f64(double %204) %221 = fcmp oeq double %220, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i 222: ; preds = %216 %223 = call i32 @llvm.nvvm.d2i.lo(double %204) #139 %224 = call i32 @llvm.nvvm.d2i.hi(double %204) #139 %225 = and i32 %224, 2147483647 %226 = icmp eq i32 %225, 2146435072 %227 = icmp eq i32 %223, 0 %228 = select i1 %226, i1 %227, i1 false br label %__nv_isinfd.exit.i.i.i.i __nv_isinfd.exit.i.i.i.i: ; preds = %222, %219 %.08.in = phi i1 [ %221, %219 ], [ %228, %222 ] br i1 %.08.in, label %229, label %231 229: ; preds = %__nv_isinfd.exit.i.i.i.i %230 = fmul double %204, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i 231: ; preds = %__nv_isinfd.exit.i.i.i.i %232 = fmul double %204, 0x3FE45F306DC9C883 %233 = call i32 @llvm.nvvm.d2i.rn(double %232) #139 store i32 %233, i32* %q.i.i.i.i.i, align 4, !noalias !68 %234 = sitofp i32 %233 to double %235 = fneg double %234 %236 = call double @llvm.fma.f64(double %235, double noundef 0x3FF921FB54442D18, double %204) %237 = call double @llvm.fma.f64(double %235, double noundef 0x3C91A62633145C00, double %236) %238 = call double @llvm.fma.f64(double %235, double noundef 0x397B839A252049C0, double %237) %239 = call double @llvm.fabs.f64(double %204) %240 = fcmp ult double %239, 0x41E0000000000000 br i1 %240, label %__internal_trig_reduction_kerneld.exit.i.i.i.i, label %241 241: ; preds = %231 %242 = call fastcc double @__internal_trig_reduction_slowpathd(double %204, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i) #139 %.pre17 = load i32, i32* %q.i.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i.i: ; preds = %231, %241, %229 %i.i.i.i.i.0 = phi i32 [ 0, %229 ], [ %.pre17, %241 ], [ %233, %231 ] %.07 = phi double [ %230, %229 ], [ %242, %241 ], [ %238, %231 ] %243 = fmul double %.07, %.07 %244 = call double @llvm.fma.f64(double %243, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %245 = call double @llvm.fma.f64(double %244, double %243, double noundef 0xBE927E4F8E06E6D9) %246 = call double @llvm.fma.f64(double %245, double %243, double noundef 0x3EFA01A019DDBCE9) %247 = call double @llvm.fma.f64(double %246, double %243, double noundef 0xBF56C16C16C15D47) %248 = call double @llvm.fma.f64(double %247, double %243, double noundef 0x3FA5555555555551) %249 = call double @llvm.fma.f64(double %248, double %243, double noundef -5.000000e-01) %250 = call double @llvm.fma.f64(double %249, double %243, double noundef 1.000000e+00) %251 = call double @llvm.fma.f64(double %243, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %252 = call double @llvm.fma.f64(double %251, double %243, double noundef 0x3EC71DE369ACE392) %253 = call double @llvm.fma.f64(double %252, double %243, double noundef 0xBF2A01A019DB62A1) %254 = call double @llvm.fma.f64(double %253, double %243, double noundef 0x3F81111111110818) %255 = call double @llvm.fma.f64(double %254, double %243, double noundef 0xBFC5555555555554) %256 = call double @llvm.fma.f64(double %255, double %243, double noundef 0.000000e+00) %257 = call double @llvm.fma.f64(double %256, double %.07, double %.07) %258 = call i32 @llvm.nvvm.d2i.hi(double %257) #139 %259 = call i32 @llvm.nvvm.d2i.lo(double %257) #139 %260 = xor i32 %258, -2147483648 %261 = call double @llvm.nvvm.lohi.i2d(i32 %259, i32 %260) #139 %262 = and i32 %i.i.i.i.i.0, 1 %.not14 = icmp eq i32 %262, 0 %spec.select1 = select i1 %.not14, double %250, double %261 %263 = and i32 %i.i.i.i.i.0, 2 %.not15 = icmp eq i32 %263, 0 br i1 %.not15, label %__internal_cos_offset.exit.i, label %264 264: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i %265 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %266 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %267 = xor i32 %265, -2147483648 %268 = call double @llvm.nvvm.lohi.i2d(i32 %266, i32 %267) #139 br label %__internal_cos_offset.exit.i 269: ; preds = %207 %270 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %271 = icmp eq i32 %270, 200 br i1 %271, label %278, label %272 272: ; preds = %269 %273 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %274 = icmp eq i32 %273, 350 br i1 %274, label %278, label %275 275: ; preds = %272 %276 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %277 = icmp eq i32 %276, 370 br i1 %277, label %278, label %281 278: ; preds = %275, %272, %269 %279 = call double @llvm.fabs.f64(double %204) %280 = fcmp oeq double %279, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i26 281: ; preds = %275 %282 = call i32 @llvm.nvvm.d2i.lo(double %204) #139 %283 = call i32 @llvm.nvvm.d2i.hi(double %204) #139 %284 = and i32 %283, 2147483647 %285 = icmp eq i32 %284, 2146435072 %286 = icmp eq i32 %282, 0 %287 = select i1 %285, i1 %286, i1 false br label %__nv_isinfd.exit.i.i.i26 __nv_isinfd.exit.i.i.i26: ; preds = %281, %278 %.09.in = phi i1 [ %280, %278 ], [ %287, %281 ] br i1 %.09.in, label %288, label %290 288: ; preds = %__nv_isinfd.exit.i.i.i26 %289 = fmul double %204, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i 290: ; preds = %__nv_isinfd.exit.i.i.i26 %291 = fmul double %204, 0x3FE45F306DC9C883 %292 = call i32 @llvm.nvvm.d2i.rn(double %291) #139 store i32 %292, i32* %q.i.i.i.i9, align 4, !noalias !68 %293 = sitofp i32 %292 to double %294 = fneg double %293 %295 = call double @llvm.fma.f64(double %294, double noundef 0x3FF921FB54442D18, double %204) %296 = call double @llvm.fma.f64(double %294, double noundef 0x3C91A62633145C00, double %295) %297 = call double @llvm.fma.f64(double %294, double noundef 0x397B839A252049C0, double %296) %298 = call double @llvm.fabs.f64(double %204) %299 = fcmp ult double %298, 0x41E0000000000000 br i1 %299, label %__internal_trig_reduction_kerneld.exit.i.i.i27, label %300 300: ; preds = %290 %301 = call fastcc double @__internal_trig_reduction_slowpathd(double %204, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i9) #139 %.pre16 = load i32, i32* %q.i.i.i.i9, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i27 __internal_trig_reduction_kerneld.exit.i.i.i27: ; preds = %300, %290 %302 = phi i32 [ %.pre16, %300 ], [ %292, %290 ] %t.i1.i.i.i.0 = phi double [ %301, %300 ], [ %297, %290 ] %phi.bo10 = add i32 %302, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i __internal_sin_cos_kerneld.exit.i.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i27, %288 %i.i.i.i17.0 = phi i32 [ 1, %288 ], [ %phi.bo10, %__internal_trig_reduction_kerneld.exit.i.i.i27 ] %z.i.i.i16.0 = phi double [ %289, %288 ], [ %t.i1.i.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i.i27 ] %303 = shl i32 %i.i.i.i17.0, 3 %304 = and i32 %303, 8 %305 = zext i32 %304 to i64 %306 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %305 %307 = fmul double %z.i.i.i16.0, %z.i.i.i16.0 %308 = and i32 %i.i.i.i17.0, 1 %.not11 = icmp eq i32 %308, 0 %309 = select i1 %.not11, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %310 = getelementptr inbounds double, double addrspace(1)* %306, i64 1 %311 = load double, double addrspace(1)* %310, align 8 %312 = call double @llvm.fma.f64(double noundef %309, double %307, double %311) %313 = getelementptr inbounds double, double addrspace(1)* %306, i64 2 %314 = load double, double addrspace(1)* %313, align 8 %315 = call double @llvm.fma.f64(double %312, double %307, double %314) %316 = getelementptr inbounds double, double addrspace(1)* %306, i64 3 %317 = load double, double addrspace(1)* %316, align 8 %318 = call double @llvm.fma.f64(double %315, double %307, double %317) %319 = getelementptr inbounds double, double addrspace(1)* %306, i64 4 %320 = load double, double addrspace(1)* %319, align 8 %321 = call double @llvm.fma.f64(double %318, double %307, double %320) %322 = getelementptr inbounds double, double addrspace(1)* %306, i64 5 %323 = load double, double addrspace(1)* %322, align 8 %324 = call double @llvm.fma.f64(double %321, double %307, double %323) %325 = getelementptr inbounds double, double addrspace(1)* %306, i64 6 %326 = load double, double addrspace(1)* %325, align 8 %327 = call double @llvm.fma.f64(double %324, double %307, double %326) %328 = call double @llvm.fma.f64(double %327, double %z.i.i.i16.0, double %z.i.i.i16.0) %329 = call double @llvm.fma.f64(double %327, double %307, double noundef 1.000000e+00) %spec.select2 = select i1 %.not11, double %328, double %329 %330 = and i32 %i.i.i.i17.0, 2 %.not13 = icmp eq i32 %330, 0 %331 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.111 = select i1 %.not13, double %spec.select2, double %331 br label %__internal_cos_offset.exit.i __internal_cos_offset.exit.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i, %264, %__internal_sin_cos_kerneld.exit.i.i.i %.06 = phi double [ %.111, %__internal_sin_cos_kerneld.exit.i.i.i ], [ %268, %264 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i.i ] %332 = fmul double %187, %.06 br label %__nv_j0.exit __nv_j0.exit: ; preds = %104, %__internal_cos_offset.exit.i, %__nv_isinfd.exit.i, %126, %82 %r.i.3 = phi double [ %101, %82 ], [ %123, %104 ], [ %145, %126 ], [ %332, %__internal_cos_offset.exit.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %333 = fmul double %80, %r.i.3 %334 = fadd double %15, %333 br label %604 335: ; preds = %0 %336 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %336, label %364, label %337 337: ; preds = %335 %338 = fadd double %1, 0xBFEC982EB8D417EA %339 = fadd double %338, 0xBC7EA9D270347F83 %340 = call double @llvm.fma.f64(double %339, double noundef 0xBF01630132D75FC3, double noundef 0x3F3D054B05D3C52D) %341 = call double @llvm.fma.f64(double %340, double %339, double noundef 0xBF66DAC0B314B2E5) %342 = call double @llvm.fma.f64(double %341, double %339, double noundef 0x3F86A5D1DE76263F) %343 = call double @llvm.fma.f64(double %342, double %339, double noundef 0xBF9FD16652824592) %344 = call double @llvm.fma.f64(double %343, double %339, double noundef 0x3FB0F69A9CC79FBD) %345 = call double @llvm.fma.f64(double %344, double %339, double noundef 0xBFBCCE40EF15583E) %346 = call double @llvm.fma.f64(double %345, double %339, double noundef 0x3FC446B11780E4FC) %347 = call double @llvm.fma.f64(double %346, double %339, double noundef 0xBFC89AE7E19621F7) %348 = call double @llvm.fma.f64(double %347, double %339, double noundef 0x3FCACBA1B38EF7B8) %349 = call double @llvm.fma.f64(double %348, double %339, double noundef 0xBFCB4166A03BBFA5) %350 = call double @llvm.fma.f64(double %349, double %339, double noundef 0x3FCACCA4D5D4889A) %351 = call double @llvm.fma.f64(double %350, double %339, double noundef 0xBFCA1455932B9392) %352 = call double @llvm.fma.f64(double %351, double %339, double noundef 0x3FC96D8DB8D844EC) %353 = call double @llvm.fma.f64(double %352, double %339, double noundef 0xBFC8F7FB77522EDF) %354 = call double @llvm.fma.f64(double %353, double %339, double noundef 0x3FC8C0926ABC9AB0) %355 = call double @llvm.fma.f64(double %354, double %339, double noundef 0xBFC8D35B8FEA468C) %356 = call double @llvm.fma.f64(double %355, double %339, double noundef 0x3FC9424B8A0C8F94) %357 = call double @llvm.fma.f64(double %356, double %339, double noundef 0xBFCA396A7F3403EF) %358 = call double @llvm.fma.f64(double %357, double %339, double noundef 0x3FCC068086C37055) %359 = call double @llvm.fma.f64(double %358, double %339, double noundef 0xBFCCF18E6A4C5C4E) %360 = call double @llvm.fma.f64(double %359, double %339, double noundef 0x3FCC3B1338AF4239) %361 = call double @llvm.fma.f64(double %360, double %339, double noundef 0xBFDF7E38A46D70DB) %362 = call double @llvm.fma.f64(double %361, double %339, double noundef 0x3FEC24371844B88A) %363 = fmul double %339, %362 br label %604 364: ; preds = %335 %365 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %365, label %393, label %366 366: ; preds = %364 %367 = fadd double %1, 0xC00FA9534D98569C %368 = fadd double %367, 0x3C9F06AE7804384E %369 = call double @llvm.fma.f64(double %368, double noundef 0xBCDAEA62AC8BDA68, double noundef 0xBCD2434958151AC7) %370 = call double @llvm.fma.f64(double %369, double %368, double noundef 0x3D11C24A40D33FE1) %371 = call double @llvm.fma.f64(double %370, double %368, double noundef 0x3D237CD62FA08CA4) %372 = call double @llvm.fma.f64(double %371, double %368, double noundef 0xBD43902E0298C52A) %373 = call double @llvm.fma.f64(double %372, double %368, double noundef 0xBD1DDAAD11CAB40F) %374 = call double @llvm.fma.f64(double %373, double %368, double noundef 0xBD5209D9F06D7DE4) %375 = call double @llvm.fma.f64(double %374, double %368, double noundef 0x3D8BB9F464468E1A) %376 = call double @llvm.fma.f64(double %375, double %368, double noundef 0xBDA8F67B07D1B440) %377 = call double @llvm.fma.f64(double %376, double %368, double noundef 0x3DC7C8D60F9EAECF) %378 = call double @llvm.fma.f64(double %377, double %368, double noundef 0xBDE9703405B49A8D) %379 = call double @llvm.fma.f64(double %378, double %368, double noundef 0x3E0A6B64E76417E4) %380 = call double @llvm.fma.f64(double %379, double %368, double noundef 0xBE2F6B5AFB2F1359) %381 = call double @llvm.fma.f64(double %380, double %368, double noundef 0x3E54526B71C21EC1) %382 = call double @llvm.fma.f64(double %381, double %368, double noundef 0xBE5776DBCBBC8E1D) %383 = call double @llvm.fma.f64(double %382, double %368, double noundef 0xBE93B211FC2DF90E) %384 = call double @llvm.fma.f64(double %383, double %368, double noundef 0xBED486372E8562DC) %385 = call double @llvm.fma.f64(double %384, double %368, double noundef 0x3F0AB2C1FBC3A254) %386 = call double @llvm.fma.f64(double %385, double %368, double noundef 0x3F299827653353B8) %387 = call double @llvm.fma.f64(double %386, double %368, double noundef 0xBF61E32BC4ED7084) %388 = call double @llvm.fma.f64(double %387, double %368, double noundef 0xBF7C116FDC599A09) %389 = call double @llvm.fma.f64(double %388, double %368, double noundef 0x3FADF6D59BF50C77) %390 = call double @llvm.fma.f64(double %389, double %368, double noundef 0x3FAA09C92903680B) %391 = call double @llvm.fma.f64(double %390, double %368, double noundef 0xBFD9C34256A12A0B) %392 = fmul double %368, %391 br label %604 393: ; preds = %364 %394 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %394, label %414, label %395 395: ; preds = %393 %396 = fadd double %1, 0xC01C581DC4E72103 %397 = fadd double %396, 0x3C99774A495F56CF %398 = call double @llvm.fma.f64(double %397, double noundef 0x3CF1CB3ABA718B8E, double noundef 0xBD3F443BB4F53D75) %399 = call double @llvm.fma.f64(double %398, double %397, double noundef 0xBD770F737BD6A786) %400 = call double @llvm.fma.f64(double %399, double %397, double noundef 0x3DBF0E9A20459E14) %401 = call double @llvm.fma.f64(double %400, double %397, double noundef 0x3DEFA6B137D5E108) %402 = call double @llvm.fma.f64(double %401, double %397, double noundef 0xBE344296729FB7FA) %403 = call double @llvm.fma.f64(double %402, double %397, double noundef 0xBE60A2813A80DFAA) %404 = call double @llvm.fma.f64(double %403, double %397, double noundef 0x3EA34AA737A83EB4) %405 = call double @llvm.fma.f64(double %404, double %397, double noundef 0x3EC6A9227332D03C) %406 = call double @llvm.fma.f64(double %405, double %397, double noundef 0xBF08177E4F93C81E) %407 = call double @llvm.fma.f64(double %406, double %397, double noundef 0xBF226DD71E391775) %408 = call double @llvm.fma.f64(double %407, double %397, double noundef 0x3F61D35E85FD7B22) %409 = call double @llvm.fma.f64(double %408, double %397, double noundef 0x3F6B2F14A955285C) %410 = call double @llvm.fma.f64(double %409, double %397, double noundef 0xBFA8969C64CBF388) %411 = call double @llvm.fma.f64(double %410, double %397, double noundef 0xBF95AEF611FC4D5A) %412 = call double @llvm.fma.f64(double %411, double %397, double noundef 0x3FD334CCA0697A5A) %413 = fmul double %397, %412 br label %604 414: ; preds = %393 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %416 = icmp eq i32 %415, 200 br i1 %416, label %423, label %417 417: ; preds = %414 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %419 = icmp eq i32 %418, 350 br i1 %419, label %423, label %420 420: ; preds = %417 %421 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %422 = icmp eq i32 %421, 370 br i1 %422, label %423, label %425 423: ; preds = %420, %417, %414 %424 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit 425: ; preds = %420 %426 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %427 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %428 = and i32 %427, 2147483647 %429 = icmp eq i32 %428, 2146435072 %430 = icmp eq i32 %426, 0 %431 = select i1 %429, i1 %430, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %425, %423 %.013.in = phi i1 [ %424, %423 ], [ %431, %425 ] br i1 %.013.in, label %604, label %432 432: ; preds = %__nv_isinfd.exit %433 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %434 = fneg double %1 %435 = call double @llvm.fma.f64(double %434, double %433, double noundef 1.000000e+00) %436 = call double @llvm.fma.f64(double %435, double %435, double %435) %437 = call double @llvm.fma.f64(double %436, double %433, double %433) %438 = fmul double %437, %437 %439 = call double @llvm.fma.f64(double %438, double noundef 0xC0C5E91E6AC3AD03, double noundef 0x4093F56A049CDDE7) %440 = call double @llvm.fma.f64(double %439, double %438, double noundef 0xC05572D39DFB8433) %441 = call double @llvm.fma.f64(double %440, double %438, double noundef 0x4016A6041CAA59E5) %442 = call double @llvm.fma.f64(double %441, double %438, double noundef 0xBFE155E3A0493880) %443 = call double @llvm.fma.f64(double %442, double %438, double noundef 0x3FBA7FB92F417F7F) %444 = call double @llvm.fma.f64(double %443, double %438, double noundef 0xBFAFFFFFB12E32F5) %445 = call double @llvm.fma.f64(double %444, double %438, double noundef 0x3FEFFFFFFFFECED5) %446 = call double @llvm.fma.f64(double %438, double noundef 0x418A86A64BE101DC, double noundef 0xC15709C79AAC5813) %447 = call double @llvm.fma.f64(double %446, double %438, double noundef 0x41142A31C980A287) %448 = call double @llvm.fma.f64(double %447, double %438, double noundef 0xC0C9CBE68930485D) %449 = call double @llvm.fma.f64(double %448, double %438, double noundef 0x407F583E14E8A4E8) %450 = call double @llvm.fma.f64(double %449, double %438, double noundef 0xC0374A629C650680) %451 = call double @llvm.fma.f64(double %450, double %438, double noundef 0x3FFA32A7AF17FAE9) %452 = call double @llvm.fma.f64(double %451, double %438, double noundef 0xBFCAD32497785CD6) %453 = call double @llvm.fma.f64(double %452, double %438, double noundef 0x3FB0AAAA9FB75F7B) %454 = call double @llvm.fma.f64(double %453, double %438, double noundef 0xBFBFFFFFFFFE320F) %455 = call double @llvm.fma.f64(double %454, double %437, double %1) %456 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %457 = fmul double %456, 0x3FE9884533D43651 %458 = fmul double %457, %445 %459 = fmul double %455, 0x3FE45F306DC9C883 %460 = call i32 @llvm.nvvm.d2i.rn(double %459) #139 store i32 %460, i32* %q.i.i, align 4, !noalias !68 %461 = sitofp i32 %460 to double %462 = fneg double %461 %463 = call double @llvm.fma.f64(double %462, double noundef 0x3FF921FB54442D18, double %455) %464 = call double @llvm.fma.f64(double %462, double noundef 0x3C91A62633145C00, double %463) %465 = call double @llvm.fma.f64(double %462, double noundef 0x397B839A252049C0, double %464) %466 = call double @llvm.fabs.f64(double %455) %467 = fcmp ult double %466, 0x41E0000000000000 br i1 %467, label %__internal_trig_reduction_kerneld.exit.i, label %468 468: ; preds = %432 %469 = call fastcc double @__internal_trig_reduction_slowpathd(double %455, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre18 = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %468, %432 %470 = phi i32 [ %.pre18, %468 ], [ %460, %432 ] %t.i.i.0 = phi double [ %469, %468 ], [ %465, %432 ] %471 = and i32 %470, 3 %472 = uitofp i32 %471 to double %473 = fadd double %t.i.i.0, 0xC002D97C7F3321D2 %474 = fmul double %472, 0x3FF921FB54442D18 %475 = fadd double %473, %474 %476 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %477 = icmp eq i32 %476, 350 br i1 %477, label %481, label %478 478: ; preds = %__internal_trig_reduction_kerneld.exit.i %479 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %480 = icmp eq i32 %479, 370 br i1 %480, label %481, label %540 481: ; preds = %478, %__internal_trig_reduction_kerneld.exit.i %482 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %483 = icmp eq i32 %482, 200 br i1 %483, label %490, label %484 484: ; preds = %481 %485 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %486 = icmp eq i32 %485, 350 br i1 %486, label %490, label %487 487: ; preds = %484 %488 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %489 = icmp eq i32 %488, 370 br i1 %489, label %490, label %493 490: ; preds = %487, %484, %481 %491 = call double @llvm.fabs.f64(double %475) %492 = fcmp oeq double %491, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 493: ; preds = %487 %494 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %495 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %496 = and i32 %495, 2147483647 %497 = icmp eq i32 %496, 2146435072 %498 = icmp eq i32 %494, 0 %499 = select i1 %497, i1 %498, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %493, %490 %.02.in = phi i1 [ %492, %490 ], [ %499, %493 ] br i1 %.02.in, label %500, label %502 500: ; preds = %__nv_isinfd.exit.i.i.i %501 = fmul double %475, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i 502: ; preds = %__nv_isinfd.exit.i.i.i %503 = fmul double %475, 0x3FE45F306DC9C883 %504 = call i32 @llvm.nvvm.d2i.rn(double %503) #139 store i32 %504, i32* %q.i.i.i.i, align 4, !noalias !68 %505 = sitofp i32 %504 to double %506 = fneg double %505 %507 = call double @llvm.fma.f64(double %506, double noundef 0x3FF921FB54442D18, double %475) %508 = call double @llvm.fma.f64(double %506, double noundef 0x3C91A62633145C00, double %507) %509 = call double @llvm.fma.f64(double %506, double noundef 0x397B839A252049C0, double %508) %510 = call double @llvm.fabs.f64(double %475) %511 = fcmp ult double %510, 0x41E0000000000000 br i1 %511, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %512 512: ; preds = %502 %513 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre20 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %502, %512, %500 %i.i.i.i.0 = phi i32 [ 0, %500 ], [ %.pre20, %512 ], [ %504, %502 ] %.01 = phi double [ %501, %500 ], [ %513, %512 ], [ %509, %502 ] %514 = fmul double %.01, %.01 %515 = call double @llvm.fma.f64(double %514, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %516 = call double @llvm.fma.f64(double %515, double %514, double noundef 0xBE927E4F8E06E6D9) %517 = call double @llvm.fma.f64(double %516, double %514, double noundef 0x3EFA01A019DDBCE9) %518 = call double @llvm.fma.f64(double %517, double %514, double noundef 0xBF56C16C16C15D47) %519 = call double @llvm.fma.f64(double %518, double %514, double noundef 0x3FA5555555555551) %520 = call double @llvm.fma.f64(double %519, double %514, double noundef -5.000000e-01) %521 = call double @llvm.fma.f64(double %520, double %514, double noundef 1.000000e+00) %522 = call double @llvm.fma.f64(double %514, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %523 = call double @llvm.fma.f64(double %522, double %514, double noundef 0x3EC71DE369ACE392) %524 = call double @llvm.fma.f64(double %523, double %514, double noundef 0xBF2A01A019DB62A1) %525 = call double @llvm.fma.f64(double %524, double %514, double noundef 0x3F81111111110818) %526 = call double @llvm.fma.f64(double %525, double %514, double noundef 0xBFC5555555555554) %527 = call double @llvm.fma.f64(double %526, double %514, double noundef 0.000000e+00) %528 = call double @llvm.fma.f64(double %527, double %.01, double %.01) %529 = call i32 @llvm.nvvm.d2i.hi(double %528) #139 %530 = call i32 @llvm.nvvm.d2i.lo(double %528) #139 %531 = xor i32 %529, -2147483648 %532 = call double @llvm.nvvm.lohi.i2d(i32 %530, i32 %531) #139 %533 = and i32 %i.i.i.i.0, 1 %.not8 = icmp eq i32 %533, 0 %spec.select4 = select i1 %.not8, double %521, double %532 %534 = and i32 %i.i.i.i.0, 2 %.not9 = icmp eq i32 %534, 0 br i1 %.not9, label %__internal_cos_offset.exit, label %535 535: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i %536 = call i32 @llvm.nvvm.d2i.hi(double %spec.select4) #139 %537 = call i32 @llvm.nvvm.d2i.lo(double %spec.select4) #139 %538 = xor i32 %536, -2147483648 %539 = call double @llvm.nvvm.lohi.i2d(i32 %537, i32 %538) #139 br label %__internal_cos_offset.exit 540: ; preds = %478 %541 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %542 = icmp eq i32 %541, 200 br i1 %542, label %549, label %543 543: ; preds = %540 %544 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %545 = icmp eq i32 %544, 350 br i1 %545, label %549, label %546 546: ; preds = %543 %547 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %548 = icmp eq i32 %547, 370 br i1 %548, label %549, label %552 549: ; preds = %546, %543, %540 %550 = call double @llvm.fabs.f64(double %475) %551 = fcmp oeq double %550, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i 552: ; preds = %546 %553 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %554 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %555 = and i32 %554, 2147483647 %556 = icmp eq i32 %555, 2146435072 %557 = icmp eq i32 %553, 0 %558 = select i1 %556, i1 %557, i1 false br label %__nv_isinfd.exit.i.i __nv_isinfd.exit.i.i: ; preds = %552, %549 %.03.in = phi i1 [ %551, %549 ], [ %558, %552 ] br i1 %.03.in, label %559, label %561 559: ; preds = %__nv_isinfd.exit.i.i %560 = fmul double %475, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i 561: ; preds = %__nv_isinfd.exit.i.i %562 = fmul double %475, 0x3FE45F306DC9C883 %563 = call i32 @llvm.nvvm.d2i.rn(double %562) #139 store i32 %563, i32* %q.i.i.i, align 4, !noalias !68 %564 = sitofp i32 %563 to double %565 = fneg double %564 %566 = call double @llvm.fma.f64(double %565, double noundef 0x3FF921FB54442D18, double %475) %567 = call double @llvm.fma.f64(double %565, double noundef 0x3C91A62633145C00, double %566) %568 = call double @llvm.fma.f64(double %565, double noundef 0x397B839A252049C0, double %567) %569 = call double @llvm.fabs.f64(double %475) %570 = fcmp ult double %569, 0x41E0000000000000 br i1 %570, label %__internal_trig_reduction_kerneld.exit.i.i, label %571 571: ; preds = %561 %572 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre19 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %571, %561 %573 = phi i32 [ %.pre19, %571 ], [ %563, %561 ] %t.i1.i.i.0 = phi double [ %572, %571 ], [ %568, %561 ] %phi.bo = add i32 %573, 1 br label %__internal_sin_cos_kerneld.exit.i.i __internal_sin_cos_kerneld.exit.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i, %559 %i.i.i.0 = phi i32 [ 1, %559 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i ] %z.i.i.0 = phi double [ %560, %559 ], [ %t.i1.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i ] %574 = shl i32 %i.i.i.0, 3 %575 = and i32 %574, 8 %576 = zext i32 %575 to i64 %577 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %576 %578 = fmul double %z.i.i.0, %z.i.i.0 %579 = and i32 %i.i.i.0, 1 %.not = icmp eq i32 %579, 0 %580 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %581 = getelementptr inbounds double, double addrspace(1)* %577, i64 1 %582 = load double, double addrspace(1)* %581, align 8 %583 = call double @llvm.fma.f64(double noundef %580, double %578, double %582) %584 = getelementptr inbounds double, double addrspace(1)* %577, i64 2 %585 = load double, double addrspace(1)* %584, align 8 %586 = call double @llvm.fma.f64(double %583, double %578, double %585) %587 = getelementptr inbounds double, double addrspace(1)* %577, i64 3 %588 = load double, double addrspace(1)* %587, align 8 %589 = call double @llvm.fma.f64(double %586, double %578, double %588) %590 = getelementptr inbounds double, double addrspace(1)* %577, i64 4 %591 = load double, double addrspace(1)* %590, align 8 %592 = call double @llvm.fma.f64(double %589, double %578, double %591) %593 = getelementptr inbounds double, double addrspace(1)* %577, i64 5 %594 = load double, double addrspace(1)* %593, align 8 %595 = call double @llvm.fma.f64(double %592, double %578, double %594) %596 = getelementptr inbounds double, double addrspace(1)* %577, i64 6 %597 = load double, double addrspace(1)* %596, align 8 %598 = call double @llvm.fma.f64(double %595, double %578, double %597) %599 = call double @llvm.fma.f64(double %598, double %z.i.i.0, double %z.i.i.0) %600 = call double @llvm.fma.f64(double %598, double %578, double noundef 1.000000e+00) %spec.select5 = select i1 %.not, double %599, double %600 %601 = and i32 %i.i.i.0, 2 %.not7 = icmp eq i32 %601, 0 %602 = call double @llvm.fma.f64(double %spec.select5, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not7, double %spec.select5, double %602 br label %__internal_cos_offset.exit __internal_cos_offset.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i, %535, %__internal_sin_cos_kerneld.exit.i.i %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i ], [ %539, %535 ], [ %spec.select4, %__internal_trig_reduction_kerneld.exit.i.i.i ] %603 = fmul double %458, %.0 br label %604 604: ; preds = %337, %395, %__nv_isinfd.exit, %__internal_cos_offset.exit, %366, %__nv_j0.exit %r.4 = phi double [ %334, %__nv_j0.exit ], [ %363, %337 ], [ %392, %366 ], [ %413, %395 ], [ %603, %__internal_cos_offset.exit ], [ 0.000000e+00, %__nv_isinfd.exit ] %605 = fcmp olt double %a, 0.000000e+00 %r.5 = select i1 %605, double 0xFFF8000000000000, double %r.4 ret double %r.5 } ; Function Attrs: noinline nounwind define dso_local double @__nv_y1(double %a) local_unnamed_addr #109 { %q.i.i.i.i5 = alloca i32, align 4 %q.i.i.i.i.i = alloca i32, align 4 %q.i.i.i16 = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp olt double %1, 0x730D67819E8D2 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fdiv double 0xBFE45F306DC9C883, %1 br label %604 5: ; preds = %0 %6 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %6, label %338, label %7 7: ; preds = %5 %8 = fmul double %a, %a %9 = call double @llvm.fma.f64(double %8, double noundef 0x3D5249F90687428C, double noundef 0xBDCF0B5B1FB7B95E) #140 %10 = call double @llvm.fma.f64(double %9, double %8, double noundef 0x3E432E589311FA14) #140 %11 = call double @llvm.fma.f64(double %10, double %8, double noundef 0xBEB0A780AA4A92E9) #140 %12 = call double @llvm.fma.f64(double %11, double %8, double noundef 0x3F12C7DBFFCAEC2B) #140 %13 = call double @llvm.fma.f64(double %12, double %8, double noundef 0xBF6835B97894BA4A) #140 %14 = call double @llvm.fma.f64(double %13, double %8, double noundef 0x3FABD3975C75B4A3) #140 %15 = call double @llvm.fma.f64(double %14, double %8, double noundef 0xBFC91866143CBC8A) #140 %16 = fmul double %1, %15 %17 = fcmp ugt double %1, 0x400353AABAD7B784 br i1 %17, label %35, label %18 18: ; preds = %7 %19 = call double @llvm.fma.f64(double %1, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) #140 %20 = call double @llvm.fma.f64(double %19, double %1, double noundef 0x3D5503F5A491E487) #140 %21 = call double @llvm.fma.f64(double %20, double %1, double noundef 0x3DC1F29940C2403A) #140 %22 = call double @llvm.fma.f64(double %21, double %1, double noundef 0x3D84CF9302EACDEF) #140 %23 = call double @llvm.fma.f64(double %22, double %1, double noundef 0xBE384A53DBBCA436) #140 %24 = call double @llvm.fma.f64(double %23, double %1, double noundef 0x3D9779BEE4F63BCC) #140 %25 = call double @llvm.fma.f64(double %24, double %1, double noundef 0x3EA6C160E414F3F0) #140 %26 = call double @llvm.fma.f64(double %25, double %1, double noundef 0x3D8F3D2F12430699) #140 %27 = call double @llvm.fma.f64(double %26, double %1, double noundef 0xBF0C71C72C0CED04) #140 %28 = call double @llvm.fma.f64(double %27, double %1, double noundef 0x3D659BCA506F1128) #140 %29 = call double @llvm.fma.f64(double %28, double %1, double noundef 0x3F65555555506982) #140 %30 = call double @llvm.fma.f64(double %29, double %1, double noundef 0x3D15BA0B425F1BFB) #140 %31 = call double @llvm.fma.f64(double %30, double %1, double noundef 0xBFB0000000000065) #140 %32 = call double @llvm.fma.f64(double %31, double %1, double noundef 0x3C8729A7253FB679) #140 %33 = call double @llvm.fma.f64(double %32, double %1, double noundef 5.000000e-01) #140 %34 = fmul double %1, %33 br label %__nv_j1.exit 35: ; preds = %7 %36 = fcmp ugt double %1, 0x4015B1D0574614EA br i1 %36, label %56, label %37 37: ; preds = %35 %38 = fadd double %1, 0xC00EA75575AF6F09 %39 = fadd double %38, 0x3CA60155A9D1B256 %40 = call double @llvm.fma.f64(double %39, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) #140 %41 = call double @llvm.fma.f64(double %40, double %39, double noundef 0x3D76013AC1E5E222) #140 %42 = call double @llvm.fma.f64(double %41, double %39, double noundef 0xBDBEC315D96D5F03) #140 %43 = call double @llvm.fma.f64(double %42, double %39, double noundef 0xBDF03BE1B4B57207) #140 %44 = call double @llvm.fma.f64(double %43, double %39, double noundef 0x3E345695F8B660F7) #140 %45 = call double @llvm.fma.f64(double %44, double %39, double noundef 0x3E617069FCFCFFF4) #140 %46 = call double @llvm.fma.f64(double %45, double %39, double noundef 0xBEA33825C36745EB) #140 %47 = call double @llvm.fma.f64(double %46, double %39, double noundef 0xBEC9799D4F90931B) #140 %48 = call double @llvm.fma.f64(double %47, double %39, double noundef 0x3F083A06E2F7DF13) #140 %49 = call double @llvm.fma.f64(double %48, double %39, double noundef 0x3F26E4C2D53A7CF6) #140 %50 = call double @llvm.fma.f64(double %49, double %39, double noundef 0xBF624B3409957B1C) #140 %51 = call double @llvm.fma.f64(double %50, double %39, double noundef 0xBF7537544C3325DF) #140 %52 = call double @llvm.fma.f64(double %51, double %39, double noundef 0x3FAB589D1DA138E2) #140 %53 = call double @llvm.fma.f64(double %52, double %39, double noundef 0x3FAAE8A39F51AD13) #140 %54 = call double @llvm.fma.f64(double %53, double %39, double noundef 0xBFD9C6CF582CBF7F) #140 %55 = fmul double %39, %54 br label %__nv_j1.exit 56: ; preds = %35 %57 = fcmp ugt double %1, 0x40213065E54C1AA9 br i1 %57, label %77, label %58 58: ; preds = %56 %59 = fadd double %1, 0xC01C0FF5F3B47250 %60 = fadd double %59, 0x3C9B226D9D243827 %61 = call double @llvm.fma.f64(double %60, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) #140 %62 = call double @llvm.fma.f64(double %61, double %60, double noundef 0xBD73B7DD4A6608FB) #140 %63 = call double @llvm.fma.f64(double %62, double %60, double noundef 0x3DBEC5E01482C750) #140 %64 = call double @llvm.fma.f64(double %63, double %60, double noundef 0x3DEC62BB9E882103) #140 %65 = call double @llvm.fma.f64(double %64, double %60, double noundef 0xBE34462EED732A23) #140 %66 = call double @llvm.fma.f64(double %65, double %60, double noundef 0xBE5D48DCAD7DC59B) #140 %67 = call double @llvm.fma.f64(double %66, double %60, double noundef 0x3EA3026DF29167E9) #140 %68 = call double @llvm.fma.f64(double %67, double %60, double noundef 0x3EC4255B0119666C) #140 %69 = call double @llvm.fma.f64(double %68, double %60, double noundef 0xBF0796A751B32693) #140 %70 = call double @llvm.fma.f64(double %69, double %60, double noundef 0xBF207358BBDBA284) #140 %71 = call double @llvm.fma.f64(double %70, double %60, double noundef 0x3F613FBC7D6927B1) #140 %72 = call double @llvm.fma.f64(double %71, double %60, double noundef 0x3F69A4B292E3DD75) #140 %73 = call double @llvm.fma.f64(double %72, double %60, double noundef 0xBFA80C83BDEEE4FB) #140 %74 = call double @llvm.fma.f64(double %73, double %60, double noundef 0xBF95E70DC60362BF) #140 %75 = call double @llvm.fma.f64(double %74, double %60, double noundef 0x3FD33518B3874E8A) #140 %76 = fmul double %60, %75 br label %__nv_j1.exit 77: ; preds = %56 %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %79 = icmp eq i32 %78, 200 br i1 %79, label %86, label %80 80: ; preds = %77 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %82 = icmp eq i32 %81, 350 br i1 %82, label %86, label %83 83: ; preds = %80 %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %85 = icmp eq i32 %84, 370 br i1 %85, label %86, label %88 86: ; preds = %83, %80, %77 %87 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 88: ; preds = %83 %89 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %90 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %91 = and i32 %90, 2147483647 %92 = icmp eq i32 %91, 2146435072 %93 = icmp eq i32 %89, 0 %94 = select i1 %92, i1 %93, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %88, %86 %.011.in = phi i1 [ %87, %86 ], [ %94, %88 ] br i1 %.011.in, label %__nv_j1.exit, label %95 95: ; preds = %__nv_isinfd.exit.i %96 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %97 = fneg double %1 %98 = call double @llvm.fma.f64(double %97, double %96, double noundef 1.000000e+00) %99 = call double @llvm.fma.f64(double %98, double %98, double %98) %100 = call double @llvm.fma.f64(double %99, double %96, double %96) %101 = fmul double %100, %100 %102 = call double @llvm.fma.f64(double %101, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %103 = call double @llvm.fma.f64(double %102, double %101, double noundef 0x405B89354DA77324) %104 = call double @llvm.fma.f64(double %103, double %101, double noundef 0xC01E352294653188) %105 = call double @llvm.fma.f64(double %104, double %101, double noundef 0x3FE9BC7DB16BD7A7) %106 = call double @llvm.fma.f64(double %105, double %101, double noundef 0xBFC8BFE1C3A4F741) %107 = call double @llvm.fma.f64(double %106, double %101, double noundef 0x3FC7FFFFF0D00BE2) %108 = call double @llvm.fma.f64(double %107, double %101, double noundef 0x3FF00000000068CC) %109 = call double @llvm.fma.f64(double %101, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %110 = call double @llvm.fma.f64(double %109, double %101, double noundef 0xC11764222AD7C910) %111 = call double @llvm.fma.f64(double %110, double %101, double noundef 0x40CEB02E0C306857) %112 = call double @llvm.fma.f64(double %111, double %101, double noundef 0xC08351859FA2B23B) %113 = call double @llvm.fma.f64(double %112, double %101, double noundef 0x403E65A07AF51F42) %114 = call double @llvm.fma.f64(double %113, double %101, double noundef 0xC002F2B817F77A57) %115 = call double @llvm.fma.f64(double %114, double %101, double noundef 0x3FD7BCC34DA069FD) %116 = call double @llvm.fma.f64(double %115, double %101, double noundef 0xBFC4FFFFF8A44463) %117 = call double @llvm.fma.f64(double %116, double %101, double noundef 0x3FD7FFFFFFFF5CD7) %118 = call double @llvm.fma.f64(double %117, double %100, double %1) %119 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %120 = fmul double %119, 0x3FE9884533D43651 %121 = fmul double %120, %108 %122 = fmul double %118, 0x3FE45F306DC9C883 %123 = call i32 @llvm.nvvm.d2i.rn(double %122) #139 store i32 %123, i32* %q.i.i.i16, align 4, !noalias !68 %124 = sitofp i32 %123 to double %125 = fneg double %124 %126 = call double @llvm.fma.f64(double %125, double noundef 0x3FF921FB54442D18, double %118) %127 = call double @llvm.fma.f64(double %125, double noundef 0x3C91A62633145C00, double %126) %128 = call double @llvm.fma.f64(double %125, double noundef 0x397B839A252049C0, double %127) %129 = call double @llvm.fabs.f64(double %118) %130 = fcmp ult double %129, 0x41E0000000000000 br i1 %130, label %__internal_trig_reduction_kerneld.exit.i.i20, label %131 131: ; preds = %95 %132 = call fastcc double @__internal_trig_reduction_slowpathd(double %118, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i16) #139 %.pre = load i32, i32* %q.i.i.i16, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20 __internal_trig_reduction_kerneld.exit.i.i20: ; preds = %131, %95 %133 = phi i32 [ %.pre, %131 ], [ %123, %95 ] %t.i.i.i15.0 = phi double [ %132, %131 ], [ %128, %95 ] %134 = and i32 %133, 3 %135 = uitofp i32 %134 to double %136 = fadd double %t.i.i.i15.0, 0xC002D97C7F3321D2 %137 = fmul double %135, 0x3FF921FB54442D18 %138 = fadd double %136, %137 %139 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %140 = icmp eq i32 %139, 350 br i1 %140, label %144, label %141 141: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20 %142 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %143 = icmp eq i32 %142, 370 br i1 %143, label %144, label %203 144: ; preds = %141, %__internal_trig_reduction_kerneld.exit.i.i20 %145 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %146 = icmp eq i32 %145, 200 br i1 %146, label %153, label %147 147: ; preds = %144 %148 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %149 = icmp eq i32 %148, 350 br i1 %149, label %153, label %150 150: ; preds = %147 %151 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %152 = icmp eq i32 %151, 370 br i1 %152, label %153, label %156 153: ; preds = %150, %147, %144 %154 = call double @llvm.fabs.f64(double %138) %155 = fcmp oeq double %154, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i 156: ; preds = %150 %157 = call i32 @llvm.nvvm.d2i.lo(double %138) #139 %158 = call i32 @llvm.nvvm.d2i.hi(double %138) #139 %159 = and i32 %158, 2147483647 %160 = icmp eq i32 %159, 2146435072 %161 = icmp eq i32 %157, 0 %162 = select i1 %160, i1 %161, i1 false br label %__nv_isinfd.exit.i.i.i.i __nv_isinfd.exit.i.i.i.i: ; preds = %156, %153 %.07.in = phi i1 [ %155, %153 ], [ %162, %156 ] br i1 %.07.in, label %163, label %165 163: ; preds = %__nv_isinfd.exit.i.i.i.i %164 = fmul double %138, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i 165: ; preds = %__nv_isinfd.exit.i.i.i.i %166 = fmul double %138, 0x3FE45F306DC9C883 %167 = call i32 @llvm.nvvm.d2i.rn(double %166) #139 store i32 %167, i32* %q.i.i.i.i.i, align 4, !noalias !68 %168 = sitofp i32 %167 to double %169 = fneg double %168 %170 = call double @llvm.fma.f64(double %169, double noundef 0x3FF921FB54442D18, double %138) %171 = call double @llvm.fma.f64(double %169, double noundef 0x3C91A62633145C00, double %170) %172 = call double @llvm.fma.f64(double %169, double noundef 0x397B839A252049C0, double %171) %173 = call double @llvm.fabs.f64(double %138) %174 = fcmp ult double %173, 0x41E0000000000000 br i1 %174, label %__internal_trig_reduction_kerneld.exit.i.i.i.i, label %175 175: ; preds = %165 %176 = call fastcc double @__internal_trig_reduction_slowpathd(double %138, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i) #139 %.pre17 = load i32, i32* %q.i.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i.i: ; preds = %165, %175, %163 %i.i.i.i.i.0 = phi i32 [ 0, %163 ], [ %.pre17, %175 ], [ %167, %165 ] %.06 = phi double [ %164, %163 ], [ %176, %175 ], [ %172, %165 ] %177 = fmul double %.06, %.06 %178 = call double @llvm.fma.f64(double %177, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %179 = call double @llvm.fma.f64(double %178, double %177, double noundef 0xBE927E4F8E06E6D9) %180 = call double @llvm.fma.f64(double %179, double %177, double noundef 0x3EFA01A019DDBCE9) %181 = call double @llvm.fma.f64(double %180, double %177, double noundef 0xBF56C16C16C15D47) %182 = call double @llvm.fma.f64(double %181, double %177, double noundef 0x3FA5555555555551) %183 = call double @llvm.fma.f64(double %182, double %177, double noundef -5.000000e-01) %184 = call double @llvm.fma.f64(double %183, double %177, double noundef 1.000000e+00) %185 = call double @llvm.fma.f64(double %177, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %186 = call double @llvm.fma.f64(double %185, double %177, double noundef 0x3EC71DE369ACE392) %187 = call double @llvm.fma.f64(double %186, double %177, double noundef 0xBF2A01A019DB62A1) %188 = call double @llvm.fma.f64(double %187, double %177, double noundef 0x3F81111111110818) %189 = call double @llvm.fma.f64(double %188, double %177, double noundef 0xBFC5555555555554) %190 = call double @llvm.fma.f64(double %189, double %177, double noundef 0.000000e+00) %191 = call double @llvm.fma.f64(double %190, double %.06, double %.06) %192 = call i32 @llvm.nvvm.d2i.hi(double %191) #139 %193 = call i32 @llvm.nvvm.d2i.lo(double %191) #139 %194 = xor i32 %192, -2147483648 %195 = call double @llvm.nvvm.lohi.i2d(i32 %193, i32 %194) #139 %196 = and i32 %i.i.i.i.i.0, 1 %.not14 = icmp eq i32 %196, 0 %spec.select1 = select i1 %.not14, double %184, double %195 %197 = and i32 %i.i.i.i.i.0, 2 %.not15 = icmp eq i32 %197, 0 br i1 %.not15, label %__internal_cos_offset.exit.i, label %198 198: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i %199 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %200 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %201 = xor i32 %199, -2147483648 %202 = call double @llvm.nvvm.lohi.i2d(i32 %200, i32 %201) #139 br label %__internal_cos_offset.exit.i 203: ; preds = %141 %204 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %205 = icmp eq i32 %204, 200 br i1 %205, label %212, label %206 206: ; preds = %203 %207 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %208 = icmp eq i32 %207, 350 br i1 %208, label %212, label %209 209: ; preds = %206 %210 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %211 = icmp eq i32 %210, 370 br i1 %211, label %212, label %215 212: ; preds = %209, %206, %203 %213 = call double @llvm.fabs.f64(double %138) %214 = fcmp oeq double %213, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i21 215: ; preds = %209 %216 = call i32 @llvm.nvvm.d2i.lo(double %138) #139 %217 = call i32 @llvm.nvvm.d2i.hi(double %138) #139 %218 = and i32 %217, 2147483647 %219 = icmp eq i32 %218, 2146435072 %220 = icmp eq i32 %216, 0 %221 = select i1 %219, i1 %220, i1 false br label %__nv_isinfd.exit.i.i.i21 __nv_isinfd.exit.i.i.i21: ; preds = %215, %212 %.08.in = phi i1 [ %214, %212 ], [ %221, %215 ] br i1 %.08.in, label %222, label %224 222: ; preds = %__nv_isinfd.exit.i.i.i21 %223 = fmul double %138, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i 224: ; preds = %__nv_isinfd.exit.i.i.i21 %225 = fmul double %138, 0x3FE45F306DC9C883 %226 = call i32 @llvm.nvvm.d2i.rn(double %225) #139 store i32 %226, i32* %q.i.i.i.i5, align 4, !noalias !68 %227 = sitofp i32 %226 to double %228 = fneg double %227 %229 = call double @llvm.fma.f64(double %228, double noundef 0x3FF921FB54442D18, double %138) %230 = call double @llvm.fma.f64(double %228, double noundef 0x3C91A62633145C00, double %229) %231 = call double @llvm.fma.f64(double %228, double noundef 0x397B839A252049C0, double %230) %232 = call double @llvm.fabs.f64(double %138) %233 = fcmp ult double %232, 0x41E0000000000000 br i1 %233, label %__internal_trig_reduction_kerneld.exit.i.i.i22, label %234 234: ; preds = %224 %235 = call fastcc double @__internal_trig_reduction_slowpathd(double %138, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i5) #139 %.pre16 = load i32, i32* %q.i.i.i.i5, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i22 __internal_trig_reduction_kerneld.exit.i.i.i22: ; preds = %234, %224 %236 = phi i32 [ %.pre16, %234 ], [ %226, %224 ] %t.i1.i.i.i.0 = phi double [ %235, %234 ], [ %231, %224 ] %phi.bo10 = add i32 %236, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i __internal_sin_cos_kerneld.exit.i.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i22, %222 %i.i.i.i13.0 = phi i32 [ 1, %222 ], [ %phi.bo10, %__internal_trig_reduction_kerneld.exit.i.i.i22 ] %z.i.i.i12.0 = phi double [ %223, %222 ], [ %t.i1.i.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i.i22 ] %237 = shl i32 %i.i.i.i13.0, 3 %238 = and i32 %237, 8 %239 = zext i32 %238 to i64 %240 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %239 %241 = fmul double %z.i.i.i12.0, %z.i.i.i12.0 %242 = and i32 %i.i.i.i13.0, 1 %.not11 = icmp eq i32 %242, 0 %243 = select i1 %.not11, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %244 = getelementptr inbounds double, double addrspace(1)* %240, i64 1 %245 = load double, double addrspace(1)* %244, align 8 %246 = call double @llvm.fma.f64(double noundef %243, double %241, double %245) %247 = getelementptr inbounds double, double addrspace(1)* %240, i64 2 %248 = load double, double addrspace(1)* %247, align 8 %249 = call double @llvm.fma.f64(double %246, double %241, double %248) %250 = getelementptr inbounds double, double addrspace(1)* %240, i64 3 %251 = load double, double addrspace(1)* %250, align 8 %252 = call double @llvm.fma.f64(double %249, double %241, double %251) %253 = getelementptr inbounds double, double addrspace(1)* %240, i64 4 %254 = load double, double addrspace(1)* %253, align 8 %255 = call double @llvm.fma.f64(double %252, double %241, double %254) %256 = getelementptr inbounds double, double addrspace(1)* %240, i64 5 %257 = load double, double addrspace(1)* %256, align 8 %258 = call double @llvm.fma.f64(double %255, double %241, double %257) %259 = getelementptr inbounds double, double addrspace(1)* %240, i64 6 %260 = load double, double addrspace(1)* %259, align 8 %261 = call double @llvm.fma.f64(double %258, double %241, double %260) %262 = call double @llvm.fma.f64(double %261, double %z.i.i.i12.0, double %z.i.i.i12.0) %263 = call double @llvm.fma.f64(double %261, double %241, double noundef 1.000000e+00) %spec.select2 = select i1 %.not11, double %262, double %263 %264 = and i32 %i.i.i.i13.0, 2 %.not13 = icmp eq i32 %264, 0 %265 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.110 = select i1 %.not13, double %spec.select2, double %265 br label %__internal_cos_offset.exit.i __internal_cos_offset.exit.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i, %198, %__internal_sin_cos_kerneld.exit.i.i.i %.05 = phi double [ %.110, %__internal_sin_cos_kerneld.exit.i.i.i ], [ %202, %198 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i.i ] %266 = fmul double %121, %.05 br label %__nv_j1.exit __nv_j1.exit: ; preds = %37, %__internal_cos_offset.exit.i, %__nv_isinfd.exit.i, %58, %18 %r.i.3 = phi double [ %34, %18 ], [ %55, %37 ], [ %76, %58 ], [ %266, %__internal_cos_offset.exit.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %267 = fcmp olt double %1, 1.000000e-30 %268 = fmul double %1, 5.000000e-01 %r.i.5 = select i1 %267, double %268, double %r.i.3 %269 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %270 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %271 = icmp slt i32 %269, 1048576 br i1 %271, label %272, label %276 272: ; preds = %__nv_j1.exit %273 = fmul double %1, 0x4350000000000000 %274 = call i32 @llvm.nvvm.d2i.hi(double %273) #139 %275 = call i32 @llvm.nvvm.d2i.lo(double %273) #139 br label %276 276: ; preds = %272, %__nv_j1.exit %.012 = phi double [ %273, %272 ], [ %1, %__nv_j1.exit ] %ihi.i.0 = phi i32 [ %274, %272 ], [ %269, %__nv_j1.exit ] %ilo.i.0 = phi i32 [ %275, %272 ], [ %270, %__nv_j1.exit ] %e.i.0 = phi i32 [ -1077, %272 ], [ -1023, %__nv_j1.exit ] %277 = add i32 %ihi.i.0, -1 %278 = icmp ult i32 %277, 2146435071 br i1 %278, label %279, label %328 279: ; preds = %276 %280 = lshr i32 %ihi.i.0, 20 %281 = add nsw i32 %e.i.0, %280 %282 = and i32 %ihi.i.0, -2146435073 %283 = or i32 %282, 1072693248 %284 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %283) #139 %285 = icmp sgt i32 %283, 1073127582 br i1 %285, label %286, label %292 286: ; preds = %279 %287 = call i32 @llvm.nvvm.d2i.lo(double %284) #139 %288 = call i32 @llvm.nvvm.d2i.hi(double %284) #139 %289 = add i32 %288, -1048576 %290 = call double @llvm.nvvm.lohi.i2d(i32 %287, i32 %289) #139 %291 = add nsw i32 %281, 1 br label %292 292: ; preds = %286, %279 %m.i.0 = phi double [ %290, %286 ], [ %284, %279 ] %e.i.1 = phi i32 [ %291, %286 ], [ %281, %279 ] %293 = fadd double %m.i.0, -1.000000e+00 %294 = fadd double %m.i.0, 1.000000e+00 %295 = call double @llvm.nvvm.rcp.approx.ftz.d(double %294) #139 %296 = fneg double %294 %297 = call double @llvm.fma.f64(double %296, double %295, double noundef 1.000000e+00) %298 = call double @llvm.fma.f64(double %297, double %297, double %297) %299 = call double @llvm.fma.f64(double %298, double %295, double %295) %300 = fmul double %293, %299 %301 = fadd double %300, %300 %302 = fmul double %301, %301 %303 = call double @llvm.fma.f64(double %302, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %304 = call double @llvm.fma.f64(double %303, double %302, double noundef 0x3EF3B2669F02676F) %305 = call double @llvm.fma.f64(double %304, double %302, double noundef 0x3F1745CBA9AB0956) %306 = call double @llvm.fma.f64(double %305, double %302, double noundef 0x3F3C71C72D1B5154) %307 = call double @llvm.fma.f64(double %306, double %302, double noundef 0x3F624924923BE72D) %308 = call double @llvm.fma.f64(double %307, double %302, double noundef 0x3F8999999999A3C4) %309 = call double @llvm.fma.f64(double %308, double %302, double noundef 0x3FB5555555555554) %310 = fsub double %293, %301 %311 = fmul double %310, 2.000000e+00 %312 = fneg double %301 %313 = call double @llvm.fma.f64(double %312, double %293, double %311) %314 = fmul double %299, %313 %315 = fmul double %302, %309 %316 = call double @llvm.fma.f64(double %315, double %301, double %314) %317 = xor i32 %e.i.1, -2147483648 %318 = call double @llvm.nvvm.lohi.i2d(i32 %317, i32 noundef 1127219200) #139 %319 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %320 = fsub double %318, %319 %321 = call double @llvm.fma.f64(double %320, double noundef 0x3FE62E42FEFA39EF, double %301) %322 = fneg double %320 %323 = call double @llvm.fma.f64(double %322, double noundef 0x3FE62E42FEFA39EF, double %321) %324 = fsub double %323, %301 %325 = fsub double %316, %324 %326 = call double @llvm.fma.f64(double %320, double noundef 0x3C7ABC9E3B39803F, double %325) %327 = fadd double %321, %326 br label %__nv_log.exit 328: ; preds = %276 %329 = call double @llvm.fma.f64(double %.012, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %330 = call i32 @llvm.nvvm.d2i.hi(double %.012) #139 %331 = bitcast i32 %330 to float %332 = fcmp oeq float %331, 0.000000e+00 %q.i28.0 = select i1 %332, double 0xFFF0000000000000, double %329 br label %__nv_log.exit __nv_log.exit: ; preds = %328, %292 %q.i28.1 = phi double [ %327, %292 ], [ %q.i28.0, %328 ] %333 = fmul double %r.i.5, %q.i28.1 %334 = fdiv double 1.000000e+00, %1 %335 = fsub double %333, %334 %336 = fmul double %335, 0x3FE45F306DC9C883 %337 = fadd double %16, %336 br label %604 338: ; preds = %5 %339 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %339, label %367, label %340 340: ; preds = %338 %341 = fadd double %1, 0xC00193BED4DFF243 %342 = fadd double %341, 0x3C8BD1E50D219BFD %343 = call double @llvm.fma.f64(double %342, double noundef 0xBE2B87B0BE2AA150, double noundef 0x3E4833AAE4D8B975) %344 = call double @llvm.fma.f64(double %343, double %342, double noundef 0xBE44E279B423E68F) %345 = call double @llvm.fma.f64(double %344, double %342, double noundef 0x3E129DC6A747EB4F) %346 = call double @llvm.fma.f64(double %345, double %342, double noundef 0xBE61D15534496CD8) %347 = call double @llvm.fma.f64(double %346, double %342, double noundef 0x3E7EEC8D48FECE00) %348 = call double @llvm.fma.f64(double %347, double %342, double noundef 0xBE8D1180AF70A134) %349 = call double @llvm.fma.f64(double %348, double %342, double noundef 0x3E9C8386A0EA1388) %350 = call double @llvm.fma.f64(double %349, double %342, double noundef 0xBEB01A014E7F3250) %351 = call double @llvm.fma.f64(double %350, double %342, double noundef 0x3EC1FB752010A320) %352 = call double @llvm.fma.f64(double %351, double %342, double noundef 0xBED3AA0AFF4E332B) %353 = call double @llvm.fma.f64(double %352, double %342, double noundef 0x3EE584A6C77F6700) %354 = call double @llvm.fma.f64(double %353, double %342, double noundef 0xBEF794C520FC2EBB) %355 = call double @llvm.fma.f64(double %354, double %342, double noundef 0x3F09D18D2D35CC71) %356 = call double @llvm.fma.f64(double %355, double %342, double noundef 0xBF1C3FB7315C4599) %357 = call double @llvm.fma.f64(double %356, double %342, double noundef 0x3F2EEA7ADECCE927) %358 = call double @llvm.fma.f64(double %357, double %342, double noundef 0xBF40B2D85257446F) %359 = call double @llvm.fma.f64(double %358, double %342, double noundef 0x3F517AB4B1FE5D5B) %360 = call double @llvm.fma.f64(double %359, double %342, double noundef 0xBF65429DC6516C0D) %361 = call double @llvm.fma.f64(double %360, double %342, double noundef 0x3F7E671C7D0B090B) %362 = call double @llvm.fma.f64(double %361, double %342, double noundef 0xBF73A6DEC36FB27C) %363 = call double @llvm.fma.f64(double %362, double %342, double noundef 0xBFA0D2AF4E931FD1) %364 = call double @llvm.fma.f64(double %363, double %342, double noundef 0xBFBE56F82217B964) %365 = call double @llvm.fma.f64(double %364, double %342, double noundef 0x3FE0AA48442F014B) %366 = fmul double %342, %365 br label %604 367: ; preds = %338 %368 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %368, label %393, label %369 369: ; preds = %367 %370 = fadd double %1, 0xC015B7FE4E87B02E %371 = fadd double %370, 0xBCBDFE7BAC228E8C %372 = call double @llvm.fma.f64(double %371, double noundef 0x3CBA3C76069F1D8C, double noundef 0x3CC69A30996793E2) %373 = call double @llvm.fma.f64(double %372, double %371, double noundef 0xBCDDD8432FE756E7) %374 = call double @llvm.fma.f64(double %373, double %371, double noundef 0xBD143158EEE220F7) %375 = call double @llvm.fma.f64(double %374, double %371, double noundef 0x3D28D44491230F5A) %376 = call double @llvm.fma.f64(double %375, double %371, double noundef 0xBD438842EAF4EDBC) %377 = call double @llvm.fma.f64(double %376, double %371, double noundef 0x3D74958DAFBFAF5A) %378 = call double @llvm.fma.f64(double %377, double %371, double noundef 0xBD9449A60E664848) %379 = call double @llvm.fma.f64(double %378, double %371, double noundef 0x3D838BC8CD594A76) %380 = call double @llvm.fma.f64(double %379, double %371, double noundef 0xBDFA798002141323) %381 = call double @llvm.fma.f64(double %380, double %371, double noundef 0x3E380B4198956AAA) %382 = call double @llvm.fma.f64(double %381, double %371, double noundef 0x3E5B62B5F21BACD4) %383 = call double @llvm.fma.f64(double %382, double %371, double noundef 0xBEA255E729FB6AAE) %384 = call double @llvm.fma.f64(double %383, double %371, double noundef 0xBEC80618F6BAE5AA) %385 = call double @llvm.fma.f64(double %384, double %371, double noundef 0x3F085B940F8E8D36) %386 = call double @llvm.fma.f64(double %385, double %371, double noundef 0x3F2337C7E10E14E8) %387 = call double @llvm.fma.f64(double %386, double %371, double noundef 0xBF61BE6DB99332CA) %388 = call double @llvm.fma.f64(double %387, double %371, double noundef 0xBF710A329E2BE9B8) %389 = call double @llvm.fma.f64(double %388, double %371, double noundef 0x3FAA15D92DFE3FCF) %390 = call double @llvm.fma.f64(double %389, double %371, double noundef 0x3FA00B9F8571C9BE) %391 = call double @llvm.fma.f64(double %390, double %371, double noundef 0xBFD5C7C556F0C19A) %392 = fmul double %371, %391 br label %604 393: ; preds = %367 %394 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %394, label %414, label %395 395: ; preds = %393 %396 = fadd double %1, 0xC0213127AE6169B4 %397 = fadd double %396, 0xBCB479CC068D9046 %398 = call double @llvm.fma.f64(double %397, double noundef 0x3CB09CCC22945996, double noundef 0xBD43515F67644276) %399 = call double @llvm.fma.f64(double %398, double %397, double noundef 0xBD72C5B978E9F5C7) %400 = call double @llvm.fma.f64(double %399, double %397, double noundef 0x3DBEC1151613913C) %401 = call double @llvm.fma.f64(double %400, double %397, double noundef 0x3DE9E38D13C4A824) %402 = call double @llvm.fma.f64(double %401, double %397, double noundef 0xBE341E75E1088EB5) %403 = call double @llvm.fma.f64(double %402, double %397, double noundef 0xBE5A384EBB13CFE1) %404 = call double @llvm.fma.f64(double %403, double %397, double noundef 0x3EA2BECB27F8C8F8) %405 = call double @llvm.fma.f64(double %404, double %397, double noundef 0x3EC176E72B989FD8) %406 = call double @llvm.fma.f64(double %405, double %397, double noundef 0xBF06F7BAB102F822) %407 = call double @llvm.fma.f64(double %406, double %397, double noundef 0xBF1B50D7E1D278E1) %408 = call double @llvm.fma.f64(double %407, double %397, double noundef 0x3F607A678D60004F) %409 = call double @llvm.fma.f64(double %408, double %397, double noundef 0x3F63CED2A2E69115) %410 = call double @llvm.fma.f64(double %409, double %397, double noundef 0xBFA6395DFE49FCD4) %411 = call double @llvm.fma.f64(double %410, double %397, double noundef 0xBF902B3933CF21B1) %412 = call double @llvm.fma.f64(double %411, double %397, double noundef 0x3FD15F993FCEAB5C) %413 = fmul double %397, %412 br label %604 414: ; preds = %393 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %416 = icmp eq i32 %415, 200 br i1 %416, label %423, label %417 417: ; preds = %414 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %419 = icmp eq i32 %418, 350 br i1 %419, label %423, label %420 420: ; preds = %417 %421 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %422 = icmp eq i32 %421, 370 br i1 %422, label %423, label %425 423: ; preds = %420, %417, %414 %424 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit 425: ; preds = %420 %426 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %427 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %428 = and i32 %427, 2147483647 %429 = icmp eq i32 %428, 2146435072 %430 = icmp eq i32 %426, 0 %431 = select i1 %429, i1 %430, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %425, %423 %.013.in = phi i1 [ %424, %423 ], [ %431, %425 ] br i1 %.013.in, label %604, label %432 432: ; preds = %__nv_isinfd.exit %433 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %434 = fneg double %1 %435 = call double @llvm.fma.f64(double %434, double %433, double noundef 1.000000e+00) %436 = call double @llvm.fma.f64(double %435, double %435, double %435) %437 = call double @llvm.fma.f64(double %436, double %433, double %433) %438 = fmul double %437, %437 %439 = call double @llvm.fma.f64(double %438, double noundef 0x40D13DB326ECEBFE, double noundef 0xC09C26E89385D5B1) %440 = call double @llvm.fma.f64(double %439, double %438, double noundef 0x405C6AB923C6F55E) %441 = call double @llvm.fma.f64(double %440, double %438, double noundef 0xC01E61EAF3BD2FA1) %442 = call double @llvm.fma.f64(double %441, double %438, double noundef 0x3FE9BF15D9B97DD1) %443 = call double @llvm.fma.f64(double %442, double %438, double noundef 0xBFC8BFECF93D7D19) %444 = call double @llvm.fma.f64(double %443, double %438, double noundef 0x3FC7FFFFF756AA6C) %445 = call double @llvm.fma.f64(double %444, double %438, double noundef 0x3FF0000000003646) %446 = call double @llvm.fma.f64(double %438, double noundef 0xC1943281A050209C, double noundef 0x416024E99BA46E7B) %447 = call double @llvm.fma.f64(double %446, double %438, double noundef 0xC11A6875D7DFBD65) %448 = call double @llvm.fma.f64(double %447, double %438, double noundef 0x40D032C041790233) %449 = call double @llvm.fma.f64(double %448, double %438, double noundef 0xC0839F895BC22946) %450 = call double @llvm.fma.f64(double %449, double %438, double noundef 0x403E77CC78ECD2D8) %451 = call double @llvm.fma.f64(double %450, double %438, double noundef 0xC002F368D0117BE9) %452 = call double @llvm.fma.f64(double %451, double %438, double noundef 0x3FD7BCC786009A25) %453 = call double @llvm.fma.f64(double %452, double %438, double noundef 0xBFC4FFFFFC51BC7A) %454 = call double @llvm.fma.f64(double %453, double %438, double noundef 0x3FD7FFFFFFFFB5EA) %455 = call double @llvm.fma.f64(double %454, double %437, double %1) %456 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %457 = fmul double %456, 0x3FE9884533D43651 %458 = fmul double %457, %445 %459 = fmul double %455, 0x3FE45F306DC9C883 %460 = call i32 @llvm.nvvm.d2i.rn(double %459) #139 store i32 %460, i32* %q.i.i, align 4, !noalias !68 %461 = sitofp i32 %460 to double %462 = fneg double %461 %463 = call double @llvm.fma.f64(double %462, double noundef 0x3FF921FB54442D18, double %455) %464 = call double @llvm.fma.f64(double %462, double noundef 0x3C91A62633145C00, double %463) %465 = call double @llvm.fma.f64(double %462, double noundef 0x397B839A252049C0, double %464) %466 = call double @llvm.fabs.f64(double %455) %467 = fcmp ult double %466, 0x41E0000000000000 br i1 %467, label %__internal_trig_reduction_kerneld.exit.i, label %468 468: ; preds = %432 %469 = call fastcc double @__internal_trig_reduction_slowpathd(double %455, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i) #139 %.pre18 = load i32, i32* %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %468, %432 %470 = phi i32 [ %.pre18, %468 ], [ %460, %432 ] %t.i.i.0 = phi double [ %469, %468 ], [ %465, %432 ] %471 = and i32 %470, 3 %472 = uitofp i32 %471 to double %473 = fadd double %t.i.i.0, 0xC00F6A7A2955385E %474 = fmul double %472, 0x3FF921FB54442D18 %475 = fadd double %473, %474 %476 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %477 = icmp eq i32 %476, 350 br i1 %477, label %481, label %478 478: ; preds = %__internal_trig_reduction_kerneld.exit.i %479 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %480 = icmp eq i32 %479, 370 br i1 %480, label %481, label %540 481: ; preds = %478, %__internal_trig_reduction_kerneld.exit.i %482 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %483 = icmp eq i32 %482, 200 br i1 %483, label %490, label %484 484: ; preds = %481 %485 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %486 = icmp eq i32 %485, 350 br i1 %486, label %490, label %487 487: ; preds = %484 %488 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %489 = icmp eq i32 %488, 370 br i1 %489, label %490, label %493 490: ; preds = %487, %484, %481 %491 = call double @llvm.fabs.f64(double %475) %492 = fcmp oeq double %491, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 493: ; preds = %487 %494 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %495 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %496 = and i32 %495, 2147483647 %497 = icmp eq i32 %496, 2146435072 %498 = icmp eq i32 %494, 0 %499 = select i1 %497, i1 %498, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %493, %490 %.02.in = phi i1 [ %492, %490 ], [ %499, %493 ] br i1 %.02.in, label %500, label %502 500: ; preds = %__nv_isinfd.exit.i.i.i %501 = fmul double %475, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i 502: ; preds = %__nv_isinfd.exit.i.i.i %503 = fmul double %475, 0x3FE45F306DC9C883 %504 = call i32 @llvm.nvvm.d2i.rn(double %503) #139 store i32 %504, i32* %q.i.i.i.i, align 4, !noalias !68 %505 = sitofp i32 %504 to double %506 = fneg double %505 %507 = call double @llvm.fma.f64(double %506, double noundef 0x3FF921FB54442D18, double %475) %508 = call double @llvm.fma.f64(double %506, double noundef 0x3C91A62633145C00, double %507) %509 = call double @llvm.fma.f64(double %506, double noundef 0x397B839A252049C0, double %508) %510 = call double @llvm.fabs.f64(double %475) %511 = fcmp ult double %510, 0x41E0000000000000 br i1 %511, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %512 512: ; preds = %502 %513 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre20 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %502, %512, %500 %i.i.i.i.0 = phi i32 [ 0, %500 ], [ %.pre20, %512 ], [ %504, %502 ] %.01 = phi double [ %501, %500 ], [ %513, %512 ], [ %509, %502 ] %514 = fmul double %.01, %.01 %515 = call double @llvm.fma.f64(double %514, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %516 = call double @llvm.fma.f64(double %515, double %514, double noundef 0xBE927E4F8E06E6D9) %517 = call double @llvm.fma.f64(double %516, double %514, double noundef 0x3EFA01A019DDBCE9) %518 = call double @llvm.fma.f64(double %517, double %514, double noundef 0xBF56C16C16C15D47) %519 = call double @llvm.fma.f64(double %518, double %514, double noundef 0x3FA5555555555551) %520 = call double @llvm.fma.f64(double %519, double %514, double noundef -5.000000e-01) %521 = call double @llvm.fma.f64(double %520, double %514, double noundef 1.000000e+00) %522 = call double @llvm.fma.f64(double %514, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %523 = call double @llvm.fma.f64(double %522, double %514, double noundef 0x3EC71DE369ACE392) %524 = call double @llvm.fma.f64(double %523, double %514, double noundef 0xBF2A01A019DB62A1) %525 = call double @llvm.fma.f64(double %524, double %514, double noundef 0x3F81111111110818) %526 = call double @llvm.fma.f64(double %525, double %514, double noundef 0xBFC5555555555554) %527 = call double @llvm.fma.f64(double %526, double %514, double noundef 0.000000e+00) %528 = call double @llvm.fma.f64(double %527, double %.01, double %.01) %529 = call i32 @llvm.nvvm.d2i.hi(double %528) #139 %530 = call i32 @llvm.nvvm.d2i.lo(double %528) #139 %531 = xor i32 %529, -2147483648 %532 = call double @llvm.nvvm.lohi.i2d(i32 %530, i32 %531) #139 %533 = and i32 %i.i.i.i.0, 1 %.not8 = icmp eq i32 %533, 0 %spec.select4 = select i1 %.not8, double %521, double %532 %534 = and i32 %i.i.i.i.0, 2 %.not9 = icmp eq i32 %534, 0 br i1 %.not9, label %__internal_cos_offset.exit, label %535 535: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i %536 = call i32 @llvm.nvvm.d2i.hi(double %spec.select4) #139 %537 = call i32 @llvm.nvvm.d2i.lo(double %spec.select4) #139 %538 = xor i32 %536, -2147483648 %539 = call double @llvm.nvvm.lohi.i2d(i32 %537, i32 %538) #139 br label %__internal_cos_offset.exit 540: ; preds = %478 %541 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %542 = icmp eq i32 %541, 200 br i1 %542, label %549, label %543 543: ; preds = %540 %544 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %545 = icmp eq i32 %544, 350 br i1 %545, label %549, label %546 546: ; preds = %543 %547 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %548 = icmp eq i32 %547, 370 br i1 %548, label %549, label %552 549: ; preds = %546, %543, %540 %550 = call double @llvm.fabs.f64(double %475) %551 = fcmp oeq double %550, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i 552: ; preds = %546 %553 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %554 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %555 = and i32 %554, 2147483647 %556 = icmp eq i32 %555, 2146435072 %557 = icmp eq i32 %553, 0 %558 = select i1 %556, i1 %557, i1 false br label %__nv_isinfd.exit.i.i __nv_isinfd.exit.i.i: ; preds = %552, %549 %.03.in = phi i1 [ %551, %549 ], [ %558, %552 ] br i1 %.03.in, label %559, label %561 559: ; preds = %__nv_isinfd.exit.i.i %560 = fmul double %475, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i 561: ; preds = %__nv_isinfd.exit.i.i %562 = fmul double %475, 0x3FE45F306DC9C883 %563 = call i32 @llvm.nvvm.d2i.rn(double %562) #139 store i32 %563, i32* %q.i.i.i, align 4, !noalias !68 %564 = sitofp i32 %563 to double %565 = fneg double %564 %566 = call double @llvm.fma.f64(double %565, double noundef 0x3FF921FB54442D18, double %475) %567 = call double @llvm.fma.f64(double %565, double noundef 0x3C91A62633145C00, double %566) %568 = call double @llvm.fma.f64(double %565, double noundef 0x397B839A252049C0, double %567) %569 = call double @llvm.fabs.f64(double %475) %570 = fcmp ult double %569, 0x41E0000000000000 br i1 %570, label %__internal_trig_reduction_kerneld.exit.i.i, label %571 571: ; preds = %561 %572 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre19 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %571, %561 %573 = phi i32 [ %.pre19, %571 ], [ %563, %561 ] %t.i1.i.i.0 = phi double [ %572, %571 ], [ %568, %561 ] %phi.bo = add i32 %573, 1 br label %__internal_sin_cos_kerneld.exit.i.i __internal_sin_cos_kerneld.exit.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i, %559 %i.i.i.0 = phi i32 [ 1, %559 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i ] %z.i.i.0 = phi double [ %560, %559 ], [ %t.i1.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i ] %574 = shl i32 %i.i.i.0, 3 %575 = and i32 %574, 8 %576 = zext i32 %575 to i64 %577 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %576 %578 = fmul double %z.i.i.0, %z.i.i.0 %579 = and i32 %i.i.i.0, 1 %.not = icmp eq i32 %579, 0 %580 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %581 = getelementptr inbounds double, double addrspace(1)* %577, i64 1 %582 = load double, double addrspace(1)* %581, align 8 %583 = call double @llvm.fma.f64(double noundef %580, double %578, double %582) %584 = getelementptr inbounds double, double addrspace(1)* %577, i64 2 %585 = load double, double addrspace(1)* %584, align 8 %586 = call double @llvm.fma.f64(double %583, double %578, double %585) %587 = getelementptr inbounds double, double addrspace(1)* %577, i64 3 %588 = load double, double addrspace(1)* %587, align 8 %589 = call double @llvm.fma.f64(double %586, double %578, double %588) %590 = getelementptr inbounds double, double addrspace(1)* %577, i64 4 %591 = load double, double addrspace(1)* %590, align 8 %592 = call double @llvm.fma.f64(double %589, double %578, double %591) %593 = getelementptr inbounds double, double addrspace(1)* %577, i64 5 %594 = load double, double addrspace(1)* %593, align 8 %595 = call double @llvm.fma.f64(double %592, double %578, double %594) %596 = getelementptr inbounds double, double addrspace(1)* %577, i64 6 %597 = load double, double addrspace(1)* %596, align 8 %598 = call double @llvm.fma.f64(double %595, double %578, double %597) %599 = call double @llvm.fma.f64(double %598, double %z.i.i.0, double %z.i.i.0) %600 = call double @llvm.fma.f64(double %598, double %578, double noundef 1.000000e+00) %spec.select5 = select i1 %.not, double %599, double %600 %601 = and i32 %i.i.i.0, 2 %.not7 = icmp eq i32 %601, 0 %602 = call double @llvm.fma.f64(double %spec.select5, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not7, double %spec.select5, double %602 br label %__internal_cos_offset.exit __internal_cos_offset.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i, %535, %__internal_sin_cos_kerneld.exit.i.i %.0 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i ], [ %539, %535 ], [ %spec.select4, %__internal_trig_reduction_kerneld.exit.i.i.i ] %603 = fmul double %458, %.0 br label %604 604: ; preds = %__nv_log.exit, %369, %__internal_cos_offset.exit, %__nv_isinfd.exit, %395, %340, %3 %r.5 = phi double [ %4, %3 ], [ %337, %__nv_log.exit ], [ %366, %340 ], [ %392, %369 ], [ %413, %395 ], [ %603, %__internal_cos_offset.exit ], [ 0.000000e+00, %__nv_isinfd.exit ] %605 = fcmp ugt double %a, 0.000000e+00 %606 = fcmp oeq double %a, 0.000000e+00 %r.6 = select i1 %606, double 0xFFF0000000000000, double 0xFFF8000000000000 %r.7 = select i1 %605, double %r.5, double %r.6 ret double %r.7 } ; Function Attrs: noinline nounwind define dso_local double @__nv_yn(i32 %n, double %a) local_unnamed_addr #110 { %q.i.i.i.i5.i304 = alloca i32, align 4 %q.i.i.i.i.i.i320 = alloca i32, align 4 %q.i.i.i16.i334 = alloca i32, align 4 %q.i.i.i.i351 = alloca i32, align 4 %q.i.i.i.i.i367 = alloca i32, align 4 %q.i.i.i381 = alloca i32, align 4 %q.i.i.i.i9.i133 = alloca i32, align 4 %q.i.i.i.i.i.i149 = alloca i32, align 4 %q.i.i.i20.i163 = alloca i32, align 4 %q.i.i.i.i202 = alloca i32, align 4 %q.i.i.i.i.i218 = alloca i32, align 4 %q.i.i.i232 = alloca i32, align 4 %q.i.i.i.i9.i = alloca i32, align 4 %q.i.i.i.i.i.i20 = alloca i32, align 4 %q.i.i.i20.i = alloca i32, align 4 %q.i.i.i.i58 = alloca i32, align 4 %q.i.i.i.i.i74 = alloca i32, align 4 %q.i.i.i88 = alloca i32, align 4 %q.i.i.i.i5.i = alloca i32, align 4 %q.i.i.i.i.i.i = alloca i32, align 4 %q.i.i.i16.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i.i.i.i = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %1 = call double @llvm.fabs.f64(double %a) %2 = fcmp olt double %1, 0x730D67819E8D2 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fdiv double 0xBFE45F306DC9C883, %1 br label %__nv_y1.exit 5: ; preds = %0 %6 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %6, label %338, label %7 7: ; preds = %5 %8 = fmul double %a, %a %9 = call double @llvm.fma.f64(double %8, double noundef 0x3D5249F90687428C, double noundef 0xBDCF0B5B1FB7B95E) %10 = call double @llvm.fma.f64(double %9, double %8, double noundef 0x3E432E589311FA14) %11 = call double @llvm.fma.f64(double %10, double %8, double noundef 0xBEB0A780AA4A92E9) %12 = call double @llvm.fma.f64(double %11, double %8, double noundef 0x3F12C7DBFFCAEC2B) %13 = call double @llvm.fma.f64(double %12, double %8, double noundef 0xBF6835B97894BA4A) %14 = call double @llvm.fma.f64(double %13, double %8, double noundef 0x3FABD3975C75B4A3) %15 = call double @llvm.fma.f64(double %14, double %8, double noundef 0xBFC91866143CBC8A) %16 = fmul double %1, %15 %17 = fcmp ugt double %1, 0x400353AABAD7B784 br i1 %17, label %35, label %18 18: ; preds = %7 %19 = call double @llvm.fma.f64(double %1, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) %20 = call double @llvm.fma.f64(double %19, double %1, double noundef 0x3D5503F5A491E487) %21 = call double @llvm.fma.f64(double %20, double %1, double noundef 0x3DC1F29940C2403A) %22 = call double @llvm.fma.f64(double %21, double %1, double noundef 0x3D84CF9302EACDEF) %23 = call double @llvm.fma.f64(double %22, double %1, double noundef 0xBE384A53DBBCA436) %24 = call double @llvm.fma.f64(double %23, double %1, double noundef 0x3D9779BEE4F63BCC) %25 = call double @llvm.fma.f64(double %24, double %1, double noundef 0x3EA6C160E414F3F0) %26 = call double @llvm.fma.f64(double %25, double %1, double noundef 0x3D8F3D2F12430699) %27 = call double @llvm.fma.f64(double %26, double %1, double noundef 0xBF0C71C72C0CED04) %28 = call double @llvm.fma.f64(double %27, double %1, double noundef 0x3D659BCA506F1128) %29 = call double @llvm.fma.f64(double %28, double %1, double noundef 0x3F65555555506982) %30 = call double @llvm.fma.f64(double %29, double %1, double noundef 0x3D15BA0B425F1BFB) %31 = call double @llvm.fma.f64(double %30, double %1, double noundef 0xBFB0000000000065) %32 = call double @llvm.fma.f64(double %31, double %1, double noundef 0x3C8729A7253FB679) %33 = call double @llvm.fma.f64(double %32, double %1, double noundef 5.000000e-01) %34 = fmul double %1, %33 br label %__nv_j1.exit.i 35: ; preds = %7 %36 = fcmp ugt double %1, 0x4015B1D0574614EA br i1 %36, label %56, label %37 37: ; preds = %35 %38 = fadd double %1, 0xC00EA75575AF6F09 %39 = fadd double %38, 0x3CA60155A9D1B256 %40 = call double @llvm.fma.f64(double %39, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) %41 = call double @llvm.fma.f64(double %40, double %39, double noundef 0x3D76013AC1E5E222) %42 = call double @llvm.fma.f64(double %41, double %39, double noundef 0xBDBEC315D96D5F03) %43 = call double @llvm.fma.f64(double %42, double %39, double noundef 0xBDF03BE1B4B57207) %44 = call double @llvm.fma.f64(double %43, double %39, double noundef 0x3E345695F8B660F7) %45 = call double @llvm.fma.f64(double %44, double %39, double noundef 0x3E617069FCFCFFF4) %46 = call double @llvm.fma.f64(double %45, double %39, double noundef 0xBEA33825C36745EB) %47 = call double @llvm.fma.f64(double %46, double %39, double noundef 0xBEC9799D4F90931B) %48 = call double @llvm.fma.f64(double %47, double %39, double noundef 0x3F083A06E2F7DF13) %49 = call double @llvm.fma.f64(double %48, double %39, double noundef 0x3F26E4C2D53A7CF6) %50 = call double @llvm.fma.f64(double %49, double %39, double noundef 0xBF624B3409957B1C) %51 = call double @llvm.fma.f64(double %50, double %39, double noundef 0xBF7537544C3325DF) %52 = call double @llvm.fma.f64(double %51, double %39, double noundef 0x3FAB589D1DA138E2) %53 = call double @llvm.fma.f64(double %52, double %39, double noundef 0x3FAAE8A39F51AD13) %54 = call double @llvm.fma.f64(double %53, double %39, double noundef 0xBFD9C6CF582CBF7F) %55 = fmul double %39, %54 br label %__nv_j1.exit.i 56: ; preds = %35 %57 = fcmp ugt double %1, 0x40213065E54C1AA9 br i1 %57, label %77, label %58 58: ; preds = %56 %59 = fadd double %1, 0xC01C0FF5F3B47250 %60 = fadd double %59, 0x3C9B226D9D243827 %61 = call double @llvm.fma.f64(double %60, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) %62 = call double @llvm.fma.f64(double %61, double %60, double noundef 0xBD73B7DD4A6608FB) %63 = call double @llvm.fma.f64(double %62, double %60, double noundef 0x3DBEC5E01482C750) %64 = call double @llvm.fma.f64(double %63, double %60, double noundef 0x3DEC62BB9E882103) %65 = call double @llvm.fma.f64(double %64, double %60, double noundef 0xBE34462EED732A23) %66 = call double @llvm.fma.f64(double %65, double %60, double noundef 0xBE5D48DCAD7DC59B) %67 = call double @llvm.fma.f64(double %66, double %60, double noundef 0x3EA3026DF29167E9) %68 = call double @llvm.fma.f64(double %67, double %60, double noundef 0x3EC4255B0119666C) %69 = call double @llvm.fma.f64(double %68, double %60, double noundef 0xBF0796A751B32693) %70 = call double @llvm.fma.f64(double %69, double %60, double noundef 0xBF207358BBDBA284) %71 = call double @llvm.fma.f64(double %70, double %60, double noundef 0x3F613FBC7D6927B1) %72 = call double @llvm.fma.f64(double %71, double %60, double noundef 0x3F69A4B292E3DD75) %73 = call double @llvm.fma.f64(double %72, double %60, double noundef 0xBFA80C83BDEEE4FB) %74 = call double @llvm.fma.f64(double %73, double %60, double noundef 0xBF95E70DC60362BF) %75 = call double @llvm.fma.f64(double %74, double %60, double noundef 0x3FD33518B3874E8A) %76 = fmul double %60, %75 br label %__nv_j1.exit.i 77: ; preds = %56 %78 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %79 = icmp eq i32 %78, 200 br i1 %79, label %86, label %80 80: ; preds = %77 %81 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %82 = icmp eq i32 %81, 350 br i1 %82, label %86, label %83 83: ; preds = %80 %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %85 = icmp eq i32 %84, 370 br i1 %85, label %86, label %88 86: ; preds = %83, %80, %77 %87 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i 88: ; preds = %83 %89 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %90 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %91 = and i32 %90, 2147483647 %92 = icmp eq i32 %91, 2146435072 %93 = icmp eq i32 %89, 0 %94 = select i1 %92, i1 %93, i1 false br label %__nv_isinfd.exit.i.i __nv_isinfd.exit.i.i: ; preds = %88, %86 %.012.in = phi i1 [ %87, %86 ], [ %94, %88 ] br i1 %.012.in, label %__nv_j1.exit.i, label %95 95: ; preds = %__nv_isinfd.exit.i.i %96 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %97 = fneg double %1 %98 = call double @llvm.fma.f64(double %97, double %96, double noundef 1.000000e+00) %99 = call double @llvm.fma.f64(double %98, double %98, double %98) %100 = call double @llvm.fma.f64(double %99, double %96, double %96) %101 = fmul double %100, %100 %102 = call double @llvm.fma.f64(double %101, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %103 = call double @llvm.fma.f64(double %102, double %101, double noundef 0x405B89354DA77324) %104 = call double @llvm.fma.f64(double %103, double %101, double noundef 0xC01E352294653188) %105 = call double @llvm.fma.f64(double %104, double %101, double noundef 0x3FE9BC7DB16BD7A7) %106 = call double @llvm.fma.f64(double %105, double %101, double noundef 0xBFC8BFE1C3A4F741) %107 = call double @llvm.fma.f64(double %106, double %101, double noundef 0x3FC7FFFFF0D00BE2) %108 = call double @llvm.fma.f64(double %107, double %101, double noundef 0x3FF00000000068CC) %109 = call double @llvm.fma.f64(double %101, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %110 = call double @llvm.fma.f64(double %109, double %101, double noundef 0xC11764222AD7C910) %111 = call double @llvm.fma.f64(double %110, double %101, double noundef 0x40CEB02E0C306857) %112 = call double @llvm.fma.f64(double %111, double %101, double noundef 0xC08351859FA2B23B) %113 = call double @llvm.fma.f64(double %112, double %101, double noundef 0x403E65A07AF51F42) %114 = call double @llvm.fma.f64(double %113, double %101, double noundef 0xC002F2B817F77A57) %115 = call double @llvm.fma.f64(double %114, double %101, double noundef 0x3FD7BCC34DA069FD) %116 = call double @llvm.fma.f64(double %115, double %101, double noundef 0xBFC4FFFFF8A44463) %117 = call double @llvm.fma.f64(double %116, double %101, double noundef 0x3FD7FFFFFFFF5CD7) %118 = call double @llvm.fma.f64(double %117, double %100, double %1) %119 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %120 = fmul double %119, 0x3FE9884533D43651 %121 = fmul double %120, %108 %122 = fmul double %118, 0x3FE45F306DC9C883 %123 = call i32 @llvm.nvvm.d2i.rn(double %122) #139 store i32 %123, i32* %q.i.i.i16.i, align 4, !noalias !68 %124 = sitofp i32 %123 to double %125 = fneg double %124 %126 = call double @llvm.fma.f64(double %125, double noundef 0x3FF921FB54442D18, double %118) %127 = call double @llvm.fma.f64(double %125, double noundef 0x3C91A62633145C00, double %126) %128 = call double @llvm.fma.f64(double %125, double noundef 0x397B839A252049C0, double %127) %129 = call double @llvm.fabs.f64(double %118) %130 = fcmp ult double %129, 0x41E0000000000000 br i1 %130, label %__internal_trig_reduction_kerneld.exit.i.i20.i, label %131 131: ; preds = %95 %132 = call fastcc double @__internal_trig_reduction_slowpathd(double %118, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i16.i) #139 %.pre = load i32, i32* %q.i.i.i16.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20.i __internal_trig_reduction_kerneld.exit.i.i20.i: ; preds = %131, %95 %133 = phi i32 [ %.pre, %131 ], [ %123, %95 ] %t.i.i.i15.i.0 = phi double [ %132, %131 ], [ %128, %95 ] %134 = and i32 %133, 3 %135 = uitofp i32 %134 to double %136 = fadd double %t.i.i.i15.i.0, 0xC002D97C7F3321D2 %137 = fmul double %135, 0x3FF921FB54442D18 %138 = fadd double %136, %137 %139 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %140 = icmp eq i32 %139, 350 br i1 %140, label %144, label %141 141: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i %142 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %143 = icmp eq i32 %142, 370 br i1 %143, label %144, label %203 144: ; preds = %141, %__internal_trig_reduction_kerneld.exit.i.i20.i %145 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %146 = icmp eq i32 %145, 200 br i1 %146, label %153, label %147 147: ; preds = %144 %148 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %149 = icmp eq i32 %148, 350 br i1 %149, label %153, label %150 150: ; preds = %147 %151 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %152 = icmp eq i32 %151, 370 br i1 %152, label %153, label %156 153: ; preds = %150, %147, %144 %154 = call double @llvm.fabs.f64(double %138) %155 = fcmp oeq double %154, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i.i 156: ; preds = %150 %157 = call i32 @llvm.nvvm.d2i.lo(double %138) #139 %158 = call i32 @llvm.nvvm.d2i.hi(double %138) #139 %159 = and i32 %158, 2147483647 %160 = icmp eq i32 %159, 2146435072 %161 = icmp eq i32 %157, 0 %162 = select i1 %160, i1 %161, i1 false br label %__nv_isinfd.exit.i.i.i.i.i __nv_isinfd.exit.i.i.i.i.i: ; preds = %156, %153 %.08.in = phi i1 [ %155, %153 ], [ %162, %156 ] br i1 %.08.in, label %163, label %165 163: ; preds = %__nv_isinfd.exit.i.i.i.i.i %164 = fmul double %138, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i 165: ; preds = %__nv_isinfd.exit.i.i.i.i.i %166 = fmul double %138, 0x3FE45F306DC9C883 %167 = call i32 @llvm.nvvm.d2i.rn(double %166) #139 store i32 %167, i32* %q.i.i.i.i.i.i, align 4, !noalias !68 %168 = sitofp i32 %167 to double %169 = fneg double %168 %170 = call double @llvm.fma.f64(double %169, double noundef 0x3FF921FB54442D18, double %138) %171 = call double @llvm.fma.f64(double %169, double noundef 0x3C91A62633145C00, double %170) %172 = call double @llvm.fma.f64(double %169, double noundef 0x397B839A252049C0, double %171) %173 = call double @llvm.fabs.f64(double %138) %174 = fcmp ult double %173, 0x41E0000000000000 br i1 %174, label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i, label %175 175: ; preds = %165 %176 = call fastcc double @__internal_trig_reduction_slowpathd(double %138, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i.i) #139 %.pre74 = load i32, i32* %q.i.i.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i.i.i: ; preds = %165, %175, %163 %i.i.i.i.i.i.0 = phi i32 [ 0, %163 ], [ %.pre74, %175 ], [ %167, %165 ] %.07 = phi double [ %164, %163 ], [ %176, %175 ], [ %172, %165 ] %177 = fmul double %.07, %.07 %178 = call double @llvm.fma.f64(double %177, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %179 = call double @llvm.fma.f64(double %178, double %177, double noundef 0xBE927E4F8E06E6D9) %180 = call double @llvm.fma.f64(double %179, double %177, double noundef 0x3EFA01A019DDBCE9) %181 = call double @llvm.fma.f64(double %180, double %177, double noundef 0xBF56C16C16C15D47) %182 = call double @llvm.fma.f64(double %181, double %177, double noundef 0x3FA5555555555551) %183 = call double @llvm.fma.f64(double %182, double %177, double noundef -5.000000e-01) %184 = call double @llvm.fma.f64(double %183, double %177, double noundef 1.000000e+00) %185 = call double @llvm.fma.f64(double %177, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %186 = call double @llvm.fma.f64(double %185, double %177, double noundef 0x3EC71DE369ACE392) %187 = call double @llvm.fma.f64(double %186, double %177, double noundef 0xBF2A01A019DB62A1) %188 = call double @llvm.fma.f64(double %187, double %177, double noundef 0x3F81111111110818) %189 = call double @llvm.fma.f64(double %188, double %177, double noundef 0xBFC5555555555554) %190 = call double @llvm.fma.f64(double %189, double %177, double noundef 0.000000e+00) %191 = call double @llvm.fma.f64(double %190, double %.07, double %.07) %192 = call i32 @llvm.nvvm.d2i.hi(double %191) #139 %193 = call i32 @llvm.nvvm.d2i.lo(double %191) #139 %194 = xor i32 %192, -2147483648 %195 = call double @llvm.nvvm.lohi.i2d(i32 %193, i32 %194) #139 %196 = and i32 %i.i.i.i.i.i.0, 1 %.not67 = icmp eq i32 %196, 0 %spec.select1 = select i1 %.not67, double %184, double %195 %197 = and i32 %i.i.i.i.i.i.0, 2 %.not68 = icmp eq i32 %197, 0 br i1 %.not68, label %__internal_cos_offset.exit.i.i, label %198 198: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i %199 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %200 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %201 = xor i32 %199, -2147483648 %202 = call double @llvm.nvvm.lohi.i2d(i32 %200, i32 %201) #139 br label %__internal_cos_offset.exit.i.i 203: ; preds = %141 %204 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %205 = icmp eq i32 %204, 200 br i1 %205, label %212, label %206 206: ; preds = %203 %207 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %208 = icmp eq i32 %207, 350 br i1 %208, label %212, label %209 209: ; preds = %206 %210 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %211 = icmp eq i32 %210, 370 br i1 %211, label %212, label %215 212: ; preds = %209, %206, %203 %213 = call double @llvm.fabs.f64(double %138) %214 = fcmp oeq double %213, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i21.i 215: ; preds = %209 %216 = call i32 @llvm.nvvm.d2i.lo(double %138) #139 %217 = call i32 @llvm.nvvm.d2i.hi(double %138) #139 %218 = and i32 %217, 2147483647 %219 = icmp eq i32 %218, 2146435072 %220 = icmp eq i32 %216, 0 %221 = select i1 %219, i1 %220, i1 false br label %__nv_isinfd.exit.i.i.i21.i __nv_isinfd.exit.i.i.i21.i: ; preds = %215, %212 %.09.in = phi i1 [ %214, %212 ], [ %221, %215 ] br i1 %.09.in, label %222, label %224 222: ; preds = %__nv_isinfd.exit.i.i.i21.i %223 = fmul double %138, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i.i 224: ; preds = %__nv_isinfd.exit.i.i.i21.i %225 = fmul double %138, 0x3FE45F306DC9C883 %226 = call i32 @llvm.nvvm.d2i.rn(double %225) #139 store i32 %226, i32* %q.i.i.i.i5.i, align 4, !noalias !68 %227 = sitofp i32 %226 to double %228 = fneg double %227 %229 = call double @llvm.fma.f64(double %228, double noundef 0x3FF921FB54442D18, double %138) %230 = call double @llvm.fma.f64(double %228, double noundef 0x3C91A62633145C00, double %229) %231 = call double @llvm.fma.f64(double %228, double noundef 0x397B839A252049C0, double %230) %232 = call double @llvm.fabs.f64(double %138) %233 = fcmp ult double %232, 0x41E0000000000000 br i1 %233, label %__internal_sin_cos_kerneld.exit.i.i.i.i, label %234 234: ; preds = %224 %235 = call fastcc double @__internal_trig_reduction_slowpathd(double %138, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i5.i) #139 %.pre73 = load i32, i32* %q.i.i.i.i5.i, align 4 br label %__internal_sin_cos_kerneld.exit.i.i.i.i __internal_sin_cos_kerneld.exit.i.i.i.i: ; preds = %224, %234, %222 %i.i.i.i13.i.0 = phi i32 [ 0, %222 ], [ %.pre73, %234 ], [ %226, %224 ] %z.i.i.i12.i.0 = phi double [ %223, %222 ], [ %235, %234 ], [ %231, %224 ] %236 = add nsw i32 %i.i.i.i13.i.0, 1 %237 = shl i32 %236, 3 %238 = and i32 %237, 8 %239 = zext i32 %238 to i64 %240 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %239 %241 = fmul double %z.i.i.i12.i.0, %z.i.i.i12.i.0 %242 = and i32 %236, 1 %.not64 = icmp eq i32 %242, 0 %243 = select i1 %.not64, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %244 = getelementptr inbounds double, double addrspace(1)* %240, i64 1 %245 = load double, double addrspace(1)* %244, align 8 %246 = call double @llvm.fma.f64(double noundef %243, double %241, double %245) %247 = getelementptr inbounds double, double addrspace(1)* %240, i64 2 %248 = load double, double addrspace(1)* %247, align 8 %249 = call double @llvm.fma.f64(double %246, double %241, double %248) %250 = getelementptr inbounds double, double addrspace(1)* %240, i64 3 %251 = load double, double addrspace(1)* %250, align 8 %252 = call double @llvm.fma.f64(double %249, double %241, double %251) %253 = getelementptr inbounds double, double addrspace(1)* %240, i64 4 %254 = load double, double addrspace(1)* %253, align 8 %255 = call double @llvm.fma.f64(double %252, double %241, double %254) %256 = getelementptr inbounds double, double addrspace(1)* %240, i64 5 %257 = load double, double addrspace(1)* %256, align 8 %258 = call double @llvm.fma.f64(double %255, double %241, double %257) %259 = getelementptr inbounds double, double addrspace(1)* %240, i64 6 %260 = load double, double addrspace(1)* %259, align 8 %261 = call double @llvm.fma.f64(double %258, double %241, double %260) %262 = call double @llvm.fma.f64(double %261, double %z.i.i.i12.i.0, double %z.i.i.i12.i.0) %263 = call double @llvm.fma.f64(double %261, double %241, double noundef 1.000000e+00) %spec.select2 = select i1 %.not64, double %262, double %263 %264 = and i32 %236, 2 %.not66 = icmp eq i32 %264, 0 %265 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.111 = select i1 %.not66, double %spec.select2, double %265 br label %__internal_cos_offset.exit.i.i __internal_cos_offset.exit.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i, %198, %__internal_sin_cos_kerneld.exit.i.i.i.i %.06 = phi double [ %.111, %__internal_sin_cos_kerneld.exit.i.i.i.i ], [ %202, %198 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i.i.i ] %266 = fmul double %121, %.06 br label %__nv_j1.exit.i __nv_j1.exit.i: ; preds = %37, %__internal_cos_offset.exit.i.i, %__nv_isinfd.exit.i.i, %58, %18 %r.i.i.3 = phi double [ %34, %18 ], [ %55, %37 ], [ %76, %58 ], [ %266, %__internal_cos_offset.exit.i.i ], [ 0.000000e+00, %__nv_isinfd.exit.i.i ] %267 = fcmp olt double %1, 1.000000e-30 %268 = fmul double %1, 5.000000e-01 %r.i.i.5 = select i1 %267, double %268, double %r.i.i.3 %269 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %270 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %271 = icmp slt i32 %269, 1048576 br i1 %271, label %272, label %276 272: ; preds = %__nv_j1.exit.i %273 = fmul double %1, 0x4350000000000000 %274 = call i32 @llvm.nvvm.d2i.hi(double %273) #139 %275 = call i32 @llvm.nvvm.d2i.lo(double %273) #139 br label %276 276: ; preds = %272, %__nv_j1.exit.i %.013 = phi double [ %273, %272 ], [ %1, %__nv_j1.exit.i ] %ihi.i.i.0 = phi i32 [ %274, %272 ], [ %269, %__nv_j1.exit.i ] %ilo.i.i.0 = phi i32 [ %275, %272 ], [ %270, %__nv_j1.exit.i ] %e.i.i.0 = phi i32 [ -1077, %272 ], [ -1023, %__nv_j1.exit.i ] %277 = add i32 %ihi.i.i.0, -1 %278 = icmp ult i32 %277, 2146435071 br i1 %278, label %279, label %328 279: ; preds = %276 %280 = lshr i32 %ihi.i.i.0, 20 %281 = add nsw i32 %e.i.i.0, %280 %282 = and i32 %ihi.i.i.0, -2146435073 %283 = or i32 %282, 1072693248 %284 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %283) #139 %285 = icmp sgt i32 %283, 1073127582 br i1 %285, label %286, label %292 286: ; preds = %279 %287 = call i32 @llvm.nvvm.d2i.lo(double %284) #139 %288 = call i32 @llvm.nvvm.d2i.hi(double %284) #139 %289 = add i32 %288, -1048576 %290 = call double @llvm.nvvm.lohi.i2d(i32 %287, i32 %289) #139 %291 = add nsw i32 %281, 1 br label %292 292: ; preds = %286, %279 %m.i.i.0 = phi double [ %290, %286 ], [ %284, %279 ] %e.i.i.1 = phi i32 [ %291, %286 ], [ %281, %279 ] %293 = fadd double %m.i.i.0, -1.000000e+00 %294 = fadd double %m.i.i.0, 1.000000e+00 %295 = call double @llvm.nvvm.rcp.approx.ftz.d(double %294) #139 %296 = fneg double %294 %297 = call double @llvm.fma.f64(double %296, double %295, double noundef 1.000000e+00) %298 = call double @llvm.fma.f64(double %297, double %297, double %297) %299 = call double @llvm.fma.f64(double %298, double %295, double %295) %300 = fmul double %293, %299 %301 = fadd double %300, %300 %302 = fmul double %301, %301 %303 = call double @llvm.fma.f64(double %302, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %304 = call double @llvm.fma.f64(double %303, double %302, double noundef 0x3EF3B2669F02676F) %305 = call double @llvm.fma.f64(double %304, double %302, double noundef 0x3F1745CBA9AB0956) %306 = call double @llvm.fma.f64(double %305, double %302, double noundef 0x3F3C71C72D1B5154) %307 = call double @llvm.fma.f64(double %306, double %302, double noundef 0x3F624924923BE72D) %308 = call double @llvm.fma.f64(double %307, double %302, double noundef 0x3F8999999999A3C4) %309 = call double @llvm.fma.f64(double %308, double %302, double noundef 0x3FB5555555555554) %310 = fsub double %293, %301 %311 = fmul double %310, 2.000000e+00 %312 = fneg double %301 %313 = call double @llvm.fma.f64(double %312, double %293, double %311) %314 = fmul double %299, %313 %315 = fmul double %302, %309 %316 = call double @llvm.fma.f64(double %315, double %301, double %314) %317 = xor i32 %e.i.i.1, -2147483648 %318 = call double @llvm.nvvm.lohi.i2d(i32 %317, i32 noundef 1127219200) #139 %319 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %320 = fsub double %318, %319 %321 = call double @llvm.fma.f64(double %320, double noundef 0x3FE62E42FEFA39EF, double %301) %322 = fneg double %320 %323 = call double @llvm.fma.f64(double %322, double noundef 0x3FE62E42FEFA39EF, double %321) %324 = fsub double %323, %301 %325 = fsub double %316, %324 %326 = call double @llvm.fma.f64(double %320, double noundef 0x3C7ABC9E3B39803F, double %325) %327 = fadd double %321, %326 br label %__nv_log.exit.i 328: ; preds = %276 %329 = call double @llvm.fma.f64(double %.013, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %330 = call i32 @llvm.nvvm.d2i.hi(double %.013) #139 %331 = bitcast i32 %330 to float %332 = fcmp oeq float %331, 0.000000e+00 %q.i28.i.0 = select i1 %332, double 0xFFF0000000000000, double %329 br label %__nv_log.exit.i __nv_log.exit.i: ; preds = %328, %292 %q.i28.i.1 = phi double [ %327, %292 ], [ %q.i28.i.0, %328 ] %333 = fmul double %r.i.i.5, %q.i28.i.1 %334 = fdiv double 1.000000e+00, %1 %335 = fsub double %333, %334 %336 = fmul double %335, 0x3FE45F306DC9C883 %337 = fadd double %16, %336 br label %__nv_y1.exit 338: ; preds = %5 %339 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %339, label %367, label %340 340: ; preds = %338 %341 = fadd double %1, 0xC00193BED4DFF243 %342 = fadd double %341, 0x3C8BD1E50D219BFD %343 = call double @llvm.fma.f64(double %342, double noundef 0xBE2B87B0BE2AA150, double noundef 0x3E4833AAE4D8B975) %344 = call double @llvm.fma.f64(double %343, double %342, double noundef 0xBE44E279B423E68F) %345 = call double @llvm.fma.f64(double %344, double %342, double noundef 0x3E129DC6A747EB4F) %346 = call double @llvm.fma.f64(double %345, double %342, double noundef 0xBE61D15534496CD8) %347 = call double @llvm.fma.f64(double %346, double %342, double noundef 0x3E7EEC8D48FECE00) %348 = call double @llvm.fma.f64(double %347, double %342, double noundef 0xBE8D1180AF70A134) %349 = call double @llvm.fma.f64(double %348, double %342, double noundef 0x3E9C8386A0EA1388) %350 = call double @llvm.fma.f64(double %349, double %342, double noundef 0xBEB01A014E7F3250) %351 = call double @llvm.fma.f64(double %350, double %342, double noundef 0x3EC1FB752010A320) %352 = call double @llvm.fma.f64(double %351, double %342, double noundef 0xBED3AA0AFF4E332B) %353 = call double @llvm.fma.f64(double %352, double %342, double noundef 0x3EE584A6C77F6700) %354 = call double @llvm.fma.f64(double %353, double %342, double noundef 0xBEF794C520FC2EBB) %355 = call double @llvm.fma.f64(double %354, double %342, double noundef 0x3F09D18D2D35CC71) %356 = call double @llvm.fma.f64(double %355, double %342, double noundef 0xBF1C3FB7315C4599) %357 = call double @llvm.fma.f64(double %356, double %342, double noundef 0x3F2EEA7ADECCE927) %358 = call double @llvm.fma.f64(double %357, double %342, double noundef 0xBF40B2D85257446F) %359 = call double @llvm.fma.f64(double %358, double %342, double noundef 0x3F517AB4B1FE5D5B) %360 = call double @llvm.fma.f64(double %359, double %342, double noundef 0xBF65429DC6516C0D) %361 = call double @llvm.fma.f64(double %360, double %342, double noundef 0x3F7E671C7D0B090B) %362 = call double @llvm.fma.f64(double %361, double %342, double noundef 0xBF73A6DEC36FB27C) %363 = call double @llvm.fma.f64(double %362, double %342, double noundef 0xBFA0D2AF4E931FD1) %364 = call double @llvm.fma.f64(double %363, double %342, double noundef 0xBFBE56F82217B964) %365 = call double @llvm.fma.f64(double %364, double %342, double noundef 0x3FE0AA48442F014B) %366 = fmul double %342, %365 br label %__nv_y1.exit 367: ; preds = %338 %368 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %368, label %393, label %369 369: ; preds = %367 %370 = fadd double %1, 0xC015B7FE4E87B02E %371 = fadd double %370, 0xBCBDFE7BAC228E8C %372 = call double @llvm.fma.f64(double %371, double noundef 0x3CBA3C76069F1D8C, double noundef 0x3CC69A30996793E2) %373 = call double @llvm.fma.f64(double %372, double %371, double noundef 0xBCDDD8432FE756E7) %374 = call double @llvm.fma.f64(double %373, double %371, double noundef 0xBD143158EEE220F7) %375 = call double @llvm.fma.f64(double %374, double %371, double noundef 0x3D28D44491230F5A) %376 = call double @llvm.fma.f64(double %375, double %371, double noundef 0xBD438842EAF4EDBC) %377 = call double @llvm.fma.f64(double %376, double %371, double noundef 0x3D74958DAFBFAF5A) %378 = call double @llvm.fma.f64(double %377, double %371, double noundef 0xBD9449A60E664848) %379 = call double @llvm.fma.f64(double %378, double %371, double noundef 0x3D838BC8CD594A76) %380 = call double @llvm.fma.f64(double %379, double %371, double noundef 0xBDFA798002141323) %381 = call double @llvm.fma.f64(double %380, double %371, double noundef 0x3E380B4198956AAA) %382 = call double @llvm.fma.f64(double %381, double %371, double noundef 0x3E5B62B5F21BACD4) %383 = call double @llvm.fma.f64(double %382, double %371, double noundef 0xBEA255E729FB6AAE) %384 = call double @llvm.fma.f64(double %383, double %371, double noundef 0xBEC80618F6BAE5AA) %385 = call double @llvm.fma.f64(double %384, double %371, double noundef 0x3F085B940F8E8D36) %386 = call double @llvm.fma.f64(double %385, double %371, double noundef 0x3F2337C7E10E14E8) %387 = call double @llvm.fma.f64(double %386, double %371, double noundef 0xBF61BE6DB99332CA) %388 = call double @llvm.fma.f64(double %387, double %371, double noundef 0xBF710A329E2BE9B8) %389 = call double @llvm.fma.f64(double %388, double %371, double noundef 0x3FAA15D92DFE3FCF) %390 = call double @llvm.fma.f64(double %389, double %371, double noundef 0x3FA00B9F8571C9BE) %391 = call double @llvm.fma.f64(double %390, double %371, double noundef 0xBFD5C7C556F0C19A) %392 = fmul double %371, %391 br label %__nv_y1.exit 393: ; preds = %367 %394 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %394, label %414, label %395 395: ; preds = %393 %396 = fadd double %1, 0xC0213127AE6169B4 %397 = fadd double %396, 0xBCB479CC068D9046 %398 = call double @llvm.fma.f64(double %397, double noundef 0x3CB09CCC22945996, double noundef 0xBD43515F67644276) %399 = call double @llvm.fma.f64(double %398, double %397, double noundef 0xBD72C5B978E9F5C7) %400 = call double @llvm.fma.f64(double %399, double %397, double noundef 0x3DBEC1151613913C) %401 = call double @llvm.fma.f64(double %400, double %397, double noundef 0x3DE9E38D13C4A824) %402 = call double @llvm.fma.f64(double %401, double %397, double noundef 0xBE341E75E1088EB5) %403 = call double @llvm.fma.f64(double %402, double %397, double noundef 0xBE5A384EBB13CFE1) %404 = call double @llvm.fma.f64(double %403, double %397, double noundef 0x3EA2BECB27F8C8F8) %405 = call double @llvm.fma.f64(double %404, double %397, double noundef 0x3EC176E72B989FD8) %406 = call double @llvm.fma.f64(double %405, double %397, double noundef 0xBF06F7BAB102F822) %407 = call double @llvm.fma.f64(double %406, double %397, double noundef 0xBF1B50D7E1D278E1) %408 = call double @llvm.fma.f64(double %407, double %397, double noundef 0x3F607A678D60004F) %409 = call double @llvm.fma.f64(double %408, double %397, double noundef 0x3F63CED2A2E69115) %410 = call double @llvm.fma.f64(double %409, double %397, double noundef 0xBFA6395DFE49FCD4) %411 = call double @llvm.fma.f64(double %410, double %397, double noundef 0xBF902B3933CF21B1) %412 = call double @llvm.fma.f64(double %411, double %397, double noundef 0x3FD15F993FCEAB5C) %413 = fmul double %397, %412 br label %__nv_y1.exit 414: ; preds = %393 %415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %416 = icmp eq i32 %415, 200 br i1 %416, label %423, label %417 417: ; preds = %414 %418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %419 = icmp eq i32 %418, 350 br i1 %419, label %423, label %420 420: ; preds = %417 %421 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %422 = icmp eq i32 %421, 370 br i1 %422, label %423, label %425 423: ; preds = %420, %417, %414 %424 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 425: ; preds = %420 %426 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %427 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %428 = and i32 %427, 2147483647 %429 = icmp eq i32 %428, 2146435072 %430 = icmp eq i32 %426, 0 %431 = select i1 %429, i1 %430, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %425, %423 %.014.in = phi i1 [ %424, %423 ], [ %431, %425 ] br i1 %.014.in, label %__nv_y1.exit, label %432 432: ; preds = %__nv_isinfd.exit.i %433 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %434 = fneg double %1 %435 = call double @llvm.fma.f64(double %434, double %433, double noundef 1.000000e+00) %436 = call double @llvm.fma.f64(double %435, double %435, double %435) %437 = call double @llvm.fma.f64(double %436, double %433, double %433) %438 = fmul double %437, %437 %439 = call double @llvm.fma.f64(double %438, double noundef 0x40D13DB326ECEBFE, double noundef 0xC09C26E89385D5B1) %440 = call double @llvm.fma.f64(double %439, double %438, double noundef 0x405C6AB923C6F55E) %441 = call double @llvm.fma.f64(double %440, double %438, double noundef 0xC01E61EAF3BD2FA1) %442 = call double @llvm.fma.f64(double %441, double %438, double noundef 0x3FE9BF15D9B97DD1) %443 = call double @llvm.fma.f64(double %442, double %438, double noundef 0xBFC8BFECF93D7D19) %444 = call double @llvm.fma.f64(double %443, double %438, double noundef 0x3FC7FFFFF756AA6C) %445 = call double @llvm.fma.f64(double %444, double %438, double noundef 0x3FF0000000003646) %446 = call double @llvm.fma.f64(double %438, double noundef 0xC1943281A050209C, double noundef 0x416024E99BA46E7B) %447 = call double @llvm.fma.f64(double %446, double %438, double noundef 0xC11A6875D7DFBD65) %448 = call double @llvm.fma.f64(double %447, double %438, double noundef 0x40D032C041790233) %449 = call double @llvm.fma.f64(double %448, double %438, double noundef 0xC0839F895BC22946) %450 = call double @llvm.fma.f64(double %449, double %438, double noundef 0x403E77CC78ECD2D8) %451 = call double @llvm.fma.f64(double %450, double %438, double noundef 0xC002F368D0117BE9) %452 = call double @llvm.fma.f64(double %451, double %438, double noundef 0x3FD7BCC786009A25) %453 = call double @llvm.fma.f64(double %452, double %438, double noundef 0xBFC4FFFFFC51BC7A) %454 = call double @llvm.fma.f64(double %453, double %438, double noundef 0x3FD7FFFFFFFFB5EA) %455 = call double @llvm.fma.f64(double %454, double %437, double %1) %456 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %457 = fmul double %456, 0x3FE9884533D43651 %458 = fmul double %457, %445 %459 = fmul double %455, 0x3FE45F306DC9C883 %460 = call i32 @llvm.nvvm.d2i.rn(double %459) #139 store i32 %460, i32* %q.i.i.i, align 4, !noalias !68 %461 = sitofp i32 %460 to double %462 = fneg double %461 %463 = call double @llvm.fma.f64(double %462, double noundef 0x3FF921FB54442D18, double %455) %464 = call double @llvm.fma.f64(double %462, double noundef 0x3C91A62633145C00, double %463) %465 = call double @llvm.fma.f64(double %462, double noundef 0x397B839A252049C0, double %464) %466 = call double @llvm.fabs.f64(double %455) %467 = fcmp ult double %466, 0x41E0000000000000 br i1 %467, label %__internal_trig_reduction_kerneld.exit.i.i, label %468 468: ; preds = %432 %469 = call fastcc double @__internal_trig_reduction_slowpathd(double %455, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre75 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %468, %432 %470 = phi i32 [ %.pre75, %468 ], [ %460, %432 ] %t.i.i.i.0 = phi double [ %469, %468 ], [ %465, %432 ] %471 = and i32 %470, 3 %472 = uitofp i32 %471 to double %473 = fadd double %t.i.i.i.0, 0xC00F6A7A2955385E %474 = fmul double %472, 0x3FF921FB54442D18 %475 = fadd double %473, %474 %476 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %477 = icmp eq i32 %476, 350 br i1 %477, label %481, label %478 478: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %479 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %480 = icmp eq i32 %479, 370 br i1 %480, label %481, label %540 481: ; preds = %478, %__internal_trig_reduction_kerneld.exit.i.i %482 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %483 = icmp eq i32 %482, 200 br i1 %483, label %490, label %484 484: ; preds = %481 %485 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %486 = icmp eq i32 %485, 350 br i1 %486, label %490, label %487 487: ; preds = %484 %488 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %489 = icmp eq i32 %488, 370 br i1 %489, label %490, label %493 490: ; preds = %487, %484, %481 %491 = call double @llvm.fabs.f64(double %475) %492 = fcmp oeq double %491, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i 493: ; preds = %487 %494 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %495 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %496 = and i32 %495, 2147483647 %497 = icmp eq i32 %496, 2146435072 %498 = icmp eq i32 %494, 0 %499 = select i1 %497, i1 %498, i1 false br label %__nv_isinfd.exit.i.i.i.i __nv_isinfd.exit.i.i.i.i: ; preds = %493, %490 %.03.in = phi i1 [ %492, %490 ], [ %499, %493 ] br i1 %.03.in, label %500, label %502 500: ; preds = %__nv_isinfd.exit.i.i.i.i %501 = fmul double %475, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i 502: ; preds = %__nv_isinfd.exit.i.i.i.i %503 = fmul double %475, 0x3FE45F306DC9C883 %504 = call i32 @llvm.nvvm.d2i.rn(double %503) #139 store i32 %504, i32* %q.i.i.i.i.i, align 4, !noalias !68 %505 = sitofp i32 %504 to double %506 = fneg double %505 %507 = call double @llvm.fma.f64(double %506, double noundef 0x3FF921FB54442D18, double %475) %508 = call double @llvm.fma.f64(double %506, double noundef 0x3C91A62633145C00, double %507) %509 = call double @llvm.fma.f64(double %506, double noundef 0x397B839A252049C0, double %508) %510 = call double @llvm.fabs.f64(double %475) %511 = fcmp ult double %510, 0x41E0000000000000 br i1 %511, label %__internal_trig_reduction_kerneld.exit.i.i.i.i, label %512 512: ; preds = %502 %513 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i) #139 %.pre77 = load i32, i32* %q.i.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i.i: ; preds = %502, %512, %500 %i.i.i.i.i.0 = phi i32 [ 0, %500 ], [ %.pre77, %512 ], [ %504, %502 ] %.02 = phi double [ %501, %500 ], [ %513, %512 ], [ %509, %502 ] %514 = fmul double %.02, %.02 %515 = call double @llvm.fma.f64(double %514, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %516 = call double @llvm.fma.f64(double %515, double %514, double noundef 0xBE927E4F8E06E6D9) %517 = call double @llvm.fma.f64(double %516, double %514, double noundef 0x3EFA01A019DDBCE9) %518 = call double @llvm.fma.f64(double %517, double %514, double noundef 0xBF56C16C16C15D47) %519 = call double @llvm.fma.f64(double %518, double %514, double noundef 0x3FA5555555555551) %520 = call double @llvm.fma.f64(double %519, double %514, double noundef -5.000000e-01) %521 = call double @llvm.fma.f64(double %520, double %514, double noundef 1.000000e+00) %522 = call double @llvm.fma.f64(double %514, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %523 = call double @llvm.fma.f64(double %522, double %514, double noundef 0x3EC71DE369ACE392) %524 = call double @llvm.fma.f64(double %523, double %514, double noundef 0xBF2A01A019DB62A1) %525 = call double @llvm.fma.f64(double %524, double %514, double noundef 0x3F81111111110818) %526 = call double @llvm.fma.f64(double %525, double %514, double noundef 0xBFC5555555555554) %527 = call double @llvm.fma.f64(double %526, double %514, double noundef 0.000000e+00) %528 = call double @llvm.fma.f64(double %527, double %.02, double %.02) %529 = call i32 @llvm.nvvm.d2i.hi(double %528) #139 %530 = call i32 @llvm.nvvm.d2i.lo(double %528) #139 %531 = xor i32 %529, -2147483648 %532 = call double @llvm.nvvm.lohi.i2d(i32 %530, i32 %531) #139 %533 = and i32 %i.i.i.i.i.0, 1 %.not62 = icmp eq i32 %533, 0 %spec.select4 = select i1 %.not62, double %521, double %532 %534 = and i32 %i.i.i.i.i.0, 2 %.not63 = icmp eq i32 %534, 0 br i1 %.not63, label %__internal_cos_offset.exit.i, label %535 535: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i %536 = call i32 @llvm.nvvm.d2i.hi(double %spec.select4) #139 %537 = call i32 @llvm.nvvm.d2i.lo(double %spec.select4) #139 %538 = xor i32 %536, -2147483648 %539 = call double @llvm.nvvm.lohi.i2d(i32 %537, i32 %538) #139 br label %__internal_cos_offset.exit.i 540: ; preds = %478 %541 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %542 = icmp eq i32 %541, 200 br i1 %542, label %549, label %543 543: ; preds = %540 %544 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %545 = icmp eq i32 %544, 350 br i1 %545, label %549, label %546 546: ; preds = %543 %547 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %548 = icmp eq i32 %547, 370 br i1 %548, label %549, label %552 549: ; preds = %546, %543, %540 %550 = call double @llvm.fabs.f64(double %475) %551 = fcmp oeq double %550, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 552: ; preds = %546 %553 = call i32 @llvm.nvvm.d2i.lo(double %475) #139 %554 = call i32 @llvm.nvvm.d2i.hi(double %475) #139 %555 = and i32 %554, 2147483647 %556 = icmp eq i32 %555, 2146435072 %557 = icmp eq i32 %553, 0 %558 = select i1 %556, i1 %557, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %552, %549 %.04.in = phi i1 [ %551, %549 ], [ %558, %552 ] br i1 %.04.in, label %559, label %561 559: ; preds = %__nv_isinfd.exit.i.i.i %560 = fmul double %475, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i 561: ; preds = %__nv_isinfd.exit.i.i.i %562 = fmul double %475, 0x3FE45F306DC9C883 %563 = call i32 @llvm.nvvm.d2i.rn(double %562) #139 store i32 %563, i32* %q.i.i.i.i, align 4, !noalias !68 %564 = sitofp i32 %563 to double %565 = fneg double %564 %566 = call double @llvm.fma.f64(double %565, double noundef 0x3FF921FB54442D18, double %475) %567 = call double @llvm.fma.f64(double %565, double noundef 0x3C91A62633145C00, double %566) %568 = call double @llvm.fma.f64(double %565, double noundef 0x397B839A252049C0, double %567) %569 = call double @llvm.fabs.f64(double %475) %570 = fcmp ult double %569, 0x41E0000000000000 br i1 %570, label %__internal_sin_cos_kerneld.exit.i.i.i, label %571 571: ; preds = %561 %572 = call fastcc double @__internal_trig_reduction_slowpathd(double %475, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre76 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_sin_cos_kerneld.exit.i.i.i __internal_sin_cos_kerneld.exit.i.i.i: ; preds = %561, %571, %559 %i.i.i.i.0 = phi i32 [ 0, %559 ], [ %.pre76, %571 ], [ %563, %561 ] %z.i.i.i.0 = phi double [ %560, %559 ], [ %572, %571 ], [ %568, %561 ] %573 = add nsw i32 %i.i.i.i.0, 1 %574 = shl i32 %573, 3 %575 = and i32 %574, 8 %576 = zext i32 %575 to i64 %577 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %576 %578 = fmul double %z.i.i.i.0, %z.i.i.i.0 %579 = and i32 %573, 1 %.not = icmp eq i32 %579, 0 %580 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %581 = getelementptr inbounds double, double addrspace(1)* %577, i64 1 %582 = load double, double addrspace(1)* %581, align 8 %583 = call double @llvm.fma.f64(double noundef %580, double %578, double %582) %584 = getelementptr inbounds double, double addrspace(1)* %577, i64 2 %585 = load double, double addrspace(1)* %584, align 8 %586 = call double @llvm.fma.f64(double %583, double %578, double %585) %587 = getelementptr inbounds double, double addrspace(1)* %577, i64 3 %588 = load double, double addrspace(1)* %587, align 8 %589 = call double @llvm.fma.f64(double %586, double %578, double %588) %590 = getelementptr inbounds double, double addrspace(1)* %577, i64 4 %591 = load double, double addrspace(1)* %590, align 8 %592 = call double @llvm.fma.f64(double %589, double %578, double %591) %593 = getelementptr inbounds double, double addrspace(1)* %577, i64 5 %594 = load double, double addrspace(1)* %593, align 8 %595 = call double @llvm.fma.f64(double %592, double %578, double %594) %596 = getelementptr inbounds double, double addrspace(1)* %577, i64 6 %597 = load double, double addrspace(1)* %596, align 8 %598 = call double @llvm.fma.f64(double %595, double %578, double %597) %599 = call double @llvm.fma.f64(double %598, double %z.i.i.i.0, double %z.i.i.i.0) %600 = call double @llvm.fma.f64(double %598, double %578, double noundef 1.000000e+00) %spec.select5 = select i1 %.not, double %599, double %600 %601 = and i32 %573, 2 %.not28 = icmp eq i32 %601, 0 %602 = call double @llvm.fma.f64(double %spec.select5, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not28, double %spec.select5, double %602 br label %__internal_cos_offset.exit.i __internal_cos_offset.exit.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i, %535, %__internal_sin_cos_kerneld.exit.i.i.i %.01 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i.i ], [ %539, %535 ], [ %spec.select4, %__internal_trig_reduction_kerneld.exit.i.i.i.i ] %603 = fmul double %458, %.01 br label %__nv_y1.exit __nv_y1.exit: ; preds = %__nv_log.exit.i, %369, %__internal_cos_offset.exit.i, %__nv_isinfd.exit.i, %395, %340, %3 %r.i.5 = phi double [ %4, %3 ], [ %337, %__nv_log.exit.i ], [ %366, %340 ], [ %392, %369 ], [ %413, %395 ], [ %603, %__internal_cos_offset.exit.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %604 = fcmp ugt double %a, 0.000000e+00 %605 = fcmp oeq double %a, 0.000000e+00 %r.i.6 = select i1 %605, double 0xFFF0000000000000, double 0xFFF8000000000000 %r.i.7 = select i1 %604, double %r.i.5, double %r.i.6 %606 = fcmp ugt double %1, 0x3FE97F4A8F9D3F28 br i1 %606, label %939, label %607 607: ; preds = %__nv_y1.exit %608 = fmul double %a, %a %609 = call double @llvm.fma.f64(double %608, double noundef 0x3C8EFBD0A1B77C65, double noundef 0xBD13098C51C18514) %610 = call double @llvm.fma.f64(double %609, double %608, double noundef 0x3D923102D2F5F2F5) %611 = call double @llvm.fma.f64(double %610, double %608, double noundef 0xBE0A5F2DEE7D526E) %612 = call double @llvm.fma.f64(double %611, double %608, double noundef 0x3E7BB77E758B38AF) %613 = call double @llvm.fma.f64(double %612, double %608, double noundef 0xBEE3D1A206EC4F36) %614 = call double @llvm.fma.f64(double %613, double %608, double noundef 0x3F4183DCD3ED6294) %615 = call double @llvm.fma.f64(double %614, double %608, double noundef 0xBF903921CF04F123) %616 = call double @llvm.fma.f64(double %615, double %608, double noundef 0x3FC5DB69D7753176) %617 = fadd double %608, 0xBFDBA96740000000 %618 = fadd double %617, 0x3E15A30C80000000 %619 = fmul double %618, %616 %620 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %621 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %622 = icmp slt i32 %620, 1048576 br i1 %622, label %623, label %627 623: ; preds = %607 %624 = fmul double %1, 0x4350000000000000 %625 = call i32 @llvm.nvvm.d2i.hi(double %624) #139 %626 = call i32 @llvm.nvvm.d2i.lo(double %624) #139 br label %627 627: ; preds = %623, %607 %.021 = phi double [ %624, %623 ], [ %1, %607 ] %ihi.i.i50.0 = phi i32 [ %625, %623 ], [ %620, %607 ] %ilo.i.i51.0 = phi i32 [ %626, %623 ], [ %621, %607 ] %e.i.i52.0 = phi i32 [ -1077, %623 ], [ -1023, %607 ] %628 = add i32 %ihi.i.i50.0, -1 %629 = icmp ult i32 %628, 2146435071 br i1 %629, label %630, label %679 630: ; preds = %627 %631 = lshr i32 %ihi.i.i50.0, 20 %632 = add nsw i32 %e.i.i52.0, %631 %633 = and i32 %ihi.i.i50.0, -2146435073 %634 = or i32 %633, 1072693248 %635 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i51.0, i32 %634) #139 %636 = icmp sgt i32 %634, 1073127582 br i1 %636, label %637, label %643 637: ; preds = %630 %638 = call i32 @llvm.nvvm.d2i.lo(double %635) #139 %639 = call i32 @llvm.nvvm.d2i.hi(double %635) #139 %640 = add i32 %639, -1048576 %641 = call double @llvm.nvvm.lohi.i2d(i32 %638, i32 %640) #139 %642 = add nsw i32 %632, 1 br label %643 643: ; preds = %637, %630 %m.i.i42.0 = phi double [ %641, %637 ], [ %635, %630 ] %e.i.i52.1 = phi i32 [ %642, %637 ], [ %632, %630 ] %644 = fadd double %m.i.i42.0, -1.000000e+00 %645 = fadd double %m.i.i42.0, 1.000000e+00 %646 = call double @llvm.nvvm.rcp.approx.ftz.d(double %645) #139 %647 = fneg double %645 %648 = call double @llvm.fma.f64(double %647, double %646, double noundef 1.000000e+00) %649 = call double @llvm.fma.f64(double %648, double %648, double %648) %650 = call double @llvm.fma.f64(double %649, double %646, double %646) %651 = fmul double %644, %650 %652 = fadd double %651, %651 %653 = fmul double %652, %652 %654 = call double @llvm.fma.f64(double %653, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %655 = call double @llvm.fma.f64(double %654, double %653, double noundef 0x3EF3B2669F02676F) %656 = call double @llvm.fma.f64(double %655, double %653, double noundef 0x3F1745CBA9AB0956) %657 = call double @llvm.fma.f64(double %656, double %653, double noundef 0x3F3C71C72D1B5154) %658 = call double @llvm.fma.f64(double %657, double %653, double noundef 0x3F624924923BE72D) %659 = call double @llvm.fma.f64(double %658, double %653, double noundef 0x3F8999999999A3C4) %660 = call double @llvm.fma.f64(double %659, double %653, double noundef 0x3FB5555555555554) %661 = fsub double %644, %652 %662 = fmul double %661, 2.000000e+00 %663 = fneg double %652 %664 = call double @llvm.fma.f64(double %663, double %644, double %662) %665 = fmul double %650, %664 %666 = fmul double %653, %660 %667 = call double @llvm.fma.f64(double %666, double %652, double %665) %668 = xor i32 %e.i.i52.1, -2147483648 %669 = call double @llvm.nvvm.lohi.i2d(i32 %668, i32 noundef 1127219200) #139 %670 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %671 = fsub double %669, %670 %672 = call double @llvm.fma.f64(double %671, double noundef 0x3FE62E42FEFA39EF, double %652) %673 = fneg double %671 %674 = call double @llvm.fma.f64(double %673, double noundef 0x3FE62E42FEFA39EF, double %672) %675 = fsub double %674, %652 %676 = fsub double %667, %675 %677 = call double @llvm.fma.f64(double %671, double noundef 0x3C7ABC9E3B39803F, double %676) %678 = fadd double %672, %677 br label %__nv_log.exit.i102 679: ; preds = %627 %680 = call double @llvm.fma.f64(double %.021, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %681 = call i32 @llvm.nvvm.d2i.hi(double %.021) #139 %682 = bitcast i32 %681 to float %683 = fcmp oeq float %682, 0.000000e+00 %q.i3.i.0 = select i1 %683, double 0xFFF0000000000000, double %680 br label %__nv_log.exit.i102 __nv_log.exit.i102: ; preds = %679, %643 %q.i3.i.1 = phi double [ %678, %643 ], [ %q.i3.i.0, %679 ] %684 = fmul double %q.i3.i.1, 0x3FE45F306DC9C883 %685 = fcmp ugt double %1, 0x400FB319F277BBE5 br i1 %685, label %706, label %686 686: ; preds = %__nv_log.exit.i102 %687 = fadd double %1, 0xC0033D152E971B40 %688 = fadd double %687, 0x3CA0F539D7DA258E %689 = call double @llvm.fma.f64(double %688, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) %690 = call double @llvm.fma.f64(double %689, double %688, double noundef 0x3D3FAB983CAE498B) %691 = call double @llvm.fma.f64(double %690, double %688, double noundef 0x3D7CD7C018579B88) %692 = call double @llvm.fma.f64(double %691, double %688, double noundef 0xBDBBDD2342D64FDD) %693 = call double @llvm.fma.f64(double %692, double %688, double noundef 0xBDF5C2D9416B1E2B) %694 = call double @llvm.fma.f64(double %693, double %688, double noundef 0x3E32951D73174DD5) %695 = call double @llvm.fma.f64(double %694, double %688, double noundef 0x3E67FF99802CAEB5) %696 = call double @llvm.fma.f64(double %695, double %688, double noundef 0xBEA1CCE305C4C9F7) %697 = call double @llvm.fma.f64(double %696, double %688, double noundef 0xBED232C77E29E1BB) %698 = call double @llvm.fma.f64(double %697, double %688, double noundef 0x3F06ED3B9F0EF757) %699 = call double @llvm.fma.f64(double %698, double %688, double noundef 0x3F315382BA096A62) %700 = call double @llvm.fma.f64(double %699, double %688, double noundef 0xBF61F992590D1AE4) %701 = call double @llvm.fma.f64(double %700, double %688, double noundef 0xBF81BB1CBE1A465F) %702 = call double @llvm.fma.f64(double %701, double %688, double noundef 0x3FACFAE864368D84) %703 = call double @llvm.fma.f64(double %702, double %688, double noundef 0x3FBBA1DEEA0294A3) %704 = call double @llvm.fma.f64(double %703, double %688, double noundef 0xBFE09CDB36551280) %705 = fmul double %688, %704 br label %__nv_j0.exit.i 706: ; preds = %__nv_log.exit.i102 %707 = fcmp ugt double %1, 0x401C58FD1A62F5EC br i1 %707, label %728, label %708 708: ; preds = %706 %709 = fadd double %1, 0xC016148F5B2C2E45 %710 = fadd double %709, 0xBC975054CD60A517 %711 = call double @llvm.fma.f64(double %710, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) %712 = call double @llvm.fma.f64(double %711, double %710, double noundef 0xBD4100E33E3FB413) %713 = call double @llvm.fma.f64(double %712, double %710, double noundef 0xBD7846076D004627) %714 = call double @llvm.fma.f64(double %713, double %710, double noundef 0x3DBE2F1D4F90720D) %715 = call double @llvm.fma.f64(double %714, double %710, double noundef 0x3DF1D03B1E4A119B) %716 = call double @llvm.fma.f64(double %715, double %710, double noundef 0xBE341D72B1B3BCE9) %717 = call double @llvm.fma.f64(double %716, double %710, double noundef 0xBE62DA37CE2A9EF8) %718 = call double @llvm.fma.f64(double %717, double %710, double noundef 0x3EA32E6D9974F763) %719 = call double @llvm.fma.f64(double %718, double %710, double noundef 0x3ECAD77D744A1879) %720 = call double @llvm.fma.f64(double %719, double %710, double noundef 0xBF0863F481A37337) %721 = call double @llvm.fma.f64(double %720, double %710, double noundef 0xBF26F641F418F0F4) %722 = call double @llvm.fma.f64(double %721, double %710, double noundef 0x3F627E31FE9A969E) %723 = call double @llvm.fma.f64(double %722, double %710, double noundef 0x3F72F7FFE9025628) %724 = call double @llvm.fma.f64(double %723, double %710, double noundef 0xBFAB2150CB41E8BF) %725 = call double @llvm.fma.f64(double %724, double %710, double noundef 0xBF9F8F72E7A848DE) %726 = call double @llvm.fma.f64(double %725, double %710, double noundef 0x3FD5C6E60A097823) %727 = fmul double %710, %726 br label %__nv_j0.exit.i 728: ; preds = %706 %729 = fcmp ugt double %1, 0x402471FCB6A7A8C0 br i1 %729, label %750, label %730 730: ; preds = %728 %731 = fadd double %1, 0xC0214EB56CCCDECA %732 = fadd double %731, 0x3CB51970714C7C25 %733 = call double @llvm.fma.f64(double %732, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) %734 = call double @llvm.fma.f64(double %733, double %732, double noundef 0x3D417EC150ECDCE7) %735 = call double @llvm.fma.f64(double %734, double %732, double noundef 0x3D7438F5EA1D10B2) %736 = call double @llvm.fma.f64(double %735, double %732, double noundef 0xBDBEDAE7EC2C9E87) %737 = call double @llvm.fma.f64(double %736, double %732, double noundef 0xBDECADD2C4B91F58) %738 = call double @llvm.fma.f64(double %737, double %732, double noundef 0x3E34582C8EE12204) %739 = call double @llvm.fma.f64(double %738, double %732, double noundef 0x3E5CEDA451DD20F8) %740 = call double @llvm.fma.f64(double %739, double %732, double noundef 0xBEA30E8CC3165E2F) %741 = call double @llvm.fma.f64(double %740, double %732, double noundef 0xBEC3324842BB1A2E) %742 = call double @llvm.fma.f64(double %741, double %732, double noundef 0x3F07800BC54FBDDB) %743 = call double @llvm.fma.f64(double %742, double %732, double noundef 0x3F1D79605276949A) %744 = call double @llvm.fma.f64(double %743, double %732, double noundef 0xBF60E0D60385A629) %745 = call double @llvm.fma.f64(double %744, double %732, double noundef 0xBF648E63600D82F3) %746 = call double @llvm.fma.f64(double %745, double %732, double noundef 0x3FA68B984EC6493A) %747 = call double @llvm.fma.f64(double %746, double %732, double noundef 0x3F900F7FCF183E0B) %748 = call double @llvm.fma.f64(double %747, double %732, double noundef 0xBFD15F7977A772D4) %749 = fmul double %732, %748 br label %__nv_j0.exit.i 750: ; preds = %728 %751 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %752 = icmp eq i32 %751, 200 br i1 %752, label %759, label %753 753: ; preds = %750 %754 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %755 = icmp eq i32 %754, 350 br i1 %755, label %759, label %756 756: ; preds = %753 %757 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %758 = icmp eq i32 %757, 370 br i1 %758, label %759, label %761 759: ; preds = %756, %753, %750 %760 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i103 761: ; preds = %756 %762 = and i32 %620, 2147483647 %763 = icmp eq i32 %762, 2146435072 %764 = icmp eq i32 %621, 0 %765 = select i1 %763, i1 %764, i1 false br label %__nv_isinfd.exit.i.i103 __nv_isinfd.exit.i.i103: ; preds = %761, %759 %.028.in = phi i1 [ %760, %759 ], [ %765, %761 ] br i1 %.028.in, label %__nv_j0.exit.i, label %766 766: ; preds = %__nv_isinfd.exit.i.i103 %767 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %768 = fneg double %1 %769 = call double @llvm.fma.f64(double %768, double %767, double noundef 1.000000e+00) %770 = call double @llvm.fma.f64(double %769, double %769, double %769) %771 = call double @llvm.fma.f64(double %770, double %767, double %767) %772 = fmul double %771, %771 %773 = call double @llvm.fma.f64(double %772, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %774 = call double @llvm.fma.f64(double %773, double %772, double noundef 0xC05751787E247BD4) %775 = call double @llvm.fma.f64(double %774, double %772, double noundef 0x401704C4E5FC36B2) %776 = call double @llvm.fma.f64(double %775, double %772, double noundef 0xBFE15B747A2FD531) %777 = call double @llvm.fma.f64(double %776, double %772, double noundef 0x3FBA7FEACF6CB79B) %778 = call double @llvm.fma.f64(double %777, double %772, double noundef 0xBFAFFFFFEDDCF548) %779 = call double @llvm.fma.f64(double %778, double %772, double noundef 0x3FEFFFFFFFFFC9E5) %780 = call double @llvm.fma.f64(double %772, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %781 = call double @llvm.fma.f64(double %780, double %772, double noundef 0xC0C7A2FC1972F05A) %782 = call double @llvm.fma.f64(double %781, double %772, double noundef 0x407EBA131F7E5BEB) %783 = call double @llvm.fma.f64(double %782, double %772, double noundef 0xC0373B92E6E7CC7D) %784 = call double @llvm.fma.f64(double %783, double %772, double noundef 0x3FFA31BEE63A2F08) %785 = call double @llvm.fma.f64(double %784, double %772, double noundef 0xBFCAD320104D5D05) %786 = call double @llvm.fma.f64(double %785, double %772, double noundef 0x3FB0AAAA9C76D07E) %787 = call double @llvm.fma.f64(double %786, double %772, double noundef 0xBFBFFFFFFFFDACEC) %788 = call double @llvm.fma.f64(double %787, double %771, double %1) %789 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %790 = fmul double %789, 0x3FE9884533D43651 %791 = fmul double %790, %779 %792 = fmul double %788, 0x3FE45F306DC9C883 %793 = call i32 @llvm.nvvm.d2i.rn(double %792) #139 store i32 %793, i32* %q.i.i.i20.i, align 4, !noalias !68 %794 = sitofp i32 %793 to double %795 = fneg double %794 %796 = call double @llvm.fma.f64(double %795, double noundef 0x3FF921FB54442D18, double %788) %797 = call double @llvm.fma.f64(double %795, double noundef 0x3C91A62633145C00, double %796) %798 = call double @llvm.fma.f64(double %795, double noundef 0x397B839A252049C0, double %797) %799 = call double @llvm.fabs.f64(double %788) %800 = fcmp ult double %799, 0x41E0000000000000 br i1 %800, label %__internal_trig_reduction_kerneld.exit.i.i25.i, label %801 801: ; preds = %766 %802 = call fastcc double @__internal_trig_reduction_slowpathd(double %788, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i20.i) #139 %.pre78 = load i32, i32* %q.i.i.i20.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25.i __internal_trig_reduction_kerneld.exit.i.i25.i: ; preds = %801, %766 %803 = phi i32 [ %.pre78, %801 ], [ %793, %766 ] %t.i.i.i19.i.0 = phi double [ %802, %801 ], [ %798, %766 ] %804 = and i32 %803, 3 %805 = uitofp i32 %804 to double %806 = fadd double %t.i.i.i19.i.0, 0xBFE921FB54442D18 %807 = fmul double %805, 0x3FF921FB54442D18 %808 = fadd double %806, %807 %809 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %810 = icmp eq i32 %809, 350 br i1 %810, label %814, label %811 811: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i %812 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %813 = icmp eq i32 %812, 370 br i1 %813, label %814, label %873 814: ; preds = %811, %__internal_trig_reduction_kerneld.exit.i.i25.i %815 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %816 = icmp eq i32 %815, 200 br i1 %816, label %823, label %817 817: ; preds = %814 %818 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %819 = icmp eq i32 %818, 350 br i1 %819, label %823, label %820 820: ; preds = %817 %821 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %822 = icmp eq i32 %821, 370 br i1 %822, label %823, label %826 823: ; preds = %820, %817, %814 %824 = call double @llvm.fabs.f64(double %808) %825 = fcmp oeq double %824, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i.i104 826: ; preds = %820 %827 = call i32 @llvm.nvvm.d2i.lo(double %808) #139 %828 = call i32 @llvm.nvvm.d2i.hi(double %808) #139 %829 = and i32 %828, 2147483647 %830 = icmp eq i32 %829, 2146435072 %831 = icmp eq i32 %827, 0 %832 = select i1 %830, i1 %831, i1 false br label %__nv_isinfd.exit.i.i.i.i.i104 __nv_isinfd.exit.i.i.i.i.i104: ; preds = %826, %823 %.024.in = phi i1 [ %825, %823 ], [ %832, %826 ] br i1 %.024.in, label %833, label %835 833: ; preds = %__nv_isinfd.exit.i.i.i.i.i104 %834 = fmul double %808, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105 835: ; preds = %__nv_isinfd.exit.i.i.i.i.i104 %836 = fmul double %808, 0x3FE45F306DC9C883 %837 = call i32 @llvm.nvvm.d2i.rn(double %836) #139 store i32 %837, i32* %q.i.i.i.i.i.i20, align 4, !noalias !68 %838 = sitofp i32 %837 to double %839 = fneg double %838 %840 = call double @llvm.fma.f64(double %839, double noundef 0x3FF921FB54442D18, double %808) %841 = call double @llvm.fma.f64(double %839, double noundef 0x3C91A62633145C00, double %840) %842 = call double @llvm.fma.f64(double %839, double noundef 0x397B839A252049C0, double %841) %843 = call double @llvm.fabs.f64(double %808) %844 = fcmp ult double %843, 0x41E0000000000000 br i1 %844, label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105, label %845 845: ; preds = %835 %846 = call fastcc double @__internal_trig_reduction_slowpathd(double %808, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i.i20) #139 %.pre80 = load i32, i32* %q.i.i.i.i.i.i20, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105 __internal_trig_reduction_kerneld.exit.i.i.i.i.i105: ; preds = %835, %845, %833 %i.i.i.i.i.i26.0 = phi i32 [ 0, %833 ], [ %.pre80, %845 ], [ %837, %835 ] %.023 = phi double [ %834, %833 ], [ %846, %845 ], [ %842, %835 ] %847 = fmul double %.023, %.023 %848 = call double @llvm.fma.f64(double %847, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %849 = call double @llvm.fma.f64(double %848, double %847, double noundef 0xBE927E4F8E06E6D9) %850 = call double @llvm.fma.f64(double %849, double %847, double noundef 0x3EFA01A019DDBCE9) %851 = call double @llvm.fma.f64(double %850, double %847, double noundef 0xBF56C16C16C15D47) %852 = call double @llvm.fma.f64(double %851, double %847, double noundef 0x3FA5555555555551) %853 = call double @llvm.fma.f64(double %852, double %847, double noundef -5.000000e-01) %854 = call double @llvm.fma.f64(double %853, double %847, double noundef 1.000000e+00) %855 = call double @llvm.fma.f64(double %847, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %856 = call double @llvm.fma.f64(double %855, double %847, double noundef 0x3EC71DE369ACE392) %857 = call double @llvm.fma.f64(double %856, double %847, double noundef 0xBF2A01A019DB62A1) %858 = call double @llvm.fma.f64(double %857, double %847, double noundef 0x3F81111111110818) %859 = call double @llvm.fma.f64(double %858, double %847, double noundef 0xBFC5555555555554) %860 = call double @llvm.fma.f64(double %859, double %847, double noundef 0.000000e+00) %861 = call double @llvm.fma.f64(double %860, double %.023, double %.023) %862 = call i32 @llvm.nvvm.d2i.hi(double %861) #139 %863 = call i32 @llvm.nvvm.d2i.lo(double %861) #139 %864 = xor i32 %862, -2147483648 %865 = call double @llvm.nvvm.lohi.i2d(i32 %863, i32 %864) #139 %866 = and i32 %i.i.i.i.i.i26.0, 1 %.not60 = icmp eq i32 %866, 0 %spec.select8 = select i1 %.not60, double %854, double %865 %867 = and i32 %i.i.i.i.i.i26.0, 2 %.not61 = icmp eq i32 %867, 0 br i1 %.not61, label %__internal_cos_offset.exit.i.i108, label %868 868: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105 %869 = call i32 @llvm.nvvm.d2i.hi(double %spec.select8) #139 %870 = call i32 @llvm.nvvm.d2i.lo(double %spec.select8) #139 %871 = xor i32 %869, -2147483648 %872 = call double @llvm.nvvm.lohi.i2d(i32 %870, i32 %871) #139 br label %__internal_cos_offset.exit.i.i108 873: ; preds = %811 %874 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %875 = icmp eq i32 %874, 200 br i1 %875, label %882, label %876 876: ; preds = %873 %877 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %878 = icmp eq i32 %877, 350 br i1 %878, label %882, label %879 879: ; preds = %876 %880 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %881 = icmp eq i32 %880, 370 br i1 %881, label %882, label %885 882: ; preds = %879, %876, %873 %883 = call double @llvm.fabs.f64(double %808) %884 = fcmp oeq double %883, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i26.i 885: ; preds = %879 %886 = call i32 @llvm.nvvm.d2i.lo(double %808) #139 %887 = call i32 @llvm.nvvm.d2i.hi(double %808) #139 %888 = and i32 %887, 2147483647 %889 = icmp eq i32 %888, 2146435072 %890 = icmp eq i32 %886, 0 %891 = select i1 %889, i1 %890, i1 false br label %__nv_isinfd.exit.i.i.i26.i __nv_isinfd.exit.i.i.i26.i: ; preds = %885, %882 %.025.in = phi i1 [ %884, %882 ], [ %891, %885 ] br i1 %.025.in, label %892, label %894 892: ; preds = %__nv_isinfd.exit.i.i.i26.i %893 = fmul double %808, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i.i107 894: ; preds = %__nv_isinfd.exit.i.i.i26.i %895 = fmul double %808, 0x3FE45F306DC9C883 %896 = call i32 @llvm.nvvm.d2i.rn(double %895) #139 store i32 %896, i32* %q.i.i.i.i9.i, align 4, !noalias !68 %897 = sitofp i32 %896 to double %898 = fneg double %897 %899 = call double @llvm.fma.f64(double %898, double noundef 0x3FF921FB54442D18, double %808) %900 = call double @llvm.fma.f64(double %898, double noundef 0x3C91A62633145C00, double %899) %901 = call double @llvm.fma.f64(double %898, double noundef 0x397B839A252049C0, double %900) %902 = call double @llvm.fabs.f64(double %808) %903 = fcmp ult double %902, 0x41E0000000000000 br i1 %903, label %__internal_sin_cos_kerneld.exit.i.i.i.i107, label %904 904: ; preds = %894 %905 = call fastcc double @__internal_trig_reduction_slowpathd(double %808, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i9.i) #139 %.pre79 = load i32, i32* %q.i.i.i.i9.i, align 4 br label %__internal_sin_cos_kerneld.exit.i.i.i.i107 __internal_sin_cos_kerneld.exit.i.i.i.i107: ; preds = %894, %904, %892 %i.i.i.i17.i.0 = phi i32 [ 0, %892 ], [ %.pre79, %904 ], [ %896, %894 ] %z.i.i.i16.i.0 = phi double [ %893, %892 ], [ %905, %904 ], [ %901, %894 ] %906 = add nsw i32 %i.i.i.i17.i.0, 1 %907 = shl i32 %906, 3 %908 = and i32 %907, 8 %909 = zext i32 %908 to i64 %910 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %909 %911 = fmul double %z.i.i.i16.i.0, %z.i.i.i16.i.0 %912 = and i32 %906, 1 %.not57 = icmp eq i32 %912, 0 %913 = select i1 %.not57, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %914 = getelementptr inbounds double, double addrspace(1)* %910, i64 1 %915 = load double, double addrspace(1)* %914, align 8 %916 = call double @llvm.fma.f64(double noundef %913, double %911, double %915) %917 = getelementptr inbounds double, double addrspace(1)* %910, i64 2 %918 = load double, double addrspace(1)* %917, align 8 %919 = call double @llvm.fma.f64(double %916, double %911, double %918) %920 = getelementptr inbounds double, double addrspace(1)* %910, i64 3 %921 = load double, double addrspace(1)* %920, align 8 %922 = call double @llvm.fma.f64(double %919, double %911, double %921) %923 = getelementptr inbounds double, double addrspace(1)* %910, i64 4 %924 = load double, double addrspace(1)* %923, align 8 %925 = call double @llvm.fma.f64(double %922, double %911, double %924) %926 = getelementptr inbounds double, double addrspace(1)* %910, i64 5 %927 = load double, double addrspace(1)* %926, align 8 %928 = call double @llvm.fma.f64(double %925, double %911, double %927) %929 = getelementptr inbounds double, double addrspace(1)* %910, i64 6 %930 = load double, double addrspace(1)* %929, align 8 %931 = call double @llvm.fma.f64(double %928, double %911, double %930) %932 = call double @llvm.fma.f64(double %931, double %z.i.i.i16.i.0, double %z.i.i.i16.i.0) %933 = call double @llvm.fma.f64(double %931, double %911, double noundef 1.000000e+00) %spec.select9 = select i1 %.not57, double %932, double %933 %934 = and i32 %906, 2 %.not59 = icmp eq i32 %934, 0 %935 = call double @llvm.fma.f64(double %spec.select9, double noundef -1.000000e+00, double noundef 0.000000e+00) %.127 = select i1 %.not59, double %spec.select9, double %935 br label %__internal_cos_offset.exit.i.i108 __internal_cos_offset.exit.i.i108: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105, %868, %__internal_sin_cos_kerneld.exit.i.i.i.i107 %.022 = phi double [ %.127, %__internal_sin_cos_kerneld.exit.i.i.i.i107 ], [ %872, %868 ], [ %spec.select8, %__internal_trig_reduction_kerneld.exit.i.i.i.i.i105 ] %936 = fmul double %791, %.022 br label %__nv_j0.exit.i __nv_j0.exit.i: ; preds = %708, %__internal_cos_offset.exit.i.i108, %__nv_isinfd.exit.i.i103, %730, %686 %r.i.i29.3 = phi double [ %705, %686 ], [ %727, %708 ], [ %749, %730 ], [ %936, %__internal_cos_offset.exit.i.i108 ], [ 0.000000e+00, %__nv_isinfd.exit.i.i103 ] %937 = fmul double %684, %r.i.i29.3 %938 = fadd double %619, %937 br label %__nv_y0.exit 939: ; preds = %__nv_y1.exit %940 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %940, label %968, label %941 941: ; preds = %939 %942 = fadd double %1, 0xBFEC982EB8D417EA %943 = fadd double %942, 0xBC7EA9D270347F83 %944 = call double @llvm.fma.f64(double %943, double noundef 0xBF01630132D75FC3, double noundef 0x3F3D054B05D3C52D) %945 = call double @llvm.fma.f64(double %944, double %943, double noundef 0xBF66DAC0B314B2E5) %946 = call double @llvm.fma.f64(double %945, double %943, double noundef 0x3F86A5D1DE76263F) %947 = call double @llvm.fma.f64(double %946, double %943, double noundef 0xBF9FD16652824592) %948 = call double @llvm.fma.f64(double %947, double %943, double noundef 0x3FB0F69A9CC79FBD) %949 = call double @llvm.fma.f64(double %948, double %943, double noundef 0xBFBCCE40EF15583E) %950 = call double @llvm.fma.f64(double %949, double %943, double noundef 0x3FC446B11780E4FC) %951 = call double @llvm.fma.f64(double %950, double %943, double noundef 0xBFC89AE7E19621F7) %952 = call double @llvm.fma.f64(double %951, double %943, double noundef 0x3FCACBA1B38EF7B8) %953 = call double @llvm.fma.f64(double %952, double %943, double noundef 0xBFCB4166A03BBFA5) %954 = call double @llvm.fma.f64(double %953, double %943, double noundef 0x3FCACCA4D5D4889A) %955 = call double @llvm.fma.f64(double %954, double %943, double noundef 0xBFCA1455932B9392) %956 = call double @llvm.fma.f64(double %955, double %943, double noundef 0x3FC96D8DB8D844EC) %957 = call double @llvm.fma.f64(double %956, double %943, double noundef 0xBFC8F7FB77522EDF) %958 = call double @llvm.fma.f64(double %957, double %943, double noundef 0x3FC8C0926ABC9AB0) %959 = call double @llvm.fma.f64(double %958, double %943, double noundef 0xBFC8D35B8FEA468C) %960 = call double @llvm.fma.f64(double %959, double %943, double noundef 0x3FC9424B8A0C8F94) %961 = call double @llvm.fma.f64(double %960, double %943, double noundef 0xBFCA396A7F3403EF) %962 = call double @llvm.fma.f64(double %961, double %943, double noundef 0x3FCC068086C37055) %963 = call double @llvm.fma.f64(double %962, double %943, double noundef 0xBFCCF18E6A4C5C4E) %964 = call double @llvm.fma.f64(double %963, double %943, double noundef 0x3FCC3B1338AF4239) %965 = call double @llvm.fma.f64(double %964, double %943, double noundef 0xBFDF7E38A46D70DB) %966 = call double @llvm.fma.f64(double %965, double %943, double noundef 0x3FEC24371844B88A) %967 = fmul double %943, %966 br label %__nv_y0.exit 968: ; preds = %939 %969 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %969, label %997, label %970 970: ; preds = %968 %971 = fadd double %1, 0xC00FA9534D98569C %972 = fadd double %971, 0x3C9F06AE7804384E %973 = call double @llvm.fma.f64(double %972, double noundef 0xBCDAEA62AC8BDA68, double noundef 0xBCD2434958151AC7) %974 = call double @llvm.fma.f64(double %973, double %972, double noundef 0x3D11C24A40D33FE1) %975 = call double @llvm.fma.f64(double %974, double %972, double noundef 0x3D237CD62FA08CA4) %976 = call double @llvm.fma.f64(double %975, double %972, double noundef 0xBD43902E0298C52A) %977 = call double @llvm.fma.f64(double %976, double %972, double noundef 0xBD1DDAAD11CAB40F) %978 = call double @llvm.fma.f64(double %977, double %972, double noundef 0xBD5209D9F06D7DE4) %979 = call double @llvm.fma.f64(double %978, double %972, double noundef 0x3D8BB9F464468E1A) %980 = call double @llvm.fma.f64(double %979, double %972, double noundef 0xBDA8F67B07D1B440) %981 = call double @llvm.fma.f64(double %980, double %972, double noundef 0x3DC7C8D60F9EAECF) %982 = call double @llvm.fma.f64(double %981, double %972, double noundef 0xBDE9703405B49A8D) %983 = call double @llvm.fma.f64(double %982, double %972, double noundef 0x3E0A6B64E76417E4) %984 = call double @llvm.fma.f64(double %983, double %972, double noundef 0xBE2F6B5AFB2F1359) %985 = call double @llvm.fma.f64(double %984, double %972, double noundef 0x3E54526B71C21EC1) %986 = call double @llvm.fma.f64(double %985, double %972, double noundef 0xBE5776DBCBBC8E1D) %987 = call double @llvm.fma.f64(double %986, double %972, double noundef 0xBE93B211FC2DF90E) %988 = call double @llvm.fma.f64(double %987, double %972, double noundef 0xBED486372E8562DC) %989 = call double @llvm.fma.f64(double %988, double %972, double noundef 0x3F0AB2C1FBC3A254) %990 = call double @llvm.fma.f64(double %989, double %972, double noundef 0x3F299827653353B8) %991 = call double @llvm.fma.f64(double %990, double %972, double noundef 0xBF61E32BC4ED7084) %992 = call double @llvm.fma.f64(double %991, double %972, double noundef 0xBF7C116FDC599A09) %993 = call double @llvm.fma.f64(double %992, double %972, double noundef 0x3FADF6D59BF50C77) %994 = call double @llvm.fma.f64(double %993, double %972, double noundef 0x3FAA09C92903680B) %995 = call double @llvm.fma.f64(double %994, double %972, double noundef 0xBFD9C34256A12A0B) %996 = fmul double %972, %995 br label %__nv_y0.exit 997: ; preds = %968 %998 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %998, label %1018, label %999 999: ; preds = %997 %1000 = fadd double %1, 0xC01C581DC4E72103 %1001 = fadd double %1000, 0x3C99774A495F56CF %1002 = call double @llvm.fma.f64(double %1001, double noundef 0x3CF1CB3ABA718B8E, double noundef 0xBD3F443BB4F53D75) %1003 = call double @llvm.fma.f64(double %1002, double %1001, double noundef 0xBD770F737BD6A786) %1004 = call double @llvm.fma.f64(double %1003, double %1001, double noundef 0x3DBF0E9A20459E14) %1005 = call double @llvm.fma.f64(double %1004, double %1001, double noundef 0x3DEFA6B137D5E108) %1006 = call double @llvm.fma.f64(double %1005, double %1001, double noundef 0xBE344296729FB7FA) %1007 = call double @llvm.fma.f64(double %1006, double %1001, double noundef 0xBE60A2813A80DFAA) %1008 = call double @llvm.fma.f64(double %1007, double %1001, double noundef 0x3EA34AA737A83EB4) %1009 = call double @llvm.fma.f64(double %1008, double %1001, double noundef 0x3EC6A9227332D03C) %1010 = call double @llvm.fma.f64(double %1009, double %1001, double noundef 0xBF08177E4F93C81E) %1011 = call double @llvm.fma.f64(double %1010, double %1001, double noundef 0xBF226DD71E391775) %1012 = call double @llvm.fma.f64(double %1011, double %1001, double noundef 0x3F61D35E85FD7B22) %1013 = call double @llvm.fma.f64(double %1012, double %1001, double noundef 0x3F6B2F14A955285C) %1014 = call double @llvm.fma.f64(double %1013, double %1001, double noundef 0xBFA8969C64CBF388) %1015 = call double @llvm.fma.f64(double %1014, double %1001, double noundef 0xBF95AEF611FC4D5A) %1016 = call double @llvm.fma.f64(double %1015, double %1001, double noundef 0x3FD334CCA0697A5A) %1017 = fmul double %1001, %1016 br label %__nv_y0.exit 1018: ; preds = %997 %1019 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1020 = icmp eq i32 %1019, 200 br i1 %1020, label %1027, label %1021 1021: ; preds = %1018 %1022 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1023 = icmp eq i32 %1022, 350 br i1 %1023, label %1027, label %1024 1024: ; preds = %1021 %1025 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1026 = icmp eq i32 %1025, 370 br i1 %1026, label %1027, label %1029 1027: ; preds = %1024, %1021, %1018 %1028 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i109 1029: ; preds = %1024 %1030 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %1031 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %1032 = and i32 %1031, 2147483647 %1033 = icmp eq i32 %1032, 2146435072 %1034 = icmp eq i32 %1030, 0 %1035 = select i1 %1033, i1 %1034, i1 false br label %__nv_isinfd.exit.i109 __nv_isinfd.exit.i109: ; preds = %1029, %1027 %.029.in = phi i1 [ %1028, %1027 ], [ %1035, %1029 ] br i1 %.029.in, label %__nv_y0.exit, label %1036 1036: ; preds = %__nv_isinfd.exit.i109 %1037 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %1038 = fneg double %1 %1039 = call double @llvm.fma.f64(double %1038, double %1037, double noundef 1.000000e+00) %1040 = call double @llvm.fma.f64(double %1039, double %1039, double %1039) %1041 = call double @llvm.fma.f64(double %1040, double %1037, double %1037) %1042 = fmul double %1041, %1041 %1043 = call double @llvm.fma.f64(double %1042, double noundef 0xC0C5E91E6AC3AD03, double noundef 0x4093F56A049CDDE7) %1044 = call double @llvm.fma.f64(double %1043, double %1042, double noundef 0xC05572D39DFB8433) %1045 = call double @llvm.fma.f64(double %1044, double %1042, double noundef 0x4016A6041CAA59E5) %1046 = call double @llvm.fma.f64(double %1045, double %1042, double noundef 0xBFE155E3A0493880) %1047 = call double @llvm.fma.f64(double %1046, double %1042, double noundef 0x3FBA7FB92F417F7F) %1048 = call double @llvm.fma.f64(double %1047, double %1042, double noundef 0xBFAFFFFFB12E32F5) %1049 = call double @llvm.fma.f64(double %1048, double %1042, double noundef 0x3FEFFFFFFFFECED5) %1050 = call double @llvm.fma.f64(double %1042, double noundef 0x418A86A64BE101DC, double noundef 0xC15709C79AAC5813) %1051 = call double @llvm.fma.f64(double %1050, double %1042, double noundef 0x41142A31C980A287) %1052 = call double @llvm.fma.f64(double %1051, double %1042, double noundef 0xC0C9CBE68930485D) %1053 = call double @llvm.fma.f64(double %1052, double %1042, double noundef 0x407F583E14E8A4E8) %1054 = call double @llvm.fma.f64(double %1053, double %1042, double noundef 0xC0374A629C650680) %1055 = call double @llvm.fma.f64(double %1054, double %1042, double noundef 0x3FFA32A7AF17FAE9) %1056 = call double @llvm.fma.f64(double %1055, double %1042, double noundef 0xBFCAD32497785CD6) %1057 = call double @llvm.fma.f64(double %1056, double %1042, double noundef 0x3FB0AAAA9FB75F7B) %1058 = call double @llvm.fma.f64(double %1057, double %1042, double noundef 0xBFBFFFFFFFFE320F) %1059 = call double @llvm.fma.f64(double %1058, double %1041, double %1) %1060 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %1061 = fmul double %1060, 0x3FE9884533D43651 %1062 = fmul double %1061, %1049 %1063 = fmul double %1059, 0x3FE45F306DC9C883 %1064 = call i32 @llvm.nvvm.d2i.rn(double %1063) #139 store i32 %1064, i32* %q.i.i.i88, align 4, !noalias !68 %1065 = sitofp i32 %1064 to double %1066 = fneg double %1065 %1067 = call double @llvm.fma.f64(double %1066, double noundef 0x3FF921FB54442D18, double %1059) %1068 = call double @llvm.fma.f64(double %1066, double noundef 0x3C91A62633145C00, double %1067) %1069 = call double @llvm.fma.f64(double %1066, double noundef 0x397B839A252049C0, double %1068) %1070 = call double @llvm.fabs.f64(double %1059) %1071 = fcmp ult double %1070, 0x41E0000000000000 br i1 %1071, label %__internal_trig_reduction_kerneld.exit.i.i110, label %1072 1072: ; preds = %1036 %1073 = call fastcc double @__internal_trig_reduction_slowpathd(double %1059, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i88) #139 %.pre81 = load i32, i32* %q.i.i.i88, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i110 __internal_trig_reduction_kerneld.exit.i.i110: ; preds = %1072, %1036 %1074 = phi i32 [ %.pre81, %1072 ], [ %1064, %1036 ] %t.i.i.i87.0 = phi double [ %1073, %1072 ], [ %1069, %1036 ] %1075 = and i32 %1074, 3 %1076 = uitofp i32 %1075 to double %1077 = fadd double %t.i.i.i87.0, 0xC002D97C7F3321D2 %1078 = fmul double %1076, 0x3FF921FB54442D18 %1079 = fadd double %1077, %1078 %1080 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1081 = icmp eq i32 %1080, 350 br i1 %1081, label %1085, label %1082 1082: ; preds = %__internal_trig_reduction_kerneld.exit.i.i110 %1083 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1084 = icmp eq i32 %1083, 370 br i1 %1084, label %1085, label %1144 1085: ; preds = %1082, %__internal_trig_reduction_kerneld.exit.i.i110 %1086 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1087 = icmp eq i32 %1086, 200 br i1 %1087, label %1094, label %1088 1088: ; preds = %1085 %1089 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1090 = icmp eq i32 %1089, 350 br i1 %1090, label %1094, label %1091 1091: ; preds = %1088 %1092 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1093 = icmp eq i32 %1092, 370 br i1 %1093, label %1094, label %1097 1094: ; preds = %1091, %1088, %1085 %1095 = call double @llvm.fabs.f64(double %1079) %1096 = fcmp oeq double %1095, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i111 1097: ; preds = %1091 %1098 = call i32 @llvm.nvvm.d2i.lo(double %1079) #139 %1099 = call i32 @llvm.nvvm.d2i.hi(double %1079) #139 %1100 = and i32 %1099, 2147483647 %1101 = icmp eq i32 %1100, 2146435072 %1102 = icmp eq i32 %1098, 0 %1103 = select i1 %1101, i1 %1102, i1 false br label %__nv_isinfd.exit.i.i.i.i111 __nv_isinfd.exit.i.i.i.i111: ; preds = %1097, %1094 %.017.in = phi i1 [ %1096, %1094 ], [ %1103, %1097 ] br i1 %.017.in, label %1104, label %1106 1104: ; preds = %__nv_isinfd.exit.i.i.i.i111 %1105 = fmul double %1079, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i112 1106: ; preds = %__nv_isinfd.exit.i.i.i.i111 %1107 = fmul double %1079, 0x3FE45F306DC9C883 %1108 = call i32 @llvm.nvvm.d2i.rn(double %1107) #139 store i32 %1108, i32* %q.i.i.i.i.i74, align 4, !noalias !68 %1109 = sitofp i32 %1108 to double %1110 = fneg double %1109 %1111 = call double @llvm.fma.f64(double %1110, double noundef 0x3FF921FB54442D18, double %1079) %1112 = call double @llvm.fma.f64(double %1110, double noundef 0x3C91A62633145C00, double %1111) %1113 = call double @llvm.fma.f64(double %1110, double noundef 0x397B839A252049C0, double %1112) %1114 = call double @llvm.fabs.f64(double %1079) %1115 = fcmp ult double %1114, 0x41E0000000000000 br i1 %1115, label %__internal_trig_reduction_kerneld.exit.i.i.i.i112, label %1116 1116: ; preds = %1106 %1117 = call fastcc double @__internal_trig_reduction_slowpathd(double %1079, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i74) #139 %.pre83 = load i32, i32* %q.i.i.i.i.i74, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i112 __internal_trig_reduction_kerneld.exit.i.i.i.i112: ; preds = %1106, %1116, %1104 %i.i.i.i.i81.0 = phi i32 [ 0, %1104 ], [ %.pre83, %1116 ], [ %1108, %1106 ] %.016 = phi double [ %1105, %1104 ], [ %1117, %1116 ], [ %1113, %1106 ] %1118 = fmul double %.016, %.016 %1119 = call double @llvm.fma.f64(double %1118, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %1120 = call double @llvm.fma.f64(double %1119, double %1118, double noundef 0xBE927E4F8E06E6D9) %1121 = call double @llvm.fma.f64(double %1120, double %1118, double noundef 0x3EFA01A019DDBCE9) %1122 = call double @llvm.fma.f64(double %1121, double %1118, double noundef 0xBF56C16C16C15D47) %1123 = call double @llvm.fma.f64(double %1122, double %1118, double noundef 0x3FA5555555555551) %1124 = call double @llvm.fma.f64(double %1123, double %1118, double noundef -5.000000e-01) %1125 = call double @llvm.fma.f64(double %1124, double %1118, double noundef 1.000000e+00) %1126 = call double @llvm.fma.f64(double %1118, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %1127 = call double @llvm.fma.f64(double %1126, double %1118, double noundef 0x3EC71DE369ACE392) %1128 = call double @llvm.fma.f64(double %1127, double %1118, double noundef 0xBF2A01A019DB62A1) %1129 = call double @llvm.fma.f64(double %1128, double %1118, double noundef 0x3F81111111110818) %1130 = call double @llvm.fma.f64(double %1129, double %1118, double noundef 0xBFC5555555555554) %1131 = call double @llvm.fma.f64(double %1130, double %1118, double noundef 0.000000e+00) %1132 = call double @llvm.fma.f64(double %1131, double %.016, double %.016) %1133 = call i32 @llvm.nvvm.d2i.hi(double %1132) #139 %1134 = call i32 @llvm.nvvm.d2i.lo(double %1132) #139 %1135 = xor i32 %1133, -2147483648 %1136 = call double @llvm.nvvm.lohi.i2d(i32 %1134, i32 %1135) #139 %1137 = and i32 %i.i.i.i.i81.0, 1 %.not55 = icmp eq i32 %1137, 0 %spec.select11 = select i1 %.not55, double %1125, double %1136 %1138 = and i32 %i.i.i.i.i81.0, 2 %.not56 = icmp eq i32 %1138, 0 br i1 %.not56, label %__internal_cos_offset.exit.i117, label %1139 1139: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i112 %1140 = call i32 @llvm.nvvm.d2i.hi(double %spec.select11) #139 %1141 = call i32 @llvm.nvvm.d2i.lo(double %spec.select11) #139 %1142 = xor i32 %1140, -2147483648 %1143 = call double @llvm.nvvm.lohi.i2d(i32 %1141, i32 %1142) #139 br label %__internal_cos_offset.exit.i117 1144: ; preds = %1082 %1145 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1146 = icmp eq i32 %1145, 200 br i1 %1146, label %1153, label %1147 1147: ; preds = %1144 %1148 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1149 = icmp eq i32 %1148, 350 br i1 %1149, label %1153, label %1150 1150: ; preds = %1147 %1151 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1152 = icmp eq i32 %1151, 370 br i1 %1152, label %1153, label %1156 1153: ; preds = %1150, %1147, %1144 %1154 = call double @llvm.fabs.f64(double %1079) %1155 = fcmp oeq double %1154, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i114 1156: ; preds = %1150 %1157 = call i32 @llvm.nvvm.d2i.lo(double %1079) #139 %1158 = call i32 @llvm.nvvm.d2i.hi(double %1079) #139 %1159 = and i32 %1158, 2147483647 %1160 = icmp eq i32 %1159, 2146435072 %1161 = icmp eq i32 %1157, 0 %1162 = select i1 %1160, i1 %1161, i1 false br label %__nv_isinfd.exit.i.i.i114 __nv_isinfd.exit.i.i.i114: ; preds = %1156, %1153 %.018.in = phi i1 [ %1155, %1153 ], [ %1162, %1156 ] br i1 %.018.in, label %1163, label %1165 1163: ; preds = %__nv_isinfd.exit.i.i.i114 %1164 = fmul double %1079, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i116 1165: ; preds = %__nv_isinfd.exit.i.i.i114 %1166 = fmul double %1079, 0x3FE45F306DC9C883 %1167 = call i32 @llvm.nvvm.d2i.rn(double %1166) #139 store i32 %1167, i32* %q.i.i.i.i58, align 4, !noalias !68 %1168 = sitofp i32 %1167 to double %1169 = fneg double %1168 %1170 = call double @llvm.fma.f64(double %1169, double noundef 0x3FF921FB54442D18, double %1079) %1171 = call double @llvm.fma.f64(double %1169, double noundef 0x3C91A62633145C00, double %1170) %1172 = call double @llvm.fma.f64(double %1169, double noundef 0x397B839A252049C0, double %1171) %1173 = call double @llvm.fabs.f64(double %1079) %1174 = fcmp ult double %1173, 0x41E0000000000000 br i1 %1174, label %__internal_sin_cos_kerneld.exit.i.i.i116, label %1175 1175: ; preds = %1165 %1176 = call fastcc double @__internal_trig_reduction_slowpathd(double %1079, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i58) #139 %.pre82 = load i32, i32* %q.i.i.i.i58, align 4 br label %__internal_sin_cos_kerneld.exit.i.i.i116 __internal_sin_cos_kerneld.exit.i.i.i116: ; preds = %1165, %1175, %1163 %i.i.i.i85.0 = phi i32 [ 0, %1163 ], [ %.pre82, %1175 ], [ %1167, %1165 ] %z.i.i.i84.0 = phi double [ %1164, %1163 ], [ %1176, %1175 ], [ %1172, %1165 ] %1177 = add nsw i32 %i.i.i.i85.0, 1 %1178 = shl i32 %1177, 3 %1179 = and i32 %1178, 8 %1180 = zext i32 %1179 to i64 %1181 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %1180 %1182 = fmul double %z.i.i.i84.0, %z.i.i.i84.0 %1183 = and i32 %1177, 1 %.not29 = icmp eq i32 %1183, 0 %1184 = select i1 %.not29, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1185 = getelementptr inbounds double, double addrspace(1)* %1181, i64 1 %1186 = load double, double addrspace(1)* %1185, align 8 %1187 = call double @llvm.fma.f64(double noundef %1184, double %1182, double %1186) %1188 = getelementptr inbounds double, double addrspace(1)* %1181, i64 2 %1189 = load double, double addrspace(1)* %1188, align 8 %1190 = call double @llvm.fma.f64(double %1187, double %1182, double %1189) %1191 = getelementptr inbounds double, double addrspace(1)* %1181, i64 3 %1192 = load double, double addrspace(1)* %1191, align 8 %1193 = call double @llvm.fma.f64(double %1190, double %1182, double %1192) %1194 = getelementptr inbounds double, double addrspace(1)* %1181, i64 4 %1195 = load double, double addrspace(1)* %1194, align 8 %1196 = call double @llvm.fma.f64(double %1193, double %1182, double %1195) %1197 = getelementptr inbounds double, double addrspace(1)* %1181, i64 5 %1198 = load double, double addrspace(1)* %1197, align 8 %1199 = call double @llvm.fma.f64(double %1196, double %1182, double %1198) %1200 = getelementptr inbounds double, double addrspace(1)* %1181, i64 6 %1201 = load double, double addrspace(1)* %1200, align 8 %1202 = call double @llvm.fma.f64(double %1199, double %1182, double %1201) %1203 = call double @llvm.fma.f64(double %1202, double %z.i.i.i84.0, double %z.i.i.i84.0) %1204 = call double @llvm.fma.f64(double %1202, double %1182, double noundef 1.000000e+00) %spec.select12 = select i1 %.not29, double %1203, double %1204 %1205 = and i32 %1177, 2 %.not31 = icmp eq i32 %1205, 0 %1206 = call double @llvm.fma.f64(double %spec.select12, double noundef -1.000000e+00, double noundef 0.000000e+00) %.120 = select i1 %.not31, double %spec.select12, double %1206 br label %__internal_cos_offset.exit.i117 __internal_cos_offset.exit.i117: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i112, %1139, %__internal_sin_cos_kerneld.exit.i.i.i116 %.015 = phi double [ %.120, %__internal_sin_cos_kerneld.exit.i.i.i116 ], [ %1143, %1139 ], [ %spec.select11, %__internal_trig_reduction_kerneld.exit.i.i.i.i112 ] %1207 = fmul double %1062, %.015 br label %__nv_y0.exit __nv_y0.exit: ; preds = %941, %999, %__nv_isinfd.exit.i109, %__internal_cos_offset.exit.i117, %970, %__nv_j0.exit.i %r.i95.4 = phi double [ %938, %__nv_j0.exit.i ], [ %967, %941 ], [ %996, %970 ], [ %1017, %999 ], [ %1207, %__internal_cos_offset.exit.i117 ], [ 0.000000e+00, %__nv_isinfd.exit.i109 ] %1208 = fcmp olt double %a, 0.000000e+00 %r.i95.5 = select i1 %1208, double 0xFFF8000000000000, double %r.i95.4 switch i32 %n, label %2415 [ i32 0, label %1209 i32 1, label %1811 ] 1209: ; preds = %__nv_y0.exit br i1 %606, label %1542, label %1210 1210: ; preds = %1209 %1211 = fmul double %a, %a %1212 = call double @llvm.fma.f64(double %1211, double noundef 0x3C8EFBD0A1B77C65, double noundef 0xBD13098C51C18514) %1213 = call double @llvm.fma.f64(double %1212, double %1211, double noundef 0x3D923102D2F5F2F5) %1214 = call double @llvm.fma.f64(double %1213, double %1211, double noundef 0xBE0A5F2DEE7D526E) %1215 = call double @llvm.fma.f64(double %1214, double %1211, double noundef 0x3E7BB77E758B38AF) %1216 = call double @llvm.fma.f64(double %1215, double %1211, double noundef 0xBEE3D1A206EC4F36) %1217 = call double @llvm.fma.f64(double %1216, double %1211, double noundef 0x3F4183DCD3ED6294) %1218 = call double @llvm.fma.f64(double %1217, double %1211, double noundef 0xBF903921CF04F123) %1219 = call double @llvm.fma.f64(double %1218, double %1211, double noundef 0x3FC5DB69D7753176) %1220 = fadd double %1211, 0xBFDBA96740000000 %1221 = fadd double %1220, 0x3E15A30C80000000 %1222 = fmul double %1221, %1219 %1223 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %1224 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %1225 = icmp slt i32 %1223, 1048576 br i1 %1225, label %1226, label %1230 1226: ; preds = %1210 %1227 = fmul double %1, 0x4350000000000000 %1228 = call i32 @llvm.nvvm.d2i.hi(double %1227) #139 %1229 = call i32 @llvm.nvvm.d2i.lo(double %1227) #139 br label %1230 1230: ; preds = %1226, %1210 %.036 = phi double [ %1227, %1226 ], [ %1, %1210 ] %ihi.i.i194.0 = phi i32 [ %1228, %1226 ], [ %1223, %1210 ] %ilo.i.i195.0 = phi i32 [ %1229, %1226 ], [ %1224, %1210 ] %e.i.i196.0 = phi i32 [ -1077, %1226 ], [ -1023, %1210 ] %1231 = add i32 %ihi.i.i194.0, -1 %1232 = icmp ult i32 %1231, 2146435071 br i1 %1232, label %1233, label %1282 1233: ; preds = %1230 %1234 = lshr i32 %ihi.i.i194.0, 20 %1235 = add nsw i32 %e.i.i196.0, %1234 %1236 = and i32 %ihi.i.i194.0, -2146435073 %1237 = or i32 %1236, 1072693248 %1238 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i195.0, i32 %1237) #139 %1239 = icmp sgt i32 %1237, 1073127582 br i1 %1239, label %1240, label %1246 1240: ; preds = %1233 %1241 = call i32 @llvm.nvvm.d2i.lo(double %1238) #139 %1242 = call i32 @llvm.nvvm.d2i.hi(double %1238) #139 %1243 = add i32 %1242, -1048576 %1244 = call double @llvm.nvvm.lohi.i2d(i32 %1241, i32 %1243) #139 %1245 = add nsw i32 %1235, 1 br label %1246 1246: ; preds = %1240, %1233 %m.i.i184.0 = phi double [ %1244, %1240 ], [ %1238, %1233 ] %e.i.i196.1 = phi i32 [ %1245, %1240 ], [ %1235, %1233 ] %1247 = fadd double %m.i.i184.0, -1.000000e+00 %1248 = fadd double %m.i.i184.0, 1.000000e+00 %1249 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1248) #139 %1250 = fneg double %1248 %1251 = call double @llvm.fma.f64(double %1250, double %1249, double noundef 1.000000e+00) %1252 = call double @llvm.fma.f64(double %1251, double %1251, double %1251) %1253 = call double @llvm.fma.f64(double %1252, double %1249, double %1249) %1254 = fmul double %1247, %1253 %1255 = fadd double %1254, %1254 %1256 = fmul double %1255, %1255 %1257 = call double @llvm.fma.f64(double %1256, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %1258 = call double @llvm.fma.f64(double %1257, double %1256, double noundef 0x3EF3B2669F02676F) %1259 = call double @llvm.fma.f64(double %1258, double %1256, double noundef 0x3F1745CBA9AB0956) %1260 = call double @llvm.fma.f64(double %1259, double %1256, double noundef 0x3F3C71C72D1B5154) %1261 = call double @llvm.fma.f64(double %1260, double %1256, double noundef 0x3F624924923BE72D) %1262 = call double @llvm.fma.f64(double %1261, double %1256, double noundef 0x3F8999999999A3C4) %1263 = call double @llvm.fma.f64(double %1262, double %1256, double noundef 0x3FB5555555555554) %1264 = fsub double %1247, %1255 %1265 = fmul double %1264, 2.000000e+00 %1266 = fneg double %1255 %1267 = call double @llvm.fma.f64(double %1266, double %1247, double %1265) %1268 = fmul double %1253, %1267 %1269 = fmul double %1256, %1263 %1270 = call double @llvm.fma.f64(double %1269, double %1255, double %1268) %1271 = xor i32 %e.i.i196.1, -2147483648 %1272 = call double @llvm.nvvm.lohi.i2d(i32 %1271, i32 noundef 1127219200) #139 %1273 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %1274 = fsub double %1272, %1273 %1275 = call double @llvm.fma.f64(double %1274, double noundef 0x3FE62E42FEFA39EF, double %1255) %1276 = fneg double %1274 %1277 = call double @llvm.fma.f64(double %1276, double noundef 0x3FE62E42FEFA39EF, double %1275) %1278 = fsub double %1277, %1255 %1279 = fsub double %1270, %1278 %1280 = call double @llvm.fma.f64(double %1274, double noundef 0x3C7ABC9E3B39803F, double %1279) %1281 = fadd double %1275, %1280 br label %__nv_log.exit.i246 1282: ; preds = %1230 %1283 = call double @llvm.fma.f64(double %.036, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %1284 = call i32 @llvm.nvvm.d2i.hi(double %.036) #139 %1285 = bitcast i32 %1284 to float %1286 = fcmp oeq float %1285, 0.000000e+00 %q.i3.i190.0 = select i1 %1286, double 0xFFF0000000000000, double %1283 br label %__nv_log.exit.i246 __nv_log.exit.i246: ; preds = %1282, %1246 %q.i3.i190.1 = phi double [ %1281, %1246 ], [ %q.i3.i190.0, %1282 ] %1287 = fmul double %q.i3.i190.1, 0x3FE45F306DC9C883 %1288 = fcmp ugt double %1, 0x400FB319F277BBE5 br i1 %1288, label %1309, label %1289 1289: ; preds = %__nv_log.exit.i246 %1290 = fadd double %1, 0xC0033D152E971B40 %1291 = fadd double %1290, 0x3CA0F539D7DA258E %1292 = call double @llvm.fma.f64(double %1291, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) %1293 = call double @llvm.fma.f64(double %1292, double %1291, double noundef 0x3D3FAB983CAE498B) %1294 = call double @llvm.fma.f64(double %1293, double %1291, double noundef 0x3D7CD7C018579B88) %1295 = call double @llvm.fma.f64(double %1294, double %1291, double noundef 0xBDBBDD2342D64FDD) %1296 = call double @llvm.fma.f64(double %1295, double %1291, double noundef 0xBDF5C2D9416B1E2B) %1297 = call double @llvm.fma.f64(double %1296, double %1291, double noundef 0x3E32951D73174DD5) %1298 = call double @llvm.fma.f64(double %1297, double %1291, double noundef 0x3E67FF99802CAEB5) %1299 = call double @llvm.fma.f64(double %1298, double %1291, double noundef 0xBEA1CCE305C4C9F7) %1300 = call double @llvm.fma.f64(double %1299, double %1291, double noundef 0xBED232C77E29E1BB) %1301 = call double @llvm.fma.f64(double %1300, double %1291, double noundef 0x3F06ED3B9F0EF757) %1302 = call double @llvm.fma.f64(double %1301, double %1291, double noundef 0x3F315382BA096A62) %1303 = call double @llvm.fma.f64(double %1302, double %1291, double noundef 0xBF61F992590D1AE4) %1304 = call double @llvm.fma.f64(double %1303, double %1291, double noundef 0xBF81BB1CBE1A465F) %1305 = call double @llvm.fma.f64(double %1304, double %1291, double noundef 0x3FACFAE864368D84) %1306 = call double @llvm.fma.f64(double %1305, double %1291, double noundef 0x3FBBA1DEEA0294A3) %1307 = call double @llvm.fma.f64(double %1306, double %1291, double noundef 0xBFE09CDB36551280) %1308 = fmul double %1291, %1307 br label %__nv_j0.exit.i256 1309: ; preds = %__nv_log.exit.i246 %1310 = fcmp ugt double %1, 0x401C58FD1A62F5EC br i1 %1310, label %1331, label %1311 1311: ; preds = %1309 %1312 = fadd double %1, 0xC016148F5B2C2E45 %1313 = fadd double %1312, 0xBC975054CD60A517 %1314 = call double @llvm.fma.f64(double %1313, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) %1315 = call double @llvm.fma.f64(double %1314, double %1313, double noundef 0xBD4100E33E3FB413) %1316 = call double @llvm.fma.f64(double %1315, double %1313, double noundef 0xBD7846076D004627) %1317 = call double @llvm.fma.f64(double %1316, double %1313, double noundef 0x3DBE2F1D4F90720D) %1318 = call double @llvm.fma.f64(double %1317, double %1313, double noundef 0x3DF1D03B1E4A119B) %1319 = call double @llvm.fma.f64(double %1318, double %1313, double noundef 0xBE341D72B1B3BCE9) %1320 = call double @llvm.fma.f64(double %1319, double %1313, double noundef 0xBE62DA37CE2A9EF8) %1321 = call double @llvm.fma.f64(double %1320, double %1313, double noundef 0x3EA32E6D9974F763) %1322 = call double @llvm.fma.f64(double %1321, double %1313, double noundef 0x3ECAD77D744A1879) %1323 = call double @llvm.fma.f64(double %1322, double %1313, double noundef 0xBF0863F481A37337) %1324 = call double @llvm.fma.f64(double %1323, double %1313, double noundef 0xBF26F641F418F0F4) %1325 = call double @llvm.fma.f64(double %1324, double %1313, double noundef 0x3F627E31FE9A969E) %1326 = call double @llvm.fma.f64(double %1325, double %1313, double noundef 0x3F72F7FFE9025628) %1327 = call double @llvm.fma.f64(double %1326, double %1313, double noundef 0xBFAB2150CB41E8BF) %1328 = call double @llvm.fma.f64(double %1327, double %1313, double noundef 0xBF9F8F72E7A848DE) %1329 = call double @llvm.fma.f64(double %1328, double %1313, double noundef 0x3FD5C6E60A097823) %1330 = fmul double %1313, %1329 br label %__nv_j0.exit.i256 1331: ; preds = %1309 %1332 = fcmp ugt double %1, 0x402471FCB6A7A8C0 br i1 %1332, label %1353, label %1333 1333: ; preds = %1331 %1334 = fadd double %1, 0xC0214EB56CCCDECA %1335 = fadd double %1334, 0x3CB51970714C7C25 %1336 = call double @llvm.fma.f64(double %1335, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) %1337 = call double @llvm.fma.f64(double %1336, double %1335, double noundef 0x3D417EC150ECDCE7) %1338 = call double @llvm.fma.f64(double %1337, double %1335, double noundef 0x3D7438F5EA1D10B2) %1339 = call double @llvm.fma.f64(double %1338, double %1335, double noundef 0xBDBEDAE7EC2C9E87) %1340 = call double @llvm.fma.f64(double %1339, double %1335, double noundef 0xBDECADD2C4B91F58) %1341 = call double @llvm.fma.f64(double %1340, double %1335, double noundef 0x3E34582C8EE12204) %1342 = call double @llvm.fma.f64(double %1341, double %1335, double noundef 0x3E5CEDA451DD20F8) %1343 = call double @llvm.fma.f64(double %1342, double %1335, double noundef 0xBEA30E8CC3165E2F) %1344 = call double @llvm.fma.f64(double %1343, double %1335, double noundef 0xBEC3324842BB1A2E) %1345 = call double @llvm.fma.f64(double %1344, double %1335, double noundef 0x3F07800BC54FBDDB) %1346 = call double @llvm.fma.f64(double %1345, double %1335, double noundef 0x3F1D79605276949A) %1347 = call double @llvm.fma.f64(double %1346, double %1335, double noundef 0xBF60E0D60385A629) %1348 = call double @llvm.fma.f64(double %1347, double %1335, double noundef 0xBF648E63600D82F3) %1349 = call double @llvm.fma.f64(double %1348, double %1335, double noundef 0x3FA68B984EC6493A) %1350 = call double @llvm.fma.f64(double %1349, double %1335, double noundef 0x3F900F7FCF183E0B) %1351 = call double @llvm.fma.f64(double %1350, double %1335, double noundef 0xBFD15F7977A772D4) %1352 = fmul double %1335, %1351 br label %__nv_j0.exit.i256 1353: ; preds = %1331 %1354 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1355 = icmp eq i32 %1354, 200 br i1 %1355, label %1362, label %1356 1356: ; preds = %1353 %1357 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1358 = icmp eq i32 %1357, 350 br i1 %1358, label %1362, label %1359 1359: ; preds = %1356 %1360 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1361 = icmp eq i32 %1360, 370 br i1 %1361, label %1362, label %1364 1362: ; preds = %1359, %1356, %1353 %1363 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i247 1364: ; preds = %1359 %1365 = and i32 %1223, 2147483647 %1366 = icmp eq i32 %1365, 2146435072 %1367 = icmp eq i32 %1224, 0 %1368 = select i1 %1366, i1 %1367, i1 false br label %__nv_isinfd.exit.i.i247 __nv_isinfd.exit.i.i247: ; preds = %1364, %1362 %.043.in = phi i1 [ %1363, %1362 ], [ %1368, %1364 ] br i1 %.043.in, label %__nv_j0.exit.i256, label %1369 1369: ; preds = %__nv_isinfd.exit.i.i247 %1370 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %1371 = fneg double %1 %1372 = call double @llvm.fma.f64(double %1371, double %1370, double noundef 1.000000e+00) %1373 = call double @llvm.fma.f64(double %1372, double %1372, double %1372) %1374 = call double @llvm.fma.f64(double %1373, double %1370, double %1370) %1375 = fmul double %1374, %1374 %1376 = call double @llvm.fma.f64(double %1375, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %1377 = call double @llvm.fma.f64(double %1376, double %1375, double noundef 0xC05751787E247BD4) %1378 = call double @llvm.fma.f64(double %1377, double %1375, double noundef 0x401704C4E5FC36B2) %1379 = call double @llvm.fma.f64(double %1378, double %1375, double noundef 0xBFE15B747A2FD531) %1380 = call double @llvm.fma.f64(double %1379, double %1375, double noundef 0x3FBA7FEACF6CB79B) %1381 = call double @llvm.fma.f64(double %1380, double %1375, double noundef 0xBFAFFFFFEDDCF548) %1382 = call double @llvm.fma.f64(double %1381, double %1375, double noundef 0x3FEFFFFFFFFFC9E5) %1383 = call double @llvm.fma.f64(double %1375, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %1384 = call double @llvm.fma.f64(double %1383, double %1375, double noundef 0xC0C7A2FC1972F05A) %1385 = call double @llvm.fma.f64(double %1384, double %1375, double noundef 0x407EBA131F7E5BEB) %1386 = call double @llvm.fma.f64(double %1385, double %1375, double noundef 0xC0373B92E6E7CC7D) %1387 = call double @llvm.fma.f64(double %1386, double %1375, double noundef 0x3FFA31BEE63A2F08) %1388 = call double @llvm.fma.f64(double %1387, double %1375, double noundef 0xBFCAD320104D5D05) %1389 = call double @llvm.fma.f64(double %1388, double %1375, double noundef 0x3FB0AAAA9C76D07E) %1390 = call double @llvm.fma.f64(double %1389, double %1375, double noundef 0xBFBFFFFFFFFDACEC) %1391 = call double @llvm.fma.f64(double %1390, double %1374, double %1) %1392 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %1393 = fmul double %1392, 0x3FE9884533D43651 %1394 = fmul double %1393, %1382 %1395 = fmul double %1391, 0x3FE45F306DC9C883 %1396 = call i32 @llvm.nvvm.d2i.rn(double %1395) #139 store i32 %1396, i32* %q.i.i.i20.i163, align 4, !noalias !68 %1397 = sitofp i32 %1396 to double %1398 = fneg double %1397 %1399 = call double @llvm.fma.f64(double %1398, double noundef 0x3FF921FB54442D18, double %1391) %1400 = call double @llvm.fma.f64(double %1398, double noundef 0x3C91A62633145C00, double %1399) %1401 = call double @llvm.fma.f64(double %1398, double noundef 0x397B839A252049C0, double %1400) %1402 = call double @llvm.fabs.f64(double %1391) %1403 = fcmp ult double %1402, 0x41E0000000000000 br i1 %1403, label %__internal_trig_reduction_kerneld.exit.i.i25.i248, label %1404 1404: ; preds = %1369 %1405 = call fastcc double @__internal_trig_reduction_slowpathd(double %1391, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i20.i163) #139 %.pre90 = load i32, i32* %q.i.i.i20.i163, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25.i248 __internal_trig_reduction_kerneld.exit.i.i25.i248: ; preds = %1404, %1369 %1406 = phi i32 [ %.pre90, %1404 ], [ %1396, %1369 ] %t.i.i.i19.i162.0 = phi double [ %1405, %1404 ], [ %1401, %1369 ] %1407 = and i32 %1406, 3 %1408 = uitofp i32 %1407 to double %1409 = fadd double %t.i.i.i19.i162.0, 0xBFE921FB54442D18 %1410 = fmul double %1408, 0x3FF921FB54442D18 %1411 = fadd double %1409, %1410 %1412 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1413 = icmp eq i32 %1412, 350 br i1 %1413, label %1417, label %1414 1414: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i248 %1415 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1416 = icmp eq i32 %1415, 370 br i1 %1416, label %1417, label %1476 1417: ; preds = %1414, %__internal_trig_reduction_kerneld.exit.i.i25.i248 %1418 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1419 = icmp eq i32 %1418, 200 br i1 %1419, label %1426, label %1420 1420: ; preds = %1417 %1421 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1422 = icmp eq i32 %1421, 350 br i1 %1422, label %1426, label %1423 1423: ; preds = %1420 %1424 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1425 = icmp eq i32 %1424, 370 br i1 %1425, label %1426, label %1429 1426: ; preds = %1423, %1420, %1417 %1427 = call double @llvm.fabs.f64(double %1411) %1428 = fcmp oeq double %1427, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i.i249 1429: ; preds = %1423 %1430 = call i32 @llvm.nvvm.d2i.lo(double %1411) #139 %1431 = call i32 @llvm.nvvm.d2i.hi(double %1411) #139 %1432 = and i32 %1431, 2147483647 %1433 = icmp eq i32 %1432, 2146435072 %1434 = icmp eq i32 %1430, 0 %1435 = select i1 %1433, i1 %1434, i1 false br label %__nv_isinfd.exit.i.i.i.i.i249 __nv_isinfd.exit.i.i.i.i.i249: ; preds = %1429, %1426 %.039.in = phi i1 [ %1428, %1426 ], [ %1435, %1429 ] br i1 %.039.in, label %1436, label %1438 1436: ; preds = %__nv_isinfd.exit.i.i.i.i.i249 %1437 = fmul double %1411, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250 1438: ; preds = %__nv_isinfd.exit.i.i.i.i.i249 %1439 = fmul double %1411, 0x3FE45F306DC9C883 %1440 = call i32 @llvm.nvvm.d2i.rn(double %1439) #139 store i32 %1440, i32* %q.i.i.i.i.i.i149, align 4, !noalias !68 %1441 = sitofp i32 %1440 to double %1442 = fneg double %1441 %1443 = call double @llvm.fma.f64(double %1442, double noundef 0x3FF921FB54442D18, double %1411) %1444 = call double @llvm.fma.f64(double %1442, double noundef 0x3C91A62633145C00, double %1443) %1445 = call double @llvm.fma.f64(double %1442, double noundef 0x397B839A252049C0, double %1444) %1446 = call double @llvm.fabs.f64(double %1411) %1447 = fcmp ult double %1446, 0x41E0000000000000 br i1 %1447, label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250, label %1448 1448: ; preds = %1438 %1449 = call fastcc double @__internal_trig_reduction_slowpathd(double %1411, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i.i149) #139 %.pre92 = load i32, i32* %q.i.i.i.i.i.i149, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250 __internal_trig_reduction_kerneld.exit.i.i.i.i.i250: ; preds = %1438, %1448, %1436 %i.i.i.i.i.i156.0 = phi i32 [ 0, %1436 ], [ %.pre92, %1448 ], [ %1440, %1438 ] %.038 = phi double [ %1437, %1436 ], [ %1449, %1448 ], [ %1445, %1438 ] %1450 = fmul double %.038, %.038 %1451 = call double @llvm.fma.f64(double %1450, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %1452 = call double @llvm.fma.f64(double %1451, double %1450, double noundef 0xBE927E4F8E06E6D9) %1453 = call double @llvm.fma.f64(double %1452, double %1450, double noundef 0x3EFA01A019DDBCE9) %1454 = call double @llvm.fma.f64(double %1453, double %1450, double noundef 0xBF56C16C16C15D47) %1455 = call double @llvm.fma.f64(double %1454, double %1450, double noundef 0x3FA5555555555551) %1456 = call double @llvm.fma.f64(double %1455, double %1450, double noundef -5.000000e-01) %1457 = call double @llvm.fma.f64(double %1456, double %1450, double noundef 1.000000e+00) %1458 = call double @llvm.fma.f64(double %1450, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %1459 = call double @llvm.fma.f64(double %1458, double %1450, double noundef 0x3EC71DE369ACE392) %1460 = call double @llvm.fma.f64(double %1459, double %1450, double noundef 0xBF2A01A019DB62A1) %1461 = call double @llvm.fma.f64(double %1460, double %1450, double noundef 0x3F81111111110818) %1462 = call double @llvm.fma.f64(double %1461, double %1450, double noundef 0xBFC5555555555554) %1463 = call double @llvm.fma.f64(double %1462, double %1450, double noundef 0.000000e+00) %1464 = call double @llvm.fma.f64(double %1463, double %.038, double %.038) %1465 = call i32 @llvm.nvvm.d2i.hi(double %1464) #139 %1466 = call i32 @llvm.nvvm.d2i.lo(double %1464) #139 %1467 = xor i32 %1465, -2147483648 %1468 = call double @llvm.nvvm.lohi.i2d(i32 %1466, i32 %1467) #139 %1469 = and i32 %i.i.i.i.i.i156.0, 1 %.not53 = icmp eq i32 %1469, 0 %spec.select15 = select i1 %.not53, double %1457, double %1468 %1470 = and i32 %i.i.i.i.i.i156.0, 2 %.not54 = icmp eq i32 %1470, 0 br i1 %.not54, label %__internal_cos_offset.exit.i.i255, label %1471 1471: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250 %1472 = call i32 @llvm.nvvm.d2i.hi(double %spec.select15) #139 %1473 = call i32 @llvm.nvvm.d2i.lo(double %spec.select15) #139 %1474 = xor i32 %1472, -2147483648 %1475 = call double @llvm.nvvm.lohi.i2d(i32 %1473, i32 %1474) #139 br label %__internal_cos_offset.exit.i.i255 1476: ; preds = %1414 %1477 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1478 = icmp eq i32 %1477, 200 br i1 %1478, label %1485, label %1479 1479: ; preds = %1476 %1480 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1481 = icmp eq i32 %1480, 350 br i1 %1481, label %1485, label %1482 1482: ; preds = %1479 %1483 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1484 = icmp eq i32 %1483, 370 br i1 %1484, label %1485, label %1488 1485: ; preds = %1482, %1479, %1476 %1486 = call double @llvm.fabs.f64(double %1411) %1487 = fcmp oeq double %1486, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i26.i252 1488: ; preds = %1482 %1489 = call i32 @llvm.nvvm.d2i.lo(double %1411) #139 %1490 = call i32 @llvm.nvvm.d2i.hi(double %1411) #139 %1491 = and i32 %1490, 2147483647 %1492 = icmp eq i32 %1491, 2146435072 %1493 = icmp eq i32 %1489, 0 %1494 = select i1 %1492, i1 %1493, i1 false br label %__nv_isinfd.exit.i.i.i26.i252 __nv_isinfd.exit.i.i.i26.i252: ; preds = %1488, %1485 %.040.in = phi i1 [ %1487, %1485 ], [ %1494, %1488 ] br i1 %.040.in, label %1495, label %1497 1495: ; preds = %__nv_isinfd.exit.i.i.i26.i252 %1496 = fmul double %1411, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i.i254 1497: ; preds = %__nv_isinfd.exit.i.i.i26.i252 %1498 = fmul double %1411, 0x3FE45F306DC9C883 %1499 = call i32 @llvm.nvvm.d2i.rn(double %1498) #139 store i32 %1499, i32* %q.i.i.i.i9.i133, align 4, !noalias !68 %1500 = sitofp i32 %1499 to double %1501 = fneg double %1500 %1502 = call double @llvm.fma.f64(double %1501, double noundef 0x3FF921FB54442D18, double %1411) %1503 = call double @llvm.fma.f64(double %1501, double noundef 0x3C91A62633145C00, double %1502) %1504 = call double @llvm.fma.f64(double %1501, double noundef 0x397B839A252049C0, double %1503) %1505 = call double @llvm.fabs.f64(double %1411) %1506 = fcmp ult double %1505, 0x41E0000000000000 br i1 %1506, label %__internal_trig_reduction_kerneld.exit.i.i.i27.i253, label %1507 1507: ; preds = %1497 %1508 = call fastcc double @__internal_trig_reduction_slowpathd(double %1411, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i9.i133) #139 %.pre91 = load i32, i32* %q.i.i.i.i9.i133, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 __internal_trig_reduction_kerneld.exit.i.i.i27.i253: ; preds = %1507, %1497 %1509 = phi i32 [ %.pre91, %1507 ], [ %1499, %1497 ] %t.i1.i.i.i.i132.0 = phi double [ %1508, %1507 ], [ %1504, %1497 ] %phi.bo49 = add i32 %1509, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i.i254 __internal_sin_cos_kerneld.exit.i.i.i.i254: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i27.i253, %1495 %i.i.i.i17.i160.0 = phi i32 [ 1, %1495 ], [ %phi.bo49, %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 ] %z.i.i.i16.i159.0 = phi double [ %1496, %1495 ], [ %t.i1.i.i.i.i132.0, %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 ] %1510 = shl i32 %i.i.i.i17.i160.0, 3 %1511 = and i32 %1510, 8 %1512 = zext i32 %1511 to i64 %1513 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %1512 %1514 = fmul double %z.i.i.i16.i159.0, %z.i.i.i16.i159.0 %1515 = and i32 %i.i.i.i17.i160.0, 1 %.not50 = icmp eq i32 %1515, 0 %1516 = select i1 %.not50, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1517 = getelementptr inbounds double, double addrspace(1)* %1513, i64 1 %1518 = load double, double addrspace(1)* %1517, align 8 %1519 = call double @llvm.fma.f64(double noundef %1516, double %1514, double %1518) %1520 = getelementptr inbounds double, double addrspace(1)* %1513, i64 2 %1521 = load double, double addrspace(1)* %1520, align 8 %1522 = call double @llvm.fma.f64(double %1519, double %1514, double %1521) %1523 = getelementptr inbounds double, double addrspace(1)* %1513, i64 3 %1524 = load double, double addrspace(1)* %1523, align 8 %1525 = call double @llvm.fma.f64(double %1522, double %1514, double %1524) %1526 = getelementptr inbounds double, double addrspace(1)* %1513, i64 4 %1527 = load double, double addrspace(1)* %1526, align 8 %1528 = call double @llvm.fma.f64(double %1525, double %1514, double %1527) %1529 = getelementptr inbounds double, double addrspace(1)* %1513, i64 5 %1530 = load double, double addrspace(1)* %1529, align 8 %1531 = call double @llvm.fma.f64(double %1528, double %1514, double %1530) %1532 = getelementptr inbounds double, double addrspace(1)* %1513, i64 6 %1533 = load double, double addrspace(1)* %1532, align 8 %1534 = call double @llvm.fma.f64(double %1531, double %1514, double %1533) %1535 = call double @llvm.fma.f64(double %1534, double %z.i.i.i16.i159.0, double %z.i.i.i16.i159.0) %1536 = call double @llvm.fma.f64(double %1534, double %1514, double noundef 1.000000e+00) %spec.select16 = select i1 %.not50, double %1535, double %1536 %1537 = and i32 %i.i.i.i17.i160.0, 2 %.not52 = icmp eq i32 %1537, 0 %1538 = call double @llvm.fma.f64(double %spec.select16, double noundef -1.000000e+00, double noundef 0.000000e+00) %.142 = select i1 %.not52, double %spec.select16, double %1538 br label %__internal_cos_offset.exit.i.i255 __internal_cos_offset.exit.i.i255: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250, %1471, %__internal_sin_cos_kerneld.exit.i.i.i.i254 %.037 = phi double [ %.142, %__internal_sin_cos_kerneld.exit.i.i.i.i254 ], [ %1475, %1471 ], [ %spec.select15, %__internal_trig_reduction_kerneld.exit.i.i.i.i.i250 ] %1539 = fmul double %1394, %.037 br label %__nv_j0.exit.i256 __nv_j0.exit.i256: ; preds = %1311, %__internal_cos_offset.exit.i.i255, %__nv_isinfd.exit.i.i247, %1333, %1289 %r.i.i169.3 = phi double [ %1308, %1289 ], [ %1330, %1311 ], [ %1352, %1333 ], [ %1539, %__internal_cos_offset.exit.i.i255 ], [ 0.000000e+00, %__nv_isinfd.exit.i.i247 ] %1540 = fmul double %1287, %r.i.i169.3 %1541 = fadd double %1222, %1540 br label %__nv_y0.exit266 1542: ; preds = %1209 %1543 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %1543, label %1571, label %1544 1544: ; preds = %1542 %1545 = fadd double %1, 0xBFEC982EB8D417EA %1546 = fadd double %1545, 0xBC7EA9D270347F83 %1547 = call double @llvm.fma.f64(double %1546, double noundef 0xBF01630132D75FC3, double noundef 0x3F3D054B05D3C52D) %1548 = call double @llvm.fma.f64(double %1547, double %1546, double noundef 0xBF66DAC0B314B2E5) %1549 = call double @llvm.fma.f64(double %1548, double %1546, double noundef 0x3F86A5D1DE76263F) %1550 = call double @llvm.fma.f64(double %1549, double %1546, double noundef 0xBF9FD16652824592) %1551 = call double @llvm.fma.f64(double %1550, double %1546, double noundef 0x3FB0F69A9CC79FBD) %1552 = call double @llvm.fma.f64(double %1551, double %1546, double noundef 0xBFBCCE40EF15583E) %1553 = call double @llvm.fma.f64(double %1552, double %1546, double noundef 0x3FC446B11780E4FC) %1554 = call double @llvm.fma.f64(double %1553, double %1546, double noundef 0xBFC89AE7E19621F7) %1555 = call double @llvm.fma.f64(double %1554, double %1546, double noundef 0x3FCACBA1B38EF7B8) %1556 = call double @llvm.fma.f64(double %1555, double %1546, double noundef 0xBFCB4166A03BBFA5) %1557 = call double @llvm.fma.f64(double %1556, double %1546, double noundef 0x3FCACCA4D5D4889A) %1558 = call double @llvm.fma.f64(double %1557, double %1546, double noundef 0xBFCA1455932B9392) %1559 = call double @llvm.fma.f64(double %1558, double %1546, double noundef 0x3FC96D8DB8D844EC) %1560 = call double @llvm.fma.f64(double %1559, double %1546, double noundef 0xBFC8F7FB77522EDF) %1561 = call double @llvm.fma.f64(double %1560, double %1546, double noundef 0x3FC8C0926ABC9AB0) %1562 = call double @llvm.fma.f64(double %1561, double %1546, double noundef 0xBFC8D35B8FEA468C) %1563 = call double @llvm.fma.f64(double %1562, double %1546, double noundef 0x3FC9424B8A0C8F94) %1564 = call double @llvm.fma.f64(double %1563, double %1546, double noundef 0xBFCA396A7F3403EF) %1565 = call double @llvm.fma.f64(double %1564, double %1546, double noundef 0x3FCC068086C37055) %1566 = call double @llvm.fma.f64(double %1565, double %1546, double noundef 0xBFCCF18E6A4C5C4E) %1567 = call double @llvm.fma.f64(double %1566, double %1546, double noundef 0x3FCC3B1338AF4239) %1568 = call double @llvm.fma.f64(double %1567, double %1546, double noundef 0xBFDF7E38A46D70DB) %1569 = call double @llvm.fma.f64(double %1568, double %1546, double noundef 0x3FEC24371844B88A) %1570 = fmul double %1546, %1569 br label %__nv_y0.exit266 1571: ; preds = %1542 %1572 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %1572, label %1600, label %1573 1573: ; preds = %1571 %1574 = fadd double %1, 0xC00FA9534D98569C %1575 = fadd double %1574, 0x3C9F06AE7804384E %1576 = call double @llvm.fma.f64(double %1575, double noundef 0xBCDAEA62AC8BDA68, double noundef 0xBCD2434958151AC7) %1577 = call double @llvm.fma.f64(double %1576, double %1575, double noundef 0x3D11C24A40D33FE1) %1578 = call double @llvm.fma.f64(double %1577, double %1575, double noundef 0x3D237CD62FA08CA4) %1579 = call double @llvm.fma.f64(double %1578, double %1575, double noundef 0xBD43902E0298C52A) %1580 = call double @llvm.fma.f64(double %1579, double %1575, double noundef 0xBD1DDAAD11CAB40F) %1581 = call double @llvm.fma.f64(double %1580, double %1575, double noundef 0xBD5209D9F06D7DE4) %1582 = call double @llvm.fma.f64(double %1581, double %1575, double noundef 0x3D8BB9F464468E1A) %1583 = call double @llvm.fma.f64(double %1582, double %1575, double noundef 0xBDA8F67B07D1B440) %1584 = call double @llvm.fma.f64(double %1583, double %1575, double noundef 0x3DC7C8D60F9EAECF) %1585 = call double @llvm.fma.f64(double %1584, double %1575, double noundef 0xBDE9703405B49A8D) %1586 = call double @llvm.fma.f64(double %1585, double %1575, double noundef 0x3E0A6B64E76417E4) %1587 = call double @llvm.fma.f64(double %1586, double %1575, double noundef 0xBE2F6B5AFB2F1359) %1588 = call double @llvm.fma.f64(double %1587, double %1575, double noundef 0x3E54526B71C21EC1) %1589 = call double @llvm.fma.f64(double %1588, double %1575, double noundef 0xBE5776DBCBBC8E1D) %1590 = call double @llvm.fma.f64(double %1589, double %1575, double noundef 0xBE93B211FC2DF90E) %1591 = call double @llvm.fma.f64(double %1590, double %1575, double noundef 0xBED486372E8562DC) %1592 = call double @llvm.fma.f64(double %1591, double %1575, double noundef 0x3F0AB2C1FBC3A254) %1593 = call double @llvm.fma.f64(double %1592, double %1575, double noundef 0x3F299827653353B8) %1594 = call double @llvm.fma.f64(double %1593, double %1575, double noundef 0xBF61E32BC4ED7084) %1595 = call double @llvm.fma.f64(double %1594, double %1575, double noundef 0xBF7C116FDC599A09) %1596 = call double @llvm.fma.f64(double %1595, double %1575, double noundef 0x3FADF6D59BF50C77) %1597 = call double @llvm.fma.f64(double %1596, double %1575, double noundef 0x3FAA09C92903680B) %1598 = call double @llvm.fma.f64(double %1597, double %1575, double noundef 0xBFD9C34256A12A0B) %1599 = fmul double %1575, %1598 br label %__nv_y0.exit266 1600: ; preds = %1571 %1601 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %1601, label %1621, label %1602 1602: ; preds = %1600 %1603 = fadd double %1, 0xC01C581DC4E72103 %1604 = fadd double %1603, 0x3C99774A495F56CF %1605 = call double @llvm.fma.f64(double %1604, double noundef 0x3CF1CB3ABA718B8E, double noundef 0xBD3F443BB4F53D75) %1606 = call double @llvm.fma.f64(double %1605, double %1604, double noundef 0xBD770F737BD6A786) %1607 = call double @llvm.fma.f64(double %1606, double %1604, double noundef 0x3DBF0E9A20459E14) %1608 = call double @llvm.fma.f64(double %1607, double %1604, double noundef 0x3DEFA6B137D5E108) %1609 = call double @llvm.fma.f64(double %1608, double %1604, double noundef 0xBE344296729FB7FA) %1610 = call double @llvm.fma.f64(double %1609, double %1604, double noundef 0xBE60A2813A80DFAA) %1611 = call double @llvm.fma.f64(double %1610, double %1604, double noundef 0x3EA34AA737A83EB4) %1612 = call double @llvm.fma.f64(double %1611, double %1604, double noundef 0x3EC6A9227332D03C) %1613 = call double @llvm.fma.f64(double %1612, double %1604, double noundef 0xBF08177E4F93C81E) %1614 = call double @llvm.fma.f64(double %1613, double %1604, double noundef 0xBF226DD71E391775) %1615 = call double @llvm.fma.f64(double %1614, double %1604, double noundef 0x3F61D35E85FD7B22) %1616 = call double @llvm.fma.f64(double %1615, double %1604, double noundef 0x3F6B2F14A955285C) %1617 = call double @llvm.fma.f64(double %1616, double %1604, double noundef 0xBFA8969C64CBF388) %1618 = call double @llvm.fma.f64(double %1617, double %1604, double noundef 0xBF95AEF611FC4D5A) %1619 = call double @llvm.fma.f64(double %1618, double %1604, double noundef 0x3FD334CCA0697A5A) %1620 = fmul double %1604, %1619 br label %__nv_y0.exit266 1621: ; preds = %1600 %1622 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1623 = icmp eq i32 %1622, 200 br i1 %1623, label %1630, label %1624 1624: ; preds = %1621 %1625 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1626 = icmp eq i32 %1625, 350 br i1 %1626, label %1630, label %1627 1627: ; preds = %1624 %1628 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1629 = icmp eq i32 %1628, 370 br i1 %1629, label %1630, label %1632 1630: ; preds = %1627, %1624, %1621 %1631 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i257 1632: ; preds = %1627 %1633 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %1634 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %1635 = and i32 %1634, 2147483647 %1636 = icmp eq i32 %1635, 2146435072 %1637 = icmp eq i32 %1633, 0 %1638 = select i1 %1636, i1 %1637, i1 false br label %__nv_isinfd.exit.i257 __nv_isinfd.exit.i257: ; preds = %1632, %1630 %.044.in = phi i1 [ %1631, %1630 ], [ %1638, %1632 ] br i1 %.044.in, label %__nv_y0.exit266, label %1639 1639: ; preds = %__nv_isinfd.exit.i257 %1640 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %1641 = fneg double %1 %1642 = call double @llvm.fma.f64(double %1641, double %1640, double noundef 1.000000e+00) %1643 = call double @llvm.fma.f64(double %1642, double %1642, double %1642) %1644 = call double @llvm.fma.f64(double %1643, double %1640, double %1640) %1645 = fmul double %1644, %1644 %1646 = call double @llvm.fma.f64(double %1645, double noundef 0xC0C5E91E6AC3AD03, double noundef 0x4093F56A049CDDE7) %1647 = call double @llvm.fma.f64(double %1646, double %1645, double noundef 0xC05572D39DFB8433) %1648 = call double @llvm.fma.f64(double %1647, double %1645, double noundef 0x4016A6041CAA59E5) %1649 = call double @llvm.fma.f64(double %1648, double %1645, double noundef 0xBFE155E3A0493880) %1650 = call double @llvm.fma.f64(double %1649, double %1645, double noundef 0x3FBA7FB92F417F7F) %1651 = call double @llvm.fma.f64(double %1650, double %1645, double noundef 0xBFAFFFFFB12E32F5) %1652 = call double @llvm.fma.f64(double %1651, double %1645, double noundef 0x3FEFFFFFFFFECED5) %1653 = call double @llvm.fma.f64(double %1645, double noundef 0x418A86A64BE101DC, double noundef 0xC15709C79AAC5813) %1654 = call double @llvm.fma.f64(double %1653, double %1645, double noundef 0x41142A31C980A287) %1655 = call double @llvm.fma.f64(double %1654, double %1645, double noundef 0xC0C9CBE68930485D) %1656 = call double @llvm.fma.f64(double %1655, double %1645, double noundef 0x407F583E14E8A4E8) %1657 = call double @llvm.fma.f64(double %1656, double %1645, double noundef 0xC0374A629C650680) %1658 = call double @llvm.fma.f64(double %1657, double %1645, double noundef 0x3FFA32A7AF17FAE9) %1659 = call double @llvm.fma.f64(double %1658, double %1645, double noundef 0xBFCAD32497785CD6) %1660 = call double @llvm.fma.f64(double %1659, double %1645, double noundef 0x3FB0AAAA9FB75F7B) %1661 = call double @llvm.fma.f64(double %1660, double %1645, double noundef 0xBFBFFFFFFFFE320F) %1662 = call double @llvm.fma.f64(double %1661, double %1644, double %1) %1663 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %1664 = fmul double %1663, 0x3FE9884533D43651 %1665 = fmul double %1664, %1652 %1666 = fmul double %1662, 0x3FE45F306DC9C883 %1667 = call i32 @llvm.nvvm.d2i.rn(double %1666) #139 store i32 %1667, i32* %q.i.i.i232, align 4, !noalias !68 %1668 = sitofp i32 %1667 to double %1669 = fneg double %1668 %1670 = call double @llvm.fma.f64(double %1669, double noundef 0x3FF921FB54442D18, double %1662) %1671 = call double @llvm.fma.f64(double %1669, double noundef 0x3C91A62633145C00, double %1670) %1672 = call double @llvm.fma.f64(double %1669, double noundef 0x397B839A252049C0, double %1671) %1673 = call double @llvm.fabs.f64(double %1662) %1674 = fcmp ult double %1673, 0x41E0000000000000 br i1 %1674, label %__internal_trig_reduction_kerneld.exit.i.i258, label %1675 1675: ; preds = %1639 %1676 = call fastcc double @__internal_trig_reduction_slowpathd(double %1662, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i232) #139 %.pre93 = load i32, i32* %q.i.i.i232, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i258 __internal_trig_reduction_kerneld.exit.i.i258: ; preds = %1675, %1639 %1677 = phi i32 [ %.pre93, %1675 ], [ %1667, %1639 ] %t.i.i.i231.0 = phi double [ %1676, %1675 ], [ %1672, %1639 ] %1678 = and i32 %1677, 3 %1679 = uitofp i32 %1678 to double %1680 = fadd double %t.i.i.i231.0, 0xC002D97C7F3321D2 %1681 = fmul double %1679, 0x3FF921FB54442D18 %1682 = fadd double %1680, %1681 %1683 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1684 = icmp eq i32 %1683, 350 br i1 %1684, label %1688, label %1685 1685: ; preds = %__internal_trig_reduction_kerneld.exit.i.i258 %1686 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1687 = icmp eq i32 %1686, 370 br i1 %1687, label %1688, label %1747 1688: ; preds = %1685, %__internal_trig_reduction_kerneld.exit.i.i258 %1689 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1690 = icmp eq i32 %1689, 200 br i1 %1690, label %1697, label %1691 1691: ; preds = %1688 %1692 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1693 = icmp eq i32 %1692, 350 br i1 %1693, label %1697, label %1694 1694: ; preds = %1691 %1695 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1696 = icmp eq i32 %1695, 370 br i1 %1696, label %1697, label %1700 1697: ; preds = %1694, %1691, %1688 %1698 = call double @llvm.fabs.f64(double %1682) %1699 = fcmp oeq double %1698, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i259 1700: ; preds = %1694 %1701 = call i32 @llvm.nvvm.d2i.lo(double %1682) #139 %1702 = call i32 @llvm.nvvm.d2i.hi(double %1682) #139 %1703 = and i32 %1702, 2147483647 %1704 = icmp eq i32 %1703, 2146435072 %1705 = icmp eq i32 %1701, 0 %1706 = select i1 %1704, i1 %1705, i1 false br label %__nv_isinfd.exit.i.i.i.i259 __nv_isinfd.exit.i.i.i.i259: ; preds = %1700, %1697 %.032.in = phi i1 [ %1699, %1697 ], [ %1706, %1700 ] br i1 %.032.in, label %1707, label %1709 1707: ; preds = %__nv_isinfd.exit.i.i.i.i259 %1708 = fmul double %1682, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i260 1709: ; preds = %__nv_isinfd.exit.i.i.i.i259 %1710 = fmul double %1682, 0x3FE45F306DC9C883 %1711 = call i32 @llvm.nvvm.d2i.rn(double %1710) #139 store i32 %1711, i32* %q.i.i.i.i.i218, align 4, !noalias !68 %1712 = sitofp i32 %1711 to double %1713 = fneg double %1712 %1714 = call double @llvm.fma.f64(double %1713, double noundef 0x3FF921FB54442D18, double %1682) %1715 = call double @llvm.fma.f64(double %1713, double noundef 0x3C91A62633145C00, double %1714) %1716 = call double @llvm.fma.f64(double %1713, double noundef 0x397B839A252049C0, double %1715) %1717 = call double @llvm.fabs.f64(double %1682) %1718 = fcmp ult double %1717, 0x41E0000000000000 br i1 %1718, label %__internal_trig_reduction_kerneld.exit.i.i.i.i260, label %1719 1719: ; preds = %1709 %1720 = call fastcc double @__internal_trig_reduction_slowpathd(double %1682, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i218) #139 %.pre95 = load i32, i32* %q.i.i.i.i.i218, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i260 __internal_trig_reduction_kerneld.exit.i.i.i.i260: ; preds = %1709, %1719, %1707 %i.i.i.i.i225.0 = phi i32 [ 0, %1707 ], [ %.pre95, %1719 ], [ %1711, %1709 ] %.031 = phi double [ %1708, %1707 ], [ %1720, %1719 ], [ %1716, %1709 ] %1721 = fmul double %.031, %.031 %1722 = call double @llvm.fma.f64(double %1721, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %1723 = call double @llvm.fma.f64(double %1722, double %1721, double noundef 0xBE927E4F8E06E6D9) %1724 = call double @llvm.fma.f64(double %1723, double %1721, double noundef 0x3EFA01A019DDBCE9) %1725 = call double @llvm.fma.f64(double %1724, double %1721, double noundef 0xBF56C16C16C15D47) %1726 = call double @llvm.fma.f64(double %1725, double %1721, double noundef 0x3FA5555555555551) %1727 = call double @llvm.fma.f64(double %1726, double %1721, double noundef -5.000000e-01) %1728 = call double @llvm.fma.f64(double %1727, double %1721, double noundef 1.000000e+00) %1729 = call double @llvm.fma.f64(double %1721, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %1730 = call double @llvm.fma.f64(double %1729, double %1721, double noundef 0x3EC71DE369ACE392) %1731 = call double @llvm.fma.f64(double %1730, double %1721, double noundef 0xBF2A01A019DB62A1) %1732 = call double @llvm.fma.f64(double %1731, double %1721, double noundef 0x3F81111111110818) %1733 = call double @llvm.fma.f64(double %1732, double %1721, double noundef 0xBFC5555555555554) %1734 = call double @llvm.fma.f64(double %1733, double %1721, double noundef 0.000000e+00) %1735 = call double @llvm.fma.f64(double %1734, double %.031, double %.031) %1736 = call i32 @llvm.nvvm.d2i.hi(double %1735) #139 %1737 = call i32 @llvm.nvvm.d2i.lo(double %1735) #139 %1738 = xor i32 %1736, -2147483648 %1739 = call double @llvm.nvvm.lohi.i2d(i32 %1737, i32 %1738) #139 %1740 = and i32 %i.i.i.i.i225.0, 1 %.not47 = icmp eq i32 %1740, 0 %spec.select18 = select i1 %.not47, double %1728, double %1739 %1741 = and i32 %i.i.i.i.i225.0, 2 %.not48 = icmp eq i32 %1741, 0 br i1 %.not48, label %__internal_cos_offset.exit.i265, label %1742 1742: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i260 %1743 = call i32 @llvm.nvvm.d2i.hi(double %spec.select18) #139 %1744 = call i32 @llvm.nvvm.d2i.lo(double %spec.select18) #139 %1745 = xor i32 %1743, -2147483648 %1746 = call double @llvm.nvvm.lohi.i2d(i32 %1744, i32 %1745) #139 br label %__internal_cos_offset.exit.i265 1747: ; preds = %1685 %1748 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1749 = icmp eq i32 %1748, 200 br i1 %1749, label %1756, label %1750 1750: ; preds = %1747 %1751 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1752 = icmp eq i32 %1751, 350 br i1 %1752, label %1756, label %1753 1753: ; preds = %1750 %1754 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1755 = icmp eq i32 %1754, 370 br i1 %1755, label %1756, label %1759 1756: ; preds = %1753, %1750, %1747 %1757 = call double @llvm.fabs.f64(double %1682) %1758 = fcmp oeq double %1757, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i262 1759: ; preds = %1753 %1760 = call i32 @llvm.nvvm.d2i.lo(double %1682) #139 %1761 = call i32 @llvm.nvvm.d2i.hi(double %1682) #139 %1762 = and i32 %1761, 2147483647 %1763 = icmp eq i32 %1762, 2146435072 %1764 = icmp eq i32 %1760, 0 %1765 = select i1 %1763, i1 %1764, i1 false br label %__nv_isinfd.exit.i.i.i262 __nv_isinfd.exit.i.i.i262: ; preds = %1759, %1756 %.033.in = phi i1 [ %1758, %1756 ], [ %1765, %1759 ] br i1 %.033.in, label %1766, label %1768 1766: ; preds = %__nv_isinfd.exit.i.i.i262 %1767 = fmul double %1682, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i264 1768: ; preds = %__nv_isinfd.exit.i.i.i262 %1769 = fmul double %1682, 0x3FE45F306DC9C883 %1770 = call i32 @llvm.nvvm.d2i.rn(double %1769) #139 store i32 %1770, i32* %q.i.i.i.i202, align 4, !noalias !68 %1771 = sitofp i32 %1770 to double %1772 = fneg double %1771 %1773 = call double @llvm.fma.f64(double %1772, double noundef 0x3FF921FB54442D18, double %1682) %1774 = call double @llvm.fma.f64(double %1772, double noundef 0x3C91A62633145C00, double %1773) %1775 = call double @llvm.fma.f64(double %1772, double noundef 0x397B839A252049C0, double %1774) %1776 = call double @llvm.fabs.f64(double %1682) %1777 = fcmp ult double %1776, 0x41E0000000000000 br i1 %1777, label %__internal_trig_reduction_kerneld.exit.i.i.i263, label %1778 1778: ; preds = %1768 %1779 = call fastcc double @__internal_trig_reduction_slowpathd(double %1682, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i202) #139 %.pre94 = load i32, i32* %q.i.i.i.i202, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i263 __internal_trig_reduction_kerneld.exit.i.i.i263: ; preds = %1778, %1768 %1780 = phi i32 [ %.pre94, %1778 ], [ %1770, %1768 ] %t.i1.i.i.i201.0 = phi double [ %1779, %1778 ], [ %1775, %1768 ] %phi.bo43 = add i32 %1780, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i264 __internal_sin_cos_kerneld.exit.i.i.i264: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i263, %1766 %i.i.i.i229.0 = phi i32 [ 1, %1766 ], [ %phi.bo43, %__internal_trig_reduction_kerneld.exit.i.i.i263 ] %z.i.i.i228.0 = phi double [ %1767, %1766 ], [ %t.i1.i.i.i201.0, %__internal_trig_reduction_kerneld.exit.i.i.i263 ] %1781 = shl i32 %i.i.i.i229.0, 3 %1782 = and i32 %1781, 8 %1783 = zext i32 %1782 to i64 %1784 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %1783 %1785 = fmul double %z.i.i.i228.0, %z.i.i.i228.0 %1786 = and i32 %i.i.i.i229.0, 1 %.not44 = icmp eq i32 %1786, 0 %1787 = select i1 %.not44, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1788 = getelementptr inbounds double, double addrspace(1)* %1784, i64 1 %1789 = load double, double addrspace(1)* %1788, align 8 %1790 = call double @llvm.fma.f64(double noundef %1787, double %1785, double %1789) %1791 = getelementptr inbounds double, double addrspace(1)* %1784, i64 2 %1792 = load double, double addrspace(1)* %1791, align 8 %1793 = call double @llvm.fma.f64(double %1790, double %1785, double %1792) %1794 = getelementptr inbounds double, double addrspace(1)* %1784, i64 3 %1795 = load double, double addrspace(1)* %1794, align 8 %1796 = call double @llvm.fma.f64(double %1793, double %1785, double %1795) %1797 = getelementptr inbounds double, double addrspace(1)* %1784, i64 4 %1798 = load double, double addrspace(1)* %1797, align 8 %1799 = call double @llvm.fma.f64(double %1796, double %1785, double %1798) %1800 = getelementptr inbounds double, double addrspace(1)* %1784, i64 5 %1801 = load double, double addrspace(1)* %1800, align 8 %1802 = call double @llvm.fma.f64(double %1799, double %1785, double %1801) %1803 = getelementptr inbounds double, double addrspace(1)* %1784, i64 6 %1804 = load double, double addrspace(1)* %1803, align 8 %1805 = call double @llvm.fma.f64(double %1802, double %1785, double %1804) %1806 = call double @llvm.fma.f64(double %1805, double %z.i.i.i228.0, double %z.i.i.i228.0) %1807 = call double @llvm.fma.f64(double %1805, double %1785, double noundef 1.000000e+00) %spec.select19 = select i1 %.not44, double %1806, double %1807 %1808 = and i32 %i.i.i.i229.0, 2 %.not46 = icmp eq i32 %1808, 0 %1809 = call double @llvm.fma.f64(double %spec.select19, double noundef -1.000000e+00, double noundef 0.000000e+00) %.135 = select i1 %.not46, double %spec.select19, double %1809 br label %__internal_cos_offset.exit.i265 __internal_cos_offset.exit.i265: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i260, %1742, %__internal_sin_cos_kerneld.exit.i.i.i264 %.030 = phi double [ %.135, %__internal_sin_cos_kerneld.exit.i.i.i264 ], [ %1746, %1742 ], [ %spec.select18, %__internal_trig_reduction_kerneld.exit.i.i.i.i260 ] %1810 = fmul double %1665, %.030 br label %__nv_y0.exit266 __nv_y0.exit266: ; preds = %1544, %1602, %__nv_isinfd.exit.i257, %__internal_cos_offset.exit.i265, %1573, %__nv_j0.exit.i256 %r.i239.4 = phi double [ %1541, %__nv_j0.exit.i256 ], [ %1570, %1544 ], [ %1599, %1573 ], [ %1620, %1602 ], [ %1810, %__internal_cos_offset.exit.i265 ], [ 0.000000e+00, %__nv_isinfd.exit.i257 ] %r.i239.5 = select i1 %1208, double 0xFFF8000000000000, double %r.i239.4 br label %__nv_y1.exit416 1811: ; preds = %__nv_y0.exit br i1 %2, label %1812, label %1814 1812: ; preds = %1811 %1813 = fdiv double 0xBFE45F306DC9C883, %1 br label %2413 1814: ; preds = %1811 %1815 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %1815, label %2147, label %1816 1816: ; preds = %1814 %1817 = fmul double %a, %a %1818 = call double @llvm.fma.f64(double %1817, double noundef 0x3D5249F90687428C, double noundef 0xBDCF0B5B1FB7B95E) %1819 = call double @llvm.fma.f64(double %1818, double %1817, double noundef 0x3E432E589311FA14) %1820 = call double @llvm.fma.f64(double %1819, double %1817, double noundef 0xBEB0A780AA4A92E9) %1821 = call double @llvm.fma.f64(double %1820, double %1817, double noundef 0x3F12C7DBFFCAEC2B) %1822 = call double @llvm.fma.f64(double %1821, double %1817, double noundef 0xBF6835B97894BA4A) %1823 = call double @llvm.fma.f64(double %1822, double %1817, double noundef 0x3FABD3975C75B4A3) %1824 = call double @llvm.fma.f64(double %1823, double %1817, double noundef 0xBFC91866143CBC8A) %1825 = fmul double %1, %1824 %1826 = fcmp ugt double %1, 0x400353AABAD7B784 br i1 %1826, label %1844, label %1827 1827: ; preds = %1816 %1828 = call double @llvm.fma.f64(double %1, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) %1829 = call double @llvm.fma.f64(double %1828, double %1, double noundef 0x3D5503F5A491E487) %1830 = call double @llvm.fma.f64(double %1829, double %1, double noundef 0x3DC1F29940C2403A) %1831 = call double @llvm.fma.f64(double %1830, double %1, double noundef 0x3D84CF9302EACDEF) %1832 = call double @llvm.fma.f64(double %1831, double %1, double noundef 0xBE384A53DBBCA436) %1833 = call double @llvm.fma.f64(double %1832, double %1, double noundef 0x3D9779BEE4F63BCC) %1834 = call double @llvm.fma.f64(double %1833, double %1, double noundef 0x3EA6C160E414F3F0) %1835 = call double @llvm.fma.f64(double %1834, double %1, double noundef 0x3D8F3D2F12430699) %1836 = call double @llvm.fma.f64(double %1835, double %1, double noundef 0xBF0C71C72C0CED04) %1837 = call double @llvm.fma.f64(double %1836, double %1, double noundef 0x3D659BCA506F1128) %1838 = call double @llvm.fma.f64(double %1837, double %1, double noundef 0x3F65555555506982) %1839 = call double @llvm.fma.f64(double %1838, double %1, double noundef 0x3D15BA0B425F1BFB) %1840 = call double @llvm.fma.f64(double %1839, double %1, double noundef 0xBFB0000000000065) %1841 = call double @llvm.fma.f64(double %1840, double %1, double noundef 0x3C8729A7253FB679) %1842 = call double @llvm.fma.f64(double %1841, double %1, double noundef 5.000000e-01) %1843 = fmul double %1, %1842 br label %__nv_j1.exit.i405 1844: ; preds = %1816 %1845 = fcmp ugt double %1, 0x4015B1D0574614EA br i1 %1845, label %1865, label %1846 1846: ; preds = %1844 %1847 = fadd double %1, 0xC00EA75575AF6F09 %1848 = fadd double %1847, 0x3CA60155A9D1B256 %1849 = call double @llvm.fma.f64(double %1848, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) %1850 = call double @llvm.fma.f64(double %1849, double %1848, double noundef 0x3D76013AC1E5E222) %1851 = call double @llvm.fma.f64(double %1850, double %1848, double noundef 0xBDBEC315D96D5F03) %1852 = call double @llvm.fma.f64(double %1851, double %1848, double noundef 0xBDF03BE1B4B57207) %1853 = call double @llvm.fma.f64(double %1852, double %1848, double noundef 0x3E345695F8B660F7) %1854 = call double @llvm.fma.f64(double %1853, double %1848, double noundef 0x3E617069FCFCFFF4) %1855 = call double @llvm.fma.f64(double %1854, double %1848, double noundef 0xBEA33825C36745EB) %1856 = call double @llvm.fma.f64(double %1855, double %1848, double noundef 0xBEC9799D4F90931B) %1857 = call double @llvm.fma.f64(double %1856, double %1848, double noundef 0x3F083A06E2F7DF13) %1858 = call double @llvm.fma.f64(double %1857, double %1848, double noundef 0x3F26E4C2D53A7CF6) %1859 = call double @llvm.fma.f64(double %1858, double %1848, double noundef 0xBF624B3409957B1C) %1860 = call double @llvm.fma.f64(double %1859, double %1848, double noundef 0xBF7537544C3325DF) %1861 = call double @llvm.fma.f64(double %1860, double %1848, double noundef 0x3FAB589D1DA138E2) %1862 = call double @llvm.fma.f64(double %1861, double %1848, double noundef 0x3FAAE8A39F51AD13) %1863 = call double @llvm.fma.f64(double %1862, double %1848, double noundef 0xBFD9C6CF582CBF7F) %1864 = fmul double %1848, %1863 br label %__nv_j1.exit.i405 1865: ; preds = %1844 %1866 = fcmp ugt double %1, 0x40213065E54C1AA9 br i1 %1866, label %1886, label %1867 1867: ; preds = %1865 %1868 = fadd double %1, 0xC01C0FF5F3B47250 %1869 = fadd double %1868, 0x3C9B226D9D243827 %1870 = call double @llvm.fma.f64(double %1869, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) %1871 = call double @llvm.fma.f64(double %1870, double %1869, double noundef 0xBD73B7DD4A6608FB) %1872 = call double @llvm.fma.f64(double %1871, double %1869, double noundef 0x3DBEC5E01482C750) %1873 = call double @llvm.fma.f64(double %1872, double %1869, double noundef 0x3DEC62BB9E882103) %1874 = call double @llvm.fma.f64(double %1873, double %1869, double noundef 0xBE34462EED732A23) %1875 = call double @llvm.fma.f64(double %1874, double %1869, double noundef 0xBE5D48DCAD7DC59B) %1876 = call double @llvm.fma.f64(double %1875, double %1869, double noundef 0x3EA3026DF29167E9) %1877 = call double @llvm.fma.f64(double %1876, double %1869, double noundef 0x3EC4255B0119666C) %1878 = call double @llvm.fma.f64(double %1877, double %1869, double noundef 0xBF0796A751B32693) %1879 = call double @llvm.fma.f64(double %1878, double %1869, double noundef 0xBF207358BBDBA284) %1880 = call double @llvm.fma.f64(double %1879, double %1869, double noundef 0x3F613FBC7D6927B1) %1881 = call double @llvm.fma.f64(double %1880, double %1869, double noundef 0x3F69A4B292E3DD75) %1882 = call double @llvm.fma.f64(double %1881, double %1869, double noundef 0xBFA80C83BDEEE4FB) %1883 = call double @llvm.fma.f64(double %1882, double %1869, double noundef 0xBF95E70DC60362BF) %1884 = call double @llvm.fma.f64(double %1883, double %1869, double noundef 0x3FD33518B3874E8A) %1885 = fmul double %1869, %1884 br label %__nv_j1.exit.i405 1886: ; preds = %1865 %1887 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1888 = icmp eq i32 %1887, 200 br i1 %1888, label %1895, label %1889 1889: ; preds = %1886 %1890 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1891 = icmp eq i32 %1890, 350 br i1 %1891, label %1895, label %1892 1892: ; preds = %1889 %1893 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1894 = icmp eq i32 %1893, 370 br i1 %1894, label %1895, label %1897 1895: ; preds = %1892, %1889, %1886 %1896 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i396 1897: ; preds = %1892 %1898 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %1899 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %1900 = and i32 %1899, 2147483647 %1901 = icmp eq i32 %1900, 2146435072 %1902 = icmp eq i32 %1898, 0 %1903 = select i1 %1901, i1 %1902, i1 false br label %__nv_isinfd.exit.i.i396 __nv_isinfd.exit.i.i396: ; preds = %1897, %1895 %.058.in = phi i1 [ %1896, %1895 ], [ %1903, %1897 ] br i1 %.058.in, label %__nv_j1.exit.i405, label %1904 1904: ; preds = %__nv_isinfd.exit.i.i396 %1905 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %1906 = fneg double %1 %1907 = call double @llvm.fma.f64(double %1906, double %1905, double noundef 1.000000e+00) %1908 = call double @llvm.fma.f64(double %1907, double %1907, double %1907) %1909 = call double @llvm.fma.f64(double %1908, double %1905, double %1905) %1910 = fmul double %1909, %1909 %1911 = call double @llvm.fma.f64(double %1910, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %1912 = call double @llvm.fma.f64(double %1911, double %1910, double noundef 0x405B89354DA77324) %1913 = call double @llvm.fma.f64(double %1912, double %1910, double noundef 0xC01E352294653188) %1914 = call double @llvm.fma.f64(double %1913, double %1910, double noundef 0x3FE9BC7DB16BD7A7) %1915 = call double @llvm.fma.f64(double %1914, double %1910, double noundef 0xBFC8BFE1C3A4F741) %1916 = call double @llvm.fma.f64(double %1915, double %1910, double noundef 0x3FC7FFFFF0D00BE2) %1917 = call double @llvm.fma.f64(double %1916, double %1910, double noundef 0x3FF00000000068CC) %1918 = call double @llvm.fma.f64(double %1910, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %1919 = call double @llvm.fma.f64(double %1918, double %1910, double noundef 0xC11764222AD7C910) %1920 = call double @llvm.fma.f64(double %1919, double %1910, double noundef 0x40CEB02E0C306857) %1921 = call double @llvm.fma.f64(double %1920, double %1910, double noundef 0xC08351859FA2B23B) %1922 = call double @llvm.fma.f64(double %1921, double %1910, double noundef 0x403E65A07AF51F42) %1923 = call double @llvm.fma.f64(double %1922, double %1910, double noundef 0xC002F2B817F77A57) %1924 = call double @llvm.fma.f64(double %1923, double %1910, double noundef 0x3FD7BCC34DA069FD) %1925 = call double @llvm.fma.f64(double %1924, double %1910, double noundef 0xBFC4FFFFF8A44463) %1926 = call double @llvm.fma.f64(double %1925, double %1910, double noundef 0x3FD7FFFFFFFF5CD7) %1927 = call double @llvm.fma.f64(double %1926, double %1909, double %1) %1928 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %1929 = fmul double %1928, 0x3FE9884533D43651 %1930 = fmul double %1929, %1917 %1931 = fmul double %1927, 0x3FE45F306DC9C883 %1932 = call i32 @llvm.nvvm.d2i.rn(double %1931) #139 store i32 %1932, i32* %q.i.i.i16.i334, align 4, !noalias !68 %1933 = sitofp i32 %1932 to double %1934 = fneg double %1933 %1935 = call double @llvm.fma.f64(double %1934, double noundef 0x3FF921FB54442D18, double %1927) %1936 = call double @llvm.fma.f64(double %1934, double noundef 0x3C91A62633145C00, double %1935) %1937 = call double @llvm.fma.f64(double %1934, double noundef 0x397B839A252049C0, double %1936) %1938 = call double @llvm.fabs.f64(double %1927) %1939 = fcmp ult double %1938, 0x41E0000000000000 br i1 %1939, label %__internal_trig_reduction_kerneld.exit.i.i20.i397, label %1940 1940: ; preds = %1904 %1941 = call fastcc double @__internal_trig_reduction_slowpathd(double %1927, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i16.i334) #139 %.pre84 = load i32, i32* %q.i.i.i16.i334, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20.i397 __internal_trig_reduction_kerneld.exit.i.i20.i397: ; preds = %1940, %1904 %1942 = phi i32 [ %.pre84, %1940 ], [ %1932, %1904 ] %t.i.i.i15.i333.0 = phi double [ %1941, %1940 ], [ %1937, %1904 ] %1943 = and i32 %1942, 3 %1944 = uitofp i32 %1943 to double %1945 = fadd double %t.i.i.i15.i333.0, 0xC002D97C7F3321D2 %1946 = fmul double %1944, 0x3FF921FB54442D18 %1947 = fadd double %1945, %1946 %1948 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1949 = icmp eq i32 %1948, 350 br i1 %1949, label %1953, label %1950 1950: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i397 %1951 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1952 = icmp eq i32 %1951, 370 br i1 %1952, label %1953, label %2012 1953: ; preds = %1950, %__internal_trig_reduction_kerneld.exit.i.i20.i397 %1954 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1955 = icmp eq i32 %1954, 200 br i1 %1955, label %1962, label %1956 1956: ; preds = %1953 %1957 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1958 = icmp eq i32 %1957, 350 br i1 %1958, label %1962, label %1959 1959: ; preds = %1956 %1960 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %1961 = icmp eq i32 %1960, 370 br i1 %1961, label %1962, label %1965 1962: ; preds = %1959, %1956, %1953 %1963 = call double @llvm.fabs.f64(double %1947) %1964 = fcmp oeq double %1963, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i.i398 1965: ; preds = %1959 %1966 = call i32 @llvm.nvvm.d2i.lo(double %1947) #139 %1967 = call i32 @llvm.nvvm.d2i.hi(double %1947) #139 %1968 = and i32 %1967, 2147483647 %1969 = icmp eq i32 %1968, 2146435072 %1970 = icmp eq i32 %1966, 0 %1971 = select i1 %1969, i1 %1970, i1 false br label %__nv_isinfd.exit.i.i.i.i.i398 __nv_isinfd.exit.i.i.i.i.i398: ; preds = %1965, %1962 %.054.in = phi i1 [ %1964, %1962 ], [ %1971, %1965 ] br i1 %.054.in, label %1972, label %1974 1972: ; preds = %__nv_isinfd.exit.i.i.i.i.i398 %1973 = fmul double %1947, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399 1974: ; preds = %__nv_isinfd.exit.i.i.i.i.i398 %1975 = fmul double %1947, 0x3FE45F306DC9C883 %1976 = call i32 @llvm.nvvm.d2i.rn(double %1975) #139 store i32 %1976, i32* %q.i.i.i.i.i.i320, align 4, !noalias !68 %1977 = sitofp i32 %1976 to double %1978 = fneg double %1977 %1979 = call double @llvm.fma.f64(double %1978, double noundef 0x3FF921FB54442D18, double %1947) %1980 = call double @llvm.fma.f64(double %1978, double noundef 0x3C91A62633145C00, double %1979) %1981 = call double @llvm.fma.f64(double %1978, double noundef 0x397B839A252049C0, double %1980) %1982 = call double @llvm.fabs.f64(double %1947) %1983 = fcmp ult double %1982, 0x41E0000000000000 br i1 %1983, label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399, label %1984 1984: ; preds = %1974 %1985 = call fastcc double @__internal_trig_reduction_slowpathd(double %1947, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i.i320) #139 %.pre86 = load i32, i32* %q.i.i.i.i.i.i320, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399 __internal_trig_reduction_kerneld.exit.i.i.i.i.i399: ; preds = %1974, %1984, %1972 %i.i.i.i.i.i327.0 = phi i32 [ 0, %1972 ], [ %.pre86, %1984 ], [ %1976, %1974 ] %.053 = phi double [ %1973, %1972 ], [ %1985, %1984 ], [ %1981, %1974 ] %1986 = fmul double %.053, %.053 %1987 = call double @llvm.fma.f64(double %1986, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %1988 = call double @llvm.fma.f64(double %1987, double %1986, double noundef 0xBE927E4F8E06E6D9) %1989 = call double @llvm.fma.f64(double %1988, double %1986, double noundef 0x3EFA01A019DDBCE9) %1990 = call double @llvm.fma.f64(double %1989, double %1986, double noundef 0xBF56C16C16C15D47) %1991 = call double @llvm.fma.f64(double %1990, double %1986, double noundef 0x3FA5555555555551) %1992 = call double @llvm.fma.f64(double %1991, double %1986, double noundef -5.000000e-01) %1993 = call double @llvm.fma.f64(double %1992, double %1986, double noundef 1.000000e+00) %1994 = call double @llvm.fma.f64(double %1986, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %1995 = call double @llvm.fma.f64(double %1994, double %1986, double noundef 0x3EC71DE369ACE392) %1996 = call double @llvm.fma.f64(double %1995, double %1986, double noundef 0xBF2A01A019DB62A1) %1997 = call double @llvm.fma.f64(double %1996, double %1986, double noundef 0x3F81111111110818) %1998 = call double @llvm.fma.f64(double %1997, double %1986, double noundef 0xBFC5555555555554) %1999 = call double @llvm.fma.f64(double %1998, double %1986, double noundef 0.000000e+00) %2000 = call double @llvm.fma.f64(double %1999, double %.053, double %.053) %2001 = call i32 @llvm.nvvm.d2i.hi(double %2000) #139 %2002 = call i32 @llvm.nvvm.d2i.lo(double %2000) #139 %2003 = xor i32 %2001, -2147483648 %2004 = call double @llvm.nvvm.lohi.i2d(i32 %2002, i32 %2003) #139 %2005 = and i32 %i.i.i.i.i.i327.0, 1 %.not41 = icmp eq i32 %2005, 0 %spec.select21 = select i1 %.not41, double %1993, double %2004 %2006 = and i32 %i.i.i.i.i.i327.0, 2 %.not42 = icmp eq i32 %2006, 0 br i1 %.not42, label %__internal_cos_offset.exit.i.i404, label %2007 2007: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399 %2008 = call i32 @llvm.nvvm.d2i.hi(double %spec.select21) #139 %2009 = call i32 @llvm.nvvm.d2i.lo(double %spec.select21) #139 %2010 = xor i32 %2008, -2147483648 %2011 = call double @llvm.nvvm.lohi.i2d(i32 %2009, i32 %2010) #139 br label %__internal_cos_offset.exit.i.i404 2012: ; preds = %1950 %2013 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2014 = icmp eq i32 %2013, 200 br i1 %2014, label %2021, label %2015 2015: ; preds = %2012 %2016 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2017 = icmp eq i32 %2016, 350 br i1 %2017, label %2021, label %2018 2018: ; preds = %2015 %2019 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2020 = icmp eq i32 %2019, 370 br i1 %2020, label %2021, label %2024 2021: ; preds = %2018, %2015, %2012 %2022 = call double @llvm.fabs.f64(double %1947) %2023 = fcmp oeq double %2022, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i21.i401 2024: ; preds = %2018 %2025 = call i32 @llvm.nvvm.d2i.lo(double %1947) #139 %2026 = call i32 @llvm.nvvm.d2i.hi(double %1947) #139 %2027 = and i32 %2026, 2147483647 %2028 = icmp eq i32 %2027, 2146435072 %2029 = icmp eq i32 %2025, 0 %2030 = select i1 %2028, i1 %2029, i1 false br label %__nv_isinfd.exit.i.i.i21.i401 __nv_isinfd.exit.i.i.i21.i401: ; preds = %2024, %2021 %.055.in = phi i1 [ %2023, %2021 ], [ %2030, %2024 ] br i1 %.055.in, label %2031, label %2033 2031: ; preds = %__nv_isinfd.exit.i.i.i21.i401 %2032 = fmul double %1947, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i.i403 2033: ; preds = %__nv_isinfd.exit.i.i.i21.i401 %2034 = fmul double %1947, 0x3FE45F306DC9C883 %2035 = call i32 @llvm.nvvm.d2i.rn(double %2034) #139 store i32 %2035, i32* %q.i.i.i.i5.i304, align 4, !noalias !68 %2036 = sitofp i32 %2035 to double %2037 = fneg double %2036 %2038 = call double @llvm.fma.f64(double %2037, double noundef 0x3FF921FB54442D18, double %1947) %2039 = call double @llvm.fma.f64(double %2037, double noundef 0x3C91A62633145C00, double %2038) %2040 = call double @llvm.fma.f64(double %2037, double noundef 0x397B839A252049C0, double %2039) %2041 = call double @llvm.fabs.f64(double %1947) %2042 = fcmp ult double %2041, 0x41E0000000000000 br i1 %2042, label %__internal_trig_reduction_kerneld.exit.i.i.i22.i402, label %2043 2043: ; preds = %2033 %2044 = call fastcc double @__internal_trig_reduction_slowpathd(double %1947, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i5.i304) #139 %.pre85 = load i32, i32* %q.i.i.i.i5.i304, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 __internal_trig_reduction_kerneld.exit.i.i.i22.i402: ; preds = %2043, %2033 %2045 = phi i32 [ %.pre85, %2043 ], [ %2035, %2033 ] %t.i1.i.i.i.i303.0 = phi double [ %2044, %2043 ], [ %2040, %2033 ] %phi.bo37 = add i32 %2045, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i.i403 __internal_sin_cos_kerneld.exit.i.i.i.i403: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i22.i402, %2031 %i.i.i.i13.i331.0 = phi i32 [ 1, %2031 ], [ %phi.bo37, %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 ] %z.i.i.i12.i330.0 = phi double [ %2032, %2031 ], [ %t.i1.i.i.i.i303.0, %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 ] %2046 = shl i32 %i.i.i.i13.i331.0, 3 %2047 = and i32 %2046, 8 %2048 = zext i32 %2047 to i64 %2049 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %2048 %2050 = fmul double %z.i.i.i12.i330.0, %z.i.i.i12.i330.0 %2051 = and i32 %i.i.i.i13.i331.0, 1 %.not38 = icmp eq i32 %2051, 0 %2052 = select i1 %.not38, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %2053 = getelementptr inbounds double, double addrspace(1)* %2049, i64 1 %2054 = load double, double addrspace(1)* %2053, align 8 %2055 = call double @llvm.fma.f64(double noundef %2052, double %2050, double %2054) %2056 = getelementptr inbounds double, double addrspace(1)* %2049, i64 2 %2057 = load double, double addrspace(1)* %2056, align 8 %2058 = call double @llvm.fma.f64(double %2055, double %2050, double %2057) %2059 = getelementptr inbounds double, double addrspace(1)* %2049, i64 3 %2060 = load double, double addrspace(1)* %2059, align 8 %2061 = call double @llvm.fma.f64(double %2058, double %2050, double %2060) %2062 = getelementptr inbounds double, double addrspace(1)* %2049, i64 4 %2063 = load double, double addrspace(1)* %2062, align 8 %2064 = call double @llvm.fma.f64(double %2061, double %2050, double %2063) %2065 = getelementptr inbounds double, double addrspace(1)* %2049, i64 5 %2066 = load double, double addrspace(1)* %2065, align 8 %2067 = call double @llvm.fma.f64(double %2064, double %2050, double %2066) %2068 = getelementptr inbounds double, double addrspace(1)* %2049, i64 6 %2069 = load double, double addrspace(1)* %2068, align 8 %2070 = call double @llvm.fma.f64(double %2067, double %2050, double %2069) %2071 = call double @llvm.fma.f64(double %2070, double %z.i.i.i12.i330.0, double %z.i.i.i12.i330.0) %2072 = call double @llvm.fma.f64(double %2070, double %2050, double noundef 1.000000e+00) %spec.select22 = select i1 %.not38, double %2071, double %2072 %2073 = and i32 %i.i.i.i13.i331.0, 2 %.not40 = icmp eq i32 %2073, 0 %2074 = call double @llvm.fma.f64(double %spec.select22, double noundef -1.000000e+00, double noundef 0.000000e+00) %.157 = select i1 %.not40, double %spec.select22, double %2074 br label %__internal_cos_offset.exit.i.i404 __internal_cos_offset.exit.i.i404: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399, %2007, %__internal_sin_cos_kerneld.exit.i.i.i.i403 %.051 = phi double [ %.157, %__internal_sin_cos_kerneld.exit.i.i.i.i403 ], [ %2011, %2007 ], [ %spec.select21, %__internal_trig_reduction_kerneld.exit.i.i.i.i.i399 ] %2075 = fmul double %1930, %.051 br label %__nv_j1.exit.i405 __nv_j1.exit.i405: ; preds = %1846, %__internal_cos_offset.exit.i.i404, %__nv_isinfd.exit.i.i396, %1867, %1827 %r.i.i340.3 = phi double [ %1843, %1827 ], [ %1864, %1846 ], [ %1885, %1867 ], [ %2075, %__internal_cos_offset.exit.i.i404 ], [ 0.000000e+00, %__nv_isinfd.exit.i.i396 ] %2076 = fcmp olt double %1, 1.000000e-30 %2077 = fmul double %1, 5.000000e-01 %r.i.i340.5 = select i1 %2076, double %2077, double %r.i.i340.3 %2078 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %2079 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %2080 = icmp slt i32 %2078, 1048576 br i1 %2080, label %2081, label %2085 2081: ; preds = %__nv_j1.exit.i405 %2082 = fmul double %1, 0x4350000000000000 %2083 = call i32 @llvm.nvvm.d2i.hi(double %2082) #139 %2084 = call i32 @llvm.nvvm.d2i.lo(double %2082) #139 br label %2085 2085: ; preds = %2081, %__nv_j1.exit.i405 %.059 = phi double [ %2082, %2081 ], [ %1, %__nv_j1.exit.i405 ] %ihi.i.i291.0 = phi i32 [ %2083, %2081 ], [ %2078, %__nv_j1.exit.i405 ] %ilo.i.i292.0 = phi i32 [ %2084, %2081 ], [ %2079, %__nv_j1.exit.i405 ] %e.i.i293.0 = phi i32 [ -1077, %2081 ], [ -1023, %__nv_j1.exit.i405 ] %2086 = add i32 %ihi.i.i291.0, -1 %2087 = icmp ult i32 %2086, 2146435071 br i1 %2087, label %2088, label %2137 2088: ; preds = %2085 %2089 = lshr i32 %ihi.i.i291.0, 20 %2090 = add nsw i32 %e.i.i293.0, %2089 %2091 = and i32 %ihi.i.i291.0, -2146435073 %2092 = or i32 %2091, 1072693248 %2093 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i292.0, i32 %2092) #139 %2094 = icmp sgt i32 %2092, 1073127582 br i1 %2094, label %2095, label %2101 2095: ; preds = %2088 %2096 = call i32 @llvm.nvvm.d2i.lo(double %2093) #139 %2097 = call i32 @llvm.nvvm.d2i.hi(double %2093) #139 %2098 = add i32 %2097, -1048576 %2099 = call double @llvm.nvvm.lohi.i2d(i32 %2096, i32 %2098) #139 %2100 = add nsw i32 %2090, 1 br label %2101 2101: ; preds = %2095, %2088 %m.i.i281.0 = phi double [ %2099, %2095 ], [ %2093, %2088 ] %e.i.i293.1 = phi i32 [ %2100, %2095 ], [ %2090, %2088 ] %2102 = fadd double %m.i.i281.0, -1.000000e+00 %2103 = fadd double %m.i.i281.0, 1.000000e+00 %2104 = call double @llvm.nvvm.rcp.approx.ftz.d(double %2103) #139 %2105 = fneg double %2103 %2106 = call double @llvm.fma.f64(double %2105, double %2104, double noundef 1.000000e+00) %2107 = call double @llvm.fma.f64(double %2106, double %2106, double %2106) %2108 = call double @llvm.fma.f64(double %2107, double %2104, double %2104) %2109 = fmul double %2102, %2108 %2110 = fadd double %2109, %2109 %2111 = fmul double %2110, %2110 %2112 = call double @llvm.fma.f64(double %2111, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %2113 = call double @llvm.fma.f64(double %2112, double %2111, double noundef 0x3EF3B2669F02676F) %2114 = call double @llvm.fma.f64(double %2113, double %2111, double noundef 0x3F1745CBA9AB0956) %2115 = call double @llvm.fma.f64(double %2114, double %2111, double noundef 0x3F3C71C72D1B5154) %2116 = call double @llvm.fma.f64(double %2115, double %2111, double noundef 0x3F624924923BE72D) %2117 = call double @llvm.fma.f64(double %2116, double %2111, double noundef 0x3F8999999999A3C4) %2118 = call double @llvm.fma.f64(double %2117, double %2111, double noundef 0x3FB5555555555554) %2119 = fsub double %2102, %2110 %2120 = fmul double %2119, 2.000000e+00 %2121 = fneg double %2110 %2122 = call double @llvm.fma.f64(double %2121, double %2102, double %2120) %2123 = fmul double %2108, %2122 %2124 = fmul double %2111, %2118 %2125 = call double @llvm.fma.f64(double %2124, double %2110, double %2123) %2126 = xor i32 %e.i.i293.1, -2147483648 %2127 = call double @llvm.nvvm.lohi.i2d(i32 %2126, i32 noundef 1127219200) #139 %2128 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %2129 = fsub double %2127, %2128 %2130 = call double @llvm.fma.f64(double %2129, double noundef 0x3FE62E42FEFA39EF, double %2110) %2131 = fneg double %2129 %2132 = call double @llvm.fma.f64(double %2131, double noundef 0x3FE62E42FEFA39EF, double %2130) %2133 = fsub double %2132, %2110 %2134 = fsub double %2125, %2133 %2135 = call double @llvm.fma.f64(double %2129, double noundef 0x3C7ABC9E3B39803F, double %2134) %2136 = fadd double %2130, %2135 br label %__nv_log.exit.i406 2137: ; preds = %2085 %2138 = call double @llvm.fma.f64(double %.059, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %2139 = call i32 @llvm.nvvm.d2i.hi(double %.059) #139 %2140 = bitcast i32 %2139 to float %2141 = fcmp oeq float %2140, 0.000000e+00 %q.i28.i287.0 = select i1 %2141, double 0xFFF0000000000000, double %2138 br label %__nv_log.exit.i406 __nv_log.exit.i406: ; preds = %2137, %2101 %q.i28.i287.1 = phi double [ %2136, %2101 ], [ %q.i28.i287.0, %2137 ] %2142 = fmul double %r.i.i340.5, %q.i28.i287.1 %2143 = fdiv double 1.000000e+00, %1 %2144 = fsub double %2142, %2143 %2145 = fmul double %2144, 0x3FE45F306DC9C883 %2146 = fadd double %1825, %2145 br label %2413 2147: ; preds = %1814 %2148 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %2148, label %2176, label %2149 2149: ; preds = %2147 %2150 = fadd double %1, 0xC00193BED4DFF243 %2151 = fadd double %2150, 0x3C8BD1E50D219BFD %2152 = call double @llvm.fma.f64(double %2151, double noundef 0xBE2B87B0BE2AA150, double noundef 0x3E4833AAE4D8B975) %2153 = call double @llvm.fma.f64(double %2152, double %2151, double noundef 0xBE44E279B423E68F) %2154 = call double @llvm.fma.f64(double %2153, double %2151, double noundef 0x3E129DC6A747EB4F) %2155 = call double @llvm.fma.f64(double %2154, double %2151, double noundef 0xBE61D15534496CD8) %2156 = call double @llvm.fma.f64(double %2155, double %2151, double noundef 0x3E7EEC8D48FECE00) %2157 = call double @llvm.fma.f64(double %2156, double %2151, double noundef 0xBE8D1180AF70A134) %2158 = call double @llvm.fma.f64(double %2157, double %2151, double noundef 0x3E9C8386A0EA1388) %2159 = call double @llvm.fma.f64(double %2158, double %2151, double noundef 0xBEB01A014E7F3250) %2160 = call double @llvm.fma.f64(double %2159, double %2151, double noundef 0x3EC1FB752010A320) %2161 = call double @llvm.fma.f64(double %2160, double %2151, double noundef 0xBED3AA0AFF4E332B) %2162 = call double @llvm.fma.f64(double %2161, double %2151, double noundef 0x3EE584A6C77F6700) %2163 = call double @llvm.fma.f64(double %2162, double %2151, double noundef 0xBEF794C520FC2EBB) %2164 = call double @llvm.fma.f64(double %2163, double %2151, double noundef 0x3F09D18D2D35CC71) %2165 = call double @llvm.fma.f64(double %2164, double %2151, double noundef 0xBF1C3FB7315C4599) %2166 = call double @llvm.fma.f64(double %2165, double %2151, double noundef 0x3F2EEA7ADECCE927) %2167 = call double @llvm.fma.f64(double %2166, double %2151, double noundef 0xBF40B2D85257446F) %2168 = call double @llvm.fma.f64(double %2167, double %2151, double noundef 0x3F517AB4B1FE5D5B) %2169 = call double @llvm.fma.f64(double %2168, double %2151, double noundef 0xBF65429DC6516C0D) %2170 = call double @llvm.fma.f64(double %2169, double %2151, double noundef 0x3F7E671C7D0B090B) %2171 = call double @llvm.fma.f64(double %2170, double %2151, double noundef 0xBF73A6DEC36FB27C) %2172 = call double @llvm.fma.f64(double %2171, double %2151, double noundef 0xBFA0D2AF4E931FD1) %2173 = call double @llvm.fma.f64(double %2172, double %2151, double noundef 0xBFBE56F82217B964) %2174 = call double @llvm.fma.f64(double %2173, double %2151, double noundef 0x3FE0AA48442F014B) %2175 = fmul double %2151, %2174 br label %2413 2176: ; preds = %2147 %2177 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %2177, label %2202, label %2178 2178: ; preds = %2176 %2179 = fadd double %1, 0xC015B7FE4E87B02E %2180 = fadd double %2179, 0xBCBDFE7BAC228E8C %2181 = call double @llvm.fma.f64(double %2180, double noundef 0x3CBA3C76069F1D8C, double noundef 0x3CC69A30996793E2) %2182 = call double @llvm.fma.f64(double %2181, double %2180, double noundef 0xBCDDD8432FE756E7) %2183 = call double @llvm.fma.f64(double %2182, double %2180, double noundef 0xBD143158EEE220F7) %2184 = call double @llvm.fma.f64(double %2183, double %2180, double noundef 0x3D28D44491230F5A) %2185 = call double @llvm.fma.f64(double %2184, double %2180, double noundef 0xBD438842EAF4EDBC) %2186 = call double @llvm.fma.f64(double %2185, double %2180, double noundef 0x3D74958DAFBFAF5A) %2187 = call double @llvm.fma.f64(double %2186, double %2180, double noundef 0xBD9449A60E664848) %2188 = call double @llvm.fma.f64(double %2187, double %2180, double noundef 0x3D838BC8CD594A76) %2189 = call double @llvm.fma.f64(double %2188, double %2180, double noundef 0xBDFA798002141323) %2190 = call double @llvm.fma.f64(double %2189, double %2180, double noundef 0x3E380B4198956AAA) %2191 = call double @llvm.fma.f64(double %2190, double %2180, double noundef 0x3E5B62B5F21BACD4) %2192 = call double @llvm.fma.f64(double %2191, double %2180, double noundef 0xBEA255E729FB6AAE) %2193 = call double @llvm.fma.f64(double %2192, double %2180, double noundef 0xBEC80618F6BAE5AA) %2194 = call double @llvm.fma.f64(double %2193, double %2180, double noundef 0x3F085B940F8E8D36) %2195 = call double @llvm.fma.f64(double %2194, double %2180, double noundef 0x3F2337C7E10E14E8) %2196 = call double @llvm.fma.f64(double %2195, double %2180, double noundef 0xBF61BE6DB99332CA) %2197 = call double @llvm.fma.f64(double %2196, double %2180, double noundef 0xBF710A329E2BE9B8) %2198 = call double @llvm.fma.f64(double %2197, double %2180, double noundef 0x3FAA15D92DFE3FCF) %2199 = call double @llvm.fma.f64(double %2198, double %2180, double noundef 0x3FA00B9F8571C9BE) %2200 = call double @llvm.fma.f64(double %2199, double %2180, double noundef 0xBFD5C7C556F0C19A) %2201 = fmul double %2180, %2200 br label %2413 2202: ; preds = %2176 %2203 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %2203, label %2223, label %2204 2204: ; preds = %2202 %2205 = fadd double %1, 0xC0213127AE6169B4 %2206 = fadd double %2205, 0xBCB479CC068D9046 %2207 = call double @llvm.fma.f64(double %2206, double noundef 0x3CB09CCC22945996, double noundef 0xBD43515F67644276) %2208 = call double @llvm.fma.f64(double %2207, double %2206, double noundef 0xBD72C5B978E9F5C7) %2209 = call double @llvm.fma.f64(double %2208, double %2206, double noundef 0x3DBEC1151613913C) %2210 = call double @llvm.fma.f64(double %2209, double %2206, double noundef 0x3DE9E38D13C4A824) %2211 = call double @llvm.fma.f64(double %2210, double %2206, double noundef 0xBE341E75E1088EB5) %2212 = call double @llvm.fma.f64(double %2211, double %2206, double noundef 0xBE5A384EBB13CFE1) %2213 = call double @llvm.fma.f64(double %2212, double %2206, double noundef 0x3EA2BECB27F8C8F8) %2214 = call double @llvm.fma.f64(double %2213, double %2206, double noundef 0x3EC176E72B989FD8) %2215 = call double @llvm.fma.f64(double %2214, double %2206, double noundef 0xBF06F7BAB102F822) %2216 = call double @llvm.fma.f64(double %2215, double %2206, double noundef 0xBF1B50D7E1D278E1) %2217 = call double @llvm.fma.f64(double %2216, double %2206, double noundef 0x3F607A678D60004F) %2218 = call double @llvm.fma.f64(double %2217, double %2206, double noundef 0x3F63CED2A2E69115) %2219 = call double @llvm.fma.f64(double %2218, double %2206, double noundef 0xBFA6395DFE49FCD4) %2220 = call double @llvm.fma.f64(double %2219, double %2206, double noundef 0xBF902B3933CF21B1) %2221 = call double @llvm.fma.f64(double %2220, double %2206, double noundef 0x3FD15F993FCEAB5C) %2222 = fmul double %2206, %2221 br label %2413 2223: ; preds = %2202 %2224 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2225 = icmp eq i32 %2224, 200 br i1 %2225, label %2232, label %2226 2226: ; preds = %2223 %2227 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2228 = icmp eq i32 %2227, 350 br i1 %2228, label %2232, label %2229 2229: ; preds = %2226 %2230 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2231 = icmp eq i32 %2230, 370 br i1 %2231, label %2232, label %2234 2232: ; preds = %2229, %2226, %2223 %2233 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit.i407 2234: ; preds = %2229 %2235 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %2236 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %2237 = and i32 %2236, 2147483647 %2238 = icmp eq i32 %2237, 2146435072 %2239 = icmp eq i32 %2235, 0 %2240 = select i1 %2238, i1 %2239, i1 false br label %__nv_isinfd.exit.i407 __nv_isinfd.exit.i407: ; preds = %2234, %2232 %.052.in = phi i1 [ %2233, %2232 ], [ %2240, %2234 ] br i1 %.052.in, label %2413, label %2241 2241: ; preds = %__nv_isinfd.exit.i407 %2242 = call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #139 %2243 = fneg double %1 %2244 = call double @llvm.fma.f64(double %2243, double %2242, double noundef 1.000000e+00) %2245 = call double @llvm.fma.f64(double %2244, double %2244, double %2244) %2246 = call double @llvm.fma.f64(double %2245, double %2242, double %2242) %2247 = fmul double %2246, %2246 %2248 = call double @llvm.fma.f64(double %2247, double noundef 0x40D13DB326ECEBFE, double noundef 0xC09C26E89385D5B1) %2249 = call double @llvm.fma.f64(double %2248, double %2247, double noundef 0x405C6AB923C6F55E) %2250 = call double @llvm.fma.f64(double %2249, double %2247, double noundef 0xC01E61EAF3BD2FA1) %2251 = call double @llvm.fma.f64(double %2250, double %2247, double noundef 0x3FE9BF15D9B97DD1) %2252 = call double @llvm.fma.f64(double %2251, double %2247, double noundef 0xBFC8BFECF93D7D19) %2253 = call double @llvm.fma.f64(double %2252, double %2247, double noundef 0x3FC7FFFFF756AA6C) %2254 = call double @llvm.fma.f64(double %2253, double %2247, double noundef 0x3FF0000000003646) %2255 = call double @llvm.fma.f64(double %2247, double noundef 0xC1943281A050209C, double noundef 0x416024E99BA46E7B) %2256 = call double @llvm.fma.f64(double %2255, double %2247, double noundef 0xC11A6875D7DFBD65) %2257 = call double @llvm.fma.f64(double %2256, double %2247, double noundef 0x40D032C041790233) %2258 = call double @llvm.fma.f64(double %2257, double %2247, double noundef 0xC0839F895BC22946) %2259 = call double @llvm.fma.f64(double %2258, double %2247, double noundef 0x403E77CC78ECD2D8) %2260 = call double @llvm.fma.f64(double %2259, double %2247, double noundef 0xC002F368D0117BE9) %2261 = call double @llvm.fma.f64(double %2260, double %2247, double noundef 0x3FD7BCC786009A25) %2262 = call double @llvm.fma.f64(double %2261, double %2247, double noundef 0xBFC4FFFFFC51BC7A) %2263 = call double @llvm.fma.f64(double %2262, double %2247, double noundef 0x3FD7FFFFFFFFB5EA) %2264 = call double @llvm.fma.f64(double %2263, double %2246, double %1) %2265 = call double @llvm.nvvm.rsqrt.approx.d(double %1) #139 %2266 = fmul double %2265, 0x3FE9884533D43651 %2267 = fmul double %2266, %2254 %2268 = fmul double %2264, 0x3FE45F306DC9C883 %2269 = call i32 @llvm.nvvm.d2i.rn(double %2268) #139 store i32 %2269, i32* %q.i.i.i381, align 4, !noalias !68 %2270 = sitofp i32 %2269 to double %2271 = fneg double %2270 %2272 = call double @llvm.fma.f64(double %2271, double noundef 0x3FF921FB54442D18, double %2264) %2273 = call double @llvm.fma.f64(double %2271, double noundef 0x3C91A62633145C00, double %2272) %2274 = call double @llvm.fma.f64(double %2271, double noundef 0x397B839A252049C0, double %2273) %2275 = call double @llvm.fabs.f64(double %2264) %2276 = fcmp ult double %2275, 0x41E0000000000000 br i1 %2276, label %__internal_trig_reduction_kerneld.exit.i.i408, label %2277 2277: ; preds = %2241 %2278 = call fastcc double @__internal_trig_reduction_slowpathd(double %2264, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i381) #139 %.pre87 = load i32, i32* %q.i.i.i381, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i408 __internal_trig_reduction_kerneld.exit.i.i408: ; preds = %2277, %2241 %2279 = phi i32 [ %.pre87, %2277 ], [ %2269, %2241 ] %t.i.i.i380.0 = phi double [ %2278, %2277 ], [ %2274, %2241 ] %2280 = and i32 %2279, 3 %2281 = uitofp i32 %2280 to double %2282 = fadd double %t.i.i.i380.0, 0xC00F6A7A2955385E %2283 = fmul double %2281, 0x3FF921FB54442D18 %2284 = fadd double %2282, %2283 %2285 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2286 = icmp eq i32 %2285, 350 br i1 %2286, label %2290, label %2287 2287: ; preds = %__internal_trig_reduction_kerneld.exit.i.i408 %2288 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2289 = icmp eq i32 %2288, 370 br i1 %2289, label %2290, label %2349 2290: ; preds = %2287, %__internal_trig_reduction_kerneld.exit.i.i408 %2291 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2292 = icmp eq i32 %2291, 200 br i1 %2292, label %2299, label %2293 2293: ; preds = %2290 %2294 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2295 = icmp eq i32 %2294, 350 br i1 %2295, label %2299, label %2296 2296: ; preds = %2293 %2297 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2298 = icmp eq i32 %2297, 370 br i1 %2298, label %2299, label %2302 2299: ; preds = %2296, %2293, %2290 %2300 = call double @llvm.fabs.f64(double %2284) %2301 = fcmp oeq double %2300, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i409 2302: ; preds = %2296 %2303 = call i32 @llvm.nvvm.d2i.lo(double %2284) #139 %2304 = call i32 @llvm.nvvm.d2i.hi(double %2284) #139 %2305 = and i32 %2304, 2147483647 %2306 = icmp eq i32 %2305, 2146435072 %2307 = icmp eq i32 %2303, 0 %2308 = select i1 %2306, i1 %2307, i1 false br label %__nv_isinfd.exit.i.i.i.i409 __nv_isinfd.exit.i.i.i.i409: ; preds = %2302, %2299 %.047.in = phi i1 [ %2301, %2299 ], [ %2308, %2302 ] br i1 %.047.in, label %2309, label %2311 2309: ; preds = %__nv_isinfd.exit.i.i.i.i409 %2310 = fmul double %2284, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i410 2311: ; preds = %__nv_isinfd.exit.i.i.i.i409 %2312 = fmul double %2284, 0x3FE45F306DC9C883 %2313 = call i32 @llvm.nvvm.d2i.rn(double %2312) #139 store i32 %2313, i32* %q.i.i.i.i.i367, align 4, !noalias !68 %2314 = sitofp i32 %2313 to double %2315 = fneg double %2314 %2316 = call double @llvm.fma.f64(double %2315, double noundef 0x3FF921FB54442D18, double %2284) %2317 = call double @llvm.fma.f64(double %2315, double noundef 0x3C91A62633145C00, double %2316) %2318 = call double @llvm.fma.f64(double %2315, double noundef 0x397B839A252049C0, double %2317) %2319 = call double @llvm.fabs.f64(double %2284) %2320 = fcmp ult double %2319, 0x41E0000000000000 br i1 %2320, label %__internal_trig_reduction_kerneld.exit.i.i.i.i410, label %2321 2321: ; preds = %2311 %2322 = call fastcc double @__internal_trig_reduction_slowpathd(double %2284, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i367) #139 %.pre89 = load i32, i32* %q.i.i.i.i.i367, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i410 __internal_trig_reduction_kerneld.exit.i.i.i.i410: ; preds = %2311, %2321, %2309 %i.i.i.i.i374.0 = phi i32 [ 0, %2309 ], [ %.pre89, %2321 ], [ %2313, %2311 ] %.046 = phi double [ %2310, %2309 ], [ %2322, %2321 ], [ %2318, %2311 ] %2323 = fmul double %.046, %.046 %2324 = call double @llvm.fma.f64(double %2323, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %2325 = call double @llvm.fma.f64(double %2324, double %2323, double noundef 0xBE927E4F8E06E6D9) %2326 = call double @llvm.fma.f64(double %2325, double %2323, double noundef 0x3EFA01A019DDBCE9) %2327 = call double @llvm.fma.f64(double %2326, double %2323, double noundef 0xBF56C16C16C15D47) %2328 = call double @llvm.fma.f64(double %2327, double %2323, double noundef 0x3FA5555555555551) %2329 = call double @llvm.fma.f64(double %2328, double %2323, double noundef -5.000000e-01) %2330 = call double @llvm.fma.f64(double %2329, double %2323, double noundef 1.000000e+00) %2331 = call double @llvm.fma.f64(double %2323, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %2332 = call double @llvm.fma.f64(double %2331, double %2323, double noundef 0x3EC71DE369ACE392) %2333 = call double @llvm.fma.f64(double %2332, double %2323, double noundef 0xBF2A01A019DB62A1) %2334 = call double @llvm.fma.f64(double %2333, double %2323, double noundef 0x3F81111111110818) %2335 = call double @llvm.fma.f64(double %2334, double %2323, double noundef 0xBFC5555555555554) %2336 = call double @llvm.fma.f64(double %2335, double %2323, double noundef 0.000000e+00) %2337 = call double @llvm.fma.f64(double %2336, double %.046, double %.046) %2338 = call i32 @llvm.nvvm.d2i.hi(double %2337) #139 %2339 = call i32 @llvm.nvvm.d2i.lo(double %2337) #139 %2340 = xor i32 %2338, -2147483648 %2341 = call double @llvm.nvvm.lohi.i2d(i32 %2339, i32 %2340) #139 %2342 = and i32 %i.i.i.i.i374.0, 1 %.not35 = icmp eq i32 %2342, 0 %spec.select25 = select i1 %.not35, double %2330, double %2341 %2343 = and i32 %i.i.i.i.i374.0, 2 %.not36 = icmp eq i32 %2343, 0 br i1 %.not36, label %__internal_cos_offset.exit.i415, label %2344 2344: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i410 %2345 = call i32 @llvm.nvvm.d2i.hi(double %spec.select25) #139 %2346 = call i32 @llvm.nvvm.d2i.lo(double %spec.select25) #139 %2347 = xor i32 %2345, -2147483648 %2348 = call double @llvm.nvvm.lohi.i2d(i32 %2346, i32 %2347) #139 br label %__internal_cos_offset.exit.i415 2349: ; preds = %2287 %2350 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2351 = icmp eq i32 %2350, 200 br i1 %2351, label %2358, label %2352 2352: ; preds = %2349 %2353 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2354 = icmp eq i32 %2353, 350 br i1 %2354, label %2358, label %2355 2355: ; preds = %2352 %2356 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2357 = icmp eq i32 %2356, 370 br i1 %2357, label %2358, label %2361 2358: ; preds = %2355, %2352, %2349 %2359 = call double @llvm.fabs.f64(double %2284) %2360 = fcmp oeq double %2359, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i412 2361: ; preds = %2355 %2362 = call i32 @llvm.nvvm.d2i.lo(double %2284) #139 %2363 = call i32 @llvm.nvvm.d2i.hi(double %2284) #139 %2364 = and i32 %2363, 2147483647 %2365 = icmp eq i32 %2364, 2146435072 %2366 = icmp eq i32 %2362, 0 %2367 = select i1 %2365, i1 %2366, i1 false br label %__nv_isinfd.exit.i.i.i412 __nv_isinfd.exit.i.i.i412: ; preds = %2361, %2358 %.048.in = phi i1 [ %2360, %2358 ], [ %2367, %2361 ] br i1 %.048.in, label %2368, label %2370 2368: ; preds = %__nv_isinfd.exit.i.i.i412 %2369 = fmul double %2284, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i414 2370: ; preds = %__nv_isinfd.exit.i.i.i412 %2371 = fmul double %2284, 0x3FE45F306DC9C883 %2372 = call i32 @llvm.nvvm.d2i.rn(double %2371) #139 store i32 %2372, i32* %q.i.i.i.i351, align 4, !noalias !68 %2373 = sitofp i32 %2372 to double %2374 = fneg double %2373 %2375 = call double @llvm.fma.f64(double %2374, double noundef 0x3FF921FB54442D18, double %2284) %2376 = call double @llvm.fma.f64(double %2374, double noundef 0x3C91A62633145C00, double %2375) %2377 = call double @llvm.fma.f64(double %2374, double noundef 0x397B839A252049C0, double %2376) %2378 = call double @llvm.fabs.f64(double %2284) %2379 = fcmp ult double %2378, 0x41E0000000000000 br i1 %2379, label %__internal_trig_reduction_kerneld.exit.i.i.i413, label %2380 2380: ; preds = %2370 %2381 = call fastcc double @__internal_trig_reduction_slowpathd(double %2284, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i351) #139 %.pre88 = load i32, i32* %q.i.i.i.i351, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i413 __internal_trig_reduction_kerneld.exit.i.i.i413: ; preds = %2380, %2370 %2382 = phi i32 [ %.pre88, %2380 ], [ %2372, %2370 ] %t.i1.i.i.i350.0 = phi double [ %2381, %2380 ], [ %2377, %2370 ] %phi.bo = add i32 %2382, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i414 __internal_sin_cos_kerneld.exit.i.i.i414: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i413, %2368 %i.i.i.i378.0 = phi i32 [ 1, %2368 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i.i413 ] %z.i.i.i377.0 = phi double [ %2369, %2368 ], [ %t.i1.i.i.i350.0, %__internal_trig_reduction_kerneld.exit.i.i.i413 ] %2383 = shl i32 %i.i.i.i378.0, 3 %2384 = and i32 %2383, 8 %2385 = zext i32 %2384 to i64 %2386 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %2385 %2387 = fmul double %z.i.i.i377.0, %z.i.i.i377.0 %2388 = and i32 %i.i.i.i378.0, 1 %.not32 = icmp eq i32 %2388, 0 %2389 = select i1 %.not32, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %2390 = getelementptr inbounds double, double addrspace(1)* %2386, i64 1 %2391 = load double, double addrspace(1)* %2390, align 8 %2392 = call double @llvm.fma.f64(double noundef %2389, double %2387, double %2391) %2393 = getelementptr inbounds double, double addrspace(1)* %2386, i64 2 %2394 = load double, double addrspace(1)* %2393, align 8 %2395 = call double @llvm.fma.f64(double %2392, double %2387, double %2394) %2396 = getelementptr inbounds double, double addrspace(1)* %2386, i64 3 %2397 = load double, double addrspace(1)* %2396, align 8 %2398 = call double @llvm.fma.f64(double %2395, double %2387, double %2397) %2399 = getelementptr inbounds double, double addrspace(1)* %2386, i64 4 %2400 = load double, double addrspace(1)* %2399, align 8 %2401 = call double @llvm.fma.f64(double %2398, double %2387, double %2400) %2402 = getelementptr inbounds double, double addrspace(1)* %2386, i64 5 %2403 = load double, double addrspace(1)* %2402, align 8 %2404 = call double @llvm.fma.f64(double %2401, double %2387, double %2403) %2405 = getelementptr inbounds double, double addrspace(1)* %2386, i64 6 %2406 = load double, double addrspace(1)* %2405, align 8 %2407 = call double @llvm.fma.f64(double %2404, double %2387, double %2406) %2408 = call double @llvm.fma.f64(double %2407, double %z.i.i.i377.0, double %z.i.i.i377.0) %2409 = call double @llvm.fma.f64(double %2407, double %2387, double noundef 1.000000e+00) %spec.select26 = select i1 %.not32, double %2408, double %2409 %2410 = and i32 %i.i.i.i378.0, 2 %.not34 = icmp eq i32 %2410, 0 %2411 = call double @llvm.fma.f64(double %spec.select26, double noundef -1.000000e+00, double noundef 0.000000e+00) %.150 = select i1 %.not34, double %spec.select26, double %2411 br label %__internal_cos_offset.exit.i415 __internal_cos_offset.exit.i415: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i410, %2344, %__internal_sin_cos_kerneld.exit.i.i.i414 %.045 = phi double [ %.150, %__internal_sin_cos_kerneld.exit.i.i.i414 ], [ %2348, %2344 ], [ %spec.select25, %__internal_trig_reduction_kerneld.exit.i.i.i.i410 ] %2412 = fmul double %2267, %.045 br label %2413 2413: ; preds = %__nv_log.exit.i406, %2178, %__internal_cos_offset.exit.i415, %__nv_isinfd.exit.i407, %2204, %2149, %1812 %r.i389.5 = phi double [ %1813, %1812 ], [ %2146, %__nv_log.exit.i406 ], [ %2175, %2149 ], [ %2201, %2178 ], [ %2222, %2204 ], [ %2412, %__internal_cos_offset.exit.i415 ], [ 0.000000e+00, %__nv_isinfd.exit.i407 ] br i1 %604, label %__nv_y1.exit416, label %2414 2414: ; preds = %2413 br label %__nv_y1.exit416 2415: ; preds = %__nv_y0.exit %2416 = icmp slt i32 %n, 0 %2417 = fcmp ult double %a, 0.000000e+00 %or.cond = select i1 %2416, i1 true, i1 %2417 br i1 %or.cond, label %__nv_y1.exit416, label %2418 2418: ; preds = %2415 br i1 %2, label %2419, label %.lr.ph 2419: ; preds = %2418 %2420 = fdiv double 0xBFE45F306DC9C883, %a br label %__nv_y1.exit416 .lr.ph: ; preds = %2418 %2421 = fdiv double 2.000000e+00, %a %2422 = add nsw i32 %n, -1 %2423 = add nsw i32 %n, -2 %xtraiter = and i32 %2422, 3 %2424 = icmp ult i32 %2423, 3 br i1 %2424, label %._crit_edge.unr-lcssa, label %.lr.ph.new .lr.ph.new: ; preds = %.lr.ph %unroll_iter = and i32 %2422, -4 br label %2425 2425: ; preds = %2425, %.lr.ph.new %i.071 = phi i32 [ 1, %.lr.ph.new ], [ %2445, %2425 ] %yim1.070 = phi double [ %r.i95.5, %.lr.ph.new ], [ %2439, %2425 ] %yi.069 = phi double [ %r.i.7, %.lr.ph.new ], [ %2444, %2425 ] %niter = phi i32 [ 0, %.lr.ph.new ], [ %niter.next.3, %2425 ] %2426 = sitofp i32 %i.071 to double %2427 = fmul double %2421, %2426 %2428 = fneg double %yim1.070 %2429 = call double @llvm.fma.f64(double %2427, double %yi.069, double %2428) %2430 = add nuw nsw i32 %i.071, 1 %2431 = sitofp i32 %2430 to double %2432 = fmul double %2421, %2431 %2433 = fneg double %yi.069 %2434 = call double @llvm.fma.f64(double %2432, double %2429, double %2433) %2435 = add nuw nsw i32 %i.071, 2 %2436 = sitofp i32 %2435 to double %2437 = fmul double %2421, %2436 %2438 = fneg double %2429 %2439 = call double @llvm.fma.f64(double %2437, double %2434, double %2438) %2440 = add nuw nsw i32 %i.071, 3 %2441 = sitofp i32 %2440 to double %2442 = fmul double %2421, %2441 %2443 = fneg double %2434 %2444 = call double @llvm.fma.f64(double %2442, double %2439, double %2443) %2445 = add nuw nsw i32 %i.071, 4 %niter.next.3 = add i32 %niter, 4 %niter.ncmp.3.not = icmp eq i32 %niter.next.3, %unroll_iter br i1 %niter.ncmp.3.not, label %._crit_edge.unr-lcssa, label %2425 ._crit_edge.unr-lcssa: ; preds = %2425, %.lr.ph %.lcssa.ph = phi double [ undef, %.lr.ph ], [ %2444, %2425 ] %i.071.unr = phi i32 [ 1, %.lr.ph ], [ %2445, %2425 ] %yim1.070.unr = phi double [ %r.i95.5, %.lr.ph ], [ %2439, %2425 ] %yi.069.unr = phi double [ %r.i.7, %.lr.ph ], [ %2444, %2425 ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader .epil.preheader: ; preds = %._crit_edge.unr-lcssa, %.epil.preheader %i.071.epil = phi i32 [ %2450, %.epil.preheader ], [ %i.071.unr, %._crit_edge.unr-lcssa ] %yim1.070.epil = phi double [ %yi.069.epil, %.epil.preheader ], [ %yim1.070.unr, %._crit_edge.unr-lcssa ] %yi.069.epil = phi double [ %2449, %.epil.preheader ], [ %yi.069.unr, %._crit_edge.unr-lcssa ] %epil.iter = phi i32 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.unr-lcssa ] %2446 = sitofp i32 %i.071.epil to double %2447 = fmul double %2421, %2446 %2448 = fneg double %yim1.070.epil %2449 = call double @llvm.fma.f64(double %2447, double %yi.069.epil, double %2448) %2450 = add nuw nsw i32 %i.071.epil, 1 %epil.iter.next = add i32 %epil.iter, 1 %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter br i1 %epil.iter.cmp.not, label %._crit_edge, label %.epil.preheader, !llvm.loop !88 ._crit_edge: ; preds = %.epil.preheader, %._crit_edge.unr-lcssa %yip1.0.lcssa = phi double [ %.lcssa.ph, %._crit_edge.unr-lcssa ], [ %2449, %.epil.preheader ] %2451 = call double @llvm.fabs.f64(double %yip1.0.lcssa) %2452 = fcmp ugt double %2451, 0x7FF0000000000000 br i1 %2452, label %2453, label %__nv_y1.exit416 2453: ; preds = %._crit_edge br label %__nv_y1.exit416 __nv_y1.exit416: ; preds = %2415, %._crit_edge, %2413, %2414, %2453, %2419, %__nv_y0.exit266 %.0 = phi double [ %r.i239.5, %__nv_y0.exit266 ], [ %2420, %2419 ], [ 0xFFF0000000000000, %2453 ], [ %r.i.6, %2414 ], [ %r.i389.5, %2413 ], [ %yip1.0.lcssa, %._crit_edge ], [ 0xFFF8000000000000, %2415 ] ret double %.0 } ; Function Attrs: noinline nounwind define dso_local double @__nv_jn(i32 %n, double %a) local_unnamed_addr #111 { %q.i.i.i.i137 = alloca i32, align 4 %q.i.i.i.i.i153 = alloca i32, align 4 %q.i.i.i167 = alloca i32, align 4 %q.i.i.i.i75 = alloca i32, align 4 %q.i.i.i.i.i91 = alloca i32, align 4 %q.i.i.i105 = alloca i32, align 4 %q.i.i.i.i14 = alloca i32, align 4 %q.i.i.i.i.i30 = alloca i32, align 4 %q.i.i.i44 = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i.i.i.i = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 switch i32 %n, label %513 [ i32 0, label %1 i32 1, label %257 ] 1: ; preds = %0 %2 = call double @llvm.fabs.f64(double %a) %3 = fcmp ugt double %2, 0x400FB319F277BBE5 br i1 %3, label %24, label %4 4: ; preds = %1 %5 = fadd double %2, 0xC0033D152E971B40 %6 = fadd double %5, 0x3CA0F539D7DA258E %7 = call double @llvm.fma.f64(double %6, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) %8 = call double @llvm.fma.f64(double %7, double %6, double noundef 0x3D3FAB983CAE498B) %9 = call double @llvm.fma.f64(double %8, double %6, double noundef 0x3D7CD7C018579B88) %10 = call double @llvm.fma.f64(double %9, double %6, double noundef 0xBDBBDD2342D64FDD) %11 = call double @llvm.fma.f64(double %10, double %6, double noundef 0xBDF5C2D9416B1E2B) %12 = call double @llvm.fma.f64(double %11, double %6, double noundef 0x3E32951D73174DD5) %13 = call double @llvm.fma.f64(double %12, double %6, double noundef 0x3E67FF99802CAEB5) %14 = call double @llvm.fma.f64(double %13, double %6, double noundef 0xBEA1CCE305C4C9F7) %15 = call double @llvm.fma.f64(double %14, double %6, double noundef 0xBED232C77E29E1BB) %16 = call double @llvm.fma.f64(double %15, double %6, double noundef 0x3F06ED3B9F0EF757) %17 = call double @llvm.fma.f64(double %16, double %6, double noundef 0x3F315382BA096A62) %18 = call double @llvm.fma.f64(double %17, double %6, double noundef 0xBF61F992590D1AE4) %19 = call double @llvm.fma.f64(double %18, double %6, double noundef 0xBF81BB1CBE1A465F) %20 = call double @llvm.fma.f64(double %19, double %6, double noundef 0x3FACFAE864368D84) %21 = call double @llvm.fma.f64(double %20, double %6, double noundef 0x3FBBA1DEEA0294A3) %22 = call double @llvm.fma.f64(double %21, double %6, double noundef 0xBFE09CDB36551280) %23 = fmul double %6, %22 br label %__nv_j0.exit 24: ; preds = %1 %25 = fcmp ugt double %2, 0x401C58FD1A62F5EC br i1 %25, label %46, label %26 26: ; preds = %24 %27 = fadd double %2, 0xC016148F5B2C2E45 %28 = fadd double %27, 0xBC975054CD60A517 %29 = call double @llvm.fma.f64(double %28, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) %30 = call double @llvm.fma.f64(double %29, double %28, double noundef 0xBD4100E33E3FB413) %31 = call double @llvm.fma.f64(double %30, double %28, double noundef 0xBD7846076D004627) %32 = call double @llvm.fma.f64(double %31, double %28, double noundef 0x3DBE2F1D4F90720D) %33 = call double @llvm.fma.f64(double %32, double %28, double noundef 0x3DF1D03B1E4A119B) %34 = call double @llvm.fma.f64(double %33, double %28, double noundef 0xBE341D72B1B3BCE9) %35 = call double @llvm.fma.f64(double %34, double %28, double noundef 0xBE62DA37CE2A9EF8) %36 = call double @llvm.fma.f64(double %35, double %28, double noundef 0x3EA32E6D9974F763) %37 = call double @llvm.fma.f64(double %36, double %28, double noundef 0x3ECAD77D744A1879) %38 = call double @llvm.fma.f64(double %37, double %28, double noundef 0xBF0863F481A37337) %39 = call double @llvm.fma.f64(double %38, double %28, double noundef 0xBF26F641F418F0F4) %40 = call double @llvm.fma.f64(double %39, double %28, double noundef 0x3F627E31FE9A969E) %41 = call double @llvm.fma.f64(double %40, double %28, double noundef 0x3F72F7FFE9025628) %42 = call double @llvm.fma.f64(double %41, double %28, double noundef 0xBFAB2150CB41E8BF) %43 = call double @llvm.fma.f64(double %42, double %28, double noundef 0xBF9F8F72E7A848DE) %44 = call double @llvm.fma.f64(double %43, double %28, double noundef 0x3FD5C6E60A097823) %45 = fmul double %28, %44 br label %__nv_j0.exit 46: ; preds = %24 %47 = fcmp ugt double %2, 0x402471FCB6A7A8C0 br i1 %47, label %68, label %48 48: ; preds = %46 %49 = fadd double %2, 0xC0214EB56CCCDECA %50 = fadd double %49, 0x3CB51970714C7C25 %51 = call double @llvm.fma.f64(double %50, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) %52 = call double @llvm.fma.f64(double %51, double %50, double noundef 0x3D417EC150ECDCE7) %53 = call double @llvm.fma.f64(double %52, double %50, double noundef 0x3D7438F5EA1D10B2) %54 = call double @llvm.fma.f64(double %53, double %50, double noundef 0xBDBEDAE7EC2C9E87) %55 = call double @llvm.fma.f64(double %54, double %50, double noundef 0xBDECADD2C4B91F58) %56 = call double @llvm.fma.f64(double %55, double %50, double noundef 0x3E34582C8EE12204) %57 = call double @llvm.fma.f64(double %56, double %50, double noundef 0x3E5CEDA451DD20F8) %58 = call double @llvm.fma.f64(double %57, double %50, double noundef 0xBEA30E8CC3165E2F) %59 = call double @llvm.fma.f64(double %58, double %50, double noundef 0xBEC3324842BB1A2E) %60 = call double @llvm.fma.f64(double %59, double %50, double noundef 0x3F07800BC54FBDDB) %61 = call double @llvm.fma.f64(double %60, double %50, double noundef 0x3F1D79605276949A) %62 = call double @llvm.fma.f64(double %61, double %50, double noundef 0xBF60E0D60385A629) %63 = call double @llvm.fma.f64(double %62, double %50, double noundef 0xBF648E63600D82F3) %64 = call double @llvm.fma.f64(double %63, double %50, double noundef 0x3FA68B984EC6493A) %65 = call double @llvm.fma.f64(double %64, double %50, double noundef 0x3F900F7FCF183E0B) %66 = call double @llvm.fma.f64(double %65, double %50, double noundef 0xBFD15F7977A772D4) %67 = fmul double %50, %66 br label %__nv_j0.exit 68: ; preds = %46 %69 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %70 = icmp eq i32 %69, 200 br i1 %70, label %77, label %71 71: ; preds = %68 %72 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %73 = icmp eq i32 %72, 350 br i1 %73, label %77, label %74 74: ; preds = %71 %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %76 = icmp eq i32 %75, 370 br i1 %76, label %77, label %79 77: ; preds = %74, %71, %68 %78 = fcmp oeq double %2, 0x7FF0000000000000 br label %__nv_isinfd.exit.i 79: ; preds = %74 %80 = call i32 @llvm.nvvm.d2i.lo(double %2) #139 %81 = call i32 @llvm.nvvm.d2i.hi(double %2) #139 %82 = and i32 %81, 2147483647 %83 = icmp eq i32 %82, 2146435072 %84 = icmp eq i32 %80, 0 %85 = select i1 %83, i1 %84, i1 false br label %__nv_isinfd.exit.i __nv_isinfd.exit.i: ; preds = %79, %77 %.07.in = phi i1 [ %78, %77 ], [ %85, %79 ] br i1 %.07.in, label %__nv_j0.exit, label %86 86: ; preds = %__nv_isinfd.exit.i %87 = call double @llvm.nvvm.rcp.approx.ftz.d(double %2) #139 %88 = fneg double %2 %89 = call double @llvm.fma.f64(double %88, double %87, double noundef 1.000000e+00) %90 = call double @llvm.fma.f64(double %89, double %89, double %89) %91 = call double @llvm.fma.f64(double %90, double %87, double %87) %92 = fmul double %91, %91 %93 = call double @llvm.fma.f64(double %92, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %94 = call double @llvm.fma.f64(double %93, double %92, double noundef 0xC05751787E247BD4) %95 = call double @llvm.fma.f64(double %94, double %92, double noundef 0x401704C4E5FC36B2) %96 = call double @llvm.fma.f64(double %95, double %92, double noundef 0xBFE15B747A2FD531) %97 = call double @llvm.fma.f64(double %96, double %92, double noundef 0x3FBA7FEACF6CB79B) %98 = call double @llvm.fma.f64(double %97, double %92, double noundef 0xBFAFFFFFEDDCF548) %99 = call double @llvm.fma.f64(double %98, double %92, double noundef 0x3FEFFFFFFFFFC9E5) %100 = call double @llvm.fma.f64(double %92, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %101 = call double @llvm.fma.f64(double %100, double %92, double noundef 0xC0C7A2FC1972F05A) %102 = call double @llvm.fma.f64(double %101, double %92, double noundef 0x407EBA131F7E5BEB) %103 = call double @llvm.fma.f64(double %102, double %92, double noundef 0xC0373B92E6E7CC7D) %104 = call double @llvm.fma.f64(double %103, double %92, double noundef 0x3FFA31BEE63A2F08) %105 = call double @llvm.fma.f64(double %104, double %92, double noundef 0xBFCAD320104D5D05) %106 = call double @llvm.fma.f64(double %105, double %92, double noundef 0x3FB0AAAA9C76D07E) %107 = call double @llvm.fma.f64(double %106, double %92, double noundef 0xBFBFFFFFFFFDACEC) %108 = call double @llvm.fma.f64(double %107, double %91, double %2) %109 = call double @llvm.nvvm.rsqrt.approx.d(double %2) #139 %110 = fmul double %109, 0x3FE9884533D43651 %111 = fmul double %110, %99 %112 = fmul double %108, 0x3FE45F306DC9C883 %113 = call i32 @llvm.nvvm.d2i.rn(double %112) #139 store i32 %113, i32* %q.i.i.i, align 4, !noalias !68 %114 = sitofp i32 %113 to double %115 = fneg double %114 %116 = call double @llvm.fma.f64(double %115, double noundef 0x3FF921FB54442D18, double %108) %117 = call double @llvm.fma.f64(double %115, double noundef 0x3C91A62633145C00, double %116) %118 = call double @llvm.fma.f64(double %115, double noundef 0x397B839A252049C0, double %117) %119 = call double @llvm.fabs.f64(double %108) %120 = fcmp ult double %119, 0x41E0000000000000 br i1 %120, label %__internal_trig_reduction_kerneld.exit.i.i, label %121 121: ; preds = %86 %122 = call fastcc double @__internal_trig_reduction_slowpathd(double %108, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i) #139 %.pre50 = load i32, i32* %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %121, %86 %123 = phi i32 [ %.pre50, %121 ], [ %113, %86 ] %t.i.i.i.0 = phi double [ %122, %121 ], [ %118, %86 ] %124 = and i32 %123, 3 %125 = uitofp i32 %124 to double %126 = fadd double %t.i.i.i.0, 0xBFE921FB54442D18 %127 = fmul double %125, 0x3FF921FB54442D18 %128 = fadd double %126, %127 %129 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %130 = icmp eq i32 %129, 350 br i1 %130, label %134, label %131 131: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %132 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %133 = icmp eq i32 %132, 370 br i1 %133, label %134, label %193 134: ; preds = %131, %__internal_trig_reduction_kerneld.exit.i.i %135 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %136 = icmp eq i32 %135, 200 br i1 %136, label %143, label %137 137: ; preds = %134 %138 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %139 = icmp eq i32 %138, 350 br i1 %139, label %143, label %140 140: ; preds = %137 %141 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %142 = icmp eq i32 %141, 370 br i1 %142, label %143, label %146 143: ; preds = %140, %137, %134 %144 = call double @llvm.fabs.f64(double %128) %145 = fcmp oeq double %144, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i 146: ; preds = %140 %147 = call i32 @llvm.nvvm.d2i.lo(double %128) #139 %148 = call i32 @llvm.nvvm.d2i.hi(double %128) #139 %149 = and i32 %148, 2147483647 %150 = icmp eq i32 %149, 2146435072 %151 = icmp eq i32 %147, 0 %152 = select i1 %150, i1 %151, i1 false br label %__nv_isinfd.exit.i.i.i.i __nv_isinfd.exit.i.i.i.i: ; preds = %146, %143 %.04.in = phi i1 [ %145, %143 ], [ %152, %146 ] br i1 %.04.in, label %153, label %155 153: ; preds = %__nv_isinfd.exit.i.i.i.i %154 = fmul double %128, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i 155: ; preds = %__nv_isinfd.exit.i.i.i.i %156 = fmul double %128, 0x3FE45F306DC9C883 %157 = call i32 @llvm.nvvm.d2i.rn(double %156) #139 store i32 %157, i32* %q.i.i.i.i.i, align 4, !noalias !68 %158 = sitofp i32 %157 to double %159 = fneg double %158 %160 = call double @llvm.fma.f64(double %159, double noundef 0x3FF921FB54442D18, double %128) %161 = call double @llvm.fma.f64(double %159, double noundef 0x3C91A62633145C00, double %160) %162 = call double @llvm.fma.f64(double %159, double noundef 0x397B839A252049C0, double %161) %163 = call double @llvm.fabs.f64(double %128) %164 = fcmp ult double %163, 0x41E0000000000000 br i1 %164, label %__internal_trig_reduction_kerneld.exit.i.i.i.i, label %165 165: ; preds = %155 %166 = call fastcc double @__internal_trig_reduction_slowpathd(double %128, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i) #139 %.pre52 = load i32, i32* %q.i.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i.i: ; preds = %155, %165, %153 %i.i.i.i.i.0 = phi i32 [ 0, %153 ], [ %.pre52, %165 ], [ %157, %155 ] %.03 = phi double [ %154, %153 ], [ %166, %165 ], [ %162, %155 ] %167 = fmul double %.03, %.03 %168 = call double @llvm.fma.f64(double %167, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %169 = call double @llvm.fma.f64(double %168, double %167, double noundef 0xBE927E4F8E06E6D9) %170 = call double @llvm.fma.f64(double %169, double %167, double noundef 0x3EFA01A019DDBCE9) %171 = call double @llvm.fma.f64(double %170, double %167, double noundef 0xBF56C16C16C15D47) %172 = call double @llvm.fma.f64(double %171, double %167, double noundef 0x3FA5555555555551) %173 = call double @llvm.fma.f64(double %172, double %167, double noundef -5.000000e-01) %174 = call double @llvm.fma.f64(double %173, double %167, double noundef 1.000000e+00) %175 = call double @llvm.fma.f64(double %167, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %176 = call double @llvm.fma.f64(double %175, double %167, double noundef 0x3EC71DE369ACE392) %177 = call double @llvm.fma.f64(double %176, double %167, double noundef 0xBF2A01A019DB62A1) %178 = call double @llvm.fma.f64(double %177, double %167, double noundef 0x3F81111111110818) %179 = call double @llvm.fma.f64(double %178, double %167, double noundef 0xBFC5555555555554) %180 = call double @llvm.fma.f64(double %179, double %167, double noundef 0.000000e+00) %181 = call double @llvm.fma.f64(double %180, double %.03, double %.03) %182 = call i32 @llvm.nvvm.d2i.hi(double %181) #139 %183 = call i32 @llvm.nvvm.d2i.lo(double %181) #139 %184 = xor i32 %182, -2147483648 %185 = call double @llvm.nvvm.lohi.i2d(i32 %183, i32 %184) #139 %186 = and i32 %i.i.i.i.i.0, 1 %.not21 = icmp eq i32 %186, 0 %spec.select1 = select i1 %.not21, double %174, double %185 %187 = and i32 %i.i.i.i.i.0, 2 %.not22 = icmp eq i32 %187, 0 br i1 %.not22, label %__internal_cos_offset.exit.i, label %188 188: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i %189 = call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #139 %190 = call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #139 %191 = xor i32 %189, -2147483648 %192 = call double @llvm.nvvm.lohi.i2d(i32 %190, i32 %191) #139 br label %__internal_cos_offset.exit.i 193: ; preds = %131 %194 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %195 = icmp eq i32 %194, 200 br i1 %195, label %202, label %196 196: ; preds = %193 %197 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %198 = icmp eq i32 %197, 350 br i1 %198, label %202, label %199 199: ; preds = %196 %200 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %201 = icmp eq i32 %200, 370 br i1 %201, label %202, label %205 202: ; preds = %199, %196, %193 %203 = call double @llvm.fabs.f64(double %128) %204 = fcmp oeq double %203, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i 205: ; preds = %199 %206 = call i32 @llvm.nvvm.d2i.lo(double %128) #139 %207 = call i32 @llvm.nvvm.d2i.hi(double %128) #139 %208 = and i32 %207, 2147483647 %209 = icmp eq i32 %208, 2146435072 %210 = icmp eq i32 %206, 0 %211 = select i1 %209, i1 %210, i1 false br label %__nv_isinfd.exit.i.i.i __nv_isinfd.exit.i.i.i: ; preds = %205, %202 %.05.in = phi i1 [ %204, %202 ], [ %211, %205 ] br i1 %.05.in, label %212, label %214 212: ; preds = %__nv_isinfd.exit.i.i.i %213 = fmul double %128, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i 214: ; preds = %__nv_isinfd.exit.i.i.i %215 = fmul double %128, 0x3FE45F306DC9C883 %216 = call i32 @llvm.nvvm.d2i.rn(double %215) #139 store i32 %216, i32* %q.i.i.i.i, align 4, !noalias !68 %217 = sitofp i32 %216 to double %218 = fneg double %217 %219 = call double @llvm.fma.f64(double %218, double noundef 0x3FF921FB54442D18, double %128) %220 = call double @llvm.fma.f64(double %218, double noundef 0x3C91A62633145C00, double %219) %221 = call double @llvm.fma.f64(double %218, double noundef 0x397B839A252049C0, double %220) %222 = call double @llvm.fabs.f64(double %128) %223 = fcmp ult double %222, 0x41E0000000000000 br i1 %223, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %224 224: ; preds = %214 %225 = call fastcc double @__internal_trig_reduction_slowpathd(double %128, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i) #139 %.pre51 = load i32, i32* %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %224, %214 %226 = phi i32 [ %.pre51, %224 ], [ %216, %214 ] %t.i1.i.i.i.0 = phi double [ %225, %224 ], [ %221, %214 ] %phi.bo17 = add i32 %226, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i __internal_sin_cos_kerneld.exit.i.i.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i, %212 %i.i.i.i.0 = phi i32 [ 1, %212 ], [ %phi.bo17, %__internal_trig_reduction_kerneld.exit.i.i.i ] %z.i.i.i.0 = phi double [ %213, %212 ], [ %t.i1.i.i.i.0, %__internal_trig_reduction_kerneld.exit.i.i.i ] %227 = shl i32 %i.i.i.i.0, 3 %228 = and i32 %227, 8 %229 = zext i32 %228 to i64 %230 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %229 %231 = fmul double %z.i.i.i.0, %z.i.i.i.0 %232 = and i32 %i.i.i.i.0, 1 %.not18 = icmp eq i32 %232, 0 %233 = select i1 %.not18, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %234 = getelementptr inbounds double, double addrspace(1)* %230, i64 1 %235 = load double, double addrspace(1)* %234, align 8 %236 = call double @llvm.fma.f64(double noundef %233, double %231, double %235) %237 = getelementptr inbounds double, double addrspace(1)* %230, i64 2 %238 = load double, double addrspace(1)* %237, align 8 %239 = call double @llvm.fma.f64(double %236, double %231, double %238) %240 = getelementptr inbounds double, double addrspace(1)* %230, i64 3 %241 = load double, double addrspace(1)* %240, align 8 %242 = call double @llvm.fma.f64(double %239, double %231, double %241) %243 = getelementptr inbounds double, double addrspace(1)* %230, i64 4 %244 = load double, double addrspace(1)* %243, align 8 %245 = call double @llvm.fma.f64(double %242, double %231, double %244) %246 = getelementptr inbounds double, double addrspace(1)* %230, i64 5 %247 = load double, double addrspace(1)* %246, align 8 %248 = call double @llvm.fma.f64(double %245, double %231, double %247) %249 = getelementptr inbounds double, double addrspace(1)* %230, i64 6 %250 = load double, double addrspace(1)* %249, align 8 %251 = call double @llvm.fma.f64(double %248, double %231, double %250) %252 = call double @llvm.fma.f64(double %251, double %z.i.i.i.0, double %z.i.i.i.0) %253 = call double @llvm.fma.f64(double %251, double %231, double noundef 1.000000e+00) %spec.select2 = select i1 %.not18, double %252, double %253 %254 = and i32 %i.i.i.i.0, 2 %.not20 = icmp eq i32 %254, 0 %255 = call double @llvm.fma.f64(double %spec.select2, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not20, double %spec.select2, double %255 br label %__internal_cos_offset.exit.i __internal_cos_offset.exit.i: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i, %188, %__internal_sin_cos_kerneld.exit.i.i.i %.02 = phi double [ %.1, %__internal_sin_cos_kerneld.exit.i.i.i ], [ %192, %188 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i.i.i.i ] %256 = fmul double %111, %.02 br label %__nv_j0.exit 257: ; preds = %0 %258 = call double @llvm.fabs.f64(double %a) %259 = fcmp ugt double %258, 0x400353AABAD7B784 br i1 %259, label %277, label %260 260: ; preds = %257 %261 = call double @llvm.fma.f64(double %258, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) %262 = call double @llvm.fma.f64(double %261, double %258, double noundef 0x3D5503F5A491E487) %263 = call double @llvm.fma.f64(double %262, double %258, double noundef 0x3DC1F29940C2403A) %264 = call double @llvm.fma.f64(double %263, double %258, double noundef 0x3D84CF9302EACDEF) %265 = call double @llvm.fma.f64(double %264, double %258, double noundef 0xBE384A53DBBCA436) %266 = call double @llvm.fma.f64(double %265, double %258, double noundef 0x3D9779BEE4F63BCC) %267 = call double @llvm.fma.f64(double %266, double %258, double noundef 0x3EA6C160E414F3F0) %268 = call double @llvm.fma.f64(double %267, double %258, double noundef 0x3D8F3D2F12430699) %269 = call double @llvm.fma.f64(double %268, double %258, double noundef 0xBF0C71C72C0CED04) %270 = call double @llvm.fma.f64(double %269, double %258, double noundef 0x3D659BCA506F1128) %271 = call double @llvm.fma.f64(double %270, double %258, double noundef 0x3F65555555506982) %272 = call double @llvm.fma.f64(double %271, double %258, double noundef 0x3D15BA0B425F1BFB) %273 = call double @llvm.fma.f64(double %272, double %258, double noundef 0xBFB0000000000065) %274 = call double @llvm.fma.f64(double %273, double %258, double noundef 0x3C8729A7253FB679) %275 = call double @llvm.fma.f64(double %274, double %258, double noundef 5.000000e-01) %276 = fmul double %258, %275 br label %__nv_j1.exit 277: ; preds = %257 %278 = fcmp ugt double %258, 0x4015B1D0574614EA br i1 %278, label %298, label %279 279: ; preds = %277 %280 = fadd double %258, 0xC00EA75575AF6F09 %281 = fadd double %280, 0x3CA60155A9D1B256 %282 = call double @llvm.fma.f64(double %281, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) %283 = call double @llvm.fma.f64(double %282, double %281, double noundef 0x3D76013AC1E5E222) %284 = call double @llvm.fma.f64(double %283, double %281, double noundef 0xBDBEC315D96D5F03) %285 = call double @llvm.fma.f64(double %284, double %281, double noundef 0xBDF03BE1B4B57207) %286 = call double @llvm.fma.f64(double %285, double %281, double noundef 0x3E345695F8B660F7) %287 = call double @llvm.fma.f64(double %286, double %281, double noundef 0x3E617069FCFCFFF4) %288 = call double @llvm.fma.f64(double %287, double %281, double noundef 0xBEA33825C36745EB) %289 = call double @llvm.fma.f64(double %288, double %281, double noundef 0xBEC9799D4F90931B) %290 = call double @llvm.fma.f64(double %289, double %281, double noundef 0x3F083A06E2F7DF13) %291 = call double @llvm.fma.f64(double %290, double %281, double noundef 0x3F26E4C2D53A7CF6) %292 = call double @llvm.fma.f64(double %291, double %281, double noundef 0xBF624B3409957B1C) %293 = call double @llvm.fma.f64(double %292, double %281, double noundef 0xBF7537544C3325DF) %294 = call double @llvm.fma.f64(double %293, double %281, double noundef 0x3FAB589D1DA138E2) %295 = call double @llvm.fma.f64(double %294, double %281, double noundef 0x3FAAE8A39F51AD13) %296 = call double @llvm.fma.f64(double %295, double %281, double noundef 0xBFD9C6CF582CBF7F) %297 = fmul double %281, %296 br label %__nv_j1.exit 298: ; preds = %277 %299 = fcmp ugt double %258, 0x40213065E54C1AA9 br i1 %299, label %319, label %300 300: ; preds = %298 %301 = fadd double %258, 0xC01C0FF5F3B47250 %302 = fadd double %301, 0x3C9B226D9D243827 %303 = call double @llvm.fma.f64(double %302, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) %304 = call double @llvm.fma.f64(double %303, double %302, double noundef 0xBD73B7DD4A6608FB) %305 = call double @llvm.fma.f64(double %304, double %302, double noundef 0x3DBEC5E01482C750) %306 = call double @llvm.fma.f64(double %305, double %302, double noundef 0x3DEC62BB9E882103) %307 = call double @llvm.fma.f64(double %306, double %302, double noundef 0xBE34462EED732A23) %308 = call double @llvm.fma.f64(double %307, double %302, double noundef 0xBE5D48DCAD7DC59B) %309 = call double @llvm.fma.f64(double %308, double %302, double noundef 0x3EA3026DF29167E9) %310 = call double @llvm.fma.f64(double %309, double %302, double noundef 0x3EC4255B0119666C) %311 = call double @llvm.fma.f64(double %310, double %302, double noundef 0xBF0796A751B32693) %312 = call double @llvm.fma.f64(double %311, double %302, double noundef 0xBF207358BBDBA284) %313 = call double @llvm.fma.f64(double %312, double %302, double noundef 0x3F613FBC7D6927B1) %314 = call double @llvm.fma.f64(double %313, double %302, double noundef 0x3F69A4B292E3DD75) %315 = call double @llvm.fma.f64(double %314, double %302, double noundef 0xBFA80C83BDEEE4FB) %316 = call double @llvm.fma.f64(double %315, double %302, double noundef 0xBF95E70DC60362BF) %317 = call double @llvm.fma.f64(double %316, double %302, double noundef 0x3FD33518B3874E8A) %318 = fmul double %302, %317 br label %__nv_j1.exit 319: ; preds = %298 %320 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %321 = icmp eq i32 %320, 200 br i1 %321, label %328, label %322 322: ; preds = %319 %323 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %324 = icmp eq i32 %323, 350 br i1 %324, label %328, label %325 325: ; preds = %322 %326 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %327 = icmp eq i32 %326, 370 br i1 %327, label %328, label %330 328: ; preds = %325, %322, %319 %329 = fcmp oeq double %258, 0x7FF0000000000000 br label %__nv_isinfd.exit.i56 330: ; preds = %325 %331 = call i32 @llvm.nvvm.d2i.lo(double %258) #139 %332 = call i32 @llvm.nvvm.d2i.hi(double %258) #139 %333 = and i32 %332, 2147483647 %334 = icmp eq i32 %333, 2146435072 %335 = icmp eq i32 %331, 0 %336 = select i1 %334, i1 %335, i1 false br label %__nv_isinfd.exit.i56 __nv_isinfd.exit.i56: ; preds = %330, %328 %.014.in = phi i1 [ %329, %328 ], [ %336, %330 ] br i1 %.014.in, label %__nv_j1.exit, label %337 337: ; preds = %__nv_isinfd.exit.i56 %338 = call double @llvm.nvvm.rcp.approx.ftz.d(double %258) #139 %339 = fneg double %258 %340 = call double @llvm.fma.f64(double %339, double %338, double noundef 1.000000e+00) %341 = call double @llvm.fma.f64(double %340, double %340, double %340) %342 = call double @llvm.fma.f64(double %341, double %338, double %338) %343 = fmul double %342, %342 %344 = call double @llvm.fma.f64(double %343, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %345 = call double @llvm.fma.f64(double %344, double %343, double noundef 0x405B89354DA77324) %346 = call double @llvm.fma.f64(double %345, double %343, double noundef 0xC01E352294653188) %347 = call double @llvm.fma.f64(double %346, double %343, double noundef 0x3FE9BC7DB16BD7A7) %348 = call double @llvm.fma.f64(double %347, double %343, double noundef 0xBFC8BFE1C3A4F741) %349 = call double @llvm.fma.f64(double %348, double %343, double noundef 0x3FC7FFFFF0D00BE2) %350 = call double @llvm.fma.f64(double %349, double %343, double noundef 0x3FF00000000068CC) %351 = call double @llvm.fma.f64(double %343, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %352 = call double @llvm.fma.f64(double %351, double %343, double noundef 0xC11764222AD7C910) %353 = call double @llvm.fma.f64(double %352, double %343, double noundef 0x40CEB02E0C306857) %354 = call double @llvm.fma.f64(double %353, double %343, double noundef 0xC08351859FA2B23B) %355 = call double @llvm.fma.f64(double %354, double %343, double noundef 0x403E65A07AF51F42) %356 = call double @llvm.fma.f64(double %355, double %343, double noundef 0xC002F2B817F77A57) %357 = call double @llvm.fma.f64(double %356, double %343, double noundef 0x3FD7BCC34DA069FD) %358 = call double @llvm.fma.f64(double %357, double %343, double noundef 0xBFC4FFFFF8A44463) %359 = call double @llvm.fma.f64(double %358, double %343, double noundef 0x3FD7FFFFFFFF5CD7) %360 = call double @llvm.fma.f64(double %359, double %342, double %258) %361 = call double @llvm.nvvm.rsqrt.approx.d(double %258) #139 %362 = fmul double %361, 0x3FE9884533D43651 %363 = fmul double %362, %350 %364 = fmul double %360, 0x3FE45F306DC9C883 %365 = call i32 @llvm.nvvm.d2i.rn(double %364) #139 store i32 %365, i32* %q.i.i.i44, align 4, !noalias !68 %366 = sitofp i32 %365 to double %367 = fneg double %366 %368 = call double @llvm.fma.f64(double %367, double noundef 0x3FF921FB54442D18, double %360) %369 = call double @llvm.fma.f64(double %367, double noundef 0x3C91A62633145C00, double %368) %370 = call double @llvm.fma.f64(double %367, double noundef 0x397B839A252049C0, double %369) %371 = call double @llvm.fabs.f64(double %360) %372 = fcmp ult double %371, 0x41E0000000000000 br i1 %372, label %__internal_trig_reduction_kerneld.exit.i.i57, label %373 373: ; preds = %337 %374 = call fastcc double @__internal_trig_reduction_slowpathd(double %360, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i44) #139 %.pre = load i32, i32* %q.i.i.i44, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i57 __internal_trig_reduction_kerneld.exit.i.i57: ; preds = %373, %337 %375 = phi i32 [ %.pre, %373 ], [ %365, %337 ] %t.i.i.i43.0 = phi double [ %374, %373 ], [ %370, %337 ] %376 = and i32 %375, 3 %377 = uitofp i32 %376 to double %378 = fadd double %t.i.i.i43.0, 0xC002D97C7F3321D2 %379 = fmul double %377, 0x3FF921FB54442D18 %380 = fadd double %378, %379 %381 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %382 = icmp eq i32 %381, 350 br i1 %382, label %386, label %383 383: ; preds = %__internal_trig_reduction_kerneld.exit.i.i57 %384 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %385 = icmp eq i32 %384, 370 br i1 %385, label %386, label %445 386: ; preds = %383, %__internal_trig_reduction_kerneld.exit.i.i57 %387 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %388 = icmp eq i32 %387, 200 br i1 %388, label %395, label %389 389: ; preds = %386 %390 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %391 = icmp eq i32 %390, 350 br i1 %391, label %395, label %392 392: ; preds = %389 %393 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %394 = icmp eq i32 %393, 370 br i1 %394, label %395, label %398 395: ; preds = %392, %389, %386 %396 = call double @llvm.fabs.f64(double %380) %397 = fcmp oeq double %396, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i58 398: ; preds = %392 %399 = call i32 @llvm.nvvm.d2i.lo(double %380) #139 %400 = call i32 @llvm.nvvm.d2i.hi(double %380) #139 %401 = and i32 %400, 2147483647 %402 = icmp eq i32 %401, 2146435072 %403 = icmp eq i32 %399, 0 %404 = select i1 %402, i1 %403, i1 false br label %__nv_isinfd.exit.i.i.i.i58 __nv_isinfd.exit.i.i.i.i58: ; preds = %398, %395 %.010.in = phi i1 [ %397, %395 ], [ %404, %398 ] br i1 %.010.in, label %405, label %407 405: ; preds = %__nv_isinfd.exit.i.i.i.i58 %406 = fmul double %380, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i59 407: ; preds = %__nv_isinfd.exit.i.i.i.i58 %408 = fmul double %380, 0x3FE45F306DC9C883 %409 = call i32 @llvm.nvvm.d2i.rn(double %408) #139 store i32 %409, i32* %q.i.i.i.i.i30, align 4, !noalias !68 %410 = sitofp i32 %409 to double %411 = fneg double %410 %412 = call double @llvm.fma.f64(double %411, double noundef 0x3FF921FB54442D18, double %380) %413 = call double @llvm.fma.f64(double %411, double noundef 0x3C91A62633145C00, double %412) %414 = call double @llvm.fma.f64(double %411, double noundef 0x397B839A252049C0, double %413) %415 = call double @llvm.fabs.f64(double %380) %416 = fcmp ult double %415, 0x41E0000000000000 br i1 %416, label %__internal_trig_reduction_kerneld.exit.i.i.i.i59, label %417 417: ; preds = %407 %418 = call fastcc double @__internal_trig_reduction_slowpathd(double %380, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i30) #139 %.pre49 = load i32, i32* %q.i.i.i.i.i30, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i59 __internal_trig_reduction_kerneld.exit.i.i.i.i59: ; preds = %407, %417, %405 %i.i.i.i.i37.0 = phi i32 [ 0, %405 ], [ %.pre49, %417 ], [ %409, %407 ] %.09 = phi double [ %406, %405 ], [ %418, %417 ], [ %414, %407 ] %419 = fmul double %.09, %.09 %420 = call double @llvm.fma.f64(double %419, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %421 = call double @llvm.fma.f64(double %420, double %419, double noundef 0xBE927E4F8E06E6D9) %422 = call double @llvm.fma.f64(double %421, double %419, double noundef 0x3EFA01A019DDBCE9) %423 = call double @llvm.fma.f64(double %422, double %419, double noundef 0xBF56C16C16C15D47) %424 = call double @llvm.fma.f64(double %423, double %419, double noundef 0x3FA5555555555551) %425 = call double @llvm.fma.f64(double %424, double %419, double noundef -5.000000e-01) %426 = call double @llvm.fma.f64(double %425, double %419, double noundef 1.000000e+00) %427 = call double @llvm.fma.f64(double %419, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %428 = call double @llvm.fma.f64(double %427, double %419, double noundef 0x3EC71DE369ACE392) %429 = call double @llvm.fma.f64(double %428, double %419, double noundef 0xBF2A01A019DB62A1) %430 = call double @llvm.fma.f64(double %429, double %419, double noundef 0x3F81111111110818) %431 = call double @llvm.fma.f64(double %430, double %419, double noundef 0xBFC5555555555554) %432 = call double @llvm.fma.f64(double %431, double %419, double noundef 0.000000e+00) %433 = call double @llvm.fma.f64(double %432, double %.09, double %.09) %434 = call i32 @llvm.nvvm.d2i.hi(double %433) #139 %435 = call i32 @llvm.nvvm.d2i.lo(double %433) #139 %436 = xor i32 %434, -2147483648 %437 = call double @llvm.nvvm.lohi.i2d(i32 %435, i32 %436) #139 %438 = and i32 %i.i.i.i.i37.0, 1 %.not15 = icmp eq i32 %438, 0 %spec.select4 = select i1 %.not15, double %426, double %437 %439 = and i32 %i.i.i.i.i37.0, 2 %.not16 = icmp eq i32 %439, 0 br i1 %.not16, label %__internal_cos_offset.exit.i64, label %440 440: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i59 %441 = call i32 @llvm.nvvm.d2i.hi(double %spec.select4) #139 %442 = call i32 @llvm.nvvm.d2i.lo(double %spec.select4) #139 %443 = xor i32 %441, -2147483648 %444 = call double @llvm.nvvm.lohi.i2d(i32 %442, i32 %443) #139 br label %__internal_cos_offset.exit.i64 445: ; preds = %383 %446 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %447 = icmp eq i32 %446, 200 br i1 %447, label %454, label %448 448: ; preds = %445 %449 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %450 = icmp eq i32 %449, 350 br i1 %450, label %454, label %451 451: ; preds = %448 %452 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %453 = icmp eq i32 %452, 370 br i1 %453, label %454, label %457 454: ; preds = %451, %448, %445 %455 = call double @llvm.fabs.f64(double %380) %456 = fcmp oeq double %455, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i61 457: ; preds = %451 %458 = call i32 @llvm.nvvm.d2i.lo(double %380) #139 %459 = call i32 @llvm.nvvm.d2i.hi(double %380) #139 %460 = and i32 %459, 2147483647 %461 = icmp eq i32 %460, 2146435072 %462 = icmp eq i32 %458, 0 %463 = select i1 %461, i1 %462, i1 false br label %__nv_isinfd.exit.i.i.i61 __nv_isinfd.exit.i.i.i61: ; preds = %457, %454 %.011.in = phi i1 [ %456, %454 ], [ %463, %457 ] br i1 %.011.in, label %464, label %466 464: ; preds = %__nv_isinfd.exit.i.i.i61 %465 = fmul double %380, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i63 466: ; preds = %__nv_isinfd.exit.i.i.i61 %467 = fmul double %380, 0x3FE45F306DC9C883 %468 = call i32 @llvm.nvvm.d2i.rn(double %467) #139 store i32 %468, i32* %q.i.i.i.i14, align 4, !noalias !68 %469 = sitofp i32 %468 to double %470 = fneg double %469 %471 = call double @llvm.fma.f64(double %470, double noundef 0x3FF921FB54442D18, double %380) %472 = call double @llvm.fma.f64(double %470, double noundef 0x3C91A62633145C00, double %471) %473 = call double @llvm.fma.f64(double %470, double noundef 0x397B839A252049C0, double %472) %474 = call double @llvm.fabs.f64(double %380) %475 = fcmp ult double %474, 0x41E0000000000000 br i1 %475, label %__internal_trig_reduction_kerneld.exit.i.i.i62, label %476 476: ; preds = %466 %477 = call fastcc double @__internal_trig_reduction_slowpathd(double %380, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i14) #139 %.pre48 = load i32, i32* %q.i.i.i.i14, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i62 __internal_trig_reduction_kerneld.exit.i.i.i62: ; preds = %476, %466 %478 = phi i32 [ %.pre48, %476 ], [ %468, %466 ] %t.i1.i.i.i13.0 = phi double [ %477, %476 ], [ %473, %466 ] %phi.bo = add i32 %478, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i63 __internal_sin_cos_kerneld.exit.i.i.i63: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i62, %464 %i.i.i.i41.0 = phi i32 [ 1, %464 ], [ %phi.bo, %__internal_trig_reduction_kerneld.exit.i.i.i62 ] %z.i.i.i40.0 = phi double [ %465, %464 ], [ %t.i1.i.i.i13.0, %__internal_trig_reduction_kerneld.exit.i.i.i62 ] %479 = shl i32 %i.i.i.i41.0, 3 %480 = and i32 %479, 8 %481 = zext i32 %480 to i64 %482 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %481 %483 = fmul double %z.i.i.i40.0, %z.i.i.i40.0 %484 = and i32 %i.i.i.i41.0, 1 %.not = icmp eq i32 %484, 0 %485 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %486 = getelementptr inbounds double, double addrspace(1)* %482, i64 1 %487 = load double, double addrspace(1)* %486, align 8 %488 = call double @llvm.fma.f64(double noundef %485, double %483, double %487) %489 = getelementptr inbounds double, double addrspace(1)* %482, i64 2 %490 = load double, double addrspace(1)* %489, align 8 %491 = call double @llvm.fma.f64(double %488, double %483, double %490) %492 = getelementptr inbounds double, double addrspace(1)* %482, i64 3 %493 = load double, double addrspace(1)* %492, align 8 %494 = call double @llvm.fma.f64(double %491, double %483, double %493) %495 = getelementptr inbounds double, double addrspace(1)* %482, i64 4 %496 = load double, double addrspace(1)* %495, align 8 %497 = call double @llvm.fma.f64(double %494, double %483, double %496) %498 = getelementptr inbounds double, double addrspace(1)* %482, i64 5 %499 = load double, double addrspace(1)* %498, align 8 %500 = call double @llvm.fma.f64(double %497, double %483, double %499) %501 = getelementptr inbounds double, double addrspace(1)* %482, i64 6 %502 = load double, double addrspace(1)* %501, align 8 %503 = call double @llvm.fma.f64(double %500, double %483, double %502) %504 = call double @llvm.fma.f64(double %503, double %z.i.i.i40.0, double %z.i.i.i40.0) %505 = call double @llvm.fma.f64(double %503, double %483, double noundef 1.000000e+00) %spec.select5 = select i1 %.not, double %504, double %505 %506 = and i32 %i.i.i.i41.0, 2 %.not14 = icmp eq i32 %506, 0 %507 = call double @llvm.fma.f64(double %spec.select5, double noundef -1.000000e+00, double noundef 0.000000e+00) %.113 = select i1 %.not14, double %spec.select5, double %507 br label %__internal_cos_offset.exit.i64 __internal_cos_offset.exit.i64: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i59, %440, %__internal_sin_cos_kerneld.exit.i.i.i63 %.08 = phi double [ %.113, %__internal_sin_cos_kerneld.exit.i.i.i63 ], [ %444, %440 ], [ %spec.select4, %__internal_trig_reduction_kerneld.exit.i.i.i.i59 ] %508 = fmul double %363, %.08 br label %__nv_j1.exit __nv_j1.exit: ; preds = %279, %__internal_cos_offset.exit.i64, %__nv_isinfd.exit.i56, %300, %260 %r.i50.3 = phi double [ %276, %260 ], [ %297, %279 ], [ %318, %300 ], [ %508, %__internal_cos_offset.exit.i64 ], [ 0.000000e+00, %__nv_isinfd.exit.i56 ] %509 = fcmp olt double %a, 0.000000e+00 %510 = fneg double %r.i50.3 %r.i50.4 = select i1 %509, double %510, double %r.i50.3 %511 = fcmp olt double %258, 1.000000e-30 %512 = fmul double %a, 5.000000e-01 %r.i50.5 = select i1 %511, double %512, double %r.i50.4 br label %__nv_j0.exit 513: ; preds = %0 %514 = icmp slt i32 %n, 0 br i1 %514, label %__nv_j0.exit, label %515 515: ; preds = %513 %516 = call double @llvm.fabs.f64(double %a) %517 = sitofp i32 %n to double %518 = fadd double %517, -1.000000e+00 %519 = fcmp ogt double %516, %518 br i1 %519, label %520, label %1054 520: ; preds = %515 %521 = fdiv double 2.000000e+00, %a %522 = fcmp ugt double %516, 0x400353AABAD7B784 br i1 %522, label %540, label %523 523: ; preds = %520 %524 = call double @llvm.fma.f64(double %516, double noundef 0x3D020E4ADCDE2AD3, double noundef 0xBD4DD167A0DC3F55) %525 = call double @llvm.fma.f64(double %524, double %516, double noundef 0x3D5503F5A491E487) %526 = call double @llvm.fma.f64(double %525, double %516, double noundef 0x3DC1F29940C2403A) %527 = call double @llvm.fma.f64(double %526, double %516, double noundef 0x3D84CF9302EACDEF) %528 = call double @llvm.fma.f64(double %527, double %516, double noundef 0xBE384A53DBBCA436) %529 = call double @llvm.fma.f64(double %528, double %516, double noundef 0x3D9779BEE4F63BCC) %530 = call double @llvm.fma.f64(double %529, double %516, double noundef 0x3EA6C160E414F3F0) %531 = call double @llvm.fma.f64(double %530, double %516, double noundef 0x3D8F3D2F12430699) %532 = call double @llvm.fma.f64(double %531, double %516, double noundef 0xBF0C71C72C0CED04) %533 = call double @llvm.fma.f64(double %532, double %516, double noundef 0x3D659BCA506F1128) %534 = call double @llvm.fma.f64(double %533, double %516, double noundef 0x3F65555555506982) %535 = call double @llvm.fma.f64(double %534, double %516, double noundef 0x3D15BA0B425F1BFB) %536 = call double @llvm.fma.f64(double %535, double %516, double noundef 0xBFB0000000000065) %537 = call double @llvm.fma.f64(double %536, double %516, double noundef 0x3C8729A7253FB679) %538 = call double @llvm.fma.f64(double %537, double %516, double noundef 5.000000e-01) %539 = fmul double %516, %538 br label %__nv_j1.exit126 540: ; preds = %520 %541 = fcmp ugt double %516, 0x4015B1D0574614EA br i1 %541, label %561, label %542 542: ; preds = %540 %543 = fadd double %516, 0xC00EA75575AF6F09 %544 = fadd double %543, 0x3CA60155A9D1B256 %545 = call double @llvm.fma.f64(double %544, double noundef 0xBCF8D3CDBB60175E, double noundef 0x3D41011A1DF02DAD) %546 = call double @llvm.fma.f64(double %545, double %544, double noundef 0x3D76013AC1E5E222) %547 = call double @llvm.fma.f64(double %546, double %544, double noundef 0xBDBEC315D96D5F03) %548 = call double @llvm.fma.f64(double %547, double %544, double noundef 0xBDF03BE1B4B57207) %549 = call double @llvm.fma.f64(double %548, double %544, double noundef 0x3E345695F8B660F7) %550 = call double @llvm.fma.f64(double %549, double %544, double noundef 0x3E617069FCFCFFF4) %551 = call double @llvm.fma.f64(double %550, double %544, double noundef 0xBEA33825C36745EB) %552 = call double @llvm.fma.f64(double %551, double %544, double noundef 0xBEC9799D4F90931B) %553 = call double @llvm.fma.f64(double %552, double %544, double noundef 0x3F083A06E2F7DF13) %554 = call double @llvm.fma.f64(double %553, double %544, double noundef 0x3F26E4C2D53A7CF6) %555 = call double @llvm.fma.f64(double %554, double %544, double noundef 0xBF624B3409957B1C) %556 = call double @llvm.fma.f64(double %555, double %544, double noundef 0xBF7537544C3325DF) %557 = call double @llvm.fma.f64(double %556, double %544, double noundef 0x3FAB589D1DA138E2) %558 = call double @llvm.fma.f64(double %557, double %544, double noundef 0x3FAAE8A39F51AD13) %559 = call double @llvm.fma.f64(double %558, double %544, double noundef 0xBFD9C6CF582CBF7F) %560 = fmul double %544, %559 br label %__nv_j1.exit126 561: ; preds = %540 %562 = fcmp ugt double %516, 0x40213065E54C1AA9 br i1 %562, label %582, label %563 563: ; preds = %561 %564 = fadd double %516, 0xC01C0FF5F3B47250 %565 = fadd double %564, 0x3C9B226D9D243827 %566 = call double @llvm.fma.f64(double %565, double noundef 0x3CF3EB867515FAD6, double noundef 0xBD40E8363DB649A9) %567 = call double @llvm.fma.f64(double %566, double %565, double noundef 0xBD73B7DD4A6608FB) %568 = call double @llvm.fma.f64(double %567, double %565, double noundef 0x3DBEC5E01482C750) %569 = call double @llvm.fma.f64(double %568, double %565, double noundef 0x3DEC62BB9E882103) %570 = call double @llvm.fma.f64(double %569, double %565, double noundef 0xBE34462EED732A23) %571 = call double @llvm.fma.f64(double %570, double %565, double noundef 0xBE5D48DCAD7DC59B) %572 = call double @llvm.fma.f64(double %571, double %565, double noundef 0x3EA3026DF29167E9) %573 = call double @llvm.fma.f64(double %572, double %565, double noundef 0x3EC4255B0119666C) %574 = call double @llvm.fma.f64(double %573, double %565, double noundef 0xBF0796A751B32693) %575 = call double @llvm.fma.f64(double %574, double %565, double noundef 0xBF207358BBDBA284) %576 = call double @llvm.fma.f64(double %575, double %565, double noundef 0x3F613FBC7D6927B1) %577 = call double @llvm.fma.f64(double %576, double %565, double noundef 0x3F69A4B292E3DD75) %578 = call double @llvm.fma.f64(double %577, double %565, double noundef 0xBFA80C83BDEEE4FB) %579 = call double @llvm.fma.f64(double %578, double %565, double noundef 0xBF95E70DC60362BF) %580 = call double @llvm.fma.f64(double %579, double %565, double noundef 0x3FD33518B3874E8A) %581 = fmul double %565, %580 br label %__nv_j1.exit126 582: ; preds = %561 %583 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %584 = icmp eq i32 %583, 200 br i1 %584, label %591, label %585 585: ; preds = %582 %586 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %587 = icmp eq i32 %586, 350 br i1 %587, label %591, label %588 588: ; preds = %585 %589 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %590 = icmp eq i32 %589, 370 br i1 %590, label %591, label %593 591: ; preds = %588, %585, %582 %592 = fcmp oeq double %516, 0x7FF0000000000000 br label %__nv_isinfd.exit.i117 593: ; preds = %588 %594 = call i32 @llvm.nvvm.d2i.lo(double %516) #139 %595 = call i32 @llvm.nvvm.d2i.hi(double %516) #139 %596 = and i32 %595, 2147483647 %597 = icmp eq i32 %596, 2146435072 %598 = icmp eq i32 %594, 0 %599 = select i1 %597, i1 %598, i1 false br label %__nv_isinfd.exit.i117 __nv_isinfd.exit.i117: ; preds = %593, %591 %.021.in = phi i1 [ %592, %591 ], [ %599, %593 ] br i1 %.021.in, label %__nv_j1.exit126, label %600 600: ; preds = %__nv_isinfd.exit.i117 %601 = call double @llvm.nvvm.rcp.approx.ftz.d(double %516) #139 %602 = fneg double %516 %603 = call double @llvm.fma.f64(double %602, double %601, double noundef 1.000000e+00) %604 = call double @llvm.fma.f64(double %603, double %603, double %603) %605 = call double @llvm.fma.f64(double %604, double %601, double %601) %606 = fmul double %605, %605 %607 = call double @llvm.fma.f64(double %606, double noundef 0x40CD02EA3F2F6751, double noundef 0xC099C06322A3F8BE) %608 = call double @llvm.fma.f64(double %607, double %606, double noundef 0x405B89354DA77324) %609 = call double @llvm.fma.f64(double %608, double %606, double noundef 0xC01E352294653188) %610 = call double @llvm.fma.f64(double %609, double %606, double noundef 0x3FE9BC7DB16BD7A7) %611 = call double @llvm.fma.f64(double %610, double %606, double noundef 0xBFC8BFE1C3A4F741) %612 = call double @llvm.fma.f64(double %611, double %606, double noundef 0x3FC7FFFFF0D00BE2) %613 = call double @llvm.fma.f64(double %612, double %606, double noundef 0x3FF00000000068CC) %614 = call double @llvm.fma.f64(double %606, double noundef 0xC18DA26B212FDC9A, double noundef 0x415A30AC6857BEE0) %615 = call double @llvm.fma.f64(double %614, double %606, double noundef 0xC11764222AD7C910) %616 = call double @llvm.fma.f64(double %615, double %606, double noundef 0x40CEB02E0C306857) %617 = call double @llvm.fma.f64(double %616, double %606, double noundef 0xC08351859FA2B23B) %618 = call double @llvm.fma.f64(double %617, double %606, double noundef 0x403E65A07AF51F42) %619 = call double @llvm.fma.f64(double %618, double %606, double noundef 0xC002F2B817F77A57) %620 = call double @llvm.fma.f64(double %619, double %606, double noundef 0x3FD7BCC34DA069FD) %621 = call double @llvm.fma.f64(double %620, double %606, double noundef 0xBFC4FFFFF8A44463) %622 = call double @llvm.fma.f64(double %621, double %606, double noundef 0x3FD7FFFFFFFF5CD7) %623 = call double @llvm.fma.f64(double %622, double %605, double %516) %624 = call double @llvm.nvvm.rsqrt.approx.d(double %516) #139 %625 = fmul double %624, 0x3FE9884533D43651 %626 = fmul double %625, %613 %627 = fmul double %623, 0x3FE45F306DC9C883 %628 = call i32 @llvm.nvvm.d2i.rn(double %627) #139 store i32 %628, i32* %q.i.i.i105, align 4, !noalias !68 %629 = sitofp i32 %628 to double %630 = fneg double %629 %631 = call double @llvm.fma.f64(double %630, double noundef 0x3FF921FB54442D18, double %623) %632 = call double @llvm.fma.f64(double %630, double noundef 0x3C91A62633145C00, double %631) %633 = call double @llvm.fma.f64(double %630, double noundef 0x397B839A252049C0, double %632) %634 = call double @llvm.fabs.f64(double %623) %635 = fcmp ult double %634, 0x41E0000000000000 br i1 %635, label %__internal_trig_reduction_kerneld.exit.i.i118, label %636 636: ; preds = %600 %637 = call fastcc double @__internal_trig_reduction_slowpathd(double %623, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i105) #139 %.pre53 = load i32, i32* %q.i.i.i105, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i118 __internal_trig_reduction_kerneld.exit.i.i118: ; preds = %636, %600 %638 = phi i32 [ %.pre53, %636 ], [ %628, %600 ] %t.i.i.i104.0 = phi double [ %637, %636 ], [ %633, %600 ] %639 = and i32 %638, 3 %640 = uitofp i32 %639 to double %641 = fadd double %t.i.i.i104.0, 0xC002D97C7F3321D2 %642 = fmul double %640, 0x3FF921FB54442D18 %643 = fadd double %641, %642 %644 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %645 = icmp eq i32 %644, 350 br i1 %645, label %649, label %646 646: ; preds = %__internal_trig_reduction_kerneld.exit.i.i118 %647 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %648 = icmp eq i32 %647, 370 br i1 %648, label %649, label %708 649: ; preds = %646, %__internal_trig_reduction_kerneld.exit.i.i118 %650 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %651 = icmp eq i32 %650, 200 br i1 %651, label %658, label %652 652: ; preds = %649 %653 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %654 = icmp eq i32 %653, 350 br i1 %654, label %658, label %655 655: ; preds = %652 %656 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %657 = icmp eq i32 %656, 370 br i1 %657, label %658, label %661 658: ; preds = %655, %652, %649 %659 = call double @llvm.fabs.f64(double %643) %660 = fcmp oeq double %659, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i119 661: ; preds = %655 %662 = call i32 @llvm.nvvm.d2i.lo(double %643) #139 %663 = call i32 @llvm.nvvm.d2i.hi(double %643) #139 %664 = and i32 %663, 2147483647 %665 = icmp eq i32 %664, 2146435072 %666 = icmp eq i32 %662, 0 %667 = select i1 %665, i1 %666, i1 false br label %__nv_isinfd.exit.i.i.i.i119 __nv_isinfd.exit.i.i.i.i119: ; preds = %661, %658 %.017.in = phi i1 [ %660, %658 ], [ %667, %661 ] br i1 %.017.in, label %668, label %670 668: ; preds = %__nv_isinfd.exit.i.i.i.i119 %669 = fmul double %643, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i120 670: ; preds = %__nv_isinfd.exit.i.i.i.i119 %671 = fmul double %643, 0x3FE45F306DC9C883 %672 = call i32 @llvm.nvvm.d2i.rn(double %671) #139 store i32 %672, i32* %q.i.i.i.i.i91, align 4, !noalias !68 %673 = sitofp i32 %672 to double %674 = fneg double %673 %675 = call double @llvm.fma.f64(double %674, double noundef 0x3FF921FB54442D18, double %643) %676 = call double @llvm.fma.f64(double %674, double noundef 0x3C91A62633145C00, double %675) %677 = call double @llvm.fma.f64(double %674, double noundef 0x397B839A252049C0, double %676) %678 = call double @llvm.fabs.f64(double %643) %679 = fcmp ult double %678, 0x41E0000000000000 br i1 %679, label %__internal_trig_reduction_kerneld.exit.i.i.i.i120, label %680 680: ; preds = %670 %681 = call fastcc double @__internal_trig_reduction_slowpathd(double %643, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i91) #139 %.pre55 = load i32, i32* %q.i.i.i.i.i91, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i120 __internal_trig_reduction_kerneld.exit.i.i.i.i120: ; preds = %670, %680, %668 %i.i.i.i.i98.0 = phi i32 [ 0, %668 ], [ %.pre55, %680 ], [ %672, %670 ] %.016 = phi double [ %669, %668 ], [ %681, %680 ], [ %677, %670 ] %682 = fmul double %.016, %.016 %683 = call double @llvm.fma.f64(double %682, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %684 = call double @llvm.fma.f64(double %683, double %682, double noundef 0xBE927E4F8E06E6D9) %685 = call double @llvm.fma.f64(double %684, double %682, double noundef 0x3EFA01A019DDBCE9) %686 = call double @llvm.fma.f64(double %685, double %682, double noundef 0xBF56C16C16C15D47) %687 = call double @llvm.fma.f64(double %686, double %682, double noundef 0x3FA5555555555551) %688 = call double @llvm.fma.f64(double %687, double %682, double noundef -5.000000e-01) %689 = call double @llvm.fma.f64(double %688, double %682, double noundef 1.000000e+00) %690 = call double @llvm.fma.f64(double %682, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %691 = call double @llvm.fma.f64(double %690, double %682, double noundef 0x3EC71DE369ACE392) %692 = call double @llvm.fma.f64(double %691, double %682, double noundef 0xBF2A01A019DB62A1) %693 = call double @llvm.fma.f64(double %692, double %682, double noundef 0x3F81111111110818) %694 = call double @llvm.fma.f64(double %693, double %682, double noundef 0xBFC5555555555554) %695 = call double @llvm.fma.f64(double %694, double %682, double noundef 0.000000e+00) %696 = call double @llvm.fma.f64(double %695, double %.016, double %.016) %697 = call i32 @llvm.nvvm.d2i.hi(double %696) #139 %698 = call i32 @llvm.nvvm.d2i.lo(double %696) #139 %699 = xor i32 %697, -2147483648 %700 = call double @llvm.nvvm.lohi.i2d(i32 %698, i32 %699) #139 %701 = and i32 %i.i.i.i.i98.0, 1 %.not34 = icmp eq i32 %701, 0 %spec.select7 = select i1 %.not34, double %689, double %700 %702 = and i32 %i.i.i.i.i98.0, 2 %.not35 = icmp eq i32 %702, 0 br i1 %.not35, label %__internal_cos_offset.exit.i125, label %703 703: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i120 %704 = call i32 @llvm.nvvm.d2i.hi(double %spec.select7) #139 %705 = call i32 @llvm.nvvm.d2i.lo(double %spec.select7) #139 %706 = xor i32 %704, -2147483648 %707 = call double @llvm.nvvm.lohi.i2d(i32 %705, i32 %706) #139 br label %__internal_cos_offset.exit.i125 708: ; preds = %646 %709 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %710 = icmp eq i32 %709, 200 br i1 %710, label %717, label %711 711: ; preds = %708 %712 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %713 = icmp eq i32 %712, 350 br i1 %713, label %717, label %714 714: ; preds = %711 %715 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %716 = icmp eq i32 %715, 370 br i1 %716, label %717, label %720 717: ; preds = %714, %711, %708 %718 = call double @llvm.fabs.f64(double %643) %719 = fcmp oeq double %718, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i122 720: ; preds = %714 %721 = call i32 @llvm.nvvm.d2i.lo(double %643) #139 %722 = call i32 @llvm.nvvm.d2i.hi(double %643) #139 %723 = and i32 %722, 2147483647 %724 = icmp eq i32 %723, 2146435072 %725 = icmp eq i32 %721, 0 %726 = select i1 %724, i1 %725, i1 false br label %__nv_isinfd.exit.i.i.i122 __nv_isinfd.exit.i.i.i122: ; preds = %720, %717 %.018.in = phi i1 [ %719, %717 ], [ %726, %720 ] br i1 %.018.in, label %727, label %729 727: ; preds = %__nv_isinfd.exit.i.i.i122 %728 = fmul double %643, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i124 729: ; preds = %__nv_isinfd.exit.i.i.i122 %730 = fmul double %643, 0x3FE45F306DC9C883 %731 = call i32 @llvm.nvvm.d2i.rn(double %730) #139 store i32 %731, i32* %q.i.i.i.i75, align 4, !noalias !68 %732 = sitofp i32 %731 to double %733 = fneg double %732 %734 = call double @llvm.fma.f64(double %733, double noundef 0x3FF921FB54442D18, double %643) %735 = call double @llvm.fma.f64(double %733, double noundef 0x3C91A62633145C00, double %734) %736 = call double @llvm.fma.f64(double %733, double noundef 0x397B839A252049C0, double %735) %737 = call double @llvm.fabs.f64(double %643) %738 = fcmp ult double %737, 0x41E0000000000000 br i1 %738, label %__internal_sin_cos_kerneld.exit.i.i.i124, label %739 739: ; preds = %729 %740 = call fastcc double @__internal_trig_reduction_slowpathd(double %643, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i75) #139 %.pre54 = load i32, i32* %q.i.i.i.i75, align 4 br label %__internal_sin_cos_kerneld.exit.i.i.i124 __internal_sin_cos_kerneld.exit.i.i.i124: ; preds = %729, %739, %727 %i.i.i.i102.0 = phi i32 [ 0, %727 ], [ %.pre54, %739 ], [ %731, %729 ] %z.i.i.i101.0 = phi double [ %728, %727 ], [ %740, %739 ], [ %736, %729 ] %741 = add nsw i32 %i.i.i.i102.0, 1 %742 = shl i32 %741, 3 %743 = and i32 %742, 8 %744 = zext i32 %743 to i64 %745 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %744 %746 = fmul double %z.i.i.i101.0, %z.i.i.i101.0 %747 = and i32 %741, 1 %.not25 = icmp eq i32 %747, 0 %748 = select i1 %.not25, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %749 = getelementptr inbounds double, double addrspace(1)* %745, i64 1 %750 = load double, double addrspace(1)* %749, align 8 %751 = call double @llvm.fma.f64(double noundef %748, double %746, double %750) %752 = getelementptr inbounds double, double addrspace(1)* %745, i64 2 %753 = load double, double addrspace(1)* %752, align 8 %754 = call double @llvm.fma.f64(double %751, double %746, double %753) %755 = getelementptr inbounds double, double addrspace(1)* %745, i64 3 %756 = load double, double addrspace(1)* %755, align 8 %757 = call double @llvm.fma.f64(double %754, double %746, double %756) %758 = getelementptr inbounds double, double addrspace(1)* %745, i64 4 %759 = load double, double addrspace(1)* %758, align 8 %760 = call double @llvm.fma.f64(double %757, double %746, double %759) %761 = getelementptr inbounds double, double addrspace(1)* %745, i64 5 %762 = load double, double addrspace(1)* %761, align 8 %763 = call double @llvm.fma.f64(double %760, double %746, double %762) %764 = getelementptr inbounds double, double addrspace(1)* %745, i64 6 %765 = load double, double addrspace(1)* %764, align 8 %766 = call double @llvm.fma.f64(double %763, double %746, double %765) %767 = call double @llvm.fma.f64(double %766, double %z.i.i.i101.0, double %z.i.i.i101.0) %768 = call double @llvm.fma.f64(double %766, double %746, double noundef 1.000000e+00) %spec.select8 = select i1 %.not25, double %767, double %768 %769 = and i32 %741, 2 %.not27 = icmp eq i32 %769, 0 %770 = call double @llvm.fma.f64(double %spec.select8, double noundef -1.000000e+00, double noundef 0.000000e+00) %.120 = select i1 %.not27, double %spec.select8, double %770 br label %__internal_cos_offset.exit.i125 __internal_cos_offset.exit.i125: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i120, %703, %__internal_sin_cos_kerneld.exit.i.i.i124 %.015 = phi double [ %.120, %__internal_sin_cos_kerneld.exit.i.i.i124 ], [ %707, %703 ], [ %spec.select7, %__internal_trig_reduction_kerneld.exit.i.i.i.i120 ] %771 = fmul double %626, %.015 br label %__nv_j1.exit126 __nv_j1.exit126: ; preds = %542, %__internal_cos_offset.exit.i125, %__nv_isinfd.exit.i117, %563, %523 %r.i111.3 = phi double [ %539, %523 ], [ %560, %542 ], [ %581, %563 ], [ %771, %__internal_cos_offset.exit.i125 ], [ 0.000000e+00, %__nv_isinfd.exit.i117 ] %772 = fcmp olt double %a, 0.000000e+00 %773 = fneg double %r.i111.3 %r.i111.4 = select i1 %772, double %773, double %r.i111.3 %774 = fcmp olt double %516, 1.000000e-30 %775 = fmul double %a, 5.000000e-01 %r.i111.5 = select i1 %774, double %775, double %r.i111.4 %776 = fcmp ugt double %516, 0x400FB319F277BBE5 br i1 %776, label %797, label %777 777: ; preds = %__nv_j1.exit126 %778 = fadd double %516, 0xC0033D152E971B40 %779 = fadd double %778, 0x3CA0F539D7DA258E %780 = call double @llvm.fma.f64(double %779, double noundef 0xBCC0D18564C48C61, double noundef 0xBCFCF8F9A8C294BC) %781 = call double @llvm.fma.f64(double %780, double %779, double noundef 0x3D3FAB983CAE498B) %782 = call double @llvm.fma.f64(double %781, double %779, double noundef 0x3D7CD7C018579B88) %783 = call double @llvm.fma.f64(double %782, double %779, double noundef 0xBDBBDD2342D64FDD) %784 = call double @llvm.fma.f64(double %783, double %779, double noundef 0xBDF5C2D9416B1E2B) %785 = call double @llvm.fma.f64(double %784, double %779, double noundef 0x3E32951D73174DD5) %786 = call double @llvm.fma.f64(double %785, double %779, double noundef 0x3E67FF99802CAEB5) %787 = call double @llvm.fma.f64(double %786, double %779, double noundef 0xBEA1CCE305C4C9F7) %788 = call double @llvm.fma.f64(double %787, double %779, double noundef 0xBED232C77E29E1BB) %789 = call double @llvm.fma.f64(double %788, double %779, double noundef 0x3F06ED3B9F0EF757) %790 = call double @llvm.fma.f64(double %789, double %779, double noundef 0x3F315382BA096A62) %791 = call double @llvm.fma.f64(double %790, double %779, double noundef 0xBF61F992590D1AE4) %792 = call double @llvm.fma.f64(double %791, double %779, double noundef 0xBF81BB1CBE1A465F) %793 = call double @llvm.fma.f64(double %792, double %779, double noundef 0x3FACFAE864368D84) %794 = call double @llvm.fma.f64(double %793, double %779, double noundef 0x3FBBA1DEEA0294A3) %795 = call double @llvm.fma.f64(double %794, double %779, double noundef 0xBFE09CDB36551280) %796 = fmul double %779, %795 br label %.lr.ph 797: ; preds = %__nv_j1.exit126 %798 = fcmp ugt double %516, 0x401C58FD1A62F5EC br i1 %798, label %819, label %799 799: ; preds = %797 %800 = fadd double %516, 0xC016148F5B2C2E45 %801 = fadd double %800, 0xBC975054CD60A517 %802 = call double @llvm.fma.f64(double %801, double noundef 0x3CBCB0A8F126B343, double noundef 0x3CF83FD1F333EB61) %803 = call double @llvm.fma.f64(double %802, double %801, double noundef 0xBD4100E33E3FB413) %804 = call double @llvm.fma.f64(double %803, double %801, double noundef 0xBD7846076D004627) %805 = call double @llvm.fma.f64(double %804, double %801, double noundef 0x3DBE2F1D4F90720D) %806 = call double @llvm.fma.f64(double %805, double %801, double noundef 0x3DF1D03B1E4A119B) %807 = call double @llvm.fma.f64(double %806, double %801, double noundef 0xBE341D72B1B3BCE9) %808 = call double @llvm.fma.f64(double %807, double %801, double noundef 0xBE62DA37CE2A9EF8) %809 = call double @llvm.fma.f64(double %808, double %801, double noundef 0x3EA32E6D9974F763) %810 = call double @llvm.fma.f64(double %809, double %801, double noundef 0x3ECAD77D744A1879) %811 = call double @llvm.fma.f64(double %810, double %801, double noundef 0xBF0863F481A37337) %812 = call double @llvm.fma.f64(double %811, double %801, double noundef 0xBF26F641F418F0F4) %813 = call double @llvm.fma.f64(double %812, double %801, double noundef 0x3F627E31FE9A969E) %814 = call double @llvm.fma.f64(double %813, double %801, double noundef 0x3F72F7FFE9025628) %815 = call double @llvm.fma.f64(double %814, double %801, double noundef 0xBFAB2150CB41E8BF) %816 = call double @llvm.fma.f64(double %815, double %801, double noundef 0xBF9F8F72E7A848DE) %817 = call double @llvm.fma.f64(double %816, double %801, double noundef 0x3FD5C6E60A097823) %818 = fmul double %801, %817 br label %.lr.ph 819: ; preds = %797 %820 = fcmp ugt double %516, 0x402471FCB6A7A8C0 br i1 %820, label %841, label %821 821: ; preds = %819 %822 = fadd double %516, 0xC0214EB56CCCDECA %823 = fadd double %822, 0x3CB51970714C7C25 %824 = call double @llvm.fma.f64(double %823, double noundef 0xBCBDB7FFCF659E24, double noundef 0xBCF4B3A71AAAC629) %825 = call double @llvm.fma.f64(double %824, double %823, double noundef 0x3D417EC150ECDCE7) %826 = call double @llvm.fma.f64(double %825, double %823, double noundef 0x3D7438F5EA1D10B2) %827 = call double @llvm.fma.f64(double %826, double %823, double noundef 0xBDBEDAE7EC2C9E87) %828 = call double @llvm.fma.f64(double %827, double %823, double noundef 0xBDECADD2C4B91F58) %829 = call double @llvm.fma.f64(double %828, double %823, double noundef 0x3E34582C8EE12204) %830 = call double @llvm.fma.f64(double %829, double %823, double noundef 0x3E5CEDA451DD20F8) %831 = call double @llvm.fma.f64(double %830, double %823, double noundef 0xBEA30E8CC3165E2F) %832 = call double @llvm.fma.f64(double %831, double %823, double noundef 0xBEC3324842BB1A2E) %833 = call double @llvm.fma.f64(double %832, double %823, double noundef 0x3F07800BC54FBDDB) %834 = call double @llvm.fma.f64(double %833, double %823, double noundef 0x3F1D79605276949A) %835 = call double @llvm.fma.f64(double %834, double %823, double noundef 0xBF60E0D60385A629) %836 = call double @llvm.fma.f64(double %835, double %823, double noundef 0xBF648E63600D82F3) %837 = call double @llvm.fma.f64(double %836, double %823, double noundef 0x3FA68B984EC6493A) %838 = call double @llvm.fma.f64(double %837, double %823, double noundef 0x3F900F7FCF183E0B) %839 = call double @llvm.fma.f64(double %838, double %823, double noundef 0xBFD15F7977A772D4) %840 = fmul double %823, %839 br label %.lr.ph 841: ; preds = %819 %842 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %843 = icmp eq i32 %842, 200 br i1 %843, label %850, label %844 844: ; preds = %841 %845 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %846 = icmp eq i32 %845, 350 br i1 %846, label %850, label %847 847: ; preds = %844 %848 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %849 = icmp eq i32 %848, 370 br i1 %849, label %850, label %852 850: ; preds = %847, %844, %841 %851 = fcmp oeq double %516, 0x7FF0000000000000 br label %__nv_isinfd.exit.i179 852: ; preds = %847 %853 = call i32 @llvm.nvvm.d2i.lo(double %516) #139 %854 = call i32 @llvm.nvvm.d2i.hi(double %516) #139 %855 = and i32 %854, 2147483647 %856 = icmp eq i32 %855, 2146435072 %857 = icmp eq i32 %853, 0 %858 = select i1 %856, i1 %857, i1 false br label %__nv_isinfd.exit.i179 __nv_isinfd.exit.i179: ; preds = %852, %850 %.028.in = phi i1 [ %851, %850 ], [ %858, %852 ] br i1 %.028.in, label %.lr.ph, label %859 859: ; preds = %__nv_isinfd.exit.i179 %860 = call double @llvm.nvvm.rcp.approx.ftz.d(double %516) #139 %861 = fneg double %516 %862 = call double @llvm.fma.f64(double %861, double %860, double noundef 1.000000e+00) %863 = call double @llvm.fma.f64(double %862, double %862, double %862) %864 = call double @llvm.fma.f64(double %863, double %860, double %860) %865 = fmul double %864, %864 %866 = call double @llvm.fma.f64(double %865, double noundef 0xC0D115CB8C11A9DC, double noundef 0x409927467A655012) %867 = call double @llvm.fma.f64(double %866, double %865, double noundef 0xC05751787E247BD4) %868 = call double @llvm.fma.f64(double %867, double %865, double noundef 0x401704C4E5FC36B2) %869 = call double @llvm.fma.f64(double %868, double %865, double noundef 0xBFE15B747A2FD531) %870 = call double @llvm.fma.f64(double %869, double %865, double noundef 0x3FBA7FEACF6CB79B) %871 = call double @llvm.fma.f64(double %870, double %865, double noundef 0xBFAFFFFFEDDCF548) %872 = call double @llvm.fma.f64(double %871, double %865, double noundef 0x3FEFFFFFFFFFC9E5) %873 = call double @llvm.fma.f64(double %865, double noundef 0xC14602FE1C34685E, double noundef 0x410ECD4523B12B84) %874 = call double @llvm.fma.f64(double %873, double %865, double noundef 0xC0C7A2FC1972F05A) %875 = call double @llvm.fma.f64(double %874, double %865, double noundef 0x407EBA131F7E5BEB) %876 = call double @llvm.fma.f64(double %875, double %865, double noundef 0xC0373B92E6E7CC7D) %877 = call double @llvm.fma.f64(double %876, double %865, double noundef 0x3FFA31BEE63A2F08) %878 = call double @llvm.fma.f64(double %877, double %865, double noundef 0xBFCAD320104D5D05) %879 = call double @llvm.fma.f64(double %878, double %865, double noundef 0x3FB0AAAA9C76D07E) %880 = call double @llvm.fma.f64(double %879, double %865, double noundef 0xBFBFFFFFFFFDACEC) %881 = call double @llvm.fma.f64(double %880, double %864, double %516) %882 = call double @llvm.nvvm.rsqrt.approx.d(double %516) #139 %883 = fmul double %882, 0x3FE9884533D43651 %884 = fmul double %883, %872 %885 = fmul double %881, 0x3FE45F306DC9C883 %886 = call i32 @llvm.nvvm.d2i.rn(double %885) #139 store i32 %886, i32* %q.i.i.i167, align 4, !noalias !68 %887 = sitofp i32 %886 to double %888 = fneg double %887 %889 = call double @llvm.fma.f64(double %888, double noundef 0x3FF921FB54442D18, double %881) %890 = call double @llvm.fma.f64(double %888, double noundef 0x3C91A62633145C00, double %889) %891 = call double @llvm.fma.f64(double %888, double noundef 0x397B839A252049C0, double %890) %892 = call double @llvm.fabs.f64(double %881) %893 = fcmp ult double %892, 0x41E0000000000000 br i1 %893, label %__internal_trig_reduction_kerneld.exit.i.i180, label %894 894: ; preds = %859 %895 = call fastcc double @__internal_trig_reduction_slowpathd(double %881, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i167) #139 %.pre56 = load i32, i32* %q.i.i.i167, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i180 __internal_trig_reduction_kerneld.exit.i.i180: ; preds = %894, %859 %896 = phi i32 [ %.pre56, %894 ], [ %886, %859 ] %t.i.i.i166.0 = phi double [ %895, %894 ], [ %891, %859 ] %897 = and i32 %896, 3 %898 = uitofp i32 %897 to double %899 = fadd double %t.i.i.i166.0, 0xBFE921FB54442D18 %900 = fmul double %898, 0x3FF921FB54442D18 %901 = fadd double %899, %900 %902 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %903 = icmp eq i32 %902, 350 br i1 %903, label %907, label %904 904: ; preds = %__internal_trig_reduction_kerneld.exit.i.i180 %905 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %906 = icmp eq i32 %905, 370 br i1 %906, label %907, label %966 907: ; preds = %904, %__internal_trig_reduction_kerneld.exit.i.i180 %908 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %909 = icmp eq i32 %908, 200 br i1 %909, label %916, label %910 910: ; preds = %907 %911 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %912 = icmp eq i32 %911, 350 br i1 %912, label %916, label %913 913: ; preds = %910 %914 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %915 = icmp eq i32 %914, 370 br i1 %915, label %916, label %919 916: ; preds = %913, %910, %907 %917 = call double @llvm.fabs.f64(double %901) %918 = fcmp oeq double %917, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i.i181 919: ; preds = %913 %920 = call i32 @llvm.nvvm.d2i.lo(double %901) #139 %921 = call i32 @llvm.nvvm.d2i.hi(double %901) #139 %922 = and i32 %921, 2147483647 %923 = icmp eq i32 %922, 2146435072 %924 = icmp eq i32 %920, 0 %925 = select i1 %923, i1 %924, i1 false br label %__nv_isinfd.exit.i.i.i.i181 __nv_isinfd.exit.i.i.i.i181: ; preds = %919, %916 %.024.in = phi i1 [ %918, %916 ], [ %925, %919 ] br i1 %.024.in, label %926, label %928 926: ; preds = %__nv_isinfd.exit.i.i.i.i181 %927 = fmul double %901, 0.000000e+00 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i182 928: ; preds = %__nv_isinfd.exit.i.i.i.i181 %929 = fmul double %901, 0x3FE45F306DC9C883 %930 = call i32 @llvm.nvvm.d2i.rn(double %929) #139 store i32 %930, i32* %q.i.i.i.i.i153, align 4, !noalias !68 %931 = sitofp i32 %930 to double %932 = fneg double %931 %933 = call double @llvm.fma.f64(double %932, double noundef 0x3FF921FB54442D18, double %901) %934 = call double @llvm.fma.f64(double %932, double noundef 0x3C91A62633145C00, double %933) %935 = call double @llvm.fma.f64(double %932, double noundef 0x397B839A252049C0, double %934) %936 = call double @llvm.fabs.f64(double %901) %937 = fcmp ult double %936, 0x41E0000000000000 br i1 %937, label %__internal_trig_reduction_kerneld.exit.i.i.i.i182, label %938 938: ; preds = %928 %939 = call fastcc double @__internal_trig_reduction_slowpathd(double %901, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i.i153) #139 %.pre58 = load i32, i32* %q.i.i.i.i.i153, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i.i182 __internal_trig_reduction_kerneld.exit.i.i.i.i182: ; preds = %928, %938, %926 %i.i.i.i.i160.0 = phi i32 [ 0, %926 ], [ %.pre58, %938 ], [ %930, %928 ] %.023 = phi double [ %927, %926 ], [ %939, %938 ], [ %935, %928 ] %940 = fmul double %.023, %.023 %941 = call double @llvm.fma.f64(double %940, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %942 = call double @llvm.fma.f64(double %941, double %940, double noundef 0xBE927E4F8E06E6D9) %943 = call double @llvm.fma.f64(double %942, double %940, double noundef 0x3EFA01A019DDBCE9) %944 = call double @llvm.fma.f64(double %943, double %940, double noundef 0xBF56C16C16C15D47) %945 = call double @llvm.fma.f64(double %944, double %940, double noundef 0x3FA5555555555551) %946 = call double @llvm.fma.f64(double %945, double %940, double noundef -5.000000e-01) %947 = call double @llvm.fma.f64(double %946, double %940, double noundef 1.000000e+00) %948 = call double @llvm.fma.f64(double %940, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %949 = call double @llvm.fma.f64(double %948, double %940, double noundef 0x3EC71DE369ACE392) %950 = call double @llvm.fma.f64(double %949, double %940, double noundef 0xBF2A01A019DB62A1) %951 = call double @llvm.fma.f64(double %950, double %940, double noundef 0x3F81111111110818) %952 = call double @llvm.fma.f64(double %951, double %940, double noundef 0xBFC5555555555554) %953 = call double @llvm.fma.f64(double %952, double %940, double noundef 0.000000e+00) %954 = call double @llvm.fma.f64(double %953, double %.023, double %.023) %955 = call i32 @llvm.nvvm.d2i.hi(double %954) #139 %956 = call i32 @llvm.nvvm.d2i.lo(double %954) #139 %957 = xor i32 %955, -2147483648 %958 = call double @llvm.nvvm.lohi.i2d(i32 %956, i32 %957) #139 %959 = and i32 %i.i.i.i.i160.0, 1 %.not32 = icmp eq i32 %959, 0 %spec.select10 = select i1 %.not32, double %947, double %958 %960 = and i32 %i.i.i.i.i160.0, 2 %.not33 = icmp eq i32 %960, 0 br i1 %.not33, label %__internal_cos_offset.exit.i187, label %961 961: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i182 %962 = call i32 @llvm.nvvm.d2i.hi(double %spec.select10) #139 %963 = call i32 @llvm.nvvm.d2i.lo(double %spec.select10) #139 %964 = xor i32 %962, -2147483648 %965 = call double @llvm.nvvm.lohi.i2d(i32 %963, i32 %964) #139 br label %__internal_cos_offset.exit.i187 966: ; preds = %904 %967 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %968 = icmp eq i32 %967, 200 br i1 %968, label %975, label %969 969: ; preds = %966 %970 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %971 = icmp eq i32 %970, 350 br i1 %971, label %975, label %972 972: ; preds = %969 %973 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %974 = icmp eq i32 %973, 370 br i1 %974, label %975, label %978 975: ; preds = %972, %969, %966 %976 = call double @llvm.fabs.f64(double %901) %977 = fcmp oeq double %976, 0x7FF0000000000000 br label %__nv_isinfd.exit.i.i.i184 978: ; preds = %972 %979 = call i32 @llvm.nvvm.d2i.lo(double %901) #139 %980 = call i32 @llvm.nvvm.d2i.hi(double %901) #139 %981 = and i32 %980, 2147483647 %982 = icmp eq i32 %981, 2146435072 %983 = icmp eq i32 %979, 0 %984 = select i1 %982, i1 %983, i1 false br label %__nv_isinfd.exit.i.i.i184 __nv_isinfd.exit.i.i.i184: ; preds = %978, %975 %.025.in = phi i1 [ %977, %975 ], [ %984, %978 ] br i1 %.025.in, label %985, label %987 985: ; preds = %__nv_isinfd.exit.i.i.i184 %986 = fmul double %901, 0.000000e+00 br label %__internal_sin_cos_kerneld.exit.i.i.i186 987: ; preds = %__nv_isinfd.exit.i.i.i184 %988 = fmul double %901, 0x3FE45F306DC9C883 %989 = call i32 @llvm.nvvm.d2i.rn(double %988) #139 store i32 %989, i32* %q.i.i.i.i137, align 4, !noalias !68 %990 = sitofp i32 %989 to double %991 = fneg double %990 %992 = call double @llvm.fma.f64(double %991, double noundef 0x3FF921FB54442D18, double %901) %993 = call double @llvm.fma.f64(double %991, double noundef 0x3C91A62633145C00, double %992) %994 = call double @llvm.fma.f64(double %991, double noundef 0x397B839A252049C0, double %993) %995 = call double @llvm.fabs.f64(double %901) %996 = fcmp ult double %995, 0x41E0000000000000 br i1 %996, label %__internal_trig_reduction_kerneld.exit.i.i.i185, label %997 997: ; preds = %987 %998 = call fastcc double @__internal_trig_reduction_slowpathd(double %901, i32* noalias nocapture nofree noundef nonnull writeonly align 4 dereferenceable(4) %q.i.i.i.i137) #139 %.pre57 = load i32, i32* %q.i.i.i.i137, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i185 __internal_trig_reduction_kerneld.exit.i.i.i185: ; preds = %997, %987 %999 = phi i32 [ %.pre57, %997 ], [ %989, %987 ] %t.i1.i.i.i136.0 = phi double [ %998, %997 ], [ %994, %987 ] %phi.bo28 = add i32 %999, 1 br label %__internal_sin_cos_kerneld.exit.i.i.i186 __internal_sin_cos_kerneld.exit.i.i.i186: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i185, %985 %i.i.i.i164.0 = phi i32 [ 1, %985 ], [ %phi.bo28, %__internal_trig_reduction_kerneld.exit.i.i.i185 ] %z.i.i.i163.0 = phi double [ %986, %985 ], [ %t.i1.i.i.i136.0, %__internal_trig_reduction_kerneld.exit.i.i.i185 ] %1000 = shl i32 %i.i.i.i164.0, 3 %1001 = and i32 %1000, 8 %1002 = zext i32 %1001 to i64 %1003 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %1002 %1004 = fmul double %z.i.i.i163.0, %z.i.i.i163.0 %1005 = and i32 %i.i.i.i164.0, 1 %.not29 = icmp eq i32 %1005, 0 %1006 = select i1 %.not29, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1007 = getelementptr inbounds double, double addrspace(1)* %1003, i64 1 %1008 = load double, double addrspace(1)* %1007, align 8 %1009 = call double @llvm.fma.f64(double noundef %1006, double %1004, double %1008) %1010 = getelementptr inbounds double, double addrspace(1)* %1003, i64 2 %1011 = load double, double addrspace(1)* %1010, align 8 %1012 = call double @llvm.fma.f64(double %1009, double %1004, double %1011) %1013 = getelementptr inbounds double, double addrspace(1)* %1003, i64 3 %1014 = load double, double addrspace(1)* %1013, align 8 %1015 = call double @llvm.fma.f64(double %1012, double %1004, double %1014) %1016 = getelementptr inbounds double, double addrspace(1)* %1003, i64 4 %1017 = load double, double addrspace(1)* %1016, align 8 %1018 = call double @llvm.fma.f64(double %1015, double %1004, double %1017) %1019 = getelementptr inbounds double, double addrspace(1)* %1003, i64 5 %1020 = load double, double addrspace(1)* %1019, align 8 %1021 = call double @llvm.fma.f64(double %1018, double %1004, double %1020) %1022 = getelementptr inbounds double, double addrspace(1)* %1003, i64 6 %1023 = load double, double addrspace(1)* %1022, align 8 %1024 = call double @llvm.fma.f64(double %1021, double %1004, double %1023) %1025 = call double @llvm.fma.f64(double %1024, double %z.i.i.i163.0, double %z.i.i.i163.0) %1026 = call double @llvm.fma.f64(double %1024, double %1004, double noundef 1.000000e+00) %spec.select11 = select i1 %.not29, double %1025, double %1026 %1027 = and i32 %i.i.i.i164.0, 2 %.not31 = icmp eq i32 %1027, 0 %1028 = call double @llvm.fma.f64(double %spec.select11, double noundef -1.000000e+00, double noundef 0.000000e+00) %.127 = select i1 %.not31, double %spec.select11, double %1028 br label %__internal_cos_offset.exit.i187 __internal_cos_offset.exit.i187: ; preds = %__internal_trig_reduction_kerneld.exit.i.i.i.i182, %961, %__internal_sin_cos_kerneld.exit.i.i.i186 %.022 = phi double [ %.127, %__internal_sin_cos_kerneld.exit.i.i.i186 ], [ %965, %961 ], [ %spec.select10, %__internal_trig_reduction_kerneld.exit.i.i.i.i182 ] %1029 = fmul double %884, %.022 br label %.lr.ph .lr.ph: ; preds = %777, %821, %__nv_isinfd.exit.i179, %__internal_cos_offset.exit.i187, %799 %r.i173.3 = phi double [ %796, %777 ], [ %818, %799 ], [ %840, %821 ], [ %1029, %__internal_cos_offset.exit.i187 ], [ 0.000000e+00, %__nv_isinfd.exit.i179 ] %1030 = add nsw i32 %n, -1 %1031 = add nsw i32 %n, -2 %xtraiter = and i32 %1030, 3 %1032 = icmp ult i32 %1031, 3 br i1 %1032, label %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa, label %.lr.ph.new .lr.ph.new: ; preds = %.lr.ph %unroll_iter = and i32 %1030, -4 br label %1033 1033: ; preds = %1033, %.lr.ph.new %jim1.038 = phi double [ %r.i173.3, %.lr.ph.new ], [ %1047, %1033 ] %ji.037 = phi double [ %r.i111.5, %.lr.ph.new ], [ %1052, %1033 ] %i.036 = phi i32 [ 1, %.lr.ph.new ], [ %1053, %1033 ] %niter = phi i32 [ 0, %.lr.ph.new ], [ %niter.next.3, %1033 ] %1034 = sitofp i32 %i.036 to double %1035 = fmul double %521, %1034 %1036 = fneg double %jim1.038 %1037 = call double @llvm.fma.f64(double %1035, double %ji.037, double %1036) %1038 = add nuw nsw i32 %i.036, 1 %1039 = sitofp i32 %1038 to double %1040 = fmul double %521, %1039 %1041 = fneg double %ji.037 %1042 = call double @llvm.fma.f64(double %1040, double %1037, double %1041) %1043 = add nuw nsw i32 %i.036, 2 %1044 = sitofp i32 %1043 to double %1045 = fmul double %521, %1044 %1046 = fneg double %1037 %1047 = call double @llvm.fma.f64(double %1045, double %1042, double %1046) %1048 = add nuw nsw i32 %i.036, 3 %1049 = sitofp i32 %1048 to double %1050 = fmul double %521, %1049 %1051 = fneg double %1042 %1052 = call double @llvm.fma.f64(double %1050, double %1047, double %1051) %1053 = add nuw nsw i32 %i.036, 4 %niter.next.3 = add i32 %niter, 4 %niter.ncmp.3.not = icmp eq i32 %niter.next.3, %unroll_iter br i1 %niter.ncmp.3.not, label %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa, label %1033 1054: ; preds = %515 %1055 = fdiv double 2.000000e+00, %a %1056 = mul nsw i32 %n, 60 %1057 = sitofp i32 %1056 to double %1058 = call double @llvm.sqrt.f64(double %1057) %1059 = fptosi double %1058 to i32 %1060 = add nsw i32 %1059, %n %1061 = and i32 %1060, -2 %1062 = icmp sgt i32 %1061, 0 br i1 %1062, label %__nv_fabsf.exit, label %__nv_j0.exit __nv_fabsf.exit: ; preds = %1054, %1078 %ji1.043 = phi double [ %jim12.0, %1078 ], [ 1.000000e+00, %1054 ] %i.142 = phi i32 [ %1079, %1078 ], [ %1061, %1054 ] %sum.041 = phi double [ %sum.2, %1078 ], [ 0.000000e+00, %1054 ] %lambda.040 = phi double [ %spec.select12, %1078 ], [ 0.000000e+00, %1054 ] %jip1.139 = phi double [ %jip1.2, %1078 ], [ 0.000000e+00, %1054 ] %1063 = sitofp i32 %i.142 to double %1064 = fmul double %1055, %1063 %1065 = fneg double %jip1.139 %1066 = call double @llvm.fma.f64(double %1064, double %ji1.043, double %1065) %1067 = fptrunc double %1066 to float %1068 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not23 = icmp eq i32 %1068, 0 %1069 = call float @llvm.nvvm.fabs.ftz.f(float %1067) #139 %1070 = call float @llvm.fabs.f32(float %1067) %.0 = select i1 %.not23, float %1070, float %1069 %1071 = fpext float %.0 to double %1072 = fcmp ogt double %1071, 1.000000e+15 br i1 %1072, label %1073, label %1078 1073: ; preds = %__nv_fabsf.exit %1074 = fmul double %1066, 1.000000e-15 %1075 = fmul double %ji1.043, 1.000000e-15 %1076 = fmul double %lambda.040, 1.000000e-15 %1077 = fmul double %sum.041, 1.000000e-15 br label %1078 1078: ; preds = %1073, %__nv_fabsf.exit %jip1.2 = phi double [ %1075, %1073 ], [ %ji1.043, %__nv_fabsf.exit ] %lambda.1 = phi double [ %1076, %1073 ], [ %lambda.040, %__nv_fabsf.exit ] %sum.1 = phi double [ %1077, %1073 ], [ %sum.041, %__nv_fabsf.exit ] %jim12.0 = phi double [ %1074, %1073 ], [ %1066, %__nv_fabsf.exit ] %1079 = add nsw i32 %i.142, -1 %1080 = icmp eq i32 %1079, %n %spec.select12 = select i1 %1080, double %jim12.0, double %lambda.1 %1081 = and i32 %i.142, 1 %.not24 = icmp eq i32 %1081, 0 %1082 = fmul double %jim12.0, 2.000000e+00 %1083 = select i1 %.not24, double -0.000000e+00, double %1082 %sum.2 = fadd double %sum.1, %1083 %1084 = icmp ugt i32 %i.142, 1 br i1 %1084, label %__nv_fabsf.exit, label %._crit_edge ._crit_edge: ; preds = %1078 %1085 = fsub double %sum.2, %jim12.0 %1086 = fdiv double %spec.select12, %1085 br label %__nv_j0.exit .__nv_j0.exit.loopexit_crit_edge.unr-lcssa: ; preds = %1033, %.lr.ph %.lcssa.ph = phi double [ undef, %.lr.ph ], [ %1052, %1033 ] %jim1.038.unr = phi double [ %r.i173.3, %.lr.ph ], [ %1047, %1033 ] %ji.037.unr = phi double [ %r.i111.5, %.lr.ph ], [ %1052, %1033 ] %i.036.unr = phi i32 [ 1, %.lr.ph ], [ %1053, %1033 ] %lcmp.mod.not = icmp eq i32 %xtraiter, 0 br i1 %lcmp.mod.not, label %__nv_j0.exit, label %.epil.preheader .epil.preheader: ; preds = %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa, %.epil.preheader %jim1.038.epil = phi double [ %ji.037.epil, %.epil.preheader ], [ %jim1.038.unr, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa ] %ji.037.epil = phi double [ %1090, %.epil.preheader ], [ %ji.037.unr, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa ] %i.036.epil = phi i32 [ %1091, %.epil.preheader ], [ %i.036.unr, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa ] %epil.iter = phi i32 [ %epil.iter.next, %.epil.preheader ], [ 0, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa ] %1087 = sitofp i32 %i.036.epil to double %1088 = fmul double %521, %1087 %1089 = fneg double %jim1.038.epil %1090 = call double @llvm.fma.f64(double %1088, double %ji.037.epil, double %1089) %1091 = add nuw nsw i32 %i.036.epil, 1 %epil.iter.next = add i32 %epil.iter, 1 %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter br i1 %epil.iter.cmp.not, label %__nv_j0.exit, label %.epil.preheader, !llvm.loop !89 __nv_j0.exit: ; preds = %.epil.preheader, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa, %1054, %._crit_edge, %513, %4, %48, %__nv_isinfd.exit.i, %__internal_cos_offset.exit.i, %26, %__nv_j1.exit %.01 = phi double [ %r.i50.5, %__nv_j1.exit ], [ %23, %4 ], [ %45, %26 ], [ %67, %48 ], [ %256, %__internal_cos_offset.exit.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ], [ 0xFFF8000000000000, %513 ], [ %1086, %._crit_edge ], [ -0.000000e+00, %1054 ], [ %.lcssa.ph, %.__nv_j0.exit.loopexit_crit_edge.unr-lcssa ], [ %1090, %.epil.preheader ] ret double %.01 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_erf(double %a) local_unnamed_addr #112 { __internal_mexpm1.exit: %0 = call double @llvm.fabs.f64(double %a) #140 %1 = call double @llvm.fma.f64(double %0, double noundef 0xBCF0679AFBA6F279, double noundef 0x3D47088FDB46FA5F) #140 %2 = call double @llvm.fma.f64(double %1, double %0, double noundef 0xBD8DF9F9B976A9B2) #140 %3 = call double @llvm.fma.f64(double %2, double %0, double noundef 0x3DC7F1F5590CC332) #140 %4 = call double @llvm.fma.f64(double %3, double %0, double noundef 0xBDFA28A3CD2D56C4) #140 %5 = call double @llvm.fma.f64(double %4, double %0, double noundef 0x3E2485EE67835925) #140 %6 = call double @llvm.fma.f64(double %5, double %0, double noundef 0xBE476DB45919F583) #140 %7 = call double @llvm.fma.f64(double %6, double %0, double noundef 0x3E62D698D98C8D71) #140 %8 = call double @llvm.fma.f64(double %7, double %0, double noundef 0xBE720A2C7155D5C6) #140 %9 = call double @llvm.fma.f64(double %8, double %0, double noundef 0xBE41D29B37CA1397) #140 %10 = call double @llvm.fma.f64(double %9, double %0, double noundef 0x3EA2EF6CC0F67A49) #140 %11 = call double @llvm.fma.f64(double %10, double %0, double noundef 0xBEC102B892333B6F) #140 %12 = call double @llvm.fma.f64(double %11, double %0, double noundef 0x3ECA30375BA9A84E) #140 %13 = call double @llvm.fma.f64(double %12, double %0, double noundef 0x3ECAAD18DEDEA43E) #140 %14 = call double @llvm.fma.f64(double %13, double %0, double noundef 0xBEFF05355BC5B225) #140 %15 = call double @llvm.fma.f64(double %14, double %0, double noundef 0x3F10E37A3108BC8B) #140 %16 = call double @llvm.fma.f64(double %15, double %0, double noundef 0x3EFB292D828E5CB2) #140 %17 = call double @llvm.fma.f64(double %16, double %0, double noundef 0xBF4356626EBF9BFA) #140 %18 = call double @llvm.fma.f64(double %17, double %0, double noundef 0x3F5BCA68F73D6AFC) #140 %19 = call double @llvm.fma.f64(double %18, double %0, double noundef 0xBF2B6B69EBBC280B) #140 %20 = call double @llvm.fma.f64(double %19, double %0, double noundef 0xBF9396685912A453) #140 %21 = call double @llvm.fma.f64(double %20, double %0, double noundef 0x3FBA4F4E2A1ABEF8) #140 %22 = call double @llvm.fma.f64(double %21, double %0, double noundef 0x3FE45F306DC9C8BB) #140 %23 = call double @llvm.fma.f64(double %22, double %0, double noundef 0x3FC06EBA8214DB69) #140 %24 = call double @llvm.fma.f64(double %23, double %0, double %0) #140 %25 = fsub double %0, %24 %26 = call double @llvm.fma.f64(double %23, double %0, double %25) #140 %27 = fneg double %24 %28 = fneg double %26 %29 = fptrunc double %27 to float %30 = fmul float %29, 0x3FF7154760000000 %31 = call float @llvm.round.f32(float %30) #140 %32 = fpext float %31 to double %33 = fneg double %32 %34 = call double @llvm.fma.f64(double %33, double noundef 0x3FE62E42FEFA39EF, double %27) #140 %35 = call double @llvm.fma.f64(double %34, double noundef 0x3E5AE904A4741B81, double noundef 0x3E928A27F89B6999) #140 %36 = call double @llvm.fma.f64(double %35, double %34, double noundef 0x3EC71DE715FF7E07) #140 %37 = call double @llvm.fma.f64(double %36, double %34, double noundef 0x3EFA019A6B0AC45A) #140 %38 = call double @llvm.fma.f64(double %37, double %34, double noundef 0x3F2A01A017EED94F) #140 %39 = call double @llvm.fma.f64(double %38, double %34, double noundef 0x3F56C16C17F2A71B) #140 %40 = call double @llvm.fma.f64(double %39, double %34, double noundef 0x3F811111111173C4) #140 %41 = call double @llvm.fma.f64(double %40, double %34, double noundef 0x3FA555555555211A) #140 %42 = call double @llvm.fma.f64(double %41, double %34, double noundef 0x3FC5555555555540) #140 %43 = call double @llvm.fma.f64(double %42, double %34, double noundef 0x3FE0000000000005) #140 %44 = fmul double %34, %43 %45 = call double @llvm.fma.f64(double %44, double %34, double %28) #140 %46 = fadd double %34, %45 %47 = call float @llvm.nvvm.ex2.approx.ftz.f(float %31) #142 %48 = fpext float %47 to double %49 = fsub double 1.000000e+00, %48 %50 = fneg double %46 %51 = call double @llvm.fma.f64(double %50, double %48, double %49) #140 %52 = fcmp oge double %0, 0x4017AFB48DC96626 %poly.0 = select i1 %52, double 1.000000e+00, double %51 %53 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %54 = call i32 @llvm.nvvm.d2i.lo(double %poly.0) #142 %55 = call i32 @llvm.nvvm.d2i.hi(double %poly.0) #142 %56 = and i32 %53, -2147483648 %57 = or i32 %55, %56 %58 = call double @llvm.nvvm.lohi.i2d(i32 %54, i32 %57) #142 ret double %58 } ; Function Attrs: noinline nounwind define dso_local double @__nv_erfinv(double %a) local_unnamed_addr #113 { __internal_fast_icmp_abs_lt.exit: %0 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %1 = bitcast i32 %0 to float %2 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %2, 0 %3 = call float @llvm.nvvm.fabs.ftz.f(float %1) #139 %4 = call float @llvm.fabs.f32(float %1) %.0 = select i1 %.not, float %4, float %3 %5 = fcmp olt float %.0, 1.875000e+00 br i1 %5, label %6, label %115 6: ; preds = %__internal_fast_icmp_abs_lt.exit %7 = fneg double %a %8 = call double @llvm.fma.f64(double %a, double %7, double noundef 1.000000e+00) %9 = call i32 @llvm.nvvm.d2i.hi(double %8) #139 %10 = call i32 @llvm.nvvm.d2i.lo(double %8) #139 %11 = lshr i32 %9, 20 %12 = and i32 %11, 2046 %13 = add nuw i32 %12, 2147482626 %14 = call double @llvm.nvvm.lohi.i2d(i32 %13, i32 noundef 1127219200) #139 %15 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %16 = fsub double %14, %15 %17 = and i32 %9, -2145386497 %18 = or i32 %17, 1071644672 %19 = call double @llvm.nvvm.lohi.i2d(i32 %10, i32 %18) #139 %20 = fadd double %19, -1.000000e+00 %21 = fadd double %19, 1.000000e+00 %22 = call double @llvm.nvvm.rcp.approx.ftz.d(double %21) #139 %23 = fneg double %21 %24 = call double @llvm.fma.f64(double %23, double %22, double noundef 1.000000e+00) %25 = call double @llvm.fma.f64(double %24, double %24, double %24) %26 = call double @llvm.fma.f64(double %25, double %22, double %22) %27 = fmul double %20, %26 %28 = call double @llvm.fma.f64(double %27, double noundef -2.000000e+00, double %20) %29 = fneg double %27 %30 = call double @llvm.fma.f64(double %29, double %20, double %28) %31 = call double @llvm.fma.f64(double %30, double %26, double %27) %32 = fmul double %31, %31 %33 = call double @llvm.fma.f64(double %32, double noundef 0x3FB5C5C218C775C9, double noundef 0x3FA55CF59CDC5D89) %34 = call double @llvm.fma.f64(double %33, double %32, double noundef 0x3FAEFD18CF6EBB9C) %35 = call double @llvm.fma.f64(double %34, double %32, double noundef 0x3FB10682EDCB8D1B) %36 = call double @llvm.fma.f64(double %35, double %32, double noundef 0x3FB3B1DD3AC7FC96) %37 = call double @llvm.fma.f64(double %36, double %32, double noundef 0x3FB745CB459B54A6) %38 = call double @llvm.fma.f64(double %37, double %32, double noundef 0x3FBC71C741A0669F) %39 = call double @llvm.fma.f64(double %38, double %32, double noundef 0x3FC249249209112E) %40 = call double @llvm.fma.f64(double %39, double %32, double noundef 0x3FC99999999A06C1) %41 = call double @llvm.fma.f64(double %40, double %32, double noundef 0x3FD5555555555535) %42 = fmul double %32, %41 %43 = call double @llvm.fma.f64(double %42, double %31, double %31) %44 = fadd double %43, %43 %45 = call double @llvm.fma.f64(double %16, double noundef 0x3FE62E42FEFA39EF, double %44) %46 = call i32 @llvm.nvvm.d2i.hi(double %45) #139 %47 = icmp ult i32 %46, -1072103424 br i1 %47, label %48, label %72 48: ; preds = %6 %49 = fsub double -3.125000e+00, %45 %50 = call double @llvm.fma.f64(double %49, double noundef 0xBBB135D2E746E627, double noundef 0xBC08DDF93324D327) %51 = call double @llvm.fma.f64(double %50, double %49, double noundef 0x3C37B83EEF0B7C9F) %52 = call double @llvm.fma.f64(double %51, double %49, double noundef 0x3C69BA72CD589B91) %53 = call double @llvm.fma.f64(double %52, double %49, double noundef 0xBCA33689090A6B96) %54 = call double @llvm.fma.f64(double %53, double %49, double noundef 0x3C782E11898132E0) %55 = call double @llvm.fma.f64(double %54, double %49, double noundef 0x3CFDE4ACFD9E26BA) %56 = call double @llvm.fma.f64(double %55, double %49, double noundef 0xBD26D33EED66C487) %57 = call double @llvm.fma.f64(double %56, double %49, double noundef 0xBD36F2167040D8E2) %58 = call double @llvm.fma.f64(double %57, double %49, double noundef 0x3D872A22C2D77E20) %59 = call double @llvm.fma.f64(double %58, double %49, double noundef 0xBDAC8859C4E5C0AF) %60 = call double @llvm.fma.f64(double %59, double %49, double noundef 0xBDCDC583D118A561) %61 = call double @llvm.fma.f64(double %60, double %49, double noundef 0x3E120F47CCF46B3C) %62 = call double @llvm.fma.f64(double %61, double %49, double noundef 0xBE31A9E38DC84D60) %63 = call double @llvm.fma.f64(double %62, double %49, double noundef 0xBE5F36CD6D3D46A9) %64 = call double @llvm.fma.f64(double %63, double %49, double noundef 0x3E9C6B4F5D03B787) %65 = call double @llvm.fma.f64(double %64, double %49, double noundef 0xBEB6E8A5434AE8A2) %66 = call double @llvm.fma.f64(double %65, double %49, double noundef 0xBEED1D1F7B8736F6) %67 = call double @llvm.fma.f64(double %66, double %49, double noundef 0x3F2879C2A212F024) %68 = call double @llvm.fma.f64(double %67, double %49, double noundef 0xBF4845769484FCA8) %69 = call double @llvm.fma.f64(double %68, double %49, double noundef 0xBF78B6C33114F909) %70 = call double @llvm.fma.f64(double %69, double %49, double noundef 0x3FCEBD80D9B13E28) %71 = call double @llvm.fma.f64(double %70, double %49, double noundef 0x3FFA755E7C99AE86) br label %120 72: ; preds = %6 %73 = fneg double %45 %74 = call double @llvm.sqrt.f64(double %73) %75 = call i32 @llvm.nvvm.d2i.hi(double %74) #139 %76 = icmp slt i32 %75, 1074790400 br i1 %76, label %77, label %97 77: ; preds = %72 %78 = fadd double %74, -3.250000e+00 %79 = call double @llvm.fma.f64(double %78, double noundef 0x3E23040F87DBD932, double noundef 0x3E785CBE52878635) %80 = call double @llvm.fma.f64(double %79, double %78, double noundef 0xBE92777453DD3955) %81 = call double @llvm.fma.f64(double %80, double %78, double noundef 0x3E5395ABCD554C6C) %82 = call double @llvm.fma.f64(double %81, double %78, double noundef 0x3EB936388A3790AD) %83 = call double @llvm.fma.f64(double %82, double %78, double noundef 0xBED0D5DB812B5083) %84 = call double @llvm.fma.f64(double %83, double %78, double noundef 0x3EC8860CD5D652F6) %85 = call double @llvm.fma.f64(double %84, double %78, double noundef 0x3EEA29A0CACDFB23) %86 = call double @llvm.fma.f64(double %85, double %78, double noundef 0xBF08CEF1F80281F2) %87 = call double @llvm.fma.f64(double %86, double %78, double noundef 0x3F11E684D0B9188A) %88 = call double @llvm.fma.f64(double %87, double %78, double noundef 0x3EF932CD54C8A222) %89 = call double @llvm.fma.f64(double %88, double %78, double noundef 0xBF37448A89EF8AA3) %90 = call double @llvm.fma.f64(double %89, double %78, double noundef 0x3F4F3CC55AD40C25) %91 = call double @llvm.fma.f64(double %90, double %78, double noundef 0xBF5BA924132F38B1) %92 = call double @llvm.fma.f64(double %91, double %78, double noundef 0x3F6468EECA533CF8) %93 = call double @llvm.fma.f64(double %92, double %78, double noundef 0xBF6EBADABB891BBD) %94 = call double @llvm.fma.f64(double %93, double %78, double noundef 0x3F75FFCFE5B76AFC) %95 = call double @llvm.fma.f64(double %94, double %78, double noundef 0x3FF0158A6D641D39) %96 = call double @llvm.fma.f64(double %95, double %78, double noundef 0x4008ABCC380D5A48) br label %120 97: ; preds = %72 %98 = fadd double %74, -5.000000e+00 %99 = call double @llvm.fma.f64(double %98, double noundef 0xBDBDCEC3A7785389, double noundef 0xBDF18FEEC0E38727) %100 = call double @llvm.fma.f64(double %99, double %98, double noundef 0x3E19E6BF2DDA45E3) %101 = call double @llvm.fma.f64(double %100, double %98, double noundef 0xBE30468FB24E2F5F) %102 = call double @llvm.fma.f64(double %101, double %98, double noundef 0x3E405AC6A8FBA182) %103 = call double @llvm.fma.f64(double %102, double %98, double noundef 0xBE50102E495FB9C0) %104 = call double @llvm.fma.f64(double %103, double %98, double noundef 0x3E5F4C20E1334AF8) %105 = call double @llvm.fma.f64(double %104, double %98, double noundef 0xBE722D220FDF9C3E) %106 = call double @llvm.fma.f64(double %105, double %98, double noundef 0x3E8EBC8BB824CB54) %107 = call double @llvm.fma.f64(double %106, double %98, double noundef 0xBEB0A8D40EA372CC) %108 = call double @llvm.fma.f64(double %107, double %98, double noundef 0x3ED2FBD29D093D2B) %109 = call double @llvm.fma.f64(double %108, double %98, double noundef 0xBEF4A3497E1E0FAC) %110 = call double @llvm.fma.f64(double %109, double %98, double noundef 0x3F13EBF4EB00938F) %111 = call double @llvm.fma.f64(double %110, double %98, double noundef 0xBF2C2F36A8FC5D53) %112 = call double @llvm.fma.f64(double %111, double %98, double noundef 0xBF222EA5DF04047C) %113 = call double @llvm.fma.f64(double %112, double %98, double noundef 0x3FF02A30D1FBA0DC) %114 = call double @llvm.fma.f64(double %113, double %98, double noundef 0x4013664DDD1AD7FB) br label %120 115: ; preds = %__internal_fast_icmp_abs_lt.exit %116 = call double @llvm.fabs.f64(double %a) %117 = fcmp ugt double %116, 0x7FF0000000000000 br i1 %117, label %120, label %118 118: ; preds = %115 %119 = fcmp oeq double %116, 1.000000e+00 %r.2 = select i1 %119, double 0x7FF0000000000000, double 0xFFF8000000000000 br label %120 120: ; preds = %118, %115, %48, %97, %77 %r.4 = phi double [ %71, %48 ], [ %96, %77 ], [ %114, %97 ], [ %r.2, %118 ], [ %a, %115 ] %121 = fmul double %r.4, %a ret double %121 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_erfcinv(double %a) local_unnamed_addr #114 { %1 = fsub double 2.000000e+00, %a %2 = fcmp oge double %a, 0x3F4FA4D2AD8F904D %3 = fcmp ole double %a, 0x3FFFFC0B65AA4E0E %or.cond = and i1 %2, %3 br i1 %or.cond, label %4, label %68 4: ; preds = %0 %5 = fmul double %1, %a %6 = call i32 @llvm.nvvm.d2i.hi(double %5) #142 %7 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 %8 = lshr i32 %6, 20 %9 = and i32 %8, 2046 %10 = add nuw i32 %9, 2147482626 %11 = call double @llvm.nvvm.lohi.i2d(i32 %10, i32 noundef 1127219200) #142 %12 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %13 = fsub double %11, %12 %14 = and i32 %6, -2145386497 %15 = or i32 %14, 1071644672 %16 = call double @llvm.nvvm.lohi.i2d(i32 %7, i32 %15) #142 %17 = fadd double %16, -1.000000e+00 %18 = fadd double %16, 1.000000e+00 %19 = call double @llvm.nvvm.rcp.approx.ftz.d(double %18) #142 %20 = fneg double %18 %21 = call double @llvm.fma.f64(double %20, double %19, double noundef 1.000000e+00) #140 %22 = call double @llvm.fma.f64(double %21, double %21, double %21) #140 %23 = call double @llvm.fma.f64(double %22, double %19, double %19) #140 %24 = fmul double %17, %23 %25 = call double @llvm.fma.f64(double %24, double noundef -2.000000e+00, double %17) #140 %26 = fneg double %24 %27 = call double @llvm.fma.f64(double %26, double %17, double %25) #140 %28 = call double @llvm.fma.f64(double %27, double %23, double %24) #140 %29 = fmul double %28, %28 %30 = call double @llvm.fma.f64(double %29, double noundef 0x3FB5C5C218C775C9, double noundef 0x3FA55CF59CDC5D89) #140 %31 = call double @llvm.fma.f64(double %30, double %29, double noundef 0x3FAEFD18CF6EBB9C) #140 %32 = call double @llvm.fma.f64(double %31, double %29, double noundef 0x3FB10682EDCB8D1B) #140 %33 = call double @llvm.fma.f64(double %32, double %29, double noundef 0x3FB3B1DD3AC7FC96) #140 %34 = call double @llvm.fma.f64(double %33, double %29, double noundef 0x3FB745CB459B54A6) #140 %35 = call double @llvm.fma.f64(double %34, double %29, double noundef 0x3FBC71C741A0669F) #140 %36 = call double @llvm.fma.f64(double %35, double %29, double noundef 0x3FC249249209112E) #140 %37 = call double @llvm.fma.f64(double %36, double %29, double noundef 0x3FC99999999A06C1) #140 %38 = call double @llvm.fma.f64(double %37, double %29, double noundef 0x3FD5555555555535) #140 %39 = fmul double %29, %38 %40 = call double @llvm.fma.f64(double %39, double %28, double %28) #140 %41 = fadd double %40, %40 %42 = call double @llvm.fma.f64(double %13, double noundef 0x3FE62E42FEFA39EF, double %41) #140 %43 = fsub double -3.125000e+00, %42 %44 = call double @llvm.fma.f64(double %43, double noundef 0xBBB135D2E746E627, double noundef 0xBC08DDF93324D327) #140 %45 = call double @llvm.fma.f64(double %44, double %43, double noundef 0x3C37B83EEF0B7C9F) #140 %46 = call double @llvm.fma.f64(double %45, double %43, double noundef 0x3C69BA72CD589B91) #140 %47 = call double @llvm.fma.f64(double %46, double %43, double noundef 0xBCA33689090A6B96) #140 %48 = call double @llvm.fma.f64(double %47, double %43, double noundef 0x3C782E11898132E0) #140 %49 = call double @llvm.fma.f64(double %48, double %43, double noundef 0x3CFDE4ACFD9E26BA) #140 %50 = call double @llvm.fma.f64(double %49, double %43, double noundef 0xBD26D33EED66C487) #140 %51 = call double @llvm.fma.f64(double %50, double %43, double noundef 0xBD36F2167040D8E2) #140 %52 = call double @llvm.fma.f64(double %51, double %43, double noundef 0x3D872A22C2D77E20) #140 %53 = call double @llvm.fma.f64(double %52, double %43, double noundef 0xBDAC8859C4E5C0AF) #140 %54 = call double @llvm.fma.f64(double %53, double %43, double noundef 0xBDCDC583D118A561) #140 %55 = call double @llvm.fma.f64(double %54, double %43, double noundef 0x3E120F47CCF46B3C) #140 %56 = call double @llvm.fma.f64(double %55, double %43, double noundef 0xBE31A9E38DC84D60) #140 %57 = call double @llvm.fma.f64(double %56, double %43, double noundef 0xBE5F36CD6D3D46A9) #140 %58 = call double @llvm.fma.f64(double %57, double %43, double noundef 0x3E9C6B4F5D03B787) #140 %59 = call double @llvm.fma.f64(double %58, double %43, double noundef 0xBEB6E8A5434AE8A2) #140 %60 = call double @llvm.fma.f64(double %59, double %43, double noundef 0xBEED1D1F7B8736F6) #140 %61 = call double @llvm.fma.f64(double %60, double %43, double noundef 0x3F2879C2A212F024) #140 %62 = call double @llvm.fma.f64(double %61, double %43, double noundef 0xBF4845769484FCA8) #140 %63 = call double @llvm.fma.f64(double %62, double %43, double noundef 0xBF78B6C33114F909) #140 %64 = call double @llvm.fma.f64(double %63, double %43, double noundef 0x3FCEBD80D9B13E28) #140 %65 = call double @llvm.fma.f64(double %64, double %43, double noundef 0x3FFA755E7C99AE86) #140 %66 = fneg double %a %67 = call double @llvm.fma.f64(double %65, double %66, double %65) #140 br label %215 68: ; preds = %0 %69 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %70 = icmp sgt i32 %69, 1072693247 %spec.select = select i1 %70, double %1, double %a %71 = call i32 @llvm.nvvm.d2i.hi(double %spec.select) #142 %72 = bitcast i32 %71 to float %73 = fcmp ult float %72, 0x3D657FE5E0000000 br i1 %73, label %136, label %74 74: ; preds = %68 %75 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #142 %76 = lshr i32 %71, 20 %77 = and i32 %76, 2046 %78 = add nuw i32 %77, 2147482626 %79 = call double @llvm.nvvm.lohi.i2d(i32 %78, i32 noundef 1127219200) #142 %80 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %81 = fsub double %79, %80 %82 = and i32 %71, -2145386497 %83 = or i32 %82, 1071644672 %84 = call double @llvm.nvvm.lohi.i2d(i32 %75, i32 %83) #142 %85 = fadd double %84, -1.000000e+00 %86 = fadd double %84, 1.000000e+00 %87 = call double @llvm.nvvm.rcp.approx.ftz.d(double %86) #142 %88 = fneg double %86 %89 = call double @llvm.fma.f64(double %88, double %87, double noundef 1.000000e+00) #140 %90 = call double @llvm.fma.f64(double %89, double %89, double %89) #140 %91 = call double @llvm.fma.f64(double %90, double %87, double %87) #140 %92 = fmul double %85, %91 %93 = call double @llvm.fma.f64(double %92, double noundef -2.000000e+00, double %85) #140 %94 = fneg double %92 %95 = call double @llvm.fma.f64(double %94, double %85, double %93) #140 %96 = call double @llvm.fma.f64(double %95, double %91, double %92) #140 %97 = fmul double %96, %96 %98 = call double @llvm.fma.f64(double %97, double noundef 0x3FB5C5C218C775C9, double noundef 0x3FA55CF59CDC5D89) #140 %99 = call double @llvm.fma.f64(double %98, double %97, double noundef 0x3FAEFD18CF6EBB9C) #140 %100 = call double @llvm.fma.f64(double %99, double %97, double noundef 0x3FB10682EDCB8D1B) #140 %101 = call double @llvm.fma.f64(double %100, double %97, double noundef 0x3FB3B1DD3AC7FC96) #140 %102 = call double @llvm.fma.f64(double %101, double %97, double noundef 0x3FB745CB459B54A6) #140 %103 = call double @llvm.fma.f64(double %102, double %97, double noundef 0x3FBC71C741A0669F) #140 %104 = call double @llvm.fma.f64(double %103, double %97, double noundef 0x3FC249249209112E) #140 %105 = call double @llvm.fma.f64(double %104, double %97, double noundef 0x3FC99999999A06C1) #140 %106 = call double @llvm.fma.f64(double %105, double %97, double noundef 0x3FD5555555555535) #140 %107 = fmul double %97, %106 %108 = call double @llvm.fma.f64(double %107, double %96, double %96) #140 %109 = fadd double %108, %108 %110 = call double @llvm.fma.f64(double %81, double noundef 0x3FE62E42FEFA39EF, double %109) #140 %111 = fneg double %110 %112 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %111) #141, !srcloc !84 %113 = fneg double %112 %114 = fmul double %112, %113 %115 = call double @llvm.fma.f64(double %111, double %114, double noundef 1.000000e+00) %116 = call double @llvm.fma.f64(double %115, double noundef 3.750000e-01, double noundef 5.000000e-01) %117 = fmul double %112, %115 %118 = call double @llvm.fma.f64(double %116, double %117, double %112) %119 = call double @llvm.fma.f64(double %118, double noundef 0x3FEBE9222591AFAB, double noundef 0x4000A0E7333839AA) %120 = call double @llvm.fma.f64(double %119, double %118, double noundef 0x4008768CF7E57D5C) %121 = call double @llvm.fma.f64(double %120, double %118, double noundef 0x400B77E7E28DA583) %122 = call double @llvm.fma.f64(double %121, double %118, double noundef 0x3FF34F26A4F99CF9) %123 = call double @llvm.fma.f64(double %122, double %118, double noundef 0x3FC1F674ADB019ED) %124 = call double @llvm.fma.f64(double %123, double %118, double noundef 0x3F75DDAE9506431D) %125 = call double @llvm.fma.f64(double %124, double %118, double noundef 0x3F0ADA49AA32489C) %126 = fadd double %118, 0x4001E90FF51C2197 %127 = call double @llvm.fma.f64(double %126, double %118, double noundef 0x40111EA3A7CF3820) %128 = call double @llvm.fma.f64(double %127, double %118, double noundef 0x4011A0E4A4749594) %129 = call double @llvm.fma.f64(double %128, double %118, double noundef 0x400D4E977D38C14D) %130 = call double @llvm.fma.f64(double %129, double %118, double noundef 0x3FF37FD567EC0D5F) %131 = call double @llvm.fma.f64(double %130, double %118, double noundef 0x3FC1FB9D7F676033) %132 = call double @llvm.fma.f64(double %131, double %118, double noundef 0x3F75DDCDF98946E4) %133 = call double @llvm.fma.f64(double %132, double %118, double noundef 0x3F0ADA42D79D8DBB) %134 = fmul double %118, %133 %135 = fdiv double %125, %134 br label %213 136: ; preds = %68 %137 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #139 %138 = icmp slt i32 %71, 1048576 br i1 %138, label %139, label %143 139: ; preds = %136 %140 = fmul double %spec.select, 0x4350000000000000 %141 = call i32 @llvm.nvvm.d2i.hi(double %140) #139 %142 = call i32 @llvm.nvvm.d2i.lo(double %140) #139 br label %143 143: ; preds = %139, %136 %.0 = phi double [ %140, %139 ], [ %spec.select, %136 ] %ihi.i.0 = phi i32 [ %141, %139 ], [ %71, %136 ] %ilo.i.0 = phi i32 [ %142, %139 ], [ %137, %136 ] %e.i.0 = phi i32 [ -1077, %139 ], [ -1023, %136 ] %144 = add i32 %ihi.i.0, -1 %145 = icmp ult i32 %144, 2146435071 br i1 %145, label %146, label %195 146: ; preds = %143 %147 = lshr i32 %ihi.i.0, 20 %148 = add nsw i32 %e.i.0, %147 %149 = and i32 %ihi.i.0, -2146435073 %150 = or i32 %149, 1072693248 %151 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %150) #139 %152 = icmp sgt i32 %150, 1073127582 br i1 %152, label %153, label %159 153: ; preds = %146 %154 = call i32 @llvm.nvvm.d2i.lo(double %151) #139 %155 = call i32 @llvm.nvvm.d2i.hi(double %151) #139 %156 = add i32 %155, -1048576 %157 = call double @llvm.nvvm.lohi.i2d(i32 %154, i32 %156) #139 %158 = add nsw i32 %148, 1 br label %159 159: ; preds = %153, %146 %m.i.0 = phi double [ %157, %153 ], [ %151, %146 ] %e.i.1 = phi i32 [ %158, %153 ], [ %148, %146 ] %160 = fadd double %m.i.0, -1.000000e+00 %161 = fadd double %m.i.0, 1.000000e+00 %162 = call double @llvm.nvvm.rcp.approx.ftz.d(double %161) #139 %163 = fneg double %161 %164 = call double @llvm.fma.f64(double %163, double %162, double noundef 1.000000e+00) %165 = call double @llvm.fma.f64(double %164, double %164, double %164) %166 = call double @llvm.fma.f64(double %165, double %162, double %162) %167 = fmul double %160, %166 %168 = fadd double %167, %167 %169 = fmul double %168, %168 %170 = call double @llvm.fma.f64(double %169, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %171 = call double @llvm.fma.f64(double %170, double %169, double noundef 0x3EF3B2669F02676F) %172 = call double @llvm.fma.f64(double %171, double %169, double noundef 0x3F1745CBA9AB0956) %173 = call double @llvm.fma.f64(double %172, double %169, double noundef 0x3F3C71C72D1B5154) %174 = call double @llvm.fma.f64(double %173, double %169, double noundef 0x3F624924923BE72D) %175 = call double @llvm.fma.f64(double %174, double %169, double noundef 0x3F8999999999A3C4) %176 = call double @llvm.fma.f64(double %175, double %169, double noundef 0x3FB5555555555554) %177 = fsub double %160, %168 %178 = fmul double %177, 2.000000e+00 %179 = fneg double %168 %180 = call double @llvm.fma.f64(double %179, double %160, double %178) %181 = fmul double %166, %180 %182 = fmul double %169, %176 %183 = call double @llvm.fma.f64(double %182, double %168, double %181) %184 = xor i32 %e.i.1, -2147483648 %185 = call double @llvm.nvvm.lohi.i2d(i32 %184, i32 noundef 1127219200) #139 %186 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %187 = fsub double %185, %186 %188 = call double @llvm.fma.f64(double %187, double noundef 0x3FE62E42FEFA39EF, double %168) %189 = fneg double %187 %190 = call double @llvm.fma.f64(double %189, double noundef 0x3FE62E42FEFA39EF, double %188) %191 = fsub double %190, %168 %192 = fsub double %183, %191 %193 = call double @llvm.fma.f64(double %187, double noundef 0x3C7ABC9E3B39803F, double %192) %194 = fadd double %188, %193 br label %__nv_log.exit 195: ; preds = %143 %196 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %197 = call i32 @llvm.nvvm.d2i.hi(double %.0) #139 %198 = bitcast i32 %197 to float %199 = fcmp oeq float %198, 0.000000e+00 %q.i.0 = select i1 %199, double 0xFFF0000000000000, double %196 br label %__nv_log.exit __nv_log.exit: ; preds = %195, %159 %q.i.1 = phi double [ %194, %159 ], [ %q.i.0, %195 ] %200 = fneg double %q.i.1 %201 = call double @llvm.nvvm.rsqrt.approx.d(double %200) #139 %202 = call double @llvm.fma.f64(double %201, double noundef 0x3FE8E2101C71B0BF, double noundef 0x3FFA2013964E259C) %203 = call double @llvm.fma.f64(double %202, double %201, double noundef 0x3FDABFE90921BE68) %204 = call double @llvm.fma.f64(double %203, double %201, double noundef 0x3F97E41314DE00D4) %205 = call double @llvm.fma.f64(double %204, double %201, double noundef 0x3F311BD487102E94) %206 = fadd double %201, 0x3FF59895C30BAA54 %207 = call double @llvm.fma.f64(double %206, double %201, double noundef 0x3FFAE8E5956A143F) %208 = call double @llvm.fma.f64(double %207, double %201, double noundef 0x3FDACCE85FF7383D) %209 = call double @llvm.fma.f64(double %208, double %201, double noundef 0x3F97E43B6CAC34FE) %210 = call double @llvm.fma.f64(double %209, double %201, double noundef 0x3F311BD08289EB12) %211 = fmul double %201, %210 %212 = fdiv double %205, %211 br label %213 213: ; preds = %__nv_log.exit, %74 %t.0 = phi double [ %135, %74 ], [ %212, %__nv_log.exit ] %214 = fneg double %t.0 %spec.select2 = select i1 %70, double %214, double %t.0 br label %215 215: ; preds = %213, %4 %t.2 = phi double [ %67, %4 ], [ %spec.select2, %213 ] ret double %t.2 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_normcdfinv(double %a) local_unnamed_addr #115 { %1 = fadd double %a, %a %2 = fsub double 2.000000e+00, %1 %3 = fcmp oge double %1, 0x3F4FA4D2AD8F904D %4 = fcmp ole double %1, 0x3FFFFC0B65AA4E0E %or.cond = and i1 %3, %4 br i1 %or.cond, label %5, label %69 5: ; preds = %0 %6 = fmul double %1, %2 %7 = call i32 @llvm.nvvm.d2i.hi(double %6) #142 %8 = call i32 @llvm.nvvm.d2i.lo(double %6) #142 %9 = lshr i32 %7, 20 %10 = and i32 %9, 2046 %11 = add nuw i32 %10, 2147482626 %12 = call double @llvm.nvvm.lohi.i2d(i32 %11, i32 noundef 1127219200) #142 %13 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %14 = fsub double %12, %13 %15 = and i32 %7, -2145386497 %16 = or i32 %15, 1071644672 %17 = call double @llvm.nvvm.lohi.i2d(i32 %8, i32 %16) #142 %18 = fadd double %17, -1.000000e+00 %19 = fadd double %17, 1.000000e+00 %20 = call double @llvm.nvvm.rcp.approx.ftz.d(double %19) #142 %21 = fneg double %19 %22 = call double @llvm.fma.f64(double %21, double %20, double noundef 1.000000e+00) #140 %23 = call double @llvm.fma.f64(double %22, double %22, double %22) #140 %24 = call double @llvm.fma.f64(double %23, double %20, double %20) #140 %25 = fmul double %18, %24 %26 = call double @llvm.fma.f64(double %25, double noundef -2.000000e+00, double %18) #140 %27 = fneg double %25 %28 = call double @llvm.fma.f64(double %27, double %18, double %26) #140 %29 = call double @llvm.fma.f64(double %28, double %24, double %25) #140 %30 = fmul double %29, %29 %31 = call double @llvm.fma.f64(double %30, double noundef 0x3FB5C5C218C775C9, double noundef 0x3FA55CF59CDC5D89) #140 %32 = call double @llvm.fma.f64(double %31, double %30, double noundef 0x3FAEFD18CF6EBB9C) #140 %33 = call double @llvm.fma.f64(double %32, double %30, double noundef 0x3FB10682EDCB8D1B) #140 %34 = call double @llvm.fma.f64(double %33, double %30, double noundef 0x3FB3B1DD3AC7FC96) #140 %35 = call double @llvm.fma.f64(double %34, double %30, double noundef 0x3FB745CB459B54A6) #140 %36 = call double @llvm.fma.f64(double %35, double %30, double noundef 0x3FBC71C741A0669F) #140 %37 = call double @llvm.fma.f64(double %36, double %30, double noundef 0x3FC249249209112E) #140 %38 = call double @llvm.fma.f64(double %37, double %30, double noundef 0x3FC99999999A06C1) #140 %39 = call double @llvm.fma.f64(double %38, double %30, double noundef 0x3FD5555555555535) #140 %40 = fmul double %30, %39 %41 = call double @llvm.fma.f64(double %40, double %29, double %29) #140 %42 = fadd double %41, %41 %43 = call double @llvm.fma.f64(double %14, double noundef 0x3FE62E42FEFA39EF, double %42) #140 %44 = fsub double -3.125000e+00, %43 %45 = call double @llvm.fma.f64(double %44, double noundef 0xBBB135D2E746E627, double noundef 0xBC08DDF93324D327) #140 %46 = call double @llvm.fma.f64(double %45, double %44, double noundef 0x3C37B83EEF0B7C9F) #140 %47 = call double @llvm.fma.f64(double %46, double %44, double noundef 0x3C69BA72CD589B91) #140 %48 = call double @llvm.fma.f64(double %47, double %44, double noundef 0xBCA33689090A6B96) #140 %49 = call double @llvm.fma.f64(double %48, double %44, double noundef 0x3C782E11898132E0) #140 %50 = call double @llvm.fma.f64(double %49, double %44, double noundef 0x3CFDE4ACFD9E26BA) #140 %51 = call double @llvm.fma.f64(double %50, double %44, double noundef 0xBD26D33EED66C487) #140 %52 = call double @llvm.fma.f64(double %51, double %44, double noundef 0xBD36F2167040D8E2) #140 %53 = call double @llvm.fma.f64(double %52, double %44, double noundef 0x3D872A22C2D77E20) #140 %54 = call double @llvm.fma.f64(double %53, double %44, double noundef 0xBDAC8859C4E5C0AF) #140 %55 = call double @llvm.fma.f64(double %54, double %44, double noundef 0xBDCDC583D118A561) #140 %56 = call double @llvm.fma.f64(double %55, double %44, double noundef 0x3E120F47CCF46B3C) #140 %57 = call double @llvm.fma.f64(double %56, double %44, double noundef 0xBE31A9E38DC84D60) #140 %58 = call double @llvm.fma.f64(double %57, double %44, double noundef 0xBE5F36CD6D3D46A9) #140 %59 = call double @llvm.fma.f64(double %58, double %44, double noundef 0x3E9C6B4F5D03B787) #140 %60 = call double @llvm.fma.f64(double %59, double %44, double noundef 0xBEB6E8A5434AE8A2) #140 %61 = call double @llvm.fma.f64(double %60, double %44, double noundef 0xBEED1D1F7B8736F6) #140 %62 = call double @llvm.fma.f64(double %61, double %44, double noundef 0x3F2879C2A212F024) #140 %63 = call double @llvm.fma.f64(double %62, double %44, double noundef 0xBF4845769484FCA8) #140 %64 = call double @llvm.fma.f64(double %63, double %44, double noundef 0xBF78B6C33114F909) #140 %65 = call double @llvm.fma.f64(double %64, double %44, double noundef 0x3FCEBD80D9B13E28) #140 %66 = call double @llvm.fma.f64(double %65, double %44, double noundef 0x3FFA755E7C99AE86) #140 %67 = fneg double %1 %68 = call double @llvm.fma.f64(double %66, double %67, double %66) #140 br label %__nv_erfcinv.exit 69: ; preds = %0 %70 = call i32 @llvm.nvvm.d2i.hi(double %1) #142 %71 = icmp sgt i32 %70, 1072693247 %spec.select = select i1 %71, double %2, double %1 %72 = call i32 @llvm.nvvm.d2i.hi(double %spec.select) #142 %73 = bitcast i32 %72 to float %74 = fcmp ult float %73, 0x3D657FE5E0000000 br i1 %74, label %137, label %75 75: ; preds = %69 %76 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #142 %77 = lshr i32 %72, 20 %78 = and i32 %77, 2046 %79 = add nuw i32 %78, 2147482626 %80 = call double @llvm.nvvm.lohi.i2d(i32 %79, i32 noundef 1127219200) #142 %81 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %82 = fsub double %80, %81 %83 = and i32 %72, -2145386497 %84 = or i32 %83, 1071644672 %85 = call double @llvm.nvvm.lohi.i2d(i32 %76, i32 %84) #142 %86 = fadd double %85, -1.000000e+00 %87 = fadd double %85, 1.000000e+00 %88 = call double @llvm.nvvm.rcp.approx.ftz.d(double %87) #142 %89 = fneg double %87 %90 = call double @llvm.fma.f64(double %89, double %88, double noundef 1.000000e+00) #140 %91 = call double @llvm.fma.f64(double %90, double %90, double %90) #140 %92 = call double @llvm.fma.f64(double %91, double %88, double %88) #140 %93 = fmul double %86, %92 %94 = call double @llvm.fma.f64(double %93, double noundef -2.000000e+00, double %86) #140 %95 = fneg double %93 %96 = call double @llvm.fma.f64(double %95, double %86, double %94) #140 %97 = call double @llvm.fma.f64(double %96, double %92, double %93) #140 %98 = fmul double %97, %97 %99 = call double @llvm.fma.f64(double %98, double noundef 0x3FB5C5C218C775C9, double noundef 0x3FA55CF59CDC5D89) #140 %100 = call double @llvm.fma.f64(double %99, double %98, double noundef 0x3FAEFD18CF6EBB9C) #140 %101 = call double @llvm.fma.f64(double %100, double %98, double noundef 0x3FB10682EDCB8D1B) #140 %102 = call double @llvm.fma.f64(double %101, double %98, double noundef 0x3FB3B1DD3AC7FC96) #140 %103 = call double @llvm.fma.f64(double %102, double %98, double noundef 0x3FB745CB459B54A6) #140 %104 = call double @llvm.fma.f64(double %103, double %98, double noundef 0x3FBC71C741A0669F) #140 %105 = call double @llvm.fma.f64(double %104, double %98, double noundef 0x3FC249249209112E) #140 %106 = call double @llvm.fma.f64(double %105, double %98, double noundef 0x3FC99999999A06C1) #140 %107 = call double @llvm.fma.f64(double %106, double %98, double noundef 0x3FD5555555555535) #140 %108 = fmul double %98, %107 %109 = call double @llvm.fma.f64(double %108, double %97, double %97) #140 %110 = fadd double %109, %109 %111 = call double @llvm.fma.f64(double %82, double noundef 0x3FE62E42FEFA39EF, double %110) #140 %112 = fneg double %111 %113 = call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %112) #141, !srcloc !84 %114 = fneg double %113 %115 = fmul double %113, %114 %116 = call double @llvm.fma.f64(double %112, double %115, double noundef 1.000000e+00) %117 = call double @llvm.fma.f64(double %116, double noundef 3.750000e-01, double noundef 5.000000e-01) %118 = fmul double %113, %116 %119 = call double @llvm.fma.f64(double %117, double %118, double %113) %120 = call double @llvm.fma.f64(double %119, double noundef 0x3FEBE9222591AFAB, double noundef 0x4000A0E7333839AA) %121 = call double @llvm.fma.f64(double %120, double %119, double noundef 0x4008768CF7E57D5C) %122 = call double @llvm.fma.f64(double %121, double %119, double noundef 0x400B77E7E28DA583) %123 = call double @llvm.fma.f64(double %122, double %119, double noundef 0x3FF34F26A4F99CF9) %124 = call double @llvm.fma.f64(double %123, double %119, double noundef 0x3FC1F674ADB019ED) %125 = call double @llvm.fma.f64(double %124, double %119, double noundef 0x3F75DDAE9506431D) %126 = call double @llvm.fma.f64(double %125, double %119, double noundef 0x3F0ADA49AA32489C) %127 = fadd double %119, 0x4001E90FF51C2197 %128 = call double @llvm.fma.f64(double %127, double %119, double noundef 0x40111EA3A7CF3820) %129 = call double @llvm.fma.f64(double %128, double %119, double noundef 0x4011A0E4A4749594) %130 = call double @llvm.fma.f64(double %129, double %119, double noundef 0x400D4E977D38C14D) %131 = call double @llvm.fma.f64(double %130, double %119, double noundef 0x3FF37FD567EC0D5F) %132 = call double @llvm.fma.f64(double %131, double %119, double noundef 0x3FC1FB9D7F676033) %133 = call double @llvm.fma.f64(double %132, double %119, double noundef 0x3F75DDCDF98946E4) %134 = call double @llvm.fma.f64(double %133, double %119, double noundef 0x3F0ADA42D79D8DBB) %135 = fmul double %119, %134 %136 = fdiv double %126, %135 br label %214 137: ; preds = %69 %138 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #139 %139 = icmp slt i32 %72, 1048576 br i1 %139, label %140, label %144 140: ; preds = %137 %141 = fmul double %spec.select, 0x4350000000000000 %142 = call i32 @llvm.nvvm.d2i.hi(double %141) #139 %143 = call i32 @llvm.nvvm.d2i.lo(double %141) #139 br label %144 144: ; preds = %140, %137 %.0 = phi double [ %141, %140 ], [ %spec.select, %137 ] %ihi.i.i.0 = phi i32 [ %142, %140 ], [ %72, %137 ] %ilo.i.i.0 = phi i32 [ %143, %140 ], [ %138, %137 ] %e.i.i.0 = phi i32 [ -1077, %140 ], [ -1023, %137 ] %145 = add i32 %ihi.i.i.0, -1 %146 = icmp ult i32 %145, 2146435071 br i1 %146, label %147, label %196 147: ; preds = %144 %148 = lshr i32 %ihi.i.i.0, 20 %149 = add nsw i32 %e.i.i.0, %148 %150 = and i32 %ihi.i.i.0, -2146435073 %151 = or i32 %150, 1072693248 %152 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %151) #139 %153 = icmp sgt i32 %151, 1073127582 br i1 %153, label %154, label %160 154: ; preds = %147 %155 = call i32 @llvm.nvvm.d2i.lo(double %152) #139 %156 = call i32 @llvm.nvvm.d2i.hi(double %152) #139 %157 = add i32 %156, -1048576 %158 = call double @llvm.nvvm.lohi.i2d(i32 %155, i32 %157) #139 %159 = add nsw i32 %149, 1 br label %160 160: ; preds = %154, %147 %m.i.i.0 = phi double [ %158, %154 ], [ %152, %147 ] %e.i.i.1 = phi i32 [ %159, %154 ], [ %149, %147 ] %161 = fadd double %m.i.i.0, -1.000000e+00 %162 = fadd double %m.i.i.0, 1.000000e+00 %163 = call double @llvm.nvvm.rcp.approx.ftz.d(double %162) #139 %164 = fneg double %162 %165 = call double @llvm.fma.f64(double %164, double %163, double noundef 1.000000e+00) %166 = call double @llvm.fma.f64(double %165, double %165, double %165) %167 = call double @llvm.fma.f64(double %166, double %163, double %163) %168 = fmul double %161, %167 %169 = fadd double %168, %168 %170 = fmul double %169, %169 %171 = call double @llvm.fma.f64(double %170, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %172 = call double @llvm.fma.f64(double %171, double %170, double noundef 0x3EF3B2669F02676F) %173 = call double @llvm.fma.f64(double %172, double %170, double noundef 0x3F1745CBA9AB0956) %174 = call double @llvm.fma.f64(double %173, double %170, double noundef 0x3F3C71C72D1B5154) %175 = call double @llvm.fma.f64(double %174, double %170, double noundef 0x3F624924923BE72D) %176 = call double @llvm.fma.f64(double %175, double %170, double noundef 0x3F8999999999A3C4) %177 = call double @llvm.fma.f64(double %176, double %170, double noundef 0x3FB5555555555554) %178 = fsub double %161, %169 %179 = fmul double %178, 2.000000e+00 %180 = fneg double %169 %181 = call double @llvm.fma.f64(double %180, double %161, double %179) %182 = fmul double %167, %181 %183 = fmul double %170, %177 %184 = call double @llvm.fma.f64(double %183, double %169, double %182) %185 = xor i32 %e.i.i.1, -2147483648 %186 = call double @llvm.nvvm.lohi.i2d(i32 %185, i32 noundef 1127219200) #139 %187 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %188 = fsub double %186, %187 %189 = call double @llvm.fma.f64(double %188, double noundef 0x3FE62E42FEFA39EF, double %169) %190 = fneg double %188 %191 = call double @llvm.fma.f64(double %190, double noundef 0x3FE62E42FEFA39EF, double %189) %192 = fsub double %191, %169 %193 = fsub double %184, %192 %194 = call double @llvm.fma.f64(double %188, double noundef 0x3C7ABC9E3B39803F, double %193) %195 = fadd double %189, %194 br label %__nv_log.exit.i 196: ; preds = %144 %197 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %198 = call i32 @llvm.nvvm.d2i.hi(double %.0) #139 %199 = bitcast i32 %198 to float %200 = fcmp oeq float %199, 0.000000e+00 %q.i.i.0 = select i1 %200, double 0xFFF0000000000000, double %197 br label %__nv_log.exit.i __nv_log.exit.i: ; preds = %196, %160 %q.i.i.1 = phi double [ %195, %160 ], [ %q.i.i.0, %196 ] %201 = fneg double %q.i.i.1 %202 = call double @llvm.nvvm.rsqrt.approx.d(double %201) #139 %203 = call double @llvm.fma.f64(double %202, double noundef 0x3FE8E2101C71B0BF, double noundef 0x3FFA2013964E259C) %204 = call double @llvm.fma.f64(double %203, double %202, double noundef 0x3FDABFE90921BE68) %205 = call double @llvm.fma.f64(double %204, double %202, double noundef 0x3F97E41314DE00D4) %206 = call double @llvm.fma.f64(double %205, double %202, double noundef 0x3F311BD487102E94) %207 = fadd double %202, 0x3FF59895C30BAA54 %208 = call double @llvm.fma.f64(double %207, double %202, double noundef 0x3FFAE8E5956A143F) %209 = call double @llvm.fma.f64(double %208, double %202, double noundef 0x3FDACCE85FF7383D) %210 = call double @llvm.fma.f64(double %209, double %202, double noundef 0x3F97E43B6CAC34FE) %211 = call double @llvm.fma.f64(double %210, double %202, double noundef 0x3F311BD08289EB12) %212 = fmul double %202, %211 %213 = fdiv double %206, %212 br label %214 214: ; preds = %__nv_log.exit.i, %75 %t.i.0 = phi double [ %136, %75 ], [ %213, %__nv_log.exit.i ] %215 = fneg double %t.i.0 %spec.select2 = select i1 %71, double %215, double %t.i.0 br label %__nv_erfcinv.exit __nv_erfcinv.exit: ; preds = %214, %5 %t.i.2 = phi double [ %68, %5 ], [ %spec.select2, %214 ] %216 = fmul double %t.i.2, 0xBCA21165F626CDD5 %217 = call double @llvm.fma.f64(double %t.i.2, double noundef 0xBFF6A09E667F3BCC, double %216) %218 = fadd double %217, 0.000000e+00 ret double %218 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_erfc(double %a) local_unnamed_addr #116 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2147483647 %3 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %4 = icmp ult i32 %2, 2146435072 br i1 %4, label %5, label %90 5: ; preds = %0 %6 = call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #142 %7 = fadd double %6, -4.000000e+00 %8 = fadd double %6, 4.000000e+00 %9 = call double @llvm.nvvm.rcp.approx.ftz.d(double %8) #142 %10 = fneg double %8 %11 = call double @llvm.fma.f64(double %10, double %9, double noundef 1.000000e+00) #140 %12 = call double @llvm.fma.f64(double %11, double %11, double %11) #140 %13 = call double @llvm.fma.f64(double %12, double %9, double %9) #140 %14 = fmul double %7, %13 %15 = fadd double %14, 1.000000e+00 %16 = call double @llvm.fma.f64(double %15, double noundef -4.000000e+00, double %6) #140 %17 = fneg double %14 %18 = call double @llvm.fma.f64(double %17, double %6, double %16) #140 %19 = call double @llvm.fma.f64(double %13, double %18, double %14) #140 %20 = call double @llvm.fma.f64(double %19, double noundef 0xBDF8774AD4E0BFD7, double noundef 0xBE44E1C6FD03D328) #140 %21 = call double @llvm.fma.f64(double %20, double %19, double noundef 0xBE4330149F7A56B6) #140 %22 = call double @llvm.fma.f64(double %21, double %19, double noundef 0x3E7BEDDED8376273) #140 %23 = call double @llvm.fma.f64(double %22, double %19, double noundef 0x3E6F9254C3ABF22B) #140 %24 = call double @llvm.fma.f64(double %23, double %19, double noundef 0xBEAB9068C2148CF0) #140 %25 = call double @llvm.fma.f64(double %24, double %19, double noundef 0x3E94C6454DB34009) #140 %26 = call double @llvm.fma.f64(double %25, double %19, double noundef 0x3ED7F1C378F2311D) #140 %27 = call double @llvm.fma.f64(double %26, double %19, double noundef 0xBEE78E051C6D5C58) #140 %28 = call double @llvm.fma.f64(double %27, double %19, double noundef 0xBEF995B4EAD14A90) #140 %29 = call double @llvm.fma.f64(double %28, double %19, double noundef 0x3F23BE27CF0A29B2) #140 %30 = call double @llvm.fma.f64(double %29, double %19, double noundef 0xBF2A1DEF3E81672E) #140 %31 = call double @llvm.fma.f64(double %30, double %19, double noundef 0xBF48D4ABE68C1713) #140 %32 = call double @llvm.fma.f64(double %31, double %19, double noundef 0x3F749C67210DD6B4) #140 %33 = call double @llvm.fma.f64(double %32, double %19, double noundef 0xBF9096238568E357) #140 %34 = call double @llvm.fma.f64(double %33, double %19, double noundef 0x3FA3079EDF8C2DC9) #140 %35 = call double @llvm.fma.f64(double %34, double %19, double noundef 0xBFB0FB06DFF601FC) #140 %36 = call double @llvm.fma.f64(double %35, double %19, double noundef 0x3FB7FEE004DFBCDC) #140 %37 = call double @llvm.fma.f64(double %36, double %19, double noundef 0xBFB9DDB23C3DB8C6) #140 %38 = call double @llvm.fma.f64(double %37, double %19, double noundef 0x3FB16ECEFCFA5FDA) #140 %39 = call double @llvm.fma.f64(double %38, double %19, double noundef 0x3F8F7F5DF66FB6D6) #140 %40 = call double @llvm.fma.f64(double %39, double %19, double noundef 0xBFC1DF1AD154A29D) #140 %41 = call double @llvm.fma.f64(double %40, double %19, double noundef 0x3FF3BA5916E9FD7F) #140 %42 = call double @llvm.fma.f64(double %6, double noundef 2.000000e+00, double noundef 1.000000e+00) #140 %43 = call double @llvm.nvvm.rcp.approx.ftz.d(double %42) #142 %44 = fneg double %42 %45 = call double @llvm.fma.f64(double %44, double %43, double noundef 1.000000e+00) #140 %46 = call double @llvm.fma.f64(double %45, double %45, double %45) #140 %47 = call double @llvm.fma.f64(double %46, double %43, double %43) #140 %48 = fmul double %47, %41 %49 = fmul double %48, -2.000000e+00 %50 = call double @llvm.fma.f64(double %6, double %49, double %41) #140 %51 = fsub double %50, %48 %52 = call double @llvm.fma.f64(double %51, double %47, double %48) #140 %53 = fneg double %6 %54 = fmul double %6, %53 %55 = call double @llvm.fma.f64(double %54, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %56 = call i32 @llvm.nvvm.d2i.lo(double %55) #142 %57 = fadd double %55, 0xC338000000000000 %58 = call double @llvm.fma.f64(double %57, double noundef 0xBFE62E42FEFA39EF, double %54) #140 %59 = call double @llvm.fma.f64(double %57, double noundef 0xBC7ABC9E3B39803F, double %58) #140 %60 = call double @llvm.fma.f64(double %59, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %61 = call double @llvm.fma.f64(double %60, double %59, double noundef 0x3EC71DEE62401315) #140 %62 = call double @llvm.fma.f64(double %61, double %59, double noundef 0x3EFA01997C89EB71) #140 %63 = call double @llvm.fma.f64(double %62, double %59, double noundef 0x3F2A01A014761F65) #140 %64 = call double @llvm.fma.f64(double %63, double %59, double noundef 0x3F56C16C1852B7AF) #140 %65 = call double @llvm.fma.f64(double %64, double %59, double noundef 0x3F81111111122322) #140 %66 = call double @llvm.fma.f64(double %65, double %59, double noundef 0x3FA55555555502A1) #140 %67 = call double @llvm.fma.f64(double %66, double %59, double noundef 0x3FC5555555555511) #140 %68 = call double @llvm.fma.f64(double %67, double %59, double noundef 0x3FE000000000000B) #140 %69 = call double @llvm.fma.f64(double %68, double %59, double noundef 1.000000e+00) #140 %70 = call double @llvm.fma.f64(double %69, double %59, double noundef 1.000000e+00) #140 %71 = sdiv i32 %56, 2 %72 = call i32 @llvm.nvvm.d2i.lo(double %70) #142 %73 = call i32 @llvm.nvvm.d2i.hi(double %70) #142 %74 = shl i32 %71, 20 %75 = add i32 %73, %74 %76 = call double @llvm.nvvm.lohi.i2d(i32 %72, i32 %75) #142 %77 = sub nsw i32 %56, %71 %78 = shl i32 %77, 20 %79 = add nsw i32 %78, 1072693248 %80 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %79) #142 %81 = fmul double %80, %76 %82 = fneg double %54 %83 = call double @llvm.fma.f64(double %53, double %6, double %82) #140 %84 = call double @llvm.fma.f64(double %81, double %83, double %81) #140 %85 = fmul double %84, %52 %86 = icmp ugt i32 %2, 1077624832 %spec.select = select i1 %86, double 0.000000e+00, double %85 %87 = icmp slt i32 %1, 0 %88 = fsub double 2.000000e+00, %spec.select %89 = select i1 %87, double %88, double %spec.select br label %96 90: ; preds = %0 %91 = icmp eq i32 %2, 2146435072 %92 = icmp eq i32 %3, 0 %or.cond = select i1 %91, i1 %92, i1 false %93 = icmp slt i32 %1, 0 %94 = select i1 %93, double 2.000000e+00, double 0.000000e+00 %95 = fadd double %a, %a %t1.1 = select i1 %or.cond, double %94, double %95 br label %96 96: ; preds = %90, %5 %t1.2 = phi double [ %89, %5 ], [ %t1.1, %90 ] ret double %t1.2 } ; Function Attrs: noinline nounwind define dso_local double @__nv_erfcx(double %a) local_unnamed_addr #117 { __internal_fast_icmp_abs_lt.exit: %0 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %1 = bitcast i32 %0 to float %2 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not = icmp eq i32 %2, 0 %3 = call float @llvm.nvvm.fabs.ftz.f(float %1) #139 %4 = call float @llvm.fabs.f32(float %1) %.02 = select i1 %.not, float %4, float %3 %5 = fcmp olt float %.02, 3.000000e+00 br i1 %5, label %6, label %56 6: ; preds = %__internal_fast_icmp_abs_lt.exit %7 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %8 = and i32 %0, 2147483647 %9 = call double @llvm.nvvm.lohi.i2d(i32 %7, i32 %8) #139 %10 = fadd double %9, -4.000000e+00 %11 = fadd double %9, 4.000000e+00 %12 = call double @llvm.nvvm.rcp.approx.ftz.d(double %11) #139 %13 = fneg double %11 %14 = call double @llvm.fma.f64(double %13, double %12, double noundef 1.000000e+00) %15 = call double @llvm.fma.f64(double %14, double %14, double %14) %16 = call double @llvm.fma.f64(double %15, double %12, double %12) %17 = fmul double %10, %16 %18 = fadd double %17, 1.000000e+00 %19 = call double @llvm.fma.f64(double %18, double noundef -4.000000e+00, double %9) %20 = fneg double %17 %21 = call double @llvm.fma.f64(double %20, double %9, double %19) %22 = call double @llvm.fma.f64(double %16, double %21, double %17) %23 = call double @llvm.fma.f64(double %22, double noundef 0xBDF8774AD4E0BFD7, double noundef 0xBE44E1C6FD03D328) %24 = call double @llvm.fma.f64(double %23, double %22, double noundef 0xBE4330149F7A56B6) %25 = call double @llvm.fma.f64(double %24, double %22, double noundef 0x3E7BEDDED8376273) %26 = call double @llvm.fma.f64(double %25, double %22, double noundef 0x3E6F9254C3ABF22B) %27 = call double @llvm.fma.f64(double %26, double %22, double noundef 0xBEAB9068C2148CF0) %28 = call double @llvm.fma.f64(double %27, double %22, double noundef 0x3E94C6454DB34009) %29 = call double @llvm.fma.f64(double %28, double %22, double noundef 0x3ED7F1C378F2311D) %30 = call double @llvm.fma.f64(double %29, double %22, double noundef 0xBEE78E051C6D5C58) %31 = call double @llvm.fma.f64(double %30, double %22, double noundef 0xBEF995B4EAD14A90) %32 = call double @llvm.fma.f64(double %31, double %22, double noundef 0x3F23BE27CF0A29B2) %33 = call double @llvm.fma.f64(double %32, double %22, double noundef 0xBF2A1DEF3E81672E) %34 = call double @llvm.fma.f64(double %33, double %22, double noundef 0xBF48D4ABE68C1713) %35 = call double @llvm.fma.f64(double %34, double %22, double noundef 0x3F749C67210DD6B4) %36 = call double @llvm.fma.f64(double %35, double %22, double noundef 0xBF9096238568E357) %37 = call double @llvm.fma.f64(double %36, double %22, double noundef 0x3FA3079EDF8C2DC9) %38 = call double @llvm.fma.f64(double %37, double %22, double noundef 0xBFB0FB06DFF601FC) %39 = call double @llvm.fma.f64(double %38, double %22, double noundef 0x3FB7FEE004DFBCDC) %40 = call double @llvm.fma.f64(double %39, double %22, double noundef 0xBFB9DDB23C3DB8C6) %41 = call double @llvm.fma.f64(double %40, double %22, double noundef 0x3FB16ECEFCFA5FDA) %42 = call double @llvm.fma.f64(double %41, double %22, double noundef 0x3F8F7F5DF66FB6D6) %43 = call double @llvm.fma.f64(double %42, double %22, double noundef 0xBFC1DF1AD154A29D) %44 = call double @llvm.fma.f64(double %43, double %22, double noundef 0x3FF3BA5916E9FD7F) %45 = call double @llvm.fma.f64(double %9, double noundef 2.000000e+00, double noundef 1.000000e+00) %46 = call double @llvm.nvvm.rcp.approx.ftz.d(double %45) #139 %47 = fneg double %45 %48 = call double @llvm.fma.f64(double %47, double %46, double noundef 1.000000e+00) %49 = call double @llvm.fma.f64(double %48, double %48, double %48) %50 = call double @llvm.fma.f64(double %49, double %46, double %46) %51 = fmul double %50, %44 %52 = fmul double %51, -2.000000e+00 %53 = call double @llvm.fma.f64(double %9, double %52, double %44) %54 = fsub double %53, %51 %55 = call double @llvm.fma.f64(double %54, double %50, double %51) br label %66 56: ; preds = %__internal_fast_icmp_abs_lt.exit %57 = fdiv double 1.000000e+00, %a %58 = fmul double %57, %57 %59 = call double @llvm.fma.f64(double %58, double noundef 0xC03D880000000000, double noundef 6.562500e+00) %60 = call double @llvm.fma.f64(double %59, double %58, double noundef -1.875000e+00) %61 = call double @llvm.fma.f64(double %60, double %58, double noundef 7.500000e-01) %62 = call double @llvm.fma.f64(double %61, double %58, double noundef -5.000000e-01) %63 = call double @llvm.fma.f64(double %62, double %58, double noundef 1.000000e+00) %64 = fmul double %57, 0x3FE20DD750429B6D %65 = fmul double %64, %63 br label %66 66: ; preds = %56, %6 %t1.0 = phi double [ %55, %6 ], [ %65, %56 ] %67 = icmp slt i32 %0, 0 br i1 %67, label %__internal_fast_icmp_abs_lt.exit3.i, label %115 __internal_fast_icmp_abs_lt.exit3.i: ; preds = %66 %68 = fmul double %a, %a %69 = fneg double %68 %70 = call double @llvm.fma.f64(double %a, double %a, double %69) %71 = call double @llvm.fma.f64(double %68, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) %72 = call i32 @llvm.nvvm.d2i.lo(double %71) #139 %73 = fadd double %71, 0xC338000000000000 %74 = call double @llvm.fma.f64(double %73, double noundef 0xBFE62E42FEFA39EF, double %68) %75 = call double @llvm.fma.f64(double %73, double noundef 0xBC7ABC9E3B39803F, double %74) %76 = call double @llvm.fma.f64(double %75, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) %77 = call double @llvm.fma.f64(double %76, double %75, double noundef 0x3EC71DEE62401315) %78 = call double @llvm.fma.f64(double %77, double %75, double noundef 0x3EFA01997C89EB71) %79 = call double @llvm.fma.f64(double %78, double %75, double noundef 0x3F2A01A014761F65) %80 = call double @llvm.fma.f64(double %79, double %75, double noundef 0x3F56C16C1852B7AF) %81 = call double @llvm.fma.f64(double %80, double %75, double noundef 0x3F81111111122322) %82 = call double @llvm.fma.f64(double %81, double %75, double noundef 0x3FA55555555502A1) %83 = call double @llvm.fma.f64(double %82, double %75, double noundef 0x3FC5555555555511) %84 = call double @llvm.fma.f64(double %83, double %75, double noundef 0x3FE000000000000B) %85 = call double @llvm.fma.f64(double %84, double %75, double noundef 1.000000e+00) %86 = call double @llvm.fma.f64(double %85, double %75, double noundef 1.000000e+00) %87 = call i32 @llvm.nvvm.d2i.lo(double %86) #139 %88 = call i32 @llvm.nvvm.d2i.hi(double %86) #139 %89 = shl i32 %72, 20 %90 = add i32 %88, %89 %91 = call double @llvm.nvvm.lohi.i2d(i32 %87, i32 %90) #139 %92 = call i32 @llvm.nvvm.d2i.hi(double %68) #139 %93 = bitcast i32 %92 to float %94 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not1 = icmp eq i32 %94, 0 %95 = call float @llvm.nvvm.fabs.ftz.f(float %93) #139 %96 = call float @llvm.fabs.f32(float %93) %.01 = select i1 %.not1, float %96, float %95 %97 = fcmp olt float %.01, 0x4010C46560000000 br i1 %97, label %__nv_exp.exit, label %__internal_fast_icmp_abs_lt.exit.i __internal_fast_icmp_abs_lt.exit.i: ; preds = %__internal_fast_icmp_abs_lt.exit3.i %98 = fadd double %68, 0x7FF0000000000000 %99 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not2 = icmp eq i32 %99, 0 %.0 = select i1 %.not2, float %96, float %95 %100 = fcmp olt float %.0, 0x4010E90000000000 br i1 %100, label %101, label %__nv_exp.exit 101: ; preds = %__internal_fast_icmp_abs_lt.exit.i %102 = sdiv i32 %72, 2 %103 = shl i32 %102, 20 %104 = add i32 %88, %103 %105 = call double @llvm.nvvm.lohi.i2d(i32 %87, i32 %104) #139 %106 = sub nsw i32 %72, %102 %107 = shl i32 %106, 20 %108 = add nsw i32 %107, 1072693248 %109 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %108) #139 %110 = fmul double %109, %105 br label %__nv_exp.exit __nv_exp.exit: ; preds = %__internal_fast_icmp_abs_lt.exit.i, %101, %__internal_fast_icmp_abs_lt.exit3.i %z.i.2 = phi double [ %91, %__internal_fast_icmp_abs_lt.exit3.i ], [ %110, %101 ], [ %98, %__internal_fast_icmp_abs_lt.exit.i ] %111 = fadd double %z.i.2, %z.i.2 %112 = call double @llvm.fma.f64(double %111, double %70, double %111) %113 = fsub double %112, %t1.0 %114 = fcmp oeq double %111, 0x7FF0000000000000 %t1.1 = select i1 %114, double %111, double %113 br label %115 115: ; preds = %__nv_exp.exit, %66 %t1.2 = phi double [ %t1.1, %__nv_exp.exit ], [ %t1.0, %66 ] ret double %t1.2 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_normcdf(double %a) local_unnamed_addr #118 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ogt double %1, 3.850000e+01 br i1 %2, label %3, label %11 3: ; preds = %0 %4 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %5 = call i32 @llvm.nvvm.d2i.lo(double noundef 3.850000e+01) #142 %6 = call i32 @llvm.nvvm.d2i.hi(double noundef 3.850000e+01) #142 %7 = and i32 %4, -2147483648 %8 = and i32 %6, 2147483647 %9 = or i32 %7, %8 %10 = call double @llvm.nvvm.lohi.i2d(i32 %5, i32 %9) #142 br label %11 11: ; preds = %3, %0 %.0 = phi double [ %10, %3 ], [ %a, %0 ] %12 = fmul double %.0, 0xBFE6A09E667F3BCD %13 = fneg double %12 %14 = call double @llvm.fma.f64(double %.0, double noundef 0xBFE6A09E667F3BCD, double %13) #140 %15 = call double @llvm.fma.f64(double %.0, double noundef 0x3C8BDD3413B26456, double %14) #140 %16 = fadd double %12, %15 %17 = call i32 @llvm.nvvm.d2i.hi(double %16) #142 %18 = and i32 %17, 2147483647 %19 = call i32 @llvm.nvvm.d2i.lo(double %16) #142 %20 = icmp ult i32 %18, 2146435072 br i1 %20, label %21, label %106 21: ; preds = %11 %22 = call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %18) #142 %23 = fadd double %22, -4.000000e+00 %24 = fadd double %22, 4.000000e+00 %25 = call double @llvm.nvvm.rcp.approx.ftz.d(double %24) #142 %26 = fneg double %24 %27 = call double @llvm.fma.f64(double %26, double %25, double noundef 1.000000e+00) #140 %28 = call double @llvm.fma.f64(double %27, double %27, double %27) #140 %29 = call double @llvm.fma.f64(double %28, double %25, double %25) #140 %30 = fmul double %23, %29 %31 = fadd double %30, 1.000000e+00 %32 = call double @llvm.fma.f64(double %31, double noundef -4.000000e+00, double %22) #140 %33 = fneg double %30 %34 = call double @llvm.fma.f64(double %33, double %22, double %32) #140 %35 = call double @llvm.fma.f64(double %29, double %34, double %30) #140 %36 = call double @llvm.fma.f64(double %35, double noundef 0xBDF8774AD4E0BFD7, double noundef 0xBE44E1C6FD03D328) #140 %37 = call double @llvm.fma.f64(double %36, double %35, double noundef 0xBE4330149F7A56B6) #140 %38 = call double @llvm.fma.f64(double %37, double %35, double noundef 0x3E7BEDDED8376273) #140 %39 = call double @llvm.fma.f64(double %38, double %35, double noundef 0x3E6F9254C3ABF22B) #140 %40 = call double @llvm.fma.f64(double %39, double %35, double noundef 0xBEAB9068C2148CF0) #140 %41 = call double @llvm.fma.f64(double %40, double %35, double noundef 0x3E94C6454DB34009) #140 %42 = call double @llvm.fma.f64(double %41, double %35, double noundef 0x3ED7F1C378F2311D) #140 %43 = call double @llvm.fma.f64(double %42, double %35, double noundef 0xBEE78E051C6D5C58) #140 %44 = call double @llvm.fma.f64(double %43, double %35, double noundef 0xBEF995B4EAD14A90) #140 %45 = call double @llvm.fma.f64(double %44, double %35, double noundef 0x3F23BE27CF0A29B2) #140 %46 = call double @llvm.fma.f64(double %45, double %35, double noundef 0xBF2A1DEF3E81672E) #140 %47 = call double @llvm.fma.f64(double %46, double %35, double noundef 0xBF48D4ABE68C1713) #140 %48 = call double @llvm.fma.f64(double %47, double %35, double noundef 0x3F749C67210DD6B4) #140 %49 = call double @llvm.fma.f64(double %48, double %35, double noundef 0xBF9096238568E357) #140 %50 = call double @llvm.fma.f64(double %49, double %35, double noundef 0x3FA3079EDF8C2DC9) #140 %51 = call double @llvm.fma.f64(double %50, double %35, double noundef 0xBFB0FB06DFF601FC) #140 %52 = call double @llvm.fma.f64(double %51, double %35, double noundef 0x3FB7FEE004DFBCDC) #140 %53 = call double @llvm.fma.f64(double %52, double %35, double noundef 0xBFB9DDB23C3DB8C6) #140 %54 = call double @llvm.fma.f64(double %53, double %35, double noundef 0x3FB16ECEFCFA5FDA) #140 %55 = call double @llvm.fma.f64(double %54, double %35, double noundef 0x3F8F7F5DF66FB6D6) #140 %56 = call double @llvm.fma.f64(double %55, double %35, double noundef 0xBFC1DF1AD154A29D) #140 %57 = call double @llvm.fma.f64(double %56, double %35, double noundef 0x3FF3BA5916E9FD7F) #140 %58 = call double @llvm.fma.f64(double %22, double noundef 2.000000e+00, double noundef 1.000000e+00) #140 %59 = call double @llvm.nvvm.rcp.approx.ftz.d(double %58) #142 %60 = fneg double %58 %61 = call double @llvm.fma.f64(double %60, double %59, double noundef 1.000000e+00) #140 %62 = call double @llvm.fma.f64(double %61, double %61, double %61) #140 %63 = call double @llvm.fma.f64(double %62, double %59, double %59) #140 %64 = fmul double %63, %57 %65 = fmul double %64, -2.000000e+00 %66 = call double @llvm.fma.f64(double %22, double %65, double %57) #140 %67 = fsub double %66, %64 %68 = call double @llvm.fma.f64(double %67, double %63, double %64) #140 %69 = fneg double %22 %70 = fmul double %22, %69 %71 = call double @llvm.fma.f64(double %70, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %72 = call i32 @llvm.nvvm.d2i.lo(double %71) #142 %73 = fadd double %71, 0xC338000000000000 %74 = call double @llvm.fma.f64(double %73, double noundef 0xBFE62E42FEFA39EF, double %70) #140 %75 = call double @llvm.fma.f64(double %73, double noundef 0xBC7ABC9E3B39803F, double %74) #140 %76 = call double @llvm.fma.f64(double %75, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %77 = call double @llvm.fma.f64(double %76, double %75, double noundef 0x3EC71DEE62401315) #140 %78 = call double @llvm.fma.f64(double %77, double %75, double noundef 0x3EFA01997C89EB71) #140 %79 = call double @llvm.fma.f64(double %78, double %75, double noundef 0x3F2A01A014761F65) #140 %80 = call double @llvm.fma.f64(double %79, double %75, double noundef 0x3F56C16C1852B7AF) #140 %81 = call double @llvm.fma.f64(double %80, double %75, double noundef 0x3F81111111122322) #140 %82 = call double @llvm.fma.f64(double %81, double %75, double noundef 0x3FA55555555502A1) #140 %83 = call double @llvm.fma.f64(double %82, double %75, double noundef 0x3FC5555555555511) #140 %84 = call double @llvm.fma.f64(double %83, double %75, double noundef 0x3FE000000000000B) #140 %85 = call double @llvm.fma.f64(double %84, double %75, double noundef 1.000000e+00) #140 %86 = call double @llvm.fma.f64(double %85, double %75, double noundef 1.000000e+00) #140 %87 = sdiv i32 %72, 2 %88 = call i32 @llvm.nvvm.d2i.lo(double %86) #142 %89 = call i32 @llvm.nvvm.d2i.hi(double %86) #142 %90 = shl i32 %87, 20 %91 = add i32 %89, %90 %92 = call double @llvm.nvvm.lohi.i2d(i32 %88, i32 %91) #142 %93 = sub nsw i32 %72, %87 %94 = shl i32 %93, 20 %95 = add nsw i32 %94, 1072693248 %96 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %95) #142 %97 = fmul double %96, %92 %98 = fneg double %70 %99 = call double @llvm.fma.f64(double %69, double %22, double %98) #140 %100 = call double @llvm.fma.f64(double %97, double %99, double %97) #140 %101 = fmul double %100, %68 %102 = icmp ugt i32 %18, 1077624832 %spec.select = select i1 %102, double 0.000000e+00, double %101 %103 = icmp slt i32 %17, 0 %104 = fsub double 2.000000e+00, %spec.select %105 = select i1 %103, double %104, double %spec.select br label %__nv_erfc.exit 106: ; preds = %11 %107 = icmp eq i32 %18, 2146435072 %108 = icmp eq i32 %19, 0 %or.cond = select i1 %107, i1 %108, i1 false %109 = icmp slt i32 %17, 0 %110 = select i1 %109, double 2.000000e+00, double 0.000000e+00 %111 = fadd double %16, %16 %t1.i.1 = select i1 %or.cond, double %110, double %111 br label %__nv_erfc.exit __nv_erfc.exit: ; preds = %106, %21 %t1.i.2 = phi double [ %105, %21 ], [ %t1.i.1, %106 ] %112 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %113 = icmp ugt i32 %112, -1074790400 br i1 %113, label %114, label %120 114: ; preds = %__nv_erfc.exit %115 = fsub double %12, %16 %116 = fadd double %15, %115 %117 = fmul double %16, -2.000000e+00 %118 = fmul double %117, %t1.i.2 %119 = call double @llvm.fma.f64(double %118, double %116, double %t1.i.2) #140 br label %120 120: ; preds = %114, %__nv_erfc.exit %z.0 = phi double [ %119, %114 ], [ %t1.i.2, %__nv_erfc.exit ] %121 = fmul double %z.0, 5.000000e-01 ret double %121 } ; Function Attrs: noinline nounwind define dso_local double @__nv_tgamma(double %a) local_unnamed_addr #119 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = bitcast i32 %1 to float %3 = fcmp ult double %a, 0.000000e+00 br i1 %3, label %208, label %4 4: ; preds = %0 %5 = fcmp olt float %2, 2.250000e+00 br i1 %5, label %6, label %36 6: ; preds = %4 %7 = fcmp oge float %2, 2.187500e+00 %8 = fadd double %a, -1.000000e+00 %s.0 = select i1 %7, double %8, double 1.000000e+00 %t.0 = select i1 %7, double %8, double %a %9 = fcmp oge float %2, 2.062500e+00 %10 = fneg double %s.0 %11 = call double @llvm.fma.f64(double %t.0, double %s.0, double %10) #140 %12 = fadd double %t.0, -1.000000e+00 %s.1 = select i1 %9, double %11, double %s.0 %t.1 = select i1 %9, double %12, double %t.0 %13 = fcmp oge float %2, 1.937500e+00 %14 = fneg double %s.1 %15 = call double @llvm.fma.f64(double %t.1, double %s.1, double %14) #140 %16 = fadd double %t.1, -1.000000e+00 %s.2 = select i1 %13, double %15, double %s.1 %t.2 = select i1 %13, double %16, double %t.1 %17 = fcmp oge float %2, 1.750000e+00 %18 = fadd double %t.2, -1.000000e+00 %t.3 = select i1 %17, double %18, double %t.2 %19 = call double @llvm.fma.f64(double %t.3, double noundef 0x3E381B4960FCF5C9, double noundef 0xBE8AF7049AE8A594) #140 %20 = call double @llvm.fma.f64(double %19, double %t.3, double noundef 0x3EB301D46D4B22F5) #140 %21 = call double @llvm.fma.f64(double %20, double %t.3, double noundef 0xBEB50272AEED0FC4) #140 %22 = call double @llvm.fma.f64(double %21, double %t.3, double noundef 0xBEF51CE1A40516F8) #140 %23 = call double @llvm.fma.f64(double %22, double %t.3, double noundef 0x3F20C8AA7419084C) #140 %24 = call double @llvm.fma.f64(double %23, double %t.3, double noundef 0xBF2C3650196BAD8A) #140 %25 = call double @llvm.fma.f64(double %24, double %t.3, double noundef 0xBF531711365A3E26) #140 %26 = call double @llvm.fma.f64(double %25, double %t.3, double noundef 0x3F7D919C52A7DF35) #140 %27 = call double @llvm.fma.f64(double %26, double %t.3, double noundef 0xBF83B4AF28386F4D) #140 %28 = call double @llvm.fma.f64(double %27, double %t.3, double noundef 0xBFA59AF103C37B4D) #140 %29 = call double @llvm.fma.f64(double %28, double %t.3, double noundef 0x3FC5512320B439EF) #140 %30 = call double @llvm.fma.f64(double %29, double %t.3, double noundef 0xBFA5815E8FA26F4F) #140 %31 = call double @llvm.fma.f64(double %30, double %t.3, double noundef 0xBFE4FCF4026AFA2B) #140 %32 = call double @llvm.fma.f64(double %31, double %t.3, double noundef 0x3FE2788CFC6FB619) #140 %33 = call double @llvm.fma.f64(double %32, double %t.3, double noundef 1.000000e+00) #140 %34 = select i1 %17, double 1.000000e+00, double %a %t.4 = fmul double %34, %33 %35 = fdiv double %s.2, %t.4 br label %405 36: ; preds = %4 %37 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %38 = lshr i32 %1, 20 %39 = icmp ult i32 %1, 1048576 br i1 %39, label %40, label %46 40: ; preds = %36 %41 = fmul double %a, 0x4350000000000000 %42 = call i32 @llvm.nvvm.d2i.hi(double %41) #142 %43 = call i32 @llvm.nvvm.d2i.lo(double %41) #142 %44 = lshr i32 %42, 20 %45 = add nsw i32 %44, -54 br label %46 46: ; preds = %40, %36 %ilo.i.i26.0 = phi i32 [ %43, %40 ], [ %37, %36 ] %ihi.i.i27.0 = phi i32 [ %42, %40 ], [ %1, %36 ] %expo.i.i.0 = phi i32 [ %45, %40 ], [ %38, %36 ] %47 = add nsw i32 %expo.i.i.0, -1023 %48 = and i32 %ihi.i.i27.0, -2146435073 %49 = or i32 %48, 1072693248 %50 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i26.0, i32 %49) #142 %51 = icmp ugt i32 %49, 1073127582 br i1 %51, label %52, label %__internal_log_ext_prec.exit.i 52: ; preds = %46 %53 = call i32 @llvm.nvvm.d2i.lo(double %50) #142 %54 = call i32 @llvm.nvvm.d2i.hi(double %50) #142 %55 = add i32 %54, -1048576 %56 = call double @llvm.nvvm.lohi.i2d(i32 %53, i32 %55) #142 %57 = add nsw i32 %expo.i.i.0, -1022 br label %__internal_log_ext_prec.exit.i __internal_log_ext_prec.exit.i: ; preds = %52, %46 %m.i.i.0 = phi double [ %56, %52 ], [ %50, %46 ] %expo.i.i.1 = phi i32 [ %57, %52 ], [ %47, %46 ] %58 = fadd double %m.i.i.0, -1.000000e+00 %59 = fadd double %m.i.i.0, 1.000000e+00 %60 = call double @llvm.nvvm.rcp.approx.ftz.d(double %59) #142 %61 = fneg double %59 %62 = call double @llvm.fma.f64(double %61, double %60, double noundef 1.000000e+00) #140 %63 = call double @llvm.fma.f64(double %62, double %62, double %62) #140 %64 = call double @llvm.fma.f64(double %63, double %60, double %60) #140 %65 = fmul double %58, %64 %66 = fadd double %65, %65 %67 = fmul double %66, %66 %68 = call double @llvm.fma.f64(double %67, double noundef 0x3EB0F5FF7D2CAFE2, double noundef 0x3ED0F5D241AD3B5A) #140 %69 = call double @llvm.fma.f64(double %68, double %67, double noundef 0x3EF3B20A75488A3F) #140 %70 = call double @llvm.fma.f64(double %69, double %67, double noundef 0x3F1745CDE4FAECD5) #140 %71 = call double @llvm.fma.f64(double %70, double %67, double noundef 0x3F3C71C7258A578B) #140 %72 = call double @llvm.fma.f64(double %71, double %67, double noundef 0x3F6249249242B910) #140 %73 = call double @llvm.fma.f64(double %72, double %67, double noundef 0x3F89999999999DFB) #140 %74 = fmul double %67, %73 %75 = fsub double %58, %66 %76 = fmul double %75, 2.000000e+00 %77 = fneg double %66 %78 = call double @llvm.fma.f64(double %77, double %58, double %76) #140 %79 = fmul double %64, %78 %80 = fadd double %74, 0x3FB5555555555555 %81 = fsub double 0x3FB5555555555555, %80 %82 = fadd double %74, %81 %83 = fadd double %82, 0.000000e+00 %84 = fadd double %83, 0xBC46A4CB00B9E7B0 %85 = fadd double %80, %84 %86 = fsub double %80, %85 %87 = fadd double %84, %86 %88 = fneg double %67 %89 = call double @llvm.fma.f64(double %66, double %66, double %88) #140 %90 = call i32 @llvm.nvvm.d2i.lo(double %79) #142 %91 = call i32 @llvm.nvvm.d2i.hi(double %79) #142 %92 = add i32 %91, 1048576 %93 = call double @llvm.nvvm.lohi.i2d(i32 %90, i32 %92) #142 %94 = call double @llvm.fma.f64(double %66, double %93, double %89) #140 %95 = fmul double %66, %67 %96 = fneg double %95 %97 = call double @llvm.fma.f64(double %67, double %66, double %96) #140 %98 = call double @llvm.fma.f64(double %67, double %79, double %97) #140 %99 = call double @llvm.fma.f64(double %94, double %66, double %98) #140 %100 = fmul double %95, %85 %101 = fneg double %100 %102 = call double @llvm.fma.f64(double %85, double %95, double %101) #140 %103 = call double @llvm.fma.f64(double %85, double %99, double %102) #140 %104 = call double @llvm.fma.f64(double %87, double %95, double %103) #140 %105 = fadd double %100, %104 %106 = fsub double %100, %105 %107 = fadd double %104, %106 %108 = fadd double %66, %105 %109 = fsub double %66, %108 %110 = fadd double %105, %109 %111 = fadd double %107, %110 %112 = fadd double %79, %111 %113 = fadd double %108, %112 %114 = fsub double %108, %113 %115 = fadd double %112, %114 %116 = xor i32 %expo.i.i.1, -2147483648 %117 = call double @llvm.nvvm.lohi.i2d(i32 %116, i32 noundef 1127219200) #142 %118 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %119 = fsub double %117, %118 %120 = call double @llvm.fma.f64(double %119, double noundef 0x3FE62E42FEFA39EF, double %113) #140 %121 = fneg double %119 %122 = call double @llvm.fma.f64(double %121, double noundef 0x3FE62E42FEFA39EF, double %120) #140 %123 = fsub double %122, %113 %124 = fsub double %115, %123 %125 = call double @llvm.fma.f64(double %119, double noundef 0x3C7ABC9E3B39803F, double %124) #140 %126 = fadd double %120, %125 %127 = fsub double %120, %126 %128 = fadd double %125, %127 %129 = fadd double %a, -5.000000e-01 %130 = fmul double %129, %126 %131 = fneg double %130 %132 = call double @llvm.fma.f64(double %126, double %129, double %131) #140 %133 = call double @llvm.fma.f64(double %128, double %129, double %132) #140 %134 = fadd double %130, %133 %135 = fsub double %130, %134 %136 = fadd double %133, %135 %137 = fsub double %134, %a %138 = fsub double %134, %137 %139 = fsub double %138, %a %140 = fadd double %136, %139 %141 = fadd double %137, %140 %142 = fsub double %137, %141 %143 = fadd double %140, %142 %144 = call double @llvm.fma.f64(double %141, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) #140 %145 = call i32 @llvm.nvvm.d2i.lo(double %144) #142 %146 = fadd double %144, 0xC338000000000000 %147 = call double @llvm.fma.f64(double %146, double noundef 0xBFE62E42FEFA39EF, double %141) #140 %148 = call double @llvm.fma.f64(double %146, double noundef 0xBC7ABC9E3B39803F, double %147) #140 %149 = call double @llvm.fma.f64(double %148, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) #140 %150 = call double @llvm.fma.f64(double %149, double %148, double noundef 0x3EC71DEE62401315) #140 %151 = call double @llvm.fma.f64(double %150, double %148, double noundef 0x3EFA01997C89EB71) #140 %152 = call double @llvm.fma.f64(double %151, double %148, double noundef 0x3F2A01A014761F65) #140 %153 = call double @llvm.fma.f64(double %152, double %148, double noundef 0x3F56C16C1852B7AF) #140 %154 = call double @llvm.fma.f64(double %153, double %148, double noundef 0x3F81111111122322) #140 %155 = call double @llvm.fma.f64(double %154, double %148, double noundef 0x3FA55555555502A1) #140 %156 = call double @llvm.fma.f64(double %155, double %148, double noundef 0x3FC5555555555511) #140 %157 = call double @llvm.fma.f64(double %156, double %148, double noundef 0x3FE000000000000B) #140 %158 = call double @llvm.fma.f64(double %157, double %148, double noundef 1.000000e+00) #140 %159 = call double @llvm.fma.f64(double %158, double %148, double noundef 1.000000e+00) #140 %160 = call i32 @llvm.nvvm.d2i.lo(double %159) #142 %161 = call i32 @llvm.nvvm.d2i.hi(double %159) #142 %162 = shl i32 %145, 20 %163 = add i32 %161, %162 %164 = call double @llvm.nvvm.lohi.i2d(i32 %160, i32 %163) #142 %165 = call i32 @llvm.nvvm.d2i.hi(double %141) #142 %166 = bitcast i32 %165 to float %167 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not6 = icmp eq i32 %167, 0 %168 = call float @llvm.nvvm.fabs.ftz.f(float %166) #139 %169 = call float @llvm.fabs.f32(float %166) %.05 = select i1 %.not6, float %169, float %168 %170 = fcmp olt float %.05, 0x4010C46560000000 br i1 %170, label %__nv_exp.exit.i, label %__internal_fast_icmp_abs_lt.exit.i.i __internal_fast_icmp_abs_lt.exit.i.i: ; preds = %__internal_log_ext_prec.exit.i %171 = fcmp olt double %141, 0.000000e+00 %172 = fadd double %141, 0x7FF0000000000000 %z.i5.i.0 = select i1 %171, double 0.000000e+00, double %172 %173 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139 %.not7 = icmp eq i32 %173, 0 %.04 = select i1 %.not7, float %169, float %168 %174 = fcmp olt float %.04, 0x4010E90000000000 br i1 %174, label %175, label %__nv_exp.exit.i 175: ; preds = %__internal_fast_icmp_abs_lt.exit.i.i %176 = sdiv i32 %145, 2 %177 = shl i32 %176, 20 %178 = add i32 %161, %177 %179 = call double @llvm.nvvm.lohi.i2d(i32 %160, i32 %178) #139 %180 = sub nsw i32 %145, %176 %181 = shl i32 %180, 20 %182 = add nsw i32 %181, 1072693248 %183 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %182) #139 %184 = fmul double %183, %179 br label %__nv_exp.exit.i __nv_exp.exit.i: ; preds = %__internal_fast_icmp_abs_lt.exit.i.i, %175, %__internal_log_ext_prec.exit.i %z.i5.i.2 = phi double [ %164, %__internal_log_ext_prec.exit.i ], [ %184, %175 ], [ %z.i5.i.0, %__internal_fast_icmp_abs_lt.exit.i.i ] %185 = call double @llvm.fma.f64(double %143, double %z.i5.i.2, double %z.i5.i.2) %186 = fmul double %185, 0xBCAA6A0D6F814637 %187 = call double @llvm.fma.f64(double %185, double noundef 0x40040D931FF62706, double %186) %188 = call double @llvm.nvvm.rcp.approx.ftz.d(double %a) #139 %189 = fneg double %a %190 = call double @llvm.fma.f64(double %189, double %188, double noundef 1.000000e+00) %191 = call double @llvm.fma.f64(double %190, double %190, double %190) %192 = call double @llvm.fma.f64(double %191, double %188, double %188) %193 = call double @llvm.fma.f64(double %192, double noundef 0xBF64BEE47C38A637, double noundef 0x3F73C25DA81303D5) %194 = call double @llvm.fma.f64(double %193, double %192, double noundef 0xBF6B7C37A96CFC72) %195 = call double @llvm.fma.f64(double %194, double %192, double noundef 0x3F35A85ABDE1E324) %196 = call double @llvm.fma.f64(double %195, double %192, double noundef 0x3F4A8B28F07B3F05) %197 = call double @llvm.fma.f64(double %196, double %192, double noundef 0xBF0A15D1D45A282F) %198 = call double @llvm.fma.f64(double %197, double %192, double noundef 0xBF4367D3468CB5BE) %199 = call double @llvm.fma.f64(double %198, double %192, double noundef 0x3F12471B0E9F1005) %200 = call double @llvm.fma.f64(double %199, double %192, double noundef 0x3F49B1004744D5C4) %201 = call double @llvm.fma.f64(double %200, double %192, double noundef 0xBF2E13CE69AB4B7F) %202 = call double @llvm.fma.f64(double %201, double %192, double noundef 0xBF65F7268ECF8A01) %203 = call double @llvm.fma.f64(double %202, double %192, double noundef 0x3F6C71C71C71ACE0) %204 = call double @llvm.fma.f64(double %203, double %192, double noundef 0x3FB5555555555556) %205 = fmul double %192, %204 %206 = call double @llvm.fma.f64(double %205, double %187, double %187) %207 = fcmp oge double %a, 0x406573FAE561F648 %r.i.0 = select i1 %207, double 0x7FF0000000000000, double %206 br label %405 208: ; preds = %0 %209 = fcmp olt double %a, 0.000000e+00 br i1 %209, label %210, label %403 210: ; preds = %208 %211 = call double @llvm.trunc.f64(double %a) %212 = fcmp oeq double %211, %a br i1 %212, label %405, label %213 213: ; preds = %210 %214 = fcmp ogt float %2, -2.250000e+00 br i1 %214, label %215, label %245 215: ; preds = %213 %216 = fcmp ole float %2, -2.187500e+00 %217 = call double @llvm.fma.f64(double %a, double %a, double %a) %218 = fadd double %a, 1.000000e+00 %s.4 = select i1 %216, double %217, double %a %t.5 = select i1 %216, double %218, double %a %219 = fcmp ole float %2, -2.062500e+00 %220 = call double @llvm.fma.f64(double %t.5, double %s.4, double %s.4) %221 = fadd double %t.5, 1.000000e+00 %s.5 = select i1 %219, double %220, double %s.4 %t.6 = select i1 %219, double %221, double %t.5 %222 = fcmp ole float %2, -1.937500e+00 %223 = call double @llvm.fma.f64(double %t.6, double %s.5, double %s.5) %224 = fadd double %t.6, 1.000000e+00 %s.6 = select i1 %222, double %223, double %s.5 %t.7 = select i1 %222, double %224, double %t.6 %225 = fcmp ole float %2, -1.750000e+00 %226 = call double @llvm.fma.f64(double %t.7, double %s.6, double %s.6) %227 = fadd double %t.7, 1.000000e+00 %s.7 = select i1 %225, double %226, double %s.6 %t.8 = select i1 %225, double %227, double %t.7 %228 = call double @llvm.fma.f64(double %t.8, double noundef 0x3E381B4960FCF5C9, double noundef 0xBE8AF7049AE8A594) %229 = call double @llvm.fma.f64(double %228, double %t.8, double noundef 0x3EB301D46D4B22F5) %230 = call double @llvm.fma.f64(double %229, double %t.8, double noundef 0xBEB50272AEED0FC4) %231 = call double @llvm.fma.f64(double %230, double %t.8, double noundef 0xBEF51CE1A40516F8) %232 = call double @llvm.fma.f64(double %231, double %t.8, double noundef 0x3F20C8AA7419084C) %233 = call double @llvm.fma.f64(double %232, double %t.8, double noundef 0xBF2C3650196BAD8A) %234 = call double @llvm.fma.f64(double %233, double %t.8, double noundef 0xBF531711365A3E26) %235 = call double @llvm.fma.f64(double %234, double %t.8, double noundef 0x3F7D919C52A7DF35) %236 = call double @llvm.fma.f64(double %235, double %t.8, double noundef 0xBF83B4AF28386F4D) %237 = call double @llvm.fma.f64(double %236, double %t.8, double noundef 0xBFA59AF103C37B4D) %238 = call double @llvm.fma.f64(double %237, double %t.8, double noundef 0x3FC5512320B439EF) %239 = call double @llvm.fma.f64(double %238, double %t.8, double noundef 0xBFA5815E8FA26F4F) %240 = call double @llvm.fma.f64(double %239, double %t.8, double noundef 0xBFE4FCF4026AFA2B) %241 = call double @llvm.fma.f64(double %240, double %t.8, double noundef 0x3FE2788CFC6FB619) %242 = call double @llvm.fma.f64(double %241, double %t.8, double noundef 1.000000e+00) %243 = fmul double %s.7, %242 %244 = fdiv double 1.000000e+00, %243 br label %405 245: ; preds = %213 %246 = fcmp ogt float %2, 0xC00CE40000000000 br i1 %246, label %247, label %395 247: ; preds = %245 %248 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %249 = icmp eq i32 %248, 350 br i1 %249, label %__nv_sincospi.exit.i, label %250 250: ; preds = %247 %251 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %252 = icmp eq i32 %251, 370 br i1 %252, label %__nv_sincospi.exit.i, label %__internal_sin_cos_kerneld.exit.i __nv_sincospi.exit.i: ; preds = %250, %247 %253 = shl i32 %1, 1 %254 = icmp ugt i32 %253, -2038431744 %255 = fmul double %a, 0.000000e+00 %spec.select = select i1 %254, double %255, double %a %256 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #139 %257 = call i32 @llvm.nvvm.d2i.hi(double %spec.select) #139 %258 = add i32 %257, 1048576 %259 = call double @llvm.nvvm.lohi.i2d(i32 %256, i32 %258) #139 %260 = call double @llvm.round.f64(double %259) %261 = fptosi double %260 to i64 %262 = trunc i64 %261 to i32 %263 = fneg double %260 %264 = call double @llvm.fma.f64(double %263, double noundef 5.000000e-01, double %spec.select) %265 = fmul double %264, 0x3CA1A62633145C07 %266 = call double @llvm.fma.f64(double %264, double noundef 0x400921FB54442D18, double %265) %267 = fmul double %266, %266 %268 = call double @llvm.fma.f64(double %267, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %269 = call double @llvm.fma.f64(double %268, double %267, double noundef 0xBE927E4F8E06E6D9) %270 = call double @llvm.fma.f64(double %269, double %267, double noundef 0x3EFA01A019DDBCE9) %271 = call double @llvm.fma.f64(double %270, double %267, double noundef 0xBF56C16C16C15D47) %272 = call double @llvm.fma.f64(double %271, double %267, double noundef 0x3FA5555555555551) %273 = call double @llvm.fma.f64(double %272, double %267, double noundef -5.000000e-01) %274 = call double @llvm.fma.f64(double %273, double %267, double noundef 1.000000e+00) %275 = call double @llvm.fma.f64(double %267, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %276 = call double @llvm.fma.f64(double %275, double %267, double noundef 0x3EC71DE369ACE392) %277 = call double @llvm.fma.f64(double %276, double %267, double noundef 0xBF2A01A019DB62A1) %278 = call double @llvm.fma.f64(double %277, double %267, double noundef 0x3F81111111110818) %279 = call double @llvm.fma.f64(double %278, double %267, double noundef 0xBFC5555555555554) %280 = call double @llvm.fma.f64(double %279, double %267, double noundef 0.000000e+00) %281 = call double @llvm.fma.f64(double %280, double %266, double %266) %282 = and i32 %262, 1 %.not4 = icmp eq i32 %282, 0 %s.i.i.0 = select i1 %.not4, double %281, double %274 %283 = and i32 %262, 2 %.not5 = icmp eq i32 %283, 0 %284 = call i32 @llvm.nvvm.d2i.hi(double %s.i.i.0) #139 %285 = call i32 @llvm.nvvm.d2i.lo(double %s.i.i.0) #139 %286 = xor i32 %284, -2147483648 %287 = call double @llvm.nvvm.lohi.i2d(i32 %285, i32 %286) #139 %s.i.i.1 = select i1 %.not5, double %s.i.i.0, double %287 %288 = call double @llvm.trunc.f64(double %spec.select) %289 = fcmp oeq double %spec.select, %288 %290 = fmul double %spec.select, 0.000000e+00 %s.i.i.2 = select i1 %289, double %290, double %s.i.i.1 br label %__nv_sinpi.exit __internal_sin_cos_kerneld.exit.i: ; preds = %250 %291 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %292 = add i32 %1, 1048576 %293 = call double @llvm.nvvm.lohi.i2d(i32 %291, i32 %292) #139 %294 = call double @llvm.round.f64(double %293) %295 = fptosi double %294 to i64 %296 = trunc i64 %295 to i32 %297 = fneg double %294 %298 = call double @llvm.fma.f64(double %297, double noundef 5.000000e-01, double %a) %299 = fmul double %298, 0x3CA1A62633145C07 %300 = call double @llvm.fma.f64(double %298, double noundef 0x400921FB54442D18, double %299) %301 = shl i64 %295, 3 %302 = and i64 %301, 8 %303 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %302 %304 = fmul double %300, %300 %305 = and i32 %296, 1 %.not = icmp eq i32 %305, 0 %306 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %307 = getelementptr inbounds double, double addrspace(1)* %303, i64 1 %308 = load double, double addrspace(1)* %307, align 8 %309 = call double @llvm.fma.f64(double noundef %306, double %304, double %308) %310 = getelementptr inbounds double, double addrspace(1)* %303, i64 2 %311 = load double, double addrspace(1)* %310, align 8 %312 = call double @llvm.fma.f64(double %309, double %304, double %311) %313 = getelementptr inbounds double, double addrspace(1)* %303, i64 3 %314 = load double, double addrspace(1)* %313, align 8 %315 = call double @llvm.fma.f64(double %312, double %304, double %314) %316 = getelementptr inbounds double, double addrspace(1)* %303, i64 4 %317 = load double, double addrspace(1)* %316, align 8 %318 = call double @llvm.fma.f64(double %315, double %304, double %317) %319 = getelementptr inbounds double, double addrspace(1)* %303, i64 5 %320 = load double, double addrspace(1)* %319, align 8 %321 = call double @llvm.fma.f64(double %318, double %304, double %320) %322 = getelementptr inbounds double, double addrspace(1)* %303, i64 6 %323 = load double, double addrspace(1)* %322, align 8 %324 = call double @llvm.fma.f64(double %321, double %304, double %323) %325 = call double @llvm.fma.f64(double %324, double %300, double %300) %326 = call double @llvm.fma.f64(double %324, double %304, double noundef 1.000000e+00) %spec.select1 = select i1 %.not, double %325, double %326 %327 = and i32 %296, 2 %.not3 = icmp eq i32 %327, 0 %328 = call double @llvm.fma.f64(double %spec.select1, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not3, double %spec.select1, double %328 br label %__nv_sinpi.exit __nv_sinpi.exit: ; preds = %__internal_sin_cos_kerneld.exit.i, %__nv_sincospi.exit.i %.01 = phi double [ %s.i.i.2, %__nv_sincospi.exit.i ], [ %.1, %__internal_sin_cos_kerneld.exit.i ] %329 = call double @llvm.fabs.f64(double %a) %330 = call double @llvm.nvvm.rcp.approx.ftz.d(double %329) #139 %331 = fneg double %329 %332 = call double @llvm.fma.f64(double %331, double %330, double noundef 1.000000e+00) %333 = call double @llvm.fma.f64(double %332, double %332, double %332) %334 = call double @llvm.fma.f64(double %333, double %330, double %330) %335 = call double @llvm.fma.f64(double %334, double noundef 0xBF64BEE47C38A637, double noundef 0x3F73C25DA81303D5) %336 = call double @llvm.fma.f64(double %335, double %334, double noundef 0xBF6B7C37A96CFC72) %337 = call double @llvm.fma.f64(double %336, double %334, double noundef 0x3F35A85ABDE1E324) %338 = call double @llvm.fma.f64(double %337, double %334, double noundef 0x3F4A8B28F07B3F05) %339 = call double @llvm.fma.f64(double %338, double %334, double noundef 0xBF0A15D1D45A282F) %340 = call double @llvm.fma.f64(double %339, double %334, double noundef 0xBF4367D3468CB5BE) %341 = call double @llvm.fma.f64(double %340, double %334, double noundef 0x3F12471B0E9F1005) %342 = call double @llvm.fma.f64(double %341, double %334, double noundef 0x3F49B1004744D5C4) %343 = call double @llvm.fma.f64(double %342, double %334, double noundef 0xBF2E13CE69AB4B7F) %344 = call double @llvm.fma.f64(double %343, double %334, double noundef 0xBF65F7268ECF8A01) %345 = call double @llvm.fma.f64(double %344, double %334, double noundef 0x3F6C71C71C71ACE0) %346 = call double @llvm.fma.f64(double %345, double %334, double noundef 0x3FB5555555555556) %347 = fmul double %334, %346 %348 = call double @llvm.fma.f64(double %347, double %.01, double %.01) %349 = fmul double %329, %348 %350 = call double @llvm.fma.f64(double %329, double noundef 0x3FF71547652B82FE, double noundef 0x4338000000000000) %351 = call i32 @llvm.nvvm.d2i.lo(double %350) #139 %352 = fadd double %350, 0xC338000000000000 %353 = call double @llvm.fma.f64(double %352, double noundef 0xBFE62E42FEFA39EF, double %329) %354 = call double @llvm.fma.f64(double %352, double noundef 0xBC7ABC9E3B39803F, double %353) %355 = call double @llvm.fma.f64(double %354, double noundef 0x3E5ADE1569CE2BDF, double noundef 0x3E928AF3FCA213EA) %356 = call double @llvm.fma.f64(double %355, double %354, double noundef 0x3EC71DEE62401315) %357 = call double @llvm.fma.f64(double %356, double %354, double noundef 0x3EFA01997C89EB71) %358 = call double @llvm.fma.f64(double %357, double %354, double noundef 0x3F2A01A014761F65) %359 = call double @llvm.fma.f64(double %358, double %354, double noundef 0x3F56C16C1852B7AF) %360 = call double @llvm.fma.f64(double %359, double %354, double noundef 0x3F81111111122322) %361 = call double @llvm.fma.f64(double %360, double %354, double noundef 0x3FA55555555502A1) %362 = call double @llvm.fma.f64(double %361, double %354, double noundef 0x3FC5555555555511) %363 = call double @llvm.fma.f64(double %362, double %354, double noundef 0x3FE000000000000B) %364 = call double @llvm.fma.f64(double %363, double %354, double noundef 1.000000e+00) %365 = call double @llvm.fma.f64(double %364, double %354, double noundef 1.000000e+00) %366 = call i32 @llvm.abs.i32(i32 %351, i1 noundef false) %367 = icmp slt i32 %366, 1023 br i1 %367, label %368, label %371 368: ; preds = %__nv_sinpi.exit %369 = shl i32 %351, 20 %370 = add i32 %369, 1072693248 br label %__internal_exp_kernel.exit 371: ; preds = %__nv_sinpi.exit %372 = add nsw i32 %351, 2046 %373 = shl i32 %372, 19 %374 = and i32 %373, -1048576 %375 = shl i32 %372, 20 %376 = sub i32 %375, %374 %377 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %374) #139 %378 = fmul double %377, %365 br label %__internal_exp_kernel.exit __internal_exp_kernel.exit: ; preds = %371, %368 %.0 = phi double [ %365, %368 ], [ %378, %371 ] %k.i.i.0 = phi i32 [ %370, %368 ], [ %376, %371 ] %379 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %k.i.i.0) #139 %380 = fmul double %.0, %379 %381 = fmul double %380, 0xBC9A6A0D6F814637 %382 = call double @llvm.fma.f64(double %380, double noundef 0x3FF40D931FF62706, double %381) %383 = fdiv double %382, %349 %384 = fadd double %329, -5.000000e-01 %385 = fcmp ugt float %2, 0xC00C3C8000000000 %386 = call i32 @llvm.nvvm.d2i.lo(double %384) #139 %387 = call i32 @llvm.nvvm.d2i.hi(double %384) #139 %388 = add i32 %387, -1048576 %389 = call double @llvm.nvvm.lohi.i2d(i32 %386, i32 %388) #139 %t.9 = select i1 %385, double %384, double %389 %390 = fneg double %t.9 %391 = call fastcc double @__internal_accurate_pow(double %329, double %390) #139 %392 = fcmp ole float %2, 0xC00C3C8000000000 %393 = select i1 %392, double %391, double 1.000000e+00 %s.8 = fmul double %393, %383 %394 = fmul double %391, %s.8 br label %405 395: ; preds = %245 %396 = call double @llvm.floor.f64(double %a) %397 = fmul double %396, 5.000000e-01 %398 = call double @llvm.floor.f64(double %397) %399 = fmul double %398, 2.000000e+00 %400 = fsub double %396, %399 %401 = fcmp oeq double %400, 1.000000e+00 %402 = select i1 %401, double -0.000000e+00, double 0.000000e+00 br label %405 403: ; preds = %208 %404 = fadd double %a, %a br label %405 405: ; preds = %210, %403, %215, %395, %__internal_exp_kernel.exit, %6, %__nv_exp.exit.i %s.13 = phi double [ %35, %6 ], [ %r.i.0, %__nv_exp.exit.i ], [ %404, %403 ], [ %244, %215 ], [ %394, %__internal_exp_kernel.exit ], [ %402, %395 ], [ 0xFFF8000000000000, %210 ] ret double %s.13 } ; Function Attrs: noinline nounwind define dso_local double @__nv_lgamma(double %a) local_unnamed_addr #120 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %163, label %3 3: ; preds = %0 %4 = call fastcc double @__internal_lgamma_pos(double %1) #143 %5 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %6 = icmp slt i32 %5, 0 br i1 %6, label %7, label %165 7: ; preds = %3 %8 = call double @llvm.trunc.f64(double %1) #140 %9 = fcmp oeq double %1, %8 br i1 %9, label %165, label %10 10: ; preds = %7 %11 = call i32 @llvm.nvvm.d2i.hi(double %1) #142 %12 = icmp slt i32 %11, 1006632960 br i1 %12, label %97, label %13 13: ; preds = %10 %14 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %15 = icmp eq i32 %14, 350 br i1 %15, label %__nv_sincospi.exit.i, label %16 16: ; preds = %13 %17 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %18 = icmp eq i32 %17, 370 br i1 %18, label %__nv_sincospi.exit.i, label %__internal_sin_cos_kerneld.exit.i __nv_sincospi.exit.i: ; preds = %16, %13 %19 = icmp ugt i32 %11, 1128267776 %20 = fmul double %1, 0.000000e+00 %spec.select = select i1 %19, double %20, double %1 %21 = call i32 @llvm.nvvm.d2i.lo(double %spec.select) #139 %22 = call i32 @llvm.nvvm.d2i.hi(double %spec.select) #139 %23 = add i32 %22, 1048576 %24 = call double @llvm.nvvm.lohi.i2d(i32 %21, i32 %23) #139 %25 = call double @llvm.round.f64(double %24) %26 = fptosi double %25 to i64 %27 = trunc i64 %26 to i32 %28 = fneg double %25 %29 = call double @llvm.fma.f64(double %28, double noundef 5.000000e-01, double %spec.select) %30 = fmul double %29, 0x3CA1A62633145C07 %31 = call double @llvm.fma.f64(double %29, double noundef 0x400921FB54442D18, double %30) %32 = fmul double %31, %31 %33 = call double @llvm.fma.f64(double %32, double noundef 0xBDA8FF8320FD8164, double noundef 0x3E21EEA7C1EF8528) %34 = call double @llvm.fma.f64(double %33, double %32, double noundef 0xBE927E4F8E06E6D9) %35 = call double @llvm.fma.f64(double %34, double %32, double noundef 0x3EFA01A019DDBCE9) %36 = call double @llvm.fma.f64(double %35, double %32, double noundef 0xBF56C16C16C15D47) %37 = call double @llvm.fma.f64(double %36, double %32, double noundef 0x3FA5555555555551) %38 = call double @llvm.fma.f64(double %37, double %32, double noundef -5.000000e-01) %39 = call double @llvm.fma.f64(double %38, double %32, double noundef 1.000000e+00) %40 = call double @llvm.fma.f64(double %32, double noundef 0x3DE5DB65F9785EBA, double noundef 0xBE5AE5F12CB0D246) %41 = call double @llvm.fma.f64(double %40, double %32, double noundef 0x3EC71DE369ACE392) %42 = call double @llvm.fma.f64(double %41, double %32, double noundef 0xBF2A01A019DB62A1) %43 = call double @llvm.fma.f64(double %42, double %32, double noundef 0x3F81111111110818) %44 = call double @llvm.fma.f64(double %43, double %32, double noundef 0xBFC5555555555554) %45 = call double @llvm.fma.f64(double %44, double %32, double noundef 0.000000e+00) %46 = call double @llvm.fma.f64(double %45, double %31, double %31) %47 = and i32 %27, 1 %.not4 = icmp eq i32 %47, 0 %s.i.i.0 = select i1 %.not4, double %46, double %39 %48 = and i32 %27, 2 %.not5 = icmp eq i32 %48, 0 %49 = call i32 @llvm.nvvm.d2i.hi(double %s.i.i.0) #139 %50 = call i32 @llvm.nvvm.d2i.lo(double %s.i.i.0) #139 %51 = xor i32 %49, -2147483648 %52 = call double @llvm.nvvm.lohi.i2d(i32 %50, i32 %51) #139 %s.i.i.1 = select i1 %.not5, double %s.i.i.0, double %52 %53 = call double @llvm.trunc.f64(double %spec.select) %54 = fcmp oeq double %spec.select, %53 %55 = fmul double %spec.select, 0.000000e+00 %s.i.i.2 = select i1 %54, double %55, double %s.i.i.1 br label %__nv_sinpi.exit __internal_sin_cos_kerneld.exit.i: ; preds = %16 %56 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %57 = add nuw i32 %11, 1048576 %58 = call double @llvm.nvvm.lohi.i2d(i32 %56, i32 %57) #139 %59 = call double @llvm.round.f64(double %58) %60 = fptosi double %59 to i64 %61 = trunc i64 %60 to i32 %62 = fneg double %59 %63 = call double @llvm.fma.f64(double %62, double noundef 5.000000e-01, double %1) %64 = fmul double %63, 0x3CA1A62633145C07 %65 = call double @llvm.fma.f64(double %63, double noundef 0x400921FB54442D18, double %64) %66 = shl i64 %60, 3 %67 = and i64 %66, 8 %68 = getelementptr inbounds [16 x double], [16 x double] addrspace(1)* @__cudart_sin_cos_coeffs, i64 0, i64 %67 %69 = fmul double %65, %65 %70 = and i32 %61, 1 %.not = icmp eq i32 %70, 0 %71 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %72 = getelementptr inbounds double, double addrspace(1)* %68, i64 1 %73 = load double, double addrspace(1)* %72, align 8 %74 = call double @llvm.fma.f64(double noundef %71, double %69, double %73) %75 = getelementptr inbounds double, double addrspace(1)* %68, i64 2 %76 = load double, double addrspace(1)* %75, align 8 %77 = call double @llvm.fma.f64(double %74, double %69, double %76) %78 = getelementptr inbounds double, double addrspace(1)* %68, i64 3 %79 = load double, double addrspace(1)* %78, align 8 %80 = call double @llvm.fma.f64(double %77, double %69, double %79) %81 = getelementptr inbounds double, double addrspace(1)* %68, i64 4 %82 = load double, double addrspace(1)* %81, align 8 %83 = call double @llvm.fma.f64(double %80, double %69, double %82) %84 = getelementptr inbounds double, double addrspace(1)* %68, i64 5 %85 = load double, double addrspace(1)* %84, align 8 %86 = call double @llvm.fma.f64(double %83, double %69, double %85) %87 = getelementptr inbounds double, double addrspace(1)* %68, i64 6 %88 = load double, double addrspace(1)* %87, align 8 %89 = call double @llvm.fma.f64(double %86, double %69, double %88) %90 = call double @llvm.fma.f64(double %89, double %65, double %65) %91 = call double @llvm.fma.f64(double %89, double %69, double noundef 1.000000e+00) %spec.select1 = select i1 %.not, double %90, double %91 %92 = and i32 %61, 2 %.not3 = icmp eq i32 %92, 0 %93 = call double @llvm.fma.f64(double %spec.select1, double noundef -1.000000e+00, double noundef 0.000000e+00) %.1 = select i1 %.not3, double %spec.select1, double %93 br label %__nv_sinpi.exit __nv_sinpi.exit: ; preds = %__internal_sin_cos_kerneld.exit.i, %__nv_sincospi.exit.i %.01 = phi double [ %s.i.i.2, %__nv_sincospi.exit.i ], [ %.1, %__internal_sin_cos_kerneld.exit.i ] %94 = fmul double %.01, %a %95 = call double @llvm.fabs.f64(double %94) %96 = fdiv double 0x400921FB54442D18, %95 %.pre = call i32 @llvm.nvvm.d2i.hi(double %96) #139 br label %97 97: ; preds = %10, %__nv_sinpi.exit %.pre-phi = phi i32 [ %11, %10 ], [ %.pre, %__nv_sinpi.exit ] %u.0 = phi double [ %1, %10 ], [ %96, %__nv_sinpi.exit ] %98 = call i32 @llvm.nvvm.d2i.lo(double %u.0) #139 %99 = icmp slt i32 %.pre-phi, 1048576 br i1 %99, label %100, label %104 100: ; preds = %97 %101 = fmul double %u.0, 0x4350000000000000 %102 = call i32 @llvm.nvvm.d2i.hi(double %101) #139 %103 = call i32 @llvm.nvvm.d2i.lo(double %101) #139 br label %104 104: ; preds = %100, %97 %.0 = phi double [ %101, %100 ], [ %u.0, %97 ] %ihi.i.0 = phi i32 [ %102, %100 ], [ %.pre-phi, %97 ] %ilo.i.0 = phi i32 [ %103, %100 ], [ %98, %97 ] %e.i.0 = phi i32 [ -1077, %100 ], [ -1023, %97 ] %105 = add i32 %ihi.i.0, -1 %106 = icmp ult i32 %105, 2146435071 br i1 %106, label %107, label %156 107: ; preds = %104 %108 = lshr i32 %ihi.i.0, 20 %109 = add nsw i32 %e.i.0, %108 %110 = and i32 %ihi.i.0, -2146435073 %111 = or i32 %110, 1072693248 %112 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %111) #139 %113 = icmp sgt i32 %111, 1073127582 br i1 %113, label %114, label %120 114: ; preds = %107 %115 = call i32 @llvm.nvvm.d2i.lo(double %112) #139 %116 = call i32 @llvm.nvvm.d2i.hi(double %112) #139 %117 = add i32 %116, -1048576 %118 = call double @llvm.nvvm.lohi.i2d(i32 %115, i32 %117) #139 %119 = add nsw i32 %109, 1 br label %120 120: ; preds = %114, %107 %m.i.0 = phi double [ %118, %114 ], [ %112, %107 ] %e.i.1 = phi i32 [ %119, %114 ], [ %109, %107 ] %121 = fadd double %m.i.0, -1.000000e+00 %122 = fadd double %m.i.0, 1.000000e+00 %123 = call double @llvm.nvvm.rcp.approx.ftz.d(double %122) #139 %124 = fneg double %122 %125 = call double @llvm.fma.f64(double %124, double %123, double noundef 1.000000e+00) %126 = call double @llvm.fma.f64(double %125, double %125, double %125) %127 = call double @llvm.fma.f64(double %126, double %123, double %123) %128 = fmul double %121, %127 %129 = fadd double %128, %128 %130 = fmul double %129, %129 %131 = call double @llvm.fma.f64(double %130, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) %132 = call double @llvm.fma.f64(double %131, double %130, double noundef 0x3EF3B2669F02676F) %133 = call double @llvm.fma.f64(double %132, double %130, double noundef 0x3F1745CBA9AB0956) %134 = call double @llvm.fma.f64(double %133, double %130, double noundef 0x3F3C71C72D1B5154) %135 = call double @llvm.fma.f64(double %134, double %130, double noundef 0x3F624924923BE72D) %136 = call double @llvm.fma.f64(double %135, double %130, double noundef 0x3F8999999999A3C4) %137 = call double @llvm.fma.f64(double %136, double %130, double noundef 0x3FB5555555555554) %138 = fsub double %121, %129 %139 = fmul double %138, 2.000000e+00 %140 = fneg double %129 %141 = call double @llvm.fma.f64(double %140, double %121, double %139) %142 = fmul double %127, %141 %143 = fmul double %130, %137 %144 = call double @llvm.fma.f64(double %143, double %129, double %142) %145 = xor i32 %e.i.1, -2147483648 %146 = call double @llvm.nvvm.lohi.i2d(i32 %145, i32 noundef 1127219200) #139 %147 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #139 %148 = fsub double %146, %147 %149 = call double @llvm.fma.f64(double %148, double noundef 0x3FE62E42FEFA39EF, double %129) %150 = fneg double %148 %151 = call double @llvm.fma.f64(double %150, double noundef 0x3FE62E42FEFA39EF, double %149) %152 = fsub double %151, %129 %153 = fsub double %144, %152 %154 = call double @llvm.fma.f64(double %148, double noundef 0x3C7ABC9E3B39803F, double %153) %155 = fadd double %149, %154 br label %__nv_log.exit 156: ; preds = %104 %157 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) %158 = call i32 @llvm.nvvm.d2i.hi(double %.0) #139 %159 = bitcast i32 %158 to float %160 = fcmp oeq float %159, 0.000000e+00 %q.i.0 = select i1 %160, double 0xFFF0000000000000, double %157 br label %__nv_log.exit __nv_log.exit: ; preds = %156, %120 %q.i.1 = phi double [ %155, %120 ], [ %q.i.0, %156 ] %161 = fneg double %q.i.1 %162 = fsub double %q.i.1, %4 %t.0 = select i1 %12, double %161, double %162 br label %165 163: ; preds = %0 %164 = fadd double %a, %a br label %165 165: ; preds = %7, %3, %__nv_log.exit, %163 %t.3 = phi double [ %164, %163 ], [ %4, %3 ], [ %t.0, %__nv_log.exit ], [ 0x7FF0000000000000, %7 ] ret double %t.3 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define internal fastcc double @__internal_lgamma_pos(double %a) unnamed_addr #121 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = icmp sgt i32 %1, 1074266111 br i1 %2, label %3, label %101 3: ; preds = %0 %4 = icmp ugt i32 %1, 1075838975 br i1 %4, label %5, label %83 5: ; preds = %3 %6 = call double @llvm.nvvm.rcp.approx.ftz.d(double %a) #142 %7 = fneg double %a %8 = call double @llvm.fma.f64(double %7, double %6, double noundef 1.000000e+00) #140 %9 = call double @llvm.fma.f64(double %8, double %8, double %8) #140 %10 = call double @llvm.fma.f64(double %9, double %6, double %6) #140 %11 = fmul double %10, %10 %12 = call double @llvm.fma.f64(double %11, double noundef 0xBF5AC321034783F9, double noundef 0x3F4B68B992738FBF) #140 %13 = call double @llvm.fma.f64(double %12, double %11, double noundef 0xBF4380D01E4F7B8C) #140 %14 = call double @llvm.fma.f64(double %13, double %11, double noundef 0x3F4A019FA29F7264) #140 %15 = call double @llvm.fma.f64(double %14, double %11, double noundef 0xBF66C16C16B2ACEC) #140 %16 = call double @llvm.fma.f64(double %15, double %11, double noundef 0x3FB5555555555545) #140 %17 = call double @llvm.fma.f64(double %16, double %10, double noundef 0x3FED67F1C864BEAE) #140 %18 = add nsw i32 %1, -1 %19 = icmp ult i32 %18, 2146435071 br i1 %19, label %20, label %70 20: ; preds = %5 %21 = call i32 @llvm.nvvm.d2i.lo(double %a) #142 %22 = lshr i32 %1, 20 %23 = add nsw i32 %22, -1023 %24 = and i32 %1, -2146435073 %25 = or i32 %24, 1072693248 %26 = call double @llvm.nvvm.lohi.i2d(i32 %21, i32 %25) #142 %27 = icmp sgt i32 %25, 1073127582 br i1 %27, label %28, label %34 28: ; preds = %20 %29 = call i32 @llvm.nvvm.d2i.lo(double %26) #142 %30 = call i32 @llvm.nvvm.d2i.hi(double %26) #142 %31 = add i32 %30, -1048576 %32 = call double @llvm.nvvm.lohi.i2d(i32 %29, i32 %31) #142 %33 = add nsw i32 %22, -1022 br label %34 34: ; preds = %28, %20 %m.i10.0 = phi double [ %32, %28 ], [ %26, %20 ] %e.i22.1 = phi i32 [ %33, %28 ], [ %23, %20 ] %35 = fadd double %m.i10.0, -1.000000e+00 %36 = fadd double %m.i10.0, 1.000000e+00 %37 = call double @llvm.nvvm.rcp.approx.ftz.d(double %36) #142 %38 = fneg double %36 %39 = call double @llvm.fma.f64(double %38, double %37, double noundef 1.000000e+00) #140 %40 = call double @llvm.fma.f64(double %39, double %39, double %39) #140 %41 = call double @llvm.fma.f64(double %40, double %37, double %37) #140 %42 = fmul double %35, %41 %43 = fadd double %42, %42 %44 = fmul double %43, %43 %45 = call double @llvm.fma.f64(double %44, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %46 = call double @llvm.fma.f64(double %45, double %44, double noundef 0x3EF3B2669F02676F) #140 %47 = call double @llvm.fma.f64(double %46, double %44, double noundef 0x3F1745CBA9AB0956) #140 %48 = call double @llvm.fma.f64(double %47, double %44, double noundef 0x3F3C71C72D1B5154) #140 %49 = call double @llvm.fma.f64(double %48, double %44, double noundef 0x3F624924923BE72D) #140 %50 = call double @llvm.fma.f64(double %49, double %44, double noundef 0x3F8999999999A3C4) #140 %51 = call double @llvm.fma.f64(double %50, double %44, double noundef 0x3FB5555555555554) #140 %52 = fsub double %35, %43 %53 = fmul double %52, 2.000000e+00 %54 = fneg double %43 %55 = call double @llvm.fma.f64(double %54, double %35, double %53) #140 %56 = fmul double %41, %55 %57 = fmul double %44, %51 %58 = call double @llvm.fma.f64(double %57, double %43, double %56) #140 %59 = xor i32 %e.i22.1, -2147483648 %60 = call double @llvm.nvvm.lohi.i2d(i32 %59, i32 noundef 1127219200) #142 %61 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %62 = fsub double %60, %61 %63 = call double @llvm.fma.f64(double %62, double noundef 0x3FE62E42FEFA39EF, double %43) #140 %64 = fneg double %62 %65 = call double @llvm.fma.f64(double %64, double noundef 0x3FE62E42FEFA39EF, double %63) #140 %66 = fsub double %65, %43 %67 = fsub double %58, %66 %68 = call double @llvm.fma.f64(double %62, double noundef 0x3C7ABC9E3B39803F, double %67) #140 %69 = fadd double %63, %68 br label %__nv_log.exit23 70: ; preds = %5 %71 = call double @llvm.fma.f64(double %a, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %72 = bitcast i32 %1 to float %73 = fcmp oeq float %72, 0.000000e+00 %q.i16.0 = select i1 %73, double 0xFFF0000000000000, double %71 br label %__nv_log.exit23 __nv_log.exit23: ; preds = %70, %34 %q.i16.1 = phi double [ %69, %34 ], [ %q.i16.0, %70 ] %74 = call i32 @llvm.nvvm.d2i.lo(double %q.i16.1) #142 %75 = call i32 @llvm.nvvm.d2i.hi(double %q.i16.1) #142 %76 = add i32 %75, -1048576 %77 = call double @llvm.nvvm.lohi.i2d(i32 %74, i32 %76) #142 %78 = fadd double %a, -5.000000e-01 %79 = call double @llvm.fma.f64(double %77, double %78, double %17) #140 %80 = call double @llvm.fma.f64(double %77, double %78, double %7) #140 %81 = fadd double %80, %79 %82 = fcmp oeq double %a, 0x7FF0000000000000 %t.0 = select i1 %82, double %a, double %81 br label %232 83: ; preds = %3 %84 = fadd double %a, -3.000000e+00 %85 = call double @llvm.fma.f64(double %84, double noundef 0xC0AF7040BB18FB05, double noundef 0xC1122B7730207EF3) #140 %86 = call double @llvm.fma.f64(double %85, double %84, double noundef 0xC1585A0DB81DE7D0) #140 %87 = call double @llvm.fma.f64(double %86, double %84, double noundef 0xC18A992B8BA94677) #140 %88 = call double @llvm.fma.f64(double %87, double %84, double noundef 0xC1AAC5CB6957CC20) #140 %89 = call double @llvm.fma.f64(double %88, double %84, double noundef 0xC1BC0E2B308774BE) #140 %90 = call double @llvm.fma.f64(double %89, double %84, double noundef 0xC1C6BA13DCAE7F67) #140 %91 = call double @llvm.fma.f64(double %90, double %84, double noundef 0xC1CCF33B9C3D120C) #140 %92 = fadd double %84, 0xC08FF62E0BE189FE %93 = call double @llvm.fma.f64(double %92, double %84, double noundef 0xC10074FACE10C93F) #140 %94 = call double @llvm.fma.f64(double %93, double %84, double noundef 0xC151B662F8D75791) #140 %95 = call double @llvm.fma.f64(double %94, double %84, double noundef 0xC18EE64AB4D207F7) #140 %96 = call double @llvm.fma.f64(double %95, double %84, double noundef 0xC1B9051687C9951A) #140 %97 = call double @llvm.fma.f64(double %96, double %84, double noundef 0xC1D2B866BF0B853D) #140 %98 = call double @llvm.fma.f64(double %97, double %84, double noundef 0xC1D4E2130E9DC133) #140 %99 = fdiv double %91, %98 %100 = fadd double %84, %99 br label %232 101: ; preds = %0 %102 = icmp sgt i32 %1, 1073217535 br i1 %102, label %103, label %125 103: ; preds = %101 %104 = fadd double %a, -2.000000e+00 %105 = call double @llvm.fma.f64(double %104, double noundef 0x3E452636124338B3, double noundef 0xBE71FA71D78C0EE2) #140 %106 = call double @llvm.fma.f64(double %105, double %104, double noundef 0x3E8D111F31E61306) #140 %107 = call double @llvm.fma.f64(double %106, double %104, double noundef 0xBEA0502BBE1B2706) #140 %108 = call double @llvm.fma.f64(double %107, double %104, double noundef 0x3EB06850B2970292) #140 %109 = call double @llvm.fma.f64(double %108, double %104, double noundef 0xBEC108474875033D) #140 %110 = call double @llvm.fma.f64(double %109, double %104, double noundef 0x3ED24ACCC62909DC) #140 %111 = call double @llvm.fma.f64(double %110, double %104, double noundef 0xBEE3CB25209E63BE) #140 %112 = call double @llvm.fma.f64(double %111, double %104, double noundef 0x3EF581CBBC8CDC7B) #140 %113 = call double @llvm.fma.f64(double %112, double %104, double noundef 0xBF078E04B85C7597) #140 %114 = call double @llvm.fma.f64(double %113, double %104, double noundef 0x3F1A12730CF45051) #140 %115 = call double @llvm.fma.f64(double %114, double %104, double noundef 0xBF2D3FD354062012) #140 %116 = call double @llvm.fma.f64(double %115, double %104, double noundef 0x3F40B36B0B4DE323) #140 %117 = call double @llvm.fma.f64(double %116, double %104, double noundef 0xBF538AC5C6D0317A) #140 %118 = call double @llvm.fma.f64(double %117, double %104, double noundef 0x3F67ADD6EAAB19FC) #140 %119 = call double @llvm.fma.f64(double %118, double %104, double noundef 0xBF7E404FC20E4D5B) #140 %120 = call double @llvm.fma.f64(double %119, double %104, double noundef 0x3F951322AC7DA390) #140 %121 = call double @llvm.fma.f64(double %120, double %104, double noundef 0xBFB13E001A5578A3) #140 %122 = call double @llvm.fma.f64(double %121, double %104, double noundef 0x3FD4A34CC4A60FA3) #140 %123 = call double @llvm.fma.f64(double %122, double %104, double noundef 0x3FDB0EE6072093CF) #140 %124 = fmul double %104, %123 br label %232 125: ; preds = %101 %126 = icmp sgt i32 %1, 1072064101 br i1 %126, label %127, label %151 127: ; preds = %125 %128 = fsub double 1.000000e+00, %a %129 = call double @llvm.fma.f64(double %128, double noundef 0x3F881F6D2A4C4310, double noundef 0x3FA3EB504359EB88) #140 %130 = call double @llvm.fma.f64(double %129, double %128, double noundef 0x3FAE35D8DEB06317) #140 %131 = call double @llvm.fma.f64(double %130, double %128, double noundef 0x3FAED469A8B6ECCE) #140 %132 = call double @llvm.fma.f64(double %131, double %128, double noundef 0x3FACC1B1C357BEFE) #140 %133 = call double @llvm.fma.f64(double %132, double %128, double noundef 0x3FAD7154DB67F79F) #140 %134 = call double @llvm.fma.f64(double %133, double %128, double noundef 0x3FAFCC622CF2F7BB) #140 %135 = call double @llvm.fma.f64(double %134, double %128, double noundef 0x3FB11747A4D1CC43) #140 %136 = call double @llvm.fma.f64(double %135, double %128, double noundef 0x3FB24CE16A21B8AC) #140 %137 = call double @llvm.fma.f64(double %136, double %128, double noundef 0x3FB3B1C21A7BCB00) #140 %138 = call double @llvm.fma.f64(double %137, double %128, double noundef 0x3FB556723452ED57) #140 %139 = call double @llvm.fma.f64(double %138, double %128, double noundef 0x3FB748C00891544F) #140 %140 = call double @llvm.fma.f64(double %139, double %128, double noundef 0x3FB9A0207808CF40) #140 %141 = call double @llvm.fma.f64(double %140, double %128, double noundef 0x3FBC80673B8AE26B) #140 %142 = call double @llvm.fma.f64(double %141, double %128, double noundef 0x3FC010B364B7E555) #140 %143 = call double @llvm.fma.f64(double %142, double %128, double noundef 0x3FC2703A1D239658) #140 %144 = call double @llvm.fma.f64(double %143, double %128, double noundef 0x3FC5B40CB1137E6E) #140 %145 = call double @llvm.fma.f64(double %144, double %128, double noundef 0x3FCA8B9C17AC4F03) #140 %146 = call double @llvm.fma.f64(double %145, double %128, double noundef 0x3FD151322AC7CB52) #140 %147 = call double @llvm.fma.f64(double %146, double %128, double noundef 0x3FD9A4D55BEAB1D4) #140 %148 = call double @llvm.fma.f64(double %147, double %128, double noundef 0x3FEA51A6625307D6) #140 %149 = call double @llvm.fma.f64(double %148, double %128, double noundef 0x3FE2788CFC6FB619) #140 %150 = fmul double %128, %149 br label %232 151: ; preds = %125 %152 = call double @llvm.fma.f64(double %a, double noundef 0xBE7844988BFE6590, double noundef 0x3EA7B77CEB0625E8) #140 %153 = call double @llvm.fma.f64(double %152, double %a, double noundef 0xBE998C69C8710CC4) #140 %154 = call double @llvm.fma.f64(double %153, double %a, double noundef 0xBEF6527A5A11CF6E) #140 %155 = call double @llvm.fma.f64(double %154, double %a, double noundef 0x3F20EC2950B1B5DE) #140 %156 = call double @llvm.fma.f64(double %155, double %a, double noundef 0xBF2C4D80C24BA278) #140 %157 = call double @llvm.fma.f64(double %156, double %a, double noundef 0xBF5315B4E8CC0D09) #140 %158 = call double @llvm.fma.f64(double %157, double %a, double noundef 0x3F7D917F15D50020) #140 %159 = call double @llvm.fma.f64(double %158, double %a, double noundef 0xBF83B4ABB41CB6FA) #140 %160 = call double @llvm.fma.f64(double %159, double %a, double noundef 0xBFA59AF1275B7120) #140 %161 = call double @llvm.fma.f64(double %160, double %a, double noundef 0x3FC5512321A168A0) #140 %162 = call double @llvm.fma.f64(double %161, double %a, double noundef 0xBFA5815E8FDCE74C) #140 %163 = call double @llvm.fma.f64(double %162, double %a, double noundef 0xBFE4FCF4026ADD1A) #140 %164 = call double @llvm.fma.f64(double %163, double %a, double noundef 0x3FE2788CFC6FB5C8) #140 %165 = fmul double %164, %a %166 = call double @llvm.fma.f64(double %165, double %a, double %a) #140 %167 = call i32 @llvm.nvvm.d2i.hi(double %166) #142 %168 = call i32 @llvm.nvvm.d2i.lo(double %166) #142 %169 = icmp slt i32 %167, 1048576 br i1 %169, label %170, label %174 170: ; preds = %151 %171 = fmul double %166, 0x4350000000000000 %172 = call i32 @llvm.nvvm.d2i.hi(double %171) #142 %173 = call i32 @llvm.nvvm.d2i.lo(double %171) #142 br label %174 174: ; preds = %170, %151 %.0 = phi double [ %171, %170 ], [ %166, %151 ] %ihi.i.0 = phi i32 [ %172, %170 ], [ %167, %151 ] %ilo.i.0 = phi i32 [ %173, %170 ], [ %168, %151 ] %e.i.0 = phi i32 [ -1077, %170 ], [ -1023, %151 ] %175 = add i32 %ihi.i.0, -1 %176 = icmp ult i32 %175, 2146435071 br i1 %176, label %177, label %226 177: ; preds = %174 %178 = lshr i32 %ihi.i.0, 20 %179 = add nsw i32 %e.i.0, %178 %180 = and i32 %ihi.i.0, -2146435073 %181 = or i32 %180, 1072693248 %182 = call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %181) #142 %183 = icmp sgt i32 %181, 1073127582 br i1 %183, label %184, label %190 184: ; preds = %177 %185 = call i32 @llvm.nvvm.d2i.lo(double %182) #142 %186 = call i32 @llvm.nvvm.d2i.hi(double %182) #142 %187 = add i32 %186, -1048576 %188 = call double @llvm.nvvm.lohi.i2d(i32 %185, i32 %187) #142 %189 = add nsw i32 %179, 1 br label %190 190: ; preds = %184, %177 %m.i.0 = phi double [ %188, %184 ], [ %182, %177 ] %e.i.1 = phi i32 [ %189, %184 ], [ %179, %177 ] %191 = fadd double %m.i.0, -1.000000e+00 %192 = fadd double %m.i.0, 1.000000e+00 %193 = call double @llvm.nvvm.rcp.approx.ftz.d(double %192) #142 %194 = fneg double %192 %195 = call double @llvm.fma.f64(double %194, double %193, double noundef 1.000000e+00) #140 %196 = call double @llvm.fma.f64(double %195, double %195, double %195) #140 %197 = call double @llvm.fma.f64(double %196, double %193, double %193) #140 %198 = fmul double %191, %197 %199 = fadd double %198, %198 %200 = fmul double %199, %199 %201 = call double @llvm.fma.f64(double %200, double noundef 0x3EB1380B3AE80F1E, double noundef 0x3ED0EE258B7A8B04) #140 %202 = call double @llvm.fma.f64(double %201, double %200, double noundef 0x3EF3B2669F02676F) #140 %203 = call double @llvm.fma.f64(double %202, double %200, double noundef 0x3F1745CBA9AB0956) #140 %204 = call double @llvm.fma.f64(double %203, double %200, double noundef 0x3F3C71C72D1B5154) #140 %205 = call double @llvm.fma.f64(double %204, double %200, double noundef 0x3F624924923BE72D) #140 %206 = call double @llvm.fma.f64(double %205, double %200, double noundef 0x3F8999999999A3C4) #140 %207 = call double @llvm.fma.f64(double %206, double %200, double noundef 0x3FB5555555555554) #140 %208 = fsub double %191, %199 %209 = fmul double %208, 2.000000e+00 %210 = fneg double %199 %211 = call double @llvm.fma.f64(double %210, double %191, double %209) #140 %212 = fmul double %197, %211 %213 = fmul double %200, %207 %214 = call double @llvm.fma.f64(double %213, double %199, double %212) #140 %215 = xor i32 %e.i.1, -2147483648 %216 = call double @llvm.nvvm.lohi.i2d(i32 %215, i32 noundef 1127219200) #142 %217 = call double @llvm.nvvm.lohi.i2d(i32 noundef -2147483648, i32 noundef 1127219200) #142 %218 = fsub double %216, %217 %219 = call double @llvm.fma.f64(double %218, double noundef 0x3FE62E42FEFA39EF, double %199) #140 %220 = fneg double %218 %221 = call double @llvm.fma.f64(double %220, double noundef 0x3FE62E42FEFA39EF, double %219) #140 %222 = fsub double %221, %199 %223 = fsub double %214, %222 %224 = call double @llvm.fma.f64(double %218, double noundef 0x3C7ABC9E3B39803F, double %223) #140 %225 = fadd double %219, %224 br label %__nv_log.exit 226: ; preds = %174 %227 = call double @llvm.fma.f64(double %.0, double noundef 0x7FF0000000000000, double noundef 0x7FF0000000000000) #140 %228 = call i32 @llvm.nvvm.d2i.hi(double %.0) #142 %229 = bitcast i32 %228 to float %230 = fcmp oeq float %229, 0.000000e+00 %q.i.0 = select i1 %230, double 0xFFF0000000000000, double %227 br label %__nv_log.exit __nv_log.exit: ; preds = %226, %190 %q.i.1 = phi double [ %225, %190 ], [ %q.i.0, %226 ] %231 = fneg double %q.i.1 br label %232 232: ; preds = %103, %__nv_log.exit, %127, %__nv_log.exit23, %83 %t.4 = phi double [ %t.0, %__nv_log.exit23 ], [ %100, %83 ], [ %124, %103 ], [ %150, %127 ], [ %231, %__nv_log.exit ] ret double %t.4 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_ldexp(double %a, i32 %b) local_unnamed_addr #122 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = icmp slt i32 %b, 2200 %min = select i1 %2, i32 %b, i32 2200 %max.cond.inv = icmp sgt i32 %min, -2200 %max = select i1 %max.cond.inv, i32 %min, i32 -2200 %3 = fcmp oeq double %a, 0.000000e+00 %4 = fcmp oeq double %1, 0x7FF0000000000000 %or.cond = or i1 %3, %4 %5 = icmp eq i32 %max, 0 %or.cond2 = select i1 %or.cond, i1 true, i1 %5 br i1 %or.cond2, label %6, label %9 6: ; preds = %0 %7 = fcmp one double %a, 0.000000e+00 %8 = select i1 %7, double -0.000000e+00, double %a %.0 = fadd double %8, %a br label %43 9: ; preds = %0 %10 = call i32 @llvm.abs.i32(i32 %max, i1 noundef true) #140 %11 = icmp ult i32 %10, 1022 br i1 %11, label %12, label %17 12: ; preds = %9 %13 = shl i32 %max, 20 %14 = add i32 %13, 1072693248 %15 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %14) #142 %16 = fmul double %15, %a br label %43 17: ; preds = %9 %18 = icmp ult i32 %10, 2044 br i1 %18, label %19, label %30 19: ; preds = %17 %.lhs.trunc = trunc i32 %max to i16 %20 = sdiv i16 %.lhs.trunc, 2 %.sext = sext i16 %20 to i32 %21 = shl nsw i32 %.sext, 20 %22 = add i32 %21, 1072693248 %23 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %22) #142 %24 = fmul double %23, %a %25 = sub nsw i32 %max, %.sext %26 = shl i32 %25, 20 %27 = add i32 %26, 1072693248 %28 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %27) #142 %29 = fmul double %24, %28 br label %43 30: ; preds = %17 %.lhs.trunc3 = trunc i32 %max to i16 %31 = sdiv i16 %.lhs.trunc3, 4 %.sext4 = sext i16 %31 to i32 %32 = shl nsw i32 %.sext4, 20 %33 = add nsw i32 %32, 1072693248 %34 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %33) #142 %35 = fmul double %34, %a %36 = fmul double %34, %35 %37 = fmul double %34, %36 %.neg = mul nsw i32 %.sext4, -3 %38 = add nsw i32 %.neg, %max %39 = shl i32 %38, 20 %40 = add i32 %39, 1072693248 %41 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %40) #142 %42 = fmul double %41, %37 br label %43 43: ; preds = %12, %30, %19, %6 %.3 = phi double [ %.0, %6 ], [ %16, %12 ], [ %29, %19 ], [ %42, %30 ] ret double %.3 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_scalbn(double %a, i32 %b) local_unnamed_addr #123 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = icmp slt i32 %b, 2200 %min = select i1 %2, i32 %b, i32 2200 %max.cond.inv = icmp sgt i32 %min, -2200 %max = select i1 %max.cond.inv, i32 %min, i32 -2200 %3 = fcmp oeq double %a, 0.000000e+00 %4 = fcmp oeq double %1, 0x7FF0000000000000 %or.cond = or i1 %3, %4 %5 = icmp eq i32 %max, 0 %or.cond2 = select i1 %or.cond, i1 true, i1 %5 br i1 %or.cond2, label %6, label %9 6: ; preds = %0 %7 = fcmp one double %a, 0.000000e+00 %8 = select i1 %7, double -0.000000e+00, double %a %.0 = fadd double %8, %a br label %__nv_ldexp.exit 9: ; preds = %0 %10 = call i32 @llvm.abs.i32(i32 %max, i1 noundef true) #140 %11 = icmp ult i32 %10, 1022 br i1 %11, label %12, label %17 12: ; preds = %9 %13 = shl i32 %max, 20 %14 = add i32 %13, 1072693248 %15 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %14) #142 %16 = fmul double %15, %a br label %__nv_ldexp.exit 17: ; preds = %9 %18 = icmp ult i32 %10, 2044 br i1 %18, label %19, label %30 19: ; preds = %17 %.lhs.trunc = trunc i32 %max to i16 %20 = sdiv i16 %.lhs.trunc, 2 %.sext = sext i16 %20 to i32 %21 = shl nsw i32 %.sext, 20 %22 = add i32 %21, 1072693248 %23 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %22) #142 %24 = fmul double %23, %a %25 = sub nsw i32 %max, %.sext %26 = shl i32 %25, 20 %27 = add i32 %26, 1072693248 %28 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %27) #142 %29 = fmul double %24, %28 br label %__nv_ldexp.exit 30: ; preds = %17 %.lhs.trunc3 = trunc i32 %max to i16 %31 = sdiv i16 %.lhs.trunc3, 4 %.sext4 = sext i16 %31 to i32 %32 = shl nsw i32 %.sext4, 20 %33 = add nsw i32 %32, 1072693248 %34 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %33) #142 %35 = fmul double %34, %a %36 = fmul double %34, %35 %37 = fmul double %34, %36 %.neg = mul nsw i32 %.sext4, -3 %38 = add nsw i32 %.neg, %max %39 = shl i32 %38, 20 %40 = add i32 %39, 1072693248 %41 = call double @llvm.nvvm.lohi.i2d(i32 noundef 0, i32 %40) #142 %42 = fmul double %41, %37 br label %__nv_ldexp.exit __nv_ldexp.exit: ; preds = %12, %30, %19, %6 %.3 = phi double [ %.0, %6 ], [ %16, %12 ], [ %29, %19 ], [ %42, %30 ] ret double %.3 } ; Function Attrs: argmemonly nofree noinline nosync nounwind willreturn writeonly define dso_local double @__nv_frexp(double %a, i32* nocapture nofree nonnull writeonly align 4 dereferenceable(4) %b) local_unnamed_addr #124 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2146435072 %3 = icmp eq i32 %2, 0 %4 = fmul double %a, 0x4350000000000000 %5 = call i32 @llvm.nvvm.d2i.hi(double %4) #142 %6 = and i32 %5, 2146435072 %7 = add nsw i32 %6, -56623104 %.0 = select i1 %3, double %4, double %a %expo.0 = select i1 %3, i32 %7, i32 %2 %8 = fcmp oeq double %.0, 0.000000e+00 %9 = icmp eq i32 %expo.0, 2146435072 %or.cond = select i1 %8, i1 true, i1 %9 br i1 %or.cond, label %10, label %12 10: ; preds = %0 %11 = fadd double %.0, %.0 br label %19 12: ; preds = %0 %13 = bitcast double %.0 to i64 %14 = and i64 %13, -9218868437227405313 %15 = or i64 %14, 4602678819172646912 %16 = bitcast i64 %15 to double %17 = add nsw i32 %expo.0, -1071644672 %18 = ashr exact i32 %17, 20 br label %19 19: ; preds = %12, %10 %.1 = phi double [ %11, %10 ], [ %16, %12 ] %expo.1 = phi i32 [ 0, %10 ], [ %18, %12 ] store i32 %expo.1, i32* %b, align 4, !noalias !68 ret double %.1 } ; Function Attrs: noinline nounwind define dso_local double @__nv_modf(double %a, double* nocapture nofree writeonly %b) local_unnamed_addr #125 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = and i32 %1, 2146435072 %.not = icmp eq i32 %2, 2146435072 br i1 %.not, label %11, label %3 3: ; preds = %0 %4 = call double @llvm.trunc.f64(double %a) #140 store double %4, double* %b, align 8, !noalias !68 %5 = fsub double %a, %4 %6 = call i32 @llvm.nvvm.d2i.lo(double %5) #142 %7 = call i32 @llvm.nvvm.d2i.hi(double %5) #142 %8 = and i32 %1, -2147483648 %9 = or i32 %7, %8 %10 = call double @llvm.nvvm.lohi.i2d(i32 %6, i32 %9) #142 br label %37 11: ; preds = %0 %12 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %13 = icmp eq i32 %12, 200 br i1 %13, label %20, label %14 14: ; preds = %11 %15 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %16 = icmp eq i32 %15, 350 br i1 %16, label %20, label %17 17: ; preds = %14 %18 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %19 = icmp eq i32 %18, 370 br i1 %19, label %20, label %23 20: ; preds = %17, %14, %11 %21 = call double @llvm.fabs.f64(double %a) %22 = fcmp oeq double %21, 0x7FF0000000000000 br label %__nv_isinfd.exit 23: ; preds = %17 %24 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %25 = and i32 %1, 2147483647 %26 = icmp eq i32 %25, 2146435072 %27 = icmp eq i32 %24, 0 %28 = select i1 %26, i1 %27, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %23, %20 %.01.in = phi i1 [ %22, %20 ], [ %28, %23 ] br i1 %.01.in, label %29, label %35 29: ; preds = %__nv_isinfd.exit store double %a, double* %b, align 8, !noalias !68 %30 = call i32 @llvm.nvvm.d2i.lo(double noundef 0.000000e+00) #139 %31 = call i32 @llvm.nvvm.d2i.hi(double noundef 0.000000e+00) #139 %32 = and i32 %1, -2147483648 %33 = or i32 %32, %31 %34 = call double @llvm.nvvm.lohi.i2d(i32 %30, i32 %33) #139 br label %37 35: ; preds = %__nv_isinfd.exit %36 = fadd double %a, %a store double %36, double* %b, align 8, !noalias !68 br label %37 37: ; preds = %29, %35, %3 %.1 = phi double [ %10, %3 ], [ %34, %29 ], [ %36, %35 ] ret double %.1 } ; Function Attrs: noinline nounwind define dso_local double @__nv_fmod(double %a, double %b) local_unnamed_addr #126 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 200 br i1 %2, label %9, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 350 br i1 %5, label %9, label %6 6: ; preds = %3 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 370 br i1 %8, label %9, label %60 9: ; preds = %6, %3, %0 %10 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %11 = and i32 %10, 2147483647 %12 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %13 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %14 = and i32 %13, 2147483647 %15 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %16 = call double @llvm.nvvm.lohi.i2d(i32 %12, i32 %11) #139 %17 = call double @llvm.nvvm.lohi.i2d(i32 %15, i32 %14) #139 %18 = icmp ugt i32 %11, 2146435071 %19 = icmp ugt i32 %14, 2146435071 %or.cond = select i1 %18, i1 true, i1 %19 br i1 %or.cond, label %20, label %27 20: ; preds = %9 %21 = fcmp ole double %16, 0x7FF0000000000000 %22 = fcmp ole double %17, 0x7FF0000000000000 %or.cond2 = select i1 %21, i1 %22, i1 false br i1 %or.cond2, label %25, label %23 23: ; preds = %20 %24 = fadd double %a, %b br label %146 25: ; preds = %20 %26 = fcmp oeq double %16, 0x7FF0000000000000 %.01 = select i1 %26, double 0xFFF8000000000000, double %a br label %146 27: ; preds = %9 %28 = fcmp oeq double %17, 0.000000e+00 br i1 %28, label %146, label %29 29: ; preds = %27 %30 = fcmp ult double %16, %17 br i1 %30, label %146, label %31 31: ; preds = %29 %32 = call i32 @llvm.nvvm.d2i.hi(double %17) #139 %33 = icmp slt i32 %32, 1048576 br i1 %33, label %.preheader, label %41 .preheader: ; preds = %31 %34 = fcmp olt double %17, %16 br i1 %34, label %.lr.ph9, label %._crit_edge10 .lr.ph9: ; preds = %.preheader, %.lr.ph9 %t.08 = phi double [ %35, %.lr.ph9 ], [ %17, %.preheader ] %35 = fadd double %t.08, %t.08 %36 = fcmp olt double %35, %16 %37 = call i32 @llvm.nvvm.d2i.hi(double %35) #139 %38 = icmp slt i32 %37, 1048576 %39 = select i1 %36, i1 %38, i1 false br i1 %39, label %.lr.ph9, label %._crit_edge10 ._crit_edge10: ; preds = %.lr.ph9, %.preheader %t.0.lcssa = phi double [ %17, %.preheader ], [ %35, %.lr.ph9 ] %.lcssa = phi i32 [ %32, %.preheader ], [ %37, %.lr.ph9 ] %40 = call i32 @llvm.nvvm.d2i.lo(double %t.0.lcssa) #139 br label %41 41: ; preds = %._crit_edge10, %31 %bhi.0 = phi i32 [ %.lcssa, %._crit_edge10 ], [ %14, %31 ] %blo.0 = phi i32 [ %40, %._crit_edge10 ], [ %15, %31 ] %scaled_b.0 = phi double [ %t.0.lcssa, %._crit_edge10 ], [ 0.000000e+00, %31 ] %42 = call i32 @llvm.nvvm.d2i.hi(double %16) #139 %43 = icmp sgt i32 %42, 1048575 %44 = and i32 %bhi.0, 1048575 %45 = and i32 %10, 2146435072 %46 = or i32 %44, %45 %47 = call double @llvm.nvvm.lohi.i2d(i32 %blo.0, i32 %46) #139 %scaled_b.1 = select i1 %43, double %47, double %scaled_b.0 %48 = fcmp ogt double %scaled_b.1, %16 %49 = fmul double %scaled_b.1, 5.000000e-01 %scaled_b.2 = select i1 %48, double %49, double %scaled_b.1 %50 = fcmp ult double %scaled_b.2, %17 br i1 %50, label %55, label %.lr.ph .lr.ph: ; preds = %41, %.lr.ph %scaled_b.37 = phi double [ %53, %.lr.ph ], [ %scaled_b.2, %41 ] %.26 = phi double [ %.3, %.lr.ph ], [ %16, %41 ] %51 = fcmp oge double %.26, %scaled_b.37 %52 = select i1 %51, double %scaled_b.37, double 0.000000e+00 %.3 = fsub double %.26, %52 %53 = fmul double %scaled_b.37, 5.000000e-01 %54 = fcmp ult double %53, %17 br i1 %54, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph %.pre = call i32 @llvm.nvvm.d2i.hi(double %.3) #139 br label %55 55: ; preds = %._crit_edge, %41 %.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %42, %41 ] %.2.lcssa = phi double [ %.3, %._crit_edge ], [ %16, %41 ] %56 = call i32 @llvm.nvvm.d2i.lo(double %.2.lcssa) #139 %57 = and i32 %10, -2147483648 %58 = or i32 %.pre-phi, %57 %59 = call double @llvm.nvvm.lohi.i2d(i32 %56, i32 %58) #139 br label %146 60: ; preds = %6 %61 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %62 = and i32 %61, 2147483647 %63 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %64 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %65 = and i32 %64, 2147483647 %66 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %67 = call double @llvm.nvvm.lohi.i2d(i32 %63, i32 %62) #139 %68 = call double @llvm.nvvm.lohi.i2d(i32 %66, i32 %65) #139 %69 = icmp ugt i32 %62, 2146435071 %70 = icmp ugt i32 %65, 2146435071 %or.cond3 = select i1 %69, i1 true, i1 %70 br i1 %or.cond3, label %71, label %78 71: ; preds = %60 %72 = fcmp ole double %67, 0x7FF0000000000000 %73 = fcmp ole double %68, 0x7FF0000000000000 %or.cond5 = select i1 %72, i1 %73, i1 false br i1 %or.cond5, label %76, label %74 74: ; preds = %71 %75 = fadd double %a, %b br label %146 76: ; preds = %71 %77 = fcmp oeq double %67, 0x7FF0000000000000 %.7 = select i1 %77, double 0xFFF8000000000000, double %a br label %146 78: ; preds = %60 %79 = fcmp oeq double %68, 0.000000e+00 br i1 %79, label %146, label %80 80: ; preds = %78 %81 = fcmp ult double %67, %68 br i1 %81, label %146, label %82 82: ; preds = %80 %83 = call i32 @llvm.nvvm.d2i.hi(double %67) #139 %84 = lshr i32 %83, 20 %85 = call i32 @llvm.nvvm.d2i.hi(double %68) #139 %86 = lshr i32 %85, 20 %87 = icmp ult i32 %83, 1048576 br i1 %87, label %88, label %94 88: ; preds = %82 %89 = fmul double %67, 0x4350000000000000 %90 = call i32 @llvm.nvvm.d2i.hi(double %89) #139 %91 = lshr i32 %90, 20 %92 = add nsw i32 %84, -54 %93 = add nsw i32 %92, %91 br label %94 94: ; preds = %88, %82 %.9 = phi double [ %89, %88 ], [ %67, %82 ] %expoa.0 = phi i32 [ %93, %88 ], [ %84, %82 ] %95 = icmp ult i32 %85, 1048576 br i1 %95, label %96, label %102 96: ; preds = %94 %97 = fmul double %68, 0x4350000000000000 %98 = call i32 @llvm.nvvm.d2i.hi(double %97) #139 %99 = lshr i32 %98, 20 %100 = add nsw i32 %86, -54 %101 = add nsw i32 %100, %99 br label %102 102: ; preds = %96, %94 %.0 = phi double [ %97, %96 ], [ %68, %94 ] %expob.0 = phi i32 [ %101, %96 ], [ %86, %94 ] %103 = bitcast double %.9 to i64 %104 = bitcast double %.0 to i64 %105 = and i64 %103, 4503599627370495 %106 = or i64 %105, 4503599627370496 %107 = and i64 %104, 4503599627370495 %108 = or i64 %107, 4503599627370496 %109 = sub nsw i32 %expoa.0, %expob.0 br label %110 110: ; preds = %110, %102 %ia.0 = phi i64 [ %106, %102 ], [ %115, %110 ] %expob.1 = phi i32 [ %109, %102 ], [ %116, %110 ] %111 = sub i64 %ia.0, %108 %112 = bitcast i64 %111 to double %113 = call i32 @llvm.nvvm.d2i.hi(double %112) #139 %114 = icmp slt i32 %113, 0 %spec.select = select i1 %114, i64 %ia.0, i64 %111 %115 = shl i64 %spec.select, 1 %116 = add nsw i32 %expob.1, -1 %117 = icmp sgt i32 %expob.1, 0 br i1 %117, label %110, label %118 118: ; preds = %110 %119 = and i64 %spec.select, 9223372036854775807 %.not = icmp eq i64 %119, 0 br i1 %.not, label %139, label %120 120: ; preds = %118 %121 = bitcast i64 %119 to double %122 = fmul double %121, 0x4350000000000000 %123 = call i32 @llvm.nvvm.d2i.hi(double %122) #139 %124 = lshr i32 %123, 20 %125 = sub nsw i32 55, %124 %126 = sub nsw i32 %expob.0, %125 %127 = zext i32 %125 to i64 %128 = shl i64 %119, %127 %129 = icmp slt i32 %126, 1 br i1 %129, label %130, label %134 130: ; preds = %120 %131 = sub nsw i32 1, %126 %132 = zext i32 %131 to i64 %133 = lshr i64 %128, %132 br label %139 134: ; preds = %120 %135 = add nuw nsw i32 %126, 4095 %136 = zext i32 %135 to i64 %137 = shl i64 %136, 52 %138 = add i64 %137, %128 br label %139 139: ; preds = %130, %134, %118 %ia.3 = phi i64 [ 0, %118 ], [ %133, %130 ], [ %138, %134 ] %140 = bitcast i64 %ia.3 to double %141 = call i32 @llvm.nvvm.d2i.lo(double %140) #139 %142 = call i32 @llvm.nvvm.d2i.hi(double %140) #139 %143 = and i32 %61, -2147483648 %144 = or i32 %142, %143 %145 = call double @llvm.nvvm.lohi.i2d(i32 %141, i32 %144) #139 br label %146 146: ; preds = %78, %27, %76, %74, %139, %80, %25, %23, %55, %29 %.02 = phi double [ %.01, %25 ], [ %24, %23 ], [ %59, %55 ], [ %a, %29 ], [ %.7, %76 ], [ %75, %74 ], [ %145, %139 ], [ %a, %80 ], [ 0xFFF8000000000000, %27 ], [ 0xFFF8000000000000, %78 ] ret double %.02 } ; Function Attrs: noinline nounwind define dso_local double @__nv_remainder(double %a, double %b) local_unnamed_addr #127 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 200 br i1 %2, label %9, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 350 br i1 %5, label %9, label %6 6: ; preds = %3 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 370 br i1 %8, label %9, label %70 9: ; preds = %6, %3, %0 %10 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %11 = and i32 %10, 2147483647 %12 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %13 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %14 = and i32 %13, 2147483647 %15 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %16 = call double @llvm.nvvm.lohi.i2d(i32 %12, i32 %11) #139 %17 = call double @llvm.nvvm.lohi.i2d(i32 %15, i32 %14) #139 %18 = icmp ugt i32 %11, 2146435071 %19 = icmp ugt i32 %14, 2146435071 %or.cond = select i1 %18, i1 true, i1 %19 br i1 %or.cond, label %20, label %27 20: ; preds = %9 %21 = fcmp ole double %16, 0x7FF0000000000000 %22 = fcmp ole double %17, 0x7FF0000000000000 %or.cond2 = select i1 %21, i1 %22, i1 false br i1 %or.cond2, label %25, label %23 23: ; preds = %20 %24 = fadd double %a, %b br label %165 25: ; preds = %20 %26 = fcmp oeq double %16, 0x7FF0000000000000 %.0 = select i1 %26, double 0xFFF8000000000000, double %a br label %165 27: ; preds = %9 %28 = fcmp oeq double %17, 0.000000e+00 br i1 %28, label %165, label %29 29: ; preds = %27 %30 = fcmp ult double %16, %17 br i1 %30, label %56, label %31 31: ; preds = %29 %32 = call i32 @llvm.nvvm.d2i.hi(double %17) #139 %33 = icmp slt i32 %32, 1048576 br i1 %33, label %.preheader, label %41 .preheader: ; preds = %31 %34 = fcmp olt double %17, %16 br i1 %34, label %.lr.ph16, label %._crit_edge17 .lr.ph16: ; preds = %.preheader, %.lr.ph16 %t.015 = phi double [ %35, %.lr.ph16 ], [ %17, %.preheader ] %35 = fadd double %t.015, %t.015 %36 = fcmp olt double %35, %16 %37 = call i32 @llvm.nvvm.d2i.hi(double %35) #139 %38 = icmp slt i32 %37, 1048576 %39 = select i1 %36, i1 %38, i1 false br i1 %39, label %.lr.ph16, label %._crit_edge17 ._crit_edge17: ; preds = %.lr.ph16, %.preheader %t.0.lcssa = phi double [ %17, %.preheader ], [ %35, %.lr.ph16 ] %.lcssa = phi i32 [ %32, %.preheader ], [ %37, %.lr.ph16 ] %40 = call i32 @llvm.nvvm.d2i.lo(double %t.0.lcssa) #139 br label %41 41: ; preds = %._crit_edge17, %31 %bhi.0 = phi i32 [ %.lcssa, %._crit_edge17 ], [ %14, %31 ] %blo.0 = phi i32 [ %40, %._crit_edge17 ], [ %15, %31 ] %scaled_b.0 = phi double [ %t.0.lcssa, %._crit_edge17 ], [ 0.000000e+00, %31 ] %42 = call i32 @llvm.nvvm.d2i.hi(double %16) #139 %43 = icmp sgt i32 %42, 1048575 %44 = and i32 %bhi.0, 1048575 %45 = and i32 %10, 2146435072 %46 = or i32 %44, %45 %47 = call double @llvm.nvvm.lohi.i2d(i32 %blo.0, i32 %46) #139 %scaled_b.1 = select i1 %43, double %47, double %scaled_b.0 %48 = fcmp ogt double %scaled_b.1, %16 %49 = fmul double %scaled_b.1, 5.000000e-01 %scaled_b.2 = select i1 %48, double %49, double %scaled_b.1 %50 = fcmp ult double %scaled_b.2, %17 br i1 %50, label %56, label %.lr.ph .lr.ph: ; preds = %41, %.lr.ph %scaled_b.312 = phi double [ %53, %.lr.ph ], [ %scaled_b.2, %41 ] %.211 = phi double [ %.3, %.lr.ph ], [ %16, %41 ] %51 = fcmp oge double %.211, %scaled_b.312 %52 = select i1 %51, double %scaled_b.312, double 0.000000e+00 %.3 = fsub double %.211, %52 %53 = fmul double %scaled_b.312, 5.000000e-01 %54 = fcmp ult double %53, %17 br i1 %54, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph %55 = zext i1 %51 to i32 br label %56 56: ; preds = %41, %._crit_edge, %29 %.4 = phi double [ %16, %29 ], [ %.3, %._crit_edge ], [ %16, %41 ] %quot.0 = phi i32 [ 0, %29 ], [ %55, %._crit_edge ], [ 0, %41 ] %57 = fadd double %.4, %.4 %58 = fcmp ogt double %57, %17 br i1 %58, label %62, label %59 59: ; preds = %56 %60 = fcmp oeq double %57, %17 %61 = icmp ne i32 %quot.0, 0 %or.cond4 = select i1 %60, i1 %61, i1 false br i1 %or.cond4, label %62, label %64 62: ; preds = %59, %56 %63 = fsub double %.4, %17 br label %64 64: ; preds = %62, %59 %.5 = phi double [ %63, %62 ], [ %.4, %59 ] %65 = call i32 @llvm.nvvm.d2i.hi(double %.5) #139 %66 = call i32 @llvm.nvvm.d2i.lo(double %.5) #139 %67 = and i32 %10, -2147483648 %68 = xor i32 %65, %67 %69 = call double @llvm.nvvm.lohi.i2d(i32 %66, i32 %68) #139 br label %165 70: ; preds = %6 %71 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %72 = and i32 %71, 2147483647 %73 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %74 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %75 = and i32 %74, 2147483647 %76 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %77 = call double @llvm.nvvm.lohi.i2d(i32 %73, i32 %72) #139 %78 = call double @llvm.nvvm.lohi.i2d(i32 %76, i32 %75) #139 %79 = icmp ugt i32 %72, 2146435071 %80 = icmp ugt i32 %75, 2146435071 %or.cond5 = select i1 %79, i1 true, i1 %80 br i1 %or.cond5, label %81, label %88 81: ; preds = %70 %82 = fcmp ole double %77, 0x7FF0000000000000 %83 = fcmp ole double %78, 0x7FF0000000000000 %or.cond7 = select i1 %82, i1 %83, i1 false br i1 %or.cond7, label %86, label %84 84: ; preds = %81 %85 = fadd double %a, %b br label %165 86: ; preds = %81 %87 = fcmp oeq double %77, 0x7FF0000000000000 %.8 = select i1 %87, double 0xFFF8000000000000, double %a br label %165 88: ; preds = %70 %89 = fcmp oeq double %78, 0.000000e+00 br i1 %89, label %165, label %90 90: ; preds = %88 %91 = fcmp ult double %77, %78 br i1 %91, label %151, label %92 92: ; preds = %90 %93 = call i32 @llvm.nvvm.d2i.hi(double %77) #139 %94 = lshr i32 %93, 20 %95 = call i32 @llvm.nvvm.d2i.hi(double %78) #139 %96 = lshr i32 %95, 20 %97 = icmp ult i32 %93, 1048576 br i1 %97, label %98, label %104 98: ; preds = %92 %99 = fmul double %77, 0x4350000000000000 %100 = call i32 @llvm.nvvm.d2i.hi(double %99) #139 %101 = lshr i32 %100, 20 %102 = add nsw i32 %94, -54 %103 = add nsw i32 %102, %101 br label %104 104: ; preds = %98, %92 %.10 = phi double [ %99, %98 ], [ %77, %92 ] %expoa.0 = phi i32 [ %103, %98 ], [ %94, %92 ] %105 = icmp ult i32 %95, 1048576 br i1 %105, label %106, label %112 106: ; preds = %104 %107 = fmul double %78, 0x4350000000000000 %108 = call i32 @llvm.nvvm.d2i.hi(double %107) #139 %109 = lshr i32 %108, 20 %110 = add nsw i32 %96, -54 %111 = add nsw i32 %110, %109 br label %112 112: ; preds = %106, %104 %t7.0 = phi double [ %107, %106 ], [ %78, %104 ] %expob.0 = phi i32 [ %111, %106 ], [ %96, %104 ] %113 = bitcast double %.10 to i64 %114 = bitcast double %t7.0 to i64 %115 = and i64 %113, 4503599627370495 %116 = or i64 %115, 4503599627370496 %117 = and i64 %114, 4503599627370495 %118 = or i64 %117, 4503599627370496 %119 = sub nsw i32 %expoa.0, %expob.0 br label %120 120: ; preds = %120, %112 %ia.0 = phi i64 [ %116, %112 ], [ %125, %120 ] %expob.1 = phi i32 [ %119, %112 ], [ %126, %120 ] %121 = sub i64 %ia.0, %118 %122 = bitcast i64 %121 to double %123 = call i32 @llvm.nvvm.d2i.hi(double %122) #139 %124 = and i32 %123, -2147483648 %.not = icmp eq i32 %124, 0 %spec.select = select i1 %.not, i64 %121, i64 %ia.0 %125 = shl i64 %spec.select, 1 %126 = add nsw i32 %expob.1, -1 %127 = icmp sgt i32 %expob.1, 0 br i1 %127, label %120, label %128 128: ; preds = %120 %129 = and i64 %spec.select, 9223372036854775807 %.not9 = icmp eq i64 %129, 0 br i1 %.not9, label %149, label %130 130: ; preds = %128 %131 = bitcast i64 %129 to double %132 = fmul double %131, 0x4350000000000000 %133 = call i32 @llvm.nvvm.d2i.hi(double %132) #139 %134 = lshr i32 %133, 20 %135 = sub nsw i32 55, %134 %136 = sub nsw i32 %expob.0, %135 %137 = zext i32 %135 to i64 %138 = shl i64 %129, %137 %139 = icmp slt i32 %136, 1 br i1 %139, label %140, label %144 140: ; preds = %130 %141 = sub nsw i32 1, %136 %142 = zext i32 %141 to i64 %143 = lshr i64 %138, %142 br label %149 144: ; preds = %130 %145 = add nuw nsw i32 %136, 4095 %146 = zext i32 %145 to i64 %147 = shl i64 %146, 52 %148 = add i64 %147, %138 br label %149 149: ; preds = %140, %144, %128 %ia.3 = phi i64 [ 0, %128 ], [ %143, %140 ], [ %148, %144 ] %150 = bitcast i64 %ia.3 to double br label %151 151: ; preds = %149, %90 %.11 = phi double [ %150, %149 ], [ %77, %90 ] %nquot0.0 = phi i32 [ %124, %149 ], [ 1, %90 ] %152 = fadd double %.11, %.11 %153 = fcmp ogt double %152, %78 br i1 %153, label %157, label %154 154: ; preds = %151 %155 = fcmp une double %152, %78 %156 = icmp ne i32 %nquot0.0, 0 %or.cond8 = select i1 %155, i1 true, i1 %156 br i1 %or.cond8, label %159, label %157 157: ; preds = %154, %151 %158 = fsub double %.11, %78 br label %159 159: ; preds = %157, %154 %.12 = phi double [ %158, %157 ], [ %.11, %154 ] %160 = and i32 %71, -2147483648 %161 = call i32 @llvm.nvvm.d2i.hi(double %.12) #139 %162 = xor i32 %161, %160 %163 = call i32 @llvm.nvvm.d2i.lo(double %.12) #139 %164 = call double @llvm.nvvm.lohi.i2d(i32 %163, i32 %162) #139 br label %165 165: ; preds = %88, %27, %86, %84, %159, %25, %23, %64 %.01 = phi double [ %.0, %25 ], [ %24, %23 ], [ %69, %64 ], [ %.8, %86 ], [ %85, %84 ], [ %164, %159 ], [ 0xFFF8000000000000, %27 ], [ 0xFFF8000000000000, %88 ] ret double %.01 } ; Function Attrs: noinline nounwind define dso_local double @__nv_remquo(double %a, double %b, i32* nocapture nofree writeonly %c) local_unnamed_addr #128 { %1 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %2 = icmp eq i32 %1, 200 br i1 %2, label %9, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 350 br i1 %5, label %9, label %6 6: ; preds = %3 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 370 br i1 %8, label %9, label %77 9: ; preds = %6, %3, %0 %10 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %11 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %12 = xor i32 %11, %10 %.lobit.neg11 = ashr i32 %12, 31 %13 = and i32 %10, 2147483647 %14 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %15 = and i32 %11, 2147483647 %16 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %17 = call double @llvm.nvvm.lohi.i2d(i32 %14, i32 %13) #139 %18 = call double @llvm.nvvm.lohi.i2d(i32 %16, i32 %15) #139 %19 = icmp ugt i32 %13, 2146435071 %20 = icmp ugt i32 %15, 2146435071 %or.cond = select i1 %19, i1 true, i1 %20 br i1 %or.cond, label %21, label %28 21: ; preds = %9 %22 = fcmp ole double %17, 0x7FF0000000000000 %23 = fcmp ole double %18, 0x7FF0000000000000 %or.cond2 = select i1 %22, i1 %23, i1 false br i1 %or.cond2, label %26, label %24 24: ; preds = %21 %25 = fadd double %a, %b br label %178 26: ; preds = %21 %27 = fcmp oeq double %17, 0x7FF0000000000000 %.0 = select i1 %27, double 0xFFF8000000000000, double %a br label %178 28: ; preds = %9 %29 = fcmp oeq double %18, 0.000000e+00 br i1 %29, label %178, label %30 30: ; preds = %28 %31 = fcmp ult double %17, %18 br i1 %31, label %58, label %32 32: ; preds = %30 %33 = call i32 @llvm.nvvm.d2i.hi(double %18) #139 %34 = icmp slt i32 %33, 1048576 br i1 %34, label %.preheader, label %42 .preheader: ; preds = %32 %35 = fcmp olt double %18, %17 br i1 %35, label %.lr.ph18, label %._crit_edge19 .lr.ph18: ; preds = %.preheader, %.lr.ph18 %t.017 = phi double [ %36, %.lr.ph18 ], [ %18, %.preheader ] %36 = fadd double %t.017, %t.017 %37 = fcmp olt double %36, %17 %38 = call i32 @llvm.nvvm.d2i.hi(double %36) #139 %39 = icmp slt i32 %38, 1048576 %40 = select i1 %37, i1 %39, i1 false br i1 %40, label %.lr.ph18, label %._crit_edge19 ._crit_edge19: ; preds = %.lr.ph18, %.preheader %t.0.lcssa = phi double [ %18, %.preheader ], [ %36, %.lr.ph18 ] %.lcssa = phi i32 [ %33, %.preheader ], [ %38, %.lr.ph18 ] %41 = call i32 @llvm.nvvm.d2i.lo(double %t.0.lcssa) #139 br label %42 42: ; preds = %._crit_edge19, %32 %bhi.0 = phi i32 [ %.lcssa, %._crit_edge19 ], [ %15, %32 ] %blo.0 = phi i32 [ %41, %._crit_edge19 ], [ %16, %32 ] %scaled_b.0 = phi double [ %t.0.lcssa, %._crit_edge19 ], [ 0.000000e+00, %32 ] %43 = call i32 @llvm.nvvm.d2i.hi(double %17) #139 %44 = icmp sgt i32 %43, 1048575 %45 = and i32 %bhi.0, 1048575 %46 = and i32 %10, 2146435072 %47 = or i32 %45, %46 %48 = call double @llvm.nvvm.lohi.i2d(i32 %blo.0, i32 %47) #139 %scaled_b.1 = select i1 %44, double %48, double %scaled_b.0 %49 = fcmp ogt double %scaled_b.1, %17 %50 = fmul double %scaled_b.1, 5.000000e-01 %scaled_b.2 = select i1 %49, double %50, double %scaled_b.1 %51 = fcmp ult double %scaled_b.2, %18 br i1 %51, label %58, label %.lr.ph .lr.ph: ; preds = %42, %.lr.ph %nquot.015 = phi i32 [ %nquot.1, %.lr.ph ], [ -1, %42 ] %scaled_b.314 = phi double [ %56, %.lr.ph ], [ %scaled_b.2, %42 ] %.213 = phi double [ %.3, %.lr.ph ], [ %17, %42 ] %52 = shl i32 %nquot.015, 1 %53 = fcmp oge double %.213, %scaled_b.314 %54 = select i1 %53, double %scaled_b.314, double 0.000000e+00 %.3 = fsub double %.213, %54 %not. = xor i1 %53, true %55 = zext i1 %not. to i32 %nquot.1 = or i32 %52, %55 %56 = fmul double %scaled_b.314, 5.000000e-01 %57 = fcmp ult double %56, %18 br i1 %57, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph %phi.bo22 = xor i32 %nquot.1, -1 br label %58 58: ; preds = %42, %._crit_edge, %30 %.4 = phi double [ %17, %30 ], [ %.3, %._crit_edge ], [ %17, %42 ] %quot.0 = phi i32 [ 0, %30 ], [ %phi.bo22, %._crit_edge ], [ 0, %42 ] %59 = fadd double %.4, %.4 %60 = fcmp ogt double %59, %18 br i1 %60, label %65, label %61 61: ; preds = %58 %62 = fcmp oeq double %59, %18 %63 = and i32 %quot.0, 1 %64 = icmp ne i32 %63, 0 %or.cond4 = select i1 %62, i1 %64, i1 false br i1 %or.cond4, label %65, label %68 65: ; preds = %61, %58 %66 = add i32 %quot.0, 1 %67 = fsub double %.4, %18 br label %68 68: ; preds = %65, %61 %.5 = phi double [ %67, %65 ], [ %.4, %61 ] %quot.1 = phi i32 [ %66, %65 ], [ %quot.0, %61 ] %69 = call i32 @llvm.nvvm.d2i.hi(double %.5) #139 %70 = call i32 @llvm.nvvm.d2i.lo(double %.5) #139 %71 = and i32 %10, -2147483648 %72 = xor i32 %69, %71 %73 = call double @llvm.nvvm.lohi.i2d(i32 %70, i32 %72) #139 %74 = and i32 %quot.1, 7 %75 = xor i32 %74, %.lobit.neg11 %76 = sub nsw i32 %75, %.lobit.neg11 br label %178 77: ; preds = %6 %78 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %79 = call i32 @llvm.nvvm.d2i.hi(double %b) #139 %80 = xor i32 %79, %78 %.lobit.neg = ashr i32 %80, 31 %81 = and i32 %78, 2147483647 %82 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %83 = and i32 %79, 2147483647 %84 = call i32 @llvm.nvvm.d2i.lo(double %b) #139 %85 = call double @llvm.nvvm.lohi.i2d(i32 %82, i32 %81) #139 %86 = call double @llvm.nvvm.lohi.i2d(i32 %84, i32 %83) #139 %87 = icmp ugt i32 %81, 2146435071 %88 = icmp ugt i32 %83, 2146435071 %or.cond5 = select i1 %87, i1 true, i1 %88 br i1 %or.cond5, label %89, label %96 89: ; preds = %77 %90 = fcmp ole double %85, 0x7FF0000000000000 %91 = fcmp ole double %86, 0x7FF0000000000000 %or.cond7 = select i1 %90, i1 %91, i1 false br i1 %or.cond7, label %94, label %92 92: ; preds = %89 %93 = fadd double %a, %b br label %178 94: ; preds = %89 %95 = fcmp oeq double %85, 0x7FF0000000000000 %.8 = select i1 %95, double 0xFFF8000000000000, double %a br label %178 96: ; preds = %77 %97 = fcmp oeq double %86, 0.000000e+00 br i1 %97, label %178, label %98 98: ; preds = %96 %99 = fcmp ult double %85, %86 br i1 %99, label %159, label %100 100: ; preds = %98 %101 = call i32 @llvm.nvvm.d2i.hi(double %85) #139 %102 = lshr i32 %101, 20 %103 = call i32 @llvm.nvvm.d2i.hi(double %86) #139 %104 = lshr i32 %103, 20 %105 = icmp ult i32 %101, 1048576 br i1 %105, label %106, label %112 106: ; preds = %100 %107 = fmul double %85, 0x4350000000000000 %108 = call i32 @llvm.nvvm.d2i.hi(double %107) #139 %109 = lshr i32 %108, 20 %110 = add nsw i32 %102, -54 %111 = add nsw i32 %110, %109 br label %112 112: ; preds = %106, %100 %.10 = phi double [ %107, %106 ], [ %85, %100 ] %expoa.0 = phi i32 [ %111, %106 ], [ %102, %100 ] %113 = icmp ult i32 %103, 1048576 br i1 %113, label %114, label %120 114: ; preds = %112 %115 = fmul double %86, 0x4350000000000000 %116 = call i32 @llvm.nvvm.d2i.hi(double %115) #139 %117 = lshr i32 %116, 20 %118 = add nsw i32 %104, -54 %119 = add nsw i32 %118, %117 br label %120 120: ; preds = %114, %112 %t10.0 = phi double [ %115, %114 ], [ %86, %112 ] %expob.0 = phi i32 [ %119, %114 ], [ %104, %112 ] %121 = bitcast double %.10 to i64 %122 = bitcast double %t10.0 to i64 %123 = and i64 %121, 4503599627370495 %124 = or i64 %123, 4503599627370496 %125 = and i64 %122, 4503599627370495 %126 = or i64 %125, 4503599627370496 %127 = sub nsw i32 %expoa.0, %expob.0 br label %128 128: ; preds = %128, %120 %nquot4.0 = phi i32 [ -1, %120 ], [ %133, %128 ] %ia.0 = phi i64 [ %124, %120 ], [ %132, %128 ] %expob.1 = phi i32 [ %127, %120 ], [ %134, %128 ] %129 = sub i64 %ia.0, %126 %130 = bitcast i64 %129 to double %131 = call i32 @llvm.nvvm.d2i.hi(double %130) #139 %.not10 = icmp slt i32 %131, 0 %spec.select = select i1 %.not10, i64 %ia.0, i64 %129 %132 = shl i64 %spec.select, 1 %133 = call i32 @llvm.fshl.i32(i32 %nquot4.0, i32 %131, i32 noundef 1) %134 = add nsw i32 %expob.1, -1 %135 = icmp sgt i32 %expob.1, 0 br i1 %135, label %128, label %136 136: ; preds = %128 %137 = and i64 %spec.select, 9223372036854775807 %.not = icmp eq i64 %137, 0 br i1 %.not, label %157, label %138 138: ; preds = %136 %139 = bitcast i64 %137 to double %140 = fmul double %139, 0x4350000000000000 %141 = call i32 @llvm.nvvm.d2i.hi(double %140) #139 %142 = lshr i32 %141, 20 %143 = sub nsw i32 55, %142 %144 = sub nsw i32 %expob.0, %143 %145 = zext i32 %143 to i64 %146 = shl i64 %137, %145 %147 = icmp slt i32 %144, 1 br i1 %147, label %148, label %152 148: ; preds = %138 %149 = sub nsw i32 1, %144 %150 = zext i32 %149 to i64 %151 = lshr i64 %146, %150 br label %157 152: ; preds = %138 %153 = add nuw nsw i32 %144, 4095 %154 = zext i32 %153 to i64 %155 = shl i64 %154, 52 %156 = add i64 %155, %146 br label %157 157: ; preds = %148, %152, %136 %ia.3 = phi i64 [ 0, %136 ], [ %151, %148 ], [ %156, %152 ] %158 = bitcast i64 %ia.3 to double %phi.bo = xor i32 %133, -1 br label %159 159: ; preds = %157, %98 %.11 = phi double [ %158, %157 ], [ %85, %98 ] %nquot4.1 = phi i32 [ %phi.bo, %157 ], [ 0, %98 ] %160 = fadd double %.11, %.11 %161 = fcmp ogt double %160, %86 br i1 %161, label %166, label %162 162: ; preds = %159 %163 = fcmp oeq double %160, %86 %164 = and i32 %nquot4.1, 1 %165 = icmp ne i32 %164, 0 %or.cond9 = select i1 %163, i1 %165, i1 false br i1 %or.cond9, label %166, label %169 166: ; preds = %162, %159 %167 = add i32 %nquot4.1, 1 %168 = fsub double %.11, %86 br label %169 169: ; preds = %166, %162 %.12 = phi double [ %168, %166 ], [ %.11, %162 ] %quot3.0 = phi i32 [ %167, %166 ], [ %nquot4.1, %162 ] %170 = and i32 %78, -2147483648 %171 = call i32 @llvm.nvvm.d2i.hi(double %.12) #139 %172 = xor i32 %171, %170 %173 = call i32 @llvm.nvvm.d2i.lo(double %.12) #139 %174 = call double @llvm.nvvm.lohi.i2d(i32 %173, i32 %172) #139 %175 = and i32 %quot3.0, 7 %176 = xor i32 %175, %.lobit.neg %177 = sub nsw i32 %176, %.lobit.neg br label %178 178: ; preds = %94, %92, %169, %96, %26, %24, %68, %28 %storemerge = phi i32 [ 0, %26 ], [ 0, %24 ], [ %76, %68 ], [ 0, %28 ], [ 0, %94 ], [ 0, %92 ], [ %177, %169 ], [ 0, %96 ] %.01 = phi double [ %.0, %26 ], [ %25, %24 ], [ %73, %68 ], [ 0xFFF8000000000000, %28 ], [ %.8, %94 ], [ %93, %92 ], [ %174, %169 ], [ 0xFFF8000000000000, %96 ] store i32 %storemerge, i32* %c, align 4, !noalias !68 ret double %.01 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_round(double %a) local_unnamed_addr #129 { %1 = call i32 @llvm.nvvm.d2i.hi(double %a) #142 %2 = call i32 @llvm.nvvm.d2i.lo(double noundef 5.000000e-01) #142 %3 = call i32 @llvm.nvvm.d2i.hi(double noundef 5.000000e-01) #142 %4 = and i32 %1, -2147483648 %5 = or i32 %4, %3 %6 = call double @llvm.nvvm.lohi.i2d(i32 %2, i32 %5) #142 %7 = call double @llvm.nvvm.add.rz.d(double %a, double %6) #142 %8 = call double @llvm.trunc.f64(double %7) #140 ret double %8 } ; Function Attrs: noinline nounwind define dso_local i32 @__nv_ilogb(double %a) local_unnamed_addr #130 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %36, label %3 3: ; preds = %0 %4 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %5 = icmp eq i32 %4, 200 br i1 %5, label %12, label %6 6: ; preds = %3 %7 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %8 = icmp eq i32 %7, 350 br i1 %8, label %12, label %9 9: ; preds = %6 %10 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #139 %11 = icmp eq i32 %10, 370 br i1 %11, label %12, label %14 12: ; preds = %9, %6, %3 %13 = fcmp oeq double %1, 0x7FF0000000000000 br label %__nv_isinfd.exit 14: ; preds = %9 %15 = call i32 @llvm.nvvm.d2i.lo(double %a) #139 %16 = call i32 @llvm.nvvm.d2i.hi(double %a) #139 %17 = and i32 %16, 2147483647 %18 = icmp eq i32 %17, 2146435072 %19 = icmp eq i32 %15, 0 %20 = select i1 %18, i1 %19, i1 false br label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %14, %12 %.01.in = phi i1 [ %13, %12 ], [ %20, %14 ] br i1 %.01.in, label %36, label %21 21: ; preds = %__nv_isinfd.exit %22 = fcmp oeq double %a, 0.000000e+00 br i1 %22, label %36, label %23 23: ; preds = %21 %24 = call i32 @llvm.nvvm.d2i.hi(double %1) #139 %25 = icmp ugt i32 %24, 1048575 br i1 %25, label %26, label %29 26: ; preds = %23 %27 = lshr i32 %24, 20 %28 = add nsw i32 %27, -1023 br label %36 29: ; preds = %23 %30 = zext i32 %24 to i64 %31 = shl nuw nsw i64 %30, 32 %32 = call i32 @llvm.nvvm.d2i.lo(double %1) #139 %33 = zext i32 %32 to i64 %34 = or i64 %31, %33 %ctlz = call i64 @llvm.ctlz.i64(i64 %34, i1 noundef false), !range !80 %ctlz.trunc = trunc i64 %ctlz to i32 %35 = sub nuw nsw i32 -1011, %ctlz.trunc br label %36 36: ; preds = %21, %__nv_isinfd.exit, %0, %29, %26 %.0 = phi i32 [ %28, %26 ], [ %35, %29 ], [ -2147483648, %0 ], [ 2147483647, %__nv_isinfd.exit ], [ -2147483648, %21 ] ret i32 %.0 } ; Function Attrs: nofree noinline nosync nounwind readnone willreturn define dso_local double @__nv_logb(double %a) local_unnamed_addr #131 { %1 = call double @llvm.fabs.f64(double %a) #140 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fadd double %a, %a br label %24 5: ; preds = %0 %6 = fcmp oeq double %1, 0x7FF0000000000000 br i1 %6, label %24, label %7 7: ; preds = %5 %8 = fcmp oeq double %a, 0.000000e+00 br i1 %8, label %24, label %9 9: ; preds = %7 %10 = call i32 @llvm.nvvm.d2i.hi(double %1) #142 %11 = icmp ugt i32 %10, 1048575 br i1 %11, label %12, label %16 12: ; preds = %9 %13 = lshr i32 %10, 20 %14 = add nsw i32 %13, -1023 %15 = sitofp i32 %14 to double br label %24 16: ; preds = %9 %17 = zext i32 %10 to i64 %18 = shl nuw nsw i64 %17, 32 %19 = call i32 @llvm.nvvm.d2i.lo(double %1) #142 %20 = zext i32 %19 to i64 %21 = or i64 %18, %20 %ctlz = call i64 @llvm.ctlz.i64(i64 %21, i1 noundef false) #140, !range !80 %ctlz.trunc = trunc i64 %ctlz to i32 %22 = sub nuw nsw i32 -1011, %ctlz.trunc %23 = sitofp i32 %22 to double br label %24 24: ; preds = %7, %5, %16, %12, %3 %.0 = phi double [ %4, %3 ], [ %15, %12 ], [ %23, %16 ], [ 0x7FF0000000000000, %5 ], [ 0xFFF0000000000000, %7 ] ret double %.0 } ; Function Attrs: noinline nosync nounwind readnone define dso_local double @__nv_fdim(double %a, double %b) local_unnamed_addr #132 { %1 = call double asm "sub.rn.f64 $0, $1, $2;", "=d,d,d"(double %a, double %b) #141, !srcloc !90 %2 = fcmp ole double %a, %b %t.0 = select i1 %2, double 0.000000e+00, double %1 ret double %t.0 } ; Function Attrs: nofree define internal fastcc void @gpu_report_exception(i64 noundef zeroext %0) unnamed_addr #133 !dbg !91 { top: %1 = alloca %printf_args.0, align 8 %2 = call {}*** @julia.get_pgcstack() %3 = bitcast %printf_args.0* %1 to i8*, !dbg !92 call void @llvm.lifetime.start.p0i8(i64 noundef 8, i8* noundef nonnull %3), !dbg !92 %4 = getelementptr inbounds %printf_args.0, %printf_args.0* %1, i64 0, i32 0, !dbg !92 store i64 %0, i64* %4, align 8, !dbg !92, !noalias !68 %5 = call i32 @vprintf(i8* noundef getelementptr inbounds ([108 x i8], [108 x i8]* @1, i64 0, i64 0), i8* noundef nonnull %3), !dbg !92 call void @llvm.lifetime.end.p0i8(i64 noundef 8, i8* noundef nonnull %3), !dbg !92 ret void, !dbg !99 } ; Function Attrs: nofree define internal fastcc void @gpu_signal_exception() unnamed_addr #133 !dbg !100 { top: %0 = call {}*** @julia.get_pgcstack() %state.i = call [1 x i64] @julia.gpu.state_getter(), !dbg !101 %state.i.fca.0.extract = extractvalue [1 x i64] %state.i, 0, !dbg !101 %.not = icmp eq i64 %state.i.fca.0.extract, 0, !dbg !110 br i1 %.not, label %L12, label %L8, !dbg !110 L8: ; preds = %top %1 = inttoptr i64 %state.i.fca.0.extract to i64*, !dbg !111 store i64 1, i64* %1, align 1, !dbg !111, !tbaa !116, !noalias !68 call void @llvm.nvvm.membar.sys(), !dbg !120 br label %L15, !dbg !123 L12: ; preds = %top %2 = call i32 @vprintf(i8* noundef getelementptr inbounds ([110 x i8], [110 x i8]* @2, i64 0, i64 0), i8* noundef null), !dbg !124 br label %L15, !dbg !124 L15: ; preds = %L12, %L8 ret void, !dbg !130 } ; Function Attrs: readnone declare [1 x i64] @julia.gpu.state_getter() local_unnamed_addr #134 ; Function Attrs: nounwind declare void @llvm.nvvm.membar.sys() #135 ; Function Attrs: argmemonly nofree nosync nounwind willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #136 ; Function Attrs: argmemonly nofree nosync nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #136 define void @julia_gbsa_force_2_kernel__25091_inner24({ i8 addrspace(1)*, i64, [2 x i64], i64 } %0, { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, [1 x [1 x [3 x float]]] %3, float %4, { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, { i8 addrspace(1)*, i64, [2 x i64], i64 } %9) local_unnamed_addr #137 !dbg !131 { entry: %10 = alloca [1 x [2 x [1 x i64]]], align 8 %11 = alloca [2 x i64], align 8 %12 = alloca [1 x [2 x [1 x i64]]], align 8 %13 = alloca [2 x i64], align 8 %.fca.0.extract68 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 0, !dbg !132 %.fca.2.0.extract70 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 0, !dbg !132 %.fca.2.1.extract71 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 1, !dbg !132 %.fca.0.extract60 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, 0, !dbg !132 %.fca.0.extract47 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 0, !dbg !132 %.fca.2.0.extract49 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 2, 0, !dbg !132 %.fca.0.0.0.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 0, !dbg !132 %.fca.0.0.1.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 1, !dbg !132 %.fca.0.0.2.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 2, !dbg !132 %.fca.0.extract29 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, 0, !dbg !132 %.fca.0.extract21 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, 0, !dbg !132 %.fca.0.extract13 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, 0, !dbg !132 %.fca.0.extract6 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, 0, !dbg !132 %.fca.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 0, !dbg !132 %.fca.2.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 2, 0, !dbg !132 %14 = bitcast [1 x [2 x [1 x i64]]]* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull align 8 dereferenceable(16) %14) #144 %15 = bitcast [2 x i64]* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull align 8 dereferenceable(16) %15) #144 %16 = bitcast [1 x [2 x [1 x i64]]]* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull align 8 dereferenceable(16) %16) #144 %17 = bitcast [2 x i64]* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull align 8 dereferenceable(16) %17) #144 %18 = call {}*** @julia.get_pgcstack() %19 = mul i64 %.fca.2.0.extract49, %.fca.2.0.extract49, !dbg !133 %20 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x(), !dbg !141, !range !153 %21 = zext i32 %20 to i64, !dbg !154 %22 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x(), !dbg !157, !range !164 %23 = zext i32 %22 to i64, !dbg !165 %24 = mul nuw nsw i64 %21, %23, !dbg !168 %25 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x(), !dbg !170, !range !177 %26 = add nuw nsw i32 %25, 1, !dbg !178 %27 = zext i32 %26 to i64, !dbg !180 %28 = add nuw nsw i64 %24, %27, !dbg !182 %.not = icmp sgt i64 %28, %19, !dbg !184 br i1 %.not, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L33.i, !dbg !187 L33.i: ; preds = %entry %.not153 = icmp eq i64 %.fca.2.0.extract49, 0, !dbg !188 br i1 %.not153, label %fail.i, label %pass.i, !dbg !188 L50.i: ; preds = %after_srem.i %29 = add nsw i64 %219, -1, !dbg !197 %30 = bitcast i8 addrspace(1)* %.fca.0.extract47 to [1 x [3 x float]] addrspace(1)*, !dbg !215 %.unpack.elt = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %29, i64 0, i64 0, !dbg !215 %.unpack.unpack = load float, float addrspace(1)* %.unpack.elt, align 4, !dbg !215, !tbaa !216 %.unpack.elt154 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %29, i64 0, i64 1, !dbg !215 %.unpack.unpack155 = load float, float addrspace(1)* %.unpack.elt154, align 4, !dbg !215, !tbaa !216 %.unpack.elt156 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %29, i64 0, i64 2, !dbg !215 %.unpack.unpack157 = load float, float addrspace(1)* %.unpack.elt156, align 4, !dbg !215, !tbaa !216 %.unpack.elt159 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %222, i64 0, i64 0, !dbg !215 %.unpack.unpack160 = load float, float addrspace(1)* %.unpack.elt159, align 4, !dbg !215, !tbaa !216 %.unpack.elt161 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %222, i64 0, i64 1, !dbg !215 %.unpack.unpack162 = load float, float addrspace(1)* %.unpack.elt161, align 4, !dbg !215, !tbaa !216 %.unpack.elt163 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %30, i64 %222, i64 0, i64 2, !dbg !215 %.unpack.unpack164 = load float, float addrspace(1)* %.unpack.elt163, align 4, !dbg !215, !tbaa !216 %31 = fcmp uge float %.unpack.unpack, %.unpack.unpack160, !dbg !219 br i1 %31, label %L109.i, label %L99.i, !dbg !229 L99.i: ; preds = %L50.i %32 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !230 %33 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !230 %34 = fadd float %.fca.0.0.0.extract, %33, !dbg !233 %35 = fcmp uge float %32, %34, !dbg !235 br i1 %35, label %L106.i, label %L119.i, !dbg !236 L106.i: ; preds = %L99.i %36 = fsub float %32, %.fca.0.0.0.extract, !dbg !230 br label %L119.i, !dbg !236 L109.i: ; preds = %L50.i %37 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !237 %38 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !237 %39 = fadd float %.fca.0.0.0.extract, %38, !dbg !239 %40 = fcmp uge float %37, %39, !dbg !240 %. = select i1 %40, float %39, float %38, !dbg !241 br label %L119.i, !dbg !241 L119.i: ; preds = %L109.i, %L99.i, %L106.i %value_phi.i = phi float [ %36, %L106.i ], [ %32, %L99.i ], [ %., %L109.i ] %41 = fcmp uge float %.unpack.unpack155, %.unpack.unpack162, !dbg !219 br i1 %41, label %L139.i, label %L129.i, !dbg !229 L129.i: ; preds = %L119.i %42 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !230 %43 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !230 %44 = fadd float %.fca.0.0.1.extract, %43, !dbg !233 %45 = fcmp uge float %42, %44, !dbg !235 br i1 %45, label %L136.i, label %L149.i, !dbg !236 L136.i: ; preds = %L129.i %46 = fsub float %42, %.fca.0.0.1.extract, !dbg !230 br label %L149.i, !dbg !236 L139.i: ; preds = %L119.i %47 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !237 %48 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !237 %49 = fadd float %.fca.0.0.1.extract, %48, !dbg !239 %50 = fcmp uge float %47, %49, !dbg !240 %.185 = select i1 %50, float %49, float %48, !dbg !241 br label %L149.i, !dbg !241 L149.i: ; preds = %L139.i, %L129.i, %L136.i %value_phi3.i = phi float [ %46, %L136.i ], [ %42, %L129.i ], [ %.185, %L139.i ] %51 = fcmp uge float %.unpack.unpack157, %.unpack.unpack164, !dbg !219 br i1 %51, label %L169.i, label %L159.i, !dbg !229 L159.i: ; preds = %L149.i %52 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !230 %53 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !230 %54 = fadd float %.fca.0.0.2.extract, %53, !dbg !233 %55 = fcmp uge float %52, %54, !dbg !235 br i1 %55, label %L166.i, label %L179.i, !dbg !236 L166.i: ; preds = %L159.i %56 = fsub float %52, %.fca.0.0.2.extract, !dbg !230 br label %L179.i, !dbg !236 L169.i: ; preds = %L149.i %57 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !237 %58 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !237 %59 = fadd float %.fca.0.0.2.extract, %58, !dbg !239 %60 = fcmp uge float %57, %59, !dbg !240 %.186 = select i1 %60, float %59, float %58, !dbg !241 br label %L179.i, !dbg !241 L179.i: ; preds = %L169.i, %L159.i, %L166.i %value_phi4.i = phi float [ %56, %L166.i ], [ %52, %L159.i ], [ %.186, %L169.i ] %61 = fmul float %value_phi.i, %value_phi.i, !dbg !242 %62 = fmul float %value_phi3.i, %value_phi3.i, !dbg !242 %63 = fadd float %61, %62, !dbg !258 %64 = fmul float %value_phi4.i, %value_phi4.i, !dbg !242 %65 = fadd float %63, %64, !dbg !258 %66 = call float @__nv_sqrtf(float %65) #139, !dbg !259 %67 = fcmp ule float %66, 0.000000e+00, !dbg !262 br i1 %67, label %L197.i, label %L190.i, !dbg !264 L190.i: ; preds = %L179.i %68 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !265 %.not166 = icmp eq i32 %68, 0, !dbg !265 %69 = call float @llvm.nvvm.fabs.ftz.f(float %66) #139, !dbg !265 %70 = call float @llvm.fabs.f32(float %66), !dbg !265 %.0.i.i = select i1 %.not166, float %70, float %69, !dbg !265 %71 = fcmp uge float %.0.i.i, 0x7FF0000000000000, !dbg !265 br i1 %71, label %L197.i, label %L236.i, !dbg !264 L197.i: ; preds = %L190.i, %L179.i %72 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !267 %.not170 = icmp eq i32 %72, 0, !dbg !267 %73 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi.i) #139, !dbg !267 %74 = call float @llvm.fabs.f32(float %value_phi.i), !dbg !267 %.0.i35.i = select i1 %.not170, float %74, float %73, !dbg !267 %75 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !276 %.not171 = icmp eq i32 %75, 0, !dbg !276 %76 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi3.i) #139, !dbg !276 %77 = call float @llvm.fabs.f32(float %value_phi3.i), !dbg !276 %.0.i41.i = select i1 %.not171, float %77, float %76, !dbg !276 %.inv = fcmp olt float %.0.i35.i, %.0.i41.i, !dbg !279 %78 = select i1 %.inv, float %.0.i41.i, float %.0.i35.i, !dbg !279 %79 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !276 %.not171.1 = icmp eq i32 %79, 0, !dbg !276 %80 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi4.i) #139, !dbg !276 %81 = call float @llvm.fabs.f32(float %value_phi4.i), !dbg !276 %.0.i41.i.1 = select i1 %.not171.1, float %81, float %80, !dbg !276 %.inv.1 = fcmp olt float %78, %.0.i41.i.1, !dbg !279 %82 = select i1 %.inv.1, float %.0.i41.i.1, float %78, !dbg !279 %83 = fcmp une float %82, 0.000000e+00, !dbg !285 br i1 %83, label %L223.i, label %L221.i, !dbg !290 L221.i: ; preds = %L197.i %84 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !291 %.not173 = icmp eq i32 %84, 0, !dbg !291 %85 = call float @llvm.nvvm.fabs.ftz.f(float noundef 0.000000e+00) #139, !dbg !291 %.0.i36.i = select i1 %.not173, float 0.000000e+00, float %85, !dbg !291 br label %L236.i, !dbg !297 L223.i: ; preds = %L197.i %86 = fdiv float %value_phi.i, %82, !dbg !301 %87 = fmul float %86, %86, !dbg !304 %88 = fdiv float %value_phi3.i, %82, !dbg !301 %89 = fmul float %88, %88, !dbg !304 %90 = fadd float %87, %89, !dbg !307 %91 = fdiv float %value_phi4.i, %82, !dbg !301 %92 = fmul float %91, %91, !dbg !304 %93 = fadd float %92, %90, !dbg !307 %94 = call float @__nv_sqrtf(float %93) #139, !dbg !308 %95 = fmul float %82, %94, !dbg !309 br label %L236.i, !dbg !297 L236.i: ; preds = %L221.i, %L223.i, %L190.i %value_phi5.i = phi float [ %66, %L190.i ], [ %.0.i36.i, %L221.i ], [ %95, %L223.i ] %96 = fcmp une float %4, 0.000000e+00, !dbg !310 %97 = fcmp ugt float %value_phi5.i, %4 %or.cond = select i1 %96, i1 %97, i1 false, !dbg !313 br i1 %or.cond, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L245.i, !dbg !313 L245.i: ; preds = %L236.i %98 = shl nsw i64 %219, 2, !dbg !314 %99 = add i64 %98, -4, !dbg !314 %100 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract29, i64 %99, !dbg !321 %101 = bitcast i8 addrspace(1)* %100 to float addrspace(1)*, !dbg !323 %102 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %101, i32 noundef 4), !dbg !323 %103 = shl nuw nsw i64 %222, 2, !dbg !314 %104 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract21, i64 %103, !dbg !321 %105 = bitcast i8 addrspace(1)* %104 to float addrspace(1)*, !dbg !323 %106 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %105, i32 noundef 4), !dbg !323 %107 = fadd float %value_phi5.i, %106, !dbg !329 %108 = fcmp uge float %102, %107, !dbg !331 br i1 %108, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L302.i, !dbg !333 L302.i: ; preds = %L245.i %109 = fsub float %value_phi5.i, %106, !dbg !334 %110 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !336 %.not167 = icmp eq i32 %110, 0, !dbg !336 %111 = call float @llvm.nvvm.fabs.ftz.f(float %109) #139, !dbg !336 %112 = call float @llvm.fabs.f32(float %109), !dbg !336 %.0.i38.i = select i1 %.not167, float %112, float %111, !dbg !336 %113 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #139, !dbg !337 %.not168 = icmp eq i32 %113, 0, !dbg !337 %114 = call float @llvm.nvvm.fmax.ftz.f(float %102, float %.0.i38.i) #139, !dbg !337 %115 = call float @llvm.maxnum.f32(float %102, float %.0.i38.i), !dbg !337 %.0.i40.i = select i1 %.not168, float %115, float %114, !dbg !337 %116 = fdiv float 1.000000e+00, %.0.i40.i, !dbg !339 %117 = fdiv float 1.000000e+00, %107, !dbg !342 %118 = fdiv float 1.000000e+00, %value_phi5.i, !dbg !345 %119 = fmul float %118, %118, !dbg !348 %120 = fmul float %106, %106, !dbg !351 %121 = fmul float %119, %120, !dbg !354 %122 = fadd float %121, 1.000000e+00, !dbg !355 %123 = fmul float %116, %116, !dbg !351 %124 = fmul float %117, %117, !dbg !351 %125 = fsub float %123, %124, !dbg !359 %126 = fmul float %122, %125, !dbg !354 %127 = fmul float %126, 1.250000e-01, !dbg !360 %128 = fdiv float %117, %116, !dbg !363 %129 = call float @__nv_logf(float %128) #139, !dbg !364 %130 = fmul float %119, %129, !dbg !354 %131 = fmul float %130, 2.500000e-01, !dbg !360 %132 = fadd float %131, %127, !dbg !366 %133 = bitcast i8 addrspace(1)* %.fca.0.extract60 to float addrspace(1)*, !dbg !367 %134 = getelementptr inbounds float, float addrspace(1)* %133, i64 %29, !dbg !367 %135 = load float, float addrspace(1)* %134, align 4, !dbg !367, !tbaa !216 %136 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract13, i64 %99, !dbg !377 %137 = bitcast i8 addrspace(1)* %136 to float addrspace(1)*, !dbg !382 %138 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %137, i32 noundef 4), !dbg !382 %139 = fmul float %138, %138, !dbg !387 %140 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract6, i64 %99, !dbg !377 %141 = bitcast i8 addrspace(1)* %140 to float addrspace(1)*, !dbg !382 %142 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %141, i32 noundef 4), !dbg !382 %143 = fmul float %135, %139, !dbg !389 %144 = fmul float %142, %143, !dbg !389 %145 = icmp sgt i64 %.fca.2.0.extract, 0, !dbg !393 %146 = select i1 %145, i64 %.fca.2.0.extract, i64 0, !dbg !393 %147 = mul i64 %222, %146, !dbg !418 %148 = add i64 %147, %219, !dbg !423 %149 = shl i64 %148, 2, !dbg !424 %150 = add i64 %149, -4, !dbg !424 %151 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract, i64 %150, !dbg !429 %152 = bitcast i8 addrspace(1)* %151 to float addrspace(1)*, !dbg !430 %153 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %152, i32 noundef 4), !dbg !430 %154 = fsub float %132, %153, !dbg !435 %155 = fmul float %144, %154, !dbg !436 %156 = fmul float %118, %155, !dbg !436 %157 = fneg float %value_phi.i, !dbg !438 %158 = fneg float %value_phi3.i, !dbg !438 %159 = fneg float %value_phi4.i, !dbg !438 %160 = fmul float %156, %157, !dbg !449 %161 = fmul float %156, %158, !dbg !449 %162 = fmul float %156, %159, !dbg !449 %163 = icmp sgt i64 %.fca.2.0.extract70, 0 %164 = select i1 %163, i64 %.fca.2.0.extract70, i64 0 %165 = getelementptr inbounds [1 x [2 x [1 x i64]]], [1 x [2 x [1 x i64]]]* %10, i64 0, i64 0, i64 0, i64 0 %166 = icmp sgt i64 %.fca.2.1.extract71, 0 %167 = select i1 %166, i64 %.fca.2.1.extract71, i64 0 %168 = getelementptr inbounds [1 x [2 x [1 x i64]]], [1 x [2 x [1 x i64]]]* %10, i64 0, i64 0, i64 1, i64 0 %169 = getelementptr inbounds [2 x i64], [2 x i64]* %11, i64 0, i64 0 %170 = getelementptr inbounds [2 x i64], [2 x i64]* %11, i64 0, i64 1 %171 = icmp sgt i64 %219, 0 %172 = icmp sle i64 %219, %167 %173 = and i1 %171, %172 %174 = mul i64 %29, %164 %175 = getelementptr inbounds [1 x [2 x [1 x i64]]], [1 x [2 x [1 x i64]]]* %12, i64 0, i64 0, i64 0, i64 0 %176 = getelementptr inbounds [1 x [2 x [1 x i64]]], [1 x [2 x [1 x i64]]]* %12, i64 0, i64 0, i64 1, i64 0 %177 = getelementptr inbounds [2 x i64], [2 x i64]* %13, i64 0, i64 0 %178 = getelementptr inbounds [2 x i64], [2 x i64]* %13, i64 0, i64 1 %179 = icmp ult i64 %222, %167 %180 = mul i64 %222, %164 br i1 %173, label %L302.i.split.us, label %L302.i.L302.i.split_crit_edge, !dbg !457 L302.i.L302.i.split_crit_edge: ; preds = %L302.i store i64 %164, i64* %165, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %168, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 1, i64* %169, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %219, i64* %170, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 br label %L524.i, !dbg !487 L302.i.split.us: ; preds = %L302.i store i64 %164, i64* %165, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %168, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 1, i64* %169, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %219, i64* %170, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 br i1 %163, label %L523.i.us, label %L524.i, !dbg !487 L523.i.us: ; preds = %L302.i.split.us %181 = shl i64 %174, 2, !dbg !488 %182 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %181, !dbg !494 %183 = bitcast i8 addrspace(1)* %182 to float addrspace(1)*, !dbg !495 %184 = atomicrmw fadd float addrspace(1)* %183, float %160 monotonic, align 4, !dbg !495 store i64 %164, i64* %175, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %176, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 1, i64* %177, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %223, i64* %178, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 br i1 %179, label %L615.i.us, label %L616.i, !dbg !519 L615.i.us: ; preds = %L523.i.us %185 = fneg float %160, !dbg !520 %186 = shl i64 %180, 2, !dbg !521 %187 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %186, !dbg !525 %188 = bitcast i8 addrspace(1)* %187 to float addrspace(1)*, !dbg !526 %189 = atomicrmw fadd float addrspace(1)* %188, float %185 monotonic, align 4, !dbg !526 store i64 %164, i64* %165, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %168, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 2, i64* %169, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %219, i64* %170, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 %190 = icmp ugt i64 %164, 1, !dbg !532 br i1 %190, label %L523.i.us.1, label %L524.i, !dbg !487 L523.i.us.1: ; preds = %L615.i.us %191 = shl i64 %174, 2, !dbg !488 %192 = add i64 %191, 4, !dbg !488 %193 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %192, !dbg !494 %194 = bitcast i8 addrspace(1)* %193 to float addrspace(1)*, !dbg !495 %195 = atomicrmw fadd float addrspace(1)* %194, float %161 monotonic, align 4, !dbg !495 store i64 %164, i64* %175, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %176, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 2, i64* %177, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %223, i64* %178, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 %196 = fneg float %161, !dbg !520 %197 = shl i64 %180, 2, !dbg !521 %198 = add i64 %197, 4, !dbg !521 %199 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %198, !dbg !525 %200 = bitcast i8 addrspace(1)* %199 to float addrspace(1)*, !dbg !526 %201 = atomicrmw fadd float addrspace(1)* %200, float %196 monotonic, align 4, !dbg !526 store i64 %164, i64* %165, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %168, align 8, !dbg !458, !tbaa !473, !alias.scope !475, !noalias !478 store i64 3, i64* %169, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %219, i64* %170, align 8, !dbg !483, !tbaa !473, !alias.scope !475, !noalias !478 %.not187 = icmp eq i64 %164, 2, !dbg !532 br i1 %.not187, label %L524.i, label %L523.i.us.2, !dbg !487 L523.i.us.2: ; preds = %L523.i.us.1 %202 = shl i64 %174, 2, !dbg !488 %203 = add i64 %202, 8, !dbg !488 %204 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %203, !dbg !494 %205 = bitcast i8 addrspace(1)* %204 to float addrspace(1)*, !dbg !495 %206 = atomicrmw fadd float addrspace(1)* %205, float %162 monotonic, align 4, !dbg !495 store i64 %164, i64* %175, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %167, i64* %176, align 8, !dbg !507, !tbaa !473, !alias.scope !475, !noalias !478 store i64 3, i64* %177, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 store i64 %223, i64* %178, align 8, !dbg !516, !tbaa !473, !alias.scope !475, !noalias !478 %207 = fneg float %162, !dbg !520 %208 = shl i64 %180, 2, !dbg !521 %209 = add i64 %208, 8, !dbg !521 %210 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %209, !dbg !525 %211 = bitcast i8 addrspace(1)* %210 to float addrspace(1)*, !dbg !526 %212 = atomicrmw fadd float addrspace(1)* %211, float %207 monotonic, align 4, !dbg !526 br label %julia_gbsa_force_2_kernel__25091_inner.exit, !dbg !539 L524.i: ; preds = %L302.i.split.us, %L615.i.us, %L523.i.us.1, %L302.i.L302.i.split_crit_edge call fastcc void @julia__throw_boundserror_25134() #145, !dbg !487 unreachable, !dbg !487 L616.i: ; preds = %L523.i.us call fastcc void @julia__throw_boundserror_25134() #145, !dbg !519 unreachable, !dbg !519 fail.i: ; preds = %L33.i call fastcc void @gpu_report_exception(i64 noundef ptrtoint ([10 x i8]* @exception6 to i64)), !dbg !188 call fastcc void @gpu_signal_exception(), !dbg !188 call void asm sideeffect "exit;", ""() #139, !dbg !188 unreachable, !dbg !188 pass.i: ; preds = %L33.i %213 = sdiv i64 %28, %.fca.2.0.extract49, !dbg !188 %214 = icmp sgt i64 %.fca.2.0.extract49, 0, !dbg !540 %215 = mul i64 %213, %.fca.2.0.extract49, !dbg !545 %216 = icmp ne i64 %215, %28, !dbg !546 %217 = and i1 %214, %216, !dbg !550 %218 = zext i1 %217 to i64, !dbg !553 %219 = add nsw i64 %213, %218, !dbg !562 %cond = icmp eq i64 %.fca.2.0.extract49, -1, !dbg !564 br i1 %cond, label %after_srem.i, label %oksrem.i, !dbg !564 oksrem.i: ; preds = %pass.i %220 = add nsw i64 %28, -1, !dbg !566 %221 = srem i64 %220, %.fca.2.0.extract49, !dbg !564 br label %after_srem.i, !dbg !564 after_srem.i: ; preds = %pass.i, %oksrem.i %222 = phi i64 [ %221, %oksrem.i ], [ 0, %pass.i ], !dbg !564 %223 = add nuw nsw i64 %222, 1, !dbg !567 %224 = icmp eq i64 %219, %223, !dbg !568 br i1 %224, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L50.i, !dbg !571 julia_gbsa_force_2_kernel__25091_inner.exit: ; preds = %L523.i.us.2, %L236.i, %entry, %L245.i, %after_srem.i call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %14), !dbg !539 call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %15), !dbg !539 call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %16), !dbg !539 call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %17), !dbg !539 ret void, !dbg !132 } ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #2 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.sqrt.f32(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.sqrt.f64(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.fabs.f32(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.fma.f32(float, float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.fshl.i32(i32, i32, i32) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.trunc.f32(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.maxnum.f32(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.minnum.f32(float, float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.round.f32(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare float @llvm.floor.f32(float) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.abs.i32(i32, i1 immarg) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.fshl.i64(i64, i64, i64) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.fma.f64(double, double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.fabs.f64(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.maxnum.f64(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.minnum.f64(double, double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.trunc.f64(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.floor.f64(double) #6 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare double @llvm.round.f64(double) #6 ; Function Attrs: mustprogress willreturn define void @preprocess_julia_gbsa_force_2_kernel__25091_inner24({ i8 addrspace(1)*, i64, [2 x i64], i64 } %0, { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, [1 x [1 x [3 x float]]] %3, float %4, { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, { i8 addrspace(1)*, i64, [2 x i64], i64 } %9) local_unnamed_addr #138 !dbg !572 { entry: %.fca.0.extract68 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 0, !dbg !573 %.fca.2.0.extract70 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 0, !dbg !573 %.fca.2.1.extract71 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 1, !dbg !573 %.fca.0.extract60 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, 0, !dbg !573 %.fca.0.extract47 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 0, !dbg !573 %.fca.2.0.extract49 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 2, 0, !dbg !573 %.fca.0.0.0.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 0, !dbg !573 %.fca.0.0.1.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 1, !dbg !573 %.fca.0.0.2.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 2, !dbg !573 %.fca.0.extract29 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, 0, !dbg !573 %.fca.0.extract21 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, 0, !dbg !573 %.fca.0.extract13 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, 0, !dbg !573 %.fca.0.extract6 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, 0, !dbg !573 %.fca.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 0, !dbg !573 %.fca.2.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 2, 0, !dbg !573 %10 = call {}*** @julia.get_pgcstack() #146 %11 = mul i64 %.fca.2.0.extract49, %.fca.2.0.extract49, !dbg !574 %12 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() #146, !dbg !578, !range !153 %13 = zext i32 %12 to i64, !dbg !584 %14 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x() #146, !dbg !586, !range !164 %15 = zext i32 %14 to i64, !dbg !591 %16 = mul nuw nsw i64 %13, %15, !dbg !593 %17 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x() #146, !dbg !595, !range !177 %18 = add nuw nsw i32 %17, 1, !dbg !600 %19 = zext i32 %18 to i64, !dbg !601 %20 = add nuw nsw i64 %16, %19, !dbg !603 %.not = icmp sgt i64 %20, %11, !dbg !605 br i1 %.not, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L33.i, !dbg !607 L33.i: ; preds = %entry %.not153 = icmp eq i64 %.fca.2.0.extract49, 0, !dbg !608 br i1 %.not153, label %fail.i, label %pass.i, !dbg !608 L50.i: ; preds = %after_srem.i %21 = add nsw i64 %203, -1, !dbg !613 %22 = bitcast i8 addrspace(1)* %.fca.0.extract47 to [1 x [3 x float]] addrspace(1)*, !dbg !622 %.unpack.elt = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 0, !dbg !622 %.unpack.unpack = load float, float addrspace(1)* %.unpack.elt, align 4, !dbg !622, !tbaa !216 %.unpack.elt154 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 1, !dbg !622 %.unpack.unpack155 = load float, float addrspace(1)* %.unpack.elt154, align 4, !dbg !622, !tbaa !216 %.unpack.elt156 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 2, !dbg !622 %.unpack.unpack157 = load float, float addrspace(1)* %.unpack.elt156, align 4, !dbg !622, !tbaa !216 %.unpack.elt159 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 0, !dbg !622 %.unpack.unpack160 = load float, float addrspace(1)* %.unpack.elt159, align 4, !dbg !622, !tbaa !216 %.unpack.elt161 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 1, !dbg !622 %.unpack.unpack162 = load float, float addrspace(1)* %.unpack.elt161, align 4, !dbg !622, !tbaa !216 %.unpack.elt163 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 2, !dbg !622 %.unpack.unpack164 = load float, float addrspace(1)* %.unpack.elt163, align 4, !dbg !622, !tbaa !216 %23 = fcmp uge float %.unpack.unpack, %.unpack.unpack160, !dbg !623 br i1 %23, label %L109.i, label %L99.i, !dbg !627 L99.i: ; preds = %L50.i %24 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !628 %25 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !628 %26 = fadd float %.fca.0.0.0.extract, %25, !dbg !630 %27 = fcmp uge float %24, %26, !dbg !631 br i1 %27, label %L106.i, label %L119.i, !dbg !632 L106.i: ; preds = %L99.i %28 = fsub float %24, %.fca.0.0.0.extract, !dbg !628 br label %L119.i, !dbg !632 L109.i: ; preds = %L50.i %29 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !633 %30 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !633 %31 = fadd float %.fca.0.0.0.extract, %30, !dbg !635 %32 = fcmp uge float %29, %31, !dbg !636 %. = select i1 %32, float %31, float %30, !dbg !637 br label %L119.i, !dbg !637 L119.i: ; preds = %L109.i, %L106.i, %L99.i %value_phi.i = phi float [ %28, %L106.i ], [ %24, %L99.i ], [ %., %L109.i ] %33 = fcmp uge float %.unpack.unpack155, %.unpack.unpack162, !dbg !623 br i1 %33, label %L139.i, label %L129.i, !dbg !627 L129.i: ; preds = %L119.i %34 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !628 %35 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !628 %36 = fadd float %.fca.0.0.1.extract, %35, !dbg !630 %37 = fcmp uge float %34, %36, !dbg !631 br i1 %37, label %L136.i, label %L149.i, !dbg !632 L136.i: ; preds = %L129.i %38 = fsub float %34, %.fca.0.0.1.extract, !dbg !628 br label %L149.i, !dbg !632 L139.i: ; preds = %L119.i %39 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !633 %40 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !633 %41 = fadd float %.fca.0.0.1.extract, %40, !dbg !635 %42 = fcmp uge float %39, %41, !dbg !636 %.185 = select i1 %42, float %41, float %40, !dbg !637 br label %L149.i, !dbg !637 L149.i: ; preds = %L139.i, %L136.i, %L129.i %value_phi3.i = phi float [ %38, %L136.i ], [ %34, %L129.i ], [ %.185, %L139.i ] %43 = fcmp uge float %.unpack.unpack157, %.unpack.unpack164, !dbg !623 br i1 %43, label %L169.i, label %L159.i, !dbg !627 L159.i: ; preds = %L149.i %44 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !628 %45 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !628 %46 = fadd float %.fca.0.0.2.extract, %45, !dbg !630 %47 = fcmp uge float %44, %46, !dbg !631 br i1 %47, label %L166.i, label %L179.i, !dbg !632 L166.i: ; preds = %L159.i %48 = fsub float %44, %.fca.0.0.2.extract, !dbg !628 br label %L179.i, !dbg !632 L169.i: ; preds = %L149.i %49 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !633 %50 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !633 %51 = fadd float %.fca.0.0.2.extract, %50, !dbg !635 %52 = fcmp uge float %49, %51, !dbg !636 %.186 = select i1 %52, float %51, float %50, !dbg !637 br label %L179.i, !dbg !637 L179.i: ; preds = %L169.i, %L166.i, %L159.i %value_phi4.i = phi float [ %48, %L166.i ], [ %44, %L159.i ], [ %.186, %L169.i ] %53 = fmul float %value_phi.i, %value_phi.i, !dbg !638 %54 = fmul float %value_phi3.i, %value_phi3.i, !dbg !638 %55 = fadd float %53, %54, !dbg !645 %56 = fmul float %value_phi4.i, %value_phi4.i, !dbg !638 %57 = fadd float %55, %56, !dbg !645 %58 = call float @__nv_sqrtf(float %57) #147, !dbg !646 %59 = fcmp ule float %58, 0.000000e+00, !dbg !647 br i1 %59, label %L197.i, label %L190.i, !dbg !649 L190.i: ; preds = %L179.i %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !650 %.not166 = icmp eq i32 %60, 0, !dbg !650 %61 = call float @llvm.nvvm.fabs.ftz.f(float %58) #147, !dbg !650 %62 = call float @llvm.fabs.f32(float %58) #146, !dbg !650 %.0.i.i = select i1 %.not166, float %62, float %61, !dbg !650 %63 = fcmp uge float %.0.i.i, 0x7FF0000000000000, !dbg !650 br i1 %63, label %L197.i, label %L236.i, !dbg !649 L197.i: ; preds = %L190.i, %L179.i %64 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !651 %.not170 = icmp eq i32 %64, 0, !dbg !651 %65 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi.i) #147, !dbg !651 %66 = call float @llvm.fabs.f32(float %value_phi.i) #146, !dbg !651 %.0.i35.i = select i1 %.not170, float %66, float %65, !dbg !651 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !657 %.not171 = icmp eq i32 %67, 0, !dbg !657 %68 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi3.i) #147, !dbg !657 %69 = call float @llvm.fabs.f32(float %value_phi3.i) #146, !dbg !657 %.0.i41.i = select i1 %.not171, float %69, float %68, !dbg !657 %.inv = fcmp olt float %.0.i35.i, %.0.i41.i, !dbg !660 %70 = select i1 %.inv, float %.0.i41.i, float %.0.i35.i, !dbg !660 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !657 %.not171.1 = icmp eq i32 %71, 0, !dbg !657 %72 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi4.i) #147, !dbg !657 %73 = call float @llvm.fabs.f32(float %value_phi4.i) #146, !dbg !657 %.0.i41.i.1 = select i1 %.not171.1, float %73, float %72, !dbg !657 %.inv.1 = fcmp olt float %70, %.0.i41.i.1, !dbg !660 %74 = select i1 %.inv.1, float %.0.i41.i.1, float %70, !dbg !660 %75 = fcmp une float %74, 0.000000e+00, !dbg !662 br i1 %75, label %L223.i, label %L221.i, !dbg !665 L221.i: ; preds = %L197.i %76 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !666 %.not173 = icmp eq i32 %76, 0, !dbg !666 %77 = call float @llvm.nvvm.fabs.ftz.f(float noundef 0.000000e+00) #147, !dbg !666 %.0.i36.i = select i1 %.not173, float 0.000000e+00, float %77, !dbg !666 br label %L236.i, !dbg !670 L223.i: ; preds = %L197.i %78 = fdiv float %value_phi.i, %74, !dbg !672 %79 = fmul float %78, %78, !dbg !674 %80 = fdiv float %value_phi3.i, %74, !dbg !672 %81 = fmul float %80, %80, !dbg !674 %82 = fadd float %79, %81, !dbg !677 %83 = fdiv float %value_phi4.i, %74, !dbg !672 %84 = fmul float %83, %83, !dbg !674 %85 = fadd float %84, %82, !dbg !677 %86 = call float @__nv_sqrtf(float %85) #147, !dbg !678 %87 = fmul float %74, %86, !dbg !679 br label %L236.i, !dbg !670 L236.i: ; preds = %L223.i, %L221.i, %L190.i %value_phi5.i = phi float [ %58, %L190.i ], [ %.0.i36.i, %L221.i ], [ %87, %L223.i ] %88 = fcmp une float %4, 0.000000e+00, !dbg !680 %89 = fcmp ugt float %value_phi5.i, %4 %or.cond = select i1 %88, i1 %89, i1 false, !dbg !683 br i1 %or.cond, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L245.i, !dbg !683 L245.i: ; preds = %L236.i %90 = shl nsw i64 %203, 2, !dbg !684 %91 = add i64 %90, -4, !dbg !684 %92 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract29, i64 %91, !dbg !690 %93 = bitcast i8 addrspace(1)* %92 to float addrspace(1)*, !dbg !691 %94 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %93, i32 noundef 4) #146, !dbg !691 %95 = shl nuw nsw i64 %206, 2, !dbg !684 %96 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract21, i64 %95, !dbg !690 %97 = bitcast i8 addrspace(1)* %96 to float addrspace(1)*, !dbg !691 %98 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %97, i32 noundef 4) #146, !dbg !691 %99 = fadd float %value_phi5.i, %98, !dbg !696 %100 = fcmp uge float %94, %99, !dbg !698 br i1 %100, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L302.i, !dbg !700 L302.i: ; preds = %L245.i %101 = fsub float %value_phi5.i, %98, !dbg !701 %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !703 %.not167 = icmp eq i32 %102, 0, !dbg !703 %103 = call float @llvm.nvvm.fabs.ftz.f(float %101) #147, !dbg !703 %104 = call float @llvm.fabs.f32(float %101) #146, !dbg !703 %.0.i38.i = select i1 %.not167, float %104, float %103, !dbg !703 %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !704 %.not168 = icmp eq i32 %105, 0, !dbg !704 %106 = call float @llvm.nvvm.fmax.ftz.f(float %94, float %.0.i38.i) #147, !dbg !704 %107 = call float @llvm.maxnum.f32(float %94, float %.0.i38.i) #146, !dbg !704 %.0.i40.i = select i1 %.not168, float %107, float %106, !dbg !704 %108 = fdiv float 1.000000e+00, %.0.i40.i, !dbg !705 %109 = fdiv float 1.000000e+00, %99, !dbg !707 %110 = fdiv float 1.000000e+00, %value_phi5.i, !dbg !710 %111 = fmul float %110, %110, !dbg !713 %112 = fmul float %98, %98, !dbg !716 %113 = fmul float %111, %112, !dbg !719 %114 = fadd float %113, 1.000000e+00, !dbg !720 %115 = fmul float %108, %108, !dbg !716 %116 = fmul float %109, %109, !dbg !716 %117 = fsub float %115, %116, !dbg !722 %118 = fmul float %114, %117, !dbg !719 %119 = fmul float %118, 1.250000e-01, !dbg !723 %120 = fdiv float %109, %108, !dbg !725 %121 = call float @__nv_logf(float %120) #147, !dbg !726 %122 = fmul float %111, %121, !dbg !719 %123 = fmul float %122, 2.500000e-01, !dbg !723 %124 = fadd float %123, %119, !dbg !727 %125 = bitcast i8 addrspace(1)* %.fca.0.extract60 to float addrspace(1)*, !dbg !728 %126 = getelementptr inbounds float, float addrspace(1)* %125, i64 %21, !dbg !728 %127 = load float, float addrspace(1)* %126, align 4, !dbg !728, !tbaa !216 %128 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract13, i64 %91, !dbg !736 %129 = bitcast i8 addrspace(1)* %128 to float addrspace(1)*, !dbg !741 %130 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %129, i32 noundef 4) #146, !dbg !741 %131 = fmul float %130, %130, !dbg !746 %132 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract6, i64 %91, !dbg !736 %133 = bitcast i8 addrspace(1)* %132 to float addrspace(1)*, !dbg !741 %134 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %133, i32 noundef 4) #146, !dbg !741 %135 = fmul float %127, %131, !dbg !748 %136 = fmul float %134, %135, !dbg !748 %137 = icmp sgt i64 %.fca.2.0.extract, 0, !dbg !750 %138 = select i1 %137, i64 %.fca.2.0.extract, i64 0, !dbg !750 %139 = mul i64 %206, %138, !dbg !763 %140 = add i64 %139, %203, !dbg !767 %141 = shl i64 %140, 2, !dbg !768 %142 = add i64 %141, -4, !dbg !768 %143 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract, i64 %142, !dbg !773 %144 = bitcast i8 addrspace(1)* %143 to float addrspace(1)*, !dbg !774 %145 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %144, i32 noundef 4) #146, !dbg !774 %146 = fsub float %124, %145, !dbg !779 %147 = fmul float %136, %146, !dbg !780 %148 = fmul float %110, %147, !dbg !780 %149 = fneg float %value_phi.i, !dbg !782 %150 = fneg float %value_phi3.i, !dbg !782 %151 = fneg float %value_phi4.i, !dbg !782 %152 = fmul float %148, %149, !dbg !788 %153 = fmul float %148, %150, !dbg !788 %154 = fmul float %148, %151, !dbg !788 %155 = icmp sgt i64 %.fca.2.0.extract70, 0 %156 = select i1 %155, i64 %.fca.2.0.extract70, i64 0 %157 = icmp sgt i64 %.fca.2.1.extract71, 0 %158 = select i1 %157, i64 %.fca.2.1.extract71, i64 0 %159 = icmp sgt i64 %203, 0 %160 = icmp sle i64 %203, %158 %161 = and i1 %159, %160 %162 = mul i64 %21, %156 %163 = icmp ult i64 %206, %158 %164 = mul i64 %206, %156 %.not14 = xor i1 %161, true, !dbg !794 %.not15 = xor i1 %155, true, !dbg !794 %brmerge = select i1 %.not14, i1 true, i1 %.not15, !dbg !794 br i1 %brmerge, label %L524.i, label %L523.i.us, !dbg !794 L523.i.us: ; preds = %L302.i %165 = shl i64 %162, 2, !dbg !795 %166 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %165, !dbg !801 %167 = bitcast i8 addrspace(1)* %166 to float addrspace(1)*, !dbg !802 %168 = atomicrmw fadd float addrspace(1)* %167, float %152 monotonic, align 4, !dbg !802 br i1 %163, label %L615.i.us, label %L616.i, !dbg !808 L615.i.us: ; preds = %L523.i.us %169 = fneg float %152, !dbg !814 %170 = shl i64 %164, 2, !dbg !815 %171 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %170, !dbg !819 %172 = bitcast i8 addrspace(1)* %171 to float addrspace(1)*, !dbg !820 %173 = atomicrmw fadd float addrspace(1)* %172, float %169 monotonic, align 4, !dbg !820 %174 = icmp ugt i64 %156, 1, !dbg !826 br i1 %174, label %L523.i.us.1, label %L524.i, !dbg !834 L523.i.us.1: ; preds = %L615.i.us %175 = shl i64 %162, 2, !dbg !795 %176 = add i64 %175, 4, !dbg !795 %177 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %176, !dbg !801 %178 = bitcast i8 addrspace(1)* %177 to float addrspace(1)*, !dbg !802 %179 = atomicrmw fadd float addrspace(1)* %178, float %153 monotonic, align 4, !dbg !802 %180 = fneg float %153, !dbg !814 %181 = shl i64 %164, 2, !dbg !815 %182 = add i64 %181, 4, !dbg !815 %183 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %182, !dbg !819 %184 = bitcast i8 addrspace(1)* %183 to float addrspace(1)*, !dbg !820 %185 = atomicrmw fadd float addrspace(1)* %184, float %180 monotonic, align 4, !dbg !820 %.not187 = icmp eq i64 %156, 2, !dbg !826 br i1 %.not187, label %L524.i, label %L523.i.us.2, !dbg !834 L523.i.us.2: ; preds = %L523.i.us.1 %186 = shl i64 %162, 2, !dbg !795 %187 = add i64 %186, 8, !dbg !795 %188 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %187, !dbg !801 %189 = bitcast i8 addrspace(1)* %188 to float addrspace(1)*, !dbg !802 %190 = atomicrmw fadd float addrspace(1)* %189, float %154 monotonic, align 4, !dbg !802 %191 = fneg float %154, !dbg !814 %192 = shl i64 %164, 2, !dbg !815 %193 = add i64 %192, 8, !dbg !815 %194 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %193, !dbg !819 %195 = bitcast i8 addrspace(1)* %194 to float addrspace(1)*, !dbg !820 %196 = atomicrmw fadd float addrspace(1)* %195, float %191 monotonic, align 4, !dbg !820 br label %julia_gbsa_force_2_kernel__25091_inner.exit, !dbg !835 L524.i: ; preds = %L302.i, %L523.i.us.1, %L615.i.us call fastcc void @julia__throw_boundserror_25134() #148, !dbg !834 unreachable, !dbg !834 L616.i: ; preds = %L523.i.us call fastcc void @julia__throw_boundserror_25134() #148, !dbg !808 unreachable, !dbg !808 fail.i: ; preds = %L33.i call fastcc void @gpu_report_exception(i64 noundef ptrtoint ([10 x i8]* @exception6 to i64)) #146, !dbg !608 call fastcc void @gpu_signal_exception() #146, !dbg !608 unreachable, !dbg !608 pass.i: ; preds = %L33.i %197 = sdiv i64 %20, %.fca.2.0.extract49, !dbg !608 %198 = icmp sgt i64 %.fca.2.0.extract49, 0, !dbg !836 %199 = mul i64 %197, %.fca.2.0.extract49, !dbg !839 %200 = icmp ne i64 %199, %20, !dbg !840 %201 = and i1 %198, %200, !dbg !842 %202 = zext i1 %201 to i64, !dbg !843 %203 = add nsw i64 %197, %202, !dbg !848 %cond = icmp eq i64 %.fca.2.0.extract49, -1, !dbg !850 br i1 %cond, label %after_srem.i, label %oksrem.i, !dbg !850 oksrem.i: ; preds = %pass.i %204 = add nsw i64 %20, -1, !dbg !852 %205 = srem i64 %204, %.fca.2.0.extract49, !dbg !850 br label %after_srem.i, !dbg !850 after_srem.i: ; preds = %oksrem.i, %pass.i %206 = phi i64 [ %205, %oksrem.i ], [ 0, %pass.i ], !dbg !850 %207 = add nuw nsw i64 %206, 1, !dbg !853 %208 = icmp eq i64 %203, %207, !dbg !854 br i1 %208, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L50.i, !dbg !857 julia_gbsa_force_2_kernel__25091_inner.exit: ; preds = %after_srem.i, %L523.i.us.2, %L245.i, %L236.i, %entry ret void, !dbg !573 } ; Function Attrs: mustprogress willreturn define internal void @diffejulia_gbsa_force_2_kernel__25091_inner24({ i8 addrspace(1)*, i64, [2 x i64], i64 } %0, { i8 addrspace(1)*, i64, [2 x i64], i64 } %"'", { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'1", { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'2", [1 x [1 x [3 x float]]] %3, float %4, { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'3", { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'4", { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'5", { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'6", { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, { i8 addrspace(1)*, i64, [2 x i64], i64 } %"'7") local_unnamed_addr #138 !dbg !858 { entry: %.fca.0.extract68 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 0, !dbg !859 %.fca.2.0.extract70 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 0, !dbg !859 %.fca.2.1.extract71 = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %0, 2, 1, !dbg !859 %.fca.0.extract60 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %1, 0, !dbg !859 %".fca.0.extract47'ipev" = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %"'2", 0, !dbg !859 %.fca.0.extract47 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 0, !dbg !859 %.fca.2.0.extract49 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %2, 2, 0, !dbg !859 %.fca.0.0.0.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 0, !dbg !859 %.fca.0.0.1.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 1, !dbg !859 %.fca.0.0.2.extract = extractvalue [1 x [1 x [3 x float]]] %3, 0, 0, 2, !dbg !859 %.fca.0.extract29 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %5, 0, !dbg !859 %.fca.0.extract21 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %6, 0, !dbg !859 %.fca.0.extract13 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %7, 0, !dbg !859 %.fca.0.extract6 = extractvalue { i8 addrspace(1)*, i64, [1 x i64], i64 } %8, 0, !dbg !859 %.fca.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 0, !dbg !859 %.fca.2.0.extract = extractvalue { i8 addrspace(1)*, i64, [2 x i64], i64 } %9, 2, 0, !dbg !859 %10 = call {}*** @julia.get_pgcstack() #146 %11 = mul i64 %.fca.2.0.extract49, %.fca.2.0.extract49, !dbg !860 %12 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() #146, !dbg !864, !range !153 %13 = zext i32 %12 to i64, !dbg !870 %14 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x() #146, !dbg !872, !range !164 %15 = zext i32 %14 to i64, !dbg !877 %16 = mul nuw nsw i64 %13, %15, !dbg !879 %17 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x() #146, !dbg !881, !range !177 %18 = add nuw nsw i32 %17, 1, !dbg !886 %19 = zext i32 %18 to i64, !dbg !887 %20 = add nuw nsw i64 %16, %19, !dbg !889 %.not = icmp sgt i64 %20, %11, !dbg !891 br i1 %.not, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L33.i, !dbg !893 L33.i: ; preds = %entry %.not153 = icmp eq i64 %.fca.2.0.extract49, 0, !dbg !894 br i1 %.not153, label %fail.i, label %pass.i, !dbg !894 L50.i: ; preds = %after_srem.i %21 = add nsw i64 %203, -1, !dbg !899 %"'ipc" = bitcast i8 addrspace(1)* %".fca.0.extract47'ipev" to [1 x [3 x float]] addrspace(1)*, !dbg !908 %22 = bitcast i8 addrspace(1)* %.fca.0.extract47 to [1 x [3 x float]] addrspace(1)*, !dbg !908 %".unpack.elt'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %21, i64 0, i64 0, !dbg !908 %.unpack.elt = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 0, !dbg !908 %.unpack.unpack = load float, float addrspace(1)* %.unpack.elt, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 store float %.unpack.unpack, float* %.unpack.unpack_cache, align 4, !dbg !908, !tbaa !216, !invariant.group !914 %".unpack.elt154'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %21, i64 0, i64 1, !dbg !908 %.unpack.elt154 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 1, !dbg !908 %.unpack.unpack155 = load float, float addrspace(1)* %.unpack.elt154, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 %".unpack.elt156'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %21, i64 0, i64 2, !dbg !908 %.unpack.elt156 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %21, i64 0, i64 2, !dbg !908 %.unpack.unpack157 = load float, float addrspace(1)* %.unpack.elt156, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 %".unpack.elt159'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %206, i64 0, i64 0, !dbg !908 %.unpack.elt159 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 0, !dbg !908 %.unpack.unpack160 = load float, float addrspace(1)* %.unpack.elt159, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 store float %.unpack.unpack160, float* %.unpack.unpack160_cache, align 4, !dbg !908, !tbaa !216, !invariant.group !915 store float %.unpack.unpack157, float* %.unpack.unpack157_cache, align 4, !dbg !908, !tbaa !216, !invariant.group !916 store float %.unpack.unpack155, float* %.unpack.unpack155_cache, align 4, !dbg !908, !tbaa !216, !invariant.group !917 %".unpack.elt161'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %206, i64 0, i64 1, !dbg !908 %.unpack.elt161 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 1, !dbg !908 %.unpack.unpack162 = load float, float addrspace(1)* %.unpack.elt161, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 store float %.unpack.unpack162, float* %.unpack.unpack162_cache, align 4, !dbg !908, !tbaa !216, !invariant.group !918 %".unpack.elt163'ipg" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc", i64 %206, i64 0, i64 2, !dbg !908 %.unpack.elt163 = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %22, i64 %206, i64 0, i64 2, !dbg !908 %.unpack.unpack164 = load float, float addrspace(1)* %.unpack.elt163, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912 store float %.unpack.unpack164, float* %.unpack.unpack164_cache, align 4, !dbg !919, !tbaa !216, !invariant.group !923 %23 = fcmp uge float %.unpack.unpack, %.unpack.unpack160, !dbg !919 br i1 %23, label %L109.i, label %L99.i, !dbg !924 L99.i: ; preds = %L50.i %24 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !925 %25 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !925 %26 = fadd float %.fca.0.0.0.extract, %25, !dbg !927 %27 = fcmp uge float %24, %26, !dbg !928 br i1 %27, label %L106.i, label %L119.i, !dbg !929 L106.i: ; preds = %L99.i %28 = fsub float %24, %.fca.0.0.0.extract, !dbg !925 br label %L119.i, !dbg !929 L109.i: ; preds = %L50.i %29 = fsub float %.unpack.unpack, %.unpack.unpack160, !dbg !930 %30 = fsub float %.unpack.unpack160, %.unpack.unpack, !dbg !930 %31 = fadd float %.fca.0.0.0.extract, %30, !dbg !932 %32 = fcmp uge float %29, %31, !dbg !933 %. = select i1 %32, float %31, float %30, !dbg !934 br label %L119.i, !dbg !934 L119.i: ; preds = %L109.i, %L106.i, %L99.i %value_phi.i = phi float [ %28, %L106.i ], [ %24, %L99.i ], [ %., %L109.i ] %33 = fcmp uge float %.unpack.unpack155, %.unpack.unpack162, !dbg !919 br i1 %33, label %L139.i, label %L129.i, !dbg !924 L129.i: ; preds = %L119.i %34 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !925 %35 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !925 %36 = fadd float %.fca.0.0.1.extract, %35, !dbg !927 %37 = fcmp uge float %34, %36, !dbg !928 br i1 %37, label %L136.i, label %L149.i, !dbg !929 L136.i: ; preds = %L129.i %38 = fsub float %34, %.fca.0.0.1.extract, !dbg !925 br label %L149.i, !dbg !929 L139.i: ; preds = %L119.i %39 = fsub float %.unpack.unpack155, %.unpack.unpack162, !dbg !930 %40 = fsub float %.unpack.unpack162, %.unpack.unpack155, !dbg !930 %41 = fadd float %.fca.0.0.1.extract, %40, !dbg !932 %42 = fcmp uge float %39, %41, !dbg !933 %.185 = select i1 %42, float %41, float %40, !dbg !934 br label %L149.i, !dbg !934 L149.i: ; preds = %L139.i, %L136.i, %L129.i %value_phi3.i = phi float [ %38, %L136.i ], [ %34, %L129.i ], [ %.185, %L139.i ] %43 = fcmp uge float %.unpack.unpack157, %.unpack.unpack164, !dbg !919 br i1 %43, label %L169.i, label %L159.i, !dbg !924 L159.i: ; preds = %L149.i %44 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !925 %45 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !925 %46 = fadd float %.fca.0.0.2.extract, %45, !dbg !927 %47 = fcmp uge float %44, %46, !dbg !928 br i1 %47, label %L166.i, label %L179.i, !dbg !929 L166.i: ; preds = %L159.i %48 = fsub float %44, %.fca.0.0.2.extract, !dbg !925 br label %L179.i, !dbg !929 L169.i: ; preds = %L149.i %49 = fsub float %.unpack.unpack157, %.unpack.unpack164, !dbg !930 %50 = fsub float %.unpack.unpack164, %.unpack.unpack157, !dbg !930 %51 = fadd float %.fca.0.0.2.extract, %50, !dbg !932 %52 = fcmp uge float %49, %51, !dbg !933 %.186 = select i1 %52, float %51, float %50, !dbg !934 br label %L179.i, !dbg !934 L179.i: ; preds = %L169.i, %L166.i, %L159.i %value_phi4.i = phi float [ %48, %L166.i ], [ %44, %L159.i ], [ %.186, %L169.i ] %53 = fmul float %value_phi.i, %value_phi.i, !dbg !935 %54 = fmul float %value_phi3.i, %value_phi3.i, !dbg !935 %55 = fadd float %53, %54, !dbg !942 %56 = fmul float %value_phi4.i, %value_phi4.i, !dbg !935 %57 = fadd float %55, %56, !dbg !942 %58 = call float @__nv_sqrtf(float %57) #147, !dbg !943 %59 = fcmp ule float %58, 0.000000e+00, !dbg !944 br i1 %59, label %L197.i, label %L190.i, !dbg !946 L190.i: ; preds = %L179.i %60 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !947 %.not166 = icmp eq i32 %60, 0, !dbg !947 %61 = call float @llvm.nvvm.fabs.ftz.f(float %58) #147, !dbg !947 %62 = call float @llvm.fabs.f32(float %58) #146, !dbg !947 %.0.i.i = select i1 %.not166, float %62, float %61, !dbg !947 %63 = fcmp uge float %.0.i.i, 0x7FF0000000000000, !dbg !947 br i1 %63, label %L197.i, label %L236.i, !dbg !946 L197.i: ; preds = %L190.i, %L179.i %64 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !948 %"'ip_phi" = phi i32 , !dbg !948 %.not170 = icmp eq i32 %64, 0, !dbg !948 store i1 %.not170, i1* %.not170_cache, align 1, !dbg !948, !invariant.group !954 %65 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi.i) #147, !dbg !948 %66 = call float @llvm.fabs.f32(float %value_phi.i) #146, !dbg !948 %.0.i35.i = select i1 %.not170, float %66, float %65, !dbg !948 %67 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !955 %"'ip_phi8" = phi i32 , !dbg !955 %.not171 = icmp eq i32 %67, 0, !dbg !955 store i1 %.not171, i1* %.not171_cache, align 1, !dbg !955, !invariant.group !958 %68 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi3.i) #147, !dbg !955 %69 = call float @llvm.fabs.f32(float %value_phi3.i) #146, !dbg !955 %.0.i41.i = select i1 %.not171, float %69, float %68, !dbg !955 %.inv = fcmp olt float %.0.i35.i, %.0.i41.i, !dbg !959 %70 = select i1 %.inv, float %.0.i41.i, float %.0.i35.i, !dbg !959 %71 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !955 %"'ip_phi9" = phi i32 , !dbg !955 %.not171.1 = icmp eq i32 %71, 0, !dbg !955 store i1 %.not171.1, i1* %.not171.1_cache, align 1, !dbg !955, !invariant.group !961 %72 = call float @llvm.nvvm.fabs.ftz.f(float %value_phi4.i) #147, !dbg !955 %73 = call float @llvm.fabs.f32(float %value_phi4.i) #146, !dbg !955 %.0.i41.i.1 = select i1 %.not171.1, float %73, float %72, !dbg !955 %.inv.1 = fcmp olt float %70, %.0.i41.i.1, !dbg !959 %74 = select i1 %.inv.1, float %.0.i41.i.1, float %70, !dbg !959 %75 = fcmp une float %74, 0.000000e+00, !dbg !962 br i1 %75, label %L223.i, label %L221.i, !dbg !965 L221.i: ; preds = %L197.i %76 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !966 %"'ip_phi10" = phi i32 , !dbg !966 %.not173 = icmp eq i32 %76, 0, !dbg !966 %77 = call float @llvm.nvvm.fabs.ftz.f(float noundef 0.000000e+00) #147, !dbg !966 %.0.i36.i = select i1 %.not173, float 0.000000e+00, float %77, !dbg !966 br label %L236.i, !dbg !970 L223.i: ; preds = %L197.i %78 = fdiv float %value_phi.i, %74, !dbg !972 %79 = fmul float %78, %78, !dbg !974 %80 = fdiv float %value_phi3.i, %74, !dbg !972 %81 = fmul float %80, %80, !dbg !974 %82 = fadd float %79, %81, !dbg !977 %83 = fdiv float %value_phi4.i, %74, !dbg !972 %84 = fmul float %83, %83, !dbg !974 %85 = fadd float %84, %82, !dbg !977 %86 = call float @__nv_sqrtf(float %85) #147, !dbg !978 %87 = fmul float %74, %86, !dbg !979 br label %L236.i, !dbg !970 L236.i: ; preds = %L223.i, %L221.i, %L190.i %value_phi5.i = phi float [ %58, %L190.i ], [ %.0.i36.i, %L221.i ], [ %87, %L223.i ] %88 = fcmp une float %4, 0.000000e+00, !dbg !980 %89 = fcmp ugt float %value_phi5.i, %4 %or.cond = select i1 %88, i1 %89, i1 false, !dbg !983 br i1 %or.cond, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L245.i, !dbg !983 L245.i: ; preds = %L236.i %90 = shl nsw i64 %203, 2, !dbg !984 %91 = add i64 %90, -4, !dbg !984 %92 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract29, i64 %91, !dbg !990 %93 = bitcast i8 addrspace(1)* %92 to float addrspace(1)*, !dbg !991 %94 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %93, i32 noundef 4) #146, !dbg !991 %95 = shl nuw nsw i64 %206, 2, !dbg !984 %96 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract21, i64 %95, !dbg !990 %97 = bitcast i8 addrspace(1)* %96 to float addrspace(1)*, !dbg !991 %98 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %97, i32 noundef 4) #146, !dbg !991 %99 = fadd float %value_phi5.i, %98, !dbg !996 %100 = fcmp uge float %94, %99, !dbg !998 br i1 %100, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L302.i, !dbg !1000 L302.i: ; preds = %L245.i %101 = fsub float %value_phi5.i, %98, !dbg !1001 %102 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !1003 %"'ip_phi11" = phi i32 , !dbg !1003 %.not167 = icmp eq i32 %102, 0, !dbg !1003 %103 = call float @llvm.nvvm.fabs.ftz.f(float %101) #147, !dbg !1003 %104 = call float @llvm.fabs.f32(float %101) #146, !dbg !1003 %.0.i38.i = select i1 %.not167, float %104, float %103, !dbg !1003 %105 = call i32 @__nvvm_reflect(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0)) #147, !dbg !1004 %"'ip_phi12" = phi i32 , !dbg !1004 %.not168 = icmp eq i32 %105, 0, !dbg !1004 %106 = call float @llvm.nvvm.fmax.ftz.f(float %94, float %.0.i38.i) #147, !dbg !1004 %107 = call float @llvm.maxnum.f32(float %94, float %.0.i38.i) #146, !dbg !1004 %.0.i40.i = select i1 %.not168, float %107, float %106, !dbg !1004 %108 = fdiv float 1.000000e+00, %.0.i40.i, !dbg !1005 %109 = fdiv float 1.000000e+00, %99, !dbg !1007 %110 = fdiv float 1.000000e+00, %value_phi5.i, !dbg !1010 %111 = fmul float %110, %110, !dbg !1013 %112 = fmul float %98, %98, !dbg !1016 %113 = fmul float %111, %112, !dbg !1019 %114 = fadd float %113, 1.000000e+00, !dbg !1020 %115 = fmul float %108, %108, !dbg !1016 %116 = fmul float %109, %109, !dbg !1016 %117 = fsub float %115, %116, !dbg !1022 %118 = fmul float %114, %117, !dbg !1019 %119 = fmul float %118, 1.250000e-01, !dbg !1023 %120 = fdiv float %109, %108, !dbg !1025 %121 = call float @__nv_logf(float %120) #147, !dbg !1026 %122 = fmul float %111, %121, !dbg !1019 %123 = fmul float %122, 2.500000e-01, !dbg !1023 %124 = fadd float %123, %119, !dbg !1027 %125 = bitcast i8 addrspace(1)* %.fca.0.extract60 to float addrspace(1)*, !dbg !1028 %126 = getelementptr inbounds float, float addrspace(1)* %125, i64 %21, !dbg !1028 %127 = load float, float addrspace(1)* %126, align 4, !dbg !1028, !tbaa !216 %128 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract13, i64 %91, !dbg !1036 %129 = bitcast i8 addrspace(1)* %128 to float addrspace(1)*, !dbg !1041 %130 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %129, i32 noundef 4) #146, !dbg !1041 %131 = fmul float %130, %130, !dbg !1046 %132 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract6, i64 %91, !dbg !1036 %133 = bitcast i8 addrspace(1)* %132 to float addrspace(1)*, !dbg !1041 %134 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %133, i32 noundef 4) #146, !dbg !1041 %135 = fmul float %127, %131, !dbg !1048 %136 = fmul float %134, %135, !dbg !1048 %137 = icmp sgt i64 %.fca.2.0.extract, 0, !dbg !1050 %138 = select i1 %137, i64 %.fca.2.0.extract, i64 0, !dbg !1050 %139 = mul i64 %206, %138, !dbg !1063 %140 = add i64 %139, %203, !dbg !1067 %141 = shl i64 %140, 2, !dbg !1068 %142 = add i64 %141, -4, !dbg !1068 %143 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract, i64 %142, !dbg !1073 %144 = bitcast i8 addrspace(1)* %143 to float addrspace(1)*, !dbg !1074 %145 = call float @llvm.nvvm.ldg.global.f.f32.p1f32(float addrspace(1)* %144, i32 noundef 4) #146, !dbg !1074 %146 = fsub float %124, %145, !dbg !1079 %147 = fmul float %136, %146, !dbg !1080 %148 = fmul float %110, %147, !dbg !1080 %149 = fneg float %value_phi.i, !dbg !1082 %150 = fneg float %value_phi3.i, !dbg !1082 %151 = fneg float %value_phi4.i, !dbg !1082 %152 = fmul float %148, %149, !dbg !1088 %153 = fmul float %148, %150, !dbg !1088 %154 = fmul float %148, %151, !dbg !1088 %155 = icmp sgt i64 %.fca.2.0.extract70, 0 %156 = select i1 %155, i64 %.fca.2.0.extract70, i64 0 %157 = icmp sgt i64 %.fca.2.1.extract71, 0 %158 = select i1 %157, i64 %.fca.2.1.extract71, i64 0 %159 = icmp sgt i64 %203, 0 %160 = icmp sle i64 %203, %158 %161 = and i1 %159, %160 %162 = mul i64 %21, %156 %163 = icmp ult i64 %206, %158 %164 = mul i64 %206, %156 %.not14 = xor i1 %161, true, !dbg !1094 %.not15 = xor i1 %155, true, !dbg !1094 %brmerge = select i1 %.not14, i1 true, i1 %.not15, !dbg !1094 br i1 %brmerge, label %L524.i, label %L523.i.us, !dbg !1094 L523.i.us: ; preds = %L302.i %165 = shl i64 %162, 2, !dbg !1095 %166 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %165, !dbg !1101 %167 = bitcast i8 addrspace(1)* %166 to float addrspace(1)*, !dbg !1102 %168 = atomicrmw fadd float addrspace(1)* %167, float %152 monotonic, align 4, !dbg !1102 br i1 %163, label %L615.i.us, label %L616.i, !dbg !1108 L615.i.us: ; preds = %L523.i.us %169 = fneg float %152, !dbg !1114 %170 = shl i64 %164, 2, !dbg !1115 %171 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %170, !dbg !1119 %172 = bitcast i8 addrspace(1)* %171 to float addrspace(1)*, !dbg !1120 %173 = atomicrmw fadd float addrspace(1)* %172, float %169 monotonic, align 4, !dbg !1120 %174 = icmp ugt i64 %156, 1, !dbg !1126 br i1 %174, label %L523.i.us.1, label %L524.i, !dbg !1134 L523.i.us.1: ; preds = %L615.i.us %175 = shl i64 %162, 2, !dbg !1095 %176 = add i64 %175, 4, !dbg !1095 %177 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %176, !dbg !1101 %178 = bitcast i8 addrspace(1)* %177 to float addrspace(1)*, !dbg !1102 %179 = atomicrmw fadd float addrspace(1)* %178, float %153 monotonic, align 4, !dbg !1102 %180 = fneg float %153, !dbg !1114 %181 = shl i64 %164, 2, !dbg !1115 %182 = add i64 %181, 4, !dbg !1115 %183 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %182, !dbg !1119 %184 = bitcast i8 addrspace(1)* %183 to float addrspace(1)*, !dbg !1120 %185 = atomicrmw fadd float addrspace(1)* %184, float %180 monotonic, align 4, !dbg !1120 %.not187 = icmp eq i64 %156, 2, !dbg !1126 br i1 %.not187, label %L524.i, label %L523.i.us.2, !dbg !1134 L523.i.us.2: ; preds = %L523.i.us.1 %186 = shl i64 %162, 2, !dbg !1095 %187 = add i64 %186, 8, !dbg !1095 %188 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %187, !dbg !1101 %189 = bitcast i8 addrspace(1)* %188 to float addrspace(1)*, !dbg !1102 %190 = atomicrmw fadd float addrspace(1)* %189, float %154 monotonic, align 4, !dbg !1102 %191 = fneg float %154, !dbg !1114 %192 = shl i64 %164, 2, !dbg !1115 %193 = add i64 %192, 8, !dbg !1115 %194 = getelementptr i8, i8 addrspace(1)* %.fca.0.extract68, i64 %193, !dbg !1119 %195 = bitcast i8 addrspace(1)* %194 to float addrspace(1)*, !dbg !1120 %196 = atomicrmw fadd float addrspace(1)* %195, float %191 monotonic, align 4, !dbg !1120 br label %julia_gbsa_force_2_kernel__25091_inner.exit, !dbg !1135 L524.i: ; preds = %L523.i.us.1, %L615.i.us, %L302.i call fastcc void @julia__throw_boundserror_25134() #148, !dbg !1134 unreachable, !dbg !1134 L616.i: ; preds = %L523.i.us call fastcc void @julia__throw_boundserror_25134() #148, !dbg !1108 unreachable, !dbg !1108 fail.i: ; preds = %L33.i call fastcc void @gpu_report_exception(i64 noundef ptrtoint ([10 x i8]* @exception6 to i64)) #146, !dbg !894 call fastcc void @gpu_signal_exception() #146, !dbg !894 unreachable, !dbg !894 pass.i: ; preds = %L33.i %197 = sdiv i64 %20, %.fca.2.0.extract49, !dbg !894 %198 = icmp sgt i64 %.fca.2.0.extract49, 0, !dbg !1136 %199 = mul i64 %197, %.fca.2.0.extract49, !dbg !1139 %200 = icmp ne i64 %199, %20, !dbg !1140 %201 = and i1 %198, %200, !dbg !1142 %202 = zext i1 %201 to i64, !dbg !1143 %203 = add nsw i64 %197, %202, !dbg !1148 %cond = icmp eq i64 %.fca.2.0.extract49, -1, !dbg !1150 br i1 %cond, label %after_srem.i, label %oksrem.i, !dbg !1150 oksrem.i: ; preds = %pass.i %204 = add nsw i64 %20, -1, !dbg !1152 %205 = srem i64 %204, %.fca.2.0.extract49, !dbg !1150 br label %after_srem.i, !dbg !1150 after_srem.i: ; preds = %oksrem.i, %pass.i %206 = phi i64 [ %205, %oksrem.i ], [ 0, %pass.i ], !dbg !1150 %207 = add nuw nsw i64 %206, 1, !dbg !1153 %208 = icmp eq i64 %203, %207, !dbg !1154 br i1 %208, label %julia_gbsa_force_2_kernel__25091_inner.exit, label %L50.i, !dbg !1157 julia_gbsa_force_2_kernel__25091_inner.exit: ; preds = %after_srem.i, %L523.i.us.2, %L245.i, %L236.i, %entry br label %invertjulia_gbsa_force_2_kernel__25091_inner.exit, !dbg !859 allocsForInversion: ; No predecessors! %".unpack.unpack164'de" = alloca float, align 4 %209 = getelementptr float, float* %".unpack.unpack164'de", i64 0 store float 0.000000e+00, float* %209, align 4 %".unpack.unpack162'de" = alloca float, align 4 %210 = getelementptr float, float* %".unpack.unpack162'de", i64 0 store float 0.000000e+00, float* %210, align 4 %".unpack.unpack160'de" = alloca float, align 4 %211 = getelementptr float, float* %".unpack.unpack160'de", i64 0 store float 0.000000e+00, float* %211, align 4 %".unpack.unpack157'de" = alloca float, align 4 %212 = getelementptr float, float* %".unpack.unpack157'de", i64 0 store float 0.000000e+00, float* %212, align 4 %".unpack.unpack155'de" = alloca float, align 4 %213 = getelementptr float, float* %".unpack.unpack155'de", i64 0 store float 0.000000e+00, float* %213, align 4 %".unpack.unpack'de" = alloca float, align 4 %214 = getelementptr float, float* %".unpack.unpack'de", i64 0 store float 0.000000e+00, float* %214, align 4 %"'de" = alloca float, align 4 %215 = getelementptr float, float* %"'de", i64 0 store float 0.000000e+00, float* %215, align 4 %"'de23" = alloca float, align 4 %216 = getelementptr float, float* %"'de23", i64 0 store float 0.000000e+00, float* %216, align 4 %".'de" = alloca float, align 4 %217 = getelementptr float, float* %".'de", i64 0 store float 0.000000e+00, float* %217, align 4 %.unpack.unpack_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack_cache, align 4 %.unpack.unpack160_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack160_cache, align 4 %"'de29" = alloca float, align 4 %218 = getelementptr float, float* %"'de29", i64 0 store float 0.000000e+00, float* %218, align 4 %"'de30" = alloca float, align 4 %219 = getelementptr float, float* %"'de30", i64 0 store float 0.000000e+00, float* %219, align 4 %"value_phi.i'de" = alloca float, align 4 %220 = getelementptr float, float* %"value_phi.i'de", i64 0 store float 0.000000e+00, float* %220, align 4 %"'de38" = alloca float, align 4 %221 = getelementptr float, float* %"'de38", i64 0 store float 0.000000e+00, float* %221, align 4 %"'de39" = alloca float, align 4 %222 = getelementptr float, float* %"'de39", i64 0 store float 0.000000e+00, float* %222, align 4 %".185'de" = alloca float, align 4 %223 = getelementptr float, float* %".185'de", i64 0 store float 0.000000e+00, float* %223, align 4 %.unpack.unpack155_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack155_cache, align 4 %.unpack.unpack162_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack162_cache, align 4 %"'de46" = alloca float, align 4 %224 = getelementptr float, float* %"'de46", i64 0 store float 0.000000e+00, float* %224, align 4 %"'de47" = alloca float, align 4 %225 = getelementptr float, float* %"'de47", i64 0 store float 0.000000e+00, float* %225, align 4 %"value_phi3.i'de" = alloca float, align 4 %226 = getelementptr float, float* %"value_phi3.i'de", i64 0 store float 0.000000e+00, float* %226, align 4 %"'de60" = alloca float, align 4 %227 = getelementptr float, float* %"'de60", i64 0 store float 0.000000e+00, float* %227, align 4 %"'de61" = alloca float, align 4 %228 = getelementptr float, float* %"'de61", i64 0 store float 0.000000e+00, float* %228, align 4 %".186'de" = alloca float, align 4 %229 = getelementptr float, float* %".186'de", i64 0 store float 0.000000e+00, float* %229, align 4 %.unpack.unpack157_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack157_cache, align 4 %.unpack.unpack164_cache = alloca float, align 4 store float 0.000000e+00, float* %.unpack.unpack164_cache, align 4 %"'de68" = alloca float, align 4 %230 = getelementptr float, float* %"'de68", i64 0 store float 0.000000e+00, float* %230, align 4 %"'de69" = alloca float, align 4 %231 = getelementptr float, float* %"'de69", i64 0 store float 0.000000e+00, float* %231, align 4 %"'de70" = alloca float, align 4 %232 = getelementptr float, float* %"'de70", i64 0 store float 0.000000e+00, float* %232, align 4 %"'de112" = alloca float, align 4 %233 = getelementptr float, float* %"'de112", i64 0 store float 0.000000e+00, float* %233, align 4 %"'de113" = alloca float, align 4 %234 = getelementptr float, float* %"'de113", i64 0 store float 0.000000e+00, float* %234, align 4 %"'de114" = alloca float, align 4 %235 = getelementptr float, float* %"'de114", i64 0 store float 0.000000e+00, float* %235, align 4 %"value_phi4.i'de" = alloca float, align 4 %236 = getelementptr float, float* %"value_phi4.i'de", i64 0 store float 0.000000e+00, float* %236, align 4 %"'de115" = alloca float, align 4 %237 = getelementptr float, float* %"'de115", i64 0 store float 0.000000e+00, float* %237, align 4 %"'de116" = alloca float, align 4 %238 = getelementptr float, float* %"'de116", i64 0 store float 0.000000e+00, float* %238, align 4 %"'de124" = alloca float, align 4 %239 = getelementptr float, float* %"'de124", i64 0 store float 0.000000e+00, float* %239, align 4 %.not170_cache = alloca i1, align 1 store i1 false, i1* %.not170_cache, align 1 %.not171_cache = alloca i1, align 1 store i1 false, i1* %.not171_cache, align 1 %.not171.1_cache = alloca i1, align 1 store i1 false, i1* %.not171.1_cache, align 1 %".0.i41.i.1'de" = alloca float, align 4 %240 = getelementptr float, float* %".0.i41.i.1'de", i64 0 store float 0.000000e+00, float* %240, align 4 %"'de166" = alloca float, align 4 %241 = getelementptr float, float* %"'de166", i64 0 store float 0.000000e+00, float* %241, align 4 %"'de169" = alloca float, align 4 %242 = getelementptr float, float* %"'de169", i64 0 store float 0.000000e+00, float* %242, align 4 %"'de170" = alloca float, align 4 %243 = getelementptr float, float* %"'de170", i64 0 store float 0.000000e+00, float* %243, align 4 invertentry: ; preds = %invertL33.i ret void invertL33.i: ; No predecessors! br label %invertentry invertL50.i: ; preds = %invertL109.i, %invertL99.i %244 = load float, float* %".unpack.unpack164'de", align 4 store float 0.000000e+00, float* %".unpack.unpack164'de", align 4 %"'ipc_unwrap" = bitcast i8 addrspace(1)* %".fca.0.extract47'ipev" to [1 x [3 x float]] addrspace(1)* %cond_unwrap = icmp eq i64 %.fca.2.0.extract49, -1 br i1 %cond_unwrap, label %invertL50.i_phirc, label %invertL50.i_phirc13 invertL50.i_phirc: ; preds = %invertL50.i br label %invertL50.i_phimerge invertL50.i_phirc13: ; preds = %invertL50.i %_unwrap = add nsw i64 %20, -1 %_unwrap14 = srem i64 %_unwrap, %.fca.2.0.extract49 br label %invertL50.i_phimerge invertL50.i_phimerge: ; preds = %invertL50.i_phirc13, %invertL50.i_phirc %245 = phi i64 [ 0, %invertL50.i_phirc ], [ %_unwrap14, %invertL50.i_phirc13 ] %".unpack.elt163'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %245, i64 0, i64 2 %246 = atomicrmw fadd float addrspace(1)* %".unpack.elt163'ipg_unwrap", float %244 monotonic, align 4 %247 = load float, float* %".unpack.unpack162'de", align 4 store float 0.000000e+00, float* %".unpack.unpack162'de", align 4 %".unpack.elt161'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %245, i64 0, i64 1 %248 = atomicrmw fadd float addrspace(1)* %".unpack.elt161'ipg_unwrap", float %247 monotonic, align 4 %249 = load float, float* %".unpack.unpack160'de", align 4 store float 0.000000e+00, float* %".unpack.unpack160'de", align 4 %".unpack.elt159'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %245, i64 0, i64 0 %250 = atomicrmw fadd float addrspace(1)* %".unpack.elt159'ipg_unwrap", float %249 monotonic, align 4 %251 = load float, float* %".unpack.unpack157'de", align 4 store float 0.000000e+00, float* %".unpack.unpack157'de", align 4 %_unwrap15 = sdiv i64 %20, %.fca.2.0.extract49 %_unwrap16 = icmp sgt i64 %.fca.2.0.extract49, 0 %_unwrap17 = mul i64 %_unwrap15, %.fca.2.0.extract49 %_unwrap18 = icmp ne i64 %_unwrap17, %20 %_unwrap19 = and i1 %_unwrap16, %_unwrap18 %_unwrap20 = zext i1 %_unwrap19 to i64 %_unwrap21 = add nsw i64 %_unwrap15, %_unwrap20 %_unwrap22 = add nsw i64 %_unwrap21, -1 %".unpack.elt156'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %_unwrap22, i64 0, i64 2 %252 = atomicrmw fadd float addrspace(1)* %".unpack.elt156'ipg_unwrap", float %251 monotonic, align 4 %253 = load float, float* %".unpack.unpack155'de", align 4 store float 0.000000e+00, float* %".unpack.unpack155'de", align 4 %".unpack.elt154'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %_unwrap22, i64 0, i64 1 %254 = atomicrmw fadd float addrspace(1)* %".unpack.elt154'ipg_unwrap", float %253 monotonic, align 4 %255 = load float, float* %".unpack.unpack'de", align 4 store float 0.000000e+00, float* %".unpack.unpack'de", align 4 %".unpack.elt'ipg_unwrap" = getelementptr inbounds [1 x [3 x float]], [1 x [3 x float]] addrspace(1)* %"'ipc_unwrap", i64 %_unwrap22, i64 0, i64 0 %256 = atomicrmw fadd float addrspace(1)* %".unpack.elt'ipg_unwrap", float %255 monotonic, align 4 br label %invertafter_srem.i invertL99.i: ; preds = %staging, %invertL106.i %257 = load float, float* %"'de", align 4 %258 = fneg fast float %257 store float 0.000000e+00, float* %"'de", align 4 %259 = load float, float* %".unpack.unpack160'de", align 4 %260 = fadd fast float %259, %257 store float %260, float* %".unpack.unpack160'de", align 4 %261 = load float, float* %".unpack.unpack'de", align 4 %262 = fadd fast float %261, %258 store float %262, float* %".unpack.unpack'de", align 4 br label %invertL50.i invertL106.i: ; preds = %staging %263 = load float, float* %"'de23", align 4 store float 0.000000e+00, float* %"'de23", align 4 %264 = load float, float* %"'de", align 4 %265 = fadd fast float %264, %263 store float %265, float* %"'de", align 4 br label %invertL99.i invertL109.i: ; preds = %invertL119.i %266 = load float, float* %".'de", align 4 %267 = load float, float* %.unpack.unpack_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !914 %268 = load float, float* %.unpack.unpack160_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !915 %_unwrap24 = fsub float %267, %268 %_unwrap25 = fsub float %268, %267 %_unwrap26 = fadd float %.fca.0.0.0.extract, %_unwrap25 %_unwrap27 = fcmp uge float %_unwrap24, %_unwrap26 %diffe = select fast i1 %_unwrap27, float %266, float 0.000000e+00 %269 = load float, float* %".'de", align 4 %diffe28 = select fast i1 %_unwrap27, float 0.000000e+00, float %269 store float 0.000000e+00, float* %".'de", align 4 %270 = load float, float* %"'de29", align 4 %271 = fadd fast float %270, %266 %272 = select fast i1 %_unwrap27, float %271, float %270 store float %272, float* %"'de29", align 4 %273 = load float, float* %"'de30", align 4 %274 = fadd fast float %273, %269 %275 = select fast i1 %_unwrap27, float %273, float %274 store float %275, float* %"'de30", align 4 %276 = load float, float* %"'de29", align 4 store float 0.000000e+00, float* %"'de29", align 4 %277 = load float, float* %"'de30", align 4 %278 = fadd fast float %277, %276 store float %278, float* %"'de30", align 4 %279 = load float, float* %"'de30", align 4 %280 = fneg fast float %279 store float 0.000000e+00, float* %"'de30", align 4 %281 = load float, float* %".unpack.unpack160'de", align 4 %282 = fadd fast float %281, %279 store float %282, float* %".unpack.unpack160'de", align 4 %283 = load float, float* %".unpack.unpack'de", align 4 %284 = fadd fast float %283, %280 store float %284, float* %".unpack.unpack'de", align 4 br label %invertL50.i invertL119.i: ; preds = %invertL139.i, %invertL129.i %285 = load float, float* %"value_phi.i'de", align 4 store float 0.000000e+00, float* %"value_phi.i'de", align 4 %286 = load float, float* %.unpack.unpack_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !914 %287 = load float, float* %.unpack.unpack160_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !915 %_unwrap33 = fcmp uge float %286, %287 %_unwrap34 = fsub float %287, %286 %_unwrap35 = fsub float %286, %287 %_unwrap36 = fadd float %.fca.0.0.0.extract, %_unwrap35 %_unwrap37 = fcmp uge float %_unwrap34, %_unwrap36 %anot1_ = xor i1 %_unwrap33, true %andVal0 = and i1 %_unwrap37, %anot1_ %bnot1_ = xor i1 %_unwrap37, true %andVal1 = and i1 %bnot1_, %anot1_ %288 = select fast i1 %_unwrap33, float %285, float 0.000000e+00 %289 = load float, float* %".'de", align 4 %290 = fadd fast float %289, %285 %291 = select fast i1 %_unwrap33, float %290, float %289 store float %291, float* %".'de", align 4 %292 = select fast i1 %andVal0, float %285, float 0.000000e+00 %293 = load float, float* %"'de23", align 4 %294 = fadd fast float %293, %285 %295 = select fast i1 %andVal0, float %294, float %293 store float %295, float* %"'de23", align 4 %296 = select fast i1 %andVal1, float %285, float 0.000000e+00 %297 = load float, float* %"'de", align 4 %298 = fadd fast float %297, %285 %299 = select fast i1 %andVal1, float %298, float %297 store float %299, float* %"'de", align 4 br i1 %_unwrap33, label %invertL109.i, label %staging invertL129.i: ; preds = %staging59, %invertL136.i %300 = load float, float* %"'de38", align 4 %301 = fneg fast float %300 store float 0.000000e+00, float* %"'de38", align 4 %302 = load float, float* %".unpack.unpack162'de", align 4 %303 = fadd fast float %302, %300 store float %303, float* %".unpack.unpack162'de", align 4 %304 = load float, float* %".unpack.unpack155'de", align 4 %305 = fadd fast float %304, %301 store float %305, float* %".unpack.unpack155'de", align 4 br label %invertL119.i invertL136.i: ; preds = %staging59 %306 = load float, float* %"'de39", align 4 store float 0.000000e+00, float* %"'de39", align 4 %307 = load float, float* %"'de38", align 4 %308 = fadd fast float %307, %306 store float %308, float* %"'de38", align 4 br label %invertL129.i invertL139.i: ; preds = %invertL149.i %309 = load float, float* %".185'de", align 4 %310 = load float, float* %.unpack.unpack155_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !917 %311 = load float, float* %.unpack.unpack162_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !918 %_unwrap40 = fsub float %310, %311 %_unwrap41 = fsub float %311, %310 %_unwrap42 = fadd float %.fca.0.0.1.extract, %_unwrap41 %_unwrap43 = fcmp uge float %_unwrap40, %_unwrap42 %diffe44 = select fast i1 %_unwrap43, float %309, float 0.000000e+00 %312 = load float, float* %".185'de", align 4 %diffe45 = select fast i1 %_unwrap43, float 0.000000e+00, float %312 store float 0.000000e+00, float* %".185'de", align 4 %313 = load float, float* %"'de46", align 4 %314 = fadd fast float %313, %309 %315 = select fast i1 %_unwrap43, float %314, float %313 store float %315, float* %"'de46", align 4 %316 = load float, float* %"'de47", align 4 %317 = fadd fast float %316, %312 %318 = select fast i1 %_unwrap43, float %316, float %317 store float %318, float* %"'de47", align 4 %319 = load float, float* %"'de46", align 4 store float 0.000000e+00, float* %"'de46", align 4 %320 = load float, float* %"'de47", align 4 %321 = fadd fast float %320, %319 store float %321, float* %"'de47", align 4 %322 = load float, float* %"'de47", align 4 %323 = fneg fast float %322 store float 0.000000e+00, float* %"'de47", align 4 %324 = load float, float* %".unpack.unpack162'de", align 4 %325 = fadd fast float %324, %322 store float %325, float* %".unpack.unpack162'de", align 4 %326 = load float, float* %".unpack.unpack155'de", align 4 %327 = fadd fast float %326, %323 store float %327, float* %".unpack.unpack155'de", align 4 br label %invertL119.i invertL149.i: ; preds = %invertL169.i, %invertL159.i %328 = load float, float* %"value_phi3.i'de", align 4 store float 0.000000e+00, float* %"value_phi3.i'de", align 4 %329 = load float, float* %.unpack.unpack155_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !917 %330 = load float, float* %.unpack.unpack162_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !918 %_unwrap50 = fcmp uge float %329, %330 %_unwrap51 = fsub float %330, %329 %_unwrap52 = fsub float %329, %330 %_unwrap53 = fadd float %.fca.0.0.1.extract, %_unwrap52 %_unwrap54 = fcmp uge float %_unwrap51, %_unwrap53 %anot1_55 = xor i1 %_unwrap50, true %andVal056 = and i1 %_unwrap54, %anot1_55 %bnot1_57 = xor i1 %_unwrap54, true %andVal158 = and i1 %bnot1_57, %anot1_55 %331 = select fast i1 %_unwrap50, float %328, float 0.000000e+00 %332 = load float, float* %".185'de", align 4 %333 = fadd fast float %332, %328 %334 = select fast i1 %_unwrap50, float %333, float %332 store float %334, float* %".185'de", align 4 %335 = select fast i1 %andVal056, float %328, float 0.000000e+00 %336 = load float, float* %"'de39", align 4 %337 = fadd fast float %336, %328 %338 = select fast i1 %andVal056, float %337, float %336 store float %338, float* %"'de39", align 4 %339 = select fast i1 %andVal158, float %328, float 0.000000e+00 %340 = load float, float* %"'de38", align 4 %341 = fadd fast float %340, %328 %342 = select fast i1 %andVal158, float %341, float %340 store float %342, float* %"'de38", align 4 br i1 %_unwrap50, label %invertL139.i, label %staging59 invertL159.i: ; preds = %staging123, %invertL166.i %343 = load float, float* %"'de60", align 4 %344 = fneg fast float %343 store float 0.000000e+00, float* %"'de60", align 4 %345 = load float, float* %".unpack.unpack164'de", align 4 %346 = fadd fast float %345, %343 store float %346, float* %".unpack.unpack164'de", align 4 %347 = load float, float* %".unpack.unpack157'de", align 4 %348 = fadd fast float %347, %344 store float %348, float* %".unpack.unpack157'de", align 4 br label %invertL149.i invertL166.i: ; preds = %staging123 %349 = load float, float* %"'de61", align 4 store float 0.000000e+00, float* %"'de61", align 4 %350 = load float, float* %"'de60", align 4 %351 = fadd fast float %350, %349 store float %351, float* %"'de60", align 4 br label %invertL159.i invertL169.i: ; preds = %invertL179.i_phimerge_phimerge_phimerge %352 = load float, float* %".186'de", align 4 %353 = load float, float* %.unpack.unpack157_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !916 %354 = load float, float* %.unpack.unpack164_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !923 %_unwrap62 = fsub float %353, %354 %_unwrap63 = fsub float %354, %353 %_unwrap64 = fadd float %.fca.0.0.2.extract, %_unwrap63 %_unwrap65 = fcmp uge float %_unwrap62, %_unwrap64 %diffe66 = select fast i1 %_unwrap65, float %352, float 0.000000e+00 %355 = load float, float* %".186'de", align 4 %diffe67 = select fast i1 %_unwrap65, float 0.000000e+00, float %355 store float 0.000000e+00, float* %".186'de", align 4 %356 = load float, float* %"'de68", align 4 %357 = fadd fast float %356, %352 %358 = select fast i1 %_unwrap65, float %357, float %356 store float %358, float* %"'de68", align 4 %359 = load float, float* %"'de69", align 4 %360 = fadd fast float %359, %355 %361 = select fast i1 %_unwrap65, float %359, float %360 store float %361, float* %"'de69", align 4 %362 = load float, float* %"'de68", align 4 store float 0.000000e+00, float* %"'de68", align 4 %363 = load float, float* %"'de69", align 4 %364 = fadd fast float %363, %362 store float %364, float* %"'de69", align 4 %365 = load float, float* %"'de69", align 4 %366 = fneg fast float %365 store float 0.000000e+00, float* %"'de69", align 4 %367 = load float, float* %".unpack.unpack164'de", align 4 %368 = fadd fast float %367, %365 store float %368, float* %".unpack.unpack164'de", align 4 %369 = load float, float* %".unpack.unpack157'de", align 4 %370 = fadd fast float %369, %366 store float %370, float* %".unpack.unpack157'de", align 4 br label %invertL149.i invertL179.i: ; preds = %invertL190.i %371 = load float, float* %"'de70", align 4 store float 0.000000e+00, float* %"'de70", align 4 %372 = load float, float* %.unpack.unpack_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !914 %373 = load float, float* %.unpack.unpack160_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !915 %_unwrap71 = fcmp uge float %372, %373 %_unwrap72 = fsub float %373, %372 %_unwrap73 = fsub float %372, %373 %_unwrap74 = fadd float %.fca.0.0.0.extract, %_unwrap73 %_unwrap75 = fcmp uge float %_unwrap72, %_unwrap74 br i1 %_unwrap71, label %invertL179.i_phirc78, label %invertL179.i_phisplt invertL179.i_phisplt: ; preds = %invertL179.i br i1 %_unwrap75, label %invertL179.i_phirc, label %invertL179.i_phirc77 invertL179.i_phirc: ; preds = %invertL179.i_phisplt %_unwrap76 = fsub float %_unwrap72, %.fca.0.0.0.extract br label %invertL179.i_phimerge invertL179.i_phirc77: ; preds = %invertL179.i_phisplt br label %invertL179.i_phimerge invertL179.i_phirc78: ; preds = %invertL179.i %_unwrap79 = fsub float %372, %373 %_unwrap80 = fsub float %373, %372 %_unwrap81 = fadd float %.fca.0.0.0.extract, %_unwrap80 %_unwrap82 = fcmp uge float %_unwrap79, %_unwrap81 %._unwrap = select i1 %_unwrap82, float %_unwrap81, float %_unwrap80 br label %invertL179.i_phimerge invertL179.i_phimerge: ; preds = %invertL179.i_phirc78, %invertL179.i_phirc77, %invertL179.i_phirc %374 = phi fast float [ %_unwrap76, %invertL179.i_phirc ], [ %_unwrap72, %invertL179.i_phirc77 ], [ %._unwrap, %invertL179.i_phirc78 ] %_unwrap83 = fmul float %374, %374 %375 = load float, float* %.unpack.unpack155_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !917 %376 = load float, float* %.unpack.unpack162_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !918 %_unwrap84 = fcmp uge float %375, %376 %_unwrap85 = fsub float %376, %375 %_unwrap86 = fsub float %375, %376 %_unwrap87 = fadd float %.fca.0.0.1.extract, %_unwrap86 %_unwrap88 = fcmp uge float %_unwrap85, %_unwrap87 br i1 %_unwrap84, label %invertL179.i_phimerge_phirc91, label %invertL179.i_phimerge_phisplt invertL179.i_phimerge_phisplt: ; preds = %invertL179.i_phimerge br i1 %_unwrap88, label %invertL179.i_phimerge_phirc, label %invertL179.i_phimerge_phirc90 invertL179.i_phimerge_phirc: ; preds = %invertL179.i_phimerge_phisplt %_unwrap89 = fsub float %_unwrap85, %.fca.0.0.1.extract br label %invertL179.i_phimerge_phimerge invertL179.i_phimerge_phirc90: ; preds = %invertL179.i_phimerge_phisplt br label %invertL179.i_phimerge_phimerge invertL179.i_phimerge_phirc91: ; preds = %invertL179.i_phimerge %_unwrap92 = fsub float %375, %376 %_unwrap93 = fsub float %376, %375 %_unwrap94 = fadd float %.fca.0.0.1.extract, %_unwrap93 %_unwrap95 = fcmp uge float %_unwrap92, %_unwrap94 %.185_unwrap = select i1 %_unwrap95, float %_unwrap94, float %_unwrap93 br label %invertL179.i_phimerge_phimerge invertL179.i_phimerge_phimerge: ; preds = %invertL179.i_phimerge_phirc91, %invertL179.i_phimerge_phirc90, %invertL179.i_phimerge_phirc %377 = phi fast float [ %_unwrap89, %invertL179.i_phimerge_phirc ], [ %_unwrap85, %invertL179.i_phimerge_phirc90 ], [ %.185_unwrap, %invertL179.i_phimerge_phirc91 ] %_unwrap96 = fmul float %377, %377 %_unwrap97 = fadd float %_unwrap83, %_unwrap96 %378 = load float, float* %.unpack.unpack157_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !916 %379 = load float, float* %.unpack.unpack164_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !923 %_unwrap98 = fcmp uge float %378, %379 %_unwrap99 = fsub float %379, %378 %_unwrap100 = fsub float %378, %379 %_unwrap101 = fadd float %.fca.0.0.2.extract, %_unwrap100 %_unwrap102 = fcmp uge float %_unwrap99, %_unwrap101 br i1 %_unwrap98, label %invertL179.i_phimerge_phimerge_phirc105, label %invertL179.i_phimerge_phimerge_phisplt invertL179.i_phimerge_phimerge_phisplt: ; preds = %invertL179.i_phimerge_phimerge br i1 %_unwrap102, label %invertL179.i_phimerge_phimerge_phirc, label %invertL179.i_phimerge_phimerge_phirc104 invertL179.i_phimerge_phimerge_phirc: ; preds = %invertL179.i_phimerge_phimerge_phisplt %_unwrap103 = fsub float %_unwrap99, %.fca.0.0.2.extract br label %invertL179.i_phimerge_phimerge_phimerge invertL179.i_phimerge_phimerge_phirc104: ; preds = %invertL179.i_phimerge_phimerge_phisplt br label %invertL179.i_phimerge_phimerge_phimerge invertL179.i_phimerge_phimerge_phirc105: ; preds = %invertL179.i_phimerge_phimerge %_unwrap106 = fsub float %378, %379 %_unwrap107 = fsub float %379, %378 %_unwrap108 = fadd float %.fca.0.0.2.extract, %_unwrap107 %_unwrap109 = fcmp uge float %_unwrap106, %_unwrap108 %.186_unwrap = select i1 %_unwrap109, float %_unwrap108, float %_unwrap107 br label %invertL179.i_phimerge_phimerge_phimerge invertL179.i_phimerge_phimerge_phimerge: ; preds = %invertL179.i_phimerge_phimerge_phirc105, %invertL179.i_phimerge_phimerge_phirc104, %invertL179.i_phimerge_phimerge_phirc %380 = phi fast float [ %_unwrap103, %invertL179.i_phimerge_phimerge_phirc ], [ %_unwrap99, %invertL179.i_phimerge_phimerge_phirc104 ], [ %.186_unwrap, %invertL179.i_phimerge_phimerge_phirc105 ] %_unwrap110 = fmul float %380, %380 %_unwrap111 = fadd float %_unwrap97, %_unwrap110 %381 = call fast float @__nv_sqrtf(float %_unwrap111), !dbg !943 %382 = fmul fast float 5.000000e-01, %371 %383 = fdiv fast float %382, %381 %384 = fcmp fast oeq float %_unwrap111, 0.000000e+00 %385 = select fast i1 %384, float 0.000000e+00, float %383 %386 = load float, float* %"'de112", align 4 %387 = fadd fast float %386, %383 %388 = select fast i1 %384, float %386, float %387 store float %388, float* %"'de112", align 4 %389 = load float, float* %"'de112", align 4 store float 0.000000e+00, float* %"'de112", align 4 %390 = load float, float* %"'de113", align 4 %391 = fadd fast float %390, %389 store float %391, float* %"'de113", align 4 %392 = load float, float* %"'de114", align 4 %393 = fadd fast float %392, %389 store float %393, float* %"'de114", align 4 %394 = load float, float* %"'de114", align 4 %m0diffevalue_phi4.i = fmul fast float %394, %380 %m1diffevalue_phi4.i = fmul fast float %394, %380 store float 0.000000e+00, float* %"'de114", align 4 %395 = load float, float* %"value_phi4.i'de", align 4 %396 = fadd fast float %395, %m0diffevalue_phi4.i store float %396, float* %"value_phi4.i'de", align 4 %397 = load float, float* %"value_phi4.i'de", align 4 %398 = fadd fast float %397, %m1diffevalue_phi4.i store float %398, float* %"value_phi4.i'de", align 4 %399 = load float, float* %"'de113", align 4 store float 0.000000e+00, float* %"'de113", align 4 %400 = load float, float* %"'de115", align 4 %401 = fadd fast float %400, %399 store float %401, float* %"'de115", align 4 %402 = load float, float* %"'de116", align 4 %403 = fadd fast float %402, %399 store float %403, float* %"'de116", align 4 %404 = load float, float* %"'de116", align 4 %m0diffevalue_phi3.i = fmul fast float %404, %377 %m1diffevalue_phi3.i = fmul fast float %404, %377 store float 0.000000e+00, float* %"'de116", align 4 %405 = load float, float* %"value_phi3.i'de", align 4 %406 = fadd fast float %405, %m0diffevalue_phi3.i store float %406, float* %"value_phi3.i'de", align 4 %407 = load float, float* %"value_phi3.i'de", align 4 %408 = fadd fast float %407, %m1diffevalue_phi3.i store float %408, float* %"value_phi3.i'de", align 4 %409 = load float, float* %"'de115", align 4 %m0diffevalue_phi.i = fmul fast float %409, %374 %m1diffevalue_phi.i = fmul fast float %409, %374 store float 0.000000e+00, float* %"'de115", align 4 %410 = load float, float* %"value_phi.i'de", align 4 %411 = fadd fast float %410, %m0diffevalue_phi.i store float %411, float* %"value_phi.i'de", align 4 %412 = load float, float* %"value_phi.i'de", align 4 %413 = fadd fast float %412, %m1diffevalue_phi.i store float %413, float* %"value_phi.i'de", align 4 %414 = load float, float* %"value_phi4.i'de", align 4 store float 0.000000e+00, float* %"value_phi4.i'de", align 4 %anot1_119 = xor i1 %_unwrap98, true %andVal0120 = and i1 %_unwrap102, %anot1_119 %bnot1_121 = xor i1 %_unwrap102, true %andVal1122 = and i1 %bnot1_121, %anot1_119 %415 = select fast i1 %_unwrap98, float %414, float 0.000000e+00 %416 = load float, float* %".186'de", align 4 %417 = fadd fast float %416, %414 %418 = select fast i1 %_unwrap98, float %417, float %416 store float %418, float* %".186'de", align 4 %419 = select fast i1 %andVal0120, float %414, float 0.000000e+00 %420 = load float, float* %"'de61", align 4 %421 = fadd fast float %420, %414 %422 = select fast i1 %andVal0120, float %421, float %420 store float %422, float* %"'de61", align 4 %423 = select fast i1 %andVal1122, float %414, float 0.000000e+00 %424 = load float, float* %"'de60", align 4 %425 = fadd fast float %424, %414 %426 = select fast i1 %andVal1122, float %425, float %424 store float %426, float* %"'de60", align 4 br i1 %_unwrap98, label %invertL169.i, label %staging123 invertL190.i: ; No predecessors! br label %invertL179.i invertL197.i: ; No predecessors! %427 = load float, float* %"'de124", align 4 %428 = load i1, i1* %.not170_cache, align 1, !invariant.group !954 %429 = load float, float* %.unpack.unpack_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !914 %430 = load float, float* %.unpack.unpack160_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !915 %_unwrap125 = fcmp uge float %429, %430 %_unwrap126 = fsub float %430, %429 %_unwrap127 = fsub float %429, %430 %_unwrap128 = fadd float %.fca.0.0.0.extract, %_unwrap127 %_unwrap129 = fcmp uge float %_unwrap126, %_unwrap128 br i1 %_unwrap125, label %invertL197.i_phirc132, label %invertL197.i_phisplt invertL197.i_phisplt: ; preds = %invertL197.i br i1 %_unwrap129, label %invertL197.i_phirc, label %invertL197.i_phirc131 invertL197.i_phirc: ; preds = %invertL197.i_phisplt %_unwrap130 = fsub float %_unwrap126, %.fca.0.0.0.extract br label %invertL197.i_phimerge invertL197.i_phirc131: ; preds = %invertL197.i_phisplt br label %invertL197.i_phimerge invertL197.i_phirc132: ; preds = %invertL197.i %_unwrap133 = fsub float %429, %430 %_unwrap134 = fsub float %430, %429 %_unwrap135 = fadd float %.fca.0.0.0.extract, %_unwrap134 %_unwrap136 = fcmp uge float %_unwrap133, %_unwrap135 %._unwrap137 = select i1 %_unwrap136, float %_unwrap135, float %_unwrap134 br label %invertL197.i_phimerge invertL197.i_phimerge: ; preds = %invertL197.i_phirc132, %invertL197.i_phirc131, %invertL197.i_phirc %431 = phi fast float [ %_unwrap130, %invertL197.i_phirc ], [ %_unwrap126, %invertL197.i_phirc131 ], [ %._unwrap137, %invertL197.i_phirc132 ] %432 = call float @llvm.fabs.f32(float %431) #146, !dbg !948 %433 = call float @llvm.nvvm.fabs.ftz.f(float %431) #147, !dbg !948 %.0.i35.i_unwrap = select i1 %428, float %432, float %433 %434 = load i1, i1* %.not171_cache, align 1, !invariant.group !958 %435 = load float, float* %.unpack.unpack155_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !917 %436 = load float, float* %.unpack.unpack162_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !918 %_unwrap138 = fcmp uge float %435, %436 %_unwrap139 = fsub float %436, %435 %_unwrap140 = fsub float %435, %436 %_unwrap141 = fadd float %.fca.0.0.1.extract, %_unwrap140 %_unwrap142 = fcmp uge float %_unwrap139, %_unwrap141 br i1 %_unwrap138, label %invertL197.i_phimerge_phirc145, label %invertL197.i_phimerge_phisplt invertL197.i_phimerge_phisplt: ; preds = %invertL197.i_phimerge br i1 %_unwrap142, label %invertL197.i_phimerge_phirc, label %invertL197.i_phimerge_phirc144 invertL197.i_phimerge_phirc: ; preds = %invertL197.i_phimerge_phisplt %_unwrap143 = fsub float %_unwrap139, %.fca.0.0.1.extract br label %invertL197.i_phimerge_phimerge invertL197.i_phimerge_phirc144: ; preds = %invertL197.i_phimerge_phisplt br label %invertL197.i_phimerge_phimerge invertL197.i_phimerge_phirc145: ; preds = %invertL197.i_phimerge %_unwrap146 = fsub float %435, %436 %_unwrap147 = fsub float %436, %435 %_unwrap148 = fadd float %.fca.0.0.1.extract, %_unwrap147 %_unwrap149 = fcmp uge float %_unwrap146, %_unwrap148 %.185_unwrap150 = select i1 %_unwrap149, float %_unwrap148, float %_unwrap147 br label %invertL197.i_phimerge_phimerge invertL197.i_phimerge_phimerge: ; preds = %invertL197.i_phimerge_phirc145, %invertL197.i_phimerge_phirc144, %invertL197.i_phimerge_phirc %437 = phi fast float [ %_unwrap143, %invertL197.i_phimerge_phirc ], [ %_unwrap139, %invertL197.i_phimerge_phirc144 ], [ %.185_unwrap150, %invertL197.i_phimerge_phirc145 ] %438 = call float @llvm.fabs.f32(float %437) #146, !dbg !955 %439 = call float @llvm.nvvm.fabs.ftz.f(float %437) #147, !dbg !955 %.0.i41.i_unwrap = select i1 %434, float %438, float %439 %.inv_unwrap = fcmp olt float %.0.i35.i_unwrap, %.0.i41.i_unwrap %_unwrap151 = select i1 %.inv_unwrap, float %.0.i41.i_unwrap, float %.0.i35.i_unwrap %440 = load i1, i1* %.not171.1_cache, align 1, !invariant.group !961 %441 = load float, float* %.unpack.unpack157_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !916 %442 = load float, float* %.unpack.unpack164_cache, align 4, !dbg !908, !tbaa !216, !alias.scope !909, !noalias !912, !invariant.group !923 %_unwrap152 = fcmp uge float %441, %442 %_unwrap153 = fsub float %442, %441 %_unwrap154 = fsub float %441, %442 %_unwrap155 = fadd float %.fca.0.0.2.extract, %_unwrap154 %_unwrap156 = fcmp uge float %_unwrap153, %_unwrap155 br i1 %_unwrap152, label %invertL197.i_phimerge_phimerge_phirc159, label %invertL197.i_phimerge_phimerge_phisplt invertL197.i_phimerge_phimerge_phisplt: ; preds = %invertL197.i_phimerge_phimerge br i1 %_unwrap156, label %invertL197.i_phimerge_phimerge_phirc, label %invertL197.i_phimerge_phimerge_phirc158 invertL197.i_phimerge_phimerge_phirc: ; preds = %invertL197.i_phimerge_phimerge_phisplt %_unwrap157 = fsub float %_unwrap153, %.fca.0.0.2.extract br label %invertL197.i_phimerge_phimerge_phimerge invertL197.i_phimerge_phimerge_phirc158: ; preds = %invertL197.i_phimerge_phimerge_phisplt br label %invertL197.i_phimerge_phimerge_phimerge invertL197.i_phimerge_phimerge_phirc159: ; preds = %invertL197.i_phimerge_phimerge %_unwrap160 = fsub float %441, %442 %_unwrap161 = fsub float %442, %441 %_unwrap162 = fadd float %.fca.0.0.2.extract, %_unwrap161 %_unwrap163 = fcmp uge float %_unwrap160, %_unwrap162 %.186_unwrap164 = select i1 %_unwrap163, float %_unwrap162, float %_unwrap161 br label %invertL197.i_phimerge_phimerge_phimerge invertL197.i_phimerge_phimerge_phimerge: ; preds = %invertL197.i_phimerge_phimerge_phirc159, %invertL197.i_phimerge_phimerge_phirc158, %invertL197.i_phimerge_phimerge_phirc %443 = phi fast float [ %_unwrap157, %invertL197.i_phimerge_phimerge_phirc ], [ %_unwrap153, %invertL197.i_phimerge_phimerge_phirc158 ], [ %.186_unwrap164, %invertL197.i_phimerge_phimerge_phirc159 ] %444 = call float @llvm.fabs.f32(float %443) #146, !dbg !955 %445 = call float @llvm.nvvm.fabs.ftz.f(float %443) #147, !dbg !955 %.0.i41.i.1_unwrap = select i1 %440, float %444, float %445 %.inv.1_unwrap = fcmp olt float %_unwrap151, %.0.i41.i.1_unwrap %diffe.0.i41.i.1 = select fast i1 %.inv.1_unwrap, float %427, float 0.000000e+00 %446 = load float, float* %"'de124", align 4 %diffe165 = select fast i1 %.inv.1_unwrap, float 0.000000e+00, float %446 store float 0.000000e+00, float* %"'de124", align 4 %447 = load float, float* %".0.i41.i.1'de", align 4 %448 = fadd fast float %447, %427 %449 = select fast i1 %.inv.1_unwrap, float %448, float %447 store float %449, float* %".0.i41.i.1'de", align 4 %450 = load float, float* %"'de166", align 4 %451 = fadd fast float %450, %446 %452 = select fast i1 %.inv.1_unwrap, float %450, float %451 store float %452, float* %"'de166", align 4 %453 = load float, float* %".0.i41.i.1'de", align 4 %diffe167 = select fast i1 %440, float %453, float 0.000000e+00 %454 = load float, float* %".0.i41.i.1'de", align 4 %diffe168 = select fast i1 %440, float 0.000000e+00, float %454 store float 0.000000e+00, float* %".0.i41.i.1'de", align 4 %455 = load float, float* %"'de169", align 4 %456 = fadd fast float %455, %453 %457 = select fast i1 %440, float %456, float %455 store float %457, float* %"'de169", align 4 %458 = load float, float* %"'de170", align 4 %459 = fadd fast float %458, %454 %460 = select fast i1 %440, float %458, float %459 store float %460, float* %"'de170", align 4 %461 = load float, float* %"'de169", align 4 store float 0.000000e+00, float* %"'de169", align 4 %462 = fcmp fast olt float %443, 0.000000e+00 %463 = select fast i1 %462, float -1.000000e+00, float 1.000000e+00 %464 = fmul fast float %463, %461 %465 = load float, float* %"value_phi4.i'de", align 4 %466 = fadd fast float %465, %464 store float %466, float* %"value_phi4.i'de", align 4 %467 = load float, float* %"'de170", align 4 store float 0.000000e+00, float* %"'de170", align 4 %468 = fcmp fast olt float %443, 0.000000e+00 %469 = select fast i1 %468, float -1.000000e+00, float 1.000000e+00 %470 = fmul fast float %469, %467 %471 = load float, float* %"value_phi4.i'de", align 4 %472 = fadd fast float %471, %470 store float %472, float* %"value_phi4.i'de", align 4 invertL221.i: ; No predecessors! invertL223.i: ; No predecessors! invertL236.i: ; No predecessors! invertL245.i: ; No predecessors! invertL302.i: ; No predecessors! invertL523.i.us: ; No predecessors! invertL615.i.us: ; No predecessors! invertL523.i.us.1: ; No predecessors! invertL523.i.us.2: ; No predecessors! invertL524.i: ; No predecessors! invertL616.i: ; No predecessors! invertfail.i: ; No predecessors! invertpass.i: ; No predecessors! invertoksrem.i: ; No predecessors! invertafter_srem.i: ; preds = %invertL50.i_phimerge invertjulia_gbsa_force_2_kernel__25091_inner.exit: ; preds = %julia_gbsa_force_2_kernel__25091_inner.exit staging: ; preds = %invertL119.i br i1 %_unwrap37, label %invertL106.i, label %invertL99.i staging59: ; preds = %invertL149.i br i1 %_unwrap54, label %invertL136.i, label %invertL129.i staging123: ; preds = %invertL179.i_phimerge_phimerge_phimerge br i1 %_unwrap102, label %invertL166.i, label %invertL159.i } attributes #0 = { nofree readnone "enzyme_inactive" "enzyme_shouldrecompute" "enzymejl_world"="33717" } attributes #1 = { "enzymejl_world"="33717" } attributes #2 = { argmemonly nofree nounwind willreturn "enzymejl_world"="33717" } attributes #3 = { nounwind readnone speculatable "enzymejl_world"="33717" } attributes #4 = { argmemonly nounwind readonly "enzymejl_world"="33717" } attributes #5 = { noinline noreturn "enzymejl_world"="33717" "frame-pointer"="all" "probe-stack"="inline-asm" } attributes #6 = { nofree nosync nounwind readnone speculatable willreturn "enzymejl_world"="33717" } attributes #7 = { "disable-tail-calls"="false" "enzymejl_world"="33717" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #8 = { nofree nosync nounwind readnone willreturn "enzymejl_world"="33717" } attributes #9 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="exp2f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp2.f32" "implements2"="exp2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #10 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="sqrtf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sqrt.f32" "implements2"="sqrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #11 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sqrt" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sqrt.f64" "implements2"="sqrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #12 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="isinff" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.isinf.f32" "implements2"="isinff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #13 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="sinf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sin.f32" "implements2"="sinf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #14 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="cosf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cos.f32" "implements2"="cosf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #15 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="tanf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tan.f32" "implements2"="tanf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #16 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="log2f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log2.f32" "implements2"="log2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #17 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="expf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp.f32" "implements2"="expf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #18 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="exp10f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp10.f32" "implements2"="exp10f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #19 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="coshf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cosh.f32" "implements2"="coshf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #20 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="sinhf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sinh.f32" "implements2"="sinhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #21 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="tanhf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tanh.f32" "implements2"="tanhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #22 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="atan2f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atan2.f32" "implements2"="atan2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #23 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="atanf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atan.f32" "implements2"="atanf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #24 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="asinf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.asin.f32" "implements2"="asinf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #25 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="acosf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.acos.f32" "implements2"="acosf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #26 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="logf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log.f32" "implements2"="logf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #27 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="log10f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log10.f32" "implements2"="log10f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #28 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="log1pf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log1p.f32" "implements2"="log1pf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #29 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="acoshf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.acosh.f32" "implements2"="acoshf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #30 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="asinhf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.asinh.f32" "implements2"="asinhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #31 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="atanhf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atanh.f32" "implements2"="atanhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #32 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="expm1f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.expm1.f32" "implements2"="expm1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #33 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="hypotf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.hypot.f32" "implements2"="hypotf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #34 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rhypotf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rhypot.f32" "implements2"="rhypotf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #35 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="norm3df" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm3d.f32" "implements2"="norm3df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #36 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rnorm3df" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm3d.f32" "implements2"="rnorm3df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #37 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="norm4df" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm4d.f32" "implements2"="norm4df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #38 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rnorm4df" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm4d.f32" "implements2"="rnorm4df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #39 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="normf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm.f32" "implements2"="normf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #40 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rnormf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm.f32" "implements2"="rnormf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #41 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="cbrtf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cbrt.f32" "implements2"="cbrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #42 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rcbrtf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rcbrt.f32" "implements2"="rcbrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #43 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="j0f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.j0.f32" "implements2"="j0f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #44 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="j1f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.j1.f32" "implements2"="j1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #45 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="y0f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.y0.f32" "implements2"="y0f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #46 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="y1f" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.y1.f32" "implements2"="y1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #47 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="ynf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.yn.f32" "implements2"="ynf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #48 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="jnf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.jn.f32" "implements2"="jnf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #49 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erff" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erf.f32" "implements2"="erff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #50 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfinvf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfinv.f32" "implements2"="erfinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #51 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfcf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfc.f32" "implements2"="erfcf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #52 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfcxf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfcx.f32" "implements2"="erfcxf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #53 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfcinvf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfcinv.f32" "implements2"="erfcinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #54 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="normcdfinvf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.normcdfinv.f32" "implements2"="normcdfinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #55 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="normcdff" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.normcdf.f32" "implements2"="normcdff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #56 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="lgammaf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.lgamma.f32" "implements2"="lgammaf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #57 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="ldexpf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.ldexp.f32" "implements2"="ldexpf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #58 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="scalbnf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.scalbn.f32" "implements2"="scalbnf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #59 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="frexpf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.frexp.f32" "implements2"="frexpf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #60 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="modff" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.modf.f32" "implements2"="modff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #61 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="fmodf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.fmod.f32" "implements2"="fmodf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #62 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="remainderf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.remainder.f32" "implements2"="remainderf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #63 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="remquof" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.remquo.f32" "implements2"="remquof" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #64 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="powif" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.powi.f32" "implements2"="powif" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #65 = { nofree noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="powi" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.powi.f64" "implements2"="powi" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #66 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="powf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.pow.f32" "implements2"="powf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #67 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="tgammaf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tgamma.f32" "implements2"="tgammaf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #68 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="roundf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.round.f32" "implements2"="roundf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #69 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="fdimf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.fdim.f32" "implements2"="fdimf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #70 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="ilogbf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.ilogb.f32" "implements2"="ilogbf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #71 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="logbf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.logb.f32" "implements2"="logbf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #72 = { argmemonly noinline nosync nounwind "disable-tail-calls"="false" "enzymejl_world"="33717" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #73 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="sin" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sin.f64" "implements2"="sin" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #74 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="cos" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cos.f64" "implements2"="cos" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #75 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="tan" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tan.f64" "implements2"="tan" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #76 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log.f64" "implements2"="log" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #77 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log2" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log2.f64" "implements2"="log2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #78 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log10" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log10.f64" "implements2"="log10" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #79 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log1p" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.log1p.f64" "implements2"="log1p" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #80 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="exp" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp.f64" "implements2"="exp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #81 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="exp2" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp2.f64" "implements2"="exp2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #82 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="exp10" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.exp10.f64" "implements2"="exp10" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #83 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="expm1" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.expm1.f64" "implements2"="expm1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #84 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="cosh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cosh.f64" "implements2"="cosh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #85 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sinh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.sinh.f64" "implements2"="sinh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #86 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="tanh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tanh.f64" "implements2"="tanh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #87 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atan2" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atan2.f64" "implements2"="atan2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #88 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atan" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atan.f64" "implements2"="atan" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #89 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="asin" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.asin.f64" "implements2"="asin" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #90 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="acos" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.acos.f64" "implements2"="acos" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #91 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="acosh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.acosh.f64" "implements2"="acosh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #92 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="asinh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.asinh.f64" "implements2"="asinh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #93 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atanh" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.atanh.f64" "implements2"="atanh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #94 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="hypot" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.hypot.f64" "implements2"="hypot" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #95 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rhypot" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rhypot.f64" "implements2"="rhypot" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #96 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="norm3d" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm3d.f64" "implements2"="norm3d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #97 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rnorm3d" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm3d.f64" "implements2"="rnorm3d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #98 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="norm4d" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm4d.f64" "implements2"="norm4d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #99 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rnorm4d" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm4d.f64" "implements2"="rnorm4d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #100 = { argmemonly noinline nosync nounwind readonly "disable-tail-calls"="false" "enzyme_math"="norm" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.norm.f64" "implements2"="norm" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #101 = { argmemonly nofree noinline nosync nounwind readonly "disable-tail-calls"="false" "enzyme_math"="rnorm" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rnorm.f64" "implements2"="rnorm" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #102 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="cbrt" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.cbrt.f64" "implements2"="cbrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #103 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="rcbrt" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.rcbrt.f64" "implements2"="rcbrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #104 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="pow" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.pow.f64" "implements2"="pow" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #105 = { noinline nounwind "disable-tail-calls"="false" "enzymejl_world"="33717" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #106 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="j0" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.j0.f64" "implements2"="j0" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #107 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="j1" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.j1.f64" "implements2"="j1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #108 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="y0" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.y0.f64" "implements2"="y0" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #109 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="y1" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.y1.f64" "implements2"="y1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #110 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="yn" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.yn.f64" "implements2"="yn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #111 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="jn" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.jn.f64" "implements2"="jn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #112 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erf.f64" "implements2"="erf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #113 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfinv" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfinv.f64" "implements2"="erfinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #114 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="erfcinv" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfcinv.f64" "implements2"="erfcinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #115 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="normcdfinv" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.normcdfinv.f64" "implements2"="normcdfinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #116 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erfc" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfc.f64" "implements2"="erfc" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #117 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="erfcx" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.erfcx.f64" "implements2"="erfcx" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #118 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="normcdf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.normcdf.f64" "implements2"="normcdf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #119 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="tgamma" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.tgamma.f64" "implements2"="tgamma" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #120 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="lgamma" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.lgamma.f64" "implements2"="lgamma" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #121 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzymejl_world"="33717" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #122 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="ldexp" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.ldexp.f64" "implements2"="ldexp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #123 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="scalbn" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.scalbn.f64" "implements2"="scalbn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #124 = { argmemonly nofree noinline nosync nounwind willreturn writeonly "disable-tail-calls"="false" "enzyme_math"="frexp" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.frexp.f64" "implements2"="frexp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #125 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="modf" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.modf.f64" "implements2"="modf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #126 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="fmod" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.fmod.f64" "implements2"="fmod" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #127 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="remainder" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.remainder.f64" "implements2"="remainder" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #128 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="remquo" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.remquo.f64" "implements2"="remquo" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #129 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="round" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.round.f64" "implements2"="round" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #130 = { noinline nounwind "disable-tail-calls"="false" "enzyme_math"="ilogb" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.ilogb.f64" "implements2"="ilogb" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #131 = { nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="logb" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.logb.f64" "implements2"="logb" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #132 = { noinline nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="fdim" "enzymejl_world"="33717" "frame-pointer"="all" "implements"="llvm.fdim.f64" "implements2"="fdim" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #133 = { nofree "enzyme_inactive" "enzymejl_world"="33717" "probe-stack"="inline-asm" } attributes #134 = { readnone "enzymejl_world"="33717" } attributes #135 = { nounwind "enzymejl_world"="33717" } attributes #136 = { argmemonly nofree nosync nounwind willreturn "enzymejl_world"="33717" } attributes #137 = { "enzymejl_world"="33717" "probe-stack"="inline-asm" } attributes #138 = { mustprogress willreturn "enzymejl_world"="33717" "probe-stack"="inline-asm" } attributes #139 = { nounwind } attributes #140 = { readnone willreturn } attributes #141 = { nounwind readnone } attributes #142 = { nounwind readnone willreturn } attributes #143 = { nofree nosync nounwind readnone willreturn } attributes #144 = { willreturn } attributes #145 = { noreturn "frame-pointer"="all" "probe-stack"="inline-asm" } attributes #146 = { mustprogress willreturn } attributes #147 = { mustprogress nounwind willreturn } attributes #148 = { mustprogress noreturn willreturn "frame-pointer"="all" "probe-stack"="inline-asm" } !llvm.module.flags = !{!0, !1} !llvm.dbg.cu = !{!2, !4, !6, !7, !8, !9, !10, !11, !12, !15, !16, !17, !19, !20, !21, !22, !23, !24, !25, !26, !27, !28, !29, !30, !31, !32, !33, !34, !35, !36, !37, !38, !39, !40, !41, !42, !44} !llvm.ident = !{!45} !nvvmir.version = !{!46} !nvvm-reflect-ftz = !{!47} !0 = !{i32 2, !"Dwarf Version", i32 4} !1 = !{i32 2, !"Debug Info Version", i32 3} !2 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !3 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/quirks.jl", directory: ".") !4 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !5, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !5 = !DIFile(filename: "/home/jgreener/.julia/dev/Molly/src/interactions/implicit_solvent.jl", directory: ".") !6 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !7 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !8 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !9 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !10 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !11 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None) !12 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !13 = !DIFile(filename: "/home/jgreener/.julia/packages/GPUCompiler/YU9ZW/src/runtime.jl", directory: ".") !14 = !{} !15 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !16 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !17 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !18, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !18 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/runtime.jl", directory: ".") !19 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !20 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !21 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !18, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !22 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !23 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !24 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !18, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !25 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !26 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !18, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !27 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !28 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !29 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !30 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !31 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !32 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !33 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !34 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !35 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !36 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !37 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !38 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !39 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !40 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !41 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !13, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !42 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !43, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !43 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/intrinsics/memory_dynamic.jl", directory: ".") !44 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !18, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !14, nameTableKind: None) !45 = !{!"clang version 3.8.0 (tags/RELEASE_380/final)"} !46 = !{i32 2, i32 0} !47 = !{i32 1} !48 = distinct !DISubprogram(name: "#throw_boundserror", linkageName: "julia_#throw_boundserror_25134", scope: null, file: !3, line: 40, type: !49, scopeLine: 40, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !49 = !DISubroutineType(types: !14) !50 = !DILocation(line: 40, scope: !51, inlinedAt: !53) !51 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !52, file: !52, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !52 = !DIFile(filename: "/home/jgreener/.julia/packages/LLVM/TLGyi/src/interop/base.jl", directory: ".") !53 = !DILocation(line: 38, scope: !54, inlinedAt: !56) !54 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !55 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/intrinsics/output.jl", directory: ".") !56 = !DILocation(line: 38, scope: !57, inlinedAt: !58) !57 = distinct !DISubprogram(name: "_cuprintf;", linkageName: "_cuprintf", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !58 = !DILocation(line: 173, scope: !54, inlinedAt: !59) !59 = !DILocation(line: 0, scope: !60, inlinedAt: !62) !60 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !61, file: !61, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !61 = !DIFile(filename: "none", directory: ".") !62 = !DILocation(line: 0, scope: !63, inlinedAt: !64) !63 = distinct !DISubprogram(name: "_cuprint;", linkageName: "_cuprint", scope: !61, file: !61, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !14) !64 = !DILocation(line: 222, scope: !54, inlinedAt: !65) !65 = !DILocation(line: 3, scope: !48) !66 = !DILocation(line: 4, scope: !48) !67 = !{i32 32878, i32 32882, i32 32927, i32 32972} !68 = !{!69} !69 = distinct !{!69, !70, !"na_addr13"} !70 = distinct !{!70, !"addr13"} !71 = distinct !{!71, !72} !72 = !{!"llvm.loop.unroll.count", i32 1} !73 = !{i32 21046} !74 = !{i32 9032} !75 = !{i32 9109} !76 = !{i32 0, i32 33} !77 = !{i32 156190, i32 156194, i32 156263, i32 156311, i32 156359, i32 156407, i32 156455, i32 156503, i32 156551, i32 156599, i32 156647, i32 156695, i32 156743, i32 156791, i32 156839, i32 156887, i32 156935} !78 = distinct !{!78, !72} !79 = !{i32 153924, i32 153928, i32 153999, i32 154041, i32 154083, i32 154125, i32 154167, i32 154209, i32 154251, i32 154293, i32 154335, i32 154377, i32 154419} !80 = !{i64 0, i64 65} !81 = !{i32 154965, i32 154969, i32 155028, i32 155075, i32 155122, i32 155169, i32 155216, i32 155263, i32 155310, i32 155357, i32 155404, i32 155451, i32 155498, i32 155545, i32 155592, i32 155639} !82 = !{i32 152726, i32 152730, i32 152801, i32 152843, i32 152885, i32 152927, i32 152969, i32 153011, i32 153053, i32 153095, i32 153137, i32 153179, i32 153221} !83 = !{i32 150120} !84 = !{i32 149741} !85 = distinct !{!85, !86} !86 = !{!"llvm.loop.unroll.disable"} !87 = distinct !{!87, !86} !88 = distinct !{!88, !86} !89 = distinct !{!89, !86} !90 = !{i32 285845} !91 = distinct !DISubprogram(name: "report_exception", linkageName: "julia_report_exception_21845", scope: null, file: !18, line: 51, type: !49, scopeLine: 51, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !17, retainedNodes: !14) !92 = !DILocation(line: 40, scope: !93, inlinedAt: !94) !93 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !52, file: !52, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !17, retainedNodes: !14) !94 = !DILocation(line: 38, scope: !95, inlinedAt: !96) !95 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !17, retainedNodes: !14) !96 = !DILocation(line: 38, scope: !97, inlinedAt: !98) !97 = distinct !DISubprogram(name: "_cuprintf;", linkageName: "_cuprintf", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !17, retainedNodes: !14) !98 = !DILocation(line: 52, scope: !91) !99 = !DILocation(line: 56, scope: !91) !100 = distinct !DISubprogram(name: "signal_exception", linkageName: "julia_signal_exception_21886", scope: null, file: !18, line: 37, type: !49, scopeLine: 37, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !101 = !DILocation(line: 40, scope: !102, inlinedAt: !103) !102 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !52, file: !52, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !103 = !DILocation(line: 0, scope: !104, inlinedAt: !105) !104 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !61, file: !61, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !105 = !DILocation(line: 0, scope: !106, inlinedAt: !107) !106 = distinct !DISubprogram(name: "kernel_state;", linkageName: "kernel_state", scope: !61, file: !61, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !107 = !DILocation(line: 35, scope: !108, inlinedAt: !109) !108 = distinct !DISubprogram(name: "exception_flag;", linkageName: "exception_flag", scope: !18, file: !18, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !109 = !DILocation(line: 38, scope: !100) !110 = !DILocation(line: 39, scope: !100) !111 = !DILocation(line: 118, scope: !112, inlinedAt: !114) !112 = distinct !DISubprogram(name: "unsafe_store!;", linkageName: "unsafe_store!", scope: !113, file: !113, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !113 = !DIFile(filename: "pointer.jl", directory: ".") !114 = !DILocation(line: 118, scope: !112, inlinedAt: !115) !115 = !DILocation(line: 40, scope: !100) !116 = !{!117, !117, i64 0} !117 = !{!"jtbaa_data", !118, i64 0} !118 = !{!"jtbaa", !119, i64 0} !119 = !{!"jtbaa"} !120 = !DILocation(line: 121, scope: !121, inlinedAt: !123) !121 = distinct !DISubprogram(name: "threadfence_system;", linkageName: "threadfence_system", scope: !122, file: !122, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !122 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/intrinsics/synchronization.jl", directory: ".") !123 = !DILocation(line: 41, scope: !100) !124 = !DILocation(line: 40, scope: !102, inlinedAt: !125) !125 = !DILocation(line: 38, scope: !126, inlinedAt: !127) !126 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !127 = !DILocation(line: 38, scope: !128, inlinedAt: !129) !128 = distinct !DISubprogram(name: "_cuprintf;", linkageName: "_cuprintf", scope: !55, file: !55, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !26, retainedNodes: !14) !129 = !DILocation(line: 43, scope: !100) !130 = !DILocation(line: 48, scope: !100) !131 = distinct !DISubprogram(name: "gbsa_force_2_kernel!", linkageName: "julia_gbsa_force_2_kernel!_25091", scope: null, file: !5, line: 1013, type: !49, scopeLine: 1013, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !132 = !DILocation(line: 0, scope: !131) !133 = !DILocation(line: 88, scope: !134, inlinedAt: !136) !134 = distinct !DISubprogram(name: "*;", linkageName: "*", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !135 = !DIFile(filename: "int.jl", directory: ".") !136 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !139) !137 = distinct !DISubprogram(name: "literal_pow;", linkageName: "literal_pow", scope: !138, file: !138, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !138 = !DIFile(filename: "intfuncs.jl", directory: ".") !139 = distinct !DILocation(line: 1024, scope: !131, inlinedAt: !140) !140 = distinct !DILocation(line: 0, scope: !131) !141 = !DILocation(line: 40, scope: !142, inlinedAt: !143) !142 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !52, file: !52, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !143 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !146) !144 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !145 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/intrinsics/indexing.jl", directory: ".") !146 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !148) !147 = distinct !DISubprogram(name: "_index;", linkageName: "_index", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !148 = distinct !DILocation(line: 56, scope: !149, inlinedAt: !150) !149 = distinct !DISubprogram(name: "blockIdx_x;", linkageName: "blockIdx_x", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !150 = distinct !DILocation(line: 78, scope: !151, inlinedAt: !152) !151 = distinct !DISubprogram(name: "#blockIdx;", linkageName: "#blockIdx", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !152 = distinct !DILocation(line: 1025, scope: !131, inlinedAt: !140) !153 = !{i32 0, i32 2147483646} !154 = !DILocation(line: 86, scope: !155, inlinedAt: !156) !155 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !156 = distinct !DILocation(line: 1042, scope: !155, inlinedAt: !152) !157 = !DILocation(line: 40, scope: !142, inlinedAt: !158) !158 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !159) !159 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !160) !160 = distinct !DILocation(line: 51, scope: !161, inlinedAt: !162) !161 = distinct !DISubprogram(name: "blockDim_x;", linkageName: "blockDim_x", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !162 = distinct !DILocation(line: 85, scope: !163, inlinedAt: !152) !163 = distinct !DISubprogram(name: "#blockDim;", linkageName: "#blockDim", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !164 = !{i32 1, i32 1024} !165 = !DILocation(line: 523, scope: !166, inlinedAt: !167) !166 = distinct !DISubprogram(name: "rem;", linkageName: "rem", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !167 = distinct !DILocation(line: 1040, scope: !134, inlinedAt: !152) !168 = !DILocation(line: 88, scope: !134, inlinedAt: !169) !169 = distinct !DILocation(line: 1042, scope: !134, inlinedAt: !152) !170 = !DILocation(line: 40, scope: !142, inlinedAt: !171) !171 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !172) !172 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !173) !173 = distinct !DILocation(line: 46, scope: !174, inlinedAt: !175) !174 = distinct !DISubprogram(name: "threadIdx_x;", linkageName: "threadIdx_x", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !175 = distinct !DILocation(line: 92, scope: !176, inlinedAt: !152) !176 = distinct !DISubprogram(name: "#threadIdx;", linkageName: "#threadIdx", scope: !145, file: !145, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !177 = !{i32 0, i32 1023} !178 = !DILocation(line: 87, scope: !179, inlinedAt: !173) !179 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !180 = !DILocation(line: 523, scope: !166, inlinedAt: !181) !181 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !152) !182 = !DILocation(line: 87, scope: !179, inlinedAt: !183) !183 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !152) !184 = !DILocation(line: 488, scope: !185, inlinedAt: !186) !185 = distinct !DISubprogram(name: "<=;", linkageName: "<=", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !186 = distinct !DILocation(line: 1027, scope: !131, inlinedAt: !140) !187 = !DILocation(line: 1027, scope: !131, inlinedAt: !140) !188 = !DILocation(line: 295, scope: !189, inlinedAt: !190) !189 = distinct !DISubprogram(name: "div;", linkageName: "div", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !190 = distinct !DILocation(line: 308, scope: !191, inlinedAt: !193) !191 = distinct !DISubprogram(name: "div;", linkageName: "div", scope: !192, file: !192, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !192 = !DIFile(filename: "div.jl", directory: ".") !193 = distinct !DILocation(line: 363, scope: !191, inlinedAt: !194) !194 = distinct !DILocation(line: 320, scope: !195, inlinedAt: !196) !195 = distinct !DISubprogram(name: "cld;", linkageName: "cld", scope: !192, file: !192, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !196 = distinct !DILocation(line: 1028, scope: !131, inlinedAt: !140) !197 = !DILocation(line: 86, scope: !155, inlinedAt: !198) !198 = distinct !DILocation(line: 40, scope: !142, inlinedAt: !199) !199 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !202) !200 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !201, file: !201, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !201 = !DIFile(filename: "/home/jgreener/.julia/packages/LLVM/TLGyi/src/interop/pointer.jl", directory: ".") !202 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !204) !203 = distinct !DISubprogram(name: "pointerref;", linkageName: "pointerref", scope: !201, file: !201, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !204 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !206) !205 = distinct !DISubprogram(name: "unsafe_load;", linkageName: "unsafe_load", scope: !201, file: !201, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !206 = distinct !DILocation(line: 52, scope: !207, inlinedAt: !209) !207 = distinct !DISubprogram(name: "unsafe_cached_load;", linkageName: "unsafe_cached_load", scope: !208, file: !208, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !208 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/pointer.jl", directory: ".") !209 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !212) !210 = distinct !DISubprogram(name: "#const_arrayref;", linkageName: "#const_arrayref", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !211 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/array.jl", directory: ".") !212 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !214) !213 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !214 = distinct !DILocation(line: 1031, scope: !131, inlinedAt: !140) !215 = !DILocation(line: 40, scope: !142, inlinedAt: !199) !216 = !{!217, !217, i64 0, i64 0} !217 = !{!"custom_tbaa_addrspace(1)", !218, i64 0} !218 = !{!"custom_tbaa"} !219 = !DILocation(line: 535, scope: !220, inlinedAt: !222) !220 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !221 = !DIFile(filename: "float.jl", directory: ".") !222 = distinct !DILocation(line: 292, scope: !223, inlinedAt: !225) !223 = distinct !DISubprogram(name: "vector_1D;", linkageName: "vector_1D", scope: !224, file: !224, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !224 = !DIFile(filename: "/home/jgreener/.julia/dev/Molly/src/spatial.jl", directory: ".") !225 = distinct !DILocation(line: 313, scope: !226, inlinedAt: !227) !226 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !224, file: !224, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !227 = distinct !DILocation(line: 311, scope: !228, inlinedAt: !214) !228 = distinct !DISubprogram(name: "vector;", linkageName: "vector", scope: !224, file: !224, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !229 = !DILocation(line: 292, scope: !223, inlinedAt: !225) !230 = !DILocation(line: 409, scope: !231, inlinedAt: !232) !231 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !232 = distinct !DILocation(line: 293, scope: !223, inlinedAt: !225) !233 = !DILocation(line: 408, scope: !234, inlinedAt: !232) !234 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !235 = !DILocation(line: 535, scope: !220, inlinedAt: !232) !236 = !DILocation(line: 293, scope: !223, inlinedAt: !225) !237 = !DILocation(line: 409, scope: !231, inlinedAt: !238) !238 = distinct !DILocation(line: 295, scope: !223, inlinedAt: !225) !239 = !DILocation(line: 408, scope: !234, inlinedAt: !238) !240 = !DILocation(line: 535, scope: !220, inlinedAt: !238) !241 = !DILocation(line: 295, scope: !223, inlinedAt: !225) !242 = !DILocation(line: 410, scope: !243, inlinedAt: !244) !243 = distinct !DISubprogram(name: "*;", linkageName: "*", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !244 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !247) !245 = distinct !DISubprogram(name: "abs2;", linkageName: "abs2", scope: !246, file: !246, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !246 = !DIFile(filename: "number.jl", directory: ".") !247 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !250) !248 = distinct !DISubprogram(name: "norm_sqr;", linkageName: "norm_sqr", scope: !249, file: !249, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !249 = !DIFile(filename: "/cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/LinearAlgebra/src/generic.jl", directory: ".") !250 = distinct !DILocation(line: 266, scope: !251, inlinedAt: !253) !251 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !252 = !DIFile(filename: "/home/jgreener/.julia/packages/StaticArrays/jO3cC/src/linalg.jl", directory: ".") !253 = distinct !DILocation(line: 256, scope: !254, inlinedAt: !255) !254 = distinct !DISubprogram(name: "_norm;", linkageName: "_norm", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !255 = distinct !DILocation(line: 255, scope: !256, inlinedAt: !257) !256 = distinct !DISubprogram(name: "norm;", linkageName: "norm", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !257 = distinct !DILocation(line: 1032, scope: !131, inlinedAt: !140) !258 = !DILocation(line: 408, scope: !234, inlinedAt: !250) !259 = !DILocation(line: 223, scope: !260, inlinedAt: !250) !260 = distinct !DISubprogram(name: "#sqrt;", linkageName: "#sqrt", scope: !261, file: !261, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !261 = !DIFile(filename: "/home/jgreener/.julia/dev/CUDA/src/device/intrinsics/math.jl", directory: ".") !262 = !DILocation(line: 535, scope: !220, inlinedAt: !263) !263 = distinct !DILocation(line: 268, scope: !251, inlinedAt: !253) !264 = !DILocation(line: 268, scope: !251, inlinedAt: !253) !265 = !DILocation(line: 189, scope: !266, inlinedAt: !263) !266 = distinct !DISubprogram(name: "#isfinite;", linkageName: "#isfinite", scope: !261, file: !261, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !267 = !DILocation(line: 215, scope: !268, inlinedAt: !269) !268 = distinct !DISubprogram(name: "#abs;", linkageName: "#abs", scope: !261, file: !261, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !269 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !271) !270 = distinct !DISubprogram(name: "maxabs_nested;", linkageName: "maxabs_nested", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !271 = distinct !DILocation(line: 232, scope: !270, inlinedAt: !272) !272 = distinct !DILocation(line: 248, scope: !251, inlinedAt: !273) !273 = distinct !DILocation(line: 240, scope: !274, inlinedAt: !275) !274 = distinct !DISubprogram(name: "_norm_scaled;", linkageName: "_norm_scaled", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !275 = distinct !DILocation(line: 269, scope: !251, inlinedAt: !253) !276 = !DILocation(line: 215, scope: !268, inlinedAt: !277) !277 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !278) !278 = distinct !DILocation(line: 234, scope: !270, inlinedAt: !272) !279 = !DILocation(line: 575, scope: !280, inlinedAt: !282) !280 = distinct !DISubprogram(name: "ifelse;", linkageName: "ifelse", scope: !281, file: !281, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !281 = !DIFile(filename: "essentials.jl", directory: ".") !282 = distinct !DILocation(line: 243, scope: !283, inlinedAt: !278) !283 = distinct !DISubprogram(name: "max_fast;", linkageName: "max_fast", scope: !284, file: !284, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !284 = !DIFile(filename: "fastmath.jl", directory: ".") !285 = !DILocation(line: 533, scope: !286, inlinedAt: !287) !286 = distinct !DISubprogram(name: "==;", linkageName: "==", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !287 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !289) !288 = distinct !DISubprogram(name: "iszero;", linkageName: "iszero", scope: !246, file: !246, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !289 = distinct !DILocation(line: 250, scope: !251, inlinedAt: !273) !290 = !DILocation(line: 250, scope: !251, inlinedAt: !273) !291 = !DILocation(line: 215, scope: !268, inlinedAt: !292) !292 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !294) !293 = distinct !DISubprogram(name: "norm;", linkageName: "norm", scope: !249, file: !249, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !294 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !295) !295 = distinct !DILocation(line: 222, scope: !296, inlinedAt: !289) !296 = distinct !DISubprogram(name: "_init_zero;", linkageName: "_init_zero", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !297 = !DILocation(line: 891, scope: !298, inlinedAt: !300) !298 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !299, file: !299, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !299 = !DIFile(filename: "range.jl", directory: ".") !300 = distinct !DILocation(line: 235, scope: !270, inlinedAt: !272) !301 = !DILocation(line: 411, scope: !302, inlinedAt: !303) !302 = distinct !DISubprogram(name: "/;", linkageName: "/", scope: !221, file: !221, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !303 = distinct !DILocation(line: 251, scope: !251, inlinedAt: !273) !304 = !DILocation(line: 410, scope: !243, inlinedAt: !305) !305 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !306) !306 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !303) !307 = !DILocation(line: 408, scope: !234, inlinedAt: !303) !308 = !DILocation(line: 223, scope: !260, inlinedAt: !303) !309 = !DILocation(line: 410, scope: !243, inlinedAt: !303) !310 = !DILocation(line: 533, scope: !286, inlinedAt: !311) !311 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !312) !312 = distinct !DILocation(line: 1034, scope: !131, inlinedAt: !140) !313 = !DILocation(line: 1034, scope: !131, inlinedAt: !140) !314 = !DILocation(line: 88, scope: !134, inlinedAt: !315) !315 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !317) !316 = distinct !DISubprogram(name: "pointerref_ldg;", linkageName: "pointerref_ldg", scope: !208, file: !208, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !317 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !318) !318 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !319) !319 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !320) !320 = distinct !DILocation(line: 1035, scope: !131, inlinedAt: !140) !321 = !DILocation(line: 114, scope: !322, inlinedAt: !315) !322 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !201, file: !201, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !323 = !DILocation(line: 40, scope: !142, inlinedAt: !324) !324 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !325) !325 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !327) !326 = distinct !DISubprogram(name: "_typed_llvmcall;", linkageName: "_typed_llvmcall", scope: !201, file: !201, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !327 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !328) !328 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !317) !329 = !DILocation(line: 408, scope: !234, inlinedAt: !330) !330 = distinct !DILocation(line: 1036, scope: !131, inlinedAt: !140) !331 = !DILocation(line: 535, scope: !220, inlinedAt: !332) !332 = distinct !DILocation(line: 1037, scope: !131, inlinedAt: !140) !333 = !DILocation(line: 1037, scope: !131, inlinedAt: !140) !334 = !DILocation(line: 409, scope: !231, inlinedAt: !335) !335 = distinct !DILocation(line: 1038, scope: !131, inlinedAt: !140) !336 = !DILocation(line: 215, scope: !268, inlinedAt: !335) !337 = !DILocation(line: 292, scope: !338, inlinedAt: !335) !338 = distinct !DISubprogram(name: "#max;", linkageName: "#max", scope: !261, file: !261, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !339 = !DILocation(line: 411, scope: !302, inlinedAt: !340) !340 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !335) !341 = distinct !DISubprogram(name: "inv;", linkageName: "inv", scope: !246, file: !246, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !342 = !DILocation(line: 411, scope: !302, inlinedAt: !343) !343 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !344) !344 = distinct !DILocation(line: 1039, scope: !131, inlinedAt: !140) !345 = !DILocation(line: 411, scope: !302, inlinedAt: !346) !346 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !347) !347 = distinct !DILocation(line: 1040, scope: !131, inlinedAt: !140) !348 = !DILocation(line: 410, scope: !243, inlinedAt: !349) !349 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !350) !350 = distinct !DILocation(line: 1041, scope: !131, inlinedAt: !140) !351 = !DILocation(line: 410, scope: !243, inlinedAt: !352) !352 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !353) !353 = distinct !DILocation(line: 1042, scope: !131, inlinedAt: !140) !354 = !DILocation(line: 410, scope: !243, inlinedAt: !353) !355 = !DILocation(line: 408, scope: !234, inlinedAt: !356) !356 = distinct !DILocation(line: 410, scope: !357, inlinedAt: !353) !357 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !358, file: !358, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !358 = !DIFile(filename: "promotion.jl", directory: ".") !359 = !DILocation(line: 409, scope: !231, inlinedAt: !353) !360 = !DILocation(line: 411, scope: !302, inlinedAt: !361) !361 = distinct !DILocation(line: 413, scope: !362, inlinedAt: !353) !362 = distinct !DISubprogram(name: "/;", linkageName: "/", scope: !358, file: !358, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !363 = !DILocation(line: 411, scope: !302, inlinedAt: !353) !364 = !DILocation(line: 105, scope: !365, inlinedAt: !353) !365 = distinct !DISubprogram(name: "#log;", linkageName: "#log", scope: !261, file: !261, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !366 = !DILocation(line: 408, scope: !234, inlinedAt: !353) !367 = !DILocation(line: 40, scope: !142, inlinedAt: !368) !368 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !369) !369 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !370) !370 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !371) !371 = distinct !DILocation(line: 91, scope: !372, inlinedAt: !373) !372 = distinct !DISubprogram(name: "arrayref_bits;", linkageName: "arrayref_bits", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !373 = distinct !DILocation(line: 85, scope: !374, inlinedAt: !375) !374 = distinct !DISubprogram(name: "#arrayref;", linkageName: "#arrayref", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !375 = distinct !DILocation(line: 164, scope: !213, inlinedAt: !376) !376 = distinct !DILocation(line: 1043, scope: !131, inlinedAt: !140) !377 = !DILocation(line: 114, scope: !322, inlinedAt: !378) !378 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !379) !379 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !380) !380 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !381) !381 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !376) !382 = !DILocation(line: 40, scope: !142, inlinedAt: !383) !383 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !384) !384 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !385) !385 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !386) !386 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !379) !387 = !DILocation(line: 410, scope: !243, inlinedAt: !388) !388 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !376) !389 = !DILocation(line: 410, scope: !243, inlinedAt: !390) !390 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !376) !391 = distinct !DISubprogram(name: "*;", linkageName: "*", scope: !392, file: !392, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !392 = !DIFile(filename: "operators.jl", directory: ".") !393 = !DILocation(line: 575, scope: !280, inlinedAt: !394) !394 = distinct !DILocation(line: 510, scope: !395, inlinedAt: !396) !395 = distinct !DISubprogram(name: "max;", linkageName: "max", scope: !358, file: !358, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !396 = distinct !DILocation(line: 444, scope: !397, inlinedAt: !398) !397 = distinct !DISubprogram(name: "OneTo;", linkageName: "OneTo", scope: !299, file: !299, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !398 = distinct !DILocation(line: 457, scope: !397, inlinedAt: !399) !399 = distinct !DILocation(line: 459, scope: !400, inlinedAt: !401) !400 = distinct !DISubprogram(name: "oneto;", linkageName: "oneto", scope: !299, file: !299, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !401 = distinct !DILocation(line: 274, scope: !402, inlinedAt: !404) !402 = distinct !DISubprogram(name: "map;", linkageName: "map", scope: !403, file: !403, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !403 = !DIFile(filename: "tuple.jl", directory: ".") !404 = distinct !DILocation(line: 98, scope: !405, inlinedAt: !407) !405 = distinct !DISubprogram(name: "axes;", linkageName: "axes", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !406 = !DIFile(filename: "abstractarray.jl", directory: ".") !407 = distinct !DILocation(line: 203, scope: !408, inlinedAt: !409) !408 = distinct !DISubprogram(name: "axes;", linkageName: "axes", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !409 = distinct !DILocation(line: 2933, scope: !410, inlinedAt: !411) !410 = distinct !DISubprogram(name: "_sub2ind;", linkageName: "_sub2ind", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !411 = distinct !DILocation(line: 1333, scope: !412, inlinedAt: !413) !412 = distinct !DISubprogram(name: "_to_linear_index;", linkageName: "_to_linear_index", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !413 = distinct !DILocation(line: 1327, scope: !414, inlinedAt: !415) !414 = distinct !DISubprogram(name: "_getindex;", linkageName: "_getindex", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !415 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !417) !416 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !417 = distinct !DILocation(line: 1044, scope: !131, inlinedAt: !140) !418 = !DILocation(line: 88, scope: !134, inlinedAt: !419) !419 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !421) !420 = distinct !DISubprogram(name: "_sub2ind_recurse;", linkageName: "_sub2ind_recurse", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !421 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !422) !422 = distinct !DILocation(line: 2949, scope: !410, inlinedAt: !409) !423 = !DILocation(line: 87, scope: !179, inlinedAt: !419) !424 = !DILocation(line: 88, scope: !134, inlinedAt: !425) !425 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !426) !426 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !427) !427 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !428) !428 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !413) !429 = !DILocation(line: 114, scope: !322, inlinedAt: !425) !430 = !DILocation(line: 40, scope: !142, inlinedAt: !431) !431 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !432) !432 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !433) !433 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !434) !434 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !426) !435 = !DILocation(line: 409, scope: !231, inlinedAt: !417) !436 = !DILocation(line: 410, scope: !243, inlinedAt: !437) !437 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !417) !438 = !DILocation(line: 406, scope: !231, inlinedAt: !439) !439 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !442) !440 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !441, file: !441, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !441 = !DIFile(filename: "/home/jgreener/.julia/packages/StaticArrays/jO3cC/src/mapreduce.jl", directory: ".") !442 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !444) !443 = distinct !DISubprogram(name: "_map;", linkageName: "_map", scope: !441, file: !441, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !444 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !446) !445 = distinct !DISubprogram(name: "map;", linkageName: "map", scope: !441, file: !441, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !446 = distinct !DILocation(line: 8, scope: !447, inlinedAt: !448) !447 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !448 = distinct !DILocation(line: 1045, scope: !131, inlinedAt: !140) !449 = !DILocation(line: 410, scope: !243, inlinedAt: !450) !450 = distinct !DILocation(line: 22, scope: !451, inlinedAt: !452) !451 = distinct !DISubprogram(name: "#267;", linkageName: "#267", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !452 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !453) !453 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !454) !454 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !455) !455 = distinct !DILocation(line: 22, scope: !456, inlinedAt: !448) !456 = distinct !DISubprogram(name: "*;", linkageName: "*", scope: !252, file: !252, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !457 = !DILocation(line: 1049, scope: !131, inlinedAt: !140) !458 = !DILocation(line: 444, scope: !397, inlinedAt: !459) !459 = distinct !DILocation(line: 457, scope: !397, inlinedAt: !460) !460 = distinct !DILocation(line: 459, scope: !400, inlinedAt: !461) !461 = distinct !DILocation(line: 274, scope: !402, inlinedAt: !462) !462 = distinct !DILocation(line: 98, scope: !405, inlinedAt: !463) !463 = distinct !DILocation(line: 486, scope: !464, inlinedAt: !466) !464 = distinct !DISubprogram(name: "LinearIndices;", linkageName: "LinearIndices", scope: !465, file: !465, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !465 = !DIFile(filename: "indices.jl", directory: ".") !466 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !469) !467 = distinct !DISubprogram(name: "pointer;", linkageName: "pointer", scope: !468, file: !468, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !468 = !DIFile(filename: "/home/jgreener/.julia/packages/Atomix/F9VIX/src/references.jl", directory: ".") !469 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !472) !470 = distinct !DISubprogram(name: "modify!;", linkageName: "modify!", scope: !471, file: !471, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !471 = !DIFile(filename: "/home/jgreener/.julia/packages/Atomix/F9VIX/src/core.jl", directory: ".") !472 = distinct !DILocation(line: 1051, scope: !131, inlinedAt: !140) !473 = !{!474, !474, i64 0} !474 = !{!"jtbaa_stack", !118, i64 0} !475 = !{!476} !476 = !{!"jnoalias_stack", !477} !477 = !{!"jnoalias"} !478 = !{!69, !479, !480, !481, !482} !479 = !{!"jnoalias_gcframe", !477} !480 = !{!"jnoalias_data", !477} !481 = !{!"jnoalias_typemd", !477} !482 = !{!"jnoalias_const", !477} !483 = !DILocation(line: 707, scope: !484, inlinedAt: !485) !484 = distinct !DISubprogram(name: "checkbounds;", linkageName: "checkbounds", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !485 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !486) !486 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !466) !487 = !DILocation(line: 709, scope: !484, inlinedAt: !485) !488 = !DILocation(line: 88, scope: !134, inlinedAt: !489) !489 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !491) !490 = distinct !DISubprogram(name: "_memory_offset;", linkageName: "_memory_offset", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !491 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !493) !492 = distinct !DISubprogram(name: "pointer;", linkageName: "pointer", scope: !211, file: !211, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !493 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !469) !494 = !DILocation(line: 114, scope: !322, inlinedAt: !491) !495 = !DILocation(line: 40, scope: !142, inlinedAt: !496) !496 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !499) !497 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !498, file: !498, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !498 = !DIFile(filename: "/home/jgreener/.julia/packages/UnsafeAtomicsLLVM/xcnBP/src/atomics.jl", directory: ".") !499 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !501) !500 = distinct !DISubprogram(name: "llvm_atomic_op;", linkageName: "llvm_atomic_op", scope: !498, file: !498, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !501 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !503) !502 = distinct !DISubprogram(name: "atomic_pointermodify;", linkageName: "atomic_pointermodify", scope: !498, file: !498, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !503 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !506) !504 = distinct !DISubprogram(name: "modify!;", linkageName: "modify!", scope: !505, file: !505, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !505 = !DIFile(filename: "/home/jgreener/.julia/packages/UnsafeAtomicsLLVM/xcnBP/src/internal.jl", directory: ".") !506 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !472) !507 = !DILocation(line: 444, scope: !397, inlinedAt: !508) !508 = distinct !DILocation(line: 457, scope: !397, inlinedAt: !509) !509 = distinct !DILocation(line: 459, scope: !400, inlinedAt: !510) !510 = distinct !DILocation(line: 274, scope: !402, inlinedAt: !511) !511 = distinct !DILocation(line: 98, scope: !405, inlinedAt: !512) !512 = distinct !DILocation(line: 486, scope: !464, inlinedAt: !513) !513 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !514) !514 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !515) !515 = distinct !DILocation(line: 1052, scope: !131, inlinedAt: !140) !516 = !DILocation(line: 707, scope: !484, inlinedAt: !517) !517 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !518) !518 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !513) !519 = !DILocation(line: 709, scope: !484, inlinedAt: !517) !520 = !DILocation(line: 406, scope: !231, inlinedAt: !515) !521 = !DILocation(line: 88, scope: !134, inlinedAt: !522) !522 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !523) !523 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !524) !524 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !514) !525 = !DILocation(line: 114, scope: !322, inlinedAt: !523) !526 = !DILocation(line: 40, scope: !142, inlinedAt: !527) !527 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !528) !528 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !529) !529 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !530) !530 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !531) !531 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !515) !532 = !DILocation(line: 488, scope: !185, inlinedAt: !533) !533 = distinct !DILocation(line: 768, scope: !534, inlinedAt: !535) !534 = distinct !DISubprogram(name: "checkindex;", linkageName: "checkindex", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !535 = distinct !DILocation(line: 735, scope: !536, inlinedAt: !537) !536 = distinct !DISubprogram(name: "checkbounds_indices;", linkageName: "checkbounds_indices", scope: !406, file: !406, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !537 = distinct !DILocation(line: 688, scope: !484, inlinedAt: !538) !538 = distinct !DILocation(line: 709, scope: !484, inlinedAt: !485) !539 = !DILocation(line: 1058, scope: !131, inlinedAt: !140) !540 = !DILocation(line: 83, scope: !541, inlinedAt: !542) !541 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !135, file: !135, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !542 = distinct !DILocation(line: 369, scope: !543, inlinedAt: !544) !543 = distinct !DISubprogram(name: ">;", linkageName: ">", scope: !392, file: !392, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !544 = distinct !DILocation(line: 364, scope: !191, inlinedAt: !194) !545 = !DILocation(line: 88, scope: !134, inlinedAt: !544) !546 = !DILocation(line: 499, scope: !547, inlinedAt: !548) !547 = distinct !DISubprogram(name: "==;", linkageName: "==", scope: !358, file: !358, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !548 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !544) !549 = distinct !DISubprogram(name: "!=;", linkageName: "!=", scope: !392, file: !392, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !550 = !DILocation(line: 38, scope: !551, inlinedAt: !544) !551 = distinct !DISubprogram(name: "&;", linkageName: "&", scope: !552, file: !552, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !552 = !DIFile(filename: "bool.jl", directory: ".") !553 = !DILocation(line: 711, scope: !554, inlinedAt: !556) !554 = distinct !DISubprogram(name: "toInt64;", linkageName: "toInt64", scope: !555, file: !555, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !555 = !DIFile(filename: "boot.jl", directory: ".") !556 = distinct !DILocation(line: 784, scope: !557, inlinedAt: !558) !557 = distinct !DISubprogram(name: "Int64;", linkageName: "Int64", scope: !555, file: !555, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !558 = distinct !DILocation(line: 7, scope: !559, inlinedAt: !560) !559 = distinct !DISubprogram(name: "convert;", linkageName: "convert", scope: !246, file: !246, type: !49, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !560 = distinct !DILocation(line: 520, scope: !166, inlinedAt: !561) !561 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !544) !562 = !DILocation(line: 87, scope: !179, inlinedAt: !563) !563 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !544) !564 = !DILocation(line: 296, scope: !166, inlinedAt: !565) !565 = distinct !DILocation(line: 1029, scope: !131, inlinedAt: !140) !566 = !DILocation(line: 86, scope: !155, inlinedAt: !565) !567 = !DILocation(line: 87, scope: !179, inlinedAt: !565) !568 = !DILocation(line: 499, scope: !547, inlinedAt: !569) !569 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !570) !570 = distinct !DILocation(line: 1030, scope: !131, inlinedAt: !140) !571 = !DILocation(line: 1030, scope: !131, inlinedAt: !140) !572 = distinct !DISubprogram(name: "gbsa_force_2_kernel!", linkageName: "julia_gbsa_force_2_kernel!_25091", scope: null, file: !5, line: 1013, type: !49, scopeLine: 1013, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !573 = !DILocation(line: 0, scope: !572) !574 = !DILocation(line: 88, scope: !134, inlinedAt: !575) !575 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !576) !576 = distinct !DILocation(line: 1024, scope: !572, inlinedAt: !577) !577 = distinct !DILocation(line: 0, scope: !572) !578 = !DILocation(line: 40, scope: !142, inlinedAt: !579) !579 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !580) !580 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !581) !581 = distinct !DILocation(line: 56, scope: !149, inlinedAt: !582) !582 = distinct !DILocation(line: 78, scope: !151, inlinedAt: !583) !583 = distinct !DILocation(line: 1025, scope: !572, inlinedAt: !577) !584 = !DILocation(line: 86, scope: !155, inlinedAt: !585) !585 = distinct !DILocation(line: 1042, scope: !155, inlinedAt: !583) !586 = !DILocation(line: 40, scope: !142, inlinedAt: !587) !587 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !588) !588 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !589) !589 = distinct !DILocation(line: 51, scope: !161, inlinedAt: !590) !590 = distinct !DILocation(line: 85, scope: !163, inlinedAt: !583) !591 = !DILocation(line: 523, scope: !166, inlinedAt: !592) !592 = distinct !DILocation(line: 1040, scope: !134, inlinedAt: !583) !593 = !DILocation(line: 88, scope: !134, inlinedAt: !594) !594 = distinct !DILocation(line: 1042, scope: !134, inlinedAt: !583) !595 = !DILocation(line: 40, scope: !142, inlinedAt: !596) !596 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !597) !597 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !598) !598 = distinct !DILocation(line: 46, scope: !174, inlinedAt: !599) !599 = distinct !DILocation(line: 92, scope: !176, inlinedAt: !583) !600 = !DILocation(line: 87, scope: !179, inlinedAt: !598) !601 = !DILocation(line: 523, scope: !166, inlinedAt: !602) !602 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !583) !603 = !DILocation(line: 87, scope: !179, inlinedAt: !604) !604 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !583) !605 = !DILocation(line: 488, scope: !185, inlinedAt: !606) !606 = distinct !DILocation(line: 1027, scope: !572, inlinedAt: !577) !607 = !DILocation(line: 1027, scope: !572, inlinedAt: !577) !608 = !DILocation(line: 295, scope: !189, inlinedAt: !609) !609 = distinct !DILocation(line: 308, scope: !191, inlinedAt: !610) !610 = distinct !DILocation(line: 363, scope: !191, inlinedAt: !611) !611 = distinct !DILocation(line: 320, scope: !195, inlinedAt: !612) !612 = distinct !DILocation(line: 1028, scope: !572, inlinedAt: !577) !613 = !DILocation(line: 86, scope: !155, inlinedAt: !614) !614 = distinct !DILocation(line: 40, scope: !142, inlinedAt: !615) !615 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !616) !616 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !617) !617 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !618) !618 = distinct !DILocation(line: 52, scope: !207, inlinedAt: !619) !619 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !620) !620 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !621) !621 = distinct !DILocation(line: 1031, scope: !572, inlinedAt: !577) !622 = !DILocation(line: 40, scope: !142, inlinedAt: !615) !623 = !DILocation(line: 535, scope: !220, inlinedAt: !624) !624 = distinct !DILocation(line: 292, scope: !223, inlinedAt: !625) !625 = distinct !DILocation(line: 313, scope: !226, inlinedAt: !626) !626 = distinct !DILocation(line: 311, scope: !228, inlinedAt: !621) !627 = !DILocation(line: 292, scope: !223, inlinedAt: !625) !628 = !DILocation(line: 409, scope: !231, inlinedAt: !629) !629 = distinct !DILocation(line: 293, scope: !223, inlinedAt: !625) !630 = !DILocation(line: 408, scope: !234, inlinedAt: !629) !631 = !DILocation(line: 535, scope: !220, inlinedAt: !629) !632 = !DILocation(line: 293, scope: !223, inlinedAt: !625) !633 = !DILocation(line: 409, scope: !231, inlinedAt: !634) !634 = distinct !DILocation(line: 295, scope: !223, inlinedAt: !625) !635 = !DILocation(line: 408, scope: !234, inlinedAt: !634) !636 = !DILocation(line: 535, scope: !220, inlinedAt: !634) !637 = !DILocation(line: 295, scope: !223, inlinedAt: !625) !638 = !DILocation(line: 410, scope: !243, inlinedAt: !639) !639 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !640) !640 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !641) !641 = distinct !DILocation(line: 266, scope: !251, inlinedAt: !642) !642 = distinct !DILocation(line: 256, scope: !254, inlinedAt: !643) !643 = distinct !DILocation(line: 255, scope: !256, inlinedAt: !644) !644 = distinct !DILocation(line: 1032, scope: !572, inlinedAt: !577) !645 = !DILocation(line: 408, scope: !234, inlinedAt: !641) !646 = !DILocation(line: 223, scope: !260, inlinedAt: !641) !647 = !DILocation(line: 535, scope: !220, inlinedAt: !648) !648 = distinct !DILocation(line: 268, scope: !251, inlinedAt: !642) !649 = !DILocation(line: 268, scope: !251, inlinedAt: !642) !650 = !DILocation(line: 189, scope: !266, inlinedAt: !648) !651 = !DILocation(line: 215, scope: !268, inlinedAt: !652) !652 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !653) !653 = distinct !DILocation(line: 232, scope: !270, inlinedAt: !654) !654 = distinct !DILocation(line: 248, scope: !251, inlinedAt: !655) !655 = distinct !DILocation(line: 240, scope: !274, inlinedAt: !656) !656 = distinct !DILocation(line: 269, scope: !251, inlinedAt: !642) !657 = !DILocation(line: 215, scope: !268, inlinedAt: !658) !658 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !659) !659 = distinct !DILocation(line: 234, scope: !270, inlinedAt: !654) !660 = !DILocation(line: 575, scope: !280, inlinedAt: !661) !661 = distinct !DILocation(line: 243, scope: !283, inlinedAt: !659) !662 = !DILocation(line: 533, scope: !286, inlinedAt: !663) !663 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !664) !664 = distinct !DILocation(line: 250, scope: !251, inlinedAt: !655) !665 = !DILocation(line: 250, scope: !251, inlinedAt: !655) !666 = !DILocation(line: 215, scope: !268, inlinedAt: !667) !667 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !668) !668 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !669) !669 = distinct !DILocation(line: 222, scope: !296, inlinedAt: !664) !670 = !DILocation(line: 891, scope: !298, inlinedAt: !671) !671 = distinct !DILocation(line: 235, scope: !270, inlinedAt: !654) !672 = !DILocation(line: 411, scope: !302, inlinedAt: !673) !673 = distinct !DILocation(line: 251, scope: !251, inlinedAt: !655) !674 = !DILocation(line: 410, scope: !243, inlinedAt: !675) !675 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !676) !676 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !673) !677 = !DILocation(line: 408, scope: !234, inlinedAt: !673) !678 = !DILocation(line: 223, scope: !260, inlinedAt: !673) !679 = !DILocation(line: 410, scope: !243, inlinedAt: !673) !680 = !DILocation(line: 533, scope: !286, inlinedAt: !681) !681 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !682) !682 = distinct !DILocation(line: 1034, scope: !572, inlinedAt: !577) !683 = !DILocation(line: 1034, scope: !572, inlinedAt: !577) !684 = !DILocation(line: 88, scope: !134, inlinedAt: !685) !685 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !686) !686 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !687) !687 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !688) !688 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !689) !689 = distinct !DILocation(line: 1035, scope: !572, inlinedAt: !577) !690 = !DILocation(line: 114, scope: !322, inlinedAt: !685) !691 = !DILocation(line: 40, scope: !142, inlinedAt: !692) !692 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !693) !693 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !694) !694 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !695) !695 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !686) !696 = !DILocation(line: 408, scope: !234, inlinedAt: !697) !697 = distinct !DILocation(line: 1036, scope: !572, inlinedAt: !577) !698 = !DILocation(line: 535, scope: !220, inlinedAt: !699) !699 = distinct !DILocation(line: 1037, scope: !572, inlinedAt: !577) !700 = !DILocation(line: 1037, scope: !572, inlinedAt: !577) !701 = !DILocation(line: 409, scope: !231, inlinedAt: !702) !702 = distinct !DILocation(line: 1038, scope: !572, inlinedAt: !577) !703 = !DILocation(line: 215, scope: !268, inlinedAt: !702) !704 = !DILocation(line: 292, scope: !338, inlinedAt: !702) !705 = !DILocation(line: 411, scope: !302, inlinedAt: !706) !706 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !702) !707 = !DILocation(line: 411, scope: !302, inlinedAt: !708) !708 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !709) !709 = distinct !DILocation(line: 1039, scope: !572, inlinedAt: !577) !710 = !DILocation(line: 411, scope: !302, inlinedAt: !711) !711 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !712) !712 = distinct !DILocation(line: 1040, scope: !572, inlinedAt: !577) !713 = !DILocation(line: 410, scope: !243, inlinedAt: !714) !714 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !715) !715 = distinct !DILocation(line: 1041, scope: !572, inlinedAt: !577) !716 = !DILocation(line: 410, scope: !243, inlinedAt: !717) !717 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !718) !718 = distinct !DILocation(line: 1042, scope: !572, inlinedAt: !577) !719 = !DILocation(line: 410, scope: !243, inlinedAt: !718) !720 = !DILocation(line: 408, scope: !234, inlinedAt: !721) !721 = distinct !DILocation(line: 410, scope: !357, inlinedAt: !718) !722 = !DILocation(line: 409, scope: !231, inlinedAt: !718) !723 = !DILocation(line: 411, scope: !302, inlinedAt: !724) !724 = distinct !DILocation(line: 413, scope: !362, inlinedAt: !718) !725 = !DILocation(line: 411, scope: !302, inlinedAt: !718) !726 = !DILocation(line: 105, scope: !365, inlinedAt: !718) !727 = !DILocation(line: 408, scope: !234, inlinedAt: !718) !728 = !DILocation(line: 40, scope: !142, inlinedAt: !729) !729 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !730) !730 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !731) !731 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !732) !732 = distinct !DILocation(line: 91, scope: !372, inlinedAt: !733) !733 = distinct !DILocation(line: 85, scope: !374, inlinedAt: !734) !734 = distinct !DILocation(line: 164, scope: !213, inlinedAt: !735) !735 = distinct !DILocation(line: 1043, scope: !572, inlinedAt: !577) !736 = !DILocation(line: 114, scope: !322, inlinedAt: !737) !737 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !738) !738 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !739) !739 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !740) !740 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !735) !741 = !DILocation(line: 40, scope: !142, inlinedAt: !742) !742 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !743) !743 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !744) !744 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !745) !745 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !738) !746 = !DILocation(line: 410, scope: !243, inlinedAt: !747) !747 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !735) !748 = !DILocation(line: 410, scope: !243, inlinedAt: !749) !749 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !735) !750 = !DILocation(line: 575, scope: !280, inlinedAt: !751) !751 = distinct !DILocation(line: 510, scope: !395, inlinedAt: !752) !752 = distinct !DILocation(line: 444, scope: !397, inlinedAt: !753) !753 = distinct !DILocation(line: 457, scope: !397, inlinedAt: !754) !754 = distinct !DILocation(line: 459, scope: !400, inlinedAt: !755) !755 = distinct !DILocation(line: 274, scope: !402, inlinedAt: !756) !756 = distinct !DILocation(line: 98, scope: !405, inlinedAt: !757) !757 = distinct !DILocation(line: 203, scope: !408, inlinedAt: !758) !758 = distinct !DILocation(line: 2933, scope: !410, inlinedAt: !759) !759 = distinct !DILocation(line: 1333, scope: !412, inlinedAt: !760) !760 = distinct !DILocation(line: 1327, scope: !414, inlinedAt: !761) !761 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !762) !762 = distinct !DILocation(line: 1044, scope: !572, inlinedAt: !577) !763 = !DILocation(line: 88, scope: !134, inlinedAt: !764) !764 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !765) !765 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !766) !766 = distinct !DILocation(line: 2949, scope: !410, inlinedAt: !758) !767 = !DILocation(line: 87, scope: !179, inlinedAt: !764) !768 = !DILocation(line: 88, scope: !134, inlinedAt: !769) !769 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !770) !770 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !771) !771 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !772) !772 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !760) !773 = !DILocation(line: 114, scope: !322, inlinedAt: !769) !774 = !DILocation(line: 40, scope: !142, inlinedAt: !775) !775 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !776) !776 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !777) !777 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !778) !778 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !770) !779 = !DILocation(line: 409, scope: !231, inlinedAt: !762) !780 = !DILocation(line: 410, scope: !243, inlinedAt: !781) !781 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !762) !782 = !DILocation(line: 406, scope: !231, inlinedAt: !783) !783 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !784) !784 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !785) !785 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !786) !786 = distinct !DILocation(line: 8, scope: !447, inlinedAt: !787) !787 = distinct !DILocation(line: 1045, scope: !572, inlinedAt: !577) !788 = !DILocation(line: 410, scope: !243, inlinedAt: !789) !789 = distinct !DILocation(line: 22, scope: !451, inlinedAt: !790) !790 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !791) !791 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !792) !792 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !793) !793 = distinct !DILocation(line: 22, scope: !456, inlinedAt: !787) !794 = !DILocation(line: 1049, scope: !572, inlinedAt: !577) !795 = !DILocation(line: 88, scope: !134, inlinedAt: !796) !796 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !797) !797 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !798) !798 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !799) !799 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !800) !800 = distinct !DILocation(line: 1051, scope: !572, inlinedAt: !577) !801 = !DILocation(line: 114, scope: !322, inlinedAt: !797) !802 = !DILocation(line: 40, scope: !142, inlinedAt: !803) !803 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !804) !804 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !805) !805 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !806) !806 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !807) !807 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !800) !808 = !DILocation(line: 709, scope: !484, inlinedAt: !809) !809 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !810) !810 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !811) !811 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !812) !812 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !813) !813 = distinct !DILocation(line: 1052, scope: !572, inlinedAt: !577) !814 = !DILocation(line: 406, scope: !231, inlinedAt: !813) !815 = !DILocation(line: 88, scope: !134, inlinedAt: !816) !816 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !817) !817 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !818) !818 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !812) !819 = !DILocation(line: 114, scope: !322, inlinedAt: !817) !820 = !DILocation(line: 40, scope: !142, inlinedAt: !821) !821 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !822) !822 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !823) !823 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !824) !824 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !825) !825 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !813) !826 = !DILocation(line: 488, scope: !185, inlinedAt: !827) !827 = distinct !DILocation(line: 768, scope: !534, inlinedAt: !828) !828 = distinct !DILocation(line: 735, scope: !536, inlinedAt: !829) !829 = distinct !DILocation(line: 688, scope: !484, inlinedAt: !830) !830 = distinct !DILocation(line: 709, scope: !484, inlinedAt: !831) !831 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !832) !832 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !833) !833 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !799) !834 = !DILocation(line: 709, scope: !484, inlinedAt: !831) !835 = !DILocation(line: 1058, scope: !572, inlinedAt: !577) !836 = !DILocation(line: 83, scope: !541, inlinedAt: !837) !837 = distinct !DILocation(line: 369, scope: !543, inlinedAt: !838) !838 = distinct !DILocation(line: 364, scope: !191, inlinedAt: !611) !839 = !DILocation(line: 88, scope: !134, inlinedAt: !838) !840 = !DILocation(line: 499, scope: !547, inlinedAt: !841) !841 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !838) !842 = !DILocation(line: 38, scope: !551, inlinedAt: !838) !843 = !DILocation(line: 711, scope: !554, inlinedAt: !844) !844 = distinct !DILocation(line: 784, scope: !557, inlinedAt: !845) !845 = distinct !DILocation(line: 7, scope: !559, inlinedAt: !846) !846 = distinct !DILocation(line: 520, scope: !166, inlinedAt: !847) !847 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !838) !848 = !DILocation(line: 87, scope: !179, inlinedAt: !849) !849 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !838) !850 = !DILocation(line: 296, scope: !166, inlinedAt: !851) !851 = distinct !DILocation(line: 1029, scope: !572, inlinedAt: !577) !852 = !DILocation(line: 86, scope: !155, inlinedAt: !851) !853 = !DILocation(line: 87, scope: !179, inlinedAt: !851) !854 = !DILocation(line: 499, scope: !547, inlinedAt: !855) !855 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !856) !856 = distinct !DILocation(line: 1030, scope: !572, inlinedAt: !577) !857 = !DILocation(line: 1030, scope: !572, inlinedAt: !577) !858 = distinct !DISubprogram(name: "gbsa_force_2_kernel!", linkageName: "julia_gbsa_force_2_kernel!_25091", scope: null, file: !5, line: 1013, type: !49, scopeLine: 1013, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !4, retainedNodes: !14) !859 = !DILocation(line: 0, scope: !858) !860 = !DILocation(line: 88, scope: !134, inlinedAt: !861) !861 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !862) !862 = distinct !DILocation(line: 1024, scope: !858, inlinedAt: !863) !863 = distinct !DILocation(line: 0, scope: !858) !864 = !DILocation(line: 40, scope: !142, inlinedAt: !865) !865 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !866) !866 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !867) !867 = distinct !DILocation(line: 56, scope: !149, inlinedAt: !868) !868 = distinct !DILocation(line: 78, scope: !151, inlinedAt: !869) !869 = distinct !DILocation(line: 1025, scope: !858, inlinedAt: !863) !870 = !DILocation(line: 86, scope: !155, inlinedAt: !871) !871 = distinct !DILocation(line: 1042, scope: !155, inlinedAt: !869) !872 = !DILocation(line: 40, scope: !142, inlinedAt: !873) !873 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !874) !874 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !875) !875 = distinct !DILocation(line: 51, scope: !161, inlinedAt: !876) !876 = distinct !DILocation(line: 85, scope: !163, inlinedAt: !869) !877 = !DILocation(line: 523, scope: !166, inlinedAt: !878) !878 = distinct !DILocation(line: 1040, scope: !134, inlinedAt: !869) !879 = !DILocation(line: 88, scope: !134, inlinedAt: !880) !880 = distinct !DILocation(line: 1042, scope: !134, inlinedAt: !869) !881 = !DILocation(line: 40, scope: !142, inlinedAt: !882) !882 = distinct !DILocation(line: 6, scope: !144, inlinedAt: !883) !883 = distinct !DILocation(line: 6, scope: !147, inlinedAt: !884) !884 = distinct !DILocation(line: 46, scope: !174, inlinedAt: !885) !885 = distinct !DILocation(line: 92, scope: !176, inlinedAt: !869) !886 = !DILocation(line: 87, scope: !179, inlinedAt: !884) !887 = !DILocation(line: 523, scope: !166, inlinedAt: !888) !888 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !869) !889 = !DILocation(line: 87, scope: !179, inlinedAt: !890) !890 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !869) !891 = !DILocation(line: 488, scope: !185, inlinedAt: !892) !892 = distinct !DILocation(line: 1027, scope: !858, inlinedAt: !863) !893 = !DILocation(line: 1027, scope: !858, inlinedAt: !863) !894 = !DILocation(line: 295, scope: !189, inlinedAt: !895) !895 = distinct !DILocation(line: 308, scope: !191, inlinedAt: !896) !896 = distinct !DILocation(line: 363, scope: !191, inlinedAt: !897) !897 = distinct !DILocation(line: 320, scope: !195, inlinedAt: !898) !898 = distinct !DILocation(line: 1028, scope: !858, inlinedAt: !863) !899 = !DILocation(line: 86, scope: !155, inlinedAt: !900) !900 = distinct !DILocation(line: 40, scope: !142, inlinedAt: !901) !901 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !902) !902 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !903) !903 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !904) !904 = distinct !DILocation(line: 52, scope: !207, inlinedAt: !905) !905 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !906) !906 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !907) !907 = distinct !DILocation(line: 1031, scope: !858, inlinedAt: !863) !908 = !DILocation(line: 40, scope: !142, inlinedAt: !901) !909 = !{!910} !910 = distinct !{!910, !911, !"primal"} !911 = distinct !{!911, !" diff: %.fca.0.extract47"} !912 = !{!913} !913 = distinct !{!913, !911, !"shadow_0"} !914 = distinct !{} !915 = distinct !{} !916 = distinct !{} !917 = distinct !{} !918 = distinct !{} !919 = !DILocation(line: 535, scope: !220, inlinedAt: !920) !920 = distinct !DILocation(line: 292, scope: !223, inlinedAt: !921) !921 = distinct !DILocation(line: 313, scope: !226, inlinedAt: !922) !922 = distinct !DILocation(line: 311, scope: !228, inlinedAt: !907) !923 = distinct !{} !924 = !DILocation(line: 292, scope: !223, inlinedAt: !921) !925 = !DILocation(line: 409, scope: !231, inlinedAt: !926) !926 = distinct !DILocation(line: 293, scope: !223, inlinedAt: !921) !927 = !DILocation(line: 408, scope: !234, inlinedAt: !926) !928 = !DILocation(line: 535, scope: !220, inlinedAt: !926) !929 = !DILocation(line: 293, scope: !223, inlinedAt: !921) !930 = !DILocation(line: 409, scope: !231, inlinedAt: !931) !931 = distinct !DILocation(line: 295, scope: !223, inlinedAt: !921) !932 = !DILocation(line: 408, scope: !234, inlinedAt: !931) !933 = !DILocation(line: 535, scope: !220, inlinedAt: !931) !934 = !DILocation(line: 295, scope: !223, inlinedAt: !921) !935 = !DILocation(line: 410, scope: !243, inlinedAt: !936) !936 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !937) !937 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !938) !938 = distinct !DILocation(line: 266, scope: !251, inlinedAt: !939) !939 = distinct !DILocation(line: 256, scope: !254, inlinedAt: !940) !940 = distinct !DILocation(line: 255, scope: !256, inlinedAt: !941) !941 = distinct !DILocation(line: 1032, scope: !858, inlinedAt: !863) !942 = !DILocation(line: 408, scope: !234, inlinedAt: !938) !943 = !DILocation(line: 223, scope: !260, inlinedAt: !938) !944 = !DILocation(line: 535, scope: !220, inlinedAt: !945) !945 = distinct !DILocation(line: 268, scope: !251, inlinedAt: !939) !946 = !DILocation(line: 268, scope: !251, inlinedAt: !939) !947 = !DILocation(line: 189, scope: !266, inlinedAt: !945) !948 = !DILocation(line: 215, scope: !268, inlinedAt: !949) !949 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !950) !950 = distinct !DILocation(line: 232, scope: !270, inlinedAt: !951) !951 = distinct !DILocation(line: 248, scope: !251, inlinedAt: !952) !952 = distinct !DILocation(line: 240, scope: !274, inlinedAt: !953) !953 = distinct !DILocation(line: 269, scope: !251, inlinedAt: !939) !954 = distinct !{} !955 = !DILocation(line: 215, scope: !268, inlinedAt: !956) !956 = distinct !DILocation(line: 228, scope: !270, inlinedAt: !957) !957 = distinct !DILocation(line: 234, scope: !270, inlinedAt: !951) !958 = distinct !{} !959 = !DILocation(line: 575, scope: !280, inlinedAt: !960) !960 = distinct !DILocation(line: 243, scope: !283, inlinedAt: !957) !961 = distinct !{} !962 = !DILocation(line: 533, scope: !286, inlinedAt: !963) !963 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !964) !964 = distinct !DILocation(line: 250, scope: !251, inlinedAt: !952) !965 = !DILocation(line: 250, scope: !251, inlinedAt: !952) !966 = !DILocation(line: 215, scope: !268, inlinedAt: !967) !967 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !968) !968 = distinct !DILocation(line: 639, scope: !293, inlinedAt: !969) !969 = distinct !DILocation(line: 222, scope: !296, inlinedAt: !964) !970 = !DILocation(line: 891, scope: !298, inlinedAt: !971) !971 = distinct !DILocation(line: 235, scope: !270, inlinedAt: !951) !972 = !DILocation(line: 411, scope: !302, inlinedAt: !973) !973 = distinct !DILocation(line: 251, scope: !251, inlinedAt: !952) !974 = !DILocation(line: 410, scope: !243, inlinedAt: !975) !975 = distinct !DILocation(line: 189, scope: !245, inlinedAt: !976) !976 = distinct !DILocation(line: 459, scope: !248, inlinedAt: !973) !977 = !DILocation(line: 408, scope: !234, inlinedAt: !973) !978 = !DILocation(line: 223, scope: !260, inlinedAt: !973) !979 = !DILocation(line: 410, scope: !243, inlinedAt: !973) !980 = !DILocation(line: 533, scope: !286, inlinedAt: !981) !981 = distinct !DILocation(line: 42, scope: !288, inlinedAt: !982) !982 = distinct !DILocation(line: 1034, scope: !858, inlinedAt: !863) !983 = !DILocation(line: 1034, scope: !858, inlinedAt: !863) !984 = !DILocation(line: 88, scope: !134, inlinedAt: !985) !985 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !986) !986 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !987) !987 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !988) !988 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !989) !989 = distinct !DILocation(line: 1035, scope: !858, inlinedAt: !863) !990 = !DILocation(line: 114, scope: !322, inlinedAt: !985) !991 = !DILocation(line: 40, scope: !142, inlinedAt: !992) !992 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !993) !993 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !994) !994 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !995) !995 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !986) !996 = !DILocation(line: 408, scope: !234, inlinedAt: !997) !997 = distinct !DILocation(line: 1036, scope: !858, inlinedAt: !863) !998 = !DILocation(line: 535, scope: !220, inlinedAt: !999) !999 = distinct !DILocation(line: 1037, scope: !858, inlinedAt: !863) !1000 = !DILocation(line: 1037, scope: !858, inlinedAt: !863) !1001 = !DILocation(line: 409, scope: !231, inlinedAt: !1002) !1002 = distinct !DILocation(line: 1038, scope: !858, inlinedAt: !863) !1003 = !DILocation(line: 215, scope: !268, inlinedAt: !1002) !1004 = !DILocation(line: 292, scope: !338, inlinedAt: !1002) !1005 = !DILocation(line: 411, scope: !302, inlinedAt: !1006) !1006 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !1002) !1007 = !DILocation(line: 411, scope: !302, inlinedAt: !1008) !1008 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !1009) !1009 = distinct !DILocation(line: 1039, scope: !858, inlinedAt: !863) !1010 = !DILocation(line: 411, scope: !302, inlinedAt: !1011) !1011 = distinct !DILocation(line: 255, scope: !341, inlinedAt: !1012) !1012 = distinct !DILocation(line: 1040, scope: !858, inlinedAt: !863) !1013 = !DILocation(line: 410, scope: !243, inlinedAt: !1014) !1014 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !1015) !1015 = distinct !DILocation(line: 1041, scope: !858, inlinedAt: !863) !1016 = !DILocation(line: 410, scope: !243, inlinedAt: !1017) !1017 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !1018) !1018 = distinct !DILocation(line: 1042, scope: !858, inlinedAt: !863) !1019 = !DILocation(line: 410, scope: !243, inlinedAt: !1018) !1020 = !DILocation(line: 408, scope: !234, inlinedAt: !1021) !1021 = distinct !DILocation(line: 410, scope: !357, inlinedAt: !1018) !1022 = !DILocation(line: 409, scope: !231, inlinedAt: !1018) !1023 = !DILocation(line: 411, scope: !302, inlinedAt: !1024) !1024 = distinct !DILocation(line: 413, scope: !362, inlinedAt: !1018) !1025 = !DILocation(line: 411, scope: !302, inlinedAt: !1018) !1026 = !DILocation(line: 105, scope: !365, inlinedAt: !1018) !1027 = !DILocation(line: 408, scope: !234, inlinedAt: !1018) !1028 = !DILocation(line: 40, scope: !142, inlinedAt: !1029) !1029 = distinct !DILocation(line: 9, scope: !200, inlinedAt: !1030) !1030 = distinct !DILocation(line: 9, scope: !203, inlinedAt: !1031) !1031 = distinct !DILocation(line: 85, scope: !205, inlinedAt: !1032) !1032 = distinct !DILocation(line: 91, scope: !372, inlinedAt: !1033) !1033 = distinct !DILocation(line: 85, scope: !374, inlinedAt: !1034) !1034 = distinct !DILocation(line: 164, scope: !213, inlinedAt: !1035) !1035 = distinct !DILocation(line: 1043, scope: !858, inlinedAt: !863) !1036 = !DILocation(line: 114, scope: !322, inlinedAt: !1037) !1037 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !1038) !1038 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !1039) !1039 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !1040) !1040 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !1035) !1041 = !DILocation(line: 40, scope: !142, inlinedAt: !1042) !1042 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !1043) !1043 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !1044) !1044 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !1045) !1045 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !1038) !1046 = !DILocation(line: 410, scope: !243, inlinedAt: !1047) !1047 = distinct !DILocation(line: 319, scope: !137, inlinedAt: !1035) !1048 = !DILocation(line: 410, scope: !243, inlinedAt: !1049) !1049 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !1035) !1050 = !DILocation(line: 575, scope: !280, inlinedAt: !1051) !1051 = distinct !DILocation(line: 510, scope: !395, inlinedAt: !1052) !1052 = distinct !DILocation(line: 444, scope: !397, inlinedAt: !1053) !1053 = distinct !DILocation(line: 457, scope: !397, inlinedAt: !1054) !1054 = distinct !DILocation(line: 459, scope: !400, inlinedAt: !1055) !1055 = distinct !DILocation(line: 274, scope: !402, inlinedAt: !1056) !1056 = distinct !DILocation(line: 98, scope: !405, inlinedAt: !1057) !1057 = distinct !DILocation(line: 203, scope: !408, inlinedAt: !1058) !1058 = distinct !DILocation(line: 2933, scope: !410, inlinedAt: !1059) !1059 = distinct !DILocation(line: 1333, scope: !412, inlinedAt: !1060) !1060 = distinct !DILocation(line: 1327, scope: !414, inlinedAt: !1061) !1061 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !1062) !1062 = distinct !DILocation(line: 1044, scope: !858, inlinedAt: !863) !1063 = !DILocation(line: 88, scope: !134, inlinedAt: !1064) !1064 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !1065) !1065 = distinct !DILocation(line: 2965, scope: !420, inlinedAt: !1066) !1066 = distinct !DILocation(line: 2949, scope: !410, inlinedAt: !1058) !1067 = !DILocation(line: 87, scope: !179, inlinedAt: !1064) !1068 = !DILocation(line: 88, scope: !134, inlinedAt: !1069) !1069 = distinct !DILocation(line: 39, scope: !316, inlinedAt: !1070) !1070 = distinct !DILocation(line: 48, scope: !207, inlinedAt: !1071) !1071 = distinct !DILocation(line: 156, scope: !210, inlinedAt: !1072) !1072 = distinct !DILocation(line: 204, scope: !213, inlinedAt: !1060) !1073 = !DILocation(line: 114, scope: !322, inlinedAt: !1069) !1074 = !DILocation(line: 40, scope: !142, inlinedAt: !1075) !1075 = distinct !DILocation(line: 149, scope: !200, inlinedAt: !1076) !1076 = distinct !DILocation(line: 149, scope: !326, inlinedAt: !1077) !1077 = distinct !DILocation(line: 300, scope: !200, inlinedAt: !1078) !1078 = distinct !DILocation(line: 40, scope: !316, inlinedAt: !1070) !1079 = !DILocation(line: 409, scope: !231, inlinedAt: !1062) !1080 = !DILocation(line: 410, scope: !243, inlinedAt: !1081) !1081 = distinct !DILocation(line: 578, scope: !391, inlinedAt: !1062) !1082 = !DILocation(line: 406, scope: !231, inlinedAt: !1083) !1083 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !1084) !1084 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !1085) !1085 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !1086) !1086 = distinct !DILocation(line: 8, scope: !447, inlinedAt: !1087) !1087 = distinct !DILocation(line: 1045, scope: !858, inlinedAt: !863) !1088 = !DILocation(line: 410, scope: !243, inlinedAt: !1089) !1089 = distinct !DILocation(line: 22, scope: !451, inlinedAt: !1090) !1090 = distinct !DILocation(line: 75, scope: !440, inlinedAt: !1091) !1091 = distinct !DILocation(line: 40, scope: !443, inlinedAt: !1092) !1092 = distinct !DILocation(line: 31, scope: !445, inlinedAt: !1093) !1093 = distinct !DILocation(line: 22, scope: !456, inlinedAt: !1087) !1094 = !DILocation(line: 1049, scope: !858, inlinedAt: !863) !1095 = !DILocation(line: 88, scope: !134, inlinedAt: !1096) !1096 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !1097) !1097 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !1098) !1098 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !1099) !1099 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !1100) !1100 = distinct !DILocation(line: 1051, scope: !858, inlinedAt: !863) !1101 = !DILocation(line: 114, scope: !322, inlinedAt: !1097) !1102 = !DILocation(line: 40, scope: !142, inlinedAt: !1103) !1103 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !1104) !1104 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !1105) !1105 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !1106) !1106 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !1107) !1107 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !1100) !1108 = !DILocation(line: 709, scope: !484, inlinedAt: !1109) !1109 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !1110) !1110 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !1111) !1111 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !1112) !1112 = distinct !DILocation(line: 30, scope: !470, inlinedAt: !1113) !1113 = distinct !DILocation(line: 1052, scope: !858, inlinedAt: !863) !1114 = !DILocation(line: 406, scope: !231, inlinedAt: !1113) !1115 = !DILocation(line: 88, scope: !134, inlinedAt: !1116) !1116 = distinct !DILocation(line: 1247, scope: !490, inlinedAt: !1117) !1117 = distinct !DILocation(line: 52, scope: !492, inlinedAt: !1118) !1118 = distinct !DILocation(line: 103, scope: !467, inlinedAt: !1112) !1119 = !DILocation(line: 114, scope: !322, inlinedAt: !1117) !1120 = !DILocation(line: 40, scope: !142, inlinedAt: !1121) !1121 = distinct !DILocation(line: 255, scope: !497, inlinedAt: !1122) !1122 = distinct !DILocation(line: 255, scope: !500, inlinedAt: !1123) !1123 = distinct !DILocation(line: 359, scope: !502, inlinedAt: !1124) !1124 = distinct !DILocation(line: 20, scope: !504, inlinedAt: !1125) !1125 = distinct !DILocation(line: 33, scope: !470, inlinedAt: !1113) !1126 = !DILocation(line: 488, scope: !185, inlinedAt: !1127) !1127 = distinct !DILocation(line: 768, scope: !534, inlinedAt: !1128) !1128 = distinct !DILocation(line: 735, scope: !536, inlinedAt: !1129) !1129 = distinct !DILocation(line: 688, scope: !484, inlinedAt: !1130) !1130 = distinct !DILocation(line: 709, scope: !484, inlinedAt: !1131) !1131 = distinct !DILocation(line: 1326, scope: !414, inlinedAt: !1132) !1132 = distinct !DILocation(line: 1294, scope: !416, inlinedAt: !1133) !1133 = distinct !DILocation(line: 102, scope: !467, inlinedAt: !1099) !1134 = !DILocation(line: 709, scope: !484, inlinedAt: !1131) !1135 = !DILocation(line: 1058, scope: !858, inlinedAt: !863) !1136 = !DILocation(line: 83, scope: !541, inlinedAt: !1137) !1137 = distinct !DILocation(line: 369, scope: !543, inlinedAt: !1138) !1138 = distinct !DILocation(line: 364, scope: !191, inlinedAt: !897) !1139 = !DILocation(line: 88, scope: !134, inlinedAt: !1138) !1140 = !DILocation(line: 499, scope: !547, inlinedAt: !1141) !1141 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !1138) !1142 = !DILocation(line: 38, scope: !551, inlinedAt: !1138) !1143 = !DILocation(line: 711, scope: !554, inlinedAt: !1144) !1144 = distinct !DILocation(line: 784, scope: !557, inlinedAt: !1145) !1145 = distinct !DILocation(line: 7, scope: !559, inlinedAt: !1146) !1146 = distinct !DILocation(line: 520, scope: !166, inlinedAt: !1147) !1147 = distinct !DILocation(line: 1040, scope: !179, inlinedAt: !1138) !1148 = !DILocation(line: 87, scope: !179, inlinedAt: !1149) !1149 = distinct !DILocation(line: 1042, scope: !179, inlinedAt: !1138) !1150 = !DILocation(line: 296, scope: !166, inlinedAt: !1151) !1151 = distinct !DILocation(line: 1029, scope: !858, inlinedAt: !863) !1152 = !DILocation(line: 86, scope: !155, inlinedAt: !1151) !1153 = !DILocation(line: 87, scope: !179, inlinedAt: !1151) !1154 = !DILocation(line: 499, scope: !547, inlinedAt: !1155) !1155 = distinct !DILocation(line: 269, scope: !549, inlinedAt: !1156) !1156 = distinct !DILocation(line: 1030, scope: !858, inlinedAt: !863) !1157 = !DILocation(line: 1030, scope: !858, inlinedAt: !863) No augmented forward pass found for __nvvm_reflect declare i32 @__nvvm_reflect(i8*) local_unnamed_addr #7 Stacktrace: [1] julia_error(cstr::Cstring, val::Ptr{LLVM.API.LLVMOpaqueValue}, errtype::Enzyme.API.ErrorType, data::Ptr{Nothing}) @ Enzyme.Compiler ~/.julia/dev/Enzyme/src/compiler.jl:5242 [2] EnzymeCreatePrimalAndGradient(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{Enzyme.API.CDIFFE_TYPE}, TA::Enzyme.TypeAnalysis, returnValue::Bool, dretUsed::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{Nothing}, forceAnonymousTape::Bool, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{Bool}, augmented::Ptr{Nothing}, atomicAdd::Bool) @ Enzyme.API ~/.julia/dev/Enzyme/src/api.jl:124 [3] enzyme!(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{13, Bool}, returnPrimal::Bool, jlrules::Vector{String}, expectedTapeType::Type) @ Enzyme.Compiler ~/.julia/dev/Enzyme/src/compiler.jl:6710 [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, ctx::LLVM.ThreadSafeContext, strip::Bool, validate::Bool, only_entry::Bool, parent_job::GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}) @ Enzyme.Compiler ~/.julia/dev/Enzyme/src/compiler.jl:7951 [5] codegen @ ~/.julia/dev/Enzyme/src/compiler.jl:7577 [inlined] [6] (::GPUCompiler.var"#116#119"{LLVM.ThreadSafeContext, GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}, GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}})() @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:289 [7] get!(default::GPUCompiler.var"#116#119"{LLVM.ThreadSafeContext, GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}, GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}}, h::Dict{GPUCompiler.CompilerJob, String}, key::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}) @ Base ./dict.jl:468 [8] macro expansion @ ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:288 [inlined] [9] emit_llvm(job::GPUCompiler.CompilerJob; libraries::Bool, deferred_codegen::Bool, optimize::Bool, cleanup::Bool, only_entry::Bool, validate::Bool, ctx::LLVM.ThreadSafeContext) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/utils.jl:83 [10] emit_llvm @ ~/.julia/packages/GPUCompiler/YU9ZW/src/utils.jl:77 [inlined] [11] codegen(output::Symbol, job::GPUCompiler.CompilerJob; libraries::Bool, deferred_codegen::Bool, optimize::Bool, cleanup::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing, ctx::LLVM.ThreadSafeContext) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:120 [12] compile(target::Symbol, job::GPUCompiler.CompilerJob; libraries::Bool, deferred_codegen::Bool, optimize::Bool, cleanup::Bool, strip::Bool, validate::Bool, only_entry::Bool, ctx::LLVM.ThreadSafeContext) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:90 [13] compile @ ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:81 [inlined] [14] compile(job::GPUCompiler.CompilerJob, ctx::LLVM.ThreadSafeContext) @ CUDA ~/.julia/dev/CUDA/src/compiler/compilation.jl:105 [15] #203 @ ~/.julia/dev/CUDA/src/compiler/compilation.jl:100 [inlined] [16] LLVM.ThreadSafeContext(f::CUDA.var"#203#204"{GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}}) @ LLVM ~/.julia/packages/LLVM/TLGyi/src/executionengine/ts_module.jl:14 [17] JuliaContext(f::CUDA.var"#203#204"{GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}}) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/driver.jl:35 [18] compile @ ~/.julia/dev/CUDA/src/compiler/compilation.jl:99 [inlined] [19] actual_compilation(cache::Dict{UInt64, Any}, key::UInt64, cfg::GPUCompiler.CompilerConfig{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}, ft::Type, tt::Type, compiler::typeof(CUDA.compile), linker::typeof(CUDA.link)) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/cache.jl:53 [20] cached_compilation(cache::Dict{UInt64, Any}, cfg::GPUCompiler.CompilerConfig{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}, ft::Type, tt::Type, compiler::Function, linker::Function) @ GPUCompiler ~/.julia/packages/GPUCompiler/YU9ZW/src/cache.jl:37 [21] macro expansion @ ~/.julia/dev/CUDA/src/compiler/execution.jl:310 [inlined] [22] macro expansion @ ./lock.jl:267 [inlined] [23] cufunction(f::typeof(Molly.grad_gbsa_force_2_kernel!), tt::Type{Tuple{CuDeviceMatrix{Float32, 1}, CuDeviceMatrix{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{SVector{3, Float32}, 1}, CuDeviceVector{SVector{3, Float32}, 1}, CubicBoundary{Float32}, Float32, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceVector{Float32, 1}, CuDeviceMatrix{Float32, 1}, CuDeviceMatrix{Float32, 1}, Val{3}, Val{}}}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ CUDA ~/.julia/dev/CUDA/src/compiler/execution.jl:306 [24] cufunction @ ~/.julia/dev/CUDA/src/compiler/execution.jl:303 [inlined] [25] macro expansion @ ~/.julia/dev/CUDA/src/compiler/execution.jl:104 [inlined] [26] macro expansion @ ~/.julia/dev/CUDA/src/utilities.jl:25 [inlined] [27] (::Molly.var"#gbsa_force_2_gpu_pullback#451"{3, Float32, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}})(d_fs_mat::CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}) @ Molly ~/.julia/dev/Molly/src/chain_rules.jl:903 [28] ZBack @ ~/.julia/dev/Zygote/src/compiler/chainrules.jl:211 [inlined] [29] Pullback @ ~/.julia/dev/Molly/src/interactions/implicit_solvent.jl:914 [inlined] [30] (::Zygote.Pullback{Tuple{typeof(Molly.forces_gbsa), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:kappa, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, Float32}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:factor_solvent, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, Float32}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:factor_solute, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, Float32}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:force_units, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}}}, Zygote.Pullback{Tuple{typeof(*), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.var"#4153#back#1387"{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(*), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.var"#2863#back#683"{Zygote.var"#map_back#677"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{NTuple{4, Nothing}, Tuple{}}, Molly.var"#983#back#694"{Zygote.var"#bc_fwd_back#1401"{CuArray{ForwardDiff.Dual{Nothing, Float32, 2}, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}}, Val{2}}}}}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{Tuple{Nothing, Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1169"{Tuple{Nothing, Nothing, Nothing}}}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Ref}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Base.RefValue}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.ZBack{ChainRules.var"#fieldtype_pullback#420"}, Zygote.Pullback{Tuple{typeof(convert), Type{Unitful.FreeUnits{(), NoDims, nothing}}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{}}, Zygote.var"#2197#back#309"{Zygote.Jnew{Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}, Base.RefValue{Any}, false}}}}}}}}}}}}}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:dist_cutoff, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, Float32}}, Zygote.Pullback{Tuple{typeof(unit), Type{Float32}}, Tuple{Zygote.var"#1973#back#190"{Zygote.var"#186#189"{Zygote.Context{false}, GlobalRef, Unitful.FreeUnits{(), NoDims, nothing}}}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:coords, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:force_units, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}}}, Zygote.Pullback{Tuple{typeof(*), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.var"#4153#back#1387"{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(*), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.var"#2863#back#683"{Zygote.var"#map_back#677"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{NTuple{4, Nothing}, Tuple{}}, Molly.var"#983#back#694"{Molly.var"#bc_fwd_back#474"{3, Float32, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}, CuArray{SVector{3, ForwardDiff.Dual{Nothing, Float32, 4}}, 1, CUDA.Mem.DeviceBuffer}}}}}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{Tuple{Nothing, Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1169"{Tuple{Nothing, Nothing, Nothing}}}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Ref}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Base.RefValue}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.Pullback{Tuple{Type{Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{Zygote.ZBack{ChainRules.var"#fieldtype_pullback#420"}, Zygote.Pullback{Tuple{typeof(convert), Type{Unitful.FreeUnits{(), NoDims, nothing}}, Unitful.FreeUnits{(), NoDims, nothing}}, Tuple{}}, Zygote.var"#2197#back#309"{Zygote.Jnew{Base.RefValue{Unitful.FreeUnits{(), NoDims, nothing}}, Base.RefValue{Any}, false}}}}}}}}}}}}}}}, Zygote.var"#back#242"{Zygote.var"#2016#back#209"{Zygote.var"#back#207"{2, 2, Zygote.Context{false}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:offset_radii, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.ZBack{Molly.var"#gbsa_force_2_gpu_pullback#451"{3, Float32, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}}, Zygote.var"#2016#back#209"{Zygote.var"#back#207"{2, 1, Zygote.Context{false}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:scaled_offset_radii, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(eltype), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eltype_pullback#384"}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2016#back#209"{Zygote.var"#back#207"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{Molly.var"#gbsa_force_1_gpu_pullback#450"{3, Float32, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, Float32, Float32, Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Unitful.FreeUnits{(), NoDims, nothing}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:dist_cutoff, Zygote.Context{false}, ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, Float32}}, Zygote.var"#2016#back#209"{Zygote.var"#back#207"{2, 1, Zygote.Context{false}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#back#241"{Zygote.var"#2016#back#209"{Zygote.var"#back#207"{2, 1, Zygote.Context{false}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.ZBack{Molly.var"#reinterpret_pullback#425"{3, Float32}}, Zygote.Pullback{Tuple{typeof(vec), CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#2781#back#620"{Zygote.var"#614#618"{CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, Tuple{Int64}}}, Zygote.ZBack{ChainRules.var"#length_pullback#746"}}}, Zygote.var"#3752#back#1184"{Zygote.var"#1178#1182"{Tuple{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:coords, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#1909#back#157"{Zygote.var"#153#156"}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:boundary, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CubicBoundary{Float32}}}, Zygote.var"#3752#back#1184"{Zygote.var"#1178#1182"{Tuple{CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:boundary, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CubicBoundary{Float32}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:force_units, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}}}}})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [31] Pullback @ ~/.julia/dev/Molly/src/interactions/implicit_solvent.jl:1073 [inlined] [32] (::Zygote.Pullback{Tuple{Molly.var"##forces#130", Int64, typeof(forces), ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [33] Pullback @ ~/.julia/dev/Molly/src/interactions/implicit_solvent.jl:1061 [inlined] [34] (::Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads,), Tuple{Int64}}, typeof(forces), ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [35] Pullback @ ~/.julia/dev/Molly/src/force.jl:352 [inlined] [36] (::Zygote.Pullback{Tuple{Molly.var"##forces#86", Int64, typeof(forces), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [37] Pullback @ ~/.julia/dev/Molly/src/force.jl:320 [inlined] [38] (::Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads,), Tuple{Int64}}, typeof(forces), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [39] Pullback @ ~/.julia/dev/Molly/src/force.jl:41 [inlined] [40] (::Zygote.Pullback{Tuple{Molly.var"##accelerations#68", Int64, typeof(accelerations), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(/), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#2863#back#683"{Zygote.var"#map_back#677"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{NTuple{4, Nothing}, Tuple{}}, Molly.var"#1015#back#706"{Molly.var"#bc_fwd_back#474"{3, Float32, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, ForwardDiff.Dual{Nothing, Float32, 4}}, 1, CUDA.Mem.DeviceBuffer}}}}}, Zygote.var"#2156#back#289"{Zygote.var"#287#288"{Tuple{Tuple{Nothing, Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1169"{Tuple{Nothing, Nothing, Nothing}}}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(masses), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}}, Tuple{Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:masses, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}}, Zygote.Pullback{Tuple{Type{NamedTuple{(:n_threads,)}}, Tuple{Int64}}, Tuple{Zygote.Pullback{Tuple{Type{NamedTuple{(:n_threads,), Tuple{Int64}}}, Tuple{Int64}}, Tuple{Zygote.var"#2207#back#311"{Zygote.Jnew{NamedTuple{(:n_threads,), Tuple{Int64}}, Nothing, true}}}}}}, Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads,), Tuple{Int64}}, typeof(forces), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any}, Zygote.var"#2000#back#200"{typeof(identity)}}})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [41] Pullback @ ~/.julia/dev/Molly/src/force.jl:40 [inlined] [42] (::Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads,), Tuple{Int64}}, typeof(accelerations), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, NeighborList{CuArray{Tuple{Int32, Int32, Bool}, 1, CUDA.Mem.DeviceBuffer}}}, Any})(Δ::CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [43] Pullback @ ~/.julia/dev/Molly/src/simulators.jl:332 [inlined] [44] (::Zygote.Pullback{Tuple{Molly.var"##simulate!#167", Int64, Xoshiro, typeof(simulate!), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Langevin{Float32, Float32, Float32, Float32}, Int64}, Any})(Δ::Nothing) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [45] Pullback @ ~/.julia/dev/Molly/src/simulators.jl:321 [inlined] [46] (::Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads, :rng), Tuple{Int64, Xoshiro}}, typeof(simulate!), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Langevin{Float32, Float32, Float32, Float32}, Int64}, Any})(Δ::Nothing) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [47] Pullback @ ~/dms/training/grads_14.jl:189 [inlined] [48] (::Zygote.Pullback{Tuple{typeof(run_sim_chunk), CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Int64, UInt32}, Tuple{Zygote.ZBack{ChainRules.var"#AbstractRNG_pullback#2155"{Tuple{UInt32}}}, Zygote.var"#1973#back#190"{Zygote.var"#186#189"{Zygote.Context{false}, GlobalRef, Int64}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:velocities, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#1973#back#190"{Zygote.var"#186#189"{Zygote.Context{false}, GlobalRef, Langevin{Float32, Float32, Float32, Float32}}}, Zygote.Pullback{Tuple{Type{NamedTuple{(:n_threads, :rng)}}, Tuple{Int64, Xoshiro}}, Tuple{Zygote.Pullback{Tuple{Type{NamedTuple{(:n_threads, :rng), Tuple{Int64, Xoshiro}}}, Tuple{Int64, Xoshiro}}, Tuple{Zygote.var"#2207#back#311"{Zygote.Jnew{NamedTuple{(:n_threads, :rng), Tuple{Int64, Xoshiro}}, Nothing, true}}}}}}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:coords, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:atoms, :pairwise_inters, :specific_inter_lists, :general_inters, :coords, :velocities, :boundary, :neighbor_finder, :force_units, :energy_units), Tuple{CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Type{System}}, Any}, Zygote.Pullback{Tuple{Type{NamedTuple{(:atoms, :pairwise_inters, :specific_inter_lists, :general_inters, :coords, :velocities, :boundary, :neighbor_finder, :force_units, :energy_units)}}, Tuple{CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{Zygote.Pullback{Tuple{Type{NamedTuple{(:atoms, :pairwise_inters, :specific_inter_lists, :general_inters, :coords, :velocities, :boundary, :neighbor_finder, :force_units, :energy_units), Tuple{CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}}, Tuple{CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{Zygote.var"#2207#back#311"{Zygote.Jnew{NamedTuple{(:atoms, :pairwise_inters, :specific_inter_lists, :general_inters, :coords, :velocities, :boundary, :neighbor_finder, :force_units, :energy_units), Tuple{CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Nothing, true}}}}}}, Zygote.Pullback{Tuple{typeof(Core.kwcall), NamedTuple{(:n_threads, :rng), Tuple{Int64, Xoshiro}}, typeof(simulate!), System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{Any}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Langevin{Float32, Float32, Float32, Float32}, Int64}, Any}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:neighbor_finder, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}}}, Zygote.var"#2000#back#200"{typeof(identity)}, Zygote.var"#2167#back#299"{Zygote.var"#back#298"{:boundary, Zygote.Context{false}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, CubicBoundary{Float32}}}, Zygote.var"#2000#back#200"{typeof(identity)}}})(Δ::Tuple{CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, Nothing}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [49] (::Zygote.var"#pullback_checkpointed#120"{Zygote.Context{false}, typeof(run_sim_chunk), Tuple{CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Int64, UInt32}})(Δy::Tuple{CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, Nothing}) @ Zygote ~/.julia/dev/Zygote/src/lib/grad.jl:25 [50] Pullback @ ~/dms/training/grads_14.jl:238 [inlined] [51] (::Zygote.Pullback{Tuple{typeof(loss), Dict{String, Float32}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Int64}, Any})(Δ::Float32) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0 [52] (::Zygote.var"#75#76"{Zygote.Pullback{Tuple{typeof(loss), Dict{String, Float32}, System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, Int64}, Any}})(Δ::Float32) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface.jl:45 [53] gradient(::Function, ::Dict{String, Float32}, ::Vararg{Any}) @ Zygote ~/.julia/dev/Zygote/src/compiler/interface.jl:97 [54] print_grads(io::Base.DevNull, params_dic::Dict{String, Float32}, s_ref::System{3, true, Float32, CuArray{Atom{Float32, Float32, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}, Vector{AtomData}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{LennardJones{false, DistanceCutoff{Float32, Float32, Float32}, Float32, Int64, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}, Coulomb{DistanceCutoff{Float32, Float32, Float32}, Float32, Float32, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}}}, Tuple{InteractionList2Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicBond{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList3Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{HarmonicAngle{Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}, InteractionList4Atoms{CuArray{Int32, 1, CUDA.Mem.DeviceBuffer}, CuArray{PeriodicTorsion{6, Float32, Float32}, 1, CUDA.Mem.DeviceBuffer}}}, Tuple{ImplicitSolventGBN2{Float32, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Float32, Float32, Float32, CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}, SubArray{Float32, 2, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{CuArray{Int64, 2, CUDA.Mem.DeviceBuffer}}, false}}}, Tuple{}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CuArray{SVector{3, Float32}, 1, CUDA.Mem.DeviceBuffer}, CubicBoundary{Float32}, DistanceNeighborFinder{CuArray{Bool, 2, CUDA.Mem.DeviceBuffer}, Float32}, Tuple{}, Unitful.FreeUnits{(), NoDims, nothing}, Unitful.FreeUnits{(), NoDims, nothing}, Float32}, n_steps::Int64) @ Main ~/dms/training/grads_14.jl:318