Fix intermediate truncation in vector FP fused multiply-add.
This commit is contained in:
@@ -865,7 +865,7 @@ private:
|
|||||||
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CPU.VPR[vd]._f[w] = a * c + b;
|
CPU.VPR[vd]._f[w] = fmaf(a, c, b);
|
||||||
if (std::isnan(CPU.VPR[vd]._f[w]))
|
if (std::isnan(CPU.VPR[vd]._f[w]))
|
||||||
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
||||||
}
|
}
|
||||||
@@ -1288,7 +1288,7 @@ private:
|
|||||||
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CPU.VPR[vd]._f[w] = -(a * c - b);
|
CPU.VPR[vd]._f[w] = -fmaf(a, c, -b);
|
||||||
if (std::isnan(CPU.VPR[vd]._f[w]))
|
if (std::isnan(CPU.VPR[vd]._f[w]))
|
||||||
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
CPU.VPR[vd]._f[w] = (float)FPR_NAN;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user