From: Wim Taymans Date: Sat, 12 Sep 2009 12:57:27 +0000 (+0200) Subject: rules-mmx: convert to convenience macros X-Git-Tag: merge-base~70 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=733decbdd9234e996569043d8163ca01d5d4bbe1;p=platform%2Fupstream%2Forc.git rules-mmx: convert to convenience macros --- diff --git a/orc/orcrules-mmx.c b/orc/orcrules-mmx.c index ee8ac32..df1e7fb 100644 --- a/orc/orcrules-mmx.c +++ b/orc/orcrules-mmx.c @@ -20,7 +20,7 @@ void orc_mmx_emit_loadil (OrcCompiler *p, int reg, int value) { if (value == 0) { - orc_mmx_emit_660f (p, "pxor", 0xef, reg, reg); + orc_mmx_instr_pxor (p, reg, reg); } else { orc_x86_emit_mov_imm_reg (p, 4, value, p->gp_tmpreg); orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, reg); @@ -52,7 +52,7 @@ orc_mmx_emit_loadpb (OrcCompiler *p, int reg, int param) (int)ORC_STRUCT_OFFSET(OrcExecutor, params[param]), p->exec_reg, reg, FALSE); - orc_mmx_emit_660f (p, "punpcklbw", 0x60, reg, reg); + orc_mmx_instr_punpcklbw (p, reg, reg); orc_mmx_emit_pshufw (p, 0, reg, reg); } @@ -88,7 +88,7 @@ orc_mmx_emit_loadpq (OrcCompiler *p, int reg, int param) static void mmx_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_0f (p, "movq", 0x6f, + orc_mmx_instr_movq (p, p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } @@ -179,7 +179,7 @@ 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; - orc_mmx_emit_660f (p, "paddw", 0xfd, src, dest); + orc_mmx_instr_paddw (p, src, dest); } static void @@ -188,7 +188,7 @@ 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; - orc_mmx_emit_660f (p, "paddd", 0xfe, src, dest); + orc_mmx_instr_paddd (p, src, dest); } static void @@ -198,14 +198,15 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) int src2 = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; - orc_mmx_emit_660f (p, "movq", 0x6f, src1, p->tmpreg); - orc_mmx_emit_660f (p, "psadbw", 0xf6, src2, p->tmpreg); - orc_mmx_emit_660f (p, "paddd", 0xfe, p->tmpreg, dest); + orc_mmx_instr_movq (p, src1, p->tmpreg); + orc_mmx_instr_psadbw (p, src2, p->tmpreg); + orc_mmx_instr_paddd (p, p->tmpreg, dest); } static void mmx_rule_signX (OrcCompiler *p, void *user, OrcInstruction *insn) { + int type = ORC_PTR_TO_INT(user); int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int imm_vals[] = { 0x01010101, 0x00010001, 0x00000001 }; @@ -213,16 +214,16 @@ mmx_rule_signX (OrcCompiler *p, void *user, OrcInstruction *insn) int codes[] = { 0x3808, 0x3809, 0x380a }; if (src == dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, p->tmpreg); + orc_mmx_instr_movq (p, src, p->tmpreg); src = p->tmpreg; } - orc_x86_emit_mov_imm_reg (p, 4, imm_vals[ORC_PTR_TO_INT(user)], p->gp_tmpreg); + orc_x86_emit_mov_imm_reg (p, 4, imm_vals[type], p->gp_tmpreg); orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, dest); orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,1,0), dest, dest); - orc_mmx_emit_660f (p, names[ORC_PTR_TO_INT(user)], codes[ORC_PTR_TO_INT(user)], src, dest); + orc_mmx_emit_660f (p, names[type], codes[type], src, dest); } static void @@ -256,41 +257,40 @@ mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) static void mmx_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_660f (p, "punpcklbw", 0x60, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; - orc_mmx_emit_shiftimm (p, "psraw", 0x71, 4, 8, - p->vars[insn->dest_args[0]].alloc); + orc_mmx_instr_punpcklbw (p, src, dest); + orc_mmx_instr_psraw (p, 8, dest); } static void mmx_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) { - /* FIXME should do this by unpacking with a zero reg */ - - orc_mmx_emit_660f (p, "punpcklbw", 0x60, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; - orc_mmx_emit_shiftimm (p, "psrlw", 0x71, 2, 8, - p->vars[insn->dest_args[0]].alloc); + /* FIXME should do this by unpacking with a zero reg */ + orc_mmx_instr_punpcklbw (p, src, dest); + orc_mmx_instr_psrlw (p, 8, dest); } static void mmx_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_660f (p, "packsswb", 0x63, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; + + orc_mmx_instr_packsswb (p, src, dest); } static void mmx_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_660f (p, "packuswb", 0x67, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; + + orc_mmx_instr_packuswb (p, src, dest); } static void @@ -302,40 +302,33 @@ mmx_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) /* FIXME slow */ if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "psllw", 0x71, 6, 8, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_shiftimm (p, "psrlw", 0x71, 2, 8, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_660f (p, "packuswb", 0x67, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + orc_mmx_instr_psllw (p, 8, dest); + orc_mmx_instr_psrlw (p, 8, dest); + orc_mmx_instr_packuswb (p, dest, dest); } static void mmx_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_660f (p, "punpcklwd", 0x61, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; - orc_mmx_emit_shiftimm (p, "psrad", 0x72, 4, 16, - p->vars[insn->dest_args[0]].alloc); + orc_mmx_instr_punpcklwd (p, src, dest); + orc_mmx_instr_psrad (p, 16, dest); } static void mmx_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) { - /* FIXME should do this by unpacking with a zero reg */ - - orc_mmx_emit_660f (p, "punpcklwd", 0x61, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; - orc_mmx_emit_shiftimm (p, "psrld", 0x72, 2, 16, - p->vars[insn->dest_args[0]].alloc); + /* FIXME should do this by unpacking with a zero reg */ + orc_mmx_instr_punpcklwd (p, src, dest); + orc_mmx_instr_psrld (p, 16, dest); } static void @@ -345,24 +338,22 @@ mmx_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; /* FIXME slow */ - if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "pslld", 0x72, 6, 16, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_shiftimm (p, "psrad", 0x72, 4, 16, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_660f (p, "packssdw", 0x6b, dest, dest); + orc_mmx_instr_pslld (p, 16, dest); + orc_mmx_instr_psrad (p, 16, dest); + orc_mmx_instr_packssdw (p, dest, dest); } static void mmx_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) { - orc_mmx_emit_660f (p, "packssdw", 0x6b, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + int src = p->vars[insn->src_args[0]].alloc; + int dest = p->vars[insn->dest_args[0]].alloc; + + orc_mmx_instr_packssdw (p, src, dest); } static void @@ -372,10 +363,10 @@ mmx_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; int tmp = p->tmpreg; - orc_mmx_emit_660f (p, "movq", 0x6f, dest, tmp); - orc_mmx_emit_660f (p, "pmulhw", 0xe5, src, tmp); - orc_mmx_emit_660f (p, "pmullw", 0xd5, src, dest); - orc_mmx_emit_660f (p, "punpcklwd", 0x61, tmp, dest); + orc_mmx_instr_movq (p, dest, tmp); + orc_mmx_instr_pmulhw (p, src, tmp); + orc_mmx_instr_pmullw (p, src, dest); + orc_mmx_instr_punpcklwd (p, tmp, dest); } static void @@ -388,12 +379,12 @@ mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) /* same as convlw */ if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "pslld", 0x72, 6, 16, dest); - orc_mmx_emit_shiftimm (p, "psrad", 0x72, 4, 16, dest); - orc_mmx_emit_660f (p, "packssdw", 0x6b, dest, dest); + orc_mmx_instr_pslld (p, 16, dest); + orc_mmx_instr_psrad (p, 16, dest); + urc_mmx_instr_ackssdw (p, dest, dest); } static void @@ -405,11 +396,11 @@ mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) /* FIXME slow */ if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "psrad", 0x72, 4, 16, dest); - orc_mmx_emit_660f (p, "packssdw", 0x6b, dest, dest); + orc_mmx_instr_psrad (p, 16, dest); + orc_mmx_instr_packssdw (p, dest, dest); } static void @@ -422,12 +413,12 @@ mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) /* same as convwb */ if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "psllw", 0x71, 6, 8, dest); - orc_mmx_emit_shiftimm (p, "psraw", 0x71, 4, 8, dest); - orc_mmx_emit_660f (p, "packsswb", 0x63, dest, dest); + orc_mmx_instr_psllw (p, 8, dest); + orc_mmx_instr_psraw (p, 8, dest); + orc_mmx_instr_packsswb (p, dest, dest); } static void @@ -439,11 +430,11 @@ mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) /* FIXME slow */ if (dest != src) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } - orc_mmx_emit_shiftimm (p, "psraw", 0x71, 4, 8, dest); - orc_mmx_emit_660f (p, "packsswb", 0x63, dest, dest); + orc_mmx_instr_psraw (p, 8, dest); + orc_mmx_instr_packsswb (p, dest, dest); } static void @@ -452,7 +443,7 @@ 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; - orc_mmx_emit_660f (p, "punpcklbw", 0x60, src, dest); + orc_mmx_instr_punpcklbw (p, src, dest); } static void @@ -461,7 +452,7 @@ 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; - orc_mmx_emit_660f (p, "punpcklwd", 0x61, src, dest); + orc_mmx_instr_punpcklwd (p, src, dest); } static void @@ -471,13 +462,13 @@ mmx_emit_load_mask (OrcCompiler *p, unsigned int mask1, unsigned int mask2) int tmp2 = X86_MM7; orc_x86_emit_mov_imm_reg (p, 4, mask1, p->gp_tmpreg); - orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, p->tmpreg); + orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, tmp); orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,1,0), tmp, tmp); orc_x86_emit_mov_imm_reg (p, 4, mask2, p->gp_tmpreg); orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, tmp2); - orc_mmx_emit_660f (p, "punpcklbw", 0x60, tmp2, tmp2); - orc_mmx_emit_660f (p, "punpcklwd", 0x61, tmp2, tmp2); - orc_mmx_emit_660f (p, "paddb", 0xfc, tmp2, tmp); + orc_mmx_instr_punpcklbw (p, tmp2, tmp2); + orc_mmx_instr_punpcklwd (p, tmp2, tmp2); + orc_mmx_instr_paddb (p, tmp2, tmp); } static void @@ -492,7 +483,7 @@ mmx_rule_select0lw_sse3 (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x05040100, 0x08000800); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); @@ -510,7 +501,7 @@ mmx_rule_select1lw_sse3 (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x07060302, 0x08000800); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); @@ -528,7 +519,7 @@ mmx_rule_select0wb_sse3 (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x06040200, 0x08000800); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); @@ -546,7 +537,7 @@ mmx_rule_select1wb_sse3 (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x07050301, 0x08000800); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); @@ -566,7 +557,7 @@ mmx_rule_swapw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x02030001, 0x0c080400); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); } @@ -583,7 +574,7 @@ mmx_rule_swapl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) mmx_emit_load_mask (p, 0x00010203, 0x0c080400); if (src != dest) { - orc_mmx_emit_660f (p, "movq", 0x6f, src, dest); + orc_mmx_instr_movq (p, src, dest); } orc_mmx_emit_660f (p, "pshufb", 0x3800, tmp, dest); } @@ -598,11 +589,11 @@ mmx_rule_maxuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_x86_emit_mov_imm_reg (p, 4, 0x80008000, p->gp_tmpreg); orc_x86_emit_mov_reg_mmx (p, p->gp_tmpreg, tmp); orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,1,0), tmp, tmp); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); - orc_mmx_emit_660f (p, "pmaxsw", 0xee, src, dest); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); + orc_mmx_instr_pmaxsw (p, src, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); } static void @@ -614,11 +605,11 @@ mmx_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_loadiw (p, tmp, 0x8000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); - orc_mmx_emit_660f (p, "pminsw", 0xea, src, dest); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); + orc_mmx_instr_pminsw (p, src, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); } static void @@ -630,11 +621,11 @@ mmx_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_loadib (p, tmp, 0x80); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); - orc_mmx_emit_660f (p, "pavgb", 0xe0, src, dest); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); + orc_mmx_instr_pavgb (p, src, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); } static void @@ -646,11 +637,11 @@ mmx_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_loadiw (p, tmp, 0x8000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); - orc_mmx_emit_660f (p, "pavgw", 0xe3, src, dest); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); + orc_mmx_instr_pavgw (p, src, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); } static void @@ -660,11 +651,11 @@ mmx_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; int tmp = p->tmpreg; - orc_mmx_emit_660f (p, "movq", 0x6f, dest, tmp); - orc_mmx_emit_660f (p, "pcmpgtb", 0x64, src, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, dest, tmp); + orc_mmx_instr_pcmpgtb (p, src, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); } static void @@ -674,11 +665,11 @@ mmx_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; int tmp = p->tmpreg; - orc_mmx_emit_660f (p, "movq", 0x6f, src, tmp); - orc_mmx_emit_660f (p, "pcmpgtb", 0x64, dest, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, src, tmp); + orc_mmx_instr_pcmpgtb (p, dest, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); } static void @@ -688,11 +679,11 @@ mmx_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; int tmp = p->tmpreg; - orc_mmx_emit_660f (p, "movq", 0x6f, dest, tmp); - orc_mmx_emit_660f (p, "pcmpgtd", 0x66, src, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, dest, tmp); + orc_mmx_instr_pcmpgtd (p, src, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); } static void @@ -702,11 +693,11 @@ mmx_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int dest = p->vars[insn->dest_args[0]].alloc; int tmp = p->tmpreg; - orc_mmx_emit_660f (p, "movq", 0x6f, src, tmp); - orc_mmx_emit_660f (p, "pcmpgtd", 0x66, dest, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, src, tmp); + orc_mmx_instr_pcmpgtd (p, dest, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); } static void @@ -717,18 +708,18 @@ mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmp = p->tmpreg; orc_mmx_emit_loadil (p, tmp, 0x80000000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); - orc_mmx_emit_660f (p, "movq", 0x6f, dest, tmp); - orc_mmx_emit_660f (p, "pcmpgtd", 0x66, src, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, dest, tmp); + orc_mmx_instr_pcmpgtd (p, src, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); orc_mmx_emit_loadil (p, tmp, 0x80000000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); } static void @@ -739,18 +730,18 @@ mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmp = p->tmpreg; orc_mmx_emit_loadil (p, tmp, 0x80000000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); - orc_mmx_emit_660f (p, "movq", 0x6f, src, tmp); - orc_mmx_emit_660f (p, "pcmpgtd", 0x66, dest, tmp); - orc_mmx_emit_660f (p, "pand", 0xdb, tmp, dest); - orc_mmx_emit_660f (p, "pandn", 0xdf, src, tmp); - orc_mmx_emit_660f (p, "por", 0xeb, tmp, dest); + orc_mmx_instr_movq (p, src, tmp); + orc_mmx_instr_pcmpgtd (p, dest, tmp); + orc_mmx_instr_pand (p, tmp, dest); + orc_mmx_instr_pandn (p, src, tmp); + orc_mmx_instr_por (p, tmp, dest); orc_mmx_emit_loadil (p, tmp, 0x80000000); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, src); - orc_mmx_emit_660f (p, "pxor", 0xef, tmp, dest); + orc_mmx_instr_pxor (p, tmp, src); + orc_mmx_instr_pxor (p, tmp, dest); }