fixed FUZ handling in SSE code
This commit is contained in:
parent
661ef24f6f
commit
b39f1092ca
@ -223,12 +223,14 @@ float32 roundAndPackFloat32(int zSign, Bit16s zExp, Bit32u zSig, float_status_t
|
|||||||
zSig = shift32RightJamming(zSig, -zExp);
|
zSig = shift32RightJamming(zSig, -zExp);
|
||||||
zExp = 0;
|
zExp = 0;
|
||||||
roundBits = zSig & roundMask;
|
roundBits = zSig & roundMask;
|
||||||
if (isTiny && (roundBits || !float_exception_masked(status, float_flag_underflow))) {
|
if (isTiny) {
|
||||||
float_raise(status, float_flag_underflow);
|
|
||||||
if(get_flush_underflow_to_zero(status)) {
|
if(get_flush_underflow_to_zero(status)) {
|
||||||
float_raise(status, float_flag_inexact);
|
float_raise(status, float_flag_underflow | float_flag_inexact);
|
||||||
return packFloat32(zSign, 0, 0);
|
return packFloat32(zSign, 0, 0);
|
||||||
}
|
}
|
||||||
|
if (roundBits || !float_exception_masked(status, float_flag_underflow)) {
|
||||||
|
float_raise(status, float_flag_underflow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -327,12 +329,14 @@ float64 roundAndPackFloat64(int zSign, Bit16s zExp, Bit64u zSig, float_status_t
|
|||||||
zSig = shift64RightJamming(zSig, -zExp);
|
zSig = shift64RightJamming(zSig, -zExp);
|
||||||
zExp = 0;
|
zExp = 0;
|
||||||
roundBits = (Bit16s)(zSig & 0x3FF);
|
roundBits = (Bit16s)(zSig & 0x3FF);
|
||||||
if (isTiny && (roundBits || !float_exception_masked(status, float_flag_underflow))) {
|
if (isTiny) {
|
||||||
float_raise(status, float_flag_underflow);
|
|
||||||
if(get_flush_underflow_to_zero(status)) {
|
if(get_flush_underflow_to_zero(status)) {
|
||||||
float_raise(status, float_flag_inexact);
|
float_raise(status, float_flag_underflow | float_flag_inexact);
|
||||||
return packFloat64(zSign, 0, 0);
|
return packFloat64(zSign, 0, 0);
|
||||||
}
|
}
|
||||||
|
if (roundBits || !float_exception_masked(status, float_flag_underflow)) {
|
||||||
|
float_raise(status, float_flag_underflow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user