summaryrefslogtreecommitdiff
path: root/orc/orcrules-mmx.c
diff options
context:
space:
mode:
Diffstat (limited to 'orc/orcrules-mmx.c')
-rw-r--r--orc/orcrules-mmx.c1057
1 files changed, 510 insertions, 547 deletions
diff --git a/orc/orcrules-mmx.c b/orc/orcrules-mmx.c
index 4875410..6255043 100644
--- a/orc/orcrules-mmx.c
+++ b/orc/orcrules-mmx.c
@@ -17,43 +17,43 @@
/* sse rules */
static void
-mmx_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
int reg;
- int size = ORC_PTR_TO_INT(user);
+ int size = ORC_PTR_TO_INT (user);
if (src->vartype == ORC_VAR_TYPE_PARAM) {
reg = dest->alloc;
if (size == 8 && src->size == 8) {
orc_x86_emit_mov_memoffset_mmx (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]),
compiler->exec_reg, reg, FALSE);
#ifndef MMX
orc_mmx_emit_movhps_load_memoffset (compiler,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,
- params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor,
+ params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]),
compiler->exec_reg, reg);
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(2,0,2,0), reg, reg);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (2, 0, 2, 0), reg, reg);
#else
/* FIXME yes, I understand this is terrible */
orc_mmx_emit_pinsrw_memoffset (compiler, 2,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,
- params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0,
+ (int) ORC_STRUCT_OFFSET (OrcExecutor,
+ params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0,
compiler->exec_reg, reg);
orc_mmx_emit_pinsrw_memoffset (compiler, 3,
- (int)ORC_STRUCT_OFFSET(OrcExecutor,
- params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2,
+ (int) ORC_STRUCT_OFFSET (OrcExecutor,
+ params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2,
compiler->exec_reg, reg);
#ifndef MMX
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg);
#endif
#endif
} else {
orc_x86_emit_mov_memoffset_mmx (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]),
compiler->exec_reg, reg, FALSE);
if (size < 8) {
if (size == 1) {
@@ -66,26 +66,26 @@ mmx_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_mmx_emit_pshufd (compiler, 0, reg, reg);
#else
if (size <= 2) {
- orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), reg, reg);
+ orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), reg, reg);
} else {
- orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg);
+ orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg);
}
#endif
} else {
#ifndef MMX
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg);
#endif
}
}
} else if (src->vartype == ORC_VAR_TYPE_CONST) {
orc_mmx_load_constant (compiler, dest->alloc, size, src->value.i);
} else {
- ORC_ASSERT(0);
+ ORC_ASSERT (0);
}
}
static void
-mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -96,17 +96,18 @@ mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (src->ptr_register == 0) {
int i = insn->src_args[0];
orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]),
compiler->exec_reg, compiler->gp_tmpreg);
ptr_reg = compiler->gp_tmpreg;
} else {
ptr_reg = src->ptr_register;
- }
+ }
switch (src->size << compiler->loop_shift) {
case 1:
orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg,
compiler->gp_tmpreg);
- orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc);
+ orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg,
+ dest->alloc);
break;
case 2:
orc_mmx_emit_pxor (compiler, dest->alloc, dest->alloc);
@@ -134,7 +135,7 @@ mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_loadoffX (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -142,27 +143,29 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
int offset = 0;
if (compiler->vars[insn->src_args[1]].vartype != ORC_VAR_TYPE_CONST) {
- orc_compiler_error (compiler, "code generation rule for %s only works with constant offset",
+ orc_compiler_error (compiler,
+ "code generation rule for %s only works with constant offset",
insn->opcode->name);
return;
}
offset = (compiler->offset + compiler->vars[insn->src_args[1]].value.i) *
- src->size;
+ src->size;
if (src->ptr_register == 0) {
int i = insn->src_args[0];
orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]),
compiler->exec_reg, compiler->gp_tmpreg);
ptr_reg = compiler->gp_tmpreg;
} else {
ptr_reg = src->ptr_register;
- }
+ }
switch (src->size << compiler->loop_shift) {
case 1:
orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg,
compiler->gp_tmpreg);
- orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc);
+ orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg,
+ dest->alloc);
break;
case 2:
orc_mmx_emit_pxor (compiler, dest->alloc, dest->alloc);
@@ -181,7 +184,7 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
dest->alloc, src->is_aligned);
break;
default:
- orc_compiler_error (compiler,"bad load size %d",
+ orc_compiler_error (compiler, "bad load size %d",
src->size << compiler->loop_shift);
break;
}
@@ -190,7 +193,7 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_loadupib (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -202,12 +205,12 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (src->ptr_register == 0) {
int i = insn->src_args[0];
orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]),
compiler->exec_reg, compiler->gp_tmpreg);
ptr_reg = compiler->gp_tmpreg;
} else {
ptr_reg = src->ptr_register;
- }
+ }
switch (src->size << compiler->loop_shift) {
case 1:
case 2:
@@ -238,7 +241,7 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn)
tmp, FALSE);
break;
default:
- orc_compiler_error(compiler,"bad load size %d",
+ orc_compiler_error (compiler, "bad load size %d",
src->size << compiler->loop_shift);
break;
}
@@ -250,7 +253,7 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_loadupdb (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -261,18 +264,19 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (src->ptr_register == 0) {
int i = insn->src_args[0];
orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]),
compiler->exec_reg, compiler->gp_tmpreg);
ptr_reg = compiler->gp_tmpreg;
} else {
ptr_reg = src->ptr_register;
- }
+ }
switch (src->size << compiler->loop_shift) {
case 1:
case 2:
orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg,
compiler->gp_tmpreg);
- orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc);
+ orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg,
+ dest->alloc);
break;
case 4:
orc_mmx_emit_pinsrw_memoffset (compiler, 0, offset, ptr_reg, dest->alloc);
@@ -290,7 +294,7 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn)
dest->alloc, src->is_aligned);
break;
default:
- orc_compiler_error(compiler,"bad load size %d",
+ orc_compiler_error (compiler, "bad load size %d",
src->size << compiler->loop_shift);
break;
}
@@ -310,7 +314,7 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -321,10 +325,10 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (dest->ptr_register == 0) {
orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4,
dest->ptr_offset, compiler->exec_reg, compiler->gp_tmpreg);
- ptr_reg = compiler->gp_tmpreg;
+ ptr_reg = compiler->gp_tmpreg;
} else {
ptr_reg = dest->ptr_register;
- }
+ }
switch (dest->size << compiler->loop_shift) {
case 1:
/* FIXME we might be using ecx twice here */
@@ -332,9 +336,10 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_compiler_error (compiler, "unimplemented corner case in %s",
insn->opcode->name);
}
- orc_mmx_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg);
- orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg,
- offset, ptr_reg);
+ orc_mmx_emit_movd_store_register (compiler, src->alloc,
+ compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg, offset,
+ ptr_reg);
break;
case 2:
if (compiler->target_flags & ORC_TARGET_MMX_SSE4_1) {
@@ -343,10 +348,11 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
} else {
/* FIXME we might be using ecx twice here */
if (ptr_reg == compiler->gp_tmpreg) {
- orc_compiler_error(compiler, "unimplemented corner case in %s",
+ orc_compiler_error (compiler, "unimplemented corner case in %s",
insn->opcode->name);
- }
- orc_mmx_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg);
+ }
+ orc_mmx_emit_movd_store_register (compiler, src->alloc,
+ compiler->gp_tmpreg);
orc_x86_emit_mov_reg_memoffset (compiler, 2, compiler->gp_tmpreg,
offset, ptr_reg);
}
@@ -373,7 +379,7 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn)
#if try1
static void
-mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
OrcVariable *dest = compiler->vars + insn->dest_args[0];
@@ -408,7 +414,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_mmx_emit_paddb (compiler, tmp, tmp);
#endif
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp2);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp2);
orc_mmx_emit_psubd (compiler, tmp2, tmp);
tmpc = orc_compiler_get_constant (compiler, 4, 0x03020100);
orc_mmx_emit_paddd (compiler, tmpc, tmp);
@@ -425,7 +431,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
#endif
static void
-mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
int increment_var = insn->src_args[2];
@@ -433,7 +439,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
int tmp = orc_compiler_get_temp_reg (compiler);
int i;
- for(i=0;i<(1<<compiler->loop_shift);i++){
+ for (i = 0; i < (1 << compiler->loop_shift); i++) {
if (i == 0) {
orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0,
src->ptr_register, dest->alloc, FALSE);
@@ -442,31 +448,30 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
src->ptr_register, compiler->gp_tmpreg, 2, tmp, FALSE);
#ifdef MMX
//orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc);
- orc_mmx_emit_psllq_imm (compiler, 8*4*i, tmp);
+ orc_mmx_emit_psllq_imm (compiler, 8 * 4 * i, tmp);
orc_mmx_emit_por (compiler, tmp, dest->alloc);
#else
- orc_mmx_emit_pslldq_imm (compiler, 4*i, tmp);
+ orc_mmx_emit_pslldq_imm (compiler, 4 * i, tmp);
orc_mmx_emit_por (compiler, tmp, dest->alloc);
#endif
}
if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) {
orc_x86_emit_add_memoffset_reg (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]),
compiler->exec_reg, src->ptr_offset);
} else {
orc_x86_emit_add_imm_reg (compiler, 4,
- compiler->vars[increment_var].value.i,
- src->ptr_offset, FALSE);
+ compiler->vars[increment_var].value.i, src->ptr_offset, FALSE);
}
- orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset,
+ compiler->gp_tmpreg);
orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg);
}
orc_x86_emit_add_reg_reg_shift (compiler, compiler->is_64bit ? 8 : 4,
- compiler->gp_tmpreg,
- src->ptr_register, 2);
+ compiler->gp_tmpreg, src->ptr_register, 2);
orc_x86_emit_and_imm_reg (compiler, 4, 0xffff, src->ptr_offset);
src->update_type = 0;
@@ -474,7 +479,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
#ifndef MMX
static void
-mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
int increment_var = insn->src_args[2];
@@ -490,11 +495,11 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_mmx_emit_pxor (compiler, tmp2, tmp2);
orc_mmx_emit_punpcklbw (compiler, tmp2, tmp);
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(3,2,3,2), tmp, tmp2);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (3, 2, 3, 2), tmp, tmp2);
orc_mmx_emit_psubw (compiler, tmp, tmp2);
orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp);
- orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp);
+ orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp);
orc_mmx_emit_psrlw_imm (compiler, 8, tmp);
orc_mmx_emit_pmullw (compiler, tmp2, tmp);
orc_mmx_emit_psraw_imm (compiler, 8, tmp);
@@ -507,15 +512,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) {
orc_x86_emit_add_memoffset_reg (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]),
compiler->exec_reg, src->ptr_offset);
} else {
orc_x86_emit_add_imm_reg (compiler, regsize,
- compiler->vars[increment_var].value.i,
- src->ptr_offset, FALSE);
+ compiler->vars[increment_var].value.i, src->ptr_offset, FALSE);
}
- orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset,
+ compiler->gp_tmpreg);
orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg);
orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg,
@@ -525,21 +530,21 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
int tmp3 = orc_compiler_get_temp_reg (compiler);
int tmp4 = orc_compiler_get_temp_reg (compiler);
- for(i=0;i<(1<<compiler->loop_shift);i+=2){
+ for (i = 0; i < (1 << compiler->loop_shift); i += 2) {
orc_x86_emit_mov_memoffset_mmx (compiler, 8, 0,
src->ptr_register, tmp, FALSE);
orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp4);
if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) {
orc_x86_emit_add_memoffset_reg (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]),
compiler->exec_reg, src->ptr_offset);
} else {
orc_x86_emit_add_imm_reg (compiler, 4,
- compiler->vars[increment_var].value.i,
- src->ptr_offset, FALSE);
+ compiler->vars[increment_var].value.i, src->ptr_offset, FALSE);
}
- orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset,
+ compiler->gp_tmpreg);
orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg);
orc_x86_emit_mov_memindex_mmx (compiler, 8, 0,
@@ -565,8 +570,8 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_mmx_emit_punpcklwd (compiler, tmp4, tmp4);
orc_mmx_emit_punpckldq (compiler, tmp4, tmp4);
#else
- orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF(1,1,0,0), tmp4, tmp4);
- orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,1,0,0), tmp4, tmp4);
+ orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF (1, 1, 0, 0), tmp4, tmp4);
+ orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 1, 0, 0), tmp4, tmp4);
#endif
orc_mmx_emit_psrlw_imm (compiler, 8, tmp4);
orc_mmx_emit_pmullw (compiler, tmp4, tmp2);
@@ -581,15 +586,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) {
orc_x86_emit_add_memoffset_reg (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]),
compiler->exec_reg, src->ptr_offset);
} else {
orc_x86_emit_add_imm_reg (compiler, 4,
- compiler->vars[increment_var].value.i,
- src->ptr_offset, FALSE);
+ compiler->vars[increment_var].value.i, src->ptr_offset, FALSE);
}
- orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset,
+ compiler->gp_tmpreg);
orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg);
orc_x86_emit_add_reg_reg_shift (compiler, 8, compiler->gp_tmpreg,
@@ -602,7 +607,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
}
#else
static void
-mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+mmx_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn)
{
OrcVariable *src = compiler->vars + insn->src_args[0];
int increment_var = insn->src_args[2];
@@ -614,7 +619,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
int i;
zero = orc_compiler_get_constant (compiler, 1, 0);
- for(i=0;i<(1<<compiler->loop_shift);i++){
+ for (i = 0; i < (1 << compiler->loop_shift); i++) {
orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0,
src->ptr_register, tmp, FALSE);
orc_x86_emit_mov_memoffset_mmx (compiler, 4, 4,
@@ -625,7 +630,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
orc_mmx_emit_psubw (compiler, tmp, tmp2);
orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp);
- orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp);
+ orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp);
orc_mmx_emit_psrlw_imm (compiler, 8, tmp);
orc_mmx_emit_pmullw (compiler, tmp2, tmp);
orc_mmx_emit_psraw_imm (compiler, 8, tmp);
@@ -646,15 +651,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) {
orc_x86_emit_add_memoffset_reg (compiler, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]),
compiler->exec_reg, src->ptr_offset);
} else {
orc_x86_emit_add_imm_reg (compiler, regsize,
- compiler->vars[increment_var].value.i,
- src->ptr_offset, FALSE);
+ compiler->vars[increment_var].value.i, src->ptr_offset, FALSE);
}
- orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg);
+ orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset,
+ compiler->gp_tmpreg);
orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg);
orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg,
@@ -667,15 +672,14 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
#endif
static void
-mmx_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_copyx (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->vars[insn->src_args[0]].alloc == p->vars[insn->dest_args[0]].alloc) {
return;
}
orc_mmx_emit_movq (p,
- p->vars[insn->src_args[0]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc);
}
#define UNARY(opcode,insn_name,code) \
@@ -697,89 +701,87 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
}
-UNARY(absb,pabsb,0x381c)
-BINARY(addb,paddb,0xfc)
-BINARY(addssb,paddsb,0xec)
-BINARY(addusb,paddusb,0xdc)
-BINARY(andb,pand,0xdb)
-BINARY(andnb,pandn,0xdf)
-BINARY(avgub,pavgb,0xe0)
-BINARY(cmpeqb,pcmpeqb,0x74)
-BINARY(cmpgtsb,pcmpgtb,0x64)
-BINARY(maxsb,pmaxsb,0x383c)
-BINARY(maxub,pmaxub,0xde)
-BINARY(minsb,pminsb,0x3838)
-BINARY(minub,pminub,0xda)
+UNARY (absb, pabsb, 0x381c)
+ BINARY (addb, paddb, 0xfc)
+ BINARY (addssb, paddsb, 0xec)
+ BINARY (addusb, paddusb, 0xdc)
+ BINARY (andb, pand, 0xdb)
+ BINARY (andnb, pandn, 0xdf)
+ BINARY (avgub, pavgb, 0xe0)
+ BINARY (cmpeqb, pcmpeqb, 0x74)
+ BINARY (cmpgtsb, pcmpgtb, 0x64)
+ BINARY (maxsb, pmaxsb, 0x383c)
+ BINARY (maxub, pmaxub, 0xde)
+ BINARY (minsb, pminsb, 0x3838)
+ BINARY (minub, pminub, 0xda)
//BINARY(mullb,pmullb,0xd5)
//BINARY(mulhsb,pmulhb,0xe5)
//BINARY(mulhub,pmulhub,0xe4)
-BINARY(orb,por,0xeb)
+ BINARY (orb, por, 0xeb)
//UNARY(signb,psignb,0x3808)
-BINARY(subb,psubb,0xf8)
-BINARY(subssb,psubsb,0xe8)
-BINARY(subusb,psubusb,0xd8)
-BINARY(xorb,pxor,0xef)
-
-UNARY(absw,pabsw,0x381d)
-BINARY(addw,paddw,0xfd)
-BINARY(addssw,paddsw,0xed)
-BINARY(addusw,paddusw,0xdd)
-BINARY(andw,pand,0xdb)
-BINARY(andnw,pandn,0xdf)
-BINARY(avguw,pavgw,0xe3)
-BINARY(cmpeqw,pcmpeqw,0x75)
-BINARY(cmpgtsw,pcmpgtw,0x65)
-BINARY(maxsw,pmaxsw,0xee)
-BINARY(maxuw,pmaxuw,0x383e)
-BINARY(minsw,pminsw,0xea)
-BINARY(minuw,pminuw,0x383a)
-BINARY(mullw,pmullw,0xd5)
-BINARY(mulhsw,pmulhw,0xe5)
-BINARY(mulhuw,pmulhuw,0xe4)
-BINARY(orw,por,0xeb)
+ BINARY (subb, psubb, 0xf8)
+ BINARY (subssb, psubsb, 0xe8)
+ BINARY (subusb, psubusb, 0xd8)
+ BINARY (xorb, pxor, 0xef)
+
+ UNARY (absw, pabsw, 0x381d)
+ BINARY (addw, paddw, 0xfd)
+ BINARY (addssw, paddsw, 0xed)
+ BINARY (addusw, paddusw, 0xdd)
+ BINARY (andw, pand, 0xdb)
+ BINARY (andnw, pandn, 0xdf)
+ BINARY (avguw, pavgw, 0xe3)
+ BINARY (cmpeqw, pcmpeqw, 0x75)
+ BINARY (cmpgtsw, pcmpgtw, 0x65)
+ BINARY (maxsw, pmaxsw, 0xee)
+ BINARY (maxuw, pmaxuw, 0x383e)
+ BINARY (minsw, pminsw, 0xea)
+ BINARY (minuw, pminuw, 0x383a)
+ BINARY (mullw, pmullw, 0xd5)
+ BINARY (mulhsw, pmulhw, 0xe5)
+ BINARY (mulhuw, pmulhuw, 0xe4)
+ BINARY (orw, por, 0xeb)
//UNARY(signw,psignw,0x3809)
-BINARY(subw,psubw,0xf9)
-BINARY(subssw,psubsw,0xe9)
-BINARY(subusw,psubusw,0xd9)
-BINARY(xorw,pxor,0xef)
+ BINARY (subw, psubw, 0xf9)
+ BINARY (subssw, psubsw, 0xe9)
+ BINARY (subusw, psubusw, 0xd9)
+ BINARY (xorw, pxor, 0xef)
-UNARY(absl,pabsd,0x381e)
-BINARY(addl,paddd,0xfe)
+ UNARY (absl, pabsd, 0x381e)
+ BINARY (addl, paddd, 0xfe)
//BINARY(addssl,paddsd,0xed)
//BINARY(addusl,paddusd,0xdd)
-BINARY(andl,pand,0xdb)
-BINARY(andnl,pandn,0xdf)
+ BINARY (andl, pand, 0xdb)
+ BINARY (andnl, pandn, 0xdf)
//BINARY(avgul,pavgd,0xe3)
-BINARY(cmpeql,pcmpeqd,0x76)
-BINARY(cmpgtsl,pcmpgtd,0x66)
-BINARY(maxsl,pmaxsd,0x383d)
-BINARY(maxul,pmaxud,0x383f)
-BINARY(minsl,pminsd,0x3839)
-BINARY(minul,pminud,0x383b)
-BINARY(mulll,pmulld,0x3840)
+ BINARY (cmpeql, pcmpeqd, 0x76)
+ BINARY (cmpgtsl, pcmpgtd, 0x66)
+ BINARY (maxsl, pmaxsd, 0x383d)
+ BINARY (maxul, pmaxud, 0x383f)
+ BINARY (minsl, pminsd, 0x3839)
+ BINARY (minul, pminud, 0x383b)
+ BINARY (mulll, pmulld, 0x3840)
//BINARY(mulhsl,pmulhd,0xe5)
//BINARY(mulhul,pmulhud,0xe4)
-BINARY(orl,por,0xeb)
+ BINARY (orl, por, 0xeb)
//UNARY(signl,psignd,0x380a)
-BINARY(subl,psubd,0xfa)
+ BINARY (subl, psubd, 0xfa)
//BINARY(subssl,psubsd,0xe9)
//BINARY(subusl,psubusd,0xd9)
-BINARY(xorl,pxor,0xef)
-
-BINARY(andq,pand,0xdb)
-BINARY(andnq,pandn,0xdf)
-BINARY(orq,por,0xeb)
-BINARY(xorq,pxor,0xef)
-BINARY(cmpeqq,pcmpeqq,0x3829)
-BINARY(cmpgtsq,pcmpgtq,0x3837)
-
+ BINARY (xorl, pxor, 0xef)
+
+ BINARY (andq, pand, 0xdb)
+ BINARY (andnq, pandn, 0xdf)
+ BINARY (orq, por, 0xeb)
+ BINARY (xorq, pxor, 0xef)
+ BINARY (cmpeqq, pcmpeqq, 0x3829)
+ BINARY (cmpgtsq, pcmpgtq, 0x3837)
#ifndef MMX
-BINARY(addq,paddq,0xd4)
-BINARY(subq,psubq,0xfb)
+ BINARY (addq, paddq, 0xd4)
+ BINARY (subq, psubq, 0xfb)
#endif
-
-static void
-mmx_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn)
+ static void
+ mmx_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;
@@ -788,7 +790,7 @@ mmx_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_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;
@@ -802,7 +804,7 @@ mmx_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src1 = p->vars[insn->src_args[0]].alloc;
int src2 = p->vars[insn->src_args[1]].alloc;
@@ -813,9 +815,9 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
#ifndef MMX
if (p->loop_shift <= 2) {
orc_mmx_emit_movq (p, src1, tmp);
- orc_mmx_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp);
+ orc_mmx_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp);
orc_mmx_emit_movq (p, src2, tmp2);
- orc_mmx_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp2);
+ orc_mmx_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp2);
orc_mmx_emit_psadbw (p, tmp2, tmp);
} else if (p->loop_shift == 3) {
orc_mmx_emit_movq (p, src1, tmp);
@@ -828,9 +830,9 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
#else
if (p->loop_shift <= 2) {
orc_mmx_emit_movq (p, src1, tmp);
- orc_mmx_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp);
+ orc_mmx_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp);
orc_mmx_emit_movq (p, src2, tmp2);
- orc_mmx_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp2);
+ orc_mmx_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp2);
orc_mmx_emit_psadbw (p, tmp2, tmp);
} else {
orc_mmx_emit_movq (p, src1, tmp);
@@ -842,15 +844,15 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
#ifndef MMX
static void
-mmx_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_signX_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int opcodes[] = { ORC_X86_psignb, ORC_X86_psignw, ORC_X86_psignd };
- int type = ORC_PTR_TO_INT(user);
+ int type = ORC_PTR_TO_INT (user);
int tmpc;
- tmpc = orc_compiler_get_temp_constant (p, 1<<type, 1);
+ tmpc = orc_compiler_get_temp_constant (p, 1 << type, 1);
if (src == dest) {
orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, src, tmpc);
orc_mmx_emit_movq (p, tmpc, dest);
@@ -863,7 +865,7 @@ mmx_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
#endif
static void
-mmx_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_signw_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -876,7 +878,7 @@ mmx_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_absb_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -889,7 +891,7 @@ mmx_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_absw_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -909,7 +911,7 @@ mmx_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_absl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -929,19 +931,21 @@ mmx_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_shift (OrcCompiler * p, void *user, OrcInstruction * insn)
{
- int type = ORC_PTR_TO_INT(user);
+ int type = ORC_PTR_TO_INT (user);
//int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 };
//int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 };
//int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 };
//const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" };
const int opcodes[] = { ORC_X86_psllw, ORC_X86_psrlw, ORC_X86_psraw,
ORC_X86_pslld, ORC_X86_psrld, ORC_X86_psrad, ORC_X86_psllq,
- ORC_X86_psrlq };
+ ORC_X86_psrlq
+ };
const int opcodes_imm[] = { ORC_X86_psllw_imm, ORC_X86_psrlw_imm,
ORC_X86_psraw_imm, ORC_X86_pslld_imm, ORC_X86_psrld_imm,
- ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm };
+ ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm
+ };
if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
orc_x86_emit_cpuinsn_imm (p, opcodes_imm[type],
@@ -953,7 +957,7 @@ mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
/* FIXME this is a gross hack to reload the register with a
* 64-bit version of the parameter. */
orc_x86_emit_mov_memoffset_mmx (p, 4,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
+ (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[1]]),
p->exec_reg, tmp, FALSE);
orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, tmp,
@@ -966,7 +970,7 @@ mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_shlb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -974,7 +978,7 @@ mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn)
if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
orc_mmx_emit_psllw_imm (p, p->vars[insn->src_args[1]].value.i, dest);
tmp = orc_compiler_get_constant (p, 1,
- 0xff&(0xff<<p->vars[insn->src_args[1]].value.i));
+ 0xff & (0xff << p->vars[insn->src_args[1]].value.i));
orc_mmx_emit_pand (p, tmp, dest);
} else {
orc_compiler_error (p, "code generation rule for %s only works with "
@@ -984,7 +988,7 @@ mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_shrsb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1008,7 +1012,7 @@ mmx_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_shrub (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1016,7 +1020,7 @@ mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn)
if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
orc_mmx_emit_psrlw_imm (p, p->vars[insn->src_args[1]].value.i, dest);
tmp = orc_compiler_get_constant (p, 1,
- (0xff>>p->vars[insn->src_args[1]].value.i));
+ (0xff >> p->vars[insn->src_args[1]].value.i));
orc_mmx_emit_pand (p, tmp, dest);
} else {
orc_compiler_error (p, "code generation rule for %s only works with "
@@ -1026,7 +1030,7 @@ mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_shrsq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1034,12 +1038,12 @@ mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn)
if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,3,1,1), src, tmp);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 3, 1, 1), src, tmp);
#else
- orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,2,3,2), src, tmp);
+ orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp);
#endif
orc_mmx_emit_psrad_imm (p, 31, tmp);
- orc_mmx_emit_psllq_imm (p, 64-p->vars[insn->src_args[1]].value.i, tmp);
+ orc_mmx_emit_psllq_imm (p, 64 - p->vars[insn->src_args[1]].value.i, tmp);
orc_mmx_emit_psrlq_imm (p, p->vars[insn->src_args[1]].value.i, dest);
orc_mmx_emit_por (p, tmp, dest);
@@ -1051,7 +1055,7 @@ mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convsbw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1061,7 +1065,7 @@ mmx_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convubw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1072,13 +1076,13 @@ mmx_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_punpcklbw (p, src, dest);
orc_mmx_emit_psrlw_imm (p, 8, dest);
} else {
- orc_mmx_emit_pxor(p, tmp, tmp);
+ orc_mmx_emit_pxor (p, tmp, tmp);
orc_mmx_emit_punpcklbw (p, tmp, dest);
}
}
static void
-mmx_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1087,7 +1091,7 @@ mmx_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convsuswb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1096,7 +1100,7 @@ mmx_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convuuswb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1113,7 +1117,7 @@ mmx_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convwb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1123,7 +1127,7 @@ mmx_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convhwb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1132,7 +1136,7 @@ mmx_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convswl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1142,7 +1146,7 @@ mmx_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convuwl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1153,13 +1157,13 @@ mmx_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_punpcklwd (p, src, dest);
orc_mmx_emit_psrld_imm (p, 16, dest);
} else {
- orc_mmx_emit_pxor(p, tmp, tmp);
+ orc_mmx_emit_pxor (p, tmp, tmp);
orc_mmx_emit_punpcklwd (p, tmp, dest);
}
}
static void
-mmx_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convlw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1169,7 +1173,7 @@ mmx_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convhlw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1178,7 +1182,7 @@ mmx_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convssslw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1187,7 +1191,7 @@ mmx_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convsuslw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1196,7 +1200,7 @@ mmx_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convslq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1208,7 +1212,7 @@ mmx_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convulq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1218,33 +1222,33 @@ mmx_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convql (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest);
#else
orc_mmx_emit_movq (p, src, dest);
#endif
}
static void
-mmx_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
#ifndef MMX
- orc_mmx_emit_pshuflw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest);
- orc_mmx_emit_pshufhw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest);
+ orc_mmx_emit_pshuflw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest);
+ orc_mmx_emit_pshufhw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest);
#else
- orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest);
+ orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest);
#endif
}
static void
-mmx_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1252,7 +1256,7 @@ mmx_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1261,7 +1265,7 @@ mmx_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp = orc_compiler_get_temp_reg (p);
@@ -1277,7 +1281,7 @@ mmx_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn)
#if 1
static void
-mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
/* About 5.2 cycles per array member on ginger */
int src = p->vars[insn->src_args[1]].alloc;
@@ -1301,7 +1305,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_pxor (p, tmp, dest);
- for(i=0;i<7;i++){
+ for (i = 0; i < 7; i++) {
orc_mmx_emit_movq (p, divisor, l);
orc_mmx_emit_pxor (p, tmp, l);
orc_mmx_emit_pcmpgtw (p, dest, l);
@@ -1310,11 +1314,11 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_psubw (p, l, dest);
orc_mmx_emit_psrlw_imm (p, 1, divisor);
- orc_mmx_emit_pand (p, j, j2);
- orc_mmx_emit_pxor (p, j2, a);
- orc_mmx_emit_psrlw_imm (p, 1, j);
+ orc_mmx_emit_pand (p, j, j2);
+ orc_mmx_emit_pxor (p, j2, a);
+ orc_mmx_emit_psrlw_imm (p, 1, j);
}
-
+
orc_mmx_emit_movq (p, divisor, l);
orc_mmx_emit_pxor (p, tmp, l);
orc_mmx_emit_pcmpgtw (p, dest, l);
@@ -1325,7 +1329,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
#else
static void
-mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
/* About 8.4 cycles per array member on ginger */
int src = p->vars[insn->src_args[1]].alloc;
@@ -1348,7 +1352,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_movq (p, tmp, j);
orc_mmx_emit_psrlw_imm (p, 8, j);
- for(i=0;i<8;i++){
+ for (i = 0; i < 8; i++) {
orc_mmx_emit_por (p, j, a);
orc_mmx_emit_movq (p, a, k);
orc_mmx_emit_pmullw (p, src, k);
@@ -1364,7 +1368,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
#endif
static void
-mmx_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulsbw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1378,7 +1382,7 @@ mmx_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulubw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1392,7 +1396,7 @@ mmx_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mullb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1415,7 +1419,7 @@ mmx_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1443,7 +1447,7 @@ mmx_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1471,7 +1475,7 @@ mmx_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulswl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1484,7 +1488,7 @@ mmx_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_muluwl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1497,22 +1501,22 @@ mmx_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulll_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int i;
- int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]);
+ int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]);
orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[0]].alloc,
offset, p->exec_reg, FALSE, FALSE);
orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[1]].alloc,
offset + 16, p->exec_reg, FALSE, FALSE);
- for(i=0;i<(1<<p->insn_shift);i++) {
- orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg,
+ for (i = 0; i < (1 << p->insn_shift); i++) {
+ orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg,
p->gp_tmpreg);
- orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16+4*i, p->exec_reg,
+ orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16 + 4 * i, p->exec_reg,
p->gp_tmpreg);
- orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4*i,
+ orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4 * i,
p->exec_reg);
}
@@ -1522,30 +1526,30 @@ mmx_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
#ifndef MMX
static void
-mmx_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulhsl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp = orc_compiler_get_temp_reg (p);
int tmp2 = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, tmp);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), src, tmp2);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, tmp);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), src, tmp2);
orc_mmx_emit_pmuldq (p, src, dest);
orc_mmx_emit_pmuldq (p, tmp, tmp2);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), dest, dest);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), tmp2, tmp2);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), dest, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), tmp2, tmp2);
orc_mmx_emit_punpckldq (p, tmp2, dest);
}
#endif
#ifndef MMX
static void
-mmx_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulhsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int i;
int regsize = p->is_64bit ? 8 : 4;
- int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]);
+ int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]);
orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[0]].alloc,
offset, p->exec_reg, FALSE, FALSE);
@@ -1556,41 +1560,43 @@ mmx_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40,
p->exec_reg);
- for(i=0;i<(1<<p->insn_shift);i++) {
- orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX);
+ for (i = 0; i < (1 << p->insn_shift); i++) {
+ orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX);
orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4,
- offset + 16 + 4*i, p->exec_reg);
- orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4*i, p->exec_reg);
+ offset + 16 + 4 * i, p->exec_reg);
+ orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4 * i, p->exec_reg);
}
orc_x86_emit_mov_memoffset_mmx (p, 16, offset, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg,
+ X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg,
+ X86_EDX);
}
#endif
#ifndef MMX
static void
-mmx_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulhul (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp = orc_compiler_get_temp_reg (p);
int tmp2 = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, tmp);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), src, tmp2);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, tmp);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), src, tmp2);
orc_mmx_emit_pmuludq (p, src, dest);
orc_mmx_emit_pmuludq (p, tmp, tmp2);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), dest, dest);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), tmp2, tmp2);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), dest, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), tmp2, tmp2);
orc_mmx_emit_punpckldq (p, tmp2, dest);
}
#endif
static void
-mmx_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulslq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1604,11 +1610,11 @@ mmx_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn)
#ifndef MMX
static void
-mmx_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mulslq_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int i;
int regsize = p->is_64bit ? 8 : 4;
- int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]);
+ int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]);
orc_x86_emit_mov_mmx_memoffset (p, 8, p->vars[insn->src_args[0]].alloc,
offset, p->exec_reg, FALSE, FALSE);
@@ -1619,24 +1625,28 @@ mmx_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40,
p->exec_reg);
- for(i=0;i<(1<<p->insn_shift);i++) {
- orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX);
+ for (i = 0; i < (1 << p->insn_shift); i++) {
+ orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX);
orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4,
- offset + 8 + 4*i, p->exec_reg);
- orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8*i, p->exec_reg);
- orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8*i + 4, p->exec_reg);
+ offset + 8 + 4 * i, p->exec_reg);
+ orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8 * i,
+ p->exec_reg);
+ orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8 * i + 4,
+ p->exec_reg);
}
orc_x86_emit_mov_memoffset_mmx (p, 16, offset + 16, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg,
+ X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg,
+ X86_EDX);
}
#endif
#ifndef MMX
static void
-mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mululq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1650,7 +1660,7 @@ mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn)
#endif
static void
-mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
//int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1664,7 +1674,7 @@ mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
//int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1676,35 +1686,35 @@ mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
/* same as convql */
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest);
#else
orc_mmx_emit_movq (p, src, dest);
#endif
}
static void
-mmx_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
orc_mmx_emit_psrlq_imm (p, 32, dest);
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest);
#else
orc_mmx_emit_movq (p, src, dest);
#endif
}
static void
-mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
//int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1718,7 +1728,7 @@ mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
//int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1730,23 +1740,23 @@ mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest1 = p->vars[insn->dest_args[0]].alloc;
int dest2 = p->vars[insn->dest_args[1]].alloc;
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest2);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,1,3,1), src, dest1);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest2);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 1, 3, 1), src, dest1);
#else
orc_mmx_emit_movq (p, src, dest2);
- orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,2,3,2), src, dest1);
+ orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 2, 3, 2), src, dest1);
#endif
}
static void
-mmx_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest1 = p->vars[insn->dest_args[0]].alloc;
@@ -1767,7 +1777,7 @@ mmx_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest1 = p->vars[insn->dest_args[0]].alloc;
@@ -1782,7 +1792,6 @@ mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn)
if (dest2 != src) {
orc_mmx_emit_movq (p, src, dest2);
}
-
#if 0
orc_mmx_emit_psllw_imm (p, 8, dest2);
orc_mmx_emit_psraw_imm (p, 8, dest2);
@@ -1794,7 +1803,7 @@ mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1803,7 +1812,7 @@ mmx_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1812,7 +1821,7 @@ mmx_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1821,7 +1830,7 @@ mmx_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1834,7 +1843,7 @@ mmx_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1851,7 +1860,7 @@ mmx_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1864,7 +1873,7 @@ mmx_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -1885,20 +1894,20 @@ mmx_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
#ifndef MMX
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, dest);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, dest);
#else
- orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,3,2), dest, dest);
+ orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (1, 0, 3, 2), dest, dest);
#endif
}
#ifndef MMX
static void
-mmx_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1913,7 +1922,7 @@ mmx_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1928,7 +1937,7 @@ mmx_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapwl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1943,7 +1952,7 @@ mmx_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_swapq_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1958,7 +1967,7 @@ mmx_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select0lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1973,7 +1982,7 @@ mmx_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select1lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -1988,7 +1997,7 @@ mmx_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select0wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -2003,7 +2012,7 @@ mmx_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_select1wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp;
@@ -2021,22 +2030,22 @@ mmx_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn)
/* slow rules */
static void
-mmx_rule_maxuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int tmp = orc_compiler_get_temp_reg (p);
tmp = orc_compiler_get_constant (p, 2, 0x8000);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
orc_mmx_emit_pmaxsw (p, src, dest);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
}
static void
-mmx_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_minuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2044,15 +2053,15 @@ mmx_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
tmp = orc_compiler_get_constant (p, 2, 0x8000);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
orc_mmx_emit_pminsw (p, src, dest);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
}
static void
-mmx_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_avgsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2060,15 +2069,15 @@ mmx_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
tmp = orc_compiler_get_constant (p, 1, 0x80);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
orc_mmx_emit_pavgb (p, src, dest);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
}
static void
-mmx_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_avgsw_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2076,15 +2085,15 @@ mmx_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
tmp = orc_compiler_get_constant (p, 2, 0x8000);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
orc_mmx_emit_pavgw (p, src, dest);
- orc_mmx_emit_pxor(p, tmp, src);
- orc_mmx_emit_pxor(p, tmp, dest);
+ orc_mmx_emit_pxor (p, tmp, src);
+ orc_mmx_emit_pxor (p, tmp, dest);
}
static void
-mmx_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2098,7 +2107,7 @@ mmx_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_minsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2112,7 +2121,7 @@ mmx_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2126,7 +2135,7 @@ mmx_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_minsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2140,7 +2149,7 @@ mmx_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxul_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2148,8 +2157,8 @@ mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
int tmpc;
tmpc = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor(p, tmpc, src);
- orc_mmx_emit_pxor(p, tmpc, dest);
+ orc_mmx_emit_pxor (p, tmpc, src);
+ orc_mmx_emit_pxor (p, tmpc, dest);
orc_mmx_emit_movq (p, dest, tmp);
orc_mmx_emit_pcmpgtd (p, src, tmp);
@@ -2157,12 +2166,12 @@ mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_pandn (p, src, tmp);
orc_mmx_emit_por (p, tmp, dest);
- orc_mmx_emit_pxor(p, tmpc, src);
- orc_mmx_emit_pxor(p, tmpc, dest);
+ orc_mmx_emit_pxor (p, tmpc, src);
+ orc_mmx_emit_pxor (p, tmpc, dest);
}
static void
-mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_minul_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2170,8 +2179,8 @@ mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
int tmpc;
tmpc = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor(p, tmpc, src);
- orc_mmx_emit_pxor(p, tmpc, dest);
+ orc_mmx_emit_pxor (p, tmpc, src);
+ orc_mmx_emit_pxor (p, tmpc, dest);
orc_mmx_emit_movq (p, src, tmp);
orc_mmx_emit_pcmpgtd (p, dest, tmp);
@@ -2179,12 +2188,12 @@ mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_pandn (p, src, tmp);
orc_mmx_emit_por (p, tmp, dest);
- orc_mmx_emit_pxor(p, tmpc, src);
- orc_mmx_emit_pxor(p, tmpc, dest);
+ orc_mmx_emit_pxor (p, tmpc, src);
+ orc_mmx_emit_pxor (p, tmpc, dest);
}
static void
-mmx_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_avgsl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2193,15 +2202,15 @@ mmx_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn)
/* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */
orc_mmx_emit_movq (p, dest, tmp);
- orc_mmx_emit_pxor(p, src, tmp);
- orc_mmx_emit_psrad_imm(p, 1, tmp);
+ orc_mmx_emit_pxor (p, src, tmp);
+ orc_mmx_emit_psrad_imm (p, 1, tmp);
- orc_mmx_emit_por(p, src, dest);
- orc_mmx_emit_psubd(p, tmp, dest);
+ orc_mmx_emit_por (p, src, dest);
+ orc_mmx_emit_psubd (p, tmp, dest);
}
static void
-mmx_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_avgul (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2210,15 +2219,15 @@ mmx_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn)
/* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */
orc_mmx_emit_movq (p, dest, tmp);
- orc_mmx_emit_pxor(p, src, tmp);
- orc_mmx_emit_psrld_imm(p, 1, tmp);
+ orc_mmx_emit_pxor (p, src, tmp);
+ orc_mmx_emit_psrld_imm (p, 1, tmp);
- orc_mmx_emit_por(p, src, dest);
- orc_mmx_emit_psubd(p, tmp, dest);
+ orc_mmx_emit_por (p, src, dest);
+ orc_mmx_emit_psubd (p, tmp, dest);
}
static void
-mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_addssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2245,11 +2254,11 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
orc_mmx_emit_pand (p, tmp3, tmp2);
orc_mmx_emit_paddd (p, src, dest);
- orc_mmx_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping
+ orc_mmx_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping
orc_mmx_emit_movq (p, tmp3, dest);
orc_mmx_emit_por (p, tmp2, dest);
@@ -2277,7 +2286,7 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
t^=m;
s=~s&t;
_a|=s;
- */
+ */
orc_mmx_emit_movq (p, dest, s);
orc_mmx_emit_movq (p, dest, t);
@@ -2298,7 +2307,7 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_subssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2325,7 +2334,7 @@ mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
orc_mmx_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
orc_mmx_emit_pand (p, tmp3, tmp2);
orc_mmx_emit_psubd (p, src, dest);
@@ -2337,7 +2346,7 @@ mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_addusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2384,7 +2393,7 @@ mmx_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_subusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_subusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[1]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
@@ -2428,12 +2437,11 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
p->vars[insn->dest_args[0]].alloc); \
}
-BINARY_F(addf, addps, 0x58)
-BINARY_F(subf, subps, 0x5c)
-BINARY_F(mulf, mulps, 0x59)
-BINARY_F(divf, divps, 0x5e)
-UNARY_F(sqrtf, sqrtps, 0x51)
-
+BINARY_F (addf, addps, 0x58)
+ BINARY_F (subf, subps, 0x5c)
+ BINARY_F (mulf, mulps, 0x59)
+ BINARY_F (divf, divps, 0x5e)
+ UNARY_F (sqrtf, sqrtps, 0x51)
#define UNARY_D(opcode,insn_name,code) \
static void \
mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
@@ -2442,7 +2450,6 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
p->vars[insn->src_args[0]].alloc, \
p->vars[insn->dest_args[0]].alloc); \
}
-
#define BINARY_D(opcode,insn_name,code) \
static void \
mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
@@ -2451,168 +2458,129 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \
p->vars[insn->src_args[1]].alloc, \
p->vars[insn->dest_args[0]].alloc); \
}
+ BINARY_D (addd, addpd, 0x58)
+ BINARY_D (subd, subpd, 0x5c)
+ BINARY_D (muld, mulpd, 0x59)
+ BINARY_D (divd, divpd, 0x5e)
+ UNARY_D (sqrtd, sqrtpd, 0x51)
-BINARY_D(addd, addpd, 0x58)
-BINARY_D(subd, subpd, 0x5c)
-BINARY_D(muld, mulpd, 0x59)
-BINARY_D(divd, divpd, 0x5e)
-UNARY_D(sqrtd, sqrtpd, 0x51)
-
-static void
-mmx_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn)
+ static void
+ mmx_rule_minf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_FAST_NAN) {
orc_mmx_emit_minps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
} else {
int tmp = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_movq (p,
- p->vars[insn->src_args[1]].alloc,
- tmp);
- orc_mmx_emit_minps (p,
- p->vars[insn->dest_args[0]].alloc,
- tmp);
+ orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp);
+ orc_mmx_emit_minps (p, p->vars[insn->dest_args[0]].alloc, tmp);
orc_mmx_emit_minps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
- orc_mmx_emit_por (p,
- tmp,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
+ orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc);
}
}
static void
-mmx_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_mind (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_FAST_NAN) {
orc_mmx_emit_minpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
} else {
int tmp = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_movq (p,
- p->vars[insn->src_args[1]].alloc,
- tmp);
+ orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp);
+ orc_mmx_emit_minpd (p, p->vars[insn->dest_args[0]].alloc, tmp);
orc_mmx_emit_minpd (p,
- p->vars[insn->dest_args[0]].alloc,
- tmp);
- orc_mmx_emit_minpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
- orc_mmx_emit_por (p,
- tmp,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
+ orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc);
}
}
static void
-mmx_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_FAST_NAN) {
orc_mmx_emit_maxps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
} else {
int tmp = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_movq (p,
- p->vars[insn->src_args[1]].alloc,
- tmp);
+ orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp);
+ orc_mmx_emit_maxps (p, p->vars[insn->dest_args[0]].alloc, tmp);
orc_mmx_emit_maxps (p,
- p->vars[insn->dest_args[0]].alloc,
- tmp);
- orc_mmx_emit_maxps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
- orc_mmx_emit_por (p,
- tmp,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
+ orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc);
}
}
static void
-mmx_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_maxd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_FAST_NAN) {
orc_mmx_emit_maxpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
} else {
int tmp = orc_compiler_get_temp_reg (p);
- orc_mmx_emit_movq (p,
- p->vars[insn->src_args[1]].alloc,
- tmp);
- orc_mmx_emit_maxpd (p,
- p->vars[insn->dest_args[0]].alloc,
- tmp);
+ orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp);
+ orc_mmx_emit_maxpd (p, p->vars[insn->dest_args[0]].alloc, tmp);
orc_mmx_emit_maxpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
- orc_mmx_emit_por (p,
- tmp,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
+ orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc);
}
}
static void
-mmx_rule_cmpeqf (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmpeqf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmpeqps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_cmpeqd (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmpeqd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmpeqpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmpltf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmpltps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_cmpltd (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmpltd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmpltpd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmplef (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmpleps (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_cmpled (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_cmpled (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cmplepd (p,
- p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int tmpc;
int tmp = orc_compiler_get_temp_reg (p);
-
+
tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000);
orc_mmx_emit_movq (p, src, tmp);
orc_mmx_emit_cvttps2dq (p, src, dest);
@@ -2624,15 +2592,15 @@ mmx_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convdl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int src = p->vars[insn->src_args[0]].alloc;
int dest = p->vars[insn->dest_args[0]].alloc;
int tmpc;
int tmp = orc_compiler_get_temp_reg (p);
-
+
tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000);
- orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,1,3,1), src, tmp);
+ orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 1, 3, 1), src, tmp);
orc_mmx_emit_cvttpd2dq (p, src, dest);
orc_mmx_emit_psrad_imm (p, 31, tmp);
orc_mmx_emit_pcmpeqd (p, dest, tmpc);
@@ -2641,35 +2609,31 @@ mmx_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn)
}
static void
-mmx_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cvtdq2ps (p,
- p->vars[insn->src_args[0]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_convld (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convld (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cvtdq2pd (p,
- p->vars[insn->src_args[0]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_convfd (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convfd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cvtps2pd (p,
- p->vars[insn->src_args[0]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc);
}
static void
-mmx_rule_convdf (OrcCompiler *p, void *user, OrcInstruction *insn)
+mmx_rule_convdf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
orc_mmx_emit_cvtpd2ps (p,
- p->vars[insn->src_args[0]].alloc,
- p->vars[insn->dest_args[0]].alloc);
+ p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc);
}
#endif
@@ -2682,16 +2646,16 @@ mmx_rule_ ## opcode ## _mmx41 (OrcCompiler *p, void *user, OrcInstruction *insn)
p->vars[insn->dest_args[0]].alloc); \
}
-UNARY_SSE41(convsbw,pmovsxbw);
-UNARY_SSE41(convswl,pmovsxwd);
-UNARY_SSE41(convslq,pmovsxdq);
-UNARY_SSE41(convubw,pmovzxbw);
-UNARY_SSE41(convuwl,pmovzxwd);
-UNARY_SSE41(convulq,pmovzxdq);
+UNARY_SSE41 (convsbw, pmovsxbw);
+UNARY_SSE41 (convswl, pmovsxwd);
+UNARY_SSE41 (convslq, pmovsxdq);
+UNARY_SSE41 (convubw, pmovzxbw);
+UNARY_SSE41 (convuwl, pmovzxwd);
+UNARY_SSE41 (convulq, pmovzxdq);
void
-orc_compiler_mmx_register_rules (OrcTarget *target)
+orc_compiler_mmx_register_rules (OrcTarget * target)
{
OrcRuleSet *rule_set;
@@ -2700,10 +2664,10 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
/* SSE 2 */
#ifndef MMX
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target,
ORC_TARGET_MMX_MMXEXT);
#else
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target,
ORC_TARGET_MMX_MMX);
#endif
@@ -2716,10 +2680,10 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
orc_rule_register (rule_set, "loadoffl", mmx_rule_loadoffX, NULL);
orc_rule_register (rule_set, "loadupdb", mmx_rule_loadupdb, NULL);
orc_rule_register (rule_set, "loadupib", mmx_rule_loadupib, NULL);
- orc_rule_register (rule_set, "loadpb", mmx_rule_loadpX, (void *)1);
- orc_rule_register (rule_set, "loadpw", mmx_rule_loadpX, (void *)2);
- orc_rule_register (rule_set, "loadpl", mmx_rule_loadpX, (void *)4);
- orc_rule_register (rule_set, "loadpq", mmx_rule_loadpX, (void *)8);
+ orc_rule_register (rule_set, "loadpb", mmx_rule_loadpX, (void *) 1);
+ orc_rule_register (rule_set, "loadpw", mmx_rule_loadpX, (void *) 2);
+ orc_rule_register (rule_set, "loadpl", mmx_rule_loadpX, (void *) 4);
+ orc_rule_register (rule_set, "loadpq", mmx_rule_loadpX, (void *) 8);
orc_rule_register (rule_set, "ldresnearl", mmx_rule_ldresnearl, NULL);
orc_rule_register (rule_set, "ldreslinl", mmx_rule_ldreslinl, NULL);
@@ -2728,78 +2692,78 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
orc_rule_register (rule_set, "storel", mmx_rule_storeX, NULL);
orc_rule_register (rule_set, "storeq", mmx_rule_storeX, NULL);
- REG(addb);
- REG(addssb);
- REG(addusb);
- REG(andb);
- REG(andnb);
- REG(avgub);
- REG(cmpeqb);
- REG(cmpgtsb);
- REG(maxub);
- REG(minub);
- REG(orb);
- REG(subb);
- REG(subssb);
- REG(subusb);
- REG(xorb);
-
- REG(addw);
- REG(addssw);
- REG(addusw);
- REG(andw);
- REG(andnw);
- REG(avguw);
- REG(cmpeqw);
- REG(cmpgtsw);
- REG(maxsw);
- REG(minsw);
- REG(mullw);
- REG(mulhsw);
- REG(mulhuw);
- REG(orw);
- REG(subw);
- REG(subssw);
- REG(subusw);
- REG(xorw);
-
- REG(addl);
- REG(andl);
- REG(andnl);
- REG(cmpeql);
- REG(cmpgtsl);
- REG(orl);
- REG(subl);
- REG(xorl);
-
- REG(andq);
- REG(andnq);
- REG(orq);
- REG(xorq);
-
- REG(select0ql);
- REG(select1ql);
- REG(select0lw);
- REG(select1lw);
- REG(select0wb);
- REG(select1wb);
- REG(mergebw);
- REG(mergewl);
- REG(mergelq);
+ REG (addb);
+ REG (addssb);
+ REG (addusb);
+ REG (andb);
+ REG (andnb);
+ REG (avgub);
+ REG (cmpeqb);
+ REG (cmpgtsb);
+ REG (maxub);
+ REG (minub);
+ REG (orb);
+ REG (subb);
+ REG (subssb);
+ REG (subusb);
+ REG (xorb);
+
+ REG (addw);
+ REG (addssw);
+ REG (addusw);
+ REG (andw);
+ REG (andnw);
+ REG (avguw);
+ REG (cmpeqw);
+ REG (cmpgtsw);
+ REG (maxsw);
+ REG (minsw);
+ REG (mullw);
+ REG (mulhsw);
+ REG (mulhuw);
+ REG (orw);
+ REG (subw);
+ REG (subssw);
+ REG (subusw);
+ REG (xorw);
+
+ REG (addl);
+ REG (andl);
+ REG (andnl);
+ REG (cmpeql);
+ REG (cmpgtsl);
+ REG (orl);
+ REG (subl);
+ REG (xorl);
+
+ REG (andq);
+ REG (andnq);
+ REG (orq);
+ REG (xorq);
+
+ REG (select0ql);
+ REG (select1ql);
+ REG (select0lw);
+ REG (select1lw);
+ REG (select0wb);
+ REG (select1wb);
+ REG (mergebw);
+ REG (mergewl);
+ REG (mergelq);
orc_rule_register (rule_set, "copyb", mmx_rule_copyx, NULL);
orc_rule_register (rule_set, "copyw", mmx_rule_copyx, NULL);
orc_rule_register (rule_set, "copyl", mmx_rule_copyx, NULL);
orc_rule_register (rule_set, "copyq", mmx_rule_copyx, NULL);
- orc_rule_register (rule_set, "shlw", mmx_rule_shift, (void *)0);
- orc_rule_register (rule_set, "shruw", mmx_rule_shift, (void *)1);
- orc_rule_register (rule_set, "shrsw", mmx_rule_shift, (void *)2);
- orc_rule_register (rule_set, "shll", mmx_rule_shift, (void *)3);
- orc_rule_register (rule_set, "shrul", mmx_rule_shift, (void *)4);
- orc_rule_register (rule_set, "shrsl", mmx_rule_shift, (void *)5);
- orc_rule_register (rule_set, "shlq", mmx_rule_shift, (void *)6);
- orc_rule_register (rule_set, "shruq", mmx_rule_shift, (void *)7);
+ orc_rule_register (rule_set, "shlw", mmx_rule_shift, (void *) 0);
+ orc_rule_register (rule_set, "shruw", mmx_rule_shift, (void *) 1);
+ orc_rule_register (rule_set, "shrsw", mmx_rule_shift, (void *) 2);
+ orc_rule_register (rule_set, "shll", mmx_rule_shift, (void *) 3);
+ orc_rule_register (rule_set, "shrul", mmx_rule_shift, (void *) 4);
+ orc_rule_register (rule_set, "shrsl", mmx_rule_shift, (void *) 5);
+ orc_rule_register (rule_set, "shlq", mmx_rule_shift, (void *) 6);
+ orc_rule_register (rule_set, "shruq", mmx_rule_shift, (void *) 7);
orc_rule_register (rule_set, "shrsq", mmx_rule_shrsq, NULL);
orc_rule_register (rule_set, "convsbw", mmx_rule_convsbw, NULL);
@@ -2831,8 +2795,8 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
/* These require the SSE2 flag, although could be used with MMX.
That flag is not yet handled. */
orc_rule_register (rule_set, "mululq", mmx_rule_mululq, NULL);
- REG(addq);
- REG(subq);
+ REG (addq);
+ REG (subq);
orc_rule_register (rule_set, "addf", mmx_rule_addf, NULL);
orc_rule_register (rule_set, "subf", mmx_rule_subf, NULL);
@@ -2917,17 +2881,17 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
/* SSE 3 -- no rules */
/* SSSE 3 */
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target,
ORC_TARGET_MMX_SSSE3);
#ifndef MMX
- orc_rule_register (rule_set, "signb", mmx_rule_signX_ssse3, (void *)0);
- orc_rule_register (rule_set, "signw", mmx_rule_signX_ssse3, (void *)1);
- orc_rule_register (rule_set, "signl", mmx_rule_signX_ssse3, (void *)2);
+ orc_rule_register (rule_set, "signb", mmx_rule_signX_ssse3, (void *) 0);
+ orc_rule_register (rule_set, "signw", mmx_rule_signX_ssse3, (void *) 1);
+ orc_rule_register (rule_set, "signl", mmx_rule_signX_ssse3, (void *) 2);
#endif
- REG(absb);
- REG(absw);
- REG(absl);
+ REG (absb);
+ REG (absw);
+ REG (absl);
#ifndef MMX
orc_rule_register (rule_set, "swapw", mmx_rule_swapw_ssse3, NULL);
orc_rule_register (rule_set, "swapl", mmx_rule_swapl_ssse3, NULL);
@@ -2940,18 +2904,18 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
#endif
/* SSE 4.1 */
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target,
ORC_TARGET_MMX_SSE4_1);
- REG(maxsb);
- REG(minsb);
- REG(maxuw);
- REG(minuw);
- REG(maxsl);
- REG(maxul);
- REG(minsl);
- REG(minul);
- REG(mulll);
+ REG (maxsb);
+ REG (minsb);
+ REG (maxuw);
+ REG (minuw);
+ REG (maxsl);
+ REG (maxul);
+ REG (minsl);
+ REG (minul);
+ REG (mulll);
orc_rule_register (rule_set, "convsbw", mmx_rule_convsbw_mmx41, NULL);
orc_rule_register (rule_set, "convswl", mmx_rule_convswl_mmx41, NULL);
orc_rule_register (rule_set, "convslq", mmx_rule_convslq_mmx41, NULL);
@@ -2963,14 +2927,13 @@ orc_compiler_mmx_register_rules (OrcTarget *target)
#ifndef MMX
orc_rule_register (rule_set, "mulhsl", mmx_rule_mulhsl, NULL);
#endif
- REG(cmpeqq);
+ REG (cmpeqq);
/* SSE 4.2 -- no rules */
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target,
ORC_TARGET_MMX_SSE4_2);
- REG(cmpgtsq);
+ REG (cmpgtsq);
/* SSE 4a -- no rules */
}
-