if (MI->getOperand(OpNo).isImmediate()) {
O << "$+" << MI->getOperand(OpNo).getImmedValue();
} else {
- printOp(MI->getOperand(OpNo),
- TM.getInstrInfo()->isCall(MI->getOpcode()));
+ printOp(MI->getOperand(OpNo));
}
}
+ void printCallOperand(const MachineInstr *MI, unsigned OpNo,
+ MVT::ValueType VT) {
+ printOp(MI->getOperand(OpNo), true);
+ }
void printAbsAddrOperand(const MachineInstr *MI, unsigned OpNo,
MVT::ValueType VT) {
O << (int)MI->getOperand(OpNo).getImmedValue()*4;
def target : Operand<i32> {
let PrintMethod = "printBranchOperand";
}
+def calltarget : Operand<i32> {
+ let PrintMethod = "printCallOperand";
+}
def aaddr : Operand<i32> {
let PrintMethod = "printAbsAddrOperand";
}
LR,CTR,
CR0,CR1,CR5,CR6,CR7] in {
// Convenient aliases for call instructions
- def BL : IForm<18, 0, 1, (ops target:$func, variable_ops), "bl $func", BrB>;
+ def BL : IForm<18, 0, 1, (ops calltarget:$func, variable_ops), "bl $func", BrB>;
def BLA : IForm<18, 1, 1, (ops aaddr:$func, variable_ops), "bla $func", BrB>;
def BCTRL : XLForm_2_ext<19, 528, 20, 0, 1, (ops variable_ops), "bctrl", BrB>;
}