X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode.h;h=09a1eca57ea2ff247612e4e48cc282c4eea4b390;hb=5f8ddee6b08c8040c0a304a347d65045c1141d52;hp=c9162b3a9209969ab112892203a00bc2afdcab1b;hpb=6acfa2a52bf70bcdbd884a9207535f3bbb2433aa;p=libfirm diff --git a/ir/ir/irmode.h b/ir/ir/irmode.h index c9162b3a9..09a1eca57 100644 --- a/ir/ir/irmode.h +++ b/ir/ir/irmode.h @@ -23,9 +23,14 @@ of the tarval module. # define NUM_MODES 20 +#ifndef _TARVAL_TYPEDEF_ +#define _TARVAL_TYPEDEF_ +typedef struct tarval tarval; +#endif + typedef enum { /* irm is short for `ir mode' */ irm_T, /* former irm_N */ - irm_f, irm_d, /* irm_e, */ + irm_f, irm_d, irm_c, irm_C, irm_h, irm_H, irm_i, irm_I, irm_l, irm_L, irm_B, irm_b, irm_p, @@ -45,17 +50,7 @@ typedef enum { /* irm is short for `ir mode' */ irm_max */ } modecode; -typedef struct { - modecode code; - ident *name; /* Name of this mode */ - int size; /* size of the mode in Bytes. */ - int ld_align; /* ld means log2 */ - struct tarval *min; /* largest value to be represented by this mode */ - struct tarval *max; /* smallest value to be represented by this mode */ - struct tarval *null; /* Representation of zero in this mode */ - unsigned fsigned:1; /* signedness of this mode */ - unsigned ffloat:1; /* true if this is a float */ -} ir_mode; +typedef struct ir_mode ir_mode; extern ir_mode *mode_T; /* tuple (none) */ extern ir_mode *mode_f; /* signed float */ @@ -81,29 +76,48 @@ extern ir_mode *mode_R; /* block */ extern ir_mode *mode_Z; /* infinit integers */ /* oblivious */ extern ir_mode *mode_T; /* tuple (none) */ -void init_mode (void); - -modecode get_modecode_of_mode (ir_mode *mode); -/* void set_modecode_of_mode (ir_mode *mode, modecode code); */ -ident *get_ident_of_mode (ir_mode *mode); -ident *get_mode_ident (ir_mode *mode); - -/* void set_ident_of_mode (ir_mode *mode, ident *name); */ -int get_size_of_mode (ir_mode *mode); -/* void set_size_of_mode (ir_mode *mode, int size); */ -int get_ld_align_of_mode (ir_mode *mode); -/* void set_ld_align_of_mode (ir_mode *mode, int ld_align); */ -struct tarval *get_min_of_mode (ir_mode *mode); -/* void set_min_of_mode (ir_mode *mode, struct tarval *min); */ -struct tarval *get_max_of_mode (ir_mode *mode); -/* void set_max_of_mode (ir_mode *mode, struct tarval *max); */ -struct tarval *get_null_of_mode (ir_mode *mode); -/* void set_null_of_mode (ir_mode *mode, struct tarval *null); */ -unsigned get_fsigned_of_mode (ir_mode *mode); -/* void set_fsigned_of_mode (ir_mode *mode, unsigned fsigned); */ -unsigned get_ffloat_of_mode (ir_mode *mode); -/* void set_ffloat_of_mode (ir_mode *mode, unsigned ffloat); */ +/* An enum for this mode */ +modecode get_mode_modecode (ir_mode *mode); +/* void set_mode_modecode (ir_mode *mode, modecode code); */ + +/* The ident of this mode */ +ident *get_mode_ident (ir_mode *mode); +/* void set_mode_ident (ir_mode *mode, ident *id); */ + +/* The name of this mode */ +const char *get_mode_name (ir_mode *mode); +/* void set_mode_name (ir_mode *mode, char *name); */ + +/* The size of values of the mode in bytes. */ +int get_mode_size (ir_mode *mode); +/* void set_mode_size (ir_mode *mode, int size); */ + +/* The alignment of values of the mode. */ +int get_mode_ld_align (ir_mode *mode); +/* void set_mode_ld_align (ir_mode *mode, int ld_align); */ + +/* The smallest representable value */ +tarval *get_mode_min (ir_mode *mode); +/* void set_mode_min (ir_mode *mode, tarval *min); */ + +/* The biggest representable value */ +tarval *get_mode_max (ir_mode *mode); +/* void set_mode_max (ir_mode *mode, tarval *max); */ + +/* The value Zero represented in this mode */ +tarval *get_mode_null (ir_mode *mode); +/* void set_mode_null (ir_mode *mode, tarval *null); */ + +/* Returns 1 if mode is signed, else 0. */ +unsigned get_mode_fsigned (ir_mode *mode); +/* void set_mode_fsigned (ir_mode *mode, unsigned fsigned); */ + +/* Returns 1 if mode is float, else 0. */ +unsigned get_mode_ffloat (ir_mode *mode); +/* void set_mode_ffloat (ir_mode *mode, unsigned ffloat); */ + +/* Test for a certain class of modes. */ int mode_is_signed (ir_mode *mode); int mode_is_float (ir_mode *mode); int mode_is_int (ir_mode *mode);