From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:47569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNEGe-0002Rl-Sc for qemu-devel@nongnu.org; Sun, 05 May 2019 06:21:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hNEGd-000516-Ae for qemu-devel@nongnu.org; Sun, 05 May 2019 06:21:12 -0400 References: <20190428143845.11810-1-mark.cave-ayland@ilande.co.uk> <20190428143845.11810-15-mark.cave-ayland@ilande.co.uk> <3c05b552-a692-e439-fc28-90ad69767cf2@linaro.org> From: Mark Cave-Ayland Message-ID: Date: Sun, 5 May 2019 11:20:49 +0100 MIME-Version: 1.0 In-Reply-To: <3c05b552-a692-e439-fc28-90ad69767cf2@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH 14/14] target/ppc: improve VSX_FMADD with new GEN_VSX_HELPER_VSX_MADD macro List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson , qemu-devel@nongnu.org, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au, rth@twiddle.net, gkurz@kaod.org On 30/04/2019 18:00, Richard Henderson wrote: > On 4/28/19 7:38 AM, Mark Cave-Ayland wrote: >> #define VSX_MADD(op, nels, tp, fld, maddflgs, afrm, sfprf, r2sp) \ >> void helper_##op(CPUPPCState *env, uint32_t opcode, \ >> - ppc_vsr_t *xt, ppc_vsr_t *xa, ppc_vsr_t *xb) \ >> + ppc_vsr_t *xt, ppc_vsr_t *xa, \ >> + ppc_vsr_t *b, ppc_vsr_t *c) \ >> { \ >> - ppc_vsr_t *b, *c; \ >> int i; \ >> \ >> - if (afrm) { /* AxB + T */ \ >> - b = xb; \ >> - c = xt; \ >> - } else { /* AxT + B */ \ >> - b = xt; \ >> - c = xb; \ >> - } \ > > The afrm argument is no longer used. > This also means that e.g. > > VSX_MADD(xsmaddadp, 1, float64, VsrD(0), MADD_FLGS, 1, 1, 0) > VSX_MADD(xsmaddmdp, 1, float64, VsrD(0), MADD_FLGS, 0, 1, 0) > > are redundant. Similarly with all of the other pairs. Agreed. What do you think is the best solution here - maybe a double macro that looks something like this? #define VSX_MADD(op, prec, nels, tp, fld, maddflgs, sfprf, r2sp) _VSX_MADD(op##aprec, nels, tp, fld, maddflgs, sfprf, r2sp) _VSX_MADD(op##mprec, nels, tp, fld, maddflgs, sfprf, r2sp) VSX_MADD(xsmadd, dp, 1, float64, VsrD(0), MADD_FLGS, 1, 0) ATB, Mark.