X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftv%2Ffltcalc.c;h=c6edcc2f18db14eb0e6ec891a534c3a9b43f5712;hb=6ccff2965d94c272f71df2a1655336af47bb7753;hp=f9ac91f7d705f158bd41f82b272a314b3fc87faf;hpb=e0fc2155d19bc897483addfd8a9ceb1670259a22;p=libfirm diff --git a/ir/tv/fltcalc.c b/ir/tv/fltcalc.c index f9ac91f7d..c6edcc2f1 100644 --- a/ir/tv/fltcalc.c +++ b/ir/tv/fltcalc.c @@ -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] */ @@ -722,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; @@ -787,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; @@ -838,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); @@ -861,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; @@ -973,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); @@ -1027,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; @@ -1087,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; @@ -1104,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; @@ -1114,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; @@ -1130,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; @@ -1149,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; @@ -1170,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; @@ -1332,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;