add a memory input to all constants, needed for the optimized scheduler
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 11 Apr 2006 11:41:29 +0000 (11:41 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 11 Apr 2006 11:41:29 +0000 (11:41 +0000)
ir/be/ia32/ia32_optimize.c
ir/be/ia32/ia32_spec.pl
ir/be/ia32/ia32_transform.c
ir/be/ia32/ia32_x87.c

index 5715d36..1f99048 100644 (file)
@@ -86,13 +86,12 @@ static ir_node *gen_SymConst(ia32_transform_env_t *env) {
        if (mode_is_float(mode)) {
                FP_USED(env->cg);
                if (USE_SSE2(env->cg))
-                       cnst = new_rd_ia32_xConst(dbg, irg, block, mode);
+                       cnst = new_rd_ia32_xConst(dbg, irg, block, get_irg_no_mem(irg), mode);
                else
-                       cnst = new_rd_ia32_vfConst(dbg, irg, block, mode);
-       }
-       else {
-               cnst = new_rd_ia32_Const(dbg, irg, block, mode);
+                       cnst = new_rd_ia32_vfConst(dbg, irg, block, get_irg_no_mem(irg), mode);
        }
+       else
+               cnst = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode);
        set_ia32_Const_attr(cnst, env->irn);
        return cnst;
 }
@@ -188,7 +187,7 @@ static ir_node *gen_Const(ia32_transform_env_t *env) {
                cnst = gen_SymConst(env);
        }
        else {
-               cnst = new_rd_ia32_Const(dbg, irg, block, get_irn_mode(node));
+               cnst = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), get_irn_mode(node));
                set_ia32_Const_attr(cnst, node);
        }
        return cnst;
index bd59ba5..b2016b6 100644 (file)
@@ -439,7 +439,7 @@ $comment_string = "/*";
   "irn_flags" => "R",
   "comment"   => "represents an integer constant",
   "cmp_attr"  => "  return ia32_compare_immop_attr(attr_a, attr_b);\n",
-  "reg_req"   => { "out" => [ "gp" ] },
+  "reg_req"   => { "in" => [ "none" ], "out" => [ "gp" ] },
 },
 
 "Cdq" => {
@@ -635,7 +635,7 @@ $comment_string = "/*";
   "irn_flags" => "R",
   "comment"   => "represents a SSE constant",
   "cmp_attr"  => "  return ia32_compare_immop_attr(attr_a, attr_b);\n",
-  "reg_req"   => { "out" => [ "xmm" ] },
+  "reg_req"   => { "in" => [ "none" ], "out" => [ "xmm" ] },
   "emit"      => '. mov%M %D1, %C /* Load fConst into register */',
 },
 
@@ -878,7 +878,7 @@ $comment_string = "/*";
   "irn_flags" => "R",
   "comment"   => "represents a virtual floating point constant",
   "cmp_attr"  => "  return ia32_compare_immop_attr(attr_a, attr_b);\n",
-  "reg_req"   => { "out" => [ "vfp" ] },
+  "reg_req"   => { "in" => [ "none" ], "out" => [ "vfp" ] },
 },
 
 # other
index 63f4a9f..032330a 100644 (file)
@@ -884,7 +884,7 @@ static ir_node *generate_DivMod(ia32_transform_env_t *env, ir_node *dividend, ir
                edx_node = new_rd_Proj(dbg, irg, block, cltd, mode_Is, pn_ia32_Cdq_EDX);
        }
        else {
-               edx_node = new_rd_ia32_Const(dbg, irg, block, mode_Iu);
+               edx_node = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode_Iu);
                set_ia32_Const_type(edx_node, ia32_Const);
                set_ia32_Immop_tarval(edx_node, get_tarval_null(mode_Iu));
        }
@@ -1530,7 +1530,7 @@ static ir_node *gen_CopyB(ia32_transform_env_t *env) {
                rem = size & 0x3; /* size % 4 */
                size >>= 2;
 
-               res = new_rd_ia32_Const(dbg, irg, block, mode_Is);
+               res = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode_Is);
                set_ia32_op_type(res, ia32_Const);
                set_ia32_Immop_tarval(res, new_tarval_from_long(size, mode_Is));
 
index 1e4b0a1..9f85394 100644 (file)
@@ -1581,7 +1581,6 @@ static void x87_init_simulator(x87_simulator *sim, ir_graph *irg, const arch_env
        sim->env        = env;
 
        FIRM_DBG_REGISTER(dbg, "firm.be.ia32.x87");
-       firm_dbg_set_mask(dbg, SET_LEVEL_2);
 
        DB((dbg, LEVEL_1, "--------------------------------\n"
                "x87 Simulator started for %+F\n", irg));