From 2b8d7e9d728fe2b7c8ffb9859368fb2b5c0bf833 Mon Sep 17 00:00:00 2001 From: Aurelien Jarno Date: Tue, 26 Mar 2013 19:56:01 +0100 Subject: target-i386: SSE4.2: fix pcmpXstrm instructions pcmpXstrm instructions returns their result in the XMM0 register and not in the first operand. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno --- target-i386/ops_sse.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'target-i386/ops_sse.h') diff --git a/target-i386/ops_sse.h b/target-i386/ops_sse.h index 0667c879ca..4a95f4130a 100644 --- a/target-i386/ops_sse.h +++ b/target-i386/ops_sse.h @@ -2116,16 +2116,16 @@ void glue(helper_pcmpestrm, SUFFIX)(CPUX86State *env, Reg *d, Reg *s, if ((ctrl >> 6) & 1) { if (ctrl & 1) { for (i = 0; i < 8; i++, res >>= 1) { - d->W(i) = (res & 1) ? ~0 : 0; + env->xmm_regs[0].W(i) = (res & 1) ? ~0 : 0; } } else { for (i = 0; i < 16; i++, res >>= 1) { - d->B(i) = (res & 1) ? ~0 : 0; + env->xmm_regs[0].B(i) = (res & 1) ? ~0 : 0; } } } else { - d->Q(1) = 0; - d->Q(0) = res; + env->xmm_regs[0].Q(1) = 0; + env->xmm_regs[0].Q(0) = res; } } @@ -2154,16 +2154,16 @@ void glue(helper_pcmpistrm, SUFFIX)(CPUX86State *env, Reg *d, Reg *s, if ((ctrl >> 6) & 1) { if (ctrl & 1) { for (i = 0; i < 8; i++, res >>= 1) { - d->W(i) = (res & 1) ? ~0 : 0; + env->xmm_regs[0].W(i) = (res & 1) ? ~0 : 0; } } else { for (i = 0; i < 16; i++, res >>= 1) { - d->B(i) = (res & 1) ? ~0 : 0; + env->xmm_regs[0].B(i) = (res & 1) ? ~0 : 0; } } } else { - d->Q(1) = 0; - d->Q(0) = res; + env->xmm_regs[0].Q(1) = 0; + env->xmm_regs[0].Q(0) = res; } } -- cgit v1.2.3