add missing dbg hooks for boolean simplifications
[libfirm] / include / libfirm / irmode.h
index 769fd0f..f24ac64 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
  *
  * This file is part of libFirm.
  *
@@ -59,12 +59,10 @@ typedef enum { /* irm is short for `ir mode' */
        irm_Lu,                       /**< unsigned long(64) */
        irm_LLs,                      /**< signed long long(128) */
        irm_LLu,                      /**< unsigned long long(128) */
        irm_Lu,                       /**< unsigned long(64) */
        irm_LLs,                      /**< signed long long(128) */
        irm_LLu,                      /**< unsigned long long(128) */
-       irm_C,                        /**< character */
        irm_P,                        /**< pointer */
        irm_b,                        /**< internal boolean */
        irm_M,                        /**< memory */
        irm_T,                        /**< tuple */
        irm_P,                        /**< pointer */
        irm_b,                        /**< internal boolean */
        irm_M,                        /**< memory */
        irm_T,                        /**< tuple */
-       irm_U,                        /**< unicode character */
        irm_ANY,                      /**< undefined mode */
        irm_BAD,                      /**< bad mode */
        irm_max                       /**< maximum value for modecode */
        irm_ANY,                      /**< undefined mode */
        irm_BAD,                      /**< bad mode */
        irm_max                       /**< maximum value for modecode */
@@ -86,8 +84,6 @@ typedef enum {
                                     Floating point computations can be performed. */
        irms_reference,         /**< A mode to represent entities.
                                     Restricted int computations can be performed */
                                     Floating point computations can be performed. */
        irms_reference,         /**< A mode to represent entities.
                                     Restricted int computations can be performed */
-       irms_character          /**< A mode to represent characters/symbols
-                                    ?? Are computations allowed? as int?? */
 } mode_sort;
 
 /** These values represent the different arithmetic operations possible with a mode.
 } mode_sort;
 
 /** These values represent the different arithmetic operations possible with a mode.
@@ -187,11 +183,11 @@ const char *get_mode_name(const ir_mode *mode);
 mode_sort   get_mode_sort(const ir_mode *mode);
 
 /** Returns the size of values of the mode in bits. */
 mode_sort   get_mode_sort(const ir_mode *mode);
 
 /** Returns the size of values of the mode in bits. */
-int get_mode_size_bits(const ir_mode *mode);
+unsigned get_mode_size_bits(const ir_mode *mode);
 
 /** Returns the size of values of the mode in bytes.
  *  If the size is not dividable by 8 returns -1. */
 
 /** Returns the size of values of the mode in bytes.
  *  If the size is not dividable by 8 returns -1. */
-int get_mode_size_bytes(const ir_mode *mode);
+unsigned get_mode_size_bytes(const ir_mode *mode);
 
 /** Returns the signess of a mode.
  *
 
 /** Returns the signess of a mode.
  *
@@ -199,7 +195,7 @@ int get_mode_size_bytes(const ir_mode *mode);
 int get_mode_sign(const ir_mode *mode);
 
 /** Returns the arithmetic of a mode */
 int get_mode_sign(const ir_mode *mode);
 
 /** Returns the arithmetic of a mode */
-int get_mode_arithmetic(const ir_mode *mode);
+mode_arithmetic get_mode_arithmetic(const ir_mode *mode);
 
 /** Get the modulo shift attribute.
  *
 
 /** Get the modulo shift attribute.
  *
@@ -266,6 +262,13 @@ tarval *get_mode_one(ir_mode *mode);
  */
 tarval *get_mode_minus_one(ir_mode *mode);
 
  */
 tarval *get_mode_minus_one(ir_mode *mode);
 
+/**
+ * Returns the value where all bits are One, represented in this mode.
+ *
+ * All One is defined only for modes integer, reference and boolean modes
+ */
+tarval *get_mode_all_one(ir_mode *mode);
+
 /**
  * Returns the positive infinite value of a mode.
  *
 /**
  * Returns the positive infinite value of a mode.
  *
@@ -299,9 +302,6 @@ extern ir_mode *mode_Lu;  /**< unsigned long integer */
 extern ir_mode *mode_LLs; /**< signed long long integer */
 extern ir_mode *mode_LLu; /**< unsigned long long integer */
 
 extern ir_mode *mode_LLs; /**< signed long long integer */
 extern ir_mode *mode_LLu; /**< unsigned long long integer */
 
-extern ir_mode *mode_C;   /**< 8 bit char */
-extern ir_mode *mode_U;   /**< 16 bit unicode char */
-
 extern ir_mode *mode_P;   /**< pointer */
 extern ir_mode *mode_P_code; /**< A pointer mode that is set by the client of libfirm.  This mode
                                   represents the pointer size of the target machine code addresses. Is initialized
 extern ir_mode *mode_P;   /**< pointer */
 extern ir_mode *mode_P_code; /**< A pointer mode that is set by the client of libfirm.  This mode
                                   represents the pointer size of the target machine code addresses. Is initialized
@@ -335,8 +335,6 @@ ir_mode *get_modeLs(void);
 ir_mode *get_modeLu(void);
 ir_mode *get_modeLLs(void);
 ir_mode *get_modeLLu(void);
 ir_mode *get_modeLu(void);
 ir_mode *get_modeLLs(void);
 ir_mode *get_modeLLu(void);
-ir_mode *get_modeC(void);
-ir_mode *get_modeU(void);
 ir_mode *get_modeP(void);
 ir_mode *get_modeb(void);
 ir_mode *get_modeX(void);
 ir_mode *get_modeP(void);
 ir_mode *get_modeb(void);
 ir_mode *get_modeX(void);
@@ -366,7 +364,7 @@ void set_modeP_data(ir_mode *p);
 
 /**
    Functions to check, whether a modecode is signed, float, int, character,
 
 /**
    Functions to check, whether a modecode is signed, float, int, character,
-   reference, num, numP, data, datab or dataM.
+   reference, num, data, datab or dataM.
 
    For more exact definitions read the corresponding pages
    in the firm documentation or the following enumeration
 
    For more exact definitions read the corresponding pages
    in the firm documentation or the following enumeration
@@ -377,20 +375,14 @@ void set_modeP_data(ir_mode *p);
    The set of "int" is defined as:
    int   = {irm_Bs, irm_Bu, irm_Hs, irm_Hu, irm_Is, irm_Iu, irm_Ls, irm_Lu}
 
    The set of "int" is defined as:
    int   = {irm_Bs, irm_Bu, irm_Hs, irm_Hu, irm_Is, irm_Iu, irm_Ls, irm_Lu}
 
-   The set of "character" is defined as:
-   character  = {irm_C, irm_U}
-
    The set of "reference" is defined as:
    reference  = {irm_P}
 
    The set of "num" is defined as:
    num   = {float || int}
 
    The set of "reference" is defined as:
    reference  = {irm_P}
 
    The set of "num" is defined as:
    num   = {float || int}
 
-   The set of "numP" is defined as:
-   numP  =  {float || int || reference}
-
    The set of "data" is defined as:
    The set of "data" is defined as:
-   data  =  {num || character || reference}
+   data  =  {num || reference}
 
    The set of "datab" is defined as:
    datab =  {data || irm_b }
 
    The set of "datab" is defined as:
    datab =  {data || irm_b }
@@ -405,10 +397,8 @@ void set_modeP_data(ir_mode *p);
 int mode_is_signed (const ir_mode *mode);
 int mode_is_float (const ir_mode *mode);
 int mode_is_int (const ir_mode *mode);
 int mode_is_signed (const ir_mode *mode);
 int mode_is_float (const ir_mode *mode);
 int mode_is_int (const ir_mode *mode);
-int mode_is_character (const ir_mode *mode);
 int mode_is_reference (const ir_mode *mode);
 int mode_is_num (const ir_mode *mode);
 int mode_is_reference (const ir_mode *mode);
 int mode_is_num (const ir_mode *mode);
-int mode_is_numP (const ir_mode *mode);
 int mode_is_data (const ir_mode *mode);
 int mode_is_datab (const ir_mode *mode);
 int mode_is_dataM (const ir_mode *mode);
 int mode_is_data (const ir_mode *mode);
 int mode_is_datab (const ir_mode *mode);
 int mode_is_dataM (const ir_mode *mode);
@@ -416,7 +406,7 @@ int mode_is_float_vector (const ir_mode *mode);
 int mode_is_int_vector (const ir_mode *mode);
 
 /** Returns true if sm can be converted to lm without loss
 int mode_is_int_vector (const ir_mode *mode);
 
 /** Returns true if sm can be converted to lm without loss
-   according to firm definiton */
+   according to firm definition */
 int smaller_mode(const ir_mode *sm, const ir_mode *lm);
 
 /**
 int smaller_mode(const ir_mode *sm, const ir_mode *lm);
 
 /**