#include "../bearch.h"
typedef struct amd64_attr_t amd64_attr_t;
-typedef struct amd64_immediate_attr_t amd64_immediate_attr_t;
typedef struct amd64_SymConst_attr_t amd64_SymConst_attr_t;
struct amd64_attr_t
{
+ except_attr exc; /**< the exception attribute. MUST be the first one. */
const arch_register_req_t **in_req; /**< register requirements for arguments */
const arch_register_req_t **out_req; /**< register requirements for results */
-};
-
-struct amd64_immediate_attr_t
-{
- unsigned imm_value; /**< the immediate value to load */
+ ir_mode *ls_mode; /**< Stores the "input" mode */
+ struct amd64_attr_data_bitfield {
+ unsigned ins_permuted : 1; /**< inputs of node have been permuted
+ (for commutative nodes) */
+ unsigned cmp_unsigned : 1; /**< compare should be unsigned */
+ } data;
+ struct amd64_attr_extended {
+ pn_Cmp pnc; /**< type of compare operation >*/
+ unsigned imm_value; /**< immediate value to use >*/
+ } ext;
};
struct amd64_SymConst_attr_t
{
- ir_entity *entity;
+ amd64_attr_t base;
+ ir_entity *entity;
+ unsigned fp_offset;
};
#define CAST_AMD64_ATTR(type,ptr) ((type *)(ptr))