Skip to content

Commit cf151d2

Browse files
committed
Address review feedback
* Remove fallthrough * Rename NewVReg -> NewReg
1 parent de4092f commit cf151d2

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

llvm/lib/Target/AArch64/AArch64InstrInfo.cpp

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ static unsigned removeCopies(const MachineRegisterInfo &MRI, unsigned VReg) {
700700
// csel instruction. If so, return the folded opcode, and the replacement
701701
// register.
702702
static unsigned canFoldIntoCSel(const MachineRegisterInfo &MRI, unsigned VReg,
703-
unsigned *NewVReg = nullptr) {
703+
unsigned *NewReg = nullptr) {
704704
VReg = removeCopies(MRI, VReg);
705705
if (!Register::isVirtualRegister(VReg))
706706
return 0;
@@ -724,8 +724,13 @@ static unsigned canFoldIntoCSel(const MachineRegisterInfo &MRI, unsigned VReg,
724724
DefMI = MRI.getVRegDef(DefMI->getOperand(2).getReg());
725725
if (DefMI->getOpcode() != AArch64::MOVi32imm)
726726
return 0;
727-
// fall-through to MOVi32imm case.
728-
[[fallthrough]];
727+
if (!DefMI->getOperand(1).isImm() || DefMI->getOperand(1).getImm() != 1)
728+
return 0;
729+
assert(Is64Bit);
730+
SrcReg = AArch64::XZR;
731+
Opc = AArch64::CSINCXr;
732+
break;
733+
729734
case AArch64::MOVi32imm:
730735
case AArch64::MOVi64imm:
731736
if (!DefMI->getOperand(1).isImm() || DefMI->getOperand(1).getImm() != 1)
@@ -786,8 +791,8 @@ static unsigned canFoldIntoCSel(const MachineRegisterInfo &MRI, unsigned VReg,
786791
}
787792
assert(Opc && SrcReg && "Missing parameters");
788793

789-
if (NewVReg)
790-
*NewVReg = SrcReg;
794+
if (NewReg)
795+
*NewReg = SrcReg;
791796
return Opc;
792797
}
793798

@@ -988,30 +993,30 @@ void AArch64InstrInfo::insertSelect(MachineBasicBlock &MBB,
988993

989994
// Try folding simple instructions into the csel.
990995
if (TryFold) {
991-
unsigned NewVReg = 0;
992-
unsigned FoldedOpc = canFoldIntoCSel(MRI, TrueReg, &NewVReg);
996+
unsigned NewReg = 0;
997+
unsigned FoldedOpc = canFoldIntoCSel(MRI, TrueReg, &NewReg);
993998
if (FoldedOpc) {
994999
// The folded opcodes csinc, csinc and csneg apply the operation to
9951000
// FalseReg, so we need to invert the condition.
9961001
CC = AArch64CC::getInvertedCondCode(CC);
9971002
TrueReg = FalseReg;
9981003
} else
999-
FoldedOpc = canFoldIntoCSel(MRI, FalseReg, &NewVReg);
1004+
FoldedOpc = canFoldIntoCSel(MRI, FalseReg, &NewReg);
10001005

10011006
// Fold the operation. Leave any dead instructions for DCE to clean up.
10021007
if (FoldedOpc) {
10031008
// NewVReg might be XZR/WZR. In that case create a COPY into a virtual
10041009
// register.
1005-
if (!Register::isVirtualRegister(NewVReg)) {
1006-
unsigned ZeroReg = NewVReg;
1007-
NewVReg = MRI.createVirtualRegister(RC);
1008-
BuildMI(MBB, I, DL, get(TargetOpcode::COPY), NewVReg).addReg(ZeroReg);
1010+
if (!Register::isVirtualRegister(NewReg)) {
1011+
unsigned ZeroReg = NewReg;
1012+
NewReg = MRI.createVirtualRegister(RC);
1013+
BuildMI(MBB, I, DL, get(TargetOpcode::COPY), NewReg).addReg(ZeroReg);
10091014
}
10101015

1011-
FalseReg = NewVReg;
1016+
FalseReg = NewReg;
10121017
Opc = FoldedOpc;
10131018
// The extends the live range of NewVReg.
1014-
MRI.clearKillFlags(NewVReg);
1019+
MRI.clearKillFlags(NewReg);
10151020
}
10161021
}
10171022

0 commit comments

Comments
 (0)