[llvm] [X86] Select standalone ~(-1 << n) masks as BZHI (PR #226158)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 27 05:37:28 PDT 2026


================
@@ -5818,6 +5819,10 @@ void X86DAGToDAGISel::Select(SDNode *Node) {
     [[fallthrough]];
   case ISD::OR:
   case ISD::XOR:
+    // A standalone ~(-1 << n) mask is (-1 & lowmask(n)): mov -1; bzhi beats
+    // mov -1; shlx; not.
+    if (Opcode == ISD::XOR && Subtarget->hasBMI2() && matchBitExtract(Node))
+      return;
----------------
phoebewang wrote:

```
  case ISD::XOR:
    if (Subtarget->hasBMI2() && matchBitExtract(Node))
      return;
    [[fallthrough]];
  case ISD::OR:
```

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


More information about the llvm-commits mailing list