qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [RFC 00/12] target-ppc: Decimal Floating Poi


From: Alexander Graf
Subject: Re: [Qemu-devel] [Qemu-ppc] [RFC 00/12] target-ppc: Decimal Floating Point
Date: Fri, 11 Apr 2014 17:31:50 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.4.0


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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]