9 #ifndef FIRM_BE_ARM_GEN_ARM_NEW_NODES_H
10 #define FIRM_BE_ARM_GEN_ARM_NEW_NODES_H
15 typedef enum arm_opcodes {
75 int is_arm_irn(
const ir_node *node);
76 int is_arm_op(
const ir_op *op);
78 int get_arm_irn_opcode(
const ir_node *node);
79 void arm_create_opcodes(
void);
80 void arm_free_opcodes(
void);
82 extern ir_op *op_arm_AdC;
84 static inline bool is_arm_AdC(
ir_node const *
const n)
106 extern ir_op *op_arm_AdC_t;
108 static inline bool is_arm_AdC_t(
ir_node const *
const n)
118 extern ir_op *op_arm_Add;
120 static inline bool is_arm_Add(
ir_node const *
const n)
142 extern ir_op *op_arm_AddS;
144 static inline bool is_arm_AddS(
ir_node const *
const n)
166 extern ir_op *op_arm_AddS_t;
168 static inline bool is_arm_AddS_t(
ir_node const *
const n)
178 extern ir_op *op_arm_Address;
180 static inline bool is_arm_Address(
ir_node const *
const n)
190 extern ir_op *op_arm_Adf;
192 static inline bool is_arm_Adf(
ir_node const *
const n)
202 extern ir_op *op_arm_And;
204 static inline bool is_arm_And(
ir_node const *
const n)
226 extern ir_op *op_arm_B;
228 static inline bool is_arm_B(
ir_node const *
const n)
238 extern ir_op *op_arm_Bic;
240 static inline bool is_arm_Bic(
ir_node const *
const n)
262 extern ir_op *op_arm_Bl;
264 static inline bool is_arm_Bl(
ir_node const *
const n)
274 extern ir_op *op_arm_Clz;
276 static inline bool is_arm_Clz(
ir_node const *
const n)
286 extern ir_op *op_arm_Cmfe;
288 static inline bool is_arm_Cmfe(
ir_node const *
const n)
298 extern ir_op *op_arm_Cmn;
300 static inline bool is_arm_Cmn(
ir_node const *
const n)
308 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);
316 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);
322 extern ir_op *op_arm_Cmp;
324 static inline bool is_arm_Cmp(
ir_node const *
const n)
332 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);
340 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);
346 extern ir_op *op_arm_Dvf;
348 static inline bool is_arm_Dvf(
ir_node const *
const n)
358 extern ir_op *op_arm_Eor;
360 static inline bool is_arm_Eor(
ir_node const *
const n)
382 extern ir_op *op_arm_FltX;
384 static inline bool is_arm_FltX(
ir_node const *
const n)
394 extern ir_op *op_arm_FrameAddr;
396 static inline bool is_arm_FrameAddr(
ir_node const *
const n)
406 extern ir_op *op_arm_Jmp;
408 static inline bool is_arm_Jmp(
ir_node const *
const n)
418 extern ir_op *op_arm_Ldf;
420 static inline bool is_arm_Ldf(
ir_node const *
const n)
430 extern ir_op *op_arm_Ldr;
432 static inline bool is_arm_Ldr(
ir_node const *
const n)
442 extern ir_op *op_arm_LinkLdrPC;
444 static inline bool is_arm_LinkLdrPC(
ir_node const *
const n)
452 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);
454 extern ir_op *op_arm_LinkMovPC;
456 static inline bool is_arm_LinkMovPC(
ir_node const *
const n)
464 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);
466 extern ir_op *op_arm_Mla;
468 static inline bool is_arm_Mla(
ir_node const *
const n)
482 extern ir_op *op_arm_Mls;
484 static inline bool is_arm_Mls(
ir_node const *
const n)
494 extern ir_op *op_arm_Mov;
496 static inline bool is_arm_Mov(
ir_node const *
const n)
504 ir_node *new_bd_arm_Mov_imm(
dbg_info *dbgi,
ir_node *block,
unsigned char immediate_value,
unsigned char immediate_rot);
512 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);
518 extern ir_op *op_arm_Muf;
520 static inline bool is_arm_Muf(
ir_node const *
const n)
530 extern ir_op *op_arm_Mul;
532 static inline bool is_arm_Mul(
ir_node const *
const n)
546 extern ir_op *op_arm_Mvf;
548 static inline bool is_arm_Mvf(
ir_node const *
const n)
558 extern ir_op *op_arm_Mvn;
560 static inline bool is_arm_Mvn(
ir_node const *
const n)
568 ir_node *new_bd_arm_Mvn_imm(
dbg_info *dbgi,
ir_node *block,
unsigned char immediate_value,
unsigned char immediate_rot);
576 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);
582 extern ir_op *op_arm_Or;
584 static inline bool is_arm_Or(
ir_node const *
const n)
606 extern ir_op *op_arm_OrPl;
608 static inline bool is_arm_OrPl(
ir_node const *
const n)
618 extern ir_op *op_arm_OrPl_t;
620 static inline bool is_arm_OrPl_t(
ir_node const *
const n)
630 extern ir_op *op_arm_Pkhbt;
632 static inline bool is_arm_Pkhbt(
ir_node const *
const n)
654 extern ir_op *op_arm_Pkhtb;
656 static inline bool is_arm_Pkhtb(
ir_node const *
const n)
678 extern ir_op *op_arm_Return;
680 static inline bool is_arm_Return(
ir_node const *
const n)
688 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);
690 extern ir_op *op_arm_RsC;
692 static inline bool is_arm_RsC(
ir_node const *
const n)
714 extern ir_op *op_arm_Rsb;
716 static inline bool is_arm_Rsb(
ir_node const *
const n)
738 extern ir_op *op_arm_RsbS;
740 static inline bool is_arm_RsbS(
ir_node const *
const n)
762 extern ir_op *op_arm_SMulL;
764 static inline bool is_arm_SMulL(
ir_node const *
const n)
774 extern ir_op *op_arm_SMulL_t;
776 static inline bool is_arm_SMulL_t(
ir_node const *
const n)
786 extern ir_op *op_arm_SbC;
788 static inline bool is_arm_SbC(
ir_node const *
const n)
810 extern ir_op *op_arm_SbC_t;
812 static inline bool is_arm_SbC_t(
ir_node const *
const n)
822 extern ir_op *op_arm_Stf;
824 static inline bool is_arm_Stf(
ir_node const *
const n)
834 extern ir_op *op_arm_Str;
836 static inline bool is_arm_Str(
ir_node const *
const n)
846 extern ir_op *op_arm_Sub;
848 static inline bool is_arm_Sub(
ir_node const *
const n)
870 extern ir_op *op_arm_SubS;
872 static inline bool is_arm_SubS(
ir_node const *
const n)
894 extern ir_op *op_arm_SubS_t;
896 static inline bool is_arm_SubS_t(
ir_node const *
const n)
906 extern ir_op *op_arm_Suf;
908 static inline bool is_arm_Suf(
ir_node const *
const n)
918 extern ir_op *op_arm_SwitchJmp;
920 static inline bool is_arm_SwitchJmp(
ir_node const *
const n)
930 extern ir_op *op_arm_Tst;
932 static inline bool is_arm_Tst(
ir_node const *
const n)
940 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);
948 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);
954 extern ir_op *op_arm_UMulL;
956 static inline bool is_arm_UMulL(
ir_node const *
const n)
966 extern ir_op *op_arm_UMulL_t;
968 static inline bool is_arm_UMulL_t(
ir_node const *
const n)
978 extern ir_op *op_arm_fConst;
980 static inline bool is_arm_fConst(
ir_node const *
const n)
991 typedef enum n_arm_AdC_t {
992 n_arm_AdC_t_left = 0,
993 n_arm_AdC_t_right = 1,
994 n_arm_AdC_t_flags = 2,
997 typedef enum pn_arm_AddS {
999 pn_arm_AddS_flags = 1,
1002 typedef enum pn_arm_AddS_t {
1003 pn_arm_AddS_t_res = 0,
1004 pn_arm_AddS_t_flags = 1,
1007 typedef enum n_arm_AddS_t {
1008 n_arm_AddS_t_left = 0,
1009 n_arm_AddS_t_right = 1,
1012 typedef enum n_arm_B {
1016 typedef enum pn_arm_Bl {
1018 pn_arm_Bl_stack = 1,
1019 pn_arm_Bl_first_result = 2,
1022 typedef enum pn_arm_Dvf {
1027 typedef enum n_arm_FrameAddr {
1028 n_arm_FrameAddr_base = 0,
1031 typedef enum pn_arm_Ldf {
1036 typedef enum n_arm_Ldf {
1041 typedef enum pn_arm_Ldr {
1046 typedef enum n_arm_Ldr {
1051 typedef enum n_arm_Mla {
1053 n_arm_Mla_right = 1,
1057 typedef enum n_arm_Mls {
1059 n_arm_Mls_right = 1,
1063 typedef enum n_arm_Mov {
1068 typedef enum n_arm_OrPl {
1069 n_arm_OrPl_falseval = 0,
1070 n_arm_OrPl_flags = 1,
1071 n_arm_OrPl_left = 2,
1072 n_arm_OrPl_right = 3,
1075 typedef enum n_arm_OrPl_t {
1076 n_arm_OrPl_t_falseval = 0,
1077 n_arm_OrPl_t_flags = 1,
1078 n_arm_OrPl_t_left = 2,
1079 n_arm_OrPl_t_right = 3,
1082 typedef enum n_arm_Return {
1083 n_arm_Return_mem = 0,
1084 n_arm_Return_sp = 1,
1085 n_arm_Return_first_result = 2,
1088 typedef enum pn_arm_RsbS {
1089 pn_arm_RsbS_res = 0,
1090 pn_arm_RsbS_flags = 1,
1093 typedef enum pn_arm_SMulL {
1094 pn_arm_SMulL_low = 0,
1095 pn_arm_SMulL_high = 1,
1098 typedef enum pn_arm_SMulL_t {
1099 pn_arm_SMulL_t_low = 0,
1100 pn_arm_SMulL_t_high = 1,
1103 typedef enum n_arm_SMulL_t {
1104 n_arm_SMulL_t_left = 0,
1105 n_arm_SMulL_t_right = 1,
1108 typedef enum n_arm_SbC_t {
1109 n_arm_SbC_t_left = 0,
1110 n_arm_SbC_t_right = 1,
1111 n_arm_SbC_t_flags = 2,
1114 typedef enum pn_arm_Stf {
1118 typedef enum n_arm_Stf {
1124 typedef enum pn_arm_Str {
1128 typedef enum n_arm_Str {
1134 typedef enum pn_arm_SubS {
1135 pn_arm_SubS_res = 0,
1136 pn_arm_SubS_flags = 1,
1139 typedef enum pn_arm_SubS_t {
1140 pn_arm_SubS_t_res = 0,
1141 pn_arm_SubS_t_flags = 1,
1144 typedef enum n_arm_SubS_t {
1145 n_arm_SubS_t_left = 0,
1146 n_arm_SubS_t_right = 1,
1149 typedef enum pn_arm_UMulL {
1150 pn_arm_UMulL_low = 0,
1151 pn_arm_UMulL_high = 1,
1154 typedef enum pn_arm_UMulL_t {
1155 pn_arm_UMulL_t_low = 0,
1156 pn_arm_UMulL_t_high = 1,
1159 typedef enum n_arm_UMulL_t {
1160 n_arm_UMulL_t_left = 0,
1161 n_arm_UMulL_t_right = 1,
struct dbg_info dbg_info
Source Reference.
struct ir_switch_table ir_switch_table
A switch table mapping integer numbers to proj-numbers of a Switch-node.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the node.
struct ir_op ir_op
Node Opcode.
struct ir_entity ir_entity
Entity.
struct ir_tarval ir_tarval
Target Machine Value.
ir_relation
Relations for comparing numbers.
struct ir_mode ir_mode
SSA Value mode.
struct ir_node ir_node
Procedure Graph Node.