Nikunj A Dadhania <nik...@linux.vnet.ibm.com> writes: > 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.
To be precise: "If the product of x and y is an Infinity and z is an Infinity of the opposite sign, vxisi_flag is set to 1." Regards Nikunj