Lines Matching refs:Rule
100 static bool hasNoSimpleLoops(const LegalizeRule &Rule, const LegalityQuery &Q, in hasNoSimpleLoops() argument
102 switch (Rule.getAction()) { in hasNoSimpleLoops()
116 static bool mutationIsSane(const LegalizeRule &Rule, in mutationIsSane() argument
121 if (Rule.getAction() == Custom || Rule.getAction() == Legal) in mutationIsSane()
128 switch (Rule.getAction()) { in mutationIsSane()
137 if (Rule.getAction() == FewerElements) { in mutationIsSane()
146 } else if (Rule.getAction() == MoreElements) in mutationIsSane()
164 if (Rule.getAction() == NarrowScalar) { in mutationIsSane()
192 for (const LegalizeRule &Rule : Rules) { in apply() local
193 if (Rule.match(Query)) { in apply()
195 std::pair<unsigned, LLT> Mutation = Rule.determineMutation(Query); in apply()
196 LLVM_DEBUG(dbgs() << ".. .. " << Rule.getAction() << ", " in apply()
198 assert(mutationIsSane(Rule, Query, Mutation) && in apply()
200 assert(hasNoSimpleLoops(Rule, Query, Mutation) && "Simple loop detected"); in apply()
201 return {Rule.getAction(), Mutation.first, Mutation.second}; in apply()