X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbenode_t.h;h=2cad672bfeff422e094672cde007226bc07f57cc;hb=e32731e8c4dbbfd7b7f21f0b3baa1a2c0fa8b37e;hp=023fd989a9e77f3b80c36ff7ae7635f2754e35e5;hpb=b7af5a581e3e7c779b74f5f6d3eabe83543f0c00;p=libfirm diff --git a/ir/be/benode_t.h b/ir/be/benode_t.h index 023fd989a..2cad672bf 100644 --- a/ir/be/benode_t.h +++ b/ir/be/benode_t.h @@ -452,10 +452,13 @@ int be_get_MemPerm_entity_arity(const ir_node *irn); /** * Impose a register constraint on a backend node. * @param irn The node. - * @param pos The position of the argument/result. Results range from -1..-m and arguments form 0..n + * @param pos The position of the argument. * @param reg The register which is admissible for that node, argument/result and position. */ -void be_set_constr_single_reg(ir_node *irn, int pos, const arch_register_t *reg); +void be_set_constr_single_reg_in(ir_node *irn, int pos, + const arch_register_t *reg, arch_register_req_type_t additional_flags); +void be_set_constr_single_reg_out(ir_node *irn, int pos, + const arch_register_t *reg, arch_register_req_type_t additional_flags); /** * Impose register constraints on a backend node. @@ -467,23 +470,14 @@ void be_set_constr_single_reg(ir_node *irn, int pos, const arch_register_t *reg) */ void be_set_constr_limited(ir_node *irn, int pos, const arch_register_req_t *req); -/** - * Set the flags of a node. - * @param irn The node itself. - * @param pos The position (0..n) for arguments, (-1..-m) for results. - * @param flags The flags to set for that node and position. - */ -void be_node_set_flags(ir_node *irn, int pos, arch_irn_flags_t flags); - -void be_node_add_flags(ir_node *irn, int pos, arch_irn_flags_t flags); - /** * Set the register class of a node. * @param irn The node itself. - * @param pos The position (0..n) for arguments, (-1..-m) for results. + * @param pos The position (0..n) for arguments * @param flags The register class to set for that node and position. */ -void be_node_set_reg_class(ir_node *irn, int pos, const arch_register_class_t *cls); +void be_node_set_reg_class_in(ir_node *irn, int pos, const arch_register_class_t *cls); +void be_node_set_reg_class_out(ir_node *irn, int pos, const arch_register_class_t *cls); /** * Set the register requirement type of a node. @@ -495,9 +489,8 @@ void be_node_set_req_type(ir_node *irn, int pos, arch_register_req_type_t type); /** * Initialize the Phi handler. - * @param env The be_main environment. */ -void be_phi_handler_new(be_main_env_t *env); +void be_phi_handler_new(void); /** * Destroy the Phi handler. @@ -513,33 +506,29 @@ void be_phi_handler_reset(void); /** * Set the register requirements for a phi node. */ -void be_set_phi_reg_req(ir_node *phi, const arch_register_req_t *req); - -/* - * Set flags for a phi node - */ -void be_set_phi_flags(ir_node *phi, arch_irn_flags_t flags); +void be_set_phi_reg_req(ir_node *phi, const arch_register_req_t *req, + arch_register_req_type_t additional_types); /** * irn handler for common be nodes and Phi's. */ const void *be_node_get_irn_ops(const ir_node *irn); -static INLINE int be_is_Spill (const ir_node *irn) { return get_irn_opcode(irn) == beo_Spill ; } -static INLINE int be_is_Reload (const ir_node *irn) { return get_irn_opcode(irn) == beo_Reload ; } -static INLINE int be_is_Copy (const ir_node *irn) { return get_irn_opcode(irn) == beo_Copy ; } -static INLINE int be_is_CopyKeep (const ir_node *irn) { return get_irn_opcode(irn) == beo_CopyKeep ; } -static INLINE int be_is_Perm (const ir_node *irn) { return get_irn_opcode(irn) == beo_Perm ; } -static INLINE int be_is_MemPerm (const ir_node *irn) { return get_irn_opcode(irn) == beo_MemPerm ; } -static INLINE int be_is_Keep (const ir_node *irn) { return get_irn_opcode(irn) == beo_Keep ; } -static INLINE int be_is_Call (const ir_node *irn) { return get_irn_opcode(irn) == beo_Call ; } -static INLINE int be_is_Return (const ir_node *irn) { return get_irn_opcode(irn) == beo_Return ; } -static INLINE int be_is_IncSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_IncSP ; } -static INLINE int be_is_AddSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_AddSP ; } -static INLINE int be_is_SubSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_SubSP ; } -static INLINE int be_is_RegParams(const ir_node *irn) { return get_irn_opcode(irn) == beo_RegParams; } -static INLINE int be_is_FrameAddr(const ir_node *irn) { return get_irn_opcode(irn) == beo_FrameAddr; } -static INLINE int be_is_Barrier (const ir_node *irn) { return get_irn_opcode(irn) == beo_Barrier ; } -static INLINE int be_is_Unwind (const ir_node *irn) { return get_irn_opcode(irn) == beo_Unwind ; } +static inline int be_is_Spill (const ir_node *irn) { return get_irn_opcode(irn) == beo_Spill ; } +static inline int be_is_Reload (const ir_node *irn) { return get_irn_opcode(irn) == beo_Reload ; } +static inline int be_is_Copy (const ir_node *irn) { return get_irn_opcode(irn) == beo_Copy ; } +static inline int be_is_CopyKeep (const ir_node *irn) { return get_irn_opcode(irn) == beo_CopyKeep ; } +static inline int be_is_Perm (const ir_node *irn) { return get_irn_opcode(irn) == beo_Perm ; } +static inline int be_is_MemPerm (const ir_node *irn) { return get_irn_opcode(irn) == beo_MemPerm ; } +static inline int be_is_Keep (const ir_node *irn) { return get_irn_opcode(irn) == beo_Keep ; } +static inline int be_is_Call (const ir_node *irn) { return get_irn_opcode(irn) == beo_Call ; } +static inline int be_is_Return (const ir_node *irn) { return get_irn_opcode(irn) == beo_Return ; } +static inline int be_is_IncSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_IncSP ; } +static inline int be_is_AddSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_AddSP ; } +static inline int be_is_SubSP (const ir_node *irn) { return get_irn_opcode(irn) == beo_SubSP ; } +static inline int be_is_RegParams(const ir_node *irn) { return get_irn_opcode(irn) == beo_RegParams; } +static inline int be_is_FrameAddr(const ir_node *irn) { return get_irn_opcode(irn) == beo_FrameAddr; } +static inline int be_is_Barrier (const ir_node *irn) { return get_irn_opcode(irn) == beo_Barrier ; } +static inline int be_is_Unwind (const ir_node *irn) { return get_irn_opcode(irn) == beo_Unwind ; } #endif /* FIRM_BE_BENODE_T_H */