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
691de77e
Commit
691de77e
authored
Feb 21, 2006
by
Christian Würdig
Browse files
new attributes added
fixed include
parent
5122267c
Changes
3
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_new_nodes.c
View file @
691de77e
...
...
@@ -12,7 +12,7 @@
#ifdef _WIN32
#include
<malloc.h>
#else
#include
<alloc.h>
#include
<alloc
a
.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.
*/
...
...
ir/be/ia32/ia32_new_nodes.h
View file @
691de77e
...
...
@@ -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
*/
...
...
ir/be/ia32/ia32_nodes_attr.h
View file @
691de77e
...
...
@@ -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 */
...
...
Write
Preview
Supports
Markdown
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