fix a globalopt crash on two Adobe-C++ testcases that the recent
[llvm.git] / test / Transforms / InstCombine / 2008-11-08-FCmp.ll
blobc636288661b1c6f57345e75c7a0d2e6d96460a08
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
2 ; PR3021
4 ; When inst combining an FCMP with the LHS coming from a uitofp instruction, we
5 ; can't lower it to signed ICMP instructions.
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
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
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
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
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
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