[llvm] [SelectionDAG] Make `(a & x) | (~a & y) -> (a & (x ^ y)) ^ y` available for all targets (PR #137641)

Ulrich Weigand via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 29 01:13:45 PDT 2025


================
@@ -9,7 +9,9 @@ define i128 @f1(i128 %val1, i128 %val2) {
 ; CHECK:       # %bb.0:
 ; CHECK-NEXT:    vl %v0, 0(%r3), 3
 ; CHECK-NEXT:    vl %v1, 0(%r4), 3
-; CHECK-NEXT:    vmxq %v0, %v1, %v0
+; CHECK-NEXT:    vchq %v2, %v1, %v0
+; CHECK-NEXT:    vx %v1, %v1, %v0
+; CHECK-NEXT:    veval %v0, %v0, %v1, %v2, 30
----------------
uweigand wrote:

The instruction is called VECTOR AND WITH COMPLEMENT  (VNC).   This (like all boolean instructions) implicitly supports any integer vector type.

https://github.com/llvm/llvm-project/pull/137641


More information about the llvm-commits mailing list