[PATCH] D140087: [X86] Replace (31/63 -/^ X) with (NOT X) and ignore (32/64 ^ X) when computing shift count

Noah Goldstein via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 29 09:11:45 PST 2022


goldstein.w.n added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:4009-4010
+
+    } else if ((Add0C && Add0C->getAPIntValue().urem(Size) == Size - 1) ||
+               (Add1C && Add1C->getAPIntValue().urem(Size) == Size - 1)) {
+      // If we are doing a NOT on just the lower bits with (Size*N-1) -/^ X
----------------
lebedev.ri wrote:
> xor https://alive2.llvm.org/ce/z/k_3jok
> sub from bias https://alive2.llvm.org/ce/z/-BBhDe
> BUT NOT sub of bias: https://alive2.llvm.org/ce/z/AY9Aa7
> and not add: https://alive2.llvm.org/ce/z/yUyTC7
Ah, good catch.

Fixing and will add test case in `not-shift.ll`.

Sorry for missing that.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140087/new/

https://reviews.llvm.org/D140087



More information about the llvm-commits mailing list