From 567c510477fe994eadc60ab61ebc3b37bc0f8a93 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Sat, 4 Oct 2008 12:52:00 +0000 Subject: [PATCH] Use gen_binop() in gen_Mulh(). [r22467] --- ir/be/ia32/ia32_transform.c | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 12964ac87..b69957b84 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -1181,40 +1181,20 @@ static ir_node *gen_Mulh(ir_node *node) { ir_node *block = get_nodes_block(node); ir_node *new_block = be_transform_node(block); - ir_graph *irg = current_ir_graph; dbg_info *dbgi = get_irn_dbg_info(node); ir_node *op1 = get_Mulh_left(node); ir_node *op2 = get_Mulh_right(node); ir_mode *mode = get_irn_mode(node); construct_binop_func *func; - ir_node *proj_res_high; ir_node *new_node; - ia32_address_mode_t am; - ia32_address_t *addr = &am.addr; - - assert(!mode_is_float(mode) && "Mulh with float not supported"); - assert(get_mode_size_bits(mode) == 32); - - match_arguments(&am, block, op1, op2, NULL, match_commutative | match_am); + ir_node *proj_res_high; func = mode_is_signed(mode) ? new_rd_ia32_IMul1OP : new_rd_ia32_Mul; - new_node = func(dbgi, irg, new_block, addr->base, addr->index, addr->mem, - am.new_op1, am.new_op2); - - set_am_attributes(new_node, &am); - /* we can't use source address mode anymore when using immediates */ - if(is_ia32_Immediate(am.new_op1) || is_ia32_Immediate(am.new_op2)) - set_ia32_am_support(new_node, ia32_am_none); - SET_IA32_ORIG_NODE(new_node, ia32_get_old_node_name(env_cg, node)); - - assert(get_irn_mode(new_node) == mode_T); - - fix_mem_proj(new_node, &am); + new_node = gen_binop(node, op1, op2, func, match_commutative | match_am); assert(pn_ia32_IMul1OP_res_high == pn_ia32_Mul_res_high); - proj_res_high = new_rd_Proj(dbgi, irg, block, new_node, - mode_Iu, pn_ia32_IMul1OP_res_high); - + proj_res_high = new_rd_Proj(dbgi, current_ir_graph, new_block, new_node, + mode_Iu, pn_ia32_IMul1OP_res_high); return proj_res_high; } -- 2.20.1