diff options
author | Doug Nazar <nazard@nazar.ca> | 2019-08-25 15:50:15 -0400 |
---|---|---|
committer | Sebastian Dröge <slomo@coaxion.net> | 2019-09-08 07:58:54 +0000 |
commit | 08ca3fc00eb503fb8f178998a4c2bc608c406b3e (patch) | |
tree | a41419f7b73d6326cc8339813f34cebeda5e6581 /orc/orcpowerpc.h | |
parent | f9dbb051797a809ae407e9e752e1f3e673baa504 (diff) | |
download | orc-08ca3fc00eb503fb8f178998a4c2bc608c406b3e.tar.gz |
powerpc: Pre-load long constants & invariants
PowerPC doesn't have an easy way to load a long constant into a
vector register so we emit the value into the code and then load it.
This moves those values to after the epilogue and then loads them
before starting the outer loop.
Diffstat (limited to 'orc/orcpowerpc.h')
-rw-r--r-- | orc/orcpowerpc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/orc/orcpowerpc.h b/orc/orcpowerpc.h index 8f25341..134af6c 100644 --- a/orc/orcpowerpc.h +++ b/orc/orcpowerpc.h @@ -136,6 +136,9 @@ void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn, int int powerpc_get_constant (OrcCompiler *p, int type, int value); int powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int value2, int value3); void powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d); +void powerpc_emit_full_constants (OrcCompiler* p); +void powerpc_emit_load_address (OrcCompiler* compiler, int regd, int rega, int imm); +void powerpc_load_constant (OrcCompiler* p, int i, int reg); /* instructions */ #define powerpc_emit_vand(p,a,b,c) powerpc_emit_VX_2 (p, "vand", 0x10000404, a, b, c) |