diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-06-19 02:32:35 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-06-19 02:32:35 +0000 |
commit | 9a9094260d8147faf21289bca86d3035e30cf588 (patch) | |
tree | c2d09575bbee1748fc2e43d4dab3bda677b6f5c2 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | d954601f636464a0beae2d8ae3883631bda9467f (diff) | |
download | llvm-9a9094260d8147faf21289bca86d3035e30cf588.zip llvm-9a9094260d8147faf21289bca86d3035e30cf588.tar.gz llvm-9a9094260d8147faf21289bca86d3035e30cf588.tar.bz2 |
[ARM] Look through concat when lowering in-place shuffles (VZIP, ..)
Currently, we canonicalize shuffles that produce a result larger than
their operands with:
shuffle(concat(v1, undef), concat(v2, undef))
->
shuffle(concat(v1, v2), undef)
because we can access quad vectors (see PerformVECTOR_SHUFFLECombine).
This is useful in the general case, but there are special cases where
native shuffles produce larger results: the two-result ops.
We can look through the concat when lowering them:
shuffle(concat(v1, v2), undef)
->
concat(VZIP(v1, v2):0, :1)
This lets us generate the native shuffles instead of scalarizing to
dozens of VMOVs.
Differential Revision: http://reviews.llvm.org/D10424
llvm-svn: 240118
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions