diff options
author | Hsiangkai Wang <kai.wang@sifive.com> | 2021-04-08 10:49:10 +0800 |
---|---|---|
committer | Hsiangkai Wang <kai.wang@sifive.com> | 2021-04-08 14:46:05 +0800 |
commit | ba72bdef3250ce2ef602d7a07af6a5a6c5255fde (patch) | |
tree | dd4eea5d003f10ca59b7ef6fab97ac06621b5660 /llvm/lib/CodeGen/CommandFlags.cpp | |
parent | b8cd6681156a533dd6d4b3f0f5a1acf1116bc347 (diff) | |
download | llvm-ba72bdef3250ce2ef602d7a07af6a5a6c5255fde.zip llvm-ba72bdef3250ce2ef602d7a07af6a5a6c5255fde.tar.gz llvm-ba72bdef3250ce2ef602d7a07af6a5a6c5255fde.tar.bz2 |
[RISCV] Add scalable offset under very large stack size.
If the stack size is larger than 12 bits, we have to use a scratch
register to store the stack size. Before we introduce the scalable stack
offset, we could simplify
%0 = ADDI %stack.0, 0
=>
%scratch = ... # sequence of instructions to move the offset into
%%scratch
%0 = ADD %fp, %scratch
However, if the offset contains scalable part, we need to consider it.
%0 = ADDI %stack.0, 0
=>
%scratch = ... # sequence of instructions to move the offset into
%%scratch
%scratch = ADD %fp, %scratch
%scalable_offset = ... # sequence of instructions for vscaled-offset.
%0 = ADD/SUB %scratch, %scalable_offset
Differential Revision: https://reviews.llvm.org/D100035
Diffstat (limited to 'llvm/lib/CodeGen/CommandFlags.cpp')
0 files changed, 0 insertions, 0 deletions