Skip to content

Commit 8e1d54a

Browse files
committed
canonicalize to FMOV?0 in AArch64InstrInfo to be printed by AArch64AsmPrinter
1 parent 94ed034 commit 8e1d54a

File tree

1 file changed

+4
-31
lines changed

1 file changed

+4
-31
lines changed

llvm/lib/Target/AArch64/AArch64InstrInfo.cpp

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5471,20 +5471,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
54715471
// Copies between GPR64 and FPR64.
54725472
if (AArch64::FPR64RegClass.contains(DestReg) &&
54735473
AArch64::GPR64RegClass.contains(SrcReg)) {
5474-
if (AArch64::XZR == SrcReg &&
5475-
!Subtarget.hasZeroCycleZeroingFPWorkaround() &&
5476-
Subtarget.isNeonAvailable()) {
5477-
if (Subtarget.hasZeroCycleZeroingFPR64()) {
5478-
BuildMI(MBB, I, DL, get(AArch64::MOVID), DestReg).addImm(0);
5479-
} else if (Subtarget.hasZeroCycleZeroingFPR128()) {
5480-
const TargetRegisterInfo *TRI = &getRegisterInfo();
5481-
MCRegister DestRegQ = TRI->getMatchingSuperReg(
5482-
DestReg, AArch64::dsub, &AArch64::FPR128RegClass);
5483-
BuildMI(MBB, I, DL, get(AArch64::MOVIv2d_ns), DestRegQ).addImm(0);
5484-
} else {
5485-
BuildMI(MBB, I, DL, get(AArch64::FMOVXDr), DestReg)
5486-
.addReg(SrcReg, getKillRegState(KillSrc));
5487-
}
5474+
if (AArch64::XZR == SrcReg) {
5475+
BuildMI(MBB, I, DL, get(AArch64::FMOVD0), DestReg);
54885476
} else {
54895477
BuildMI(MBB, I, DL, get(AArch64::FMOVXDr), DestReg)
54905478
.addReg(SrcReg, getKillRegState(KillSrc));
@@ -5500,23 +5488,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
55005488
// Copies between GPR32 and FPR32.
55015489
if (AArch64::FPR32RegClass.contains(DestReg) &&
55025490
AArch64::GPR32RegClass.contains(SrcReg)) {
5503-
if (AArch64::WZR == SrcReg &&
5504-
!Subtarget.hasZeroCycleZeroingFPWorkaround() &&
5505-
Subtarget.isNeonAvailable()) {
5506-
if (Subtarget.hasZeroCycleZeroingFPR64()) {
5507-
const TargetRegisterInfo *TRI = &getRegisterInfo();
5508-
MCRegister DestRegD = TRI->getMatchingSuperReg(DestReg, AArch64::ssub,
5509-
&AArch64::FPR64RegClass);
5510-
BuildMI(MBB, I, DL, get(AArch64::MOVID), DestRegD).addImm(0);
5511-
} else if (Subtarget.hasZeroCycleZeroingFPR128()) {
5512-
const TargetRegisterInfo *TRI = &getRegisterInfo();
5513-
MCRegister DestRegQ = TRI->getMatchingSuperReg(
5514-
DestReg, AArch64::ssub, &AArch64::FPR128RegClass);
5515-
BuildMI(MBB, I, DL, get(AArch64::MOVIv2d_ns), DestRegQ).addImm(0);
5516-
} else {
5517-
BuildMI(MBB, I, DL, get(AArch64::FMOVWSr), DestReg)
5518-
.addReg(SrcReg, getKillRegState(KillSrc));
5519-
}
5491+
if (AArch64::WZR == SrcReg) {
5492+
BuildMI(MBB, I, DL, get(AArch64::FMOVS0), DestReg);
55205493
} else {
55215494
BuildMI(MBB, I, DL, get(AArch64::FMOVWSr), DestReg)
55225495
.addReg(SrcReg, getKillRegState(KillSrc));

0 commit comments

Comments
 (0)