[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [V2 PATCH 00/37] target-ppc: Decimal Floating Point
From: |
Tom Musta |
Subject: |
[Qemu-ppc] [V2 PATCH 00/37] target-ppc: Decimal Floating Point |
Date: |
Mon, 21 Apr 2014 15:54:44 -0500 |
This patch series adds emulation of the PowerPC Decimal Floating Point (DFP)
instructions.
The complete set of DFP instructions defined by the Power ISA is introduced.
The foundation of the emulation code is libdecnumber, a software library that
models DFP
numbers and operations in a manner similar to how softfloat models IEEE Binary
Floating
Point. A subset of the libdecnumber source (from GCC) is dropped into the QEMU
source tree
and modified slightly; only libdecnumber files containing code that is required
to implement
the PowerPC DFP instructions are copied.
The DFP instructions are implemented via helpers. A typical helper does the
following:
- The contents of the source registers (PPC FPRs) are converted to
libdecnumber's
internal representation, the decNumber type. Inputs are either 64 bit
(Long)
or 128 bit (Extended or Quad) densely packed decimal (DPD), depending on
the specific
instruction being emulated.
- A libdecnumber operation is invoked, producing a decNumber result as well
as status
flags.
- A chain of post-processors is executed to convert status flags and/or input
and output
data to PPC status (usually FPSCR bits).
- The decNumber result is converted back to DPD format and written into the
target
FPR(s).
V2:
- modified post-processor handling per Richard Henderson's comments;
eliminated the use
of lists of function pointers, replacing with aggregated, static functions.
- cleaned up int64 to decNumber converter.
Tom Musta (37):
libdecnumber: Introduce libdecnumber Code
libdecnumber: Eliminate #include *Symbols.h
libdecnumber: Prepare libdecnumber for QEMU include structure
libdecnumber: Modify dconfig.h to Integrate with QEMU
libdecnumber: Change gstdint.h to stdint.h
libdecnumber: Eliminate redundant declarations
libdecnumber: Eliminate Unused Variable in decSetSubnormal
target-ppc: Enable Building of libdecnumber
libdecnumber: Introduce decNumberFrom[U]Int64
libdecnumber: Introduce decNumberIntegralToInt64
libdecnumber: Fix decNumberSetBCD
target-ppc: Define FPR Pointer Type for Helpers
target-ppc: Introduce Generator Macros for DFP Arithmetic Forms
target-ppc: Introduce Decoder Macros for DFP
target-ppc: Introduce DFP Helper Utilities
target-ppc: Introduce DFP Post Processor Utilities
target-ppc: Introduce DFP Add
target-ppc: Introduce DFP Subtract
target-ppc: Introduce DFP Multiply
target-ppc: Introduce DFP Divide
target-ppc: Introduce DFP Compares
target-ppc: Introduce DFP Test Data Class
target-ppc: Introduce DFP Test Data Group
target-ppc: Introduce DFP Test Exponent
target-ppc: Introduce DFP Test Significance
target-ppc: Introduce DFP Quantize
target-ppc: Introduce DFP Reround
target-ppc: Introduce DFP Round to Integer
target-ppc: Introduce DFP Convert to Long/Extended
target-ppc: Introduce Round to DFP Short/Long
target-ppc: Introduce DFP Convert to Fixed
target-ppc: Introduce DFP Convert to Fixed
target-ppc: Introduce DFP Decode DPD to BCD
target-ppc: Introduce DFP Encode BCD to DPD
target-ppc: Introduce DFP Extract Biased Exponent
target-ppc: Introduce DFP Insert Biased Exponent
target-ppc: Introduce DFP Shift Significand
Makefile.target | 6 +
default-configs/ppc-linux-user.mak | 1 +
default-configs/ppc-softmmu.mak | 1 +
default-configs/ppc64-linux-user.mak | 1 +
default-configs/ppc64-softmmu.mak | 1 +
include/libdecnumber/dconfig.h | 40 +
include/libdecnumber/decContext.h | 257 +
include/libdecnumber/decDPD.h | 1215 +++++
include/libdecnumber/decNumber.h | 202 +
include/libdecnumber/decNumberLocal.h | 665 +++
include/libdecnumber/dpd/decimal128.h | 100 +
include/libdecnumber/dpd/decimal128Local.h | 47 +
include/libdecnumber/dpd/decimal32.h | 98 +
include/libdecnumber/dpd/decimal64.h | 100 +
libdecnumber/decContext.c | 434 ++
libdecnumber/decNumber.c | 8194 ++++++++++++++++++++++++++++
libdecnumber/dpd/decimal128.c | 564 ++
libdecnumber/dpd/decimal128Local.h | 42 +
libdecnumber/dpd/decimal32.c | 489 ++
libdecnumber/dpd/decimal64.c | 850 +++
target-ppc/Makefile.objs | 1 +
target-ppc/dfp_helper.c | 1314 +++++
target-ppc/helper.h | 54 +
target-ppc/translate.c | 386 ++
24 files changed, 15062 insertions(+), 0 deletions(-)
create mode 100644 include/libdecnumber/dconfig.h
create mode 100644 include/libdecnumber/decContext.h
create mode 100644 include/libdecnumber/decDPD.h
create mode 100644 include/libdecnumber/decNumber.h
create mode 100644 include/libdecnumber/decNumberLocal.h
create mode 100644 include/libdecnumber/dpd/decimal128.h
create mode 100644 include/libdecnumber/dpd/decimal128Local.h
create mode 100644 include/libdecnumber/dpd/decimal32.h
create mode 100644 include/libdecnumber/dpd/decimal64.h
create mode 100644 libdecnumber/decContext.c
create mode 100644 libdecnumber/decNumber.c
create mode 100644 libdecnumber/dpd/decimal128.c
create mode 100644 libdecnumber/dpd/decimal128Local.h
create mode 100644 libdecnumber/dpd/decimal32.c
create mode 100644 libdecnumber/dpd/decimal64.c
create mode 100644 target-ppc/dfp_helper.c
- [Qemu-ppc] [V2 PATCH 00/37] target-ppc: Decimal Floating Point,
Tom Musta <=
- [Qemu-ppc] [V2 PATCH 02/37] libdecnumber: Eliminate #include *Symbols.h, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 06/37] libdecnumber: Eliminate redundant declarations, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 05/37] libdecnumber: Change gstdint.h to stdint.h, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 03/37] libdecnumber: Prepare libdecnumber for QEMU include structure, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 07/37] libdecnumber: Eliminate Unused Variable in decSetSubnormal, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 15/37] target-ppc: Introduce DFP Helper Utilities, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 04/37] libdecnumber: Modify dconfig.h to Integrate with QEMU, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 08/37] target-ppc: Enable Building of libdecnumber, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 09/37] libdecnumber: Introduce decNumberFrom[U]Int64, Tom Musta, 2014/04/21
- [Qemu-ppc] [V2 PATCH 10/37] libdecnumber: Introduce decNumberIntegralToInt64, Tom Musta, 2014/04/21