forked from OSchip/llvm-project
implement movri
add a stub LowerFORMAL_ARGUMENTS llvm-svn: 28388
This commit is contained in:
parent
f3cbd7ef31
commit
b15597b59a
|
@ -81,11 +81,17 @@ static SDOperand LowerRET(SDOperand Op, SelectionDAG &DAG) {
|
||||||
return DAG.getNode(ARMISD::RET_FLAG, MVT::Other, Copy, Copy.getValue(1));
|
return DAG.getNode(ARMISD::RET_FLAG, MVT::Other, Copy, Copy.getValue(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG) {
|
||||||
|
assert(0 && "Not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
SDOperand ARMTargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) {
|
SDOperand ARMTargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) {
|
||||||
switch (Op.getOpcode()) {
|
switch (Op.getOpcode()) {
|
||||||
default:
|
default:
|
||||||
assert(0 && "Should not custom lower this!");
|
assert(0 && "Should not custom lower this!");
|
||||||
abort();
|
abort();
|
||||||
|
case ISD::FORMAL_ARGUMENTS:
|
||||||
|
return LowerFORMAL_ARGUMENTS(Op, DAG);
|
||||||
case ISD::RET:
|
case ISD::RET:
|
||||||
return LowerRET(Op, DAG);
|
return LowerRET(Op, DAG);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,8 @@ def ADJCALLSTACKDOWN : InstARM<(ops i32imm:$amt),
|
||||||
"!ADJCALLSTACKDOWN $amt",
|
"!ADJCALLSTACKDOWN $amt",
|
||||||
[(callseq_start imm:$amt)]>;
|
[(callseq_start imm:$amt)]>;
|
||||||
|
|
||||||
|
def BX: InstARM<(ops), "bx", [(retflag)]>;
|
||||||
|
|
||||||
def ldr : InstARM<(ops IntRegs:$dst, IntRegs:$addr),
|
def ldr : InstARM<(ops IntRegs:$dst, IntRegs:$addr),
|
||||||
"ldr $dst, [$addr]",
|
"ldr $dst, [$addr]",
|
||||||
[(set IntRegs:$dst, (load IntRegs:$addr))]>;
|
[(set IntRegs:$dst, (load IntRegs:$addr))]>;
|
||||||
|
@ -50,5 +52,8 @@ def str : InstARM<(ops IntRegs:$src, IntRegs:$addr),
|
||||||
"str $src, [$addr]",
|
"str $src, [$addr]",
|
||||||
[(store IntRegs:$src, IntRegs:$addr)]>;
|
[(store IntRegs:$src, IntRegs:$addr)]>;
|
||||||
|
|
||||||
def mov : InstARM<(ops IntRegs:$dst, IntRegs:$b),
|
def movrr : InstARM<(ops IntRegs:$dst, IntRegs:$src),
|
||||||
"mov $dst, $b", []>;
|
"mov $dst, $src", []>;
|
||||||
|
|
||||||
|
def movri : InstARM<(ops IntRegs:$dst, i32imm:$src),
|
||||||
|
"mov $dst, $src", [(set IntRegs:$dst, imm:$src)]>;
|
||||||
|
|
|
@ -49,7 +49,7 @@ void ARMRegisterInfo::copyRegToReg(MachineBasicBlock &MBB,
|
||||||
unsigned DestReg, unsigned SrcReg,
|
unsigned DestReg, unsigned SrcReg,
|
||||||
const TargetRegisterClass *RC) const {
|
const TargetRegisterClass *RC) const {
|
||||||
assert (RC == ARM::IntRegsRegisterClass);
|
assert (RC == ARM::IntRegsRegisterClass);
|
||||||
BuildMI(MBB, I, ARM::mov, 1, DestReg).addReg(SrcReg);
|
BuildMI(MBB, I, ARM::movrr, 1, DestReg).addReg(SrcReg);
|
||||||
}
|
}
|
||||||
|
|
||||||
MachineInstr *ARMRegisterInfo::foldMemoryOperand(MachineInstr* MI,
|
MachineInstr *ARMRegisterInfo::foldMemoryOperand(MachineInstr* MI,
|
||||||
|
|
Loading…
Reference in New Issue