From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Fsqcr-0003TG-OH for qemu-devel@nongnu.org; Tue, 20 Jun 2006 20:31:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Fsqcq-0003SE-El for qemu-devel@nongnu.org; Tue, 20 Jun 2006 20:31:21 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Fsqcq-0003SB-6a for qemu-devel@nongnu.org; Tue, 20 Jun 2006 20:31:20 -0400 Received: from [81.103.221.48] (helo=mtaout02-winn.ispmail.ntl.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FsqnT-0003ji-C8 for qemu-devel@nongnu.org; Tue, 20 Jun 2006 20:42:19 -0400 Received: from aamtaout03-winn.ispmail.ntl.com ([81.103.221.35]) by mtaout02-winn.ispmail.ntl.com with ESMTP id <20060621003117.PVDV27023.mtaout02-winn.ispmail.ntl.com@aamtaout03-winn.ispmail.ntl.com> for ; Wed, 21 Jun 2006 01:31:17 +0100 Received: from suse10.valgrind.org ([82.21.96.252]) by aamtaout03-winn.ispmail.ntl.com with ESMTP id <20060621003117.UDHZ16286.aamtaout03-winn.ispmail.ntl.com@suse10.valgrind.org> for ; Wed, 21 Jun 2006 01:31:17 +0100 From: Julian Seward Subject: Re: [Qemu-devel] cvttps2dq, movdq2q, movq2dq incorrect behaviour Date: Wed, 21 Jun 2006 01:31:06 +0100 References: <200606201154.40985.jseward@acm.org> <200606201248.36106.jseward@acm.org> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200606210131.06270.jseward@acm.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Malc, your sse-movq.patch works for me. Thanks. > soft-float was a red herring, translate.c is at fault here (interpreter > does not use it, hence behaved correctly) > > translate.c:3009 > if (b1 >= 2 && ((b >= 0x50 && b <= 0x5f) || > b == 0xc2)) { > /* specific case for SSE single instructions */ > if (b1 == 2) { > /* 32 bit access */ > gen_op_ld_T0_A0[OT_LONG + s->mem_index](); > gen_op_movl_env_T0(offsetof(CPUX86State,xmm_t0.XMM_L(0))); > } else { > /* 64 bit access */ > gen_ldq_env_A0[s->mem_index >> > 2](offsetof(CPUX86State,xmm_t0.XMM_D(0))); } > } else { > gen_ldo_env_A0[s->mem_index >> 2](op2_offset); > } > > cvttps2dq is 0x5b(b=0x5b) with repn prefix (b1=2) the above code is > optimized a bit more than it should have been, as it loads only 4 bytes > into xmm_t0 instead of 16. Uh, fine, but I don't understand how/what to fix. Can you advise? J