* be moved from register to register or spilt).
*/
- r12 int volatile;
- r11 int volatile;
- r10 int volatile;
- r9 int volatile;
- r8 int volatile;
- r7 int volatile;
- r6 int volatile;
- r5 int volatile;
- r4 int volatile;
- r3 int volatile iret;
-
- r31 int;
- r30 int;
- r29 int;
- r28 int;
- r27 int;
- r26 int;
- r25 int;
- r24 int;
- r23 int;
- r22 int;
- r21 int;
- r20 int;
- r19 int;
- r18 int;
- r17 int;
- r16 int;
- r15 int;
- r14 int;
- r13 int;
-
- r11r12 named("r11", "r12") aliases(r11, r12) long volatile;
- r9r10 named("r9", "r10") aliases(r9, r10) long volatile;
- r7r8 named("r7", "r8") aliases(r7, r8) long volatile;
- r5r6 named("r5", "r6") aliases(r6, r6) long volatile;
- r3r4 named("r3", "r4") aliases(r3, r4) long volatile lret;
-
- r29r30 named("r29", "r30") aliases(r29, r30) long;
- r27r28 named("r27", "r28") aliases(r27, r28) long;
- r25r26 named("r25", "r26") aliases(r25, r26) long;
- r23r24 named("r23", "r24") aliases(r23, r24) long;
- r21r22 named("r21", "r22") aliases(r21, r22) long;
- r19r20 named("r19", "r20") aliases(r19, r20) long;
- r17r18 named("r17", "r18") aliases(r17, r18) long;
- r15r16 named("r15", "r16") aliases(r15, r16) long;
- r13r14 named("r13", "r14") aliases(r13, r14) long;
-
- f14 float volatile;
- f13 float volatile;
- f12 float volatile;
- f11 float volatile;
- f10 float volatile;
- f9 float volatile;
- f8 float volatile;
- f7 float volatile;
- f6 float volatile;
- f5 float volatile;
- f4 float volatile;
- f3 float volatile fret;
- f2 float volatile;
- f1 float volatile;
- f0 float volatile;
-
- f31 float;
- f30 float;
- f29 float;
- f28 float;
- f27 float;
- f26 float;
- f25 float;
- f24 float;
- f23 float;
- f22 float;
- f21 float;
- f20 float;
- f19 float;
- f18 float;
- f17 float;
- f16 float;
- f15 float;
-
- d14 named("f14") aliases(f14) double volatile;
- d13 named("f13") aliases(f13) double volatile;
- d12 named("f12") aliases(f12) double volatile;
- d11 named("f11") aliases(f11) double volatile;
- d10 named("f10") aliases(f10) double volatile;
- d9 named("f9") aliases(f9) double volatile;
- d8 named("f8") aliases(f8) double volatile;
- d7 named("f7") aliases(f7) double volatile;
- d6 named("f6") aliases(f6) double volatile;
- d5 named("f5") aliases(f5) double volatile;
- d4 named("f4") aliases(f4) double volatile;
- d3 named("f3") aliases(f3) double volatile dret;
- d2 named("f2") aliases(f2) double volatile;
- d1 named("f1") aliases(f1) double volatile;
- d0 named("f0") aliases(f0) double volatile;
-
- d31 named("f31") aliases(f31) double;
- d30 named("f30") aliases(f30) double;
- d29 named("f29") aliases(f29) double;
- d28 named("f28") aliases(f28) double;
- d27 named("f27") aliases(f27) double;
- d26 named("f26") aliases(f26) double;
- d25 named("f25") aliases(f25) double;
- d24 named("f24") aliases(f24) double;
- d23 named("f23") aliases(f23) double;
- d22 named("f22") aliases(f22) double;
- d21 named("f21") aliases(f21) double;
- d20 named("f20") aliases(f20) double;
- d19 named("f19") aliases(f19) double;
- d18 named("f18") aliases(f18) double;
- d17 named("f17") aliases(f17) double;
- d16 named("f16") aliases(f16) double;
- d15 named("f15") aliases(f15) double;
-
- cr0 cr;
+ r12 int volatile;
+ r11 int volatile;
+ r10 int volatile;
+ r9 int volatile;
+ r8 int volatile;
+ r7 int volatile;
+ r6 int volatile;
+ r5 int volatile;
+ r4 int volatile;
+ r3 int volatile iret;
+
+ r31 int;
+ r30 int;
+ r29 int;
+ r28 int;
+ r27 int;
+ r26 int;
+ r25 int;
+ r24 int;
+ r23 int;
+ r22 int;
+ r21 int;
+ r20 int;
+ r19 int;
+ r18 int;
+ r17 int;
+ r16 int;
+ r15 int;
+ r14 int;
+ r13 int;
+
+ r11r12 named("r11", "r12") uses(r11, r12) long volatile;
+ r9r10 named("r9", "r10") uses(r9, r10) long volatile;
+ r7r8 named("r7", "r8") uses(r7, r8) long volatile;
+ r5r6 named("r5", "r6") uses(r6, r6) long volatile;
+ r3r4 named("r3", "r4") uses(r3, r4) long volatile lret;
+
+ r29r30 named("r29", "r30") uses(r29, r30) long;
+ r27r28 named("r27", "r28") uses(r27, r28) long;
+ r25r26 named("r25", "r26") uses(r25, r26) long;
+ r23r24 named("r23", "r24") uses(r23, r24) long;
+ r21r22 named("r21", "r22") uses(r21, r22) long;
+ r19r20 named("r19", "r20") uses(r19, r20) long;
+ r17r18 named("r17", "r18") uses(r17, r18) long;
+ r15r16 named("r15", "r16") uses(r15, r16) long;
+ r13r14 named("r13", "r14") uses(r13, r14) long;
+
+ f14 float volatile;
+ f13 float volatile;
+ f12 float volatile;
+ f11 float volatile;
+ f10 float volatile;
+ f9 float volatile;
+ f8 float volatile;
+ f7 float volatile;
+ f6 float volatile;
+ f5 float volatile;
+ f4 float volatile;
+ f3 float volatile fret;
+ f2 float volatile;
+ f1 float volatile;
+ f0 float volatile;
+
+ f31 float;
+ f30 float;
+ f29 float;
+ f28 float;
+ f27 float;
+ f26 float;
+ f25 float;
+ f24 float;
+ f23 float;
+ f22 float;
+ f21 float;
+ f20 float;
+ f19 float;
+ f18 float;
+ f17 float;
+ f16 float;
+ f15 float;
+
+ d14 named("f14") uses(f14) double volatile;
+ d13 named("f13") uses(f13) double volatile;
+ d12 named("f12") uses(f12) double volatile;
+ d11 named("f11") uses(f11) double volatile;
+ d10 named("f10") uses(f10) double volatile;
+ d9 named("f9") uses(f9) double volatile;
+ d8 named("f8") uses(f8) double volatile;
+ d7 named("f7") uses(f7) double volatile;
+ d6 named("f6") uses(f6) double volatile;
+ d5 named("f5") uses(f5) double volatile;
+ d4 named("f4") uses(f4) double volatile;
+ d3 named("f3") uses(f3) double volatile dret;
+ d2 named("f2") uses(f2) double volatile;
+ d1 named("f1") uses(f1) double volatile;
+ d0 named("f0") uses(f0) double volatile;
+
+ d31 named("f31") uses(f31) double;
+ d30 named("f30") uses(f30) double;
+ d29 named("f29") uses(f29) double;
+ d28 named("f28") uses(f28) double;
+ d27 named("f27") uses(f27) double;
+ d26 named("f26") uses(f26) double;
+ d25 named("f25") uses(f25) double;
+ d24 named("f24") uses(f24) double;
+ d23 named("f23") uses(f23) double;
+ d22 named("f22") uses(f22) double;
+ d21 named("f21") uses(f21) double;
+ d20 named("f20") uses(f20) double;
+ d19 named("f19") uses(f19) double;
+ d18 named("f18") uses(f18) double;
+ d17 named("f17") uses(f17) double;
+ d16 named("f16") uses(f16) double;
+ d15 named("f15") uses(f15) double;
+
+ cr0 cr;
set_add(®->classes, p);
}
-void addregalias(struct reg* r1, struct reg* r2)
+void addregusage(struct reg* reg, struct stringlist* usage)
{
- if (!array_appendu(&r1->aliases, r2))
- {
- int i;
-
- for (i=0; i<r1->aliases.count; i++)
- addregalias(r1->aliases.item[i], r2);
- }
-}
-
-void addregaliases(struct reg* reg, struct stringlist* aliases)
-{
- struct stringfragment* f = aliases->first;
+ struct stringfragment* f = usage->first;
while (f)
{
struct reg* r = hashtable_get(®isters, (void*)f->data);
if (!r)
yyerror("register '%s' is not defined here", f->data);
- if (r->aliases.count > 0)
- yyerror("can't alias '%s' to '%s' because the latter isn't a true hardware register",
+ if (r->uses.count > 0)
+ yyerror("'%s' can't use '%s' because the latter isn't a true hardware register",
reg->name, r->name);
- array_appendu(®->aliases, r);
+ array_appendu(®->uses, r);
f = f->next;
}
for (i=0; i<registers.size; i++)
{
struct reg* r = regs[i];
- if (r->aliases.count > 0)
+ if (r->uses.count > 0)
fake_registers[fake_register_count++] = r;
else
real_registers[real_register_count++] = r;
struct reg* r = fake_registers[i];
r->bitmap = bitmap_alloc(real_register_count);
- for (j=0; j<r->aliases.count; j++)
+ for (j=0; j<r->uses.count; j++)
{
- struct reg* alias = r->aliases.item[j];
- bitmap_or(r->bitmap, real_register_count, alias->bitmap);
+ struct reg* uses = r->uses.item[j];
+ bitmap_or(r->bitmap, real_register_count, uses->bitmap);
}
}