[PATCH] D88707: [SVE] Lower fixed length VECREDUCE_AND operation

Cameron McInally via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 1 15:33:35 PDT 2020


cameron.mcinally created this revision.
cameron.mcinally added reviewers: paulwalker-arm, kmclaughlin, dancgr, efriedma.
Herald added subscribers: llvm-commits, psnobl, hiraditya, kristof.beyls, tschuett.
Herald added a reviewer: rengolin.
Herald added a project: LLVM.
cameron.mcinally requested review of this revision.

Some things to consider:

1. NEON currently lowers the 64-bit and 128-bit vector AND reductions to a tree based algorithm, IINM. Do we want to go with the NEON lowerings or SVE instructions for those? The i8 and i16 cases should probably use SVE for code clarity. But the v2 vectors may be short enough that NEON is a win. They'll expand to something like:

  ext v1.16b, v0.16b, v0.16b, #8
  and v0.8b, v0.8b, v1.8b

Are we okay with tuning these later? Or should I do a study now?

2. If we choose SVE instructions for #1, the OverrideNEON flag is getting bulky again. We might want to consider refactoring that, since we'll need to add more cases for OR and XOR.

3. I named the new test file `sve-fixed-length-log-reduce.ll`. The `log` follows the existing AND tests in /AArch64, but is a little misleading since they're bitwise operations, not logical. Any suggestions on alternative names?


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D88707

Files:
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/test/CodeGen/AArch64/sve-fixed-length-log-reduce.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88707.295679.patch
Type: text/x-patch
Size: 16841 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201001/d8a658a0/attachment.bin>


More information about the llvm-commits mailing list