[llvm] [AArch64] Use 0-cycle reg2reg MOVs for FPR32, FPR16, FPR8 (PR #144152)
Jon Roelofs via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 18 11:05:29 PDT 2025
================
@@ -5302,30 +5302,73 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
if (AArch64::FPR32RegClass.contains(DestReg) &&
AArch64::FPR32RegClass.contains(SrcReg)) {
- BuildMI(MBB, I, DL, get(AArch64::FMOVSr), DestReg)
- .addReg(SrcReg, getKillRegState(KillSrc));
+ if (Subtarget.isTargetDarwin() && Subtarget.hasZeroCycleRegMove()) {
----------------
jroelofs wrote:
ISTM this should be a new subtarget feature, maybe `hasZeroCycleFPRMove()` or something similar. It's weird to conflate per-cpu hardware tuning details with platform details like `isTargetDarwin()`.
https://github.com/llvm/llvm-project/pull/144152
More information about the llvm-commits
mailing list