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) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits