qemu-ppc
[Top][All Lists]
Advanced

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

Re: [Qemu-ppc] [Qemu-devel] [PATCH 14/14] target/ppc: improve VSX_FMADD


From: Mark Cave-Ayland
Subject: Re: [Qemu-ppc] [Qemu-devel] [PATCH 14/14] target/ppc: improve VSX_FMADD with new GEN_VSX_HELPER_VSX_MADD macro
Date: Sun, 5 May 2019 11:20:49 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1

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.



reply via email to

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