[llvm] 25cc0d2 - [AArch64] NFC: simplify isCopyInstrImpl expression (#212487)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 29 05:09:38 PDT 2026
Author: Sander de Smalen
Date: 2026-07-29T13:09:33+01:00
New Revision: 25cc0d29e2c34966116f897e0db496d94cf91acf
URL: https://github.com/llvm/llvm-project/commit/25cc0d29e2c34966116f897e0db496d94cf91acf
DIFF: https://github.com/llvm/llvm-project/commit/25cc0d29e2c34966116f897e0db496d94cf91acf.diff
LOG: [AArch64] NFC: simplify isCopyInstrImpl expression (#212487)
To something more intuitive by applying the following logic:
* `!isVirtual()` -> `isPhysical()`
* `!isPhysical()` -> `isVirtual()`
* `(a || b) && (!a || c)` -> `(!a && b) || (a && c)`
Added:
Modified:
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
index 6b640727c82c9..ac827debe207c 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -11356,18 +11356,20 @@ AArch64InstrInfo::isCopyInstrImpl(const MachineInstr &MI) const {
// AArch64::ORRWrs and AArch64::ORRXrs with WZR/XZR reg
// and zero immediate operands used as an alias for mov instruction.
- if (((MI.getOpcode() == AArch64::ORRWrs &&
- MI.getOperand(1).getReg() == AArch64::WZR &&
- MI.getOperand(3).getImm() == 0x0) ||
- (MI.getOpcode() == AArch64::ORRWrr &&
- MI.getOperand(1).getReg() == AArch64::WZR)) &&
- // Check that the w->w move is not a zero-extending w->x mov.
- (!MI.getOperand(0).getReg().isVirtual() ||
- MI.getOperand(0).getSubReg() == 0) &&
- (!MI.getOperand(0).getReg().isPhysical() ||
- MI.findRegisterDefOperandIdx(getXRegFromWReg(MI.getOperand(0).getReg()),
- /*TRI=*/nullptr) == -1))
- return DestSourcePair{MI.getOperand(0), MI.getOperand(2)};
+ if ((MI.getOpcode() == AArch64::ORRWrs &&
+ MI.getOperand(1).getReg() == AArch64::WZR &&
+ MI.getOperand(3).getImm() == 0x0) ||
+ (MI.getOpcode() == AArch64::ORRWrr &&
+ MI.getOperand(1).getReg() == AArch64::WZR)) {
+ // Check that the w->w move is not a zero-extending w->x mov.
+ if ((MI.getOperand(0).getReg().isPhysical() &&
+ MI.findRegisterDefOperandIdx(
+ getXRegFromWReg(MI.getOperand(0).getReg()),
+ /*TRI=*/nullptr) == -1) ||
+ (MI.getOperand(0).getReg().isVirtual() &&
+ !MI.getOperand(0).getSubReg()))
+ return DestSourcePair{MI.getOperand(0), MI.getOperand(2)};
+ }
if (MI.getOpcode() == AArch64::ORRXrs &&
MI.getOperand(1).getReg() == AArch64::XZR &&
More information about the llvm-commits
mailing list