X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode_t.h;h=d8374cb05aaf4a2c8702837b05ec37ccfc827fff;hb=513a7f65a98d28f2c482da861a94e1328f981684;hp=547af109421e14cda0d407cbd4184038b8ad4a47;hpb=a4caba8123fe35e1a431b7b1998ac9e4eb6064c2;p=libfirm diff --git a/ir/ir/irmode_t.h b/ir/ir/irmode_t.h index 547af1094..d8374cb05 100644 --- a/ir/ir/irmode_t.h +++ b/ir/ir/irmode_t.h @@ -1,27 +1,50 @@ +/* + * Project: libFIRM + * File name: ir/ir/irmode_t.h + * Purpose: Data modes of operations -- private header. + * Author: Martin Trapp, Christian Schaefer + * Modified by: Goetz Lindenmaier, Mathias Heil + * Created: + * CVS-ID: $Id$ + * Copyright: (c) 1998-2003 Universität Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ + -/* $Id$ */ +/** + * @file irmode_t.h + */ # ifndef _IRMODE_T_H_ # define _IRMODE_T_H_ # include "irmode.h" +# include "tv.h" -/** - * The type of a mode - */ +/** This struct is supposed to completely define a mode. **/ struct ir_mode { - modecode code; - ident *name; /**< Name of this mode */ - int size; /**< size of the mode in Bytes. */ - int ld_align; /**< ld means log2 */ - tarval *min; /**< largest value to be represented by this mode */ - tarval *max; /**< smallest value to be represented by this mode */ - tarval *null; /**< Representation of zero in this mode */ - unsigned fsigned:1; /**< signedness of this mode */ - unsigned ffloat:1; /**< true if this is a float */ -}; + firm_kind kind; /**< distinguishes this node from others */ + modecode code; /**< unambiguous identifier of a mode */ + ident *name; /**< Name ident of this mode */ + /* ----------------------------------------------------------------------- */ + /* On changing this struct you have to evaluate the mode_are_equal function!*/ + mode_sort sort; /**< coarse classification of this mode: + int, float, reference ... + (see irmode.h) */ + mode_arithmetic arithmetic; /**< different arithmetic operations possible with a mode */ + int size; /**< size of the mode in Bits. */ + int align; /**< byte alignment */ + unsigned sign:1; /**< signedness of this mode */ + unsigned int modulo_shift; -void init_mode (void); + /* ----------------------------------------------------------------------- */ + tarval *min; + tarval *max; + tarval *null; + tarval *one; + void *link; /**< To store some intermediate information */ + const void *tv_priv; /**< tarval module will save private data here */ +}; -#endif +#endif /* _IRMODE_T_H_ */