EasyManua.ls Logo

Renesas SuperH SH-4A - Page 377

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 357 of 448
union {
float f;
int l;
} dstf,srcf;
union {
long d;
int l[2];
} dstd,srcd;
union { /* “long double” format: */
long double x; /* 1-bit sign */
int l[4]; /* 15-bit exponent */
} dstx; /* 112-bit mantissa */
if(FPSCR_PR == 0) {
if(type == FADD) srcf.f = FR[m];
else srcf.f = -FR[m];
dstd.d = FR[n]; /* Conversion from single-precision to double-precision */
dstd.d += srcf.f;
if(((dstd.d == FR[n]) && (srcf.f != 0.0)) ||
((dstd.d == srcf.f) && (FR[n] != 0.0))) {
set_I();
if(sign_of(m)^ sign_of(n)) {
dstd.l[1] -= 1;
if(dstd.l[1] == 0xffffffff) dstd.l[0] -= 1;
}
}
if(dstd.l[1] & 0x1fffffff) set_I();
dstf.f += srcf.f; /* Round to nearest */
if(FPSCR_RM == 1) {
dstd.l[1] &= 0xe0000000; /* Round to zero */
dstf.f = dstd.d;
}
check_single_exception(&FR[n],dstf.f);
} else {

Table of Contents

Related product manuals