X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode_t.h;h=0115da0f39432d0b204a6318a55e13a934fe34eb;hb=e570f00fb465d212dde403160e97ab45d36d1d7e;hp=5d3fb43791ea83d21205589ca78bdab0a400d1db;hpb=6023590e8c7b401803f9b805886277de002efa19;p=libfirm diff --git a/ir/ir/irmode_t.h b/ir/ir/irmode_t.h index 5d3fb4379..0115da0f3 100644 --- a/ir/ir/irmode_t.h +++ b/ir/ir/irmode_t.h @@ -1,5 +1,15 @@ +/* + * 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 @@ -9,23 +19,35 @@ # 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; /**< number of bits a valus of this mode will be shifted */ + unsigned vector_elem; /**< if this is not equal 1, this is a vector mode with + vector_elem number of elements, size contains the size + of all bits and must be dividable by vector_elem */ + + /* ----------------------------------------------------------------------- */ + 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 */ }; - -void init_mode (void); - -#endif +#endif /* _IRMODE_T_H_ */