[PATCH] D141938: [SVE][CodeGen] Relax all true isel requirement for predicated operations that have no side effects.

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 17 07:51:20 PST 2023


paulwalker-arm created this revision.
Herald added subscribers: psnobl, hiraditya, tschuett.
Herald added a reviewer: efriedma.
Herald added a project: All.
paulwalker-arm requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

We have isel patterns to allow predicated operations to emit
unpredicated instructions when the predicate is all true. However,
the predicated operations named #_PRED have no requirement for the
result of the inactive lanes and so when those operations have no
side effects, floating point exceptions for example, we can also
safely emit unpredicated instructions. Doing this allows better
register allocation, instruction scheduling and also enables more
usage of instructions that take immediate operands.

NOTE: This patch does not convert all possible instances but
instead focuses on the cases that are testable once D141937 <https://reviews.llvm.org/D141937> lands.

Depends on D141937 <https://reviews.llvm.org/D141937>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D141938

Files:
  llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
  llvm/lib/Target/AArch64/SVEInstrFormats.td
  llvm/test/CodeGen/AArch64/sve-fixed-length-int-extends.ll
  llvm/test/CodeGen/AArch64/sve-fixed-length-int-immediates.ll
  llvm/test/CodeGen/AArch64/sve-fixed-length-int-mulh.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-undef.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-shifts-undef.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-fp-vselect.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-arith.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-div.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-extends.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-immediates.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-mulh.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-rem.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-shifts.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-to-fp.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-vselect.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-masked-load.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-masked-store.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-rev.ll
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-sdiv-pow2.ll
  llvm/test/CodeGen/AArch64/sve2-sra.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141938.489825.patch
Type: text/x-patch
Size: 123362 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230117/807371ae/attachment.bin>


More information about the llvm-commits mailing list