From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9q0T-0007LE-AT for qemu-devel@nongnu.org; Tue, 12 Apr 2011 22:40:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q9q0S-0006Th-Ac for qemu-devel@nongnu.org; Tue, 12 Apr 2011 22:40:37 -0400 Received: from mail.codesourcery.com ([38.113.113.100]:46128) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9q0R-0006TK-Vj for qemu-devel@nongnu.org; Tue, 12 Apr 2011 22:40:36 -0400 Date: Tue, 12 Apr 2011 19:40:33 -0700 From: Nathan Froyd Message-ID: <20110413024032.GS23480@codesourcery.com> References: <1302645571-20500-1-git-send-email-aurelien@aurel32.net> <1302645571-20500-18-git-send-email-aurelien@aurel32.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1302645571-20500-18-git-send-email-aurelien@aurel32.net> Subject: Re: [Qemu-devel] [PATCH 17/19] target-ppc: fix SPE comparison functions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: qemu-devel@nongnu.org, Alexander Graf On Tue, Apr 12, 2011 at 11:59:29PM +0200, Aurelien Jarno wrote: > Given that float32_*() functions are IEEE754 compliant, the efscmp*() > functions are correctly implemented, while efstst*() are not. This > patch reverse the implementation of this two groups of functions and > fix the comments. It also use float32_eq() instead of float32_eq_quiet() > as qNaNs should not be ignored. Thanks for addressing this; the E500 emulation in QEMU is more like how we wish the hardware acted, rather than how it actually acts. :) It's late here, but I think this change: > -static inline uint32_t efscmplt(uint32_t op1, uint32_t op2) > +static inline uint32_t efststlt(uint32_t op1, uint32_t op2) > { > - /* XXX: TODO: test special values (NaN, infinites, ...) */ > + /* XXX: TODO: ignore special values (NaN, infinites, ...) */ > return efststlt(op1, op2); > } is not correct, as you've just turned this into an infinite (inlined!) loop. You'd want to change the efststlt call into an efscmplt call. Similarly for efstst{gt,eq}. -Nathan