Prefix x86_/sse_ functions with orc_
authorDavid Schleef <ds@schleef.org>
Tue, 28 Apr 2009 06:45:44 +0000 (23:45 -0700)
committerDavid Schleef <ds@schleef.org>
Tue, 28 Apr 2009 06:45:44 +0000 (23:45 -0700)
orc-float/orcfloat-sse.c
orc-pixel/orcpixel-sse.c
orc/orcprogram-mmx.c
orc/orcprogram-sse.c
orc/orcprogram.h
orc/orcrules-mmx.c
orc/orcrules-sse.c
orc/x86.c
orc/x86.h

index 0a433ea..009f8bc 100644 (file)
 
 #define X86_MODRM(mod, rm, reg) ((((mod)&3)<<6)|(((rm)&7)<<0)|(((reg)&7)<<3))
 
-#ifdef HAVE_AMD64
-int x86_64 = 1;
-int x86_ptr_size = 8;
-int x86_exec_ptr = X86_EDI;
-#else
-int x86_64 = 0;
-int x86_ptr_size = 4;
-int x86_exec_ptr = X86_EBP;
-#endif
-
-const char *
-x86_get_regname_sse(int i)
-{
-  static const char *x86_regs[] = {
-    "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
-    "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"
-  };
-
-  if (i>=X86_XMM0 && i<X86_XMM0 + 16) return x86_regs[i - X86_XMM0];
-  switch (i) {
-    case 0:
-      return "UNALLOCATED";
-    case 1:
-      return "direct";
-    default:
-      return "ERROR";
-  }
-}
-
-int
-x86_get_regnum(int i)
-{
-  return (i&0xf);
-}
-
-void
-x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3)
-{
-  int rex = 0x40;
-
-  if (x86_64) {
-    if (size >= 8) rex |= 0x08;
-    if (reg1 == 1 || (x86_get_regnum(reg1)>=8)) rex |= 0x4;
-    if (reg2 == 1 || (x86_get_regnum(reg2)>=8)) rex |= 0x2;
-    if (reg3 == 1 || (x86_get_regnum(reg3)>=8)) rex |= 0x1;
-
-    if (rex != 0x40) *compiler->codeptr++ = rex;
-  }
-}
-
-void
-x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2)
-{
-  *compiler->codeptr++ = X86_MODRM(3, reg1, reg2);
-}
-
-void
-sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  *p->codeptr++ = 0xf2;
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
-void
-sse_emit_f30f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  *p->codeptr++ = 0xf3;
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
-void
-sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
-void
-sse_emit_0f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
-
 #define UNARY(opcode,insn_name,code) \
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_0f (p, insn_name, code, \
+  orc_sse_emit_0f (p, insn_name, code, \
       p->vars[insn->src_args[0]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -136,7 +24,7 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_0f (p, insn_name, code, \
+  orc_sse_emit_0f (p, insn_name, code, \
       p->vars[insn->src_args[1]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -155,7 +43,7 @@ UNARY(invsqrtf, "rsqrtps", 0x52)
 static void
 sse_rule_cmpeqf (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_0f (p, "cmpeqps", 0xc2,
+  orc_sse_emit_0f (p, "cmpeqps", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x00;
@@ -164,7 +52,7 @@ sse_rule_cmpeqf (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_0f (p, "cmpltps", 0xc2,
+  orc_sse_emit_0f (p, "cmpltps", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x01;
@@ -173,7 +61,7 @@ sse_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_0f (p, "cmpleps", 0xc2,
+  orc_sse_emit_0f (p, "cmpleps", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x02;
@@ -182,7 +70,7 @@ sse_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "cvtps2dq", 0x5b,
+  orc_sse_emit_660f (p, "cvtps2dq", 0x5b,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -190,7 +78,7 @@ sse_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_0f (p, "cvtdq2ps", 0x5b,
+  orc_sse_emit_0f (p, "cvtdq2ps", 0x5b,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -199,7 +87,7 @@ sse_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_660f (p, insn_name, code, \
+  orc_sse_emit_660f (p, insn_name, code, \
       p->vars[insn->src_args[0]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -208,7 +96,7 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_660f (p, insn_name, code, \
+  orc_sse_emit_660f (p, insn_name, code, \
       p->vars[insn->src_args[1]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -229,7 +117,7 @@ UNARY_66(invsqrtg, "rsqrtpd", 0x52)
 static void
 sse_rule_cmpeqg (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "cmpeqpd", 0xc2,
+  orc_sse_emit_660f (p, "cmpeqpd", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x00;
@@ -238,7 +126,7 @@ sse_rule_cmpeqg (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_cmpltg (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "cmpltpd", 0xc2,
+  orc_sse_emit_660f (p, "cmpltpd", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x01;
@@ -247,7 +135,7 @@ sse_rule_cmpltg (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_cmpleg (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "cmplepd", 0xc2,
+  orc_sse_emit_660f (p, "cmplepd", 0xc2,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x02;
@@ -256,7 +144,7 @@ sse_rule_cmpleg (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convgl (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_f20f (p, "cvtpd2dq", 0xe6,
+  orc_sse_emit_f20f (p, "cvtpd2dq", 0xe6,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -264,7 +152,7 @@ sse_rule_convgl (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convlg (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_f30f (p, "cvtdq2pd", 0xe6,
+  orc_sse_emit_f30f (p, "cvtdq2pd", 0xe6,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -272,7 +160,7 @@ sse_rule_convlg (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convgf (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "cvtpd2ps", 0x5a,
+  orc_sse_emit_660f (p, "cvtpd2ps", 0x5a,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -280,7 +168,7 @@ sse_rule_convgf (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convfg (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_0f (p, "cvtps2pd", 0x5a,
+  orc_sse_emit_0f (p, "cvtps2pd", 0x5a,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
index b937374..439a77b 100644 (file)
 
 #include <orc/x86.h>
 
-#define X86_MODRM(mod, rm, reg) ((((mod)&3)<<6)|(((rm)&7)<<0)|(((reg)&7)<<3))
-
-#ifdef HAVE_AMD64
-int x86_64 = 1;
-int x86_ptr_size = 8;
-int x86_exec_ptr = X86_EDI;
-#else
-int x86_64 = 0;
-int x86_ptr_size = 4;
-int x86_exec_ptr = X86_EBP;
-#endif
-
-const char *
-x86_get_regname_sse(int i)
-{
-  static const char *x86_regs[] = {
-    "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
-    "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"
-  };
-
-  if (i>=X86_XMM0 && i<X86_XMM0 + 16) return x86_regs[i - X86_XMM0];
-  switch (i) {
-    case 0:
-      return "UNALLOCATED";
-    case 1:
-      return "direct";
-    default:
-      return "ERROR";
-  }
-}
-
-int
-x86_get_regnum(int i)
-{
-  return (i&0xf);
-}
-
-void
-x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3)
-{
-  int rex = 0x40;
-
-  if (x86_64) {
-    if (size >= 8) rex |= 0x08;
-    if (reg1 == 1 || (x86_get_regnum(reg1)>=8)) rex |= 0x4;
-    if (reg2 == 1 || (x86_get_regnum(reg2)>=8)) rex |= 0x2;
-    if (reg3 == 1 || (x86_get_regnum(reg3)>=8)) rex |= 0x1;
-
-    if (rex != 0x40) *compiler->codeptr++ = rex;
-  }
-}
-
-void
-x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2)
-{
-  *compiler->codeptr++ = X86_MODRM(3, reg1, reg2);
-}
-
-void
-sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  *p->codeptr++ = 0xf2;
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
-void
-sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
-    int src, int dest)
-{
-  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
-  *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, src, 0, dest);
-  *p->codeptr++ = 0x0f;
-  *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
-}
-
 
 static void
 sse_rule_compin (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   int tmpreg2 = X86_XMM7;
 
-  sse_emit_660f (p, "punpcklbw", 0x60,
+  orc_sse_emit_660f (p, "punpcklbw", 0x60,
       p->vars[insn->src_args[0]].alloc,
       p->tmpreg);
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(p->tmpreg));
+      orc_x86_get_regname_sse(p->tmpreg));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->tmpreg, 2);
+  orc_x86_emit_modrm_reg (p, p->tmpreg, 2);
   *p->codeptr++ = 8;
   
-  sse_emit_660f (p, "punpcklbw", 0x60,
+  orc_sse_emit_660f (p, "punpcklbw", 0x60,
       p->vars[insn->src_args[1]].alloc,
       tmpreg2);
   if (p->loop_shift > 0) {
-    sse_emit_660f (p, "punpcklwd", 0x61,
+    orc_sse_emit_660f (p, "punpcklwd", 0x61,
         tmpreg2, tmpreg2);
-    sse_emit_660f (p, "punpckldq", 0x62,
+    orc_sse_emit_660f (p, "punpckldq", 0x62,
         tmpreg2, tmpreg2);
   } else {
-    sse_emit_f20f (p, "pshuflw $00,", 0x70,
+    orc_sse_emit_f20f (p, "pshuflw $00,", 0x70,
         tmpreg2, tmpreg2);
     *p->codeptr++ = 0x00;
   }
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(tmpreg2));
+      orc_x86_get_regname_sse(tmpreg2));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, tmpreg2, 2);
+  orc_x86_emit_modrm_reg (p, tmpreg2, 2);
   *p->codeptr++ = 8;
 
-  sse_emit_660f (p, "pmullw", 0xd5,
+  orc_sse_emit_660f (p, "pmullw", 0xd5,
       p->tmpreg,
       tmpreg2);
 
   ORC_ASM_CODE(p,"  movl $0x00800080, %%ecx\n");
-  x86_emit_rex(p, 4, X86_ECX, 0, 0);
-  *p->codeptr++ = 0xb8 + x86_get_regnum(X86_ECX);
+  orc_x86_emit_rex(p, 4, X86_ECX, 0, 0);
+  *p->codeptr++ = 0xb8 + orc_x86_get_regnum(X86_ECX);
   *p->codeptr++ = 0x80;
   *p->codeptr++ = 0x00;
   *p->codeptr++ = 0x80;
   *p->codeptr++ = 0x00;
 
-  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", x86_get_regname_sse(p->tmpreg));
+  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", orc_x86_get_regname_sse(p->tmpreg));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x6e;
-  x86_emit_modrm_reg (p, X86_ECX, p->tmpreg);
+  orc_x86_emit_modrm_reg (p, X86_ECX, p->tmpreg);
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(p->tmpreg),
-      x86_get_regname_sse(p->tmpreg));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(p->tmpreg),
+      orc_x86_get_regname_sse(p->tmpreg));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, p->tmpreg, p->tmpreg);
+  orc_x86_emit_modrm_reg (p, p->tmpreg, p->tmpreg);
   *p->codeptr++ = 0x00;
 
-  sse_emit_660f (p, "paddw", 0xfd,
+  orc_sse_emit_660f (p, "paddw", 0xfd,
       p->tmpreg,
       tmpreg2);
-  sse_emit_660f (p, "movdqa", 0x6f,
+  orc_sse_emit_660f (p, "movdqa", 0x6f,
       tmpreg2,
       p->tmpreg);
 
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(p->tmpreg));
+      orc_x86_get_regname_sse(p->tmpreg));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->tmpreg, 2);
+  orc_x86_emit_modrm_reg (p, p->tmpreg, 2);
   *p->codeptr++ = 8;
 
-  sse_emit_660f (p, "paddw", 0xfd,
+  orc_sse_emit_660f (p, "paddw", 0xfd,
       p->tmpreg,
       tmpreg2);
 
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(tmpreg2));
+      orc_x86_get_regname_sse(tmpreg2));
   *p->codeptr++ = 0x66;
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, tmpreg2, 2);
+  orc_x86_emit_modrm_reg (p, tmpreg2, 2);
   *p->codeptr++ = 8;
 
-  sse_emit_660f (p, "packuswb", 0x67,
+  orc_sse_emit_660f (p, "packuswb", 0x67,
       tmpreg2,
       tmpreg2);
 
-  sse_emit_660f (p, "movdqa", 0x6f,
+  orc_sse_emit_660f (p, "movdqa", 0x6f,
       tmpreg2,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -198,7 +112,7 @@ sse_rule_compin (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_compadd (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "paddusb", 0xdc,
+  orc_sse_emit_660f (p, "paddusb", 0xdc,
       p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
index 50ec707..0f690c5 100644 (file)
@@ -51,7 +51,7 @@ orc_compiler_mmx_init (OrcCompiler *compiler)
 {
   int i;
 
-  if (x86_64) {
+  if (compiler->is_64bit) {
     for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){
       compiler->valid_regs[i] = 1;
     }
@@ -100,14 +100,14 @@ mmx_load_constants (OrcCompiler *compiler)
     if (compiler->vars[i].name == NULL) continue;
     switch (compiler->vars[i].vartype) {
       case ORC_VAR_TYPE_CONST:
-        mmx_emit_loadiw (compiler, compiler->vars[i].alloc,
+        orc_mmx_emit_loadiw (compiler, compiler->vars[i].alloc,
             (int)compiler->vars[i].value);
         break;
       case ORC_VAR_TYPE_SRC:
       case ORC_VAR_TYPE_DEST:
         if (compiler->vars[i].ptr_register) {
-          x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
-              (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), x86_exec_ptr,
+          orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
+              (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg,
               compiler->vars[i].ptr_register);
         } else {
           ORC_PROGRAM_ERROR(compiler, "unimplemented");
@@ -120,26 +120,26 @@ mmx_load_constants (OrcCompiler *compiler)
 }
 
 void
-mmx_emit_load_src (OrcCompiler *compiler, OrcVariable *var)
+orc_mmx_emit_load_src (OrcCompiler *compiler, OrcVariable *var)
 {
   int ptr_reg;
   if (var->ptr_register == 0) {
-    x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
-        var->ptr_offset, x86_exec_ptr, X86_ECX);
+    orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
+        var->ptr_offset, compiler->exec_reg, X86_ECX);
     ptr_reg = X86_ECX;
   } else {
     ptr_reg = var->ptr_register;
   }
   switch (compiler->loop_shift) {
     case 0:
-      x86_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX);
-      x86_emit_mov_reg_mmx (compiler, X86_ECX, var->alloc);
+      orc_x86_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX);
+      orc_x86_emit_mov_reg_mmx (compiler, X86_ECX, var->alloc);
       break;
     case 1:
-      x86_emit_mov_memoffset_mmx (compiler, 4, 0, ptr_reg, var->alloc);
+      orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0, ptr_reg, var->alloc);
       break;
     case 2:
-      x86_emit_mov_memoffset_mmx (compiler, 8, 0, ptr_reg, var->alloc);
+      orc_x86_emit_mov_memoffset_mmx (compiler, 8, 0, ptr_reg, var->alloc);
       break;
     default:
       ORC_PROGRAM_ERROR(compiler, "bad size");
@@ -151,8 +151,8 @@ mmx_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
 {
   int ptr_reg;
   if (var->ptr_register == 0) {
-    x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
-        var->ptr_offset, x86_exec_ptr, X86_ECX);
+    orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
+        var->ptr_offset, compiler->exec_reg, X86_ECX);
     ptr_reg = X86_ECX;
   } else {
     ptr_reg = var->ptr_register;
@@ -163,14 +163,14 @@ mmx_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
       if (ptr_reg == X86_ECX) {
         ORC_PROGRAM_ERROR(compiler, "unimplemented");
       }
-      x86_emit_mov_mmx_reg (compiler, var->alloc, X86_ECX);
-      x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg);
+      orc_x86_emit_mov_mmx_reg (compiler, var->alloc, X86_ECX);
+      orc_x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg);
       break;
     case 1:
-      x86_emit_mov_mmx_memoffset (compiler, 4, var->alloc, 0, ptr_reg);
+      orc_x86_emit_mov_mmx_memoffset (compiler, 4, var->alloc, 0, ptr_reg);
       break;
     case 2:
-      x86_emit_mov_mmx_memoffset (compiler, 8, var->alloc, 0, ptr_reg);
+      orc_x86_emit_mov_mmx_memoffset (compiler, 8, var->alloc, 0, ptr_reg);
       break;
     default:
       ORC_PROGRAM_ERROR(compiler, "unimplemented");
@@ -180,58 +180,58 @@ mmx_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
 void
 orc_compiler_mmx_assemble (OrcCompiler *compiler)
 {
-  x86_emit_prologue (compiler);
+  orc_x86_emit_prologue (compiler);
 
-  x86_emit_mov_memoffset_reg (compiler, 4, (int)ORC_STRUCT_OFFSET(OrcExecutor,n),
-      x86_exec_ptr, X86_ECX);
-  x86_emit_sar_imm_reg (compiler, 4, compiler->loop_shift, X86_ECX);
-  x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
-      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
+  orc_x86_emit_mov_memoffset_reg (compiler, 4, (int)ORC_STRUCT_OFFSET(OrcExecutor,n),
+      compiler->exec_reg, X86_ECX);
+  orc_x86_emit_sar_imm_reg (compiler, 4, compiler->loop_shift, X86_ECX);
+  orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
+      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
 
-  x86_emit_mov_memoffset_reg (compiler, 4,
-      (int)ORC_STRUCT_OFFSET(OrcExecutor,n), x86_exec_ptr, X86_ECX);
-  x86_emit_and_imm_reg (compiler, 4, (1<<compiler->loop_shift)-1, X86_ECX);
-  x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
-      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), x86_exec_ptr);
+  orc_x86_emit_mov_memoffset_reg (compiler, 4,
+      (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_ECX);
+  orc_x86_emit_and_imm_reg (compiler, 4, (1<<compiler->loop_shift)-1, X86_ECX);
+  orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
+      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg);
 
   mmx_load_constants (compiler);
 
   if (compiler->loop_shift > 0) {
     int save_loop_shift;
 
-    x86_emit_cmp_imm_memoffset (compiler, 4, 0,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), x86_exec_ptr);
-    x86_emit_je (compiler, 1);
+    orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg);
+    orc_x86_emit_je (compiler, 1);
 
     save_loop_shift = compiler->loop_shift;
     compiler->loop_shift = 0;
 
-    x86_emit_label (compiler, 0);
+    orc_x86_emit_label (compiler, 0);
     mmx_emit_loop (compiler);
-    x86_emit_dec_memoffset (compiler, 4,
+    orc_x86_emit_dec_memoffset (compiler, 4,
         (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1),
-        x86_exec_ptr);
-    x86_emit_jne (compiler, 0);
+        compiler->exec_reg);
+    orc_x86_emit_jne (compiler, 0);
 
     compiler->loop_shift = save_loop_shift;
   }
 
-  x86_emit_label (compiler, 1);
+  orc_x86_emit_label (compiler, 1);
 
-  x86_emit_cmp_imm_memoffset (compiler, 4, 0,
-      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
-  x86_emit_je (compiler, 3);
+  orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0,
+      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
+  orc_x86_emit_je (compiler, 3);
 
-  x86_emit_label (compiler, 2);
+  orc_x86_emit_label (compiler, 2);
   mmx_emit_loop (compiler);
-  x86_emit_dec_memoffset (compiler, 4,
+  orc_x86_emit_dec_memoffset (compiler, 4,
       (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2),
-      x86_exec_ptr);
-  x86_emit_jne (compiler, 2);
-  x86_emit_label (compiler, 3);
+      compiler->exec_reg);
+  orc_x86_emit_jne (compiler, 2);
+  orc_x86_emit_label (compiler, 3);
 
-  x86_emit_emms (compiler);
-  x86_emit_epilogue (compiler);
+  orc_x86_emit_emms (compiler);
+  orc_x86_emit_epilogue (compiler);
 
   x86_do_fixups (compiler);
 }
@@ -271,7 +271,7 @@ mmx_emit_loop (OrcCompiler *compiler)
 
       switch (var->vartype) {
         case ORC_VAR_TYPE_SRC:
-          mmx_emit_load_src (compiler, var);
+          orc_mmx_emit_load_src (compiler, var);
           break;
         case ORC_VAR_TYPE_CONST:
           break;
@@ -286,7 +286,7 @@ mmx_emit_loop (OrcCompiler *compiler)
     if (rule) {
       if (compiler->vars[insn->dest_args[0]].alloc !=
           compiler->vars[insn->src_args[0]].alloc) {
-        x86_emit_mov_mmx_reg_reg (compiler,
+        orc_x86_emit_mov_mmx_reg_reg (compiler,
             compiler->vars[insn->src_args[0]].alloc,
             compiler->vars[insn->dest_args[0]].alloc);
       }
@@ -317,14 +317,14 @@ mmx_emit_loop (OrcCompiler *compiler)
     if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC ||
         compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) {
       if (compiler->vars[k].ptr_register) {
-        x86_emit_add_imm_reg (compiler, x86_ptr_size,
+        orc_x86_emit_add_imm_reg (compiler, compiler->is_64bit ? 8 : 4,
             compiler->vars[k].size << compiler->loop_shift,
             compiler->vars[k].ptr_register);
       } else {
-        x86_emit_add_imm_memoffset (compiler, x86_ptr_size,
+        orc_x86_emit_add_imm_memoffset (compiler, compiler->is_64bit ? 8 : 4,
             compiler->vars[k].size << compiler->loop_shift,
             (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]),
-            x86_exec_ptr);
+            compiler->exec_reg);
       }
     }
   }
index 744f500..4658bb1 100644 (file)
@@ -16,7 +16,7 @@
 #define SIZE 65536
 
 
-void sse_emit_loop (OrcCompiler *compiler);
+void orc_sse_emit_loop (OrcCompiler *compiler);
 
 void orc_compiler_sse_init (OrcCompiler *compiler);
 void orc_compiler_sse_assemble (OrcCompiler *compiler);
@@ -52,7 +52,13 @@ orc_compiler_sse_init (OrcCompiler *compiler)
 {
   int i;
 
-  if (x86_64) {
+#ifdef HAVE_AMD64
+  compiler->is_64bit = TRUE;
+#else
+  compiler->is_64bit = FALSE;
+#endif
+  
+  if (compiler->is_64bit) {
     for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){
       compiler->valid_regs[i] = 1;
     }
@@ -93,6 +99,12 @@ orc_compiler_sse_init (OrcCompiler *compiler)
   compiler->tmpreg = X86_XMM0;
   compiler->valid_regs[compiler->tmpreg] = 0;
 
+  if (compiler->is_64bit) {
+    compiler->exec_reg = X86_EDI;
+  } else {
+    compiler->exec_reg = X86_EBP;
+  }
+
   switch (orc_program_get_max_var_size (compiler->program)) {
     case 1:
       compiler->loop_shift = 4;
@@ -129,70 +141,40 @@ sse_save_accumulators (OrcCompiler *compiler)
       case ORC_VAR_TYPE_ACCUMULATOR:
         src = compiler->vars[i].alloc;
 
-        sse_emit_660f (compiler, "pshufd $0xee,", 0x70, src, compiler->tmpreg);
-#if 0
-        ORC_ASM_CODE(compiler,"  pshufd $0xee, %%%s, %%%s\n",
-            x86_get_regname_sse(src),
-            x86_get_regname_sse(compiler->tmpreg));
-        *compiler->codeptr++ = 0x66;
-        x86_emit_rex (compiler, 0, src, 0, compiler->tmpreg);
-        *compiler->codeptr++ = 0x0f;
-        *compiler->codeptr++ = 0x70;
-        x86_emit_modrm_reg (compiler, src, compiler->tmpreg);
-#endif
+        orc_sse_emit_660f (compiler, "pshufd $0xee,", 0x70, src, compiler->tmpreg);
         *compiler->codeptr++ = 0xee;
 
         if (compiler->vars[i].size == 2) {
-          sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
+          orc_sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
         } else {
-          sse_emit_660f (compiler, "paddd", 0xfe, compiler->tmpreg, src);
+          orc_sse_emit_660f (compiler, "paddd", 0xfe, compiler->tmpreg, src);
         }
 
-        sse_emit_660f (compiler, "pshufd $0x55,", 0x70, src, compiler->tmpreg);
-#if 0
-        ORC_ASM_CODE(compiler,"  pshufd $0x55, %%%s, %%%s\n",
-            x86_get_regname_sse(src),
-            x86_get_regname_sse(compiler->tmpreg));
-        *compiler->codeptr++ = 0x66;
-        x86_emit_rex (compiler, 0, src, 0, compiler->tmpreg);
-        *compiler->codeptr++ = 0x0f;
-        *compiler->codeptr++ = 0xef;
-        x86_emit_modrm_reg (compiler, src, compiler->tmpreg);
-#endif
+        orc_sse_emit_660f (compiler, "pshufd $0x55,", 0x70, src, compiler->tmpreg);
         *compiler->codeptr++ = 0x55;
 
         if (compiler->vars[i].size == 2) {
-          sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
+          orc_sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
         } else {
-          sse_emit_660f (compiler, "paddd", 0xfe, compiler->tmpreg, src);
+          orc_sse_emit_660f (compiler, "paddd", 0xfe, compiler->tmpreg, src);
         }
 
         if (compiler->vars[i].size == 2) {
-          sse_emit_f20f (compiler, "pshuflw $0x55,", 0x70, src, compiler->tmpreg);
-#if 0
-          ORC_ASM_CODE(compiler,"  pshuflw $0x55, %%%s, %%%s\n",
-              x86_get_regname_sse(src),
-              x86_get_regname_sse(compiler->tmpreg));
-          *compiler->codeptr++ = 0x66;
-          x86_emit_rex (compiler, 0, src, 0, compiler->tmpreg);
-          *compiler->codeptr++ = 0x0f;
-          *compiler->codeptr++ = 0xef;
-          x86_emit_modrm_reg (compiler, src, compiler->tmpreg);
-#endif
+          orc_sse_emit_f20f (compiler, "pshuflw $0x55,", 0x70, src, compiler->tmpreg);
           *compiler->codeptr++ = 0x55;
 
-          sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
+          orc_sse_emit_660f (compiler, "paddw", 0xfd, compiler->tmpreg, src);
         }
 
         if (compiler->vars[i].size == 2) {
-          x86_emit_mov_sse_reg (compiler, src, X86_ECX);
-          x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX,
+          orc_x86_emit_mov_sse_reg (compiler, src, X86_ECX);
+          orc_x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX,
               (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]),
-              x86_exec_ptr);
+              compiler->exec_reg);
         } else {
-          x86_emit_mov_sse_memoffset (compiler, 4, src,
+          orc_x86_emit_mov_sse_memoffset (compiler, 4, src,
               (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]),
-              x86_exec_ptr,
+              compiler->exec_reg,
               var->is_aligned, var->is_uncached);
         }
 
@@ -212,13 +194,13 @@ sse_load_constants (OrcCompiler *compiler)
     switch (compiler->vars[i].vartype) {
       case ORC_VAR_TYPE_CONST:
         if (compiler->vars[i].size == 1) {
-          sse_emit_loadib (compiler, compiler->vars[i].alloc,
+          orc_sse_emit_loadib (compiler, compiler->vars[i].alloc,
               (int)compiler->vars[i].value);
         } else if (compiler->vars[i].size == 2) {
-          sse_emit_loadiw (compiler, compiler->vars[i].alloc,
+          orc_sse_emit_loadiw (compiler, compiler->vars[i].alloc,
               (int)compiler->vars[i].value);
         } else if (compiler->vars[i].size == 4) {
-          sse_emit_loadil (compiler, compiler->vars[i].alloc,
+          orc_sse_emit_loadil (compiler, compiler->vars[i].alloc,
               (int)compiler->vars[i].value);
         } else {
           ORC_PROGRAM_ERROR(compiler, "unimplemented");
@@ -226,13 +208,13 @@ sse_load_constants (OrcCompiler *compiler)
         break;
       case ORC_VAR_TYPE_PARAM:
         if (compiler->vars[i].size == 1) {
-          sse_emit_loadpb (compiler, compiler->vars[i].alloc, i);
+          orc_sse_emit_loadpb (compiler, compiler->vars[i].alloc, i);
         } else if (compiler->vars[i].size == 2) {
-          sse_emit_loadpw (compiler, compiler->vars[i].alloc, i);
+          orc_sse_emit_loadpw (compiler, compiler->vars[i].alloc, i);
         } else if (compiler->vars[i].size == 4) {
-          sse_emit_loadpl (compiler, compiler->vars[i].alloc, i);
+          orc_sse_emit_loadpl (compiler, compiler->vars[i].alloc, i);
         } else if (compiler->vars[i].size == 8) {
-          sse_emit_loadpq (compiler, compiler->vars[i].alloc, i);
+          orc_sse_emit_loadpq (compiler, compiler->vars[i].alloc, i);
         } else {
           ORC_PROGRAM_ERROR(compiler, "unimplemented");
         }
@@ -240,8 +222,8 @@ sse_load_constants (OrcCompiler *compiler)
       case ORC_VAR_TYPE_SRC:
       case ORC_VAR_TYPE_DEST:
         if (compiler->vars[i].ptr_register) {
-          x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
-              (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), x86_exec_ptr,
+          orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
+              (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg,
               compiler->vars[i].ptr_register);
         } else {
           ORC_PROGRAM_ERROR(compiler,"unimplemented");
@@ -249,13 +231,13 @@ sse_load_constants (OrcCompiler *compiler)
         break;
       case ORC_VAR_TYPE_ACCUMULATOR:
         ORC_ASM_CODE(compiler,"  pxor %%%s, %%%s\n",
-            x86_get_regname_sse(compiler->vars[i].alloc),
-            x86_get_regname_sse(compiler->vars[i].alloc));
+            orc_x86_get_regname_sse(compiler->vars[i].alloc),
+            orc_x86_get_regname_sse(compiler->vars[i].alloc));
         *compiler->codeptr++ = 0x66;
-        x86_emit_rex (compiler, 0, compiler->vars[i].alloc, 0, compiler->vars[i].alloc);
+        orc_x86_emit_rex (compiler, 0, compiler->vars[i].alloc, 0, compiler->vars[i].alloc);
         *compiler->codeptr++ = 0x0f;
         *compiler->codeptr++ = 0xef;
-        x86_emit_modrm_reg (compiler, compiler->vars[i].alloc, compiler->vars[i].alloc);
+        orc_x86_emit_modrm_reg (compiler, compiler->vars[i].alloc, compiler->vars[i].alloc);
         break;
       case ORC_VAR_TYPE_TEMP:
         break;
@@ -267,38 +249,38 @@ sse_load_constants (OrcCompiler *compiler)
 }
 
 void
-sse_emit_load_src (OrcCompiler *compiler, OrcVariable *var)
+orc_sse_emit_load_src (OrcCompiler *compiler, OrcVariable *var)
 {
   int ptr_reg;
   if (var->ptr_register == 0) {
     int i;
     i = var - compiler->vars;
-    x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
+    orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
         (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
-        x86_exec_ptr, X86_ECX);
+        compiler->exec_reg, X86_ECX);
     ptr_reg = X86_ECX;
   } else {
     ptr_reg = var->ptr_register;
   }
   switch (var->size << compiler->loop_shift) {
     case 1:
-      x86_emit_mov_memoffset_reg (compiler, 1, 0, ptr_reg, X86_ECX);
-      x86_emit_mov_reg_sse (compiler, X86_ECX, var->alloc);
+      orc_x86_emit_mov_memoffset_reg (compiler, 1, 0, ptr_reg, X86_ECX);
+      orc_x86_emit_mov_reg_sse (compiler, X86_ECX, var->alloc);
       break;
     case 2:
-      x86_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX);
-      x86_emit_mov_reg_sse (compiler, X86_ECX, var->alloc);
+      orc_x86_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX);
+      orc_x86_emit_mov_reg_sse (compiler, X86_ECX, var->alloc);
       break;
     case 4:
-      x86_emit_mov_memoffset_sse (compiler, 4, 0, ptr_reg, var->alloc,
+      orc_x86_emit_mov_memoffset_sse (compiler, 4, 0, ptr_reg, var->alloc,
           var->is_aligned);
       break;
     case 8:
-      x86_emit_mov_memoffset_sse (compiler, 8, 0, ptr_reg, var->alloc,
+      orc_x86_emit_mov_memoffset_sse (compiler, 8, 0, ptr_reg, var->alloc,
           var->is_aligned);
       break;
     case 16:
-      x86_emit_mov_memoffset_sse (compiler, 16, 0, ptr_reg, var->alloc,
+      orc_x86_emit_mov_memoffset_sse (compiler, 16, 0, ptr_reg, var->alloc,
           var->is_aligned);
       break;
     default:
@@ -309,12 +291,12 @@ sse_emit_load_src (OrcCompiler *compiler, OrcVariable *var)
 }
 
 void
-sse_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
+orc_sse_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
 {
   int ptr_reg;
   if (var->ptr_register == 0) {
-    x86_emit_mov_memoffset_reg (compiler, x86_ptr_size,
-        var->ptr_offset, x86_exec_ptr, X86_ECX);
+    orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
+        var->ptr_offset, compiler->exec_reg, X86_ECX);
     ptr_reg = X86_ECX;
   } else {
     ptr_reg = var->ptr_register;
@@ -325,27 +307,27 @@ sse_emit_store_dest (OrcCompiler *compiler, OrcVariable *var)
       if (ptr_reg == X86_ECX) {
         ORC_PROGRAM_ERROR(compiler,"unimplemented");
       }
-      x86_emit_mov_sse_reg (compiler, var->alloc, X86_ECX);
-      x86_emit_mov_reg_memoffset (compiler, 1, X86_ECX, 0, ptr_reg);
+      orc_x86_emit_mov_sse_reg (compiler, var->alloc, X86_ECX);
+      orc_x86_emit_mov_reg_memoffset (compiler, 1, X86_ECX, 0, ptr_reg);
       break;
     case 2:
       /* FIXME we might be using ecx twice here */
       if (ptr_reg == X86_ECX) {
         ORC_PROGRAM_ERROR(compiler,"unimplemented");
       }
-      x86_emit_mov_sse_reg (compiler, var->alloc, X86_ECX);
-      x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg);
+      orc_x86_emit_mov_sse_reg (compiler, var->alloc, X86_ECX);
+      orc_x86_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg);
       break;
     case 4:
-      x86_emit_mov_sse_memoffset (compiler, 4, var->alloc, 0, ptr_reg,
+      orc_x86_emit_mov_sse_memoffset (compiler, 4, var->alloc, 0, ptr_reg,
           var->is_aligned, var->is_uncached);
       break;
     case 8:
-      x86_emit_mov_sse_memoffset (compiler, 8, var->alloc, 0, ptr_reg,
+      orc_x86_emit_mov_sse_memoffset (compiler, 8, var->alloc, 0, ptr_reg,
           var->is_aligned, var->is_uncached);
       break;
     case 16:
-      x86_emit_mov_sse_memoffset (compiler, 16, var->alloc, 0, ptr_reg,
+      orc_x86_emit_mov_sse_memoffset (compiler, 16, var->alloc, 0, ptr_reg,
           var->is_aligned, var->is_uncached);
       break;
     default:
@@ -394,57 +376,57 @@ orc_compiler_sse_assemble (OrcCompiler *compiler)
 
   compiler->vars[align_var].is_aligned = FALSE;
 
-  x86_emit_prologue (compiler);
+  orc_x86_emit_prologue (compiler);
 
   if (compiler->loop_shift > 0) {
-    x86_emit_mov_imm_reg (compiler, 4, 16, X86_EAX);
-    x86_emit_sub_memoffset_reg (compiler, 4,
+    orc_x86_emit_mov_imm_reg (compiler, 4, 16, X86_EAX);
+    orc_x86_emit_sub_memoffset_reg (compiler, 4,
         (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[align_var]),
-        x86_exec_ptr, X86_EAX);
-    x86_emit_and_imm_reg (compiler, 4, 15, X86_EAX);
-    x86_emit_sar_imm_reg (compiler, 4, align_shift, X86_EAX);
+        compiler->exec_reg, X86_EAX);
+    orc_x86_emit_and_imm_reg (compiler, 4, 15, X86_EAX);
+    orc_x86_emit_sar_imm_reg (compiler, 4, align_shift, X86_EAX);
 
-    x86_emit_cmp_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), x86_exec_ptr);
+    orc_x86_emit_cmp_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg);
 
-    x86_emit_jle (compiler, 6);
+    orc_x86_emit_jle (compiler, 6);
 
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), x86_exec_ptr);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg);
     
-    x86_emit_mov_memoffset_reg (compiler, 4,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), x86_exec_ptr, X86_ECX);
-    x86_emit_sub_reg_reg (compiler, 4, X86_EAX, X86_ECX);
-
-    x86_emit_mov_reg_reg (compiler, 4, X86_ECX, X86_EAX);
-
-    x86_emit_sar_imm_reg (compiler, 4, compiler->loop_shift, X86_ECX);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
-
-    x86_emit_and_imm_reg (compiler, 4, (1<<compiler->loop_shift)-1, X86_EAX);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), x86_exec_ptr);
-
-    x86_emit_jmp (compiler, 7);
-    x86_emit_label (compiler, 6);
-
-    x86_emit_mov_memoffset_reg (compiler, 4,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), x86_exec_ptr, X86_EAX);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), x86_exec_ptr);
-    x86_emit_mov_imm_reg (compiler, 4, 0, X86_EAX);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), x86_exec_ptr);
-
-    x86_emit_label (compiler, 7);
+    orc_x86_emit_mov_memoffset_reg (compiler, 4,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_ECX);
+    orc_x86_emit_sub_reg_reg (compiler, 4, X86_EAX, X86_ECX);
+
+    orc_x86_emit_mov_reg_reg (compiler, 4, X86_ECX, X86_EAX);
+
+    orc_x86_emit_sar_imm_reg (compiler, 4, compiler->loop_shift, X86_ECX);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
+
+    orc_x86_emit_and_imm_reg (compiler, 4, (1<<compiler->loop_shift)-1, X86_EAX);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg);
+
+    orc_x86_emit_jmp (compiler, 7);
+    orc_x86_emit_label (compiler, 6);
+
+    orc_x86_emit_mov_memoffset_reg (compiler, 4,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_EAX);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg);
+    orc_x86_emit_mov_imm_reg (compiler, 4, 0, X86_EAX);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg);
+
+    orc_x86_emit_label (compiler, 7);
   } else {
-    x86_emit_mov_memoffset_reg (compiler, 4,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), x86_exec_ptr, X86_ECX);
-    x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
+    orc_x86_emit_mov_memoffset_reg (compiler, 4,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_ECX);
+    orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_ECX,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
   }
 
   sse_load_constants (compiler);
@@ -452,71 +434,71 @@ orc_compiler_sse_assemble (OrcCompiler *compiler)
   if (compiler->loop_shift > 0) {
     int save_loop_shift;
 
-    x86_emit_cmp_imm_memoffset (compiler, 4, 0,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), x86_exec_ptr);
-    x86_emit_je (compiler, 1);
+    orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg);
+    orc_x86_emit_je (compiler, 1);
 
     save_loop_shift = compiler->loop_shift;
     compiler->loop_shift = 0;
 
-    x86_emit_label (compiler, 0);
-    sse_emit_loop (compiler);
-    x86_emit_dec_memoffset (compiler, 4,
+    orc_x86_emit_label (compiler, 0);
+    orc_sse_emit_loop (compiler);
+    orc_x86_emit_dec_memoffset (compiler, 4,
         (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1),
-        x86_exec_ptr);
-    x86_emit_jne (compiler, 0);
+        compiler->exec_reg);
+    orc_x86_emit_jne (compiler, 0);
 
     compiler->loop_shift = save_loop_shift;
     compiler->vars[align_var].is_aligned = TRUE;
   }
 
-  x86_emit_label (compiler, 1);
+  orc_x86_emit_label (compiler, 1);
 
-  x86_emit_cmp_imm_memoffset (compiler, 4, 0,
-      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), x86_exec_ptr);
-  x86_emit_je (compiler, 3);
+  orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0,
+      (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg);
+  orc_x86_emit_je (compiler, 3);
 
-  x86_emit_align (compiler);
-  x86_emit_label (compiler, 2);
-  sse_emit_loop (compiler);
-  x86_emit_dec_memoffset (compiler, 4,
+  orc_x86_emit_align (compiler);
+  orc_x86_emit_label (compiler, 2);
+  orc_sse_emit_loop (compiler);
+  orc_x86_emit_dec_memoffset (compiler, 4,
       (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2),
-      x86_exec_ptr);
-  x86_emit_jne (compiler, 2);
-  x86_emit_label (compiler, 3);
+      compiler->exec_reg);
+  orc_x86_emit_jne (compiler, 2);
+  orc_x86_emit_label (compiler, 3);
 
   if (compiler->loop_shift > 0) {
     int save_loop_shift;
 
     compiler->vars[align_var].is_aligned = FALSE;
-    x86_emit_cmp_imm_memoffset (compiler, 4, 0,
-        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), x86_exec_ptr);
-    x86_emit_je (compiler, 5);
+    orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0,
+        (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg);
+    orc_x86_emit_je (compiler, 5);
 
     save_loop_shift = compiler->loop_shift;
     compiler->loop_shift = 0;
 
-    x86_emit_label (compiler, 4);
-    sse_emit_loop (compiler);
-    x86_emit_dec_memoffset (compiler, 4,
+    orc_x86_emit_label (compiler, 4);
+    orc_sse_emit_loop (compiler);
+    orc_x86_emit_dec_memoffset (compiler, 4,
         (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3),
-        x86_exec_ptr);
-    x86_emit_jne (compiler, 4);
+        compiler->exec_reg);
+    orc_x86_emit_jne (compiler, 4);
 
-    x86_emit_label (compiler, 5);
+    orc_x86_emit_label (compiler, 5);
 
     compiler->loop_shift = save_loop_shift;
   }
 
   sse_save_accumulators (compiler);
 
-  x86_emit_epilogue (compiler);
+  orc_x86_emit_epilogue (compiler);
 
   x86_do_fixups (compiler);
 }
 
 void
-sse_emit_loop (OrcCompiler *compiler)
+orc_sse_emit_loop (OrcCompiler *compiler)
 {
   int j;
   int k;
@@ -551,7 +533,7 @@ sse_emit_loop (OrcCompiler *compiler)
       switch (var->vartype) {
         case ORC_VAR_TYPE_SRC:
         case ORC_VAR_TYPE_DEST:
-          sse_emit_load_src (compiler, var);
+          orc_sse_emit_load_src (compiler, var);
           break;
         case ORC_VAR_TYPE_CONST:
           break;
@@ -569,7 +551,7 @@ sse_emit_loop (OrcCompiler *compiler)
       if (!(insn->opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) &&
           compiler->vars[insn->dest_args[0]].alloc !=
           compiler->vars[insn->src_args[0]].alloc) {
-        x86_emit_mov_sse_reg_reg (compiler,
+        orc_x86_emit_mov_sse_reg_reg (compiler,
             compiler->vars[insn->src_args[0]].alloc,
             compiler->vars[insn->dest_args[0]].alloc);
       }
@@ -585,7 +567,7 @@ sse_emit_loop (OrcCompiler *compiler)
 
       switch (var->vartype) {
         case ORC_VAR_TYPE_DEST:
-          sse_emit_store_dest (compiler, var);
+          orc_sse_emit_store_dest (compiler, var);
           break;
         case ORC_VAR_TYPE_TEMP:
           break;
@@ -600,14 +582,14 @@ sse_emit_loop (OrcCompiler *compiler)
     if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC ||
         compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) {
       if (compiler->vars[k].ptr_register) {
-        x86_emit_add_imm_reg (compiler, x86_ptr_size,
+        orc_x86_emit_add_imm_reg (compiler, compiler->is_64bit ? 8 : 4,
             compiler->vars[k].size << compiler->loop_shift,
             compiler->vars[k].ptr_register);
       } else {
-        x86_emit_add_imm_memoffset (compiler, x86_ptr_size,
+        orc_x86_emit_add_imm_memoffset (compiler, compiler->is_64bit ? 8 : 4,
             compiler->vars[k].size << compiler->loop_shift,
             (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]),
-            x86_exec_ptr);
+            compiler->exec_reg);
       }
     }
   }
index 46ec0fc..f97523b 100644 (file)
@@ -244,7 +244,10 @@ struct _OrcCompiler {
   char *asm_code;
   int asm_code_len;
 
+  int is_64bit;
   int tmpreg;
+  int exec_reg;
+  int gp_tmpreg;
 };
 
 struct _OrcOpcodeExecutor {
index f01fdb7..7868c54 100644 (file)
 /* mmx rules */
 
 void
-mmx_emit_loadiw (OrcCompiler *p, int reg, int value)
+orc_mmx_emit_loadiw (OrcCompiler *p, int reg, int value)
 {
   if (value == 0) {
-    ORC_ASM_CODE(p,"  pxor %%%s, %%%s\n", x86_get_regname_mmx(reg),
-        x86_get_regname_mmx(reg));
+    ORC_ASM_CODE(p,"  pxor %%%s, %%%s\n", orc_x86_get_regname_mmx(reg),
+        orc_x86_get_regname_mmx(reg));
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0xef;
-    x86_emit_modrm_reg (p, reg, reg);
+    orc_x86_emit_modrm_reg (p, reg, reg);
   } else {
 #if 1
-    x86_emit_mov_imm_reg (p, 4, value, X86_ECX);
+    orc_x86_emit_mov_imm_reg (p, 4, value, X86_ECX);
 
-    ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", x86_get_regname_mmx(reg));
+    ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", orc_x86_get_regname_mmx(reg));
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x6e;
-    x86_emit_modrm_reg (p, X86_ECX, reg);
+    orc_x86_emit_modrm_reg (p, X86_ECX, reg);
 #else
-    ORC_ASM_CODE(p,"  pinsrw $0, %%ecx, %%%s\n", x86_get_regname_mmx(reg));
+    ORC_ASM_CODE(p,"  pinsrw $0, %%ecx, %%%s\n", orc_x86_get_regname_mmx(reg));
 #endif
 
-    ORC_ASM_CODE(p,"  pshufw $0, %%%s, %%%s\n", x86_get_regname_mmx(reg),
-        x86_get_regname_mmx(reg));
+    ORC_ASM_CODE(p,"  pshufw $0, %%%s, %%%s\n", orc_x86_get_regname_mmx(reg),
+        orc_x86_get_regname_mmx(reg));
 
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x70;
-    x86_emit_modrm_reg (p, reg, reg);
+    orc_x86_emit_modrm_reg (p, reg, reg);
     *p->codeptr++ = 0x00;
   }
 }
@@ -50,12 +50,12 @@ static void
 mmx_rule_addw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   ORC_ASM_CODE(p,"  paddw %%%s, %%%s\n",
-      x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
-      x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
+      orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0xfd;
-  x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
+  orc_x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
 
@@ -63,12 +63,12 @@ static void
 mmx_rule_subw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   ORC_ASM_CODE(p,"  psubw %%%s, %%%s\n",
-      x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
-      x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
+      orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0xf9;
-  x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
+  orc_x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
 
@@ -76,12 +76,12 @@ static void
 mmx_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   ORC_ASM_CODE(p,"  pmullw %%%s, %%%s\n",
-      x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
-      x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
+      orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0xd5;
-  x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
+  orc_x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
 
@@ -91,21 +91,21 @@ mmx_rule_shlw (OrcCompiler *p, void *user, OrcInstruction *insn)
   if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
     ORC_ASM_CODE(p,"  psllw $%d, %%%s\n",
         p->vars[insn->src_args[1]].value,
-        x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x71;
-    x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
+    orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
     *p->codeptr++ = p->vars[insn->src_args[1]].value;
   } else {
     /* FIXME this doesn't work quite right */
     ORC_ASM_CODE(p,"  psllw %%%s, %%%s\n",
-        x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
-        x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
+        orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0xf1;
-    x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc,
+    orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc,
         p->vars[insn->src_args[1]].alloc);
   }
 }
@@ -116,21 +116,21 @@ mmx_rule_shrsw (OrcCompiler *p, void *user, OrcInstruction *insn)
   if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
     ORC_ASM_CODE(p,"  psraw $%d, %%%s\n",
         p->vars[insn->src_args[1]].value,
-        x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x71;
-    x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
+    orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
     *p->codeptr++ = p->vars[insn->src_args[1]].value;
   } else {
     /* FIXME this doesn't work quite right */
     ORC_ASM_CODE(p,"  psraw %%%s, %%%s\n",
-        x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
-        x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_mmx(p->vars[insn->src_args[1]].alloc),
+        orc_x86_get_regname_mmx(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0xe1;
-    x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc,
+    orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc,
         p->vars[insn->src_args[1]].alloc);
   }
 }
index 94113cc..514df2d 100644 (file)
@@ -18,203 +18,230 @@ int ssse3 = TRUE;
 int sse41 = FALSE;
 
 void
-sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
+orc_sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest)
 {
   ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
+      orc_x86_get_regname_sse(src),
+      orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0xf2;
-  x86_emit_rex (p, 0, dest, 0, src);
+  orc_x86_emit_rex (p, 0, dest, 0, src);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
+  orc_x86_emit_modrm_reg (p, src, dest);
 }
 
 void
-sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
+orc_sse_emit_f30f (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest)
 {
   ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
+      orc_x86_get_regname_sse(src),
+      orc_x86_get_regname_sse(dest));
+  *p->codeptr++ = 0xf3;
+  orc_x86_emit_rex (p, 0, dest, 0, src);
+  *p->codeptr++ = 0x0f;
+  *p->codeptr++ = code;
+  orc_x86_emit_modrm_reg (p, src, dest);
+}
+
+void
+orc_sse_emit_0f (OrcCompiler *p, const char *insn_name, int code,
+    int src, int dest)
+{
+  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
+      orc_x86_get_regname_sse(src),
+      orc_x86_get_regname_sse(dest));
+  orc_x86_emit_rex (p, 0, dest, 0, src);
+  *p->codeptr++ = 0x0f;
+  *p->codeptr++ = code;
+  orc_x86_emit_modrm_reg (p, src, dest);
+}
+
+void
+orc_sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
+    int src, int dest)
+{
+  ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
+      orc_x86_get_regname_sse(src),
+      orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, src);
+  orc_x86_emit_rex (p, 0, dest, 0, src);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
+  orc_x86_emit_modrm_reg (p, src, dest);
 }
 
 void
-sse_emit_660f38 (OrcCompiler *p, const char *insn_name, int code,
+orc_sse_emit_660f38 (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest)
 {
   ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src),
-      x86_get_regname_sse(dest));
+      orc_x86_get_regname_sse(src),
+      orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, src);
+  orc_x86_emit_rex (p, 0, dest, 0, src);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x38;
   *p->codeptr++ = code;
-  x86_emit_modrm_reg (p, src, dest);
+  orc_x86_emit_modrm_reg (p, src, dest);
 }
 
 /* sse rules */
 
 void
-sse_emit_loadil (OrcCompiler *p, int reg, int value)
+orc_sse_emit_loadil (OrcCompiler *p, int reg, int value)
 {
   if (value == 0) {
-    ORC_ASM_CODE(p,"  pxor %%%s, %%%s\n", x86_get_regname_sse(reg),
-        x86_get_regname_sse(reg));
-    x86_emit_rex (p, 0, reg, 0, reg);
+    ORC_ASM_CODE(p,"  pxor %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+        orc_x86_get_regname_sse(reg));
+    orc_x86_emit_rex (p, 0, reg, 0, reg);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0xef;
-    x86_emit_modrm_reg (p, reg, reg);
+    orc_x86_emit_modrm_reg (p, reg, reg);
   } else {
-    x86_emit_mov_imm_reg (p, 4, value, X86_ECX);
+    orc_x86_emit_mov_imm_reg (p, 4, value, X86_ECX);
 
-    ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", x86_get_regname_sse(reg));
+    ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", orc_x86_get_regname_sse(reg));
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, reg, 0, X86_ECX);
+    orc_x86_emit_rex (p, 0, reg, 0, X86_ECX);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x6e;
-    x86_emit_modrm_reg (p, X86_ECX, reg);
+    orc_x86_emit_modrm_reg (p, X86_ECX, reg);
 
-    ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-        x86_get_regname_sse(reg));
+    ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+        orc_x86_get_regname_sse(reg));
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, reg, 0, reg);
+    orc_x86_emit_rex (p, 0, reg, 0, reg);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x70;
-    x86_emit_modrm_reg (p, reg, reg);
+    orc_x86_emit_modrm_reg (p, reg, reg);
     *p->codeptr++ = 0x00;
   }
 }
 
 void
-sse_emit_loadib (OrcCompiler *p, int reg, int value)
+orc_sse_emit_loadib (OrcCompiler *p, int reg, int value)
 {
   value &= 0xff;
   value |= (value<<8);
   value |= (value<<16);
-  sse_emit_loadil (p, reg, value);
+  orc_sse_emit_loadil (p, reg, value);
 }
 
 void
-sse_emit_loadiw (OrcCompiler *p, int reg, int value)
+orc_sse_emit_loadiw (OrcCompiler *p, int reg, int value)
 {
   value &= 0xffff;
   value |= (value<<16);
-  sse_emit_loadil (p, reg, value);
+  orc_sse_emit_loadil (p, reg, value);
 }
 
 void
-sse_emit_loadpb (OrcCompiler *p, int reg, int param)
+orc_sse_emit_loadpb (OrcCompiler *p, int reg, int param)
 {
-  x86_emit_mov_memoffset_sse (p, 4, 
+  orc_x86_emit_mov_memoffset_sse (p, 4, 
       (int)ORC_STRUCT_OFFSET(OrcExecutor, params[param]),
-      x86_exec_ptr, reg, FALSE);
+      p->exec_reg, reg, FALSE);
 
-  sse_emit_660f (p, "punpcklbw", 0x60, reg, reg);
+  orc_sse_emit_660f (p, "punpcklbw", 0x60, reg, reg);
 
-  ORC_ASM_CODE(p,"  pshuflw $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshuflw $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0xf2;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 }
 
 void
-sse_emit_loadpw (OrcCompiler *p, int reg, int param)
+orc_sse_emit_loadpw (OrcCompiler *p, int reg, int param)
 {
-  x86_emit_mov_memoffset_sse (p, 4, 
+  orc_x86_emit_mov_memoffset_sse (p, 4, 
       (int)ORC_STRUCT_OFFSET(OrcExecutor, params[param]),
-      x86_exec_ptr, reg, FALSE);
+      p->exec_reg, reg, FALSE);
 
-  ORC_ASM_CODE(p,"  pshuflw $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshuflw $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0xf2;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 }
 
 void
-sse_emit_loadpl (OrcCompiler *p, int reg, int param)
+orc_sse_emit_loadpl (OrcCompiler *p, int reg, int param)
 {
-  x86_emit_mov_memoffset_sse (p, 4, 
+  orc_x86_emit_mov_memoffset_sse (p, 4, 
       (int)ORC_STRUCT_OFFSET(OrcExecutor, params[param]),
-      x86_exec_ptr, reg, FALSE);
+      p->exec_reg, reg, FALSE);
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 }
 
 void
-sse_emit_loadpq (OrcCompiler *p, int reg, int param)
+orc_sse_emit_loadpq (OrcCompiler *p, int reg, int param)
 {
-  x86_emit_mov_memoffset_sse (p, 8, 
+  orc_x86_emit_mov_memoffset_sse (p, 8, 
       (int)ORC_STRUCT_OFFSET(OrcExecutor, params[param]),
-      x86_exec_ptr, reg, FALSE);
+      p->exec_reg, reg, FALSE);
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(reg),
-      x86_get_regname_sse(reg));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(reg),
+      orc_x86_get_regname_sse(reg));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, reg, 0, reg);
+  orc_x86_emit_rex (p, 0, reg, 0, reg);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, reg, reg);
+  orc_x86_emit_modrm_reg (p, reg, reg);
   *p->codeptr++ = 0x00;
 }
 
 static void
 sse_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "movdqa", 0x6f,
+  orc_sse_emit_660f (p, "movdqa", 0x6f,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
 
 static void
-sse_emit_66_rex_0f (OrcCompiler *p, OrcInstruction *insn, int code,
+orc_sse_emit_66_rex_0f (OrcCompiler *p, OrcInstruction *insn, int code,
     const char *insn_name, int src, int dest)
 {
   ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", insn_name,
-      x86_get_regname_sse(src), x86_get_regname_sse(dest));
+      orc_x86_get_regname_sse(src), orc_x86_get_regname_sse(dest));
 
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, src);
+  orc_x86_emit_rex (p, 0, dest, 0, src);
   *p->codeptr++ = 0x0f;
   if (code & 0xff00) {
     *p->codeptr++ = code >> 8;
@@ -222,14 +249,14 @@ sse_emit_66_rex_0f (OrcCompiler *p, OrcInstruction *insn, int code,
   } else {
     *p->codeptr++ = code;
   }
-  x86_emit_modrm_reg (p, src, dest);
+  orc_x86_emit_modrm_reg (p, src, dest);
 }
 
 #define UNARY(opcode,insn_name,code) \
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_66_rex_0f (p, insn, code, insn_name, \
+  orc_sse_emit_66_rex_0f (p, insn, code, insn_name, \
       p->vars[insn->src_args[0]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -238,7 +265,7 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 static void \
 sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
 { \
-  sse_emit_66_rex_0f (p, insn, code, insn_name, \
+  orc_sse_emit_66_rex_0f (p, insn, code, insn_name, \
       p->vars[insn->src_args[1]].alloc, \
       p->vars[insn->dest_args[0]].alloc); \
 }
@@ -320,7 +347,7 @@ sse_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn)
   int src = p->vars[insn->src_args[0]].alloc;
   int dest = p->vars[insn->dest_args[0]].alloc;
 
-  sse_emit_660f (p, "paddw", 0xfd, src, dest);
+  orc_sse_emit_660f (p, "paddw", 0xfd, src, dest);
 }
 
 static void
@@ -329,7 +356,7 @@ sse_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn)
   int src = p->vars[insn->src_args[0]].alloc;
   int dest = p->vars[insn->dest_args[0]].alloc;
 
-  sse_emit_660f (p, "paddd", 0xfe, src, dest);
+  orc_sse_emit_660f (p, "paddd", 0xfe, src, dest);
 }
 
 static void
@@ -339,41 +366,41 @@ sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
   int src2 = p->vars[insn->src_args[1]].alloc;
   int dest = p->vars[insn->dest_args[0]].alloc;
 
-  sse_emit_660f (p, "movdqa", 0x6f, src1, p->tmpreg);
-  sse_emit_660f (p, "psadbw", 0xf6, src2, p->tmpreg);
-  sse_emit_660f (p, "paddd", 0xfe, p->tmpreg, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, src1, p->tmpreg);
+  orc_sse_emit_660f (p, "psadbw", 0xf6, src2, p->tmpreg);
+  orc_sse_emit_660f (p, "paddd", 0xfe, p->tmpreg, dest);
 
 #if 0
-  ORC_ASM_CODE(p,"  movd %%%s, %%ecx\n", x86_get_regname_sse(dest));
+  ORC_ASM_CODE(p,"  movd %%%s, %%ecx\n", orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, X86_ECX);
+  orc_x86_emit_rex (p, 0, dest, 0, X86_ECX);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x7e;
-  x86_emit_modrm_reg (p, X86_ECX, dest);
+  orc_x86_emit_modrm_reg (p, X86_ECX, dest);
 
-  x86_emit_add_reg_memoffset (p, 4, X86_ECX,
+  orc_x86_emit_add_reg_memoffset (p, 4, X86_ECX,
       (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[0]),
-      x86_exec_ptr);
+      p->exec_reg);
 
   if (p->loop_shift > 3) {
-    ORC_ASM_CODE(p,"  psrldq $8, %%%s\n", x86_get_regname_sse(dest));
+    ORC_ASM_CODE(p,"  psrldq $8, %%%s\n", orc_x86_get_regname_sse(dest));
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, 0, 0, dest);
+    orc_x86_emit_rex (p, 0, 0, 0, dest);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x73;
-    x86_emit_modrm_reg (p, dest, 3);
+    orc_x86_emit_modrm_reg (p, dest, 3);
     *p->codeptr++ = 0x08;
 
-    ORC_ASM_CODE(p,"  movd %%%s, %%ecx\n", x86_get_regname_sse(dest));
+    ORC_ASM_CODE(p,"  movd %%%s, %%ecx\n", orc_x86_get_regname_sse(dest));
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, dest, 0, X86_ECX);
+    orc_x86_emit_rex (p, 0, dest, 0, X86_ECX);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = 0x7e;
-    x86_emit_modrm_reg (p, X86_ECX, dest);
+    orc_x86_emit_modrm_reg (p, X86_ECX, dest);
 
-    x86_emit_add_reg_memoffset (p, 4, X86_ECX,
+    orc_x86_emit_add_reg_memoffset (p, 4, X86_ECX,
         (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[0]),
-        x86_exec_ptr);
+        p->exec_reg);
 
   }
 #endif
@@ -389,29 +416,29 @@ sse_rule_signX (OrcCompiler *p, void *user, OrcInstruction *insn)
   int codes[] = { 0x08, 0x09, 0x0a };
 
   if (src == dest) {
-    sse_emit_660f (p, "movdqa", 0x6f, src, p->tmpreg);
+    orc_sse_emit_660f (p, "movdqa", 0x6f, src, p->tmpreg);
     src = p->tmpreg;
   }
 
-  x86_emit_mov_imm_reg (p, 4, imm_vals[ORC_PTR_TO_INT(user)], X86_ECX);
+  orc_x86_emit_mov_imm_reg (p, 4, imm_vals[ORC_PTR_TO_INT(user)], X86_ECX);
 
-  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", x86_get_regname_sse(dest));
+  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, X86_ECX);
+  orc_x86_emit_rex (p, 0, dest, 0, X86_ECX);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x6e;
-  x86_emit_modrm_reg (p, X86_ECX, dest);
+  orc_x86_emit_modrm_reg (p, X86_ECX, dest);
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(dest),
-      x86_get_regname_sse(dest));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(dest),
+      orc_x86_get_regname_sse(dest));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, dest, 0, dest);
+  orc_x86_emit_rex (p, 0, dest, 0, dest);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, dest, dest);
+  orc_x86_emit_modrm_reg (p, dest, dest);
   *p->codeptr++ = 0x00;
 
-  sse_emit_660f38 (p, names[ORC_PTR_TO_INT(user)], codes[ORC_PTR_TO_INT(user)], src, dest);
+  orc_sse_emit_660f38 (p, names[ORC_PTR_TO_INT(user)], codes[ORC_PTR_TO_INT(user)], src, dest);
 }
 
 static void
@@ -426,30 +453,30 @@ sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
   if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
     ORC_ASM_CODE(p,"  %s $%d, %%%s\n", code[type],
         p->vars[insn->src_args[1]].value,
-        x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+    orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = imm_code1[type];
-    x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, imm_code2[type]);
+    orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, imm_code2[type]);
     *p->codeptr++ = p->vars[insn->src_args[1]].value;
   } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) {
     /* FIXME this is a gross hack to reload the register with a
      * 64-bit version of the parameter. */
-    x86_emit_mov_memoffset_sse (p, 4, 
+    orc_x86_emit_mov_memoffset_sse (p, 4, 
         (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
-        x86_exec_ptr, p->tmpreg, FALSE);
+        p->exec_reg, p->tmpreg, FALSE);
 
     ORC_ASM_CODE(p,"  %s %%%s, %%%s\n", code[type],
-        x86_get_regname_sse(p->tmpreg),
-        x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+        orc_x86_get_regname_sse(p->tmpreg),
+        orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
 
     *p->codeptr++ = 0x66;
-    x86_emit_rex (p, 0, p->vars[insn->dest_args[0]].alloc, 0, p->tmpreg);
+    orc_x86_emit_rex (p, 0, p->vars[insn->dest_args[0]].alloc, 0, p->tmpreg);
     *p->codeptr++ = 0x0f;
     *p->codeptr++ = reg_code[type];
-    x86_emit_modrm_reg (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc);
+    orc_x86_emit_modrm_reg (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc);
   } else {
     ORC_PROGRAM_ERROR(p,"rule only works with constants or params");
   }
@@ -458,18 +485,18 @@ sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "punpcklbw", 0x60,
+  orc_sse_emit_660f (p, "punpcklbw", 0x60,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 
   ORC_ASM_CODE(p,"  psraw $8, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
   *p->codeptr++ = 8;
 }
 
@@ -478,17 +505,17 @@ sse_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   /* FIXME should do this by unpacking with a zero reg */
 
-  sse_emit_660f (p, "punpcklbw", 0x60,
+  orc_sse_emit_660f (p, "punpcklbw", 0x60,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
   *p->codeptr++ = 8;
 
 }
@@ -496,7 +523,7 @@ sse_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "packsswb", 0x63,
+  orc_sse_emit_660f (p, "packsswb", 0x63,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -504,7 +531,7 @@ sse_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "packuswb", 0x67,
+  orc_sse_emit_660f (p, "packuswb", 0x67,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -518,28 +545,28 @@ sse_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn)
   /* FIXME slow */
 
   if (dest != src) {
-    sse_emit_660f (p, "movdqa", 0x6f, src, dest);
+    orc_sse_emit_660f (p, "movdqa", 0x6f, src, dest);
   }
 
   ORC_ASM_CODE(p,"  psllw $8, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
   *p->codeptr++ = 8;
 
   ORC_ASM_CODE(p,"  psrlw $8, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x71;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
   *p->codeptr++ = 8;
 
-  sse_emit_660f (p, "packuswb", 0x67,
+  orc_sse_emit_660f (p, "packuswb", 0x67,
       p->vars[insn->dest_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -547,17 +574,17 @@ sse_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "punpcklwd", 0x61,
+  orc_sse_emit_660f (p, "punpcklwd", 0x61,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 
   ORC_ASM_CODE(p,"  psrad $16, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x72;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
   *p->codeptr++ = 16;
 }
 
@@ -566,18 +593,18 @@ sse_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   /* FIXME should do this by unpacking with a zero reg */
 
-  sse_emit_660f (p, "punpcklwd", 0x61,
+  orc_sse_emit_660f (p, "punpcklwd", 0x61,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 
   ORC_ASM_CODE(p,"  psrld $16, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x72;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 2);
   *p->codeptr++ = 16;
 
 }
@@ -591,34 +618,34 @@ sse_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn)
   /* FIXME slow */
 
   if (dest != src) {
-    sse_emit_660f (p, "movdqa", 0x6f, src, dest);
+    orc_sse_emit_660f (p, "movdqa", 0x6f, src, dest);
   }
 
   ORC_ASM_CODE(p,"  pslld $16, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x72;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
   *p->codeptr++ = 16;
 
   ORC_ASM_CODE(p,"  psrad $16, %%%s\n",
-      x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
+      orc_x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
+  orc_x86_emit_rex (p, 0, 0, 0, p->vars[insn->dest_args[0]].alloc);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x72;
-  x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
+  orc_x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
   *p->codeptr++ = 16;
 
-  sse_emit_660f (p, "packssdw", 0x6b, dest, dest);
+  orc_sse_emit_660f (p, "packssdw", 0x6b, dest, dest);
 }
 
 static void
 sse_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f (p, "packssdw", 0x6b,
+  orc_sse_emit_660f (p, "packssdw", 0x6b,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -626,7 +653,7 @@ sse_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 sse_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  sse_emit_660f38 (p, "packusdw", 0x2b,
+  orc_sse_emit_660f38 (p, "packusdw", 0x2b,
       p->vars[insn->src_args[0]].alloc,
       p->vars[insn->dest_args[0]].alloc);
 }
@@ -638,10 +665,10 @@ sse_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
-  sse_emit_660f (p, "pmulhw", 0xe5, src, tmp);
-  sse_emit_660f (p, "pmullw", 0xd5, src, dest);
-  sse_emit_660f (p, "punpcklwd", 0x61, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
+  orc_sse_emit_660f (p, "pmulhw", 0xe5, src, tmp);
+  orc_sse_emit_660f (p, "pmullw", 0xd5, src, dest);
+  orc_sse_emit_660f (p, "punpcklwd", 0x61, tmp, dest);
 }
 
 static void
@@ -651,29 +678,29 @@ sse_rule_maxuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  x86_emit_mov_imm_reg (p, 4, 0x80008000, X86_ECX);
+  orc_x86_emit_mov_imm_reg (p, 4, 0x80008000, X86_ECX);
 
-  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", x86_get_regname_sse(tmp));
+  ORC_ASM_CODE(p,"  movd %%ecx, %%%s\n", orc_x86_get_regname_sse(tmp));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, tmp, 0, X86_ECX);
+  orc_x86_emit_rex (p, 0, tmp, 0, X86_ECX);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x6e;
-  x86_emit_modrm_reg (p, X86_ECX, tmp);
+  orc_x86_emit_modrm_reg (p, X86_ECX, tmp);
 
-  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", x86_get_regname_sse(tmp),
-      x86_get_regname_sse(tmp));
+  ORC_ASM_CODE(p,"  pshufd $0, %%%s, %%%s\n", orc_x86_get_regname_sse(tmp),
+      orc_x86_get_regname_sse(tmp));
   *p->codeptr++ = 0x66;
-  x86_emit_rex (p, 0, tmp, 0, tmp);
+  orc_x86_emit_rex (p, 0, tmp, 0, tmp);
   *p->codeptr++ = 0x0f;
   *p->codeptr++ = 0x70;
-  x86_emit_modrm_reg (p, tmp, tmp);
+  orc_x86_emit_modrm_reg (p, tmp, tmp);
   *p->codeptr++ = 0x00;
 
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
-  sse_emit_660f (p, "pmaxsw", 0xee, src, dest);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pmaxsw", 0xee, src, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 static void
@@ -683,13 +710,13 @@ sse_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_loadib (p, tmp, 0x80);
+  orc_sse_emit_loadib (p, tmp, 0x80);
 
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
-  sse_emit_660f (p, "pminsw", 0xea, src, dest);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pminsw", 0xea, src, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 static void
@@ -699,13 +726,13 @@ sse_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_loadib (p, tmp, 0x80);
+  orc_sse_emit_loadib (p, tmp, 0x80);
 
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
-  sse_emit_660f (p, "pavgb", 0xe0, src, dest);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pavgb", 0xe0, src, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 static void
@@ -715,13 +742,13 @@ sse_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_loadiw (p, tmp, 0x8000);
+  orc_sse_emit_loadiw (p, tmp, 0x8000);
 
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
-  sse_emit_660f (p, "pavgw", 0xe3, src, dest);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_660f (p, "pavgw", 0xe3, src, dest);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 static void
@@ -731,11 +758,11 @@ sse_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
-  sse_emit_660f (p, "pcmpgtb", 0x64, src, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
+  orc_sse_emit_660f (p, "pcmpgtb", 0x64, src, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 }
 
 static void
@@ -745,11 +772,11 @@ sse_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
-  sse_emit_660f (p, "pcmpgtb", 0x64, dest, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
+  orc_sse_emit_660f (p, "pcmpgtb", 0x64, dest, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 }
 
 static void
@@ -759,11 +786,11 @@ sse_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
-  sse_emit_660f (p, "pcmpgtd", 0x66, src, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
+  orc_sse_emit_660f (p, "pcmpgtd", 0x66, src, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 }
 
 static void
@@ -773,11 +800,11 @@ sse_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
-  sse_emit_660f (p, "pcmpgtd", 0x66, dest, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
+  orc_sse_emit_660f (p, "pcmpgtd", 0x66, dest, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 }
 
 static void
@@ -787,19 +814,19 @@ sse_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_loadil (p, tmp, 0x80000000);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_loadil (p, tmp, 0x80000000);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 
-  sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
-  sse_emit_660f (p, "pcmpgtd", 0x66, src, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, dest, tmp);
+  orc_sse_emit_660f (p, "pcmpgtd", 0x66, src, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 
-  sse_emit_loadil (p, tmp, 0x80000000);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_loadil (p, tmp, 0x80000000);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 static void
@@ -809,19 +836,19 @@ sse_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
   int dest = p->vars[insn->dest_args[0]].alloc;
   int tmp = p->tmpreg;
 
-  sse_emit_loadil (p, tmp, 0x80000000);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_loadil (p, tmp, 0x80000000);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 
-  sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
-  sse_emit_660f (p, "pcmpgtd", 0x66, dest, tmp);
-  sse_emit_660f (p, "pand", 0xdb, tmp, dest);
-  sse_emit_660f (p, "pandn", 0xdf, src, tmp);
-  sse_emit_660f (p, "por", 0xeb, tmp, dest);
+  orc_sse_emit_660f (p, "movdqa", 0x6f, src, tmp);
+  orc_sse_emit_660f (p, "pcmpgtd", 0x66, dest, tmp);
+  orc_sse_emit_660f (p, "pand", 0xdb, tmp, dest);
+  orc_sse_emit_660f (p, "pandn", 0xdf, src, tmp);
+  orc_sse_emit_660f (p, "por", 0xeb, tmp, dest);
 
-  sse_emit_loadil (p, tmp, 0x80000000);
-  sse_emit_660f (p, "pxor", 0xef, tmp, src);
-  sse_emit_660f (p, "pxor", 0xef, tmp, dest);
+  orc_sse_emit_loadil (p, tmp, 0x80000000);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, src);
+  orc_sse_emit_660f (p, "pxor", 0xef, tmp, dest);
 }
 
 
index b8dbfb5..2500eae 100644 (file)
--- a/orc/x86.c
+++ b/orc/x86.c
 #include <orc/orcdebug.h>
 #include <orc/orcutils.h>
 
-#ifdef HAVE_AMD64
-int x86_64 = 1;
-int x86_ptr_size = 8;
-int x86_exec_ptr = X86_EDI;
-#else
-int x86_64 = 0;
-int x86_ptr_size = 4;
-int x86_exec_ptr = X86_EBP;
-#endif
-
 
 const char *
-x86_get_regname(int i)
+orc_x86_get_regname(int i)
 {
   static const char *x86_regs[] = {
     "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
@@ -43,13 +33,13 @@ x86_get_regname(int i)
 }
 
 int
-x86_get_regnum(int i)
+orc_x86_get_regnum(int i)
 {
   return (i&0xf);
 }
 
 const char *
-x86_get_regname_8(int i)
+orc_x86_get_regname_8(int i)
 {
   static const char *x86_regs[] = { "al", "cl", "dl", "bl",
     "ah", "ch", "dh", "bh" };
@@ -66,7 +56,7 @@ x86_get_regname_8(int i)
 }
 
 const char *
-x86_get_regname_16(int i)
+orc_x86_get_regname_16(int i)
 {
   static const char *x86_regs[] = { "ax", "cx", "dx", "bx",
     "sp", "bp", "si", "di" };
@@ -83,7 +73,7 @@ x86_get_regname_16(int i)
 }
 
 const char *
-x86_get_regname_64(int i)
+orc_x86_get_regname_64(int i)
 {
   static const char *x86_regs[] = {
     "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
@@ -101,17 +91,17 @@ x86_get_regname_64(int i)
 }
 
 const char *
-x86_get_regname_ptr(int i)
+orc_x86_get_regname_ptr(OrcCompiler *compiler, int i)
 {
-  if (x86_64) {
-    return x86_get_regname_64 (i);
+  if (compiler->is_64bit) {
+    return orc_x86_get_regname_64 (i);
   } else {
-    return x86_get_regname (i);
+    return orc_x86_get_regname (i);
   }
 }
 
 const char *
-x86_get_regname_mmx(int i)
+orc_x86_get_regname_mmx(int i)
 {
   static const char *x86_regs[] = { "mm0", "mm1", "mm2", "mm3",
     "mm4", "mm5", "mm6", "mm7" };
@@ -128,7 +118,7 @@ x86_get_regname_mmx(int i)
 }
 
 const char *
-x86_get_regname_sse(int i)
+orc_x86_get_regname_sse(int i)
 {
   static const char *x86_regs[] = {
     "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
@@ -147,34 +137,34 @@ x86_get_regname_sse(int i)
 }
 
 void
-x86_emit_push (OrcCompiler *compiler, int size, int reg)
+orc_x86_emit_push (OrcCompiler *compiler, int size, int reg)
 {
 
   if (size == 1) {
     ORC_PROGRAM_ERROR(compiler, "bad size");
   } else if (size == 2) {
-    ORC_ASM_CODE(compiler,"  pushw %%%s\n", x86_get_regname_16(reg));
+    ORC_ASM_CODE(compiler,"  pushw %%%s\n", orc_x86_get_regname_16(reg));
     *compiler->codeptr++ = 0x66;
-    *compiler->codeptr++ = 0x50 + x86_get_regnum(reg);
+    *compiler->codeptr++ = 0x50 + orc_x86_get_regnum(reg);
   } else {
-    ORC_ASM_CODE(compiler,"  pushl %%%s\n", x86_get_regname(reg));
-    *compiler->codeptr++ = 0x50 + x86_get_regnum(reg);
+    ORC_ASM_CODE(compiler,"  pushl %%%s\n", orc_x86_get_regname(reg));
+    *compiler->codeptr++ = 0x50 + orc_x86_get_regnum(reg);
   }
 }
 
 void
-x86_emit_pop (OrcCompiler *compiler, int size, int reg)
+orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg)
 {
 
   if (size == 1) {
     ORC_PROGRAM_ERROR(compiler, "bad size");
   } else if (size == 2) {
-    ORC_ASM_CODE(compiler,"  popw %%%s\n", x86_get_regname_16(reg));
+    ORC_ASM_CODE(compiler,"  popw %%%s\n", orc_x86_get_regname_16(reg));
     *compiler->codeptr++ = 0x66;
-    *compiler->codeptr++ = 0x58 + x86_get_regnum(reg);
+    *compiler->codeptr++ = 0x58 + orc_x86_get_regnum(reg);
   } else {
-    ORC_ASM_CODE(compiler,"  popl %%%s\n", x86_get_regname(reg));
-    *compiler->codeptr++ = 0x58 + x86_get_regnum(reg);
+    ORC_ASM_CODE(compiler,"  popl %%%s\n", orc_x86_get_regname(reg));
+    *compiler->codeptr++ = 0x58 + orc_x86_get_regnum(reg);
   }
 }
 
@@ -182,9 +172,9 @@ x86_emit_pop (OrcCompiler *compiler, int size, int reg)
 #define X86_SIB(ss, ind, reg) ((((ss)&3)<<6)|(((ind)&7)<<3)|((reg)&7))
 
 void
-x86_emit_modrm_memoffset (OrcCompiler *compiler, int reg1, int offset, int reg2)
+orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int reg1, int offset, int reg2)
 {
-  if (offset == 0 && reg2 != x86_exec_ptr) {
+  if (offset == 0 && reg2 != compiler->exec_reg) {
     if (reg2 == X86_ESP) {
       *compiler->codeptr++ = X86_MODRM(0, 4, reg1);
       *compiler->codeptr++ = X86_SIB(0, 4, reg2);
@@ -210,17 +200,17 @@ x86_emit_modrm_memoffset (OrcCompiler *compiler, int reg1, int offset, int reg2)
 }
 
 void
-x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2)
+orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2)
 {
   *compiler->codeptr++ = X86_MODRM(3, reg1, reg2);
 }
 
 void
-x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3)
+orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3)
 {
   int rex = 0x40;
 
-  if (x86_64) {
+  if (compiler->is_64bit) {
     if (size >= 8) rex |= 0x08;
     if (reg1 & 8) rex |= 0x4;
     if (reg2 & 8) rex |= 0x2;
@@ -231,96 +221,96 @@ x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3)
 }
 
 void
-x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset,
+orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2)
 {
 
   switch (size) {
     case 1:
       ORC_ASM_CODE(compiler,"  movb %d(%%%s), %%%s\n", offset,
-          x86_get_regname_ptr(reg1),
-          x86_get_regname_8(reg2));
-      x86_emit_rex(compiler, size, reg2, 0, reg1);
+          orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname_8(reg2));
+      orc_x86_emit_rex(compiler, size, reg2, 0, reg1);
       *compiler->codeptr++ = 0x8a;
-      x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
+      orc_x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
       return;
     case 2:
-      ORC_ASM_CODE(compiler,"  movw %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-          x86_get_regname_16(reg2));
+      ORC_ASM_CODE(compiler,"  movw %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname_16(reg2));
       *compiler->codeptr++ = 0x66;
       break;
     case 4:
-      ORC_ASM_CODE(compiler,"  movl %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-          x86_get_regname(reg2));
+      ORC_ASM_CODE(compiler,"  movl %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname(reg2));
       break;
     case 8:
-      ORC_ASM_CODE(compiler,"  mov %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-          x86_get_regname_64(reg2));
+      ORC_ASM_CODE(compiler,"  mov %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname_64(reg2));
       break;
     default:
       ORC_PROGRAM_ERROR(compiler, "bad size");
       break;
   }
 
-  x86_emit_rex(compiler, size, reg2, 0, reg1);
+  orc_x86_emit_rex(compiler, size, reg2, 0, reg1);
   *compiler->codeptr++ = 0x8b;
-  x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
+  orc_x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
 }
 
 void
-x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset,
+orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2)
 {
   if (size == 4) {
-    ORC_ASM_CODE(compiler,"  movd %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-        x86_get_regname_mmx(reg2));
-    x86_emit_rex(compiler, 0, reg2, 0, reg1);
+    ORC_ASM_CODE(compiler,"  movd %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+        orc_x86_get_regname_mmx(reg2));
+    orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
     *compiler->codeptr++ = 0x0f;
     *compiler->codeptr++ = 0x6e;
   } else {
-    ORC_ASM_CODE(compiler,"  movq %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-        x86_get_regname_mmx(reg2));
-    x86_emit_rex(compiler, 0, reg2, 0, reg1);
+    ORC_ASM_CODE(compiler,"  movq %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+        orc_x86_get_regname_mmx(reg2));
+    orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
     *compiler->codeptr++ = 0x0f;
     *compiler->codeptr++ = 0x6f;
   }
-  x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
+  orc_x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
 }
 
 void
-x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
+orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2, int is_aligned)
 {
   switch (size) {
     case 4:
-      ORC_ASM_CODE(compiler,"  movd %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-          x86_get_regname_sse(reg2));
+      ORC_ASM_CODE(compiler,"  movd %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname_sse(reg2));
       *compiler->codeptr++ = 0x66;
-      x86_emit_rex(compiler, 0, reg2, 0, reg1);
+      orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
       *compiler->codeptr++ = 0x0f;
       *compiler->codeptr++ = 0x6e;
       break;
     case 8:
-      ORC_ASM_CODE(compiler,"  movq %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-          x86_get_regname_sse(reg2));
+      ORC_ASM_CODE(compiler,"  movq %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+          orc_x86_get_regname_sse(reg2));
       *compiler->codeptr++ = 0xf3;
-      x86_emit_rex(compiler, 0, reg2, 0, reg1);
+      orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
       *compiler->codeptr++ = 0x0f;
       *compiler->codeptr++ = 0x7e;
       break;
     case 16:
       if (is_aligned) {
-        ORC_ASM_CODE(compiler,"  movdqa %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-            x86_get_regname_sse(reg2));
+        ORC_ASM_CODE(compiler,"  movdqa %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+            orc_x86_get_regname_sse(reg2));
         *compiler->codeptr++ = 0x66;
-        x86_emit_rex(compiler, 0, reg2, 0, reg1);
+        orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
         *compiler->codeptr++ = 0x0f;
         *compiler->codeptr++ = 0x6f;
       } else {
-        ORC_ASM_CODE(compiler,"  movdqu %d(%%%s), %%%s\n", offset, x86_get_regname_ptr(reg1),
-            x86_get_regname_sse(reg2));
+        ORC_ASM_CODE(compiler,"  movdqu %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
+            orc_x86_get_regname_sse(reg2));
         *compiler->codeptr++ = 0xf3;
-        x86_emit_rex(compiler, 0, reg2, 0, reg1);
+        orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
         *compiler->codeptr++ = 0x0f;
         *compiler->codeptr++ = 0x6f;
       }
@@ -329,107 +319,107 @@ x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
       ORC_PROGRAM_ERROR(compiler, "bad size");
       break;
   }
-  x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
+  orc_x86_emit_modrm_memoffset (compiler, reg2, offset, reg1);
 }
 
 void
-x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2)
 {
   switch (size) {
     case 1:
-      ORC_ASM_CODE(compiler,"  movb %%%s, %d(%%%s)\n", x86_get_regname_8(reg1), offset,
-          x86_get_regname_ptr(reg2));
-      x86_emit_rex(compiler, size, reg1, 0, reg2);
+      ORC_ASM_CODE(compiler,"  movb %%%s, %d(%%%s)\n", orc_x86_get_regname_8(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
+      orc_x86_emit_rex(compiler, size, reg1, 0, reg2);
       *compiler->codeptr++ = 0x88;
-      x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
+      orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
       return;
     case 2:
-      ORC_ASM_CODE(compiler,"  movw %%%s, %d(%%%s)\n", x86_get_regname_16(reg1), offset,
-          x86_get_regname_ptr(reg2));
+      ORC_ASM_CODE(compiler,"  movw %%%s, %d(%%%s)\n", orc_x86_get_regname_16(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
       *compiler->codeptr++ = 0x66;
       break;
     case 4:
-      ORC_ASM_CODE(compiler,"  movl %%%s, %d(%%%s)\n", x86_get_regname(reg1), offset,
-          x86_get_regname_ptr(reg2));
+      ORC_ASM_CODE(compiler,"  movl %%%s, %d(%%%s)\n", orc_x86_get_regname(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
       break;
     case 8:
-      ORC_ASM_CODE(compiler,"  mov %%%s, %d(%%%s)\n", x86_get_regname(reg1), offset,
-          x86_get_regname_ptr(reg2));
+      ORC_ASM_CODE(compiler,"  mov %%%s, %d(%%%s)\n", orc_x86_get_regname(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
       break;
     default:
       ORC_PROGRAM_ERROR(compiler, "bad size");
       break;
   }
 
-  x86_emit_rex(compiler, size, reg1, 0, reg2);
+  orc_x86_emit_rex(compiler, size, reg1, 0, reg2);
   *compiler->codeptr++ = 0x89;
-  x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
+  orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
 }
 
 void
-x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2)
 {
-  x86_emit_rex(compiler, 0, reg1, 0, reg2);
+  orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
   if (size == 4) {
-    ORC_ASM_CODE(compiler,"  movd %%%s, %d(%%%s)\n", x86_get_regname_mmx(reg1), offset,
-        x86_get_regname_ptr(reg2));
+    ORC_ASM_CODE(compiler,"  movd %%%s, %d(%%%s)\n", orc_x86_get_regname_mmx(reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg2));
     *compiler->codeptr++ = 0x0f;
     *compiler->codeptr++ = 0x7e;
   } else if (size == 8) {
-    ORC_ASM_CODE(compiler,"  movq %%%s, %d(%%%s)\n", x86_get_regname_mmx(reg1), offset,
-        x86_get_regname_ptr(reg2));
+    ORC_ASM_CODE(compiler,"  movq %%%s, %d(%%%s)\n", orc_x86_get_regname_mmx(reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg2));
     *compiler->codeptr++ = 0x0f;
     *compiler->codeptr++ = 0x7f;
   }
 
-  x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
+  orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
 }
 
 void
-x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2, int aligned, int uncached)
 {
   switch (size) {
     case 4:
-      ORC_ASM_CODE(compiler,"  movd %%%s, %d(%%%s)\n", x86_get_regname_sse(reg1), offset,
-          x86_get_regname_ptr(reg2));
+      ORC_ASM_CODE(compiler,"  movd %%%s, %d(%%%s)\n", orc_x86_get_regname_sse(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
       *compiler->codeptr++ = 0x66;
-      x86_emit_rex(compiler, 0, reg1, 0, reg2);
+      orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
       *compiler->codeptr++ = 0x0f;
       *compiler->codeptr++ = 0x7e;
       break;
     case 8:
-      ORC_ASM_CODE(compiler,"  movq %%%s, %d(%%%s)\n", x86_get_regname_sse(reg1), offset,
-          x86_get_regname_ptr(reg2));
+      ORC_ASM_CODE(compiler,"  movq %%%s, %d(%%%s)\n", orc_x86_get_regname_sse(reg1), offset,
+          orc_x86_get_regname_ptr(compiler, reg2));
       *compiler->codeptr++ = 0x66;
-      x86_emit_rex(compiler, 0, reg1, 0, reg2);
+      orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
       *compiler->codeptr++ = 0x0f;
       *compiler->codeptr++ = 0xd6;
       break;
     case 16:
       if (aligned) {
         if (uncached) {
-          ORC_ASM_CODE(compiler,"  movntdq %%%s, %d(%%%s)\n", x86_get_regname_sse(reg1), offset,
-              x86_get_regname_ptr(reg2));
+          ORC_ASM_CODE(compiler,"  movntdq %%%s, %d(%%%s)\n", orc_x86_get_regname_sse(reg1), offset,
+              orc_x86_get_regname_ptr(compiler, reg2));
           *compiler->codeptr++ = 0x66;
-          x86_emit_rex(compiler, 0, reg1, 0, reg2);
+          orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
           *compiler->codeptr++ = 0x0f;
           *compiler->codeptr++ = 0xe7;
         } else {
-          ORC_ASM_CODE(compiler,"  movdqa %%%s, %d(%%%s)\n", x86_get_regname_sse(reg1), offset,
-              x86_get_regname_ptr(reg2));
+          ORC_ASM_CODE(compiler,"  movdqa %%%s, %d(%%%s)\n", orc_x86_get_regname_sse(reg1), offset,
+              orc_x86_get_regname_ptr(compiler, reg2));
           *compiler->codeptr++ = 0x66;
-          x86_emit_rex(compiler, 0, reg1, 0, reg2);
+          orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
           *compiler->codeptr++ = 0x0f;
           *compiler->codeptr++ = 0x7f;
         }
       } else {
-        ORC_ASM_CODE(compiler,"  movdqu %%%s, %d(%%%s)\n", x86_get_regname_sse(reg1), offset,
-            x86_get_regname_ptr(reg2));
+        ORC_ASM_CODE(compiler,"  movdqu %%%s, %d(%%%s)\n", orc_x86_get_regname_sse(reg1), offset,
+            orc_x86_get_regname_ptr(compiler, reg2));
         *compiler->codeptr++ = 0xf3;
-        x86_emit_rex(compiler, 0, reg1, 0, reg2);
+        orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
         *compiler->codeptr++ = 0x0f;
         *compiler->codeptr++ = 0x7f;
       }
@@ -439,23 +429,23 @@ x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offse
       break;
   }
 
-  x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
+  orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg2);
 }
 
 void
-x86_emit_mov_imm_reg (OrcCompiler *compiler, int size, int value, int reg1)
+orc_x86_emit_mov_imm_reg (OrcCompiler *compiler, int size, int value, int reg1)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  movw $%d, %%%s\n", value, x86_get_regname_16(reg1));
-    x86_emit_rex(compiler, size, reg1, 0, 0);
+    ORC_ASM_CODE(compiler,"  movw $%d, %%%s\n", value, orc_x86_get_regname_16(reg1));
+    orc_x86_emit_rex(compiler, size, reg1, 0, 0);
     *compiler->codeptr++ = 0x66;
-    *compiler->codeptr++ = 0xb8 + x86_get_regnum(reg1);
+    *compiler->codeptr++ = 0xb8 + orc_x86_get_regnum(reg1);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  movl $%d, %%%s\n", value, x86_get_regname(reg1));
-    x86_emit_rex(compiler, size, reg1, 0, 0);
-    *compiler->codeptr++ = 0xb8 + x86_get_regnum(reg1);
+    ORC_ASM_CODE(compiler,"  movl $%d, %%%s\n", value, orc_x86_get_regname(reg1));
+    orc_x86_emit_rex(compiler, size, reg1, 0, 0);
+    *compiler->codeptr++ = 0xb8 + orc_x86_get_regnum(reg1);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     *compiler->codeptr++ = ((value>>16) & 0xff);
@@ -466,160 +456,160 @@ x86_emit_mov_imm_reg (OrcCompiler *compiler, int size, int value, int reg1)
 
 }
 
-void x86_emit_mov_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
+void orc_x86_emit_mov_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  movw %%%s, %%%s\n", x86_get_regname_16(reg1),
-        x86_get_regname_16(reg2));
+    ORC_ASM_CODE(compiler,"  movw %%%s, %%%s\n", orc_x86_get_regname_16(reg1),
+        orc_x86_get_regname_16(reg2));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  movl %%%s, %%%s\n", x86_get_regname(reg1),
-        x86_get_regname(reg2));
+    ORC_ASM_CODE(compiler,"  movl %%%s, %%%s\n", orc_x86_get_regname(reg1),
+        orc_x86_get_regname(reg2));
   } else {
-    ORC_ASM_CODE(compiler,"  mov %%%s, %%%s\n", x86_get_regname_64(reg1),
-        x86_get_regname_64(reg2));
+    ORC_ASM_CODE(compiler,"  mov %%%s, %%%s\n", orc_x86_get_regname_64(reg1),
+        orc_x86_get_regname_64(reg2));
   }
 
-  x86_emit_rex(compiler, size, reg2, 0, reg1);
+  orc_x86_emit_rex(compiler, size, reg2, 0, reg1);
   *compiler->codeptr++ = 0x89;
-  x86_emit_modrm_reg (compiler, reg2, reg1);
+  orc_x86_emit_modrm_reg (compiler, reg2, reg1);
 }
 
-void x86_emit_mov_sse_reg_reg (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_sse_reg_reg (OrcCompiler *compiler, int reg1, int reg2)
 {
-  ORC_ASM_CODE(compiler,"  movdqa %%%s, %%%s\n", x86_get_regname_sse(reg1),
-        x86_get_regname_sse(reg2));
+  ORC_ASM_CODE(compiler,"  movdqa %%%s, %%%s\n", orc_x86_get_regname_sse(reg1),
+        orc_x86_get_regname_sse(reg2));
 
   *compiler->codeptr++ = 0x66;
-  x86_emit_rex(compiler, 0, reg1, 0, reg2);
+  orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x6f;
-  x86_emit_modrm_reg (compiler, reg1, reg2);
+  orc_x86_emit_modrm_reg (compiler, reg1, reg2);
 }
 
-void x86_emit_mov_mmx_reg_reg (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_mmx_reg_reg (OrcCompiler *compiler, int reg1, int reg2)
 {
-  ORC_ASM_CODE(compiler,"  movq %%%s, %%%s\n", x86_get_regname_mmx(reg1),
-        x86_get_regname_mmx(reg2));
+  ORC_ASM_CODE(compiler,"  movq %%%s, %%%s\n", orc_x86_get_regname_mmx(reg1),
+        orc_x86_get_regname_mmx(reg2));
 
-  x86_emit_rex(compiler, 0, reg1, 0, reg2);
+  orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x6f;
-  x86_emit_modrm_reg (compiler, reg1, reg2);
+  orc_x86_emit_modrm_reg (compiler, reg1, reg2);
 }
 
-void x86_emit_mov_reg_mmx (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_reg_mmx (OrcCompiler *compiler, int reg1, int reg2)
 {
   /* FIXME */
-  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", x86_get_regname(reg1),
-      x86_get_regname_mmx(reg2));
-  x86_emit_rex(compiler, 0, reg1, 0, reg2);
+  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", orc_x86_get_regname(reg1),
+      orc_x86_get_regname_mmx(reg2));
+  orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x6e;
-  x86_emit_modrm_reg (compiler, reg1, reg2);
+  orc_x86_emit_modrm_reg (compiler, reg1, reg2);
 }
 
-void x86_emit_mov_mmx_reg (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_mmx_reg (OrcCompiler *compiler, int reg1, int reg2)
 {
   /* FIXME */
-  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", x86_get_regname_mmx(reg1),
-      x86_get_regname(reg2));
-  x86_emit_rex(compiler, 0, reg2, 0, reg1);
+  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", orc_x86_get_regname_mmx(reg1),
+      orc_x86_get_regname(reg2));
+  orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x7e;
-  x86_emit_modrm_reg (compiler, reg2, reg1);
+  orc_x86_emit_modrm_reg (compiler, reg2, reg1);
 }
 
-void x86_emit_mov_reg_sse (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_reg_sse (OrcCompiler *compiler, int reg1, int reg2)
 {
-  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", x86_get_regname(reg1),
-      x86_get_regname_sse(reg2));
+  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", orc_x86_get_regname(reg1),
+      orc_x86_get_regname_sse(reg2));
   *compiler->codeptr++ = 0x66;
-  x86_emit_rex(compiler, 0, reg2, 0, reg1);
+  orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x6e;
-  x86_emit_modrm_reg (compiler, reg1, reg2);
+  orc_x86_emit_modrm_reg (compiler, reg1, reg2);
 }
 
-void x86_emit_mov_sse_reg (OrcCompiler *compiler, int reg1, int reg2)
+void orc_x86_emit_mov_sse_reg (OrcCompiler *compiler, int reg1, int reg2)
 {
-  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", x86_get_regname_sse(reg1),
-      x86_get_regname(reg2));
+  ORC_ASM_CODE(compiler,"  movd %%%s, %%%s\n", orc_x86_get_regname_sse(reg1),
+      orc_x86_get_regname(reg2));
   *compiler->codeptr++ = 0x66;
-  x86_emit_rex(compiler, 0, reg1, 0, reg2);
+  orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
   *compiler->codeptr++ = 0x0f;
   *compiler->codeptr++ = 0x7e;
-  x86_emit_modrm_reg (compiler, reg2, reg1);
+  orc_x86_emit_modrm_reg (compiler, reg2, reg1);
 }
 
 void
-x86_emit_test_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
+orc_x86_emit_test_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  testw %%%s, %%%s\n", x86_get_regname_16(reg1),
-        x86_get_regname_16(reg2));
+    ORC_ASM_CODE(compiler,"  testw %%%s, %%%s\n", orc_x86_get_regname_16(reg1),
+        orc_x86_get_regname_16(reg2));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  testl %%%s, %%%s\n", x86_get_regname(reg1),
-        x86_get_regname(reg2));
+    ORC_ASM_CODE(compiler,"  testl %%%s, %%%s\n", orc_x86_get_regname(reg1),
+        orc_x86_get_regname(reg2));
   } else {
-    ORC_ASM_CODE(compiler,"  test %%%s, %%%s\n", x86_get_regname(reg1),
-        x86_get_regname(reg2));
+    ORC_ASM_CODE(compiler,"  test %%%s, %%%s\n", orc_x86_get_regname(reg1),
+        orc_x86_get_regname(reg2));
   }
 
-  x86_emit_rex(compiler, size, reg2, 0, reg1);
+  orc_x86_emit_rex(compiler, size, reg2, 0, reg1);
   *compiler->codeptr++ = 0x85;
-  x86_emit_modrm_reg (compiler, reg2, reg1);
+  orc_x86_emit_modrm_reg (compiler, reg2, reg1);
 }
 
 void
-x86_emit_sar_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
+orc_x86_emit_sar_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  sarw $%d, %%%s\n", value, x86_get_regname_16(reg));
+    ORC_ASM_CODE(compiler,"  sarw $%d, %%%s\n", value, orc_x86_get_regname_16(reg));
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  sarl $%d, %%%s\n", value, x86_get_regname(reg));
+    ORC_ASM_CODE(compiler,"  sarl $%d, %%%s\n", value, orc_x86_get_regname(reg));
   } else {
-    ORC_ASM_CODE(compiler,"  sar $%d, %%%s\n", value, x86_get_regname_64(reg));
+    ORC_ASM_CODE(compiler,"  sar $%d, %%%s\n", value, orc_x86_get_regname_64(reg));
   }
 
-  x86_emit_rex(compiler, size, reg, 0, 0);
+  orc_x86_emit_rex(compiler, size, reg, 0, 0);
   if (value == 1) {
     *compiler->codeptr++ = 0xd1;
-    x86_emit_modrm_reg (compiler, reg, 7);
+    orc_x86_emit_modrm_reg (compiler, reg, 7);
   } else {
     *compiler->codeptr++ = 0xc1;
-    x86_emit_modrm_reg (compiler, reg, 7);
+    orc_x86_emit_modrm_reg (compiler, reg, 7);
     *compiler->codeptr++ = value;
   }
 }
 
 void
-x86_emit_and_imm_memoffset (OrcCompiler *compiler, int size, int value,
+orc_x86_emit_and_imm_memoffset (OrcCompiler *compiler, int size, int value,
     int offset, int reg)
 {
   if (size == 2) {
     ORC_ASM_CODE(compiler,"  andw $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
     ORC_ASM_CODE(compiler,"  andl $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   } else {
     ORC_ASM_CODE(compiler,"  and $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   if (value >= -128 && value < 128) {
     *compiler->codeptr++ = 0x83;
     /* FIXME */
-    x86_emit_modrm_memoffset (compiler, 0, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 0, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
   } else {
     *compiler->codeptr++ = 0x81;
     /* FIXME */
-    x86_emit_modrm_memoffset (compiler, 0, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 0, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     if (size == 4) {
@@ -630,25 +620,25 @@ x86_emit_and_imm_memoffset (OrcCompiler *compiler, int size, int value,
 }
 
 void
-x86_emit_and_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
+orc_x86_emit_and_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  andw $%d, %%%s\n", value, x86_get_regname_16(reg));
+    ORC_ASM_CODE(compiler,"  andw $%d, %%%s\n", value, orc_x86_get_regname_16(reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  andl $%d, %%%s\n", value, x86_get_regname(reg));
+    ORC_ASM_CODE(compiler,"  andl $%d, %%%s\n", value, orc_x86_get_regname(reg));
   } else {
-    ORC_ASM_CODE(compiler,"  and $%d, %%%s\n", value, x86_get_regname_64(reg));
+    ORC_ASM_CODE(compiler,"  and $%d, %%%s\n", value, orc_x86_get_regname_64(reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   if (value >= -128 && value < 128) {
     *compiler->codeptr++ = 0x83;
-    x86_emit_modrm_reg (compiler, reg, 4);
+    orc_x86_emit_modrm_reg (compiler, reg, 4);
     *compiler->codeptr++ = (value & 0xff);
   } else {
     *compiler->codeptr++ = 0x81;
-    x86_emit_modrm_reg (compiler, reg, 4);
+    orc_x86_emit_modrm_reg (compiler, reg, 4);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     if (size == 4) {
@@ -659,29 +649,29 @@ x86_emit_and_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
 }
 
 void
-x86_emit_add_imm_memoffset (OrcCompiler *compiler, int size, int value,
+orc_x86_emit_add_imm_memoffset (OrcCompiler *compiler, int size, int value,
     int offset, int reg)
 {
   if (size == 2) {
     ORC_ASM_CODE(compiler,"  addw $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
     ORC_ASM_CODE(compiler,"  addl $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   } else {
     ORC_ASM_CODE(compiler,"  add $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   if (value >= -128 && value < 128) {
     *compiler->codeptr++ = 0x83;
-    x86_emit_modrm_memoffset (compiler, 0, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 0, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
   } else {
     *compiler->codeptr++ = 0x81;
-    x86_emit_modrm_memoffset (compiler, 0, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 0, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     if (size == 4) {
@@ -692,49 +682,49 @@ x86_emit_add_imm_memoffset (OrcCompiler *compiler, int size, int value,
 }
 
 void
-x86_emit_add_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
+orc_x86_emit_add_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
     int offset, int reg)
 {
   if (size == 2) {
     ORC_ASM_CODE(compiler,"  addw %%%s, %d(%%%s)\n",
-        x86_get_regname_ptr(reg1), offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
     ORC_ASM_CODE(compiler,"  addl %%%s, %d(%%%s)\n",
-        x86_get_regname_ptr(reg1), offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
   } else {
     ORC_ASM_CODE(compiler,"  add %%%s, %d(%%%s)\n",
-        x86_get_regname_ptr(reg1), offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   *compiler->codeptr++ = 0x01;
-  x86_emit_modrm_memoffset (compiler, reg1, offset, reg);
+  orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg);
 }
 
 void
-x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
+orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  addw $%d, %%%s\n", value, x86_get_regname_16(reg));
+    ORC_ASM_CODE(compiler,"  addw $%d, %%%s\n", value, orc_x86_get_regname_16(reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  addl $%d, %%%s\n", value, x86_get_regname(reg));
+    ORC_ASM_CODE(compiler,"  addl $%d, %%%s\n", value, orc_x86_get_regname(reg));
   } else {
-    ORC_ASM_CODE(compiler,"  add $%d, %%%s\n", value, x86_get_regname_64(reg));
+    ORC_ASM_CODE(compiler,"  add $%d, %%%s\n", value, orc_x86_get_regname_64(reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   if (value >= -128 && value < 128) {
     *compiler->codeptr++ = 0x83;
-    x86_emit_modrm_reg (compiler, reg, 0);
+    orc_x86_emit_modrm_reg (compiler, reg, 0);
     *compiler->codeptr++ = (value & 0xff);
   } else {
     *compiler->codeptr++ = 0x81;
-    x86_emit_modrm_reg (compiler, reg, 0);
+    orc_x86_emit_modrm_reg (compiler, reg, 0);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     if (size == 4) {
@@ -745,94 +735,94 @@ x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg)
 }
 
 void
-x86_emit_sub_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
+orc_x86_emit_sub_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  subw %%%s, %%%s\n", x86_get_regname_16(reg1),
-        x86_get_regname_16(reg2));
+    ORC_ASM_CODE(compiler,"  subw %%%s, %%%s\n", orc_x86_get_regname_16(reg1),
+        orc_x86_get_regname_16(reg2));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  subl %%%s, %%%s\n", x86_get_regname(reg1),
-        x86_get_regname(reg2));
+    ORC_ASM_CODE(compiler,"  subl %%%s, %%%s\n", orc_x86_get_regname(reg1),
+        orc_x86_get_regname(reg2));
   } else {
-    ORC_ASM_CODE(compiler,"  sub %%%s, %%%s\n", x86_get_regname_64(reg1),
-        x86_get_regname_64(reg2));
+    ORC_ASM_CODE(compiler,"  sub %%%s, %%%s\n", orc_x86_get_regname_64(reg1),
+        orc_x86_get_regname_64(reg2));
   }
 
-  x86_emit_rex(compiler, size, reg2, 0, reg1);
+  orc_x86_emit_rex(compiler, size, reg2, 0, reg1);
   *compiler->codeptr++ = 0x29;
-  x86_emit_modrm_reg (compiler, reg2, reg1);
+  orc_x86_emit_modrm_reg (compiler, reg2, reg1);
 }
 
 void
-x86_emit_sub_memoffset_reg (OrcCompiler *compiler, int size,
+orc_x86_emit_sub_memoffset_reg (OrcCompiler *compiler, int size,
     int offset, int reg, int destreg)
 {
   if (size == 2) {
     ORC_ASM_CODE(compiler,"  subw %d(%%%s), %%%s\n", offset,
-        x86_get_regname_ptr(reg),
-        x86_get_regname_16(destreg));
+        orc_x86_get_regname_ptr(compiler, reg),
+        orc_x86_get_regname_16(destreg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
     ORC_ASM_CODE(compiler,"  subl %d(%%%s), %%%s\n", offset,
-        x86_get_regname_ptr(reg),
-        x86_get_regname(destreg));
+        orc_x86_get_regname_ptr(compiler, reg),
+        orc_x86_get_regname(destreg));
   } else {
     ORC_ASM_CODE(compiler,"  sub %d(%%%s), %%%s\n", offset,
-        x86_get_regname_ptr(reg),
-        x86_get_regname_64(destreg));
+        orc_x86_get_regname_ptr(compiler, reg),
+        orc_x86_get_regname_64(destreg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   *compiler->codeptr++ = 0x2b;
-  x86_emit_modrm_memoffset (compiler, destreg, offset, reg);
+  orc_x86_emit_modrm_memoffset (compiler, destreg, offset, reg);
 }
 
 void
-x86_emit_cmp_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
+orc_x86_emit_cmp_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
     int offset, int reg)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  cmpw %%%s, %d(%%%s)\n", x86_get_regname_16(reg1), offset,
-        x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  cmpw %%%s, %d(%%%s)\n", orc_x86_get_regname_16(reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  cmpl %%%s, %d(%%%s)\n", x86_get_regname(reg1), offset,
-        x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  cmpl %%%s, %d(%%%s)\n", orc_x86_get_regname(reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
   } else {
-    ORC_ASM_CODE(compiler,"  cmp %%%s, %d(%%%s)\n", x86_get_regname_64(reg1), offset,
-        x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  cmp %%%s, %d(%%%s)\n", orc_x86_get_regname_64(reg1), offset,
+        orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   *compiler->codeptr++ = 0x39;
-  x86_emit_modrm_memoffset (compiler, reg1, offset, reg);
+  orc_x86_emit_modrm_memoffset (compiler, reg1, offset, reg);
 }
 
 void
-x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
+orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
     int offset, int reg)
 {
   if (size == 2) {
     ORC_ASM_CODE(compiler,"  cmpw $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
     ORC_ASM_CODE(compiler,"  cmpl $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   } else {
     ORC_ASM_CODE(compiler,"  cmp $%d, %d(%%%s)\n", value, offset,
-        x86_get_regname_ptr(reg));
+        orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   if (value >= -128 && value < 128) {
     *compiler->codeptr++ = 0x83;
-    x86_emit_modrm_memoffset (compiler, 7, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 7, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
   } else {
     *compiler->codeptr++ = 0x81;
-    x86_emit_modrm_memoffset (compiler, 7, offset, reg);
+    orc_x86_emit_modrm_memoffset (compiler, 7, offset, reg);
     *compiler->codeptr++ = (value & 0xff);
     *compiler->codeptr++ = ((value>>8) & 0xff);
     if (size == 4) {
@@ -843,26 +833,26 @@ x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
 }
 
 void
-x86_emit_dec_memoffset (OrcCompiler *compiler, int size,
+orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size,
     int offset, int reg)
 {
   if (size == 2) {
-    ORC_ASM_CODE(compiler,"  decw %d(%%%s)\n", offset, x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  decw %d(%%%s)\n", offset, orc_x86_get_regname_ptr(compiler, reg));
     *compiler->codeptr++ = 0x66;
   } else if (size == 4) {
-    ORC_ASM_CODE(compiler,"  decl %d(%%%s)\n", offset, x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  decl %d(%%%s)\n", offset, orc_x86_get_regname_ptr(compiler, reg));
   } else {
-    ORC_ASM_CODE(compiler,"  dec %d(%%%s)\n", offset, x86_get_regname_ptr(reg));
+    ORC_ASM_CODE(compiler,"  dec %d(%%%s)\n", offset, orc_x86_get_regname_ptr(compiler, reg));
   }
 
-  x86_emit_rex(compiler, size, 0, 0, reg);
+  orc_x86_emit_rex(compiler, size, 0, 0, reg);
   *compiler->codeptr++ = 0xff;
-  x86_emit_modrm_memoffset (compiler, 1, offset, reg);
+  orc_x86_emit_modrm_memoffset (compiler, 1, offset, reg);
 }
 
-void x86_emit_ret (OrcCompiler *compiler)
+void orc_x86_emit_ret (OrcCompiler *compiler)
 {
-  if (x86_64) {
+  if (compiler->is_64bit) {
     ORC_ASM_CODE(compiler,"  retq\n");
   } else {
     ORC_ASM_CODE(compiler,"  ret\n");
@@ -870,7 +860,7 @@ void x86_emit_ret (OrcCompiler *compiler)
   *compiler->codeptr++ = 0xc3;
 }
 
-void x86_emit_emms (OrcCompiler *compiler)
+void orc_x86_emit_emms (OrcCompiler *compiler)
 {
   ORC_ASM_CODE(compiler,"  emms\n");
   *compiler->codeptr++ = 0x0f;
@@ -892,7 +882,7 @@ x86_add_label (OrcCompiler *compiler, unsigned char *ptr, int label)
   compiler->labels[label] = ptr;
 }
 
-void x86_emit_jmp (OrcCompiler *compiler, int label)
+void orc_x86_emit_jmp (OrcCompiler *compiler, int label)
 {
   ORC_ASM_CODE(compiler,"  jmp %d%c\n", label,
       (compiler->labels[label]!=NULL) ? 'b' : 'f');
@@ -911,7 +901,7 @@ void x86_emit_jmp (OrcCompiler *compiler, int label)
   }
 }
 
-void x86_emit_jle (OrcCompiler *compiler, int label)
+void orc_x86_emit_jle (OrcCompiler *compiler, int label)
 {
   ORC_ASM_CODE(compiler,"  jle %d%c\n", label,
       (compiler->labels[label]!=NULL) ? 'b' : 'f');
@@ -931,7 +921,7 @@ void x86_emit_jle (OrcCompiler *compiler, int label)
   }
 }
 
-void x86_emit_je (OrcCompiler *compiler, int label)
+void orc_x86_emit_je (OrcCompiler *compiler, int label)
 {
   ORC_ASM_CODE(compiler,"  je %d%c\n", label,
       (compiler->labels[label]!=NULL) ? 'b' : 'f');
@@ -951,7 +941,7 @@ void x86_emit_je (OrcCompiler *compiler, int label)
   }
 }
 
-void x86_emit_jne (OrcCompiler *compiler, int label)
+void orc_x86_emit_jne (OrcCompiler *compiler, int label)
 {
   ORC_ASM_CODE(compiler,"  jne %d%c\n", label,
       (compiler->labels[label]!=NULL) ? 'b' : 'f');
@@ -971,7 +961,7 @@ void x86_emit_jne (OrcCompiler *compiler, int label)
   }
 }
 
-void x86_emit_label (OrcCompiler *compiler, int label)
+void orc_x86_emit_label (OrcCompiler *compiler, int label)
 {
   ORC_ASM_CODE(compiler,"%d:\n", label);
 
@@ -1006,62 +996,62 @@ x86_do_fixups (OrcCompiler *compiler)
 }
 
 void
-x86_emit_prologue (OrcCompiler *compiler)
+orc_x86_emit_prologue (OrcCompiler *compiler)
 {
   orc_compiler_append_code(compiler,".global %s\n", compiler->program->name);
   orc_compiler_append_code(compiler,".p2align 4\n");
   orc_compiler_append_code(compiler,"%s:\n", compiler->program->name);
-  if (x86_64) {
+  if (compiler->is_64bit) {
     int i;
     for(i=0;i<16;i++){
       if (compiler->used_regs[ORC_GP_REG_BASE+i] &&
           compiler->save_regs[ORC_GP_REG_BASE+i]) {
-        x86_emit_push (compiler, 8, ORC_GP_REG_BASE+i);
+        orc_x86_emit_push (compiler, 8, ORC_GP_REG_BASE+i);
       }
     }
   } else {
-    x86_emit_push (compiler, 4, X86_EBP);
-    x86_emit_mov_memoffset_reg (compiler, 4, 8, X86_ESP, X86_EBP);
+    orc_x86_emit_push (compiler, 4, X86_EBP);
+    orc_x86_emit_mov_memoffset_reg (compiler, 4, 8, X86_ESP, X86_EBP);
     if (compiler->used_regs[X86_EDI]) {
-      x86_emit_push (compiler, 4, X86_EDI);
+      orc_x86_emit_push (compiler, 4, X86_EDI);
     }
     if (compiler->used_regs[X86_ESI]) {
-      x86_emit_push (compiler, 4, X86_ESI);
+      orc_x86_emit_push (compiler, 4, X86_ESI);
     }
     if (compiler->used_regs[X86_EBX]) {
-      x86_emit_push (compiler, 4, X86_EBX);
+      orc_x86_emit_push (compiler, 4, X86_EBX);
     }
   }
 }
 
 void
-x86_emit_epilogue (OrcCompiler *compiler)
+orc_x86_emit_epilogue (OrcCompiler *compiler)
 {
-  if (x86_64) {
+  if (compiler->is_64bit) {
     int i;
     for(i=15;i>=0;i--){
       if (compiler->used_regs[ORC_GP_REG_BASE+i] &&
           compiler->save_regs[ORC_GP_REG_BASE+i]) {
-        x86_emit_push (compiler, 8, ORC_GP_REG_BASE+i);
+        orc_x86_emit_push (compiler, 8, ORC_GP_REG_BASE+i);
       }
     }
   } else {
     if (compiler->used_regs[X86_EBX]) {
-      x86_emit_pop (compiler, 4, X86_EBX);
+      orc_x86_emit_pop (compiler, 4, X86_EBX);
     }
     if (compiler->used_regs[X86_ESI]) {
-      x86_emit_pop (compiler, 4, X86_ESI);
+      orc_x86_emit_pop (compiler, 4, X86_ESI);
     }
     if (compiler->used_regs[X86_EDI]) {
-      x86_emit_pop (compiler, 4, X86_EDI);
+      orc_x86_emit_pop (compiler, 4, X86_EDI);
     }
-    x86_emit_pop (compiler, 4, X86_EBP);
+    orc_x86_emit_pop (compiler, 4, X86_EBP);
   }
-  x86_emit_ret (compiler);
+  orc_x86_emit_ret (compiler);
 }
 
 void
-x86_emit_align (OrcCompiler *compiler)
+orc_x86_emit_align (OrcCompiler *compiler)
 {
   int diff;
   int align_shift = 4;
@@ -1085,29 +1075,29 @@ x86_test (OrcCompiler *compiler)
   for(size=2;size<=4;size+=2) {
     for(i=0;i<8;i++){
       reg = ORC_GP_REG_BASE + i;
-      x86_emit_push (compiler, size, reg);
-      x86_emit_pop (compiler, size, reg);
-      x86_emit_mov_imm_reg (compiler, size, 0, reg);
-      x86_emit_mov_imm_reg (compiler, size, 1, reg);
-      x86_emit_mov_imm_reg (compiler, size, 256, reg);
-      x86_emit_dec_memoffset (compiler, size, 0, reg);
-      x86_emit_dec_memoffset (compiler, size, 1, reg);
-      x86_emit_dec_memoffset (compiler, size, 256, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 1, 0, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 1, 1, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 1, 256, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 256, 0, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 256, 1, reg);
-      x86_emit_add_imm_memoffset (compiler, size, 256, 256, reg);
+      orc_x86_emit_push (compiler, size, reg);
+      orc_x86_emit_pop (compiler, size, reg);
+      orc_x86_emit_mov_imm_reg (compiler, size, 0, reg);
+      orc_x86_emit_mov_imm_reg (compiler, size, 1, reg);
+      orc_x86_emit_mov_imm_reg (compiler, size, 256, reg);
+      orc_x86_emit_dec_memoffset (compiler, size, 0, reg);
+      orc_x86_emit_dec_memoffset (compiler, size, 1, reg);
+      orc_x86_emit_dec_memoffset (compiler, size, 256, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 1, 0, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 1, 1, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 1, 256, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 256, 0, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 256, 1, reg);
+      orc_x86_emit_add_imm_memoffset (compiler, size, 256, 256, reg);
       for(j=0;j<8;j++){
         int reg2 = ORC_GP_REG_BASE + j;
-        x86_emit_mov_reg_reg (compiler, size, reg, reg2);
-        x86_emit_mov_memoffset_reg (compiler, size, 0, reg, reg2);
-        x86_emit_mov_memoffset_reg (compiler, size, 1, reg, reg2);
-        x86_emit_mov_memoffset_reg (compiler, size, 256, reg, reg2);
-        x86_emit_mov_reg_memoffset (compiler, size, reg, 0, reg2);
-        x86_emit_mov_reg_memoffset (compiler, size, reg, 1, reg2);
-        x86_emit_mov_reg_memoffset (compiler, size, reg, 256, reg2);
+        orc_x86_emit_mov_reg_reg (compiler, size, reg, reg2);
+        orc_x86_emit_mov_memoffset_reg (compiler, size, 0, reg, reg2);
+        orc_x86_emit_mov_memoffset_reg (compiler, size, 1, reg, reg2);
+        orc_x86_emit_mov_memoffset_reg (compiler, size, 256, reg, reg2);
+        orc_x86_emit_mov_reg_memoffset (compiler, size, reg, 0, reg2);
+        orc_x86_emit_mov_reg_memoffset (compiler, size, reg, 1, reg2);
+        orc_x86_emit_mov_reg_memoffset (compiler, size, reg, 256, reg2);
       }
     }
   }
index 5b3df04..25b476e 100644 (file)
--- a/orc/x86.h
+++ b/orc/x86.h
@@ -4,77 +4,77 @@
 
 #include <unistd.h>
 
-extern int x86_64;
-extern int x86_exec_ptr;
-extern int x86_ptr_size;
-
-void x86_emit_push (OrcCompiler *compiler, int size, int reg);
-void x86_emit_pop (OrcCompiler *compiler, int size, int reg);
-void x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, int reg1, int reg2);
-void x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset,
+void orc_x86_emit_push (OrcCompiler *compiler, int size, int reg);
+void orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg);
+void orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, int reg1, int reg2);
+void orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2);
-void x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
+void orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2, int is_aligned);
-void x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg2);
-void x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+void orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg2);
+void orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2);
-void x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+void orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2, int aligned, int uncached);
-void x86_emit_mov_imm_reg (OrcCompiler *compiler, int size, int value, int reg1);
-void x86_emit_mov_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
-void x86_emit_mov_sse_reg_reg (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_mov_mmx_reg_reg (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_mov_reg_mmx (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_mov_mmx_reg (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_mov_reg_sse (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_mov_sse_reg (OrcCompiler *compiler, int reg1, int reg2);
-void x86_emit_test_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
-void x86_emit_sar_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
-void x86_emit_dec_memoffset (OrcCompiler *compiler, int size, int offset, int reg);
-void x86_emit_add_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg);
-void x86_emit_add_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg);
-void x86_emit_and_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg);
-void x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
-void x86_emit_and_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
-void x86_emit_sub_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
-void x86_emit_sub_memoffset_reg (OrcCompiler *compiler, int size,
+void orc_x86_emit_mov_imm_reg (OrcCompiler *compiler, int size, int value, int reg1);
+void orc_x86_emit_mov_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
+void orc_x86_emit_mov_sse_reg_reg (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_mov_mmx_reg_reg (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_mov_reg_mmx (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_mov_mmx_reg (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_mov_reg_sse (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_mov_sse_reg (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_test_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
+void orc_x86_emit_sar_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
+void orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, int offset, int reg);
+void orc_x86_emit_add_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg);
+void orc_x86_emit_add_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg);
+void orc_x86_emit_and_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg);
+void orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
+void orc_x86_emit_and_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
+void orc_x86_emit_sub_reg_reg (OrcCompiler *compiler, int size, int reg1, int reg2);
+void orc_x86_emit_sub_memoffset_reg (OrcCompiler *compiler, int size,
     int offset, int reg, int destreg);
-void x86_emit_cmp_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
+void orc_x86_emit_cmp_reg_memoffset (OrcCompiler *compiler, int size, int reg1,
     int offset, int reg);
-void x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
+void orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
     int offset, int reg);
-void x86_emit_emms (OrcCompiler *compiler);
-void x86_emit_ret (OrcCompiler *compiler);
-void x86_emit_jle (OrcCompiler *compiler, int label);
-void x86_emit_je (OrcCompiler *compiler, int label);
-void x86_emit_jne (OrcCompiler *compiler, int label);
-void x86_emit_jmp (OrcCompiler *compiler, int label);
-void x86_emit_label (OrcCompiler *compiler, int label);
-void x86_emit_align (OrcCompiler *compiler);
+void orc_x86_emit_emms (OrcCompiler *compiler);
+void orc_x86_emit_ret (OrcCompiler *compiler);
+void orc_x86_emit_jle (OrcCompiler *compiler, int label);
+void orc_x86_emit_je (OrcCompiler *compiler, int label);
+void orc_x86_emit_jne (OrcCompiler *compiler, int label);
+void orc_x86_emit_jmp (OrcCompiler *compiler, int label);
+void orc_x86_emit_label (OrcCompiler *compiler, int label);
+void orc_x86_emit_align (OrcCompiler *compiler);
 void x86_do_fixups (OrcCompiler *compiler);
-void x86_emit_prologue (OrcCompiler *compiler);
-void x86_emit_epilogue (OrcCompiler *compiler);
+void orc_x86_emit_prologue (OrcCompiler *compiler);
+void orc_x86_emit_epilogue (OrcCompiler *compiler);
 
-void x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3);
-void x86_emit_modrm_memoffset (OrcCompiler *compiler, int reg1, int offset, int reg2);
-void x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2);
+void orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3);
+void orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int reg1, int offset, int reg2);
+void orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2);
 void x86_test (OrcCompiler *compiler);
 
-void mmx_emit_loadiw (OrcCompiler *p, int reg, int value);
+void orc_mmx_emit_loadiw (OrcCompiler *p, int reg, int value);
 
-void sse_emit_loadib (OrcCompiler *p, int reg, int value);
-void sse_emit_loadiw (OrcCompiler *p, int reg, int value);
-void sse_emit_loadil (OrcCompiler *p, int reg, int value);
-void sse_emit_loadpb (OrcCompiler *p, int reg, int value);
-void sse_emit_loadpw (OrcCompiler *p, int reg, int value);
-void sse_emit_loadpl (OrcCompiler *p, int reg, int value);
-void sse_emit_loadpq (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadib (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadiw (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadil (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadpb (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadpw (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadpl (OrcCompiler *p, int reg, int value);
+void orc_sse_emit_loadpq (OrcCompiler *p, int reg, int value);
 
-void sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
+void orc_sse_emit_660f (OrcCompiler *p, const char *insn_name, int code,
+    int src, int dest);
+void orc_sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
+    int src, int dest);
+void orc_sse_emit_f30f (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest);
-void sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code,
+void orc_sse_emit_0f (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest);
-void sse_emit_660f38 (OrcCompiler *p, const char *insn_name, int code,
+void orc_sse_emit_660f38 (OrcCompiler *p, const char *insn_name, int code,
     int src, int dest);
 
 enum {
@@ -126,13 +126,13 @@ enum {
   X86_XMM15
 };
 
-const char * x86_get_regname(int i);
-int x86_get_regnum(int i);
-const char * x86_get_regname_16(int i);
-const char * x86_get_regname_64(int i);
-const char * x86_get_regname_ptr(int i);
-const char * x86_get_regname_mmx(int i);
-const char * x86_get_regname_sse(int i);
+const char * orc_x86_get_regname(int i);
+int orc_x86_get_regnum(int i);
+const char * orc_x86_get_regname_16(int i);
+const char * orc_x86_get_regname_64(int i);
+const char * orc_x86_get_regname_ptr(OrcCompiler *compiler, int i);
+const char * orc_x86_get_regname_mmx(int i);
+const char * orc_x86_get_regname_sse(int i);
 
 #endif