return transform_binop(node, new_bd_TEMPLATE_Xor);
}
-static ir_node *gen_Quot(ir_node *node)
+static ir_node *gen_Div(ir_node *node)
{
+ ir_mode *mode = get_Div_resmode(node);
+ assert(mode_is_float(mode));
return transform_binop(node, new_bd_TEMPLATE_fDiv);
}
static ir_node *gen_Shl(ir_node *node)
{
+ ir_mode *mode = get_irn_mode(node);
+ if (get_mode_modulo_shift(mode) != 32)
+ panic("modulo shift!=32 not supported by TEMPLATE backend");
return transform_binop(node, new_bd_TEMPLATE_Shl);
}
static ir_node *gen_Shr(ir_node *node)
{
+ ir_mode *mode = get_irn_mode(node);
+ if (get_mode_modulo_shift(mode) != 32)
+ panic("modulo shift!=32 not supported by TEMPLATE backend");
return transform_binop(node, new_bd_TEMPLATE_Shr);
}
static ir_node *gen_Const(ir_node *node)
{
- ir_node *block = get_nodes_block(node);
- ir_node *new_block = be_transform_node(block);
- dbg_info *dbgi = get_irn_dbg_info(node);
- tarval *value = get_Const_tarval(node);
- ir_node *result;
+ ir_node *block = get_nodes_block(node);
+ ir_node *new_block = be_transform_node(block);
+ dbg_info *dbgi = get_irn_dbg_info(node);
+ ir_tarval *value = get_Const_tarval(node);
+ ir_node *result;
result = new_bd_TEMPLATE_Const(dbgi, new_block, value);
- /* make sure the node does not float above the barrier into the prologue */
- be_dep_on_frame(result);
-
return result;
}
be_set_transform_function(op_Add, gen_Add);
be_set_transform_function(op_And, gen_And);
be_set_transform_function(op_Const, gen_Const);
+ be_set_transform_function(op_Div, gen_Div);
be_set_transform_function(op_Eor, gen_Eor);
be_set_transform_function(op_Jmp, gen_Jmp);
be_set_transform_function(op_Load, gen_Load);
be_set_transform_function(op_Not, gen_Not);
be_set_transform_function(op_Or, gen_Or);
be_set_transform_function(op_Phi, gen_Phi);
- be_set_transform_function(op_Quot, gen_Quot);
be_set_transform_function(op_Shl, gen_Shl);
be_set_transform_function(op_Shr, gen_Shr);
be_set_transform_function(op_Store, gen_Store);