[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelLowering.cpp
Chris Lattner
lattner at cs.uiuc.edu
Wed Sep 13 10:05:08 PDT 2006
Changes in directory llvm/lib/Target/X86:
X86ISelLowering.cpp updated: 1.257 -> 1.258
---
Log message:
Turn X < 0 -> TEST X,X js
---
Diffs of the changes: (+11 -8)
X86ISelLowering.cpp | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 deletions(-)
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.257 llvm/lib/Target/X86/X86ISelLowering.cpp:1.258
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.257 Wed Sep 13 11:56:12 2006
+++ llvm/lib/Target/X86/X86ISelLowering.cpp Wed Sep 13 12:04:54 2006
@@ -1873,14 +1873,17 @@
SelectionDAG &DAG) {
X86CC = X86ISD::COND_INVALID;
if (!isFP) {
- if (SetCCOpcode == ISD::SETGT) {
- if (ConstantSDNode *RHSC = dyn_cast<ConstantSDNode>(RHS))
- if (RHSC->isAllOnesValue()) {
- // X > -1 -> X == 0, jump on sign.
- RHS = DAG.getConstant(0, RHS.getValueType());
- X86CC = X86ISD::COND_NS;
- return true;
- }
+ if (ConstantSDNode *RHSC = dyn_cast<ConstantSDNode>(RHS)) {
+ if (SetCCOpcode == ISD::SETGT && RHSC->isAllOnesValue()) {
+ // X > -1 -> X == 0, jump !sign.
+ RHS = DAG.getConstant(0, RHS.getValueType());
+ X86CC = X86ISD::COND_NS;
+ return true;
+ } else if (SetCCOpcode == ISD::SETLT && RHSC->isNullValue()) {
+ // X < 0 -> X == 0, jump on sign.
+ X86CC = X86ISD::COND_S;
+ return true;
+ }
}
switch (SetCCOpcode) {
More information about the llvm-commits
mailing list