more support for Mulh nodes
[libfirm] / include / libfirm / firmstat.h
index 9ce0abe..94953d9 100644 (file)
@@ -54,6 +54,7 @@ enum firmstat_optimizations_t {
        FS_OPT_ADD_SUB,                           /**< (a + x) - x = (a - x) + x */
        FS_OPT_ADD_MUL_A_X_A,                     /**< a * x + a = a * (x + 1) */
        FS_OPT_SUB_0_A,                           /**< 0 - a = -a */
+       FS_OPT_MINUS_SUB,                         /**< - (a - b) = b - a */
        FS_OPT_SUB_MUL_A_X_A,                     /**< a * x - a = a * (x - 1) */
        FS_OPT_SUB_SUB_X_Y_Z,                     /**< (x - y) - z = x - (y + z) */
        FS_OPT_MUL_MINUS_1,                       /**< a * -1 = -a */
@@ -65,6 +66,9 @@ enum firmstat_optimizations_t {
        FS_OPT_NOT_CMP,                           /**< !(a cmp b) = a !cmp b */
        FS_OPT_OR_SHFT_TO_ROT,                    /**< (x << c) | (x >> (bits - c)) == Rot(x, c) */
        FS_OPT_REASSOC_SHIFT,                     /**< (x SHF c1) SHF c2 = x SHF (c1+c2) */
+       FS_OPT_SHIFT_AND,                         /**< (a SHF c) AND (b SHF c) = (a AND b) SHF c */
+       FS_OPT_SHIFT_OR,                          /**< (a SHF c) OR (b SHF c) = (a OR b) SHF c */
+       FS_OPT_SHIFT_EOR,                         /**< (a SHF c) XOR (b SHF c) = (a XOR b) SHF c */
        FS_OPT_CONV,                              /**< a Conv could be removed */
        FS_OPT_CAST,                              /**< a Cast could be removed */
        FS_OPT_MIN_MAX_EQ,                        /**< Min(a,a) = Max(a,a) = a */
@@ -75,6 +79,11 @@ enum firmstat_optimizations_t {
        FS_OPT_MUX_TO_MAX,                        /**< Mux(a > b, a, b) = Max(a,b) */
        FS_OPT_MUX_TO_ABS,                        /**< Mux(a > b, a, b) = Abs(a,b) */
        FS_OPT_MUX_TO_SHR,                        /**< Mux(a > b, a, b) = a >> b */
+       FS_OPT_IDEM_UNARY,                        /**< Idempotent unary operation */
+       FS_OPT_MINUS_NOT,                         /**< -(~x) = x + 1 */
+       FS_OPT_NOT_MINUS_1,                       /**< ~(x - 1) = -x */
+       FS_OPT_NOT_PLUS_1,                        /**< ~x + 1 = -x */
+       FS_OPT_FP_INV_MUL,                        /**< x / y = x * (1.0/y) */
        FS_OPT_CONST_PHI,                         /**< Constant evaluation on Phi */
        FS_BE_IA32_LEA,                           /**< Lea was created */
        FS_BE_IA32_LOAD_LEA,                      /**< Load merged with a Lea */