more DBG_OPT cases
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 26 Aug 2008 12:23:46 +0000 (12:23 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 26 Aug 2008 12:23:46 +0000 (12:23 +0000)
[r21483]

include/libfirm/firmstat.h
ir/ir/iropt.c
ir/stat/stat_dmp.c

index c263c4b..872079f 100644 (file)
@@ -94,6 +94,7 @@ enum firmstat_optimizations_t {
        FS_OPT_MUX_TO_MIN,                        /**< Mux(a < b, a, b) = Min(a,b) */
        FS_OPT_MUX_TO_MAX,                        /**< Mux(a > b, a, b) = Max(a,b) */
        FS_OPT_MUX_TO_ABS,                        /**< Mux(a > 0, a, -a) = Abs(a) */
+       FS_OPT_MUX_TO_BITOP,                      /**< Mux((a & 2^x) ==/!= 0, 2^x, 0) = (a & 2^x) (xor 2^x) */
        FS_OPT_IDEM_UNARY,                        /**< Idempotent unary operation */
        FS_OPT_MINUS_NOT,                         /**< -(~x) = x + 1 */
        FS_OPT_NOT_MINUS_1,                       /**< ~(x - 1) = -x */
index 28df36c..af2c377 100644 (file)
@@ -5499,10 +5499,12 @@ static ir_node *transform_node_Mux(ir_node *n) {
                                                                if (pn == pn_Cmp_Lg) {
                                                                        /* Mux((a & 2^C) != 0, 2^C, 0) */
                                                                        n = cmp_l;
+                                                                       DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                } else {
                                                                        /* Mux((a & 2^C) == 0, 2^C, 0) */
                                                                        n = new_rd_Eor(get_irn_dbg_info(n), current_ir_graph,
                                                                                block, cmp_l, t, mode);
+                                                                       DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                }
                                                                return n;
                                                        }
@@ -5514,10 +5516,12 @@ static ir_node *transform_node_Mux(ir_node *n) {
                                                                        if (pn == pn_Cmp_Lg) {
                                                                                /* (a & (1 << n)) != 0, (1 << n), 0) */
                                                                                n = cmp_l;
+                                                                               DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                        } else {
                                                                                /* (a & (1 << n)) == 0, (1 << n), 0) */
                                                                                n = new_rd_Eor(get_irn_dbg_info(n), current_ir_graph,
                                                                                        block, cmp_l, t, mode);
+                                                                               DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                        }
                                                                        return n;
                                                                }
@@ -5531,10 +5535,12 @@ static ir_node *transform_node_Mux(ir_node *n) {
                                                                        if (pn == pn_Cmp_Lg) {
                                                                                /* ((1 << n) & a) != 0, (1 << n), 0) */
                                                                                n = cmp_l;
+                                                                               DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                        } else {
                                                                                /* ((1 << n) & a) == 0, (1 << n), 0) */
                                                                                n = new_rd_Eor(get_irn_dbg_info(n), current_ir_graph,
                                                                                        block, cmp_l, t, mode);
+                                                                               DBG_OPT_ALGSIM1(oldn, cmp, sel, n, FS_OPT_MUX_TO_BITOP);
                                                                        }
                                                                        return n;
                                                                }
index 161607c..e8ab327 100644 (file)
@@ -112,6 +112,7 @@ static const struct {
        { FS_OPT_MUX_TO_MIN,     "algebraic simplification: Mux(a < b, a, b) = Min(a,b)" },
        { FS_OPT_MUX_TO_MAX,     "algebraic simplification: Mux(a > b, a, b) = Max(a,b)" },
        { FS_OPT_MUX_TO_ABS,     "algebraic simplification: Mux(a > 0, a, -a) = Abs(a)" },
+       { FS_OPT_MUX_TO_BITOP,   "algebraic simplification: Mux((a & 2^x) ==/!= 0, 2^x, 0) = (a & 2^x) (xor 2^x)" },
        { FS_OPT_IDEM_UNARY,     "algebraic simplification: Idempotent unary operation" },
        { FS_OPT_MINUS_NOT,      "algebraic simplification: -(~x) = x + 1" },
        { FS_OPT_NOT_MINUS_1,    "algebraic simplification: ~(x - 1) = -x" },