Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
004f9b10
Commit
004f9b10
authored
May 31, 2006
by
Adam Szalkowski
Browse files
implemented a function to retrieve estimated costs of an op
parent
1ecf72a1
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/bearch_ia32.c
View file @
004f9b10
...
...
@@ -456,6 +456,54 @@ static ir_type *ia32_abi_get_between_type(void *self)
return
env
->
flags
.
try_omit_fp
?
omit_fp_between_type
:
between_type
;
}
/**
* Get the estimated cycle count for @p irn.
*
* @param self The this pointer.
* @param irn The node.
*
* @return The estimated cycle count for this operation
*/
static
int
ia32_get_op_estimated_cost
(
const
void
*
self
,
const
ir_node
*
irn
)
{
int
cost
;
switch
(
get_ia32_irn_opcode
(
irn
))
{
case
iro_ia32_xDiv
:
case
iro_ia32_DivMod
:
cost
=
8
;
break
;
case
iro_ia32_xLoad
:
case
iro_ia32_l_Load
:
case
iro_ia32_Load
:
case
iro_ia32_Push
:
case
iro_ia32_Pop
:
cost
=
10
;
break
;
case
iro_ia32_xStore
:
case
iro_ia32_l_Store
:
case
iro_ia32_Store
:
case
iro_ia32_Store8Bit
:
cost
=
50
;
break
;
case
iro_ia32_MulS
:
case
iro_ia32_Mul
:
case
iro_ia32_Mulh
:
case
iro_ia32_xMul
:
case
iro_ia32_l_MulS
:
case
iro_ia32_l_Mul
:
cost
=
2
;
break
;
default:
cost
=
1
;
}
return
cost
;
}
/**
* Returns the inverse operation if @p irn, recalculating the argument at position @p i.
*
...
...
@@ -597,7 +645,8 @@ static const arch_irn_ops_if_t ia32_irn_ops_if = {
ia32_get_flags
,
ia32_get_frame_entity
,
ia32_set_stack_bias
,
ia32_get_inverse
ia32_get_inverse
,
ia32_get_op_estimated_cost
};
ia32_irn_ops_t
ia32_irn_ops
=
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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