verify: Clarify assertion message.
[libfirm] / ir / ir / irmode_t.h
index 2e04a62..e268ae4 100644 (file)
@@ -22,7 +22,6 @@
  * @brief   Data modes of operations -- private header.
  * @author  Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Mathias Heil,
  *          Michael Beck
  * @brief   Data modes of operations -- private header.
  * @author  Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Mathias Heil,
  *          Michael Beck
- * @version $Id$
  */
 #ifndef FIRM_IR_IRMODE_T_H
 #define FIRM_IR_IRMODE_T_H
  */
 #ifndef FIRM_IR_IRMODE_T_H
 #define FIRM_IR_IRMODE_T_H
 #include "irtypes.h"
 #include "irmode.h"
 
 #include "irtypes.h"
 #include "irmode.h"
 
-/* ------------------------------- *
- * inline functions                *
- * ------------------------------- */
-extern ir_mode *mode_P_code, *mode_P_data;
-
-static INLINE ir_mode *
-_get_modeP_code(void) { return mode_P_code; }
-
-static INLINE ir_mode *
-_get_modeP_data(void) { return mode_P_data; }
-
-static INLINE modecode
-_get_mode_modecode(const ir_mode *mode) { return mode->code; }
-
-static INLINE ident *
-_get_mode_ident(const ir_mode *mode) { return mode->name; }
-
-static INLINE mode_sort
-_get_mode_sort(const ir_mode* mode) { return mode->sort; }
-
-static INLINE int
-_get_mode_size_bits(const ir_mode *mode) { return mode->size; }
-
-static INLINE int
-_get_mode_size_bytes(const ir_mode *mode) {
-       int size = _get_mode_size_bits(mode);
-       if ((size & 7) != 0) return -1;
+#define get_modeP_code()               get_modeP_code_()
+#define get_modeP_data()               get_modeP_data_()
+#define get_mode_ident(mode)           get_mode_ident_(mode)
+#define get_mode_sort(mode)            get_mode_sort_(mode)
+#define get_mode_size_bits(mode)       get_mode_size_bits_(mode)
+#define get_mode_size_bytes(mode)      get_mode_size_bytes_(mode)
+#define get_mode_sign(mode)            get_mode_sign_(mode)
+#define get_mode_arithmetic(mode)      get_mode_arithmetic_(mode)
+#define get_mode_modulo_shift(mode)    get_mode_modulo_shift_(mode)
+#define get_mode_link(mode)            get_mode_link_(mode)
+#define set_mode_link(mode, l)         set_mode_link_(mode, l)
+#define mode_is_signed(mode)           mode_is_signed_(mode)
+#define mode_is_float(mode)            mode_is_float_(mode)
+#define mode_is_int(mode)              mode_is_int_(mode)
+#define mode_is_reference(mode)        mode_is_reference_(mode)
+#define mode_is_num(mode)              mode_is_num_(mode)
+#define mode_is_data(mode)             mode_is_data_(mode)
+#define mode_is_datab(mode)            mode_is_datab_(mode)
+#define mode_is_dataM(mode)            mode_is_dataM_(mode)
+#define get_type_for_mode(mode)        get_type_for_mode_(mode)
+#define get_mode_mantissa_size(mode)   get_mode_mantissa_size_(mode)
+#define get_mode_exponent_size(mode)   get_mode_exponent_size_(mode)
+
+static inline ir_mode *get_modeP_code_(void) { return mode_P_code; }
+
+static inline ir_mode *get_modeP_data_(void) { return mode_P_data; }
+
+static inline ident *get_mode_ident_(const ir_mode *mode) { return mode->name; }
+
+static inline ir_mode_sort get_mode_sort_(const ir_mode *mode) { return mode->sort; }
+
+static inline unsigned get_mode_size_bits_(const ir_mode *mode) { return mode->size; }
+
+static inline unsigned get_mode_size_bytes_(const ir_mode *mode)
+{
+       unsigned size = get_mode_size_bits_(mode);
+       if ((size & 7) != 0) return (unsigned) -1;
        return size >> 3;
 }
 
        return size >> 3;
 }
 
-static INLINE int
-_get_mode_sign(const ir_mode *mode) { return mode->sign; }
-
-static INLINE mode_arithmetic
-_get_mode_arithmetic(const ir_mode *mode) { return mode->arithmetic; }
+static inline int get_mode_sign_(const ir_mode *mode) { return mode->sign; }
 
 
-static INLINE unsigned int
-_get_mode_modulo_shift(const ir_mode *mode) { return mode->modulo_shift; }
+static inline ir_mode_arithmetic get_mode_arithmetic_(const ir_mode *mode) { return mode->arithmetic; }
 
 
-static INLINE unsigned int
-_get_mode_vector_elems(const ir_mode *mode) { return mode->vector_elem; }
+static inline unsigned int get_mode_modulo_shift_(const ir_mode *mode) { return mode->modulo_shift; }
 
 
-static INLINE void *
-_get_mode_link(const ir_mode *mode) { return mode->link; }
+static inline void *get_mode_link_(const ir_mode *mode) { return mode->link; }
 
 
-static INLINE void
-_set_mode_link(ir_mode *mode, void *l) { mode->link = l; }
+static inline void set_mode_link_(ir_mode *mode, void *l) { mode->link = l; }
 
 
-/* Functions to check, whether a modecode is signed, float, int, num, data,
+/* Functions to check, whether a mode is signed, float, int, num, data,
    datab or dataM. For more exact definitions read the corresponding pages
    in the firm documentation or the following enumeration
 
    datab or dataM. For more exact definitions read the corresponding pages
    in the firm documentation or the following enumeration
 
@@ -116,63 +117,59 @@ _set_mode_link(ir_mode *mode, void *l) { mode->link = l; }
             = {data || irm_M}
 */
 
             = {data || irm_M}
 */
 
-static INLINE int
-_mode_is_signed(const ir_mode *mode) {
-       assert(mode);
+static inline int mode_is_signed_(const ir_mode *mode)
+{
        return mode->sign;
 }
 
        return mode->sign;
 }
 
-static INLINE int
-_mode_is_float(const ir_mode *mode) {
-       assert(mode);
-       return (_get_mode_sort(mode) == irms_float_number);
+static inline int mode_is_float_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) == irms_float_number);
 }
 
 }
 
-static INLINE int
-_mode_is_int(const ir_mode *mode) {
-       assert(mode);
-       return (_get_mode_sort(mode) == irms_int_number);
+static inline int mode_is_int_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) == irms_int_number);
 }
 
 }
 
-static INLINE int
-_mode_is_reference(const ir_mode *mode) {
-       assert(mode);
-       return (_get_mode_sort(mode) == irms_reference);
+static inline int mode_is_reference_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) == irms_reference);
 }
 
 }
 
-static INLINE int
-_mode_is_num(const ir_mode *mode) {
-       assert(mode);
-       return (_mode_is_int(mode) || _mode_is_float(mode));
+static inline int mode_is_num_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) & irmsh_is_num);
 }
 
 }
 
-static INLINE int
-_mode_is_data(const ir_mode *mode) {
-       return (_mode_is_int(mode) || _mode_is_float(mode) || _mode_is_reference(mode));
+static inline int mode_is_data_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) & irmsh_is_data);
 }
 
 }
 
-static INLINE int
-_mode_is_datab(const ir_mode *mode) {
-       assert(mode);
-       return (_mode_is_data(mode) || _get_mode_sort(mode) == irms_internal_boolean);
+static inline int mode_is_datab_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) & irmsh_is_datab);
 }
 
 }
 
-static INLINE int
-_mode_is_dataM(const ir_mode *mode) {
-       assert(mode);
-       return (_mode_is_data(mode) || _get_mode_modecode(mode) == irm_M);
+static inline int mode_is_dataM_(const ir_mode *mode)
+{
+       return (get_mode_sort(mode) & irmsh_is_dataM);
 }
 
 }
 
-static INLINE int
-_mode_is_float_vector(const ir_mode *mode) {
-       assert(mode);
-       return (_get_mode_sort(mode) == irms_float_number) && (_get_mode_vector_elems(mode) > 1);
+static inline ir_type *get_type_for_mode_(const ir_mode *mode)
+{
+       return mode->type;
 }
 
 }
 
-static INLINE int
-_mode_is_int_vector(const ir_mode *mode) {
-       assert(mode);
-       return (_get_mode_sort(mode) == irms_int_number) && (_get_mode_vector_elems(mode) > 1);
+static inline unsigned get_mode_mantissa_size_(const ir_mode *mode)
+{
+       return mode->float_desc.mantissa_size;
+}
+
+static inline unsigned get_mode_exponent_size_(const ir_mode *mode)
+{
+       return mode->float_desc.exponent_size;
 }
 
 /** mode module initialization, call once before use of any other function **/
 }
 
 /** mode module initialization, call once before use of any other function **/
@@ -181,28 +178,4 @@ void init_mode(void);
 /** mode module finalization. frees all memory.  */
 void finish_mode(void);
 
 /** mode module finalization. frees all memory.  */
 void finish_mode(void);
 
-#define get_modeP_code()               _get_modeP_code()
-#define get_modeP_data()               _get_modeP_data()
-#define get_mode_modecode(mode)        _get_mode_modecode(mode)
-#define get_mode_ident(mode)           _get_mode_ident(mode)
-#define get_mode_sort(mode)            _get_mode_sort(mode)
-#define get_mode_size_bits(mode)       _get_mode_size_bits(mode)
-#define get_mode_size_bytes(mode)      _get_mode_size_bytes(mode)
-#define get_mode_sign(mode)            _get_mode_sign(mode)
-#define get_mode_arithmetic(mode)      _get_mode_arithmetic(mode)
-#define get_mode_modulo_shift(mode)    _get_mode_modulo_shift(mode)
-#define get_mode_n_vector_elems(mode)  _get_mode_vector_elems(mode)
-#define get_mode_link(mode)            _get_mode_link(mode)
-#define set_mode_link(mode, l)         _set_mode_link(mode, l)
-#define mode_is_signed(mode)           _mode_is_signed(mode)
-#define mode_is_float(mode)            _mode_is_float(mode)
-#define mode_is_int(mode)              _mode_is_int(mode)
-#define mode_is_reference(mode)        _mode_is_reference(mode)
-#define mode_is_num(mode)              _mode_is_num(mode)
-#define mode_is_data(mode)             _mode_is_data(mode)
-#define mode_is_datab(mode)            _mode_is_datab(mode)
-#define mode_is_dataM(mode)            _mode_is_dataM(mode)
-#define mode_is_float_vector(mode)     _mode_is_float_vector(mode)
-#define mode_is_int_vector(mode)       _mode_is_int_vector(mode)
-
 #endif
 #endif