libFirm
irmode.h File Reference

Data modes of operations. More...

#include "firm_types.h"
#include "begin.h"
#include <stddef.h>
#include "end.h"

Go to the source code of this file.

Enumerations

enum  ir_mode_arithmetic {
  irma_none = 1, irma_twos_complement = 2, irma_ieee754 = 256, irma_x86_extended_float,
  irma_last = irma_x86_extended_float
}
 These values represent the different arithmetic operations possible with a mode. More...

Functions

ir_modenew_int_mode (const char *name, ir_mode_arithmetic arithmetic, unsigned bit_size, int sign, unsigned modulo_shift)
 Creates a new mode.
ir_modenew_reference_mode (const char *name, ir_mode_arithmetic arithmetic, unsigned bit_size, unsigned modulo_shift)
 Create a new reference mode.
ir_modenew_float_mode (const char *name, ir_mode_arithmetic arithmetic, unsigned exponent_size, unsigned mantissa_size)
 Create a new ieee754 float mode.
int is_mode (const void *thing)
 Checks whether a pointer points to a mode.
identget_mode_ident (const ir_mode *mode)
 Returns the ident* of the mode.
const char * get_mode_name (const ir_mode *mode)
 Returns the null-terminated name of this mode.
unsigned get_mode_size_bits (const ir_mode *mode)
 Returns the size of values of the mode in bits.
unsigned get_mode_size_bytes (const ir_mode *mode)
 Returns the size of values of the mode in bytes.
int get_mode_sign (const ir_mode *mode)
 Returns the signess of a mode.
ir_mode_arithmetic get_mode_arithmetic (const ir_mode *mode)
 Returns the arithmetic of a mode.
unsigned int get_mode_modulo_shift (const ir_mode *mode)
 Returns the modulo shift attribute.
void * get_mode_link (const ir_mode *mode)
 Returns the stored intermediate information.
void set_mode_link (ir_mode *mode, void *l)
 Stores new intermediate information.
ir_tarvalget_mode_min (ir_mode *mode)
 Returns the smallest representable value of a given mode.
ir_tarvalget_mode_max (ir_mode *mode)
 Returns the biggest representable value o f a given mode.
ir_tarvalget_mode_null (ir_mode *mode)
 Returns the value Zero represented in this mode.
ir_tarvalget_mode_one (ir_mode *mode)
 Returns the value One, represented in this mode.
ir_tarvalget_mode_minus_one (ir_mode *mode)
 Returns the value Minus One, represented in this mode.
ir_tarvalget_mode_all_one (ir_mode *mode)
 Returns the value where all bits are One, represented in this mode.
ir_tarvalget_mode_infinite (ir_mode *mode)
 Returns the positive infinite value of a mode.
ir_tarvalget_mode_NAN (ir_mode *mode)
 Returns the NAN value of a given mode.
ir_modeget_modeF (void)
 Returns float mode.
ir_modeget_modeD (void)
 Returns double mode.
ir_modeget_modeQ (void)
 Returns quadruple prevision mode.
ir_modeget_modeBs (void)
 Returns byte signed mode.
ir_modeget_modeBu (void)
 Returns byte unsigned mode.
ir_modeget_modeHs (void)
 Returns halfword signed mode.
ir_modeget_modeHu (void)
 Returns halfword unsigned mode.
ir_modeget_modeIs (void)
 Returns integer signed mode.
ir_modeget_modeIu (void)
 Returns integer unsigned mode.
ir_modeget_modeLs (void)
 Returns long signed mode.
ir_modeget_modeLu (void)
 Returns long unsigned mode.
ir_modeget_modeLLs (void)
 Returns long long signed mode.
ir_modeget_modeLLu (void)
 Returns long long unsigned mode.
ir_modeget_modeP (void)
 Returns pointer mode.
ir_modeget_modeb (void)
 Returns internal boolean mode.
ir_modeget_modeX (void)
 Returns control-flow mode.
ir_modeget_modeBB (void)
 Returns Basic-Block mode.
ir_modeget_modeM (void)
 Returns memory mode.
ir_modeget_modeT (void)
 Returns tuple mode.
ir_modeget_modeANY (void)
 Returns ANY mode.
ir_modeget_modeBAD (void)
 Returns BAD mode.
ir_modeget_modeP_code (void)
 Returns the machine specific pointer mode for code addresses.
ir_modeget_modeP_data (void)
 Returns the machine specific pointer mode for data addresses.
void set_modeP_code (ir_mode *p)
 Sets the machine specific pointer mode for code addresses.
