diff options
author | Philip Reames <preames@rivosinc.com> | 2025-06-03 10:16:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-03 10:16:53 -0700 |
commit | 7ced3281ee5923da436f91191d79d1fd3ab62f45 (patch) | |
tree | 380649ca2ff383bd88227c0a6a5649eb3f6973a8 /llvm/lib/Bitcode/Reader/BitReader.cpp | |
parent | 27143f2929629d0919f8768b2460972e4f4c2d41 (diff) | |
download | llvm-7ced3281ee5923da436f91191d79d1fd3ab62f45.zip llvm-7ced3281ee5923da436f91191d79d1fd3ab62f45.tar.gz llvm-7ced3281ee5923da436f91191d79d1fd3ab62f45.tar.bz2 |
[RISCV] Use ri.vunzip2{a,b} for e64 fixed length deinterleave(2) shuffles (#137217)
If we have xrivosvizip, we can use the vunzip2{a,b} instructions for
these cases *provided* that we can prove the layout in the two registers
matches the fixed length semantics.
The majority of this patch is a straight-forward port of the existing
vnsrl logic which has the same requirement (though for slightly
different reasoning).
The one complicated bit is the addition of the scalable splitting logic
inside lowerVZIP to exploit the independent register operands, and allow
the use of lower LMUL. This bit is annoyingly complicated, and really
"should" be a DAG combine - except that the VL and mask reduction
becomes hard when it's not known to be a constant.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitReader.cpp')
0 files changed, 0 insertions, 0 deletions