*
* $Id$
*/
-#include <stdlib.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
#include <assert.h>
#include "irnode_t.h"
#include "irhooks.h"
#include "ircons.h"
#include "irarch.h"
+#include "irreflect.h"
#undef DEB
ir_node *in[2];
ir_node *res;
- if (! op_Mulh) {
- op_Mulh = new_ir_op(get_next_ir_opcode(), "Mulh", op_pin_state_floats, irop_flag_commutative, oparity_binary, 0, 0);
- }
-
in[0] = op1;
in[1] = op2;
res = new_ir_node(db, irg, block, op_Mulh, mode, 2, in);
if (factory != NULL)
params = factory();
- if (params && (opts & (arch_dep_div_by_const|arch_dep_mod_by_const))) {
- if (! op_Mulh) {
- /* create the Mulh operation */
- op_Mulh = new_ir_op(get_next_ir_opcode(), "Mulh", op_pin_state_floats, irop_flag_commutative, oparity_binary, 0, 0);
- }
+ if (! op_Mulh) {
+ rflct_sig_t *sig;
+ int mulh_opc = get_next_ir_opcode();
+
+ /* create the Mulh operation */
+ op_Mulh = new_ir_op(mulh_opc, "Mulh", op_pin_state_floats, irop_flag_commutative, oparity_binary, 0, 0, NULL);
+ sig = rflct_signature_allocate(1, 3);
+ rflct_signature_set_arg(sig, 0, 0, "Res", RFLCT_MC(Int), 0, 0);
+ rflct_signature_set_arg(sig, 1, 0, "Block", RFLCT_MC(BB), 0, 0);
+ rflct_signature_set_arg(sig, 1, 1, "Op 0", RFLCT_MC(Int), 0, 0);
+ rflct_signature_set_arg(sig, 1, 2, "Op 1", RFLCT_MC(Int), 0, 0);
+
+ rflct_new_opcode(mulh_opc, "Mulh", 0);
+ rflct_opcode_add_signature(mulh_opc, sig);
}
}
}
if (res != irn)
- hook_arch_dep_replace_div_by_const(irn);
+ hook_arch_dep_replace_division_by_const(irn);
return res;
}
}
if (res != irn)
- hook_arch_dep_replace_mod_by_const(irn);
+ hook_arch_dep_replace_division_by_const(irn);
return res;
}
}
if (*div)
- hook_arch_dep_replace_DivMod_by_const(irn);
+ hook_arch_dep_replace_division_by_const(irn);
}