[RISCV] Special case sign extended scalars when type legalizing nxvXi64 .vx instrinsi...
authorCraig Topper <craig.topper@sifive.com>
Mon, 21 Mar 2022 21:27:09 +0000 (14:27 -0700)
committerCraig Topper <craig.topper@sifive.com>
Mon, 21 Mar 2022 21:50:55 +0000 (14:50 -0700)
commit8c4937b33fe9090546f6dc834e174177075b5084
treea107ed2f035714c1f888ae5bdc214bc52d3580c5
parentb40f420c2b64ff902ddf16fba1d9920acad11fbc
[RISCV] Special case sign extended scalars when type legalizing nxvXi64 .vx instrinsics on RV32.

On RV32, we need to type legalize i64 scalar arguments to intrinsics.
We usually do this by splatting the value into a vector separately.
If the scalar happens to be sign extended, we can continue using a .vx
intrinsic.

We already special cased sign extended constants, this extends it
to any sign extended value.

I've only added tests for one case of vadd. Most intrinsics go
through the same check. I can add more tests if we're concerned.

Differential Revision: https://reviews.llvm.org/D122186
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/rvv/vadd.ll