[RISCV] Add isel patterns to select slli+shXadd.uw.
authorCraig Topper <craig.topper@sifive.com>
Mon, 21 Nov 2022 17:32:51 +0000 (09:32 -0800)
committerCraig Topper <craig.topper@sifive.com>
Mon, 21 Nov 2022 17:32:51 +0000 (09:32 -0800)
commit24810acb629d05eb3253a52a7220486b5b1d6791
tree5dcc249510496a6caa721c1e96fda8b47c01e450
parent8b80e8ee1fca660a5ea58cf701c2af8bba0dd89b
[RISCV] Add isel patterns to select slli+shXadd.uw.

This matches what we get for something like.
%0 = shl i32 %x, C
%1 = zext i32 %0 to i64
%2 = getelementptr i32, ptr %y, %1

The shift before the zext and the shift implied by the GEP get
combined with an AND after them. We need to split it back into
2 shifts so we can fold one into shXadd.uw.

Reviewed By: reames

Differential Revision: https://reviews.llvm.org/D137886
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
llvm/test/CodeGen/RISCV/rv64zba.ll