[RISCV] Support INSERT_SUBVECTOR on vector masks
authorFraser Cormack <fraser@codeplay.com>
Fri, 26 Feb 2021 14:30:14 +0000 (14:30 +0000)
committerFraser Cormack <fraser@codeplay.com>
Mon, 1 Mar 2021 12:04:11 +0000 (12:04 +0000)
commit3fea9226eecd2069bea93c4fe5955b0b5ff316f7
treee5bc16a8ad6079be4ac952a630793f501b61cd74
parente80ca3af82f8177a1b239bab6bb25d08ec86adeb
[RISCV] Support INSERT_SUBVECTOR on vector masks

Like with EXTRACT_SUBVECTOR, INSERT_SUBVECTOR poses a problem
for vector masks as RVV isn't able to slide mask types around. We choose
instead to bitcast to equivalently-sized i8 types where we can, else we
zero-extend, perform the operation, and truncate back down.

One test was left disabled due to a crash in the legalizer.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D97559
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll
llvm/test/CodeGen/RISCV/rvv/insert-subvector.ll