X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_common_transform.h;h=1bf823200be4b586949bd6bf1a4dcaecc5a5244e;hb=82eea1b6b7887bdc834affa49038734e42012395;hp=0915fd07062be392ebb3e60fb3cee00e419fd3a1;hpb=c03098df320995c78fb51798f1933368777e2b24;p=libfirm diff --git a/ir/be/ia32/ia32_common_transform.h b/ir/be/ia32/ia32_common_transform.h index 0915fd070..1bf823200 100644 --- a/ir/be/ia32/ia32_common_transform.h +++ b/ir/be/ia32/ia32_common_transform.h @@ -22,13 +22,12 @@ * @brief This file implements the common parts of IR transformation from * firm into ia32-Firm. * @author Matthias Braun, Sebastian Buchwald - * @version $Id: ia32_common_transform.h 20999 2008-08-05 16:48:29Z beck $ */ #ifndef FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H #define FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H +#include "firm_types.h" #include "bearch_ia32_t.h" -#include "height.h" /** * An assembler constraint. @@ -43,26 +42,27 @@ struct constraint_t { int same_as; }; -extern ia32_code_gen_t *env_cg; -extern heights_t *heights; -extern int no_pic_adjust; +extern ir_heights_t *ia32_heights; +extern int ia32_no_pic_adjust; + +ir_type *ia32_get_prim_type(const ir_mode *mode); /** * Get an atomic entity that is initialized with a tarval forming * a given constant. - * - * @param cnst the node representing the constant */ -ir_entity *create_float_const_entity(ir_node *cnst); +ir_entity *ia32_create_float_const_entity(ia32_isa_t *isa, ir_tarval *tv, + ident *name); /** * Creates an immediate. * + * @param irg The IR graph the node belongs to. * @param symconst if set, create a SymConst immediate * @param symconst_sign sign for the symconst * @param val integer value for the immediate */ -ir_node *ia32_create_Immediate(ir_entity *symconst, int symconst_sign, long val); +ir_node *ia32_create_Immediate(ir_graph *irg, ir_entity *symconst, int symconst_sign, long val); /** * returns register by name (used for determining clobber specifications in @@ -78,38 +78,35 @@ int ia32_mode_needs_gp_reg(ir_mode *mode); /** * generates code for a ASM node */ -ir_node *gen_ASM(ir_node *node); +ir_node *ia32_gen_ASM(ir_node *node); /** * Transforms a CopyB node. * * @return The transformed node. */ -ir_node *gen_CopyB(ir_node *node); +ir_node *ia32_gen_CopyB(ir_node *node); /** * Transform the Thread Local Storage Proj. */ -ir_node *gen_Proj_tls(ir_node *node); +ir_node *ia32_gen_Proj_tls(ir_node *node); /** * This function just sets the register for the Unknown node * as this is not done during register allocation because Unknown * is an "ignore" node. */ -ir_node *gen_Unknown(ir_node *node); - -const arch_register_req_t *make_register_req(const constraint_t *constraint, - int n_outs, const arch_register_req_t **out_reqs, int pos); +ir_node *ia32_gen_Unknown(ir_node *node); -const arch_register_req_t *parse_clobber(const char *clobber); +const arch_register_req_t *ia32_parse_clobber(const char *clobber); /** * Checks whether other node inputs depend on the am_candidate (via mem-proj). */ -int prevents_AM(ir_node *const block, ir_node *const am_candidate, +int ia32_prevents_AM(ir_node *const block, ir_node *const am_candidate, ir_node *const other); -ir_node *try_create_Immediate(ir_node *node, char immediate_constraint_type); +ir_node *ia32_try_create_Immediate(ir_node *node, char immediate_constraint_type); #endif