[llvm] r219401 - [AArch64] Enable partial & runtime unrolling on cortex-a57.
Kevin Qin
Kevin.Qin at arm.com
Thu Oct 9 03:13:28 PDT 2014
Author: kevinqin
Date: Thu Oct 9 05:13:27 2014
New Revision: 219401
URL: http://llvm.org/viewvc/llvm-project?rev=219401&view=rev
Log:
[AArch64] Enable partial & runtime unrolling on cortex-a57.
Modified:
llvm/trunk/lib/Target/AArch64/AArch64SchedA57.td
llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
Modified: llvm/trunk/lib/Target/AArch64/AArch64SchedA57.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64SchedA57.td?rev=219401&r1=219400&r2=219401&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64SchedA57.td (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64SchedA57.td Thu Oct 9 05:13:27 2014
@@ -26,6 +26,10 @@ def CortexA57Model : SchedMachineModel {
let MicroOpBufferSize = 128; // 128 micro-op re-order buffer
let LoadLatency = 4; // Optimistic load latency
let MispredictPenalty = 14; // Fetch + Decode/Rename/Dispatch + Branch
+
+ // Enable partial & runtime unrolling. The magic number is chosen based on
+ // experiments and benchmarking data.
+ let LoopMicroOpBufferSize = 16;
}
//===----------------------------------------------------------------------===//
Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp?rev=219401&r1=219400&r2=219401&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp Thu Oct 9 05:13:27 2014
@@ -128,6 +128,10 @@ public:
unsigned getCostOfKeepingLiveOverCall(ArrayRef<Type*> Tys) const override;
+ void getUnrollingPreferences(const Function *F, Loop *L,
+ UnrollingPreferences &UP) const override;
+
+
/// @}
};
@@ -544,3 +548,9 @@ unsigned AArch64TTI::getMaxInterleaveFac
return 4;
return 2;
}
+
+void AArch64TTI::getUnrollingPreferences(const Function *F, Loop *L,
+ UnrollingPreferences &UP) const {
+ // Disable partial & runtime unrolling on -Os.
+ UP.PartialOptSizeThreshold = 0;
+}
More information about the llvm-commits
mailing list