[llvm] r275503 - [AArch64] Set COPY ZR isAsCheapAsAMove when needed.
Haicheng Wu via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 14 17:27:01 PDT 2016
Author: haicheng
Date: Thu Jul 14 19:27:01 2016
New Revision: 275503
URL: http://llvm.org/viewvc/llvm-project?rev=275503&view=rev
Log:
[AArch64] Set COPY ZR isAsCheapAsAMove when needed.
If a subtarget has both ZCZeroing and CustomCheapAsMoveHandling features (now
only Kryo has both), set COPY (W|X)ZR isAsCheapAsAMove.
Differential Revision: http://reviews.llvm.org/D22360
Modified:
llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp?rev=275503&r1=275502&r2=275503&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp Thu Jul 14 19:27:01 2016
@@ -624,11 +624,15 @@ bool AArch64InstrInfo::isAsCheapAsAMove(
case AArch64::MOVi64imm:
return canBeExpandedToORR(MI, 64);
- // It is cheap to move #0 to float registers if the subtarget has
- // ZeroCycleZeroing feature.
+ // It is cheap to zero out registers if the subtarget has ZeroCycleZeroing
+ // feature.
case AArch64::FMOVS0:
case AArch64::FMOVD0:
return Subtarget.hasZeroCycleZeroing();
+ case TargetOpcode::COPY:
+ return (Subtarget.hasZeroCycleZeroing() &&
+ (MI.getOperand(1).getReg() == AArch64::WZR ||
+ MI.getOperand(1).getReg() == AArch64::XZR));
}
llvm_unreachable("Unknown opcode to check as cheap as a move!");
More information about the llvm-commits
mailing list