[PATCH] D148221: [IR] llvm::createMinMaxOp - create integer min/max intrinsics instead of icmp/sel

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 13 05:55:19 PDT 2023


RKSimon created this revision.
RKSimon added reviewers: nikic, fhahn, ABataev, vdmitrie.
Herald added subscribers: luke, StephenFan, frasercrmck, luismarques, apazos, sameer.abuasal, s.egerton, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, hiraditya.
Herald added a project: All.
RKSimon requested review of this revision.
Herald added subscribers: pcwang-thead, MaskRay.
Herald added a project: LLVM.

Based off D148215 <https://reviews.llvm.org/D148215>, when expanding a min/max reduction we should be creating min/max intrinsics directly instead of relying on instcombine to fold them back together.

This patch handles integer min/max cases. Hopefully we can add floating point support soon (at least for fastmath/nnan cases) - but we're missing some of the plumbing to pass the correct FMF to the intrinsic at the moment.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D148221

Files:
  llvm/include/llvm/Transforms/Utils/LoopUtils.h
  llvm/lib/Transforms/Utils/LoopUtils.cpp
  llvm/test/Transforms/LoopVectorize/AArch64/scalable-reductions.ll
  llvm/test/Transforms/LoopVectorize/RISCV/scalable-reductions.ll
  llvm/test/Transforms/LoopVectorize/first-order-recurrence.ll
  llvm/test/Transforms/PhaseOrdering/X86/vector-reductions-expanded.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148221.513200.patch
Type: text/x-patch
Size: 12268 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230413/9a46d60d/attachment.bin>


More information about the llvm-commits mailing list