[RISCV] Optimize (add (shl x, c0), (shl y, c1)) with SH*ADD
authorBen Shi <powerman1st@163.com>
Mon, 30 Aug 2021 13:14:12 +0000 (21:14 +0800)
committerBen Shi <ben.shi@streamcomputing.com>
Sun, 19 Sep 2021 08:35:12 +0000 (16:35 +0800)
commitdee5a8ca325f3c752534442233cb601910e918c4
treee53f481da1d6ada0f5e06b7c68797b98a82a258d
parentae0873483d9393d35bd5bdbfcb2bfb843c335cd5
[RISCV] Optimize (add (shl x, c0), (shl y, c1)) with SH*ADD

Optimize (add (shl x, c0), (shl y, c1)) ->
         (SLLI (SH*ADD x, y), c1), if c0-c1 == 1/2/3.

Reviewed By: craig.topper, luismarques

Differential Revision: https://reviews.llvm.org/D108916
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/rv32zba.ll
llvm/test/CodeGen/RISCV/rv64zba.ll