Skip to content

Commit 562e021

Browse files
authored
[RISCV] Minor refactor of RISCVMoveMerge::mergePairedInsns. (#154467)
Fold the ARegInFirstPair into the later if/else with the same condition. Use std::swap so we don't need to repeat operands in the opposite order.
1 parent 6a285cc commit 562e021

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

llvm/lib/Target/RISCV/RISCVMoveMerger.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
110110
MachineBasicBlock::iterator NextI = next_nodbg(I, E);
111111
DestSourcePair FirstPair = TII->isCopyInstrImpl(*I).value();
112112
DestSourcePair PairedRegs = TII->isCopyInstrImpl(*Paired).value();
113-
Register ARegInFirstPair = MoveFromSToA ? FirstPair.Destination->getReg()
114-
: FirstPair.Source->getReg();
115113

116114
if (NextI == Paired)
117115
NextI = next_nodbg(NextI, E);
@@ -130,7 +128,6 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
130128
//
131129
// mv a0, s2
132130
// mv a1, s1 => cm.mva01s s2,s1
133-
bool StartWithX10 = ARegInFirstPair == RISCV::X10;
134131
unsigned Opcode;
135132
if (MoveFromSToA) {
136133
// We are moving one of the copies earlier so its kill flag may become
@@ -141,12 +138,16 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
141138
PairedSource.setIsKill(false);
142139

143140
Opcode = getMoveFromSToAOpcode(*ST);
144-
Sreg1 = StartWithX10 ? FirstPair.Source : &PairedSource;
145-
Sreg2 = StartWithX10 ? &PairedSource : FirstPair.Source;
141+
Sreg1 = FirstPair.Source;
142+
Sreg2 = &PairedSource;
143+
if (FirstPair.Destination->getReg() != RISCV::X10)
144+
std::swap(Sreg1, Sreg2);
146145
} else {
147146
Opcode = getMoveFromAToSOpcode(*ST);
148-
Sreg1 = StartWithX10 ? FirstPair.Destination : PairedRegs.Destination;
149-
Sreg2 = StartWithX10 ? PairedRegs.Destination : FirstPair.Destination;
147+
Sreg1 = FirstPair.Destination;
148+
Sreg2 = PairedRegs.Destination;
149+
if (FirstPair.Source->getReg() != RISCV::X10)
150+
std::swap(Sreg1, Sreg2);
150151
}
151152

152153
BuildMI(*I->getParent(), I, DL, TII->get(Opcode)).add(*Sreg1).add(*Sreg2);

0 commit comments

Comments
 (0)