RTSA-lab01-CacheAnalysis/test/whet.ll

453 lines
20 KiB
LLVM

; 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}