EasyManua.ls Logo

Renesas SuperH SH-4A - FCNVDS (Floating-Point Convert Double to Single Precision)

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 374 of 448
qNaN : *FPUL = 0x7fbfffff; break;
sNaN : set_V();
if((FPSCR & ENABLE_V) == 0) *FPUL = 0x7fbfffff;
else fpu_exception_trap(); break;
}
}
void normal_fcnvds(int m, float *FPUL)
{
int sign;
float abs;
union {
float f;
int l;
} dstf,tmpf;
union {
double d;
int l[2];
} dstd;
dstd.d = DR[m>>1];
if(dstd.l[1] & 0x1fffffff)) set_I();
if(FPSCR_RM == 1) dstd.l[1] &= 0xe0000000; /* round toward zero*/
dstf.f = dstd.d;
check_single_exception(FPUL, dstf.f);
}
FCNVDS Special Cases
DRn +NORM –NORM +0 –0 +INF –INF qNaN sNaN
FCNVDS(DRn FPUL) FCNVDS FCNVDS +0 –0 +INF –INF qNaN Invalid
Note: When DN = 1, the value of a denormalized number is treated as 0.

Table of Contents

Related product manuals