1 #include "gen_sparc_new_nodes.h" 4 #include "sparc_bearch_t.h" 5 #include "gen_sparc_regalloc_if.h" 6 #include "sparc_new_nodes_t.h" 11 ir_op *op_sparc_Add = NULL;
12 ir_op *op_sparc_AddCC = NULL;
13 ir_op *op_sparc_AddCC_t = NULL;
14 ir_op *op_sparc_AddSP = NULL;
15 ir_op *op_sparc_AddX = NULL;
16 ir_op *op_sparc_AddX_t = NULL;
17 ir_op *op_sparc_And = NULL;
18 ir_op *op_sparc_AndCCZero = NULL;
19 ir_op *op_sparc_AndN = NULL;
20 ir_op *op_sparc_AndNCCZero = NULL;
21 ir_op *op_sparc_Ba = NULL;
22 ir_op *op_sparc_Bicc = NULL;
23 ir_op *op_sparc_Call = NULL;
24 ir_op *op_sparc_Cas = NULL;
25 ir_op *op_sparc_Cmp = NULL;
26 ir_op *op_sparc_FrameAddr = NULL;
27 ir_op *op_sparc_IJmp = NULL;
28 ir_op *op_sparc_Ld = NULL;
29 ir_op *op_sparc_Ldf = NULL;
30 ir_op *op_sparc_Or = NULL;
31 ir_op *op_sparc_OrCCZero = NULL;
32 ir_op *op_sparc_OrN = NULL;
33 ir_op *op_sparc_OrNCCZero = NULL;
34 ir_op *op_sparc_Restore = NULL;
35 ir_op *op_sparc_RestoreZero = NULL;
36 ir_op *op_sparc_Return = NULL;
37 ir_op *op_sparc_SDiv = NULL;
38 ir_op *op_sparc_SMul = NULL;
39 ir_op *op_sparc_SMulCCZero = NULL;
40 ir_op *op_sparc_SMulh = NULL;
41 ir_op *op_sparc_Save = NULL;
42 ir_op *op_sparc_SetHi = NULL;
43 ir_op *op_sparc_Sll = NULL;
44 ir_op *op_sparc_Sra = NULL;
45 ir_op *op_sparc_Srl = NULL;
46 ir_op *op_sparc_St = NULL;
47 ir_op *op_sparc_Stbar = NULL;
48 ir_op *op_sparc_Stf = NULL;
49 ir_op *op_sparc_Sub = NULL;
50 ir_op *op_sparc_SubCC = NULL;
51 ir_op *op_sparc_SubCC_t = NULL;
52 ir_op *op_sparc_SubSP = NULL;
53 ir_op *op_sparc_SubX = NULL;
54 ir_op *op_sparc_SubX_t = NULL;
55 ir_op *op_sparc_SwitchJmp = NULL;
56 ir_op *op_sparc_UDiv = NULL;
57 ir_op *op_sparc_UMulh = NULL;
58 ir_op *op_sparc_XNor = NULL;
59 ir_op *op_sparc_XNorCCZero = NULL;
60 ir_op *op_sparc_Xor = NULL;
61 ir_op *op_sparc_XorCCZero = NULL;
62 ir_op *op_sparc_fabs = NULL;
63 ir_op *op_sparc_fadd = NULL;
64 ir_op *op_sparc_fbfcc = NULL;
65 ir_op *op_sparc_fcmp = NULL;
66 ir_op *op_sparc_fdiv = NULL;
67 ir_op *op_sparc_fftof = NULL;
68 ir_op *op_sparc_fftoi = NULL;
69 ir_op *op_sparc_fitof = NULL;
70 ir_op *op_sparc_fmul = NULL;
71 ir_op *op_sparc_fneg = NULL;
72 ir_op *op_sparc_fsub = NULL;
75 static int sparc_opcode_start = -1;
78 #define sparc_op_tag FOURCC('s', 'p', 'a', 'r') 81 int is_sparc_op(
const ir_op *op)
83 return get_op_tag(op) == sparc_op_tag;
87 int is_sparc_irn(
const ir_node *node)
92 int get_sparc_irn_opcode(
const ir_node *node)
94 assert(is_sparc_irn(node));
99 #define BIT(x) (1 << (x)) 101 static const unsigned sparc_limit_gp_sp[] = { BIT(REG_GP_SP), 0 };
103 static const arch_register_req_t sparc_requirements_gp_sp_I = {
104 .cls = &sparc_reg_classes[CLASS_sparc_gp],
105 .limited = sparc_limit_gp_sp,
107 .must_be_different = 0,
112 static const arch_register_req_t sparc_requirements_gp_in_r2 = {
113 .cls = &sparc_reg_classes[CLASS_sparc_gp],
116 .must_be_different = 0,
120 static const arch_register_req_t sparc_requirements_fp_fp_2 = {
121 .cls = &sparc_reg_classes[CLASS_sparc_fp],
125 static const arch_register_req_t sparc_requirements_fp_fp_4 = {
126 .cls = &sparc_reg_classes[CLASS_sparc_fp],
134 static arch_register_req_t
const *in_reqs[] = {
135 &sparc_class_reg_req_gp,
147 arch_irn_flags_t irn_flags = arch_irn_flags_none;
148 irn_flags |= arch_irn_flag_rematerializable;
154 be_info_init_irn(res, irn_flags, in_reqs, n_res);
155 sparc_set_attr_imm(res, immediate_entity, immediate_value);
156 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
157 out_infos[0].req = &sparc_class_reg_req_gp;
165 static arch_register_req_t
const *in_reqs[] = {
166 &sparc_class_reg_req_gp,
167 &sparc_class_reg_req_gp,
180 arch_irn_flags_t irn_flags = arch_irn_flags_none;
181 irn_flags |= arch_irn_flag_rematerializable;
187 be_info_init_irn(res, irn_flags, in_reqs, n_res);
188 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
189 out_infos[0].req = &sparc_class_reg_req_gp;
197 static arch_register_req_t
const *in_reqs[] = {
198 &sparc_class_reg_req_gp,
210 arch_irn_flags_t irn_flags = arch_irn_flags_none;
211 irn_flags |= arch_irn_flag_rematerializable;
217 be_info_init_irn(res, irn_flags, in_reqs, n_res);
218 sparc_set_attr_imm(res, immediate_entity, immediate_value);
219 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
220 out_infos[0].req = &sparc_class_reg_req_gp;
221 out_infos[1].req = &sparc_class_reg_req_flags;
229 static arch_register_req_t
const *in_reqs[] = {
230 &sparc_class_reg_req_gp,
231 &sparc_class_reg_req_gp,
244 arch_irn_flags_t irn_flags = arch_irn_flags_none;
245 irn_flags |= arch_irn_flag_rematerializable;
251 be_info_init_irn(res, irn_flags, in_reqs, n_res);
252 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
253 out_infos[0].req = &sparc_class_reg_req_gp;
254 out_infos[1].req = &sparc_class_reg_req_flags;
273 arch_irn_flags_t irn_flags = arch_irn_flags_none;
277 (void)irn_flags, (
void)n_res;
285 static arch_register_req_t
const *in_reqs[] = {
286 &sparc_single_reg_req_gp_sp,
287 &sparc_class_reg_req_gp,
300 arch_irn_flags_t irn_flags = arch_irn_flags_none;
306 be_info_init_irn(res, irn_flags, in_reqs, n_res);
307 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
308 out_infos[0].req = &sparc_requirements_gp_sp_I;
316 static arch_register_req_t
const *in_reqs[] = {
317 &sparc_class_reg_req_gp,
318 &sparc_class_reg_req_flags,
331 arch_irn_flags_t irn_flags = arch_irn_flags_none;
337 be_info_init_irn(res, irn_flags, in_reqs, n_res);
338 sparc_set_attr_imm(res, immediate_entity, immediate_value);
339 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
340 out_infos[0].req = &sparc_class_reg_req_gp;
348 static arch_register_req_t
const *in_reqs[] = {
349 &sparc_class_reg_req_gp,
350 &sparc_class_reg_req_gp,
351 &sparc_class_reg_req_flags,
365 arch_irn_flags_t irn_flags = arch_irn_flags_none;
371 be_info_init_irn(res, irn_flags, in_reqs, n_res);
372 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
373 out_infos[0].req = &sparc_class_reg_req_gp;
393 arch_irn_flags_t irn_flags = arch_irn_flags_none;
397 (void)irn_flags, (
void)n_res;
405 static arch_register_req_t
const *in_reqs[] = {
406 &sparc_class_reg_req_gp,
418 arch_irn_flags_t irn_flags = arch_irn_flags_none;
419 irn_flags |= arch_irn_flag_rematerializable;
425 be_info_init_irn(res, irn_flags, in_reqs, n_res);
426 sparc_set_attr_imm(res, immediate_entity, immediate_value);
427 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
428 out_infos[0].req = &sparc_class_reg_req_gp;
436 static arch_register_req_t
const *in_reqs[] = {
437 &sparc_class_reg_req_gp,
438 &sparc_class_reg_req_gp,
451 arch_irn_flags_t irn_flags = arch_irn_flags_none;
452 irn_flags |= arch_irn_flag_rematerializable;
458 be_info_init_irn(res, irn_flags, in_reqs, n_res);
459 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
460 out_infos[0].req = &sparc_class_reg_req_gp;
468 static arch_register_req_t
const *in_reqs[] = {
469 &sparc_class_reg_req_gp,
481 arch_irn_flags_t irn_flags = arch_irn_flags_none;
482 irn_flags |= arch_irn_flag_rematerializable;
488 be_info_init_irn(res, irn_flags, in_reqs, n_res);
489 sparc_set_attr_imm(res, immediate_entity, immediate_value);
490 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
491 out_infos[0].req = &sparc_class_reg_req_flags;
499 static arch_register_req_t
const *in_reqs[] = {
500 &sparc_class_reg_req_gp,
501 &sparc_class_reg_req_gp,
514 arch_irn_flags_t irn_flags = arch_irn_flags_none;
515 irn_flags |= arch_irn_flag_rematerializable;
521 be_info_init_irn(res, irn_flags, in_reqs, n_res);
522 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
523 out_infos[0].req = &sparc_class_reg_req_flags;
531 static arch_register_req_t
const *in_reqs[] = {
532 &sparc_class_reg_req_gp,
544 arch_irn_flags_t irn_flags = arch_irn_flags_none;
545 irn_flags |= arch_irn_flag_rematerializable;
551 be_info_init_irn(res, irn_flags, in_reqs, n_res);
552 sparc_set_attr_imm(res, immediate_entity, immediate_value);
553 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
554 out_infos[0].req = &sparc_class_reg_req_gp;
562 static arch_register_req_t
const *in_reqs[] = {
563 &sparc_class_reg_req_gp,
564 &sparc_class_reg_req_gp,
577 arch_irn_flags_t irn_flags = arch_irn_flags_none;
578 irn_flags |= arch_irn_flag_rematerializable;
584 be_info_init_irn(res, irn_flags, in_reqs, n_res);
585 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
586 out_infos[0].req = &sparc_class_reg_req_gp;
594 static arch_register_req_t
const *in_reqs[] = {
595 &sparc_class_reg_req_gp,
607 arch_irn_flags_t irn_flags = arch_irn_flags_none;
608 irn_flags |= arch_irn_flag_rematerializable;
614 be_info_init_irn(res, irn_flags, in_reqs, n_res);
615 sparc_set_attr_imm(res, immediate_entity, immediate_value);
616 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
617 out_infos[0].req = &sparc_class_reg_req_flags;
625 static arch_register_req_t
const *in_reqs[] = {
626 &sparc_class_reg_req_gp,
627 &sparc_class_reg_req_gp,
640 arch_irn_flags_t irn_flags = arch_irn_flags_none;
641 irn_flags |= arch_irn_flag_rematerializable;
647 be_info_init_irn(res, irn_flags, in_reqs, n_res);
648 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
649 out_infos[0].req = &sparc_class_reg_req_flags;
657 arch_register_req_t
const **
const in_reqs = NULL;
664 arch_irn_flags_t irn_flags = arch_irn_flags_none;
665 irn_flags |= arch_irn_flag_simple_jump;
671 be_info_init_irn(res, irn_flags, in_reqs, n_res);
672 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
673 out_infos[0].req = &arch_exec_requirement;
681 static arch_register_req_t
const *in_reqs[] = {
682 &sparc_class_reg_req_flags,
694 arch_irn_flags_t irn_flags = arch_irn_flags_none;
695 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
701 be_info_init_irn(res, irn_flags, in_reqs, n_res);
702 init_sparc_jmp_cond_attr(res, relation, is_unsigned);
703 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
704 out_infos[0].req = &arch_exec_requirement;
705 out_infos[1].req = &arch_exec_requirement;
711 ir_node *new_bd_sparc_Call_imm(
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_type *call_type,
ir_entity *entity, int32_t offset,
bool aggregate_return)
719 arch_irn_flags_t irn_flags = arch_irn_flags_none;
720 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
725 be_info_init_irn(res, irn_flags, in_reqs, n_res);
726 init_sparc_call_attributes(res, call_type);
727 sparc_set_attr_imm(res, entity, offset);
728 if (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);
734 ir_node *new_bd_sparc_Call_reg(
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_type *call_type,
bool aggregate_return)
742 arch_irn_flags_t irn_flags = arch_irn_flags_none;
743 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
748 be_info_init_irn(res, irn_flags, in_reqs, n_res);
749 init_sparc_call_attributes(res, call_type);
750 if (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);
758 static arch_register_req_t
const *in_reqs[] = {
759 &sparc_class_reg_req_gp,
760 &sparc_class_reg_req_gp,
761 &sparc_class_reg_req_gp,
762 &arch_memory_requirement,
777 arch_irn_flags_t irn_flags = arch_irn_flags_none;
783 be_info_init_irn(res, irn_flags, in_reqs, n_res);
784 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
785 out_infos[0].req = &sparc_requirements_gp_in_r2;
786 out_infos[1].req = &arch_memory_requirement;
794 static arch_register_req_t
const *in_reqs[] = {
795 &sparc_class_reg_req_gp,
807 arch_irn_flags_t irn_flags = arch_irn_flags_none;
808 irn_flags |= arch_irn_flag_rematerializable;
814 be_info_init_irn(res, irn_flags, in_reqs, n_res);
815 sparc_set_attr_imm(res, immediate_entity, immediate_value);
816 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
817 out_infos[0].req = &sparc_class_reg_req_flags;
825 static arch_register_req_t
const *in_reqs[] = {
826 &sparc_class_reg_req_gp,
827 &sparc_class_reg_req_gp,
840 arch_irn_flags_t irn_flags = arch_irn_flags_none;
841 irn_flags |= arch_irn_flag_rematerializable;
847 be_info_init_irn(res, irn_flags, in_reqs, n_res);
848 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
849 out_infos[0].req = &sparc_class_reg_req_flags;
857 static arch_register_req_t
const *in_reqs[] = {
858 &sparc_class_reg_req_gp,
870 arch_irn_flags_t irn_flags = arch_irn_flags_none;
871 irn_flags |= arch_irn_flag_rematerializable;
877 be_info_init_irn(res, irn_flags, in_reqs, n_res);
878 sparc_set_attr_imm(res, entity, offset);
879 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
880 out_infos[0].req = &sparc_class_reg_req_gp;
888 static arch_register_req_t
const *in_reqs[] = {
889 &sparc_class_reg_req_gp,
901 arch_irn_flags_t irn_flags = arch_irn_flags_none;
902 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
908 be_info_init_irn(res, irn_flags, in_reqs, n_res);
909 init_sparc_load_store_attributes(res, NULL, entity, offset, is_frame_entity,
false);
910 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
911 out_infos[0].req = &arch_exec_requirement;
919 static arch_register_req_t
const *in_reqs[] = {
920 &sparc_class_reg_req_gp,
921 &sparc_class_reg_req_gp,
934 arch_irn_flags_t irn_flags = arch_irn_flags_none;
935 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
941 be_info_init_irn(res, irn_flags, in_reqs, n_res);
942 init_sparc_load_store_attributes(res, NULL, NULL, 0,
false,
true);
943 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
944 out_infos[0].req = &arch_exec_requirement;
952 static arch_register_req_t
const *in_reqs[] = {
953 &sparc_class_reg_req_gp,
954 &arch_memory_requirement,
967 arch_irn_flags_t irn_flags = arch_irn_flags_none;
973 be_info_init_irn(res, irn_flags, in_reqs, n_res);
974 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
975 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
976 out_infos[0].req = &sparc_class_reg_req_gp;
977 out_infos[1].req = &arch_memory_requirement;
985 static arch_register_req_t
const *in_reqs[] = {
986 &sparc_class_reg_req_gp,
987 &sparc_class_reg_req_gp,
988 &arch_memory_requirement,
1002 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1005 int const n_res = 2;
1008 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1009 init_sparc_load_store_attributes(res, ls_mode, NULL, 0,
false,
true);
1010 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1011 out_infos[0].req = &sparc_class_reg_req_gp;
1012 out_infos[1].req = &arch_memory_requirement;
1020 static arch_register_req_t
const *in_reqs[] = {
1021 &sparc_class_reg_req_gp,
1022 &arch_memory_requirement,
1035 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1038 int const n_res = 2;
1041 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1042 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1043 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1044 out_infos[0].req = &sparc_requirements_fp_fp_2;
1045 out_infos[1].req = &arch_memory_requirement;
1053 static arch_register_req_t
const *in_reqs[] = {
1054 &sparc_class_reg_req_gp,
1055 &arch_memory_requirement,
1068 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1071 int const n_res = 2;
1074 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1075 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1076 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1077 out_infos[0].req = &sparc_requirements_fp_fp_4;
1078 out_infos[1].req = &arch_memory_requirement;
1086 static arch_register_req_t
const *in_reqs[] = {
1087 &sparc_class_reg_req_gp,
1088 &arch_memory_requirement,
1101 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1104 int const n_res = 2;
1107 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1108 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1109 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1110 out_infos[0].req = &sparc_class_reg_req_fp;
1111 out_infos[1].req = &arch_memory_requirement;
1119 static arch_register_req_t
const *in_reqs[] = {
1120 &sparc_class_reg_req_gp,
1132 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1133 irn_flags |= arch_irn_flag_rematerializable;
1136 int const n_res = 1;
1139 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1140 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1141 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1142 out_infos[0].req = &sparc_class_reg_req_gp;
1150 static arch_register_req_t
const *in_reqs[] = {
1151 &sparc_class_reg_req_gp,
1152 &sparc_class_reg_req_gp,
1165 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1166 irn_flags |= arch_irn_flag_rematerializable;
1169 int const n_res = 1;
1172 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1173 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1174 out_infos[0].req = &sparc_class_reg_req_gp;
1182 static arch_register_req_t
const *in_reqs[] = {
1183 &sparc_class_reg_req_gp,
1195 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1196 irn_flags |= arch_irn_flag_rematerializable;
1199 int const n_res = 1;
1202 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1203 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1204 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1205 out_infos[0].req = &sparc_class_reg_req_flags;
1213 static arch_register_req_t
const *in_reqs[] = {
1214 &sparc_class_reg_req_gp,
1215 &sparc_class_reg_req_gp,
1228 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1229 irn_flags |= arch_irn_flag_rematerializable;
1232 int const n_res = 1;
1235 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1236 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1237 out_infos[0].req = &sparc_class_reg_req_flags;
1245 static arch_register_req_t
const *in_reqs[] = {
1246 &sparc_class_reg_req_gp,
1258 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1259 irn_flags |= arch_irn_flag_rematerializable;
1262 int const n_res = 1;
1265 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1266 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1267 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1268 out_infos[0].req = &sparc_class_reg_req_gp;
1276 static arch_register_req_t
const *in_reqs[] = {
1277 &sparc_class_reg_req_gp,
1278 &sparc_class_reg_req_gp,
1291 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1292 irn_flags |= arch_irn_flag_rematerializable;
1295 int const n_res = 1;
1298 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1299 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1300 out_infos[0].req = &sparc_class_reg_req_gp;
1308 static arch_register_req_t
const *in_reqs[] = {
1309 &sparc_class_reg_req_gp,
1321 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1322 irn_flags |= arch_irn_flag_rematerializable;
1325 int const n_res = 1;
1328 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1329 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1330 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1331 out_infos[0].req = &sparc_class_reg_req_flags;
1339 static arch_register_req_t
const *in_reqs[] = {
1340 &sparc_class_reg_req_gp,
1341 &sparc_class_reg_req_gp,
1354 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1355 irn_flags |= arch_irn_flag_rematerializable;
1358 int const n_res = 1;
1361 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1362 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1363 out_infos[0].req = &sparc_class_reg_req_flags;
1371 static arch_register_req_t
const *in_reqs[] = {
1372 &sparc_single_reg_req_gp_sp,
1373 &sparc_single_reg_req_gp_fp,
1374 &sparc_class_reg_req_gp,
1388 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1391 int const n_res = 2;
1394 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1395 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1396 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1397 out_infos[0].req = &sparc_requirements_gp_sp_I;
1398 out_infos[1].req = &sparc_class_reg_req_gp;
1406 static arch_register_req_t
const *in_reqs[] = {
1407 &sparc_single_reg_req_gp_sp,
1408 &sparc_single_reg_req_gp_fp,
1409 &sparc_class_reg_req_gp,
1410 &sparc_class_reg_req_gp,
1425 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1428 int const n_res = 2;
1431 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1432 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1433 out_infos[0].req = &sparc_requirements_gp_sp_I;
1434 out_infos[1].req = &sparc_class_reg_req_gp;
1442 static arch_register_req_t
const *in_reqs[] = {
1443 &sparc_single_reg_req_gp_sp,
1444 &sparc_single_reg_req_gp_fp,
1457 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1460 int const n_res = 1;
1463 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1464 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1465 out_infos[0].req = &sparc_requirements_gp_sp_I;
1471 ir_node *new_bd_sparc_Return_imm(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs,
ir_entity *entity, int32_t offset)
1479 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1480 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1483 int const n_res = 1;
1486 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1487 sparc_set_attr_imm(res, entity, offset);
1488 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1489 out_infos[0].req = &arch_exec_requirement;
1495 ir_node *new_bd_sparc_Return_reg(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs)
1503 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1504 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1507 int const n_res = 1;
1510 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1511 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1512 out_infos[0].req = &arch_exec_requirement;
1520 static arch_register_req_t
const *in_reqs[] = {
1521 &arch_memory_requirement,
1522 &sparc_class_reg_req_gp,
1523 &sparc_class_reg_req_gp,
1537 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1538 irn_flags |= arch_irn_flag_rematerializable;
1539 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1542 int const n_res = 2;
1545 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1546 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1547 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1548 out_infos[0].req = &sparc_class_reg_req_gp;
1549 out_infos[1].req = &arch_memory_requirement;
1557 static arch_register_req_t
const *in_reqs[] = {
1558 &arch_memory_requirement,
1559 &sparc_class_reg_req_gp,
1560 &sparc_class_reg_req_gp,
1561 &sparc_class_reg_req_gp,
1576 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1577 irn_flags |= arch_irn_flag_rematerializable;
1578 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1581 int const n_res = 2;
1584 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1585 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1586 out_infos[0].req = &sparc_class_reg_req_gp;
1587 out_infos[1].req = &arch_memory_requirement;
1595 static arch_register_req_t
const *in_reqs[] = {
1596 &sparc_class_reg_req_gp,
1608 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1609 irn_flags |= arch_irn_flag_rematerializable;
1612 int const n_res = 1;
1615 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1616 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1617 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1618 out_infos[0].req = &sparc_class_reg_req_gp;
1626 static arch_register_req_t
const *in_reqs[] = {
1627 &sparc_class_reg_req_gp,
1628 &sparc_class_reg_req_gp,
1641 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1642 irn_flags |= arch_irn_flag_rematerializable;
1645 int const n_res = 1;
1648 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1649 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1650 out_infos[0].req = &sparc_class_reg_req_gp;
1658 static arch_register_req_t
const *in_reqs[] = {
1659 &sparc_class_reg_req_gp,
1671 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1672 irn_flags |= arch_irn_flag_rematerializable;
1675 int const n_res = 1;
1678 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1679 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1680 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1681 out_infos[0].req = &sparc_class_reg_req_flags;
1689 static arch_register_req_t
const *in_reqs[] = {
1690 &sparc_class_reg_req_gp,
1691 &sparc_class_reg_req_gp,
1704 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1705 irn_flags |= arch_irn_flag_rematerializable;
1708 int const n_res = 1;
1711 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1712 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1713 out_infos[0].req = &sparc_class_reg_req_flags;
1721 static arch_register_req_t
const *in_reqs[] = {
1722 &sparc_class_reg_req_gp,
1734 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1735 irn_flags |= arch_irn_flag_rematerializable;
1738 int const n_res = 1;
1741 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1742 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1743 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1744 out_infos[0].req = &sparc_class_reg_req_gp;
1752 static arch_register_req_t
const *in_reqs[] = {
1753 &sparc_class_reg_req_gp,
1754 &sparc_class_reg_req_gp,
1767 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1768 irn_flags |= arch_irn_flag_rematerializable;
1771 int const n_res = 1;
1774 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1775 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1776 out_infos[0].req = &sparc_class_reg_req_gp;
1784 static arch_register_req_t
const *in_reqs[] = {
1785 &sparc_single_reg_req_gp_sp,
1797 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1798 irn_flags |= arch_irn_flag_schedule_first;
1801 int const n_res = 1;
1804 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1805 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1806 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1807 out_infos[0].req = &sparc_requirements_gp_sp_I;
1815 static arch_register_req_t
const *in_reqs[] = {
1816 &sparc_single_reg_req_gp_sp,
1817 &sparc_class_reg_req_gp,
1830 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1831 irn_flags |= arch_irn_flag_schedule_first;
1834 int const n_res = 1;
1837 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1838 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1839 out_infos[0].req = &sparc_requirements_gp_sp_I;
1847 arch_register_req_t
const **
const in_reqs = NULL;
1854 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1855 irn_flags |= arch_irn_flag_rematerializable;
1858 int const n_res = 1;
1861 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1862 sparc_set_attr_imm(res, entity, immediate_value);
1863 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1864 out_infos[0].req = &sparc_class_reg_req_gp;
1872 static arch_register_req_t
const *in_reqs[] = {
1873 &sparc_class_reg_req_gp,
1885 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1886 irn_flags |= arch_irn_flag_rematerializable;
1889 int const n_res = 1;
1892 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1893 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1894 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1895 out_infos[0].req = &sparc_class_reg_req_gp;
1903 static arch_register_req_t
const *in_reqs[] = {
1904 &sparc_class_reg_req_gp,
1905 &sparc_class_reg_req_gp,
1918 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1919 irn_flags |= arch_irn_flag_rematerializable;
1922 int const n_res = 1;
1925 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1926 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1927 out_infos[0].req = &sparc_class_reg_req_gp;
1935 static arch_register_req_t
const *in_reqs[] = {
1936 &sparc_class_reg_req_gp,
1948 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1949 irn_flags |= arch_irn_flag_rematerializable;
1952 int const n_res = 1;
1955 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1956 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1957 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1958 out_infos[0].req = &sparc_class_reg_req_gp;
1966 static arch_register_req_t
const *in_reqs[] = {
1967 &sparc_class_reg_req_gp,
1968 &sparc_class_reg_req_gp,
1981 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1982 irn_flags |= arch_irn_flag_rematerializable;
1985 int const n_res = 1;
1988 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1989 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1990 out_infos[0].req = &sparc_class_reg_req_gp;
1998 static arch_register_req_t
const *in_reqs[] = {
1999 &sparc_class_reg_req_gp,
2011 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2012 irn_flags |= arch_irn_flag_rematerializable;
2015 int const n_res = 1;
2018 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2019 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2020 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2021 out_infos[0].req = &sparc_class_reg_req_gp;
2029 static arch_register_req_t
const *in_reqs[] = {
2030 &sparc_class_reg_req_gp,
2031 &sparc_class_reg_req_gp,
2044 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2045 irn_flags |= arch_irn_flag_rematerializable;
2048 int const n_res = 1;
2051 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2052 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2053 out_infos[0].req = &sparc_class_reg_req_gp;
2061 static arch_register_req_t
const *in_reqs[] = {
2062 &sparc_class_reg_req_gp,
2063 &sparc_class_reg_req_gp,
2064 &arch_memory_requirement,
2078 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2081 int const n_res = 1;
2084 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2085 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2086 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2087 out_infos[0].req = &arch_memory_requirement;
2095 static arch_register_req_t
const *in_reqs[] = {
2096 &sparc_class_reg_req_gp,
2097 &sparc_class_reg_req_gp,
2098 &sparc_class_reg_req_gp,
2099 &arch_memory_requirement,
2114 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2117 int const n_res = 1;
2120 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2121 init_sparc_load_store_attributes(res, ls_mode, NULL, 0,
false,
true);
2122 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2123 out_infos[0].req = &arch_memory_requirement;
2131 static arch_register_req_t
const *in_reqs[] = {
2132 &arch_memory_requirement,
2144 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2147 int const n_res = 1;
2150 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2151 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2152 out_infos[0].req = &arch_memory_requirement;
2160 static arch_register_req_t
const *in_reqs[] = {
2161 &sparc_requirements_fp_fp_2,
2162 &sparc_class_reg_req_gp,
2163 &arch_memory_requirement,
2177 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2180 int const n_res = 1;
2183 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2184 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2185 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2186 out_infos[0].req = &arch_memory_requirement;
2194 static arch_register_req_t
const *in_reqs[] = {
2195 &sparc_requirements_fp_fp_4,
2196 &sparc_class_reg_req_gp,
2197 &arch_memory_requirement,
2211 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2214 int const n_res = 1;
2217 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2218 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2219 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2220 out_infos[0].req = &arch_memory_requirement;
2228 static arch_register_req_t
const *in_reqs[] = {
2229 &sparc_class_reg_req_fp,
2230 &sparc_class_reg_req_gp,
2231 &arch_memory_requirement,
2245 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2248 int const n_res = 1;
2251 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2252 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2253 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2254 out_infos[0].req = &arch_memory_requirement;
2262 static arch_register_req_t
const *in_reqs[] = {
2263 &sparc_class_reg_req_gp,
2275 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2276 irn_flags |= arch_irn_flag_rematerializable;
2279 int const n_res = 1;
2282 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2283 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2284 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2285 out_infos[0].req = &sparc_class_reg_req_gp;
2293 static arch_register_req_t
const *in_reqs[] = {
2294 &sparc_class_reg_req_gp,
2295 &sparc_class_reg_req_gp,
2308 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2309 irn_flags |= arch_irn_flag_rematerializable;
2312 int const n_res = 1;
2315 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2316 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2317 out_infos[0].req = &sparc_class_reg_req_gp;
2325 static arch_register_req_t
const *in_reqs[] = {
2326 &sparc_class_reg_req_gp,
2338 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2339 irn_flags |= arch_irn_flag_rematerializable;
2342 int const n_res = 2;
2345 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2346 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2347 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2348 out_infos[0].req = &sparc_class_reg_req_gp;
2349 out_infos[1].req = &sparc_class_reg_req_flags;
2357 static arch_register_req_t
const *in_reqs[] = {
2358 &sparc_class_reg_req_gp,
2359 &sparc_class_reg_req_gp,
2372 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2373 irn_flags |= arch_irn_flag_rematerializable;
2376 int const n_res = 2;
2379 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2380 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2381 out_infos[0].req = &sparc_class_reg_req_gp;
2382 out_infos[1].req = &sparc_class_reg_req_flags;
2401 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2404 int const n_res = 2;
2405 (void)irn_flags, (
void)n_res;
2413 static arch_register_req_t
const *in_reqs[] = {
2414 &sparc_single_reg_req_gp_sp,
2415 &arch_memory_requirement,
2428 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2431 int const n_res = 3;
2434 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2435 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2436 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2437 out_infos[0].req = &sparc_requirements_gp_sp_I;
2438 out_infos[1].req = &sparc_class_reg_req_gp;
2439 out_infos[2].req = &arch_memory_requirement;
2447 static arch_register_req_t
const *in_reqs[] = {
2448 &sparc_single_reg_req_gp_sp,
2449 &sparc_class_reg_req_gp,
2450 &arch_memory_requirement,
2464 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2467 int const n_res = 3;
2470 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2471 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2472 out_infos[0].req = &sparc_requirements_gp_sp_I;
2473 out_infos[1].req = &sparc_class_reg_req_gp;
2474 out_infos[2].req = &arch_memory_requirement;
2482 static arch_register_req_t
const *in_reqs[] = {
2483 &sparc_class_reg_req_gp,
2484 &sparc_class_reg_req_flags,
2497 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2500 int const n_res = 1;
2503 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2504 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2505 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2506 out_infos[0].req = &sparc_class_reg_req_gp;
2514 static arch_register_req_t
const *in_reqs[] = {
2515 &sparc_class_reg_req_gp,
2516 &sparc_class_reg_req_gp,
2517 &sparc_class_reg_req_flags,
2531 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2534 int const n_res = 1;
2537 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2538 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2539 out_infos[0].req = &sparc_class_reg_req_gp;
2559 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2562 int const n_res = 0;
2563 (void)irn_flags, (
void)n_res;
2571 static arch_register_req_t
const *in_reqs[] = {
2572 &sparc_class_reg_req_gp,
2584 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2585 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2590 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2591 be_switch_attr_init(res, &attr->swtch, table, jump_table);
2600 static arch_register_req_t
const *in_reqs[] = {
2601 &arch_memory_requirement,
2602 &sparc_class_reg_req_gp,
2603 &sparc_class_reg_req_gp,
2617 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2618 irn_flags |= arch_irn_flag_rematerializable;
2619 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2622 int const n_res = 2;
2625 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2626 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2627 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2628 out_infos[0].req = &sparc_class_reg_req_gp;
2629 out_infos[1].req = &arch_memory_requirement;
2637 static arch_register_req_t
const *in_reqs[] = {
2638 &arch_memory_requirement,
2639 &sparc_class_reg_req_gp,
2640 &sparc_class_reg_req_gp,
2641 &sparc_class_reg_req_gp,
2656 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2657 irn_flags |= arch_irn_flag_rematerializable;
2658 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2661 int const n_res = 2;
2664 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2665 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2666 out_infos[0].req = &sparc_class_reg_req_gp;
2667 out_infos[1].req = &arch_memory_requirement;
2675 static arch_register_req_t
const *in_reqs[] = {
2676 &sparc_class_reg_req_gp,
2688 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2689 irn_flags |= arch_irn_flag_rematerializable;
2692 int const n_res = 1;
2695 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2696 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2697 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2698 out_infos[0].req = &sparc_class_reg_req_gp;
2706 static arch_register_req_t
const *in_reqs[] = {
2707 &sparc_class_reg_req_gp,
2708 &sparc_class_reg_req_gp,
2721 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2722 irn_flags |= arch_irn_flag_rematerializable;
2725 int const n_res = 1;
2728 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2729 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2730 out_infos[0].req = &sparc_class_reg_req_gp;
2738 static arch_register_req_t
const *in_reqs[] = {
2739 &sparc_class_reg_req_gp,
2751 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2752 irn_flags |= arch_irn_flag_rematerializable;
2755 int const n_res = 1;
2758 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2759 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2760 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2761 out_infos[0].req = &sparc_class_reg_req_gp;
2769 static arch_register_req_t
const *in_reqs[] = {
2770 &sparc_class_reg_req_gp,
2771 &sparc_class_reg_req_gp,
2784 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2785 irn_flags |= arch_irn_flag_rematerializable;
2788 int const n_res = 1;
2791 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2792 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2793 out_infos[0].req = &sparc_class_reg_req_gp;
2801 static arch_register_req_t
const *in_reqs[] = {
2802 &sparc_class_reg_req_gp,
2814 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2815 irn_flags |= arch_irn_flag_rematerializable;
2818 int const n_res = 1;
2821 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2822 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2823 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2824 out_infos[0].req = &sparc_class_reg_req_flags;
2832 static arch_register_req_t
const *in_reqs[] = {
2833 &sparc_class_reg_req_gp,
2834 &sparc_class_reg_req_gp,
2847 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2848 irn_flags |= arch_irn_flag_rematerializable;
2851 int const n_res = 1;
2854 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2855 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2856 out_infos[0].req = &sparc_class_reg_req_flags;
2864 static arch_register_req_t
const *in_reqs[] = {
2865 &sparc_class_reg_req_gp,
2877 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2878 irn_flags |= arch_irn_flag_rematerializable;
2881 int const n_res = 1;
2884 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2885 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2886 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2887 out_infos[0].req = &sparc_class_reg_req_gp;
2895 static arch_register_req_t
const *in_reqs[] = {
2896 &sparc_class_reg_req_gp,
2897 &sparc_class_reg_req_gp,
2910 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2911 irn_flags |= arch_irn_flag_rematerializable;
2914 int const n_res = 1;
2917 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2918 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2919 out_infos[0].req = &sparc_class_reg_req_gp;
2927 static arch_register_req_t
const *in_reqs[] = {
2928 &sparc_class_reg_req_gp,
2940 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2941 irn_flags |= arch_irn_flag_rematerializable;
2944 int const n_res = 1;
2947 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2948 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2949 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2950 out_infos[0].req = &sparc_class_reg_req_flags;
2958 static arch_register_req_t
const *in_reqs[] = {
2959 &sparc_class_reg_req_gp,
2960 &sparc_class_reg_req_gp,
2973 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2974 irn_flags |= arch_irn_flag_rematerializable;
2977 int const n_res = 1;
2980 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2981 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2982 out_infos[0].req = &sparc_class_reg_req_flags;
2990 static arch_register_req_t
const *in_reqs[] = {
2991 &sparc_requirements_fp_fp_2,
3003 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3004 irn_flags |= arch_irn_flag_rematerializable;
3007 int const n_res = 1;
3010 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3011 init_sparc_fp_attributes(res, fp_mode);
3013 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3014 out_infos[0].req = &sparc_requirements_fp_fp_2;
3022 static arch_register_req_t
const *in_reqs[] = {
3023 &sparc_requirements_fp_fp_4,
3032 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fabs, sparc_mode_Q, 1, in);
3035 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3036 irn_flags |= arch_irn_flag_rematerializable;
3039 int const n_res = 1;
3042 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3043 init_sparc_fp_attributes(res, fp_mode);
3045 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3046 out_infos[0].req = &sparc_requirements_fp_fp_4;
3054 static arch_register_req_t
const *in_reqs[] = {
3055 &sparc_class_reg_req_fp,
3067 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3068 irn_flags |= arch_irn_flag_rematerializable;
3071 int const n_res = 1;
3074 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3075 init_sparc_fp_attributes(res, fp_mode);
3077 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3078 out_infos[0].req = &sparc_class_reg_req_fp;
3086 static arch_register_req_t
const *in_reqs[] = {
3087 &sparc_requirements_fp_fp_2,
3088 &sparc_requirements_fp_fp_2,
3101 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3102 irn_flags |= arch_irn_flag_rematerializable;
3105 int const n_res = 1;
3108 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3109 init_sparc_fp_attributes(res, fp_mode);
3111 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3112 out_infos[0].req = &sparc_requirements_fp_fp_2;
3120 static arch_register_req_t
const *in_reqs[] = {
3121 &sparc_requirements_fp_fp_4,
3122 &sparc_requirements_fp_fp_4,
3132 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fadd, sparc_mode_Q, 2, in);
3135 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3136 irn_flags |= arch_irn_flag_rematerializable;
3139 int const n_res = 1;
3142 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3143 init_sparc_fp_attributes(res, fp_mode);
3145 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3146 out_infos[0].req = &sparc_requirements_fp_fp_4;
3154 static arch_register_req_t
const *in_reqs[] = {
3155 &sparc_class_reg_req_fp,
3156 &sparc_class_reg_req_fp,
3169 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3170 irn_flags |= arch_irn_flag_rematerializable;
3173 int const n_res = 1;
3176 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3177 init_sparc_fp_attributes(res, fp_mode);
3179 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3180 out_infos[0].req = &sparc_class_reg_req_fp;
3188 static arch_register_req_t
const *in_reqs[] = {
3189 &sparc_class_reg_req_fpflags,
3201 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3202 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
3205 int const n_res = 2;
3208 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3209 init_sparc_jmp_cond_attr(res, relation,
false);
3210 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3211 out_infos[0].req = &arch_exec_requirement;
3212 out_infos[1].req = &arch_exec_requirement;
3220 static arch_register_req_t
const *in_reqs[] = {
3221 &sparc_requirements_fp_fp_2,
3222 &sparc_requirements_fp_fp_2,
3235 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3236 irn_flags |= arch_irn_flag_rematerializable;
3239 int const n_res = 1;
3242 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3243 init_sparc_fp_attributes(res, fp_mode);
3245 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3246 out_infos[0].req = &sparc_class_reg_req_fpflags;
3254 static arch_register_req_t
const *in_reqs[] = {
3255 &sparc_requirements_fp_fp_4,
3256 &sparc_requirements_fp_fp_4,
3269 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3270 irn_flags |= arch_irn_flag_rematerializable;
3273 int const n_res = 1;
3276 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3277 init_sparc_fp_attributes(res, fp_mode);
3279 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3280 out_infos[0].req = &sparc_class_reg_req_fpflags;
3288 static arch_register_req_t
const *in_reqs[] = {
3289 &sparc_class_reg_req_fp,
3290 &sparc_class_reg_req_fp,
3303 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3304 irn_flags |= arch_irn_flag_rematerializable;
3307 int const n_res = 1;
3310 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3311 init_sparc_fp_attributes(res, fp_mode);
3313 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3314 out_infos[0].req = &sparc_class_reg_req_fpflags;
3322 static arch_register_req_t
const *in_reqs[] = {
3323 &sparc_requirements_fp_fp_2,
3324 &sparc_requirements_fp_fp_2,
3337 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3338 irn_flags |= arch_irn_flag_rematerializable;
3341 int const n_res = 2;
3344 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3345 init_sparc_fp_attributes(res, fp_mode);
3347 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3348 out_infos[0].req = &sparc_requirements_fp_fp_2;
3349 out_infos[1].req = &arch_memory_requirement;
3357 static arch_register_req_t
const *in_reqs[] = {
3358 &sparc_requirements_fp_fp_4,
3359 &sparc_requirements_fp_fp_4,
3372 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3373 irn_flags |= arch_irn_flag_rematerializable;
3376 int const n_res = 2;
3379 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3380 init_sparc_fp_attributes(res, fp_mode);
3382 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3383 out_infos[0].req = &sparc_requirements_fp_fp_4;
3384 out_infos[1].req = &arch_memory_requirement;
3392 static arch_register_req_t
const *in_reqs[] = {
3393 &sparc_class_reg_req_fp,
3394 &sparc_class_reg_req_fp,
3407 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3408 irn_flags |= arch_irn_flag_rematerializable;
3411 int const n_res = 2;
3414 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3415 init_sparc_fp_attributes(res, fp_mode);
3417 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3418 out_infos[0].req = &sparc_class_reg_req_fp;
3419 out_infos[1].req = &arch_memory_requirement;
3427 static arch_register_req_t
const *in_reqs[] = {
3428 &sparc_requirements_fp_fp_2,
3437 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fftof, sparc_mode_Q, 1, in);
3440 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3441 irn_flags |= arch_irn_flag_rematerializable;
3444 int const n_res = 1;
3447 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3448 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3450 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3451 out_infos[0].req = &sparc_requirements_fp_fp_4;
3459 static arch_register_req_t
const *in_reqs[] = {
3460 &sparc_requirements_fp_fp_2,
3472 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3473 irn_flags |= arch_irn_flag_rematerializable;
3476 int const n_res = 1;
3479 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3480 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3482 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3483 out_infos[0].req = &sparc_class_reg_req_fp;
3491 static arch_register_req_t
const *in_reqs[] = {
3492 &sparc_requirements_fp_fp_4,
3504 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3505 irn_flags |= arch_irn_flag_rematerializable;
3508 int const n_res = 1;
3511 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3512 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3514 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3515 out_infos[0].req = &sparc_requirements_fp_fp_2;
3523 static arch_register_req_t
const *in_reqs[] = {
3524 &sparc_requirements_fp_fp_4,
3536 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3537 irn_flags |= arch_irn_flag_rematerializable;
3540 int const n_res = 1;
3543 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3544 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3546 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3547 out_infos[0].req = &sparc_class_reg_req_fp;
3555 static arch_register_req_t
const *in_reqs[] = {
3556 &sparc_class_reg_req_fp,
3568 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3569 irn_flags |= arch_irn_flag_rematerializable;
3572 int const n_res = 1;
3575 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3576 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3578 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3579 out_infos[0].req = &sparc_requirements_fp_fp_2;
3587 static arch_register_req_t
const *in_reqs[] = {
3588 &sparc_class_reg_req_fp,
3597 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fftof, sparc_mode_Q, 1, in);
3600 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3601 irn_flags |= arch_irn_flag_rematerializable;
3604 int const n_res = 1;
3607 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3608 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3610 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3611 out_infos[0].req = &sparc_requirements_fp_fp_2;
3619 static arch_register_req_t
const *in_reqs[] = {
3620 &sparc_requirements_fp_fp_2,
3632 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3633 irn_flags |= arch_irn_flag_rematerializable;
3636 int const n_res = 1;
3639 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3640 init_sparc_fp_attributes(res, fp_mode);
3642 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3643 out_infos[0].req = &sparc_class_reg_req_fp;
3651 static arch_register_req_t
const *in_reqs[] = {
3652 &sparc_requirements_fp_fp_4,
3664 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3665 irn_flags |= arch_irn_flag_rematerializable;
3668 int const n_res = 1;
3671 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3672 init_sparc_fp_attributes(res, fp_mode);
3674 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3675 out_infos[0].req = &sparc_class_reg_req_fp;
3683 static arch_register_req_t
const *in_reqs[] = {
3684 &sparc_class_reg_req_fp,
3696 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3697 irn_flags |= arch_irn_flag_rematerializable;
3700 int const n_res = 1;
3703 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3704 init_sparc_fp_attributes(res, fp_mode);
3706 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3707 out_infos[0].req = &sparc_class_reg_req_fp;
3715 static arch_register_req_t
const *in_reqs[] = {
3716 &sparc_class_reg_req_fp,
3728 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3729 irn_flags |= arch_irn_flag_rematerializable;
3732 int const n_res = 1;
3735 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3736 init_sparc_fp_attributes(res, fp_mode);
3738 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3739 out_infos[0].req = &sparc_requirements_fp_fp_2;
3747 static arch_register_req_t
const *in_reqs[] = {
3748 &sparc_class_reg_req_fp,
3757 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fitof, sparc_mode_Q, 1, in);
3760 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3761 irn_flags |= arch_irn_flag_rematerializable;
3764 int const n_res = 1;
3767 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3768 init_sparc_fp_attributes(res, fp_mode);
3770 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3771 out_infos[0].req = &sparc_requirements_fp_fp_4;
3779 static arch_register_req_t
const *in_reqs[] = {
3780 &sparc_class_reg_req_fp,
3792 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3793 irn_flags |= arch_irn_flag_rematerializable;
3796 int const n_res = 1;
3799 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3800 init_sparc_fp_attributes(res, fp_mode);
3802 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3803 out_infos[0].req = &sparc_class_reg_req_fp;
3811 static arch_register_req_t
const *in_reqs[] = {
3812 &sparc_requirements_fp_fp_2,
3813 &sparc_requirements_fp_fp_2,
3826 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3827 irn_flags |= arch_irn_flag_rematerializable;
3830 int const n_res = 1;
3833 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3834 init_sparc_fp_attributes(res, fp_mode);
3836 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3837 out_infos[0].req = &sparc_requirements_fp_fp_2;
3845 static arch_register_req_t
const *in_reqs[] = {
3846 &sparc_requirements_fp_fp_4,
3847 &sparc_requirements_fp_fp_4,
3857 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fmul, sparc_mode_Q, 2, in);
3860 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3861 irn_flags |= arch_irn_flag_rematerializable;
3864 int const n_res = 1;
3867 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3868 init_sparc_fp_attributes(res, fp_mode);
3870 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3871 out_infos[0].req = &sparc_requirements_fp_fp_4;
3879 static arch_register_req_t
const *in_reqs[] = {
3880 &sparc_class_reg_req_fp,
3881 &sparc_class_reg_req_fp,
3894 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3895 irn_flags |= arch_irn_flag_rematerializable;
3898 int const n_res = 1;
3901 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3902 init_sparc_fp_attributes(res, fp_mode);
3904 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3905 out_infos[0].req = &sparc_class_reg_req_fp;
3913 static arch_register_req_t
const *in_reqs[] = {
3914 &sparc_requirements_fp_fp_2,
3926 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3927 irn_flags |= arch_irn_flag_rematerializable;
3930 int const n_res = 1;
3933 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3934 init_sparc_fp_attributes(res, fp_mode);
3936 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3937 out_infos[0].req = &sparc_requirements_fp_fp_2;
3945 static arch_register_req_t
const *in_reqs[] = {
3946 &sparc_requirements_fp_fp_4,
3955 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fneg, sparc_mode_Q, 1, in);
3958 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3959 irn_flags |= arch_irn_flag_rematerializable;
3962 int const n_res = 1;
3965 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3966 init_sparc_fp_attributes(res, fp_mode);
3968 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3969 out_infos[0].req = &sparc_requirements_fp_fp_4;
3977 static arch_register_req_t
const *in_reqs[] = {
3978 &sparc_class_reg_req_fp,
3990 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3991 irn_flags |= arch_irn_flag_rematerializable;
3994 int const n_res = 1;
3997 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3998 init_sparc_fp_attributes(res, fp_mode);
4000 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4001 out_infos[0].req = &sparc_class_reg_req_fp;
4009 static arch_register_req_t
const *in_reqs[] = {
4010 &sparc_requirements_fp_fp_2,
4011 &sparc_requirements_fp_fp_2,
4024 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4025 irn_flags |= arch_irn_flag_rematerializable;
4028 int const n_res = 1;
4031 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4032 init_sparc_fp_attributes(res, fp_mode);
4034 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4035 out_infos[0].req = &sparc_requirements_fp_fp_2;
4043 static arch_register_req_t
const *in_reqs[] = {
4044 &sparc_requirements_fp_fp_4,
4045 &sparc_requirements_fp_fp_4,
4055 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fsub, sparc_mode_Q, 2, in);
4058 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4059 irn_flags |= arch_irn_flag_rematerializable;
4062 int const n_res = 1;
4065 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4066 init_sparc_fp_attributes(res, fp_mode);
4068 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4069 out_infos[0].req = &sparc_requirements_fp_fp_4;
4077 static arch_register_req_t
const *in_reqs[] = {
4078 &sparc_class_reg_req_fp,
4079 &sparc_class_reg_req_fp,
4092 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4093 irn_flags |= arch_irn_flag_rematerializable;
4096 int const n_res = 1;
4099 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4100 init_sparc_fp_attributes(res, fp_mode);
4102 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4103 out_infos[0].req = &sparc_class_reg_req_fp;
4114 void sparc_create_opcodes(
void)
4119 sparc_opcode_start = cur_opcode;
4124 set_op_tag(op, sparc_op_tag);
4130 set_op_tag(op, sparc_op_tag);
4131 op_sparc_AddCC = op;
4134 set_op_tag(op, sparc_op_tag);
4135 op_sparc_AddCC_t = op;
4140 set_op_tag(op, sparc_op_tag);
4141 op_sparc_AddSP = op;
4146 set_op_tag(op, sparc_op_tag);
4150 set_op_tag(op, sparc_op_tag);
4151 op_sparc_AddX_t = op;
4156 set_op_tag(op, sparc_op_tag);
4162 set_op_tag(op, sparc_op_tag);
4163 op_sparc_AndCCZero = op;
4168 set_op_tag(op, sparc_op_tag);
4174 set_op_tag(op, sparc_op_tag);
4175 op_sparc_AndNCCZero = op;
4180 set_op_tag(op, sparc_op_tag);
4186 set_op_tag(op, sparc_op_tag);
4192 set_op_tag(op, sparc_op_tag);
4198 set_op_tag(op, sparc_op_tag);
4204 set_op_tag(op, sparc_op_tag);
4210 set_op_tag(op, sparc_op_tag);
4211 op_sparc_FrameAddr = op;
4216 set_op_tag(op, sparc_op_tag);
4222 set_op_tag(op, sparc_op_tag);
4228 set_op_tag(op, sparc_op_tag);
4234 set_op_tag(op, sparc_op_tag);
4240 set_op_tag(op, sparc_op_tag);
4241 op_sparc_OrCCZero = op;
4246 set_op_tag(op, sparc_op_tag);
4252 set_op_tag(op, sparc_op_tag);
4253 op_sparc_OrNCCZero = op;
4258 set_op_tag(op, sparc_op_tag);
4259 op_sparc_Restore = op;
4264 set_op_tag(op, sparc_op_tag);
4265 op_sparc_RestoreZero = op;
4270 set_op_tag(op, sparc_op_tag);
4271 op_sparc_Return = op;
4276 set_op_tag(op, sparc_op_tag);
4282 set_op_tag(op, sparc_op_tag);
4288 set_op_tag(op, sparc_op_tag);
4289 op_sparc_SMulCCZero = op;
4294 set_op_tag(op, sparc_op_tag);
4295 op_sparc_SMulh = op;
4300 set_op_tag(op, sparc_op_tag);
4306 set_op_tag(op, sparc_op_tag);
4307 op_sparc_SetHi = op;
4312 set_op_tag(op, sparc_op_tag);
4318 set_op_tag(op, sparc_op_tag);
4324 set_op_tag(op, sparc_op_tag);
4330 set_op_tag(op, sparc_op_tag);
4336 set_op_tag(op, sparc_op_tag);
4337 op_sparc_Stbar = op;
4342 set_op_tag(op, sparc_op_tag);
4348 set_op_tag(op, sparc_op_tag);
4354 set_op_tag(op, sparc_op_tag);
4355 op_sparc_SubCC = op;
4358 set_op_tag(op, sparc_op_tag);
4359 op_sparc_SubCC_t = op;
4364 set_op_tag(op, sparc_op_tag);
4365 op_sparc_SubSP = op;
4370 set_op_tag(op, sparc_op_tag);
4374 set_op_tag(op, sparc_op_tag);
4375 op_sparc_SubX_t = op;
4380 set_op_tag(op, sparc_op_tag);
4381 op_sparc_SwitchJmp = op;
4386 set_op_tag(op, sparc_op_tag);
4392 set_op_tag(op, sparc_op_tag);
4393 op_sparc_UMulh = op;
4398 set_op_tag(op, sparc_op_tag);
4404 set_op_tag(op, sparc_op_tag);
4405 op_sparc_XNorCCZero = op;
4410 set_op_tag(op, sparc_op_tag);
4416 set_op_tag(op, sparc_op_tag);
4417 op_sparc_XorCCZero = op;
4422 set_op_tag(op, sparc_op_tag);
4428 set_op_tag(op, sparc_op_tag);
4434 set_op_tag(op, sparc_op_tag);
4435 op_sparc_fbfcc = op;
4440 set_op_tag(op, sparc_op_tag);
4446 set_op_tag(op, sparc_op_tag);
4452 set_op_tag(op, sparc_op_tag);
4453 op_sparc_fftof = op;
4458 set_op_tag(op, sparc_op_tag);
4459 op_sparc_fftoi = op;
4464 set_op_tag(op, sparc_op_tag);
4465 op_sparc_fitof = op;
4470 set_op_tag(op, sparc_op_tag);
4476 set_op_tag(op, sparc_op_tag);
4482 set_op_tag(op, sparc_op_tag);
4487 void sparc_free_opcodes(
void)
4489 free_ir_op(op_sparc_Add); op_sparc_Add = NULL;
4490 free_ir_op(op_sparc_AddCC); op_sparc_AddCC = NULL;
4491 free_ir_op(op_sparc_AddCC_t); op_sparc_AddCC_t = NULL;
4492 free_ir_op(op_sparc_AddSP); op_sparc_AddSP = NULL;
4493 free_ir_op(op_sparc_AddX); op_sparc_AddX = NULL;
4494 free_ir_op(op_sparc_AddX_t); op_sparc_AddX_t = NULL;
4495 free_ir_op(op_sparc_And); op_sparc_And = NULL;
4496 free_ir_op(op_sparc_AndCCZero); op_sparc_AndCCZero = NULL;
4497 free_ir_op(op_sparc_AndN); op_sparc_AndN = NULL;
4498 free_ir_op(op_sparc_AndNCCZero); op_sparc_AndNCCZero = NULL;
4500 free_ir_op(op_sparc_Bicc); op_sparc_Bicc = NULL;
4501 free_ir_op(op_sparc_Call); op_sparc_Call = NULL;
4502 free_ir_op(op_sparc_Cas); op_sparc_Cas = NULL;
4503 free_ir_op(op_sparc_Cmp); op_sparc_Cmp = NULL;
4504 free_ir_op(op_sparc_FrameAddr); op_sparc_FrameAddr = NULL;
4505 free_ir_op(op_sparc_IJmp); op_sparc_IJmp = NULL;
4507 free_ir_op(op_sparc_Ldf); op_sparc_Ldf = NULL;
4509 free_ir_op(op_sparc_OrCCZero); op_sparc_OrCCZero = NULL;
4510 free_ir_op(op_sparc_OrN); op_sparc_OrN = NULL;
4511 free_ir_op(op_sparc_OrNCCZero); op_sparc_OrNCCZero = NULL;
4512 free_ir_op(op_sparc_Restore); op_sparc_Restore = NULL;
4513 free_ir_op(op_sparc_RestoreZero); op_sparc_RestoreZero = NULL;
4514 free_ir_op(op_sparc_Return); op_sparc_Return = NULL;
4515 free_ir_op(op_sparc_SDiv); op_sparc_SDiv = NULL;
4516 free_ir_op(op_sparc_SMul); op_sparc_SMul = NULL;
4517 free_ir_op(op_sparc_SMulCCZero); op_sparc_SMulCCZero = NULL;
4518 free_ir_op(op_sparc_SMulh); op_sparc_SMulh = NULL;
4519 free_ir_op(op_sparc_Save); op_sparc_Save = NULL;
4520 free_ir_op(op_sparc_SetHi); op_sparc_SetHi = NULL;
4521 free_ir_op(op_sparc_Sll); op_sparc_Sll = NULL;
4522 free_ir_op(op_sparc_Sra); op_sparc_Sra = NULL;
4523 free_ir_op(op_sparc_Srl); op_sparc_Srl = NULL;
4525 free_ir_op(op_sparc_Stbar); op_sparc_Stbar = NULL;
4526 free_ir_op(op_sparc_Stf); op_sparc_Stf = NULL;
4527 free_ir_op(op_sparc_Sub); op_sparc_Sub = NULL;
4528 free_ir_op(op_sparc_SubCC); op_sparc_SubCC = NULL;
4529 free_ir_op(op_sparc_SubCC_t); op_sparc_SubCC_t = NULL;
4530 free_ir_op(op_sparc_SubSP); op_sparc_SubSP = NULL;
4531 free_ir_op(op_sparc_SubX); op_sparc_SubX = NULL;
4532 free_ir_op(op_sparc_SubX_t); op_sparc_SubX_t = NULL;
4533 free_ir_op(op_sparc_SwitchJmp); op_sparc_SwitchJmp = NULL;
4534 free_ir_op(op_sparc_UDiv); op_sparc_UDiv = NULL;
4535 free_ir_op(op_sparc_UMulh); op_sparc_UMulh = NULL;
4536 free_ir_op(op_sparc_XNor); op_sparc_XNor = NULL;
4537 free_ir_op(op_sparc_XNorCCZero); op_sparc_XNorCCZero = NULL;
4538 free_ir_op(op_sparc_Xor); op_sparc_Xor = NULL;
4539 free_ir_op(op_sparc_XorCCZero); op_sparc_XorCCZero = NULL;
4540 free_ir_op(op_sparc_fabs); op_sparc_fabs = NULL;
4541 free_ir_op(op_sparc_fadd); op_sparc_fadd = NULL;
4542 free_ir_op(op_sparc_fbfcc); op_sparc_fbfcc = NULL;
4543 free_ir_op(op_sparc_fcmp); op_sparc_fcmp = NULL;
4544 free_ir_op(op_sparc_fdiv); op_sparc_fdiv = NULL;
4545 free_ir_op(op_sparc_fftof); op_sparc_fftof = NULL;
4546 free_ir_op(op_sparc_fftoi); op_sparc_fftoi = NULL;
4547 free_ir_op(op_sparc_fitof); op_sparc_fitof = NULL;
4548 free_ir_op(op_sparc_fmul); op_sparc_fmul = NULL;
4549 free_ir_op(op_sparc_fneg); op_sparc_fneg = NULL;
4550 free_ir_op(op_sparc_fsub); op_sparc_fsub = NULL;
unsigned get_irn_opcode(const ir_node *node)
Returns the opcode-enum of the node.
Forking control flow at this operation.
ir_graph * get_irn_irg(const ir_node *node)
Returns the ir_graph this node belongs to.
struct ir_op ir_op
Node Opcode.
ir_mode * mode_D
ieee754 binary64 float (double precision)
void set_op_attrs_equal(ir_op *op, node_attrs_equal_func func)
Sets attrs_equal callback func for operation op.
void verify_new_node(ir_node *node)
If firm is built in debug mode, verify that a newly created node is fine.
struct ir_type ir_type
Type.
struct dbg_info dbg_info
Source Reference.
void * get_irn_generic_attr(ir_node *node)
Returns a pointer to the node attributes.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the node.
ir_node * optimize_node(ir_node *n)
Applies local optimizations to a single node.
ir_node * new_ir_node(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode, int arity, ir_node *const *in)
IR node constructor.
This operation is a control flow operation.
struct ir_switch_table ir_switch_table
A switch table mapping integer numbers to proj-numbers of a Switch-node.
ir_mode * mode_T
tuple (none)
Nodes must remain in this basic block.
This operation has a memory input and may change the memory state.
Node must remain in this basic block if it can throw an exception, else can float.
void set_op_copy_attr(ir_op *op, copy_attr_func func)
Sets attribute copy callback func for operation op.
The arity is not fixed by opcode, but statically known.
ir_op * new_ir_op(unsigned code, const char *name, op_pin_state p, irop_flags flags, op_arity opar, int op_index, size_t attr_size)
Creates a new IR operation.
ir_relation
Relations for comparing numbers.
This operation has no arguments and is some kind of a constant.
struct ir_mode ir_mode
SSA Value mode.
unsigned get_next_ir_opcodes(unsigned num)
Returns the next free n IR opcode number, allows to register a bunch of user ops. ...
void set_op_dump(ir_op *op, dump_node_func func)
Sets dump callback func for operation op.
struct ir_entity ir_entity
Entity.
struct ir_node ir_node
Procedure Graph Node.
ir_mode * mode_F
ieee754 binary32 float (single precision)
void free_ir_op(ir_op *code)
Frees an ir operation.
struct ir_graph ir_graph
Procedure Graph.
ir_mode * mode_X
execution
Nodes of this opcode can be placed in any basic block.