mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Scrunchify code, by adding helpers. No functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11522 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4ff7876c64
commit
7c035b73a4
@ -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:
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user