c636288661b1c6f57345e75c7a0d2e6d96460a08
[oota-llvm.git] / test / Transforms / InstCombine / 2008-11-08-FCmp.ll
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
2 ; PR3021
3
4 ; When inst combining an FCMP with the LHS coming from a uitofp instruction, we
5 ; can't lower it to signed ICMP instructions.
6
7 define i1 @test1(i32 %val) {
8   %1 = uitofp i32 %val to double
9   %2 = fcmp ole double %1, 0.000000e+00
10 ; CHECK: icmp eq i32 %val, 0
11   ret i1 %2
12 }
13
14 define i1 @test2(i32 %val) {
15   %1 = uitofp i32 %val to double
16   %2 = fcmp olt double %1, 0.000000e+00
17   ret i1 %2
18 ; CHECK: ret i1 false
19 }
20
21 define i1 @test3(i32 %val) {
22   %1 = uitofp i32 %val to double
23   %2 = fcmp oge double %1, 0.000000e+00
24   ret i1 %2
25 ; CHECK: ret i1 true
26 }
27
28 define i1 @test4(i32 %val) {
29   %1 = uitofp i32 %val to double
30   %2 = fcmp ogt double %1, 0.000000e+00
31 ; CHECK: icmp ne i32 %val, 0
32   ret i1 %2
33 }
34
35 define i1 @test5(i32 %val) {
36   %1 = uitofp i32 %val to double
37   %2 = fcmp ogt double %1, -4.400000e+00
38   ret i1 %2
39 ; CHECK: ret i1 true
40 }
41
42 define i1 @test6(i32 %val) {
43   %1 = uitofp i32 %val to double
44   %2 = fcmp olt double %1, -4.400000e+00
45   ret i1 %2
46 ; CHECK: ret i1 false
47 }