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 {
60 iro_amd64_l_punpckldq,
68 iro_amd64_movd_gp_xmm,
69 iro_amd64_movd_xmm_gp,
72 iro_amd64_movdqu_store,
74 iro_amd64_movs_store_xmm,
104 int is_amd64_irn(
const ir_node *node);
105 int is_amd64_op(
const ir_op *op);
107 int get_amd64_irn_opcode(
const ir_node *node);
108 void amd64_create_opcodes(
void);
109 void amd64_free_opcodes(
void);
111 extern ir_op *op_amd64_add;
113 static inline bool is_amd64_add(
ir_node const *
const n)
121 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);
123 extern ir_op *op_amd64_adds;
125 static inline bool is_amd64_adds(
ir_node const *
const n)
133 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);
135 extern ir_op *op_amd64_and;
137 static inline bool is_amd64_and(
ir_node const *
const n)
145 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);
147 extern ir_op *op_amd64_bsf;
149 static inline bool is_amd64_bsf(
ir_node const *
const n)
157 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);
159 extern ir_op *op_amd64_bsr;
161 static inline bool is_amd64_bsr(
ir_node const *
const n)
169 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);
171 extern ir_op *op_amd64_call;
173 static inline bool is_amd64_call(
ir_node const *
const n)
181 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);
183 extern ir_op *op_amd64_cltd;
185 static inline bool is_amd64_cltd(
ir_node const *
const n)
195 extern ir_op *op_amd64_cmp;
197 static inline bool is_amd64_cmp(
ir_node const *
const n)
205 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);
207 extern ir_op *op_amd64_cmpxchg;
209 static inline bool is_amd64_cmpxchg(
ir_node const *
const n)
217 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);
219 extern ir_op *op_amd64_cqto;
221 static inline bool is_amd64_cqto(
ir_node const *
const n)
231 extern ir_op *op_amd64_cvtsd2ss;
233 static inline bool is_amd64_cvtsd2ss(
ir_node const *
const n)
241 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);
243 extern ir_op *op_amd64_cvtsi2sd;
245 static inline bool is_amd64_cvtsi2sd(
ir_node const *
const n)
253 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);
255 extern ir_op *op_amd64_cvtsi2ss;
257 static inline bool is_amd64_cvtsi2ss(
ir_node const *
const n)
265 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);
267 extern ir_op *op_amd64_cvtss2sd;
269 static inline bool is_amd64_cvtss2sd(
ir_node const *
const n)
277 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);
279 extern ir_op *op_amd64_cvttsd2si;
281 static inline bool is_amd64_cvttsd2si(
ir_node const *
const n)
289 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);
291 extern ir_op *op_amd64_cvttss2si;
293 static inline bool is_amd64_cvttss2si(
ir_node const *
const n)
301 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);
303 extern ir_op *op_amd64_div;
305 static inline bool is_amd64_div(
ir_node const *
const n)
313 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);
315 extern ir_op *op_amd64_divs;
317 static inline bool is_amd64_divs(
ir_node const *
const n)
325 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);
327 extern ir_op *op_amd64_fadd;
329 static inline bool is_amd64_fadd(
ir_node const *
const n)
339 extern ir_op *op_amd64_fchs;
341 static inline bool is_amd64_fchs(
ir_node const *
const n)
351 extern ir_op *op_amd64_fdiv;
353 static inline bool is_amd64_fdiv(
ir_node const *
const n)
363 extern ir_op *op_amd64_fdup;
365 static inline bool is_amd64_fdup(
ir_node const *
const n)
375 extern ir_op *op_amd64_fild;
377 static inline bool is_amd64_fild(
ir_node const *
const n)
385 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);
387 extern ir_op *op_amd64_fisttp;
389 static inline bool is_amd64_fisttp(
ir_node const *
const n)
397 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);
399 extern ir_op *op_amd64_fld;
401 static inline bool is_amd64_fld(
ir_node const *
const n)
409 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);
411 extern ir_op *op_amd64_fld1;
413 static inline bool is_amd64_fld1(
ir_node const *
const n)
423 extern ir_op *op_amd64_fldz;
425 static inline bool is_amd64_fldz(
ir_node const *
const n)
435 extern ir_op *op_amd64_fmul;
437 static inline bool is_amd64_fmul(
ir_node const *
const n)
447 extern ir_op *op_amd64_fpop;
449 static inline bool is_amd64_fpop(
ir_node const *
const n)
459 extern ir_op *op_amd64_fst;
461 static inline bool is_amd64_fst(
ir_node const *
const n)
469 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);
471 extern ir_op *op_amd64_fstp;
473 static inline bool is_amd64_fstp(
ir_node const *
const n)
481 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);
483 extern ir_op *op_amd64_fsub;
485 static inline bool is_amd64_fsub(
ir_node const *
const n)
495 extern ir_op *op_amd64_fucomi;
497 static inline bool is_amd64_fucomi(
ir_node const *
const n)
507 extern ir_op *op_amd64_fxch;
509 static inline bool is_amd64_fxch(
ir_node const *
const n)
519 extern ir_op *op_amd64_haddpd;
521 static inline bool is_amd64_haddpd(
ir_node const *
const n)
529 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);
531 extern ir_op *op_amd64_idiv;
533 static inline bool is_amd64_idiv(
ir_node const *
const n)
541 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);
543 extern ir_op *op_amd64_ijmp;
545 static inline bool is_amd64_ijmp(
ir_node const *
const n)
553 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);
555 extern ir_op *op_amd64_imul;
557 static inline bool is_amd64_imul(
ir_node const *
const n)
565 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);
567 extern ir_op *op_amd64_imul_1op;
569 static inline bool is_amd64_imul_1op(
ir_node const *
const n)
577 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);
579 extern ir_op *op_amd64_jcc;
581 static inline bool is_amd64_jcc(
ir_node const *
const n)
591 extern ir_op *op_amd64_jmp;
593 static inline bool is_amd64_jmp(
ir_node const *
const n)
603 extern ir_op *op_amd64_jmp_switch;
605 static inline bool is_amd64_jmp_switch(
ir_node const *
const n)
613 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);
615 extern ir_op *op_amd64_l_haddpd;
617 static inline bool is_amd64_l_haddpd(
ir_node const *
const n)
627 extern ir_op *op_amd64_l_punpckldq;
629 static inline bool is_amd64_l_punpckldq(
ir_node const *
const n)
639 extern ir_op *op_amd64_l_subpd;
641 static inline bool is_amd64_l_subpd(
ir_node const *
const n)
651 extern ir_op *op_amd64_lea;
653 static inline bool is_amd64_lea(
ir_node const *
const n)
661 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);
663 extern ir_op *op_amd64_leave;
665 static inline bool is_amd64_leave(
ir_node const *
const n)
675 extern ir_op *op_amd64_mov_gp;
677 static inline bool is_amd64_mov_gp(
ir_node const *
const n)
685 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);
687 extern ir_op *op_amd64_mov_imm;
689 static inline bool is_amd64_mov_imm(
ir_node const *
const n)
697 ir_node *new_bd_amd64_mov_imm(
dbg_info *dbgi,
ir_node *block, x86_insn_size_t size,
const amd64_imm64_t *imm);
699 extern ir_op *op_amd64_mov_store;
701 static inline bool is_amd64_mov_store(
ir_node const *
const n)
709 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);
711 extern ir_op *op_amd64_movd;
713 static inline bool is_amd64_movd(
ir_node const *
const n)
721 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);
723 extern ir_op *op_amd64_movd_gp_xmm;
725 static inline bool is_amd64_movd_gp_xmm(
ir_node const *
const n)
733 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);
735 extern ir_op *op_amd64_movd_xmm_gp;
737 static inline bool is_amd64_movd_xmm_gp(
ir_node const *
const n)
745 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);
747 extern ir_op *op_amd64_movdqa;
749 static inline bool is_amd64_movdqa(
ir_node const *
const n)
757 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);
759 extern ir_op *op_amd64_movdqu;
761 static inline bool is_amd64_movdqu(
ir_node const *
const n)
769 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);
771 extern ir_op *op_amd64_movdqu_store;
773 static inline bool is_amd64_movdqu_store(
ir_node const *
const n)
775 return get_irn_op(n) == op_amd64_movdqu_store;
781 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);
783 extern ir_op *op_amd64_movs;
785 static inline bool is_amd64_movs(
ir_node const *
const n)
793 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);
795 extern ir_op *op_amd64_movs_store_xmm;
797 static inline bool is_amd64_movs_store_xmm(
ir_node const *
const n)
799 return get_irn_op(n) == op_amd64_movs_store_xmm;
805 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);
807 extern ir_op *op_amd64_movs_xmm;
809 static inline bool is_amd64_movs_xmm(
ir_node const *
const n)
817 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);
819 extern ir_op *op_amd64_mul;
821 static inline bool is_amd64_mul(
ir_node const *
const n)
829 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);
831 extern ir_op *op_amd64_muls;
833 static inline bool is_amd64_muls(
ir_node const *
const n)
841 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);
843 extern ir_op *op_amd64_neg;
845 static inline bool is_amd64_neg(
ir_node const *
const n)
855 extern ir_op *op_amd64_not;
857 static inline bool is_amd64_not(
ir_node const *
const n)
867 extern ir_op *op_amd64_or;
869 static inline bool is_amd64_or(
ir_node const *
const n)
877 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);
879 extern ir_op *op_amd64_pop_am;
881 static inline bool is_amd64_pop_am(
ir_node const *
const n)
889 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);
891 extern ir_op *op_amd64_punpckldq;
893 static inline bool is_amd64_punpckldq(
ir_node const *
const n)
901 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);
903 extern ir_op *op_amd64_push_am;
905 static inline bool is_amd64_push_am(
ir_node const *
const n)
913 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);
915 extern ir_op *op_amd64_push_reg;
917 static inline bool is_amd64_push_reg(
ir_node const *
const n)
927 extern ir_op *op_amd64_ret;
929 static inline bool is_amd64_ret(
ir_node const *
const n)
937 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);
939 extern ir_op *op_amd64_sar;
941 static inline bool is_amd64_sar(
ir_node const *
const n)
949 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);
951 extern ir_op *op_amd64_sbb;
953 static inline bool is_amd64_sbb(
ir_node const *
const n)
961 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);
963 extern ir_op *op_amd64_setcc;
965 static inline bool is_amd64_setcc(
ir_node const *
const n)
975 extern ir_op *op_amd64_shl;
977 static inline bool is_amd64_shl(
ir_node const *
const n)
985 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);
987 extern ir_op *op_amd64_shr;
989 static inline bool is_amd64_shr(
ir_node const *
const n)
997 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);
999 extern ir_op *op_amd64_sub;
1001 static inline bool is_amd64_sub(
ir_node const *
const n)
1009 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);
1011 extern ir_op *op_amd64_sub_sp;
1013 static inline bool is_amd64_sub_sp(
ir_node const *
const n)
1021 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);
1023 extern ir_op *op_amd64_subpd;
1025 static inline bool is_amd64_subpd(
ir_node const *
const n)
1033 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);
1035 extern ir_op *op_amd64_subs;
1037 static inline bool is_amd64_subs(
ir_node const *
const n)
1045 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);
1047 extern ir_op *op_amd64_ucomis;
1049 static inline bool is_amd64_ucomis(
ir_node const *
const n)
1057 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);
1059 extern ir_op *op_amd64_xor;
1061 static inline bool is_amd64_xor(
ir_node const *
const n)
1069 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);
1071 extern ir_op *op_amd64_xor_0;
1073 static inline bool is_amd64_xor_0(
ir_node const *
const n)
1083 extern ir_op *op_amd64_xorp;
1085 static inline bool is_amd64_xorp(
ir_node const *
const n)
1093 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);
1095 extern ir_op *op_amd64_xorp_0;
1097 static inline bool is_amd64_xorp_0(
ir_node const *
const n)
1108 typedef enum pn_amd64_add {
1109 pn_amd64_add_res = 0,
1110 pn_amd64_add_flags = 1,
1114 typedef enum pn_amd64_adds {
1115 pn_amd64_adds_res = 0,
1116 pn_amd64_adds_none = 1,
1117 pn_amd64_adds_M = 2,
1120 typedef enum pn_amd64_and {
1121 pn_amd64_and_res = 0,
1122 pn_amd64_and_flags = 1,
1126 typedef enum pn_amd64_bsf {
1127 pn_amd64_bsf_res = 0,
1128 pn_amd64_bsf_flags = 1,
1132 typedef enum pn_amd64_bsr {
1133 pn_amd64_bsr_res = 0,
1134 pn_amd64_bsr_flags = 1,
1138 typedef enum pn_amd64_call {
1139 pn_amd64_call_M = 0,
1140 pn_amd64_call_stack = 1,
1141 pn_amd64_call_flags = 2,
1142 pn_amd64_call_first_result = 3,
1145 typedef enum n_amd64_cltd {
1146 n_amd64_cltd_val = 0,
1149 typedef enum pn_amd64_cmp {
1150 pn_amd64_cmp_dummy = 0,
1151 pn_amd64_cmp_flags = 1,
1155 typedef enum pn_amd64_cmpxchg {
1156 pn_amd64_cmpxchg_res = 0,
1157 pn_amd64_cmpxchg_flags = 1,
1158 pn_amd64_cmpxchg_M = 2,
1161 typedef enum n_amd64_cqto {
1162 n_amd64_cqto_val = 0,
1165 typedef enum pn_amd64_cvtsd2ss {
1166 pn_amd64_cvtsd2ss_res = 0,
1167 pn_amd64_cvtsd2ss_none = 1,
1168 pn_amd64_cvtsd2ss_M = 2,
1169 } pn_amd64_cvtsd2ss;
1171 typedef enum pn_amd64_cvtsi2sd {
1172 pn_amd64_cvtsi2sd_res = 0,
1173 pn_amd64_cvtsi2sd_none = 1,
1174 pn_amd64_cvtsi2sd_M = 2,
1175 } pn_amd64_cvtsi2sd;
1177 typedef enum pn_amd64_cvtsi2ss {
1178 pn_amd64_cvtsi2ss_res = 0,
1179 pn_amd64_cvtsi2ss_none = 1,
1180 pn_amd64_cvtsi2ss_M = 2,
1181 } pn_amd64_cvtsi2ss;
1183 typedef enum pn_amd64_cvtss2sd {
1184 pn_amd64_cvtss2sd_res = 0,
1185 pn_amd64_cvtss2sd_none = 1,
1186 pn_amd64_cvtss2sd_M = 2,
1187 } pn_amd64_cvtss2sd;
1189 typedef enum pn_amd64_cvttsd2si {
1190 pn_amd64_cvttsd2si_res = 0,
1191 pn_amd64_cvttsd2si_none = 1,
1192 pn_amd64_cvttsd2si_M = 2,
1193 } pn_amd64_cvttsd2si;
1195 typedef enum pn_amd64_cvttss2si {
1196 pn_amd64_cvttss2si_res = 0,
1197 pn_amd64_cvttss2si_none = 1,
1198 pn_amd64_cvttss2si_M = 2,
1199 } pn_amd64_cvttss2si;
1201 typedef enum pn_amd64_div {
1202 pn_amd64_div_res_div = 0,
1203 pn_amd64_div_flags = 1,
1205 pn_amd64_div_res_mod = 3,
1208 typedef enum pn_amd64_divs {
1209 pn_amd64_divs_res = 0,
1210 pn_amd64_divs_none = 1,
1211 pn_amd64_divs_M = 2,
1214 typedef enum n_amd64_fadd {
1215 n_amd64_fadd_left = 0,
1216 n_amd64_fadd_right = 1,
1219 typedef enum n_amd64_fchs {
1220 n_amd64_fchs_value = 0,
1223 typedef enum n_amd64_fdiv {
1224 n_amd64_fdiv_left = 0,
1225 n_amd64_fdiv_right = 1,
1228 typedef enum n_amd64_fdup {
1229 n_amd64_fdup_val = 0,
1232 typedef enum pn_amd64_fild {
1233 pn_amd64_fild_res = 0,
1234 pn_amd64_fild_unused = 1,
1235 pn_amd64_fild_M = 2,
1238 typedef enum pn_amd64_fisttp {
1239 pn_amd64_fisttp_M = 0,
1242 typedef enum pn_amd64_fld {
1243 pn_amd64_fld_res = 0,
1244 pn_amd64_fld_unused = 1,
1248 typedef enum pn_amd64_fld1 {
1249 pn_amd64_fld1_res = 0,
1252 typedef enum pn_amd64_fldz {
1253 pn_amd64_fldz_res = 0,
1256 typedef enum n_amd64_fmul {
1257 n_amd64_fmul_left = 0,
1258 n_amd64_fmul_right = 1,
1261 typedef enum pn_amd64_fst {
1265 typedef enum pn_amd64_fstp {
1266 pn_amd64_fstp_M = 0,
1269 typedef enum n_amd64_fsub {
1270 n_amd64_fsub_left = 0,
1271 n_amd64_fsub_right = 1,
1274 typedef enum pn_amd64_fucomi {
1275 pn_amd64_fucomi_flags = 0,
1278 typedef enum n_amd64_fucomi {
1279 n_amd64_fucomi_left = 0,
1280 n_amd64_fucomi_right = 1,
1283 typedef enum pn_amd64_haddpd {
1284 pn_amd64_haddpd_res = 0,
1285 pn_amd64_haddpd_none = 1,
1286 pn_amd64_haddpd_M = 2,
1289 typedef enum pn_amd64_idiv {
1290 pn_amd64_idiv_res_div = 0,
1291 pn_amd64_idiv_flags = 1,
1292 pn_amd64_idiv_M = 2,
1293 pn_amd64_idiv_res_mod = 3,
1296 typedef enum pn_amd64_ijmp {
1297 pn_amd64_ijmp_X = 0,
1298 pn_amd64_ijmp_unused = 1,
1299 pn_amd64_ijmp_M = 2,
1302 typedef enum pn_amd64_imul {
1303 pn_amd64_imul_res = 0,
1304 pn_amd64_imul_flags = 1,
1305 pn_amd64_imul_M = 2,
1308 typedef enum pn_amd64_imul_1op {
1309 pn_amd64_imul_1op_res_low = 0,
1310 pn_amd64_imul_1op_flags = 1,
1311 pn_amd64_imul_1op_M = 2,
1312 pn_amd64_imul_1op_res_high = 3,
1313 } pn_amd64_imul_1op;
1315 typedef enum pn_amd64_jcc {
1316 pn_amd64_jcc_false = 0,
1317 pn_amd64_jcc_true = 1,
1320 typedef enum n_amd64_jcc {
1321 n_amd64_jcc_eflags = 0,
1324 typedef enum pn_amd64_l_haddpd {
1325 pn_amd64_l_haddpd_res = 0,
1326 } pn_amd64_l_haddpd;
1328 typedef enum n_amd64_l_haddpd {
1329 n_amd64_l_haddpd_arg0 = 0,
1330 n_amd64_l_haddpd_arg1 = 1,
1333 typedef enum pn_amd64_l_punpckldq {
1334 pn_amd64_l_punpckldq_res = 0,
1335 } pn_amd64_l_punpckldq;
1337 typedef enum n_amd64_l_punpckldq {
1338 n_amd64_l_punpckldq_arg0 = 0,
1339 n_amd64_l_punpckldq_arg1 = 1,
1340 } n_amd64_l_punpckldq;
1342 typedef enum pn_amd64_l_subpd {
1343 pn_amd64_l_subpd_res = 0,
1346 typedef enum n_amd64_l_subpd {
1347 n_amd64_l_subpd_arg0 = 0,
1348 n_amd64_l_subpd_arg1 = 1,
1351 typedef enum pn_amd64_lea {
1352 pn_amd64_lea_res = 0,
1355 typedef enum pn_amd64_leave {
1356 pn_amd64_leave_frame = 0,
1357 pn_amd64_leave_M = 1,
1358 pn_amd64_leave_stack = 2,
1361 typedef enum pn_amd64_mov_gp {
1362 pn_amd64_mov_gp_res = 0,
1363 pn_amd64_mov_gp_unused = 1,
1364 pn_amd64_mov_gp_M = 2,
1367 typedef enum pn_amd64_mov_imm {
1368 pn_amd64_mov_imm_res = 0,
1371 typedef enum pn_amd64_mov_store {
1372 pn_amd64_mov_store_M = 0,
1373 } pn_amd64_mov_store;
1375 typedef enum pn_amd64_movd {
1376 pn_amd64_movd_res = 0,
1377 pn_amd64_movd_none = 1,
1378 pn_amd64_movd_M = 2,
1381 typedef enum pn_amd64_movd_gp_xmm {
1382 pn_amd64_movd_gp_xmm_res = 0,
1383 } pn_amd64_movd_gp_xmm;
1385 typedef enum n_amd64_movd_gp_xmm {
1386 n_amd64_movd_gp_xmm_operand = 0,
1387 } n_amd64_movd_gp_xmm;
1389 typedef enum pn_amd64_movd_xmm_gp {
1390 pn_amd64_movd_xmm_gp_res = 0,
1391 } pn_amd64_movd_xmm_gp;
1393 typedef enum n_amd64_movd_xmm_gp {
1394 n_amd64_movd_xmm_gp_operand = 0,
1395 } n_amd64_movd_xmm_gp;
1397 typedef enum pn_amd64_movdqa {
1398 pn_amd64_movdqa_res = 0,
1399 pn_amd64_movdqa_none = 1,
1400 pn_amd64_movdqa_M = 2,
1403 typedef enum pn_amd64_movdqu {
1404 pn_amd64_movdqu_res = 0,
1405 pn_amd64_movdqu_none = 1,
1406 pn_amd64_movdqu_M = 2,
1409 typedef enum pn_amd64_movdqu_store {
1410 pn_amd64_movdqu_store_M = 0,
1411 } pn_amd64_movdqu_store;
1413 typedef enum pn_amd64_movs {
1414 pn_amd64_movs_res = 0,
1415 pn_amd64_movs_unused = 1,
1416 pn_amd64_movs_M = 2,
1419 typedef enum pn_amd64_movs_store_xmm {
1420 pn_amd64_movs_store_xmm_M = 0,
1421 } pn_amd64_movs_store_xmm;
1423 typedef enum pn_amd64_movs_xmm {
1424 pn_amd64_movs_xmm_res = 0,
1425 pn_amd64_movs_xmm_none = 1,
1426 pn_amd64_movs_xmm_M = 2,
1427 } pn_amd64_movs_xmm;
1429 typedef enum pn_amd64_mul {
1430 pn_amd64_mul_res_low = 0,
1431 pn_amd64_mul_flags = 1,
1433 pn_amd64_mul_res_high = 3,
1436 typedef enum pn_amd64_muls {
1437 pn_amd64_muls_res = 0,
1438 pn_amd64_muls_none = 1,
1439 pn_amd64_muls_M = 2,
1442 typedef enum pn_amd64_neg {
1443 pn_amd64_neg_res = 0,
1444 pn_amd64_neg_flags = 1,
1447 typedef enum n_amd64_neg {
1448 n_amd64_neg_val = 0,
1451 typedef enum pn_amd64_not {
1452 pn_amd64_not_res = 0,
1453 pn_amd64_not_flags = 1,
1456 typedef enum n_amd64_not {
1457 n_amd64_not_val = 0,
1460 typedef enum pn_amd64_or {
1461 pn_amd64_or_res = 0,
1462 pn_amd64_or_flags = 1,
1466 typedef enum pn_amd64_pop_am {
1467 pn_amd64_pop_am_stack = 0,
1468 pn_amd64_pop_am_M = 1,
1471 typedef enum pn_amd64_punpckldq {
1472 pn_amd64_punpckldq_res = 0,
1473 pn_amd64_punpckldq_none = 1,
1474 pn_amd64_punpckldq_M = 2,
1475 } pn_amd64_punpckldq;
1477 typedef enum pn_amd64_push_am {
1478 pn_amd64_push_am_stack = 0,
1479 pn_amd64_push_am_M = 1,
1482 typedef enum pn_amd64_push_reg {
1483 pn_amd64_push_reg_stack = 0,
1484 pn_amd64_push_reg_M = 1,
1485 } pn_amd64_push_reg;
1487 typedef enum n_amd64_push_reg {
1488 n_amd64_push_reg_stack = 0,
1489 n_amd64_push_reg_mem = 1,
1490 n_amd64_push_reg_val = 2,
1493 typedef enum n_amd64_ret {
1494 n_amd64_ret_mem = 0,
1495 n_amd64_ret_stack = 1,
1496 n_amd64_ret_first_result = 2,
1499 typedef enum pn_amd64_sar {
1500 pn_amd64_sar_res = 0,
1501 pn_amd64_sar_flags = 1,
1504 typedef enum pn_amd64_sbb {
1505 pn_amd64_sbb_res = 0,
1506 pn_amd64_sbb_flags = 1,
1510 typedef enum pn_amd64_setcc {
1511 pn_amd64_setcc_res = 0,
1514 typedef enum n_amd64_setcc {
1515 n_amd64_setcc_eflags = 0,
1518 typedef enum pn_amd64_shl {
1519 pn_amd64_shl_res = 0,
1520 pn_amd64_shl_flags = 1,
1523 typedef enum pn_amd64_shr {
1524 pn_amd64_shr_res = 0,
1525 pn_amd64_shr_flags = 1,
1528 typedef enum pn_amd64_sub {
1529 pn_amd64_sub_res = 0,
1530 pn_amd64_sub_flags = 1,
1534 typedef enum pn_amd64_sub_sp {
1535 pn_amd64_sub_sp_stack = 0,
1536 pn_amd64_sub_sp_addr = 1,
1537 pn_amd64_sub_sp_M = 2,
1540 typedef enum n_amd64_sub_sp {
1541 n_amd64_sub_sp_stack = 0,
1544 typedef enum pn_amd64_subpd {
1545 pn_amd64_subpd_res = 0,
1546 pn_amd64_subpd_none = 1,
1547 pn_amd64_subpd_M = 2,
1550 typedef enum pn_amd64_subs {
1551 pn_amd64_subs_res = 0,
1552 pn_amd64_subs_none = 1,
1553 pn_amd64_subs_M = 2,
1556 typedef enum pn_amd64_ucomis {
1557 pn_amd64_ucomis_dummy = 0,
1558 pn_amd64_ucomis_flags = 1,
1559 pn_amd64_ucomis_M = 2,
1562 typedef enum pn_amd64_xor {
1563 pn_amd64_xor_res = 0,
1564 pn_amd64_xor_flags = 1,
1568 typedef enum pn_amd64_xor_0 {
1569 pn_amd64_xor_0_res = 0,
1570 pn_amd64_xor_0_flags = 1,
1573 typedef enum pn_amd64_xorp {
1574 pn_amd64_xorp_res = 0,
1575 pn_amd64_xorp_none = 1,
1576 pn_amd64_xorp_M = 2,
1579 typedef enum pn_amd64_xorp_0 {
1580 pn_amd64_xorp_0_res = 0,
struct ir_op ir_op
Node Opcode.
struct dbg_info dbg_info
Source Reference.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the 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.
struct ir_node ir_node
Procedure Graph Node.