[RISCV] Add DAG combine to fold (sub 0, (setcc x, 0, setlt)) -> (sra x , xlen - 1)
authorLiaoChunyu <chunyu@iscas.ac.cn>
Fri, 7 Apr 2023 00:37:21 +0000 (08:37 +0800)
committerLiaoChunyu <chunyu@iscas.ac.cn>
Fri, 7 Apr 2023 00:59:28 +0000 (08:59 +0800)
commitb6ea46fe72c2ee192b334be6fffaae35a10f5900
treec4bac6722e63ab6f5d2b3cdf2a0553fa52a51a0d
parentc8a2301555a2ce7fb2e0b8a0e3ad080c77403735
[RISCV] Add DAG combine to fold (sub 0, (setcc x, 0, setlt)) -> (sra x , xlen - 1)

The result of sub + setcc is 0 or 1 for all bits.
The sra instruction get the same result.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D147538
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/alu64.ll
llvm/test/CodeGen/RISCV/bittest.ll
llvm/test/CodeGen/RISCV/fpclamptosat.ll
llvm/test/CodeGen/RISCV/rotl-rotr.ll
llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll
llvm/test/CodeGen/RISCV/shift-amount-mod.ll
llvm/test/CodeGen/RISCV/shift-masked-shamt.ll
llvm/test/CodeGen/RISCV/shifts.ll
llvm/test/CodeGen/RISCV/wide-scalar-shift-by-byte-multiple-legalization.ll
llvm/test/CodeGen/RISCV/wide-scalar-shift-legalization.ll