]> granicus.if.org Git - llvm/commitdiff
[AArch64] Add preferred alignments for Exynos M1
authorEvandro Menezes <e.menezes@samsung.com>
Fri, 10 Jun 2016 16:00:18 +0000 (16:00 +0000)
committerEvandro Menezes <e.menezes@samsung.com>
Fri, 10 Jun 2016 16:00:18 +0000 (16:00 +0000)
Differential Revision: http://reviews.llvm.org/D21203

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

lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64Subtarget.cpp
lib/Target/AArch64/AArch64Subtarget.h

index 0c7d386b0e97a1015263764d05d315f71a817827..8cf8f04bd665bab5f9aeb4b753f35fb8a70aadca 100644 (file)
@@ -517,7 +517,11 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
   MaskAndBranchFoldingIsLegal = true;
   EnableExtLdPromotion = true;
 
+  // Set required alignment.
   setMinFunctionAlignment(2);
+  // Set preferred alignments.
+  setPrefFunctionAlignment(STI.getPrefFunctionAlignment());
+  setPrefLoopAlignment(STI.getPrefLoopAlignment());
 
   setHasExtractBitsInsn(true);
 
index 57957d1de53553088b1d0ee233de1533679c8ed6..3354cbd1a53da217a8edb9a084d272fe05cfefdf 100644 (file)
@@ -63,14 +63,17 @@ void AArch64Subtarget::initializeProperties() {
   case CortexA57:
     MaxInterleaveFactor = 4;
     break;
+  case ExynosM1:
+    PrefFunctionAlignment = 4;
+    PrefLoopAlignment = 3;
+    break;
   case Kryo:
     MaxInterleaveFactor = 4;
     VectorInsertExtractBaseCost = 2;
     break;
-  case Others: break;
   case CortexA35: break;
   case CortexA53: break;
-  case ExynosM1: break;
+  case Others: break;
   }
 }
 
index 6d26fa71c797111852c46aff45a648a80060de24..43d4141aadf3b197a80878a20933149642cfbb87 100644 (file)
@@ -86,6 +86,8 @@ protected:
   uint16_t PrefetchDistance = 0;
   uint16_t MinPrefetchStride = 1;
   unsigned MaxPrefetchIterationsAhead = UINT_MAX;
+  unsigned PrefFunctionAlignment = 0;
+  unsigned PrefLoopAlignment = 0;
 
   // ReserveX18 - X18 is not available as a general purpose register.
   bool ReserveX18;
@@ -195,6 +197,8 @@ public:
   unsigned getMaxPrefetchIterationsAhead() const {
     return MaxPrefetchIterationsAhead;
   }
+  unsigned getPrefFunctionAlignment() const { return PrefFunctionAlignment; }
+  unsigned getPrefLoopAlignment() const { return PrefLoopAlignment; }
 
   /// CPU has TBI (top byte of addresses is ignored during HW address
   /// translation) and OS enables it.