diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2012-07-17 08:31:11 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2012-07-17 08:31:11 +0000 |
| commit | f5c0539092996771824893309f311378e719e32e (patch) | |
| tree | 663aab687ee89fd69fe2a041ae03044786f386e1 /lib/Target | |
| parent | 7072551febe782e8256828c5d3da20792a762b1f (diff) | |
| download | external_llvm-f5c0539092996771824893309f311378e719e32e.zip external_llvm-f5c0539092996771824893309f311378e719e32e.tar.gz external_llvm-f5c0539092996771824893309f311378e719e32e.tar.bz2 | |
Implement r160312 as target indepedenet dag combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160354 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
| -rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 347f197..4f642ec 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -3059,50 +3059,6 @@ static unsigned TranslateX86CC(ISD::CondCode SetCCOpcode, bool isFP, RHS = DAG.getConstant(0, RHS.getValueType()); return X86::COND_LE; } - if (SetCCOpcode == ISD::SETULT || SetCCOpcode == ISD::SETUGE) { - unsigned TrailZeros = RHSC->getAPIntValue().countTrailingZeros(); - if (TrailZeros >= 32) { - // The constant doesn't fit in cmp immediate field. Right shift LHS by - // the # of trailing zeros and truncate it to 32-bit. Then compare - // against shifted RHS. - assert(LHS.getValueType() == MVT::i64 && "Expecting a 64-bit cmp!"); - DebugLoc dl = LHS.getDebugLoc(); - LHS = DAG.getNode(ISD::TRUNCATE, dl, MVT::i32, - DAG.getNode(ISD::SRL, dl, MVT::i64, LHS, - DAG.getConstant(TrailZeros, MVT::i8))); - uint64_t C = RHSC->getZExtValue() >> TrailZeros; - - if (SetCCOpcode == ISD::SETULT) { - // X < 0x300000000 -> (X >> 32) < 3 - // X < 0x100000000 -> (X >> 32) == 0 - // X < 0x200000000 -> (X >> 33) == 0 - if (C == 1) { - RHS = DAG.getConstant(0, MVT::i32); - return X86::COND_E; - } - RHS = DAG.getConstant(C, MVT::i32); - return X86::COND_B; - } else /* SetCCOpcode == ISD::SETUGE */ { - // X >= 0x100000000 -> (X >> 32) >= 1 - RHS = DAG.getConstant(C, MVT::i32); - return X86::COND_AE; - } - } - } - if (SetCCOpcode == ISD::SETUGT) { - unsigned TrailOnes = RHSC->getAPIntValue().countTrailingOnes(); - if (TrailOnes >= 32 && !RHSC->isAllOnesValue()) { - assert(LHS.getValueType() == MVT::i64 && "Expecting a 64-bit cmp!"); - DebugLoc dl = LHS.getDebugLoc(); - LHS = DAG.getNode(ISD::TRUNCATE, dl, MVT::i32, - DAG.getNode(ISD::SRL, dl, MVT::i64, LHS, - DAG.getConstant(TrailOnes, MVT::i8))); - uint64_t C = (RHSC->getZExtValue()+1) >> TrailOnes; - // X > 0x0ffffffff -> (X >> 32) >= 1 - RHS = DAG.getConstant(C, MVT::i32); - return X86::COND_AE; - } - } } switch (SetCCOpcode) { |
