diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2023-07-31 17:08:28 +0100 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2023-07-31 17:08:34 +0100 |
commit | 071671e15c3eda59165db435b102fbeb1c673a29 (patch) | |
tree | dbc5636abe895f08a3018cfe09ebe8b25dcd3b6d /llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp | |
parent | cce35994bb7294d273478b5756f760c4137e1194 (diff) | |
download | llvm-071671e15c3eda59165db435b102fbeb1c673a29.zip llvm-071671e15c3eda59165db435b102fbeb1c673a29.tar.gz llvm-071671e15c3eda59165db435b102fbeb1c673a29.tar.bz2 |
[X86] Allow pre-SSE41 targets to extract multiple v16i8 elements coming from the same DWORD/WORD super-element
Pre-SSE41 targets tended to have weak (serial) GPR<->VEC moves, meaning we only allowed a single v16i8 extraction before spilling the vector to stack and loading the i8 elements instead. But this didn't make use of the DWORD/WORD extraction we had to use could extract multiple i8 elements at the same time.
This patch attempts to determine if all uses of a vector are element extractions, and works out whether all the extractions share the same WORD or (lowest) DWORD, in which case we can perform a single extraction and just shift/truncate the individual elements.
Differential Revision: https://reviews.llvm.org/D156350
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp')
0 files changed, 0 insertions, 0 deletions