1 #include "gen_ia32_new_nodes.h" 4 #include "ia32_bearch_t.h" 5 #include "gen_ia32_regalloc_if.h" 6 #include "ia32_new_nodes_t.h" 11 ir_op *op_ia32_Adc = NULL;
12 ir_op *op_ia32_Add = NULL;
13 ir_op *op_ia32_AddMem = NULL;
14 ir_op *op_ia32_AddSP = NULL;
15 ir_op *op_ia32_Adds = NULL;
16 ir_op *op_ia32_And = NULL;
17 ir_op *op_ia32_AndMem = NULL;
18 ir_op *op_ia32_Andnp = NULL;
19 ir_op *op_ia32_Andp = NULL;
20 ir_op *op_ia32_Breakpoint = NULL;
21 ir_op *op_ia32_Bsf = NULL;
22 ir_op *op_ia32_Bsr = NULL;
23 ir_op *op_ia32_Bswap = NULL;
24 ir_op *op_ia32_Bswap16 = NULL;
25 ir_op *op_ia32_Bt = NULL;
26 ir_op *op_ia32_CMovcc = NULL;
27 ir_op *op_ia32_Call = NULL;
28 ir_op *op_ia32_ChangeCW = NULL;
29 ir_op *op_ia32_Cltd = NULL;
30 ir_op *op_ia32_Cmc = NULL;
31 ir_op *op_ia32_Cmp = NULL;
32 ir_op *op_ia32_CmpXChgMem = NULL;
33 ir_op *op_ia32_Const = NULL;
34 ir_op *op_ia32_Conv_FP2FP = NULL;
35 ir_op *op_ia32_Conv_FP2I = NULL;
36 ir_op *op_ia32_Conv_I2FP = NULL;
37 ir_op *op_ia32_Conv_I2I = NULL;
38 ir_op *op_ia32_CopyB = NULL;
39 ir_op *op_ia32_CopyB_i = NULL;
40 ir_op *op_ia32_CopyEbpEsp = NULL;
41 ir_op *op_ia32_CvtSI2SD = NULL;
42 ir_op *op_ia32_CvtSI2SS = NULL;
43 ir_op *op_ia32_Cwtl = NULL;
44 ir_op *op_ia32_Dec = NULL;
45 ir_op *op_ia32_DecMem = NULL;
46 ir_op *op_ia32_Div = NULL;
47 ir_op *op_ia32_Divs = NULL;
48 ir_op *op_ia32_Enter = NULL;
49 ir_op *op_ia32_FldCW = NULL;
50 ir_op *op_ia32_FnstCW = NULL;
51 ir_op *op_ia32_FnstCWNOP = NULL;
52 ir_op *op_ia32_FtstFnstsw = NULL;
53 ir_op *op_ia32_FucomFnstsw = NULL;
54 ir_op *op_ia32_Fucomi = NULL;
55 ir_op *op_ia32_FucomppFnstsw = NULL;
56 ir_op *op_ia32_GetEIP = NULL;
57 ir_op *op_ia32_IDiv = NULL;
58 ir_op *op_ia32_IJmp = NULL;
59 ir_op *op_ia32_IMul = NULL;
60 ir_op *op_ia32_IMul1OP = NULL;
61 ir_op *op_ia32_IMulImm = NULL;
62 ir_op *op_ia32_Immediate = NULL;
63 ir_op *op_ia32_Inc = NULL;
64 ir_op *op_ia32_IncMem = NULL;
65 ir_op *op_ia32_Inport = NULL;
66 ir_op *op_ia32_Jcc = NULL;
67 ir_op *op_ia32_Jmp = NULL;
68 ir_op *op_ia32_LdTls = NULL;
69 ir_op *op_ia32_Lea = NULL;
70 ir_op *op_ia32_Leave = NULL;
71 ir_op *op_ia32_Load = NULL;
72 ir_op *op_ia32_Maxs = NULL;
73 ir_op *op_ia32_Mins = NULL;
74 ir_op *op_ia32_Minus64 = NULL;
75 ir_op *op_ia32_Movd = NULL;
76 ir_op *op_ia32_Mul = NULL;
77 ir_op *op_ia32_Muls = NULL;
78 ir_op *op_ia32_Neg = NULL;
79 ir_op *op_ia32_NegMem = NULL;
80 ir_op *op_ia32_NoReg_FP = NULL;
81 ir_op *op_ia32_NoReg_GP = NULL;
82 ir_op *op_ia32_NoReg_XMM = NULL;
83 ir_op *op_ia32_Not = NULL;
84 ir_op *op_ia32_NotMem = NULL;
85 ir_op *op_ia32_Or = NULL;
86 ir_op *op_ia32_OrMem = NULL;
87 ir_op *op_ia32_Orp = NULL;
88 ir_op *op_ia32_Outport = NULL;
89 ir_op *op_ia32_Pop = NULL;
90 ir_op *op_ia32_PopMem = NULL;
91 ir_op *op_ia32_Popcnt = NULL;
92 ir_op *op_ia32_Prefetch = NULL;
93 ir_op *op_ia32_PrefetchNTA = NULL;
94 ir_op *op_ia32_PrefetchT0 = NULL;
95 ir_op *op_ia32_PrefetchT1 = NULL;
96 ir_op *op_ia32_PrefetchT2 = NULL;
97 ir_op *op_ia32_PrefetchW = NULL;
98 ir_op *op_ia32_Pslld = NULL;
99 ir_op *op_ia32_Psllq = NULL;
100 ir_op *op_ia32_Psrld = NULL;
101 ir_op *op_ia32_Push = NULL;
102 ir_op *op_ia32_PushEax = NULL;
103 ir_op *op_ia32_Return = NULL;
104 ir_op *op_ia32_Rol = NULL;
105 ir_op *op_ia32_RolMem = NULL;
106 ir_op *op_ia32_Ror = NULL;
107 ir_op *op_ia32_RorMem = NULL;
108 ir_op *op_ia32_Sahf = NULL;
109 ir_op *op_ia32_Sar = NULL;
110 ir_op *op_ia32_SarMem = NULL;
111 ir_op *op_ia32_Sbb = NULL;
112 ir_op *op_ia32_Sbb0 = NULL;
113 ir_op *op_ia32_Setcc = NULL;
114 ir_op *op_ia32_SetccMem = NULL;
115 ir_op *op_ia32_Shl = NULL;
116 ir_op *op_ia32_ShlD = NULL;
117 ir_op *op_ia32_ShlMem = NULL;
118 ir_op *op_ia32_Shr = NULL;
119 ir_op *op_ia32_ShrD = NULL;
120 ir_op *op_ia32_ShrMem = NULL;
121 ir_op *op_ia32_Stc = NULL;
122 ir_op *op_ia32_Store = NULL;
123 ir_op *op_ia32_Sub = NULL;
124 ir_op *op_ia32_SubMem = NULL;
125 ir_op *op_ia32_SubSP = NULL;
126 ir_op *op_ia32_Subs = NULL;
127 ir_op *op_ia32_SwitchJmp = NULL;
128 ir_op *op_ia32_Test = NULL;
129 ir_op *op_ia32_UD2 = NULL;
130 ir_op *op_ia32_Ucomis = NULL;
131 ir_op *op_ia32_Xor = NULL;
132 ir_op *op_ia32_Xor0 = NULL;
133 ir_op *op_ia32_XorHighLow = NULL;
134 ir_op *op_ia32_XorMem = NULL;
135 ir_op *op_ia32_Xorp = NULL;
136 ir_op *op_ia32_emms = NULL;
137 ir_op *op_ia32_fabs = NULL;
138 ir_op *op_ia32_fadd = NULL;
139 ir_op *op_ia32_fchs = NULL;
140 ir_op *op_ia32_fdiv = NULL;
141 ir_op *op_ia32_fdup = NULL;
142 ir_op *op_ia32_femms = NULL;
143 ir_op *op_ia32_ffreep = NULL;
144 ir_op *op_ia32_fild = NULL;
145 ir_op *op_ia32_fist = NULL;
146 ir_op *op_ia32_fistp = NULL;
147 ir_op *op_ia32_fisttp = NULL;
148 ir_op *op_ia32_fld = NULL;
149 ir_op *op_ia32_fld1 = NULL;
150 ir_op *op_ia32_fldl2e = NULL;
151 ir_op *op_ia32_fldl2t = NULL;
152 ir_op *op_ia32_fldlg2 = NULL;
153 ir_op *op_ia32_fldln2 = NULL;
154 ir_op *op_ia32_fldpi = NULL;
155 ir_op *op_ia32_fldz = NULL;
156 ir_op *op_ia32_fmul = NULL;
157 ir_op *op_ia32_fpop = NULL;
158 ir_op *op_ia32_fst = NULL;
159 ir_op *op_ia32_fstp = NULL;
160 ir_op *op_ia32_fsub = NULL;
161 ir_op *op_ia32_fxch = NULL;
162 ir_op *op_ia32_l_Adc = NULL;
163 ir_op *op_ia32_l_Add = NULL;
164 ir_op *op_ia32_l_FloattoLL = NULL;
165 ir_op *op_ia32_l_IMul = NULL;
166 ir_op *op_ia32_l_LLtoFloat = NULL;
167 ir_op *op_ia32_l_Minus64 = NULL;
168 ir_op *op_ia32_l_Mul = NULL;
169 ir_op *op_ia32_l_Sbb = NULL;
170 ir_op *op_ia32_l_Sub = NULL;
171 ir_op *op_ia32_xAllOnes = NULL;
172 ir_op *op_ia32_xLoad = NULL;
173 ir_op *op_ia32_xPzero = NULL;
174 ir_op *op_ia32_xStore = NULL;
175 ir_op *op_ia32_xZero = NULL;
176 ir_op *op_ia32_xxLoad = NULL;
177 ir_op *op_ia32_xxStore = NULL;
180 static int ia32_opcode_start = -1;
183 #define ia32_op_tag FOURCC('i', 'a', '3', '2') 186 int is_ia32_op(
const ir_op *op)
188 return get_op_tag(op) == ia32_op_tag;
192 int is_ia32_irn(
const ir_node *node)
197 int get_ia32_irn_opcode(
const ir_node *node)
199 assert(is_ia32_irn(node));
204 #define BIT(x) (1 << (x)) 206 static const unsigned ia32_limit_gp_eax_ebx_ecx_edx[] = { BIT(REG_GP_EAX) | BIT(REG_GP_EBX) | BIT(REG_GP_ECX) | BIT(REG_GP_EDX), 0 };
207 static const unsigned ia32_limit_gp_esp[] = { BIT(REG_GP_ESP), 0 };
208 static const unsigned ia32_limit_gp_gp_NOREG[] = { BIT(REG_GP_GP_NOREG), 0 };
209 static const unsigned ia32_limit_gp_ebp[] = { BIT(REG_GP_EBP), 0 };
210 static const unsigned ia32_limit_fp_fp_NOREG[] = { BIT(REG_FP_FP_NOREG), 0 };
211 static const unsigned ia32_limit_xmm_xmm_NOREG[] = { BIT(REG_XMM_XMM_NOREG), 0 };
213 static const arch_register_req_t ia32_requirements_gp_in_r3_in_r4 = {
214 .cls = &ia32_reg_classes[CLASS_ia32_gp],
216 .should_be_same = 24,
217 .must_be_different = 0,
221 static const arch_register_req_t ia32_requirements_gp_eax_ebx_ecx_edx = {
222 .cls = &ia32_reg_classes[CLASS_ia32_gp],
223 .limited = ia32_limit_gp_eax_ebx_ecx_edx,
225 .must_be_different = 0,
229 static const arch_register_req_t ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4 = {
230 .cls = &ia32_reg_classes[CLASS_ia32_gp],
231 .limited = ia32_limit_gp_eax_ebx_ecx_edx,
232 .should_be_same = 24,
233 .must_be_different = 0,
237 static const arch_register_req_t ia32_requirements_gp_esp_I = {
238 .cls = &ia32_reg_classes[CLASS_ia32_gp],
239 .limited = ia32_limit_gp_esp,
241 .must_be_different = 0,
246 static const arch_register_req_t ia32_requirements_xmm_in_r3_in_r4 = {
247 .cls = &ia32_reg_classes[CLASS_ia32_xmm],
249 .should_be_same = 24,
250 .must_be_different = 0,
254 static const arch_register_req_t ia32_requirements_xmm_in_r3_not_in_r4 = {
255 .cls = &ia32_reg_classes[CLASS_ia32_xmm],
258 .must_be_different = 16,
262 static const arch_register_req_t ia32_requirements_gp_in_r0 = {
263 .cls = &ia32_reg_classes[CLASS_ia32_gp],
266 .must_be_different = 0,
270 static const arch_register_req_t ia32_requirements_gp_eax_ebx_ecx_edx_in_r0 = {
271 .cls = &ia32_reg_classes[CLASS_ia32_gp],
272 .limited = ia32_limit_gp_eax_ebx_ecx_edx,
274 .must_be_different = 0,
278 static const arch_register_req_t ia32_requirements_gp_gp_NOREG_I = {
279 .cls = &ia32_reg_classes[CLASS_ia32_gp],
280 .limited = ia32_limit_gp_gp_NOREG,
282 .must_be_different = 0,
287 static const arch_register_req_t ia32_requirements_gp_ebp_I = {
288 .cls = &ia32_reg_classes[CLASS_ia32_gp],
289 .limited = ia32_limit_gp_ebp,
291 .must_be_different = 0,
296 static const arch_register_req_t ia32_requirements_gp_in_r1 = {
297 .cls = &ia32_reg_classes[CLASS_ia32_gp],
300 .must_be_different = 0,
304 static const arch_register_req_t ia32_requirements_fp_fp_NOREG_I = {
305 .cls = &ia32_reg_classes[CLASS_ia32_fp],
306 .limited = ia32_limit_fp_fp_NOREG,
308 .must_be_different = 0,
313 static const arch_register_req_t ia32_requirements_xmm_xmm_NOREG_I = {
314 .cls = &ia32_reg_classes[CLASS_ia32_xmm],
315 .limited = ia32_limit_xmm_xmm_NOREG,
317 .must_be_different = 0,
322 static const arch_register_req_t ia32_requirements_xmm_in_r0_not_in_r1 = {
323 .cls = &ia32_reg_classes[CLASS_ia32_xmm],
326 .must_be_different = 2,
330 static const arch_register_req_t ia32_requirements_gp_in_r0_not_in_r1 = {
331 .cls = &ia32_reg_classes[CLASS_ia32_gp],
334 .must_be_different = 2,
338 static const arch_register_req_t ia32_requirements_gp_in_r3 = {
339 .cls = &ia32_reg_classes[CLASS_ia32_gp],
342 .must_be_different = 0,
346 static const arch_register_req_t ia32_requirements_gp_in_r0_not_in_r1_not_in_r2 = {
347 .cls = &ia32_reg_classes[CLASS_ia32_gp],
350 .must_be_different = 6,
354 static const arch_register_req_t ia32_requirements_gp_in_r0_in_r1 = {
355 .cls = &ia32_reg_classes[CLASS_ia32_gp],
358 .must_be_different = 0,
362 static const arch_register_req_t ia32_requirements_gp_eax_ebx_ecx_edx_in_r3 = {
363 .cls = &ia32_reg_classes[CLASS_ia32_gp],
364 .limited = ia32_limit_gp_eax_ebx_ecx_edx,
366 .must_be_different = 0,
370 static const arch_register_req_t ia32_requirements_xmm_in_r3 = {
371 .cls = &ia32_reg_classes[CLASS_ia32_xmm],
374 .must_be_different = 0,
378 static const arch_register_req_t ia32_requirements_fp_fp_K = {
379 .cls = &ia32_reg_classes[CLASS_ia32_fp],
388 static arch_register_req_t
const *in_reqs[] = {
389 &ia32_class_reg_req_gp,
390 &ia32_class_reg_req_gp,
391 &arch_memory_requirement,
392 &ia32_class_reg_req_gp,
393 &ia32_class_reg_req_gp,
394 &ia32_class_reg_req_flags,
411 arch_irn_flags_t irn_flags = arch_irn_flags_none;
412 irn_flags |= arch_irn_flag_modify_flags;
418 x86_condition_code_t condition_code = x86_cc_carry;
419 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
420 init_ia32_condcode_attributes(res, condition_code);
421 set_ia32_am_support(res, ia32_am_binary);
422 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
423 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
424 out_infos[1].req = &ia32_class_reg_req_flags;
425 out_infos[2].req = &arch_memory_requirement;
433 static arch_register_req_t
const *in_reqs[] = {
434 &ia32_class_reg_req_gp,
435 &ia32_class_reg_req_gp,
436 &arch_memory_requirement,
437 &ia32_class_reg_req_gp,
438 &ia32_class_reg_req_gp,
454 arch_irn_flags_t irn_flags = arch_irn_flags_none;
455 irn_flags |= arch_irn_flag_modify_flags;
456 irn_flags |= arch_irn_flag_rematerializable;
462 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
463 set_ia32_am_support(res, ia32_am_binary);
464 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
465 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
466 out_infos[1].req = &ia32_class_reg_req_flags;
467 out_infos[2].req = &arch_memory_requirement;
475 static arch_register_req_t
const *in_reqs[] = {
476 &ia32_class_reg_req_gp,
477 &ia32_class_reg_req_gp,
478 &arch_memory_requirement,
479 &ia32_requirements_gp_eax_ebx_ecx_edx,
480 &ia32_requirements_gp_eax_ebx_ecx_edx,
496 arch_irn_flags_t irn_flags = arch_irn_flags_none;
497 irn_flags |= arch_irn_flag_modify_flags;
498 irn_flags |= arch_irn_flag_rematerializable;
504 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
505 set_ia32_am_support(res, ia32_am_binary);
506 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
507 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
508 out_infos[1].req = &ia32_class_reg_req_flags;
509 out_infos[2].req = &arch_memory_requirement;
517 static arch_register_req_t
const *in_reqs[] = {
518 &ia32_class_reg_req_gp,
519 &ia32_class_reg_req_gp,
520 &arch_memory_requirement,
521 &ia32_class_reg_req_gp,
536 arch_irn_flags_t irn_flags = arch_irn_flags_none;
537 irn_flags |= arch_irn_flag_modify_flags;
538 irn_flags |= arch_irn_flag_rematerializable;
544 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
545 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
546 out_infos[0].req = &arch_no_requirement;
547 out_infos[1].req = &ia32_class_reg_req_flags;
548 out_infos[2].req = &arch_memory_requirement;
556 static arch_register_req_t
const *in_reqs[] = {
557 &ia32_class_reg_req_gp,
558 &ia32_class_reg_req_gp,
559 &arch_memory_requirement,
560 &ia32_requirements_gp_eax_ebx_ecx_edx,
575 arch_irn_flags_t irn_flags = arch_irn_flags_none;
576 irn_flags |= arch_irn_flag_modify_flags;
577 irn_flags |= arch_irn_flag_rematerializable;
583 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
584 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
585 out_infos[0].req = &arch_no_requirement;
586 out_infos[1].req = &ia32_class_reg_req_flags;
587 out_infos[2].req = &arch_memory_requirement;
595 static arch_register_req_t
const *in_reqs[] = {
596 &ia32_class_reg_req_gp,
597 &ia32_class_reg_req_gp,
598 &arch_memory_requirement,
599 &ia32_single_reg_req_gp_esp,
600 &ia32_class_reg_req_gp,
616 arch_irn_flags_t irn_flags = arch_irn_flags_none;
617 irn_flags |= arch_irn_flag_modify_flags;
623 x86_insn_size_t
const size = X86_SIZE_32;
624 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
625 set_ia32_am_support(res, ia32_am_binary);
626 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
627 out_infos[0].req = &ia32_requirements_gp_esp_I;
628 out_infos[1].req = &arch_memory_requirement;
636 static arch_register_req_t
const *in_reqs[] = {
637 &ia32_class_reg_req_gp,
638 &ia32_class_reg_req_gp,
639 &arch_memory_requirement,
640 &ia32_class_reg_req_xmm,
641 &ia32_class_reg_req_xmm,
654 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Adds, ia32_mode_float64, 5, in);
657 arch_irn_flags_t irn_flags = arch_irn_flags_none;
658 irn_flags |= arch_irn_flag_rematerializable;
664 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
665 set_ia32_am_support(res, ia32_am_binary);
666 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
667 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
668 out_infos[1].req = &ia32_class_reg_req_flags;
669 out_infos[2].req = &arch_memory_requirement;
677 static arch_register_req_t
const *in_reqs[] = {
678 &ia32_class_reg_req_gp,
679 &ia32_class_reg_req_gp,
680 &arch_memory_requirement,
681 &ia32_class_reg_req_gp,
682 &ia32_class_reg_req_gp,
698 arch_irn_flags_t irn_flags = arch_irn_flags_none;
699 irn_flags |= arch_irn_flag_modify_flags;
700 irn_flags |= arch_irn_flag_rematerializable;
706 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
707 set_ia32_am_support(res, ia32_am_binary);
708 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
709 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
710 out_infos[1].req = &ia32_class_reg_req_flags;
711 out_infos[2].req = &arch_memory_requirement;
719 static arch_register_req_t
const *in_reqs[] = {
720 &ia32_class_reg_req_gp,
721 &ia32_class_reg_req_gp,
722 &arch_memory_requirement,
723 &ia32_requirements_gp_eax_ebx_ecx_edx,
724 &ia32_requirements_gp_eax_ebx_ecx_edx,
740 arch_irn_flags_t irn_flags = arch_irn_flags_none;
741 irn_flags |= arch_irn_flag_modify_flags;
742 irn_flags |= arch_irn_flag_rematerializable;
748 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
749 set_ia32_am_support(res, ia32_am_binary);
750 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
751 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
752 out_infos[1].req = &ia32_class_reg_req_flags;
753 out_infos[2].req = &arch_memory_requirement;
761 static arch_register_req_t
const *in_reqs[] = {
762 &ia32_class_reg_req_gp,
763 &ia32_class_reg_req_gp,
764 &arch_memory_requirement,
765 &ia32_class_reg_req_gp,
780 arch_irn_flags_t irn_flags = arch_irn_flags_none;
781 irn_flags |= arch_irn_flag_modify_flags;
782 irn_flags |= arch_irn_flag_rematerializable;
788 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
789 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
790 out_infos[0].req = &arch_no_requirement;
791 out_infos[1].req = &ia32_class_reg_req_flags;
792 out_infos[2].req = &arch_memory_requirement;
800 static arch_register_req_t
const *in_reqs[] = {
801 &ia32_class_reg_req_gp,
802 &ia32_class_reg_req_gp,
803 &arch_memory_requirement,
804 &ia32_requirements_gp_eax_ebx_ecx_edx,
819 arch_irn_flags_t irn_flags = arch_irn_flags_none;
820 irn_flags |= arch_irn_flag_modify_flags;
821 irn_flags |= arch_irn_flag_rematerializable;
827 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
828 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
829 out_infos[0].req = &arch_no_requirement;
830 out_infos[1].req = &ia32_class_reg_req_flags;
831 out_infos[2].req = &arch_memory_requirement;
839 static arch_register_req_t
const *in_reqs[] = {
840 &ia32_class_reg_req_gp,
841 &ia32_class_reg_req_gp,
842 &arch_memory_requirement,
843 &ia32_class_reg_req_xmm,
844 &ia32_class_reg_req_xmm,
857 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Andnp, ia32_mode_float64, 5, in);
860 arch_irn_flags_t irn_flags = arch_irn_flags_none;
861 irn_flags |= arch_irn_flag_rematerializable;
867 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
868 set_ia32_am_support(res, ia32_am_binary);
869 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
870 out_infos[0].req = &ia32_requirements_xmm_in_r3_not_in_r4;
871 out_infos[1].req = &ia32_class_reg_req_flags;
872 out_infos[2].req = &arch_memory_requirement;
880 static arch_register_req_t
const *in_reqs[] = {
881 &ia32_class_reg_req_gp,
882 &ia32_class_reg_req_gp,
883 &arch_memory_requirement,
884 &ia32_class_reg_req_xmm,
885 &ia32_class_reg_req_xmm,
898 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Andp, ia32_mode_float64, 5, in);
901 arch_irn_flags_t irn_flags = arch_irn_flags_none;
902 irn_flags |= arch_irn_flag_rematerializable;
908 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
909 set_ia32_am_support(res, ia32_am_binary);
910 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
911 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
912 out_infos[1].req = &ia32_class_reg_req_flags;
913 out_infos[2].req = &arch_memory_requirement;
921 static arch_register_req_t
const *in_reqs[] = {
922 &arch_memory_requirement,
934 arch_irn_flags_t irn_flags = arch_irn_flags_none;
940 x86_insn_size_t
const size = X86_SIZE_32;
941 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
942 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
943 out_infos[0].req = &arch_memory_requirement;
951 static arch_register_req_t
const *in_reqs[] = {
952 &ia32_class_reg_req_gp,
953 &ia32_class_reg_req_gp,
954 &arch_memory_requirement,
955 &ia32_class_reg_req_gp,
970 arch_irn_flags_t irn_flags = arch_irn_flags_none;
971 irn_flags |= arch_irn_flag_modify_flags;
972 irn_flags |= arch_irn_flag_rematerializable;
978 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
979 set_ia32_am_support(res, ia32_am_unary);
980 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
981 out_infos[0].req = &ia32_class_reg_req_gp;
982 out_infos[1].req = &ia32_class_reg_req_flags;
983 out_infos[2].req = &arch_memory_requirement;
991 static arch_register_req_t
const *in_reqs[] = {
992 &ia32_class_reg_req_gp,
993 &ia32_class_reg_req_gp,
994 &arch_memory_requirement,
995 &ia32_class_reg_req_gp,
1007 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bsr, ia32_mode_gp, 4, in);
1010 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1011 irn_flags |= arch_irn_flag_modify_flags;
1012 irn_flags |= arch_irn_flag_rematerializable;
1015 int const n_res = 3;
1018 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1019 set_ia32_am_support(res, ia32_am_unary);
1020 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1021 out_infos[0].req = &ia32_class_reg_req_gp;
1022 out_infos[1].req = &ia32_class_reg_req_flags;
1023 out_infos[2].req = &arch_memory_requirement;
1031 static arch_register_req_t
const *in_reqs[] = {
1032 &ia32_class_reg_req_gp,
1041 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bswap, ia32_mode_gp, 1, in);
1044 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1045 irn_flags |= arch_irn_flag_rematerializable;
1048 int const n_res = 1;
1051 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1052 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1053 out_infos[0].req = &ia32_requirements_gp_in_r0;
1061 static arch_register_req_t
const *in_reqs[] = {
1062 &ia32_requirements_gp_eax_ebx_ecx_edx,
1071 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bswap16, ia32_mode_gp, 1, in);
1074 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1075 irn_flags |= arch_irn_flag_rematerializable;
1078 int const n_res = 1;
1081 x86_insn_size_t
const size = X86_SIZE_8;
1082 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1083 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1084 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r0;
1092 static arch_register_req_t
const *in_reqs[] = {
1093 &ia32_class_reg_req_gp,
1094 &ia32_class_reg_req_gp,
1104 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bt, ia32_mode_flags, 2, in);
1107 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1108 irn_flags |= arch_irn_flag_modify_flags;
1109 irn_flags |= arch_irn_flag_rematerializable;
1112 int const n_res = 1;
1115 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1116 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1117 out_infos[0].req = &ia32_class_reg_req_flags;
1125 static arch_register_req_t
const *in_reqs[] = {
1126 &ia32_class_reg_req_gp,
1127 &ia32_class_reg_req_gp,
1128 &arch_memory_requirement,
1129 &ia32_class_reg_req_gp,
1130 &ia32_class_reg_req_gp,
1131 &ia32_single_reg_req_flags_eflags,
1145 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CMovcc, ia32_mode_gp, 6, in);
1148 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1151 int const n_res = 3;
1154 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1155 init_ia32_condcode_attributes(res, condition_code);
1156 set_ia32_am_support(res, ia32_am_binary);
1157 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1158 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
1159 out_infos[1].req = &arch_no_requirement;
1160 out_infos[2].req = &arch_memory_requirement;
1166 ir_node *new_bd_ia32_Call(
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, uint8_t pop, uint8_t n_reg_results)
1174 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1175 irn_flags |= arch_irn_flag_modify_flags;
1180 x86_insn_size_t
const size = X86_SIZE_32;
1181 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1182 init_ia32_call_attributes(res, pop, n_reg_results);
1183 set_ia32_am_support(res, ia32_am_unary);
1191 arch_register_req_t
const **
const in_reqs = NULL;
1195 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ChangeCW, ia32_mode_fpcw, 0, NULL);
1198 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1199 irn_flags |= arch_irn_flag_not_scheduled;
1202 int const n_res = 1;
1205 x86_insn_size_t
const size = X86_SIZE_32;
1206 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1207 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1208 out_infos[0].req = &ia32_single_reg_req_fp_cw_fpcw;
1216 static arch_register_req_t
const *in_reqs[] = {
1217 &ia32_single_reg_req_gp_eax,
1226 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cltd, ia32_mode_gp, 1, in);
1229 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1232 int const n_res = 1;
1235 x86_insn_size_t
const size = X86_SIZE_32;
1236 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1237 arch_set_additional_pressure(res, &ia32_reg_classes[CLASS_ia32_gp], 1);
1238 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1239 out_infos[0].req = &ia32_single_reg_req_gp_edx;
1247 static arch_register_req_t
const *in_reqs[] = {
1248 &ia32_class_reg_req_flags,
1257 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmc, ia32_mode_flags, 1, in);
1260 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1261 irn_flags |= arch_irn_flag_modify_flags;
1264 int const n_res = 1;
1267 x86_condition_code_t condition_code = x86_cc_carry;
1268 x86_insn_size_t
const size = X86_SIZE_32;
1269 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1270 init_ia32_condcode_attributes(res, condition_code);
1271 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1272 out_infos[0].req = &ia32_class_reg_req_flags;
1280 static arch_register_req_t
const *in_reqs[] = {
1281 &ia32_class_reg_req_gp,
1282 &ia32_class_reg_req_gp,
1283 &arch_memory_requirement,
1284 &ia32_class_reg_req_gp,
1285 &ia32_class_reg_req_gp,
1298 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmp, ia32_mode_flags, 5, in);
1301 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1302 irn_flags |= arch_irn_flag_modify_flags;
1303 irn_flags |= arch_irn_flag_rematerializable;
1306 int const n_res = 3;
1309 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1310 set_ia32_am_support(res, ia32_am_binary);
1311 attr->ins_permuted = ins_permuted;
1312 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1313 out_infos[0].req = &ia32_class_reg_req_flags;
1314 out_infos[1].req = &arch_no_requirement;
1315 out_infos[2].req = &arch_memory_requirement;
1323 static arch_register_req_t
const *in_reqs[] = {
1324 &ia32_class_reg_req_gp,
1325 &ia32_class_reg_req_gp,
1326 &arch_memory_requirement,
1327 &ia32_requirements_gp_eax_ebx_ecx_edx,
1328 &ia32_requirements_gp_eax_ebx_ecx_edx,
1341 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmp, ia32_mode_flags, 5, in);
1344 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1345 irn_flags |= arch_irn_flag_modify_flags;
1346 irn_flags |= arch_irn_flag_rematerializable;
1349 int const n_res = 3;
1352 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1353 set_ia32_am_support(res, ia32_am_binary);
1354 attr->ins_permuted = ins_permuted;
1355 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1356 out_infos[0].req = &ia32_class_reg_req_flags;
1357 out_infos[1].req = &arch_no_requirement;
1358 out_infos[2].req = &arch_memory_requirement;
1366 static arch_register_req_t
const *in_reqs[] = {
1367 &ia32_class_reg_req_gp,
1368 &ia32_class_reg_req_gp,
1369 &arch_memory_requirement,
1370 &ia32_single_reg_req_gp_eax,
1371 &ia32_class_reg_req_gp,
1387 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1388 irn_flags |= arch_irn_flag_modify_flags;
1389 irn_flags |= arch_irn_flag_rematerializable;
1392 int const n_res = 3;
1395 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1396 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1397 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1398 out_infos[1].req = &ia32_class_reg_req_flags;
1399 out_infos[2].req = &arch_memory_requirement;
1407 arch_register_req_t
const **
const in_reqs = NULL;
1411 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Const, ia32_mode_gp, 0, NULL);
1414 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1415 irn_flags |= arch_irn_flag_rematerializable;
1418 int const n_res = 1;
1421 x86_insn_size_t
const size = X86_SIZE_32;
1422 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1423 init_ia32_immediate_attributes(res, imm);
1424 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1425 out_infos[0].req = &ia32_class_reg_req_gp;
1433 static arch_register_req_t
const *in_reqs[] = {
1434 &ia32_class_reg_req_gp,
1435 &ia32_class_reg_req_gp,
1436 &arch_memory_requirement,
1437 &ia32_class_reg_req_xmm,
1449 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_FP2FP, ia32_mode_float64, 4, in);
1452 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1455 int const n_res = 2;
1458 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1459 set_ia32_am_support(res, ia32_am_unary);
1460 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1461 out_infos[0].req = &ia32_class_reg_req_xmm;
1462 out_infos[1].req = &arch_memory_requirement;
1470 static arch_register_req_t
const *in_reqs[] = {
1471 &ia32_class_reg_req_gp,
1472 &ia32_class_reg_req_gp,
1473 &arch_memory_requirement,
1474 &ia32_class_reg_req_xmm,
1486 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_FP2I, ia32_mode_gp, 4, in);
1489 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1492 int const n_res = 2;
1495 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1496 set_ia32_am_support(res, ia32_am_unary);
1497 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1498 out_infos[0].req = &ia32_class_reg_req_gp;
1499 out_infos[1].req = &arch_memory_requirement;
1507 static arch_register_req_t
const *in_reqs[] = {
1508 &ia32_class_reg_req_gp,
1509 &ia32_class_reg_req_gp,
1510 &arch_memory_requirement,
1511 &ia32_class_reg_req_gp,
1523 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2FP, ia32_mode_float64, 4, in);
1526 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1529 int const n_res = 2;
1532 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1533 set_ia32_am_support(res, ia32_am_unary);
1534 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1535 out_infos[0].req = &ia32_class_reg_req_xmm;
1536 out_infos[1].req = &arch_memory_requirement;
1544 static arch_register_req_t
const *in_reqs[] = {
1545 &ia32_class_reg_req_gp,
1546 &ia32_class_reg_req_gp,
1547 &arch_memory_requirement,
1548 &ia32_class_reg_req_gp,
1560 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2I, ia32_mode_gp, 4, in);
1563 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1566 int const n_res = 5;
1569 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1570 set_ia32_am_support(res, ia32_am_unary);
1571 attr->sign_extend = sign_extend;
1572 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1573 out_infos[0].req = &ia32_class_reg_req_gp;
1574 out_infos[1].req = &arch_no_requirement;
1575 out_infos[2].req = &arch_memory_requirement;
1576 out_infos[3].req = &arch_exec_requirement;
1577 out_infos[4].req = &arch_exec_requirement;
1585 static arch_register_req_t
const *in_reqs[] = {
1586 &ia32_class_reg_req_gp,
1587 &ia32_class_reg_req_gp,
1588 &arch_memory_requirement,
1589 &ia32_requirements_gp_eax_ebx_ecx_edx,
1601 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2I, ia32_mode_gp, 4, in);
1604 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1607 int const n_res = 5;
1610 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1611 set_ia32_am_support(res, ia32_am_unary);
1612 attr->sign_extend = sign_extend;
1613 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1614 out_infos[0].req = &ia32_class_reg_req_gp;
1615 out_infos[1].req = &arch_no_requirement;
1616 out_infos[2].req = &arch_memory_requirement;
1617 out_infos[3].req = &arch_exec_requirement;
1618 out_infos[4].req = &arch_exec_requirement;
1626 static arch_register_req_t
const *in_reqs[] = {
1627 &ia32_single_reg_req_gp_edi,
1628 &ia32_single_reg_req_gp_esi,
1629 &ia32_single_reg_req_gp_ecx,
1630 &arch_memory_requirement,
1645 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1648 int const n_res = 4;
1651 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1652 init_ia32_copyb_attributes(res, size);
1653 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1654 out_infos[0].req = &ia32_single_reg_req_gp_edi;
1655 out_infos[1].req = &ia32_single_reg_req_gp_esi;
1656 out_infos[2].req = &ia32_single_reg_req_gp_ecx;
1657 out_infos[3].req = &arch_memory_requirement;
1665 static arch_register_req_t
const *in_reqs[] = {
1666 &ia32_single_reg_req_gp_edi,
1667 &ia32_single_reg_req_gp_esi,
1668 &arch_memory_requirement,
1682 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1685 int const n_res = 3;
1688 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1689 init_ia32_copyb_attributes(res, size);
1690 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1691 out_infos[0].req = &ia32_single_reg_req_gp_edi;
1692 out_infos[1].req = &ia32_single_reg_req_gp_esi;
1693 out_infos[2].req = &arch_memory_requirement;
1701 static arch_register_req_t
const *in_reqs[] = {
1702 &ia32_single_reg_req_gp_ebp,
1711 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CopyEbpEsp, ia32_mode_gp, 1, in);
1714 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1717 int const n_res = 1;
1720 x86_insn_size_t
const size = X86_SIZE_32;
1721 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1722 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1723 out_infos[0].req = &ia32_requirements_gp_esp_I;
1731 static arch_register_req_t
const *in_reqs[] = {
1732 &ia32_class_reg_req_gp,
1733 &ia32_class_reg_req_gp,
1734 &arch_memory_requirement,
1735 &ia32_class_reg_req_gp,
1747 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CvtSI2SD, ia32_mode_float64, 4, in);
1750 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1753 int const n_res = 1;
1756 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1757 set_ia32_am_support(res, ia32_am_unary);
1758 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1759 out_infos[0].req = &ia32_class_reg_req_xmm;
1767 static arch_register_req_t
const *in_reqs[] = {
1768 &ia32_class_reg_req_gp,
1769 &ia32_class_reg_req_gp,
1770 &arch_memory_requirement,
1771 &ia32_class_reg_req_gp,
1783 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CvtSI2SS, ia32_mode_float64, 4, in);
1786 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1789 int const n_res = 1;
1792 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1793 set_ia32_am_support(res, ia32_am_unary);
1794 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1795 out_infos[0].req = &ia32_class_reg_req_xmm;
1803 static arch_register_req_t
const *in_reqs[] = {
1804 &ia32_single_reg_req_gp_eax,
1813 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cwtl, ia32_mode_gp, 1, in);
1816 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1819 int const n_res = 1;
1822 x86_insn_size_t
const size = X86_SIZE_32;
1823 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1824 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1825 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1833 static arch_register_req_t
const *in_reqs[] = {
1834 &ia32_class_reg_req_gp,
1843 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Dec, ia32_mode_gp, 1, in);
1846 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1847 irn_flags |= arch_irn_flag_modify_flags;
1848 irn_flags |= arch_irn_flag_rematerializable;
1851 int const n_res = 2;
1854 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1855 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1856 out_infos[0].req = &ia32_requirements_gp_in_r0;
1857 out_infos[1].req = &ia32_class_reg_req_flags;
1865 static arch_register_req_t
const *in_reqs[] = {
1866 &ia32_class_reg_req_gp,
1867 &ia32_class_reg_req_gp,
1868 &arch_memory_requirement,
1882 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1883 irn_flags |= arch_irn_flag_modify_flags;
1884 irn_flags |= arch_irn_flag_rematerializable;
1887 int const n_res = 3;
1890 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1891 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1892 out_infos[0].req = &arch_no_requirement;
1893 out_infos[1].req = &ia32_class_reg_req_flags;
1894 out_infos[2].req = &arch_memory_requirement;
1902 static arch_register_req_t
const *in_reqs[] = {
1903 &ia32_class_reg_req_gp,
1904 &ia32_class_reg_req_gp,
1905 &arch_memory_requirement,
1906 &ia32_class_reg_req_gp,
1907 &ia32_single_reg_req_gp_eax,
1908 &ia32_single_reg_req_gp_edx,
1925 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1926 irn_flags |= arch_irn_flag_modify_flags;
1929 int const n_res = 6;
1932 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1933 set_ia32_am_support(res, ia32_am_unary);
1934 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1935 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1936 out_infos[1].req = &ia32_class_reg_req_flags;
1937 out_infos[2].req = &arch_memory_requirement;
1938 out_infos[3].req = &ia32_single_reg_req_gp_edx;
1939 out_infos[4].req = &arch_exec_requirement;
1940 out_infos[5].req = &arch_exec_requirement;
1948 static arch_register_req_t
const *in_reqs[] = {
1949 &ia32_class_reg_req_gp,
1950 &ia32_class_reg_req_gp,
1951 &arch_memory_requirement,
1952 &ia32_class_reg_req_xmm,
1953 &ia32_class_reg_req_xmm,
1969 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1970 irn_flags |= arch_irn_flag_rematerializable;
1973 int const n_res = 3;
1976 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
1977 set_ia32_am_support(res, ia32_am_binary);
1978 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1979 out_infos[0].req = &ia32_requirements_xmm_in_r3_not_in_r4;
1980 out_infos[1].req = &ia32_class_reg_req_flags;
1981 out_infos[2].req = &arch_memory_requirement;
1989 static arch_register_req_t
const *in_reqs[] = {
1990 &ia32_single_reg_req_gp_esp,
2002 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2005 int const n_res = 3;
2008 x86_insn_size_t
const size = X86_SIZE_32;
2009 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2010 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2011 out_infos[0].req = &ia32_single_reg_req_gp_ebp;
2012 out_infos[1].req = &ia32_requirements_gp_esp_I;
2013 out_infos[2].req = &arch_memory_requirement;
2021 static arch_register_req_t
const *in_reqs[] = {
2022 &ia32_class_reg_req_gp,
2023 &ia32_class_reg_req_gp,
2024 &arch_memory_requirement,
2035 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FldCW, ia32_mode_fpcw, 3, in);
2038 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2041 int const n_res = 1;
2044 x86_insn_size_t
const size = X86_SIZE_16;
2045 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2046 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2047 out_infos[0].req = &ia32_single_reg_req_fp_cw_fpcw;
2055 static arch_register_req_t
const *in_reqs[] = {
2056 &ia32_class_reg_req_gp,
2057 &ia32_class_reg_req_gp,
2058 &arch_memory_requirement,
2059 &ia32_class_reg_req_fp_cw,
2074 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2077 int const n_res = 1;
2080 x86_insn_size_t
const size = X86_SIZE_16;
2081 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2082 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2083 out_infos[0].req = &arch_memory_requirement;
2091 static arch_register_req_t
const *in_reqs[] = {
2092 &ia32_class_reg_req_fp_cw,
2104 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2107 int const n_res = 1;
2110 x86_insn_size_t
const size = X86_SIZE_16;
2111 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
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 &ia32_class_reg_req_fp,
2131 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FtstFnstsw, ia32_mode_gp, 1, in);
2134 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2137 int const n_res = 1;
2140 x86_insn_size_t
const size = X86_SIZE_16; ia32_request_x87_sim(irg);
2141 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2142 attr->ins_permuted = ins_permuted;
2143 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2144 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2152 static arch_register_req_t
const *in_reqs[] = {
2153 &ia32_class_reg_req_fp,
2154 &ia32_class_reg_req_fp,
2164 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FucomFnstsw, ia32_mode_gp, 2, in);
2167 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2170 int const n_res = 1;
2173 x86_insn_size_t
const size = X86_SIZE_16;
2174 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2175 init_ia32_x87_attributes(res);
2176 attr->attr.ins_permuted = ins_permuted;
2177 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2178 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2186 static arch_register_req_t
const *in_reqs[] = {
2187 &ia32_class_reg_req_fp,
2188 &ia32_class_reg_req_fp,
2198 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Fucomi, ia32_mode_flags, 2, in);
2201 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2202 irn_flags |= arch_irn_flag_rematerializable;
2205 int const n_res = 1;
2208 x86_insn_size_t
const size = X86_SIZE_80;
2209 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2210 init_ia32_x87_attributes(res);
2211 attr->attr.ins_permuted = ins_permuted;
2212 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2213 out_infos[0].req = &ia32_single_reg_req_flags_eflags;
2221 static arch_register_req_t
const *in_reqs[] = {
2222 &ia32_class_reg_req_fp,
2223 &ia32_class_reg_req_fp,
2233 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FucomppFnstsw, ia32_mode_gp, 2, in);
2236 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2239 int const n_res = 1;
2242 x86_insn_size_t
const size = X86_SIZE_32;
2243 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2244 init_ia32_x87_attributes(res);
2245 attr->attr.ins_permuted = ins_permuted;
2246 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2247 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2255 arch_register_req_t
const **
const in_reqs = NULL;
2259 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_GetEIP, ia32_mode_gp, 0, NULL);
2262 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2265 int const n_res = 1;
2268 x86_insn_size_t
const size = X86_SIZE_32;
2269 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2270 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2271 out_infos[0].req = &ia32_class_reg_req_gp;
2279 static arch_register_req_t
const *in_reqs[] = {
2280 &ia32_class_reg_req_gp,
2281 &ia32_class_reg_req_gp,
2282 &arch_memory_requirement,
2283 &ia32_class_reg_req_gp,
2284 &ia32_single_reg_req_gp_eax,
2285 &ia32_single_reg_req_gp_edx,
2302 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2303 irn_flags |= arch_irn_flag_modify_flags;
2306 int const n_res = 6;
2309 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2310 set_ia32_am_support(res, ia32_am_unary);
2311 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2312 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2313 out_infos[1].req = &ia32_class_reg_req_flags;
2314 out_infos[2].req = &arch_memory_requirement;
2315 out_infos[3].req = &ia32_single_reg_req_gp_edx;
2316 out_infos[4].req = &arch_exec_requirement;
2317 out_infos[5].req = &arch_exec_requirement;
2325 static arch_register_req_t
const *in_reqs[] = {
2326 &ia32_class_reg_req_gp,
2327 &ia32_class_reg_req_gp,
2328 &arch_memory_requirement,
2329 &ia32_class_reg_req_gp,
2344 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2347 int const n_res = 3;
2350 x86_insn_size_t
const size = X86_SIZE_32;
2351 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2352 set_ia32_am_support(res, ia32_am_unary);
2353 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2354 out_infos[0].req = &arch_exec_requirement;
2355 out_infos[1].req = &arch_no_requirement;
2356 out_infos[2].req = &arch_memory_requirement;
2364 static arch_register_req_t
const *in_reqs[] = {
2365 &ia32_class_reg_req_gp,
2366 &ia32_class_reg_req_gp,
2367 &arch_memory_requirement,
2368 &ia32_class_reg_req_gp,
2369 &ia32_class_reg_req_gp,
2382 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMul, ia32_mode_gp, 5, in);
2385 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2386 irn_flags |= arch_irn_flag_modify_flags;
2387 irn_flags |= arch_irn_flag_rematerializable;
2390 int const n_res = 3;
2393 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2394 set_ia32_am_support(res, ia32_am_binary);
2395 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2396 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
2397 out_infos[1].req = &ia32_class_reg_req_flags;
2398 out_infos[2].req = &arch_memory_requirement;
2406 static arch_register_req_t
const *in_reqs[] = {
2407 &ia32_class_reg_req_gp,
2408 &ia32_class_reg_req_gp,
2409 &arch_memory_requirement,
2410 &ia32_requirements_gp_eax_ebx_ecx_edx,
2411 &ia32_requirements_gp_eax_ebx_ecx_edx,
2424 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMul, ia32_mode_gp, 5, in);
2427 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2428 irn_flags |= arch_irn_flag_modify_flags;
2429 irn_flags |= arch_irn_flag_rematerializable;
2432 int const n_res = 3;
2435 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2436 set_ia32_am_support(res, ia32_am_binary);
2437 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2438 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
2439 out_infos[1].req = &ia32_class_reg_req_flags;
2440 out_infos[2].req = &arch_memory_requirement;
2448 static arch_register_req_t
const *in_reqs[] = {
2449 &ia32_class_reg_req_gp,
2450 &ia32_class_reg_req_gp,
2451 &arch_memory_requirement,
2452 &ia32_single_reg_req_gp_eax,
2453 &ia32_class_reg_req_gp,
2469 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2470 irn_flags |= arch_irn_flag_modify_flags;
2473 int const n_res = 4;
2476 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2477 set_ia32_am_support(res, ia32_am_binary);
2478 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2479 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2480 out_infos[1].req = &ia32_class_reg_req_flags;
2481 out_infos[2].req = &arch_memory_requirement;
2482 out_infos[3].req = &ia32_single_reg_req_gp_edx;
2490 static arch_register_req_t
const *in_reqs[] = {
2491 &ia32_class_reg_req_gp,
2492 &ia32_class_reg_req_gp,
2493 &arch_memory_requirement,
2494 &ia32_class_reg_req_gp,
2495 &ia32_class_reg_req_gp,
2508 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMulImm, ia32_mode_gp, 5, in);
2511 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2512 irn_flags |= arch_irn_flag_modify_flags;
2513 irn_flags |= arch_irn_flag_rematerializable;
2516 int const n_res = 3;
2519 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2520 set_ia32_am_support(res, ia32_am_binary);
2521 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2522 out_infos[0].req = &ia32_class_reg_req_gp;
2523 out_infos[1].req = &ia32_class_reg_req_flags;
2524 out_infos[2].req = &arch_memory_requirement;
2532 arch_register_req_t
const **
const in_reqs = NULL;
2536 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Immediate, ia32_mode_gp, 0, NULL);
2539 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2540 irn_flags |= arch_irn_flag_not_scheduled;
2543 int const n_res = 1;
2546 x86_insn_size_t
const size = X86_SIZE_32;
2547 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2548 init_ia32_immediate_attributes(res, imm);
2549 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2550 out_infos[0].req = &ia32_requirements_gp_gp_NOREG_I;
2558 static arch_register_req_t
const *in_reqs[] = {
2559 &ia32_class_reg_req_gp,
2568 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Inc, ia32_mode_gp, 1, in);
2571 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2572 irn_flags |= arch_irn_flag_modify_flags;
2573 irn_flags |= arch_irn_flag_rematerializable;
2576 int const n_res = 2;
2579 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2580 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2581 out_infos[0].req = &ia32_requirements_gp_in_r0;
2582 out_infos[1].req = &ia32_class_reg_req_flags;
2590 static arch_register_req_t
const *in_reqs[] = {
2591 &ia32_class_reg_req_gp,
2592 &ia32_class_reg_req_gp,
2593 &arch_memory_requirement,
2607 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2608 irn_flags |= arch_irn_flag_modify_flags;
2609 irn_flags |= arch_irn_flag_rematerializable;
2612 int const n_res = 3;
2615 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2616 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2617 out_infos[0].req = &arch_no_requirement;
2618 out_infos[1].req = &ia32_class_reg_req_flags;
2619 out_infos[2].req = &arch_memory_requirement;
2627 static arch_register_req_t
const *in_reqs[] = {
2628 &ia32_single_reg_req_gp_edx,
2629 &arch_memory_requirement,
2642 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2643 irn_flags |= arch_irn_flag_rematerializable;
2646 int const n_res = 2;
2649 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2650 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2651 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2652 out_infos[1].req = &arch_memory_requirement;
2660 static arch_register_req_t
const *in_reqs[] = {
2661 &ia32_single_reg_req_flags_eflags,
2673 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2676 int const n_res = 2;
2679 x86_insn_size_t
const size = X86_SIZE_32;
2680 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2681 init_ia32_condcode_attributes(res, condition_code);
2682 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2683 out_infos[0].req = &arch_exec_requirement;
2684 out_infos[1].req = &arch_exec_requirement;
2692 arch_register_req_t
const **
const in_reqs = NULL;
2699 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2700 irn_flags |= arch_irn_flag_simple_jump;
2703 int const n_res = 1;
2706 x86_insn_size_t
const size = X86_SIZE_32;
2707 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2708 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2709 out_infos[0].req = &arch_exec_requirement;
2717 arch_register_req_t
const **
const in_reqs = NULL;
2721 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_LdTls, ia32_mode_gp, 0, NULL);
2724 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2725 irn_flags |= arch_irn_flag_rematerializable;
2728 int const n_res = 1;
2731 x86_insn_size_t
const size = X86_SIZE_32;
2732 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2733 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2734 out_infos[0].req = &ia32_class_reg_req_gp;
2742 static arch_register_req_t
const *in_reqs[] = {
2743 &ia32_class_reg_req_gp,
2744 &ia32_class_reg_req_gp,
2754 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Lea, ia32_mode_gp, 2, in);
2757 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2758 irn_flags |= arch_irn_flag_modify_flags;
2759 irn_flags |= arch_irn_flag_rematerializable;
2762 int const n_res = 1;
2765 x86_insn_size_t
const size = X86_SIZE_32;
2766 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2767 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2768 out_infos[0].req = &ia32_class_reg_req_gp;
2776 static arch_register_req_t
const *in_reqs[] = {
2777 &arch_memory_requirement,
2778 &ia32_single_reg_req_gp_ebp,
2791 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2794 int const n_res = 3;
2797 x86_insn_size_t
const size = X86_SIZE_32;
2798 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2799 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2800 out_infos[0].req = &ia32_requirements_gp_ebp_I;
2801 out_infos[1].req = &arch_memory_requirement;
2802 out_infos[2].req = &ia32_requirements_gp_esp_I;
2810 static arch_register_req_t
const *in_reqs[] = {
2811 &ia32_class_reg_req_gp,
2812 &ia32_class_reg_req_gp,
2813 &arch_memory_requirement,
2827 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2830 int const n_res = 5;
2833 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2834 attr->sign_extend = sign_extend;
2835 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2836 out_infos[0].req = &ia32_class_reg_req_gp;
2837 out_infos[1].req = &arch_no_requirement;
2838 out_infos[2].req = &arch_memory_requirement;
2839 out_infos[3].req = &arch_exec_requirement;
2840 out_infos[4].req = &arch_exec_requirement;
2848 static arch_register_req_t
const *in_reqs[] = {
2849 &ia32_class_reg_req_gp,
2850 &ia32_class_reg_req_gp,
2851 &arch_memory_requirement,
2852 &ia32_class_reg_req_xmm,
2853 &ia32_class_reg_req_xmm,
2866 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Maxs, ia32_mode_float64, 5, in);
2869 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2870 irn_flags |= arch_irn_flag_rematerializable;
2873 int const n_res = 3;
2876 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2877 set_ia32_am_support(res, ia32_am_binary);
2878 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2879 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
2880 out_infos[1].req = &ia32_class_reg_req_flags;
2881 out_infos[2].req = &arch_memory_requirement;
2889 static arch_register_req_t
const *in_reqs[] = {
2890 &ia32_class_reg_req_gp,
2891 &ia32_class_reg_req_gp,
2892 &arch_memory_requirement,
2893 &ia32_class_reg_req_xmm,
2894 &ia32_class_reg_req_xmm,
2907 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Mins, ia32_mode_float64, 5, in);
2910 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2911 irn_flags |= arch_irn_flag_rematerializable;
2914 int const n_res = 3;
2917 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2918 set_ia32_am_support(res, ia32_am_binary);
2919 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2920 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
2921 out_infos[1].req = &ia32_class_reg_req_flags;
2922 out_infos[2].req = &arch_memory_requirement;
2930 static arch_register_req_t
const *in_reqs[] = {
2931 &ia32_class_reg_req_gp,
2932 &ia32_class_reg_req_gp,
2945 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2946 irn_flags |= arch_irn_flag_modify_flags;
2947 irn_flags |= arch_irn_flag_rematerializable;
2950 int const n_res = 2;
2953 x86_insn_size_t
const size = X86_SIZE_32;
2954 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2955 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2956 out_infos[0].req = &ia32_requirements_gp_in_r0;
2957 out_infos[1].req = &ia32_requirements_gp_in_r1;
2965 static arch_register_req_t
const *in_reqs[] = {
2966 &ia32_class_reg_req_gp,
2975 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Movd, ia32_mode_float64, 1, in);
2978 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2979 irn_flags |= arch_irn_flag_rematerializable;
2982 int const n_res = 1;
2985 x86_insn_size_t
const size = X86_SIZE_32;
2986 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
2987 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2988 out_infos[0].req = &ia32_class_reg_req_xmm;
2996 static arch_register_req_t
const *in_reqs[] = {
2997 &ia32_class_reg_req_gp,
2998 &ia32_class_reg_req_gp,
2999 &arch_memory_requirement,
3000 &ia32_single_reg_req_gp_eax,
3001 &ia32_class_reg_req_gp,
3017 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3018 irn_flags |= arch_irn_flag_modify_flags;
3021 int const n_res = 4;
3024 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3025 set_ia32_am_support(res, ia32_am_binary);
3026 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3027 out_infos[0].req = &ia32_single_reg_req_gp_eax;
3028 out_infos[1].req = &ia32_class_reg_req_flags;
3029 out_infos[2].req = &arch_memory_requirement;
3030 out_infos[3].req = &ia32_single_reg_req_gp_edx;
3038 static arch_register_req_t
const *in_reqs[] = {
3039 &ia32_class_reg_req_gp,
3040 &ia32_class_reg_req_gp,
3041 &arch_memory_requirement,
3042 &ia32_class_reg_req_xmm,
3043 &ia32_class_reg_req_xmm,
3056 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Muls, ia32_mode_float64, 5, in);
3059 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3060 irn_flags |= arch_irn_flag_rematerializable;
3063 int const n_res = 3;
3066 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3067 set_ia32_am_support(res, ia32_am_binary);
3068 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3069 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
3070 out_infos[1].req = &ia32_class_reg_req_flags;
3071 out_infos[2].req = &arch_memory_requirement;
3079 static arch_register_req_t
const *in_reqs[] = {
3080 &ia32_class_reg_req_gp,
3089 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Neg, ia32_mode_gp, 1, in);
3092 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3093 irn_flags |= arch_irn_flag_modify_flags;
3094 irn_flags |= arch_irn_flag_rematerializable;
3097 int const n_res = 2;
3100 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3101 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3102 out_infos[0].req = &ia32_requirements_gp_in_r0;
3103 out_infos[1].req = &ia32_class_reg_req_flags;
3111 static arch_register_req_t
const *in_reqs[] = {
3112 &ia32_class_reg_req_gp,
3113 &ia32_class_reg_req_gp,
3114 &arch_memory_requirement,
3128 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3129 irn_flags |= arch_irn_flag_modify_flags;
3130 irn_flags |= arch_irn_flag_rematerializable;
3133 int const n_res = 3;
3136 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3137 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3138 out_infos[0].req = &arch_no_requirement;
3139 out_infos[1].req = &ia32_class_reg_req_flags;
3140 out_infos[2].req = &arch_memory_requirement;
3148 arch_register_req_t
const **
const in_reqs = NULL;
3152 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_FP, x86_mode_E, 0, NULL);
3155 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3156 irn_flags |= arch_irn_flag_not_scheduled;
3159 int const n_res = 1;
3162 x86_insn_size_t
const size = X86_SIZE_32;
3163 ia32_request_x87_sim(irg);
3164 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3165 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3166 out_infos[0].req = &ia32_requirements_fp_fp_NOREG_I;
3174 arch_register_req_t
const **
const in_reqs = NULL;
3178 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_GP, ia32_mode_gp, 0, NULL);
3181 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3182 irn_flags |= arch_irn_flag_not_scheduled;
3185 int const n_res = 1;
3188 x86_insn_size_t
const size = X86_SIZE_32;
3189 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3190 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3191 out_infos[0].req = &ia32_requirements_gp_gp_NOREG_I;
3199 arch_register_req_t
const **
const in_reqs = NULL;
3203 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_XMM, ia32_mode_float64, 0, NULL);
3206 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3207 irn_flags |= arch_irn_flag_not_scheduled;
3210 int const n_res = 1;
3213 x86_insn_size_t
const size = X86_SIZE_32;
3214 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3215 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3216 out_infos[0].req = &ia32_requirements_xmm_xmm_NOREG_I;
3224 static arch_register_req_t
const *in_reqs[] = {
3225 &ia32_class_reg_req_gp,
3234 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Not, ia32_mode_gp, 1, in);
3237 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3238 irn_flags |= arch_irn_flag_rematerializable;
3241 int const n_res = 1;
3244 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3245 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3246 out_infos[0].req = &ia32_requirements_gp_in_r0;
3254 static arch_register_req_t
const *in_reqs[] = {
3255 &ia32_requirements_gp_eax_ebx_ecx_edx,
3264 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Not, ia32_mode_gp, 1, in);
3267 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3268 irn_flags |= arch_irn_flag_rematerializable;
3271 int const n_res = 1;
3274 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3275 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3276 out_infos[0].req = &ia32_requirements_gp_in_r0;
3284 static arch_register_req_t
const *in_reqs[] = {
3285 &ia32_class_reg_req_gp,
3286 &ia32_class_reg_req_gp,
3287 &arch_memory_requirement,
3301 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3302 irn_flags |= arch_irn_flag_rematerializable;
3305 int const n_res = 3;
3308 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3309 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3310 out_infos[0].req = &arch_no_requirement;
3311 out_infos[1].req = &arch_no_requirement;
3312 out_infos[2].req = &arch_memory_requirement;
3320 static arch_register_req_t
const *in_reqs[] = {
3321 &ia32_class_reg_req_gp,
3322 &ia32_class_reg_req_gp,
3323 &arch_memory_requirement,
3324 &ia32_class_reg_req_gp,
3325 &ia32_class_reg_req_gp,
3341 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3342 irn_flags |= arch_irn_flag_modify_flags;
3343 irn_flags |= arch_irn_flag_rematerializable;
3346 int const n_res = 3;
3349 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3350 set_ia32_am_support(res, ia32_am_binary);
3351 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3352 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
3353 out_infos[1].req = &ia32_class_reg_req_flags;
3354 out_infos[2].req = &arch_memory_requirement;
3362 static arch_register_req_t
const *in_reqs[] = {
3363 &ia32_class_reg_req_gp,
3364 &ia32_class_reg_req_gp,
3365 &arch_memory_requirement,
3366 &ia32_requirements_gp_eax_ebx_ecx_edx,
3367 &ia32_requirements_gp_eax_ebx_ecx_edx,
3383 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3384 irn_flags |= arch_irn_flag_modify_flags;
3385 irn_flags |= arch_irn_flag_rematerializable;
3388 int const n_res = 3;
3391 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3392 set_ia32_am_support(res, ia32_am_binary);
3393 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3394 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
3395 out_infos[1].req = &ia32_class_reg_req_flags;
3396 out_infos[2].req = &arch_memory_requirement;
3404 static arch_register_req_t
const *in_reqs[] = {
3405 &ia32_class_reg_req_gp,
3406 &ia32_class_reg_req_gp,
3407 &arch_memory_requirement,
3408 &ia32_class_reg_req_gp,
3423 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3424 irn_flags |= arch_irn_flag_modify_flags;
3425 irn_flags |= arch_irn_flag_rematerializable;
3428 int const n_res = 3;
3431 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3432 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3433 out_infos[0].req = &arch_no_requirement;
3434 out_infos[1].req = &ia32_class_reg_req_flags;
3435 out_infos[2].req = &arch_memory_requirement;
3443 static arch_register_req_t
const *in_reqs[] = {
3444 &ia32_class_reg_req_gp,
3445 &ia32_class_reg_req_gp,
3446 &arch_memory_requirement,
3447 &ia32_requirements_gp_eax_ebx_ecx_edx,
3462 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3463 irn_flags |= arch_irn_flag_modify_flags;
3464 irn_flags |= arch_irn_flag_rematerializable;
3467 int const n_res = 3;
3470 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3471 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3472 out_infos[0].req = &arch_no_requirement;
3473 out_infos[1].req = &ia32_class_reg_req_flags;
3474 out_infos[2].req = &arch_memory_requirement;
3482 static arch_register_req_t
const *in_reqs[] = {
3483 &ia32_class_reg_req_gp,
3484 &ia32_class_reg_req_gp,
3485 &arch_memory_requirement,
3486 &ia32_class_reg_req_xmm,
3487 &ia32_class_reg_req_xmm,
3500 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Orp, ia32_mode_float64, 5, in);
3503 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3504 irn_flags |= arch_irn_flag_rematerializable;
3507 int const n_res = 3;
3510 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3511 set_ia32_am_support(res, ia32_am_binary);
3512 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3513 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
3514 out_infos[1].req = &ia32_class_reg_req_flags;
3515 out_infos[2].req = &arch_memory_requirement;
3523 static arch_register_req_t
const *in_reqs[] = {
3524 &ia32_single_reg_req_gp_edx,
3525 &ia32_single_reg_req_gp_eax,
3526 &arch_memory_requirement,
3540 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3541 irn_flags |= arch_irn_flag_rematerializable;
3544 int const n_res = 1;
3547 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3548 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3549 out_infos[0].req = &arch_memory_requirement;
3557 static arch_register_req_t
const *in_reqs[] = {
3558 &arch_memory_requirement,
3559 &ia32_single_reg_req_gp_esp,
3572 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3575 int const n_res = 4;
3578 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3579 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3580 out_infos[0].req = &ia32_class_reg_req_gp;
3581 out_infos[1].req = &arch_no_requirement;
3582 out_infos[2].req = &arch_memory_requirement;
3583 out_infos[3].req = &ia32_requirements_gp_esp_I;
3591 static arch_register_req_t
const *in_reqs[] = {
3592 &arch_memory_requirement,
3593 &ia32_single_reg_req_gp_esp,
3606 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3609 int const n_res = 4;
3612 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3613 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3614 out_infos[0].req = &ia32_requirements_gp_ebp_I;
3615 out_infos[1].req = &arch_no_requirement;
3616 out_infos[2].req = &arch_memory_requirement;
3617 out_infos[3].req = &ia32_requirements_gp_esp_I;
3625 static arch_register_req_t
const *in_reqs[] = {
3626 &ia32_class_reg_req_gp,
3627 &ia32_class_reg_req_gp,
3628 &arch_memory_requirement,
3629 &ia32_single_reg_req_gp_esp,
3644 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3647 int const n_res = 4;
3650 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3651 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3652 out_infos[0].req = &arch_no_requirement;
3653 out_infos[1].req = &arch_no_requirement;
3654 out_infos[2].req = &arch_memory_requirement;
3655 out_infos[3].req = &ia32_requirements_gp_esp_I;
3663 static arch_register_req_t
const *in_reqs[] = {
3664 &ia32_class_reg_req_gp,
3665 &ia32_class_reg_req_gp,
3666 &arch_memory_requirement,
3667 &ia32_class_reg_req_gp,
3679 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Popcnt, ia32_mode_gp, 4, in);
3682 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3683 irn_flags |= arch_irn_flag_modify_flags;
3684 irn_flags |= arch_irn_flag_rematerializable;
3687 int const n_res = 3;
3690 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3691 set_ia32_am_support(res, ia32_am_unary);
3692 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3693 out_infos[0].req = &ia32_class_reg_req_gp;
3694 out_infos[1].req = &ia32_class_reg_req_flags;
3695 out_infos[2].req = &arch_memory_requirement;
3703 static arch_register_req_t
const *in_reqs[] = {
3704 &ia32_class_reg_req_gp,
3705 &ia32_class_reg_req_gp,
3706 &arch_memory_requirement,
3720 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3723 int const n_res = 1;
3726 x86_insn_size_t
const size = X86_SIZE_8;
3727 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3728 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3729 out_infos[0].req = &arch_memory_requirement;
3737 static arch_register_req_t
const *in_reqs[] = {
3738 &ia32_class_reg_req_gp,
3739 &ia32_class_reg_req_gp,
3740 &arch_memory_requirement,
3754 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3757 int const n_res = 1;
3760 x86_insn_size_t
const size = X86_SIZE_8;
3761 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3762 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3763 out_infos[0].req = &arch_memory_requirement;
3771 static arch_register_req_t
const *in_reqs[] = {
3772 &ia32_class_reg_req_gp,
3773 &ia32_class_reg_req_gp,
3774 &arch_memory_requirement,
3788 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3791 int const n_res = 1;
3794 x86_insn_size_t
const size = X86_SIZE_8;
3795 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3796 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3797 out_infos[0].req = &arch_memory_requirement;
3805 static arch_register_req_t
const *in_reqs[] = {
3806 &ia32_class_reg_req_gp,
3807 &ia32_class_reg_req_gp,
3808 &arch_memory_requirement,
3822 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3825 int const n_res = 1;
3828 x86_insn_size_t
const size = X86_SIZE_8;
3829 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3830 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3831 out_infos[0].req = &arch_memory_requirement;
3839 static arch_register_req_t
const *in_reqs[] = {
3840 &ia32_class_reg_req_gp,
3841 &ia32_class_reg_req_gp,
3842 &arch_memory_requirement,
3856 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3859 int const n_res = 1;
3862 x86_insn_size_t
const size = X86_SIZE_8;
3863 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3864 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3865 out_infos[0].req = &arch_memory_requirement;
3873 static arch_register_req_t
const *in_reqs[] = {
3874 &ia32_class_reg_req_gp,
3875 &ia32_class_reg_req_gp,
3876 &arch_memory_requirement,
3890 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3893 int const n_res = 1;
3896 x86_insn_size_t
const size = X86_SIZE_8;
3897 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3898 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3899 out_infos[0].req = &arch_memory_requirement;
3907 static arch_register_req_t
const *in_reqs[] = {
3908 &ia32_class_reg_req_xmm,
3909 &ia32_class_reg_req_xmm,
3919 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Pslld, ia32_mode_float64, 2, in);
3922 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3923 irn_flags |= arch_irn_flag_rematerializable;
3926 int const n_res = 1;
3929 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3930 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3931 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
3939 static arch_register_req_t
const *in_reqs[] = {
3940 &ia32_class_reg_req_xmm,
3941 &ia32_class_reg_req_xmm,
3951 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Psllq, ia32_mode_float64, 2, in);
3954 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3955 irn_flags |= arch_irn_flag_rematerializable;
3958 int const n_res = 1;
3961 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3962 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3963 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
3971 static arch_register_req_t
const *in_reqs[] = {
3972 &ia32_class_reg_req_xmm,
3973 &ia32_class_reg_req_xmm,
3983 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Psrld, ia32_mode_float64, 2, in);
3986 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3987 irn_flags |= arch_irn_flag_rematerializable;
3990 int const n_res = 1;
3993 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
3994 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3995 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
4003 static arch_register_req_t
const *in_reqs[] = {
4004 &ia32_class_reg_req_gp,
4005 &ia32_class_reg_req_gp,
4006 &arch_memory_requirement,
4007 &ia32_class_reg_req_gp,
4008 &ia32_single_reg_req_gp_esp,
4024 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4027 int const n_res = 2;
4030 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4031 set_ia32_am_support(res, ia32_am_unary);
4032 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4033 out_infos[0].req = &arch_memory_requirement;
4034 out_infos[1].req = &ia32_requirements_gp_esp_I;
4042 static arch_register_req_t
const *in_reqs[] = {
4043 &ia32_single_reg_req_gp_esp,
4052 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_PushEax, ia32_mode_gp, 1, in);
4055 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4058 int const n_res = 1;
4061 x86_insn_size_t
const size = X86_SIZE_32;
4062 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4063 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4064 out_infos[0].req = &ia32_requirements_gp_esp_I;
4070 ir_node *new_bd_ia32_Return(
dbg_info *dbgi,
ir_node *block,
int const arity,
ir_node *
const *
const in, arch_register_req_t
const **
const in_reqs, uint16_t pop)
4078 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4081 int const n_res = 1;
4084 x86_insn_size_t
const size = X86_SIZE_32;
4085 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4086 init_ia32_return_attributes(res, pop);
4087 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4088 out_infos[0].req = &arch_exec_requirement;
4096 static arch_register_req_t
const *in_reqs[] = {
4097 &ia32_class_reg_req_gp,
4098 &ia32_single_reg_req_gp_ecx,
4108 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Rol, ia32_mode_gp, 2, in);
4111 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4112 irn_flags |= arch_irn_flag_modify_flags;
4113 irn_flags |= arch_irn_flag_rematerializable;
4116 int const n_res = 2;
4119 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4120 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4121 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4122 out_infos[1].req = &ia32_class_reg_req_flags;
4130 static arch_register_req_t
const *in_reqs[] = {
4131 &ia32_requirements_gp_eax_ebx_ecx_edx,
4132 &ia32_single_reg_req_gp_ecx,
4142 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Rol, ia32_mode_gp, 2, in);
4145 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4146 irn_flags |= arch_irn_flag_modify_flags;
4147 irn_flags |= arch_irn_flag_rematerializable;
4150 int const n_res = 2;
4153 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4154 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4155 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4156 out_infos[1].req = &ia32_class_reg_req_flags;
4164 static arch_register_req_t
const *in_reqs[] = {
4165 &ia32_class_reg_req_gp,
4166 &ia32_class_reg_req_gp,
4167 &arch_memory_requirement,
4168 &ia32_single_reg_req_gp_ecx,
4183 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4184 irn_flags |= arch_irn_flag_modify_flags;
4185 irn_flags |= arch_irn_flag_rematerializable;
4188 int const n_res = 3;
4191 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4192 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4193 out_infos[0].req = &arch_no_requirement;
4194 out_infos[1].req = &ia32_class_reg_req_flags;
4195 out_infos[2].req = &arch_memory_requirement;
4203 static arch_register_req_t
const *in_reqs[] = {
4204 &ia32_class_reg_req_gp,
4205 &ia32_single_reg_req_gp_ecx,
4215 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ror, ia32_mode_gp, 2, in);
4218 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4219 irn_flags |= arch_irn_flag_modify_flags;
4220 irn_flags |= arch_irn_flag_rematerializable;
4223 int const n_res = 2;
4226 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4227 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4228 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4229 out_infos[1].req = &ia32_class_reg_req_flags;
4237 static arch_register_req_t
const *in_reqs[] = {
4238 &ia32_requirements_gp_eax_ebx_ecx_edx,
4239 &ia32_single_reg_req_gp_ecx,
4249 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ror, ia32_mode_gp, 2, in);
4252 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4253 irn_flags |= arch_irn_flag_modify_flags;
4254 irn_flags |= arch_irn_flag_rematerializable;
4257 int const n_res = 2;
4260 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4261 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4262 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4263 out_infos[1].req = &ia32_class_reg_req_flags;
4271 static arch_register_req_t
const *in_reqs[] = {
4272 &ia32_class_reg_req_gp,
4273 &ia32_class_reg_req_gp,
4274 &arch_memory_requirement,
4275 &ia32_single_reg_req_gp_ecx,
4290 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4291 irn_flags |= arch_irn_flag_modify_flags;
4292 irn_flags |= arch_irn_flag_rematerializable;
4295 int const n_res = 3;
4298 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4299 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4300 out_infos[0].req = &arch_no_requirement;
4301 out_infos[1].req = &ia32_class_reg_req_flags;
4302 out_infos[2].req = &arch_memory_requirement;
4310 static arch_register_req_t
const *in_reqs[] = {
4311 &ia32_single_reg_req_gp_eax,
4320 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sahf, ia32_mode_flags, 1, in);
4323 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4324 irn_flags |= arch_irn_flag_rematerializable;
4327 int const n_res = 1;
4330 x86_insn_size_t
const size = X86_SIZE_16;
4331 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4332 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4333 out_infos[0].req = &ia32_single_reg_req_flags_eflags;
4341 static arch_register_req_t
const *in_reqs[] = {
4342 &ia32_class_reg_req_gp,
4343 &ia32_single_reg_req_gp_ecx,
4353 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sar, ia32_mode_gp, 2, in);
4356 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4357 irn_flags |= arch_irn_flag_modify_flags;
4358 irn_flags |= arch_irn_flag_rematerializable;
4361 int const n_res = 2;
4364 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4365 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4366 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4367 out_infos[1].req = &ia32_class_reg_req_flags;
4375 static arch_register_req_t
const *in_reqs[] = {
4376 &ia32_requirements_gp_eax_ebx_ecx_edx,
4377 &ia32_single_reg_req_gp_ecx,
4387 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sar, ia32_mode_gp, 2, in);
4390 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4391 irn_flags |= arch_irn_flag_modify_flags;
4392 irn_flags |= arch_irn_flag_rematerializable;
4395 int const n_res = 2;
4398 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4399 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4400 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4401 out_infos[1].req = &ia32_class_reg_req_flags;
4409 static arch_register_req_t
const *in_reqs[] = {
4410 &ia32_class_reg_req_gp,
4411 &ia32_class_reg_req_gp,
4412 &arch_memory_requirement,
4413 &ia32_single_reg_req_gp_ecx,
4428 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4429 irn_flags |= arch_irn_flag_modify_flags;
4430 irn_flags |= arch_irn_flag_rematerializable;
4433 int const n_res = 3;
4436 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4437 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4438 out_infos[0].req = &arch_no_requirement;
4439 out_infos[1].req = &ia32_class_reg_req_flags;
4440 out_infos[2].req = &arch_memory_requirement;
4448 static arch_register_req_t
const *in_reqs[] = {
4449 &ia32_class_reg_req_gp,
4450 &ia32_class_reg_req_gp,
4451 &arch_memory_requirement,
4452 &ia32_class_reg_req_gp,
4453 &ia32_class_reg_req_gp,
4454 &ia32_class_reg_req_flags,
4468 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sbb, ia32_mode_gp, 6, in);
4471 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4472 irn_flags |= arch_irn_flag_modify_flags;
4475 int const n_res = 3;
4478 x86_condition_code_t condition_code = x86_cc_carry;
4479 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4480 init_ia32_condcode_attributes(res, condition_code);
4481 set_ia32_am_support(res, ia32_am_binary);
4482 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4483 out_infos[0].req = &ia32_requirements_gp_in_r3;
4484 out_infos[1].req = &ia32_class_reg_req_flags;
4485 out_infos[2].req = &arch_memory_requirement;
4493 static arch_register_req_t
const *in_reqs[] = {
4494 &ia32_class_reg_req_flags,
4503 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sbb0, ia32_mode_gp, 1, in);
4506 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4507 irn_flags |= arch_irn_flag_modify_flags;
4510 int const n_res = 2;
4513 x86_condition_code_t condition_code = x86_cc_carry;
4514 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4515 init_ia32_condcode_attributes(res, condition_code);
4516 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4517 out_infos[0].req = &ia32_class_reg_req_gp;
4518 out_infos[1].req = &ia32_class_reg_req_flags;
4526 static arch_register_req_t
const *in_reqs[] = {
4527 &ia32_single_reg_req_flags_eflags,
4536 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Setcc, ia32_mode_gp, 1, in);
4539 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4542 int const n_res = 1;
4545 x86_insn_size_t
const size = X86_SIZE_8;
4546 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4547 init_ia32_condcode_attributes(res, condition_code);
4548 if (condition_code & x86_cc_additional_float_cases) {
4549 arch_add_irn_flags(res, arch_irn_flag_modify_flags);
4553 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4554 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx;
4562 static arch_register_req_t
const *in_reqs[] = {
4563 &ia32_class_reg_req_gp,
4564 &ia32_class_reg_req_gp,
4565 &arch_memory_requirement,
4566 &ia32_single_reg_req_flags_eflags,
4581 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4584 int const n_res = 1;
4587 x86_insn_size_t
const size = X86_SIZE_8;
4588 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4589 init_ia32_condcode_attributes(res, condition_code);
4590 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4591 out_infos[0].req = &arch_memory_requirement;
4599 static arch_register_req_t
const *in_reqs[] = {
4600 &ia32_class_reg_req_gp,
4601 &ia32_single_reg_req_gp_ecx,
4611 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shl, ia32_mode_gp, 2, in);
4614 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4615 irn_flags |= arch_irn_flag_modify_flags;
4616 irn_flags |= arch_irn_flag_rematerializable;
4619 int const n_res = 2;
4622 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4623 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4624 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4625 out_infos[1].req = &ia32_class_reg_req_flags;
4633 static arch_register_req_t
const *in_reqs[] = {
4634 &ia32_requirements_gp_eax_ebx_ecx_edx,
4635 &ia32_single_reg_req_gp_ecx,
4645 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shl, ia32_mode_gp, 2, in);
4648 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4649 irn_flags |= arch_irn_flag_modify_flags;
4650 irn_flags |= arch_irn_flag_rematerializable;
4653 int const n_res = 2;
4656 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4657 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4658 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4659 out_infos[1].req = &ia32_class_reg_req_flags;
4667 static arch_register_req_t
const *in_reqs[] = {
4668 &ia32_class_reg_req_gp,
4669 &ia32_class_reg_req_gp,
4670 &ia32_single_reg_req_gp_ecx,
4681 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShlD, ia32_mode_gp, 3, in);
4684 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4685 irn_flags |= arch_irn_flag_modify_flags;
4686 irn_flags |= arch_irn_flag_rematerializable;
4689 int const n_res = 2;
4692 x86_insn_size_t
const size = X86_SIZE_32;
4693 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4694 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4695 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1_not_in_r2;
4696 out_infos[1].req = &ia32_class_reg_req_flags;
4704 static arch_register_req_t
const *in_reqs[] = {
4705 &ia32_class_reg_req_gp,
4706 &ia32_class_reg_req_gp,
4707 &ia32_single_reg_req_gp_ecx,
4718 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShlD, ia32_mode_gp, 3, in);
4721 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4722 irn_flags |= arch_irn_flag_modify_flags;
4723 irn_flags |= arch_irn_flag_rematerializable;
4726 int const n_res = 2;
4729 x86_insn_size_t
const size = X86_SIZE_32;
4730 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4731 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4732 out_infos[0].req = &ia32_requirements_gp_in_r0_in_r1;
4733 out_infos[1].req = &ia32_class_reg_req_flags;
4741 static arch_register_req_t
const *in_reqs[] = {
4742 &ia32_class_reg_req_gp,
4743 &ia32_class_reg_req_gp,
4744 &arch_memory_requirement,
4745 &ia32_single_reg_req_gp_ecx,
4760 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4761 irn_flags |= arch_irn_flag_modify_flags;
4762 irn_flags |= arch_irn_flag_rematerializable;
4765 int const n_res = 3;
4768 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4769 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4770 out_infos[0].req = &arch_no_requirement;
4771 out_infos[1].req = &ia32_class_reg_req_flags;
4772 out_infos[2].req = &arch_memory_requirement;
4780 static arch_register_req_t
const *in_reqs[] = {
4781 &ia32_class_reg_req_gp,
4782 &ia32_single_reg_req_gp_ecx,
4792 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shr, ia32_mode_gp, 2, in);
4795 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4796 irn_flags |= arch_irn_flag_modify_flags;
4797 irn_flags |= arch_irn_flag_rematerializable;
4800 int const n_res = 2;
4803 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4804 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4805 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4806 out_infos[1].req = &ia32_class_reg_req_flags;
4814 static arch_register_req_t
const *in_reqs[] = {
4815 &ia32_requirements_gp_eax_ebx_ecx_edx,
4816 &ia32_single_reg_req_gp_ecx,
4826 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shr, ia32_mode_gp, 2, in);
4829 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4830 irn_flags |= arch_irn_flag_modify_flags;
4831 irn_flags |= arch_irn_flag_rematerializable;
4834 int const n_res = 2;
4837 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4838 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4839 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4840 out_infos[1].req = &ia32_class_reg_req_flags;
4848 static arch_register_req_t
const *in_reqs[] = {
4849 &ia32_class_reg_req_gp,
4850 &ia32_class_reg_req_gp,
4851 &ia32_single_reg_req_gp_ecx,
4862 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShrD, ia32_mode_gp, 3, in);
4865 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4866 irn_flags |= arch_irn_flag_modify_flags;
4867 irn_flags |= arch_irn_flag_rematerializable;
4870 int const n_res = 2;
4873 x86_insn_size_t
const size = X86_SIZE_32;
4874 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4875 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4876 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1_not_in_r2;
4877 out_infos[1].req = &ia32_class_reg_req_flags;
4885 static arch_register_req_t
const *in_reqs[] = {
4886 &ia32_class_reg_req_gp,
4887 &ia32_class_reg_req_gp,
4888 &ia32_single_reg_req_gp_ecx,
4899 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShrD, ia32_mode_gp, 3, in);
4902 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4903 irn_flags |= arch_irn_flag_modify_flags;
4904 irn_flags |= arch_irn_flag_rematerializable;
4907 int const n_res = 2;
4910 x86_insn_size_t
const size = X86_SIZE_32;
4911 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4912 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4913 out_infos[0].req = &ia32_requirements_gp_in_r0_in_r1;
4914 out_infos[1].req = &ia32_class_reg_req_flags;
4922 static arch_register_req_t
const *in_reqs[] = {
4923 &ia32_class_reg_req_gp,
4924 &ia32_class_reg_req_gp,
4925 &arch_memory_requirement,
4926 &ia32_single_reg_req_gp_ecx,
4941 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4942 irn_flags |= arch_irn_flag_modify_flags;
4943 irn_flags |= arch_irn_flag_rematerializable;
4946 int const n_res = 3;
4949 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4950 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4951 out_infos[0].req = &arch_no_requirement;
4952 out_infos[1].req = &ia32_class_reg_req_flags;
4953 out_infos[2].req = &arch_memory_requirement;
4961 arch_register_req_t
const **
const in_reqs = NULL;
4965 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Stc, ia32_mode_flags, 0, NULL);
4968 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4969 irn_flags |= arch_irn_flag_modify_flags;
4970 irn_flags |= arch_irn_flag_rematerializable;
4973 int const n_res = 1;
4976 x86_insn_size_t
const size = X86_SIZE_32;
4977 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
4978 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4979 out_infos[0].req = &ia32_class_reg_req_flags;
4987 static arch_register_req_t
const *in_reqs[] = {
4988 &ia32_class_reg_req_gp,
4989 &ia32_class_reg_req_gp,
4990 &arch_memory_requirement,
4991 &ia32_class_reg_req_gp,
5006 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5009 int const n_res = 3;
5012 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5013 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5014 out_infos[0].req = &arch_memory_requirement;
5015 out_infos[1].req = &arch_exec_requirement;
5016 out_infos[2].req = &arch_exec_requirement;
5024 static arch_register_req_t
const *in_reqs[] = {
5025 &ia32_class_reg_req_gp,
5026 &ia32_class_reg_req_gp,
5027 &arch_memory_requirement,
5028 &ia32_requirements_gp_eax_ebx_ecx_edx,
5043 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5046 int const n_res = 3;
5049 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5050 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5051 out_infos[0].req = &arch_memory_requirement;
5052 out_infos[1].req = &arch_exec_requirement;
5053 out_infos[2].req = &arch_exec_requirement;
5061 static arch_register_req_t
const *in_reqs[] = {
5062 &ia32_class_reg_req_gp,
5063 &ia32_class_reg_req_gp,
5064 &arch_memory_requirement,
5065 &ia32_class_reg_req_gp,
5066 &ia32_class_reg_req_gp,
5079 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sub, ia32_mode_gp, 5, in);
5082 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5083 irn_flags |= arch_irn_flag_modify_flags;
5084 irn_flags |= arch_irn_flag_rematerializable;
5087 int const n_res = 3;
5090 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5091 set_ia32_am_support(res, ia32_am_binary);
5092 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5093 out_infos[0].req = &ia32_requirements_gp_in_r3;
5094 out_infos[1].req = &ia32_class_reg_req_flags;
5095 out_infos[2].req = &arch_memory_requirement;
5103 static arch_register_req_t
const *in_reqs[] = {
5104 &ia32_class_reg_req_gp,
5105 &ia32_class_reg_req_gp,
5106 &arch_memory_requirement,
5107 &ia32_requirements_gp_eax_ebx_ecx_edx,
5108 &ia32_requirements_gp_eax_ebx_ecx_edx,
5121 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sub, ia32_mode_gp, 5, in);
5124 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5125 irn_flags |= arch_irn_flag_modify_flags;
5126 irn_flags |= arch_irn_flag_rematerializable;
5129 int const n_res = 3;
5132 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5133 set_ia32_am_support(res, ia32_am_binary);
5134 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5135 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3;
5136 out_infos[1].req = &ia32_class_reg_req_flags;
5137 out_infos[2].req = &arch_memory_requirement;
5145 static arch_register_req_t
const *in_reqs[] = {
5146 &ia32_class_reg_req_gp,
5147 &ia32_class_reg_req_gp,
5148 &arch_memory_requirement,
5149 &ia32_class_reg_req_gp,
5164 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5165 irn_flags |= arch_irn_flag_modify_flags;
5166 irn_flags |= arch_irn_flag_rematerializable;
5169 int const n_res = 3;
5172 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5173 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5174 out_infos[0].req = &arch_no_requirement;
5175 out_infos[1].req = &ia32_class_reg_req_flags;
5176 out_infos[2].req = &arch_memory_requirement;
5184 static arch_register_req_t
const *in_reqs[] = {
5185 &ia32_class_reg_req_gp,
5186 &ia32_class_reg_req_gp,
5187 &arch_memory_requirement,
5188 &ia32_requirements_gp_eax_ebx_ecx_edx,
5203 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5204 irn_flags |= arch_irn_flag_modify_flags;
5205 irn_flags |= arch_irn_flag_rematerializable;
5208 int const n_res = 3;
5211 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5212 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5213 out_infos[0].req = &arch_no_requirement;
5214 out_infos[1].req = &ia32_class_reg_req_flags;
5215 out_infos[2].req = &arch_memory_requirement;
5223 static arch_register_req_t
const *in_reqs[] = {
5224 &ia32_class_reg_req_gp,
5225 &ia32_class_reg_req_gp,
5226 &arch_memory_requirement,
5227 &ia32_single_reg_req_gp_esp,
5228 &ia32_class_reg_req_gp,
5244 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5245 irn_flags |= arch_irn_flag_modify_flags;
5248 int const n_res = 3;
5251 x86_insn_size_t size = X86_SIZE_32;
5252 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5253 set_ia32_am_support(res, ia32_am_binary);
5254 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5255 out_infos[0].req = &ia32_requirements_gp_esp_I;
5256 out_infos[1].req = &ia32_class_reg_req_gp;
5257 out_infos[2].req = &arch_memory_requirement;
5265 static arch_register_req_t
const *in_reqs[] = {
5266 &ia32_class_reg_req_gp,
5267 &ia32_class_reg_req_gp,
5268 &arch_memory_requirement,
5269 &ia32_class_reg_req_xmm,
5270 &ia32_class_reg_req_xmm,
5283 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Subs, ia32_mode_float64, 5, in);
5286 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5287 irn_flags |= arch_irn_flag_rematerializable;
5290 int const n_res = 3;
5293 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5294 set_ia32_am_support(res, ia32_am_binary);
5295 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5296 out_infos[0].req = &ia32_requirements_xmm_in_r3;
5297 out_infos[1].req = &ia32_class_reg_req_flags;
5298 out_infos[2].req = &arch_memory_requirement;
5306 static arch_register_req_t
const *in_reqs[] = {
5307 &ia32_class_reg_req_gp,
5308 &ia32_class_reg_req_gp,
5321 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5326 x86_insn_size_t
const size = X86_SIZE_32;
5327 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5328 init_ia32_switch_attributes(res, switch_table, table_entity);
5336 static arch_register_req_t
const *in_reqs[] = {
5337 &ia32_class_reg_req_gp,
5338 &ia32_class_reg_req_gp,
5339 &arch_memory_requirement,
5340 &ia32_class_reg_req_gp,
5341 &ia32_class_reg_req_gp,
5354 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Test, ia32_mode_flags, 5, in);
5357 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5358 irn_flags |= arch_irn_flag_modify_flags;
5359 irn_flags |= arch_irn_flag_rematerializable;
5362 int const n_res = 3;
5365 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5366 set_ia32_am_support(res, ia32_am_binary);
5367 attr->ins_permuted = ins_permuted;
5368 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5369 out_infos[0].req = &ia32_class_reg_req_flags;
5370 out_infos[1].req = &arch_no_requirement;
5371 out_infos[2].req = &arch_memory_requirement;
5379 static arch_register_req_t
const *in_reqs[] = {
5380 &ia32_class_reg_req_gp,
5381 &ia32_class_reg_req_gp,
5382 &arch_memory_requirement,
5383 &ia32_requirements_gp_eax_ebx_ecx_edx,
5384 &ia32_requirements_gp_eax_ebx_ecx_edx,
5397 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Test, ia32_mode_flags, 5, in);
5400 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5401 irn_flags |= arch_irn_flag_modify_flags;
5402 irn_flags |= arch_irn_flag_rematerializable;
5405 int const n_res = 3;
5408 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5409 set_ia32_am_support(res, ia32_am_binary);
5410 attr->ins_permuted = ins_permuted;
5411 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5412 out_infos[0].req = &ia32_class_reg_req_flags;
5413 out_infos[1].req = &arch_no_requirement;
5414 out_infos[2].req = &arch_memory_requirement;
5422 static arch_register_req_t
const *in_reqs[] = {
5423 &arch_memory_requirement,
5435 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5438 int const n_res = 1;
5441 x86_insn_size_t
const size = X86_SIZE_32;
5442 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5443 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5444 out_infos[0].req = &arch_memory_requirement;
5452 static arch_register_req_t
const *in_reqs[] = {
5453 &ia32_class_reg_req_gp,
5454 &ia32_class_reg_req_gp,
5455 &arch_memory_requirement,
5456 &ia32_class_reg_req_xmm,
5457 &ia32_class_reg_req_xmm,
5470 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ucomis, ia32_mode_flags, 5, in);
5473 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5474 irn_flags |= arch_irn_flag_modify_flags;
5475 irn_flags |= arch_irn_flag_rematerializable;
5478 int const n_res = 1;
5481 x86_insn_size_t
const size = X86_SIZE_32;
5482 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5483 set_ia32_am_support(res, ia32_am_binary);
5484 attr->ins_permuted = ins_permuted;
5485 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5486 out_infos[0].req = &ia32_single_reg_req_flags_eflags;
5494 static arch_register_req_t
const *in_reqs[] = {
5495 &ia32_class_reg_req_gp,
5496 &ia32_class_reg_req_gp,
5497 &arch_memory_requirement,
5498 &ia32_class_reg_req_gp,
5499 &ia32_class_reg_req_gp,
5512 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor, ia32_mode_gp, 5, in);
5515 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5516 irn_flags |= arch_irn_flag_modify_flags;
5517 irn_flags |= arch_irn_flag_rematerializable;
5520 int const n_res = 3;
5523 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5524 set_ia32_am_support(res, ia32_am_binary);
5525 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5526 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
5527 out_infos[1].req = &ia32_class_reg_req_flags;
5528 out_infos[2].req = &arch_memory_requirement;
5536 static arch_register_req_t
const *in_reqs[] = {
5537 &ia32_class_reg_req_gp,
5538 &ia32_class_reg_req_gp,
5539 &arch_memory_requirement,
5540 &ia32_requirements_gp_eax_ebx_ecx_edx,
5541 &ia32_requirements_gp_eax_ebx_ecx_edx,
5554 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor, ia32_mode_gp, 5, in);
5557 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5558 irn_flags |= arch_irn_flag_modify_flags;
5559 irn_flags |= arch_irn_flag_rematerializable;
5562 int const n_res = 3;
5565 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5566 set_ia32_am_support(res, ia32_am_binary);
5567 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5568 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
5569 out_infos[1].req = &ia32_class_reg_req_flags;
5570 out_infos[2].req = &arch_memory_requirement;
5578 arch_register_req_t
const **
const in_reqs = NULL;
5582 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor0, ia32_mode_gp, 0, NULL);
5585 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5586 irn_flags |= arch_irn_flag_modify_flags;
5587 irn_flags |= arch_irn_flag_rematerializable;
5590 int const n_res = 2;
5593 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5594 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5595 out_infos[0].req = &ia32_class_reg_req_gp;
5596 out_infos[1].req = &ia32_class_reg_req_flags;
5604 static arch_register_req_t
const *in_reqs[] = {
5605 &ia32_requirements_gp_eax_ebx_ecx_edx,
5617 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5618 irn_flags |= arch_irn_flag_modify_flags;
5619 irn_flags |= arch_irn_flag_rematerializable;
5622 int const n_res = 2;
5625 x86_insn_size_t
const size = X86_SIZE_8;
5626 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5627 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5628 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r0;
5629 out_infos[1].req = &ia32_class_reg_req_flags;
5637 static arch_register_req_t
const *in_reqs[] = {
5638 &ia32_class_reg_req_gp,
5639 &ia32_class_reg_req_gp,
5640 &arch_memory_requirement,
5641 &ia32_class_reg_req_gp,
5656 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5657 irn_flags |= arch_irn_flag_modify_flags;
5658 irn_flags |= arch_irn_flag_rematerializable;
5661 int const n_res = 3;
5664 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5665 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5666 out_infos[0].req = &arch_no_requirement;
5667 out_infos[1].req = &ia32_class_reg_req_flags;
5668 out_infos[2].req = &arch_memory_requirement;
5676 static arch_register_req_t
const *in_reqs[] = {
5677 &ia32_class_reg_req_gp,
5678 &ia32_class_reg_req_gp,
5679 &arch_memory_requirement,
5680 &ia32_requirements_gp_eax_ebx_ecx_edx,
5695 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5696 irn_flags |= arch_irn_flag_modify_flags;
5697 irn_flags |= arch_irn_flag_rematerializable;
5700 int const n_res = 3;
5703 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5704 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5705 out_infos[0].req = &arch_no_requirement;
5706 out_infos[1].req = &ia32_class_reg_req_flags;
5707 out_infos[2].req = &arch_memory_requirement;
5715 static arch_register_req_t
const *in_reqs[] = {
5716 &ia32_class_reg_req_gp,
5717 &ia32_class_reg_req_gp,
5718 &arch_memory_requirement,
5719 &ia32_class_reg_req_xmm,
5720 &ia32_class_reg_req_xmm,
5733 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xorp, ia32_mode_float64, 5, in);
5736 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5737 irn_flags |= arch_irn_flag_rematerializable;
5740 int const n_res = 3;
5743 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5744 set_ia32_am_support(res, ia32_am_binary);
5745 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5746 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
5747 out_infos[1].req = &ia32_class_reg_req_flags;
5748 out_infos[2].req = &arch_memory_requirement;
5756 arch_register_req_t
const **
const in_reqs = NULL;
5763 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5766 int const n_res = 1;
5769 x86_insn_size_t
const size = X86_SIZE_32; ia32_request_x87_sim(irg);
5770 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5771 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5772 out_infos[0].req = &arch_no_requirement;
5780 static arch_register_req_t
const *in_reqs[] = {
5781 &ia32_class_reg_req_fp,
5793 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5794 irn_flags |= arch_irn_flag_rematerializable;
5797 int const n_res = 1;
5800 x86_insn_size_t
const size = X86_SIZE_80;
5801 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5802 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5803 out_infos[0].req = &ia32_class_reg_req_fp;
5811 static arch_register_req_t
const *in_reqs[] = {
5812 &ia32_class_reg_req_gp,
5813 &ia32_class_reg_req_gp,
5814 &arch_memory_requirement,
5815 &ia32_class_reg_req_fp,
5816 &ia32_class_reg_req_fp,
5817 &ia32_single_reg_req_fp_cw_fpcw,
5834 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5837 int const n_res = 3;
5840 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5841 init_ia32_x87_attributes(res);
5842 set_ia32_am_support(res, ia32_am_binary);
5843 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5844 out_infos[0].req = &ia32_class_reg_req_fp;
5845 out_infos[1].req = &arch_no_requirement;
5846 out_infos[2].req = &arch_memory_requirement;
5854 static arch_register_req_t
const *in_reqs[] = {
5855 &ia32_class_reg_req_fp,
5867 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5868 irn_flags |= arch_irn_flag_rematerializable;
5871 int const n_res = 1;
5874 x86_insn_size_t
const size = X86_SIZE_80;
5875 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5876 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5877 out_infos[0].req = &ia32_class_reg_req_fp;
5885 static arch_register_req_t
const *in_reqs[] = {
5886 &ia32_class_reg_req_gp,
5887 &ia32_class_reg_req_gp,
5888 &arch_memory_requirement,
5889 &ia32_class_reg_req_fp,
5890 &ia32_class_reg_req_fp,
5891 &ia32_single_reg_req_fp_cw_fpcw,
5908 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5911 int const n_res = 3;
5914 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5915 init_ia32_x87_attributes(res);
5916 set_ia32_am_support(res, ia32_am_binary);
5917 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5918 out_infos[0].req = &ia32_class_reg_req_fp;
5919 out_infos[1].req = &arch_no_requirement;
5920 out_infos[2].req = &arch_memory_requirement;
5928 static arch_register_req_t
const *in_reqs[] = {
5929 &ia32_class_reg_req_fp,
5941 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5944 int const n_res = 1;
5947 x86_insn_size_t
const size = X86_SIZE_80;
5948 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5949 init_ia32_x87_attributes(res);
5950 attr->x87.reg = reg;
5951 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5952 out_infos[0].req = &ia32_class_reg_req_fp;
5960 arch_register_req_t
const **
const in_reqs = NULL;
5967 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5970 int const n_res = 1;
5973 x86_insn_size_t
const size = X86_SIZE_32; ia32_request_x87_sim(irg);
5974 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5975 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5976 out_infos[0].req = &arch_no_requirement;
5984 arch_register_req_t
const **
const in_reqs = NULL;
5991 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5994 int const n_res = 1;
5997 x86_insn_size_t
const size = X86_SIZE_80;
5998 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
5999 init_ia32_x87_attributes(res);
6000 attr->x87.reg = reg;
6001 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6002 out_infos[0].req = &arch_no_requirement;
6010 static arch_register_req_t
const *in_reqs[] = {
6011 &ia32_class_reg_req_gp,
6012 &ia32_class_reg_req_gp,
6013 &arch_memory_requirement,
6027 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6030 int const n_res = 3;
6033 ia32_request_x87_sim(irg);
6034 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6035 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6036 out_infos[0].req = &ia32_class_reg_req_fp;
6037 out_infos[1].req = &arch_no_requirement;
6038 out_infos[2].req = &arch_memory_requirement;
6046 static arch_register_req_t
const *in_reqs[] = {
6047 &ia32_class_reg_req_gp,
6048 &ia32_class_reg_req_gp,
6049 &arch_memory_requirement,
6050 &ia32_class_reg_req_fp,
6051 &ia32_single_reg_req_fp_cw_fpcw,
6067 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6070 int const n_res = 3;
6073 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6074 init_ia32_x87_attributes(res);
6075 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6076 out_infos[0].req = &arch_memory_requirement;
6077 out_infos[1].req = &arch_exec_requirement;
6078 out_infos[2].req = &arch_exec_requirement;
6086 static arch_register_req_t
const *in_reqs[] = {
6087 &ia32_class_reg_req_gp,
6088 &ia32_class_reg_req_gp,
6089 &arch_memory_requirement,
6090 &ia32_requirements_fp_fp_K,
6091 &ia32_single_reg_req_fp_cw_fpcw,
6107 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6110 int const n_res = 3;
6113 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6114 init_ia32_x87_attributes(res);
6115 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6116 out_infos[0].req = &arch_memory_requirement;
6117 out_infos[1].req = &arch_exec_requirement;
6118 out_infos[2].req = &arch_exec_requirement;
6126 static arch_register_req_t
const *in_reqs[] = {
6127 &ia32_class_reg_req_gp,
6128 &ia32_class_reg_req_gp,
6129 &arch_memory_requirement,
6130 &ia32_requirements_fp_fp_K,
6145 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6148 int const n_res = 3;
6151 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6152 init_ia32_x87_attributes(res);
6153 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6154 out_infos[0].req = &arch_memory_requirement;
6155 out_infos[1].req = &arch_exec_requirement;
6156 out_infos[2].req = &arch_exec_requirement;
6164 static arch_register_req_t
const *in_reqs[] = {
6165 &ia32_class_reg_req_gp,
6166 &ia32_class_reg_req_gp,
6167 &arch_memory_requirement,
6181 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6182 irn_flags |= arch_irn_flag_rematerializable;
6185 int const n_res = 5;
6188 ia32_request_x87_sim(irg);
6189 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6190 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6191 out_infos[0].req = &ia32_class_reg_req_fp;
6192 out_infos[1].req = &arch_no_requirement;
6193 out_infos[2].req = &arch_memory_requirement;
6194 out_infos[3].req = &arch_exec_requirement;
6195 out_infos[4].req = &arch_exec_requirement;
6203 arch_register_req_t
const **
const in_reqs = NULL;
6207 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fld1, x86_mode_E, 0, NULL);
6210 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6211 irn_flags |= arch_irn_flag_rematerializable;
6214 int const n_res = 1;
6217 x86_insn_size_t
const size = X86_SIZE_80;
6218 ia32_request_x87_sim(irg);
6219 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6220 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6221 out_infos[0].req = &ia32_class_reg_req_fp;
6229 arch_register_req_t
const **
const in_reqs = NULL;
6233 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldl2e, x86_mode_E, 0, NULL);
6236 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6237 irn_flags |= arch_irn_flag_rematerializable;
6240 int const n_res = 1;
6243 x86_insn_size_t
const size = X86_SIZE_80;
6244 ia32_request_x87_sim(irg);
6245 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6246 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6247 out_infos[0].req = &ia32_class_reg_req_fp;
6255 arch_register_req_t
const **
const in_reqs = NULL;
6259 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldl2t, x86_mode_E, 0, NULL);
6262 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6263 irn_flags |= arch_irn_flag_rematerializable;
6266 int const n_res = 1;
6269 x86_insn_size_t
const size = X86_SIZE_80;
6270 ia32_request_x87_sim(irg);
6271 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6272 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6273 out_infos[0].req = &ia32_class_reg_req_fp;
6281 arch_register_req_t
const **
const in_reqs = NULL;
6285 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldlg2, x86_mode_E, 0, NULL);
6288 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6289 irn_flags |= arch_irn_flag_rematerializable;
6292 int const n_res = 1;
6295 x86_insn_size_t
const size = X86_SIZE_80;
6296 ia32_request_x87_sim(irg);
6297 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6298 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6299 out_infos[0].req = &ia32_class_reg_req_fp;
6307 arch_register_req_t
const **
const in_reqs = NULL;
6311 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldln2, x86_mode_E, 0, NULL);
6314 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6315 irn_flags |= arch_irn_flag_rematerializable;
6318 int const n_res = 1;
6321 x86_insn_size_t
const size = X86_SIZE_80;
6322 ia32_request_x87_sim(irg);
6323 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6324 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6325 out_infos[0].req = &ia32_class_reg_req_fp;
6333 arch_register_req_t
const **
const in_reqs = NULL;
6337 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldpi, x86_mode_E, 0, NULL);
6340 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6341 irn_flags |= arch_irn_flag_rematerializable;
6344 int const n_res = 1;
6347 x86_insn_size_t
const size = X86_SIZE_80;
6348 ia32_request_x87_sim(irg);
6349 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6350 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6351 out_infos[0].req = &ia32_class_reg_req_fp;
6359 arch_register_req_t
const **
const in_reqs = NULL;
6363 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldz, x86_mode_E, 0, NULL);
6366 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6367 irn_flags |= arch_irn_flag_rematerializable;
6370 int const n_res = 1;
6373 x86_insn_size_t
const size = X86_SIZE_80;
6374 ia32_request_x87_sim(irg);
6375 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6376 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6377 out_infos[0].req = &ia32_class_reg_req_fp;
6385 static arch_register_req_t
const *in_reqs[] = {
6386 &ia32_class_reg_req_gp,
6387 &ia32_class_reg_req_gp,
6388 &arch_memory_requirement,
6389 &ia32_class_reg_req_fp,
6390 &ia32_class_reg_req_fp,
6391 &ia32_single_reg_req_fp_cw_fpcw,
6408 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6411 int const n_res = 3;
6414 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6415 init_ia32_x87_attributes(res);
6416 set_ia32_am_support(res, ia32_am_binary);
6417 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6418 out_infos[0].req = &ia32_class_reg_req_fp;
6419 out_infos[1].req = &arch_no_requirement;
6420 out_infos[2].req = &arch_memory_requirement;
6428 arch_register_req_t
const **
const in_reqs = NULL;
6435 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6438 int const n_res = 1;
6441 x86_insn_size_t
const size = X86_SIZE_80;
6442 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6443 init_ia32_x87_attributes(res);
6444 attr->x87.reg = reg;
6445 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6446 out_infos[0].req = &arch_no_requirement;
6454 static arch_register_req_t
const *in_reqs[] = {
6455 &ia32_class_reg_req_gp,
6456 &ia32_class_reg_req_gp,
6457 &arch_memory_requirement,
6458 &ia32_class_reg_req_fp,
6473 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6474 irn_flags |= arch_irn_flag_rematerializable;
6477 int const n_res = 3;
6480 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6481 init_ia32_x87_attributes(res);
6482 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6483 out_infos[0].req = &arch_memory_requirement;
6484 out_infos[1].req = &arch_exec_requirement;
6485 out_infos[2].req = &arch_exec_requirement;
6493 static arch_register_req_t
const *in_reqs[] = {
6494 &ia32_class_reg_req_gp,
6495 &ia32_class_reg_req_gp,
6496 &arch_memory_requirement,
6497 &ia32_requirements_fp_fp_K,
6512 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6513 irn_flags |= arch_irn_flag_rematerializable;
6516 int const n_res = 3;
6519 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6520 init_ia32_x87_attributes(res);
6521 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6522 out_infos[0].req = &arch_memory_requirement;
6523 out_infos[1].req = &arch_exec_requirement;
6524 out_infos[2].req = &arch_exec_requirement;
6532 static arch_register_req_t
const *in_reqs[] = {
6533 &ia32_class_reg_req_gp,
6534 &ia32_class_reg_req_gp,
6535 &arch_memory_requirement,
6536 &ia32_class_reg_req_fp,
6537 &ia32_class_reg_req_fp,
6538 &ia32_single_reg_req_fp_cw_fpcw,
6555 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6558 int const n_res = 3;
6561 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6562 init_ia32_x87_attributes(res);
6563 set_ia32_am_support(res, ia32_am_binary);
6564 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6565 out_infos[0].req = &ia32_class_reg_req_fp;
6566 out_infos[1].req = &arch_no_requirement;
6567 out_infos[2].req = &arch_memory_requirement;
6575 arch_register_req_t
const **
const in_reqs = NULL;
6582 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6585 int const n_res = 1;
6588 x86_insn_size_t
const size = X86_SIZE_80;
6589 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6590 init_ia32_x87_attributes(res);
6591 attr->x87.reg = reg;
6592 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6593 out_infos[0].req = &arch_no_requirement;
6613 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6616 int const n_res = 0;
6617 (void)irn_flags, (
void)n_res;
6636 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6639 int const n_res = 2;
6640 (void)irn_flags, (
void)n_res;
6658 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6661 int const n_res = 2;
6662 (void)irn_flags, (
void)n_res;
6681 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6684 int const n_res = 4;
6685 (void)irn_flags, (
void)n_res;
6701 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_l_LLtoFloat, mode, 2, in);
6704 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6707 int const n_res = 0;
6708 (void)irn_flags, (
void)n_res;
6727 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6730 int const n_res = 2;
6731 (void)irn_flags, (
void)n_res;
6750 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6753 int const n_res = 4;
6754 (void)irn_flags, (
void)n_res;
6774 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6777 int const n_res = 0;
6778 (void)irn_flags, (
void)n_res;
6797 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6800 int const n_res = 2;
6801 (void)irn_flags, (
void)n_res;
6809 arch_register_req_t
const **
const in_reqs = NULL;
6813 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xAllOnes, ia32_mode_float64, 0, NULL);
6816 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6817 irn_flags |= arch_irn_flag_rematerializable;
6820 int const n_res = 1;
6823 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6824 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6825 out_infos[0].req = &ia32_class_reg_req_xmm;
6833 static arch_register_req_t
const *in_reqs[] = {
6834 &ia32_class_reg_req_gp,
6835 &ia32_class_reg_req_gp,
6836 &arch_memory_requirement,
6850 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6853 int const n_res = 5;
6856 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6857 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6858 out_infos[0].req = &ia32_class_reg_req_xmm;
6859 out_infos[1].req = &arch_no_requirement;
6860 out_infos[2].req = &arch_memory_requirement;
6861 out_infos[3].req = &arch_exec_requirement;
6862 out_infos[4].req = &arch_exec_requirement;
6870 arch_register_req_t
const **
const in_reqs = NULL;
6874 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xPzero, ia32_mode_float64, 0, NULL);
6877 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6878 irn_flags |= arch_irn_flag_rematerializable;
6881 int const n_res = 1;
6884 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6885 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6886 out_infos[0].req = &ia32_class_reg_req_xmm;
6894 static arch_register_req_t
const *in_reqs[] = {
6895 &ia32_class_reg_req_gp,
6896 &ia32_class_reg_req_gp,
6897 &arch_memory_requirement,
6898 &ia32_class_reg_req_xmm,
6913 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6916 int const n_res = 3;
6919 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6920 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6921 out_infos[0].req = &arch_memory_requirement;
6922 out_infos[1].req = &arch_exec_requirement;
6923 out_infos[2].req = &arch_exec_requirement;
6931 arch_register_req_t
const **
const in_reqs = NULL;
6935 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xZero, ia32_mode_float64, 0, NULL);
6938 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6939 irn_flags |= arch_irn_flag_rematerializable;
6942 int const n_res = 1;
6945 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6946 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6947 out_infos[0].req = &ia32_class_reg_req_xmm;
6955 static arch_register_req_t
const *in_reqs[] = {
6956 &ia32_class_reg_req_gp,
6957 &ia32_class_reg_req_gp,
6958 &arch_memory_requirement,
6972 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6975 int const n_res = 4;
6978 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
6979 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6980 out_infos[0].req = &ia32_class_reg_req_xmm;
6981 out_infos[1].req = &arch_memory_requirement;
6982 out_infos[2].req = &arch_exec_requirement;
6983 out_infos[3].req = &arch_exec_requirement;
6991 static arch_register_req_t
const *in_reqs[] = {
6992 &ia32_class_reg_req_gp,
6993 &ia32_class_reg_req_gp,
6994 &arch_memory_requirement,
6995 &ia32_class_reg_req_xmm,
7010 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7013 int const n_res = 3;
7016 init_ia32_attributes(res, irn_flags, in_reqs, n_res, size);
7017 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7018 out_infos[0].req = &arch_memory_requirement;
7019 out_infos[1].req = &arch_exec_requirement;
7020 out_infos[2].req = &arch_exec_requirement;
7031 void ia32_create_opcodes(
void)
7036 ia32_opcode_start = cur_opcode;
7041 set_op_tag(op, ia32_op_tag);
7042 ia32_init_op(op, 1);
7048 set_op_tag(op, ia32_op_tag);
7049 ia32_init_op(op, 1);
7055 set_op_tag(op, ia32_op_tag);
7056 ia32_init_op(op, 1);
7057 op_ia32_AddMem = op;
7062 set_op_tag(op, ia32_op_tag);
7063 ia32_init_op(op, 1);
7069 set_op_tag(op, ia32_op_tag);
7070 ia32_init_op(op, 4);
7076 set_op_tag(op, ia32_op_tag);
7077 ia32_init_op(op, 1);
7083 set_op_tag(op, ia32_op_tag);
7084 ia32_init_op(op, 1);
7085 op_ia32_AndMem = op;
7090 set_op_tag(op, ia32_op_tag);
7091 ia32_init_op(op, 3);
7097 set_op_tag(op, ia32_op_tag);
7098 ia32_init_op(op, 3);
7104 set_op_tag(op, ia32_op_tag);
7105 ia32_init_op(op, 0);
7106 op_ia32_Breakpoint = op;
7111 set_op_tag(op, ia32_op_tag);
7112 ia32_init_op(op, 1);
7118 set_op_tag(op, ia32_op_tag);
7119 ia32_init_op(op, 1);
7125 set_op_tag(op, ia32_op_tag);
7126 ia32_init_op(op, 1);
7132 set_op_tag(op, ia32_op_tag);
7133 ia32_init_op(op, 1);
7134 op_ia32_Bswap16 = op;
7139 set_op_tag(op, ia32_op_tag);
7140 ia32_init_op(op, 1);
7146 set_op_tag(op, ia32_op_tag);
7147 ia32_init_op(op, 1);
7148 op_ia32_CMovcc = op;
7153 set_op_tag(op, ia32_op_tag);
7154 ia32_init_op(op, 4);
7160 set_op_tag(op, ia32_op_tag);
7161 ia32_init_op(op, 3);
7162 op_ia32_ChangeCW = op;
7167 set_op_tag(op, ia32_op_tag);
7168 ia32_init_op(op, 1);
7174 set_op_tag(op, ia32_op_tag);
7175 ia32_init_op(op, 1);
7181 set_op_tag(op, ia32_op_tag);
7182 ia32_init_op(op, 1);
7188 set_op_tag(op, ia32_op_tag);
7189 ia32_init_op(op, 2);
7190 op_ia32_CmpXChgMem = op;
7195 set_op_tag(op, ia32_op_tag);
7196 ia32_init_op(op, 1);
7202 set_op_tag(op, ia32_op_tag);
7203 ia32_init_op(op, 8);
7204 op_ia32_Conv_FP2FP = op;
7209 set_op_tag(op, ia32_op_tag);
7210 ia32_init_op(op, 10);
7211 op_ia32_Conv_FP2I = op;
7216 set_op_tag(op, ia32_op_tag);
7217 ia32_init_op(op, 10);
7218 op_ia32_Conv_I2FP = op;
7225 set_op_tag(op, ia32_op_tag);
7226 ia32_init_op(op, 1);
7227 op_ia32_Conv_I2I = op;
7232 set_op_tag(op, ia32_op_tag);
7233 ia32_init_op(op, 250);
7239 set_op_tag(op, ia32_op_tag);
7240 ia32_init_op(op, 3);
7241 op_ia32_CopyB_i = op;
7246 set_op_tag(op, ia32_op_tag);
7247 ia32_init_op(op, 1);
7248 op_ia32_CopyEbpEsp = op;
7253 set_op_tag(op, ia32_op_tag);
7254 ia32_init_op(op, 2);
7255 op_ia32_CvtSI2SD = op;
7260 set_op_tag(op, ia32_op_tag);
7261 ia32_init_op(op, 2);
7262 op_ia32_CvtSI2SS = op;
7267 set_op_tag(op, ia32_op_tag);
7268 ia32_init_op(op, 1);
7274 set_op_tag(op, ia32_op_tag);
7275 ia32_init_op(op, 1);
7281 set_op_tag(op, ia32_op_tag);
7282 ia32_init_op(op, 1);
7283 op_ia32_DecMem = op;
7290 set_op_tag(op, ia32_op_tag);
7291 ia32_init_op(op, 25);
7297 set_op_tag(op, ia32_op_tag);
7298 ia32_init_op(op, 16);
7304 set_op_tag(op, ia32_op_tag);
7305 ia32_init_op(op, 15);
7311 set_op_tag(op, ia32_op_tag);
7312 ia32_init_op(op, 5);
7318 set_op_tag(op, ia32_op_tag);
7319 ia32_init_op(op, 5);
7320 op_ia32_FnstCW = op;
7325 set_op_tag(op, ia32_op_tag);
7326 ia32_init_op(op, 0);
7327 op_ia32_FnstCWNOP = op;
7332 set_op_tag(op, ia32_op_tag);
7333 ia32_init_op(op, 3);
7334 op_ia32_FtstFnstsw = op;
7339 set_op_tag(op, ia32_op_tag);
7340 ia32_init_op(op, 3);
7341 op_ia32_FucomFnstsw = op;
7346 set_op_tag(op, ia32_op_tag);
7347 ia32_init_op(op, 3);
7348 op_ia32_Fucomi = op;
7353 set_op_tag(op, ia32_op_tag);
7354 ia32_init_op(op, 3);
7355 op_ia32_FucomppFnstsw = op;
7360 set_op_tag(op, ia32_op_tag);
7361 ia32_init_op(op, 5);
7362 op_ia32_GetEIP = op;
7369 set_op_tag(op, ia32_op_tag);
7370 ia32_init_op(op, 25);
7376 set_op_tag(op, ia32_op_tag);
7377 ia32_init_op(op, 1);
7383 set_op_tag(op, ia32_op_tag);
7384 ia32_init_op(op, 5);
7390 set_op_tag(op, ia32_op_tag);
7391 ia32_init_op(op, 5);
7392 op_ia32_IMul1OP = op;
7397 set_op_tag(op, ia32_op_tag);
7398 ia32_init_op(op, 5);
7399 op_ia32_IMulImm = op;
7405 set_op_tag(op, ia32_op_tag);
7406 ia32_init_op(op, 0);
7407 op_ia32_Immediate = op;
7412 set_op_tag(op, ia32_op_tag);
7413 ia32_init_op(op, 1);
7419 set_op_tag(op, ia32_op_tag);
7420 ia32_init_op(op, 1);
7421 op_ia32_IncMem = op;
7426 set_op_tag(op, ia32_op_tag);
7427 ia32_init_op(op, 1);
7428 op_ia32_Inport = op;
7433 set_op_tag(op, ia32_op_tag);
7434 ia32_init_op(op, 2);
7440 set_op_tag(op, ia32_op_tag);
7441 ia32_init_op(op, 1);
7447 set_op_tag(op, ia32_op_tag);
7448 ia32_init_op(op, 1);
7454 set_op_tag(op, ia32_op_tag);
7455 ia32_init_op(op, 2);
7461 set_op_tag(op, ia32_op_tag);
7462 ia32_init_op(op, 3);
7470 set_op_tag(op, ia32_op_tag);
7471 ia32_init_op(op, 0);
7477 set_op_tag(op, ia32_op_tag);
7478 ia32_init_op(op, 2);
7484 set_op_tag(op, ia32_op_tag);
7485 ia32_init_op(op, 2);
7491 set_op_tag(op, ia32_op_tag);
7492 ia32_init_op(op, 3);
7493 op_ia32_Minus64 = op;
7498 set_op_tag(op, ia32_op_tag);
7499 ia32_init_op(op, 1);
7505 set_op_tag(op, ia32_op_tag);
7506 ia32_init_op(op, 10);
7512 set_op_tag(op, ia32_op_tag);
7513 ia32_init_op(op, 4);
7519 set_op_tag(op, ia32_op_tag);
7520 ia32_init_op(op, 1);
7526 set_op_tag(op, ia32_op_tag);
7527 ia32_init_op(op, 1);
7528 op_ia32_NegMem = op;
7533 set_op_tag(op, ia32_op_tag);
7534 ia32_init_op(op, 0);
7535 op_ia32_NoReg_FP = op;
7540 set_op_tag(op, ia32_op_tag);
7541 ia32_init_op(op, 0);
7542 op_ia32_NoReg_GP = op;
7547 set_op_tag(op, ia32_op_tag);
7548 ia32_init_op(op, 0);
7549 op_ia32_NoReg_XMM = op;
7554 set_op_tag(op, ia32_op_tag);
7555 ia32_init_op(op, 1);
7561 set_op_tag(op, ia32_op_tag);
7562 ia32_init_op(op, 1);
7563 op_ia32_NotMem = op;
7568 set_op_tag(op, ia32_op_tag);
7569 ia32_init_op(op, 1);
7575 set_op_tag(op, ia32_op_tag);
7576 ia32_init_op(op, 1);
7582 set_op_tag(op, ia32_op_tag);
7583 ia32_init_op(op, 3);
7589 set_op_tag(op, ia32_op_tag);
7590 ia32_init_op(op, 1);
7591 op_ia32_Outport = op;
7596 set_op_tag(op, ia32_op_tag);
7597 ia32_init_op(op, 3);
7603 set_op_tag(op, ia32_op_tag);
7604 ia32_init_op(op, 3);
7605 op_ia32_PopMem = op;
7610 set_op_tag(op, ia32_op_tag);
7611 ia32_init_op(op, 1);
7612 op_ia32_Popcnt = op;
7617 set_op_tag(op, ia32_op_tag);
7618 ia32_init_op(op, 0);
7619 op_ia32_Prefetch = op;
7624 set_op_tag(op, ia32_op_tag);
7625 ia32_init_op(op, 0);
7626 op_ia32_PrefetchNTA = op;
7631 set_op_tag(op, ia32_op_tag);
7632 ia32_init_op(op, 0);
7633 op_ia32_PrefetchT0 = op;
7638 set_op_tag(op, ia32_op_tag);
7639 ia32_init_op(op, 0);
7640 op_ia32_PrefetchT1 = op;
7645 set_op_tag(op, ia32_op_tag);
7646 ia32_init_op(op, 0);
7647 op_ia32_PrefetchT2 = op;
7652 set_op_tag(op, ia32_op_tag);
7653 ia32_init_op(op, 0);
7654 op_ia32_PrefetchW = op;
7659 set_op_tag(op, ia32_op_tag);
7660 ia32_init_op(op, 3);
7666 set_op_tag(op, ia32_op_tag);
7667 ia32_init_op(op, 3);
7673 set_op_tag(op, ia32_op_tag);
7674 ia32_init_op(op, 1);
7680 set_op_tag(op, ia32_op_tag);
7681 ia32_init_op(op, 2);
7687 set_op_tag(op, ia32_op_tag);
7688 ia32_init_op(op, 2);
7689 op_ia32_PushEax = op;
7694 set_op_tag(op, ia32_op_tag);
7695 ia32_init_op(op, 0);
7696 op_ia32_Return = op;
7701 set_op_tag(op, ia32_op_tag);
7702 ia32_init_op(op, 1);
7708 set_op_tag(op, ia32_op_tag);
7709 ia32_init_op(op, 1);
7710 op_ia32_RolMem = op;
7715 set_op_tag(op, ia32_op_tag);
7716 ia32_init_op(op, 1);
7722 set_op_tag(op, ia32_op_tag);
7723 ia32_init_op(op, 1);
7724 op_ia32_RorMem = op;
7729 set_op_tag(op, ia32_op_tag);
7730 ia32_init_op(op, 1);
7736 set_op_tag(op, ia32_op_tag);
7737 ia32_init_op(op, 1);
7743 set_op_tag(op, ia32_op_tag);
7744 ia32_init_op(op, 1);
7745 op_ia32_SarMem = op;
7750 set_op_tag(op, ia32_op_tag);
7751 ia32_init_op(op, 1);
7757 set_op_tag(op, ia32_op_tag);
7758 ia32_init_op(op, 1);
7764 set_op_tag(op, ia32_op_tag);
7765 ia32_init_op(op, 1);
7771 set_op_tag(op, ia32_op_tag);
7772 ia32_init_op(op, 1);
7773 op_ia32_SetccMem = op;
7778 set_op_tag(op, ia32_op_tag);
7779 ia32_init_op(op, 1);
7785 set_op_tag(op, ia32_op_tag);
7786 ia32_init_op(op, 6);
7792 set_op_tag(op, ia32_op_tag);
7793 ia32_init_op(op, 1);
7794 op_ia32_ShlMem = op;
7799 set_op_tag(op, ia32_op_tag);
7800 ia32_init_op(op, 1);
7806 set_op_tag(op, ia32_op_tag);
7807 ia32_init_op(op, 6);
7813 set_op_tag(op, ia32_op_tag);
7814 ia32_init_op(op, 1);
7815 op_ia32_ShrMem = op;
7820 set_op_tag(op, ia32_op_tag);
7821 ia32_init_op(op, 1);
7829 set_op_tag(op, ia32_op_tag);
7830 ia32_init_op(op, 2);
7836 set_op_tag(op, ia32_op_tag);
7837 ia32_init_op(op, 1);
7843 set_op_tag(op, ia32_op_tag);
7844 ia32_init_op(op, 1);
7845 op_ia32_SubMem = op;
7850 set_op_tag(op, ia32_op_tag);
7851 ia32_init_op(op, 2);
7857 set_op_tag(op, ia32_op_tag);
7858 ia32_init_op(op, 4);
7864 set_op_tag(op, ia32_op_tag);
7865 ia32_init_op(op, 2);
7866 op_ia32_SwitchJmp = op;
7871 set_op_tag(op, ia32_op_tag);
7872 ia32_init_op(op, 1);
7878 set_op_tag(op, ia32_op_tag);
7879 ia32_init_op(op, 0);
7885 set_op_tag(op, ia32_op_tag);
7886 ia32_init_op(op, 3);
7887 op_ia32_Ucomis = op;
7892 set_op_tag(op, ia32_op_tag);
7893 ia32_init_op(op, 1);
7899 set_op_tag(op, ia32_op_tag);
7900 ia32_init_op(op, 1);
7906 set_op_tag(op, ia32_op_tag);
7907 ia32_init_op(op, 1);
7908 op_ia32_XorHighLow = op;
7913 set_op_tag(op, ia32_op_tag);
7914 ia32_init_op(op, 1);
7915 op_ia32_XorMem = op;
7920 set_op_tag(op, ia32_op_tag);
7921 ia32_init_op(op, 3);
7927 set_op_tag(op, ia32_op_tag);
7928 ia32_init_op(op, 3);
7934 set_op_tag(op, ia32_op_tag);
7935 ia32_init_op(op, 2);
7941 set_op_tag(op, ia32_op_tag);
7942 ia32_init_op(op, 4);
7948 set_op_tag(op, ia32_op_tag);
7949 ia32_init_op(op, 2);
7955 set_op_tag(op, ia32_op_tag);
7956 ia32_init_op(op, 20);
7962 set_op_tag(op, ia32_op_tag);
7963 ia32_init_op(op, 1);
7969 set_op_tag(op, ia32_op_tag);
7970 ia32_init_op(op, 3);
7976 set_op_tag(op, ia32_op_tag);
7977 ia32_init_op(op, 1);
7978 op_ia32_ffreep = op;
7983 set_op_tag(op, ia32_op_tag);
7984 ia32_init_op(op, 4);
7992 set_op_tag(op, ia32_op_tag);
7993 ia32_init_op(op, 4);
8001 set_op_tag(op, ia32_op_tag);
8002 ia32_init_op(op, 4);
8010 set_op_tag(op, ia32_op_tag);
8011 ia32_init_op(op, 4);
8012 op_ia32_fisttp = op;
8019 set_op_tag(op, ia32_op_tag);
8020 ia32_init_op(op, 2);
8026 set_op_tag(op, ia32_op_tag);
8027 ia32_init_op(op, 4);
8033 set_op_tag(op, ia32_op_tag);
8034 ia32_init_op(op, 4);
8035 op_ia32_fldl2e = op;
8040 set_op_tag(op, ia32_op_tag);
8041 ia32_init_op(op, 4);
8042 op_ia32_fldl2t = op;
8047 set_op_tag(op, ia32_op_tag);
8048 ia32_init_op(op, 4);
8049 op_ia32_fldlg2 = op;
8054 set_op_tag(op, ia32_op_tag);
8055 ia32_init_op(op, 4);
8056 op_ia32_fldln2 = op;
8061 set_op_tag(op, ia32_op_tag);
8062 ia32_init_op(op, 4);
8068 set_op_tag(op, ia32_op_tag);
8069 ia32_init_op(op, 4);
8075 set_op_tag(op, ia32_op_tag);
8076 ia32_init_op(op, 4);
8082 set_op_tag(op, ia32_op_tag);
8083 ia32_init_op(op, 1);
8091 set_op_tag(op, ia32_op_tag);
8092 ia32_init_op(op, 2);
8100 set_op_tag(op, ia32_op_tag);
8101 ia32_init_op(op, 2);
8107 set_op_tag(op, ia32_op_tag);
8108 ia32_init_op(op, 4);
8114 set_op_tag(op, ia32_op_tag);
8115 ia32_init_op(op, 1);
8119 set_op_tag(op, ia32_op_tag);
8120 ia32_init_op(op, 0);
8124 set_op_tag(op, ia32_op_tag);
8125 ia32_init_op(op, 0);
8129 set_op_tag(op, ia32_op_tag);
8130 ia32_init_op(op, 0);
8131 op_ia32_l_FloattoLL = op;
8134 set_op_tag(op, ia32_op_tag);
8135 ia32_init_op(op, 0);
8136 op_ia32_l_IMul = op;
8139 set_op_tag(op, ia32_op_tag);
8140 ia32_init_op(op, 0);
8141 op_ia32_l_LLtoFloat = op;
8144 set_op_tag(op, ia32_op_tag);
8145 ia32_init_op(op, 0);
8146 op_ia32_l_Minus64 = op;
8149 set_op_tag(op, ia32_op_tag);
8150 ia32_init_op(op, 0);
8154 set_op_tag(op, ia32_op_tag);
8155 ia32_init_op(op, 0);
8159 set_op_tag(op, ia32_op_tag);
8160 ia32_init_op(op, 0);
8166 set_op_tag(op, ia32_op_tag);
8167 ia32_init_op(op, 3);
8168 op_ia32_xAllOnes = op;
8175 set_op_tag(op, ia32_op_tag);
8176 ia32_init_op(op, 0);
8182 set_op_tag(op, ia32_op_tag);
8183 ia32_init_op(op, 3);
8184 op_ia32_xPzero = op;
8191 set_op_tag(op, ia32_op_tag);
8192 ia32_init_op(op, 0);
8193 op_ia32_xStore = op;
8198 set_op_tag(op, ia32_op_tag);
8199 ia32_init_op(op, 3);
8207 set_op_tag(op, ia32_op_tag);
8208 ia32_init_op(op, 1);
8209 op_ia32_xxLoad = op;
8216 set_op_tag(op, ia32_op_tag);
8217 ia32_init_op(op, 1);
8218 op_ia32_xxStore = op;
8222 void ia32_free_opcodes(
void)
8226 free_ir_op(op_ia32_AddMem); op_ia32_AddMem = NULL;
8227 free_ir_op(op_ia32_AddSP); op_ia32_AddSP = NULL;
8228 free_ir_op(op_ia32_Adds); op_ia32_Adds = NULL;
8230 free_ir_op(op_ia32_AndMem); op_ia32_AndMem = NULL;
8231 free_ir_op(op_ia32_Andnp); op_ia32_Andnp = NULL;
8232 free_ir_op(op_ia32_Andp); op_ia32_Andp = NULL;
8233 free_ir_op(op_ia32_Breakpoint); op_ia32_Breakpoint = NULL;
8236 free_ir_op(op_ia32_Bswap); op_ia32_Bswap = NULL;
8237 free_ir_op(op_ia32_Bswap16); op_ia32_Bswap16 = NULL;
8239 free_ir_op(op_ia32_CMovcc); op_ia32_CMovcc = NULL;
8240 free_ir_op(op_ia32_Call); op_ia32_Call = NULL;
8241 free_ir_op(op_ia32_ChangeCW); op_ia32_ChangeCW = NULL;
8242 free_ir_op(op_ia32_Cltd); op_ia32_Cltd = NULL;
8245 free_ir_op(op_ia32_CmpXChgMem); op_ia32_CmpXChgMem = NULL;
8246 free_ir_op(op_ia32_Const); op_ia32_Const = NULL;
8247 free_ir_op(op_ia32_Conv_FP2FP); op_ia32_Conv_FP2FP = NULL;
8248 free_ir_op(op_ia32_Conv_FP2I); op_ia32_Conv_FP2I = NULL;
8249 free_ir_op(op_ia32_Conv_I2FP); op_ia32_Conv_I2FP = NULL;
8250 free_ir_op(op_ia32_Conv_I2I); op_ia32_Conv_I2I = NULL;
8251 free_ir_op(op_ia32_CopyB); op_ia32_CopyB = NULL;
8252 free_ir_op(op_ia32_CopyB_i); op_ia32_CopyB_i = NULL;
8253 free_ir_op(op_ia32_CopyEbpEsp); op_ia32_CopyEbpEsp = NULL;
8254 free_ir_op(op_ia32_CvtSI2SD); op_ia32_CvtSI2SD = NULL;
8255 free_ir_op(op_ia32_CvtSI2SS); op_ia32_CvtSI2SS = NULL;
8256 free_ir_op(op_ia32_Cwtl); op_ia32_Cwtl = NULL;
8258 free_ir_op(op_ia32_DecMem); op_ia32_DecMem = NULL;
8260 free_ir_op(op_ia32_Divs); op_ia32_Divs = NULL;
8261 free_ir_op(op_ia32_Enter); op_ia32_Enter = NULL;
8262 free_ir_op(op_ia32_FldCW); op_ia32_FldCW = NULL;
8263 free_ir_op(op_ia32_FnstCW); op_ia32_FnstCW = NULL;
8264 free_ir_op(op_ia32_FnstCWNOP); op_ia32_FnstCWNOP = NULL;
8265 free_ir_op(op_ia32_FtstFnstsw); op_ia32_FtstFnstsw = NULL;
8266 free_ir_op(op_ia32_FucomFnstsw); op_ia32_FucomFnstsw = NULL;
8267 free_ir_op(op_ia32_Fucomi); op_ia32_Fucomi = NULL;
8268 free_ir_op(op_ia32_FucomppFnstsw); op_ia32_FucomppFnstsw = NULL;
8269 free_ir_op(op_ia32_GetEIP); op_ia32_GetEIP = NULL;
8270 free_ir_op(op_ia32_IDiv); op_ia32_IDiv = NULL;
8271 free_ir_op(op_ia32_IJmp); op_ia32_IJmp = NULL;
8272 free_ir_op(op_ia32_IMul); op_ia32_IMul = NULL;
8273 free_ir_op(op_ia32_IMul1OP); op_ia32_IMul1OP = NULL;
8274 free_ir_op(op_ia32_IMulImm); op_ia32_IMulImm = NULL;
8275 free_ir_op(op_ia32_Immediate); op_ia32_Immediate = NULL;
8277 free_ir_op(op_ia32_IncMem); op_ia32_IncMem = NULL;
8278 free_ir_op(op_ia32_Inport); op_ia32_Inport = NULL;
8281 free_ir_op(op_ia32_LdTls); op_ia32_LdTls = NULL;
8283 free_ir_op(op_ia32_Leave); op_ia32_Leave = NULL;
8284 free_ir_op(op_ia32_Load); op_ia32_Load = NULL;
8285 free_ir_op(op_ia32_Maxs); op_ia32_Maxs = NULL;
8286 free_ir_op(op_ia32_Mins); op_ia32_Mins = NULL;
8287 free_ir_op(op_ia32_Minus64); op_ia32_Minus64 = NULL;
8288 free_ir_op(op_ia32_Movd); op_ia32_Movd = NULL;
8290 free_ir_op(op_ia32_Muls); op_ia32_Muls = NULL;
8292 free_ir_op(op_ia32_NegMem); op_ia32_NegMem = NULL;
8293 free_ir_op(op_ia32_NoReg_FP); op_ia32_NoReg_FP = NULL;
8294 free_ir_op(op_ia32_NoReg_GP); op_ia32_NoReg_GP = NULL;
8295 free_ir_op(op_ia32_NoReg_XMM); op_ia32_NoReg_XMM = NULL;
8297 free_ir_op(op_ia32_NotMem); op_ia32_NotMem = NULL;
8299 free_ir_op(op_ia32_OrMem); op_ia32_OrMem = NULL;
8301 free_ir_op(op_ia32_Outport); op_ia32_Outport = NULL;
8303 free_ir_op(op_ia32_PopMem); op_ia32_PopMem = NULL;
8304 free_ir_op(op_ia32_Popcnt); op_ia32_Popcnt = NULL;
8305 free_ir_op(op_ia32_Prefetch); op_ia32_Prefetch = NULL;
8306 free_ir_op(op_ia32_PrefetchNTA); op_ia32_PrefetchNTA = NULL;
8307 free_ir_op(op_ia32_PrefetchT0); op_ia32_PrefetchT0 = NULL;
8308 free_ir_op(op_ia32_PrefetchT1); op_ia32_PrefetchT1 = NULL;
8309 free_ir_op(op_ia32_PrefetchT2); op_ia32_PrefetchT2 = NULL;
8310 free_ir_op(op_ia32_PrefetchW); op_ia32_PrefetchW = NULL;
8311 free_ir_op(op_ia32_Pslld); op_ia32_Pslld = NULL;
8312 free_ir_op(op_ia32_Psllq); op_ia32_Psllq = NULL;
8313 free_ir_op(op_ia32_Psrld); op_ia32_Psrld = NULL;
8314 free_ir_op(op_ia32_Push); op_ia32_Push = NULL;
8315 free_ir_op(op_ia32_PushEax); op_ia32_PushEax = NULL;
8316 free_ir_op(op_ia32_Return); op_ia32_Return = NULL;
8318 free_ir_op(op_ia32_RolMem); op_ia32_RolMem = NULL;
8320 free_ir_op(op_ia32_RorMem); op_ia32_RorMem = NULL;
8321 free_ir_op(op_ia32_Sahf); op_ia32_Sahf = NULL;
8323 free_ir_op(op_ia32_SarMem); op_ia32_SarMem = NULL;
8325 free_ir_op(op_ia32_Sbb0); op_ia32_Sbb0 = NULL;
8326 free_ir_op(op_ia32_Setcc); op_ia32_Setcc = NULL;
8327 free_ir_op(op_ia32_SetccMem); op_ia32_SetccMem = NULL;
8329 free_ir_op(op_ia32_ShlD); op_ia32_ShlD = NULL;
8330 free_ir_op(op_ia32_ShlMem); op_ia32_ShlMem = NULL;
8332 free_ir_op(op_ia32_ShrD); op_ia32_ShrD = NULL;
8333 free_ir_op(op_ia32_ShrMem); op_ia32_ShrMem = NULL;
8335 free_ir_op(op_ia32_Store); op_ia32_Store = NULL;
8337 free_ir_op(op_ia32_SubMem); op_ia32_SubMem = NULL;
8338 free_ir_op(op_ia32_SubSP); op_ia32_SubSP = NULL;
8339 free_ir_op(op_ia32_Subs); op_ia32_Subs = NULL;
8340 free_ir_op(op_ia32_SwitchJmp); op_ia32_SwitchJmp = NULL;
8341 free_ir_op(op_ia32_Test); op_ia32_Test = NULL;
8343 free_ir_op(op_ia32_Ucomis); op_ia32_Ucomis = NULL;
8345 free_ir_op(op_ia32_Xor0); op_ia32_Xor0 = NULL;
8346 free_ir_op(op_ia32_XorHighLow); op_ia32_XorHighLow = NULL;
8347 free_ir_op(op_ia32_XorMem); op_ia32_XorMem = NULL;
8348 free_ir_op(op_ia32_Xorp); op_ia32_Xorp = NULL;
8349 free_ir_op(op_ia32_emms); op_ia32_emms = NULL;
8350 free_ir_op(op_ia32_fabs); op_ia32_fabs = NULL;
8351 free_ir_op(op_ia32_fadd); op_ia32_fadd = NULL;
8352 free_ir_op(op_ia32_fchs); op_ia32_fchs = NULL;
8353 free_ir_op(op_ia32_fdiv); op_ia32_fdiv = NULL;
8354 free_ir_op(op_ia32_fdup); op_ia32_fdup = NULL;
8355 free_ir_op(op_ia32_femms); op_ia32_femms = NULL;
8356 free_ir_op(op_ia32_ffreep); op_ia32_ffreep = NULL;
8357 free_ir_op(op_ia32_fild); op_ia32_fild = NULL;
8358 free_ir_op(op_ia32_fist); op_ia32_fist = NULL;
8359 free_ir_op(op_ia32_fistp); op_ia32_fistp = NULL;
8360 free_ir_op(op_ia32_fisttp); op_ia32_fisttp = NULL;
8362 free_ir_op(op_ia32_fld1); op_ia32_fld1 = NULL;
8363 free_ir_op(op_ia32_fldl2e); op_ia32_fldl2e = NULL;
8364 free_ir_op(op_ia32_fldl2t); op_ia32_fldl2t = NULL;
8365 free_ir_op(op_ia32_fldlg2); op_ia32_fldlg2 = NULL;
8366 free_ir_op(op_ia32_fldln2); op_ia32_fldln2 = NULL;
8367 free_ir_op(op_ia32_fldpi); op_ia32_fldpi = NULL;
8368 free_ir_op(op_ia32_fldz); op_ia32_fldz = NULL;
8369 free_ir_op(op_ia32_fmul); op_ia32_fmul = NULL;
8370 free_ir_op(op_ia32_fpop); op_ia32_fpop = NULL;
8372 free_ir_op(op_ia32_fstp); op_ia32_fstp = NULL;
8373 free_ir_op(op_ia32_fsub); op_ia32_fsub = NULL;
8374 free_ir_op(op_ia32_fxch); op_ia32_fxch = NULL;
8375 free_ir_op(op_ia32_l_Adc); op_ia32_l_Adc = NULL;
8376 free_ir_op(op_ia32_l_Add); op_ia32_l_Add = NULL;
8377 free_ir_op(op_ia32_l_FloattoLL); op_ia32_l_FloattoLL = NULL;
8378 free_ir_op(op_ia32_l_IMul); op_ia32_l_IMul = NULL;
8379 free_ir_op(op_ia32_l_LLtoFloat); op_ia32_l_LLtoFloat = NULL;
8380 free_ir_op(op_ia32_l_Minus64); op_ia32_l_Minus64 = NULL;
8381 free_ir_op(op_ia32_l_Mul); op_ia32_l_Mul = NULL;
8382 free_ir_op(op_ia32_l_Sbb); op_ia32_l_Sbb = NULL;
8383 free_ir_op(op_ia32_l_Sub); op_ia32_l_Sub = NULL;
8384 free_ir_op(op_ia32_xAllOnes); op_ia32_xAllOnes = NULL;
8385 free_ir_op(op_ia32_xLoad); op_ia32_xLoad = NULL;
8386 free_ir_op(op_ia32_xPzero); op_ia32_xPzero = NULL;
8387 free_ir_op(op_ia32_xStore); op_ia32_xStore = NULL;
8388 free_ir_op(op_ia32_xZero); op_ia32_xZero = NULL;
8389 free_ir_op(op_ia32_xxLoad); op_ia32_xxLoad = NULL;
8390 free_ir_op(op_ia32_xxStore); op_ia32_xxStore = NULL;
void ir_op_set_memory_index(ir_op *op, int memory_index)
Sets memory input of operation using memory.
Set if the operation can change the control flow because of an exception.
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.
void set_op_attrs_equal(ir_op *op, node_attrs_equal_func func)
Sets attrs_equal callback func for operation op.
ir_mode * mode_ANY
undefined mode
void verify_new_node(ir_node *node)
If firm is built in debug mode, verify that a newly created node is fine.
struct dbg_info dbg_info
Source Reference.
void * get_irn_generic_attr(ir_node *node)
Returns a pointer to the node attributes.
This operation jumps to an unknown destination.
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.
node should be dumped outside any blocks
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 can be kept in End's keep-alive list.
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.
void set_op_hash(ir_op *op, hash_func func)
Sets hash 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.
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.
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.
void ir_op_set_fragile_indices(ir_op *op, unsigned pn_x_regular, unsigned pn_x_except)
Sets proj-number for X_regular and X_except projs of fragile nodes.