aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineModuleInfo.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2021-04-07 10:14:59 -0700
committerCraig Topper <craig.topper@sifive.com>2021-04-07 10:44:53 -0700
commitf087d7544a4194066506a45eac0524265bfab08d (patch)
tree24f1820644c155d709bb4d166e90a8349e32c6e5 /llvm/lib/CodeGen/MachineModuleInfo.cpp
parentdf59850038d800e8e8b062a5fc2e3d4ed624b526 (diff)
downloadllvm-f087d7544a4194066506a45eac0524265bfab08d.zip
llvm-f087d7544a4194066506a45eac0524265bfab08d.tar.gz
llvm-f087d7544a4194066506a45eac0524265bfab08d.tar.bz2
[RISCV] Support vslide1up/down intrinsics for SEW=64 on RV32.
This can't use our normal strategy of splatting the scalar and using a .vv operation instead of .vx. Instead this patch bitcasts the vector to the equivalent SEW=32 vector and inserts the scalar parts using two vslide1up/down. We do that unmasked and apply the mask separately at the end with a vmerge. For vslide1up there maybe some other options here like getting i64 into element 0 and using vslideup.vi with this vector as vd and the original source as vs1. Masking would still need to be done afterwards. That idea doesn't work for vslide1down. We need to slidedown and then insert a single scalar at vl-1 which we could do with a vslideup, but that assumes vl > 0 which I don't think we can assume. The i32 double slide1down implemented here is the best I could come up with and I just made vslide1up consistent. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D99910
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfo.cpp')
0 files changed, 0 insertions, 0 deletions