void set_modeP_data (ir_mode *p)
 Sets the machine specific pointer mode for data addresses.
int mode_is_signed (const ir_mode *mode)
 Returns 1 if mode is signed, 0 otherwise.
int mode_is_float (const ir_mode *mode)
 Returns 1 if mode is for floatingpoint numbers, 0 otherwise.
int mode_is_int (const ir_mode *mode)
 Returns 1 if mode is for integer numbers, 0 otherwise.
int mode_is_reference (const ir_mode *mode)
 Returns 1 if mode is for references/pointers, 0 otherwise.
int mode_is_num (const ir_mode *mode)
 Returns 1 if mode is for numeric values, 0 otherwise.
int mode_is_data (const ir_mode *mode)
 Returns 1 if mode is for data values, 0 otherwise.
int mode_is_datab (const ir_mode *mode)
 Returns 1 if mode is for data values or internal booleans, 0 otherwise.
int mode_is_dataM (const ir_mode *mode)
 Returns 1 if mode is for data values or memory, 0 otherwise.
int smaller_mode (const ir_mode *sm, const ir_mode *lm)
 Returns true if a value of mode sm can be converted to mode lm without loss.
int values_in_mode (const ir_mode *sm, const ir_mode *lm)
 Returns true if no information is lost when converting a value of mode sm into mode lm (and back to mode sm).
ir_modefind_unsigned_mode (const ir_mode *mode)
 Returns a matching unsigned mode for a given integer signed mode.
ir_modefind_signed_mode (const ir_mode *mode)
 Returns a matching signed mode for a given integer unsigned mode.
ir_modefind_double_bits_int_mode (const ir_mode *mode)
 Returns an integer mode with 2*n bits for a given integer mode with n bits.
int mode_honor_signed_zeros (const ir_mode *mode)
 Returns non-zero if the given mode honors signed zero's, i.e., a +0 and a -0 exists and handled differently.
int mode_overflow_on_unary_Minus (const ir_mode *mode)
 Returns non-zero if the given mode might overflow on unary Minus.
int mode_wrap_around (const ir_mode *mode)
 Returns non-zero if the mode has a reversed wrap-around logic, especially (a + x) - x == a.
ir_modeget_reference_mode_signed_eq (ir_mode *mode)
 Returns the signed integer equivalent mode for an reference mode.
void set_reference_mode_signed_eq (ir_mode *ref_mode, ir_mode *int_mode)
 Sets the signed integer equivalent mode for an reference mode.
ir_modeget_reference_mode_unsigned_eq (ir_mode *mode)
 Returns the unsigned integer equivalent mode for an reference mode.
void set_reference_mode_unsigned_eq (ir_mode *ref_mode, ir_mode *int_mode)
 Sets the unsigned integer equivalent mode for an reference mode.
unsigned get_mode_mantissa_size (const ir_mode *mode)
 Returns size of mantissa in bits (for float modes).
unsigned get_mode_exponent_size (const ir_mode *mode)
 Returns size of exponent in bits (for float modes)
int is_reinterpret_cast (const ir_mode *src, const ir_mode *dst)
 Returns non-zero if the cast from mode src to mode dst is a reinterpret cast (ie.
ir_typeget_type_for_mode (const ir_mode *mode)
 Returns the primitive type matching the given mode.
size_t ir_get_n_modes (void)
 Returns number of known modes.
ir_modeir_get_mode (size_t num)
 Returns known mode number num.

Variables

ir_modemode_M
 memory
ir_modemode_F
 ieee754 binary32 float (single precision)
ir_modemode_D
 ieee754 binary64 float (double precision)
ir_modemode_Q
 ieee754 binary128 float (quadruple precision)
ir_modemode_Bs
 int8
ir_modemode_Bu
 uint8
ir_modemode_Hs
 int16
ir_modemode_Hu
 uint16
ir_modemode_Is
 int32
ir_modemode_Iu
 uint32
ir_modemode_Ls
 int64
ir_modemode_Lu
 uint64
ir_modemode_LLs
 int128
ir_modemode_LLu
 uint128
ir_modemode_P
 pointer
ir_modemode_P_code
 A pointer mode that is set by the client of libfirm.
ir_modemode_P_data
 A pointer mode that is set by the client of libfirm.
ir_modemode_b
 internal boolean
ir_modemode_X
 execution
ir_modemode_BB
 block
ir_modemode_T
 tuple (none)
ir_modemode_ANY
 undefined mode
ir_modemode_BAD
 bad mode

Detailed Description

Data modes of operations.

Author
Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Mathias Heil, Michael Beck

Definition in file irmode.h.