[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 00/19] target/ppc: DFP instructions using decodetree
From: |
Luis Pires |
Subject: |
[PATCH v2 00/19] target/ppc: DFP instructions using decodetree |
Date: |
Tue, 31 Aug 2021 13:39:48 -0300 |
This series moves all existing DFP instructions to decodetree and
implements the 2 new instructions (dcffixqq and dctfixqq) from
Power ISA 3.1.
In order to implement dcffixqq, divu128/divs128 were modified to
support 128-bit quotients (previously, they were limited to 64-bit
quotients), along with adjustments being made to its existing callers.
libdecnumber was also expanded to allow creating decimal numbers from
128-bit integers.
Similarly, for dctfixqq, mulu128 (host-utils) and decNumberIntegralToInt128
(libdecnumber) were introduced to support 128-bit integers.
The remaining patches of this series move all of the already existing
DFP instructions to decodetree, and end up removing dfp-ops.c.inc, which
is no longer needed.
NOTE 1: The previous, non-decodetree code, was updating ctx->nip for all the
DFP instructions. I've removed that, but it would be great if someone could
confirm that updating nip really wasn't necessary.
NOTE 2: Some arithmetic function support for 128-bit integers was added,
for now, still using 64-bit pairs. In the near future, I think we should
modify all of them to use Int128 (and introduce UInt128). But that
should be done in another patch series.
Based-on: 20210823150235.35759-1-luis.pires@eldorado.org.br
(target/ppc: fix setting of CR flags in bcdcfsq)
This series assumes bcdcfsq's fix is already in.
Changes in v2:
- Renamed abs64() to uabs64()
Patches missing review:
target/ppc: Move REQUIRE_ALTIVEC/VECTOR to translate.c
host-utils: Fix overflow detection in divu128()
host-utils: move abs64() to host-utils as uabs64()
host-utils: move checks out of divu128/divs128
host-utils: add 128-bit quotient support to divu128/divs128
host-utils: add unit tests for divu128/divs128
libdecnumber: introduce decNumberFrom[U]Int128
target/ppc: Implement DCFFIXQQ
host-utils: Introduce mulu128
libdecnumber: Introduce decNumberIntegralToInt128
target/ppc: Implement DCTFIXQQ
target/ppc: Move dcmp{u,o}[q],dts{tex,tsf,tsfi}[q] to decodetree
--
Luis Pires
Instituto de Pesquisas ELDORADO
Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html>
Bruno Larsen (1):
target/ppc: Move REQUIRE_ALTIVEC/VECTOR to translate.c
Fernando Valle (1):
target/ppc: Introduce REQUIRE_FPU
Luis Pires (17):
host-utils: Fix overflow detection in divu128()
host-utils: move abs64() to host-utils as uabs64()
host-utils: move checks out of divu128/divs128
host-utils: add 128-bit quotient support to divu128/divs128
host-utils: add unit tests for divu128/divs128
libdecnumber: introduce decNumberFrom[U]Int128
target/ppc: Implement DCFFIXQQ
host-utils: Introduce mulu128
libdecnumber: Introduce decNumberIntegralToInt128
target/ppc: Implement DCTFIXQQ
target/ppc: Move dtstdc[q]/dtstdg[q] to decodetree
target/ppc: Move d{add,sub,mul,div,iex}[q] to decodetree
target/ppc: Move dcmp{u,o}[q],dts{tex,tsf,tsfi}[q] to decodetree
target/ppc: Move dquai[q], drint{x,n}[q] to decodetree
target/ppc: Move dqua[q], drrnd[q] to decodetree
target/ppc: Move dct{dp,qpq},dr{sp,dpq},dc{f,t}fix[q],dxex[q] to
decodetree
target/ppc: Move ddedpd[q],denbcd[q],dscli[q],dscri[q] to decodetree
hw/i386/kvm/i8254.c | 7 +-
include/hw/clock.h | 7 +-
include/libdecnumber/decNumber.h | 4 +
include/libdecnumber/decNumberLocal.h | 2 +-
include/qemu/host-utils.h | 86 +++--
libdecnumber/decContext.c | 7 +-
libdecnumber/decNumber.c | 130 ++++++++
target/ppc/dfp_helper.c | 168 +++++++---
target/ppc/helper.h | 106 ++++---
target/ppc/insn32.decode | 171 ++++++++++
target/ppc/int_helper.c | 23 +-
target/ppc/translate.c | 25 +-
target/ppc/translate/dfp-impl.c.inc | 419 ++++++++++++-------------
target/ppc/translate/dfp-ops.c.inc | 165 ----------
target/ppc/translate/vector-impl.c.inc | 10 +-
tests/unit/meson.build | 1 +
tests/unit/test-div128.c | 185 +++++++++++
util/host-utils.c | 137 +++++---
18 files changed, 1073 insertions(+), 580 deletions(-)
delete mode 100644 target/ppc/translate/dfp-ops.c.inc
create mode 100644 tests/unit/test-div128.c
--
2.25.1
- [PATCH v2 00/19] target/ppc: DFP instructions using decodetree,
Luis Pires <=
- [PATCH v2 01/19] host-utils: Fix overflow detection in divu128(), Luis Pires, 2021/08/31
- [PATCH v2 02/19] host-utils: move abs64() to host-utils as uabs64(), Luis Pires, 2021/08/31
- [PATCH v2 03/19] host-utils: move checks out of divu128/divs128, Luis Pires, 2021/08/31
- [PATCH v2 04/19] host-utils: add 128-bit quotient support to divu128/divs128, Luis Pires, 2021/08/31
- [PATCH v2 05/19] host-utils: add unit tests for divu128/divs128, Luis Pires, 2021/08/31