Bharata B Rao <bhar...@linux.vnet.ibm.com> writes:

> On Wed, Mar 01, 2017 at 01:14:11PM +0530, Nikunj A Dadhania wrote:
>> Use the softfloat api for fused multiply-add. As we are using the fused
>> multiply-add, the intermediate result for setting VXISI is not
>> available.
>
> Isn't the behaviour of setting VXISI similar to vector muladd instructions ?
> If so refer to VSX_MADD() to see when VXISI is set.

                if ((float64_is_infinity(xa.fld) ||
                     float64_is_infinity(b->fld)) &&
                     float64_is_infinity(c->fld))) {
                   float_invalid_op_excp(env, POWERPC_EXCP_FP_VXISI, sfprf);
               }
               
AFAIU, VXISI is set when (infinity - infinity). The above doesn't take
into consideration about substraction.

>> +FPU_FMADD(fmadd, 0, 0)
>> +FPU_FMADD(fnmadd, 0, 1)
>> +FPU_FMADD(fmsub, float_muladd_negate_c, 0)
>> +FPU_FMADD(fnmsub, float_muladd_negate_c, 1)
>
> May be you could use MADD_FLGS, MSUB_FLGS, NMADD_FLGS and NMSUB_FLGS ?

Sure

Regards
Nikunj


Reply via email to