[all-commits] [llvm/llvm-project] eba6de: [SVE] Lower vector CTLZ, CTPOP and CTTZ operations.

paulwalker-arm via All-commits all-commits at lists.llvm.org
Tue Jan 5 03:02:25 PST 2021


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: eba6deab22b576004a209b3f42ccc5e58f7603bf
      https://github.com/llvm/llvm-project/commit/eba6deab22b576004a209b3f42ccc5e58f7603bf
  Author: Paul Walker <paul.walker at arm.com>
  Date:   2021-01-05 (Tue, 05 Jan 2021)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.h
    M llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
    M llvm/lib/Target/AArch64/SVEInstrFormats.td
    A llvm/test/CodeGen/AArch64/sve-bit-counting.ll
    A llvm/test/CodeGen/AArch64/sve-fixed-length-bit-counting.ll

  Log Message:
  -----------
  [SVE] Lower vector CTLZ, CTPOP and CTTZ operations.

CTLZ and CTPOP are lowered to CLZ and CNT instructions respectively.

CTTZ is not a native SVE operation but is instead lowered to:
  CTTZ(V) => CTLZ(BITREVERSE(V))

In the case of fixed-length support using SVE we also lower CTTZ
operating on NEON sized vectors because of its reliance on
BITREVERSE which is also lowered to SVE intructions at these lengths.

Differential Revision: https://reviews.llvm.org/D93607




More information about the All-commits mailing list