switch (N->getOpcode()) {
default: break;
+ case ISD::BasicBlock: return CodeGenMap[Op] = Op;
case ISD::DYNAMIC_STACKALLOC: return SelectDYNAMIC_STACKALLOC(Op);
case ISD::ADD_PARTS: return SelectADD_PARTS(Op);
case ISD::SUB_PARTS: return SelectSUB_PARTS(Op);
// Finally, select this to a blr (return) instruction.
return CurDAG->SelectNodeTo(N, PPC::BLR, MVT::Other, Chain);
}
- case ISD::BR:
- return CurDAG->SelectNodeTo(N, PPC::B, MVT::Other, N->getOperand(1),
- Select(N->getOperand(0)));
case ISD::BR_CC:
case ISD::BRTWOWAY_CC: {
SDOperand Chain = Select(N->getOperand(0));
let Defs = [LR] in
def MovePCtoLR : Pseudo<(ops piclabel:$label), "bl $label", []>;
-let isBranch = 1, isTerminator = 1 in {
+let isBranch = 1, isTerminator = 1, hasCtrlDep = 1 in {
def COND_BRANCH : Pseudo<(ops CRRC:$crS, u16imm:$opc,
target:$true, target:$false),
"; COND_BRANCH", []>;