aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2023-10-25 17:20:32 -0700
committerGitHub <noreply@github.com>2023-10-25 17:20:32 -0700
commit109aa586f073d27120b6c07afe673f30f58d9879 (patch)
tree5f052a9d9156e6f8d0bb8e02fbfe7a7539d400fd /lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp
parent265ed6819409a9d76f112a601d48b971904921c8 (diff)
downloadllvm-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