[llvm] r359658 - [X86FixupLEAs] Hoist the calls to isLEA out of the 3 separate functions and put it in the basic block instruction loop. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 30 23:53:04 PDT 2019


Author: ctopper
Date: Tue Apr 30 23:53:03 2019
New Revision: 359658

URL: http://llvm.org/viewvc/llvm-project?rev=359658&view=rev
Log:
[X86FixupLEAs] Hoist the calls to isLEA out of the 3 separate functions and put it in the basic block instruction loop. NFC

Now need to check it 3 different times. Just do it once at the top of the loop.

Modified:
    llvm/trunk/lib/Target/X86/X86FixupLEAs.cpp

Modified: llvm/trunk/lib/Target/X86/X86FixupLEAs.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FixupLEAs.cpp?rev=359658&r1=359657&r2=359658&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86FixupLEAs.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86FixupLEAs.cpp Tue Apr 30 23:53:03 2019
@@ -182,6 +182,11 @@ FixupLEAPass::postRAConvertToLEA(Machine
 
 FunctionPass *llvm::createX86FixupLEAs() { return new FixupLEAPass(); }
 
+static bool isLEA(unsigned Opcode) {
+  return Opcode == X86::LEA16r || Opcode == X86::LEA32r ||
+         Opcode == X86::LEA64r || Opcode == X86::LEA64_32r;
+}
+
 bool FixupLEAPass::runOnMachineFunction(MachineFunction &MF) {
   if (skipFunction(MF.getFunction()))
     return false;
@@ -204,6 +209,9 @@ bool FixupLEAPass::runOnMachineFunction(
   for (MachineBasicBlock &MBB : MF) {
     // First pass. Try to remove or optimize existing LEAs.
     for (MachineBasicBlock::iterator I = MBB.begin(); I != MBB.end(); ++I) {
+      if (!isLEA(I->getOpcode()))
+        continue;
+
       if (OptIncDec && fixupIncDec(I, MBB))
         continue;
 
@@ -287,11 +295,6 @@ FixupLEAPass::searchBackwards(MachineOpe
   return MachineBasicBlock::iterator();
 }
 
-static inline bool isLEA(const unsigned Opcode) {
-  return Opcode == X86::LEA16r || Opcode == X86::LEA32r ||
-         Opcode == X86::LEA64r || Opcode == X86::LEA64_32r;
-}
-
 static inline bool isInefficientLEAReg(unsigned Reg) {
   return Reg == X86::EBP || Reg == X86::RBP ||
          Reg == X86::R13D || Reg == X86::R13;
@@ -362,14 +365,11 @@ static inline bool isLEASimpleIncOrDec(M
 bool FixupLEAPass::fixupIncDec(MachineBasicBlock::iterator &I,
                                MachineBasicBlock &MBB) const {
   MachineInstr &MI = *I;
-  unsigned Opcode = MI.getOpcode();
-  if (!isLEA(Opcode))
-    return false;
 
   if (isLEASimpleIncOrDec(MI) && TII->isSafeToClobberEFLAGS(MBB, I)) {
     unsigned NewOpcode;
     bool isINC = MI.getOperand(1 + X86::AddrDisp).getImm() == 1;
-    switch (Opcode) {
+    switch (MI.getOpcode()) {
     case X86::LEA16r:
       NewOpcode = isINC ? X86::INC16r : X86::DEC16r;
       break;
@@ -435,8 +435,6 @@ void FixupLEAPass::processInstructionFor
                                                 MachineBasicBlock &MBB) {
   MachineInstr &MI = *I;
   const unsigned Opcode = MI.getOpcode();
-  if (!isLEA(Opcode))
-    return;
 
   const MachineOperand &Dst =     MI.getOperand(0);
   const MachineOperand &Base =    MI.getOperand(1 + X86::AddrBaseReg);
@@ -485,10 +483,7 @@ void FixupLEAPass::processInstructionFor
 MachineInstr *
 FixupLEAPass::processInstrForSlow3OpLEA(MachineInstr &MI,
                                         MachineBasicBlock &MBB) {
-
   const unsigned LEAOpcode = MI.getOpcode();
-  if (!isLEA(LEAOpcode))
-    return nullptr;
 
   const MachineOperand &Dst =     MI.getOperand(0);
   const MachineOperand &Base =    MI.getOperand(1 + X86::AddrBaseReg);




More information about the llvm-commits mailing list