Fix a few floating-point conversions in 8c.
[rsc] --rw-rw-r-- M 1428987 glenda sys 23789 Jan 28 09:53 sys/src/cmd/8c/txt.c
/n/sourcesdump/2006/0128/plan9/sys/src/cmd/8c/txt.c:791,799 -
/n/sourcesdump/2006/0129/plan9/sys/src/cmd/8c/txt.c:791,797
case CASE( TFLOAT, TSHORT):
case CASE( TFLOAT, TUSHORT):
case CASE( TFLOAT, TINT):
- case CASE( TFLOAT, TUINT):
case CASE( TFLOAT, TLONG):
- case CASE( TFLOAT, TULONG):
case CASE( TFLOAT, TIND):
case CASE( TDOUBLE,TCHAR):
/n/sourcesdump/2006/0128/plan9/sys/src/cmd/8c/txt.c:801,820 -
/n/sourcesdump/2006/0129/plan9/sys/src/cmd/8c/txt.c:799,806
case CASE( TDOUBLE,TSHORT):
case CASE( TDOUBLE,TUSHORT):
case CASE( TDOUBLE,TINT):
- case CASE( TDOUBLE,TUINT):
case CASE( TDOUBLE,TLONG):
- case CASE( TDOUBLE,TULONG):
case CASE( TDOUBLE,TIND):
-
- case CASE( TVLONG, TCHAR):
- case CASE( TVLONG, TUCHAR):
- case CASE( TVLONG, TSHORT):
- case CASE( TVLONG, TUSHORT):
- case CASE( TVLONG, TINT):
- case CASE( TVLONG, TUINT):
- case CASE( TVLONG, TLONG):
- case CASE( TVLONG, TULONG):
- case CASE( TVLONG, TIND):
if(fproundflg) {
regsalloc(&nod, ®node);
gins(AFMOVLP, f, &nod);
/n/sourcesdump/2006/0128/plan9/sys/src/cmd/8c/txt.c:834,846 -
/n/sourcesdump/2006/0129/plan9/sys/src/cmd/8c/txt.c:820,845
return;
/*
+ * float to ulong
+ */
+ case CASE( TDOUBLE, TULONG):
+ case CASE( TFLOAT, TULONG):
+ case CASE( TDOUBLE, TUINT):
+ case CASE( TFLOAT, TUINT):
+ regsalloc(&nod, ®node);
+ gmove(f, &fregnode0);
+ gins(AFADDD, nodfconst(-2147483648.), &fregnode0);
+ gins(AFMOVLP, f, &nod);
+ gins(ASUBL, nodconst(-2147483648), &nod);
+ gmove(&nod, t);
+ return;
+
+ /*
* ulong to float
*/
case CASE( TULONG, TDOUBLE):
- case CASE( TULONG, TVLONG):
case CASE( TULONG, TFLOAT):
case CASE( TUINT, TDOUBLE):
- case CASE( TUINT, TVLONG):
case CASE( TUINT, TFLOAT):
regalloc(&nod, f, f);
gmove(f, &nod);
/n/sourcesdump/2006/0128/plan9/sys/src/cmd/8c/txt.c:873,886 -
/n/sourcesdump/2006/0129/plan9/sys/src/cmd/8c/txt.c:872,877
case CASE( TINT, TDOUBLE):
case CASE( TLONG, TDOUBLE):
case CASE( TIND, TDOUBLE):
-
- case CASE( TCHAR, TVLONG):
- case CASE( TUCHAR, TVLONG):
- case CASE( TSHORT, TVLONG):
- case CASE( TUSHORT,TVLONG):
- case CASE( TINT, TVLONG):
- case CASE( TLONG, TVLONG):
- case CASE( TIND, TVLONG):
regsalloc(&nod, ®node);
gmove(f, &nod);
gins(AFMOVL, &nod, &fregnode0);
/n/sourcesdump/2006/0128/plan9/sys/src/cmd/8c/txt.c:891,905 -
/n/sourcesdump/2006/0129/plan9/sys/src/cmd/8c/txt.c:882,890
*/
case CASE( TFLOAT, TFLOAT):
case CASE( TDOUBLE,TFLOAT):
- case CASE( TVLONG, TFLOAT):
case CASE( TFLOAT, TDOUBLE):
case CASE( TDOUBLE,TDOUBLE):
- case CASE( TVLONG, TDOUBLE):
-
- case CASE( TFLOAT, TVLONG):
- case CASE( TDOUBLE,TVLONG):
- case CASE( TVLONG, TVLONG):
a = AFMOVD; break;
}
if(a == AMOVL || a == AFMOVD)
|