Lines Matching refs:Op

402 SDValue MipsSETargetLowering::lowerSELECT(SDValue Op, SelectionDAG &DAG) const {  in lowerSELECT()  argument
404 return MipsTargetLowering::LowerOperation(Op, DAG); in lowerSELECT()
406 EVT ResTy = Op->getValueType(0); in lowerSELECT()
407 SDLoc DL(Op); in lowerSELECT()
412 SDValue Tmp = DAG.getNode(MipsISD::MTC1_D64, DL, MVT::f64, Op->getOperand(0)); in lowerSELECT()
413 return DAG.getNode(MipsISD::FSELECT, DL, ResTy, Tmp, Op->getOperand(1), in lowerSELECT()
414 Op->getOperand(2)); in lowerSELECT()
442 SDValue MipsSETargetLowering::LowerOperation(SDValue Op, in LowerOperation() argument
444 switch(Op.getOpcode()) { in LowerOperation()
445 case ISD::LOAD: return lowerLOAD(Op, DAG); in LowerOperation()
446 case ISD::STORE: return lowerSTORE(Op, DAG); in LowerOperation()
447 case ISD::SMUL_LOHI: return lowerMulDiv(Op, MipsISD::Mult, true, true, DAG); in LowerOperation()
448 case ISD::UMUL_LOHI: return lowerMulDiv(Op, MipsISD::Multu, true, true, DAG); in LowerOperation()
449 case ISD::MULHS: return lowerMulDiv(Op, MipsISD::Mult, false, true, DAG); in LowerOperation()
450 case ISD::MULHU: return lowerMulDiv(Op, MipsISD::Multu, false, true, DAG); in LowerOperation()
451 case ISD::MUL: return lowerMulDiv(Op, MipsISD::Mult, true, false, DAG); in LowerOperation()
452 case ISD::SDIVREM: return lowerMulDiv(Op, MipsISD::DivRem, true, true, DAG); in LowerOperation()
453 case ISD::UDIVREM: return lowerMulDiv(Op, MipsISD::DivRemU, true, true, in LowerOperation()
455 case ISD::INTRINSIC_WO_CHAIN: return lowerINTRINSIC_WO_CHAIN(Op, DAG); in LowerOperation()
456 case ISD::INTRINSIC_W_CHAIN: return lowerINTRINSIC_W_CHAIN(Op, DAG); in LowerOperation()
457 case ISD::INTRINSIC_VOID: return lowerINTRINSIC_VOID(Op, DAG); in LowerOperation()
458 case ISD::EXTRACT_VECTOR_ELT: return lowerEXTRACT_VECTOR_ELT(Op, DAG); in LowerOperation()
459 case ISD::BUILD_VECTOR: return lowerBUILD_VECTOR(Op, DAG); in LowerOperation()
460 case ISD::VECTOR_SHUFFLE: return lowerVECTOR_SHUFFLE(Op, DAG); in LowerOperation()
461 case ISD::SELECT: return lowerSELECT(Op, DAG); in LowerOperation()
462 case ISD::BITCAST: return lowerBITCAST(Op, DAG); in LowerOperation()
465 return MipsTargetLowering::LowerOperation(Op, DAG); in LowerOperation()
1167 SDValue MipsSETargetLowering::lowerLOAD(SDValue Op, SelectionDAG &DAG) const { in lowerLOAD() argument
1168 LoadSDNode &Nd = *cast<LoadSDNode>(Op); in lowerLOAD()
1171 return MipsTargetLowering::lowerLOAD(Op, DAG); in lowerLOAD()
1174 SDLoc DL(Op); in lowerLOAD()
1196 SDValue MipsSETargetLowering::lowerSTORE(SDValue Op, SelectionDAG &DAG) const { in lowerSTORE() argument
1197 StoreSDNode &Nd = *cast<StoreSDNode>(Op); in lowerSTORE()
1200 return MipsTargetLowering::lowerSTORE(Op, DAG); in lowerSTORE()
1203 SDLoc DL(Op); in lowerSTORE()
1225 SDValue MipsSETargetLowering::lowerBITCAST(SDValue Op, in lowerBITCAST() argument
1227 SDLoc DL(Op); in lowerBITCAST()
1228 MVT Src = Op.getOperand(0).getValueType().getSimpleVT(); in lowerBITCAST()
1229 MVT Dest = Op.getValueType().getSimpleVT(); in lowerBITCAST()
1234 Op.getOperand(0), DAG.getIntPtrConstant(0, DL)); in lowerBITCAST()
1236 Op.getOperand(0), DAG.getIntPtrConstant(1, DL)); in lowerBITCAST()
1243 DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32, Op.getOperand(0), in lowerBITCAST()
1246 DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32, Op.getOperand(0), in lowerBITCAST()
1255 SDValue MipsSETargetLowering::lowerMulDiv(SDValue Op, unsigned NewOpc, in lowerMulDiv() argument
1261 EVT Ty = Op.getOperand(0).getValueType(); in lowerMulDiv()
1262 SDLoc DL(Op); in lowerMulDiv()
1264 Op.getOperand(0), Op.getOperand(1)); in lowerMulDiv()
1287 static SDValue extractLOHI(SDValue Op, const SDLoc &DL, SelectionDAG &DAG) { in extractLOHI() argument
1288 SDValue Lo = DAG.getNode(MipsISD::MFLO, DL, MVT::i32, Op); in extractLOHI()
1289 SDValue Hi = DAG.getNode(MipsISD::MFHI, DL, MVT::i32, Op); in extractLOHI()
1305 static SDValue lowerDSPIntr(SDValue Op, SelectionDAG &DAG, unsigned Opc) { in lowerDSPIntr() argument
1306 SDLoc DL(Op); in lowerDSPIntr()
1307 bool HasChainIn = Op->getOperand(0).getValueType() == MVT::Other; in lowerDSPIntr()
1313 Ops.push_back(Op->getOperand(OpNo++)); in lowerDSPIntr()
1316 assert(Op->getOperand(OpNo).getOpcode() == ISD::TargetConstant); in lowerDSPIntr()
1319 SDValue Opnd = Op->getOperand(++OpNo), In64; in lowerDSPIntr()
1327 for (++OpNo ; OpNo < Op->getNumOperands(); ++OpNo) in lowerDSPIntr()
1328 Ops.push_back(Op->getOperand(OpNo)); in lowerDSPIntr()
1337 for (EVT Ty : Op->values()) in lowerDSPIntr()
1353 static SDValue lowerMSACopyIntr(SDValue Op, SelectionDAG &DAG, unsigned Opc) { in lowerMSACopyIntr() argument
1354 SDLoc DL(Op); in lowerMSACopyIntr()
1355 SDValue Vec = Op->getOperand(1); in lowerMSACopyIntr()
1356 SDValue Idx = Op->getOperand(2); in lowerMSACopyIntr()
1357 EVT ResTy = Op->getValueType(0); in lowerMSACopyIntr()
1366 static SDValue lowerMSASplatZExt(SDValue Op, unsigned OpNr, SelectionDAG &DAG) { in lowerMSASplatZExt() argument
1367 EVT ResVecTy = Op->getValueType(0); in lowerMSASplatZExt()
1370 SDLoc DL(Op); in lowerMSASplatZExt()
1375 SDValue LaneA = Op->getOperand(OpNr); in lowerMSASplatZExt()
1410 static SDValue lowerMSASplatImm(SDValue Op, unsigned ImmOp, SelectionDAG &DAG, in lowerMSASplatImm() argument
1412 auto *CImm = cast<ConstantSDNode>(Op->getOperand(ImmOp)); in lowerMSASplatImm()
1414 APInt(Op->getValueType(0).getScalarType().getSizeInBits(), in lowerMSASplatImm()
1416 SDLoc(Op), Op->getValueType(0)); in lowerMSASplatImm()
1455 static SDValue lowerMSABinaryBitImmIntr(SDValue Op, SelectionDAG &DAG, in lowerMSABinaryBitImmIntr() argument
1458 EVT VecTy = Op->getValueType(0); in lowerMSABinaryBitImmIntr()
1460 SDLoc DL(Op); in lowerMSABinaryBitImmIntr()
1496 return DAG.getNode(Opc, DL, VecTy, Op->getOperand(1), Exp2Imm); in lowerMSABinaryBitImmIntr()
1499 static SDValue truncateVecElts(SDValue Op, SelectionDAG &DAG) { in truncateVecElts() argument
1500 SDLoc DL(Op); in truncateVecElts()
1501 EVT ResTy = Op->getValueType(0); in truncateVecElts()
1502 SDValue Vec = Op->getOperand(2); in truncateVecElts()
1512 static SDValue lowerMSABitClear(SDValue Op, SelectionDAG &DAG) { in lowerMSABitClear() argument
1513 EVT ResTy = Op->getValueType(0); in lowerMSABitClear()
1514 SDLoc DL(Op); in lowerMSABitClear()
1516 SDValue Bit = DAG.getNode(ISD::SHL, DL, ResTy, One, truncateVecElts(Op, DAG)); in lowerMSABitClear()
1518 return DAG.getNode(ISD::AND, DL, ResTy, Op->getOperand(1), in lowerMSABitClear()
1522 static SDValue lowerMSABitClearImm(SDValue Op, SelectionDAG &DAG) { in lowerMSABitClearImm() argument
1523 SDLoc DL(Op); in lowerMSABitClearImm()
1524 EVT ResTy = Op->getValueType(0); in lowerMSABitClearImm()
1526 << cast<ConstantSDNode>(Op->getOperand(2))->getAPIntValue(); in lowerMSABitClearImm()
1529 return DAG.getNode(ISD::AND, DL, ResTy, Op->getOperand(1), BitMask); in lowerMSABitClearImm()
1532 SDValue MipsSETargetLowering::lowerINTRINSIC_WO_CHAIN(SDValue Op, in lowerINTRINSIC_WO_CHAIN() argument
1534 SDLoc DL(Op); in lowerINTRINSIC_WO_CHAIN()
1535 unsigned Intrinsic = cast<ConstantSDNode>(Op->getOperand(0))->getZExtValue(); in lowerINTRINSIC_WO_CHAIN()
1540 return lowerDSPIntr(Op, DAG, MipsISD::SHILO); in lowerINTRINSIC_WO_CHAIN()
1542 return lowerDSPIntr(Op, DAG, MipsISD::DPAU_H_QBL); in lowerINTRINSIC_WO_CHAIN()
1544 return lowerDSPIntr(Op, DAG, MipsISD::DPAU_H_QBR); in lowerINTRINSIC_WO_CHAIN()
1546 return lowerDSPIntr(Op, DAG, MipsISD::DPSU_H_QBL); in lowerINTRINSIC_WO_CHAIN()
1548 return lowerDSPIntr(Op, DAG, MipsISD::DPSU_H_QBR); in lowerINTRINSIC_WO_CHAIN()
1550 return lowerDSPIntr(Op, DAG, MipsISD::DPA_W_PH); in lowerINTRINSIC_WO_CHAIN()
1552 return lowerDSPIntr(Op, DAG, MipsISD::DPS_W_PH); in lowerINTRINSIC_WO_CHAIN()
1554 return lowerDSPIntr(Op, DAG, MipsISD::DPAX_W_PH); in lowerINTRINSIC_WO_CHAIN()
1556 return lowerDSPIntr(Op, DAG, MipsISD::DPSX_W_PH); in lowerINTRINSIC_WO_CHAIN()
1558 return lowerDSPIntr(Op, DAG, MipsISD::MULSA_W_PH); in lowerINTRINSIC_WO_CHAIN()
1560 return lowerDSPIntr(Op, DAG, MipsISD::Mult); in lowerINTRINSIC_WO_CHAIN()
1562 return lowerDSPIntr(Op, DAG, MipsISD::Multu); in lowerINTRINSIC_WO_CHAIN()
1564 return lowerDSPIntr(Op, DAG, MipsISD::MAdd); in lowerINTRINSIC_WO_CHAIN()
1566 return lowerDSPIntr(Op, DAG, MipsISD::MAddu); in lowerINTRINSIC_WO_CHAIN()
1568 return lowerDSPIntr(Op, DAG, MipsISD::MSub); in lowerINTRINSIC_WO_CHAIN()
1570 return lowerDSPIntr(Op, DAG, MipsISD::MSubu); in lowerINTRINSIC_WO_CHAIN()
1575 return DAG.getNode(ISD::ADD, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1576 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1581 return DAG.getNode(ISD::ADD, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1582 lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
1584 return DAG.getNode(ISD::AND, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1585 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1587 return DAG.getNode(ISD::AND, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1588 lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
1593 return lowerMSABitClear(Op, DAG); in lowerINTRINSIC_WO_CHAIN()
1598 return lowerMSABitClearImm(Op, DAG); in lowerINTRINSIC_WO_CHAIN()
1604 EVT VecTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1606 if (Op->getConstantOperandVal(3) >= EltTy.getSizeInBits()) in lowerINTRINSIC_WO_CHAIN()
1609 Op->getConstantOperandVal(3) + 1); in lowerINTRINSIC_WO_CHAIN()
1612 Op->getOperand(2), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1619 EVT VecTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1621 if (Op->getConstantOperandVal(3) >= EltTy.getSizeInBits()) in lowerINTRINSIC_WO_CHAIN()
1624 Op->getConstantOperandVal(3) + 1); in lowerINTRINSIC_WO_CHAIN()
1627 Op->getOperand(2), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1630 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), Op->getOperand(3), in lowerINTRINSIC_WO_CHAIN()
1631 Op->getOperand(2), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1633 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1634 lowerMSASplatImm(Op, 3, DAG), Op->getOperand(2), in lowerINTRINSIC_WO_CHAIN()
1635 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1637 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), Op->getOperand(3), in lowerINTRINSIC_WO_CHAIN()
1638 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1640 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1641 lowerMSASplatImm(Op, 3, DAG), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1642 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1647 EVT VecTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1650 return DAG.getNode(ISD::XOR, DL, VecTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1652 truncateVecElts(Op, DAG))); in lowerINTRINSIC_WO_CHAIN()
1658 return lowerMSABinaryBitImmIntr(Op, DAG, ISD::XOR, Op->getOperand(2), in lowerINTRINSIC_WO_CHAIN()
1664 return DAG.getNode(MipsISD::VALL_NONZERO, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1665 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1667 return DAG.getNode(MipsISD::VANY_NONZERO, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1668 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1671 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1672 Op->getOperand(1), Op->getOperand(3), in lowerINTRINSIC_WO_CHAIN()
1673 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1676 return DAG.getNode(ISD::VSELECT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1677 Op->getOperand(1), lowerMSASplatImm(Op, 3, DAG), in lowerINTRINSIC_WO_CHAIN()
1678 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1683 EVT VecTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1686 return DAG.getNode(ISD::OR, DL, VecTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1688 truncateVecElts(Op, DAG))); in lowerINTRINSIC_WO_CHAIN()
1694 return lowerMSABinaryBitImmIntr(Op, DAG, ISD::OR, Op->getOperand(2), in lowerINTRINSIC_WO_CHAIN()
1700 return DAG.getNode(MipsISD::VALL_ZERO, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1701 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1703 return DAG.getNode(MipsISD::VANY_ZERO, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1704 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1709 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1710 Op->getOperand(2), ISD::SETEQ); in lowerINTRINSIC_WO_CHAIN()
1715 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1716 lowerMSASplatImm(Op, 2, DAG, true), ISD::SETEQ); in lowerINTRINSIC_WO_CHAIN()
1721 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1722 Op->getOperand(2), ISD::SETLE); in lowerINTRINSIC_WO_CHAIN()
1727 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1728 lowerMSASplatImm(Op, 2, DAG, true), ISD::SETLE); in lowerINTRINSIC_WO_CHAIN()
1733 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1734 Op->getOperand(2), ISD::SETULE); in lowerINTRINSIC_WO_CHAIN()
1739 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1740 lowerMSASplatImm(Op, 2, DAG), ISD::SETULE); in lowerINTRINSIC_WO_CHAIN()
1745 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1746 Op->getOperand(2), ISD::SETLT); in lowerINTRINSIC_WO_CHAIN()
1751 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1752 lowerMSASplatImm(Op, 2, DAG, true), ISD::SETLT); in lowerINTRINSIC_WO_CHAIN()
1757 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1758 Op->getOperand(2), ISD::SETULT); in lowerINTRINSIC_WO_CHAIN()
1763 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1764 lowerMSASplatImm(Op, 2, DAG), ISD::SETULT); in lowerINTRINSIC_WO_CHAIN()
1768 return lowerMSACopyIntr(Op, DAG, MipsISD::VEXTRACT_SEXT_ELT); in lowerINTRINSIC_WO_CHAIN()
1772 return lowerMSACopyIntr(Op, DAG, MipsISD::VEXTRACT_SEXT_ELT); in lowerINTRINSIC_WO_CHAIN()
1776 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SDLoc(Op), in lowerINTRINSIC_WO_CHAIN()
1777 Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1778 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1783 return lowerMSACopyIntr(Op, DAG, MipsISD::VEXTRACT_ZEXT_ELT); in lowerINTRINSIC_WO_CHAIN()
1787 return lowerMSACopyIntr(Op, DAG, MipsISD::VEXTRACT_ZEXT_ELT); in lowerINTRINSIC_WO_CHAIN()
1794 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SDLoc(Op), in lowerINTRINSIC_WO_CHAIN()
1795 Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1796 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1802 return DAG.getNode(ISD::SDIV, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1803 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1808 return DAG.getNode(ISD::UDIV, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1809 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1813 return DAG.getNode(ISD::FADD, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1814 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1818 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1819 Op->getOperand(2), ISD::SETOEQ); in lowerINTRINSIC_WO_CHAIN()
1822 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1823 Op->getOperand(2), ISD::SETOLE); in lowerINTRINSIC_WO_CHAIN()
1826 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1827 Op->getOperand(2), ISD::SETOLT); in lowerINTRINSIC_WO_CHAIN()
1830 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1831 Op->getOperand(2), ISD::SETONE); in lowerINTRINSIC_WO_CHAIN()
1834 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1835 Op->getOperand(2), ISD::SETO); in lowerINTRINSIC_WO_CHAIN()
1838 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1839 Op->getOperand(2), ISD::SETUEQ); in lowerINTRINSIC_WO_CHAIN()
1842 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1843 Op->getOperand(2), ISD::SETULE); in lowerINTRINSIC_WO_CHAIN()
1846 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1847 Op->getOperand(2), ISD::SETULT); in lowerINTRINSIC_WO_CHAIN()
1850 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1851 Op->getOperand(2), ISD::SETUO); in lowerINTRINSIC_WO_CHAIN()
1854 return DAG.getSetCC(DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1855 Op->getOperand(2), ISD::SETUNE); in lowerINTRINSIC_WO_CHAIN()
1859 return DAG.getNode(ISD::FDIV, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1860 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1863 return DAG.getNode(ISD::UINT_TO_FP, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1864 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1867 return DAG.getNode(ISD::SINT_TO_FP, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1868 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1873 EVT ResTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1875 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1884 EVT ResTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1886 ISD::FMUL, SDLoc(Op), ResTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1887 DAG.getNode(ISD::FEXP2, SDLoc(Op), ResTy, Op->getOperand(2))); in lowerINTRINSIC_WO_CHAIN()
1891 return DAG.getNode(ISD::FLOG2, DL, Op->getValueType(0), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1894 return DAG.getNode(ISD::FMA, SDLoc(Op), Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1895 Op->getOperand(1), Op->getOperand(2), Op->getOperand(3)); in lowerINTRINSIC_WO_CHAIN()
1899 return DAG.getNode(ISD::FMUL, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1900 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1904 return DAG.getNode(MipsISD::FMS, SDLoc(Op), Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1905 Op->getOperand(1), Op->getOperand(2), Op->getOperand(3)); in lowerINTRINSIC_WO_CHAIN()
1909 return DAG.getNode(ISD::FRINT, DL, Op->getValueType(0), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1912 return DAG.getNode(ISD::FSQRT, DL, Op->getValueType(0), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1916 return DAG.getNode(ISD::FSUB, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1917 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1920 return DAG.getNode(ISD::FP_TO_UINT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1921 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1924 return DAG.getNode(ISD::FP_TO_SINT, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1925 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
1930 return DAG.getNode(MipsISD::ILVEV, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1931 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1936 return DAG.getNode(MipsISD::ILVL, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1937 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1942 return DAG.getNode(MipsISD::ILVOD, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1943 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1948 return DAG.getNode(MipsISD::ILVR, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1949 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1954 return DAG.getNode(ISD::INSERT_VECTOR_ELT, SDLoc(Op), Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1955 Op->getOperand(1), Op->getOperand(3), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
1969 int64_t Value = cast<ConstantSDNode>(Op->getOperand(2))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
1972 return DAG.getNode(MipsISD::INSVE, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
1973 Op->getOperand(1), Op->getOperand(2), Op->getOperand(3), in lowerINTRINSIC_WO_CHAIN()
1980 return lowerMSASplatImm(Op, 1, DAG, true); in lowerINTRINSIC_WO_CHAIN()
1983 EVT ResTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1984 return DAG.getNode(ISD::ADD, SDLoc(Op), ResTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1985 DAG.getNode(ISD::SHL, SDLoc(Op), ResTy, in lowerINTRINSIC_WO_CHAIN()
1986 Op->getOperand(2), Op->getOperand(3))); in lowerINTRINSIC_WO_CHAIN()
1992 EVT ResTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
1993 return DAG.getNode(ISD::ADD, SDLoc(Op), ResTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
1994 DAG.getNode(ISD::MUL, SDLoc(Op), ResTy, in lowerINTRINSIC_WO_CHAIN()
1995 Op->getOperand(2), Op->getOperand(3))); in lowerINTRINSIC_WO_CHAIN()
2001 return DAG.getNode(ISD::SMAX, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2002 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2007 return DAG.getNode(ISD::UMAX, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2008 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2013 return DAG.getNode(ISD::SMAX, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2014 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG, true)); in lowerINTRINSIC_WO_CHAIN()
2019 return DAG.getNode(ISD::UMAX, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2020 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2025 return DAG.getNode(ISD::SMIN, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2026 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2031 return DAG.getNode(ISD::UMIN, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2032 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2037 return DAG.getNode(ISD::SMIN, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2038 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG, true)); in lowerINTRINSIC_WO_CHAIN()
2043 return DAG.getNode(ISD::UMIN, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2044 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2049 return DAG.getNode(ISD::SREM, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2050 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2055 return DAG.getNode(ISD::UREM, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2056 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2061 return DAG.getNode(ISD::MUL, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2062 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2067 EVT ResTy = Op->getValueType(0); in lowerINTRINSIC_WO_CHAIN()
2068 return DAG.getNode(ISD::SUB, SDLoc(Op), ResTy, Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2069 DAG.getNode(ISD::MUL, SDLoc(Op), ResTy, in lowerINTRINSIC_WO_CHAIN()
2070 Op->getOperand(2), Op->getOperand(3))); in lowerINTRINSIC_WO_CHAIN()
2076 return DAG.getNode(ISD::CTLZ, DL, Op->getValueType(0), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
2078 SDValue Res = DAG.getNode(ISD::OR, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2079 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2083 SDValue Res = DAG.getNode(ISD::OR, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2084 Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2085 lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2089 return DAG.getNode(ISD::OR, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2090 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2092 return DAG.getNode(ISD::OR, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2093 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2098 return DAG.getNode(MipsISD::PCKEV, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2099 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2104 return DAG.getNode(MipsISD::PCKOD, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2105 Op->getOperand(1), Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2110 return DAG.getNode(ISD::CTPOP, DL, Op->getValueType(0), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
2132 int64_t Value = cast<ConstantSDNode>(Op->getOperand(2))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
2140 int64_t Value = cast<ConstantSDNode>(Op->getOperand(2))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
2143 return DAG.getNode(MipsISD::SHF, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2144 Op->getOperand(2), Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
2159 int64_t Value = cast<ConstantSDNode>(Op->getOperand(3))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
2168 return DAG.getNode(ISD::SHL, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2169 truncateVecElts(Op, DAG)); in lowerINTRINSIC_WO_CHAIN()
2174 return DAG.getNode(ISD::SHL, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2175 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2184 return DAG.getNode(MipsISD::VSHF, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2185 lowerMSASplatZExt(Op, 2, DAG), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2186 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
2191 return DAG.getNode(MipsISD::VSHF, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2192 lowerMSASplatImm(Op, 2, DAG), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2193 Op->getOperand(1)); in lowerINTRINSIC_WO_CHAIN()
2198 return DAG.getNode(ISD::SRA, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2199 truncateVecElts(Op, DAG)); in lowerINTRINSIC_WO_CHAIN()
2204 return DAG.getNode(ISD::SRA, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2205 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2219 int64_t Value = cast<ConstantSDNode>(Op->getOperand(2))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
2228 return DAG.getNode(ISD::SRL, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2229 truncateVecElts(Op, DAG)); in lowerINTRINSIC_WO_CHAIN()
2234 return DAG.getNode(ISD::SRL, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2235 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2249 int64_t Value = cast<ConstantSDNode>(Op->getOperand(2))->getSExtValue(); in lowerINTRINSIC_WO_CHAIN()
2258 return DAG.getNode(ISD::SUB, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2259 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2264 return DAG.getNode(ISD::SUB, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2265 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2270 return DAG.getNode(MipsISD::VSHF, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2271 Op->getOperand(1), Op->getOperand(2), Op->getOperand(3)); in lowerINTRINSIC_WO_CHAIN()
2273 return DAG.getNode(ISD::XOR, DL, Op->getValueType(0), Op->getOperand(1), in lowerINTRINSIC_WO_CHAIN()
2274 Op->getOperand(2)); in lowerINTRINSIC_WO_CHAIN()
2276 return DAG.getNode(ISD::XOR, DL, Op->getValueType(0), in lowerINTRINSIC_WO_CHAIN()
2277 Op->getOperand(1), lowerMSASplatImm(Op, 2, DAG)); in lowerINTRINSIC_WO_CHAIN()
2285 static SDValue lowerMSALoadIntr(SDValue Op, SelectionDAG &DAG, unsigned Intr, in lowerMSALoadIntr() argument
2287 SDLoc DL(Op); in lowerMSALoadIntr()
2288 SDValue ChainIn = Op->getOperand(0); in lowerMSALoadIntr()
2289 SDValue Address = Op->getOperand(2); in lowerMSALoadIntr()
2290 SDValue Offset = Op->getOperand(3); in lowerMSALoadIntr()
2291 EVT ResTy = Op->getValueType(0); in lowerMSALoadIntr()
2305 SDValue MipsSETargetLowering::lowerINTRINSIC_W_CHAIN(SDValue Op, in lowerINTRINSIC_W_CHAIN() argument
2307 unsigned Intr = cast<ConstantSDNode>(Op->getOperand(1))->getZExtValue(); in lowerINTRINSIC_W_CHAIN()
2312 return lowerDSPIntr(Op, DAG, MipsISD::EXTP); in lowerINTRINSIC_W_CHAIN()
2314 return lowerDSPIntr(Op, DAG, MipsISD::EXTPDP); in lowerINTRINSIC_W_CHAIN()
2316 return lowerDSPIntr(Op, DAG, MipsISD::EXTR_W); in lowerINTRINSIC_W_CHAIN()
2318 return lowerDSPIntr(Op, DAG, MipsISD::EXTR_R_W); in lowerINTRINSIC_W_CHAIN()
2320 return lowerDSPIntr(Op, DAG, MipsISD::EXTR_RS_W); in lowerINTRINSIC_W_CHAIN()
2322 return lowerDSPIntr(Op, DAG, MipsISD::EXTR_S_H); in lowerINTRINSIC_W_CHAIN()
2324 return lowerDSPIntr(Op, DAG, MipsISD::MTHLIP); in lowerINTRINSIC_W_CHAIN()
2326 return lowerDSPIntr(Op, DAG, MipsISD::MULSAQ_S_W_PH); in lowerINTRINSIC_W_CHAIN()
2328 return lowerDSPIntr(Op, DAG, MipsISD::MAQ_S_W_PHL); in lowerINTRINSIC_W_CHAIN()
2330 return lowerDSPIntr(Op, DAG, MipsISD::MAQ_S_W_PHR); in lowerINTRINSIC_W_CHAIN()
2332 return lowerDSPIntr(Op, DAG, MipsISD::MAQ_SA_W_PHL); in lowerINTRINSIC_W_CHAIN()
2334 return lowerDSPIntr(Op, DAG, MipsISD::MAQ_SA_W_PHR); in lowerINTRINSIC_W_CHAIN()
2336 return lowerDSPIntr(Op, DAG, MipsISD::DPAQ_S_W_PH); in lowerINTRINSIC_W_CHAIN()
2338 return lowerDSPIntr(Op, DAG, MipsISD::DPSQ_S_W_PH); in lowerINTRINSIC_W_CHAIN()
2340 return lowerDSPIntr(Op, DAG, MipsISD::DPAQ_SA_L_W); in lowerINTRINSIC_W_CHAIN()
2342 return lowerDSPIntr(Op, DAG, MipsISD::DPSQ_SA_L_W); in lowerINTRINSIC_W_CHAIN()
2344 return lowerDSPIntr(Op, DAG, MipsISD::DPAQX_S_W_PH); in lowerINTRINSIC_W_CHAIN()
2346 return lowerDSPIntr(Op, DAG, MipsISD::DPAQX_SA_W_PH); in lowerINTRINSIC_W_CHAIN()
2348 return lowerDSPIntr(Op, DAG, MipsISD::DPSQX_S_W_PH); in lowerINTRINSIC_W_CHAIN()
2350 return lowerDSPIntr(Op, DAG, MipsISD::DPSQX_SA_W_PH); in lowerINTRINSIC_W_CHAIN()
2355 return lowerMSALoadIntr(Op, DAG, Intr, Subtarget); in lowerINTRINSIC_W_CHAIN()
2359 static SDValue lowerMSAStoreIntr(SDValue Op, SelectionDAG &DAG, unsigned Intr, in lowerMSAStoreIntr() argument
2361 SDLoc DL(Op); in lowerMSAStoreIntr()
2362 SDValue ChainIn = Op->getOperand(0); in lowerMSAStoreIntr()
2363 SDValue Value = Op->getOperand(2); in lowerMSAStoreIntr()
2364 SDValue Address = Op->getOperand(3); in lowerMSAStoreIntr()
2365 SDValue Offset = Op->getOperand(4); in lowerMSAStoreIntr()
2380 SDValue MipsSETargetLowering::lowerINTRINSIC_VOID(SDValue Op, in lowerINTRINSIC_VOID() argument
2382 unsigned Intr = cast<ConstantSDNode>(Op->getOperand(1))->getZExtValue(); in lowerINTRINSIC_VOID()
2390 return lowerMSAStoreIntr(Op, DAG, Intr, Subtarget); in lowerINTRINSIC_VOID()
2402 lowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) const { in lowerEXTRACT_VECTOR_ELT() argument
2403 SDLoc DL(Op); in lowerEXTRACT_VECTOR_ELT()
2404 EVT ResTy = Op->getValueType(0); in lowerEXTRACT_VECTOR_ELT()
2405 SDValue Op0 = Op->getOperand(0); in lowerEXTRACT_VECTOR_ELT()
2412 SDValue Op1 = Op->getOperand(1); in lowerEXTRACT_VECTOR_ELT()
2418 return Op; in lowerEXTRACT_VECTOR_ELT()
2421 static bool isConstantOrUndef(const SDValue Op) { in isConstantOrUndef() argument
2422 if (Op->isUndef()) in isConstantOrUndef()
2424 if (isa<ConstantSDNode>(Op)) in isConstantOrUndef()
2426 if (isa<ConstantFPSDNode>(Op)) in isConstantOrUndef()
2431 static bool isConstantOrUndefBUILD_VECTOR(const BuildVectorSDNode *Op) { in isConstantOrUndefBUILD_VECTOR() argument
2432 for (unsigned i = 0; i < Op->getNumOperands(); ++i) in isConstantOrUndefBUILD_VECTOR()
2433 if (isConstantOrUndef(Op->getOperand(i))) in isConstantOrUndefBUILD_VECTOR()
2451 SDValue MipsSETargetLowering::lowerBUILD_VECTOR(SDValue Op, in lowerBUILD_VECTOR() argument
2453 BuildVectorSDNode *Node = cast<BuildVectorSDNode>(Op); in lowerBUILD_VECTOR()
2454 EVT ResTy = Op->getValueType(0); in lowerBUILD_VECTOR()
2455 SDLoc DL(Op); in lowerBUILD_VECTOR()
2475 return Op; in lowerBUILD_VECTOR()
2504 } else if (DAG.isSplatValue(Op, /* AllowUndefs */ false)) in lowerBUILD_VECTOR()
2505 return Op; in lowerBUILD_VECTOR()
2545 static SDValue lowerVECTOR_SHUFFLE_SHF(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_SHF() argument
2589 SDLoc DL(Op); in lowerVECTOR_SHUFFLE_SHF()
2592 Op->getOperand(0)); in lowerVECTOR_SHUFFLE_SHF()
2626 static bool isVECTOR_SHUFFLE_SPLATI(SDValue Op, EVT ResTy, in isVECTOR_SHUFFLE_SPLATI() argument
2658 static SDValue lowerVECTOR_SHUFFLE_ILVEV(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_ILVEV() argument
2671 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVEV()
2673 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVEV()
2680 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVEV()
2682 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVEV()
2686 return DAG.getNode(MipsISD::ILVEV, SDLoc(Op), ResTy, Ws, Wt); in lowerVECTOR_SHUFFLE_ILVEV()
2704 static SDValue lowerVECTOR_SHUFFLE_ILVOD(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_ILVOD() argument
2717 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVOD()
2719 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVOD()
2726 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVOD()
2728 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVOD()
2732 return DAG.getNode(MipsISD::ILVOD, SDLoc(Op), ResTy, Wt, Ws); in lowerVECTOR_SHUFFLE_ILVOD()
2751 static SDValue lowerVECTOR_SHUFFLE_ILVR(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_ILVR() argument
2764 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVR()
2766 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVR()
2773 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVR()
2775 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVR()
2779 return DAG.getNode(MipsISD::ILVR, SDLoc(Op), ResTy, Ws, Wt); in lowerVECTOR_SHUFFLE_ILVR()
2798 static SDValue lowerVECTOR_SHUFFLE_ILVL(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_ILVL() argument
2812 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVL()
2814 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVL()
2821 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_ILVL()
2824 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_ILVL()
2828 return DAG.getNode(MipsISD::ILVL, SDLoc(Op), ResTy, Ws, Wt); in lowerVECTOR_SHUFFLE_ILVL()
2846 static SDValue lowerVECTOR_SHUFFLE_PCKEV(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_PCKEV() argument
2858 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_PCKEV()
2860 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_PCKEV()
2865 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_PCKEV()
2867 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_PCKEV()
2871 return DAG.getNode(MipsISD::PCKEV, SDLoc(Op), ResTy, Ws, Wt); in lowerVECTOR_SHUFFLE_PCKEV()
2889 static SDValue lowerVECTOR_SHUFFLE_PCKOD(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_PCKOD() argument
2901 Wt = Op->getOperand(0); in lowerVECTOR_SHUFFLE_PCKOD()
2903 Wt = Op->getOperand(1); in lowerVECTOR_SHUFFLE_PCKOD()
2908 Ws = Op->getOperand(0); in lowerVECTOR_SHUFFLE_PCKOD()
2910 Ws = Op->getOperand(1); in lowerVECTOR_SHUFFLE_PCKOD()
2914 return DAG.getNode(MipsISD::PCKOD, SDLoc(Op), ResTy, Ws, Wt); in lowerVECTOR_SHUFFLE_PCKOD()
2925 static SDValue lowerVECTOR_SHUFFLE_VSHF(SDValue Op, EVT ResTy, in lowerVECTOR_SHUFFLE_VSHF() argument
2935 SDLoc DL(Op); in lowerVECTOR_SHUFFLE_VSHF()
2954 Op0 = Op->getOperand(0); in lowerVECTOR_SHUFFLE_VSHF()
2955 Op1 = Op->getOperand(1); in lowerVECTOR_SHUFFLE_VSHF()
2957 Op0 = Op1 = Op->getOperand(0); in lowerVECTOR_SHUFFLE_VSHF()
2959 Op0 = Op1 = Op->getOperand(1); in lowerVECTOR_SHUFFLE_VSHF()
2975 SDValue MipsSETargetLowering::lowerVECTOR_SHUFFLE(SDValue Op, in lowerVECTOR_SHUFFLE() argument
2977 ShuffleVectorSDNode *Node = cast<ShuffleVectorSDNode>(Op); in lowerVECTOR_SHUFFLE()
2978 EVT ResTy = Op->getValueType(0); in lowerVECTOR_SHUFFLE()
2991 if (isVECTOR_SHUFFLE_SPLATI(Op, ResTy, Indices, DAG)) in lowerVECTOR_SHUFFLE()
2992 return lowerVECTOR_SHUFFLE_VSHF(Op, ResTy, Indices, DAG); in lowerVECTOR_SHUFFLE()
2994 if ((Result = lowerVECTOR_SHUFFLE_ILVEV(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
2996 if ((Result = lowerVECTOR_SHUFFLE_ILVOD(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
2998 if ((Result = lowerVECTOR_SHUFFLE_ILVL(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
3000 if ((Result = lowerVECTOR_SHUFFLE_ILVR(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
3002 if ((Result = lowerVECTOR_SHUFFLE_PCKEV(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
3004 if ((Result = lowerVECTOR_SHUFFLE_PCKOD(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
3006 if ((Result = lowerVECTOR_SHUFFLE_SHF(Op, ResTy, Indices, DAG))) in lowerVECTOR_SHUFFLE()
3008 return lowerVECTOR_SHUFFLE_VSHF(Op, ResTy, Indices, DAG); in lowerVECTOR_SHUFFLE()