Scrunchify code, by adding helpers. No functionality changes.
authorChris Lattner <sabre@nondot.org>
Tue, 17 Feb 2004 05:35:13 +0000 (05:35 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 17 Feb 2004 05:35:13 +0000 (05:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11522 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86RegisterInfo.cpp

index 01a3f07d4080284a95c49e8eacf458f74a41099a..6774f5f52fc0f5d41b7e0afd3e1cb359f2363c58 100644 (file)
@@ -92,70 +92,59 @@ bool X86RegisterInfo::canFoldMemoryOperand(MachineInstr* MI,
   }
 }
 
+static MachineInstr *MakeMRInst(unsigned Opcode, unsigned FrameIndex,
+                                MachineInstr *MI) {
+  return addFrameReference(BuildMI(Opcode, 5), FrameIndex)
+                 .addReg(MI->getOperand(1).getReg());
+}
+
+static MachineInstr *MakeMIInst(unsigned Opcode, unsigned FrameIndex,
+                                MachineInstr *MI) {
+  return addFrameReference(BuildMI(Opcode, 5), FrameIndex)
+                 .addZImm(MI->getOperand(1).getImmedValue());
+}
+
+static MachineInstr *MakeRMInst(unsigned Opcode, unsigned FrameIndex,
+                                MachineInstr *MI) {
+  return addFrameReference(BuildMI(Opcode, 5)
+          .addReg(MI->getOperand(0).getReg()), FrameIndex);
+}
+
 int X86RegisterInfo::foldMemoryOperand(MachineInstr* MI,
                                        unsigned i,
                                        int FrameIndex) const
 {
+  /// FIXME: This should obviously be autogenerated by tablegen when patterns
+  /// are available!
   MachineBasicBlock& MBB = *MI->getParent();
   MachineInstr* NI = 0;
-  if (i == 0)
-      switch(MI->getOpcode()) {
-      case X86::MOVrr8:
-    NI = addFrameReference(BuildMI(X86::MOVmr8, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-      case X86::MOVrr16:
-    NI = addFrameReference(BuildMI(X86::MOVmr16, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-      case X86::MOVrr32:
-    NI = addFrameReference(BuildMI(X86::MOVmr32, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-  case X86::ADDrr8:
-    NI = addFrameReference(BuildMI(X86::ADDmr8, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-  case X86::ADDrr16:
-    NI = addFrameReference(BuildMI(X86::ADDmr16, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-  case X86::ADDrr32:
-    NI = addFrameReference(BuildMI(X86::ADDmr32, 5), FrameIndex).addReg(MI->getOperand(1).getReg());
-    break;
-  case X86::ADDri8:
-    NI = addFrameReference(BuildMI(X86::ADDmi8, 5), FrameIndex).addZImm(MI->getOperand(1).getImmedValue());
-    break;
-  case X86::ADDri16:
-    NI = addFrameReference(BuildMI(X86::ADDmi16, 5), FrameIndex).addZImm(MI->getOperand(1).getImmedValue());
-    break;
-  case X86::ADDri32:
-    NI = addFrameReference(BuildMI(X86::ADDmi32, 5), FrameIndex).addZImm(MI->getOperand(1).getImmedValue());
-    break;
-  default:
-    assert(0 && "Operand cannot be folded");
-  }
-  else if (i == 1)
-      switch(MI->getOpcode()) {
-  case X86::MOVrr8:
-    NI = addFrameReference(BuildMI(X86::MOVrm8, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  case X86::MOVrr16:
-    NI = addFrameReference(BuildMI(X86::MOVrm16, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  case X86::MOVrr32:
-    NI = addFrameReference(BuildMI(X86::MOVrm32, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  case X86::ADDrr8:
-    NI = addFrameReference(BuildMI(X86::ADDrm8, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  case X86::ADDrr16:
-    NI = addFrameReference(BuildMI(X86::ADDrm16, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  case X86::ADDrr32:
-    NI = addFrameReference(BuildMI(X86::ADDrm32, 5).addReg(MI->getOperand(0).getReg()), FrameIndex);
-    break;
-  default:
+  if (i == 0) {
+    switch(MI->getOpcode()) {
+    case X86::MOVrr8:  NI = MakeMRInst(X86::MOVmr8 , FrameIndex, MI); break;
+    case X86::MOVrr16: NI = MakeMRInst(X86::MOVmr16, FrameIndex, MI); break;
+    case X86::MOVrr32: NI = MakeMRInst(X86::MOVmr32, FrameIndex, MI); break;
+    case X86::ADDrr8:  NI = MakeMRInst(X86::ADDmr8 , FrameIndex, MI); break;
+    case X86::ADDrr16: NI = MakeMRInst(X86::ADDmr16, FrameIndex, MI); break;
+    case X86::ADDrr32: NI = MakeMRInst(X86::ADDmr32, FrameIndex, MI); break;
+    case X86::ADDri8:  NI = MakeMIInst(X86::ADDmi8 , FrameIndex, MI); break;
+    case X86::ADDri16: NI = MakeMIInst(X86::ADDmi16, FrameIndex, MI); break;
+    case X86::ADDri32: NI = MakeMIInst(X86::ADDmi32, FrameIndex, MI); break;
+    default: assert(0 && "Operand cannot be folded");
+    }
+  } else if (i == 1) {
+    switch(MI->getOpcode()) {
+    case X86::MOVrr8:  NI = MakeRMInst(X86::MOVrm8 , FrameIndex, MI); break;
+    case X86::MOVrr16: NI = MakeRMInst(X86::MOVrm16, FrameIndex, MI); break;
+    case X86::MOVrr32: NI = MakeRMInst(X86::MOVrm32, FrameIndex, MI); break;
+    case X86::ADDrr8:  NI = MakeRMInst(X86::ADDrm8 , FrameIndex, MI); break;
+    case X86::ADDrr16: NI = MakeRMInst(X86::ADDrm16, FrameIndex, MI); break;
+    case X86::ADDrr32: NI = MakeRMInst(X86::ADDrm32, FrameIndex, MI); break;
+    default: assert(0 && "Operand cannot be folded");
+    }
+  } else {
     assert(0 && "Operand cannot be folded");
   }
-  else
-    assert(0 && "Operand cannot be folded");
-
+  
   MBB.insert(MBB.erase(MI), NI);
   return 0;
 }