|
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4 |
|
| #
b1094776 |
| 11-Apr-2024 |
Yingwei Zheng <dtcxzyw2333@gmail.com> |
[InstCombine] Infer nsw/nuw for trunc (#87910)
This patch adds support for inferring trunc's nsw/nuw flags.
|
|
Revision tags: llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
| #
d5f8878a |
| 18-Dec-2022 |
Sanjay Patel <spatel@rotateright.com> |
[InstCombine] canonicalize insertelement order based on index
This puts lower insert indexes before higher. This is independent of endian, so it requires an adjustment to a fold added with 4446f71ce
[InstCombine] canonicalize insertelement order based on index
This puts lower insert indexes before higher. This is independent of endian, so it requires an adjustment to a fold added with 4446f71ce392, but it makes that fold more robust. That's also where this patch was suggested - D139668.
This matches what we already do in DAGCombiner, but there is one more constraint because there's an existing canonicalization for insert-of-scalar-constant. I'm not sure if that is still needed, so it may be adjusted/removed as a follow-up.
show more ...
|
| #
8efee510 |
| 14-Dec-2022 |
Sanjay Patel <spatel@rotateright.com> |
[InstCombine] limit pair-of-insertelement folds to avoid miscompile
This transform was added with 4446f71ce392. However, as noted in the post-commit feedback, the transform is not safe with an arbit
[InstCombine] limit pair-of-insertelement folds to avoid miscompile
This transform was added with 4446f71ce392. However, as noted in the post-commit feedback, the transform is not safe with an arbitrary base vector because we may leak poison from a narrow element into an adjacent element when bitcasting.
I made the least invasive code change in case we do figure out a way to make this safe.
show more ...
|
| #
4446f71c |
| 12-Dec-2022 |
Sanjay Patel <spatel@rotateright.com> |
[InstCombine] try to fold a pair of insertelements into one insertelement
This replaces patches that tried to convert related patterns to shuffles (D138872, D138873, D138874 - reverted/abandoned) bu
[InstCombine] try to fold a pair of insertelements into one insertelement
This replaces patches that tried to convert related patterns to shuffles (D138872, D138873, D138874 - reverted/abandoned) but caused codegen problems and were questionable as a canonicalization because an insertelement is a simpler op than a shuffle.
This detects a larger pattern -- insert-of-insert -- and replaces with another insert, so this hopefully does not cause any problems.
As noted by TODO items in the code and tests, this could go a lot further. But this is enough to reduce the motivating test from issue #17113.
Example proofs: https://alive2.llvm.org/ce/z/NnUv3a
I drafted a version of this for AggressiveInstCombine, but it seems that would uncover yet another phase ordering gap. If we do generalize this to handle the full range of potential patterns, that may be worth looking at again.
Differential Revision: https://reviews.llvm.org/D139668
show more ...
|
| #
32cc7d34 |
| 08-Dec-2022 |
Sanjay Patel <spatel@rotateright.com> |
[InstCombine] add tests for insertelts of truncs; NFC
|