summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/broadcast.ll
Commit message (Collapse)AuthorAgeFilesLines
* [InstCombine] fold insertelement into splat of same scalarSanjay Patel2019-07-081-3/+2
| | | | | | | | | | | | Forming the canonical splat shuffle improves analysis and may allow follow-on transforms (although some possibilities are missing as shown in the test diffs). The backend generically turns these patterns into build_vector, so there should be no codegen regressions. All targets are expected to be able to lower splats efficiently. llvm-svn: 365379
* [InstCombine] allow undef elements when forming splat from chain of ↵Sanjay Patel2019-07-041-12/+17
| | | | | | | | | | | | | | | | | | insertelements We allow forming a splat (broadcast) shuffle, but we were conservatively limiting that to cases where all elements of the vector are specified. It should be safe from a codegen perspective to allow undefined lanes of the vector because the expansion of a splat shuffle would become the chain of inserts again. Forming splat shuffles can reduce IR and help enable further IR transforms. Motivating bugs: https://bugs.llvm.org/show_bug.cgi?id=42174 https://bugs.llvm.org/show_bug.cgi?id=16739 Differential Revision: https://reviews.llvm.org/D63848 llvm-svn: 365147
* [InstCombine] change 'tmp' variable names; NFCSanjay Patel2019-06-261-86/+86
| | | | | | | | | | | I don't think there was anything going wrong here, but the auto-generating CHECK line script is known to have problems with 'TMP' because it uses that to match nameless values. This is a retry of rL364452. llvm-svn: 364477
* Revert [InstCombine] change 'tmp' variable names; NFCSanjay Patel2019-06-261-84/+86
| | | | | | This reverts r364452 (git commit 6083ae0b4a250c69f6d5b13b3742ee1fe5b878d5) llvm-svn: 364455
* [InstCombine] change 'tmp' variable names; NFCSanjay Patel2019-06-261-86/+84
| | | | | | | | | I don't think there was anything going wrong here, but the auto-generating CHECK line script is known to have problems with 'TMP' because it uses that to match nameless values. llvm-svn: 364452
* [InstCombine] regenerate test checks; NFCSanjay Patel2019-06-261-37/+75
| | | | llvm-svn: 364437
* Revert "Temporarily Revert "Add basic loop fusion pass.""Eric Christopher2019-04-171-0/+137
| | | | | | | | The reversion apparently deleted the test/Transforms directory. Will be re-reverting again. llvm-svn: 358552
* Temporarily Revert "Add basic loop fusion pass."Eric Christopher2019-04-171-137/+0
| | | | | | | | As it's causing some bot failures (and per request from kbarton). This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda. llvm-svn: 358546
* [InstCombine] Fold insert sequence if first ins has multiple users.Florian Hahn2017-08-301-0/+28
| | | | | | | | | | | | | | | | | | | | | | | Summary: If the first insertelement instruction has multiple users and inserts at position 0, we can re-use this instruction when folding a chain of insertelement instructions. As we need to generate the first insertelement instruction anyways, this should be a strict improvement. We could get rid of the restriction of inserting at position 0 by creating a different shufflemask, but it is probably worth to keep the first insertelement instruction with position 0, as this is easier to do efficiently than at other positions I think. Reviewers: grosser, mkuper, fpetrogalli, efriedma Reviewed By: fpetrogalli Subscribers: gareevroman, llvm-commits Differential Revision: https://reviews.llvm.org/D37064 llvm-svn: 312110
* [InstCombine] Canonicalize insert splat sequences into an insert + shuffleMichael Kuperstein2016-12-281-0/+109
This adds a combine that canonicalizes a chain of inserts which broadcasts a value into a single insert + a splat shufflevector. This fixes PR31286. Differential Revision: https://reviews.llvm.org/D27992 llvm-svn: 290641
OpenPOWER on IntegriCloud