Conversion of float denorm values

From: Uncle George (gatgul@voicenet.com)
Date: Mon Oct 16 2000 - 08:06:43 EST


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;
                        }




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Oct 23 2000 - 21:00:09 EST