diff options
author | Craig Topper <craig.topper@sifive.com> | 2023-10-25 17:20:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-25 17:20:32 -0700 |
commit | 109aa586f073d27120b6c07afe673f30f58d9879 (patch) | |
tree | 5f052a9d9156e6f8d0bb8e02fbfe7a7539d400fd /lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp | |
parent | 265ed6819409a9d76f112a601d48b971904921c8 (diff) | |
download | llvm-109aa586f073d27120b6c07afe673f30f58d9879.zip llvm-109aa586f073d27120b6c07afe673f30f58d9879.tar.gz llvm-109aa586f073d27120b6c07afe673f30f58d9879.tar.bz2 |
[RISCV] Add an experimental pseudoinstruction to represent a rematerializable constant materialization sequence. (#69983)
Rematerialization during register allocation is currently limited to a
single instruction with no inputs.
This patch introduces a pseudoinstruction that represents the
materialization of a constant. I've started with a sequence of 2
instructions for now, which covers at least the common LUI+ADDI(W) case.
This instruction will be expanded into real instructions immediately
after register allocation using a new pass. This gives the post-RA
scheduler a chance to separate the 2 instructions to improve ILP.
I believe this matches the approach used by AArch64.
Unfortunately, this loses some CSE opportunies when an LUI value is used
by multiple constants with different LSBs.
This feature is off by default and a new backend command line option is
added to enable it for testing.
This avoids the spill and reloads reported in #69586.
Diffstat (limited to 'lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp')
0 files changed, 0 insertions, 0 deletions