summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorKalle Raiskila <kalle.raiskila@nokia.com>2010-11-29 10:08:09 +0000
committerKalle Raiskila <kalle.raiskila@nokia.com>2010-11-29 10:08:09 +0000
commit1842ada3ad766802d4f7c194ff54e5f5077bd4ca (patch)
tree48c8a9e1c09788ddad3d3fafa6607480467659bd /llvm/lib
parent427add8f2445d2bb0d67a44fe178618d7bd36a87 (diff)
downloadbcm5719-llvm-1842ada3ad766802d4f7c194ff54e5f5077bd4ca.tar.gz
bcm5719-llvm-1842ada3ad766802d4f7c194ff54e5f5077bd4ca.zip
Allow machine LICM to do its job on SPU.
-return a sensible value for register pressure -add pattern to 'ila' instrucion llvm-svn: 120285
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/CellSPU/SPUISelLowering.h8
-rw-r--r--llvm/lib/Target/CellSPU/SPUInstrInfo.td2
2 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUISelLowering.h b/llvm/lib/Target/CellSPU/SPUISelLowering.h
index 82f10270db3..95d44afe37c 100644
--- a/llvm/lib/Target/CellSPU/SPUISelLowering.h
+++ b/llvm/lib/Target/CellSPU/SPUISelLowering.h
@@ -181,6 +181,14 @@ namespace llvm {
virtual bool isLegalAddressingMode(const AddrMode &AM,
const Type *Ty) const;
+
+ /// After allocating this many registers, the allocator should feel
+ /// register pressure. The value is a somewhat random guess, based on the
+ /// number of non callee saved registers in the C calling convention.
+ virtual unsigned getRegPressureLimit( const TargetRegisterClass *RC,
+ MachineFunction &MF) const{
+ return 50;
+ }
};
}
diff --git a/llvm/lib/Target/CellSPU/SPUInstrInfo.td b/llvm/lib/Target/CellSPU/SPUInstrInfo.td
index 7794f9d4459..6e06e47c496 100644
--- a/llvm/lib/Target/CellSPU/SPUInstrInfo.td
+++ b/llvm/lib/Target/CellSPU/SPUInstrInfo.td
@@ -416,7 +416,7 @@ multiclass ImmLoadAddress
def lo: ILARegInst<R32C, symbolLo, imm18>;
def lsa: ILAInst<(outs R32C:$rT), (ins symbolLSA:$val),
- [/* no pattern */]>;
+ [(set R32C:$rT, imm18:$val)]>;
}
defm ILA : ImmLoadAddress;
OpenPOWER on IntegriCloud