From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KaHsm-0004bV-NI for qemu-devel@nongnu.org; Mon, 01 Sep 2008 18:28:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KaHsk-0004b5-RN for qemu-devel@nongnu.org; Mon, 01 Sep 2008 18:28:23 -0400 Received: from [199.232.76.173] (port=56149 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KaHsk-0004b2-LF for qemu-devel@nongnu.org; Mon, 01 Sep 2008 18:28:22 -0400 Received: from csl.cornell.edu ([128.84.224.10]:1656 helo=vlsi.csl.cornell.edu) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KaHsk-0006s8-7Q for qemu-devel@nongnu.org; Mon, 01 Sep 2008 18:28:22 -0400 Received: from stanley.csl.cornell.edu (stanley.csl.cornell.edu [128.84.224.15]) by vlsi.csl.cornell.edu (8.13.4/8.13.4) with ESMTP id m81MSG0X016842 for ; Mon, 1 Sep 2008 18:28:21 -0400 (EDT) Date: Mon, 1 Sep 2008 18:28:16 -0400 (EDT) From: Vince Weaver Subject: Re: [Qemu-devel] [5123] Fix y register loads and stores In-Reply-To: <20080901173717.J84348@stanley.csl.cornell.edu> Message-ID: <20080901182340.H84348@stanley.csl.cornell.edu> References: <20080901173717.J84348@stanley.csl.cornell.edu> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed 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 > I think something is still odd with the 64-bit multiply code (the rest of the > tcg instructions seem to work fine). I found the problem (this required writing some x86_64 assembly routines with pasted in values from out_asm results). The problem is that my test case does a signed multiply of 0x386d4380 x 0xc22e4507 These should both be sign extended, but for some reason despite the tcg_gen_ext_tl_i64(r_temp, src2); tcg_gen_ext_tl_i64(r_temp2, src1); calls in gen_op_smul() the values aren't sign extended. This matters for the second operand, and thus we get the wrong result. It wasn't easy to see this with the remote-gdb stuff because annoyingly I can't get gdb to display the 64-bit register contents when using sparcv8plus binaries. So something is wrong with the sign extension. Unfortunately I won't have time to look into this more until tomorrow, but I wanted to just get this out there. Vince