diff options
author | Evandro Menezes <e.menezes@samsung.com> | 2016-09-06 19:22:19 +0000 |
---|---|---|
committer | Evandro Menezes <e.menezes@samsung.com> | 2016-09-06 19:22:19 +0000 |
commit | 199cad4f1777e90cb4bf4097de40bf15602ce495 (patch) | |
tree | f67fdd466621b587915b5570a05e23c4a8fbec31 /llvm/lib | |
parent | d1942133e8074a1c34669ff6a874ceca2368cfd7 (diff) | |
download | bcm5719-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.td | 22 |
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; } |