aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJessica Paquette <jpaquette@apple.com>2021-01-20 17:30:17 -0800
committerJessica Paquette <jpaquette@apple.com>2021-01-27 14:46:44 -0800
commit3d25fdc5c21f174d38ac78dd01ccaf6eec655bc0 (patch)
tree321895634c17797a989364c6c3cf83d78d4f568d /clang/lib/Frontend/CompilerInvocation.cpp
parentfb12df4a8e33d759938057718273dfb434b2d9c4 (diff)
downloadllvm-3d25fdc5c21f174d38ac78dd01ccaf6eec655bc0.zip
llvm-3d25fdc5c21f174d38ac78dd01ccaf6eec655bc0.tar.gz
llvm-3d25fdc5c21f174d38ac78dd01ccaf6eec655bc0.tar.bz2
[AArch64][GlobalISel] Allow vector store legalization into 128-bit-wide types
We are allowed to store 128-bit-wide values using the q registers on AArch64. GlobalISel was clamping the number of elements in vector stores into 64 bits instead. This results in some poor codegen like below: https://godbolt.org/z/E56dq8 ``` ; SDAG uses a stp + q registers in both cases here. define void @float(<16 x float> %val, <16 x float>* %ptr) { store <16 x float> %val, <16 x float>* %ptr ret void } define void @double(<8 x double> %val, <8 x double>* %ptr) { store <8 x double> %val, <8 x double>* %ptr ret void } ``` This adds similar legalization for vector stores with s8 and s16 elements. Differential Revision: https://reviews.llvm.org/D95107
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions