diff options
author | David Green <david.green@arm.com> | 2024-06-25 07:55:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-25 07:55:08 +0100 |
commit | efa8463ab90147aacd4647eb7715763978235890 (patch) | |
tree | 100fe82117a075ce79e5cd31c6b17b4478e5a48c /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 4c91b49bab0728d4bc136aa33c4aeb4e8ea37d01 (diff) | |
download | llvm-efa8463ab90147aacd4647eb7715763978235890.zip llvm-efa8463ab90147aacd4647eb7715763978235890.tar.gz llvm-efa8463ab90147aacd4647eb7715763978235890.tar.bz2 |
[VectorCombine] Add free concats to shuffleToIdentity. (#94954)
This is another relatively small adjustment to shuffleToIdentity, which
has had a few knock-one effects to need a few more changes. It attempts
to detect free concats, that will be legalized to multiple vector
operations. For example if the lanes are '[a[0], a[1], b[0], b[1]]' and
a and b are v2f64 under aarch64.
In order to do this:
- isFreeConcat detects whether the input has piece-wise identities from
multiple inputs that can become a concat.
- A tree of concat shuffles is created to concatenate the input values
into a single vector. This is a little different to most other inputs as
there are created from multiple values that are being combined together,
and we cannot rely on the Lane0 insert location always being valid.
- The insert location is changed to the original location instead of
updating per item, which ensure it is valid due to the order that we
visit and create items.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions