summaryrefslogtreecommitdiff
path: root/src/jit/codegeninterface.h
diff options
context:
space:
mode:
authorPat Gavlin <pgavlin@gmail.com>2016-08-19 10:44:46 -0700
committerGitHub <noreply@github.com>2016-08-19 10:44:46 -0700
commit738f93e7baf5aef7639cdd4567e9cb1746aed619 (patch)
tree425681f48e72df83235e2a77a6c84cb93bed3927 /src/jit/codegeninterface.h
parent00c85b302a078d5d13cfe9ff8cb453cd8296d6aa (diff)
downloadcoreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.tar.gz
coreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.tar.bz2
coreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.zip
Implement the proposed design for RyuJIT's LIR. (#6689)
These changes implement the design for RyuJIT's LIR described in https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/removing-embedded-statements.md. The following passes required changes: Rationalize, which has been almost completely rewritten Long decomposition Target-independent lowering Target-dependent lowering LSRA Liveness Flowgraph optimization Codegen For the most part, these changes are confined to the backend. Common code that needed to be updated included liveness, flowgraph optimization, and a few miscellaneous utilities. The utilities used to analyze and manipulate LIR live (almost) entirely in src/jit/lir.{cpp,h}. The core concepts that are unique to LIR are LIR::Use and LIR::Range. The latter is a tuple that captures an SDSU def (i.e. an LIR node) and its corresponding use->def edge and user. The former serves to abstract a self-contained sequence of LIR nodes that make up e.g. the contents of a basic block. Testing indicates that neither JIT throughput nor code quality are significantly impacted by these changes.
Diffstat (limited to 'src/jit/codegeninterface.h')
-rw-r--r--src/jit/codegeninterface.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/jit/codegeninterface.h b/src/jit/codegeninterface.h
index f5eec89d33..e9abbe6b3c 100644
--- a/src/jit/codegeninterface.h
+++ b/src/jit/codegeninterface.h
@@ -144,8 +144,10 @@ protected:
void genUpdateLife(GenTreePtr tree);
void genUpdateLife(VARSET_VALARG_TP newLife);
+#ifdef LEGACY_BACKEND
regMaskTP genLiveMask(GenTreePtr tree);
regMaskTP genLiveMask(VARSET_VALARG_TP liveSet);
+#endif
void genGetRegPairFromMask(regMaskTP regPairMask, regNumber* pLoReg, regNumber* pHiReg);