[llvm] [AArch64][SVE] Add patterns for bit-select instructions. (PR #138689)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Thu May 8 05:06:20 PDT 2025
================
@@ -545,12 +545,18 @@ def AArch64umulh : PatFrag<(ops node:$op1, node:$op2),
def AArch64bsl : PatFrags<(ops node:$Op1, node:$Op2, node:$Op3),
- [(int_aarch64_sve_bsl node:$Op1, node:$Op2, node:$Op3),
- (AArch64bsp node:$Op3, node:$Op1, node:$Op2)]>;
+ [(AArch64bsp node:$Op3, node:$Op1, node:$Op2),
+ (or (and node:$Op1, node:$Op3), (and node:$Op2, (vnot node:$Op3)))]>;
-def AArch64nbsl : PatFrags<(ops node:$Op1, node:$Op2, node:$Op3),
- [(int_aarch64_sve_nbsl node:$Op1, node:$Op2, node:$Op3),
- (vnot (AArch64bsp node:$Op3, node:$Op1, node:$Op2))]>;
+def AArch64bsl1n : PatFrag<(ops node:$Op1, node:$Op2, node:$Op3),
+ (AArch64bsl (vnot node:$Op1), node:$Op2, node:$Op3)>;
+
+def AArch64bsl2n : PatFrags<(ops node:$Op1, node:$Op2, node:$Op3),
+ [(AArch64bsl node:$Op1, (vnot node:$Op2), node:$Op3),
+ (or (and node:$Op1, node:$Op3), (vnot (or node:$Op2, node:$Op3)))]>;
----------------
paulwalker-arm wrote:
That De Morgan has a lot to answer for :(
https://github.com/llvm/llvm-project/pull/138689
More information about the llvm-commits
mailing list