9 #ifndef FIRM_BE_AMD64_GEN_AMD64_NEW_NODES_H
10 #define FIRM_BE_AMD64_GEN_AMD64_NEW_NODES_H
14 #include "amd64_nodes_attr.h"
16 typedef enum amd64_opcodes {
62 iro_amd64_l_punpckldq,
70 iro_amd64_movd_gp_xmm,
71 iro_amd64_movd_xmm_gp,
74 iro_amd64_movdqu_store,
76 iro_amd64_movs_store_xmm,
107 int is_amd64_irn(
const ir_node *node);
108 int is_amd64_op(
const ir_op *op);
110 int get_amd64_irn_opcode(
const ir_node *node);
111 void amd64_create_opcodes(
void);
112 void amd64_free_opcodes(
void);
114 extern ir_op *op_amd64_add;
116 static inline bool is_amd64_add(
ir_node const *
const n)
124 ir_node *new_bd_amd64_add(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
126 extern ir_op *op_amd64_adds;
128 static inline bool is_amd64_adds(
ir_node const *
const n)
136 ir_node *new_bd_amd64_adds(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
138 extern ir_op *op_amd64_and;
140 static inline bool is_amd64_and(
ir_node const *
const n)
148 ir_node *new_bd_amd64_and(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
150 extern ir_op *op_amd64_bsf;
152 static inline bool is_amd64_bsf(
ir_node const *
const n)
160 ir_node *new_bd_amd64_bsf(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
162 extern ir_op *op_amd64_bsr;
164 static inline bool is_amd64_bsr(
ir_node const *
const n)
172 ir_node *new_bd_amd64_bsr(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
174 extern ir_op *op_amd64_call;
176 static inline bool is_amd64_call(
ir_node const *
const n)
184 ir_node *new_bd_amd64_call(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
int n_res,
const amd64_call_addr_attr_t *attr_init);
186 extern ir_op *op_amd64_cltd;
188 static inline bool is_amd64_cltd(
ir_node const *
const n)
198 extern ir_op *op_amd64_cmp;
200 static inline bool is_amd64_cmp(
ir_node const *
const n)
208 ir_node *new_bd_amd64_cmp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
210 extern ir_op *op_amd64_cmpxchg;
212 static inline bool is_amd64_cmpxchg(
ir_node const *
const n)
220 ir_node *new_bd_amd64_cmpxchg(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
222 extern ir_op *op_amd64_copyB;
224 static inline bool is_amd64_copyB(
ir_node const *
const n)
234 extern ir_op *op_amd64_copyB_i;
236 static inline bool is_amd64_copyB_i(
ir_node const *
const n)
246 extern ir_op *op_amd64_cqto;
248 static inline bool is_amd64_cqto(
ir_node const *
const n)
258 extern ir_op *op_amd64_cvtsd2ss;
260 static inline bool is_amd64_cvtsd2ss(
ir_node const *
const n)
268 ir_node *new_bd_amd64_cvtsd2ss(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, amd64_op_mode_t op_mode, x86_addr_t addr);
270 extern ir_op *op_amd64_cvtsi2sd;
272 static inline bool is_amd64_cvtsi2sd(
ir_node const *
const n)
280 ir_node *new_bd_amd64_cvtsi2sd(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
282 extern ir_op *op_amd64_cvtsi2ss;
284 static inline bool is_amd64_cvtsi2ss(
ir_node const *
const n)
292 ir_node *new_bd_amd64_cvtsi2ss(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
294 extern ir_op *op_amd64_cvtss2sd;
296 static inline bool is_amd64_cvtss2sd(
ir_node const *
const n)
304 ir_node *new_bd_amd64_cvtss2sd(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
306 extern ir_op *op_amd64_cvttsd2si;
308 static inline bool is_amd64_cvttsd2si(
ir_node const *
const n)
316 ir_node *new_bd_amd64_cvttsd2si(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
318 extern ir_op *op_amd64_cvttss2si;
320 static inline bool is_amd64_cvttss2si(
ir_node const *
const n)
328 ir_node *new_bd_amd64_cvttss2si(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
330 extern ir_op *op_amd64_div;
332 static inline bool is_amd64_div(
ir_node const *
const n)
340 ir_node *new_bd_amd64_div(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size);
342 extern ir_op *op_amd64_divs;
344 static inline bool is_amd64_divs(
ir_node const *
const n)
352 ir_node *new_bd_amd64_divs(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
354 extern ir_op *op_amd64_fadd;
356 static inline bool is_amd64_fadd(
ir_node const *
const n)
366 extern ir_op *op_amd64_fchs;
368 static inline bool is_amd64_fchs(
ir_node const *
const n)
378 extern ir_op *op_amd64_fdiv;
380 static inline bool is_amd64_fdiv(
ir_node const *
const n)
390 extern ir_op *op_amd64_fdup;
392 static inline bool is_amd64_fdup(
ir_node const *
const n)
402 extern ir_op *op_amd64_fild;
404 static inline bool is_amd64_fild(
ir_node const *
const n)
412 ir_node *new_bd_amd64_fild(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
414 extern ir_op *op_amd64_fisttp;
416 static inline bool is_amd64_fisttp(
ir_node const *
const n)
424 ir_node *new_bd_amd64_fisttp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
426 extern ir_op *op_amd64_fld;
428 static inline bool is_amd64_fld(
ir_node const *
const n)
436 ir_node *new_bd_amd64_fld(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
438 extern ir_op *op_amd64_fld1;
440 static inline bool is_amd64_fld1(
ir_node const *
const n)
450 extern ir_op *op_amd64_fldz;
452 static inline bool is_amd64_fldz(
ir_node const *
const n)
462 extern ir_op *op_amd64_fmul;
464 static inline bool is_amd64_fmul(
ir_node const *
const n)
474 extern ir_op *op_amd64_fpop;
476 static inline bool is_amd64_fpop(
ir_node const *
const n)
486 extern ir_op *op_amd64_fst;
488 static inline bool is_amd64_fst(
ir_node const *
const n)
496 ir_node *new_bd_amd64_fst(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
498 extern ir_op *op_amd64_fstp;
500 static inline bool is_amd64_fstp(
ir_node const *
const n)
508 ir_node *new_bd_amd64_fstp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
510 extern ir_op *op_amd64_fsub;
512 static inline bool is_amd64_fsub(
ir_node const *
const n)
522 extern ir_op *op_amd64_fucomi;
524 static inline bool is_amd64_fucomi(
ir_node const *
const n)
534 extern ir_op *op_amd64_fxch;
536 static inline bool is_amd64_fxch(
ir_node const *
const n)
546 extern ir_op *op_amd64_haddpd;
548 static inline bool is_amd64_haddpd(
ir_node const *
const n)
556 ir_node *new_bd_amd64_haddpd(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
558 extern ir_op *op_amd64_idiv;
560 static inline bool is_amd64_idiv(
ir_node const *
const n)
568 ir_node *new_bd_amd64_idiv(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size);
570 extern ir_op *op_amd64_ijmp;
572 static inline bool is_amd64_ijmp(
ir_node const *
const n)
580 ir_node *new_bd_amd64_ijmp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
582 extern ir_op *op_amd64_imul;
584 static inline bool is_amd64_imul(
ir_node const *
const n)
592 ir_node *new_bd_amd64_imul(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
594 extern ir_op *op_amd64_imul_1op;
596 static inline bool is_amd64_imul_1op(
ir_node const *
const n)
604 ir_node *new_bd_amd64_imul_1op(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
606 extern ir_op *op_amd64_jcc;
608 static inline bool is_amd64_jcc(
ir_node const *
const n)
618 extern ir_op *op_amd64_jmp;
620 static inline bool is_amd64_jmp(
ir_node const *
const n)
630 extern ir_op *op_amd64_jmp_switch;
632 static inline bool is_amd64_jmp_switch(
ir_node const *
const n)
640 ir_node *new_bd_amd64_jmp_switch(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
int n_res, amd64_op_mode_t op_mode, x86_insn_size_t size,
const x86_addr_t *addr,
const ir_switch_table *table,
ir_entity *table_entity);
642 extern ir_op *op_amd64_l_haddpd;
644 static inline bool is_amd64_l_haddpd(
ir_node const *
const n)
654 extern ir_op *op_amd64_l_punpckldq;
656 static inline bool is_amd64_l_punpckldq(
ir_node const *
const n)
666 extern ir_op *op_amd64_l_subpd;
668 static inline bool is_amd64_l_subpd(
ir_node const *
const n)
678 extern ir_op *op_amd64_lea;
680 static inline bool is_amd64_lea(
ir_node const *
const n)
688 ir_node *new_bd_amd64_lea(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, x86_addr_t addr);
690 extern ir_op *op_amd64_leave;
692 static inline bool is_amd64_leave(
ir_node const *
const n)
702 extern ir_op *op_amd64_mov_gp;
704 static inline bool is_amd64_mov_gp(
ir_node const *
const n)
712 ir_node *new_bd_amd64_mov_gp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
714 extern ir_op *op_amd64_mov_imm;
716 static inline bool is_amd64_mov_imm(
ir_node const *
const n)
724 ir_node *new_bd_amd64_mov_imm(
dbg_info *dbgi,
ir_node *block, x86_insn_size_t size,
const amd64_imm64_t *imm);
726 extern ir_op *op_amd64_mov_store;
728 static inline bool is_amd64_mov_store(
ir_node const *
const n)
736 ir_node *new_bd_amd64_mov_store(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
738 extern ir_op *op_amd64_movd;
740 static inline bool is_amd64_movd(
ir_node const *
const n)
748 ir_node *new_bd_amd64_movd(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, amd64_op_mode_t op_mode, x86_addr_t addr);
750 extern ir_op *op_amd64_movd_gp_xmm;
752 static inline bool is_amd64_movd_gp_xmm(
ir_node const *
const n)
760 ir_node *new_bd_amd64_movd_gp_xmm(
dbg_info *dbgi,
ir_node *block,
ir_node *operand, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
762 extern ir_op *op_amd64_movd_xmm_gp;
764 static inline bool is_amd64_movd_xmm_gp(
ir_node const *
const n)
772 ir_node *new_bd_amd64_movd_xmm_gp(
dbg_info *dbgi,
ir_node *block,
ir_node *operand, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
774 extern ir_op *op_amd64_movdqa;
776 static inline bool is_amd64_movdqa(
ir_node const *
const n)
784 ir_node *new_bd_amd64_movdqa(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, amd64_op_mode_t op_mode, x86_addr_t addr);
786 extern ir_op *op_amd64_movdqu;
788 static inline bool is_amd64_movdqu(
ir_node const *
const n)
796 ir_node *new_bd_amd64_movdqu(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, amd64_op_mode_t op_mode, x86_addr_t addr);
798 extern ir_op *op_amd64_movdqu_store;
800 static inline bool is_amd64_movdqu_store(
ir_node const *
const n)
802 return get_irn_op(n) == op_amd64_movdqu_store;
808 ir_node *new_bd_amd64_movdqu_store(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
810 extern ir_op *op_amd64_movs;
812 static inline bool is_amd64_movs(
ir_node const *
const n)
820 ir_node *new_bd_amd64_movs(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
822 extern ir_op *op_amd64_movs_store_xmm;
824 static inline bool is_amd64_movs_store_xmm(
ir_node const *
const n)
826 return get_irn_op(n) == op_amd64_movs_store_xmm;
832 ir_node *new_bd_amd64_movs_store_xmm(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
834 extern ir_op *op_amd64_movs_xmm;
836 static inline bool is_amd64_movs_xmm(
ir_node const *
const n)
844 ir_node *new_bd_amd64_movs_xmm(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
846 extern ir_op *op_amd64_mul;
848 static inline bool is_amd64_mul(
ir_node const *
const n)
856 ir_node *new_bd_amd64_mul(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, amd64_op_mode_t op_mode, x86_addr_t addr);
858 extern ir_op *op_amd64_muls;
860 static inline bool is_amd64_muls(
ir_node const *
const n)
868 ir_node *new_bd_amd64_muls(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
870 extern ir_op *op_amd64_neg;
872 static inline bool is_amd64_neg(
ir_node const *
const n)
882 extern ir_op *op_amd64_not;
884 static inline bool is_amd64_not(
ir_node const *
const n)
894 extern ir_op *op_amd64_or;
896 static inline bool is_amd64_or(
ir_node const *
const n)
904 ir_node *new_bd_amd64_or(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
906 extern ir_op *op_amd64_pop_am;
908 static inline bool is_amd64_pop_am(
ir_node const *
const n)
916 ir_node *new_bd_amd64_pop_am(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, x86_addr_t addr);
918 extern ir_op *op_amd64_punpckldq;
920 static inline bool is_amd64_punpckldq(
ir_node const *
const n)
928 ir_node *new_bd_amd64_punpckldq(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
930 extern ir_op *op_amd64_push_am;
932 static inline bool is_amd64_push_am(
ir_node const *
const n)
940 ir_node *new_bd_amd64_push_am(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, x86_insn_size_t size, x86_addr_t addr);
942 extern ir_op *op_amd64_push_reg;
944 static inline bool is_amd64_push_reg(
ir_node const *
const n)
954 extern ir_op *op_amd64_ret;
956 static inline bool is_amd64_ret(
ir_node const *
const n)
964 ir_node *new_bd_amd64_ret(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs);
966 extern ir_op *op_amd64_sar;
968 static inline bool is_amd64_sar(
ir_node const *
const n)
976 ir_node *new_bd_amd64_sar(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_shift_attr_t *attr_init);
978 extern ir_op *op_amd64_sbb;
980 static inline bool is_amd64_sbb(
ir_node const *
const n)
988 ir_node *new_bd_amd64_sbb(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
990 extern ir_op *op_amd64_setcc;
992 static inline bool is_amd64_setcc(
ir_node const *
const n)
1002 extern ir_op *op_amd64_shl;
1004 static inline bool is_amd64_shl(
ir_node const *
const n)
1012 ir_node *new_bd_amd64_shl(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_shift_attr_t *attr_init);
1014 extern ir_op *op_amd64_shr;
1016 static inline bool is_amd64_shr(
ir_node const *
const n)
1024 ir_node *new_bd_amd64_shr(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_shift_attr_t *attr_init);
1026 extern ir_op *op_amd64_sub;
1028 static inline bool is_amd64_sub(
ir_node const *
const n)
1036 ir_node *new_bd_amd64_sub(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1038 extern ir_op *op_amd64_sub_sp;
1040 static inline bool is_amd64_sub_sp(
ir_node const *
const n)
1048 ir_node *new_bd_amd64_sub_sp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1050 extern ir_op *op_amd64_subpd;
1052 static inline bool is_amd64_subpd(
ir_node const *
const n)
1060 ir_node *new_bd_amd64_subpd(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1062 extern ir_op *op_amd64_subs;
1064 static inline bool is_amd64_subs(
ir_node const *
const n)
1072 ir_node *new_bd_amd64_subs(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1074 extern ir_op *op_amd64_test;
1076 static inline bool is_amd64_test(
ir_node const *
const n)
1084 ir_node *new_bd_amd64_test(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1086 extern ir_op *op_amd64_ucomis;
1088 static inline bool is_amd64_ucomis(
ir_node const *
const n)
1096 ir_node *new_bd_amd64_ucomis(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1098 extern ir_op *op_amd64_xor;
1100 static inline bool is_amd64_xor(
ir_node const *
const n)
1108 ir_node *new_bd_amd64_xor(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1110 extern ir_op *op_amd64_xor_0;
1112 static inline bool is_amd64_xor_0(
ir_node const *
const n)
1122 extern ir_op *op_amd64_xorp;
1124 static inline bool is_amd64_xorp(
ir_node const *
const n)
1132 ir_node *new_bd_amd64_xorp(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
const amd64_binop_addr_attr_t *attr_init);
1134 extern ir_op *op_amd64_xorp_0;
1136 static inline bool is_amd64_xorp_0(
ir_node const *
const n)
1147 typedef enum pn_amd64_add {
1148 pn_amd64_add_res = 0,
1149 pn_amd64_add_flags = 1,
1153 typedef enum pn_amd64_adds {
1154 pn_amd64_adds_res = 0,
1155 pn_amd64_adds_none = 1,
1156 pn_amd64_adds_M = 2,
1159 typedef enum pn_amd64_and {
1160 pn_amd64_and_res = 0,
1161 pn_amd64_and_flags = 1,
1165 typedef enum pn_amd64_bsf {
1166 pn_amd64_bsf_res = 0,
1167 pn_amd64_bsf_flags = 1,
1171 typedef enum pn_amd64_bsr {
1172 pn_amd64_bsr_res = 0,
1173 pn_amd64_bsr_flags = 1,
1177 typedef enum pn_amd64_call {
1178 pn_amd64_call_M = 0,
1179 pn_amd64_call_stack = 1,
1180 pn_amd64_call_flags = 2,
1181 pn_amd64_call_first_result = 3,
1184 typedef enum n_amd64_cltd {
1185 n_amd64_cltd_val = 0,
1188 typedef enum pn_amd64_cmp {
1189 pn_amd64_cmp_dummy = 0,
1190 pn_amd64_cmp_flags = 1,
1194 typedef enum pn_amd64_cmpxchg {
1195 pn_amd64_cmpxchg_res = 0,
1196 pn_amd64_cmpxchg_flags = 1,
1197 pn_amd64_cmpxchg_M = 2,
1200 typedef enum pn_amd64_copyB {
1201 pn_amd64_copyB_dest = 0,
1202 pn_amd64_copyB_source = 1,
1203 pn_amd64_copyB_count = 2,
1204 pn_amd64_copyB_M = 3,
1207 typedef enum n_amd64_copyB {
1208 n_amd64_copyB_dest = 0,
1209 n_amd64_copyB_source = 1,
1210 n_amd64_copyB_count = 2,
1211 n_amd64_copyB_mem = 3,
1214 typedef enum pn_amd64_copyB_i {
1215 pn_amd64_copyB_i_dest = 0,
1216 pn_amd64_copyB_i_source = 1,
1217 pn_amd64_copyB_i_M = 2,
1220 typedef enum n_amd64_copyB_i {
1221 n_amd64_copyB_i_dest = 0,
1222 n_amd64_copyB_i_source = 1,
1223 n_amd64_copyB_i_mem = 2,
1226 typedef enum n_amd64_cqto {
1227 n_amd64_cqto_val = 0,
1230 typedef enum pn_amd64_cvtsd2ss {
1231 pn_amd64_cvtsd2ss_res = 0,
1232 pn_amd64_cvtsd2ss_none = 1,
1233 pn_amd64_cvtsd2ss_M = 2,
1234 } pn_amd64_cvtsd2ss;
1236 typedef enum pn_amd64_cvtsi2sd {
1237 pn_amd64_cvtsi2sd_res = 0,
1238 pn_amd64_cvtsi2sd_none = 1,
1239 pn_amd64_cvtsi2sd_M = 2,
1240 } pn_amd64_cvtsi2sd;
1242 typedef enum pn_amd64_cvtsi2ss {
1243 pn_amd64_cvtsi2ss_res = 0,
1244 pn_amd64_cvtsi2ss_none = 1,
1245 pn_amd64_cvtsi2ss_M = 2,
1246 } pn_amd64_cvtsi2ss;
1248 typedef enum pn_amd64_cvtss2sd {
1249 pn_amd64_cvtss2sd_res = 0,
1250 pn_amd64_cvtss2sd_none = 1,
1251 pn_amd64_cvtss2sd_M = 2,
1252 } pn_amd64_cvtss2sd;
1254 typedef enum pn_amd64_cvttsd2si {
1255 pn_amd64_cvttsd2si_res = 0,
1256 pn_amd64_cvttsd2si_none = 1,
1257 pn_amd64_cvttsd2si_M = 2,
1258 } pn_amd64_cvttsd2si;
1260 typedef enum pn_amd64_cvttss2si {
1261 pn_amd64_cvttss2si_res = 0,
1262 pn_amd64_cvttss2si_none = 1,
1263 pn_amd64_cvttss2si_M = 2,
1264 } pn_amd64_cvttss2si;
1266 typedef enum pn_amd64_div {
1267 pn_amd64_div_res_div = 0,
1268 pn_amd64_div_flags = 1,
1270 pn_amd64_div_res_mod = 3,
1273 typedef enum pn_amd64_divs {
1274 pn_amd64_divs_res = 0,
1275 pn_amd64_divs_none = 1,
1276 pn_amd64_divs_M = 2,
1279 typedef enum n_amd64_fadd {
1280 n_amd64_fadd_left = 0,
1281 n_amd64_fadd_right = 1,
1284 typedef enum n_amd64_fchs {
1285 n_amd64_fchs_value = 0,
1288 typedef enum n_amd64_fdiv {
1289 n_amd64_fdiv_left = 0,
1290 n_amd64_fdiv_right = 1,
1293 typedef enum n_amd64_fdup {
1294 n_amd64_fdup_val = 0,
1297 typedef enum pn_amd64_fild {
1298 pn_amd64_fild_res = 0,
1299 pn_amd64_fild_unused = 1,
1300 pn_amd64_fild_M = 2,
1303 typedef enum pn_amd64_fisttp {
1304 pn_amd64_fisttp_M = 0,
1307 typedef enum pn_amd64_fld {
1308 pn_amd64_fld_res = 0,
1309 pn_amd64_fld_unused = 1,
1313 typedef enum pn_amd64_fld1 {
1314 pn_amd64_fld1_res = 0,
1317 typedef enum pn_amd64_fldz {
1318 pn_amd64_fldz_res = 0,
1321 typedef enum n_amd64_fmul {
1322 n_amd64_fmul_left = 0,
1323 n_amd64_fmul_right = 1,
1326 typedef enum pn_amd64_fst {
1330 typedef enum pn_amd64_fstp {
1331 pn_amd64_fstp_M = 0,
1334 typedef enum n_amd64_fsub {
1335 n_amd64_fsub_left = 0,
1336 n_amd64_fsub_right = 1,
1339 typedef enum pn_amd64_fucomi {
1340 pn_amd64_fucomi_flags = 0,
1343 typedef enum n_amd64_fucomi {
1344 n_amd64_fucomi_left = 0,
1345 n_amd64_fucomi_right = 1,
1348 typedef enum pn_amd64_haddpd {
1349 pn_amd64_haddpd_res = 0,
1350 pn_amd64_haddpd_none = 1,
1351 pn_amd64_haddpd_M = 2,
1354 typedef enum pn_amd64_idiv {
1355 pn_amd64_idiv_res_div = 0,
1356 pn_amd64_idiv_flags = 1,
1357 pn_amd64_idiv_M = 2,
1358 pn_amd64_idiv_res_mod = 3,
1361 typedef enum pn_amd64_ijmp {
1362 pn_amd64_ijmp_X = 0,
1363 pn_amd64_ijmp_unused = 1,
1364 pn_amd64_ijmp_M = 2,
1367 typedef enum pn_amd64_imul {
1368 pn_amd64_imul_res = 0,
1369 pn_amd64_imul_flags = 1,
1370 pn_amd64_imul_M = 2,
1373 typedef enum pn_amd64_imul_1op {
1374 pn_amd64_imul_1op_res_low = 0,
1375 pn_amd64_imul_1op_flags = 1,
1376 pn_amd64_imul_1op_M = 2,
1377 pn_amd64_imul_1op_res_high = 3,
1378 } pn_amd64_imul_1op;
1380 typedef enum pn_amd64_jcc {
1381 pn_amd64_jcc_false = 0,
1382 pn_amd64_jcc_true = 1,
1385 typedef enum n_amd64_jcc {
1386 n_amd64_jcc_flags = 0,
1389 typedef enum pn_amd64_l_haddpd {
1390 pn_amd64_l_haddpd_res = 0,
1391 } pn_amd64_l_haddpd;
1393 typedef enum n_amd64_l_haddpd {
1394 n_amd64_l_haddpd_arg0 = 0,
1395 n_amd64_l_haddpd_arg1 = 1,
1398 typedef enum pn_amd64_l_punpckldq {
1399 pn_amd64_l_punpckldq_res = 0,
1400 } pn_amd64_l_punpckldq;
1402 typedef enum n_amd64_l_punpckldq {
1403 n_amd64_l_punpckldq_arg0 = 0,
1404 n_amd64_l_punpckldq_arg1 = 1,
1405 } n_amd64_l_punpckldq;
1407 typedef enum pn_amd64_l_subpd {
1408 pn_amd64_l_subpd_res = 0,
1411 typedef enum n_amd64_l_subpd {
1412 n_amd64_l_subpd_arg0 = 0,
1413 n_amd64_l_subpd_arg1 = 1,
1416 typedef enum pn_amd64_lea {
1417 pn_amd64_lea_res = 0,
1420 typedef enum pn_amd64_leave {
1421 pn_amd64_leave_frame = 0,
1422 pn_amd64_leave_M = 1,
1423 pn_amd64_leave_stack = 2,
1426 typedef enum pn_amd64_mov_gp {
1427 pn_amd64_mov_gp_res = 0,
1428 pn_amd64_mov_gp_unused = 1,
1429 pn_amd64_mov_gp_M = 2,
1432 typedef enum pn_amd64_mov_imm {
1433 pn_amd64_mov_imm_res = 0,
1436 typedef enum pn_amd64_mov_store {
1437 pn_amd64_mov_store_M = 0,
1438 } pn_amd64_mov_store;
1440 typedef enum pn_amd64_movd {
1441 pn_amd64_movd_res = 0,
1442 pn_amd64_movd_none = 1,
1443 pn_amd64_movd_M = 2,
1446 typedef enum pn_amd64_movd_gp_xmm {
1447 pn_amd64_movd_gp_xmm_res = 0,
1448 } pn_amd64_movd_gp_xmm;
1450 typedef enum n_amd64_movd_gp_xmm {
1451 n_amd64_movd_gp_xmm_operand = 0,
1452 } n_amd64_movd_gp_xmm;
1454 typedef enum pn_amd64_movd_xmm_gp {
1455 pn_amd64_movd_xmm_gp_res = 0,
1456 } pn_amd64_movd_xmm_gp;
1458 typedef enum n_amd64_movd_xmm_gp {
1459 n_amd64_movd_xmm_gp_operand = 0,
1460 } n_amd64_movd_xmm_gp;
1462 typedef enum pn_amd64_movdqa {
1463 pn_amd64_movdqa_res = 0,
1464 pn_amd64_movdqa_none = 1,
1465 pn_amd64_movdqa_M = 2,
1468 typedef enum pn_amd64_movdqu {
1469 pn_amd64_movdqu_res = 0,
1470 pn_amd64_movdqu_none = 1,
1471 pn_amd64_movdqu_M = 2,
1474 typedef enum pn_amd64_movdqu_store {
1475 pn_amd64_movdqu_store_M = 0,
1476 } pn_amd64_movdqu_store;
1478 typedef enum pn_amd64_movs {
1479 pn_amd64_movs_res = 0,
1480 pn_amd64_movs_unused = 1,
1481 pn_amd64_movs_M = 2,
1484 typedef enum pn_amd64_movs_store_xmm {
1485 pn_amd64_movs_store_xmm_M = 0,
1486 } pn_amd64_movs_store_xmm;
1488 typedef enum pn_amd64_movs_xmm {
1489 pn_amd64_movs_xmm_res = 0,
1490 pn_amd64_movs_xmm_none = 1,
1491 pn_amd64_movs_xmm_M = 2,
1492 } pn_amd64_movs_xmm;
1494 typedef enum pn_amd64_mul {
1495 pn_amd64_mul_res_low = 0,
1496 pn_amd64_mul_flags = 1,
1498 pn_amd64_mul_res_high = 3,
1501 typedef enum pn_amd64_muls {
1502 pn_amd64_muls_res = 0,
1503 pn_amd64_muls_none = 1,
1504 pn_amd64_muls_M = 2,
1507 typedef enum pn_amd64_neg {
1508 pn_amd64_neg_res = 0,
1509 pn_amd64_neg_flags = 1,
1512 typedef enum n_amd64_neg {
1513 n_amd64_neg_val = 0,
1516 typedef enum pn_amd64_not {
1517 pn_amd64_not_res = 0,
1518 pn_amd64_not_flags = 1,
1521 typedef enum n_amd64_not {
1522 n_amd64_not_val = 0,
1525 typedef enum pn_amd64_or {
1526 pn_amd64_or_res = 0,
1527 pn_amd64_or_flags = 1,
1531 typedef enum pn_amd64_pop_am {
1532 pn_amd64_pop_am_stack = 0,
1533 pn_amd64_pop_am_M = 1,
1536 typedef enum pn_amd64_punpckldq {
1537 pn_amd64_punpckldq_res = 0,
1538 pn_amd64_punpckldq_none = 1,
1539 pn_amd64_punpckldq_M = 2,
1540 } pn_amd64_punpckldq;
1542 typedef enum pn_amd64_push_am {
1543 pn_amd64_push_am_stack = 0,
1544 pn_amd64_push_am_M = 1,
1547 typedef enum pn_amd64_push_reg {
1548 pn_amd64_push_reg_stack = 0,
1549 pn_amd64_push_reg_M = 1,
1550 } pn_amd64_push_reg;
1552 typedef enum n_amd64_push_reg {
1553 n_amd64_push_reg_stack = 0,
1554 n_amd64_push_reg_mem = 1,
1555 n_amd64_push_reg_val = 2,
1558 typedef enum n_amd64_ret {
1559 n_amd64_ret_mem = 0,
1560 n_amd64_ret_stack = 1,
1561 n_amd64_ret_first_result = 2,
1564 typedef enum pn_amd64_sar {
1565 pn_amd64_sar_res = 0,
1566 pn_amd64_sar_flags = 1,
1569 typedef enum pn_amd64_sbb {
1570 pn_amd64_sbb_res = 0,
1571 pn_amd64_sbb_flags = 1,
1575 typedef enum pn_amd64_setcc {
1576 pn_amd64_setcc_res = 0,
1579 typedef enum n_amd64_setcc {
1580 n_amd64_setcc_flags = 0,
1583 typedef enum pn_amd64_shl {
1584 pn_amd64_shl_res = 0,
1585 pn_amd64_shl_flags = 1,
1588 typedef enum pn_amd64_shr {
1589 pn_amd64_shr_res = 0,
1590 pn_amd64_shr_flags = 1,
1593 typedef enum pn_amd64_sub {
1594 pn_amd64_sub_res = 0,
1595 pn_amd64_sub_flags = 1,
1599 typedef enum pn_amd64_sub_sp {
1600 pn_amd64_sub_sp_stack = 0,
1601 pn_amd64_sub_sp_addr = 1,
1602 pn_amd64_sub_sp_M = 2,
1605 typedef enum n_amd64_sub_sp {
1606 n_amd64_sub_sp_stack = 0,
1609 typedef enum pn_amd64_subpd {
1610 pn_amd64_subpd_res = 0,
1611 pn_amd64_subpd_none = 1,
1612 pn_amd64_subpd_M = 2,
1615 typedef enum pn_amd64_subs {
1616 pn_amd64_subs_res = 0,
1617 pn_amd64_subs_none = 1,
1618 pn_amd64_subs_M = 2,
1621 typedef enum pn_amd64_test {
1622 pn_amd64_test_dummy = 0,
1623 pn_amd64_test_flags = 1,
1624 pn_amd64_test_M = 2,
1627 typedef enum pn_amd64_ucomis {
1628 pn_amd64_ucomis_dummy = 0,
1629 pn_amd64_ucomis_flags = 1,
1630 pn_amd64_ucomis_M = 2,
1633 typedef enum pn_amd64_xor {
1634 pn_amd64_xor_res = 0,
1635 pn_amd64_xor_flags = 1,
1639 typedef enum pn_amd64_xor_0 {
1640 pn_amd64_xor_0_res = 0,
1641 pn_amd64_xor_0_flags = 1,
1644 typedef enum pn_amd64_xorp {
1645 pn_amd64_xorp_res = 0,
1646 pn_amd64_xorp_none = 1,
1647 pn_amd64_xorp_M = 2,
1650 typedef enum pn_amd64_xorp_0 {
1651 pn_amd64_xorp_0_res = 0,
struct dbg_info dbg_info
Source Reference.
struct ir_node ir_node
Procedure Graph Node.
struct ir_switch_table ir_switch_table
A switch table mapping integer numbers to proj-numbers of a Switch-node.
struct ir_entity ir_entity
Entity.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the node.
struct ir_op ir_op
Node Opcode.