; ModuleID = 'whet.c' source_filename = "whet.c" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" @t = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @t1 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @t2 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @n1 = dso_local local_unnamed_addr global i32 0, align 4 @n2 = dso_local local_unnamed_addr global i32 0, align 4 @n3 = dso_local local_unnamed_addr global i32 0, align 4 @n4 = dso_local local_unnamed_addr global i32 0, align 4 @n6 = dso_local local_unnamed_addr global i32 0, align 4 @n7 = dso_local local_unnamed_addr global i32 0, align 4 @n8 = dso_local local_unnamed_addr global i32 0, align 4 @n9 = dso_local local_unnamed_addr global i32 0, align 4 @n10 = dso_local local_unnamed_addr global i32 0, align 4 @n11 = dso_local local_unnamed_addr global i32 0, align 4 @x1 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @x4 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @x3 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @x2 = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @i = dso_local local_unnamed_addr global i32 0, align 4 @e1 = dso_local local_unnamed_addr global [4 x double] zeroinitializer, align 16 @j = dso_local local_unnamed_addr global i32 0, align 4 @k = dso_local local_unnamed_addr global i32 0, align 4 @l = dso_local local_unnamed_addr global i32 0, align 4 @y = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @x = dso_local local_unnamed_addr global double 0.000000e+00, align 8 @z = dso_local local_unnamed_addr global double 0.000000e+00, align 8 ; Function Attrs: nofree nounwind sspstrong uwtable define dso_local i32 @main() local_unnamed_addr #0 { store double 4.999750e-01, double* @t, align 8, !tbaa !5 store double 5.002500e-01, double* @t1, align 8, !tbaa !5 store double 2.000000e+00, double* @t2, align 8, !tbaa !5 store i32 0, i32* @n1, align 4, !tbaa !9 store i32 120, i32* @n2, align 4, !tbaa !9 store i32 140, i32* @n3, align 4, !tbaa !9 store i32 3450, i32* @n4, align 4, !tbaa !9 store i32 2100, i32* @n6, align 4, !tbaa !9 store i32 320, i32* @n7, align 4, !tbaa !9 store i32 8990, i32* @n8, align 4, !tbaa !9 store i32 6160, i32* @n9, align 4, !tbaa !9 store i32 0, i32* @n10, align 4, !tbaa !9 store i32 930, i32* @n11, align 4, !tbaa !9 store double 1.000000e+00, double* @x1, align 8, !tbaa !5 store double -1.000000e+00, double* @x4, align 8, !tbaa !5 store double -1.000000e+00, double* @x3, align 8, !tbaa !5 store double -1.000000e+00, double* @x2, align 8, !tbaa !5 store i32 1, i32* @i, align 4, !tbaa !9 store double 1.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 0), align 16, !tbaa !5 store double -1.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 3), align 8, !tbaa !5 store double -1.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 store double -1.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 br label %2 1: ; preds = %2 store i32 121, i32* @i, align 4, !tbaa !9 store double %11, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 0), align 16, !tbaa !5 store double %15, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 store double %19, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 store double %23, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 3), align 8, !tbaa !5 br label %26 2: ; preds = %0, %2 %3 = phi i32 [ 1, %0 ], [ %24, %2 ] %4 = phi double [ 1.000000e+00, %0 ], [ %11, %2 ] %5 = phi double [ -1.000000e+00, %0 ], [ %15, %2 ] %6 = phi double [ -1.000000e+00, %0 ], [ %19, %2 ] %7 = phi double [ -1.000000e+00, %0 ], [ %23, %2 ] %8 = fadd double %4, %5 %9 = fadd double %8, %6 %10 = fsub double %9, %7 %11 = fmul double %10, 4.999750e-01 %12 = fadd double %5, %11 %13 = fsub double %12, %6 %14 = fadd double %7, %13 %15 = fmul double %14, 4.999750e-01 %16 = fsub double %11, %15 %17 = fadd double %6, %16 %18 = fadd double %7, %17 %19 = fmul double %18, 4.999750e-01 %20 = fsub double %15, %11 %21 = fadd double %20, %19 %22 = fadd double %7, %21 %23 = fmul double %22, 4.999750e-01 %24 = add nuw nsw i32 %3, 1 %25 = icmp eq i32 %24, 121 br i1 %25, label %1, label %2, !llvm.loop !11 26: ; preds = %1, %56 %27 = phi i32 [ 1, %1 ], [ %57, %56 ] %28 = phi double [ %15, %1 ], [ %45, %56 ] %29 = phi double [ %19, %1 ], [ %49, %56 ] %30 = phi double [ %23, %1 ], [ %53, %56 ] %31 = phi double [ %11, %1 ], [ %41, %56 ] br label %32 32: ; preds = %32, %26 %33 = phi double [ %31, %26 ], [ %41, %32 ] %34 = phi double [ %30, %26 ], [ %53, %32 ] %35 = phi double [ %29, %26 ], [ %49, %32 ] %36 = phi double [ %28, %26 ], [ %45, %32 ] %37 = phi i32 [ 0, %26 ], [ %54, %32 ] %38 = fadd double %36, %33 %39 = fadd double %35, %38 %40 = fsub double %39, %34 %41 = fmul double %40, 4.999750e-01 %42 = fadd double %36, %41 %43 = fsub double %42, %35 %44 = fadd double %34, %43 %45 = fmul double %44, 4.999750e-01 %46 = fsub double %41, %45 %47 = fadd double %35, %46 %48 = fadd double %34, %47 %49 = fmul double %48, 4.999750e-01 %50 = fsub double %45, %41 %51 = fadd double %50, %49 %52 = fadd double %34, %51 %53 = fmul double %52, 5.000000e-01 %54 = add nuw nsw i32 %37, 1 %55 = icmp eq i32 %54, 6 br i1 %55, label %56, label %32 56: ; preds = %32 %57 = add nuw nsw i32 %27, 1 %58 = icmp eq i32 %57, 141 br i1 %58, label %59, label %26, !llvm.loop !14 59: ; preds = %56 store i32 141, i32* @i, align 4, !tbaa !9 store double %45, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 store double %49, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 store double %53, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 3), align 8, !tbaa !5 store double %41, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 0), align 16, !tbaa !5 store i32 1, i32* @j, align 4, !tbaa !9 store i32 3451, i32* @i, align 4, !tbaa !9 store i32 1, i32* @j, align 4, !tbaa !9 store i32 2, i32* @k, align 4, !tbaa !9 store i32 3, i32* @l, align 4, !tbaa !9 store double 6.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 store double 6.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 0), align 16, !tbaa !5 br label %60 60: ; preds = %59, %60 %61 = phi i32 [ 1, %59 ], [ %62, %60 ] %62 = add nuw nsw i32 %61, 1 %63 = icmp eq i32 %62, 2101 br i1 %63, label %64, label %60, !llvm.loop !15 64: ; preds = %60 store i32 2101, i32* @i, align 4, !tbaa !9 store i32 1, i32* @j, align 4, !tbaa !9 store i32 2, i32* @k, align 4, !tbaa !9 store i32 3, i32* @l, align 4, !tbaa !9 store double 5.000000e-01, double* @y, align 8, !tbaa !5 store double 5.000000e-01, double* @x, align 8, !tbaa !5 store i32 1, i32* @i, align 4, !tbaa !9 %65 = load i32, i32* @n7, align 4, !tbaa !9 %66 = icmp slt i32 %65, 1 br i1 %66, label %114, label %67 67: ; preds = %64, %67 %68 = load double, double* @t, align 8, !tbaa !5 %69 = load double, double* @t2, align 8, !tbaa !5 %70 = load double, double* @x, align 8, !tbaa !5 %71 = call double @sin(double %70) #4 %72 = fmul double %69, %71 %73 = load double, double* @x, align 8, !tbaa !5 %74 = call double @cos(double %73) #4 %75 = fmul double %72, %74 %76 = load double, double* @x, align 8, !tbaa !5 %77 = load double, double* @y, align 8, !tbaa !5 %78 = fadd double %76, %77 %79 = call double @cos(double %78) #4 %80 = load double, double* @x, align 8, !tbaa !5 %81 = load double, double* @y, align 8, !tbaa !5 %82 = fsub double %80, %81 %83 = call double @cos(double %82) #4 %84 = fadd double %79, %83 %85 = fadd double %84, -1.000000e+00 %86 = fdiv double %75, %85 %87 = call double @atan(double %86) #4 %88 = fmul double %68, %87 store double %88, double* @x, align 8, !tbaa !5 %89 = load double, double* @t, align 8, !tbaa !5 %90 = load double, double* @t2, align 8, !tbaa !5 %91 = load double, double* @y, align 8, !tbaa !5 %92 = call double @sin(double %91) #4 %93 = fmul double %90, %92 %94 = load double, double* @y, align 8, !tbaa !5 %95 = call double @cos(double %94) #4 %96 = fmul double %93, %95 %97 = load double, double* @x, align 8, !tbaa !5 %98 = load double, double* @y, align 8, !tbaa !5 %99 = fadd double %97, %98 %100 = call double @cos(double %99) #4 %101 = load double, double* @x, align 8, !tbaa !5 %102 = load double, double* @y, align 8, !tbaa !5 %103 = fsub double %101, %102 %104 = call double @cos(double %103) #4 %105 = fadd double %100, %104 %106 = fadd double %105, -1.000000e+00 %107 = fdiv double %96, %106 %108 = call double @atan(double %107) #4 %109 = fmul double %89, %108 store double %109, double* @y, align 8, !tbaa !5 %110 = load i32, i32* @i, align 4, !tbaa !9 %111 = add nsw i32 %110, 1 store i32 %111, i32* @i, align 4, !tbaa !9 %112 = load i32, i32* @n7, align 4, !tbaa !9 %113 = icmp slt i32 %110, %112 br i1 %113, label %67, label %114, !llvm.loop !16 114: ; preds = %67, %64 store double 1.000000e+00, double* @z, align 8, !tbaa !5 store double 1.000000e+00, double* @y, align 8, !tbaa !5 store double 1.000000e+00, double* @x, align 8, !tbaa !5 %115 = load i32, i32* @n8, align 4, !tbaa !9 %116 = load double, double* @t, align 8 %117 = fmul double %116, 2.000000e+00 %118 = icmp slt i32 %115, 1 br i1 %118, label %126, label %119 119: ; preds = %114 %120 = fadd double %117, 1.000000e+00 %121 = fmul double %116, %120 %122 = fadd double %117, %121 %123 = load double, double* @t2, align 8 %124 = fdiv double %122, %123 store double %124, double* @z, align 8, !tbaa !5 %125 = add i32 %115, 1 br label %126 126: ; preds = %119, %114 %127 = phi i32 [ 1, %114 ], [ %125, %119 ] store i32 %127, i32* @i, align 4, !tbaa !9 store i32 1, i32* @j, align 4, !tbaa !9 store i32 2, i32* @k, align 4, !tbaa !9 store i32 3, i32* @l, align 4, !tbaa !9 store double 1.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 0), align 16, !tbaa !5 store double 2.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 store double 3.000000e+00, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 %128 = load i32, i32* @n9, align 4, !tbaa !9 %129 = icmp slt i32 %128, 1 br i1 %129, label %141, label %130 130: ; preds = %126 %131 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 %132 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 3), align 8, !tbaa !5 %133 = add i32 %128, 1 br label %134 134: ; preds = %130, %134 %135 = phi double [ %132, %130 ], [ %136, %134 ] %136 = phi double [ %131, %130 ], [ %135, %134 ] %137 = phi i32 [ 1, %130 ], [ %138, %134 ] %138 = add nuw i32 %137, 1 %139 = icmp eq i32 %137, %128 br i1 %139, label %140, label %134, !llvm.loop !17 140: ; preds = %134 store double %135, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 2), align 16, !tbaa !5 store double %136, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 1), align 8, !tbaa !5 store double %136, double* getelementptr inbounds ([4 x double], [4 x double]* @e1, i64 0, i64 3), align 8, !tbaa !5 br label %141 141: ; preds = %140, %126 %142 = phi i32 [ %133, %140 ], [ 1, %126 ] store i32 %142, i32* @i, align 4, !tbaa !9 store i32 2, i32* @j, align 4, !tbaa !9 store i32 3, i32* @k, align 4, !tbaa !9 %143 = load i32, i32* @n10, align 4, !tbaa !9 %144 = icmp slt i32 %143, 1 br i1 %144, label %156, label %145 145: ; preds = %141 %146 = load i32, i32* @j, align 4, !tbaa !9 %147 = load i32, i32* @k, align 4, !tbaa !9 %148 = add i32 %143, 1 br label %149 149: ; preds = %145, %149 %150 = phi i32 [ %147, %145 ], [ %151, %149 ] %151 = phi i32 [ %146, %145 ], [ %150, %149 ] %152 = phi i32 [ 1, %145 ], [ %153, %149 ] %153 = add nuw i32 %152, 1 %154 = icmp eq i32 %152, %143 br i1 %154, label %155, label %149, !llvm.loop !18 155: ; preds = %149 store i32 %150, i32* @j, align 4, !tbaa !9 store i32 %151, i32* @k, align 4, !tbaa !9 br label %156 156: ; preds = %155, %141 %157 = phi i32 [ %148, %155 ], [ 1, %141 ] store i32 %157, i32* @i, align 4, !tbaa !9 store double 7.500000e-01, double* @x, align 8, !tbaa !5 store i32 1, i32* @i, align 4, !tbaa !9 %158 = load i32, i32* @n11, align 4, !tbaa !9 %159 = icmp slt i32 %158, 1 br i1 %159, label %171, label %160 160: ; preds = %156, %160 %161 = load double, double* @x, align 8, !tbaa !5 %162 = call double @log(double %161) #4 %163 = load double, double* @t1, align 8, !tbaa !5 %164 = fdiv double %162, %163 %165 = call double @exp(double %164) #4 %166 = call double @sqrt(double %165) #4 store double %166, double* @x, align 8, !tbaa !5 %167 = load i32, i32* @i, align 4, !tbaa !9 %168 = add nsw i32 %167, 1 store i32 %168, i32* @i, align 4, !tbaa !9 %169 = load i32, i32* @n11, align 4, !tbaa !9 %170 = icmp slt i32 %167, %169 br i1 %170, label %160, label %171, !llvm.loop !19 171: ; preds = %160, %156 ret i32 0 } ; Function Attrs: mustprogress nofree nounwind willreturn declare double @atan(double) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn declare double @sin(double) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn declare double @cos(double) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn declare double @sqrt(double) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn declare double @exp(double) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn declare double @log(double) local_unnamed_addr #1 ; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable define dso_local i32 @pa(double* nocapture %0) local_unnamed_addr #2 { %2 = getelementptr inbounds double, double* %0, i64 1 %3 = getelementptr inbounds double, double* %0, i64 2 %4 = getelementptr inbounds double, double* %0, i64 3 %5 = load double, double* %2, align 8, !tbaa !5 %6 = load double, double* %3, align 8, !tbaa !5 %7 = load double, double* %4, align 8, !tbaa !5 br label %8 8: ; preds = %8, %1 %9 = phi double [ %7, %1 ], [ %32, %8 ] %10 = phi double [ %6, %1 ], [ %27, %8 ] %11 = phi double [ %5, %1 ], [ %23, %8 ] %12 = phi i32 [ 0, %1 ], [ %33, %8 ] %13 = load double, double* %0, align 8, !tbaa !5 %14 = fadd double %13, %11 %15 = fadd double %14, %10 %16 = fsub double %15, %9 %17 = load double, double* @t, align 8, !tbaa !5 %18 = fmul double %16, %17 store double %18, double* %0, align 8, !tbaa !5 %19 = fadd double %11, %18 %20 = fsub double %19, %10 %21 = fadd double %9, %20 %22 = load double, double* @t, align 8, !tbaa !5 %23 = fmul double %22, %21 %24 = fsub double %18, %23 %25 = fadd double %10, %24 %26 = fadd double %9, %25 %27 = fmul double %22, %26 %28 = fsub double %23, %18 %29 = fadd double %28, %27 %30 = fadd double %9, %29 %31 = load double, double* @t2, align 8, !tbaa !5 %32 = fdiv double %30, %31 %33 = add nuw nsw i32 %12, 1 %34 = icmp eq i32 %33, 6 br i1 %34, label %35, label %8 35: ; preds = %8 store double %23, double* %2, align 8, !tbaa !5 store double %27, double* %3, align 8, !tbaa !5 store double %32, double* %4, align 8, !tbaa !5 ret i32 undef } ; Function Attrs: mustprogress nofree norecurse nosync nounwind sspstrong uwtable willreturn define dso_local i32 @p3(double %0, double %1, double* nocapture %2) local_unnamed_addr #3 { %4 = load double, double* @t, align 8, !tbaa !5 %5 = fadd double %0, %1 %6 = fmul double %5, %4 %7 = fadd double %6, %1 %8 = fmul double %4, %7 %9 = fadd double %6, %8 %10 = load double, double* @t2, align 8, !tbaa !5 %11 = fdiv double %9, %10 store double %11, double* %2, align 8, !tbaa !5 ret i32 undef } ; Function Attrs: mustprogress nofree norecurse nosync nounwind sspstrong uwtable willreturn define dso_local i32 @p0() local_unnamed_addr #3 { %1 = load i32, i32* @k, align 4, !tbaa !9 %2 = sext i32 %1 to i64 %3 = getelementptr inbounds [4 x double], [4 x double]* @e1, i64 0, i64 %2 %4 = load double, double* %3, align 8, !tbaa !5 %5 = load i32, i32* @j, align 4, !tbaa !9 %6 = sext i32 %5 to i64 %7 = getelementptr inbounds [4 x double], [4 x double]* @e1, i64 0, i64 %6 store double %4, double* %7, align 8, !tbaa !5 %8 = load i32, i32* @l, align 4, !tbaa !9 %9 = sext i32 %8 to i64 %10 = getelementptr inbounds [4 x double], [4 x double]* @e1, i64 0, i64 %9 %11 = load double, double* %10, align 8, !tbaa !5 store double %11, double* %3, align 8, !tbaa !5 %12 = load double, double* %7, align 8, !tbaa !5 store double %12, double* %10, align 8, !tbaa !5 ret i32 undef } attributes #0 = { nofree nounwind sspstrong uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree nounwind willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree norecurse nosync nounwind sspstrong uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nofree norecurse nosync nounwind sspstrong uwtable willreturn "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} !llvm.ident = !{!4} !0 = !{i32 1, !"wchar_size", i32 4} !1 = !{i32 7, !"PIC Level", i32 2} !2 = !{i32 7, !"PIE Level", i32 2} !3 = !{i32 7, !"uwtable", i32 1} !4 = !{!"clang version 13.0.1"} !5 = !{!6, !6, i64 0} !6 = !{!"double", !7, i64 0} !7 = !{!"omnipotent char", !8, i64 0} !8 = !{!"Simple C/C++ TBAA"} !9 = !{!10, !10, i64 0} !10 = !{!"int", !7, i64 0} !11 = distinct !{!11, !12, !13} !12 = !{!"llvm.loop.mustprogress"} !13 = !{!"llvm.loop.unroll.disable"} !14 = distinct !{!14, !12, !13} !15 = distinct !{!15, !12, !13} !16 = distinct !{!16, !12, !13} !17 = distinct !{!17, !12, !13} !18 = distinct !{!18, !12, !13} !19 = distinct !{!19, !12, !13}