3 * @brief The generated interface for the register allocator.
4 * Contains register classes and types and register constraints
5 * for all nodes where constraints were given in spec.
6 * @note DO NOT EDIT THIS FILE, your changes will be lost.
7 * Edit libfirm/ir/be/sparc/sparc_spec.pl instead.
8 * created by: libfirm/ir/be/scripts/generate_regalloc_if.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc
9 * $date Tue Dec 15 15:19:15 2009
13 #include "gen_sparc_regalloc_if.h"
14 #include "gen_sparc_machine.h"
15 #include "bearch_sparc_t.h"
18 static const arch_register_req_t sparc_class_reg_req_flags;
19 static const arch_register_req_t sparc_class_reg_req_gp;
20 static const arch_register_req_t sparc_class_reg_req_fp;
22 arch_register_class_t sparc_reg_classes[] = {
23 { 0, "sparc_flags", N_sparc_flags_REGS, NULL, sparc_flags_regs, arch_register_class_flag_manual_ra, &sparc_class_reg_req_flags },
24 { 1, "sparc_gp", N_sparc_gp_REGS, NULL, sparc_gp_regs, 0, &sparc_class_reg_req_gp },
25 { 2, "sparc_fp", N_sparc_fp_REGS, NULL, sparc_fp_regs, 0, &sparc_class_reg_req_fp }
28 static const arch_register_req_t sparc_class_reg_req_flags = {
29 arch_register_req_type_normal,
30 &sparc_reg_classes[CLASS_sparc_flags],
35 static const unsigned sparc_limited_flags_y [] = { (1 << REG_Y) };
36 static const arch_register_req_t sparc_single_reg_req_flags_y = {
37 arch_register_req_type_limited,
38 &sparc_reg_classes[CLASS_sparc_flags],
39 sparc_limited_flags_y,
43 static const arch_register_req_t sparc_class_reg_req_gp = {
44 arch_register_req_type_normal,
45 &sparc_reg_classes[CLASS_sparc_gp],
50 static const unsigned sparc_limited_gp_g0 [] = { (1 << REG_G0), 0 };
51 static const arch_register_req_t sparc_single_reg_req_gp_g0 = {
52 arch_register_req_type_limited,
53 &sparc_reg_classes[CLASS_sparc_gp],
58 static const unsigned sparc_limited_gp_g1 [] = { (1 << REG_G1), 0 };
59 static const arch_register_req_t sparc_single_reg_req_gp_g1 = {
60 arch_register_req_type_limited,
61 &sparc_reg_classes[CLASS_sparc_gp],
66 static const unsigned sparc_limited_gp_g2 [] = { (1 << REG_G2), 0 };
67 static const arch_register_req_t sparc_single_reg_req_gp_g2 = {
68 arch_register_req_type_limited,
69 &sparc_reg_classes[CLASS_sparc_gp],
74 static const unsigned sparc_limited_gp_g3 [] = { (1 << REG_G3), 0 };
75 static const arch_register_req_t sparc_single_reg_req_gp_g3 = {
76 arch_register_req_type_limited,
77 &sparc_reg_classes[CLASS_sparc_gp],
82 static const unsigned sparc_limited_gp_g4 [] = { (1 << REG_G4), 0 };
83 static const arch_register_req_t sparc_single_reg_req_gp_g4 = {
84 arch_register_req_type_limited,
85 &sparc_reg_classes[CLASS_sparc_gp],
90 static const unsigned sparc_limited_gp_g5 [] = { (1 << REG_G5), 0 };
91 static const arch_register_req_t sparc_single_reg_req_gp_g5 = {
92 arch_register_req_type_limited,
93 &sparc_reg_classes[CLASS_sparc_gp],
98 static const unsigned sparc_limited_gp_g6 [] = { (1 << REG_G6), 0 };
99 static const arch_register_req_t sparc_single_reg_req_gp_g6 = {
100 arch_register_req_type_limited,
101 &sparc_reg_classes[CLASS_sparc_gp],
106 static const unsigned sparc_limited_gp_g7 [] = { (1 << REG_G7), 0 };
107 static const arch_register_req_t sparc_single_reg_req_gp_g7 = {
108 arch_register_req_type_limited,
109 &sparc_reg_classes[CLASS_sparc_gp],
114 static const unsigned sparc_limited_gp_o0 [] = { (1 << REG_O0), 0 };
115 static const arch_register_req_t sparc_single_reg_req_gp_o0 = {
116 arch_register_req_type_limited,
117 &sparc_reg_classes[CLASS_sparc_gp],
122 static const unsigned sparc_limited_gp_o1 [] = { (1 << REG_O1), 0 };
123 static const arch_register_req_t sparc_single_reg_req_gp_o1 = {
124 arch_register_req_type_limited,
125 &sparc_reg_classes[CLASS_sparc_gp],
130 static const unsigned sparc_limited_gp_o2 [] = { (1 << REG_O2), 0 };
131 static const arch_register_req_t sparc_single_reg_req_gp_o2 = {
132 arch_register_req_type_limited,
133 &sparc_reg_classes[CLASS_sparc_gp],
138 static const unsigned sparc_limited_gp_o3 [] = { (1 << REG_O3), 0 };
139 static const arch_register_req_t sparc_single_reg_req_gp_o3 = {
140 arch_register_req_type_limited,
141 &sparc_reg_classes[CLASS_sparc_gp],
146 static const unsigned sparc_limited_gp_o4 [] = { (1 << REG_O4), 0 };
147 static const arch_register_req_t sparc_single_reg_req_gp_o4 = {
148 arch_register_req_type_limited,
149 &sparc_reg_classes[CLASS_sparc_gp],
154 static const unsigned sparc_limited_gp_o5 [] = { (1 << REG_O5), 0 };
155 static const arch_register_req_t sparc_single_reg_req_gp_o5 = {
156 arch_register_req_type_limited,
157 &sparc_reg_classes[CLASS_sparc_gp],
162 static const unsigned sparc_limited_gp_sp [] = { (1 << REG_SP), 0 };
163 static const arch_register_req_t sparc_single_reg_req_gp_sp = {
164 arch_register_req_type_limited,
165 &sparc_reg_classes[CLASS_sparc_gp],
170 static const unsigned sparc_limited_gp_o7 [] = { (1 << REG_O7), 0 };
171 static const arch_register_req_t sparc_single_reg_req_gp_o7 = {
172 arch_register_req_type_limited,
173 &sparc_reg_classes[CLASS_sparc_gp],
178 static const unsigned sparc_limited_gp_l0 [] = { (1 << REG_L0), 0 };
179 static const arch_register_req_t sparc_single_reg_req_gp_l0 = {
180 arch_register_req_type_limited,
181 &sparc_reg_classes[CLASS_sparc_gp],
186 static const unsigned sparc_limited_gp_l1 [] = { (1 << REG_L1), 0 };
187 static const arch_register_req_t sparc_single_reg_req_gp_l1 = {
188 arch_register_req_type_limited,
189 &sparc_reg_classes[CLASS_sparc_gp],
194 static const unsigned sparc_limited_gp_l2 [] = { (1 << REG_L2), 0 };
195 static const arch_register_req_t sparc_single_reg_req_gp_l2 = {
196 arch_register_req_type_limited,
197 &sparc_reg_classes[CLASS_sparc_gp],
202 static const unsigned sparc_limited_gp_l3 [] = { (1 << REG_L3), 0 };
203 static const arch_register_req_t sparc_single_reg_req_gp_l3 = {
204 arch_register_req_type_limited,
205 &sparc_reg_classes[CLASS_sparc_gp],
210 static const unsigned sparc_limited_gp_l4 [] = { (1 << REG_L4), 0 };
211 static const arch_register_req_t sparc_single_reg_req_gp_l4 = {
212 arch_register_req_type_limited,
213 &sparc_reg_classes[CLASS_sparc_gp],
218 static const unsigned sparc_limited_gp_l5 [] = { (1 << REG_L5), 0 };
219 static const arch_register_req_t sparc_single_reg_req_gp_l5 = {
220 arch_register_req_type_limited,
221 &sparc_reg_classes[CLASS_sparc_gp],
226 static const unsigned sparc_limited_gp_l6 [] = { (1 << REG_L6), 0 };
227 static const arch_register_req_t sparc_single_reg_req_gp_l6 = {
228 arch_register_req_type_limited,
229 &sparc_reg_classes[CLASS_sparc_gp],
234 static const unsigned sparc_limited_gp_l7 [] = { (1 << REG_L7), 0 };
235 static const arch_register_req_t sparc_single_reg_req_gp_l7 = {
236 arch_register_req_type_limited,
237 &sparc_reg_classes[CLASS_sparc_gp],
242 static const unsigned sparc_limited_gp_i0 [] = { (1 << REG_I0), 0 };
243 static const arch_register_req_t sparc_single_reg_req_gp_i0 = {
244 arch_register_req_type_limited,
245 &sparc_reg_classes[CLASS_sparc_gp],
250 static const unsigned sparc_limited_gp_i1 [] = { (1 << REG_I1), 0 };
251 static const arch_register_req_t sparc_single_reg_req_gp_i1 = {
252 arch_register_req_type_limited,
253 &sparc_reg_classes[CLASS_sparc_gp],
258 static const unsigned sparc_limited_gp_i2 [] = { (1 << REG_I2), 0 };
259 static const arch_register_req_t sparc_single_reg_req_gp_i2 = {
260 arch_register_req_type_limited,
261 &sparc_reg_classes[CLASS_sparc_gp],
266 static const unsigned sparc_limited_gp_i3 [] = { (1 << REG_I3), 0 };
267 static const arch_register_req_t sparc_single_reg_req_gp_i3 = {
268 arch_register_req_type_limited,
269 &sparc_reg_classes[CLASS_sparc_gp],
274 static const unsigned sparc_limited_gp_i4 [] = { (1 << REG_I4), 0 };
275 static const arch_register_req_t sparc_single_reg_req_gp_i4 = {
276 arch_register_req_type_limited,
277 &sparc_reg_classes[CLASS_sparc_gp],
282 static const unsigned sparc_limited_gp_i5 [] = { (1 << REG_I5), 0 };
283 static const arch_register_req_t sparc_single_reg_req_gp_i5 = {
284 arch_register_req_type_limited,
285 &sparc_reg_classes[CLASS_sparc_gp],
290 static const unsigned sparc_limited_gp_fp [] = { (1 << REG_FP), 0 };
291 static const arch_register_req_t sparc_single_reg_req_gp_fp = {
292 arch_register_req_type_limited,
293 &sparc_reg_classes[CLASS_sparc_gp],
298 static const unsigned sparc_limited_gp_i7 [] = { (1 << REG_I7), 0 };
299 static const arch_register_req_t sparc_single_reg_req_gp_i7 = {
300 arch_register_req_type_limited,
301 &sparc_reg_classes[CLASS_sparc_gp],
306 static const arch_register_req_t sparc_class_reg_req_fp = {
307 arch_register_req_type_normal,
308 &sparc_reg_classes[CLASS_sparc_fp],
313 static const unsigned sparc_limited_fp_f0 [] = { (1 << REG_F0), 0 };
314 static const arch_register_req_t sparc_single_reg_req_fp_f0 = {
315 arch_register_req_type_limited,
316 &sparc_reg_classes[CLASS_sparc_fp],
321 static const unsigned sparc_limited_fp_f1 [] = { (1 << REG_F1), 0 };
322 static const arch_register_req_t sparc_single_reg_req_fp_f1 = {
323 arch_register_req_type_limited,
324 &sparc_reg_classes[CLASS_sparc_fp],
329 static const unsigned sparc_limited_fp_f2 [] = { (1 << REG_F2), 0 };
330 static const arch_register_req_t sparc_single_reg_req_fp_f2 = {
331 arch_register_req_type_limited,
332 &sparc_reg_classes[CLASS_sparc_fp],
337 static const unsigned sparc_limited_fp_f3 [] = { (1 << REG_F3), 0 };
338 static const arch_register_req_t sparc_single_reg_req_fp_f3 = {
339 arch_register_req_type_limited,
340 &sparc_reg_classes[CLASS_sparc_fp],
345 static const unsigned sparc_limited_fp_f4 [] = { (1 << REG_F4), 0 };
346 static const arch_register_req_t sparc_single_reg_req_fp_f4 = {
347 arch_register_req_type_limited,
348 &sparc_reg_classes[CLASS_sparc_fp],
353 static const unsigned sparc_limited_fp_f5 [] = { (1 << REG_F5), 0 };
354 static const arch_register_req_t sparc_single_reg_req_fp_f5 = {
355 arch_register_req_type_limited,
356 &sparc_reg_classes[CLASS_sparc_fp],
361 static const unsigned sparc_limited_fp_f6 [] = { (1 << REG_F6), 0 };
362 static const arch_register_req_t sparc_single_reg_req_fp_f6 = {
363 arch_register_req_type_limited,
364 &sparc_reg_classes[CLASS_sparc_fp],
369 static const unsigned sparc_limited_fp_f7 [] = { (1 << REG_F7), 0 };
370 static const arch_register_req_t sparc_single_reg_req_fp_f7 = {
371 arch_register_req_type_limited,
372 &sparc_reg_classes[CLASS_sparc_fp],
377 static const unsigned sparc_limited_fp_f8 [] = { (1 << REG_F8), 0 };
378 static const arch_register_req_t sparc_single_reg_req_fp_f8 = {
379 arch_register_req_type_limited,
380 &sparc_reg_classes[CLASS_sparc_fp],
385 static const unsigned sparc_limited_fp_f9 [] = { (1 << REG_F9), 0 };
386 static const arch_register_req_t sparc_single_reg_req_fp_f9 = {
387 arch_register_req_type_limited,
388 &sparc_reg_classes[CLASS_sparc_fp],
393 static const unsigned sparc_limited_fp_f10 [] = { (1 << REG_F10), 0 };
394 static const arch_register_req_t sparc_single_reg_req_fp_f10 = {
395 arch_register_req_type_limited,
396 &sparc_reg_classes[CLASS_sparc_fp],
397 sparc_limited_fp_f10,
401 static const unsigned sparc_limited_fp_f11 [] = { (1 << REG_F11), 0 };
402 static const arch_register_req_t sparc_single_reg_req_fp_f11 = {
403 arch_register_req_type_limited,
404 &sparc_reg_classes[CLASS_sparc_fp],
405 sparc_limited_fp_f11,
409 static const unsigned sparc_limited_fp_f12 [] = { (1 << REG_F12), 0 };
410 static const arch_register_req_t sparc_single_reg_req_fp_f12 = {
411 arch_register_req_type_limited,
412 &sparc_reg_classes[CLASS_sparc_fp],
413 sparc_limited_fp_f12,
417 static const unsigned sparc_limited_fp_f13 [] = { (1 << REG_F13), 0 };
418 static const arch_register_req_t sparc_single_reg_req_fp_f13 = {
419 arch_register_req_type_limited,
420 &sparc_reg_classes[CLASS_sparc_fp],
421 sparc_limited_fp_f13,
425 static const unsigned sparc_limited_fp_f14 [] = { (1 << REG_F14), 0 };
426 static const arch_register_req_t sparc_single_reg_req_fp_f14 = {
427 arch_register_req_type_limited,
428 &sparc_reg_classes[CLASS_sparc_fp],
429 sparc_limited_fp_f14,
433 static const unsigned sparc_limited_fp_f15 [] = { (1 << REG_F15), 0 };
434 static const arch_register_req_t sparc_single_reg_req_fp_f15 = {
435 arch_register_req_type_limited,
436 &sparc_reg_classes[CLASS_sparc_fp],
437 sparc_limited_fp_f15,
441 static const unsigned sparc_limited_fp_f16 [] = { (1 << REG_F16), 0 };
442 static const arch_register_req_t sparc_single_reg_req_fp_f16 = {
443 arch_register_req_type_limited,
444 &sparc_reg_classes[CLASS_sparc_fp],
445 sparc_limited_fp_f16,
449 static const unsigned sparc_limited_fp_f17 [] = { (1 << REG_F17), 0 };
450 static const arch_register_req_t sparc_single_reg_req_fp_f17 = {
451 arch_register_req_type_limited,
452 &sparc_reg_classes[CLASS_sparc_fp],
453 sparc_limited_fp_f17,
457 static const unsigned sparc_limited_fp_f18 [] = { (1 << REG_F18), 0 };
458 static const arch_register_req_t sparc_single_reg_req_fp_f18 = {
459 arch_register_req_type_limited,
460 &sparc_reg_classes[CLASS_sparc_fp],
461 sparc_limited_fp_f18,
465 static const unsigned sparc_limited_fp_f19 [] = { (1 << REG_F19), 0 };
466 static const arch_register_req_t sparc_single_reg_req_fp_f19 = {
467 arch_register_req_type_limited,
468 &sparc_reg_classes[CLASS_sparc_fp],
469 sparc_limited_fp_f19,
473 static const unsigned sparc_limited_fp_f20 [] = { (1 << REG_F20), 0 };
474 static const arch_register_req_t sparc_single_reg_req_fp_f20 = {
475 arch_register_req_type_limited,
476 &sparc_reg_classes[CLASS_sparc_fp],
477 sparc_limited_fp_f20,
481 static const unsigned sparc_limited_fp_f21 [] = { (1 << REG_F21), 0 };
482 static const arch_register_req_t sparc_single_reg_req_fp_f21 = {
483 arch_register_req_type_limited,
484 &sparc_reg_classes[CLASS_sparc_fp],
485 sparc_limited_fp_f21,
489 static const unsigned sparc_limited_fp_f22 [] = { (1 << REG_F22), 0 };
490 static const arch_register_req_t sparc_single_reg_req_fp_f22 = {
491 arch_register_req_type_limited,
492 &sparc_reg_classes[CLASS_sparc_fp],
493 sparc_limited_fp_f22,
497 static const unsigned sparc_limited_fp_f23 [] = { (1 << REG_F23), 0 };
498 static const arch_register_req_t sparc_single_reg_req_fp_f23 = {
499 arch_register_req_type_limited,
500 &sparc_reg_classes[CLASS_sparc_fp],
501 sparc_limited_fp_f23,
505 static const unsigned sparc_limited_fp_f24 [] = { (1 << REG_F24), 0 };
506 static const arch_register_req_t sparc_single_reg_req_fp_f24 = {
507 arch_register_req_type_limited,
508 &sparc_reg_classes[CLASS_sparc_fp],
509 sparc_limited_fp_f24,
513 static const unsigned sparc_limited_fp_f25 [] = { (1 << REG_F25), 0 };
514 static const arch_register_req_t sparc_single_reg_req_fp_f25 = {
515 arch_register_req_type_limited,
516 &sparc_reg_classes[CLASS_sparc_fp],
517 sparc_limited_fp_f25,
521 static const unsigned sparc_limited_fp_f26 [] = { (1 << REG_F26), 0 };
522 static const arch_register_req_t sparc_single_reg_req_fp_f26 = {
523 arch_register_req_type_limited,
524 &sparc_reg_classes[CLASS_sparc_fp],
525 sparc_limited_fp_f26,
529 static const unsigned sparc_limited_fp_f27 [] = { (1 << REG_F27), 0 };
530 static const arch_register_req_t sparc_single_reg_req_fp_f27 = {
531 arch_register_req_type_limited,
532 &sparc_reg_classes[CLASS_sparc_fp],
533 sparc_limited_fp_f27,
537 static const unsigned sparc_limited_fp_f28 [] = { (1 << REG_F28), 0 };
538 static const arch_register_req_t sparc_single_reg_req_fp_f28 = {
539 arch_register_req_type_limited,
540 &sparc_reg_classes[CLASS_sparc_fp],
541 sparc_limited_fp_f28,
545 static const unsigned sparc_limited_fp_f29 [] = { (1 << REG_F29), 0 };
546 static const arch_register_req_t sparc_single_reg_req_fp_f29 = {
547 arch_register_req_type_limited,
548 &sparc_reg_classes[CLASS_sparc_fp],
549 sparc_limited_fp_f29,
553 static const unsigned sparc_limited_fp_f30 [] = { (1 << REG_F30), 0 };
554 static const arch_register_req_t sparc_single_reg_req_fp_f30 = {
555 arch_register_req_type_limited,
556 &sparc_reg_classes[CLASS_sparc_fp],
557 sparc_limited_fp_f30,
561 static const unsigned sparc_limited_fp_f31 [] = { (1 << REG_F31), 0 };
562 static const arch_register_req_t sparc_single_reg_req_fp_f31 = {
563 arch_register_req_type_limited,
564 &sparc_reg_classes[CLASS_sparc_fp],
565 sparc_limited_fp_f31,
570 const arch_register_t sparc_flags_regs[N_sparc_flags_REGS] = {
573 &sparc_reg_classes[CLASS_sparc_flags],
575 arch_register_type_ignore,
576 &sparc_single_reg_req_flags_y
579 const arch_register_t sparc_gp_regs[N_sparc_gp_REGS] = {
582 &sparc_reg_classes[CLASS_sparc_gp],
584 arch_register_type_ignore,
585 &sparc_single_reg_req_gp_g0
589 &sparc_reg_classes[CLASS_sparc_gp],
591 arch_register_type_caller_save,
592 &sparc_single_reg_req_gp_g1
596 &sparc_reg_classes[CLASS_sparc_gp],
598 arch_register_type_caller_save,
599 &sparc_single_reg_req_gp_g2
603 &sparc_reg_classes[CLASS_sparc_gp],
605 arch_register_type_caller_save,
606 &sparc_single_reg_req_gp_g3
610 &sparc_reg_classes[CLASS_sparc_gp],
612 arch_register_type_caller_save,
613 &sparc_single_reg_req_gp_g4
617 &sparc_reg_classes[CLASS_sparc_gp],
619 arch_register_type_caller_save,
620 &sparc_single_reg_req_gp_g5
624 &sparc_reg_classes[CLASS_sparc_gp],
626 arch_register_type_caller_save,
627 &sparc_single_reg_req_gp_g6
631 &sparc_reg_classes[CLASS_sparc_gp],
633 arch_register_type_callee_save,
634 &sparc_single_reg_req_gp_g7
638 &sparc_reg_classes[CLASS_sparc_gp],
640 arch_register_type_caller_save,
641 &sparc_single_reg_req_gp_o0
645 &sparc_reg_classes[CLASS_sparc_gp],
647 arch_register_type_caller_save,
648 &sparc_single_reg_req_gp_o1
652 &sparc_reg_classes[CLASS_sparc_gp],
654 arch_register_type_caller_save,
655 &sparc_single_reg_req_gp_o2
659 &sparc_reg_classes[CLASS_sparc_gp],
661 arch_register_type_caller_save,
662 &sparc_single_reg_req_gp_o3
666 &sparc_reg_classes[CLASS_sparc_gp],
668 arch_register_type_caller_save,
669 &sparc_single_reg_req_gp_o4
673 &sparc_reg_classes[CLASS_sparc_gp],
675 arch_register_type_caller_save,
676 &sparc_single_reg_req_gp_o5
680 &sparc_reg_classes[CLASS_sparc_gp],
682 arch_register_type_ignore,
683 &sparc_single_reg_req_gp_sp
687 &sparc_reg_classes[CLASS_sparc_gp],
689 arch_register_type_caller_save,
690 &sparc_single_reg_req_gp_o7
694 &sparc_reg_classes[CLASS_sparc_gp],
696 arch_register_type_callee_save,
697 &sparc_single_reg_req_gp_l0
701 &sparc_reg_classes[CLASS_sparc_gp],
703 arch_register_type_callee_save,
704 &sparc_single_reg_req_gp_l1
708 &sparc_reg_classes[CLASS_sparc_gp],
710 arch_register_type_callee_save,
711 &sparc_single_reg_req_gp_l2
715 &sparc_reg_classes[CLASS_sparc_gp],
717 arch_register_type_callee_save,
718 &sparc_single_reg_req_gp_l3
722 &sparc_reg_classes[CLASS_sparc_gp],
724 arch_register_type_callee_save,
725 &sparc_single_reg_req_gp_l4
729 &sparc_reg_classes[CLASS_sparc_gp],
731 arch_register_type_callee_save,
732 &sparc_single_reg_req_gp_l5
736 &sparc_reg_classes[CLASS_sparc_gp],
738 arch_register_type_callee_save,
739 &sparc_single_reg_req_gp_l6
743 &sparc_reg_classes[CLASS_sparc_gp],
745 arch_register_type_callee_save,
746 &sparc_single_reg_req_gp_l7
750 &sparc_reg_classes[CLASS_sparc_gp],
752 arch_register_type_callee_save,
753 &sparc_single_reg_req_gp_i0
757 &sparc_reg_classes[CLASS_sparc_gp],
759 arch_register_type_callee_save,
760 &sparc_single_reg_req_gp_i1
764 &sparc_reg_classes[CLASS_sparc_gp],
766 arch_register_type_callee_save,
767 &sparc_single_reg_req_gp_i2
771 &sparc_reg_classes[CLASS_sparc_gp],
773 arch_register_type_callee_save,
774 &sparc_single_reg_req_gp_i3
778 &sparc_reg_classes[CLASS_sparc_gp],
780 arch_register_type_callee_save,
781 &sparc_single_reg_req_gp_i4
785 &sparc_reg_classes[CLASS_sparc_gp],
787 arch_register_type_callee_save,
788 &sparc_single_reg_req_gp_i5
792 &sparc_reg_classes[CLASS_sparc_gp],
794 arch_register_type_ignore,
795 &sparc_single_reg_req_gp_fp
799 &sparc_reg_classes[CLASS_sparc_gp],
801 arch_register_type_callee_save,
802 &sparc_single_reg_req_gp_i7
805 const arch_register_t sparc_fp_regs[N_sparc_fp_REGS] = {
808 &sparc_reg_classes[CLASS_sparc_fp],
810 arch_register_type_caller_save,
811 &sparc_single_reg_req_fp_f0
815 &sparc_reg_classes[CLASS_sparc_fp],
817 arch_register_type_caller_save,
818 &sparc_single_reg_req_fp_f1
822 &sparc_reg_classes[CLASS_sparc_fp],
824 arch_register_type_caller_save,
825 &sparc_single_reg_req_fp_f2
829 &sparc_reg_classes[CLASS_sparc_fp],
831 arch_register_type_caller_save,
832 &sparc_single_reg_req_fp_f3
836 &sparc_reg_classes[CLASS_sparc_fp],
838 arch_register_type_caller_save,
839 &sparc_single_reg_req_fp_f4
843 &sparc_reg_classes[CLASS_sparc_fp],
845 arch_register_type_caller_save,
846 &sparc_single_reg_req_fp_f5
850 &sparc_reg_classes[CLASS_sparc_fp],
852 arch_register_type_caller_save,
853 &sparc_single_reg_req_fp_f6
857 &sparc_reg_classes[CLASS_sparc_fp],
859 arch_register_type_caller_save,
860 &sparc_single_reg_req_fp_f7
864 &sparc_reg_classes[CLASS_sparc_fp],
866 arch_register_type_caller_save,
867 &sparc_single_reg_req_fp_f8
871 &sparc_reg_classes[CLASS_sparc_fp],
873 arch_register_type_caller_save,
874 &sparc_single_reg_req_fp_f9
878 &sparc_reg_classes[CLASS_sparc_fp],
880 arch_register_type_caller_save,
881 &sparc_single_reg_req_fp_f10
885 &sparc_reg_classes[CLASS_sparc_fp],
887 arch_register_type_caller_save,
888 &sparc_single_reg_req_fp_f11
892 &sparc_reg_classes[CLASS_sparc_fp],
894 arch_register_type_caller_save,
895 &sparc_single_reg_req_fp_f12
899 &sparc_reg_classes[CLASS_sparc_fp],
901 arch_register_type_caller_save,
902 &sparc_single_reg_req_fp_f13
906 &sparc_reg_classes[CLASS_sparc_fp],
908 arch_register_type_caller_save,
909 &sparc_single_reg_req_fp_f14
913 &sparc_reg_classes[CLASS_sparc_fp],
915 arch_register_type_caller_save,
916 &sparc_single_reg_req_fp_f15
920 &sparc_reg_classes[CLASS_sparc_fp],
922 arch_register_type_caller_save,
923 &sparc_single_reg_req_fp_f16
927 &sparc_reg_classes[CLASS_sparc_fp],
929 arch_register_type_caller_save,
930 &sparc_single_reg_req_fp_f17
934 &sparc_reg_classes[CLASS_sparc_fp],
936 arch_register_type_caller_save,
937 &sparc_single_reg_req_fp_f18
941 &sparc_reg_classes[CLASS_sparc_fp],
943 arch_register_type_caller_save,
944 &sparc_single_reg_req_fp_f19
948 &sparc_reg_classes[CLASS_sparc_fp],
950 arch_register_type_caller_save,
951 &sparc_single_reg_req_fp_f20
955 &sparc_reg_classes[CLASS_sparc_fp],
957 arch_register_type_caller_save,
958 &sparc_single_reg_req_fp_f21
962 &sparc_reg_classes[CLASS_sparc_fp],
964 arch_register_type_caller_save,
965 &sparc_single_reg_req_fp_f22
969 &sparc_reg_classes[CLASS_sparc_fp],
971 arch_register_type_caller_save,
972 &sparc_single_reg_req_fp_f23
976 &sparc_reg_classes[CLASS_sparc_fp],
978 arch_register_type_caller_save,
979 &sparc_single_reg_req_fp_f24
983 &sparc_reg_classes[CLASS_sparc_fp],
985 arch_register_type_caller_save,
986 &sparc_single_reg_req_fp_f25
990 &sparc_reg_classes[CLASS_sparc_fp],
992 arch_register_type_caller_save,
993 &sparc_single_reg_req_fp_f26
997 &sparc_reg_classes[CLASS_sparc_fp],
999 arch_register_type_caller_save,
1000 &sparc_single_reg_req_fp_f27
1004 &sparc_reg_classes[CLASS_sparc_fp],
1006 arch_register_type_caller_save,
1007 &sparc_single_reg_req_fp_f28
1011 &sparc_reg_classes[CLASS_sparc_fp],
1013 arch_register_type_caller_save,
1014 &sparc_single_reg_req_fp_f29
1018 &sparc_reg_classes[CLASS_sparc_fp],
1020 arch_register_type_caller_save,
1021 &sparc_single_reg_req_fp_f30
1025 &sparc_reg_classes[CLASS_sparc_fp],
1027 arch_register_type_caller_save,
1028 &sparc_single_reg_req_fp_f31
1033 void sparc_register_init(void)
1035 sparc_reg_classes[CLASS_sparc_flags].mode = mode_Bu;
1036 sparc_reg_classes[CLASS_sparc_gp].mode = mode_Iu;
1037 sparc_reg_classes[CLASS_sparc_fp].mode = mode_D;