Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
d0331faf
Commit
d0331faf
authored
Jul 24, 2006
by
Christian Würdig
Browse files
added new irn op callbacks for memory operands
parent
dca3954e
Changes
2
Hide whitespace changes
Inline
Side-by-side
ir/be/bearch.c
View file @
d0331faf
...
...
@@ -117,6 +117,24 @@ arch_inverse_t *arch_get_inverse(const arch_env_t *env, const ir_node *irn, int
}
}
int
arch_possible_memory_operand
(
const
arch_env_t
*
env
,
const
ir_node
*
irn
,
unsigned
int
i
)
{
const
arch_irn_ops_t
*
ops
=
get_irn_ops
(
env
,
irn
);
if
(
ops
->
impl
->
possible_memory_operand
)
{
return
ops
->
impl
->
possible_memory_operand
(
ops
,
irn
,
i
);
}
else
{
return
0
;
}
}
extern
void
arch_perform_memory_operand
(
const
arch_env_t
*
env
,
ir_node
*
irn
,
ir_node
*
reload
,
unsigned
int
i
)
{
const
arch_irn_ops_t
*
ops
=
get_irn_ops
(
env
,
irn
);
if
(
ops
->
impl
->
perform_memory_operand
)
{
ops
->
impl
->
perform_memory_operand
(
ops
,
irn
,
reload
,
i
);
}
else
{
return
;
}
}
int
arch_get_op_estimated_cost
(
const
arch_env_t
*
env
,
const
ir_node
*
irn
)
{
const
arch_irn_ops_t
*
ops
=
get_irn_ops
(
env
,
irn
);
...
...
ir/be/bearch.h
View file @
d0331faf
...
...
@@ -322,6 +322,15 @@ struct _arch_irn_ops_if_t {
*/
int
(
*
possible_memory_operand
)(
const
void
*
self
,
const
ir_node
*
irn
,
unsigned
int
i
);
/**
* Ask the backend to assimilate @p reload of operand @p i into @p irn.
*
* @param self The this pointer.
* @param irn The node.
* @param reload The reload.
* @param i The position of the reload.
*/
void
(
*
perform_memory_operand
)(
const
void
*
self
,
ir_node
*
irn
,
ir_node
*
reload
,
unsigned
int
i
);
};
/**
...
...
@@ -336,6 +345,8 @@ extern void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int bias)
extern
entity
*
arch_get_frame_entity
(
const
arch_env_t
*
env
,
ir_node
*
irn
);
extern
arch_inverse_t
*
arch_get_inverse
(
const
arch_env_t
*
env
,
const
ir_node
*
irn
,
int
i
,
arch_inverse_t
*
inverse
,
struct
obstack
*
obstack
);
extern
int
arch_possible_memory_operand
(
const
arch_env_t
*
env
,
const
ir_node
*
irn
,
unsigned
int
i
);
extern
void
arch_perform_memory_operand
(
const
arch_env_t
*
env
,
ir_node
*
irn
,
ir_node
*
reload
,
unsigned
int
i
);
/**
* Get the register requirements for a node.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment