EasyManua.ls Logo

Renesas SuperH SH-4A - Page 381

Renesas SuperH SH-4A
472 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Rev. 1.50, 10/04, page 361 of 448
check_single_exception(&FR[n+3],dstf);
}
}
void check_single_exception(float *dst,result)
{
union {
float f;
int l;
} tmp;
float abs;
if(result < 0.0) tmp.l = 0xff800000; /* – infinity */
else tmp.l = 0x7f800000; /* + infinity */
if(result == tmp.f) {
set_O(); set_I();
if(FPSCR_RM == 1) {
tmp.l -= 1; /* Maximum value of normalized number */
result = tmp.f;
}
}
if(result < 0.0) abs = -result;
else abs = result;
tmp.l = 0x00800000; /* Minimum value of normalized number */
if(abs < tmp.f) {
if((FPSCR_DN == 1) && (abs != 0.0)) {
set_I();
if(result < 0.0) result = -0.0; /* Zeroize denormalized number */
else result = 0.0;
}
if(FPSCR_I == 1) set_U();
}
if(FPSCR & ENABLE_OUI) fpu_exception_trap();
else *dst = result;
}

Table of Contents

Related product manuals