[llvm-commits] CVS: llvm/lib/Target/X86/X86RegisterInfo.cpp

Chris Lattner lattner at cs.uiuc.edu
Mon Feb 16 23:36:01 PST 2004


Changes in directory llvm/lib/Target/X86:

X86RegisterInfo.cpp updated: 1.49 -> 1.50

---
Log message:

Scrunchify code, by adding helpers.  No functionality changes.


---
Diffs of the changes:  (+45 -56)

Index: llvm/lib/Target/X86/X86RegisterInfo.cpp
diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.49 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.50
--- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.49	Mon Feb 16 22:33:17 2004
+++ llvm/lib/Target/X86/X86RegisterInfo.cpp	Mon Feb 16 23:35:13 2004
@@ -92,70 +92,59 @@
   }
 }
 
+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:
+  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 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:
-    assert(0 && "Operand cannot be folded");
-  }
-  else
-    assert(0 && "Operand cannot be folded");
-
+  
   MBB.insert(MBB.erase(MI), NI);
   return 0;
 }





More information about the llvm-commits mailing list