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_Ret = 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,
413 arch_irn_flags_t irn_flags = arch_irn_flags_none;
414 irn_flags |= arch_irn_flag_modify_flags;
416 be_info_init_irn(res, irn_flags, in_reqs, n_res);
419 x86_condition_code_t condition_code = x86_cc_carry;
420 init_ia32_attributes(res, size);
421 init_ia32_condcode_attributes(res, condition_code);
422 set_ia32_am_support(res, ia32_am_binary);
423 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
424 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
425 out_infos[1].req = &ia32_class_reg_req_flags;
426 out_infos[2].req = &arch_memory_requirement;
434 static arch_register_req_t
const *in_reqs[] = {
435 &ia32_class_reg_req_gp,
436 &ia32_class_reg_req_gp,
437 &arch_memory_requirement,
438 &ia32_class_reg_req_gp,
439 &ia32_class_reg_req_gp,
457 arch_irn_flags_t irn_flags = arch_irn_flags_none;
458 irn_flags |= arch_irn_flag_modify_flags;
459 irn_flags |= arch_irn_flag_rematerializable;
461 be_info_init_irn(res, irn_flags, in_reqs, n_res);
464 init_ia32_attributes(res, size);
465 set_ia32_am_support(res, ia32_am_binary);
466 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
467 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
468 out_infos[1].req = &ia32_class_reg_req_flags;
469 out_infos[2].req = &arch_memory_requirement;
477 static arch_register_req_t
const *in_reqs[] = {
478 &ia32_class_reg_req_gp,
479 &ia32_class_reg_req_gp,
480 &arch_memory_requirement,
481 &ia32_requirements_gp_eax_ebx_ecx_edx,
482 &ia32_requirements_gp_eax_ebx_ecx_edx,
500 arch_irn_flags_t irn_flags = arch_irn_flags_none;
501 irn_flags |= arch_irn_flag_modify_flags;
502 irn_flags |= arch_irn_flag_rematerializable;
504 be_info_init_irn(res, irn_flags, in_reqs, n_res);
507 init_ia32_attributes(res, size);
508 set_ia32_am_support(res, ia32_am_binary);
509 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
510 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
511 out_infos[1].req = &ia32_class_reg_req_flags;
512 out_infos[2].req = &arch_memory_requirement;
520 static arch_register_req_t
const *in_reqs[] = {
521 &ia32_class_reg_req_gp,
522 &ia32_class_reg_req_gp,
523 &arch_memory_requirement,
524 &ia32_class_reg_req_gp,
541 arch_irn_flags_t irn_flags = arch_irn_flags_none;
542 irn_flags |= arch_irn_flag_modify_flags;
543 irn_flags |= arch_irn_flag_rematerializable;
545 be_info_init_irn(res, irn_flags, in_reqs, n_res);
548 init_ia32_attributes(res, size);
549 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
550 out_infos[0].req = &arch_no_requirement;
551 out_infos[1].req = &ia32_class_reg_req_flags;
552 out_infos[2].req = &arch_memory_requirement;
560 static arch_register_req_t
const *in_reqs[] = {
561 &ia32_class_reg_req_gp,
562 &ia32_class_reg_req_gp,
563 &arch_memory_requirement,
564 &ia32_requirements_gp_eax_ebx_ecx_edx,
581 arch_irn_flags_t irn_flags = arch_irn_flags_none;
582 irn_flags |= arch_irn_flag_modify_flags;
583 irn_flags |= arch_irn_flag_rematerializable;
585 be_info_init_irn(res, irn_flags, in_reqs, n_res);
588 init_ia32_attributes(res, size);
589 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
590 out_infos[0].req = &arch_no_requirement;
591 out_infos[1].req = &ia32_class_reg_req_flags;
592 out_infos[2].req = &arch_memory_requirement;
600 static arch_register_req_t
const *in_reqs[] = {
601 &ia32_class_reg_req_gp,
602 &ia32_class_reg_req_gp,
603 &arch_memory_requirement,
604 &ia32_single_reg_req_gp_esp,
605 &ia32_class_reg_req_gp,
623 arch_irn_flags_t irn_flags = arch_irn_flags_none;
624 irn_flags |= arch_irn_flag_modify_flags;
626 be_info_init_irn(res, irn_flags, in_reqs, n_res);
629 x86_insn_size_t
const size = X86_SIZE_32;
630 init_ia32_attributes(res, size);
631 set_ia32_am_support(res, ia32_am_binary);
632 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
633 out_infos[0].req = &ia32_requirements_gp_esp_I;
634 out_infos[1].req = &arch_memory_requirement;
642 static arch_register_req_t
const *in_reqs[] = {
643 &ia32_class_reg_req_gp,
644 &ia32_class_reg_req_gp,
645 &arch_memory_requirement,
646 &ia32_class_reg_req_xmm,
647 &ia32_class_reg_req_xmm,
660 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Adds, ia32_mode_float64, 5, in);
665 arch_irn_flags_t irn_flags = arch_irn_flags_none;
666 irn_flags |= arch_irn_flag_rematerializable;
668 be_info_init_irn(res, irn_flags, in_reqs, n_res);
671 init_ia32_attributes(res, size);
672 set_ia32_am_support(res, ia32_am_binary);
673 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
674 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
675 out_infos[1].req = &ia32_class_reg_req_flags;
676 out_infos[2].req = &arch_memory_requirement;
684 static arch_register_req_t
const *in_reqs[] = {
685 &ia32_class_reg_req_gp,
686 &ia32_class_reg_req_gp,
687 &arch_memory_requirement,
688 &ia32_class_reg_req_gp,
689 &ia32_class_reg_req_gp,
707 arch_irn_flags_t irn_flags = arch_irn_flags_none;
708 irn_flags |= arch_irn_flag_modify_flags;
709 irn_flags |= arch_irn_flag_rematerializable;
711 be_info_init_irn(res, irn_flags, in_reqs, n_res);
714 init_ia32_attributes(res, size);
715 set_ia32_am_support(res, ia32_am_binary);
716 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
717 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
718 out_infos[1].req = &ia32_class_reg_req_flags;
719 out_infos[2].req = &arch_memory_requirement;
727 static arch_register_req_t
const *in_reqs[] = {
728 &ia32_class_reg_req_gp,
729 &ia32_class_reg_req_gp,
730 &arch_memory_requirement,
731 &ia32_requirements_gp_eax_ebx_ecx_edx,
732 &ia32_requirements_gp_eax_ebx_ecx_edx,
750 arch_irn_flags_t irn_flags = arch_irn_flags_none;
751 irn_flags |= arch_irn_flag_modify_flags;
752 irn_flags |= arch_irn_flag_rematerializable;
754 be_info_init_irn(res, irn_flags, in_reqs, n_res);
757 init_ia32_attributes(res, size);
758 set_ia32_am_support(res, ia32_am_binary);
759 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
760 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
761 out_infos[1].req = &ia32_class_reg_req_flags;
762 out_infos[2].req = &arch_memory_requirement;
770 static arch_register_req_t
const *in_reqs[] = {
771 &ia32_class_reg_req_gp,
772 &ia32_class_reg_req_gp,
773 &arch_memory_requirement,
774 &ia32_class_reg_req_gp,
791 arch_irn_flags_t irn_flags = arch_irn_flags_none;
792 irn_flags |= arch_irn_flag_modify_flags;
793 irn_flags |= arch_irn_flag_rematerializable;
795 be_info_init_irn(res, irn_flags, in_reqs, n_res);
798 init_ia32_attributes(res, size);
799 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
800 out_infos[0].req = &arch_no_requirement;
801 out_infos[1].req = &ia32_class_reg_req_flags;
802 out_infos[2].req = &arch_memory_requirement;
810 static arch_register_req_t
const *in_reqs[] = {
811 &ia32_class_reg_req_gp,
812 &ia32_class_reg_req_gp,
813 &arch_memory_requirement,
814 &ia32_requirements_gp_eax_ebx_ecx_edx,
831 arch_irn_flags_t irn_flags = arch_irn_flags_none;
832 irn_flags |= arch_irn_flag_modify_flags;
833 irn_flags |= arch_irn_flag_rematerializable;
835 be_info_init_irn(res, irn_flags, in_reqs, n_res);
838 init_ia32_attributes(res, size);
839 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
840 out_infos[0].req = &arch_no_requirement;
841 out_infos[1].req = &ia32_class_reg_req_flags;
842 out_infos[2].req = &arch_memory_requirement;
850 static arch_register_req_t
const *in_reqs[] = {
851 &ia32_class_reg_req_gp,
852 &ia32_class_reg_req_gp,
853 &arch_memory_requirement,
854 &ia32_class_reg_req_xmm,
855 &ia32_class_reg_req_xmm,
868 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Andnp, ia32_mode_float64, 5, in);
873 arch_irn_flags_t irn_flags = arch_irn_flags_none;
874 irn_flags |= arch_irn_flag_rematerializable;
876 be_info_init_irn(res, irn_flags, in_reqs, n_res);
879 init_ia32_attributes(res, size);
880 set_ia32_am_support(res, ia32_am_binary);
881 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
882 out_infos[0].req = &ia32_requirements_xmm_in_r3_not_in_r4;
883 out_infos[1].req = &ia32_class_reg_req_flags;
884 out_infos[2].req = &arch_memory_requirement;
892 static arch_register_req_t
const *in_reqs[] = {
893 &ia32_class_reg_req_gp,
894 &ia32_class_reg_req_gp,
895 &arch_memory_requirement,
896 &ia32_class_reg_req_xmm,
897 &ia32_class_reg_req_xmm,
910 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Andp, ia32_mode_float64, 5, in);
915 arch_irn_flags_t irn_flags = arch_irn_flags_none;
916 irn_flags |= arch_irn_flag_rematerializable;
918 be_info_init_irn(res, irn_flags, in_reqs, n_res);
921 init_ia32_attributes(res, size);
922 set_ia32_am_support(res, ia32_am_binary);
923 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
924 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
925 out_infos[1].req = &ia32_class_reg_req_flags;
926 out_infos[2].req = &arch_memory_requirement;
934 static arch_register_req_t
const *in_reqs[] = {
935 &arch_memory_requirement,
949 arch_irn_flags_t irn_flags = arch_irn_flags_none;
951 be_info_init_irn(res, irn_flags, in_reqs, n_res);
954 x86_insn_size_t
const size = X86_SIZE_32;
955 init_ia32_attributes(res, size);
956 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
957 out_infos[0].req = &arch_memory_requirement;
965 static arch_register_req_t
const *in_reqs[] = {
966 &ia32_class_reg_req_gp,
967 &ia32_class_reg_req_gp,
968 &arch_memory_requirement,
969 &ia32_class_reg_req_gp,
986 arch_irn_flags_t irn_flags = arch_irn_flags_none;
987 irn_flags |= arch_irn_flag_modify_flags;
988 irn_flags |= arch_irn_flag_rematerializable;
990 be_info_init_irn(res, irn_flags, in_reqs, n_res);
993 init_ia32_attributes(res, size);
994 set_ia32_am_support(res, ia32_am_unary);
995 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
996 out_infos[0].req = &ia32_class_reg_req_gp;
997 out_infos[1].req = &ia32_class_reg_req_flags;
998 out_infos[2].req = &arch_memory_requirement;
1006 static arch_register_req_t
const *in_reqs[] = {
1007 &ia32_class_reg_req_gp,
1008 &ia32_class_reg_req_gp,
1009 &arch_memory_requirement,
1010 &ia32_class_reg_req_gp,
1022 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bsr, ia32_mode_gp, 4, in);
1027 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1028 irn_flags |= arch_irn_flag_modify_flags;
1029 irn_flags |= arch_irn_flag_rematerializable;
1030 int const n_res = 3;
1031 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1034 init_ia32_attributes(res, size);
1035 set_ia32_am_support(res, ia32_am_unary);
1036 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1037 out_infos[0].req = &ia32_class_reg_req_gp;
1038 out_infos[1].req = &ia32_class_reg_req_flags;
1039 out_infos[2].req = &arch_memory_requirement;
1047 static arch_register_req_t
const *in_reqs[] = {
1048 &ia32_class_reg_req_gp,
1057 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bswap, ia32_mode_gp, 1, in);
1062 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1063 irn_flags |= arch_irn_flag_rematerializable;
1064 int const n_res = 1;
1065 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1068 init_ia32_attributes(res, size);
1069 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1070 out_infos[0].req = &ia32_requirements_gp_in_r0;
1078 static arch_register_req_t
const *in_reqs[] = {
1079 &ia32_requirements_gp_eax_ebx_ecx_edx,
1088 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bswap16, ia32_mode_gp, 1, in);
1093 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1094 irn_flags |= arch_irn_flag_rematerializable;
1095 int const n_res = 1;
1096 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1099 x86_insn_size_t
const size = X86_SIZE_8;
1100 init_ia32_attributes(res, size);
1101 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1102 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r0;
1110 static arch_register_req_t
const *in_reqs[] = {
1111 &ia32_class_reg_req_gp,
1112 &ia32_class_reg_req_gp,
1122 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Bt, ia32_mode_flags, 2, in);
1127 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1128 irn_flags |= arch_irn_flag_modify_flags;
1129 irn_flags |= arch_irn_flag_rematerializable;
1130 int const n_res = 1;
1131 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1134 init_ia32_attributes(res, size);
1135 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1136 out_infos[0].req = &ia32_class_reg_req_flags;
1144 static arch_register_req_t
const *in_reqs[] = {
1145 &ia32_class_reg_req_gp,
1146 &ia32_class_reg_req_gp,
1147 &arch_memory_requirement,
1148 &ia32_class_reg_req_gp,
1149 &ia32_class_reg_req_gp,
1150 &ia32_class_reg_req_flags,
1164 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CMovcc, ia32_mode_gp, 6, in);
1169 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1170 int const n_res = 3;
1171 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1174 init_ia32_attributes(res, size);
1175 init_ia32_condcode_attributes(res, condition_code);
1176 set_ia32_am_support(res, ia32_am_binary);
1177 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1178 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
1179 out_infos[1].req = &arch_no_requirement;
1180 out_infos[2].req = &arch_memory_requirement;
1186 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)
1196 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1197 irn_flags |= arch_irn_flag_modify_flags;
1198 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1201 x86_insn_size_t
const size = X86_SIZE_32;
1202 init_ia32_attributes(res, size);
1203 init_ia32_call_attributes(res, pop, n_reg_results);
1204 set_ia32_am_support(res, ia32_am_unary);
1212 arch_register_req_t
const **
const in_reqs = NULL;
1216 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ChangeCW, ia32_mode_fpcw, 0, NULL);
1221 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1222 irn_flags |= arch_irn_flag_not_scheduled;
1223 int const n_res = 1;
1224 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1227 x86_insn_size_t
const size = X86_SIZE_32;
1228 init_ia32_attributes(res, size);
1229 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1230 out_infos[0].req = &ia32_class_reg_req_fpcw;
1238 static arch_register_req_t
const *in_reqs[] = {
1239 &ia32_single_reg_req_gp_eax,
1248 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cltd, ia32_mode_gp, 1, in);
1253 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1254 int const n_res = 1;
1255 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1258 x86_insn_size_t
const size = X86_SIZE_32;
1259 init_ia32_attributes(res, size);
1260 arch_set_additional_pressure(res, &ia32_reg_classes[CLASS_ia32_gp], 1);
1261 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1262 out_infos[0].req = &ia32_single_reg_req_gp_edx;
1270 static arch_register_req_t
const *in_reqs[] = {
1271 &ia32_class_reg_req_flags,
1280 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmc, ia32_mode_flags, 1, in);
1285 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1286 irn_flags |= arch_irn_flag_modify_flags;
1287 int const n_res = 1;
1288 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1291 x86_condition_code_t condition_code = x86_cc_carry;
1292 x86_insn_size_t
const size = X86_SIZE_32;
1293 init_ia32_attributes(res, size);
1294 init_ia32_condcode_attributes(res, condition_code);
1295 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1296 out_infos[0].req = &ia32_class_reg_req_flags;
1304 static arch_register_req_t
const *in_reqs[] = {
1305 &ia32_class_reg_req_gp,
1306 &ia32_class_reg_req_gp,
1307 &arch_memory_requirement,
1308 &ia32_class_reg_req_gp,
1309 &ia32_class_reg_req_gp,
1322 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmp, ia32_mode_flags, 5, in);
1327 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1328 irn_flags |= arch_irn_flag_modify_flags;
1329 irn_flags |= arch_irn_flag_rematerializable;
1330 int const n_res = 3;
1331 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1334 init_ia32_attributes(res, size);
1335 set_ia32_am_support(res, ia32_am_binary);
1336 attr->ins_permuted = ins_permuted;
1337 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1338 out_infos[0].req = &ia32_class_reg_req_flags;
1339 out_infos[1].req = &arch_no_requirement;
1340 out_infos[2].req = &arch_memory_requirement;
1348 static arch_register_req_t
const *in_reqs[] = {
1349 &ia32_class_reg_req_gp,
1350 &ia32_class_reg_req_gp,
1351 &arch_memory_requirement,
1352 &ia32_requirements_gp_eax_ebx_ecx_edx,
1353 &ia32_requirements_gp_eax_ebx_ecx_edx,
1366 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cmp, ia32_mode_flags, 5, in);
1371 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1372 irn_flags |= arch_irn_flag_modify_flags;
1373 irn_flags |= arch_irn_flag_rematerializable;
1374 int const n_res = 3;
1375 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1378 init_ia32_attributes(res, size);
1379 set_ia32_am_support(res, ia32_am_binary);
1380 attr->ins_permuted = ins_permuted;
1381 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1382 out_infos[0].req = &ia32_class_reg_req_flags;
1383 out_infos[1].req = &arch_no_requirement;
1384 out_infos[2].req = &arch_memory_requirement;
1392 static arch_register_req_t
const *in_reqs[] = {
1393 &ia32_class_reg_req_gp,
1394 &ia32_class_reg_req_gp,
1395 &arch_memory_requirement,
1396 &ia32_single_reg_req_gp_eax,
1397 &ia32_class_reg_req_gp,
1415 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1416 irn_flags |= arch_irn_flag_modify_flags;
1417 irn_flags |= arch_irn_flag_rematerializable;
1418 int const n_res = 3;
1419 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1422 init_ia32_attributes(res, size);
1423 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1424 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1425 out_infos[1].req = &ia32_class_reg_req_flags;
1426 out_infos[2].req = &arch_memory_requirement;
1434 arch_register_req_t
const **
const in_reqs = NULL;
1438 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Const, ia32_mode_gp, 0, NULL);
1443 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1444 irn_flags |= arch_irn_flag_rematerializable;
1445 int const n_res = 1;
1446 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1449 x86_insn_size_t
const size = X86_SIZE_32;
1450 init_ia32_attributes(res, size);
1451 init_ia32_immediate_attributes(res, imm);
1452 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1453 out_infos[0].req = &ia32_class_reg_req_gp;
1461 static arch_register_req_t
const *in_reqs[] = {
1462 &ia32_class_reg_req_gp,
1463 &ia32_class_reg_req_gp,
1464 &arch_memory_requirement,
1465 &ia32_class_reg_req_xmm,
1477 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_FP2FP, ia32_mode_float64, 4, in);
1482 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1483 int const n_res = 2;
1484 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1487 init_ia32_attributes(res, size);
1488 set_ia32_am_support(res, ia32_am_unary);
1489 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1490 out_infos[0].req = &ia32_class_reg_req_xmm;
1491 out_infos[1].req = &arch_memory_requirement;
1499 static arch_register_req_t
const *in_reqs[] = {
1500 &ia32_class_reg_req_gp,
1501 &ia32_class_reg_req_gp,
1502 &arch_memory_requirement,
1503 &ia32_class_reg_req_xmm,
1515 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_FP2I, ia32_mode_gp, 4, in);
1520 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1521 int const n_res = 2;
1522 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1525 init_ia32_attributes(res, size);
1526 set_ia32_am_support(res, ia32_am_unary);
1527 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1528 out_infos[0].req = &ia32_class_reg_req_gp;
1529 out_infos[1].req = &arch_memory_requirement;
1537 static arch_register_req_t
const *in_reqs[] = {
1538 &ia32_class_reg_req_gp,
1539 &ia32_class_reg_req_gp,
1540 &arch_memory_requirement,
1541 &ia32_class_reg_req_gp,
1553 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2FP, ia32_mode_float64, 4, in);
1558 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1559 int const n_res = 2;
1560 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1563 init_ia32_attributes(res, size);
1564 set_ia32_am_support(res, ia32_am_unary);
1565 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1566 out_infos[0].req = &ia32_class_reg_req_xmm;
1567 out_infos[1].req = &arch_memory_requirement;
1575 static arch_register_req_t
const *in_reqs[] = {
1576 &ia32_class_reg_req_gp,
1577 &ia32_class_reg_req_gp,
1578 &arch_memory_requirement,
1579 &ia32_class_reg_req_gp,
1591 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2I, ia32_mode_gp, 4, in);
1596 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1597 int const n_res = 5;
1598 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1601 init_ia32_attributes(res, size);
1602 set_ia32_am_support(res, ia32_am_unary);
1603 attr->sign_extend = sign_extend;
1604 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1605 out_infos[0].req = &ia32_class_reg_req_gp;
1606 out_infos[1].req = &arch_no_requirement;
1607 out_infos[2].req = &arch_memory_requirement;
1608 out_infos[3].req = &arch_exec_requirement;
1609 out_infos[4].req = &arch_exec_requirement;
1617 static arch_register_req_t
const *in_reqs[] = {
1618 &ia32_class_reg_req_gp,
1619 &ia32_class_reg_req_gp,
1620 &arch_memory_requirement,
1621 &ia32_requirements_gp_eax_ebx_ecx_edx,
1633 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Conv_I2I, ia32_mode_gp, 4, in);
1638 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1639 int const n_res = 5;
1640 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1643 init_ia32_attributes(res, size);
1644 set_ia32_am_support(res, ia32_am_unary);
1645 attr->sign_extend = sign_extend;
1646 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1647 out_infos[0].req = &ia32_class_reg_req_gp;
1648 out_infos[1].req = &arch_no_requirement;
1649 out_infos[2].req = &arch_memory_requirement;
1650 out_infos[3].req = &arch_exec_requirement;
1651 out_infos[4].req = &arch_exec_requirement;
1659 static arch_register_req_t
const *in_reqs[] = {
1660 &ia32_single_reg_req_gp_edi,
1661 &ia32_single_reg_req_gp_esi,
1662 &ia32_single_reg_req_gp_ecx,
1663 &arch_memory_requirement,
1680 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1681 int const n_res = 4;
1682 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1685 init_ia32_attributes(res, size);
1686 init_ia32_copyb_attributes(res, size);
1687 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1688 out_infos[0].req = &ia32_single_reg_req_gp_edi;
1689 out_infos[1].req = &ia32_single_reg_req_gp_esi;
1690 out_infos[2].req = &ia32_single_reg_req_gp_ecx;
1691 out_infos[3].req = &arch_memory_requirement;
1699 static arch_register_req_t
const *in_reqs[] = {
1700 &ia32_single_reg_req_gp_edi,
1701 &ia32_single_reg_req_gp_esi,
1702 &arch_memory_requirement,
1718 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1719 int const n_res = 3;
1720 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1723 init_ia32_attributes(res, size);
1724 init_ia32_copyb_attributes(res, size);
1725 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1726 out_infos[0].req = &ia32_single_reg_req_gp_edi;
1727 out_infos[1].req = &ia32_single_reg_req_gp_esi;
1728 out_infos[2].req = &arch_memory_requirement;
1736 static arch_register_req_t
const *in_reqs[] = {
1737 &ia32_single_reg_req_gp_ebp,
1746 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CopyEbpEsp, ia32_mode_gp, 1, in);
1751 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1752 int const n_res = 1;
1753 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1756 x86_insn_size_t
const size = X86_SIZE_32;
1757 init_ia32_attributes(res, size);
1758 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1759 out_infos[0].req = &ia32_requirements_gp_esp_I;
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_CvtSI2SD, ia32_mode_float64, 4, in);
1788 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1789 int const n_res = 1;
1790 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1793 init_ia32_attributes(res, size);
1794 set_ia32_am_support(res, ia32_am_unary);
1795 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1796 out_infos[0].req = &ia32_class_reg_req_xmm;
1804 static arch_register_req_t
const *in_reqs[] = {
1805 &ia32_class_reg_req_gp,
1806 &ia32_class_reg_req_gp,
1807 &arch_memory_requirement,
1808 &ia32_class_reg_req_gp,
1820 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_CvtSI2SS, ia32_mode_float64, 4, in);
1825 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1826 int const n_res = 1;
1827 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1830 init_ia32_attributes(res, size);
1831 set_ia32_am_support(res, ia32_am_unary);
1832 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1833 out_infos[0].req = &ia32_class_reg_req_xmm;
1841 static arch_register_req_t
const *in_reqs[] = {
1842 &ia32_single_reg_req_gp_eax,
1851 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Cwtl, ia32_mode_gp, 1, in);
1856 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1857 int const n_res = 1;
1858 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1861 x86_insn_size_t
const size = X86_SIZE_32;
1862 init_ia32_attributes(res, size);
1863 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1864 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1872 static arch_register_req_t
const *in_reqs[] = {
1873 &ia32_class_reg_req_gp,
1882 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Dec, ia32_mode_gp, 1, in);
1887 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1888 irn_flags |= arch_irn_flag_modify_flags;
1889 irn_flags |= arch_irn_flag_rematerializable;
1890 int const n_res = 2;
1891 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1894 init_ia32_attributes(res, size);
1895 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1896 out_infos[0].req = &ia32_requirements_gp_in_r0;
1897 out_infos[1].req = &ia32_class_reg_req_flags;
1905 static arch_register_req_t
const *in_reqs[] = {
1906 &ia32_class_reg_req_gp,
1907 &ia32_class_reg_req_gp,
1908 &arch_memory_requirement,
1924 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1925 irn_flags |= arch_irn_flag_modify_flags;
1926 irn_flags |= arch_irn_flag_rematerializable;
1927 int const n_res = 3;
1928 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1931 init_ia32_attributes(res, size);
1932 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1933 out_infos[0].req = &arch_no_requirement;
1934 out_infos[1].req = &ia32_class_reg_req_flags;
1935 out_infos[2].req = &arch_memory_requirement;
1943 static arch_register_req_t
const *in_reqs[] = {
1944 &ia32_class_reg_req_gp,
1945 &ia32_class_reg_req_gp,
1946 &arch_memory_requirement,
1947 &ia32_class_reg_req_gp,
1948 &ia32_single_reg_req_gp_eax,
1949 &ia32_single_reg_req_gp_edx,
1968 arch_irn_flags_t irn_flags = arch_irn_flags_none;
1969 irn_flags |= arch_irn_flag_modify_flags;
1970 int const n_res = 6;
1971 be_info_init_irn(res, irn_flags, in_reqs, n_res);
1974 init_ia32_attributes(res, size);
1975 set_ia32_am_support(res, ia32_am_unary);
1976 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
1977 out_infos[0].req = &ia32_single_reg_req_gp_eax;
1978 out_infos[1].req = &ia32_class_reg_req_flags;
1979 out_infos[2].req = &arch_memory_requirement;
1980 out_infos[3].req = &ia32_single_reg_req_gp_edx;
1981 out_infos[4].req = &arch_exec_requirement;
1982 out_infos[5].req = &arch_exec_requirement;
1990 static arch_register_req_t
const *in_reqs[] = {
1991 &ia32_class_reg_req_gp,
1992 &ia32_class_reg_req_gp,
1993 &arch_memory_requirement,
1994 &ia32_class_reg_req_xmm,
1995 &ia32_class_reg_req_xmm,
2013 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2014 irn_flags |= arch_irn_flag_rematerializable;
2015 int const n_res = 3;
2016 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2019 init_ia32_attributes(res, size);
2020 set_ia32_am_support(res, ia32_am_binary);
2021 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2022 out_infos[0].req = &ia32_requirements_xmm_in_r3_not_in_r4;
2023 out_infos[1].req = &ia32_class_reg_req_flags;
2024 out_infos[2].req = &arch_memory_requirement;
2032 static arch_register_req_t
const *in_reqs[] = {
2033 &ia32_single_reg_req_gp_esp,
2047 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2048 int const n_res = 3;
2049 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2052 x86_insn_size_t
const size = X86_SIZE_32;
2053 init_ia32_attributes(res, size);
2054 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2055 out_infos[0].req = &ia32_single_reg_req_gp_ebp;
2056 out_infos[1].req = &ia32_requirements_gp_esp_I;
2057 out_infos[2].req = &arch_memory_requirement;
2065 static arch_register_req_t
const *in_reqs[] = {
2066 &ia32_class_reg_req_gp,
2067 &ia32_class_reg_req_gp,
2068 &arch_memory_requirement,
2079 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FldCW, ia32_mode_fpcw, 3, in);
2084 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2085 int const n_res = 1;
2086 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2089 x86_insn_size_t
const size = X86_SIZE_16;
2090 init_ia32_attributes(res, size);
2091 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2092 out_infos[0].req = &ia32_class_reg_req_fpcw;
2100 static arch_register_req_t
const *in_reqs[] = {
2101 &ia32_class_reg_req_gp,
2102 &ia32_class_reg_req_gp,
2103 &arch_memory_requirement,
2104 &ia32_class_reg_req_fpcw,
2121 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2122 int const n_res = 1;
2123 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2126 x86_insn_size_t
const size = X86_SIZE_16;
2127 init_ia32_attributes(res, size);
2128 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2129 out_infos[0].req = &arch_memory_requirement;
2137 static arch_register_req_t
const *in_reqs[] = {
2138 &ia32_class_reg_req_fpcw,
2152 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2153 int const n_res = 1;
2154 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2157 x86_insn_size_t
const size = X86_SIZE_16;
2158 init_ia32_attributes(res, size);
2159 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2160 out_infos[0].req = &arch_memory_requirement;
2168 static arch_register_req_t
const *in_reqs[] = {
2169 &ia32_class_reg_req_fp,
2178 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FtstFnstsw, ia32_mode_gp, 1, in);
2183 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2184 int const n_res = 1;
2185 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2188 x86_insn_size_t
const size = X86_SIZE_16; ia32_request_x87_sim(irg);
2189 init_ia32_attributes(res, size);
2190 attr->ins_permuted = ins_permuted;
2191 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2192 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2200 static arch_register_req_t
const *in_reqs[] = {
2201 &ia32_class_reg_req_fp,
2202 &ia32_class_reg_req_fp,
2212 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FucomFnstsw, ia32_mode_gp, 2, in);
2217 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2218 int const n_res = 1;
2219 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2222 x86_insn_size_t
const size = X86_SIZE_16;
2223 init_ia32_attributes(res, size);
2224 init_ia32_x87_attributes(res);
2225 attr->attr.ins_permuted = ins_permuted;
2226 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2227 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2235 static arch_register_req_t
const *in_reqs[] = {
2236 &ia32_class_reg_req_fp,
2237 &ia32_class_reg_req_fp,
2247 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Fucomi, ia32_mode_flags, 2, in);
2252 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2253 irn_flags |= arch_irn_flag_rematerializable;
2254 int const n_res = 1;
2255 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2258 x86_insn_size_t
const size = X86_SIZE_80;
2259 init_ia32_attributes(res, size);
2260 init_ia32_x87_attributes(res);
2261 attr->attr.ins_permuted = ins_permuted;
2262 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2263 out_infos[0].req = &ia32_class_reg_req_flags;
2271 static arch_register_req_t
const *in_reqs[] = {
2272 &ia32_class_reg_req_fp,
2273 &ia32_class_reg_req_fp,
2283 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_FucomppFnstsw, ia32_mode_gp, 2, in);
2288 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2289 int const n_res = 1;
2290 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2293 x86_insn_size_t
const size = X86_SIZE_16;
2294 init_ia32_attributes(res, size);
2295 init_ia32_x87_attributes(res);
2296 attr->attr.ins_permuted = ins_permuted;
2297 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2298 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2306 arch_register_req_t
const **
const in_reqs = NULL;
2310 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_GetEIP, ia32_mode_gp, 0, NULL);
2315 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2316 int const n_res = 1;
2317 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2320 x86_insn_size_t
const size = X86_SIZE_32;
2321 init_ia32_attributes(res, size);
2322 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2323 out_infos[0].req = &ia32_class_reg_req_gp;
2331 static arch_register_req_t
const *in_reqs[] = {
2332 &ia32_class_reg_req_gp,
2333 &ia32_class_reg_req_gp,
2334 &arch_memory_requirement,
2335 &ia32_class_reg_req_gp,
2336 &ia32_single_reg_req_gp_eax,
2337 &ia32_single_reg_req_gp_edx,
2356 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2357 irn_flags |= arch_irn_flag_modify_flags;
2358 int const n_res = 6;
2359 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2362 init_ia32_attributes(res, size);
2363 set_ia32_am_support(res, ia32_am_unary);
2364 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2365 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2366 out_infos[1].req = &ia32_class_reg_req_flags;
2367 out_infos[2].req = &arch_memory_requirement;
2368 out_infos[3].req = &ia32_single_reg_req_gp_edx;
2369 out_infos[4].req = &arch_exec_requirement;
2370 out_infos[5].req = &arch_exec_requirement;
2378 static arch_register_req_t
const *in_reqs[] = {
2379 &ia32_class_reg_req_gp,
2380 &ia32_class_reg_req_gp,
2381 &arch_memory_requirement,
2382 &ia32_class_reg_req_gp,
2399 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2400 int const n_res = 3;
2401 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2404 x86_insn_size_t
const size = X86_SIZE_32;
2405 init_ia32_attributes(res, size);
2406 set_ia32_am_support(res, ia32_am_unary);
2407 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2408 out_infos[0].req = &arch_exec_requirement;
2409 out_infos[1].req = &arch_no_requirement;
2410 out_infos[2].req = &arch_memory_requirement;
2418 static arch_register_req_t
const *in_reqs[] = {
2419 &ia32_class_reg_req_gp,
2420 &ia32_class_reg_req_gp,
2421 &arch_memory_requirement,
2422 &ia32_class_reg_req_gp,
2423 &ia32_class_reg_req_gp,
2436 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMul, ia32_mode_gp, 5, in);
2441 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2442 irn_flags |= arch_irn_flag_modify_flags;
2443 irn_flags |= arch_irn_flag_rematerializable;
2444 int const n_res = 3;
2445 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2448 init_ia32_attributes(res, size);
2449 set_ia32_am_support(res, ia32_am_binary);
2450 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2451 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
2452 out_infos[1].req = &ia32_class_reg_req_flags;
2453 out_infos[2].req = &arch_memory_requirement;
2461 static arch_register_req_t
const *in_reqs[] = {
2462 &ia32_class_reg_req_gp,
2463 &ia32_class_reg_req_gp,
2464 &arch_memory_requirement,
2465 &ia32_requirements_gp_eax_ebx_ecx_edx,
2466 &ia32_requirements_gp_eax_ebx_ecx_edx,
2479 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMul, ia32_mode_gp, 5, in);
2484 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2485 irn_flags |= arch_irn_flag_modify_flags;
2486 irn_flags |= arch_irn_flag_rematerializable;
2487 int const n_res = 3;
2488 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2491 init_ia32_attributes(res, size);
2492 set_ia32_am_support(res, ia32_am_binary);
2493 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2494 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
2495 out_infos[1].req = &ia32_class_reg_req_flags;
2496 out_infos[2].req = &arch_memory_requirement;
2504 static arch_register_req_t
const *in_reqs[] = {
2505 &ia32_class_reg_req_gp,
2506 &ia32_class_reg_req_gp,
2507 &arch_memory_requirement,
2508 &ia32_single_reg_req_gp_eax,
2509 &ia32_class_reg_req_gp,
2527 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2528 irn_flags |= arch_irn_flag_modify_flags;
2529 int const n_res = 4;
2530 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2533 init_ia32_attributes(res, size);
2534 set_ia32_am_support(res, ia32_am_binary);
2535 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2536 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2537 out_infos[1].req = &ia32_class_reg_req_flags;
2538 out_infos[2].req = &arch_memory_requirement;
2539 out_infos[3].req = &ia32_single_reg_req_gp_edx;
2547 static arch_register_req_t
const *in_reqs[] = {
2548 &ia32_class_reg_req_gp,
2549 &ia32_class_reg_req_gp,
2550 &arch_memory_requirement,
2551 &ia32_class_reg_req_gp,
2552 &ia32_class_reg_req_gp,
2565 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_IMulImm, ia32_mode_gp, 5, in);
2570 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2571 irn_flags |= arch_irn_flag_modify_flags;
2572 irn_flags |= arch_irn_flag_rematerializable;
2573 int const n_res = 3;
2574 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2577 init_ia32_attributes(res, size);
2578 set_ia32_am_support(res, ia32_am_binary);
2579 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2580 out_infos[0].req = &ia32_class_reg_req_gp;
2581 out_infos[1].req = &ia32_class_reg_req_flags;
2582 out_infos[2].req = &arch_memory_requirement;
2590 arch_register_req_t
const **
const in_reqs = NULL;
2594 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Immediate, ia32_mode_gp, 0, NULL);
2599 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2600 irn_flags |= arch_irn_flag_not_scheduled;
2601 int const n_res = 1;
2602 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2605 x86_insn_size_t
const size = X86_SIZE_32;
2606 init_ia32_attributes(res, size);
2607 init_ia32_immediate_attributes(res, imm);
2608 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2609 out_infos[0].req = &ia32_requirements_gp_gp_NOREG_I;
2617 static arch_register_req_t
const *in_reqs[] = {
2618 &ia32_class_reg_req_gp,
2627 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Inc, ia32_mode_gp, 1, in);
2632 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2633 irn_flags |= arch_irn_flag_modify_flags;
2634 irn_flags |= arch_irn_flag_rematerializable;
2635 int const n_res = 2;
2636 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2639 init_ia32_attributes(res, size);
2640 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2641 out_infos[0].req = &ia32_requirements_gp_in_r0;
2642 out_infos[1].req = &ia32_class_reg_req_flags;
2650 static arch_register_req_t
const *in_reqs[] = {
2651 &ia32_class_reg_req_gp,
2652 &ia32_class_reg_req_gp,
2653 &arch_memory_requirement,
2669 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2670 irn_flags |= arch_irn_flag_modify_flags;
2671 irn_flags |= arch_irn_flag_rematerializable;
2672 int const n_res = 3;
2673 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2676 init_ia32_attributes(res, size);
2677 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2678 out_infos[0].req = &arch_no_requirement;
2679 out_infos[1].req = &ia32_class_reg_req_flags;
2680 out_infos[2].req = &arch_memory_requirement;
2688 static arch_register_req_t
const *in_reqs[] = {
2689 &ia32_single_reg_req_gp_edx,
2690 &arch_memory_requirement,
2705 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2706 irn_flags |= arch_irn_flag_rematerializable;
2707 int const n_res = 2;
2708 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2711 init_ia32_attributes(res, size);
2712 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2713 out_infos[0].req = &ia32_single_reg_req_gp_eax;
2714 out_infos[1].req = &arch_memory_requirement;
2722 static arch_register_req_t
const *in_reqs[] = {
2723 &ia32_class_reg_req_flags,
2737 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2738 irn_flags |= arch_irn_flag_fallthrough;
2739 int const n_res = 2;
2740 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2743 x86_insn_size_t
const size = X86_SIZE_32;
2744 init_ia32_attributes(res, size);
2745 init_ia32_condcode_attributes(res, condition_code);
2746 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2747 out_infos[0].req = &arch_exec_requirement;
2748 out_infos[1].req = &arch_exec_requirement;
2756 arch_register_req_t
const **
const in_reqs = NULL;
2765 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2766 irn_flags |= arch_irn_flag_simple_jump;
2767 irn_flags |= arch_irn_flag_fallthrough;
2768 int const n_res = 1;
2769 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2772 x86_insn_size_t
const size = X86_SIZE_32;
2773 init_ia32_attributes(res, size);
2774 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2775 out_infos[0].req = &arch_exec_requirement;
2783 arch_register_req_t
const **
const in_reqs = NULL;
2787 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_LdTls, ia32_mode_gp, 0, NULL);
2792 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2793 irn_flags |= arch_irn_flag_rematerializable;
2794 int const n_res = 1;
2795 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2798 x86_insn_size_t
const size = X86_SIZE_32;
2799 init_ia32_attributes(res, size);
2800 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2801 out_infos[0].req = &ia32_class_reg_req_gp;
2809 static arch_register_req_t
const *in_reqs[] = {
2810 &ia32_class_reg_req_gp,
2811 &ia32_class_reg_req_gp,
2821 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Lea, ia32_mode_gp, 2, in);
2826 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2827 irn_flags |= arch_irn_flag_modify_flags;
2828 irn_flags |= arch_irn_flag_rematerializable;
2829 int const n_res = 1;
2830 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2833 x86_insn_size_t
const size = X86_SIZE_32;
2834 init_ia32_attributes(res, size);
2835 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2836 out_infos[0].req = &ia32_class_reg_req_gp;
2844 static arch_register_req_t
const *in_reqs[] = {
2845 &arch_memory_requirement,
2846 &ia32_single_reg_req_gp_ebp,
2861 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2862 int const n_res = 3;
2863 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2866 x86_insn_size_t
const size = X86_SIZE_32;
2867 init_ia32_attributes(res, size);
2868 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2869 out_infos[0].req = &ia32_requirements_gp_ebp_I;
2870 out_infos[1].req = &arch_memory_requirement;
2871 out_infos[2].req = &ia32_requirements_gp_esp_I;
2879 static arch_register_req_t
const *in_reqs[] = {
2880 &ia32_class_reg_req_gp,
2881 &ia32_class_reg_req_gp,
2882 &arch_memory_requirement,
2898 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2899 int const n_res = 5;
2900 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2903 init_ia32_attributes(res, size);
2904 attr->sign_extend = sign_extend;
2905 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2906 out_infos[0].req = &ia32_class_reg_req_gp;
2907 out_infos[1].req = &arch_no_requirement;
2908 out_infos[2].req = &arch_memory_requirement;
2909 out_infos[3].req = &arch_exec_requirement;
2910 out_infos[4].req = &arch_exec_requirement;
2918 static arch_register_req_t
const *in_reqs[] = {
2919 &ia32_class_reg_req_gp,
2920 &ia32_class_reg_req_gp,
2921 &arch_memory_requirement,
2922 &ia32_class_reg_req_xmm,
2923 &ia32_class_reg_req_xmm,
2936 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Maxs, ia32_mode_float64, 5, in);
2941 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2942 irn_flags |= arch_irn_flag_rematerializable;
2943 int const n_res = 3;
2944 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2947 init_ia32_attributes(res, size);
2948 set_ia32_am_support(res, ia32_am_binary);
2949 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2950 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
2951 out_infos[1].req = &ia32_class_reg_req_flags;
2952 out_infos[2].req = &arch_memory_requirement;
2960 static arch_register_req_t
const *in_reqs[] = {
2961 &ia32_class_reg_req_gp,
2962 &ia32_class_reg_req_gp,
2963 &arch_memory_requirement,
2964 &ia32_class_reg_req_xmm,
2965 &ia32_class_reg_req_xmm,
2978 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Mins, ia32_mode_float64, 5, in);
2983 arch_irn_flags_t irn_flags = arch_irn_flags_none;
2984 irn_flags |= arch_irn_flag_rematerializable;
2985 int const n_res = 3;
2986 be_info_init_irn(res, irn_flags, in_reqs, n_res);
2989 init_ia32_attributes(res, size);
2990 set_ia32_am_support(res, ia32_am_binary);
2991 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
2992 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
2993 out_infos[1].req = &ia32_class_reg_req_flags;
2994 out_infos[2].req = &arch_memory_requirement;
3002 static arch_register_req_t
const *in_reqs[] = {
3003 &ia32_class_reg_req_gp,
3004 &ia32_class_reg_req_gp,
3019 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3020 irn_flags |= arch_irn_flag_modify_flags;
3021 irn_flags |= arch_irn_flag_rematerializable;
3022 int const n_res = 2;
3023 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3026 x86_insn_size_t
const size = X86_SIZE_32;
3027 init_ia32_attributes(res, size);
3028 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3029 out_infos[0].req = &ia32_requirements_gp_in_r0;
3030 out_infos[1].req = &ia32_requirements_gp_in_r1;
3038 static arch_register_req_t
const *in_reqs[] = {
3039 &ia32_class_reg_req_gp,
3048 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Movd, ia32_mode_float64, 1, in);
3053 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3054 irn_flags |= arch_irn_flag_rematerializable;
3055 int const n_res = 1;
3056 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3059 x86_insn_size_t
const size = X86_SIZE_32;
3060 init_ia32_attributes(res, size);
3061 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3062 out_infos[0].req = &ia32_class_reg_req_xmm;
3070 static arch_register_req_t
const *in_reqs[] = {
3071 &ia32_class_reg_req_gp,
3072 &ia32_class_reg_req_gp,
3073 &arch_memory_requirement,
3074 &ia32_single_reg_req_gp_eax,
3075 &ia32_class_reg_req_gp,
3093 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3094 irn_flags |= arch_irn_flag_modify_flags;
3095 int const n_res = 4;
3096 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3099 init_ia32_attributes(res, size);
3100 set_ia32_am_support(res, ia32_am_binary);
3101 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3102 out_infos[0].req = &ia32_single_reg_req_gp_eax;
3103 out_infos[1].req = &ia32_class_reg_req_flags;
3104 out_infos[2].req = &arch_memory_requirement;
3105 out_infos[3].req = &ia32_single_reg_req_gp_edx;
3113 static arch_register_req_t
const *in_reqs[] = {
3114 &ia32_class_reg_req_gp,
3115 &ia32_class_reg_req_gp,
3116 &arch_memory_requirement,
3117 &ia32_class_reg_req_xmm,
3118 &ia32_class_reg_req_xmm,
3131 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Muls, ia32_mode_float64, 5, in);
3136 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3137 irn_flags |= arch_irn_flag_rematerializable;
3138 int const n_res = 3;
3139 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3142 init_ia32_attributes(res, size);
3143 set_ia32_am_support(res, ia32_am_binary);
3144 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3145 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
3146 out_infos[1].req = &ia32_class_reg_req_flags;
3147 out_infos[2].req = &arch_memory_requirement;
3155 static arch_register_req_t
const *in_reqs[] = {
3156 &ia32_class_reg_req_gp,
3165 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Neg, ia32_mode_gp, 1, in);
3170 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3171 irn_flags |= arch_irn_flag_modify_flags;
3172 irn_flags |= arch_irn_flag_rematerializable;
3173 int const n_res = 2;
3174 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3177 init_ia32_attributes(res, size);
3178 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3179 out_infos[0].req = &ia32_requirements_gp_in_r0;
3180 out_infos[1].req = &ia32_class_reg_req_flags;
3188 static arch_register_req_t
const *in_reqs[] = {
3189 &ia32_class_reg_req_gp,
3190 &ia32_class_reg_req_gp,
3191 &arch_memory_requirement,
3207 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3208 irn_flags |= arch_irn_flag_modify_flags;
3209 irn_flags |= arch_irn_flag_rematerializable;
3210 int const n_res = 3;
3211 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3214 init_ia32_attributes(res, size);
3215 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3216 out_infos[0].req = &arch_no_requirement;
3217 out_infos[1].req = &ia32_class_reg_req_flags;
3218 out_infos[2].req = &arch_memory_requirement;
3226 arch_register_req_t
const **
const in_reqs = NULL;
3230 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_FP, x86_mode_E, 0, NULL);
3235 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3236 irn_flags |= arch_irn_flag_not_scheduled;
3237 int const n_res = 1;
3238 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3241 x86_insn_size_t
const size = X86_SIZE_32;
3242 ia32_request_x87_sim(irg);
3243 init_ia32_attributes(res, size);
3244 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3245 out_infos[0].req = &ia32_requirements_fp_fp_NOREG_I;
3253 arch_register_req_t
const **
const in_reqs = NULL;
3257 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_GP, ia32_mode_gp, 0, NULL);
3262 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3263 irn_flags |= arch_irn_flag_not_scheduled;
3264 int const n_res = 1;
3265 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3268 x86_insn_size_t
const size = X86_SIZE_32;
3269 init_ia32_attributes(res, size);
3270 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3271 out_infos[0].req = &ia32_requirements_gp_gp_NOREG_I;
3279 arch_register_req_t
const **
const in_reqs = NULL;
3283 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_NoReg_XMM, ia32_mode_float64, 0, NULL);
3288 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3289 irn_flags |= arch_irn_flag_not_scheduled;
3290 int const n_res = 1;
3291 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3294 x86_insn_size_t
const size = X86_SIZE_32;
3295 init_ia32_attributes(res, size);
3296 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3297 out_infos[0].req = &ia32_requirements_xmm_xmm_NOREG_I;
3305 static arch_register_req_t
const *in_reqs[] = {
3306 &ia32_class_reg_req_gp,
3315 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Not, ia32_mode_gp, 1, in);
3320 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3321 irn_flags |= arch_irn_flag_rematerializable;
3322 int const n_res = 1;
3323 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3326 init_ia32_attributes(res, size);
3327 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3328 out_infos[0].req = &ia32_requirements_gp_in_r0;
3336 static arch_register_req_t
const *in_reqs[] = {
3337 &ia32_requirements_gp_eax_ebx_ecx_edx,
3346 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Not, ia32_mode_gp, 1, in);
3351 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3352 irn_flags |= arch_irn_flag_rematerializable;
3353 int const n_res = 1;
3354 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3357 init_ia32_attributes(res, size);
3358 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3359 out_infos[0].req = &ia32_requirements_gp_in_r0;
3367 static arch_register_req_t
const *in_reqs[] = {
3368 &ia32_class_reg_req_gp,
3369 &ia32_class_reg_req_gp,
3370 &arch_memory_requirement,
3386 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3387 irn_flags |= arch_irn_flag_rematerializable;
3388 int const n_res = 3;
3389 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3392 init_ia32_attributes(res, size);
3393 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3394 out_infos[0].req = &arch_no_requirement;
3395 out_infos[1].req = &arch_no_requirement;
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,
3409 &ia32_class_reg_req_gp,
3427 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3428 irn_flags |= arch_irn_flag_modify_flags;
3429 irn_flags |= arch_irn_flag_rematerializable;
3430 int const n_res = 3;
3431 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3434 init_ia32_attributes(res, size);
3435 set_ia32_am_support(res, ia32_am_binary);
3436 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3437 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
3438 out_infos[1].req = &ia32_class_reg_req_flags;
3439 out_infos[2].req = &arch_memory_requirement;
3447 static arch_register_req_t
const *in_reqs[] = {
3448 &ia32_class_reg_req_gp,
3449 &ia32_class_reg_req_gp,
3450 &arch_memory_requirement,
3451 &ia32_requirements_gp_eax_ebx_ecx_edx,
3452 &ia32_requirements_gp_eax_ebx_ecx_edx,
3470 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3471 irn_flags |= arch_irn_flag_modify_flags;
3472 irn_flags |= arch_irn_flag_rematerializable;
3473 int const n_res = 3;
3474 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3477 init_ia32_attributes(res, size);
3478 set_ia32_am_support(res, ia32_am_binary);
3479 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3480 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
3481 out_infos[1].req = &ia32_class_reg_req_flags;
3482 out_infos[2].req = &arch_memory_requirement;
3490 static arch_register_req_t
const *in_reqs[] = {
3491 &ia32_class_reg_req_gp,
3492 &ia32_class_reg_req_gp,
3493 &arch_memory_requirement,
3494 &ia32_class_reg_req_gp,
3511 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3512 irn_flags |= arch_irn_flag_modify_flags;
3513 irn_flags |= arch_irn_flag_rematerializable;
3514 int const n_res = 3;
3515 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3518 init_ia32_attributes(res, size);
3519 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3520 out_infos[0].req = &arch_no_requirement;
3521 out_infos[1].req = &ia32_class_reg_req_flags;
3522 out_infos[2].req = &arch_memory_requirement;
3530 static arch_register_req_t
const *in_reqs[] = {
3531 &ia32_class_reg_req_gp,
3532 &ia32_class_reg_req_gp,
3533 &arch_memory_requirement,
3534 &ia32_requirements_gp_eax_ebx_ecx_edx,
3551 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3552 irn_flags |= arch_irn_flag_modify_flags;
3553 irn_flags |= arch_irn_flag_rematerializable;
3554 int const n_res = 3;
3555 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3558 init_ia32_attributes(res, size);
3559 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3560 out_infos[0].req = &arch_no_requirement;
3561 out_infos[1].req = &ia32_class_reg_req_flags;
3562 out_infos[2].req = &arch_memory_requirement;
3570 static arch_register_req_t
const *in_reqs[] = {
3571 &ia32_class_reg_req_gp,
3572 &ia32_class_reg_req_gp,
3573 &arch_memory_requirement,
3574 &ia32_class_reg_req_xmm,
3575 &ia32_class_reg_req_xmm,
3588 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Orp, ia32_mode_float64, 5, in);
3593 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3594 irn_flags |= arch_irn_flag_rematerializable;
3595 int const n_res = 3;
3596 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3599 init_ia32_attributes(res, size);
3600 set_ia32_am_support(res, ia32_am_binary);
3601 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3602 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
3603 out_infos[1].req = &ia32_class_reg_req_flags;
3604 out_infos[2].req = &arch_memory_requirement;
3612 static arch_register_req_t
const *in_reqs[] = {
3613 &ia32_single_reg_req_gp_edx,
3614 &ia32_single_reg_req_gp_eax,
3615 &arch_memory_requirement,
3631 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3632 irn_flags |= arch_irn_flag_rematerializable;
3633 int const n_res = 1;
3634 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3637 init_ia32_attributes(res, size);
3638 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3639 out_infos[0].req = &arch_memory_requirement;
3647 static arch_register_req_t
const *in_reqs[] = {
3648 &arch_memory_requirement,
3649 &ia32_single_reg_req_gp_esp,
3664 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3665 int const n_res = 4;
3666 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3669 init_ia32_attributes(res, size);
3670 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3671 out_infos[0].req = &ia32_class_reg_req_gp;
3672 out_infos[1].req = &arch_no_requirement;
3673 out_infos[2].req = &arch_memory_requirement;
3674 out_infos[3].req = &ia32_requirements_gp_esp_I;
3682 static arch_register_req_t
const *in_reqs[] = {
3683 &arch_memory_requirement,
3684 &ia32_single_reg_req_gp_esp,
3699 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3700 int const n_res = 4;
3701 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3704 init_ia32_attributes(res, size);
3705 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3706 out_infos[0].req = &ia32_requirements_gp_ebp_I;
3707 out_infos[1].req = &arch_no_requirement;
3708 out_infos[2].req = &arch_memory_requirement;
3709 out_infos[3].req = &ia32_requirements_gp_esp_I;
3717 static arch_register_req_t
const *in_reqs[] = {
3718 &ia32_class_reg_req_gp,
3719 &ia32_class_reg_req_gp,
3720 &arch_memory_requirement,
3721 &ia32_single_reg_req_gp_esp,
3738 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3739 int const n_res = 4;
3740 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3743 init_ia32_attributes(res, size);
3744 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3745 out_infos[0].req = &arch_no_requirement;
3746 out_infos[1].req = &arch_no_requirement;
3747 out_infos[2].req = &arch_memory_requirement;
3748 out_infos[3].req = &ia32_requirements_gp_esp_I;
3756 static arch_register_req_t
const *in_reqs[] = {
3757 &ia32_class_reg_req_gp,
3758 &ia32_class_reg_req_gp,
3759 &arch_memory_requirement,
3760 &ia32_class_reg_req_gp,
3772 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Popcnt, ia32_mode_gp, 4, in);
3777 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3778 irn_flags |= arch_irn_flag_modify_flags;
3779 irn_flags |= arch_irn_flag_rematerializable;
3780 int const n_res = 3;
3781 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3784 init_ia32_attributes(res, size);
3785 set_ia32_am_support(res, ia32_am_unary);
3786 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3787 out_infos[0].req = &ia32_class_reg_req_gp;
3788 out_infos[1].req = &ia32_class_reg_req_flags;
3789 out_infos[2].req = &arch_memory_requirement;
3797 static arch_register_req_t
const *in_reqs[] = {
3798 &ia32_class_reg_req_gp,
3799 &ia32_class_reg_req_gp,
3800 &arch_memory_requirement,
3816 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3817 int const n_res = 1;
3818 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3821 x86_insn_size_t
const size = X86_SIZE_8;
3822 init_ia32_attributes(res, size);
3823 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3824 out_infos[0].req = &arch_memory_requirement;
3832 static arch_register_req_t
const *in_reqs[] = {
3833 &ia32_class_reg_req_gp,
3834 &ia32_class_reg_req_gp,
3835 &arch_memory_requirement,
3851 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3852 int const n_res = 1;
3853 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3856 x86_insn_size_t
const size = X86_SIZE_8;
3857 init_ia32_attributes(res, size);
3858 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3859 out_infos[0].req = &arch_memory_requirement;
3867 static arch_register_req_t
const *in_reqs[] = {
3868 &ia32_class_reg_req_gp,
3869 &ia32_class_reg_req_gp,
3870 &arch_memory_requirement,
3886 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3887 int const n_res = 1;
3888 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3891 x86_insn_size_t
const size = X86_SIZE_8;
3892 init_ia32_attributes(res, size);
3893 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3894 out_infos[0].req = &arch_memory_requirement;
3902 static arch_register_req_t
const *in_reqs[] = {
3903 &ia32_class_reg_req_gp,
3904 &ia32_class_reg_req_gp,
3905 &arch_memory_requirement,
3921 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3922 int const n_res = 1;
3923 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3926 x86_insn_size_t
const size = X86_SIZE_8;
3927 init_ia32_attributes(res, size);
3928 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3929 out_infos[0].req = &arch_memory_requirement;
3937 static arch_register_req_t
const *in_reqs[] = {
3938 &ia32_class_reg_req_gp,
3939 &ia32_class_reg_req_gp,
3940 &arch_memory_requirement,
3956 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3957 int const n_res = 1;
3958 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3961 x86_insn_size_t
const size = X86_SIZE_8;
3962 init_ia32_attributes(res, size);
3963 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3964 out_infos[0].req = &arch_memory_requirement;
3972 static arch_register_req_t
const *in_reqs[] = {
3973 &ia32_class_reg_req_gp,
3974 &ia32_class_reg_req_gp,
3975 &arch_memory_requirement,
3991 arch_irn_flags_t irn_flags = arch_irn_flags_none;
3992 int const n_res = 1;
3993 be_info_init_irn(res, irn_flags, in_reqs, n_res);
3996 x86_insn_size_t
const size = X86_SIZE_8;
3997 init_ia32_attributes(res, size);
3998 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
3999 out_infos[0].req = &arch_memory_requirement;
4007 static arch_register_req_t
const *in_reqs[] = {
4008 &ia32_class_reg_req_xmm,
4009 &ia32_class_reg_req_xmm,
4019 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Pslld, ia32_mode_float64, 2, in);
4024 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4025 irn_flags |= arch_irn_flag_rematerializable;
4026 int const n_res = 1;
4027 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4030 init_ia32_attributes(res, size);
4031 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4032 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
4040 static arch_register_req_t
const *in_reqs[] = {
4041 &ia32_class_reg_req_xmm,
4042 &ia32_class_reg_req_xmm,
4052 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Psllq, ia32_mode_float64, 2, in);
4057 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4058 irn_flags |= arch_irn_flag_rematerializable;
4059 int const n_res = 1;
4060 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4063 init_ia32_attributes(res, size);
4064 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4065 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
4073 static arch_register_req_t
const *in_reqs[] = {
4074 &ia32_class_reg_req_xmm,
4075 &ia32_class_reg_req_xmm,
4085 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Psrld, ia32_mode_float64, 2, in);
4090 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4091 irn_flags |= arch_irn_flag_rematerializable;
4092 int const n_res = 1;
4093 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4096 init_ia32_attributes(res, size);
4097 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4098 out_infos[0].req = &ia32_requirements_xmm_in_r0_not_in_r1;
4106 static arch_register_req_t
const *in_reqs[] = {
4107 &ia32_class_reg_req_gp,
4108 &ia32_class_reg_req_gp,
4109 &arch_memory_requirement,
4110 &ia32_class_reg_req_gp,
4111 &ia32_single_reg_req_gp_esp,
4129 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4130 int const n_res = 2;
4131 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4134 init_ia32_attributes(res, size);
4135 set_ia32_am_support(res, ia32_am_unary);
4136 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4137 out_infos[0].req = &arch_memory_requirement;
4138 out_infos[1].req = &ia32_requirements_gp_esp_I;
4146 static arch_register_req_t
const *in_reqs[] = {
4147 &ia32_single_reg_req_gp_esp,
4156 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_PushEax, ia32_mode_gp, 1, in);
4161 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4162 int const n_res = 1;
4163 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4166 x86_insn_size_t
const size = X86_SIZE_32;
4167 init_ia32_attributes(res, size);
4168 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4169 out_infos[0].req = &ia32_requirements_gp_esp_I;
4175 ir_node *new_bd_ia32_Ret(
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)
4185 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4186 int const n_res = 1;
4187 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4190 x86_insn_size_t
const size = X86_SIZE_32;
4191 init_ia32_attributes(res, size);
4192 init_ia32_return_attributes(res, pop);
4193 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4194 out_infos[0].req = &arch_exec_requirement;
4202 static arch_register_req_t
const *in_reqs[] = {
4203 &ia32_class_reg_req_gp,
4204 &ia32_single_reg_req_gp_ecx,
4214 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Rol, ia32_mode_gp, 2, in);
4219 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4220 irn_flags |= arch_irn_flag_modify_flags;
4221 irn_flags |= arch_irn_flag_rematerializable;
4222 int const n_res = 2;
4223 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4226 init_ia32_attributes(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_Rol, ia32_mode_gp, 2, in);
4254 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4255 irn_flags |= arch_irn_flag_modify_flags;
4256 irn_flags |= arch_irn_flag_rematerializable;
4257 int const n_res = 2;
4258 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4261 init_ia32_attributes(res, size);
4262 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4263 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4264 out_infos[1].req = &ia32_class_reg_req_flags;
4272 static arch_register_req_t
const *in_reqs[] = {
4273 &ia32_class_reg_req_gp,
4274 &ia32_class_reg_req_gp,
4275 &arch_memory_requirement,
4276 &ia32_single_reg_req_gp_ecx,
4293 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4294 irn_flags |= arch_irn_flag_modify_flags;
4295 irn_flags |= arch_irn_flag_rematerializable;
4296 int const n_res = 3;
4297 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4300 init_ia32_attributes(res, size);
4301 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4302 out_infos[0].req = &arch_no_requirement;
4303 out_infos[1].req = &ia32_class_reg_req_flags;
4304 out_infos[2].req = &arch_memory_requirement;
4312 static arch_register_req_t
const *in_reqs[] = {
4313 &ia32_class_reg_req_gp,
4314 &ia32_single_reg_req_gp_ecx,
4324 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ror, ia32_mode_gp, 2, in);
4329 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4330 irn_flags |= arch_irn_flag_modify_flags;
4331 irn_flags |= arch_irn_flag_rematerializable;
4332 int const n_res = 2;
4333 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4336 init_ia32_attributes(res, size);
4337 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4338 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4339 out_infos[1].req = &ia32_class_reg_req_flags;
4347 static arch_register_req_t
const *in_reqs[] = {
4348 &ia32_requirements_gp_eax_ebx_ecx_edx,
4349 &ia32_single_reg_req_gp_ecx,
4359 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ror, ia32_mode_gp, 2, in);
4364 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4365 irn_flags |= arch_irn_flag_modify_flags;
4366 irn_flags |= arch_irn_flag_rematerializable;
4367 int const n_res = 2;
4368 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4371 init_ia32_attributes(res, size);
4372 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4373 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4374 out_infos[1].req = &ia32_class_reg_req_flags;
4382 static arch_register_req_t
const *in_reqs[] = {
4383 &ia32_class_reg_req_gp,
4384 &ia32_class_reg_req_gp,
4385 &arch_memory_requirement,
4386 &ia32_single_reg_req_gp_ecx,
4403 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4404 irn_flags |= arch_irn_flag_modify_flags;
4405 irn_flags |= arch_irn_flag_rematerializable;
4406 int const n_res = 3;
4407 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4410 init_ia32_attributes(res, size);
4411 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4412 out_infos[0].req = &arch_no_requirement;
4413 out_infos[1].req = &ia32_class_reg_req_flags;
4414 out_infos[2].req = &arch_memory_requirement;
4422 static arch_register_req_t
const *in_reqs[] = {
4423 &ia32_single_reg_req_gp_eax,
4432 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sahf, ia32_mode_flags, 1, in);
4437 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4438 irn_flags |= arch_irn_flag_rematerializable;
4439 int const n_res = 1;
4440 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4443 x86_insn_size_t
const size = X86_SIZE_16;
4444 init_ia32_attributes(res, size);
4445 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4446 out_infos[0].req = &ia32_class_reg_req_flags;
4454 static arch_register_req_t
const *in_reqs[] = {
4455 &ia32_class_reg_req_gp,
4456 &ia32_single_reg_req_gp_ecx,
4466 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sar, ia32_mode_gp, 2, in);
4471 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4472 irn_flags |= arch_irn_flag_modify_flags;
4473 irn_flags |= arch_irn_flag_rematerializable;
4474 int const n_res = 2;
4475 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4478 init_ia32_attributes(res, size);
4479 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4480 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4481 out_infos[1].req = &ia32_class_reg_req_flags;
4489 static arch_register_req_t
const *in_reqs[] = {
4490 &ia32_requirements_gp_eax_ebx_ecx_edx,
4491 &ia32_single_reg_req_gp_ecx,
4501 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sar, ia32_mode_gp, 2, in);
4506 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4507 irn_flags |= arch_irn_flag_modify_flags;
4508 irn_flags |= arch_irn_flag_rematerializable;
4509 int const n_res = 2;
4510 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4513 init_ia32_attributes(res, size);
4514 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4515 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4516 out_infos[1].req = &ia32_class_reg_req_flags;
4524 static arch_register_req_t
const *in_reqs[] = {
4525 &ia32_class_reg_req_gp,
4526 &ia32_class_reg_req_gp,
4527 &arch_memory_requirement,
4528 &ia32_single_reg_req_gp_ecx,
4545 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4546 irn_flags |= arch_irn_flag_modify_flags;
4547 irn_flags |= arch_irn_flag_rematerializable;
4548 int const n_res = 3;
4549 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4552 init_ia32_attributes(res, size);
4553 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4554 out_infos[0].req = &arch_no_requirement;
4555 out_infos[1].req = &ia32_class_reg_req_flags;
4556 out_infos[2].req = &arch_memory_requirement;
4564 static arch_register_req_t
const *in_reqs[] = {
4565 &ia32_class_reg_req_gp,
4566 &ia32_class_reg_req_gp,
4567 &arch_memory_requirement,
4568 &ia32_class_reg_req_gp,
4569 &ia32_class_reg_req_gp,
4570 &ia32_class_reg_req_flags,
4584 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sbb, ia32_mode_gp, 6, in);
4589 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4590 irn_flags |= arch_irn_flag_modify_flags;
4591 int const n_res = 3;
4592 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4595 x86_condition_code_t condition_code = x86_cc_carry;
4596 init_ia32_attributes(res, size);
4597 init_ia32_condcode_attributes(res, condition_code);
4598 set_ia32_am_support(res, ia32_am_binary);
4599 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4600 out_infos[0].req = &ia32_requirements_gp_in_r3;
4601 out_infos[1].req = &ia32_class_reg_req_flags;
4602 out_infos[2].req = &arch_memory_requirement;
4610 static arch_register_req_t
const *in_reqs[] = {
4611 &ia32_class_reg_req_flags,
4620 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sbb0, ia32_mode_gp, 1, in);
4625 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4626 irn_flags |= arch_irn_flag_modify_flags;
4627 int const n_res = 2;
4628 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4631 x86_condition_code_t condition_code = x86_cc_carry;
4632 init_ia32_attributes(res, size);
4633 init_ia32_condcode_attributes(res, condition_code);
4634 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4635 out_infos[0].req = &ia32_class_reg_req_gp;
4636 out_infos[1].req = &ia32_class_reg_req_flags;
4644 static arch_register_req_t
const *in_reqs[] = {
4645 &ia32_class_reg_req_flags,
4654 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Setcc, ia32_mode_gp, 1, in);
4659 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4660 int const n_res = 1;
4661 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4664 x86_insn_size_t
const size = X86_SIZE_8;
4665 init_ia32_attributes(res, size);
4666 init_ia32_condcode_attributes(res, condition_code);
4667 if (condition_code & x86_cc_additional_float_cases) {
4668 arch_add_irn_flags(res, arch_irn_flag_modify_flags);
4672 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4673 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx;
4681 static arch_register_req_t
const *in_reqs[] = {
4682 &ia32_class_reg_req_gp,
4683 &ia32_class_reg_req_gp,
4684 &arch_memory_requirement,
4685 &ia32_class_reg_req_flags,
4702 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4703 int const n_res = 1;
4704 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4707 x86_insn_size_t
const size = X86_SIZE_8;
4708 init_ia32_attributes(res, size);
4709 init_ia32_condcode_attributes(res, condition_code);
4710 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4711 out_infos[0].req = &arch_memory_requirement;
4719 static arch_register_req_t
const *in_reqs[] = {
4720 &ia32_class_reg_req_gp,
4721 &ia32_single_reg_req_gp_ecx,
4731 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shl, ia32_mode_gp, 2, in);
4736 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4737 irn_flags |= arch_irn_flag_modify_flags;
4738 irn_flags |= arch_irn_flag_rematerializable;
4739 int const n_res = 2;
4740 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4743 init_ia32_attributes(res, size);
4744 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4745 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4746 out_infos[1].req = &ia32_class_reg_req_flags;
4754 static arch_register_req_t
const *in_reqs[] = {
4755 &ia32_requirements_gp_eax_ebx_ecx_edx,
4756 &ia32_single_reg_req_gp_ecx,
4766 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shl, ia32_mode_gp, 2, in);
4771 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4772 irn_flags |= arch_irn_flag_modify_flags;
4773 irn_flags |= arch_irn_flag_rematerializable;
4774 int const n_res = 2;
4775 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4778 init_ia32_attributes(res, size);
4779 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4780 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4781 out_infos[1].req = &ia32_class_reg_req_flags;
4789 static arch_register_req_t
const *in_reqs[] = {
4790 &ia32_class_reg_req_gp,
4791 &ia32_class_reg_req_gp,
4792 &ia32_single_reg_req_gp_ecx,
4803 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShlD, ia32_mode_gp, 3, in);
4808 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4809 irn_flags |= arch_irn_flag_modify_flags;
4810 irn_flags |= arch_irn_flag_rematerializable;
4811 int const n_res = 2;
4812 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4815 x86_insn_size_t
const size = X86_SIZE_32;
4816 init_ia32_attributes(res, size);
4817 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4818 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1_not_in_r2;
4819 out_infos[1].req = &ia32_class_reg_req_flags;
4827 static arch_register_req_t
const *in_reqs[] = {
4828 &ia32_class_reg_req_gp,
4829 &ia32_class_reg_req_gp,
4830 &ia32_single_reg_req_gp_ecx,
4841 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShlD, ia32_mode_gp, 3, in);
4846 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4847 irn_flags |= arch_irn_flag_modify_flags;
4848 irn_flags |= arch_irn_flag_rematerializable;
4849 int const n_res = 2;
4850 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4853 x86_insn_size_t
const size = X86_SIZE_32;
4854 init_ia32_attributes(res, size);
4855 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4856 out_infos[0].req = &ia32_requirements_gp_in_r0_in_r1;
4857 out_infos[1].req = &ia32_class_reg_req_flags;
4865 static arch_register_req_t
const *in_reqs[] = {
4866 &ia32_class_reg_req_gp,
4867 &ia32_class_reg_req_gp,
4868 &arch_memory_requirement,
4869 &ia32_single_reg_req_gp_ecx,
4886 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4887 irn_flags |= arch_irn_flag_modify_flags;
4888 irn_flags |= arch_irn_flag_rematerializable;
4889 int const n_res = 3;
4890 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4893 init_ia32_attributes(res, size);
4894 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4895 out_infos[0].req = &arch_no_requirement;
4896 out_infos[1].req = &ia32_class_reg_req_flags;
4897 out_infos[2].req = &arch_memory_requirement;
4905 static arch_register_req_t
const *in_reqs[] = {
4906 &ia32_class_reg_req_gp,
4907 &ia32_single_reg_req_gp_ecx,
4917 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shr, ia32_mode_gp, 2, in);
4922 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4923 irn_flags |= arch_irn_flag_modify_flags;
4924 irn_flags |= arch_irn_flag_rematerializable;
4925 int const n_res = 2;
4926 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4929 init_ia32_attributes(res, size);
4930 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4931 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4932 out_infos[1].req = &ia32_class_reg_req_flags;
4940 static arch_register_req_t
const *in_reqs[] = {
4941 &ia32_requirements_gp_eax_ebx_ecx_edx,
4942 &ia32_single_reg_req_gp_ecx,
4952 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Shr, ia32_mode_gp, 2, in);
4957 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4958 irn_flags |= arch_irn_flag_modify_flags;
4959 irn_flags |= arch_irn_flag_rematerializable;
4960 int const n_res = 2;
4961 be_info_init_irn(res, irn_flags, in_reqs, n_res);
4964 init_ia32_attributes(res, size);
4965 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
4966 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1;
4967 out_infos[1].req = &ia32_class_reg_req_flags;
4975 static arch_register_req_t
const *in_reqs[] = {
4976 &ia32_class_reg_req_gp,
4977 &ia32_class_reg_req_gp,
4978 &ia32_single_reg_req_gp_ecx,
4989 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShrD, ia32_mode_gp, 3, in);
4994 arch_irn_flags_t irn_flags = arch_irn_flags_none;
4995 irn_flags |= arch_irn_flag_modify_flags;
4996 irn_flags |= arch_irn_flag_rematerializable;
4997 int const n_res = 2;
4998 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5001 x86_insn_size_t
const size = X86_SIZE_32;
5002 init_ia32_attributes(res, size);
5003 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5004 out_infos[0].req = &ia32_requirements_gp_in_r0_not_in_r1_not_in_r2;
5005 out_infos[1].req = &ia32_class_reg_req_flags;
5013 static arch_register_req_t
const *in_reqs[] = {
5014 &ia32_class_reg_req_gp,
5015 &ia32_class_reg_req_gp,
5016 &ia32_single_reg_req_gp_ecx,
5027 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_ShrD, ia32_mode_gp, 3, in);
5032 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5033 irn_flags |= arch_irn_flag_modify_flags;
5034 irn_flags |= arch_irn_flag_rematerializable;
5035 int const n_res = 2;
5036 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5039 x86_insn_size_t
const size = X86_SIZE_32;
5040 init_ia32_attributes(res, size);
5041 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5042 out_infos[0].req = &ia32_requirements_gp_in_r0_in_r1;
5043 out_infos[1].req = &ia32_class_reg_req_flags;
5051 static arch_register_req_t
const *in_reqs[] = {
5052 &ia32_class_reg_req_gp,
5053 &ia32_class_reg_req_gp,
5054 &arch_memory_requirement,
5055 &ia32_single_reg_req_gp_ecx,
5072 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5073 irn_flags |= arch_irn_flag_modify_flags;
5074 irn_flags |= arch_irn_flag_rematerializable;
5075 int const n_res = 3;
5076 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5079 init_ia32_attributes(res, size);
5080 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5081 out_infos[0].req = &arch_no_requirement;
5082 out_infos[1].req = &ia32_class_reg_req_flags;
5083 out_infos[2].req = &arch_memory_requirement;
5091 arch_register_req_t
const **
const in_reqs = NULL;
5095 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Stc, ia32_mode_flags, 0, NULL);
5100 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5101 irn_flags |= arch_irn_flag_modify_flags;
5102 irn_flags |= arch_irn_flag_rematerializable;
5103 int const n_res = 1;
5104 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5107 x86_insn_size_t
const size = X86_SIZE_32;
5108 init_ia32_attributes(res, size);
5109 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5110 out_infos[0].req = &ia32_class_reg_req_flags;
5118 static arch_register_req_t
const *in_reqs[] = {
5119 &ia32_class_reg_req_gp,
5120 &ia32_class_reg_req_gp,
5121 &arch_memory_requirement,
5122 &ia32_class_reg_req_gp,
5139 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5140 int const n_res = 3;
5141 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5144 init_ia32_attributes(res, size);
5145 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5146 out_infos[0].req = &arch_memory_requirement;
5147 out_infos[1].req = &arch_exec_requirement;
5148 out_infos[2].req = &arch_exec_requirement;
5156 static arch_register_req_t
const *in_reqs[] = {
5157 &ia32_class_reg_req_gp,
5158 &ia32_class_reg_req_gp,
5159 &arch_memory_requirement,
5160 &ia32_requirements_gp_eax_ebx_ecx_edx,
5177 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5178 int const n_res = 3;
5179 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5182 init_ia32_attributes(res, size);
5183 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5184 out_infos[0].req = &arch_memory_requirement;
5185 out_infos[1].req = &arch_exec_requirement;
5186 out_infos[2].req = &arch_exec_requirement;
5194 static arch_register_req_t
const *in_reqs[] = {
5195 &ia32_class_reg_req_gp,
5196 &ia32_class_reg_req_gp,
5197 &arch_memory_requirement,
5198 &ia32_class_reg_req_gp,
5199 &ia32_class_reg_req_gp,
5212 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sub, ia32_mode_gp, 5, in);
5217 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5218 irn_flags |= arch_irn_flag_modify_flags;
5219 irn_flags |= arch_irn_flag_rematerializable;
5220 int const n_res = 3;
5221 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5224 init_ia32_attributes(res, size);
5225 set_ia32_am_support(res, ia32_am_binary);
5226 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5227 out_infos[0].req = &ia32_requirements_gp_in_r3;
5228 out_infos[1].req = &ia32_class_reg_req_flags;
5229 out_infos[2].req = &arch_memory_requirement;
5237 static arch_register_req_t
const *in_reqs[] = {
5238 &ia32_class_reg_req_gp,
5239 &ia32_class_reg_req_gp,
5240 &arch_memory_requirement,
5241 &ia32_requirements_gp_eax_ebx_ecx_edx,
5242 &ia32_requirements_gp_eax_ebx_ecx_edx,
5255 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Sub, ia32_mode_gp, 5, in);
5260 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5261 irn_flags |= arch_irn_flag_modify_flags;
5262 irn_flags |= arch_irn_flag_rematerializable;
5263 int const n_res = 3;
5264 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5267 init_ia32_attributes(res, size);
5268 set_ia32_am_support(res, ia32_am_binary);
5269 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5270 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3;
5271 out_infos[1].req = &ia32_class_reg_req_flags;
5272 out_infos[2].req = &arch_memory_requirement;
5280 static arch_register_req_t
const *in_reqs[] = {
5281 &ia32_class_reg_req_gp,
5282 &ia32_class_reg_req_gp,
5283 &arch_memory_requirement,
5284 &ia32_class_reg_req_gp,
5301 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5302 irn_flags |= arch_irn_flag_modify_flags;
5303 irn_flags |= arch_irn_flag_rematerializable;
5304 int const n_res = 3;
5305 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5308 init_ia32_attributes(res, size);
5309 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5310 out_infos[0].req = &arch_no_requirement;
5311 out_infos[1].req = &ia32_class_reg_req_flags;
5312 out_infos[2].req = &arch_memory_requirement;
5320 static arch_register_req_t
const *in_reqs[] = {
5321 &ia32_class_reg_req_gp,
5322 &ia32_class_reg_req_gp,
5323 &arch_memory_requirement,
5324 &ia32_requirements_gp_eax_ebx_ecx_edx,
5341 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5342 irn_flags |= arch_irn_flag_modify_flags;
5343 irn_flags |= arch_irn_flag_rematerializable;
5344 int const n_res = 3;
5345 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5348 init_ia32_attributes(res, size);
5349 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5350 out_infos[0].req = &arch_no_requirement;
5351 out_infos[1].req = &ia32_class_reg_req_flags;
5352 out_infos[2].req = &arch_memory_requirement;
5360 static arch_register_req_t
const *in_reqs[] = {
5361 &ia32_class_reg_req_gp,
5362 &ia32_class_reg_req_gp,
5363 &arch_memory_requirement,
5364 &ia32_single_reg_req_gp_esp,
5365 &ia32_class_reg_req_gp,
5383 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5384 irn_flags |= arch_irn_flag_modify_flags;
5385 int const n_res = 3;
5386 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5389 x86_insn_size_t size = X86_SIZE_32;
5390 init_ia32_attributes(res, size);
5391 set_ia32_am_support(res, ia32_am_binary);
5392 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5393 out_infos[0].req = &ia32_requirements_gp_esp_I;
5394 out_infos[1].req = &ia32_class_reg_req_gp;
5395 out_infos[2].req = &arch_memory_requirement;
5403 static arch_register_req_t
const *in_reqs[] = {
5404 &ia32_class_reg_req_gp,
5405 &ia32_class_reg_req_gp,
5406 &arch_memory_requirement,
5407 &ia32_class_reg_req_xmm,
5408 &ia32_class_reg_req_xmm,
5421 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Subs, ia32_mode_float64, 5, in);
5426 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5427 irn_flags |= arch_irn_flag_rematerializable;
5428 int const n_res = 3;
5429 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5432 init_ia32_attributes(res, size);
5433 set_ia32_am_support(res, ia32_am_binary);
5434 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5435 out_infos[0].req = &ia32_requirements_xmm_in_r3;
5436 out_infos[1].req = &ia32_class_reg_req_flags;
5437 out_infos[2].req = &arch_memory_requirement;
5445 static arch_register_req_t
const *in_reqs[] = {
5446 &ia32_class_reg_req_gp,
5447 &ia32_class_reg_req_gp,
5462 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5463 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5466 x86_insn_size_t
const size = X86_SIZE_32;
5467 init_ia32_attributes(res, size);
5468 init_ia32_switch_attributes(res, switch_table, table_entity);
5476 static arch_register_req_t
const *in_reqs[] = {
5477 &ia32_class_reg_req_gp,
5478 &ia32_class_reg_req_gp,
5479 &arch_memory_requirement,
5480 &ia32_class_reg_req_gp,
5481 &ia32_class_reg_req_gp,
5494 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Test, ia32_mode_flags, 5, in);
5499 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5500 irn_flags |= arch_irn_flag_modify_flags;
5501 irn_flags |= arch_irn_flag_rematerializable;
5502 int const n_res = 3;
5503 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5506 init_ia32_attributes(res, size);
5507 set_ia32_am_support(res, ia32_am_binary);
5508 attr->ins_permuted = ins_permuted;
5509 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5510 out_infos[0].req = &ia32_class_reg_req_flags;
5511 out_infos[1].req = &arch_no_requirement;
5512 out_infos[2].req = &arch_memory_requirement;
5520 static arch_register_req_t
const *in_reqs[] = {
5521 &ia32_class_reg_req_gp,
5522 &ia32_class_reg_req_gp,
5523 &arch_memory_requirement,
5524 &ia32_requirements_gp_eax_ebx_ecx_edx,
5525 &ia32_requirements_gp_eax_ebx_ecx_edx,
5538 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Test, ia32_mode_flags, 5, in);
5543 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5544 irn_flags |= arch_irn_flag_modify_flags;
5545 irn_flags |= arch_irn_flag_rematerializable;
5546 int const n_res = 3;
5547 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5550 init_ia32_attributes(res, size);
5551 set_ia32_am_support(res, ia32_am_binary);
5552 attr->ins_permuted = ins_permuted;
5553 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5554 out_infos[0].req = &ia32_class_reg_req_flags;
5555 out_infos[1].req = &arch_no_requirement;
5556 out_infos[2].req = &arch_memory_requirement;
5564 static arch_register_req_t
const *in_reqs[] = {
5565 &arch_memory_requirement,
5579 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5580 int const n_res = 1;
5581 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5584 x86_insn_size_t
const size = X86_SIZE_32;
5585 init_ia32_attributes(res, size);
5586 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5587 out_infos[0].req = &arch_memory_requirement;
5595 static arch_register_req_t
const *in_reqs[] = {
5596 &ia32_class_reg_req_gp,
5597 &ia32_class_reg_req_gp,
5598 &arch_memory_requirement,
5599 &ia32_class_reg_req_xmm,
5600 &ia32_class_reg_req_xmm,
5613 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Ucomis, ia32_mode_flags, 5, in);
5618 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5619 irn_flags |= arch_irn_flag_modify_flags;
5620 irn_flags |= arch_irn_flag_rematerializable;
5621 int const n_res = 1;
5622 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5625 x86_insn_size_t
const size = X86_SIZE_32;
5626 init_ia32_attributes(res, size);
5627 set_ia32_am_support(res, ia32_am_binary);
5628 attr->ins_permuted = ins_permuted;
5629 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5630 out_infos[0].req = &ia32_class_reg_req_flags;
5638 static arch_register_req_t
const *in_reqs[] = {
5639 &ia32_class_reg_req_gp,
5640 &ia32_class_reg_req_gp,
5641 &arch_memory_requirement,
5642 &ia32_class_reg_req_gp,
5643 &ia32_class_reg_req_gp,
5656 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor, ia32_mode_gp, 5, in);
5661 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5662 irn_flags |= arch_irn_flag_modify_flags;
5663 irn_flags |= arch_irn_flag_rematerializable;
5664 int const n_res = 3;
5665 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5668 init_ia32_attributes(res, size);
5669 set_ia32_am_support(res, ia32_am_binary);
5670 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5671 out_infos[0].req = &ia32_requirements_gp_in_r3_in_r4;
5672 out_infos[1].req = &ia32_class_reg_req_flags;
5673 out_infos[2].req = &arch_memory_requirement;
5681 static arch_register_req_t
const *in_reqs[] = {
5682 &ia32_class_reg_req_gp,
5683 &ia32_class_reg_req_gp,
5684 &arch_memory_requirement,
5685 &ia32_requirements_gp_eax_ebx_ecx_edx,
5686 &ia32_requirements_gp_eax_ebx_ecx_edx,
5699 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor, ia32_mode_gp, 5, in);
5704 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5705 irn_flags |= arch_irn_flag_modify_flags;
5706 irn_flags |= arch_irn_flag_rematerializable;
5707 int const n_res = 3;
5708 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5711 init_ia32_attributes(res, size);
5712 set_ia32_am_support(res, ia32_am_binary);
5713 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5714 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r3_in_r4;
5715 out_infos[1].req = &ia32_class_reg_req_flags;
5716 out_infos[2].req = &arch_memory_requirement;
5724 arch_register_req_t
const **
const in_reqs = NULL;
5728 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xor0, ia32_mode_gp, 0, NULL);
5733 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5734 irn_flags |= arch_irn_flag_modify_flags;
5735 irn_flags |= arch_irn_flag_rematerializable;
5736 int const n_res = 2;
5737 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5740 init_ia32_attributes(res, size);
5741 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5742 out_infos[0].req = &ia32_class_reg_req_gp;
5743 out_infos[1].req = &ia32_class_reg_req_flags;
5751 static arch_register_req_t
const *in_reqs[] = {
5752 &ia32_requirements_gp_eax_ebx_ecx_edx,
5766 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5767 irn_flags |= arch_irn_flag_modify_flags;
5768 irn_flags |= arch_irn_flag_rematerializable;
5769 int const n_res = 2;
5770 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5773 x86_insn_size_t
const size = X86_SIZE_8;
5774 init_ia32_attributes(res, size);
5775 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5776 out_infos[0].req = &ia32_requirements_gp_eax_ebx_ecx_edx_in_r0;
5777 out_infos[1].req = &ia32_class_reg_req_flags;
5785 static arch_register_req_t
const *in_reqs[] = {
5786 &ia32_class_reg_req_gp,
5787 &ia32_class_reg_req_gp,
5788 &arch_memory_requirement,
5789 &ia32_class_reg_req_gp,
5806 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5807 irn_flags |= arch_irn_flag_modify_flags;
5808 irn_flags |= arch_irn_flag_rematerializable;
5809 int const n_res = 3;
5810 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5813 init_ia32_attributes(res, size);
5814 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5815 out_infos[0].req = &arch_no_requirement;
5816 out_infos[1].req = &ia32_class_reg_req_flags;
5817 out_infos[2].req = &arch_memory_requirement;
5825 static arch_register_req_t
const *in_reqs[] = {
5826 &ia32_class_reg_req_gp,
5827 &ia32_class_reg_req_gp,
5828 &arch_memory_requirement,
5829 &ia32_requirements_gp_eax_ebx_ecx_edx,
5846 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5847 irn_flags |= arch_irn_flag_modify_flags;
5848 irn_flags |= arch_irn_flag_rematerializable;
5849 int const n_res = 3;
5850 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5853 init_ia32_attributes(res, size);
5854 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5855 out_infos[0].req = &arch_no_requirement;
5856 out_infos[1].req = &ia32_class_reg_req_flags;
5857 out_infos[2].req = &arch_memory_requirement;
5865 static arch_register_req_t
const *in_reqs[] = {
5866 &ia32_class_reg_req_gp,
5867 &ia32_class_reg_req_gp,
5868 &arch_memory_requirement,
5869 &ia32_class_reg_req_xmm,
5870 &ia32_class_reg_req_xmm,
5883 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_Xorp, ia32_mode_float64, 5, in);
5888 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5889 irn_flags |= arch_irn_flag_rematerializable;
5890 int const n_res = 3;
5891 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5894 init_ia32_attributes(res, size);
5895 set_ia32_am_support(res, ia32_am_binary);
5896 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5897 out_infos[0].req = &ia32_requirements_xmm_in_r3_in_r4;
5898 out_infos[1].req = &ia32_class_reg_req_flags;
5899 out_infos[2].req = &arch_memory_requirement;
5907 arch_register_req_t
const **
const in_reqs = NULL;
5916 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5917 int const n_res = 1;
5918 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5921 x86_insn_size_t
const size = X86_SIZE_32; ia32_request_x87_sim(irg);
5922 init_ia32_attributes(res, size);
5923 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5924 out_infos[0].req = &arch_no_requirement;
5932 static arch_register_req_t
const *in_reqs[] = {
5933 &ia32_class_reg_req_fp,
5947 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5948 irn_flags |= arch_irn_flag_rematerializable;
5949 int const n_res = 1;
5950 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5953 x86_insn_size_t
const size = X86_SIZE_80;
5954 init_ia32_attributes(res, size);
5955 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5956 out_infos[0].req = &ia32_class_reg_req_fp;
5964 static arch_register_req_t
const *in_reqs[] = {
5965 &ia32_class_reg_req_gp,
5966 &ia32_class_reg_req_gp,
5967 &arch_memory_requirement,
5968 &ia32_class_reg_req_fp,
5969 &ia32_class_reg_req_fp,
5970 &ia32_class_reg_req_fpcw,
5989 arch_irn_flags_t irn_flags = arch_irn_flags_none;
5990 int const n_res = 3;
5991 be_info_init_irn(res, irn_flags, in_reqs, n_res);
5994 init_ia32_attributes(res, size);
5995 init_ia32_x87_attributes(res);
5996 set_ia32_am_support(res, ia32_am_binary);
5997 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
5998 out_infos[0].req = &ia32_class_reg_req_fp;
5999 out_infos[1].req = &arch_no_requirement;
6000 out_infos[2].req = &arch_memory_requirement;
6008 static arch_register_req_t
const *in_reqs[] = {
6009 &ia32_class_reg_req_fp,
6023 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6024 irn_flags |= arch_irn_flag_rematerializable;
6025 int const n_res = 1;
6026 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6029 x86_insn_size_t
const size = X86_SIZE_80;
6030 init_ia32_attributes(res, size);
6031 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6032 out_infos[0].req = &ia32_class_reg_req_fp;
6040 static arch_register_req_t
const *in_reqs[] = {
6041 &ia32_class_reg_req_gp,
6042 &ia32_class_reg_req_gp,
6043 &arch_memory_requirement,
6044 &ia32_class_reg_req_fp,
6045 &ia32_class_reg_req_fp,
6046 &ia32_class_reg_req_fpcw,
6065 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6066 int const n_res = 3;
6067 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6070 init_ia32_attributes(res, size);
6071 init_ia32_x87_attributes(res);
6072 set_ia32_am_support(res, ia32_am_binary);
6073 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6074 out_infos[0].req = &ia32_class_reg_req_fp;
6075 out_infos[1].req = &arch_no_requirement;
6076 out_infos[2].req = &arch_memory_requirement;
6084 static arch_register_req_t
const *in_reqs[] = {
6085 &ia32_class_reg_req_fp,
6099 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6100 int const n_res = 1;
6101 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6104 x86_insn_size_t
const size = X86_SIZE_80;
6105 init_ia32_attributes(res, size);
6106 init_ia32_x87_attributes(res);
6107 attr->x87.reg = reg;
6108 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6109 out_infos[0].req = &ia32_class_reg_req_fp;
6117 arch_register_req_t
const **
const in_reqs = NULL;
6126 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6127 int const n_res = 1;
6128 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6131 x86_insn_size_t
const size = X86_SIZE_32; ia32_request_x87_sim(irg);
6132 init_ia32_attributes(res, size);
6133 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6134 out_infos[0].req = &arch_no_requirement;
6142 arch_register_req_t
const **
const in_reqs = NULL;
6151 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6152 int const n_res = 1;
6153 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6156 x86_insn_size_t
const size = X86_SIZE_80;
6157 init_ia32_attributes(res, size);
6158 init_ia32_x87_attributes(res);
6159 attr->x87.reg = reg;
6160 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6161 out_infos[0].req = &arch_no_requirement;
6169 static arch_register_req_t
const *in_reqs[] = {
6170 &ia32_class_reg_req_gp,
6171 &ia32_class_reg_req_gp,
6172 &arch_memory_requirement,
6188 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6189 int const n_res = 5;
6190 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6193 ia32_request_x87_sim(irg);
6194 init_ia32_attributes(res, size);
6195 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6196 out_infos[0].req = &ia32_class_reg_req_fp;
6197 out_infos[1].req = &arch_no_requirement;
6198 out_infos[2].req = &arch_memory_requirement;
6199 out_infos[3].req = &arch_exec_requirement;
6200 out_infos[4].req = &arch_exec_requirement;
6208 static arch_register_req_t
const *in_reqs[] = {
6209 &ia32_class_reg_req_gp,
6210 &ia32_class_reg_req_gp,
6211 &arch_memory_requirement,
6212 &ia32_class_reg_req_fp,
6213 &ia32_class_reg_req_fpcw,
6231 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6232 int const n_res = 3;
6233 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6236 init_ia32_attributes(res, size);
6237 init_ia32_x87_attributes(res);
6238 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6239 out_infos[0].req = &arch_memory_requirement;
6240 out_infos[1].req = &arch_exec_requirement;
6241 out_infos[2].req = &arch_exec_requirement;
6249 static arch_register_req_t
const *in_reqs[] = {
6250 &ia32_class_reg_req_gp,
6251 &ia32_class_reg_req_gp,
6252 &arch_memory_requirement,
6253 &ia32_requirements_fp_fp_K,
6254 &ia32_class_reg_req_fpcw,
6272 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6273 int const n_res = 3;
6274 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6277 init_ia32_attributes(res, size);
6278 init_ia32_x87_attributes(res);
6279 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6280 out_infos[0].req = &arch_memory_requirement;
6281 out_infos[1].req = &arch_exec_requirement;
6282 out_infos[2].req = &arch_exec_requirement;
6290 static arch_register_req_t
const *in_reqs[] = {
6291 &ia32_class_reg_req_gp,
6292 &ia32_class_reg_req_gp,
6293 &arch_memory_requirement,
6294 &ia32_requirements_fp_fp_K,
6311 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6312 int const n_res = 3;
6313 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6316 init_ia32_attributes(res, size);
6317 init_ia32_x87_attributes(res);
6318 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6319 out_infos[0].req = &arch_memory_requirement;
6320 out_infos[1].req = &arch_exec_requirement;
6321 out_infos[2].req = &arch_exec_requirement;
6329 static arch_register_req_t
const *in_reqs[] = {
6330 &ia32_class_reg_req_gp,
6331 &ia32_class_reg_req_gp,
6332 &arch_memory_requirement,
6348 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6349 irn_flags |= arch_irn_flag_rematerializable;
6350 int const n_res = 5;
6351 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6354 ia32_request_x87_sim(irg);
6355 init_ia32_attributes(res, size);
6356 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6357 out_infos[0].req = &ia32_class_reg_req_fp;
6358 out_infos[1].req = &arch_no_requirement;
6359 out_infos[2].req = &arch_memory_requirement;
6360 out_infos[3].req = &arch_exec_requirement;
6361 out_infos[4].req = &arch_exec_requirement;
6369 arch_register_req_t
const **
const in_reqs = NULL;
6373 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fld1, x86_mode_E, 0, NULL);
6378 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6379 irn_flags |= arch_irn_flag_rematerializable;
6380 int const n_res = 1;
6381 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6384 x86_insn_size_t
const size = X86_SIZE_80;
6385 ia32_request_x87_sim(irg);
6386 init_ia32_attributes(res, size);
6387 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6388 out_infos[0].req = &ia32_class_reg_req_fp;
6396 arch_register_req_t
const **
const in_reqs = NULL;
6400 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldl2e, x86_mode_E, 0, NULL);
6405 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6406 irn_flags |= arch_irn_flag_rematerializable;
6407 int const n_res = 1;
6408 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6411 x86_insn_size_t
const size = X86_SIZE_80;
6412 ia32_request_x87_sim(irg);
6413 init_ia32_attributes(res, size);
6414 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6415 out_infos[0].req = &ia32_class_reg_req_fp;
6423 arch_register_req_t
const **
const in_reqs = NULL;
6427 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldl2t, x86_mode_E, 0, NULL);
6432 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6433 irn_flags |= arch_irn_flag_rematerializable;
6434 int const n_res = 1;
6435 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6438 x86_insn_size_t
const size = X86_SIZE_80;
6439 ia32_request_x87_sim(irg);
6440 init_ia32_attributes(res, size);
6441 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6442 out_infos[0].req = &ia32_class_reg_req_fp;
6450 arch_register_req_t
const **
const in_reqs = NULL;
6454 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldlg2, x86_mode_E, 0, NULL);
6459 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6460 irn_flags |= arch_irn_flag_rematerializable;
6461 int const n_res = 1;
6462 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6465 x86_insn_size_t
const size = X86_SIZE_80;
6466 ia32_request_x87_sim(irg);
6467 init_ia32_attributes(res, size);
6468 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6469 out_infos[0].req = &ia32_class_reg_req_fp;
6477 arch_register_req_t
const **
const in_reqs = NULL;
6481 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldln2, x86_mode_E, 0, NULL);
6486 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6487 irn_flags |= arch_irn_flag_rematerializable;
6488 int const n_res = 1;
6489 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6492 x86_insn_size_t
const size = X86_SIZE_80;
6493 ia32_request_x87_sim(irg);
6494 init_ia32_attributes(res, size);
6495 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6496 out_infos[0].req = &ia32_class_reg_req_fp;
6504 arch_register_req_t
const **
const in_reqs = NULL;
6508 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldpi, x86_mode_E, 0, NULL);
6513 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6514 irn_flags |= arch_irn_flag_rematerializable;
6515 int const n_res = 1;
6516 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6519 x86_insn_size_t
const size = X86_SIZE_80;
6520 ia32_request_x87_sim(irg);
6521 init_ia32_attributes(res, size);
6522 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6523 out_infos[0].req = &ia32_class_reg_req_fp;
6531 arch_register_req_t
const **
const in_reqs = NULL;
6535 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_fldz, x86_mode_E, 0, NULL);
6540 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6541 irn_flags |= arch_irn_flag_rematerializable;
6542 int const n_res = 1;
6543 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6546 x86_insn_size_t
const size = X86_SIZE_80;
6547 ia32_request_x87_sim(irg);
6548 init_ia32_attributes(res, size);
6549 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6550 out_infos[0].req = &ia32_class_reg_req_fp;
6558 static arch_register_req_t
const *in_reqs[] = {
6559 &ia32_class_reg_req_gp,
6560 &ia32_class_reg_req_gp,
6561 &arch_memory_requirement,
6562 &ia32_class_reg_req_fp,
6563 &ia32_class_reg_req_fp,
6564 &ia32_class_reg_req_fpcw,
6583 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6584 int const n_res = 3;
6585 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6588 init_ia32_attributes(res, size);
6589 init_ia32_x87_attributes(res);
6590 set_ia32_am_support(res, ia32_am_binary);
6591 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6592 out_infos[0].req = &ia32_class_reg_req_fp;
6593 out_infos[1].req = &arch_no_requirement;
6594 out_infos[2].req = &arch_memory_requirement;
6602 arch_register_req_t
const **
const in_reqs = NULL;
6611 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6612 int const n_res = 1;
6613 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6616 x86_insn_size_t
const size = X86_SIZE_80;
6617 init_ia32_attributes(res, size);
6618 init_ia32_x87_attributes(res);
6619 attr->x87.reg = reg;
6620 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6621 out_infos[0].req = &arch_no_requirement;
6629 static arch_register_req_t
const *in_reqs[] = {
6630 &ia32_class_reg_req_gp,
6631 &ia32_class_reg_req_gp,
6632 &arch_memory_requirement,
6633 &ia32_class_reg_req_fp,
6650 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6651 irn_flags |= arch_irn_flag_rematerializable;
6652 int const n_res = 3;
6653 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6656 init_ia32_attributes(res, size);
6657 init_ia32_x87_attributes(res);
6658 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6659 out_infos[0].req = &arch_memory_requirement;
6660 out_infos[1].req = &arch_exec_requirement;
6661 out_infos[2].req = &arch_exec_requirement;
6669 static arch_register_req_t
const *in_reqs[] = {
6670 &ia32_class_reg_req_gp,
6671 &ia32_class_reg_req_gp,
6672 &arch_memory_requirement,
6673 &ia32_requirements_fp_fp_K,
6690 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6691 irn_flags |= arch_irn_flag_rematerializable;
6692 int const n_res = 3;
6693 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6696 init_ia32_attributes(res, size);
6697 init_ia32_x87_attributes(res);
6698 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6699 out_infos[0].req = &arch_memory_requirement;
6700 out_infos[1].req = &arch_exec_requirement;
6701 out_infos[2].req = &arch_exec_requirement;
6709 static arch_register_req_t
const *in_reqs[] = {
6710 &ia32_class_reg_req_gp,
6711 &ia32_class_reg_req_gp,
6712 &arch_memory_requirement,
6713 &ia32_class_reg_req_fp,
6714 &ia32_class_reg_req_fp,
6715 &ia32_class_reg_req_fpcw,
6734 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6735 int const n_res = 3;
6736 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6739 init_ia32_attributes(res, size);
6740 init_ia32_x87_attributes(res);
6741 set_ia32_am_support(res, ia32_am_binary);
6742 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6743 out_infos[0].req = &ia32_class_reg_req_fp;
6744 out_infos[1].req = &arch_no_requirement;
6745 out_infos[2].req = &arch_memory_requirement;
6753 arch_register_req_t
const **
const in_reqs = NULL;
6762 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6763 int const n_res = 1;
6764 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6767 x86_insn_size_t
const size = X86_SIZE_80;
6768 init_ia32_attributes(res, size);
6769 init_ia32_x87_attributes(res);
6770 attr->x87.reg = reg;
6771 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6772 out_infos[0].req = &arch_no_requirement;
6860 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_l_LLtoFloat, mode, 2, in);
6943 arch_register_req_t
const **
const in_reqs = NULL;
6947 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xAllOnes, ia32_mode_float64, 0, NULL);
6952 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6953 irn_flags |= arch_irn_flag_rematerializable;
6954 int const n_res = 1;
6955 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6958 init_ia32_attributes(res, size);
6959 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6960 out_infos[0].req = &ia32_class_reg_req_xmm;
6968 static arch_register_req_t
const *in_reqs[] = {
6969 &ia32_class_reg_req_gp,
6970 &ia32_class_reg_req_gp,
6971 &arch_memory_requirement,
6987 arch_irn_flags_t irn_flags = arch_irn_flags_none;
6988 int const n_res = 5;
6989 be_info_init_irn(res, irn_flags, in_reqs, n_res);
6992 init_ia32_attributes(res, size);
6993 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
6994 out_infos[0].req = &ia32_class_reg_req_xmm;
6995 out_infos[1].req = &arch_no_requirement;
6996 out_infos[2].req = &arch_memory_requirement;
6997 out_infos[3].req = &arch_exec_requirement;
6998 out_infos[4].req = &arch_exec_requirement;
7006 arch_register_req_t
const **
const in_reqs = NULL;
7010 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xPzero, ia32_mode_float64, 0, NULL);
7015 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7016 irn_flags |= arch_irn_flag_rematerializable;
7017 int const n_res = 1;
7018 be_info_init_irn(res, irn_flags, in_reqs, n_res);
7021 init_ia32_attributes(res, size);
7022 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7023 out_infos[0].req = &ia32_class_reg_req_xmm;
7031 static arch_register_req_t
const *in_reqs[] = {
7032 &ia32_class_reg_req_gp,
7033 &ia32_class_reg_req_gp,
7034 &arch_memory_requirement,
7035 &ia32_class_reg_req_xmm,
7052 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7053 int const n_res = 3;
7054 be_info_init_irn(res, irn_flags, in_reqs, n_res);
7057 init_ia32_attributes(res, size);
7058 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7059 out_infos[0].req = &arch_memory_requirement;
7060 out_infos[1].req = &arch_exec_requirement;
7061 out_infos[2].req = &arch_exec_requirement;
7069 arch_register_req_t
const **
const in_reqs = NULL;
7073 ir_node *
const res =
new_ir_node(dbgi, irg, block, op_ia32_xZero, ia32_mode_float64, 0, NULL);
7078 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7079 irn_flags |= arch_irn_flag_rematerializable;
7080 int const n_res = 1;
7081 be_info_init_irn(res, irn_flags, in_reqs, n_res);
7084 init_ia32_attributes(res, size);
7085 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7086 out_infos[0].req = &ia32_class_reg_req_xmm;
7094 static arch_register_req_t
const *in_reqs[] = {
7095 &ia32_class_reg_req_gp,
7096 &ia32_class_reg_req_gp,
7097 &arch_memory_requirement,
7113 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7114 int const n_res = 4;
7115 be_info_init_irn(res, irn_flags, in_reqs, n_res);
7118 init_ia32_attributes(res, size);
7119 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7120 out_infos[0].req = &ia32_class_reg_req_xmm;
7121 out_infos[1].req = &arch_memory_requirement;
7122 out_infos[2].req = &arch_exec_requirement;
7123 out_infos[3].req = &arch_exec_requirement;
7131 static arch_register_req_t
const *in_reqs[] = {
7132 &ia32_class_reg_req_gp,
7133 &ia32_class_reg_req_gp,
7134 &arch_memory_requirement,
7135 &ia32_class_reg_req_xmm,
7152 arch_irn_flags_t irn_flags = arch_irn_flags_none;
7153 int const n_res = 3;
7154 be_info_init_irn(res, irn_flags, in_reqs, n_res);
7157 init_ia32_attributes(res, size);
7158 reg_out_info_t *
const out_infos = be_get_info(res)->out_infos;
7159 out_infos[0].req = &arch_memory_requirement;
7160 out_infos[1].req = &arch_exec_requirement;
7161 out_infos[2].req = &arch_exec_requirement;
7172 void ia32_create_opcodes(
void)
7177 ia32_opcode_start = cur_opcode;
7182 set_op_tag(op, ia32_op_tag);
7183 ia32_init_op(op, 1);
7189 set_op_tag(op, ia32_op_tag);
7190 ia32_init_op(op, 1);
7196 set_op_tag(op, ia32_op_tag);
7197 ia32_init_op(op, 1);
7198 op_ia32_AddMem = op;
7203 set_op_tag(op, ia32_op_tag);
7204 ia32_init_op(op, 1);
7210 set_op_tag(op, ia32_op_tag);
7211 ia32_init_op(op, 4);
7217 set_op_tag(op, ia32_op_tag);
7218 ia32_init_op(op, 1);
7224 set_op_tag(op, ia32_op_tag);
7225 ia32_init_op(op, 1);
7226 op_ia32_AndMem = op;
7231 set_op_tag(op, ia32_op_tag);
7232 ia32_init_op(op, 3);
7238 set_op_tag(op, ia32_op_tag);
7239 ia32_init_op(op, 3);
7245 set_op_tag(op, ia32_op_tag);
7246 ia32_init_op(op, 0);
7247 op_ia32_Breakpoint = op;
7252 set_op_tag(op, ia32_op_tag);
7253 ia32_init_op(op, 1);
7259 set_op_tag(op, ia32_op_tag);
7260 ia32_init_op(op, 1);
7266 set_op_tag(op, ia32_op_tag);
7267 ia32_init_op(op, 1);
7273 set_op_tag(op, ia32_op_tag);
7274 ia32_init_op(op, 1);
7275 op_ia32_Bswap16 = op;
7280 set_op_tag(op, ia32_op_tag);
7281 ia32_init_op(op, 1);
7287 set_op_tag(op, ia32_op_tag);
7288 ia32_init_op(op, 1);
7289 op_ia32_CMovcc = op;
7294 set_op_tag(op, ia32_op_tag);
7295 ia32_init_op(op, 4);
7301 set_op_tag(op, ia32_op_tag);
7302 ia32_init_op(op, 3);
7303 op_ia32_ChangeCW = op;
7308 set_op_tag(op, ia32_op_tag);
7309 ia32_init_op(op, 1);
7315 set_op_tag(op, ia32_op_tag);
7316 ia32_init_op(op, 1);
7322 set_op_tag(op, ia32_op_tag);
7323 ia32_init_op(op, 1);
7329 set_op_tag(op, ia32_op_tag);
7330 ia32_init_op(op, 2);
7331 op_ia32_CmpXChgMem = op;
7336 set_op_tag(op, ia32_op_tag);
7337 ia32_init_op(op, 1);
7343 set_op_tag(op, ia32_op_tag);
7344 ia32_init_op(op, 8);
7345 op_ia32_Conv_FP2FP = op;
7350 set_op_tag(op, ia32_op_tag);
7351 ia32_init_op(op, 10);
7352 op_ia32_Conv_FP2I = op;
7357 set_op_tag(op, ia32_op_tag);
7358 ia32_init_op(op, 10);
7359 op_ia32_Conv_I2FP = op;
7366 set_op_tag(op, ia32_op_tag);
7367 ia32_init_op(op, 1);
7368 op_ia32_Conv_I2I = op;
7373 set_op_tag(op, ia32_op_tag);
7374 ia32_init_op(op, 250);
7380 set_op_tag(op, ia32_op_tag);
7381 ia32_init_op(op, 3);
7382 op_ia32_CopyB_i = op;
7387 set_op_tag(op, ia32_op_tag);
7388 ia32_init_op(op, 1);
7389 op_ia32_CopyEbpEsp = op;
7394 set_op_tag(op, ia32_op_tag);
7395 ia32_init_op(op, 2);
7396 op_ia32_CvtSI2SD = op;
7401 set_op_tag(op, ia32_op_tag);
7402 ia32_init_op(op, 2);
7403 op_ia32_CvtSI2SS = op;
7408 set_op_tag(op, ia32_op_tag);
7409 ia32_init_op(op, 1);
7415 set_op_tag(op, ia32_op_tag);
7416 ia32_init_op(op, 1);
7422 set_op_tag(op, ia32_op_tag);
7423 ia32_init_op(op, 1);
7424 op_ia32_DecMem = op;
7431 set_op_tag(op, ia32_op_tag);
7432 ia32_init_op(op, 25);
7438 set_op_tag(op, ia32_op_tag);
7439 ia32_init_op(op, 16);
7445 set_op_tag(op, ia32_op_tag);
7446 ia32_init_op(op, 15);
7452 set_op_tag(op, ia32_op_tag);
7453 ia32_init_op(op, 5);
7459 set_op_tag(op, ia32_op_tag);
7460 ia32_init_op(op, 5);
7461 op_ia32_FnstCW = op;
7466 set_op_tag(op, ia32_op_tag);
7467 ia32_init_op(op, 0);
7468 op_ia32_FnstCWNOP = op;
7473 set_op_tag(op, ia32_op_tag);
7474 ia32_init_op(op, 3);
7475 op_ia32_FtstFnstsw = op;
7480 set_op_tag(op, ia32_op_tag);
7481 ia32_init_op(op, 3);
7482 op_ia32_FucomFnstsw = op;
7487 set_op_tag(op, ia32_op_tag);
7488 ia32_init_op(op, 3);
7489 op_ia32_Fucomi = op;
7494 set_op_tag(op, ia32_op_tag);
7495 ia32_init_op(op, 3);
7496 op_ia32_FucomppFnstsw = op;
7501 set_op_tag(op, ia32_op_tag);
7502 ia32_init_op(op, 5);
7503 op_ia32_GetEIP = op;
7510 set_op_tag(op, ia32_op_tag);
7511 ia32_init_op(op, 25);
7517 set_op_tag(op, ia32_op_tag);
7518 ia32_init_op(op, 1);
7524 set_op_tag(op, ia32_op_tag);
7525 ia32_init_op(op, 5);
7531 set_op_tag(op, ia32_op_tag);
7532 ia32_init_op(op, 5);
7533 op_ia32_IMul1OP = op;
7538 set_op_tag(op, ia32_op_tag);
7539 ia32_init_op(op, 5);
7540 op_ia32_IMulImm = op;
7546 set_op_tag(op, ia32_op_tag);
7547 ia32_init_op(op, 0);
7548 op_ia32_Immediate = op;
7553 set_op_tag(op, ia32_op_tag);
7554 ia32_init_op(op, 1);
7560 set_op_tag(op, ia32_op_tag);
7561 ia32_init_op(op, 1);
7562 op_ia32_IncMem = op;
7567 set_op_tag(op, ia32_op_tag);
7568 ia32_init_op(op, 1);
7569 op_ia32_Inport = op;
7574 set_op_tag(op, ia32_op_tag);
7575 ia32_init_op(op, 2);
7581 set_op_tag(op, ia32_op_tag);
7582 ia32_init_op(op, 1);
7588 set_op_tag(op, ia32_op_tag);
7589 ia32_init_op(op, 1);
7595 set_op_tag(op, ia32_op_tag);
7596 ia32_init_op(op, 2);
7602 set_op_tag(op, ia32_op_tag);
7603 ia32_init_op(op, 3);
7611 set_op_tag(op, ia32_op_tag);
7612 ia32_init_op(op, 0);
7618 set_op_tag(op, ia32_op_tag);
7619 ia32_init_op(op, 2);
7625 set_op_tag(op, ia32_op_tag);
7626 ia32_init_op(op, 2);
7632 set_op_tag(op, ia32_op_tag);
7633 ia32_init_op(op, 3);
7634 op_ia32_Minus64 = op;
7639 set_op_tag(op, ia32_op_tag);
7640 ia32_init_op(op, 1);
7646 set_op_tag(op, ia32_op_tag);
7647 ia32_init_op(op, 10);
7653 set_op_tag(op, ia32_op_tag);
7654 ia32_init_op(op, 4);
7660 set_op_tag(op, ia32_op_tag);
7661 ia32_init_op(op, 1);
7667 set_op_tag(op, ia32_op_tag);
7668 ia32_init_op(op, 1);
7669 op_ia32_NegMem = op;
7674 set_op_tag(op, ia32_op_tag);
7675 ia32_init_op(op, 0);
7676 op_ia32_NoReg_FP = op;
7681 set_op_tag(op, ia32_op_tag);
7682 ia32_init_op(op, 0);
7683 op_ia32_NoReg_GP = op;
7688 set_op_tag(op, ia32_op_tag);
7689 ia32_init_op(op, 0);
7690 op_ia32_NoReg_XMM = op;
7695 set_op_tag(op, ia32_op_tag);
7696 ia32_init_op(op, 1);
7702 set_op_tag(op, ia32_op_tag);
7703 ia32_init_op(op, 1);
7704 op_ia32_NotMem = op;
7709 set_op_tag(op, ia32_op_tag);
7710 ia32_init_op(op, 1);
7716 set_op_tag(op, ia32_op_tag);
7717 ia32_init_op(op, 1);
7723 set_op_tag(op, ia32_op_tag);
7724 ia32_init_op(op, 3);
7730 set_op_tag(op, ia32_op_tag);
7731 ia32_init_op(op, 1);
7732 op_ia32_Outport = op;
7737 set_op_tag(op, ia32_op_tag);
7738 ia32_init_op(op, 3);
7744 set_op_tag(op, ia32_op_tag);
7745 ia32_init_op(op, 3);
7746 op_ia32_PopMem = op;
7751 set_op_tag(op, ia32_op_tag);
7752 ia32_init_op(op, 1);
7753 op_ia32_Popcnt = op;
7758 set_op_tag(op, ia32_op_tag);
7759 ia32_init_op(op, 0);
7760 op_ia32_Prefetch = op;
7765 set_op_tag(op, ia32_op_tag);
7766 ia32_init_op(op, 0);
7767 op_ia32_PrefetchNTA = op;
7772 set_op_tag(op, ia32_op_tag);
7773 ia32_init_op(op, 0);
7774 op_ia32_PrefetchT0 = op;
7779 set_op_tag(op, ia32_op_tag);
7780 ia32_init_op(op, 0);
7781 op_ia32_PrefetchT1 = op;
7786 set_op_tag(op, ia32_op_tag);
7787 ia32_init_op(op, 0);
7788 op_ia32_PrefetchT2 = op;
7793 set_op_tag(op, ia32_op_tag);
7794 ia32_init_op(op, 0);
7795 op_ia32_PrefetchW = op;
7800 set_op_tag(op, ia32_op_tag);
7801 ia32_init_op(op, 3);
7807 set_op_tag(op, ia32_op_tag);
7808 ia32_init_op(op, 3);
7814 set_op_tag(op, ia32_op_tag);
7815 ia32_init_op(op, 1);
7821 set_op_tag(op, ia32_op_tag);
7822 ia32_init_op(op, 2);
7828 set_op_tag(op, ia32_op_tag);
7829 ia32_init_op(op, 2);
7830 op_ia32_PushEax = op;
7835 set_op_tag(op, ia32_op_tag);
7836 ia32_init_op(op, 0);
7842 set_op_tag(op, ia32_op_tag);
7843 ia32_init_op(op, 1);
7849 set_op_tag(op, ia32_op_tag);
7850 ia32_init_op(op, 1);
7851 op_ia32_RolMem = op;
7856 set_op_tag(op, ia32_op_tag);
7857 ia32_init_op(op, 1);
7863 set_op_tag(op, ia32_op_tag);
7864 ia32_init_op(op, 1);
7865 op_ia32_RorMem = op;
7870 set_op_tag(op, ia32_op_tag);
7871 ia32_init_op(op, 1);
7877 set_op_tag(op, ia32_op_tag);
7878 ia32_init_op(op, 1);
7884 set_op_tag(op, ia32_op_tag);
7885 ia32_init_op(op, 1);
7886 op_ia32_SarMem = op;
7891 set_op_tag(op, ia32_op_tag);
7892 ia32_init_op(op, 1);
7898 set_op_tag(op, ia32_op_tag);
7899 ia32_init_op(op, 1);
7905 set_op_tag(op, ia32_op_tag);
7906 ia32_init_op(op, 1);
7912 set_op_tag(op, ia32_op_tag);
7913 ia32_init_op(op, 1);
7914 op_ia32_SetccMem = op;
7919 set_op_tag(op, ia32_op_tag);
7920 ia32_init_op(op, 1);
7926 set_op_tag(op, ia32_op_tag);
7927 ia32_init_op(op, 6);
7933 set_op_tag(op, ia32_op_tag);
7934 ia32_init_op(op, 1);
7935 op_ia32_ShlMem = op;
7940 set_op_tag(op, ia32_op_tag);
7941 ia32_init_op(op, 1);
7947 set_op_tag(op, ia32_op_tag);
7948 ia32_init_op(op, 6);
7954 set_op_tag(op, ia32_op_tag);
7955 ia32_init_op(op, 1);
7956 op_ia32_ShrMem = op;
7961 set_op_tag(op, ia32_op_tag);
7962 ia32_init_op(op, 1);
7970 set_op_tag(op, ia32_op_tag);
7971 ia32_init_op(op, 2);
7977 set_op_tag(op, ia32_op_tag);
7978 ia32_init_op(op, 1);
7984 set_op_tag(op, ia32_op_tag);
7985 ia32_init_op(op, 1);
7986 op_ia32_SubMem = op;
7991 set_op_tag(op, ia32_op_tag);
7992 ia32_init_op(op, 2);
7998 set_op_tag(op, ia32_op_tag);
7999 ia32_init_op(op, 4);
8005 set_op_tag(op, ia32_op_tag);
8006 ia32_init_op(op, 2);
8007 op_ia32_SwitchJmp = op;
8012 set_op_tag(op, ia32_op_tag);
8013 ia32_init_op(op, 1);
8019 set_op_tag(op, ia32_op_tag);
8020 ia32_init_op(op, 0);
8026 set_op_tag(op, ia32_op_tag);
8027 ia32_init_op(op, 3);
8028 op_ia32_Ucomis = op;
8033 set_op_tag(op, ia32_op_tag);
8034 ia32_init_op(op, 1);
8040 set_op_tag(op, ia32_op_tag);
8041 ia32_init_op(op, 1);
8047 set_op_tag(op, ia32_op_tag);
8048 ia32_init_op(op, 1);
8049 op_ia32_XorHighLow = op;
8054 set_op_tag(op, ia32_op_tag);
8055 ia32_init_op(op, 1);
8056 op_ia32_XorMem = op;
8061 set_op_tag(op, ia32_op_tag);
8062 ia32_init_op(op, 3);
8068 set_op_tag(op, ia32_op_tag);
8069 ia32_init_op(op, 3);
8075 set_op_tag(op, ia32_op_tag);
8076 ia32_init_op(op, 2);
8082 set_op_tag(op, ia32_op_tag);
8083 ia32_init_op(op, 4);
8089 set_op_tag(op, ia32_op_tag);
8090 ia32_init_op(op, 2);
8096 set_op_tag(op, ia32_op_tag);
8097 ia32_init_op(op, 20);
8103 set_op_tag(op, ia32_op_tag);
8104 ia32_init_op(op, 1);
8110 set_op_tag(op, ia32_op_tag);
8111 ia32_init_op(op, 3);
8117 set_op_tag(op, ia32_op_tag);
8118 ia32_init_op(op, 1);
8119 op_ia32_ffreep = op;
8126 set_op_tag(op, ia32_op_tag);
8127 ia32_init_op(op, 4);
8135 set_op_tag(op, ia32_op_tag);
8136 ia32_init_op(op, 4);
8144 set_op_tag(op, ia32_op_tag);
8145 ia32_init_op(op, 4);
8153 set_op_tag(op, ia32_op_tag);
8154 ia32_init_op(op, 4);
8155 op_ia32_fisttp = op;
8162 set_op_tag(op, ia32_op_tag);
8163 ia32_init_op(op, 2);
8169 set_op_tag(op, ia32_op_tag);
8170 ia32_init_op(op, 4);
8176 set_op_tag(op, ia32_op_tag);
8177 ia32_init_op(op, 4);
8178 op_ia32_fldl2e = op;
8183 set_op_tag(op, ia32_op_tag);
8184 ia32_init_op(op, 4);
8185 op_ia32_fldl2t = op;
8190 set_op_tag(op, ia32_op_tag);
8191 ia32_init_op(op, 4);
8192 op_ia32_fldlg2 = op;
8197 set_op_tag(op, ia32_op_tag);
8198 ia32_init_op(op, 4);
8199 op_ia32_fldln2 = op;
8204 set_op_tag(op, ia32_op_tag);
8205 ia32_init_op(op, 4);
8211 set_op_tag(op, ia32_op_tag);
8212 ia32_init_op(op, 4);
8218 set_op_tag(op, ia32_op_tag);
8219 ia32_init_op(op, 4);
8225 set_op_tag(op, ia32_op_tag);
8226 ia32_init_op(op, 1);
8234 set_op_tag(op, ia32_op_tag);
8235 ia32_init_op(op, 2);
8243 set_op_tag(op, ia32_op_tag);
8244 ia32_init_op(op, 2);
8250 set_op_tag(op, ia32_op_tag);
8251 ia32_init_op(op, 4);
8257 set_op_tag(op, ia32_op_tag);
8258 ia32_init_op(op, 1);
8262 set_op_tag(op, ia32_op_tag);
8263 ia32_init_op(op, 0);
8267 set_op_tag(op, ia32_op_tag);
8268 ia32_init_op(op, 0);
8272 set_op_tag(op, ia32_op_tag);
8273 ia32_init_op(op, 0);
8274 op_ia32_l_FloattoLL = op;
8277 set_op_tag(op, ia32_op_tag);
8278 ia32_init_op(op, 0);
8279 op_ia32_l_IMul = op;
8282 set_op_tag(op, ia32_op_tag);
8283 ia32_init_op(op, 0);
8284 op_ia32_l_LLtoFloat = op;
8287 set_op_tag(op, ia32_op_tag);
8288 ia32_init_op(op, 0);
8289 op_ia32_l_Minus64 = op;
8292 set_op_tag(op, ia32_op_tag);
8293 ia32_init_op(op, 0);
8297 set_op_tag(op, ia32_op_tag);
8298 ia32_init_op(op, 0);
8302 set_op_tag(op, ia32_op_tag);
8303 ia32_init_op(op, 0);
8309 set_op_tag(op, ia32_op_tag);
8310 ia32_init_op(op, 3);
8311 op_ia32_xAllOnes = op;
8318 set_op_tag(op, ia32_op_tag);
8319 ia32_init_op(op, 0);
8325 set_op_tag(op, ia32_op_tag);
8326 ia32_init_op(op, 3);
8327 op_ia32_xPzero = op;
8334 set_op_tag(op, ia32_op_tag);
8335 ia32_init_op(op, 0);
8336 op_ia32_xStore = op;
8341 set_op_tag(op, ia32_op_tag);
8342 ia32_init_op(op, 3);
8350 set_op_tag(op, ia32_op_tag);
8351 ia32_init_op(op, 1);
8352 op_ia32_xxLoad = op;
8359 set_op_tag(op, ia32_op_tag);
8360 ia32_init_op(op, 1);
8361 op_ia32_xxStore = op;
8365 void ia32_free_opcodes(
void)
8369 free_ir_op(op_ia32_AddMem); op_ia32_AddMem = NULL;
8370 free_ir_op(op_ia32_AddSP); op_ia32_AddSP = NULL;
8371 free_ir_op(op_ia32_Adds); op_ia32_Adds = NULL;
8373 free_ir_op(op_ia32_AndMem); op_ia32_AndMem = NULL;
8374 free_ir_op(op_ia32_Andnp); op_ia32_Andnp = NULL;
8375 free_ir_op(op_ia32_Andp); op_ia32_Andp = NULL;
8376 free_ir_op(op_ia32_Breakpoint); op_ia32_Breakpoint = NULL;
8379 free_ir_op(op_ia32_Bswap); op_ia32_Bswap = NULL;
8380 free_ir_op(op_ia32_Bswap16); op_ia32_Bswap16 = NULL;
8382 free_ir_op(op_ia32_CMovcc); op_ia32_CMovcc = NULL;
8383 free_ir_op(op_ia32_Call); op_ia32_Call = NULL;
8384 free_ir_op(op_ia32_ChangeCW); op_ia32_ChangeCW = NULL;
8385 free_ir_op(op_ia32_Cltd); op_ia32_Cltd = NULL;
8388 free_ir_op(op_ia32_CmpXChgMem); op_ia32_CmpXChgMem = NULL;
8389 free_ir_op(op_ia32_Const); op_ia32_Const = NULL;
8390 free_ir_op(op_ia32_Conv_FP2FP); op_ia32_Conv_FP2FP = NULL;
8391 free_ir_op(op_ia32_Conv_FP2I); op_ia32_Conv_FP2I = NULL;
8392 free_ir_op(op_ia32_Conv_I2FP); op_ia32_Conv_I2FP = NULL;
8393 free_ir_op(op_ia32_Conv_I2I); op_ia32_Conv_I2I = NULL;
8394 free_ir_op(op_ia32_CopyB); op_ia32_CopyB = NULL;
8395 free_ir_op(op_ia32_CopyB_i); op_ia32_CopyB_i = NULL;
8396 free_ir_op(op_ia32_CopyEbpEsp); op_ia32_CopyEbpEsp = NULL;
8397 free_ir_op(op_ia32_CvtSI2SD); op_ia32_CvtSI2SD = NULL;
8398 free_ir_op(op_ia32_CvtSI2SS); op_ia32_CvtSI2SS = NULL;
8399 free_ir_op(op_ia32_Cwtl); op_ia32_Cwtl = NULL;
8401 free_ir_op(op_ia32_DecMem); op_ia32_DecMem = NULL;
8403 free_ir_op(op_ia32_Divs); op_ia32_Divs = NULL;
8404 free_ir_op(op_ia32_Enter); op_ia32_Enter = NULL;
8405 free_ir_op(op_ia32_FldCW); op_ia32_FldCW = NULL;
8406 free_ir_op(op_ia32_FnstCW); op_ia32_FnstCW = NULL;
8407 free_ir_op(op_ia32_FnstCWNOP); op_ia32_FnstCWNOP = NULL;
8408 free_ir_op(op_ia32_FtstFnstsw); op_ia32_FtstFnstsw = NULL;
8409 free_ir_op(op_ia32_FucomFnstsw); op_ia32_FucomFnstsw = NULL;
8410 free_ir_op(op_ia32_Fucomi); op_ia32_Fucomi = NULL;
8411 free_ir_op(op_ia32_FucomppFnstsw); op_ia32_FucomppFnstsw = NULL;
8412 free_ir_op(op_ia32_GetEIP); op_ia32_GetEIP = NULL;
8413 free_ir_op(op_ia32_IDiv); op_ia32_IDiv = NULL;
8414 free_ir_op(op_ia32_IJmp); op_ia32_IJmp = NULL;
8415 free_ir_op(op_ia32_IMul); op_ia32_IMul = NULL;
8416 free_ir_op(op_ia32_IMul1OP); op_ia32_IMul1OP = NULL;
8417 free_ir_op(op_ia32_IMulImm); op_ia32_IMulImm = NULL;
8418 free_ir_op(op_ia32_Immediate); op_ia32_Immediate = NULL;
8420 free_ir_op(op_ia32_IncMem); op_ia32_IncMem = NULL;
8421 free_ir_op(op_ia32_Inport); op_ia32_Inport = NULL;
8424 free_ir_op(op_ia32_LdTls); op_ia32_LdTls = NULL;
8426 free_ir_op(op_ia32_Leave); op_ia32_Leave = NULL;
8427 free_ir_op(op_ia32_Load); op_ia32_Load = NULL;
8428 free_ir_op(op_ia32_Maxs); op_ia32_Maxs = NULL;
8429 free_ir_op(op_ia32_Mins); op_ia32_Mins = NULL;
8430 free_ir_op(op_ia32_Minus64); op_ia32_Minus64 = NULL;
8431 free_ir_op(op_ia32_Movd); op_ia32_Movd = NULL;
8433 free_ir_op(op_ia32_Muls); op_ia32_Muls = NULL;
8435 free_ir_op(op_ia32_NegMem); op_ia32_NegMem = NULL;
8436 free_ir_op(op_ia32_NoReg_FP); op_ia32_NoReg_FP = NULL;
8437 free_ir_op(op_ia32_NoReg_GP); op_ia32_NoReg_GP = NULL;
8438 free_ir_op(op_ia32_NoReg_XMM); op_ia32_NoReg_XMM = NULL;
8440 free_ir_op(op_ia32_NotMem); op_ia32_NotMem = NULL;
8442 free_ir_op(op_ia32_OrMem); op_ia32_OrMem = NULL;
8444 free_ir_op(op_ia32_Outport); op_ia32_Outport = NULL;
8446 free_ir_op(op_ia32_PopMem); op_ia32_PopMem = NULL;
8447 free_ir_op(op_ia32_Popcnt); op_ia32_Popcnt = NULL;
8448 free_ir_op(op_ia32_Prefetch); op_ia32_Prefetch = NULL;
8449 free_ir_op(op_ia32_PrefetchNTA); op_ia32_PrefetchNTA = NULL;
8450 free_ir_op(op_ia32_PrefetchT0); op_ia32_PrefetchT0 = NULL;
8451 free_ir_op(op_ia32_PrefetchT1); op_ia32_PrefetchT1 = NULL;
8452 free_ir_op(op_ia32_PrefetchT2); op_ia32_PrefetchT2 = NULL;
8453 free_ir_op(op_ia32_PrefetchW); op_ia32_PrefetchW = NULL;
8454 free_ir_op(op_ia32_Pslld); op_ia32_Pslld = NULL;
8455 free_ir_op(op_ia32_Psllq); op_ia32_Psllq = NULL;
8456 free_ir_op(op_ia32_Psrld); op_ia32_Psrld = NULL;
8457 free_ir_op(op_ia32_Push); op_ia32_Push = NULL;
8458 free_ir_op(op_ia32_PushEax); op_ia32_PushEax = NULL;
8461 free_ir_op(op_ia32_RolMem); op_ia32_RolMem = NULL;
8463 free_ir_op(op_ia32_RorMem); op_ia32_RorMem = NULL;
8464 free_ir_op(op_ia32_Sahf); op_ia32_Sahf = NULL;
8466 free_ir_op(op_ia32_SarMem); op_ia32_SarMem = NULL;
8468 free_ir_op(op_ia32_Sbb0); op_ia32_Sbb0 = NULL;
8469 free_ir_op(op_ia32_Setcc); op_ia32_Setcc = NULL;
8470 free_ir_op(op_ia32_SetccMem); op_ia32_SetccMem = NULL;
8472 free_ir_op(op_ia32_ShlD); op_ia32_ShlD = NULL;
8473 free_ir_op(op_ia32_ShlMem); op_ia32_ShlMem = NULL;
8475 free_ir_op(op_ia32_ShrD); op_ia32_ShrD = NULL;
8476 free_ir_op(op_ia32_ShrMem); op_ia32_ShrMem = NULL;
8478 free_ir_op(op_ia32_Store); op_ia32_Store = NULL;
8480 free_ir_op(op_ia32_SubMem); op_ia32_SubMem = NULL;
8481 free_ir_op(op_ia32_SubSP); op_ia32_SubSP = NULL;
8482 free_ir_op(op_ia32_Subs); op_ia32_Subs = NULL;
8483 free_ir_op(op_ia32_SwitchJmp); op_ia32_SwitchJmp = NULL;
8484 free_ir_op(op_ia32_Test); op_ia32_Test = NULL;
8486 free_ir_op(op_ia32_Ucomis); op_ia32_Ucomis = NULL;
8488 free_ir_op(op_ia32_Xor0); op_ia32_Xor0 = NULL;
8489 free_ir_op(op_ia32_XorHighLow); op_ia32_XorHighLow = NULL;
8490 free_ir_op(op_ia32_XorMem); op_ia32_XorMem = NULL;
8491 free_ir_op(op_ia32_Xorp); op_ia32_Xorp = NULL;
8492 free_ir_op(op_ia32_emms); op_ia32_emms = NULL;
8493 free_ir_op(op_ia32_fabs); op_ia32_fabs = NULL;
8494 free_ir_op(op_ia32_fadd); op_ia32_fadd = NULL;
8495 free_ir_op(op_ia32_fchs); op_ia32_fchs = NULL;
8496 free_ir_op(op_ia32_fdiv); op_ia32_fdiv = NULL;
8497 free_ir_op(op_ia32_fdup); op_ia32_fdup = NULL;
8498 free_ir_op(op_ia32_femms); op_ia32_femms = NULL;
8499 free_ir_op(op_ia32_ffreep); op_ia32_ffreep = NULL;
8500 free_ir_op(op_ia32_fild); op_ia32_fild = NULL;
8501 free_ir_op(op_ia32_fist); op_ia32_fist = NULL;
8502 free_ir_op(op_ia32_fistp); op_ia32_fistp = NULL;
8503 free_ir_op(op_ia32_fisttp); op_ia32_fisttp = NULL;
8505 free_ir_op(op_ia32_fld1); op_ia32_fld1 = NULL;
8506 free_ir_op(op_ia32_fldl2e); op_ia32_fldl2e = NULL;
8507 free_ir_op(op_ia32_fldl2t); op_ia32_fldl2t = NULL;
8508 free_ir_op(op_ia32_fldlg2); op_ia32_fldlg2 = NULL;
8509 free_ir_op(op_ia32_fldln2); op_ia32_fldln2 = NULL;
8510 free_ir_op(op_ia32_fldpi); op_ia32_fldpi = NULL;
8511 free_ir_op(op_ia32_fldz); op_ia32_fldz = NULL;
8512 free_ir_op(op_ia32_fmul); op_ia32_fmul = NULL;
8513 free_ir_op(op_ia32_fpop); op_ia32_fpop = NULL;
8515 free_ir_op(op_ia32_fstp); op_ia32_fstp = NULL;
8516 free_ir_op(op_ia32_fsub); op_ia32_fsub = NULL;
8517 free_ir_op(op_ia32_fxch); op_ia32_fxch = NULL;
8518 free_ir_op(op_ia32_l_Adc); op_ia32_l_Adc = NULL;
8519 free_ir_op(op_ia32_l_Add); op_ia32_l_Add = NULL;
8520 free_ir_op(op_ia32_l_FloattoLL); op_ia32_l_FloattoLL = NULL;
8521 free_ir_op(op_ia32_l_IMul); op_ia32_l_IMul = NULL;
8522 free_ir_op(op_ia32_l_LLtoFloat); op_ia32_l_LLtoFloat = NULL;
8523 free_ir_op(op_ia32_l_Minus64); op_ia32_l_Minus64 = NULL;
8524 free_ir_op(op_ia32_l_Mul); op_ia32_l_Mul = NULL;
8525 free_ir_op(op_ia32_l_Sbb); op_ia32_l_Sbb = NULL;
8526 free_ir_op(op_ia32_l_Sub); op_ia32_l_Sub = NULL;
8527 free_ir_op(op_ia32_xAllOnes); op_ia32_xAllOnes = NULL;
8528 free_ir_op(op_ia32_xLoad); op_ia32_xLoad = NULL;
8529 free_ir_op(op_ia32_xPzero); op_ia32_xPzero = NULL;
8530 free_ir_op(op_ia32_xStore); op_ia32_xStore = NULL;
8531 free_ir_op(op_ia32_xZero); op_ia32_xZero = NULL;
8532 free_ir_op(op_ia32_xxLoad); op_ia32_xxLoad = NULL;
8533 free_ir_op(op_ia32_xxStore); op_ia32_xxStore = NULL;
void set_op_dump(ir_op *op, dump_node_func func)
Sets dump callback func for operation op.
Set if the operation can change the control flow because of an exception.
node should be dumped outside any blocks
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.
void * get_irn_generic_attr(ir_node *node)
Returns a pointer to the node attributes.
ir_mode * mode_X
execution
unsigned get_next_ir_opcodes(unsigned num)
Returns the next free n IR opcode number, allows to register a bunch of user ops. ...
void set_op_attrs_equal(ir_op *op, node_attrs_equal_func func)
Sets attrs_equal callback func for operation op.
ir_op * new_ir_op(unsigned code, const char *name, op_pin_state p, irop_flags flags, op_arity opar, int op_index, size_t attr_size)
Creates a new IR operation.
Nodes of this opcode can be placed in any basic block.
struct ir_graph ir_graph
Procedure Graph.
ir_mode * mode_ANY
undefined mode
struct dbg_info dbg_info
Source Reference.
struct ir_node ir_node
Procedure Graph Node.
Forking control flow at this operation.
struct ir_mode ir_mode
SSA Value mode.
ir_node * new_ir_node(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode, int arity, ir_node *const *in)
IR node constructor.
This operation is a control flow operation.
unsigned get_irn_opcode(const ir_node *node)
Returns the opcode-enum of the node.
struct ir_switch_table ir_switch_table
A switch table mapping integer numbers to proj-numbers of a Switch-node.
This operation can be kept in End's keep-alive list.
struct ir_entity ir_entity
Entity.
ir_graph * get_irn_irg(const ir_node *node)
Returns the ir_graph this node belongs to.
Node must remain in this basic block if it can throw an exception, else can float.
ir_op * get_irn_op(const ir_node *node)
Returns the opcode struct of the node.
void ir_op_set_memory_index(ir_op *op, int memory_index)
Sets memory input of operation using memory.
struct ir_op ir_op
Node Opcode.
ir_node * optimize_node(ir_node *n)
Applies local optimizations to a single node.
void free_ir_op(ir_op *code)
Frees an ir operation.
Nodes must remain in this basic block.
This operation jumps to an unknown destination.
ir_mode * mode_T
tuple (none)
This operation has no arguments and is some kind of a constant.
void set_op_hash(ir_op *op, hash_func func)
Sets hash callback func for operation op.
void verify_new_node(ir_node *node)
If firm is built in debug mode, verify that a newly created node is fine.
void set_op_copy_attr(ir_op *op, copy_attr_func func)
Sets attribute copy callback func for operation op.
This operation has a memory input and may change the memory state.
Any other arity, either fixed for the opcode or known when creating the node.