const arch_code_generator_if_t *impl;
};
-/**
- * ISA base class.
- */
-struct arch_env_t {
- const arch_isa_if_t *impl;
- const arch_register_t *sp; /** The stack pointer register. */
- const arch_register_t *bp; /** The base pointer register. */
- int stack_dir; /** -1 for decreasing, 1 for increasing. */
- int stack_alignment; /** stack alignment */
- const be_main_env_t *main_env; /** the be main environment */
- int spill_cost; /** cost for a be_Spill node */
- int reload_cost; /** cost for a be_Reload node */
-};
-
-#define arch_env_stack_dir(env) ((env)->stack_dir)
-#define arch_env_sp(env) ((env)->sp)
-#define arch_env_bp(env) ((env)->bp)
-
/**
* Architecture interface.
*/
ir_graph **(*get_backend_irg_list)(const void *self, ir_graph ***irgs);
};
+#define arch_env_done(env) ((env)->impl->done(env))
#define arch_env_get_n_reg_class(env) ((env)->impl->get_n_reg_class(env))
#define arch_env_get_reg_class(env,i) ((env)->impl->get_reg_class(env, i))
-#define arch_env_get_call_abi(env,tp,abi) ((env)->impl->get_call_abi((env), (tp), (abi)))
#define arch_env_get_reg_class_for_mode(env,mode) ((env)->impl->get_reg_class_for_mode((env), (mode)))
-#define arch_env_make_code_generator(env,irg) ((env)->impl->make_code_generator((env), (irg)))
-#define arch_env_get_reg_class_alignment(env, cls) ((env)->impl->get_reg_class_alignment((env), (cls)))
-#define arch_env_get_allowed_execution_units(env, irn) ((env)->impl->get_allowed_execution_units((env), (irn)))
-#define arch_env_get_machine(env) ((env)->impl->get_machine((env)))
-#define arch_env_get_backend_irg_list(env, irgs) ((env)->impl->get_backend_irg_list((env), (irgs)))
+#define arch_env_get_call_abi(env,tp,abi) ((env)->impl->get_call_abi((env), (tp), (abi)))
+#define arch_env_get_code_generator_if(env) ((env)->impl->get_code_generator_if((env)))
+#define arch_env_get_list_sched_selector(env,selector) ((env)->impl->get_list_sched_selector((env), (selector)))
+#define arch_env_get_ilp_sched_selector(env) ((env)->impl->get_ilp_sched_selector(env))
+#define arch_env_get_reg_class_alignment(env,cls) ((env)->impl->get_reg_class_alignment((env), (cls)))
+#define arch_env_get_params(env) ((env)->impl->get_params())
+#define arch_env_get_allowed_execution_units(env,irn) ((env)->impl->get_allowed_execution_units((env), (irn)))
+#define arch_env_get_machine(env) ((env)->impl->get_machine(env))
+#define arch_env_get_backend_irg_list(env,irgs) ((env)->impl->get_backend_irg_list((env), (irgs)))
+
+/**
+ * ISA base class.
+ */
+struct arch_env_t {
+ const arch_isa_if_t *impl;
+ const arch_register_t *sp; /** The stack pointer register. */
+ const arch_register_t *bp; /** The base pointer register. */
+ int stack_dir; /** -1 for decreasing, 1 for increasing. */
+ int stack_alignment; /** stack alignment */
+ const be_main_env_t *main_env; /** the be main environment */
+ int spill_cost; /** cost for a be_Spill node */
+ int reload_cost; /** cost for a be_Reload node */
+};
+
+#define arch_env_stack_dir(env) ((env)->stack_dir)
+#define arch_env_sp(env) ((env)->sp)
+#define arch_env_bp(env) ((env)->bp)
#endif /* FIRM_BE_BEARCH_T_H */
/* initialize environment for list scheduler */
memset(&env, 0, sizeof(env));
- env.selector = arch_env->impl->get_list_sched_selector(arch_env, &sel);
+ env.selector = arch_env_get_list_sched_selector(arch_env, &sel);
env.arch_env = arch_env;
env.irg = irg;
env.sched_info = NEW_ARR_F(sched_irn_t, num_nodes);
/* initialize environment for list scheduler */
memset(&env, 0, sizeof(env));
- env.selector = arch_env->impl->get_list_sched_selector(arch_env, &sel);
+ env.selector = arch_env_get_list_sched_selector(arch_env, &sel);
env.arch_env = arch_env;
env.irg = irg;
env.sched_info = NEW_ARR_F(sched_irn_t, num_nodes);