From: David Schleef Date: Tue, 3 Aug 2010 07:45:25 +0000 (-0700) Subject: sse: Fix accsadubl rule X-Git-Tag: orc-0.4.7~78 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24ea32efb297949840b79522c556a9046fc4452c;p=platform%2Fupstream%2Forc.git sse: Fix accsadubl rule --- diff --git a/orc/orcrules-sse.c b/orc/orcrules-sse.c index 556f3f6..afbc9d2 100644 --- a/orc/orcrules-sse.c +++ b/orc/orcrules-sse.c @@ -306,22 +306,12 @@ sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX int tmp2 = X86_XMM7; - if (p->loop_shift == 0) { - orc_sse_emit_movdqa (p, src1, tmp); - orc_sse_emit_pslldq (p, 15, tmp); - orc_sse_emit_movdqa (p, src2, tmp2); - orc_sse_emit_pslldq (p, 15, tmp2); - orc_sse_emit_psadbw (p, tmp2, tmp); - } else if (p->loop_shift == 1) { + if (p->loop_shift <= 2) { orc_sse_emit_movdqa (p, src1, tmp); - orc_sse_emit_pslldq (p, 14, tmp); + orc_sse_emit_pslldq (p, 16 - (1<loop_shift), tmp); orc_sse_emit_movdqa (p, src2, tmp2); - orc_sse_emit_pslldq (p, 14, tmp2); + orc_sse_emit_pslldq (p, 16 - (1<loop_shift), tmp2); orc_sse_emit_psadbw (p, tmp2, tmp); - } else if (p->loop_shift == 2) { - orc_sse_emit_movdqa (p, src1, tmp); - orc_sse_emit_psadbw (p, src2, tmp); - orc_sse_emit_pslldq (p, 12, tmp); } else if (p->loop_shift == 3) { orc_sse_emit_movdqa (p, src1, tmp); orc_sse_emit_psadbw (p, src2, tmp);