[llvm] 562e021 - [RISCV] Minor refactor of RISCVMoveMerge::mergePairedInsns. (#154467)

via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 20 09:08:01 PDT 2025


Author: Craig Topper
Date: 2025-08-20T09:07:58-07:00
New Revision: 562e0211032767a9f2d24d9d8d7868385e948937

URL: https://github.com/llvm/llvm-project/commit/562e0211032767a9f2d24d9d8d7868385e948937
DIFF: https://github.com/llvm/llvm-project/commit/562e0211032767a9f2d24d9d8d7868385e948937.diff

LOG: [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.

Added: 
    

Modified: 
    llvm/lib/Target/RISCV/RISCVMoveMerger.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/RISCV/RISCVMoveMerger.cpp b/llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
index ae311db443bf7..efea1b422d582 100644
--- a/llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
+++ b/llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
@@ -110,8 +110,6 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
   MachineBasicBlock::iterator NextI = next_nodbg(I, E);
   DestSourcePair FirstPair = TII->isCopyInstrImpl(*I).value();
   DestSourcePair PairedRegs = TII->isCopyInstrImpl(*Paired).value();
-  Register ARegInFirstPair = MoveFromSToA ? FirstPair.Destination->getReg()
-                                          : FirstPair.Source->getReg();
 
   if (NextI == Paired)
     NextI = next_nodbg(NextI, E);
@@ -130,7 +128,6 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
   //
   //   mv a0, s2
   //   mv a1, s1    =>  cm.mva01s s2,s1
-  bool StartWithX10 = ARegInFirstPair == RISCV::X10;
   unsigned Opcode;
   if (MoveFromSToA) {
     // We are moving one of the copies earlier so its kill flag may become
@@ -141,12 +138,16 @@ RISCVMoveMerge::mergePairedInsns(MachineBasicBlock::iterator I,
         PairedSource.setIsKill(false);
 
     Opcode = getMoveFromSToAOpcode(*ST);
-    Sreg1 = StartWithX10 ? FirstPair.Source : &PairedSource;
-    Sreg2 = StartWithX10 ? &PairedSource : FirstPair.Source;
+    Sreg1 = FirstPair.Source;
+    Sreg2 = &PairedSource;
+    if (FirstPair.Destination->getReg() != RISCV::X10)
+      std::swap(Sreg1, Sreg2);
   } else {
     Opcode = getMoveFromAToSOpcode(*ST);
-    Sreg1 = StartWithX10 ? FirstPair.Destination : PairedRegs.Destination;
-    Sreg2 = StartWithX10 ? PairedRegs.Destination : FirstPair.Destination;
+    Sreg1 = FirstPair.Destination;
+    Sreg2 = PairedRegs.Destination;
+    if (FirstPair.Source->getReg() != RISCV::X10)
+      std::swap(Sreg1, Sreg2);
   }
 
   BuildMI(*I->getParent(), I, DL, TII->get(Opcode)).add(*Sreg1).add(*Sreg2);


        


More information about the llvm-commits mailing list