summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2016-10-13 00:11:55 +0000
committerQuentin Colombet <qcolombet@apple.com>2016-10-13 00:11:55 +0000
commit27b40356f79eae0d677f2d830ff24d4e871562a2 (patch)
treecf797ac175a474c8c76d07302ccb764b17fe2c75 /llvm/lib
parent3245ee7e579b03f3fdde903006358d43f9f6319c (diff)
downloadbcm5719-llvm-27b40356f79eae0d677f2d830ff24d4e871562a2.tar.gz
bcm5719-llvm-27b40356f79eae0d677f2d830ff24d4e871562a2.zip
[AArch64][RegisterBankInfo] Provide more realistic copy costs.
llvm-svn: 284086
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp b/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
index 12b8db7d3e9..5b2c2318d67 100644
--- a/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
@@ -181,7 +181,16 @@ unsigned AArch64RegisterBankInfo::copyCost(const RegisterBank &A,
// Will introduce other hooks for different size:
// * extract cost.
// * build_sequence cost.
- // TODO: Add more accurate cost for FPR to/from GPR.
+
+ // Copy from (resp. to) GPR to (resp. from) FPR involves FMOV.
+ // FIXME: This should be deduced from the scheduling model.
+ if (&A == &AArch64::GPRRegBank && &B == &AArch64::FPRRegBank)
+ // FMOVXDr or FMOVWSr.
+ return 5;
+ if (&A == &AArch64::FPRRegBank && &B == &AArch64::GPRRegBank)
+ // FMOVDXr or FMOVSWr.
+ return 4;
+
return RegisterBankInfo::copyCost(A, B, Size);
}
OpenPOWER on IntegriCloud