[PATCH] D47453: [X86] Emit BZHI when mask is ~(-1 << nbits))

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 28 08:11:08 PDT 2018


lebedev.ri created this revision.
lebedev.ri added reviewers: craig.topper, spatel, RKSimon.
Herald added a reviewer: javed.absar.
Herald added a subscriber: kristof.beyls.

In https://reviews.llvm.org/D47428, i propose to choose the `~(-(1 << nbits))` as the canonical form of low-bit-mask formation.
As it is seen from these tests, there is a reason for that.

AArch64 currently better handles `~(-(1 << nbits))`, but not the more traditional `(1 << nbits) - 1` (sic!).
The other way around for X86.
It would be much better to canonicalize.

This patch is completely monkey-typing.
I don't really understand how this works :)
I have based it on `// x & (-1 >> (32 - y))` pattern.

Also, when we only have `BMI`, i wonder if we could use `BEXTR` with `start=0` ?

Related links:
https://bugs.llvm.org/show_bug.cgi?id=36419
https://bugs.llvm.org/show_bug.cgi?id=37603
https://bugs.llvm.org/show_bug.cgi?id=37610
https://rise4fun.com/Alive/idM


Repository:
  rL LLVM

https://reviews.llvm.org/D47453

Files:
  lib/Target/X86/X86InstrInfo.td
  test/CodeGen/X86/get-lowbits.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47453.148818.patch
Type: text/x-patch
Size: 8213 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180528/a35dfc99/attachment.bin>


More information about the llvm-commits mailing list