Home | History | Annotate | Download | only in InstCombine
      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 }
     48