Messages in this thread | | | Date | Mon, 16 Oct 2000 08:06:43 -0500 | From | Uncle George <> | Subject | Conversion of float denorm values |
| |
in arch/alpha/math-emu/math.c, one needs to disassemble the 32bit float value as 32 bit integer, and not presuppose it to be a 64 bit value with a double mentality. One this change is applied, then my sample test works everywhere. /gat
case FOP_FNC_CVTxS: /* It is irritating that DEC encoded CVTST with SRC == T_floating. It is also interesting that the bit used to tell the two apart is /U... */ if (insn & 0x2000) { FP_CONV(S,D,1,1,SR,DB); goto pack_s; } else { /* CVTST need do nothing else but copy the bits and repack. */ #if 0 DR_c = DB_c; DR_s = DB_s; DR_e = DB_e; DR_f = DB_f; #else /* Not exactly, vb needs to be in a 32 bit float form, and UNPACK'ed as such! */
vb = alpha_read_fp_reg_s(fb); FP_UNPACK_SP(SB, &vb); DR_c = SB_c; DR_s = SB_s; DR_e = SB_e; DR_f = SB_f << ( 52 - 23 ); #endif goto pack_d; }
[unhandled content-type:application/octet-stream] | |