Commit 691de77e authored by Christian Würdig's avatar Christian Würdig
Browse files

new attributes added

fixed include
parent 5122267c
......@@ -12,7 +12,7 @@
#ifdef _WIN32
#include <malloc.h>
#else
#include <alloc.h>
#include <alloca.h>
#endif
#include <stdlib.h>
......@@ -405,6 +405,22 @@ void set_ia32_am_support(ir_node *node, ia32_am_type_t am_tp) {
attr->am_support = am_tp;
}
/**
* Gets the addrmode flavour of an ia32 node
*/
ia32_am_flavour_t get_ia32_am_support(const ir_node *node) {
ia32_attr_t *attr = get_ia32_attr(node);
return attr->am_flavour;
}
/**
* Sets the addrmode flavour of an ia32 node
*/
void set_ia32_am_flavour(ir_node *node, ia32_am_flavour_t am_flavour) {
ia32_attr_t *attr = get_ia32_attr(node);
attr->am_support = am_flavour;
}
/**
* Joins all offsets to one string with adds.
*/
......
......@@ -47,6 +47,16 @@ void set_ia32_op_type(ir_node *node, ia32_op_type_t tp);
*/
ia32_am_type_t get_ia32_am_support(const ir_node *node);
/**
* Gets the addrmode flavour of an ia32 node
*/
ia32_am_flavour_t get_ia32_am_support(const ir_node *node);
/**
* Sets the addrmode flavour of an ia32 node
*/
void set_ia32_am_flavour(ir_node *node, ia32_am_flavour_t am_flavour);
/**
* Sets the supported addrmode of an ia32 node
*/
......
......@@ -16,14 +16,26 @@ typedef enum {
ia32_am_Full = 3 /**<< full addmode support */
} ia32_am_type_t;
/**
* Different AM types:
* O - Offset is set
* B - Base is set
* I - Index is set
* S - Scale is set
*/
typedef enum {
ia32_am_N = 0, ia32_am_O, ia32_am_B, ia32_am_I, ia32_am_IS, ia32_am_OB, ia32_am_OI, ia32_am_OIS, ia32_am_OBIS
} ia32_am_flavour_t;
typedef struct _ia32_register_req_t {
const arch_register_req_t req;
int pos; /**<< in case of "should be same/different" we need to remember the pos to get the irn */
} ia32_register_req_t;
typedef struct _ia32_attr_t {
ia32_op_type_t tp; /**<< ia32 node type */
ia32_am_type_t am_support; /**<< indicates addrmode type supported by this node */
ia32_op_type_t tp; /**<< ia32 node type */
ia32_am_type_t am_support; /**<< indicates addrmode type supported by this node */
ia32_am_flavour_t am_flavour; /**<< the concrete addrmode characteristics */
struct obstack *am_offs; /**<< offsets for AddrMode */
int am_scale; /**<< addrmode scale for index register */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment