[PATCH] D120462: [AArch64InstrInfo.td] - Lowering fix for cttz intrinsic

Shubham Narlawar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 27 10:24:13 PST 2022


gsocshubham added a comment.

In D120462#3343650 <https://reviews.llvm.org/D120462#3343650>, @dmgreen wrote:

>> TODO - Add unit test
>
> Yeah, this needs some tests to explain what you think it is improving. It seems to just add an extra instructions where it isn't needed? Was it intended to improve some larger code pattern?

It was intended to generate assembly as of GCC -

  f(unsigned int):
          rbit    w0, w0
          clz     w0, w0
          and     w0, w0, 31
          ret

but patch present here - https://reviews.llvm.org/D113291 is generating below assembly -

  rbit w8, w0
  cmp w0, #0
  clz w8, w8
  csel w0, wzr, w8, eq
  ret

Hence, to map with GCC assembly, I had modified patch to remove clz and csel instruction and generate below assembly -

  rbit    w8, w0
  clz     w8, w8
  and     w0, w8, #0x1f
  ret


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

https://reviews.llvm.org/D120462



More information about the llvm-commits mailing list