diff options
Diffstat (limited to 'llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp')
| -rw-r--r-- | llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp index f030f83295d..cf196b59727 100644 --- a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp +++ b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp @@ -795,6 +795,24 @@ bool MipsSEDAGToDAGISel::trySelect(SDNode *Node) { switch(Opcode) { default: break; + case Mips::PseudoD_SELECT_I: + case Mips::PseudoD_SELECT_I64: { + MVT VT = Subtarget->isGP64bit() ? MVT::i64 : MVT::i32; + SDValue cond = Node->getOperand(0); + SDValue Hi1 = Node->getOperand(1); + SDValue Lo1 = Node->getOperand(2); + SDValue Hi2 = Node->getOperand(3); + SDValue Lo2 = Node->getOperand(4); + + SDValue ops[] = {cond, Hi1, Lo1, Hi2, Lo2}; + EVT NodeTys[] = {VT, VT}; + ReplaceNode(Node, CurDAG->getMachineNode(Subtarget->isGP64bit() + ? Mips::PseudoD_SELECT_I64 + : Mips::PseudoD_SELECT_I, + DL, NodeTys, ops)); + return true; + } + case ISD::ADDE: { selectAddE(Node, DL); return true; |

