- dbgi = get_irn_dbg_info(imul);
- block = get_nodes_block(imul);
- irg = current_ir_graph;
- base = get_irn_n(imul, n_ia32_IMul_base);
- index = get_irn_n(imul, n_ia32_IMul_index);
- mem = get_irn_n(imul, n_ia32_IMul_mem);
- load = new_rd_ia32_Load(dbgi, irg, block, base, index, mem);
-
- /* copy all attributes */
- set_irn_pinned( load, get_irn_pinned(imul));
- set_ia32_op_type( load, ia32_AddrModeS);
- ia32_copy_am_attrs(load, imul);
-
- set_ia32_am_offs_int( imul, 0);
- set_ia32_am_sc( imul, NULL);
- set_ia32_am_scale( imul, 0);
- clear_ia32_am_sc_sign(imul);
-
- sched_add_before(imul, load);
-
- mem = new_rd_Proj(dbgi, irg, block, load, mode_M, pn_ia32_Load_M);
- res = new_rd_Proj(dbgi, irg, block, load, mode_Iu, pn_ia32_Load_res);
-
- arch_set_irn_register(arch_env, res, reg);
- be_peephole_new_node(res);
-
- set_irn_n(imul, n_ia32_IMul_mem, mem);
- noreg = get_irn_n(imul, n_ia32_IMul_left);
- set_irn_n(imul, n_ia32_IMul_base, noreg);
- set_irn_n(imul, n_ia32_IMul_index, noreg);
- set_irn_n(imul, n_ia32_IMul_left, res);
- set_ia32_op_type(imul, ia32_Normal);