[PATCH] D19318: [InstCombine][SSE] Demanded vector elements for scalar intrinsics (Part 2)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 20 05:10:36 PDT 2016


RKSimon created this revision.
RKSimon added reviewers: majnemer, mkuper, ab, spatel.
RKSimon added a subscriber: llvm-commits.
RKSimon set the repository for this revision to rL LLVM.

Split from D17490. This patch improves support for determining the demanded vector elements through SSE scalar intrinsics:

1 - demanded vector element support for unary and some extra binary scalar intrinsics (RCP/RSQRT/SQRT/FRCZ and ADD/CMP/DIV/ROUND).
2 - addss/addsd get simplified to a fadd call if we aren't interested in the pass through elements
3 - if we don't need the lowest element of a scalar operation then just use the first argument (the pass through elements) directly

We can add support for propagating demanded elements through any equivalent packed SSE intrinsics in a future patch (these wouldn't use the pass through patterns).

Repository:
  rL LLVM

http://reviews.llvm.org/D19318

Files:
  lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
  test/Transforms/InstCombine/x86-sse.ll
  test/Transforms/InstCombine/x86-sse2.ll
  test/Transforms/InstCombine/x86-sse41.ll
  test/Transforms/InstCombine/x86-xop.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19318.54346.patch
Type: text/x-patch
Size: 37536 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160420/72ad402b/attachment.bin>


More information about the llvm-commits mailing list