*/
#include "config.h"
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
+#include <stdlib.h>
#include <assert.h>
#include "irnode_t.h"
case LEA:
l = build_graph(env, inst->in[0]);
r = build_graph(env, inst->in[1]);
- c = new_r_Const(current_ir_graph, env->blk, env->shf_mode, new_tarval_from_long(inst->shift_count, env->shf_mode));
+ c = new_Const_long(env->shf_mode, inst->shift_count);
r = new_rd_Shl(env->dbg, current_ir_graph, env->blk, r, c, env->mode);
return inst->irn = new_rd_Add(env->dbg, current_ir_graph, env->blk, l, r, env->mode);
case SHIFT:
l = build_graph(env, inst->in[0]);
- c = new_r_Const(current_ir_graph, env->blk, env->shf_mode, new_tarval_from_long(inst->shift_count, env->shf_mode));
+ c = new_Const_long(env->shf_mode, inst->shift_count);
return inst->irn = new_rd_Shl(env->dbg, current_ir_graph, env->blk, l, c, env->mode);
case SUB:
l = build_graph(env, inst->in[0]);
r = build_graph(env, inst->in[1]);
return inst->irn = new_rd_Add(env->dbg, current_ir_graph, env->blk, l, r, env->mode);
case ZERO:
- return inst->irn = new_r_Const(current_ir_graph, env->blk, env->mode, get_mode_null(env->mode));
+ return inst->irn = new_Const(get_mode_null(env->mode));
default:
panic("Unsupported instruction kind");
return NULL;
case ZERO:
inst->costs = costs = env->evaluate(inst->kind, NULL);
return costs;
+ case MUL:
+ case ROOT:
+ break;
}
panic("Unsupported instruction kind");
}
struct ms mag = magic(tv);
/* generate the Mulh instruction */
- c = new_r_Const(current_ir_graph, block, mode, mag.M);
+ c = new_Const(mag.M);
q = new_rd_Mulh(dbg, current_ir_graph, block, n, c, mode);
/* do we need an Add or Sub */
/* Do we need the shift */
if (mag.s > 0) {
- c = new_r_Const_long(current_ir_graph, block, mode_Iu, mag.s);
- q = new_rd_Shrs(dbg, current_ir_graph, block, q, c, mode);
+ c = new_Const_long(mode_Iu, mag.s);
+ q = new_rd_Shrs(dbg, current_ir_graph, block, q, c, mode);
}
/* final */
- c = new_r_Const_long(current_ir_graph, block, mode_Iu, bits-1);
+ c = new_Const_long(mode_Iu, bits - 1);
t = new_rd_Shr(dbg, current_ir_graph, block, q, c, mode);
q = new_rd_Add(dbg, current_ir_graph, block, q, t, mode);
ir_node *c;
/* generate the Mulh instruction */
- c = new_r_Const(current_ir_graph, block, mode, mag.M);
+ c = new_Const(mag.M);
q = new_rd_Mulh(dbg, current_ir_graph, block, n, c, mode);
if (mag.need_add) {
/* use the GM scheme */
t = new_rd_Sub(dbg, current_ir_graph, block, n, q, mode);
- c = new_r_Const(current_ir_graph, block, mode_Iu, get_mode_one(mode_Iu));
+ c = new_Const(get_mode_one(mode_Iu));
t = new_rd_Shr(dbg, current_ir_graph, block, t, c, mode);
t = new_rd_Add(dbg, current_ir_graph, block, t, q, mode);
- c = new_r_Const_long(current_ir_graph, block, mode_Iu, mag.s-1);
+ c = new_Const_long(mode_Iu, mag.s - 1);
q = new_rd_Shr(dbg, current_ir_graph, block, t, c, mode);
} else {
/* use the default scheme */
q = new_rd_Add(dbg, current_ir_graph, block, q, n, mode);
}
} else if (mag.s > 0) { /* default scheme, shift needed */
- c = new_r_Const_long(current_ir_graph, block, mode_Iu, mag.s);
+ c = new_Const_long(mode_Iu, mag.s);
q = new_rd_Shr(dbg, current_ir_graph, block, q, c, mode);
}
}
/* create the correction code for signed values only if there might be a remainder */
if (! is_Div_remainderless(irn)) {
if (k != 1) {
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k - 1);
+ k_node = new_Const_long(mode_Iu, k - 1);
curr = new_rd_Shrs(dbg, current_ir_graph, block, left, k_node, mode);
}
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, bits - k);
+ k_node = new_Const_long(mode_Iu, bits - k);
curr = new_rd_Shr(dbg, current_ir_graph, block, curr, k_node, mode);
curr = new_rd_Add(dbg, current_ir_graph, block, left, curr, mode);
k_node = left;
}
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k);
+ k_node = new_Const_long(mode_Iu, k);
res = new_rd_Shrs(dbg, current_ir_graph, block, curr, k_node, mode);
if (n_flag) { /* negate the result */
ir_node *k_node;
- k_node = new_r_Const(current_ir_graph, block, mode, get_mode_null(mode));
+ k_node = new_Const(get_mode_null(mode));
res = new_rd_Sub(dbg, current_ir_graph, block, k_node, res, mode);
}
} else { /* unsigned case */
ir_node *k_node;
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k);
+ k_node = new_Const_long(mode_Iu, k);
res = new_rd_Shr(dbg, current_ir_graph, block, left, k_node, mode);
}
} else {
ir_node *curr = left;
if (k != 1) {
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k - 1);
+ k_node = new_Const_long(mode_Iu, k - 1);
curr = new_rd_Shrs(dbg, current_ir_graph, block, left, k_node, mode);
}
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, bits - k);
+ k_node = new_Const_long(mode_Iu, bits - k);
curr = new_rd_Shr(dbg, current_ir_graph, block, curr, k_node, mode);
curr = new_rd_Add(dbg, current_ir_graph, block, left, curr, mode);
- k_node = new_r_Const_long(current_ir_graph, block, mode, (-1) << k);
+ k_node = new_Const_long(mode, (-1) << k);
curr = new_rd_And(dbg, current_ir_graph, block, curr, k_node, mode);
res = new_rd_Sub(dbg, current_ir_graph, block, left, curr, mode);
} else { /* unsigned case */
ir_node *k_node;
- k_node = new_r_Const_long(current_ir_graph, block, mode, (1 << k) - 1);
+ k_node = new_Const_long(mode, (1 << k) - 1);
res = new_rd_And(dbg, current_ir_graph, block, left, k_node, mode);
}
} else {
ir_node *curr = left;
if (k != 1) {
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k - 1);
+ k_node = new_Const_long(mode_Iu, k - 1);
curr = new_rd_Shrs(dbg, current_ir_graph, block, left, k_node, mode);
}
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, bits - k);
+ k_node = new_Const_long(mode_Iu, bits - k);
curr = new_rd_Shr(dbg, current_ir_graph, block, curr, k_node, mode);
curr = new_rd_Add(dbg, current_ir_graph, block, left, curr, mode);
- c_k = new_r_Const_long(current_ir_graph, block, mode_Iu, k);
+ c_k = new_Const_long(mode_Iu, k);
*div = new_rd_Shrs(dbg, current_ir_graph, block, curr, c_k, mode);
if (n_flag) { /* negate the div result */
ir_node *k_node;
- k_node = new_r_Const(current_ir_graph, block, mode, get_mode_null(mode));
+ k_node = new_Const(get_mode_null(mode));
*div = new_rd_Sub(dbg, current_ir_graph, block, k_node, *div, mode);
}
- k_node = new_r_Const_long(current_ir_graph, block, mode, (-1) << k);
+ k_node = new_Const_long(mode, (-1) << k);
curr = new_rd_And(dbg, current_ir_graph, block, curr, k_node, mode);
*mod = new_rd_Sub(dbg, current_ir_graph, block, left, curr, mode);
} else { /* unsigned case */
ir_node *k_node;
- k_node = new_r_Const_long(current_ir_graph, block, mode_Iu, k);
+ k_node = new_Const_long(mode_Iu, k);
*div = new_rd_Shr(dbg, current_ir_graph, block, left, k_node, mode);
- k_node = new_r_Const_long(current_ir_graph, block, mode, (1 << k) - 1);
+ k_node = new_Const_long(mode, (1 << k) - 1);
*mod = new_rd_And(dbg, current_ir_graph, block, left, k_node, mode);
}
} else {