projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e6cf04
)
Use Lea instead of Add in the ia32 transformer.
author
Christoph Mallon
<christoph.mallon@gmx.de>
Thu, 24 Feb 2011 14:30:17 +0000
(14:30 +0000)
committer
Christoph Mallon
<christoph.mallon@gmx.de>
Thu, 24 Feb 2011 14:30:17 +0000
(14:30 +0000)
[r28454]
ir/be/ia32/ia32_transform.c
patch
|
blob
|
history
diff --git
a/ir/be/ia32/ia32_transform.c
b/ir/be/ia32/ia32_transform.c
index
dabe7e9
..
0ea0a00
100644
(file)
--- a/
ir/be/ia32/ia32_transform.c
+++ b/
ir/be/ia32/ia32_transform.c
@@
-3437,7
+3437,7
@@
static ir_node *gen_Mux(ir_node *node)
case 16:
/* arg, shift 16 NOT supported */
scale = 3;
case 16:
/* arg, shift 16 NOT supported */
scale = 3;
- new_node = new_bd_ia32_
Add(dbgi, new_block, noreg_GP, noreg_GP, nomem
, new_node, new_node);
+ new_node = new_bd_ia32_
Lea(dbgi, new_block
, new_node, new_node);
break;
default:
panic("Unsupported constant size");
break;
default:
panic("Unsupported constant size");
@@
-3519,8
+3519,8
@@
static ir_node *gen_Mux(ir_node *node)
switch (res.steps[step].transform) {
case SETCC_TR_ADD:
switch (res.steps[step].transform) {
case SETCC_TR_ADD:
-
imm = ia32_immediate_from_long(res.steps[step].val
);
-
new_node = new_bd_ia32_Add(dbgi, new_block, noreg_GP, noreg_GP, nomem, new_node, imm
);
+
new_node = new_bd_ia32_Lea(dbgi, new_block, new_node, noreg_GP
);
+
add_ia32_am_offs_int(new_node, res.steps[step].val
);
break;
case SETCC_TR_ADDxx:
new_node = new_bd_ia32_Lea(dbgi, new_block, new_node, new_node);
break;
case SETCC_TR_ADDxx:
new_node = new_bd_ia32_Lea(dbgi, new_block, new_node, new_node);
@@
-5014,7
+5014,7
@@
static ir_node *gen_ffs(ir_node *node)
ir_node *real = skip_Proj(bsf);
dbg_info *dbgi = get_irn_dbg_info(real);
ir_node *block = get_nodes_block(real);
ir_node *real = skip_Proj(bsf);
dbg_info *dbgi = get_irn_dbg_info(real);
ir_node *block = get_nodes_block(real);
- ir_node *flag, *set, *conv, *neg, *orn;
+ ir_node *flag, *set, *conv, *neg, *orn
, *add
;
/* bsf x */
if (get_irn_mode(real) != mode_T) {
/* bsf x */
if (get_irn_mode(real) != mode_T) {
@@
-5040,7
+5040,9
@@
static ir_node *gen_ffs(ir_node *node)
set_ia32_commutative(orn);
/* add 1 */
set_ia32_commutative(orn);
/* add 1 */
- return new_bd_ia32_Add(dbgi, block, noreg_GP, noreg_GP, nomem, orn, ia32_create_Immediate(NULL, 0, 1));
+ add = new_bd_ia32_Lea(dbgi, block, orn, noreg_GP);
+ add_ia32_am_offs_int(add, 1);
+ return add;
}
/**
}
/**