OSDN Git Service

[AArch64] Adjust the cost model for Exynos M3
authorEvandro Menezes <e.menezes@samsung.com>
Fri, 9 Feb 2018 19:26:11 +0000 (19:26 +0000)
committerEvandro Menezes <e.menezes@samsung.com>
Fri, 9 Feb 2018 19:26:11 +0000 (19:26 +0000)
Fix the modeling of transfers between a generic register and a partial ASIMD
one.

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

lib/Target/AArch64/AArch64SchedExynosM3.td

index 4520115..6fe545d 100644 (file)
@@ -287,6 +287,9 @@ def M3WriteNEOND   : SchedWriteRes<[M3UnitNSHF,
 def M3WriteNEONH   : SchedWriteRes<[M3UnitNALU,
                                     M3UnitS]>     { let Latency = 5;
                                                     let NumMicroOps = 2; }
+def M3WriteNEONI   : SchedWriteRes<[M3UnitNSHF,
+                                    M3UnitS]>     { let Latency = 5;
+                                                    let NumMicroOps = 2; }
 def M3WriteNEONV   : SchedWriteRes<[M3UnitFDIV,
                                     M3UnitFDIV]>  { let Latency = 7;
                                                     let NumMicroOps = 1;
@@ -527,8 +530,9 @@ def : InstRW<[M3WriteFCVT4],  (instregex "^[FU](RECP|RSQRT)Ev1")>;
 def : InstRW<[M3WriteNMSC1],  (instregex "^FRECPXv1")>;
 def : InstRW<[M3WriteFMAC4,
               M3ReadFMAC],    (instregex "^F(RECP|RSQRT)S(16|32|64)")>;
-def : InstRW<[M3WriteNALU1],  (instregex "^FMOV[WX][DS](High)?r")>;
-def : InstRW<[M3WriteNALU1],  (instregex "^FMOV[DS][WX](High)?r")>;
+def : InstRW<[M3WriteNALU1],  (instregex "^FMOV[WX][DS]r")>;
+def : InstRW<[M3WriteNALU1],  (instregex "^FMOV[DS][WX]r")>;
+def : InstRW<[M3WriteNEONI],  (instregex "^FMOV(DX|XD)Highr")>;
 
 // FP load instructions.
 def : InstRW<[WriteVLD],    (instregex "^LDR[DSQ]l")>;