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_not_in_r0_not_in_r1 = {
113 .cls = &sparc_reg_classes[CLASS_sparc_gp],
116 .must_be_different = 3,
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,
149 arch_irn_flags_t irn_flags = arch_irn_flags_none;
150 irn_flags |= arch_irn_flag_rematerializable;
152 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,
182 arch_irn_flags_t irn_flags = arch_irn_flags_none;
183 irn_flags |= arch_irn_flag_rematerializable;
185 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,
212 arch_irn_flags_t irn_flags = arch_irn_flags_none;
213 irn_flags |= arch_irn_flag_rematerializable;
215 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,
246 arch_irn_flags_t irn_flags = arch_irn_flags_none;
247 irn_flags |= arch_irn_flag_rematerializable;
249 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;
280 static arch_register_req_t
const *in_reqs[] = {
281 &sparc_single_reg_req_gp_sp,
282 &sparc_class_reg_req_gp,
297 arch_irn_flags_t irn_flags = arch_irn_flags_none;
299 be_info_init_irn(res, irn_flags, in_reqs, n_res);
302 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
303 out_infos[0].req = &sparc_requirements_gp_sp_I;
311 static arch_register_req_t
const *in_reqs[] = {
312 &sparc_class_reg_req_gp,
313 &sparc_class_reg_req_flags,
328 arch_irn_flags_t irn_flags = arch_irn_flags_none;
330 be_info_init_irn(res, irn_flags, in_reqs, n_res);
333 sparc_set_attr_imm(res, immediate_entity, immediate_value);
334 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
335 out_infos[0].req = &sparc_class_reg_req_gp;
343 static arch_register_req_t
const *in_reqs[] = {
344 &sparc_class_reg_req_gp,
345 &sparc_class_reg_req_gp,
346 &sparc_class_reg_req_flags,
362 arch_irn_flags_t irn_flags = arch_irn_flags_none;
364 be_info_init_irn(res, irn_flags, in_reqs, n_res);
367 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
368 out_infos[0].req = &sparc_class_reg_req_gp;
395 static arch_register_req_t
const *in_reqs[] = {
396 &sparc_class_reg_req_gp,
410 arch_irn_flags_t irn_flags = arch_irn_flags_none;
411 irn_flags |= arch_irn_flag_rematerializable;
413 be_info_init_irn(res, irn_flags, in_reqs, n_res);
416 sparc_set_attr_imm(res, immediate_entity, immediate_value);
417 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
418 out_infos[0].req = &sparc_class_reg_req_gp;
426 static arch_register_req_t
const *in_reqs[] = {
427 &sparc_class_reg_req_gp,
428 &sparc_class_reg_req_gp,
443 arch_irn_flags_t irn_flags = arch_irn_flags_none;
444 irn_flags |= arch_irn_flag_rematerializable;
446 be_info_init_irn(res, irn_flags, in_reqs, n_res);
449 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
450 out_infos[0].req = &sparc_class_reg_req_gp;
458 static arch_register_req_t
const *in_reqs[] = {
459 &sparc_class_reg_req_gp,
473 arch_irn_flags_t irn_flags = arch_irn_flags_none;
474 irn_flags |= arch_irn_flag_rematerializable;
476 be_info_init_irn(res, irn_flags, in_reqs, n_res);
479 sparc_set_attr_imm(res, immediate_entity, immediate_value);
480 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
481 out_infos[0].req = &sparc_class_reg_req_flags;
489 static arch_register_req_t
const *in_reqs[] = {
490 &sparc_class_reg_req_gp,
491 &sparc_class_reg_req_gp,
506 arch_irn_flags_t irn_flags = arch_irn_flags_none;
507 irn_flags |= arch_irn_flag_rematerializable;
509 be_info_init_irn(res, irn_flags, in_reqs, n_res);
512 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
513 out_infos[0].req = &sparc_class_reg_req_flags;
521 static arch_register_req_t
const *in_reqs[] = {
522 &sparc_class_reg_req_gp,
536 arch_irn_flags_t irn_flags = arch_irn_flags_none;
537 irn_flags |= arch_irn_flag_rematerializable;
539 be_info_init_irn(res, irn_flags, in_reqs, n_res);
542 sparc_set_attr_imm(res, immediate_entity, immediate_value);
543 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
544 out_infos[0].req = &sparc_class_reg_req_gp;
552 static arch_register_req_t
const *in_reqs[] = {
553 &sparc_class_reg_req_gp,
554 &sparc_class_reg_req_gp,
569 arch_irn_flags_t irn_flags = arch_irn_flags_none;
570 irn_flags |= arch_irn_flag_rematerializable;
572 be_info_init_irn(res, irn_flags, in_reqs, n_res);
575 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
576 out_infos[0].req = &sparc_class_reg_req_gp;
584 static arch_register_req_t
const *in_reqs[] = {
585 &sparc_class_reg_req_gp,
599 arch_irn_flags_t irn_flags = arch_irn_flags_none;
600 irn_flags |= arch_irn_flag_rematerializable;
602 be_info_init_irn(res, irn_flags, in_reqs, n_res);
605 sparc_set_attr_imm(res, immediate_entity, immediate_value);
606 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
607 out_infos[0].req = &sparc_class_reg_req_flags;
615 static arch_register_req_t
const *in_reqs[] = {
616 &sparc_class_reg_req_gp,
617 &sparc_class_reg_req_gp,
632 arch_irn_flags_t irn_flags = arch_irn_flags_none;
633 irn_flags |= arch_irn_flag_rematerializable;
635 be_info_init_irn(res, irn_flags, in_reqs, n_res);
638 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
639 out_infos[0].req = &sparc_class_reg_req_flags;
647 arch_register_req_t
const **
const in_reqs = NULL;
656 arch_irn_flags_t irn_flags = arch_irn_flags_none;
657 irn_flags |= arch_irn_flag_simple_jump;
658 irn_flags |= arch_irn_flag_fallthrough;
660 be_info_init_irn(res, irn_flags, in_reqs, n_res);
663 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
664 out_infos[0].req = &arch_exec_requirement;
672 static arch_register_req_t
const *in_reqs[] = {
673 &sparc_class_reg_req_flags,
687 arch_irn_flags_t irn_flags = arch_irn_flags_none;
688 irn_flags |= arch_irn_flag_fallthrough;
689 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
691 be_info_init_irn(res, irn_flags, in_reqs, n_res);
694 init_sparc_jmp_cond_attr(res, relation, is_unsigned);
695 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
696 out_infos[0].req = &arch_exec_requirement;
697 out_infos[1].req = &arch_exec_requirement;
703 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_entity *entity, int32_t offset,
bool aggregate_return)
713 arch_irn_flags_t irn_flags = arch_irn_flags_none;
714 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
715 be_info_init_irn(res, irn_flags, in_reqs, n_res);
718 if (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);
719 sparc_set_attr_imm(res, entity, offset);
725 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,
bool aggregate_return)
735 arch_irn_flags_t irn_flags = arch_irn_flags_none;
736 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
737 be_info_init_irn(res, irn_flags, in_reqs, n_res);
740 if (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);
748 static arch_register_req_t
const *in_reqs[] = {
749 &sparc_class_reg_req_gp,
750 &sparc_class_reg_req_gp,
751 &sparc_class_reg_req_gp,
752 &arch_memory_requirement,
769 arch_irn_flags_t irn_flags = arch_irn_flags_none;
771 be_info_init_irn(res, irn_flags, in_reqs, n_res);
774 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
775 out_infos[0].req = &sparc_requirements_gp_in_r2_not_in_r0_not_in_r1;
776 out_infos[1].req = &arch_memory_requirement;
784 static arch_register_req_t
const *in_reqs[] = {
785 &sparc_class_reg_req_gp,
799 arch_irn_flags_t irn_flags = arch_irn_flags_none;
800 irn_flags |= arch_irn_flag_rematerializable;
802 be_info_init_irn(res, irn_flags, in_reqs, n_res);
805 sparc_set_attr_imm(res, immediate_entity, immediate_value);
806 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
807 out_infos[0].req = &sparc_class_reg_req_flags;
815 static arch_register_req_t
const *in_reqs[] = {
816 &sparc_class_reg_req_gp,
817 &sparc_class_reg_req_gp,
832 arch_irn_flags_t irn_flags = arch_irn_flags_none;
833 irn_flags |= arch_irn_flag_rematerializable;
835 be_info_init_irn(res, irn_flags, in_reqs, n_res);
838 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
839 out_infos[0].req = &sparc_class_reg_req_flags;
847 static arch_register_req_t
const *in_reqs[] = {
848 &sparc_class_reg_req_gp,
862 arch_irn_flags_t irn_flags = arch_irn_flags_none;
863 irn_flags |= arch_irn_flag_rematerializable;
865 be_info_init_irn(res, irn_flags, in_reqs, n_res);
868 sparc_set_attr_imm(res, entity, offset);
869 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
870 out_infos[0].req = &sparc_class_reg_req_gp;
878 static arch_register_req_t
const *in_reqs[] = {
879 &sparc_class_reg_req_gp,
893 arch_irn_flags_t irn_flags = arch_irn_flags_none;
894 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
896 be_info_init_irn(res, irn_flags, in_reqs, n_res);
899 init_sparc_load_store_attributes(res, NULL, entity, offset, is_frame_entity,
false);
900 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
901 out_infos[0].req = &arch_exec_requirement;
909 static arch_register_req_t
const *in_reqs[] = {
910 &sparc_class_reg_req_gp,
911 &sparc_class_reg_req_gp,
926 arch_irn_flags_t irn_flags = arch_irn_flags_none;
927 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
929 be_info_init_irn(res, irn_flags, in_reqs, n_res);
932 init_sparc_load_store_attributes(res, NULL, NULL, 0,
false,
true);
933 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
934 out_infos[0].req = &arch_exec_requirement;
942 static arch_register_req_t
const *in_reqs[] = {
943 &arch_memory_requirement,
944 &sparc_class_reg_req_gp,
959 arch_irn_flags_t irn_flags = arch_irn_flags_none;
961 be_info_init_irn(res, irn_flags, in_reqs, n_res);
964 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
965 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
966 out_infos[0].req = &sparc_class_reg_req_gp;
967 out_infos[1].req = &arch_memory_requirement;
975 static arch_register_req_t
const *in_reqs[] = {
976 &arch_memory_requirement,
977 &sparc_class_reg_req_gp,
978 &sparc_class_reg_req_gp,
994 arch_irn_flags_t irn_flags = arch_irn_flags_none;
996 be_info_init_irn(res, irn_flags, in_reqs, n_res);
999 init_sparc_load_store_attributes(res, ls_mode, NULL, 0,
false,
true);
1000 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1001 out_infos[0].req = &sparc_class_reg_req_gp;
1002 out_infos[1].req = &arch_memory_requirement;
1010 static arch_register_req_t
const *in_reqs[] = {
1011 &sparc_class_reg_req_gp,
1012 &arch_memory_requirement,
1027 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1028 int const n_res = 2;
1029 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1032 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1033 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1034 out_infos[0].req = &sparc_requirements_fp_fp_2;
1035 out_infos[1].req = &arch_memory_requirement;
1043 static arch_register_req_t
const *in_reqs[] = {
1044 &sparc_class_reg_req_gp,
1045 &arch_memory_requirement,
1060 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1061 int const n_res = 2;
1062 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1065 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1066 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1067 out_infos[0].req = &sparc_requirements_fp_fp_4;
1068 out_infos[1].req = &arch_memory_requirement;
1076 static arch_register_req_t
const *in_reqs[] = {
1077 &sparc_class_reg_req_gp,
1078 &arch_memory_requirement,
1093 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1094 int const n_res = 2;
1095 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1098 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
1099 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1100 out_infos[0].req = &sparc_class_reg_req_fp;
1101 out_infos[1].req = &arch_memory_requirement;
1109 static arch_register_req_t
const *in_reqs[] = {
1110 &sparc_class_reg_req_gp,
1124 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1125 irn_flags |= arch_irn_flag_rematerializable;
1126 int const n_res = 1;
1127 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1130 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1131 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1132 out_infos[0].req = &sparc_class_reg_req_gp;
1140 static arch_register_req_t
const *in_reqs[] = {
1141 &sparc_class_reg_req_gp,
1142 &sparc_class_reg_req_gp,
1157 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1158 irn_flags |= arch_irn_flag_rematerializable;
1159 int const n_res = 1;
1160 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1163 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1164 out_infos[0].req = &sparc_class_reg_req_gp;
1172 static arch_register_req_t
const *in_reqs[] = {
1173 &sparc_class_reg_req_gp,
1187 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1188 irn_flags |= arch_irn_flag_rematerializable;
1189 int const n_res = 1;
1190 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1193 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1194 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1195 out_infos[0].req = &sparc_class_reg_req_flags;
1203 static arch_register_req_t
const *in_reqs[] = {
1204 &sparc_class_reg_req_gp,
1205 &sparc_class_reg_req_gp,
1220 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1221 irn_flags |= arch_irn_flag_rematerializable;
1222 int const n_res = 1;
1223 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1226 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1227 out_infos[0].req = &sparc_class_reg_req_flags;
1235 static arch_register_req_t
const *in_reqs[] = {
1236 &sparc_class_reg_req_gp,
1250 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1251 irn_flags |= arch_irn_flag_rematerializable;
1252 int const n_res = 1;
1253 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1256 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1257 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1258 out_infos[0].req = &sparc_class_reg_req_gp;
1266 static arch_register_req_t
const *in_reqs[] = {
1267 &sparc_class_reg_req_gp,
1268 &sparc_class_reg_req_gp,
1283 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1284 irn_flags |= arch_irn_flag_rematerializable;
1285 int const n_res = 1;
1286 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1289 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1290 out_infos[0].req = &sparc_class_reg_req_gp;
1298 static arch_register_req_t
const *in_reqs[] = {
1299 &sparc_class_reg_req_gp,
1313 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1314 irn_flags |= arch_irn_flag_rematerializable;
1315 int const n_res = 1;
1316 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1319 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1320 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1321 out_infos[0].req = &sparc_class_reg_req_flags;
1329 static arch_register_req_t
const *in_reqs[] = {
1330 &sparc_class_reg_req_gp,
1331 &sparc_class_reg_req_gp,
1346 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1347 irn_flags |= arch_irn_flag_rematerializable;
1348 int const n_res = 1;
1349 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1352 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1353 out_infos[0].req = &sparc_class_reg_req_flags;
1361 static arch_register_req_t
const *in_reqs[] = {
1362 &sparc_single_reg_req_gp_sp,
1363 &sparc_single_reg_req_gp_fp,
1364 &sparc_class_reg_req_gp,
1380 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1381 int const n_res = 2;
1382 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1385 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1386 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1387 out_infos[0].req = &sparc_requirements_gp_sp_I;
1388 out_infos[1].req = &sparc_class_reg_req_gp;
1396 static arch_register_req_t
const *in_reqs[] = {
1397 &sparc_single_reg_req_gp_sp,
1398 &sparc_single_reg_req_gp_fp,
1399 &sparc_class_reg_req_gp,
1400 &sparc_class_reg_req_gp,
1417 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1418 int const n_res = 2;
1419 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1422 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1423 out_infos[0].req = &sparc_requirements_gp_sp_I;
1424 out_infos[1].req = &sparc_class_reg_req_gp;
1432 static arch_register_req_t
const *in_reqs[] = {
1433 &sparc_single_reg_req_gp_sp,
1434 &sparc_single_reg_req_gp_fp,
1449 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1450 int const n_res = 1;
1451 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1454 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1455 out_infos[0].req = &sparc_requirements_gp_sp_I;
1461 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)
1471 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1472 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1473 int const n_res = 1;
1474 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1477 sparc_set_attr_imm(res, entity, offset);
1478 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1479 out_infos[0].req = &arch_exec_requirement;
1485 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)
1495 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1496 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1497 int const n_res = 1;
1498 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1501 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1502 out_infos[0].req = &arch_exec_requirement;
1510 static arch_register_req_t
const *in_reqs[] = {
1511 &arch_memory_requirement,
1512 &sparc_class_reg_req_gp,
1513 &sparc_class_reg_req_gp,
1529 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1530 irn_flags |= arch_irn_flag_rematerializable;
1531 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1532 int const n_res = 2;
1533 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1536 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1537 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1538 out_infos[0].req = &sparc_class_reg_req_gp;
1539 out_infos[1].req = &arch_memory_requirement;
1547 static arch_register_req_t
const *in_reqs[] = {
1548 &arch_memory_requirement,
1549 &sparc_class_reg_req_gp,
1550 &sparc_class_reg_req_gp,
1551 &sparc_class_reg_req_gp,
1568 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1569 irn_flags |= arch_irn_flag_rematerializable;
1570 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
1571 int const n_res = 2;
1572 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1575 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1576 out_infos[0].req = &sparc_class_reg_req_gp;
1577 out_infos[1].req = &arch_memory_requirement;
1585 static arch_register_req_t
const *in_reqs[] = {
1586 &sparc_class_reg_req_gp,
1600 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1601 irn_flags |= arch_irn_flag_rematerializable;
1602 int const n_res = 1;
1603 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1606 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1607 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1608 out_infos[0].req = &sparc_class_reg_req_gp;
1616 static arch_register_req_t
const *in_reqs[] = {
1617 &sparc_class_reg_req_gp,
1618 &sparc_class_reg_req_gp,
1633 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1634 irn_flags |= arch_irn_flag_rematerializable;
1635 int const n_res = 1;
1636 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1639 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1640 out_infos[0].req = &sparc_class_reg_req_gp;
1648 static arch_register_req_t
const *in_reqs[] = {
1649 &sparc_class_reg_req_gp,
1663 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1664 irn_flags |= arch_irn_flag_rematerializable;
1665 int const n_res = 1;
1666 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1669 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1670 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1671 out_infos[0].req = &sparc_class_reg_req_flags;
1679 static arch_register_req_t
const *in_reqs[] = {
1680 &sparc_class_reg_req_gp,
1681 &sparc_class_reg_req_gp,
1696 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1697 irn_flags |= arch_irn_flag_rematerializable;
1698 int const n_res = 1;
1699 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1702 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1703 out_infos[0].req = &sparc_class_reg_req_flags;
1711 static arch_register_req_t
const *in_reqs[] = {
1712 &sparc_class_reg_req_gp,
1726 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1727 irn_flags |= arch_irn_flag_rematerializable;
1728 int const n_res = 1;
1729 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1732 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1733 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1734 out_infos[0].req = &sparc_class_reg_req_gp;
1742 static arch_register_req_t
const *in_reqs[] = {
1743 &sparc_class_reg_req_gp,
1744 &sparc_class_reg_req_gp,
1759 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1760 irn_flags |= arch_irn_flag_rematerializable;
1761 int const n_res = 1;
1762 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1765 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1766 out_infos[0].req = &sparc_class_reg_req_gp;
1774 static arch_register_req_t
const *in_reqs[] = {
1775 &sparc_single_reg_req_gp_sp,
1789 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1790 irn_flags |= arch_irn_flag_schedule_first;
1791 int const n_res = 1;
1792 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1795 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1796 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1797 out_infos[0].req = &sparc_requirements_gp_sp_I;
1805 static arch_register_req_t
const *in_reqs[] = {
1806 &sparc_single_reg_req_gp_sp,
1807 &sparc_class_reg_req_gp,
1822 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1823 irn_flags |= arch_irn_flag_schedule_first;
1824 int const n_res = 1;
1825 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1828 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1829 out_infos[0].req = &sparc_requirements_gp_sp_I;
1837 arch_register_req_t
const **
const in_reqs = NULL;
1846 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1847 irn_flags |= arch_irn_flag_rematerializable;
1848 int const n_res = 1;
1849 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1852 sparc_set_attr_imm(res, entity, immediate_value);
1853 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1854 out_infos[0].req = &sparc_class_reg_req_gp;
1862 static arch_register_req_t
const *in_reqs[] = {
1863 &sparc_class_reg_req_gp,
1877 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1878 irn_flags |= arch_irn_flag_rematerializable;
1879 int const n_res = 1;
1880 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1883 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1884 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1885 out_infos[0].req = &sparc_class_reg_req_gp;
1893 static arch_register_req_t
const *in_reqs[] = {
1894 &sparc_class_reg_req_gp,
1895 &sparc_class_reg_req_gp,
1910 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1911 irn_flags |= arch_irn_flag_rematerializable;
1912 int const n_res = 1;
1913 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1916 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1917 out_infos[0].req = &sparc_class_reg_req_gp;
1925 static arch_register_req_t
const *in_reqs[] = {
1926 &sparc_class_reg_req_gp,
1940 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1941 irn_flags |= arch_irn_flag_rematerializable;
1942 int const n_res = 1;
1943 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1946 sparc_set_attr_imm(res, immediate_entity, immediate_value);
1947 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1948 out_infos[0].req = &sparc_class_reg_req_gp;
1956 static arch_register_req_t
const *in_reqs[] = {
1957 &sparc_class_reg_req_gp,
1958 &sparc_class_reg_req_gp,
1973 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1974 irn_flags |= arch_irn_flag_rematerializable;
1975 int const n_res = 1;
1976 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1979 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1980 out_infos[0].req = &sparc_class_reg_req_gp;
1988 static arch_register_req_t
const *in_reqs[] = {
1989 &sparc_class_reg_req_gp,
2003 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2004 irn_flags |= arch_irn_flag_rematerializable;
2005 int const n_res = 1;
2006 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2009 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2010 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2011 out_infos[0].req = &sparc_class_reg_req_gp;
2019 static arch_register_req_t
const *in_reqs[] = {
2020 &sparc_class_reg_req_gp,
2021 &sparc_class_reg_req_gp,
2036 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2037 irn_flags |= arch_irn_flag_rematerializable;
2038 int const n_res = 1;
2039 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2042 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2043 out_infos[0].req = &sparc_class_reg_req_gp;
2051 static arch_register_req_t
const *in_reqs[] = {
2052 &arch_memory_requirement,
2053 &sparc_class_reg_req_gp,
2054 &sparc_class_reg_req_gp,
2070 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2071 int const n_res = 1;
2072 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2075 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2076 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2077 out_infos[0].req = &arch_memory_requirement;
2085 static arch_register_req_t
const *in_reqs[] = {
2086 &arch_memory_requirement,
2087 &sparc_class_reg_req_gp,
2088 &sparc_class_reg_req_gp,
2089 &sparc_class_reg_req_gp,
2106 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2107 int const n_res = 1;
2108 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2111 init_sparc_load_store_attributes(res, ls_mode, NULL, 0,
false,
true);
2112 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2113 out_infos[0].req = &arch_memory_requirement;
2121 static arch_register_req_t
const *in_reqs[] = {
2122 &arch_memory_requirement,
2136 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2137 int const n_res = 1;
2138 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2141 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2142 out_infos[0].req = &arch_memory_requirement;
2150 static arch_register_req_t
const *in_reqs[] = {
2151 &sparc_requirements_fp_fp_2,
2152 &sparc_class_reg_req_gp,
2153 &arch_memory_requirement,
2169 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2170 int const n_res = 1;
2171 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2174 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2175 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2176 out_infos[0].req = &arch_memory_requirement;
2184 static arch_register_req_t
const *in_reqs[] = {
2185 &sparc_requirements_fp_fp_4,
2186 &sparc_class_reg_req_gp,
2187 &arch_memory_requirement,
2203 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2204 int const n_res = 1;
2205 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2208 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2209 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2210 out_infos[0].req = &arch_memory_requirement;
2218 static arch_register_req_t
const *in_reqs[] = {
2219 &sparc_class_reg_req_fp,
2220 &sparc_class_reg_req_gp,
2221 &arch_memory_requirement,
2237 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2238 int const n_res = 1;
2239 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2242 init_sparc_load_store_attributes(res, ls_mode, entity, offset, is_frame_entity,
false);
2243 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2244 out_infos[0].req = &arch_memory_requirement;
2252 static arch_register_req_t
const *in_reqs[] = {
2253 &sparc_class_reg_req_gp,
2267 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2268 irn_flags |= arch_irn_flag_rematerializable;
2269 int const n_res = 1;
2270 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2273 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2274 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2275 out_infos[0].req = &sparc_class_reg_req_gp;
2283 static arch_register_req_t
const *in_reqs[] = {
2284 &sparc_class_reg_req_gp,
2285 &sparc_class_reg_req_gp,
2300 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2301 irn_flags |= arch_irn_flag_rematerializable;
2302 int const n_res = 1;
2303 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2306 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2307 out_infos[0].req = &sparc_class_reg_req_gp;
2315 static arch_register_req_t
const *in_reqs[] = {
2316 &sparc_class_reg_req_gp,
2330 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2331 irn_flags |= arch_irn_flag_rematerializable;
2332 int const n_res = 2;
2333 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2336 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2337 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2338 out_infos[0].req = &sparc_class_reg_req_gp;
2339 out_infos[1].req = &sparc_class_reg_req_flags;
2347 static arch_register_req_t
const *in_reqs[] = {
2348 &sparc_class_reg_req_gp,
2349 &sparc_class_reg_req_gp,
2364 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2365 irn_flags |= arch_irn_flag_rematerializable;
2366 int const n_res = 2;
2367 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2370 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2371 out_infos[0].req = &sparc_class_reg_req_gp;
2372 out_infos[1].req = &sparc_class_reg_req_flags;
2398 static arch_register_req_t
const *in_reqs[] = {
2399 &arch_memory_requirement,
2400 &sparc_single_reg_req_gp_sp,
2415 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2416 int const n_res = 3;
2417 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2420 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2421 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2422 out_infos[0].req = &sparc_requirements_gp_sp_I;
2423 out_infos[1].req = &sparc_class_reg_req_gp;
2424 out_infos[2].req = &arch_memory_requirement;
2432 static arch_register_req_t
const *in_reqs[] = {
2433 &arch_memory_requirement,
2434 &sparc_single_reg_req_gp_sp,
2435 &sparc_class_reg_req_gp,
2451 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2452 int const n_res = 3;
2453 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2456 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2457 out_infos[0].req = &sparc_requirements_gp_sp_I;
2458 out_infos[1].req = &sparc_class_reg_req_gp;
2459 out_infos[2].req = &arch_memory_requirement;
2467 static arch_register_req_t
const *in_reqs[] = {
2468 &sparc_class_reg_req_gp,
2469 &sparc_class_reg_req_flags,
2484 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2485 int const n_res = 1;
2486 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2489 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2490 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2491 out_infos[0].req = &sparc_class_reg_req_gp;
2499 static arch_register_req_t
const *in_reqs[] = {
2500 &sparc_class_reg_req_gp,
2501 &sparc_class_reg_req_gp,
2502 &sparc_class_reg_req_flags,
2518 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2519 int const n_res = 1;
2520 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2523 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2524 out_infos[0].req = &sparc_class_reg_req_gp;
2551 static arch_register_req_t
const *in_reqs[] = {
2552 &sparc_class_reg_req_gp,
2566 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2567 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2568 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2571 be_switch_attr_init(res, &attr->swtch, table, jump_table);
2579 static arch_register_req_t
const *in_reqs[] = {
2580 &arch_memory_requirement,
2581 &sparc_class_reg_req_gp,
2582 &sparc_class_reg_req_gp,
2598 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2599 irn_flags |= arch_irn_flag_rematerializable;
2600 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2601 int const n_res = 2;
2602 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2605 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2606 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2607 out_infos[0].req = &sparc_class_reg_req_gp;
2608 out_infos[1].req = &arch_memory_requirement;
2616 static arch_register_req_t
const *in_reqs[] = {
2617 &arch_memory_requirement,
2618 &sparc_class_reg_req_gp,
2619 &sparc_class_reg_req_gp,
2620 &sparc_class_reg_req_gp,
2637 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2638 irn_flags |= arch_irn_flag_rematerializable;
2639 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
2640 int const n_res = 2;
2641 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2644 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2645 out_infos[0].req = &sparc_class_reg_req_gp;
2646 out_infos[1].req = &arch_memory_requirement;
2654 static arch_register_req_t
const *in_reqs[] = {
2655 &sparc_class_reg_req_gp,
2669 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2670 irn_flags |= arch_irn_flag_rematerializable;
2671 int const n_res = 1;
2672 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2675 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2676 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2677 out_infos[0].req = &sparc_class_reg_req_gp;
2685 static arch_register_req_t
const *in_reqs[] = {
2686 &sparc_class_reg_req_gp,
2687 &sparc_class_reg_req_gp,
2702 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2703 irn_flags |= arch_irn_flag_rematerializable;
2704 int const n_res = 1;
2705 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2708 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2709 out_infos[0].req = &sparc_class_reg_req_gp;
2717 static arch_register_req_t
const *in_reqs[] = {
2718 &sparc_class_reg_req_gp,
2732 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2733 irn_flags |= arch_irn_flag_rematerializable;
2734 int const n_res = 1;
2735 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2738 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2739 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2740 out_infos[0].req = &sparc_class_reg_req_gp;
2748 static arch_register_req_t
const *in_reqs[] = {
2749 &sparc_class_reg_req_gp,
2750 &sparc_class_reg_req_gp,
2765 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2766 irn_flags |= arch_irn_flag_rematerializable;
2767 int const n_res = 1;
2768 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2771 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2772 out_infos[0].req = &sparc_class_reg_req_gp;
2780 static arch_register_req_t
const *in_reqs[] = {
2781 &sparc_class_reg_req_gp,
2795 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2796 irn_flags |= arch_irn_flag_rematerializable;
2797 int const n_res = 1;
2798 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2801 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2802 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2803 out_infos[0].req = &sparc_class_reg_req_flags;
2811 static arch_register_req_t
const *in_reqs[] = {
2812 &sparc_class_reg_req_gp,
2813 &sparc_class_reg_req_gp,
2828 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2829 irn_flags |= arch_irn_flag_rematerializable;
2830 int const n_res = 1;
2831 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2834 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2835 out_infos[0].req = &sparc_class_reg_req_flags;
2843 static arch_register_req_t
const *in_reqs[] = {
2844 &sparc_class_reg_req_gp,
2858 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2859 irn_flags |= arch_irn_flag_rematerializable;
2860 int const n_res = 1;
2861 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2864 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2865 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2866 out_infos[0].req = &sparc_class_reg_req_gp;
2874 static arch_register_req_t
const *in_reqs[] = {
2875 &sparc_class_reg_req_gp,
2876 &sparc_class_reg_req_gp,
2891 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2892 irn_flags |= arch_irn_flag_rematerializable;
2893 int const n_res = 1;
2894 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2897 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2898 out_infos[0].req = &sparc_class_reg_req_gp;
2906 static arch_register_req_t
const *in_reqs[] = {
2907 &sparc_class_reg_req_gp,
2921 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2922 irn_flags |= arch_irn_flag_rematerializable;
2923 int const n_res = 1;
2924 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2927 sparc_set_attr_imm(res, immediate_entity, immediate_value);
2928 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2929 out_infos[0].req = &sparc_class_reg_req_flags;
2937 static arch_register_req_t
const *in_reqs[] = {
2938 &sparc_class_reg_req_gp,
2939 &sparc_class_reg_req_gp,
2954 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2955 irn_flags |= arch_irn_flag_rematerializable;
2956 int const n_res = 1;
2957 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2960 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2961 out_infos[0].req = &sparc_class_reg_req_flags;
2969 static arch_register_req_t
const *in_reqs[] = {
2970 &sparc_requirements_fp_fp_2,
2984 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2985 irn_flags |= arch_irn_flag_rematerializable;
2986 int const n_res = 1;
2987 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2990 init_sparc_fp_attributes(res, fp_mode);
2991 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2992 out_infos[0].req = &sparc_requirements_fp_fp_2;
3000 static arch_register_req_t
const *in_reqs[] = {
3001 &sparc_requirements_fp_fp_4,
3010 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fabs, sparc_mode_Q, 1, in);
3015 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3016 irn_flags |= arch_irn_flag_rematerializable;
3017 int const n_res = 1;
3018 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3021 init_sparc_fp_attributes(res, fp_mode);
3022 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3023 out_infos[0].req = &sparc_requirements_fp_fp_4;
3031 static arch_register_req_t
const *in_reqs[] = {
3032 &sparc_class_reg_req_fp,
3046 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3047 irn_flags |= arch_irn_flag_rematerializable;
3048 int const n_res = 1;
3049 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3052 init_sparc_fp_attributes(res, fp_mode);
3053 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3054 out_infos[0].req = &sparc_class_reg_req_fp;
3062 static arch_register_req_t
const *in_reqs[] = {
3063 &sparc_requirements_fp_fp_2,
3064 &sparc_requirements_fp_fp_2,
3079 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3080 irn_flags |= arch_irn_flag_rematerializable;
3081 int const n_res = 1;
3082 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3085 init_sparc_fp_attributes(res, fp_mode);
3086 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3087 out_infos[0].req = &sparc_requirements_fp_fp_2;
3095 static arch_register_req_t
const *in_reqs[] = {
3096 &sparc_requirements_fp_fp_4,
3097 &sparc_requirements_fp_fp_4,
3107 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fadd, sparc_mode_Q, 2, in);
3112 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3113 irn_flags |= arch_irn_flag_rematerializable;
3114 int const n_res = 1;
3115 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3118 init_sparc_fp_attributes(res, fp_mode);
3119 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3120 out_infos[0].req = &sparc_requirements_fp_fp_4;
3128 static arch_register_req_t
const *in_reqs[] = {
3129 &sparc_class_reg_req_fp,
3130 &sparc_class_reg_req_fp,
3145 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3146 irn_flags |= arch_irn_flag_rematerializable;
3147 int const n_res = 1;
3148 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3151 init_sparc_fp_attributes(res, fp_mode);
3152 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3153 out_infos[0].req = &sparc_class_reg_req_fp;
3161 static arch_register_req_t
const *in_reqs[] = {
3162 &sparc_class_reg_req_fpflags,
3176 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3177 irn_flags |= arch_irn_flag_fallthrough;
3178 irn_flags |= (arch_irn_flags_t)sparc_arch_irn_flag_has_delay_slot;
3179 int const n_res = 2;
3180 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3183 bool const is_unsigned =
false;
3184 init_sparc_jmp_cond_attr(res, relation, is_unsigned);
3185 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3186 out_infos[0].req = &arch_exec_requirement;
3187 out_infos[1].req = &arch_exec_requirement;
3195 static arch_register_req_t
const *in_reqs[] = {
3196 &sparc_requirements_fp_fp_2,
3197 &sparc_requirements_fp_fp_2,
3212 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3213 irn_flags |= arch_irn_flag_rematerializable;
3214 int const n_res = 1;
3215 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3218 init_sparc_fp_attributes(res, fp_mode);
3219 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3220 out_infos[0].req = &sparc_class_reg_req_fpflags;
3228 static arch_register_req_t
const *in_reqs[] = {
3229 &sparc_requirements_fp_fp_4,
3230 &sparc_requirements_fp_fp_4,
3245 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3246 irn_flags |= arch_irn_flag_rematerializable;
3247 int const n_res = 1;
3248 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3251 init_sparc_fp_attributes(res, fp_mode);
3252 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3253 out_infos[0].req = &sparc_class_reg_req_fpflags;
3261 static arch_register_req_t
const *in_reqs[] = {
3262 &sparc_class_reg_req_fp,
3263 &sparc_class_reg_req_fp,
3278 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3279 irn_flags |= arch_irn_flag_rematerializable;
3280 int const n_res = 1;
3281 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3284 init_sparc_fp_attributes(res, fp_mode);
3285 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3286 out_infos[0].req = &sparc_class_reg_req_fpflags;
3294 static arch_register_req_t
const *in_reqs[] = {
3295 &sparc_requirements_fp_fp_2,
3296 &sparc_requirements_fp_fp_2,
3311 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3312 irn_flags |= arch_irn_flag_rematerializable;
3313 int const n_res = 2;
3314 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3317 init_sparc_fp_attributes(res, fp_mode);
3318 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3319 out_infos[0].req = &sparc_requirements_fp_fp_2;
3320 out_infos[1].req = &arch_memory_requirement;
3328 static arch_register_req_t
const *in_reqs[] = {
3329 &sparc_requirements_fp_fp_4,
3330 &sparc_requirements_fp_fp_4,
3345 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3346 irn_flags |= arch_irn_flag_rematerializable;
3347 int const n_res = 2;
3348 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3351 init_sparc_fp_attributes(res, fp_mode);
3352 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3353 out_infos[0].req = &sparc_requirements_fp_fp_4;
3354 out_infos[1].req = &arch_memory_requirement;
3362 static arch_register_req_t
const *in_reqs[] = {
3363 &sparc_class_reg_req_fp,
3364 &sparc_class_reg_req_fp,
3379 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3380 irn_flags |= arch_irn_flag_rematerializable;
3381 int const n_res = 2;
3382 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3385 init_sparc_fp_attributes(res, fp_mode);
3386 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3387 out_infos[0].req = &sparc_class_reg_req_fp;
3388 out_infos[1].req = &arch_memory_requirement;
3396 static arch_register_req_t
const *in_reqs[] = {
3397 &sparc_requirements_fp_fp_2,
3406 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fftof, sparc_mode_Q, 1, in);
3411 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3412 irn_flags |= arch_irn_flag_rematerializable;
3413 int const n_res = 1;
3414 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3417 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3418 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3419 out_infos[0].req = &sparc_requirements_fp_fp_4;
3427 static arch_register_req_t
const *in_reqs[] = {
3428 &sparc_requirements_fp_fp_2,
3442 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3443 irn_flags |= arch_irn_flag_rematerializable;
3444 int const n_res = 1;
3445 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3448 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3449 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3450 out_infos[0].req = &sparc_class_reg_req_fp;
3458 static arch_register_req_t
const *in_reqs[] = {
3459 &sparc_requirements_fp_fp_4,
3473 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3474 irn_flags |= arch_irn_flag_rematerializable;
3475 int const n_res = 1;
3476 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3479 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3480 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3481 out_infos[0].req = &sparc_requirements_fp_fp_2;
3489 static arch_register_req_t
const *in_reqs[] = {
3490 &sparc_requirements_fp_fp_4,
3504 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3505 irn_flags |= arch_irn_flag_rematerializable;
3506 int const n_res = 1;
3507 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3510 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3511 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3512 out_infos[0].req = &sparc_class_reg_req_fp;
3520 static arch_register_req_t
const *in_reqs[] = {
3521 &sparc_class_reg_req_fp,
3535 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3536 irn_flags |= arch_irn_flag_rematerializable;
3537 int const n_res = 1;
3538 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3541 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3542 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3543 out_infos[0].req = &sparc_requirements_fp_fp_2;
3551 static arch_register_req_t
const *in_reqs[] = {
3552 &sparc_class_reg_req_fp,
3561 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fftof, sparc_mode_Q, 1, in);
3566 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3567 irn_flags |= arch_irn_flag_rematerializable;
3568 int const n_res = 1;
3569 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3572 init_sparc_fp_conv_attributes(res, src_mode, dest_mode);
3573 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3574 out_infos[0].req = &sparc_requirements_fp_fp_2;
3582 static arch_register_req_t
const *in_reqs[] = {
3583 &sparc_requirements_fp_fp_2,
3597 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3598 irn_flags |= arch_irn_flag_rematerializable;
3599 int const n_res = 1;
3600 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3603 init_sparc_fp_attributes(res, fp_mode);
3604 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3605 out_infos[0].req = &sparc_class_reg_req_fp;
3613 static arch_register_req_t
const *in_reqs[] = {
3614 &sparc_requirements_fp_fp_4,
3628 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3629 irn_flags |= arch_irn_flag_rematerializable;
3630 int const n_res = 1;
3631 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3634 init_sparc_fp_attributes(res, fp_mode);
3635 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3636 out_infos[0].req = &sparc_class_reg_req_fp;
3644 static arch_register_req_t
const *in_reqs[] = {
3645 &sparc_class_reg_req_fp,
3659 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3660 irn_flags |= arch_irn_flag_rematerializable;
3661 int const n_res = 1;
3662 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3665 init_sparc_fp_attributes(res, fp_mode);
3666 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3667 out_infos[0].req = &sparc_class_reg_req_fp;
3675 static arch_register_req_t
const *in_reqs[] = {
3676 &sparc_class_reg_req_fp,
3690 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3691 irn_flags |= arch_irn_flag_rematerializable;
3692 int const n_res = 1;
3693 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3696 init_sparc_fp_attributes(res, fp_mode);
3697 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3698 out_infos[0].req = &sparc_requirements_fp_fp_2;
3706 static arch_register_req_t
const *in_reqs[] = {
3707 &sparc_class_reg_req_fp,
3716 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fitof, sparc_mode_Q, 1, in);
3721 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3722 irn_flags |= arch_irn_flag_rematerializable;
3723 int const n_res = 1;
3724 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3727 init_sparc_fp_attributes(res, fp_mode);
3728 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3729 out_infos[0].req = &sparc_requirements_fp_fp_4;
3737 static arch_register_req_t
const *in_reqs[] = {
3738 &sparc_class_reg_req_fp,
3752 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3753 irn_flags |= arch_irn_flag_rematerializable;
3754 int const n_res = 1;
3755 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3758 init_sparc_fp_attributes(res, fp_mode);
3759 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3760 out_infos[0].req = &sparc_class_reg_req_fp;
3768 static arch_register_req_t
const *in_reqs[] = {
3769 &sparc_requirements_fp_fp_2,
3770 &sparc_requirements_fp_fp_2,
3785 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3786 irn_flags |= arch_irn_flag_rematerializable;
3787 int const n_res = 1;
3788 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3791 init_sparc_fp_attributes(res, fp_mode);
3792 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3793 out_infos[0].req = &sparc_requirements_fp_fp_2;
3801 static arch_register_req_t
const *in_reqs[] = {
3802 &sparc_requirements_fp_fp_4,
3803 &sparc_requirements_fp_fp_4,
3813 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fmul, sparc_mode_Q, 2, in);
3818 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3819 irn_flags |= arch_irn_flag_rematerializable;
3820 int const n_res = 1;
3821 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3824 init_sparc_fp_attributes(res, fp_mode);
3825 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3826 out_infos[0].req = &sparc_requirements_fp_fp_4;
3834 static arch_register_req_t
const *in_reqs[] = {
3835 &sparc_class_reg_req_fp,
3836 &sparc_class_reg_req_fp,
3851 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3852 irn_flags |= arch_irn_flag_rematerializable;
3853 int const n_res = 1;
3854 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3857 init_sparc_fp_attributes(res, fp_mode);
3858 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3859 out_infos[0].req = &sparc_class_reg_req_fp;
3867 static arch_register_req_t
const *in_reqs[] = {
3868 &sparc_requirements_fp_fp_2,
3882 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3883 irn_flags |= arch_irn_flag_rematerializable;
3884 int const n_res = 1;
3885 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3888 init_sparc_fp_attributes(res, fp_mode);
3889 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3890 out_infos[0].req = &sparc_requirements_fp_fp_2;
3898 static arch_register_req_t
const *in_reqs[] = {
3899 &sparc_requirements_fp_fp_4,
3908 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fneg, sparc_mode_Q, 1, in);
3913 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3914 irn_flags |= arch_irn_flag_rematerializable;
3915 int const n_res = 1;
3916 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3919 init_sparc_fp_attributes(res, fp_mode);
3920 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3921 out_infos[0].req = &sparc_requirements_fp_fp_4;
3929 static arch_register_req_t
const *in_reqs[] = {
3930 &sparc_class_reg_req_fp,
3944 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3945 irn_flags |= arch_irn_flag_rematerializable;
3946 int const n_res = 1;
3947 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3950 init_sparc_fp_attributes(res, fp_mode);
3951 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3952 out_infos[0].req = &sparc_class_reg_req_fp;
3960 static arch_register_req_t
const *in_reqs[] = {
3961 &sparc_requirements_fp_fp_2,
3962 &sparc_requirements_fp_fp_2,
3977 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3978 irn_flags |= arch_irn_flag_rematerializable;
3979 int const n_res = 1;
3980 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3983 init_sparc_fp_attributes(res, fp_mode);
3984 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3985 out_infos[0].req = &sparc_requirements_fp_fp_2;
3993 static arch_register_req_t
const *in_reqs[] = {
3994 &sparc_requirements_fp_fp_4,
3995 &sparc_requirements_fp_fp_4,
4005 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_sparc_fsub, sparc_mode_Q, 2, in);
4010 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4011 irn_flags |= arch_irn_flag_rematerializable;
4012 int const n_res = 1;
4013 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4016 init_sparc_fp_attributes(res, fp_mode);
4017 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4018 out_infos[0].req = &sparc_requirements_fp_fp_4;
4026 static arch_register_req_t
const *in_reqs[] = {
4027 &sparc_class_reg_req_fp,
4028 &sparc_class_reg_req_fp,
4043 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4044 irn_flags |= arch_irn_flag_rematerializable;
4045 int const n_res = 1;
4046 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4049 init_sparc_fp_attributes(res, fp_mode);
4050 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4051 out_infos[0].req = &sparc_class_reg_req_fp;
4062 void sparc_create_opcodes(
void)
4067 sparc_opcode_start = cur_opcode;
4072 set_op_tag(op, sparc_op_tag);
4078 set_op_tag(op, sparc_op_tag);
4079 op_sparc_AddCC = op;
4082 set_op_tag(op, sparc_op_tag);
4083 op_sparc_AddCC_t = op;
4088 set_op_tag(op, sparc_op_tag);
4089 op_sparc_AddSP = op;
4094 set_op_tag(op, sparc_op_tag);
4098 set_op_tag(op, sparc_op_tag);
4099 op_sparc_AddX_t = op;
4104 set_op_tag(op, sparc_op_tag);
4110 set_op_tag(op, sparc_op_tag);
4111 op_sparc_AndCCZero = op;
4116 set_op_tag(op, sparc_op_tag);
4122 set_op_tag(op, sparc_op_tag);
4123 op_sparc_AndNCCZero = op;
4128 set_op_tag(op, sparc_op_tag);
4134 set_op_tag(op, sparc_op_tag);
4140 set_op_tag(op, sparc_op_tag);
4146 set_op_tag(op, sparc_op_tag);
4152 set_op_tag(op, sparc_op_tag);
4158 set_op_tag(op, sparc_op_tag);
4159 op_sparc_FrameAddr = op;
4164 set_op_tag(op, sparc_op_tag);
4170 set_op_tag(op, sparc_op_tag);
4176 set_op_tag(op, sparc_op_tag);
4182 set_op_tag(op, sparc_op_tag);
4188 set_op_tag(op, sparc_op_tag);
4189 op_sparc_OrCCZero = op;
4194 set_op_tag(op, sparc_op_tag);
4200 set_op_tag(op, sparc_op_tag);
4201 op_sparc_OrNCCZero = op;
4206 set_op_tag(op, sparc_op_tag);
4207 op_sparc_Restore = op;
4212 set_op_tag(op, sparc_op_tag);
4213 op_sparc_RestoreZero = op;
4218 set_op_tag(op, sparc_op_tag);
4219 op_sparc_Return = op;
4224 set_op_tag(op, sparc_op_tag);
4230 set_op_tag(op, sparc_op_tag);
4236 set_op_tag(op, sparc_op_tag);
4237 op_sparc_SMulCCZero = op;
4242 set_op_tag(op, sparc_op_tag);
4243 op_sparc_SMulh = op;
4248 set_op_tag(op, sparc_op_tag);
4254 set_op_tag(op, sparc_op_tag);
4255 op_sparc_SetHi = op;
4260 set_op_tag(op, sparc_op_tag);
4266 set_op_tag(op, sparc_op_tag);
4272 set_op_tag(op, sparc_op_tag);
4278 set_op_tag(op, sparc_op_tag);
4284 set_op_tag(op, sparc_op_tag);
4285 op_sparc_Stbar = op;
4290 set_op_tag(op, sparc_op_tag);
4296 set_op_tag(op, sparc_op_tag);
4302 set_op_tag(op, sparc_op_tag);
4303 op_sparc_SubCC = op;
4306 set_op_tag(op, sparc_op_tag);
4307 op_sparc_SubCC_t = op;
4312 set_op_tag(op, sparc_op_tag);
4313 op_sparc_SubSP = op;
4318 set_op_tag(op, sparc_op_tag);
4322 set_op_tag(op, sparc_op_tag);
4323 op_sparc_SubX_t = op;
4328 set_op_tag(op, sparc_op_tag);
4329 op_sparc_SwitchJmp = op;
4334 set_op_tag(op, sparc_op_tag);
4340 set_op_tag(op, sparc_op_tag);
4341 op_sparc_UMulh = op;
4346 set_op_tag(op, sparc_op_tag);
4352 set_op_tag(op, sparc_op_tag);
4353 op_sparc_XNorCCZero = op;
4358 set_op_tag(op, sparc_op_tag);
4364 set_op_tag(op, sparc_op_tag);
4365 op_sparc_XorCCZero = op;
4370 set_op_tag(op, sparc_op_tag);
4376 set_op_tag(op, sparc_op_tag);
4382 set_op_tag(op, sparc_op_tag);
4383 op_sparc_fbfcc = op;
4388 set_op_tag(op, sparc_op_tag);
4394 set_op_tag(op, sparc_op_tag);
4400 set_op_tag(op, sparc_op_tag);
4401 op_sparc_fftof = op;
4406 set_op_tag(op, sparc_op_tag);
4407 op_sparc_fftoi = op;
4412 set_op_tag(op, sparc_op_tag);
4413 op_sparc_fitof = op;
4418 set_op_tag(op, sparc_op_tag);
4424 set_op_tag(op, sparc_op_tag);
4430 set_op_tag(op, sparc_op_tag);
4435 void sparc_free_opcodes(
void)
4437 free_ir_op(op_sparc_Add); op_sparc_Add = NULL;
4438 free_ir_op(op_sparc_AddCC); op_sparc_AddCC = NULL;
4439 free_ir_op(op_sparc_AddCC_t); op_sparc_AddCC_t = NULL;
4440 free_ir_op(op_sparc_AddSP); op_sparc_AddSP = NULL;
4441 free_ir_op(op_sparc_AddX); op_sparc_AddX = NULL;
4442 free_ir_op(op_sparc_AddX_t); op_sparc_AddX_t = NULL;
4443 free_ir_op(op_sparc_And); op_sparc_And = NULL;
4444 free_ir_op(op_sparc_AndCCZero); op_sparc_AndCCZero = NULL;
4445 free_ir_op(op_sparc_AndN); op_sparc_AndN = NULL;
4446 free_ir_op(op_sparc_AndNCCZero); op_sparc_AndNCCZero = NULL;
4448 free_ir_op(op_sparc_Bicc); op_sparc_Bicc = NULL;
4449 free_ir_op(op_sparc_Call); op_sparc_Call = NULL;
4450 free_ir_op(op_sparc_Cas); op_sparc_Cas = NULL;
4451 free_ir_op(op_sparc_Cmp); op_sparc_Cmp = NULL;
4452 free_ir_op(op_sparc_FrameAddr); op_sparc_FrameAddr = NULL;
4453 free_ir_op(op_sparc_IJmp); op_sparc_IJmp = NULL;
4455 free_ir_op(op_sparc_Ldf); op_sparc_Ldf = NULL;
4457 free_ir_op(op_sparc_OrCCZero); op_sparc_OrCCZero = NULL;
4458 free_ir_op(op_sparc_OrN); op_sparc_OrN = NULL;
4459 free_ir_op(op_sparc_OrNCCZero); op_sparc_OrNCCZero = NULL;
4460 free_ir_op(op_sparc_Restore); op_sparc_Restore = NULL;
4461 free_ir_op(op_sparc_RestoreZero); op_sparc_RestoreZero = NULL;
4462 free_ir_op(op_sparc_Return); op_sparc_Return = NULL;
4463 free_ir_op(op_sparc_SDiv); op_sparc_SDiv = NULL;
4464 free_ir_op(op_sparc_SMul); op_sparc_SMul = NULL;
4465 free_ir_op(op_sparc_SMulCCZero); op_sparc_SMulCCZero = NULL;
4466 free_ir_op(op_sparc_SMulh); op_sparc_SMulh = NULL;
4467 free_ir_op(op_sparc_Save); op_sparc_Save = NULL;
4468 free_ir_op(op_sparc_SetHi); op_sparc_SetHi = NULL;
4469 free_ir_op(op_sparc_Sll); op_sparc_Sll = NULL;
4470 free_ir_op(op_sparc_Sra); op_sparc_Sra = NULL;
4471 free_ir_op(op_sparc_Srl); op_sparc_Srl = NULL;
4473 free_ir_op(op_sparc_Stbar); op_sparc_Stbar = NULL;
4474 free_ir_op(op_sparc_Stf); op_sparc_Stf = NULL;
4475 free_ir_op(op_sparc_Sub); op_sparc_Sub = NULL;
4476 free_ir_op(op_sparc_SubCC); op_sparc_SubCC = NULL;
4477 free_ir_op(op_sparc_SubCC_t); op_sparc_SubCC_t = NULL;
4478 free_ir_op(op_sparc_SubSP); op_sparc_SubSP = NULL;
4479 free_ir_op(op_sparc_SubX); op_sparc_SubX = NULL;
4480 free_ir_op(op_sparc_SubX_t); op_sparc_SubX_t = NULL;
4481 free_ir_op(op_sparc_SwitchJmp); op_sparc_SwitchJmp = NULL;
4482 free_ir_op(op_sparc_UDiv); op_sparc_UDiv = NULL;
4483 free_ir_op(op_sparc_UMulh); op_sparc_UMulh = NULL;
4484 free_ir_op(op_sparc_XNor); op_sparc_XNor = NULL;
4485 free_ir_op(op_sparc_XNorCCZero); op_sparc_XNorCCZero = NULL;
4486 free_ir_op(op_sparc_Xor); op_sparc_Xor = NULL;
4487 free_ir_op(op_sparc_XorCCZero); op_sparc_XorCCZero = NULL;
4488 free_ir_op(op_sparc_fabs); op_sparc_fabs = NULL;
4489 free_ir_op(op_sparc_fadd); op_sparc_fadd = NULL;
4490 free_ir_op(op_sparc_fbfcc); op_sparc_fbfcc = NULL;
4491 free_ir_op(op_sparc_fcmp); op_sparc_fcmp = NULL;
4492 free_ir_op(op_sparc_fdiv); op_sparc_fdiv = NULL;
4493 free_ir_op(op_sparc_fftof); op_sparc_fftof = NULL;
4494 free_ir_op(op_sparc_fftoi); op_sparc_fftoi = NULL;
4495 free_ir_op(op_sparc_fitof); op_sparc_fitof = NULL;
4496 free_ir_op(op_sparc_fmul); op_sparc_fmul = NULL;
4497 free_ir_op(op_sparc_fneg); op_sparc_fneg = NULL;
4498 free_ir_op(op_sparc_fsub); op_sparc_fsub = NULL;
void set_op_dump(ir_op *op, dump_node_func func)
Sets dump callback func for operation op.
void * get_irn_generic_attr(ir_node *node)
Returns a pointer to the node attributes.
ir_mode * mode_X
execution
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_attrs_equal(ir_op *op, node_attrs_equal_func func)
Sets attrs_equal callback func for operation op.
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.
Nodes of this opcode can be placed in any basic block.
struct ir_graph ir_graph
Procedure Graph.
struct dbg_info dbg_info
Source Reference.
struct ir_node ir_node
Procedure Graph Node.
ir_mode * mode_F
ieee754 binary32 float (single precision)
Forking control flow at this operation.
struct ir_mode ir_mode
SSA Value mode.
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.
unsigned get_irn_opcode(const ir_node *node)
Returns the opcode-enum of the node.
struct ir_switch_table ir_switch_table
A switch table mapping integer numbers to proj-numbers of a Switch-node.
struct ir_entity ir_entity
Entity.
ir_graph * get_irn_irg(const ir_node *node)
Returns the ir_graph this node belongs to.
Node must remain in this basic block if it can throw an exception, else can float.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the node.
void ir_op_set_memory_index(ir_op *op, int memory_index)
Sets memory input of operation using memory.
struct ir_op ir_op
Node Opcode.
ir_mode * mode_D
ieee754 binary64 float (double precision)
ir_node * optimize_node(ir_node *n)
Applies local optimizations to a single node.
void free_ir_op(ir_op *code)
Frees an ir operation.
Nodes must remain in this basic block.
ir_mode * mode_T
tuple (none)
This operation has no arguments and is some kind of a constant.
void verify_new_node(ir_node *node)
If firm is built in debug mode, verify that a newly created node is fine.
void set_op_copy_attr(ir_op *op, copy_attr_func func)
Sets attribute copy callback func for operation op.
ir_relation
Relations for comparing numbers.
This operation has a memory input and may change the memory state.
Any other arity, either fixed for the opcode or known when creating the node.