Lines Matching defs:NodeExtensionHelper
14990 /// NodeExtensionHelper for `a` and one for `b`.
15004 struct NodeExtensionHelper {
15017 /// Original value that this NodeExtensionHelper represents.
15234 SDNode * /*Root*/, const NodeExtensionHelper & /*LHS*/,
15235 const NodeExtensionHelper & /*RHS*/, SelectionDAG &,
15423 /// Build a NodeExtensionHelper for \p Root.getOperand(\p OperandIdx).
15424 NodeExtensionHelper(SDNode *Root, unsigned OperandIdx, SelectionDAG &DAG,
15538 NodeExtensionHelper LHS;
15540 NodeExtensionHelper RHS;
15543 const NodeExtensionHelper &LHS, std::optional<ExtKind> LHSExt,
15544 const NodeExtensionHelper &RHS, std::optional<ExtKind> RHSExt)
15555 NodeExtensionHelper::getMaskAndVL(Root, DAG, Subtarget);
15586 canFoldToVWWithSameExtensionImpl(SDNode *Root, const NodeExtensionHelper &LHS,
15587 const NodeExtensionHelper &RHS,
15591 return CombineResult(NodeExtensionHelper::getZExtOpcode(Root->getOpcode()),
15595 return CombineResult(NodeExtensionHelper::getSExtOpcode(Root->getOpcode()),
15599 return CombineResult(NodeExtensionHelper::getFPExtOpcode(Root->getOpcode()),
15612 canFoldToVWWithSameExtension(SDNode *Root, const NodeExtensionHelper &LHS,
15613 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15625 canFoldToVW_W(SDNode *Root, const NodeExtensionHelper &LHS,
15626 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15630 NodeExtensionHelper::getWOpcode(Root->getOpcode(), ExtKind::FPExt),
15639 NodeExtensionHelper::getWOpcode(Root->getOpcode(), ExtKind::ZExt), Root,
15643 NodeExtensionHelper::getWOpcode(Root->getOpcode(), ExtKind::SExt), Root,
15653 canFoldToVWWithSEXT(SDNode *Root, const NodeExtensionHelper &LHS,
15654 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15665 canFoldToVWWithZEXT(SDNode *Root, const NodeExtensionHelper &LHS,
15666 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15677 canFoldToVWWithFPEXT(SDNode *Root, const NodeExtensionHelper &LHS,
15678 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15689 canFoldToVW_SU(SDNode *Root, const NodeExtensionHelper &LHS,
15690 const NodeExtensionHelper &RHS, SelectionDAG &DAG,
15695 return CombineResult(NodeExtensionHelper::getSUOpcode(Root->getOpcode()),
15700 SmallVector<NodeExtensionHelper::CombineToTry>
15701 NodeExtensionHelper::getSupportedFoldings(const SDNode *Root) {
15777 if (!NodeExtensionHelper::isSupportedRoot(N, Subtarget))
15789 NodeExtensionHelper LHS(Root, 0, DAG, Subtarget);
15790 NodeExtensionHelper RHS(Root, 1, DAG, Subtarget);
15792 &Inserted](const NodeExtensionHelper &Op) {
15796 if (!NodeExtensionHelper::isSupportedRoot(TheUser, Subtarget))
15813 SmallVector<NodeExtensionHelper::CombineToTry> FoldingStrategies =
15814 NodeExtensionHelper::getSupportedFoldings(Root);
15819 (Attempt != 1 + NodeExtensionHelper::isCommutative(Root)) && !Matched;
15822 for (NodeExtensionHelper::CombineToTry FoldingStrategy :