executes assembler fragments of the target machine.
More...
Enumerations |
enum | n_ASM { n_ASM_mem,
n_ASM_max = n_ASM_mem
} |
| Input numbers for ASM node. More...
|
Functions |
ir_node * | new_rd_ASM (dbg_info *db, ir_node *block, ir_node *mem, int arity, ir_node *in[], ir_asm_constraint *inputs, size_t n_outs, ir_asm_constraint *outputs, size_t n_clobber, ident *clobber[], ident *asm_text) |
| Constructor for an ASM pseudo node.
|
ir_node * | new_r_ASM (ir_node *block, ir_node *mem, int arity, ir_node *in[], ir_asm_constraint *inputs, size_t n_outs, ir_asm_constraint *outputs, size_t n_clobber, ident *clobber[], ident *asm_text) |
| Constructor for an ASM pseudo node.
|
ir_node * | new_d_ASM (dbg_info *db, ir_node *mem, int arity, ir_node *in[], ir_asm_constraint *inputs, size_t n_outs, ir_asm_constraint *outputs, size_t n_clobber, ident *clobber[], ident *asm_text) |
| Constructor for an ASM pseudo node.
|
ir_node * | new_ASM (ir_node *mem, int arity, ir_node *in[], ir_asm_constraint *inputs, size_t n_outs, ir_asm_constraint *outputs, size_t n_clobber, ident *clobber[], ident *asm_text) |
| Constructor for an ASM pseudo node.
|
int | get_ASM_n_inputs (const ir_node *node) |
| Returns the number of input constraints for an ASM node.
|
ir_node * | get_ASM_input (const ir_node *node, int pos) |
| Returns input number pos of an ASM node.
|
size_t | get_ASM_n_output_constraints (const ir_node *node) |
| Returns the number of output constraints for an ASM node.
|
size_t | get_ASM_n_clobbers (const ir_node *node) |
| Returns the number of clobbered registers for an ASM node.
|
int | is_ASM (const ir_node *node) |
| Test if node is a ASM.
|
ir_node * | get_ASM_mem (const ir_node *node) |
| Returns mem input of an ASM node.
|
void | set_ASM_mem (ir_node *node, ir_node *mem) |
| Sets mem input of an ASM node.
|
ir_asm_constraint * | get_ASM_input_constraints (const ir_node *node) |
| Returns input_constraints attribute of an ASM node.
|
void | set_ASM_input_constraints (ir_node *node, ir_asm_constraint *input_constraints) |
| Sets input_constraints attribute of an ASM node.
|
ir_asm_constraint * | get_ASM_output_constraints (const ir_node *node) |
| Returns output_constraints attribute of an ASM node.
|
void | set_ASM_output_constraints (ir_node *node, ir_asm_constraint *output_constraints) |
| Sets output_constraints attribute of an ASM node.
|
ident ** | get_ASM_clobbers (const ir_node *node) |
| Returns clobbers attribute of an ASM node.
|
void | set_ASM_clobbers (ir_node *node, ident **clobbers) |
| Sets clobbers attribute of an ASM node.
|
ident * | get_ASM_text (const ir_node *node) |
| Returns text attribute of an ASM node.
|
void | set_ASM_text (ir_node *node, ident *text) |
| Sets text attribute of an ASM node.
|
ir_op * | get_op_ASM (void) |
| Returns opcode for ASM nodes.
|
Detailed Description
executes assembler fragments of the target machine.
The node contains a template for an assembler snippet. The compiler will replace occurences of %0 to %9 with input/output registers, %% with a single % char. Some backends allow additional specifiers (for example w3, l3, h3 on x86 to get a 16bit, 8hit low, 8bit high part of a register). After the replacements the text is emitted into the final assembly.
The clobber list contains names of registers which have an undefined value after the assembler instruction is executed; it may also contain 'memory' or 'cc' if global state/memory changes or the condition code registers (some backends implicitely set cc, memory clobbers on all ASM statements).
Example (an i386 instruction)::
ASM(text="btsl %1, %0",
input_constraints = ["=m", "r"],
clobbers = ["cc"])
As there are no output, the %0 references the first input which is just an address which the asm operation writes to. %1 references to an input which is passed as a register. The condition code register has an unknown value after the instruction.
(This format is inspired by the gcc extended asm syntax)
Enumeration Type Documentation
Input numbers for ASM node.
Definition at line 49 of file nodeops.h.
Function Documentation
Returns clobbers attribute of an ASM node.
Returns input number pos
of an ASM node.
Returns input_constraints attribute of an ASM node.
Returns mem input of an ASM node.
size_t get_ASM_n_clobbers |
( |
const ir_node * |
node | ) |
|
Returns the number of clobbered registers for an ASM node.
int get_ASM_n_inputs |
( |
const ir_node * |
node | ) |
|
Returns the number of input constraints for an ASM node.
size_t get_ASM_n_output_constraints |
( |
const ir_node * |
node | ) |
|
Returns the number of output constraints for an ASM node.
Returns output_constraints attribute of an ASM node.
Returns text attribute of an ASM node.
ir_op* get_op_ASM |
( |
void |
| ) |
|
Returns opcode for ASM nodes.
Test if node is a ASM.
- Returns
- 1 if the node is a ASM node, 0 otherwise
Constructor for an ASM pseudo node.
- Parameters
-
*mem | memory dependency |
arity | The number of data inputs to the node. |
*in | The array of length arity of data inputs. |
*inputs | The array of length arity of input constraints. |
n_outs | The number of data outputs to the node. |
*outputs | The array of length n_outs of output constraints. |
n_clobber | The number of clobbered registers. |
*clobber | The array of length n_clobber of clobbered registers. |
*asm_text | The assembler text. |
Constructor for an ASM pseudo node.
- Parameters
-
*db | A pointer for debug information. |
*mem | memory dependency |
arity | The number of data inputs to the node. |
*in | The array of length arity of data inputs. |
*inputs | The array of length arity of input constraints. |
n_outs | The number of data outputs to the node. |
*outputs | The array of length n_outs of output constraints. |
n_clobber | The number of clobbered registers. |
*clobber | The array of length n_clobber of clobbered registers. |
*asm_text | The assembler text. |
Constructor for an ASM pseudo node.
- Parameters
-
*block | The block the node belong to. |
*mem | memory dependency |
arity | The number of data inputs to the node. |
*in | The array of length arity of data inputs. |
*inputs | The array of length arity of input constraints. |
n_outs | The number of data outputs to the node. |
*outputs | The array of length n_outs of output constraints. |
n_clobber | The number of clobbered registers. |
*clobber | The array of length n_clobber of clobbered registers. |
*asm_text | The assembler text. |
ir_node* new_rd_ASM |
( |
dbg_info * |
db, |
|
|
ir_node * |
block, |
|
|
ir_node * |
mem, |
|
|
int |
arity, |
|
|
ir_node * |
in[], |
|
|
ir_asm_constraint * |
inputs, |
|
|
size_t |
n_outs, |
|
|
ir_asm_constraint * |
outputs, |
|
|
size_t |
n_clobber, |
|
|
ident * |
clobber[], |
|
|
ident * |
asm_text |
|
) |
| |
Constructor for an ASM pseudo node.
- Parameters
-
*db | A pointer for debug information. |
*block | The block the node belong to. |
*mem | memory dependency |
arity | The number of data inputs to the node. |
*in | The array of length arity of data inputs. |
*inputs | The array of length arity of input constraints. |
n_outs | The number of data outputs to the node. |
*outputs | The array of length n_outs of output constraints. |
n_clobber | The number of clobbered registers. |
*clobber | The array of length n_clobber of clobbered registers. |
*asm_text | The assembler text. |
Sets clobbers attribute of an ASM node.
Sets input_constraints attribute of an ASM node.
Sets mem input of an ASM node.
Sets output_constraints attribute of an ASM node.
Sets text attribute of an ASM node.
Variable Documentation