[llvm] [AArch64] Consider MOVaddr* as cheap if fuse-adrp-add (PR #121904)
Guy David via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 7 01:06:55 PST 2025
https://github.com/guy-david updated https://github.com/llvm/llvm-project/pull/121904
>From d3a2ea706d4be30708fbf22ab618c236a1b29ce1 Mon Sep 17 00:00:00 2001
From: Guy David <guyda96 at gmail.com>
Date: Tue, 7 Jan 2025 10:57:12 +0200
Subject: [PATCH] [AArch64] Consider MOVaddr* as cheap if fuse-adrp-add
These pseudo-instructions usually translate into a pair of adrp+add and
have a single cycle latency on some micro-architectures.
---
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
index fd24e49f948a20..c394e6768f6600 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -936,6 +936,15 @@ bool AArch64InstrInfo::isAsCheapAsAMove(const MachineInstr &MI) const {
return isCheapImmediate(MI, 32);
case AArch64::MOVi64imm:
return isCheapImmediate(MI, 64);
+
+ case AArch64::MOVaddr:
+ case AArch64::MOVaddrJT:
+ case AArch64::MOVaddrCP:
+ case AArch64::MOVaddrBA:
+ case AArch64::MOVaddrTLS:
+ case AArch64::MOVaddrEXT:
+ return Subtarget.hasFuseAdrpAdd() &&
+ !(MI.getOperand(1).getTargetFlags() & AArch64II::MO_TAGGED);
}
}
More information about the llvm-commits
mailing list