Commit 6f3d0fd6 authored by Christian Würdig's avatar Christian Würdig
Browse files

added new attributes for abstract machine

added new getter/setter for abstract machine attributes
parent afcd645e
......@@ -1094,19 +1094,11 @@ arch_irn_flags_t get_ia32_out_flags(const ir_node *node, int pos) {
}
/**
* Set the number of available execution units for this node.
* Get the list of available execution units.
*/
void set_ia32_n_exec_units(ir_node *node, unsigned n) {
ia32_attr_t *attr = get_ia32_attr(node);
attr->n_exec_units = n;
}
/**
* Get the number of available execution units for this node.
*/
unsigned get_ia32_n_exec_units(const ir_node *node) {
const be_execution_unit_t ***get_ia32_exec_units(const ir_node *node) {
ia32_attr_t *attr = get_ia32_attr(node);
return attr->n_exec_units;
return attr->exec_units;
}
#ifndef NDEBUG
......@@ -1356,12 +1348,10 @@ const arch_register_t *get_ia32_out_reg(const ir_node *node, int pos) {
* Initializes the nodes attributes.
*/
void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags, const ia32_register_req_t **in_reqs,
const ia32_register_req_t **out_reqs, const be_execution_unit_t **execution_units,
const ia32_register_req_t **out_reqs, const be_execution_unit_t ***execution_units,
int n_res, unsigned latency)
{
ia32_attr_t *attr = get_ia32_attr(node);
unsigned i;
be_execution_unit_t *unit;
ia32_attr_t *attr = get_ia32_attr(node);
set_ia32_flags(node, flags);
set_ia32_in_req_all(node, in_reqs);
......@@ -1369,13 +1359,7 @@ void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags, const ia32_regi
set_ia32_latency(node, latency);
set_ia32_n_res(node, n_res);
if (execution_units) {
for (i = 0, unit = execution_units[0]; unit; unit = execution_units[++i])
/* do nothing but count number of given units */ ;
set_ia32_n_exec_units(node, i);
attr->exec_units = execution_units;
}
/* else attr is already zero'ed out */
attr->exec_units = execution_units;
attr->out_flags = NEW_ARR_D(int, get_irg_obstack(get_irn_irg(node)), n_res);
memset(attr->out_flags, 0, n_res * sizeof(attr->out_flags[0]));
......
......@@ -9,7 +9,6 @@
#include "firm_config.h"
#include "ia32_nodes_attr.h"
#include "gen_ia32_machine.h"
/***************************************************************************************************
* _ _ _ __ _ _ _ _
......@@ -406,14 +405,9 @@ void set_ia32_out_flags(ir_node *node, arch_irn_flags_t flags, int pos);
arch_irn_flags_t get_ia32_out_flags(const ir_node *node, int pos);
/**
* Set the number of available execution units for this node.
* Get the list of available execution units.
*/
void set_ia32_n_exec_units(ir_node *node, unsigned n);
/**
* Get the number of available execution units for this node.
*/
unsigned get_ia32_n_exec_units(const ir_node *node);
const be_execution_unit_t ***get_ia32_exec_units(const ir_node *node);
#ifndef NDEBUG
......@@ -510,7 +504,7 @@ int is_ia32_Cnst(const ir_node *node);
* Initializes the nodes attributes.
*/
void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags, const ia32_register_req_t **in_reqs, \
const ia32_register_req_t **out_reqs, const be_execution_unit_t **execution_units, int n_res, unsigned latency);
const ia32_register_req_t **out_reqs, const be_execution_unit_t ***execution_units, int n_res, unsigned latency);
/* Include the generated headers */
#include "gen_ia32_new_nodes.h"
......
......@@ -129,8 +129,7 @@ typedef struct _ia32_attr_t {
const char *orig_node; /**< holds the name of the original ir node for debugging purposes */
#endif /* NDEBUG */
const be_execution_unit_t **exec_units; /**< NULL terminated list of units this operation can be executed on */
unsigned n_exec_units; /**< the number of available execution units for this operation */
const be_execution_unit_t ***exec_units; /**< list of units this operation can be executed on */
const ia32_register_req_t **in_req; /**< register requirements for arguments */
const ia32_register_req_t **out_req; /**< register requirements for results */
......
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