diff options
Diffstat (limited to 'test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll')
-rw-r--r-- | test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll b/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll new file mode 100644 index 0000000..79a2f1f --- /dev/null +++ b/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll @@ -0,0 +1,316 @@ +; RUN: opt < %s -simplifycfg -instcombine -S | grep 0x7FF8000000000000 | count 7 +; RUN: opt < %s -simplifycfg -instcombine -S | grep 0x7FF00000FFFFFFFF | count 5 +; RUN: opt < %s -simplifycfg -instcombine -S | grep {0\\.0} | count 3 +; RUN: opt < %s -simplifycfg -instcombine -S | grep {3\\.5} | count 1 +; + +; ModuleID = 'apf.c' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" +target triple = "i386-apple-darwin9.6" +@"\01LC" = internal constant [4 x i8] c"%f\0A\00" ; <[4 x i8]*> [#uses=1] + +define void @foo1() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF0000000000000, float* %x, align 4 + store float 0x7FF8000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +declare i32 @printf(i8*, ...) nounwind + +define void @foo2() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF0000000000000, float* %x, align 4 + store float 0.000000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo3() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF0000000000000, float* %x, align 4 + store float 3.500000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo4() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF0000000000000, float* %x, align 4 + store float 0x7FF0000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo5() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF8000000000000, float* %x, align 4 + store float 0x7FF0000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo6() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF8000000000000, float* %x, align 4 + store float 0.000000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo7() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF8000000000000, float* %x, align 4 + store float 3.500000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo8() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0x7FF8000000000000, float* %x, align 4 + store float 0x7FF8000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo9() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0.000000e+00, float* %x, align 4 + store float 0x7FF8000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo10() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0.000000e+00, float* %x, align 4 + store float 0x7FF0000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo11() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0.000000e+00, float* %x, align 4 + store float 0.000000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo12() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 0.000000e+00, float* %x, align 4 + store float 3.500000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo13() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 3.500000e+00, float* %x, align 4 + store float 0x7FF8000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo14() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 3.500000e+00, float* %x, align 4 + store float 0x7FF0000000000000, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo15() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 3.500000e+00, float* %x, align 4 + store float 0.000000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} + +define void @foo16() nounwind { +entry: + %y = alloca float ; <float*> [#uses=2] + %x = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store float 3.500000e+00, float* %x, align 4 + store float 3.500000e+00, float* %y, align 4 + %0 = load float* %y, align 4 ; <float> [#uses=1] + %1 = fpext float %0 to double ; <double> [#uses=1] + %2 = load float* %x, align 4 ; <float> [#uses=1] + %3 = fpext float %2 to double ; <double> [#uses=1] + %4 = frem double %3, %1 ; <double> [#uses=1] + %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + br label %return + +return: ; preds = %entry + ret void +} |