return NULL;
}
+static void firm_set_frame_entity(const void *self, const ir_node *irn, entity *ent)
+{
+}
+
static const arch_irn_ops_if_t firm_irn_ops_if = {
firm_get_irn_reg_req,
firm_set_irn_reg,
firm_classify,
firm_get_flags,
firm_get_frame_entity,
- firm_set_stack_bias
+ firm_set_frame_entity,
+ firm_set_stack_bias,
+ NULL, /* get_inverse */
+ NULL, /* get_op_estimated_cost */
+ NULL, /* possible_memory_operand */
+ NULL, /* perform_memory_operand */
};
static const arch_irn_ops_t firm_irn_ops = {
return get_mode_size_bytes(mode);
}
+/**
+ * Returns the libFirm configuration parameter for this backend.
+ */
+static const backend_params *firm_get_libfirm_params(void) {
+ static arch_dep_params_t ad = {
+ 1, /* allow subs */
+ 0, /* Muls are fast enough on Firm */
+ 31, /* shift would be ok */
+ 0, /* no Mulhs */
+ 0, /* no Mulhu */
+ 0, /* no Mulh */
+ };
+ static backend_params p = {
+ NULL, /* no additional opcodes */
+ NULL, /* will be set later */
+ 0, /* no dword lowering */
+ NULL, /* no creator function */
+ NULL, /* context for create_intrinsic_fkt */
+ };
+
+ p.dep_param = &ad;
+ return &p;
+}
+
#ifdef WITH_LIBCORE
static void firm_register_options(lc_opt_entry_t *ent)
{
firm_get_code_generator_if,
firm_get_list_sched_selector,
firm_get_reg_class_alignment,
+ firm_get_libfirm_params,
#ifdef WITH_LIBCORE
firm_register_options,
#endif