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