Lines Matching refs:TreePatternNode

710 static void FindDepVarsOf(TreePatternNode *N, DepVarMap &DepMap) {  in FindDepVarsOf()
721 static void FindDepVars(TreePatternNode *N, MultipleUseVarSet &DepVars) { in FindDepVars()
815 static unsigned getPatternSize(const TreePatternNode *P, in getPatternSize()
843 TreePatternNode *Child = P->getChild(i); in getPatternSize()
961 static TreePatternNode *getOperandNum(unsigned OpNo, TreePatternNode *N, in getOperandNum()
987 bool SDTypeConstraint::ApplyTypeConstraint(TreePatternNode *N, in ApplyTypeConstraint()
994 TreePatternNode *NodeToApply = getOperandNum(OperandNo, N, NodeInfo, ResNo); in ApplyTypeConstraint()
1014 TreePatternNode *OtherNode = in ApplyTypeConstraint()
1035 TreePatternNode *OtherNode = in ApplyTypeConstraint()
1043 TreePatternNode *BigOperand = in ApplyTypeConstraint()
1051 TreePatternNode *VecOperand = in ApplyTypeConstraint()
1062 TreePatternNode *BigVecOperand = in ApplyTypeConstraint()
1077 TreePatternNode *OtherNode = in ApplyTypeConstraint()
1085 TreePatternNode *OtherNode = in ApplyTypeConstraint()
1098 bool TreePatternNode::UpdateNodeTypeFromInst(unsigned ResNo, in UpdateNodeTypeFromInst()
1207 TreePatternNode::~TreePatternNode() { in ~TreePatternNode()
1275 void TreePatternNode::print(raw_ostream &OS) const { in print()
1304 void TreePatternNode::dump() const { in dump()
1315 bool TreePatternNode::isIsomorphicTo(const TreePatternNode *N, in isIsomorphicTo()
1344 TreePatternNode *TreePatternNode::clone() const { in clone()
1345 TreePatternNode *New; in clone()
1347 New = new TreePatternNode(getLeafValue(), getNumTypes()); in clone()
1349 std::vector<TreePatternNode*> CChildren; in clone()
1353 New = new TreePatternNode(getOperator(), CChildren, getNumTypes()); in clone()
1363 void TreePatternNode::RemoveAllTypes() { in RemoveAllTypes()
1374 void TreePatternNode::
1375 SubstituteFormalArguments(std::map<std::string, TreePatternNode*> &ArgMap) { in SubstituteFormalArguments()
1379 TreePatternNode *Child = getChild(i); in SubstituteFormalArguments()
1387 TreePatternNode *NewChild = ArgMap[Child->getName()]; in SubstituteFormalArguments()
1404 TreePatternNode *TreePatternNode::InlinePatternFragments(TreePattern &TP) { in InlinePatternFragments()
1415 TreePatternNode *Child = getChild(i); in InlinePatternFragments()
1416 TreePatternNode *NewChild = Child->InlinePatternFragments(TP); in InlinePatternFragments()
1438 TreePatternNode *FragTree = Frag->getOnlyTree()->clone(); in InlinePatternFragments()
1447 std::map<std::string, TreePatternNode*> ArgMap; in InlinePatternFragments()
1583 const CodeGenIntrinsic *TreePatternNode::
1597 TreePatternNode::getComplexPatternInfo(const CodeGenDAGPatterns &CGP) const { in getComplexPatternInfo()
1612 unsigned TreePatternNode::getNumMIResults(const CodeGenDAGPatterns &CGP) const { in getNumMIResults()
1632 bool TreePatternNode::NodeHasProperty(SDNP Property, in NodeHasProperty()
1651 bool TreePatternNode::TreeHasProperty(SDNP Property, in TreeHasProperty()
1664 TreePatternNode::isCommutativeIntrinsic(const CodeGenDAGPatterns &CDP) const { in isCommutativeIntrinsic()
1670 static bool isOperandClass(const TreePatternNode *N, StringRef Class) { in isOperandClass()
1699 bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) { in ApplyTypeConstraints()
1751 TreePatternNode *SetVal = getChild(NC-1); in ApplyTypeConstraints()
1755 TreePatternNode *Child = getChild(i); in ApplyTypeConstraints()
1876 TreePatternNode *SubIdxChild = getChild(I + 1); in ApplyTypeConstraints()
1902 TreePatternNode *Child = getChild(ChildNo++); in ApplyTypeConstraints()
1989 static bool OnlyOnRHSOfCommutative(TreePatternNode *N) { in OnlyOnRHSOfCommutative()
2003 bool TreePatternNode::canPatternMatch(std::string &Reason, in canPatternMatch()
2058 TreePattern::TreePattern(Record *TheRec, TreePatternNode *Pat, bool isInput, in TreePattern()
2073 for (TreePatternNode *Tree : Trees) in ComputeNamedNodes()
2077 void TreePattern::ComputeNamedNodes(TreePatternNode *N) { in ComputeNamedNodes()
2086 TreePatternNode *TreePattern::ParseTreePattern(Init *TheInit, StringRef OpName){ in ParseTreePattern()
2100 TreePatternNode *Res = new TreePatternNode(DI, 1); in ParseTreePattern()
2115 TreePatternNode *Res = new TreePatternNode(TheInit, 1); in ParseTreePattern()
2124 return new TreePatternNode(II, 1); in ParseTreePattern()
2150 TreePatternNode *New = ParseTreePattern(Dag->getArg(0), Dag->getArgName(0)); in ParseTreePattern()
2197 std::vector<TreePatternNode*> Children; in ParseTreePattern()
2220 TreePatternNode *IIDNode = new TreePatternNode(IntInit::get(IID), 1); in ParseTreePattern()
2226 TreePatternNode *Child = Children[i]; in ParseTreePattern()
2246 TreePatternNode *Result = new TreePatternNode(Operator, Children, NumResults); in ParseTreePattern()
2262 static bool SimplifyTree(TreePatternNode *&N) { in SimplifyTree()
2280 TreePatternNode *Child = N->getChild(i); in SimplifyTree()
2293 InferAllTypes(const StringMap<SmallVector<TreePatternNode*,1> > *InNamedTypes) { in InferAllTypes() argument
2300 for (TreePatternNode *Tree : Trees) { in InferAllTypes()
2307 SmallVectorImpl<TreePatternNode*> &Nodes = Entry.second; in InferAllTypes()
2318 const SmallVectorImpl<TreePatternNode*> &InNodes = in InferAllTypes()
2322 for (TreePatternNode *Node : Nodes) { in InferAllTypes()
2347 TreePatternNode *N1 = Nodes[i], *N2 = Nodes[i+1]; in InferAllTypes()
2359 for (const TreePatternNode *Tree : Trees) in InferAllTypes()
2376 for (const TreePatternNode *Tree : Trees) { in print()
2578 TreePatternNode *T = P.getTree(0); in ParseDefaultOperands()
2580 TreePatternNode *TPN = T->getChild(op); in ParseDefaultOperands()
2599 static bool HandleUse(TreePattern *I, TreePatternNode *Pat, in HandleUse()
2600 std::map<std::string, TreePatternNode*> &InstInputs) { in HandleUse()
2625 TreePatternNode *&Slot = InstInputs[Pat->getName()]; in HandleUse()
2650 FindPatternInputsAndOutputs(TreePattern *I, TreePatternNode *Pat, in FindPatternInputsAndOutputs()
2651 std::map<std::string, TreePatternNode*> &InstInputs, in FindPatternInputsAndOutputs()
2652 std::map<std::string, TreePatternNode*>&InstResults, in FindPatternInputsAndOutputs()
2663 TreePatternNode *Dest = Pat->getChild(i); in FindPatternInputsAndOutputs()
2704 TreePatternNode *Dest = Pat->getChild(i); in FindPatternInputsAndOutputs()
2762 bool IsNodeBitcast(const TreePatternNode *N) const { in IsNodeBitcast()
2769 const TreePatternNode *N0 = N->getChild(0); in IsNodeBitcast()
2773 const TreePatternNode *N1 = N->getChild(1); in IsNodeBitcast()
2786 void AnalyzeNode(const TreePatternNode *N) { in AnalyzeNode()
2920 getInstructionsInTree(TreePatternNode *Tree, SmallVectorImpl<Record*> &Instrs) { in getInstructionsInTree()
2965 std::map<std::string, TreePatternNode*> InstInputs; in parseInstructionPattern()
2969 std::map<std::string, TreePatternNode*> InstResults; in parseInstructionPattern()
2976 TreePatternNode *Pat = I->getTree(j); in parseInstructionPattern()
3003 SmallVector<TreePatternNode *, 2> ResNodes; in parseInstructionPattern()
3011 TreePatternNode *RNode = InstResults[OpName]; in parseInstructionPattern()
3034 std::map<std::string, TreePatternNode*> InstInputsCheck(InstInputs); in parseInstructionPattern()
3036 std::vector<TreePatternNode*> ResultNodeOperands; in parseInstructionPattern()
3056 TreePatternNode *InVal = InstInputsCheck[OpName]; in parseInstructionPattern()
3068 TreePatternNode *OpNode = InVal->clone(); in parseInstructionPattern()
3076 std::vector<TreePatternNode*> Children; in parseInstructionPattern()
3078 OpNode = new TreePatternNode(Xform, Children, OpNode->getNumTypes()); in parseInstructionPattern()
3088 TreePatternNode *ResultPattern = in parseInstructionPattern()
3089 new TreePatternNode(I->getRecord(), ResultNodeOperands, in parseInstructionPattern()
3170 TreePatternNode *Pattern = I->getTree(0); in ParseInstructions()
3171 TreePatternNode *SrcPattern; in ParseInstructions()
3192 typedef std::pair<const TreePatternNode*, unsigned> NameRecord;
3194 static void FindNames(const TreePatternNode *P, in FindNames()
3407 static bool ForceArbitraryInstResultType(TreePatternNode *N, TreePattern &TP) { in ForceArbitraryInstResultType()
3514 std::map<std::string, TreePatternNode*> InstInputs; in ParsePatterns()
3515 std::map<std::string, TreePatternNode*> InstResults; in ParsePatterns()
3523 TreePatternNode *DstPattern = Result.getOnlyTree(); in ParsePatterns()
3524 std::vector<TreePatternNode*> ResultNodeOperands; in ParsePatterns()
3526 TreePatternNode *OpNode = DstPattern->getChild(ii); in ParsePatterns()
3529 std::vector<TreePatternNode*> Children; in ParsePatterns()
3531 OpNode = new TreePatternNode(Xform, Children, OpNode->getNumTypes()); in ParsePatterns()
3537 DstPattern = new TreePatternNode(DstPattern->getOperator(), in ParsePatterns()
3560 static void CombineChildVariants(TreePatternNode *Orig, in CombineChildVariants()
3561 const std::vector<std::vector<TreePatternNode*> > &ChildVariants, in CombineChildVariants()
3562 std::vector<TreePatternNode*> &OutVariants, in CombineChildVariants()
3585 std::vector<TreePatternNode*> NewChildren; in CombineChildVariants()
3588 auto R = llvm::make_unique<TreePatternNode>( in CombineChildVariants()
3606 [&](TreePatternNode *Variant) { in CombineChildVariants()
3627 static void CombineChildVariants(TreePatternNode *Orig, in CombineChildVariants()
3628 const std::vector<TreePatternNode*> &LHS, in CombineChildVariants()
3629 const std::vector<TreePatternNode*> &RHS, in CombineChildVariants()
3630 std::vector<TreePatternNode*> &OutVariants, in CombineChildVariants()
3633 std::vector<std::vector<TreePatternNode*> > ChildVariants; in CombineChildVariants()
3640 static void GatherChildrenOfAssociativeOpcode(TreePatternNode *N, in GatherChildrenOfAssociativeOpcode()
3641 std::vector<TreePatternNode *> &Children) { in GatherChildrenOfAssociativeOpcode()
3666 static void GenerateVariantsOf(TreePatternNode *N, in GenerateVariantsOf()
3667 std::vector<TreePatternNode*> &OutVariants, in GenerateVariantsOf()
3682 std::vector<TreePatternNode*> MaximalChildren; in GenerateVariantsOf()
3689 std::vector<TreePatternNode*> AVariants, BVariants, CVariants; in GenerateVariantsOf()
3699 std::vector<TreePatternNode*> ABVariants; in GenerateVariantsOf()
3700 std::vector<TreePatternNode*> BAVariants; in GenerateVariantsOf()
3701 std::vector<TreePatternNode*> ACVariants; in GenerateVariantsOf()
3702 std::vector<TreePatternNode*> CAVariants; in GenerateVariantsOf()
3703 std::vector<TreePatternNode*> BCVariants; in GenerateVariantsOf()
3704 std::vector<TreePatternNode*> CBVariants; in GenerateVariantsOf()
3732 std::vector<std::vector<TreePatternNode*> > ChildVariants; in GenerateVariantsOf()
3748 TreePatternNode *Child = N->getChild(i); in GenerateVariantsOf()
3764 std::vector<std::vector<TreePatternNode*> > Variants; in GenerateVariantsOf()
3794 std::vector<TreePatternNode*> Variants; in GenerateVariants()
3813 TreePatternNode *Variant = Variants[v]; in GenerateVariants()