diff options
author | Craig Topper <craig.topper@sifive.com> | 2023-08-18 11:26:06 -0700 |
---|---|---|
committer | Craig Topper <craig.topper@sifive.com> | 2023-08-18 11:59:18 -0700 |
commit | 770be43f6782dab84d215d01b37396d63a9c2b6e (patch) | |
tree | 8f851e3bcf290b7516e879dc6301a34f4233d353 /llvm/lib/CodeGen/BasicBlockSections.cpp | |
parent | 160ab99539a1bcaadb6dff78b06d8660ca20826d (diff) | |
download | llvm-770be43f6782dab84d215d01b37396d63a9c2b6e.zip llvm-770be43f6782dab84d215d01b37396d63a9c2b6e.tar.gz llvm-770be43f6782dab84d215d01b37396d63a9c2b6e.tar.bz2 |
[DAG] Fold insert_subvector undef, (extract_subvector X, 0), 0 with non-matching types
We have an existing DAG combine for when an insert/extract subvector pair is entirely a nop, but we hadn't handled the case where the net result was either an insert or an extract (but not both). The transform is restricted to index = 0 to avoid having to adjust indices after the transform.
Reviews, a couple comments on the test changes:
* Mostly RISCV, mostly schedule reordering.
* One real regression in splats-with-mixed-vl.ll due to a different overly aggressive combine, fix in a follow up patch.
* The test/CodeGen/X86/vector-replicaton-i1-mask.ll diff looked concerning at first, but not the mask size at most 4 i1s. I think the type changes on the mask loads are correct, but would welcome a second opinion with someone more familiar with AVX512 codegen.
Differential Revision: https://reviews.llvm.org/D158201
Diffstat (limited to 'llvm/lib/CodeGen/BasicBlockSections.cpp')
0 files changed, 0 insertions, 0 deletions