From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Km5OV-0003cV-LS for qemu-devel@nongnu.org; Sat, 04 Oct 2008 07:33:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Km5OU-0003cJ-Br for qemu-devel@nongnu.org; Sat, 04 Oct 2008 07:33:55 -0400 Received: from [199.232.76.173] (port=47025 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Km5OU-0003cG-8j for qemu-devel@nongnu.org; Sat, 04 Oct 2008 07:33:54 -0400 Received: from savannah.gnu.org ([199.232.41.3]:49361 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Km5OT-0000d7-Uf for qemu-devel@nongnu.org; Sat, 04 Oct 2008 07:33:54 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1Km5OT-0002Oh-2p for qemu-devel@nongnu.org; Sat, 04 Oct 2008 11:33:53 +0000 Received: from balrog by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1Km5OS-0002OZ-KY for qemu-devel@nongnu.org; Sat, 04 Oct 2008 11:33:52 +0000 MIME-Version: 1.0 Errors-To: balrog Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Andrzej Zaborowski Message-Id: Date: Sat, 04 Oct 2008 11:33:52 +0000 Subject: [Qemu-devel] [5417] Fix crc32w decoding, fix a constant width in blendvpd. 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 Revision: 5417 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5417 Author: balrog Date: 2008-10-04 11:33:52 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Fix crc32w decoding, fix a constant width in blendvpd. Forced the constant's width to long long so that it doesn't overflow, problem spotted by C. W. Betts. Modified Paths: -------------- trunk/target-i386/ops_sse.h trunk/target-i386/translate.c Modified: trunk/target-i386/ops_sse.h =================================================================== --- trunk/target-i386/ops_sse.h 2008-10-04 07:25:46 UTC (rev 5416) +++ trunk/target-i386/ops_sse.h 2008-10-04 11:33:52 UTC (rev 5417) @@ -1481,7 +1481,7 @@ /* SSE4.1 op helpers */ #define FBLENDVB(d, s, m) (m & 0x80) ? s : d #define FBLENDVPS(d, s, m) (m & 0x80000000) ? s : d -#define FBLENDVPD(d, s, m) (m & 0x8000000000000000) ? s : d +#define FBLENDVPD(d, s, m) (m & 0x8000000000000000LL) ? s : d SSE_HELPER_V(helper_pblendvb, B, 16, FBLENDVB) SSE_HELPER_V(helper_blendvps, L, 4, FBLENDVPS) SSE_HELPER_V(helper_blendvpd, Q, 2, FBLENDVPD) Modified: trunk/target-i386/translate.c =================================================================== --- trunk/target-i386/translate.c 2008-10-04 07:25:46 UTC (rev 5416) +++ trunk/target-i386/translate.c 2008-10-04 11:33:52 UTC (rev 5417) @@ -3568,17 +3568,16 @@ reg = ((modrm >> 3) & 7) | rex_r; gen_op_mov_reg_T0(OT_LONG, reg); break; - case 0x038: case 0x138: + if (s->prefix & PREFIX_REPNZ) + goto crc32; + case 0x038: b = modrm; modrm = ldub_code(s->pc++); rm = modrm & 7; reg = ((modrm >> 3) & 7) | rex_r; mod = (modrm >> 6) & 3; - if (s->prefix & PREFIX_REPNZ) - goto crc32; - sse_op2 = sse_op_table6[b].op[b1]; if (!sse_op2) goto illegal_op;