libFirm
|
Representation of and static computations on target machine values. More...
Go to the source code of this file.
Data Structures | |
struct | tarval_mode_info |
This structure contains helper information to format the output of a tarval of a mode. More... |
Macros | |
#define | tarval_top tarval_undefined |
The 'top' tarval. | |
#define | get_tarval_top() get_tarval_undefined() |
Returns the 'top' tarval. | |
#define | tarval_bottom tarval_bad |
The 'bottom' tarval. | |
#define | get_tarval_bottom() get_tarval_bad() |
Returns the 'bottom' tarval. |
Enumerations | |
enum | tarval_int_overflow_mode_t { TV_OVERFLOW_BAD, TV_OVERFLOW_WRAP, TV_OVERFLOW_SATURATE } |
Modes for handling integer overflows. More... | |
enum | tv_output_mode { TVO_NATIVE, TVO_HEX, TVO_DECIMAL, TVO_OCTAL, TVO_BINARY, TVO_FLOAT, TVO_HEXFLOAT } |
The output mode for tarval values. More... |
Functions | |
ir_tarval * | new_tarval_from_str (const char *str, size_t len, ir_mode *mode) |
Constructor function for new tarvals. | |
ir_tarval * | new_integer_tarval_from_str (const char *str, size_t len, char sign, unsigned char base, ir_mode *mode) |
Construct a new tarval from a given string. | |
ir_tarval * | new_tarval_from_long (long l, ir_mode *mode) |
Constructor function for new tarvals. | |
long | get_tarval_long (ir_tarval *tv) |
Returns value as long if possible. | |
int | tarval_is_long (ir_tarval *tv) |
This validates if get_tarval_long() will return a satisfying result. | |
ir_tarval * | new_tarval_from_double (double d, ir_mode *mode) |
Constructor function for new tarvals. | |
ir_tarval * | new_tarval_from_long_double (long double d, ir_mode *mode) |
same as new_tarval_from_double(), but with a long double argument | |
double | get_tarval_double (ir_tarval *tv) |
This returns a double with the value represented value, or gibberish, depending on the size of double and the size of the stored value. | |
long double | get_tarval_long_double (ir_tarval *tv) |
same as get_tarval_double but returns a long double value | |
int | tarval_is_double (ir_tarval *tv) |
This validates if tarval_to_double() will return a satisfying result. | |
ir_mode * | get_tarval_mode (const ir_tarval *tv) |
Returns the mode of the tarval. | |
int | tarval_is_negative (ir_tarval *tv) |
Returns 1 if tv is negative. | |
int | tarval_is_null (ir_tarval *tv) |
Returns 1 if tv is null. | |
int | tarval_is_one (ir_tarval *tv) |
Returns 1 if tv is the "one". | |
int | tarval_is_minus_one (ir_tarval *tv) |
Returns 1 if tv is the "minus one". | |
int | tarval_is_all_one (ir_tarval *tv) |
returns non-zero if all bits in the tarval are set | |
int | tarval_is_constant (ir_tarval *tv) |
Returns non-zero if the tarval is a constant (ie. | |
ir_tarval * | get_tarval_bad (void) |
Returns the 'bad' tarval. | |
ir_tarval * | get_tarval_undefined (void) |
Returns the 'undefined' tarval. | |
ir_tarval * | get_tarval_b_false (void) |
Returns the mode_b tarval 'false'. | |
ir_tarval * | get_tarval_b_true (void) |
Returns the mode_b tarval 'true'. | |
ir_tarval * | get_tarval_unreachable (void) |
Returns the mode_X tarval 'unreachable'. | |
ir_tarval * | get_tarval_reachable (void) |
Returns the mode_X tarval 'reachable'. | |
ir_tarval * | get_tarval_max (ir_mode *mode) |
Returns the maximum value of a given mode. | |
ir_tarval * | get_tarval_min (ir_mode *mode) |
Returns the minimum value of a given mode. | |
ir_tarval * | get_tarval_null (ir_mode *mode) |
Returns the 0 value (additive neutral) of a given mode. | |
ir_tarval * | get_tarval_one (ir_mode *mode) |
Returns the 1 value (multiplicative neutral) of a given mode. | |
ir_tarval * | get_tarval_minus_one (ir_mode *mode) |
Returns the -1 value (multiplicative neutral) of a given mode. | |
ir_tarval * | get_tarval_all_one (ir_mode *mode) |
returns the value where all bits are 1 of a given mode. | |
ir_tarval * | get_tarval_nan (ir_mode *mode) |
Returns quite nan for float_number modes. | |
ir_tarval * | get_tarval_plus_inf (ir_mode *mode) |
Returns +inf for float_number modes. | |
ir_tarval * | get_tarval_minus_inf (ir_mode *mode) |
Returns -inf for float_number modes. | |
void | tarval_set_integer_overflow_mode (tarval_int_overflow_mode_t ov_mode) |
Sets the overflow mode for integer operations. | |
tarval_int_overflow_mode_t | tarval_get_integer_overflow_mode (void) |
Returns the overflow mode for integer operations. | |
ir_relation | tarval_cmp (ir_tarval *a, ir_tarval *b) |
Compares two tarvals. | |
ir_tarval * | tarval_convert_to (ir_tarval *src, ir_mode *mode) |
Converts a tarval to another mode. | |
ir_tarval * | tarval_not (ir_tarval *a) |
Bitwise Negation of a tarval. | |
ir_tarval * | tarval_neg (ir_tarval *a) |
Arithmetic Negation of a tarval. | |
ir_tarval * | tarval_add (ir_tarval *a, ir_tarval *b) |
Addition of two tarvals. | |
ir_tarval * | tarval_sub (ir_tarval *a, ir_tarval *b, ir_mode *dst_mode) |
Subtraction from a tarval. | |
ir_tarval * | tarval_mul (ir_tarval *a, ir_tarval *b) |
Multiplication of tarvals. | |
ir_tarval * | tarval_div (ir_tarval *a, ir_tarval *b) |
Integer division of two tarvals. | |
ir_tarval * | tarval_mod (ir_tarval *a, ir_tarval *b) |
Remainder of integer division. | |
ir_tarval * | tarval_divmod (ir_tarval *a, ir_tarval *b, ir_tarval **mod_res) |
Integer division AND remainder. | |
ir_tarval * | tarval_abs (ir_tarval *a) |
Absolute value of a tarval. | |
ir_tarval * | tarval_and (ir_tarval *a, ir_tarval *b) |
Bitwise and of two integer tarvals. | |
ir_tarval * | tarval_andnot (ir_tarval *a, ir_tarval *b) |
Bitwise and not of two integer tarvals. | |
ir_tarval * | tarval_or (ir_tarval *a, ir_tarval *b) |
Bitwise or of two integer tarvals. | |
ir_tarval * | tarval_eor (ir_tarval *a, ir_tarval *b) |
Bitwise exclusive or of two integer tarvals. | |
ir_tarval * | tarval_shl (ir_tarval *a, ir_tarval *b) |
Logical Left shift. | |
ir_tarval * | tarval_shl_unsigned (ir_tarval *a, unsigned b) |
logical left shift (variant with unsigned argument). | |
ir_tarval * | tarval_shr (ir_tarval *a, ir_tarval *b) |
Unsigned (logical) right shift. | |
ir_tarval * | tarval_shr_unsigned (ir_tarval *a, unsigned b) |
unsigned (logical) right shift (variant with unsigned argument). | |
ir_tarval * | tarval_shrs (ir_tarval *a, ir_tarval *b) |
Signed (arithmetic) right shift. | |
ir_tarval * | tarval_shrs_unsigned (ir_tarval *a, unsigned b) |
signed (arithmetic) right shift (variant with unsigned argument). | |
ir_tarval * | tarval_rotl (ir_tarval *a, ir_tarval *b) |
Rotation to left. | |
int | tarval_carry (void) |
Returns the carry flag of the last operation. | |
int | set_tarval_mode_output_option (ir_mode *mode, const tarval_mode_info *modeinfo) |
Specify the output options of one mode. | |
const tarval_mode_info * | get_tarval_mode_output_option (ir_mode *mode) |
Returns the output options of one mode. | |
char * | get_tarval_bitpattern (ir_tarval *tv) |
Returns Bit representation of a tarval value, as string of '0' and '1'. | |
unsigned char | get_tarval_sub_bits (ir_tarval *tv, unsigned byte_ofs) |
Returns the bitpattern of the bytes_ofs byte. | |
int | tarval_is_single_bit (ir_tarval *tv) |
Returns non-zero if a given (integer) tarval has only one single bit set. | |
int | get_tarval_popcount (ir_tarval *tv) |
Returns the number of set bits in a given (integer) tarval. | |
int | get_tarval_lowest_bit (ir_tarval *tv) |
Returns the number of the lowest set bit in a given (integer) tarval. | |
int | tarval_snprintf (char *buf, size_t buflen, ir_tarval *tv) |
Output a tarval to a string buffer. | |
int | tarval_printf (ir_tarval *tv) |
Output a tarval to stdio. | |
int | tarval_zero_mantissa (ir_tarval *tv) |
Returns non-zero if the mantissa of a floating point tarval is zero (i.e. | |
int | tarval_get_exponent (ir_tarval *tv) |
Returns the exponent of a floating point IEEE-754 tarval. | |
int | tarval_ieee754_can_conv_lossless (ir_tarval *tv, ir_mode *mode) |
Check if the tarval can be converted to the given mode without precision loss. | |
unsigned | tarval_ieee754_get_exact (void) |
Returns non-zero if the result of the last IEEE-754 operation was exact. | |
void | tarval_enable_fp_ops (int enable) |
Enable/Disable floating point constant folding. | |
int | tarval_fp_ops_enabled (void) |
returns 0/1 if floating point folding is enable/disabled | |
int | tarval_is_NaN (ir_tarval *tv) |
Check if its the a floating point NaN. | |
int | tarval_is_plus_inf (ir_tarval *tv) |
Check if its the a floating point +inf. | |
int | tarval_is_minus_inf (ir_tarval *tv) |
Check if its the a floating point -inf. | |
int | tarval_is_finite (ir_tarval *tv) |
Check if the tarval represents a finite value, ie neither NaN nor inf. | |
int | is_tarval (const void *thing) |
Checks whether a pointer points to a tarval. |
Variables | |
ir_tarval * | tarval_bad |
The 'bad' tarval. | |
ir_tarval * | tarval_undefined |
The 'undefined' tarval. | |
ir_tarval * | tarval_b_false |
The mode_b tarval 'false'. | |
ir_tarval * | tarval_b_true |
The mode_b tarval 'true'. | |
ir_tarval * | tarval_unreachable |
The mode_X tarval 'unreachable'. | |
ir_tarval * | tarval_reachable |
The mode_X tarval 'reachable'. |
Representation of and static computations on target machine values.
Definition in file tv.h.