summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorEvandro Menezes <e.menezes@samsung.com>2016-09-06 19:22:19 +0000
committerEvandro Menezes <e.menezes@samsung.com>2016-09-06 19:22:19 +0000
commit199cad4f1777e90cb4bf4097de40bf15602ce495 (patch)
treef67fdd466621b587915b5570a05e23c4a8fbec31 /llvm/lib
parentd1942133e8074a1c34669ff6a874ceca2368cfd7 (diff)
downloadbcm5719-llvm-199cad4f1777e90cb4bf4097de40bf15602ce495.tar.gz
bcm5719-llvm-199cad4f1777e90cb4bf4097de40bf15602ce495.zip
[AArch64] Adjust the scheduling model for Exynos M1.
Further refine the model for loads. llvm-svn: 280734
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64SchedM1.td22
1 files changed, 11 insertions, 11 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64SchedM1.td b/llvm/lib/Target/AArch64/AArch64SchedM1.td
index 2249d43c35d..3cb7141aff9 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedM1.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedM1.td
@@ -64,9 +64,16 @@ let SchedModel = ExynosM1Model in {
//===----------------------------------------------------------------------===//
// Coarse scheduling model for the Exynos-M1.
-def M1WriteLDIdxA : SchedWriteRes<[M1UnitL]> { let Latency = 5; }
-def M1WriteLDIdxB : SchedWriteRes<[M1UnitL,
- M1UnitALU]> { let Latency = 5; }
+def M1WriteA1 : SchedWriteRes<[M1UnitALU]> { let Latency = 1; }
+
+def M1WriteL5 : SchedWriteRes<[M1UnitL]> { let Latency = 5; }
+def M1WriteLA : SchedWriteVariant<[SchedVar<ScaledIdxPred, [M1WriteL5,
+ M1WriteA1]>,
+ SchedVar<NoSchedPred, [M1WriteL5]>]>;
+
+def M1ReadAdrBase : SchedReadVariant<[SchedVar<ScaledIdxPred, [ReadDefault]>,
+ SchedVar<NoSchedPred, [ReadDefault]>]>;
+def : SchedAlias<ReadAdrBase, M1ReadAdrBase>;
// Branch instructions.
// NOTE: Unconditional direct branches actually take neither cycles nor units.
@@ -106,14 +113,7 @@ def : WriteRes<WriteAdr, []> { let Latency = 0; }
// Load instructions.
def : WriteRes<WriteLD, [M1UnitL]> { let Latency = 4; }
def : WriteRes<WriteLDHi, [M1UnitALU]> { let Latency = 4; }
-def M1WriteLDIdx : SchedWriteVariant<[
- SchedVar<ScaledIdxPred, [M1WriteLDIdxB]>,
- SchedVar<NoSchedPred, [M1WriteLDIdxA]>]>;
-def : SchedAlias<WriteLDIdx, M1WriteLDIdx>;
-def M1ReadAdrBase : SchedReadVariant<[
- SchedVar<ScaledIdxPred, [ReadDefault]>,
- SchedVar<NoSchedPred, [ReadDefault]>]>;
-def : SchedAlias<ReadAdrBase, M1ReadAdrBase>;
+def : SchedAlias<WriteLDIdx, M1WriteLA>;
// Store instructions.
def : WriteRes<WriteST, [M1UnitS]> { let Latency = 1; }
OpenPOWER on IntegriCloud