diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-11-19 10:45:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-19 10:45:07 +0000 |
commit | 95ab42661e8d1f57a4ef8e9d058b44627af0e58d (patch) | |
tree | 9561b13aa6867a893dd7e3ae68af8b20851f6a97 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 6f53ae6e613f5f7011c1752b94038114f4e1cc94 (diff) | |
download | llvm-95ab42661e8d1f57a4ef8e9d058b44627af0e58d.zip llvm-95ab42661e8d1f57a4ef8e9d058b44627af0e58d.tar.gz llvm-95ab42661e8d1f57a4ef8e9d058b44627af0e58d.tar.bz2 |
[X86] Attempt to canonicalize vXf64 SHUFPD shuffle masks with undef elts to improve further folding (#116419)
Currently when creating a SHUFPD immediate mask, any undef shuffle elements are set to 0, which can limit options for further shuffle combining.
This patch attempts to canonicalize the mask to improve folding: first by detecting a per-lane broadcast style mask (which can allow us to fold to UNPCK instead), and second ensure any undef elements are set to an 'inplace' value to improve chances of the SHUFPD later folding to a BLENDPD (or be bypassed in a SimplifyMultipleUseDemandedVectorElts call).
This is very similar to canonicalization we already attempt in getV4X86ShuffleImm for vXi32/vXf32 SHUFPS/SHUFD shuffles.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions