@@ -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