[llvm] [InstCombine] optimize powi(X,Y) * X with Ofast (PR #69998)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 6 22:46:11 PST 2024
================
@@ -68,6 +68,22 @@ template <typename T> inline OneUse_match<T> m_OneUse(const T &SubPattern) {
return SubPattern;
}
+template <typename SubPattern_t> struct AllowReassoc_match {
+ SubPattern_t SubPattern;
+
+ AllowReassoc_match(const SubPattern_t &SP) : SubPattern(SP) {}
+
+ template <typename OpTy> bool match(OpTy *V) {
+ auto *I = dyn_cast<FPMathOperator>(V);
+ return I && I->hasAllowReassoc() && SubPattern.match(I);
+ }
+};
+
+template <typename T>
+inline AllowReassoc_match<T> m_AllowReassoc(const T &SubPattern) {
----------------
arsenm wrote:
This isn't quite the API I had in my mind. I envisioned the required flags as a template parameter to the existing matchers, so you could have something like:
`m_FMul<Reassoc>(), m_Intrinsic<powi, Reassoc>`
However I wasn't expecting you to do anything for this in this patch. This is fine for now
https://github.com/llvm/llvm-project/pull/69998
More information about the llvm-commits
mailing list