aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitReader.cpp
diff options
context:
space:
mode:
authorPhilip Reames <preames@rivosinc.com>2025-06-03 10:16:53 -0700
committerGitHub <noreply@github.com>2025-06-03 10:16:53 -0700
commit7ced3281ee5923da436f91191d79d1fd3ab62f45 (patch)
tree380649ca2ff383bd88227c0a6a5649eb3f6973a8 /llvm/lib/Bitcode/Reader/BitReader.cpp
parent27143f2929629d0919f8768b2460972e4f4c2d41 (diff)
downloadllvm-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