From: Richard Henderson <richard.henderson@linaro.org>
To: Luis Pires <luis.pires@eldorado.org.br>,
qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Cc: groug@kaod.org, david@gibson.dropbear.id.au
Subject: Re: [PATCH v2 04/19] host-utils: add 128-bit quotient support to divu128/divs128
Date: Tue, 31 Aug 2021 10:59:14 -0700 [thread overview]
Message-ID: <c6a29b77-1187-a06b-6c2e-ede5dc8a1037@linaro.org> (raw)
In-Reply-To: <20210831164007.297781-5-luis.pires@eldorado.org.br>
On 8/31/21 9:39 AM, Luis Pires wrote:
> These will be used to implement new decimal floating point
> instructions from Power ISA 3.1.
>
> A new argument, prem, was added to divu128/divs128 to receive the
> remainder, freeing up phigh to receive the high 64 bits of the
> quotient.
>
> For scenarios supported by the previous implementation
> (<= 64-bit quotient) with large (> 64-bit) dividends, testing showed
> that:
> - when dividend >> divisor, the performance of the new implementation
> is equivalent to the old one.
> - as the dividend and the divisor get closer (e.g. 65-bit dividend and
> 64-bit divisor), the performance is significantly improved, due to the
> smaller number of shift-subtract iterations.
Hmm. I'll note that we have a better divmod primitive in tree, but we aren't using it
here: udiv_qrnnd in include/fpu/softfloat-macros.h.
Given that none of the existing uses require the high part, should we be creating a new
interface? The bug you highlight wrt truncation could be fixed separately.
> -void divs128(int64_t *plow, int64_t *phigh, int64_t divisor)
> +void divs128(uint64_t *plow, int64_t *phigh, int64_t *prem, int64_t divisor)
> {
> - int sgn_dvdnd = *phigh < 0;
> - int sgn_divsr = divisor < 0;
> + int neg_quotient = 0, neg_remainder = 0;
You might as well use bool.
r~
next prev parent reply other threads:[~2021-08-31 18:00 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-31 16:39 [PATCH v2 00/19] target/ppc: DFP instructions using decodetree Luis Pires
2021-08-31 16:39 ` [PATCH v2 01/19] host-utils: Fix overflow detection in divu128() Luis Pires
2021-08-31 17:08 ` Richard Henderson
2021-08-31 16:39 ` [PATCH v2 02/19] host-utils: move abs64() to host-utils as uabs64() Luis Pires
2021-08-31 17:11 ` Richard Henderson
2021-08-31 18:20 ` Eduardo Habkost
2021-08-31 16:39 ` [PATCH v2 03/19] host-utils: move checks out of divu128/divs128 Luis Pires
2021-08-31 17:21 ` Richard Henderson
2021-09-02 21:07 ` Luis Fernando Fujita Pires
2021-08-31 16:39 ` [PATCH v2 04/19] host-utils: add 128-bit quotient support to divu128/divs128 Luis Pires
2021-08-31 17:59 ` Richard Henderson [this message]
2021-09-02 21:07 ` Luis Fernando Fujita Pires
2021-09-03 21:09 ` Richard Henderson
2021-08-31 16:39 ` [PATCH v2 05/19] host-utils: add unit tests for divu128/divs128 Luis Pires
2021-08-31 16:39 ` [PATCH v2 06/19] libdecnumber: introduce decNumberFrom[U]Int128 Luis Pires
2021-08-31 18:10 ` Richard Henderson
2021-08-31 16:39 ` [PATCH v2 07/19] target/ppc: Move REQUIRE_ALTIVEC/VECTOR to translate.c Luis Pires
2021-08-31 18:12 ` Richard Henderson
2021-09-02 3:23 ` David Gibson
2021-08-31 16:39 ` [PATCH v2 08/19] target/ppc: Introduce REQUIRE_FPU Luis Pires
2021-08-31 18:15 ` Richard Henderson
2021-08-31 16:39 ` [PATCH v2 09/19] target/ppc: Implement DCFFIXQQ Luis Pires
2021-08-31 18:18 ` Richard Henderson
2021-09-01 12:38 ` Matheus K. Ferst
2021-09-01 12:50 ` Luis Fernando Fujita Pires
2021-08-31 16:39 ` [PATCH v2 10/19] host-utils: Introduce mulu128 Luis Pires
2021-09-03 21:12 ` Richard Henderson
2021-08-31 16:39 ` [PATCH v2 11/19] libdecnumber: Introduce decNumberIntegralToInt128 Luis Pires
2021-09-03 21:14 ` Richard Henderson
2021-08-31 16:40 ` [PATCH v2 12/19] target/ppc: Implement DCTFIXQQ Luis Pires
2021-08-31 16:40 ` [PATCH v2 13/19] target/ppc: Move dtstdc[q]/dtstdg[q] to decodetree Luis Pires
2021-08-31 16:40 ` [PATCH v2 14/19] target/ppc: Move d{add, sub, mul, div, iex}[q] " Luis Pires
2021-08-31 16:40 ` [PATCH v2 15/19] target/ppc: Move dcmp{u, o}[q], dts{tex, tsf, tsfi}[q] " Luis Pires
2021-08-31 16:40 ` [PATCH v2 16/19] target/ppc: Move dquai[q], drint{x, n}[q] " Luis Pires
2021-08-31 16:40 ` [PATCH v2 17/19] target/ppc: Move dqua[q], drrnd[q] " Luis Pires
2021-08-31 16:40 ` [PATCH v2 18/19] target/ppc: Move dct{dp, qpq}, dr{sp, dpq}, dc{f, t}fix[q], dxex[q] " Luis Pires
2021-08-31 16:40 ` [PATCH v2 19/19] target/ppc: Move ddedpd[q], denbcd[q], dscli[q], dscri[q] " Luis Pires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c6a29b77-1187-a06b-6c2e-ede5dc8a1037@linaro.org \
--to=richard.henderson@linaro.org \
--cc=david@gibson.dropbear.id.au \
--cc=groug@kaod.org \
--cc=luis.pires@eldorado.org.br \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).