[RISCV] Enable the LocalStackSlotAllocation pass support
authorluxufan <luxufan@iscas.ac.cn>
Wed, 19 Oct 2022 06:34:05 +0000 (14:34 +0800)
committerluxufan <luxufan@iscas.ac.cn>
Wed, 19 Oct 2022 08:15:14 +0000 (16:15 +0800)
commit82c820b95cf7ec284baf182cf838ca9e26758098
tree401db55dd45b3d958d14b38d2b41609b5d01cf74
parent2ca5fcb424e863ec34c839377515b3c684bbed00
[RISCV] Enable the LocalStackSlotAllocation pass support

For RISC-V, load/store(exclude vector load/store) instructions only
has a 12 bit immediate operand. If the offset is out-of-range, it
must make use of a temp register to make up this offset. If between
these offsets, they have a small(IsInt<12>) relative offset,
LocalStackSlotAllocation pass can find a value as frame base register's
value, and replace the origin offset with this register's value plus
the relative offset.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D98101
llvm/lib/Target/RISCV/RISCVFrameLowering.h
llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
llvm/lib/Target/RISCV/RISCVRegisterInfo.h
llvm/test/CodeGen/RISCV/local-stack-slot-allocation.ll