[RISCV] Add patterns for vnsr[a,l].wx where shift amount has different type than...
authorLuke Lau <luke@igalia.com>
Wed, 19 Jul 2023 13:13:50 +0000 (14:13 +0100)
committerLuke Lau <luke@igalia.com>
Fri, 21 Jul 2023 09:13:28 +0000 (10:13 +0100)
commit24628a14c4fb63eab8d5e68fb5c3cc49d14c0dcf
tree49047350e4c4383dc39137ff82602eab696d8e88
parent418e678ba3b4bbe3433f5fcd94959ffa82a917a8
[RISCV] Add patterns for vnsr[a,l].wx where shift amount has different type than vector element

We're currently only matching scalar shift amounts where the type is the same
as the vector element type. But because only the bottom log2(2*SEW) bits are
used, only 7 bits will be used at most so we can use any scalar type >= i8.

This patch adds patterns for the case above, as well as for when the shift
amount type is the same as the widened element type and doesn't need extended.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D155698
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
llvm/lib/Target/RISCV/RISCVInstrInfo.td
llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
llvm/test/CodeGen/RISCV/rvv/ctlz-sdnode.ll
llvm/test/CodeGen/RISCV/rvv/cttz-sdnode.ll
llvm/test/CodeGen/RISCV/rvv/vnsra-sdnode.ll
llvm/test/CodeGen/RISCV/rvv/vnsrl-sdnode.ll