3 * @brief Function prototypes for the new opcode functions.
4 * @note DO NOT EDIT THIS FILE, your changes will be lost.
5 * Edit libfirm/ir/be/sparc/sparc_spec.pl instead.
6 * created by: libfirm/ir/be/scripts/generate_new_opcodes.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc
7 * @date Tue Dec 15 15:19:15 2009
9 #ifndef FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H
10 #define FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H
12 typedef enum _sparc_opcodes {
26 iro_sparc_last_generated,
27 iro_sparc_last = iro_sparc_last_generated
30 int is_sparc_irn(const ir_node *node);
32 int get_sparc_opcode_first(void);
33 int get_sparc_opcode_last(void);
34 int get_sparc_irn_opcode(const ir_node *node);
35 void sparc_create_opcodes(const arch_irn_ops_t *be_ops);
36 extern ir_op *op_sparc_SubSP;
37 ir_op *get_op_sparc_SubSP(void);
38 int is_sparc_SubSP(const ir_node *n);
42 ir_node *new_bd_sparc_SubSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem);
44 extern ir_op *op_sparc_Add;
45 ir_op *get_op_sparc_Add(void);
46 int is_sparc_Add(const ir_node *n);
50 ir_node *new_bd_sparc_Add_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value);
54 ir_node *new_bd_sparc_Add_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right);
56 extern ir_op *op_sparc_FrameAddr;
57 ir_op *get_op_sparc_FrameAddr(void);
58 int is_sparc_FrameAddr(const ir_node *n);
60 * construct FrameAddr node
62 ir_node *new_bd_sparc_FrameAddr(dbg_info *dbgi, ir_node *block, ir_node *base, ir_entity *entity);
64 extern ir_op *op_sparc_Store;
65 ir_op *get_op_sparc_Store(void);
66 int is_sparc_Store(const ir_node *n);
68 * construct Store: Store(ptr, val, mem) = ST ptr,val
70 ir_node *new_bd_sparc_Store(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *val, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity);
72 extern ir_op *op_sparc_Branch;
73 ir_op *get_op_sparc_Branch(void);
74 int is_sparc_Branch(const ir_node *n);
76 * construct Branch node
78 ir_node *new_bd_sparc_Branch(dbg_info *dbgi, ir_node *block, ir_node *op0, int proj_num);
80 extern ir_op *op_sparc_Mov;
81 ir_op *get_op_sparc_Mov(void);
82 int is_sparc_Mov(const ir_node *n);
86 ir_node *new_bd_sparc_Mov_imm(dbg_info *dbgi, ir_node *block, int immediate_value);
90 ir_node *new_bd_sparc_Mov_reg(dbg_info *dbgi, ir_node *block, ir_node *op0);
92 extern ir_op *op_sparc_Tst;
93 ir_op *get_op_sparc_Tst(void);
94 int is_sparc_Tst(const ir_node *n);
98 ir_node *new_bd_sparc_Tst(dbg_info *dbgi, ir_node *block, ir_node *left, bool ins_permuted, bool is_unsigned);
100 extern ir_op *op_sparc_SwitchJmp;
101 ir_op *get_op_sparc_SwitchJmp(void);
102 int is_sparc_SwitchJmp(const ir_node *n);
104 * construct SwitchJmp node
106 ir_node *new_bd_sparc_SwitchJmp(dbg_info *dbgi, ir_node *block, ir_node *op0, int n_projs, long def_proj_num);
108 extern ir_op *op_sparc_Cmp;
109 ir_op *get_op_sparc_Cmp(void);
110 int is_sparc_Cmp(const ir_node *n);
114 ir_node *new_bd_sparc_Cmp_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value, bool ins_permuted, bool is_unsigned);
118 ir_node *new_bd_sparc_Cmp_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, bool ins_permuted, bool is_unsigned);
120 extern ir_op *op_sparc_SymConst;
121 ir_op *get_op_sparc_SymConst(void);
122 int is_sparc_SymConst(const ir_node *n);
124 * construct SymConst node
126 ir_node *new_bd_sparc_SymConst(dbg_info *dbgi, ir_node *block, ir_entity *entity);
128 extern ir_op *op_sparc_Sub;
129 ir_op *get_op_sparc_Sub(void);
130 int is_sparc_Sub(const ir_node *n);
134 ir_node *new_bd_sparc_Sub_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value);
138 ir_node *new_bd_sparc_Sub_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right);
140 extern ir_op *op_sparc_Load;
141 ir_op *get_op_sparc_Load(void);
142 int is_sparc_Load(const ir_node *n);
144 * construct Load: Load(ptr, mem) = LD ptr -> reg
146 ir_node *new_bd_sparc_Load(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity);
148 extern ir_op *op_sparc_AddSP;
149 ir_op *get_op_sparc_AddSP(void);
150 int is_sparc_AddSP(const ir_node *n);
154 ir_node *new_bd_sparc_AddSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem);
158 enum pn_sparc_SubSP {
159 pn_sparc_SubSP_stack = 0,
160 pn_sparc_SubSP_M = 1,
164 n_sparc_SubSP_stack = 0,
165 n_sparc_SubSP_size = 1,
166 n_sparc_SubSP_mem = 2,
169 enum n_sparc_FrameAddr {
170 n_sparc_FrameAddr_base = 0,
173 enum pn_sparc_Store {
174 pn_sparc_Store_mem = 0,
178 n_sparc_Store_ptr = 0,
179 n_sparc_Store_val = 1,
180 n_sparc_Store_mem = 2,
184 n_sparc_Tst_left = 0,
188 pn_sparc_Load_res = 0,
193 n_sparc_Load_ptr = 0,
194 n_sparc_Load_mem = 1,
197 enum pn_sparc_AddSP {
198 pn_sparc_AddSP_stack = 0,
199 pn_sparc_AddSP_addr = 1,
200 pn_sparc_AddSP_M = 2,
204 n_sparc_AddSP_stack = 0,
205 n_sparc_AddSP_size = 1,
206 n_sparc_AddSP_mem = 2,