}
-#if 0
-void
-orc_sse_emit_pextrw_memoffset (OrcCompiler *p, int imm, int src,
- int offset, int dest)
-{
- ORC_ASM_CODE(p," pextrw $%d, %%%s, %d(%%%s)\n", imm,
- orc_x86_get_regname_sse(src),
- offset, orc_x86_get_regname_ptr (p, dest));
- *p->codeptr++ = 0x66;
- orc_x86_emit_rex (p, 0, src, 0, dest);
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0x3a;
- *p->codeptr++ = 0x15;
- orc_x86_emit_modrm_memoffset_old (p, src, offset, dest);
- *p->codeptr++ = imm;
-}
-#endif
-
void
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,%d), %%%s\n", offset,
- orc_x86_get_regname_ptr(compiler, reg1),
- orc_x86_get_regname_ptr(compiler, regindex), 1<<shift,
- orc_x86_get_regname_sse(reg2));
- *compiler->codeptr++ = 0x66;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x6e;
+ orc_sse_emit_movd_load_memindex (compiler, offset,
+ reg1, regindex, shift, reg2);
break;
case 8:
- ORC_ASM_CODE(compiler," movq %d(%%%s,%%%s,%d), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
- orc_x86_get_regname_ptr(compiler, regindex), 1<<shift,
- orc_x86_get_regname_sse(reg2));
- *compiler->codeptr++ = 0xf3;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x7e;
+ orc_sse_emit_movq_load_memindex (compiler, offset,
+ reg1, regindex, shift, reg2);
break;
case 16:
if (is_aligned) {
- ORC_ASM_CODE(compiler," movdqa %d(%%%s,%%%s,%d), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
- orc_x86_get_regname_ptr(compiler, regindex), 1<<shift,
- orc_x86_get_regname_sse(reg2));
- *compiler->codeptr++ = 0x66;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x6f;
+ orc_sse_emit_movdqa_load_memindex (compiler, offset,
+ reg1, regindex, shift, reg2);
} else {
- ORC_ASM_CODE(compiler," movdqu %d(%%%s,%%%s,%d), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1),
- orc_x86_get_regname_ptr(compiler, regindex), 1<<shift,
- orc_x86_get_regname_sse(reg2));
- *compiler->codeptr++ = 0xf3;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x6f;
+ orc_sse_emit_movdqu_load_memindex (compiler, offset,
+ reg1, regindex, shift, reg2);
}
break;
default:
ORC_COMPILER_ERROR(compiler, "bad size");
break;
}
- orc_x86_emit_modrm_memindex (compiler, reg2, offset, reg1, regindex, shift);
}
void
}
orc_sse_emit_movdqu (compiler, offset, reg1, reg2);
-#if 0
- ORC_ASM_CODE(compiler," movdqa %%%s, %%%s\n", orc_x86_get_regname_sse(reg1),
- orc_x86_get_regname_sse(reg2));
-
- *compiler->codeptr++ = 0x66;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x6f;
- orc_x86_emit_modrm_reg (compiler, reg1, reg2);
-#endif
}
void orc_x86_emit_mov_reg_sse (OrcCompiler *compiler, int reg1, int reg2)
{
- ORC_ASM_CODE(compiler," movd %%%s, %%%s\n", orc_x86_get_regname(reg1),
- orc_x86_get_regname_sse(reg2));
- *compiler->codeptr++ = 0x66;
- orc_x86_emit_rex(compiler, 0, reg2, 0, reg1);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x6e;
- orc_x86_emit_modrm_reg (compiler, reg1, reg2);
+ orc_sse_emit_movd_load_register (compiler, reg1, reg2);
}
void orc_x86_emit_mov_sse_reg (OrcCompiler *compiler, int reg1, int reg2)
{
- ORC_ASM_CODE(compiler," movd %%%s, %%%s\n", orc_x86_get_regname_sse(reg1),
- orc_x86_get_regname(reg2));
- *compiler->codeptr++ = 0x66;
- orc_x86_emit_rex(compiler, 0, reg1, 0, reg2);
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0x7e;
- orc_x86_emit_modrm_reg (compiler, reg2, reg1);
+ orc_sse_emit_movd_store_register (compiler, reg1, reg2);
}
void
{
int value;
- ORC_ASM_CODE(compiler," stmxcsr %d(%%%s)\n",
+ orc_sse_emit_sysinsn_load_memoffset (compiler, ORC_X86_stmxcsr, 0,
(int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]),
- orc_x86_get_regname_ptr(compiler, compiler->exec_reg));
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0xae;
- orc_x86_emit_modrm_memoffset_old (compiler, 3,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg);
+ compiler->exec_reg, -1);
orc_x86_emit_mov_memoffset_reg (compiler, 4,
(int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]),
(int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]),
compiler->exec_reg);
- ORC_ASM_CODE(compiler," ldmxcsr %d(%%%s)\n",
+ orc_sse_emit_sysinsn_load_memoffset (compiler, ORC_X86_ldmxcsr, 0,
(int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]),
- orc_x86_get_regname_ptr(compiler, compiler->exec_reg));
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0xae;
- orc_x86_emit_modrm_memoffset_old (compiler, 2,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg);
+ compiler->exec_reg, -1);
}
void
orc_sse_restore_mxcsr (OrcCompiler *compiler)
{
- ORC_ASM_CODE(compiler," ldmxcsr %d(%%%s)\n",
- (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_C1]),
- orc_x86_get_regname_ptr(compiler, compiler->exec_reg));
- *compiler->codeptr++ = 0x0f;
- *compiler->codeptr++ = 0xae;
- orc_x86_emit_modrm_memoffset_old (compiler, 2,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_C1]), compiler->exec_reg);
+ orc_sse_emit_sysinsn_load_memoffset (compiler, ORC_X86_ldmxcsr, 0,
+ (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]),
+ compiler->exec_reg, -1);
}
int src, int dest, int imm);
void orc_sse_emit_sysinsn_store_memoffset (OrcCompiler *p, int index, int src,
int offset, int dest, int imm);
+void orc_sse_emit_sysinsn_load_memindex (OrcCompiler *p, int index, int imm,
+ int offset, int src, int src_index, int shift, int dest);
+void orc_sse_emit_sysinsn_load_register (OrcCompiler *p, int index, int imm,
+ int src, int dest);
unsigned int orc_sse_get_cpu_flags (void);
}
}
+void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset,
+ int src, int src_index, int shift, int dest)
+{
+ if (offset == 0) {
+ *compiler->codeptr++ = X86_MODRM(0, 4, dest);
+ *compiler->codeptr++ = X86_SIB(shift, src_index, src);
+ } else if (offset >= -128 && offset < 128) {
+ *compiler->codeptr++ = X86_MODRM(1, 4, dest);
+ *compiler->codeptr++ = X86_SIB(shift, src_index, src);
+ *compiler->codeptr++ = (offset & 0xff);
+ } else {
+ *compiler->codeptr++ = X86_MODRM(2, 4, dest);
+ *compiler->codeptr++ = X86_SIB(shift, src_index, src);
+ *compiler->codeptr++ = (offset & 0xff);
+ *compiler->codeptr++ = ((offset>>8) & 0xff);
+ *compiler->codeptr++ = ((offset>>16) & 0xff);
+ *compiler->codeptr++ = ((offset>>24) & 0xff);
+ }
+}
+
void
orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2)
{
void orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2);
void orc_x86_emit_modrm_memindex (OrcCompiler *compiler, int reg1, int offset,
int reg2, int regindex, int shift);
+void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset,
+ int src, int src_index, int shift, int dest);
void orc_x86_do_fixups (OrcCompiler *compiler);
{ "pshufhw", ORC_X86_INSN_TYPE_SDI, 0, 0xf30f70 },
{ "palignr", ORC_X86_INSN_TYPE_SDI, 0, 0x660f3a0f },
{ "pinsrw", ORC_X86_INSN_TYPE_SDI, 0, 0x660fc4 },
- { "movd", ORC_X86_INSN_TYPE_SD, 0, 0x660f6e },
+ { "movd", ORC_X86_INSN_TYPE_ED, 0, 0x660f6e },
{ "movq", ORC_X86_INSN_TYPE_SD, 0, 0xf30f7e },
{ "movdqa", ORC_X86_INSN_TYPE_SD, 0, 0x660f6f },
{ "movdqu", ORC_X86_INSN_TYPE_SD, 0, 0xf30f6f },
{ "movhps", ORC_X86_INSN_TYPE_SD, 0, 0x0f16 },
{ "pextrw", ORC_X86_INSN_TYPE_SDI_REV, 0, 0x660f3a15 },
- { "movd", ORC_X86_INSN_TYPE_SD_REV, 0, 0x660f7e },
+ { "movd", ORC_X86_INSN_TYPE_ED_REV, 0, 0x660f7e },
{ "movq", ORC_X86_INSN_TYPE_SD_REV, 0, 0x660fd6 },
{ "movdqa", ORC_X86_INSN_TYPE_SD_REV, 0, 0x660f7f },
{ "movdqu", ORC_X86_INSN_TYPE_SD_REV, 0, 0xf30f7f },
{ "movntdq", ORC_X86_INSN_TYPE_SD_REV, 0, 0x660fe7 },
+ { "ldmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x0fae, 2 },
+ { "stmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x0fae, 3 },
};
orc_x86_get_regname_sse(src),
orc_x86_get_regname_sse(dest));
break;
+ case ORC_X86_INSN_TYPE_ED:
+ ORC_ASM_CODE(p," %s %%%s, %%%s\n", opcode->name,
+ orc_x86_get_regname(src),
+ orc_x86_get_regname_sse(dest));
+ break;
+ case ORC_X86_INSN_TYPE_ED_REV:
+ ORC_ASM_CODE(p," %s %%%s, %%%s\n", opcode->name,
+ orc_x86_get_regname_sse(src),
+ orc_x86_get_regname(dest));
+ break;
case ORC_X86_INSN_TYPE_SHIFTIMM:
ORC_ASM_CODE(p," %s $%d, %%%s\n", opcode->name,
imm,
orc_x86_get_regname_sse(src),
orc_x86_get_regname_sse(dest));
break;
+ case ORC_X86_INSN_TYPE_MEM:
default:
ORC_ASSERT(0);
break;
}
switch (opcode->type) {
+ case ORC_X86_INSN_TYPE_ED:
case ORC_X86_INSN_TYPE_SD:
- case ORC_X86_INSN_TYPE_SD_REV:
orc_x86_emit_modrm_reg (p, src, dest);
break;
+ case ORC_X86_INSN_TYPE_SD_REV:
+ case ORC_X86_INSN_TYPE_ED_REV:
+ orc_x86_emit_modrm_reg (p, dest, src);
+ break;
case ORC_X86_INSN_TYPE_SHIFTIMM:
orc_x86_emit_modrm_reg (p, dest, opcode->code2);
*p->codeptr++ = imm;
orc_x86_emit_modrm_reg (p, src, dest);
*p->codeptr++ = opcode->code2;
break;
+ case ORC_X86_INSN_TYPE_MEM:
default:
ORC_ASSERT(0);
break;
case ORC_X86_INSN_TYPE_SD:
case ORC_X86_INSN_TYPE_SD_REV:
case ORC_X86_INSN_TYPE_SD2:
+ case ORC_X86_INSN_TYPE_ED:
+ case ORC_X86_INSN_TYPE_ED_REV:
ORC_ASM_CODE(p," %s %d(%%%s), %%%s\n", opcode->name,
offset,
orc_x86_get_regname_ptr(p, src),
orc_x86_get_regname_ptr(p, src),
orc_x86_get_regname_sse(dest));
break;
+ case ORC_X86_INSN_TYPE_MEM:
+ ORC_ASM_CODE(p," %s %d(%%%s)\n", opcode->name,
+ offset,
+ orc_x86_get_regname_ptr(p, src));
+ break;
default:
ORC_ASSERT(0);
break;
switch (opcode->type) {
case ORC_X86_INSN_TYPE_SD:
+ case ORC_X86_INSN_TYPE_ED:
orc_x86_emit_modrm_memoffset (p, offset, src, dest);
break;
case ORC_X86_INSN_TYPE_SDI:
*p->codeptr++ = imm;
break;
case ORC_X86_INSN_TYPE_SD_REV:
+ case ORC_X86_INSN_TYPE_ED_REV:
orc_x86_emit_modrm_memoffset (p, offset, dest, src);
break;
case ORC_X86_INSN_TYPE_SD2:
orc_x86_emit_modrm_memoffset (p, offset, src, dest);
*p->codeptr++ = opcode->code2;
break;
+ case ORC_X86_INSN_TYPE_MEM:
+ orc_x86_emit_modrm_memoffset (p, offset, src, opcode->code2);
+ break;
default:
ORC_ASSERT(0);
break;
case ORC_X86_INSN_TYPE_SD:
case ORC_X86_INSN_TYPE_SD_REV:
case ORC_X86_INSN_TYPE_SD2:
+ case ORC_X86_INSN_TYPE_ED_REV:
ORC_ASM_CODE(p," %s %%%s, %d(%%%s)\n", opcode->name,
orc_x86_get_regname_sse(src),
offset,
offset,
orc_x86_get_regname_ptr(p, dest));
break;
+ case ORC_X86_INSN_TYPE_ED:
default:
ORC_ASSERT(0);
break;
*p->codeptr++ = imm;
break;
case ORC_X86_INSN_TYPE_SD_REV:
+ case ORC_X86_INSN_TYPE_ED_REV:
orc_x86_emit_modrm_memoffset (p, offset, dest, src);
break;
case ORC_X86_INSN_TYPE_SD2:
orc_x86_emit_modrm_memoffset (p, offset, src, dest);
*p->codeptr++ = opcode->code2;
break;
+ case ORC_X86_INSN_TYPE_ED:
+ default:
+ ORC_ASSERT(0);
+ break;
+ }
+}
+
+void
+orc_sse_emit_sysinsn_load_memindex (OrcCompiler *p, int index, int imm,
+ int offset, int src, int src_index, int shift, int dest)
+{
+ const OrcSysOpcode *opcode = orc_x86_opcodes + index;
+
+ switch (opcode->type) {
+ case ORC_X86_INSN_TYPE_SD:
+ case ORC_X86_INSN_TYPE_SD_REV:
+ case ORC_X86_INSN_TYPE_SD2:
+ case ORC_X86_INSN_TYPE_ED:
+ case ORC_X86_INSN_TYPE_ED_REV:
+ ORC_ASM_CODE(p," %s %d(%%%s,%%%s,%d), %%%s\n", opcode->name,
+ offset,
+ orc_x86_get_regname_ptr(p, src),
+ orc_x86_get_regname_ptr(p, src_index), 1<<shift,
+ orc_x86_get_regname_sse(dest));
+ break;
+ case ORC_X86_INSN_TYPE_SDI:
+ case ORC_X86_INSN_TYPE_SDI_REV:
+ ORC_ASM_CODE(p," %s $%d, %d(%%%s,%%%s,%d), %%%s\n", opcode->name,
+ imm, offset,
+ orc_x86_get_regname_ptr(p, src),
+ orc_x86_get_regname_ptr(p, src_index), 1<<shift,
+ orc_x86_get_regname_sse(dest));
+ break;
+ default:
+ ORC_ASSERT(0);
+ break;
+ }
+
+ ORC_ASSERT(opcode->code != 0);
+ if (opcode->code & 0xff000000) {
+ *p->codeptr++ = (opcode->code >> 24) & 0xff;
+ orc_x86_emit_rex (p, 0, dest, 0, src);
+ *p->codeptr++ = (opcode->code >> 16) & 0xff;
+ *p->codeptr++ = (opcode->code >> 8) & 0xff;
+ *p->codeptr++ = (opcode->code >> 0) & 0xff;
+ } else if (opcode->code & 0xff0000) {
+ *p->codeptr++ = (opcode->code >> 16) & 0xff;
+ orc_x86_emit_rex (p, 0, dest, 0, src);
+ *p->codeptr++ = (opcode->code >> 8) & 0xff;
+ *p->codeptr++ = (opcode->code >> 0) & 0xff;
+ } else {
+ *p->codeptr++ = (opcode->code >> 8) & 0xff;
+ orc_x86_emit_rex (p, 0, dest, 0, src);
+ *p->codeptr++ = (opcode->code >> 0) & 0xff;
+ }
+
+ switch (opcode->type) {
+ case ORC_X86_INSN_TYPE_SD:
+ case ORC_X86_INSN_TYPE_ED:
+ case ORC_X86_INSN_TYPE_ED_REV:
+ orc_x86_emit_modrm_memindex2 (p, offset, src, src_index, shift, dest);
+ break;
+ case ORC_X86_INSN_TYPE_SDI:
+ orc_x86_emit_modrm_memindex2 (p, offset, src, src_index, shift, dest);
+ *p->codeptr++ = imm;
+ break;
+ case ORC_X86_INSN_TYPE_SDI_REV:
+ orc_x86_emit_modrm_memindex2 (p, offset, dest, src_index, shift, src);
+ *p->codeptr++ = imm;
+ break;
+ case ORC_X86_INSN_TYPE_SD_REV:
+ orc_x86_emit_modrm_memindex2 (p, offset, dest, src_index, shift, src);
+ break;
+ case ORC_X86_INSN_TYPE_SD2:
+ orc_x86_emit_modrm_memindex2 (p, offset, src, src_index, shift, dest);
+ *p->codeptr++ = opcode->code2;
+ break;
default:
ORC_ASSERT(0);
break;
ORC_X86_INSN_TYPE_SD2,
ORC_X86_INSN_TYPE_SDI,
ORC_X86_INSN_TYPE_SDI_REV,
- ORC_X86_INSN_TYPE_SD_REV
+ ORC_X86_INSN_TYPE_SD_REV,
+ ORC_X86_INSN_TYPE_ED,
+ ORC_X86_INSN_TYPE_ED_REV,
+ ORC_X86_INSN_TYPE_MEM
};
enum {
ORC_X86_movdqa_store,
ORC_X86_movdqu_store,
ORC_X86_movntdq_store,
+ ORC_X86_ldmxcsr,
+ ORC_X86_stmxcsr,
};
#define orc_sse_emit_movdqu_store_memoffset(p,a,offset,b) orc_sse_emit_sysinsn_store_memoffset(p, ORC_X86_movdqu_store, 0, a, offset, b)
#define orc_sse_emit_movntdq_store_memoffset(p,a,offset,b) orc_sse_emit_sysinsn_store_memoffset(p, ORC_X86_movntdq_store, 0, a, offset, b)
+#define orc_sse_emit_pinsrw_memindex(p,imm,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_pinsrw, imm, offset, a, a_index, shift, b)
+#define orc_sse_emit_movd_load_memindex(p,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_movd_load, 0, offset, a, a_index, shift, b)
+#define orc_sse_emit_movq_load_memindex(p,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_movq_load, 0, offset, a, a_index, shift, b)
+#define orc_sse_emit_movdqa_load_memindex(p,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_movdqa_load, 0, offset, a, a_index, shift, b)
+#define orc_sse_emit_movdqu_load_memindex(p,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_movdqu_load, 0, offset, a, a_index, shift, b)
+#define orc_sse_emit_movhps_load_memindex(p,offset,a,a_index,shift,b) orc_sse_emit_sysinsn_load_memindex(p, ORC_X86_movhps_load, 0, offset, a, a_index, shift, b)
+
+#define orc_sse_emit_pextrw_memindex(p,imm,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_pextrw, imm, a, offset, b, b_index, shift)
+#define orc_sse_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_movd_store, 0, a, offset, b, b_index, shift)
+#define orc_sse_emit_movq_store_memindex(p,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_movq_store, 0, a, offset, b, b_index, shift)
+#define orc_sse_emit_movdqa_store_memindex(p,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_movdqa_store, 0, a, offset, b, b_index, shift)
+#define orc_sse_emit_movdqu_store_memindex(p,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_movdqu_store, 0, a, offset, b, b_index, shift)
+#define orc_sse_emit_movntdq_store_memindex(p,a,offset,b,b_index,shift) orc_sse_emit_sysinsn_store_memindex(p, ORC_X86_movntdq_store, 0, a, offset, b, b_index, shift)
+
+#define orc_sse_emit_pinsrw_register(p,imm,a,b) orc_sse_emit_sysinsn(p, ORC_X86_pinsrw, imm, a, b)
+#define orc_sse_emit_movd_load_register(p,a,b) orc_sse_emit_sysinsn(p, ORC_X86_movd_load, 0, a, b)
+#define orc_sse_emit_movq_load_register(p,a,b) orc_sse_emit_sysinsn(p, ORC_X86_movq_load, 0, a, b)
+
+#define orc_sse_emit_pextrw_register(p,imm,a,b) orc_sse_emit_sysinsn(p, ORC_X86_pextrw, imm, a, b)
+#define orc_sse_emit_movd_store_register(p,a,b) orc_sse_emit_sysinsn(p, ORC_X86_movd_store, 0, a, b)
+#define orc_sse_emit_movq_store_register(p,a,b) orc_sse_emit_sysinsn(p, ORC_X86_movq_store, 0, a, b)
+
#endif