Skip to content

Commit 82665b1

Browse files
author
Evandro Menezes
committed
[AArch64] Adjust the cost model for Exynos M1 and M2
Fix the modeling of FP stores. llvm-svn: 318351
1 parent 954eea0 commit 82665b1

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

llvm/lib/Target/AArch64/AArch64SchedM1.td

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,18 @@ def M1WriteS4 : SchedWriteRes<[M1UnitS]> { let Latency = 4; }
111111
def M1WriteSA : SchedWriteRes<[M1UnitS,
112112
M1UnitFST,
113113
M1UnitS,
114-
M1UnitFST]> { let Latency = 1; }
114+
M1UnitFST]> { let Latency = 1;
115+
let NumMicroOps = 2; }
115116
def M1WriteSB : SchedWriteRes<[M1UnitS,
116117
M1UnitFST,
117-
M1UnitA]> { let Latency = 2; }
118+
M1UnitA]> { let Latency = 2;
119+
let NumMicroOps = 2; }
118120
def M1WriteSC : SchedWriteRes<[M1UnitS,
119121
M1UnitFST,
120122
M1UnitS,
121123
M1UnitFST,
122-
M1UnitA]> { let Latency = 1; }
124+
M1UnitA]> { let Latency = 3;
125+
let NumMicroOps = 3; }
123126
def M1WriteSX : SchedWriteVariant<[SchedVar<M1ShiftLeftFastPred, [M1WriteS1]>,
124127
SchedVar<NoSchedPred, [M1WriteA1,
125128
M1WriteS1]>]>;
@@ -193,7 +196,8 @@ def : WriteRes<WriteVLD, [M1UnitL]> { let Latency = 5; }
193196

194197
// FP store instructions.
195198
def : WriteRes<WriteVST, [M1UnitS,
196-
M1UnitFST]> { let Latency = 1; }
199+
M1UnitFST]> { let Latency = 1;
200+
let NumMicroOps = 1; }
197201

198202
// ASIMD FP instructions.
199203
def : WriteRes<WriteV, [M1UnitFADD]> { let Latency = 3; }
@@ -335,12 +339,14 @@ def M1WriteVSTC : WriteSequence<[WriteVST], 4>;
335339
def M1WriteVSTD : SchedWriteRes<[M1UnitS,
336340
M1UnitFST,
337341
M1UnitFST]> { let Latency = 7;
342+
let NumMicroOps = 2;
338343
let ResourceCycles = [7]; }
339344
def M1WriteVSTE : SchedWriteRes<[M1UnitS,
340345
M1UnitFST,
341346
M1UnitS,
342347
M1UnitFST,
343348
M1UnitFST]> { let Latency = 8;
349+
let NumMicroOps = 3;
344350
let ResourceCycles = [8]; }
345351
def M1WriteVSTF : SchedWriteRes<[M1UnitNALU,
346352
M1UnitS,
@@ -349,6 +355,7 @@ def M1WriteVSTF : SchedWriteRes<[M1UnitNALU,
349355
M1UnitFST,
350356
M1UnitFST,
351357
M1UnitFST]> { let Latency = 15;
358+
let NumMicroOps = 5;
352359
let ResourceCycles = [15]; }
353360
def M1WriteVSTG : SchedWriteRes<[M1UnitNALU,
354361
M1UnitS,
@@ -359,12 +366,14 @@ def M1WriteVSTG : SchedWriteRes<[M1UnitNALU,
359366
M1UnitFST,
360367
M1UnitFST,
361368
M1UnitFST]> { let Latency = 16;
369+
let NumMicroOps = 6;
362370
let ResourceCycles = [16]; }
363371
def M1WriteVSTH : SchedWriteRes<[M1UnitNALU,
364372
M1UnitS,
365373
M1UnitFST,
366374
M1UnitFST,
367375
M1UnitFST]> { let Latency = 14;
376+
let NumMicroOps = 4;
368377
let ResourceCycles = [14]; }
369378
def M1WriteVSTI : SchedWriteRes<[M1UnitNALU,
370379
M1UnitS,
@@ -377,6 +386,7 @@ def M1WriteVSTI : SchedWriteRes<[M1UnitNALU,
377386
M1UnitFST,
378387
M1UnitFST,
379388
M1UnitFST]> { let Latency = 17;
389+
let NumMicroOps = 7;
380390
let ResourceCycles = [17]; }
381391

382392
// Branch instructions

0 commit comments

Comments
 (0)