aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2024-06-25 07:55:08 +0100
committerGitHub <noreply@github.com>2024-06-25 07:55:08 +0100
commitefa8463ab90147aacd4647eb7715763978235890 (patch)
tree100fe82117a075ce79e5cd31c6b17b4478e5a48c /clang/lib/CodeGen/CodeGenModule.cpp
parent4c91b49bab0728d4bc136aa33c4aeb4e8ea37d01 (diff)
downloadllvm-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