9 #ifndef FIRM_BE_MIPS_GEN_MIPS_NEW_NODES_H
10 #define FIRM_BE_MIPS_GEN_MIPS_NEW_NODES_H
14 #include "mips_nodes_attr.h"
16 typedef enum mips_opcodes {
63 int is_mips_irn(
const ir_node *node);
64 int is_mips_op(
const ir_op *op);
66 int get_mips_irn_opcode(
const ir_node *node);
67 void mips_create_opcodes(
void);
68 void mips_free_opcodes(
void);
70 extern ir_op *op_mips_addiu;
72 static inline bool is_mips_addiu(
ir_node const *
const n)
82 extern ir_op *op_mips_addu;
84 static inline bool is_mips_addu(
ir_node const *
const n)
94 extern ir_op *op_mips_and;
96 static inline bool is_mips_and(
ir_node const *
const n)
106 extern ir_op *op_mips_andi;
108 static inline bool is_mips_andi(
ir_node const *
const n)
118 extern ir_op *op_mips_b;
120 static inline bool is_mips_b(
ir_node const *
const n)
130 extern ir_op *op_mips_bcc;
132 static inline bool is_mips_bcc(
ir_node const *
const n)
146 extern ir_op *op_mips_div_hi;
148 static inline bool is_mips_div_hi(
ir_node const *
const n)
158 extern ir_op *op_mips_div_lo;
160 static inline bool is_mips_div_lo(
ir_node const *
const n)
170 extern ir_op *op_mips_divu_hi;
172 static inline bool is_mips_divu_hi(
ir_node const *
const n)
182 extern ir_op *op_mips_divu_lo;
184 static inline bool is_mips_divu_lo(
ir_node const *
const n)
194 extern ir_op *op_mips_ijmp;
196 static inline bool is_mips_ijmp(
ir_node const *
const n)
206 extern ir_op *op_mips_jal;
208 static inline bool is_mips_jal(
ir_node const *
const n)
216 ir_node *new_bd_mips_jal(
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,
ir_entity *
const ent, int32_t
const val);
218 extern ir_op *op_mips_jalr;
220 static inline bool is_mips_jalr(
ir_node const *
const n)
228 ir_node *new_bd_mips_jalr(
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);
230 extern ir_op *op_mips_lb;
232 static inline bool is_mips_lb(
ir_node const *
const n)
242 extern ir_op *op_mips_lbu;
244 static inline bool is_mips_lbu(
ir_node const *
const n)
254 extern ir_op *op_mips_lh;
256 static inline bool is_mips_lh(
ir_node const *
const n)
266 extern ir_op *op_mips_lhu;
268 static inline bool is_mips_lhu(
ir_node const *
const n)
278 extern ir_op *op_mips_lui;
280 static inline bool is_mips_lui(
ir_node const *
const n)
290 extern ir_op *op_mips_lw;
292 static inline bool is_mips_lw(
ir_node const *
const n)
302 extern ir_op *op_mips_mult_hi;
304 static inline bool is_mips_mult_hi(
ir_node const *
const n)
314 extern ir_op *op_mips_mult_lo;
316 static inline bool is_mips_mult_lo(
ir_node const *
const n)
326 extern ir_op *op_mips_multu_hi;
328 static inline bool is_mips_multu_hi(
ir_node const *
const n)
338 extern ir_op *op_mips_nor;
340 static inline bool is_mips_nor(
ir_node const *
const n)
350 extern ir_op *op_mips_or;
352 static inline bool is_mips_or(
ir_node const *
const n)
362 extern ir_op *op_mips_ori;
364 static inline bool is_mips_ori(
ir_node const *
const n)
374 extern ir_op *op_mips_ret;
376 static inline bool is_mips_ret(
ir_node const *
const n)
384 ir_node *new_bd_mips_ret(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs);
386 extern ir_op *op_mips_sb;
388 static inline bool is_mips_sb(
ir_node const *
const n)
398 extern ir_op *op_mips_sh;
400 static inline bool is_mips_sh(
ir_node const *
const n)
410 extern ir_op *op_mips_sll;
412 static inline bool is_mips_sll(
ir_node const *
const n)
422 extern ir_op *op_mips_sllv;
424 static inline bool is_mips_sllv(
ir_node const *
const n)
434 extern ir_op *op_mips_slt;
436 static inline bool is_mips_slt(
ir_node const *
const n)
446 extern ir_op *op_mips_sltiu;
448 static inline bool is_mips_sltiu(
ir_node const *
const n)
458 extern ir_op *op_mips_sltu;
460 static inline bool is_mips_sltu(
ir_node const *
const n)
470 extern ir_op *op_mips_sra;
472 static inline bool is_mips_sra(
ir_node const *
const n)
482 extern ir_op *op_mips_srav;
484 static inline bool is_mips_srav(
ir_node const *
const n)
494 extern ir_op *op_mips_srl;
496 static inline bool is_mips_srl(
ir_node const *
const n)
506 extern ir_op *op_mips_srlv;
508 static inline bool is_mips_srlv(
ir_node const *
const n)
518 extern ir_op *op_mips_subu;
520 static inline bool is_mips_subu(
ir_node const *
const n)
530 extern ir_op *op_mips_sw;
532 static inline bool is_mips_sw(
ir_node const *
const n)
542 extern ir_op *op_mips_switch;
544 static inline bool is_mips_switch(
ir_node const *
const n)
554 extern ir_op *op_mips_xor;
556 static inline bool is_mips_xor(
ir_node const *
const n)
566 extern ir_op *op_mips_xori;
568 static inline bool is_mips_xori(
ir_node const *
const n)
579 typedef enum pn_mips_addiu {
580 pn_mips_addiu_res = 0,
583 typedef enum n_mips_addiu {
584 n_mips_addiu_left = 0,
587 typedef enum pn_mips_addu {
588 pn_mips_addu_res = 0,
591 typedef enum n_mips_addu {
592 n_mips_addu_left = 0,
593 n_mips_addu_right = 1,
596 typedef enum pn_mips_and {
600 typedef enum n_mips_and {
602 n_mips_and_right = 1,
605 typedef enum pn_mips_andi {
606 pn_mips_andi_res = 0,
609 typedef enum n_mips_andi {
610 n_mips_andi_left = 0,
613 typedef enum pn_mips_bcc {
614 pn_mips_bcc_false = 0,
615 pn_mips_bcc_true = 1,
618 typedef enum pn_mips_div_hi {
619 pn_mips_div_hi_res = 0,
622 typedef enum n_mips_div_hi {
623 n_mips_div_hi_left = 0,
624 n_mips_div_hi_right = 1,
627 typedef enum pn_mips_div_lo {
628 pn_mips_div_lo_res = 0,
631 typedef enum n_mips_div_lo {
632 n_mips_div_lo_left = 0,
633 n_mips_div_lo_right = 1,
636 typedef enum pn_mips_divu_hi {
637 pn_mips_divu_hi_res = 0,
640 typedef enum n_mips_divu_hi {
641 n_mips_divu_hi_left = 0,
642 n_mips_divu_hi_right = 1,
645 typedef enum pn_mips_divu_lo {
646 pn_mips_divu_lo_res = 0,
649 typedef enum n_mips_divu_lo {
650 n_mips_divu_lo_left = 0,
651 n_mips_divu_lo_right = 1,
654 typedef enum pn_mips_jal {
656 pn_mips_jal_stack = 1,
657 pn_mips_jal_first_result = 2,
660 typedef enum n_mips_jal {
662 n_mips_jal_stack = 1,
663 n_mips_jal_first_argument = 2,
666 typedef enum pn_mips_jalr {
668 pn_mips_jalr_stack = 1,
669 pn_mips_jalr_first_result = 2,
672 typedef enum n_mips_jalr {
674 n_mips_jalr_stack = 1,
675 n_mips_jalr_first_argument = 2,
678 typedef enum pn_mips_lb {
683 typedef enum n_mips_lb {
688 typedef enum pn_mips_lbu {
693 typedef enum n_mips_lbu {
698 typedef enum pn_mips_lh {
703 typedef enum n_mips_lh {
708 typedef enum pn_mips_lhu {
713 typedef enum n_mips_lhu {
718 typedef enum pn_mips_lui {
722 typedef enum pn_mips_lw {
727 typedef enum n_mips_lw {
732 typedef enum pn_mips_mult_hi {
733 pn_mips_mult_hi_res = 0,
736 typedef enum n_mips_mult_hi {
737 n_mips_mult_hi_left = 0,
738 n_mips_mult_hi_right = 1,
741 typedef enum pn_mips_mult_lo {
742 pn_mips_mult_lo_res = 0,
745 typedef enum n_mips_mult_lo {
746 n_mips_mult_lo_left = 0,
747 n_mips_mult_lo_right = 1,
750 typedef enum pn_mips_multu_hi {
751 pn_mips_multu_hi_res = 0,
754 typedef enum n_mips_multu_hi {
755 n_mips_multu_hi_left = 0,
756 n_mips_multu_hi_right = 1,
759 typedef enum pn_mips_nor {
763 typedef enum n_mips_nor {
765 n_mips_nor_right = 1,
768 typedef enum pn_mips_or {
772 typedef enum n_mips_or {
777 typedef enum pn_mips_ori {
781 typedef enum n_mips_ori {
785 typedef enum n_mips_ret {
787 n_mips_ret_stack = 1,
789 n_mips_ret_first_result = 3,
792 typedef enum pn_mips_sb {
796 typedef enum n_mips_sb {
802 typedef enum pn_mips_sh {
806 typedef enum n_mips_sh {
812 typedef enum pn_mips_sll {
816 typedef enum n_mips_sll {
820 typedef enum pn_mips_sllv {
821 pn_mips_sllv_res = 0,
824 typedef enum n_mips_sllv {
825 n_mips_sllv_left = 0,
826 n_mips_sllv_right = 1,
829 typedef enum pn_mips_slt {
833 typedef enum n_mips_slt {
835 n_mips_slt_right = 1,
838 typedef enum pn_mips_sltiu {
839 pn_mips_sltiu_res = 0,
842 typedef enum n_mips_sltiu {
843 n_mips_sltiu_left = 0,
846 typedef enum pn_mips_sltu {
847 pn_mips_sltu_res = 0,
850 typedef enum n_mips_sltu {
851 n_mips_sltu_left = 0,
852 n_mips_sltu_right = 1,
855 typedef enum pn_mips_sra {
859 typedef enum n_mips_sra {
863 typedef enum pn_mips_srav {
864 pn_mips_srav_res = 0,
867 typedef enum n_mips_srav {
868 n_mips_srav_left = 0,
869 n_mips_srav_right = 1,
872 typedef enum pn_mips_srl {
876 typedef enum n_mips_srl {
880 typedef enum pn_mips_srlv {
881 pn_mips_srlv_res = 0,
884 typedef enum n_mips_srlv {
885 n_mips_srlv_left = 0,
886 n_mips_srlv_right = 1,
889 typedef enum pn_mips_subu {
890 pn_mips_subu_res = 0,
893 typedef enum n_mips_subu {
894 n_mips_subu_left = 0,
895 n_mips_subu_right = 1,
898 typedef enum pn_mips_sw {
902 typedef enum n_mips_sw {
908 typedef enum pn_mips_xor {
912 typedef enum n_mips_xor {
914 n_mips_xor_right = 1,
917 typedef enum pn_mips_xori {
918 pn_mips_xori_res = 0,
921 typedef enum n_mips_xori {
922 n_mips_xori_left = 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.