]>
git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gas/testsuite/gas/ia64/regs.pl
2 print "\t.type _start,@","function\n";
5 print "// Fixed and stacked integer registers.\n";
6 for ($i = 1; $i < 128; ++$i) {
7 print "\t{ .mii; mov r$i = r0; nop.i 0; nop.i 0;; }\n";
11 print "// Alternate names for input registers\n";
12 print "\t.regstk 96, 0, 0, 0\n";
13 for ($i = 0; $i < 96; ++$i) {
14 print "\t{ .mii; mov in$i = r0; nop.i 0; nop.i 0;; }\n";
18 print "// Alternate names for output registers\n";
19 print "\t.regstk 0, 0, 96, 0\n";
20 for ($i = 0; $i < 96; ++$i) {
21 print "\t{ .mii; mov out$i = r0; nop.i 0; nop.i 0;; }\n";
25 print "// Alternate names for local registers\n";
26 print "\t.regstk 0, 96, 0, 0\n";
27 for ($i = 0; $i < 96; ++$i) {
28 print "\t{ .mii; mov loc$i = r0; nop.i 0; nop.i 0;; }\n";
32 print "// Return value registers\n";
33 for ($i = 0; $i < 4; ++$i) {
34 print "\t{ .mii; mov ret$i = r0; nop.i 0; nop.i 0;; }\n";
39 print "\tmov gp = r0\n";
40 print "\tmov sp = r0\n";
41 print "\tnop.i 0;; }\n\n";
43 print "// Floating point registers\n";
44 for ($i = 2; $i < 128; ++$i) {
45 print "\t{ .mfi; mov f$i = f0 ;; }\n";
49 print "// Floating point argument registers\n";
50 for ($i = 0; $i < 8; ++$i) {
51 print "\t{ .mfi; mov farg$i = f1 ;; }\n";
55 print "// Floating point return value registers\n";
56 for ($i = 0; $i < 8; ++$i) {
57 print "\t{ .mfi; mov fret$i = f1 ;; }\n";
61 print "// Predicate registers\n";
62 for ($i = 0; $i < 64; ++$i) {
63 print "\t{ .mii; (p$i)\tmov r", $i+1, " = r0; nop.i 0; nop.i 0;; }\n";
67 print "// Predicates as a unit\n";
68 print "\t{ .mmi; nop.m 0; mov r1 = pr ;; }\n";
69 print "//\tmov r2 = pr.rot\n";
72 print "// Branch registers.\n";
73 for ($i = 0; $i < 8; ++$i) {
74 print "\t{ .mmi; mov b$i = r0;; }\n";
78 print "\t{ .mmi; mov rp = r0;; }\n";
81 print "// Application registers\n";
82 @reserved = ( 8..15, 20, 22..23, 31, 33..35, 37..39, 41..47, 67..111 );
84 foreach $i (@reserved) {
87 for ($i = 0; $i < 128; ++$i) {
88 print "//" if $reserved{$i};
89 print "\t{ .mmi; nop.m 0; mov r1 = ar$i ;; }";
90 print "\t\t// reserved" if $reserved{$i};
95 print "// Application registers by name\n";
96 for ($i = 0; $i < 8; ++$i) {
97 print "\t{ .mmi; nop.m 0; mov r1 = ar.k$i ;;}\n";
100 @regs = ( "rsc", "bsp", "bspstore", "rnat", "ccv", "unat", "fpsr", "itc",
103 print "\t{ .mmi; nop.m 0; mov r1 = ar.$i ;; }\n";
107 print "// Control registers\n";
108 @reserved = ( 3..7, 10..15, 18, 26..63, 75..79, 82..127 );
110 foreach $i (@reserved) {
113 for ($i = 0; $i < 128; ++$i) {
114 print "//" if $reserved{$i};
115 print "\t{ .mfb; mov r1 = cr$i ;; }";
116 print "\t\t// reserved" if $reserved{$i};
121 print "// Control registers by name\n";
122 @regs = ( "dcr", "itm", "iva", "pta", "ipsr", "isr", "iip",
123 "iipa", "ifs", "iim", "iha", "lid", "ivr",
124 "tpr", "eoi", "irr0", "irr1", "irr2", "irr3", "itv", "pmv",
125 "lrr0", "lrr1", "cmcv" );
126 # ias doesn't accept these, despite documentation to the contrary.
127 # push @regs, "ida", "idtr", "iitr"
129 print "\t{ .mfb; mov r1 = cr.$i ;; }\n";
134 print "// Other registers\n";
135 print "\t{ .mfb; mov r1 = psr ;; }\n";
136 print "//\t{ .mfb; mov r1 = psr.l ;; }\n";
137 print "\t{ .mfb; mov r1 = psr.um ;; }\n";
138 print "\t{ .mmi; mov r1 = ip ;; }\n";
141 print "// Indirect register files\n";
142 @regs = ("pmc", "pmd", "pkr", "rr", "ibr", "dbr", "CPUID", "cpuid");
143 # ias doesn't accept these, despite documentation to the contrary.
144 # push @regs, "itr", "dtr";
147 print "\tmov r1 = ${i}[r3]\n";
148 print "\tmov r2 = ${i}[r4]\n";
149 print "\tnop.i 0;; }\n";