improve arch_dump_reqs_and_registers()
[libfirm] / ir / tv / fltcalc.c
index 1111b62..1c6512c 100644 (file)
@@ -22,7 +22,6 @@
  * @brief    tarval floating point calculations
  * @date     2003
  * @author   Mathias Heil
- * @version  $Id$
  */
 #include "config.h"
 
@@ -110,7 +109,7 @@ typedef union {
 
 /* our floating point value */
 struct fp_value {
-       ieee_descriptor_t desc;
+       float_descriptor_t desc;
        unsigned char clss;
        char sign;
        char value[1];        /* exp[value_size] + mant[value_size] */
@@ -136,9 +135,6 @@ struct fp_value {
 #  define TRACEPRINTF(x) ((void)0)
 #endif
 
-/** The immediate precision. */
-static unsigned immediate_prec = 0;
-
 /** A temporal buffer. */
 static fp_value *calc_buffer = NULL;
 
@@ -725,7 +721,7 @@ static void _fdiv(const fp_value *a, const fp_value *b, fp_value *result)
 }
 
 #if 0
-static void _power_of_ten(int exp, ieee_descriptor_t *desc, char *result)
+static void _power_of_ten(int exp, float_descriptor_t *desc, char *result)
 {
        char *build;
        char *temp;
@@ -790,8 +786,10 @@ static void _trunc(const fp_value *a, fp_value *result)
 
        temp = (char*) alloca(value_size);
 
-       if (a != result)
+       if (a != result) {
                result->desc = a->desc;
+               result->clss = a->clss;
+       }
 
        exp_bias = (1 << (a->desc.exponent_size - 1)) - 1;
        exp_val  = sc_val_to_long(_exp(a)) - exp_bias;
@@ -841,14 +839,14 @@ int fc_get_buffer_length(void)
 }
 
 void *fc_val_from_str(const char *str, size_t len,
-                      const ieee_descriptor_t *desc, void *result)
+                      const float_descriptor_t *desc, void *result)
 {
        char *buffer;
 
        /* XXX excuse of an implementation to make things work */
        long double        val;
        fp_value          *tmp = (fp_value*) alloca(calc_buffer_size);
-       ieee_descriptor_t tmp_desc;
+       float_descriptor_t tmp_desc;
 
        buffer = (char*) alloca(len+1);
        memcpy(buffer, str, len);
@@ -864,7 +862,7 @@ void *fc_val_from_str(const char *str, size_t len,
        return fc_cast(tmp, desc, (fp_value*) result);
 }
 
-fp_value *fc_val_from_ieee754(long double l, const ieee_descriptor_t *desc,
+fp_value *fc_val_from_ieee754(long double l, const float_descriptor_t *desc,
                               fp_value *result)
 {
        char    *temp;
@@ -976,7 +974,7 @@ long double fc_val_to_ieee754(const fp_value *val)
        uint32_t mantissa1;
 
        value_t           buildval;
-       ieee_descriptor_t desc;
+       float_descriptor_t desc;
        unsigned          mantissa_size;
 
        size_t            long_double_size = sizeof(long double);
@@ -1030,7 +1028,7 @@ long double fc_val_to_ieee754(const fp_value *val)
        return buildval.d;
 }
 
-fp_value *fc_cast(const fp_value *value, const ieee_descriptor_t *desc,
+fp_value *fc_cast(const fp_value *value, const float_descriptor_t *desc,
                   fp_value *result)
 {
        char *temp;
@@ -1090,7 +1088,7 @@ fp_value *fc_cast(const fp_value *value, const ieee_descriptor_t *desc,
        return result;
 }
 
-fp_value *fc_get_max(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_max(const float_descriptor_t *desc, fp_value *result)
 {
        if (result == NULL) result = calc_buffer;
 
@@ -1107,7 +1105,7 @@ fp_value *fc_get_max(const ieee_descriptor_t *desc, fp_value *result)
        return result;
 }
 
-fp_value *fc_get_min(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_min(const float_descriptor_t *desc, fp_value *result)
 {
        if (result == NULL) result = calc_buffer;
 
@@ -1117,7 +1115,7 @@ fp_value *fc_get_min(const ieee_descriptor_t *desc, fp_value *result)
        return result;
 }
 
-fp_value *fc_get_snan(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_snan(const float_descriptor_t *desc, fp_value *result)
 {
        if (result == NULL) result = calc_buffer;
 
@@ -1133,7 +1131,7 @@ fp_value *fc_get_snan(const ieee_descriptor_t *desc, fp_value *result)
        return result;
 }
 
-fp_value *fc_get_qnan(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_qnan(const float_descriptor_t *desc, fp_value *result)
 {
        if (result == NULL) result = calc_buffer;
 
@@ -1152,7 +1150,7 @@ fp_value *fc_get_qnan(const ieee_descriptor_t *desc, fp_value *result)
        return result;
 }
 
-fp_value *fc_get_plusinf(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_plusinf(const float_descriptor_t *desc, fp_value *result)
 {
        char *mant;
 
@@ -1173,7 +1171,7 @@ fp_value *fc_get_plusinf(const ieee_descriptor_t *desc, fp_value *result)
        return result;
 }
 
-fp_value *fc_get_minusinf(const ieee_descriptor_t *desc, fp_value *result)
+fp_value *fc_get_minusinf(const float_descriptor_t *desc, fp_value *result)
 {
        if (result == NULL) result = calc_buffer;
 
@@ -1335,7 +1333,7 @@ int fc_get_exponent(const fp_value *value)
 }
 
 /* Return non-zero if a given value can be converted lossless into another precision */
-int fc_can_lossless_conv_to(const fp_value *value, const ieee_descriptor_t *desc)
+int fc_can_lossless_conv_to(const fp_value *value, const float_descriptor_t *desc)
 {
        int v;
        int exp_bias;
@@ -1502,13 +1500,12 @@ fp_value *fc_int(const fp_value *a, fp_value *result)
 
 fp_value *fc_rnd(const fp_value *a, fp_value *result)
 {
-       if (result == NULL) result = calc_buffer;
-
-       (void) a;
+       (void)a;
+       (void)result;
        TRACEPRINTF(("%s ", fc_print(a, buffer, sizeof(buffer), FC_PACKED)));
        TRACEPRINTF(("rounded to integer "));
 
-       panic("fc_rnd() not yet implemented");
+       panic("not yet implemented");
 }
 
 /*
@@ -1578,15 +1575,6 @@ int fc_flt2int(const fp_value *a, void *result, ir_mode *dst_mode)
        return 0;
 }
 
-
-unsigned fc_set_immediate_precision(unsigned bits)
-{
-       unsigned old = immediate_prec;
-
-       immediate_prec = bits;
-       return old;
-}
-
 int fc_is_exact(void)
 {
        return fc_exact;