From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43726) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WYdQu-0003hW-Sh for qemu-devel@nongnu.org; Fri, 11 Apr 2014 11:32:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WYdQn-0000z9-2l for qemu-devel@nongnu.org; Fri, 11 Apr 2014 11:32:00 -0400 Message-ID: <53480AE6.5010304@suse.de> Date: Fri, 11 Apr 2014 17:31:50 +0200 From: Alexander Graf MIME-Version: 1.0 References: <1394723588-6072-1-git-send-email-tommusta@gmail.com> In-Reply-To: <1394723588-6072-1-git-send-email-tommusta@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Qemu-ppc] [RFC 00/12] target-ppc: Decimal Floating Point List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Tom Musta , qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org On 13.03.14 16:12, Tom Musta wrote: > This patch series provides a prototype of Decimal Floating Point (DFP) instruction > support in QEMU. The topic was briefly discussed here: > http://lists.nongnu.org/archive/html/qemu-ppc/2014-02/msg00129.html > > > I. Overview > > The core of the DFP model is a library named libdecnumber, which is a sub-library > of GCC's libdfp. Libdecnumber's model uses an expanded internal representation > of a decimal floating point number as: > > - exponent (base 10) > - the number of digits (aka declets) > - flags (sign bit and "special" bits for NaNs and infinities) > - an array of units. Each unit contains DECPUN declets. > > Libdecnumber provides routines for various arithmetic operations (e.g. decNumberAdd for > addition) as well as converters for going to/from binary form. > > PowerPC's support of DFP uses Densely Packed Decimal (DPD) format. The standard floating > point registers are re-used to hold DFP operands. There are typically PowerPC instructions > for both the long (64 bit) and extended (128 bit, aka quad) formats. The extended format > instructions use adjacent pairs of FPRs to hold the 128 bit operands. > > > II. A Simple Example > > PowerPC DFP instructions are implemented using helpers, which in turn use libdecnumber > routines to perform the detailed computations. This is similar to how softfloat is used > to model binary floating point instructions. > > For example, the implementation of the helper for DFP Add Long (dadd) looks like this: > > 1) Establish a libdecnumber context for 64-bit computation (decContext) > 2) Convert the two source FPRs from DPD to decNumbers (the expanded internal representation) > 3) Invoke the add operation (decNumberAdd) > 4) Inspect the context's flags for various exception situations (e.g. overflow), mapping > them to the corresponding FPSCR status flags. > 5) Convert the summand to DPD form and store into the target FPR. > > The helper for the DPD Add Extended (daddq) is nearly identical. It differs only in that > it establishes a 128 bit context and the conversions are from and to 128 bit DPD format. > > > III. Integration of libdecnumber in QEMU > > The appoach taken here is direct and simple: > > 1) A copy of libdecnumber code is imported into QEMU. The header files are placed under I don't think this is possible. Libdecnumber is GPLv3+ code while QEMU overall is licensed at GPLv2 only. Gotta love licenses... Is there an older, GPLv2 licensed version available? Alex