9 #ifndef FIRM_BE_ARM_GEN_ARM_NEW_NODES_H 10 #define FIRM_BE_ARM_GEN_ARM_NEW_NODES_H 14 #include "arm_nodes_attr.h" 16 typedef enum arm_opcodes {
77 int is_arm_irn(
const ir_node *node);
78 int is_arm_op(
const ir_op *op);
80 int get_arm_irn_opcode(
const ir_node *node);
81 void arm_create_opcodes(
void);
82 void arm_free_opcodes(
void);
84 extern ir_op *op_arm_AdC;
86 static inline bool is_arm_AdC(
ir_node const *
const n)
108 extern ir_op *op_arm_AdC_t;
110 static inline bool is_arm_AdC_t(
ir_node const *
const n)
120 extern ir_op *op_arm_Add;
122 static inline bool is_arm_Add(
ir_node const *
const n)
144 extern ir_op *op_arm_AddS;
146 static inline bool is_arm_AddS(
ir_node const *
const n)
168 extern ir_op *op_arm_AddS_t;
170 static inline bool is_arm_AddS_t(
ir_node const *
const n)
180 extern ir_op *op_arm_Address;
182 static inline bool is_arm_Address(
ir_node const *
const n)
192 extern ir_op *op_arm_Adf;
194 static inline bool is_arm_Adf(
ir_node const *
const n)
204 extern ir_op *op_arm_And;
206 static inline bool is_arm_And(
ir_node const *
const n)
228 extern ir_op *op_arm_B;
230 static inline bool is_arm_B(
ir_node const *
const n)
240 extern ir_op *op_arm_Bcc;
242 static inline bool is_arm_Bcc(
ir_node const *
const n)
252 extern ir_op *op_arm_Bic;
254 static inline bool is_arm_Bic(
ir_node const *
const n)
276 extern ir_op *op_arm_Bl;
278 static inline bool is_arm_Bl(
ir_node const *
const n)
288 extern ir_op *op_arm_Clz;
290 static inline bool is_arm_Clz(
ir_node const *
const n)
300 extern ir_op *op_arm_Cmfe;
302 static inline bool is_arm_Cmfe(
ir_node const *
const n)
312 extern ir_op *op_arm_Cmn;
314 static inline bool is_arm_Cmn(
ir_node const *
const n)
322 ir_node *new_bd_arm_Cmn_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
unsigned char immediate_value,
unsigned char immediate_rot,
bool ins_permuted,
bool is_unsigned);
330 ir_node *new_bd_arm_Cmn_reg_shift_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
ir_node *right, arm_shift_modifier_t shift_modifier,
unsigned shift_immediate,
bool ins_permuted,
bool is_unsigned);
336 extern ir_op *op_arm_Cmp;
338 static inline bool is_arm_Cmp(
ir_node const *
const n)
346 ir_node *new_bd_arm_Cmp_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
unsigned char immediate_value,
unsigned char immediate_rot,
bool ins_permuted,
bool is_unsigned);
354 ir_node *new_bd_arm_Cmp_reg_shift_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
ir_node *right, arm_shift_modifier_t shift_modifier,
unsigned shift_immediate,
bool ins_permuted,
bool is_unsigned);
360 extern ir_op *op_arm_Dvf;
362 static inline bool is_arm_Dvf(
ir_node const *
const n)
372 extern ir_op *op_arm_Eor;
374 static inline bool is_arm_Eor(
ir_node const *
const n)
396 extern ir_op *op_arm_Flt;
398 static inline bool is_arm_Flt(
ir_node const *
const n)
408 extern ir_op *op_arm_FrameAddr;
410 static inline bool is_arm_FrameAddr(
ir_node const *
const n)
420 extern ir_op *op_arm_IJmp;
422 static inline bool is_arm_IJmp(
ir_node const *
const n)
432 extern ir_op *op_arm_Ldf;
434 static inline bool is_arm_Ldf(
ir_node const *
const n)
444 extern ir_op *op_arm_Ldr;
446 static inline bool is_arm_Ldr(
ir_node const *
const n)
456 extern ir_op *op_arm_LinkLdrPC;
458 static inline bool is_arm_LinkLdrPC(
ir_node const *
const n)
466 ir_node *new_bd_arm_LinkLdrPC(
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_mode *ls_mode,
ir_entity *entity,
int entity_sign,
long offset,
bool is_frame_entity);
468 extern ir_op *op_arm_LinkMovPC;
470 static inline bool is_arm_LinkMovPC(
ir_node const *
const n)
478 ir_node *new_bd_arm_LinkMovPC(
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,
unsigned shiftop_input, arm_shift_modifier_t shift_modifier,
unsigned char immediate_value,
unsigned char immediate_rot);
480 extern ir_op *op_arm_Mla;
482 static inline bool is_arm_Mla(
ir_node const *
const n)
496 extern ir_op *op_arm_Mls;
498 static inline bool is_arm_Mls(
ir_node const *
const n)
508 extern ir_op *op_arm_Mov;
510 static inline bool is_arm_Mov(
ir_node const *
const n)
518 ir_node *new_bd_arm_Mov_imm(
dbg_info *dbgi,
ir_node *block,
unsigned char immediate_value,
unsigned char immediate_rot);
526 ir_node *new_bd_arm_Mov_reg_shift_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *Rm, arm_shift_modifier_t shift_modifier,
unsigned shift_immediate);
532 extern ir_op *op_arm_Muf;
534 static inline bool is_arm_Muf(
ir_node const *
const n)
544 extern ir_op *op_arm_Mul;
546 static inline bool is_arm_Mul(
ir_node const *
const n)
560 extern ir_op *op_arm_Mvf;
562 static inline bool is_arm_Mvf(
ir_node const *
const n)
572 extern ir_op *op_arm_Mvn;
574 static inline bool is_arm_Mvn(
ir_node const *
const n)
582 ir_node *new_bd_arm_Mvn_imm(
dbg_info *dbgi,
ir_node *block,
unsigned char immediate_value,
unsigned char immediate_rot);
590 ir_node *new_bd_arm_Mvn_reg_shift_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *Rm, arm_shift_modifier_t shift_modifier,
unsigned shift_immediate);
596 extern ir_op *op_arm_OrPl_t;
598 static inline bool is_arm_OrPl_t(
ir_node const *
const n)
608 extern ir_op *op_arm_Orr;
610 static inline bool is_arm_Orr(
ir_node const *
const n)
632 extern ir_op *op_arm_OrrPl;
634 static inline bool is_arm_OrrPl(
ir_node const *
const n)
644 extern ir_op *op_arm_Pkhbt;
646 static inline bool is_arm_Pkhbt(
ir_node const *
const n)
668 extern ir_op *op_arm_Pkhtb;
670 static inline bool is_arm_Pkhtb(
ir_node const *
const n)
692 extern ir_op *op_arm_Return;
694 static inline bool is_arm_Return(
ir_node const *
const n)
702 ir_node *new_bd_arm_Return(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs);
704 extern ir_op *op_arm_RsC;
706 static inline bool is_arm_RsC(
ir_node const *
const n)
728 extern ir_op *op_arm_Rsb;
730 static inline bool is_arm_Rsb(
ir_node const *
const n)
752 extern ir_op *op_arm_RsbS;
754 static inline bool is_arm_RsbS(
ir_node const *
const n)
776 extern ir_op *op_arm_SMulL;
778 static inline bool is_arm_SMulL(
ir_node const *
const n)
788 extern ir_op *op_arm_SMulL_t;
790 static inline bool is_arm_SMulL_t(
ir_node const *
const n)
800 extern ir_op *op_arm_SbC;
802 static inline bool is_arm_SbC(
ir_node const *
const n)
824 extern ir_op *op_arm_SbC_t;
826 static inline bool is_arm_SbC_t(
ir_node const *
const n)
836 extern ir_op *op_arm_Stf;
838 static inline bool is_arm_Stf(
ir_node const *
const n)
848 extern ir_op *op_arm_Str;
850 static inline bool is_arm_Str(
ir_node const *
const n)
860 extern ir_op *op_arm_Sub;
862 static inline bool is_arm_Sub(
ir_node const *
const n)
884 extern ir_op *op_arm_SubS;
886 static inline bool is_arm_SubS(
ir_node const *
const n)
908 extern ir_op *op_arm_SubS_t;
910 static inline bool is_arm_SubS_t(
ir_node const *
const n)
920 extern ir_op *op_arm_Suf;
922 static inline bool is_arm_Suf(
ir_node const *
const n)
932 extern ir_op *op_arm_SwitchJmp;
934 static inline bool is_arm_SwitchJmp(
ir_node const *
const n)
944 extern ir_op *op_arm_Tst;
946 static inline bool is_arm_Tst(
ir_node const *
const n)
954 ir_node *new_bd_arm_Tst_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
unsigned char immediate_value,
unsigned char immediate_rot,
bool ins_permuted,
bool is_unsigned);
962 ir_node *new_bd_arm_Tst_reg_shift_imm(
dbg_info *dbgi,
ir_node *block,
ir_node *left,
ir_node *right, arm_shift_modifier_t shift_modifier,
unsigned shift_immediate,
bool ins_permuted,
bool is_unsigned);
968 extern ir_op *op_arm_UMulL;
970 static inline bool is_arm_UMulL(
ir_node const *
const n)
980 extern ir_op *op_arm_UMulL_t;
982 static inline bool is_arm_UMulL_t(
ir_node const *
const n)
992 extern ir_op *op_arm_fConst;
994 static inline bool is_arm_fConst(
ir_node const *
const n)
1005 typedef enum n_arm_AdC_t {
1006 n_arm_AdC_t_left = 0,
1007 n_arm_AdC_t_right = 1,
1008 n_arm_AdC_t_flags = 2,
1011 typedef enum pn_arm_AddS {
1012 pn_arm_AddS_res = 0,
1013 pn_arm_AddS_flags = 1,
1016 typedef enum pn_arm_AddS_t {
1017 pn_arm_AddS_t_res = 0,
1018 pn_arm_AddS_t_flags = 1,
1021 typedef enum n_arm_AddS_t {
1022 n_arm_AddS_t_left = 0,
1023 n_arm_AddS_t_right = 1,
1026 typedef enum n_arm_Bcc {
1027 n_arm_Bcc_flags = 0,
1030 typedef enum pn_arm_Bl {
1032 pn_arm_Bl_stack = 1,
1033 pn_arm_Bl_first_result = 2,
1036 typedef enum pn_arm_Dvf {
1041 typedef enum n_arm_FrameAddr {
1042 n_arm_FrameAddr_base = 0,
1045 typedef enum pn_arm_IJmp {
1046 pn_arm_IJmp_jmp = 0,
1049 typedef enum n_arm_IJmp {
1050 n_arm_IJmp_target = 0,
1053 typedef enum pn_arm_Ldf {
1058 typedef enum n_arm_Ldf {
1063 typedef enum pn_arm_Ldr {
1068 typedef enum n_arm_Ldr {
1073 typedef enum n_arm_Mla {
1075 n_arm_Mla_right = 1,
1079 typedef enum n_arm_Mls {
1081 n_arm_Mls_right = 1,
1085 typedef enum n_arm_Mov {
1090 typedef enum n_arm_OrPl_t {
1091 n_arm_OrPl_t_falseval = 0,
1092 n_arm_OrPl_t_flags = 1,
1093 n_arm_OrPl_t_left = 2,
1094 n_arm_OrPl_t_right = 3,
1097 typedef enum n_arm_OrrPl {
1098 n_arm_OrrPl_falseval = 0,
1099 n_arm_OrrPl_flags = 1,
1100 n_arm_OrrPl_left = 2,
1101 n_arm_OrrPl_right = 3,
1104 typedef enum n_arm_Return {
1105 n_arm_Return_mem = 0,
1106 n_arm_Return_sp = 1,
1107 n_arm_Return_first_result = 2,
1110 typedef enum pn_arm_RsbS {
1111 pn_arm_RsbS_res = 0,
1112 pn_arm_RsbS_flags = 1,
1115 typedef enum pn_arm_SMulL {
1116 pn_arm_SMulL_low = 0,
1117 pn_arm_SMulL_high = 1,
1120 typedef enum pn_arm_SMulL_t {
1121 pn_arm_SMulL_t_low = 0,
1122 pn_arm_SMulL_t_high = 1,
1125 typedef enum n_arm_SMulL_t {
1126 n_arm_SMulL_t_left = 0,
1127 n_arm_SMulL_t_right = 1,
1130 typedef enum n_arm_SbC_t {
1131 n_arm_SbC_t_left = 0,
1132 n_arm_SbC_t_right = 1,
1133 n_arm_SbC_t_flags = 2,
1136 typedef enum pn_arm_Stf {
1140 typedef enum n_arm_Stf {
1146 typedef enum pn_arm_Str {
1150 typedef enum n_arm_Str {
1156 typedef enum pn_arm_SubS {
1157 pn_arm_SubS_res = 0,
1158 pn_arm_SubS_flags = 1,
1161 typedef enum pn_arm_SubS_t {
1162 pn_arm_SubS_t_res = 0,
1163 pn_arm_SubS_t_flags = 1,
1166 typedef enum n_arm_SubS_t {
1167 n_arm_SubS_t_left = 0,
1168 n_arm_SubS_t_right = 1,
1171 typedef enum pn_arm_UMulL {
1172 pn_arm_UMulL_low = 0,
1173 pn_arm_UMulL_high = 1,
1176 typedef enum pn_arm_UMulL_t {
1177 pn_arm_UMulL_t_low = 0,
1178 pn_arm_UMulL_t_high = 1,
1181 typedef enum n_arm_UMulL_t {
1182 n_arm_UMulL_t_left = 0,
1183 n_arm_UMulL_t_right = 1,
struct ir_op ir_op
Node Opcode.
struct dbg_info dbg_info
Source Reference.
struct ir_tarval ir_tarval
Target Machine Value.
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.
ir_relation
Relations for comparing numbers.
struct ir_mode ir_mode
SSA Value mode.
struct ir_entity ir_entity
Entity.
struct ir_node ir_node
Procedure Graph Node.