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
f92968d9
Commit
f92968d9
authored
Mar 09, 2006
by
Christian Würdig
Browse files
renamed op_XXX to op_be_XXX
made op's extern visible
parent
066249dc
Changes
2
Hide whitespace changes
Inline
Side-by-side
ir/be/benode.c
View file @
f92968d9
...
...
@@ -104,21 +104,21 @@ typedef struct {
ir_node
*
spill_ctx
;
/**< The node in whose context this spill was introduced. */
}
be_spill_attr_t
;
static
ir_op
*
op_Spill
;
static
ir_op
*
op_Reload
;
static
ir_op
*
op_Perm
;
static
ir_op
*
op_Copy
;
static
ir_op
*
op_Keep
;
static
ir_op
*
op_Call
;
static
ir_op
*
op_Return
;
static
ir_op
*
op_IncSP
;
static
ir_op
*
op_AddSP
;
static
ir_op
*
op_SetSP
;
static
ir_op
*
op_RegParams
;
static
ir_op
*
op_StackParam
;
static
ir_op
*
op_FrameAddr
;
static
ir_op
*
op_FrameLoad
;
static
ir_op
*
op_FrameStore
;
ir_op
*
op_
be_
Spill
;
ir_op
*
op_
be_
Reload
;
ir_op
*
op_
be_
Perm
;
ir_op
*
op_
be_
Copy
;
ir_op
*
op_
be_
Keep
;
ir_op
*
op_
be_
Call
;
ir_op
*
op_
be_
Return
;
ir_op
*
op_
be_
IncSP
;
ir_op
*
op_
be_
AddSP
;
ir_op
*
op_
be_
SetSP
;
ir_op
*
op_
be_
RegParams
;
ir_op
*
op_
be_
StackParam
;
ir_op
*
op_
be_
FrameAddr
;
ir_op
*
op_
be_
FrameLoad
;
ir_op
*
op_
be_
FrameStore
;
static
int
beo_base
=
-
1
;
...
...
@@ -146,37 +146,37 @@ void be_node_init(void) {
/* Acquire all needed opcodes. */
beo_base
=
get_next_ir_opcodes
(
beo_Last
-
1
);
op_Spill
=
new_ir_op
(
beo_base
+
beo_Spill
,
"Spill"
,
op_pin_state_mem_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_spill_attr_t
),
&
be_node_op_ops
);
op_Reload
=
new_ir_op
(
beo_base
+
beo_Reload
,
"Reload"
,
op_pin_state_mem_pinned
,
N
,
oparity_zero
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_Perm
=
new_ir_op
(
beo_base
+
beo_Perm
,
"Perm"
,
op_pin_state_pinned
,
N
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_Copy
=
new_ir_op
(
beo_base
+
beo_Copy
,
"Copy"
,
op_pin_state_floats
,
N
,
oparity_unary
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_Keep
=
new_ir_op
(
beo_base
+
beo_Keep
,
"Keep"
,
op_pin_state_pinned
,
K
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_Call
=
new_ir_op
(
beo_base
+
beo_Call
,
"Call"
,
op_pin_state_pinned
,
N
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_Return
=
new_ir_op
(
beo_base
+
beo_Return
,
"Return"
,
op_pin_state_pinned
,
X
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_AddSP
=
new_ir_op
(
beo_base
+
beo_AddSP
,
"AddSP"
,
op_pin_state_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_SetSP
=
new_ir_op
(
beo_base
+
beo_SetSP
,
"SetSP"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_IncSP
=
new_ir_op
(
beo_base
+
beo_IncSP
,
"IncSP"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_RegParams
=
new_ir_op
(
beo_base
+
beo_RegParams
,
"RegParams"
,
op_pin_state_pinned
,
N
,
oparity_zero
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_StackParam
=
new_ir_op
(
beo_base
+
beo_StackParam
,
"StackParam"
,
op_pin_state_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_FrameAddr
=
new_ir_op
(
beo_base
+
beo_FrameAddr
,
"FrameAddr"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_FrameLoad
=
new_ir_op
(
beo_base
+
beo_FrameLoad
,
"FrameLoad"
,
op_pin_state_pinned
,
N
,
oparity_any
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_FrameStore
=
new_ir_op
(
beo_base
+
beo_FrameStore
,
"FrameStore"
,
op_pin_state_pinned
,
N
,
oparity_any
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
set_op_tag
(
op_Spill
,
&
be_node_tag
);
set_op_tag
(
op_Reload
,
&
be_node_tag
);
set_op_tag
(
op_Perm
,
&
be_node_tag
);
set_op_tag
(
op_Copy
,
&
be_node_tag
);
set_op_tag
(
op_Keep
,
&
be_node_tag
);
set_op_tag
(
op_Call
,
&
be_node_tag
);
set_op_tag
(
op_Return
,
&
be_node_tag
);
set_op_tag
(
op_AddSP
,
&
be_node_tag
);
set_op_tag
(
op_SetSP
,
&
be_node_tag
);
set_op_tag
(
op_IncSP
,
&
be_node_tag
);
set_op_tag
(
op_RegParams
,
&
be_node_tag
);
set_op_tag
(
op_StackParam
,
&
be_node_tag
);
set_op_tag
(
op_FrameLoad
,
&
be_node_tag
);
set_op_tag
(
op_FrameStore
,
&
be_node_tag
);
set_op_tag
(
op_FrameAddr
,
&
be_node_tag
);
op_
be_
Spill
=
new_ir_op
(
beo_base
+
beo_Spill
,
"Spill"
,
op_pin_state_mem_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_spill_attr_t
),
&
be_node_op_ops
);
op_
be_
Reload
=
new_ir_op
(
beo_base
+
beo_Reload
,
"Reload"
,
op_pin_state_mem_pinned
,
N
,
oparity_zero
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
Perm
=
new_ir_op
(
beo_base
+
beo_Perm
,
"Perm"
,
op_pin_state_pinned
,
N
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
Copy
=
new_ir_op
(
beo_base
+
beo_Copy
,
"Copy"
,
op_pin_state_floats
,
N
,
oparity_unary
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
Keep
=
new_ir_op
(
beo_base
+
beo_Keep
,
"Keep"
,
op_pin_state_pinned
,
K
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
Call
=
new_ir_op
(
beo_base
+
beo_Call
,
"Call"
,
op_pin_state_pinned
,
N
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
Return
=
new_ir_op
(
beo_base
+
beo_Return
,
"Return"
,
op_pin_state_pinned
,
X
,
oparity_variable
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
AddSP
=
new_ir_op
(
beo_base
+
beo_AddSP
,
"AddSP"
,
op_pin_state_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_
be_
SetSP
=
new_ir_op
(
beo_base
+
beo_SetSP
,
"SetSP"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_
be_
IncSP
=
new_ir_op
(
beo_base
+
beo_IncSP
,
"IncSP"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_stack_attr_t
),
&
be_node_op_ops
);
op_
be_
RegParams
=
new_ir_op
(
beo_base
+
beo_RegParams
,
"RegParams"
,
op_pin_state_pinned
,
N
,
oparity_zero
,
0
,
sizeof
(
be_node_attr_t
),
&
be_node_op_ops
);
op_
be_
StackParam
=
new_ir_op
(
beo_base
+
beo_StackParam
,
"StackParam"
,
op_pin_state_pinned
,
N
,
oparity_unary
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_
be_
FrameAddr
=
new_ir_op
(
beo_base
+
beo_FrameAddr
,
"FrameAddr"
,
op_pin_state_pinned
,
N
,
oparity_binary
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_
be_
FrameLoad
=
new_ir_op
(
beo_base
+
beo_FrameLoad
,
"FrameLoad"
,
op_pin_state_pinned
,
N
,
oparity_any
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
op_
be_
FrameStore
=
new_ir_op
(
beo_base
+
beo_FrameStore
,
"FrameStore"
,
op_pin_state_pinned
,
N
,
oparity_any
,
0
,
sizeof
(
be_frame_attr_t
),
&
be_node_op_ops
);
set_op_tag
(
op_
be_
Spill
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Reload
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Perm
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Copy
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Keep
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Call
,
&
be_node_tag
);
set_op_tag
(
op_
be_
Return
,
&
be_node_tag
);
set_op_tag
(
op_
be_
AddSP
,
&
be_node_tag
);
set_op_tag
(
op_
be_
SetSP
,
&
be_node_tag
);
set_op_tag
(
op_
be_
IncSP
,
&
be_node_tag
);
set_op_tag
(
op_
be_
RegParams
,
&
be_node_tag
);
set_op_tag
(
op_
be_
StackParam
,
&
be_node_tag
);
set_op_tag
(
op_
be_
FrameLoad
,
&
be_node_tag
);
set_op_tag
(
op_
be_
FrameStore
,
&
be_node_tag
);
set_op_tag
(
op_
be_
FrameAddr
,
&
be_node_tag
);
}
static
void
*
init_node_attr
(
ir_node
*
irn
,
int
max_reg_data
)
...
...
@@ -247,7 +247,7 @@ ir_node *be_new_Spill(const arch_register_class_t *cls, const arch_register_clas
in
[
0
]
=
frame
;
in
[
1
]
=
to_spill
;
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Spill
,
mode_M
,
2
,
in
);
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Spill
,
mode_M
,
2
,
in
);
a
=
init_node_attr
(
res
,
2
);
a
->
frame_attr
.
ent
=
NULL
;
a
->
frame_attr
.
offset
=
0
;
...
...
@@ -265,7 +265,7 @@ ir_node *be_new_Reload(const arch_register_class_t *cls, const arch_register_cla
in
[
0
]
=
frame
;
in
[
1
]
=
mem
;
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Reload
,
mode
,
2
,
in
);
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Reload
,
mode
,
2
,
in
);
init_node_attr
(
res
,
2
);
be_node_set_reg_class
(
res
,
0
,
cls_frame
);
be_node_set_reg_class
(
res
,
-
1
,
cls
);
...
...
@@ -281,7 +281,7 @@ ir_node *(be_get_Reload_mem)(const ir_node *irn)
ir_node
*
be_new_Perm
(
const
arch_register_class_t
*
cls
,
ir_graph
*
irg
,
ir_node
*
bl
,
int
n
,
ir_node
*
in
[])
{
int
i
;
ir_node
*
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Perm
,
mode_T
,
n
,
in
);
ir_node
*
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Perm
,
mode_T
,
n
,
in
);
init_node_attr
(
irn
,
n
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
be_node_set_reg_class
(
irn
,
i
,
cls
);
...
...
@@ -297,7 +297,7 @@ ir_node *be_new_Copy(const arch_register_class_t *cls, ir_graph *irg, ir_node *b
ir_node
*
res
;
in
[
0
]
=
op
;
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Copy
,
get_irn_mode
(
op
),
1
,
in
);
res
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Copy
,
get_irn_mode
(
op
),
1
,
in
);
init_node_attr
(
res
,
1
);
be_node_set_reg_class
(
res
,
0
,
cls
);
be_node_set_reg_class
(
res
,
OUT_POS
(
0
),
cls
);
...
...
@@ -309,7 +309,7 @@ ir_node *be_new_Keep(const arch_register_class_t *cls, ir_graph *irg, ir_node *b
int
i
;
ir_node
*
irn
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Keep
,
mode_ANY
,
n
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Keep
,
mode_ANY
,
n
,
in
);
init_node_attr
(
irn
,
n
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
be_node_set_reg_class
(
irn
,
i
,
cls
);
...
...
@@ -331,14 +331,14 @@ ir_node *be_new_Call(ir_graph *irg, ir_node *bl, ir_node *mem, ir_node *sp, ir_n
real_in
[
2
]
=
ptr
;
memcpy
(
&
real_in
[
3
],
in
,
n
*
sizeof
(
in
[
0
]));
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Call
,
mode_T
,
real_n
,
real_in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Call
,
mode_T
,
real_n
,
real_in
);
init_node_attr
(
irn
,
(
n_outs
>
real_n
?
n_outs
:
real_n
));
return
irn
;
}
ir_node
*
be_new_Return
(
ir_graph
*
irg
,
ir_node
*
bl
,
int
n
,
ir_node
*
in
[])
{
ir_node
*
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_Return
,
mode_X
,
n
,
in
);
ir_node
*
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
Return
,
mode_X
,
n
,
in
);
init_node_attr
(
irn
,
n
);
return
irn
;
...
...
@@ -352,7 +352,7 @@ ir_node *be_new_IncSP(const arch_register_t *sp, ir_graph *irg, ir_node *bl, ir_
in
[
0
]
=
old_sp
;
in
[
1
]
=
mem
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_IncSP
,
sp
->
reg_class
->
mode
,
2
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
IncSP
,
sp
->
reg_class
->
mode
,
2
,
in
);
a
=
init_node_attr
(
irn
,
1
);
a
->
dir
=
dir
;
a
->
offset
=
offset
;
...
...
@@ -375,7 +375,7 @@ ir_node *be_new_AddSP(const arch_register_t *sp, ir_graph *irg, ir_node *bl, ir_
in
[
0
]
=
old_sp
;
in
[
1
]
=
op
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_AddSP
,
sp
->
reg_class
->
mode
,
2
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
AddSP
,
sp
->
reg_class
->
mode
,
2
,
in
);
a
=
init_node_attr
(
irn
,
1
);
be_node_set_flags
(
irn
,
OUT_POS
(
0
),
arch_irn_flags_ignore
);
...
...
@@ -396,7 +396,7 @@ ir_node *be_new_SetSP(const arch_register_t *sp, ir_graph *irg, ir_node *bl, ir_
in
[
0
]
=
mem
;
in
[
1
]
=
old_sp
;
in
[
2
]
=
op
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_SetSP
,
get_irn_mode
(
old_sp
),
3
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
SetSP
,
get_irn_mode
(
old_sp
),
3
,
in
);
a
=
init_node_attr
(
irn
,
3
);
be_node_set_flags
(
irn
,
OUT_POS
(
0
),
arch_irn_flags_ignore
);
...
...
@@ -417,7 +417,7 @@ ir_node *be_new_StackParam(const arch_register_class_t *cls, const arch_register
ir_node
*
in
[
1
];
in
[
0
]
=
frame_pointer
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_StackParam
,
mode
,
1
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
StackParam
,
mode
,
1
,
in
);
a
=
init_node_attr
(
irn
,
1
);
a
->
ent
=
ent
;
...
...
@@ -431,7 +431,7 @@ ir_node *be_new_RegParams(ir_graph *irg, ir_node *bl, int n_outs)
ir_node
*
irn
;
ir_node
*
in
[
1
];
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_RegParams
,
mode_T
,
0
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
RegParams
,
mode_T
,
0
,
in
);
init_node_attr
(
irn
,
n_outs
);
return
irn
;
}
...
...
@@ -445,7 +445,7 @@ ir_node *be_new_FrameLoad(const arch_register_class_t *cls_frame, const arch_reg
in
[
0
]
=
mem
;
in
[
1
]
=
frame
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_FrameLoad
,
mode_T
,
2
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
FrameLoad
,
mode_T
,
2
,
in
);
a
=
init_node_attr
(
irn
,
3
);
a
->
ent
=
ent
;
a
->
offset
=
0
;
...
...
@@ -464,7 +464,7 @@ ir_node *be_new_FrameStore(const arch_register_class_t *cls_frame, const arch_re
in
[
0
]
=
mem
;
in
[
1
]
=
frame
;
in
[
2
]
=
data
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_FrameStore
,
mode_T
,
3
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
FrameStore
,
mode_T
,
3
,
in
);
a
=
init_node_attr
(
irn
,
3
);
a
->
ent
=
ent
;
a
->
offset
=
0
;
...
...
@@ -480,7 +480,7 @@ ir_node *be_new_FrameAddr(const arch_register_class_t *cls_frame, ir_graph *irg,
ir_node
*
in
[
1
];
in
[
0
]
=
frame
;
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_FrameAddr
,
get_irn_mode
(
frame
),
1
,
in
);
irn
=
new_ir_node
(
NULL
,
irg
,
bl
,
op_
be_
FrameAddr
,
get_irn_mode
(
frame
),
1
,
in
);
a
=
init_node_attr
(
irn
,
1
);
a
->
ent
=
ent
;
a
->
offset
=
0
;
...
...
ir/be/benode_t.h
View file @
f92968d9
...
...
@@ -22,6 +22,25 @@
#include "be_t.h"
#include "bearch.h"
/**
* The benode op's. Must be available to register emitter function.
*/
extern
ir_op
*
op_be_Spill
;
extern
ir_op
*
op_be_Reload
;
extern
ir_op
*
op_be_Perm
;
extern
ir_op
*
op_be_Copy
;
extern
ir_op
*
op_be_Keep
;
extern
ir_op
*
op_be_Call
;
extern
ir_op
*
op_be_Return
;
extern
ir_op
*
op_be_IncSP
;
extern
ir_op
*
op_be_AddSP
;
extern
ir_op
*
op_be_SetSP
;
extern
ir_op
*
op_be_RegParams
;
extern
ir_op
*
op_be_StackParam
;
extern
ir_op
*
op_be_FrameAddr
;
extern
ir_op
*
op_be_FrameLoad
;
extern
ir_op
*
op_be_FrameStore
;
typedef
enum
{
beo_NoBeOp
=
0
,
beo_Spill
,
...
...
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