New implementation of tarval module
[libfirm] / ir / tv / fltcalc.h
1 #ifndef _FLTCALC_H_
2 #define _FLTCALC_H_
3
4 enum {
5   FC_ADD,
6   FC_SUB,
7   FC_MUL,
8   FC_DIV,
9   FC_NEG,
10 };
11
12 #define fc_add(a, b) fc_calc((a), (b), FC_ADD)
13 #define fc_sub(a, b) fc_calc((a), (b), FC_SUB)
14 #define fc_mul(a, b) fc_calc((a), (b), FC_MUL)
15 #define fc_div(a, b) fc_calc((a), (b), FC_DIV)
16 #define fc_neg(a) fc_calc((a), NULL, FC_NEG)
17
18 const void *fc_get_buffer(void);
19 const int fc_get_buffer_length(void);
20
21 void fc_val_from_str(const char *str, unsigned int len);
22 void fc_val_from_float(long double l);
23 long double fc_val_to_float(const void *val);
24
25 void fc_get_min(unsigned int num_bits);
26 void fc_get_max(unsigned int num_bits);
27 void fc_get_nan(void);
28 void fc_get_inf(void);
29
30 void fc_calc(const void *a, const void *b, int opcode);
31 char *fc_print_dec(const void *a);
32 int fc_comp(const void *a, const void *b);
33
34 #endif /* _FLTCALC_H_ */