Allow machine LICM to do its job on SPU.
authorKalle Raiskila <kalle.raiskila@nokia.com>
Mon, 29 Nov 2010 10:08:09 +0000 (10:08 +0000)
committerKalle Raiskila <kalle.raiskila@nokia.com>
Mon, 29 Nov 2010 10:08:09 +0000 (10:08 +0000)
-return a sensible value for register pressure
-add pattern to 'ila' instrucion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120285 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CellSPU/SPUISelLowering.h
lib/Target/CellSPU/SPUInstrInfo.td

index 82f10270db3d6909933083c20026209fb74f22ca..95d44afe37c8f9e3219bbb51f7fdac0a294f0112 100644 (file)
@@ -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;
+    }
   };
 }
 
index 7794f9d4459c459aa7d03acb88bd1f7d294d5611..6e06e47c49631fecc9985106f716553d216674fb 100644 (file)
@@ -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;