Emit integer x<1 as x<=0, as comparisons with zero (now includeing

64-bit) can use test instead of cmp with an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42026 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2007-09-17 14:49:27 +00:00
parent 11f7bfbb83
commit 5f6913cecd
2 changed files with 12 additions and 0 deletions

View File

@ -1546,6 +1546,11 @@ static bool translateX86CC(ISD::CondCode SetCCOpcode, bool isFP,
// X < 0 -> X == 0, jump on sign.
X86CC = X86::COND_S;
return true;
} else if (SetCCOpcode == ISD::SETLT && RHSC->getValue() == 1) {
// X < 1 -> X <= 0
RHS = DAG.getConstant(0, RHS.getValueType());
X86CC = X86::COND_LE;
return true;
}
}

7
test/CodeGen/X86/cmp1.ll Normal file
View File

@ -0,0 +1,7 @@
; RUN: llvm-as < %s | llc -march=x86-64 | grep -v cmp
define i64 @foo(i64 %x) {
%t = icmp slt i64 %x, 1
%r = zext i1 %t to i64
ret i64 %r
}