summaryrefslogtreecommitdiff
path: root/orc/orcpowerpc.h
diff options
context:
space:
mode:
authorDoug Nazar <nazard@nazar.ca>2019-08-25 15:50:15 -0400
committerSebastian Dröge <slomo@coaxion.net>2019-09-08 07:58:54 +0000
commit08ca3fc00eb503fb8f178998a4c2bc608c406b3e (patch)
treea41419f7b73d6326cc8339813f34cebeda5e6581 /orc/orcpowerpc.h
parentf9dbb051797a809ae407e9e752e1f3e673baa504 (diff)
downloadorc-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.h3
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)