aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/PPC32ISelSimple.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/PowerPC/PPC32ISelSimple.cpp')
-rw-r--r--lib/Target/PowerPC/PPC32ISelSimple.cpp30
1 files changed, 9 insertions, 21 deletions
diff --git a/lib/Target/PowerPC/PPC32ISelSimple.cpp b/lib/Target/PowerPC/PPC32ISelSimple.cpp
index c8fde63e93..afb96f732d 100644
--- a/lib/Target/PowerPC/PPC32ISelSimple.cpp
+++ b/lib/Target/PowerPC/PPC32ISelSimple.cpp
@@ -32,9 +32,6 @@
using namespace llvm;
namespace {
- Statistic<>
- MultiUseGEP("ppc-codegen", "Number of GEPs folded with more than one use");
-
/// TypeClass - Used by the PowerPC backend to group LLVM types by their basic
/// PPC Representation.
///
@@ -491,34 +488,27 @@ bool PPC32ISel::canUseAsImmediateForOpcode(ConstantInt *CI, unsigned Operator) {
ConstantUInt *Op1Cu;
// ADDI, Compare, and non-indexed Load take SIMM
- bool cond1 = (Operator == 0)
- && (Op1Cs = dyn_cast<ConstantSInt>(CI))
- && (Op1Cs->getValue() <= 32767)
- && (Op1Cs->getValue() >= -32768);
+ bool cond1 = (Operator == 0)
+ && ((int32_t)CI->getRawValue() <= 32767)
+ && ((int32_t)CI->getRawValue() >= -32768);
// SUBI takes -SIMM since it is a mnemonic for ADDI
bool cond2 = (Operator == 1)
- && (Op1Cs = dyn_cast<ConstantSInt>(CI))
- && (Op1Cs->getValue() <= 32768)
- && (Op1Cs->getValue() >= -32767);
+ && ((int32_t)CI->getRawValue() <= 32768)
+ && ((int32_t)CI->getRawValue() >= -32767);
// ANDIo, ORI, and XORI take unsigned values
bool cond3 = (Operator >= 2)
&& (Op1Cs = dyn_cast<ConstantSInt>(CI))
&& (Op1Cs->getValue() >= 0)
- && (Op1Cs->getValue() <= 32767);
-
- // ADDI and SUBI take SIMMs, so we have to make sure the UInt would fit
- bool cond4 = (Operator < 2)
- && (Op1Cu = dyn_cast<ConstantUInt>(CI))
- && (Op1Cu->getValue() <= 32767);
+ && (Op1Cs->getValue() <= 65535);
// ANDIo, ORI, and XORI take UIMMs, so they can be larger
- bool cond5 = (Operator >= 2)
+ bool cond4 = (Operator >= 2)
&& (Op1Cu = dyn_cast<ConstantUInt>(CI))
&& (Op1Cu->getValue() <= 65535);
- if (cond1 || cond2 || cond3 || cond4 || cond5)
+ if (cond1 || cond2 || cond3 || cond4)
return true;
return false;
@@ -3321,10 +3311,8 @@ void PPC32ISel::emitGEPOperation(MachineBasicBlock *MBB,
GetElementPtrInst *GEPI, bool GEPIsFolded) {
// If we've already emitted this particular GEP, just return to avoid
// multiple definitions of the base register.
- if (GEPIsFolded && (GEPMap[GEPI].base != 0)) {
- MultiUseGEP++;
+ if (GEPIsFolded && (GEPMap[GEPI].base != 0))
return;
- }
Value *Src = GEPI->getOperand(0);
User::op_iterator IdxBegin = GEPI->op_begin()+1;