|
|
1.1 root 1: /* "jal $%0 # int" => ="jal %y # int" A="$%n" 0=0 */
2: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
3: /* "j $%0" => ="j %y" A="$%n" 0=0 */
4: /* "%0:" => ="%y:" A="%c" a=a */
5: /* "la $%r,%0" => ="la $%r,%y" A="%c" a=a */
6: /* "la $%r,%0($sp)" => ="la $%r,%y" A="%c($sp)" a=a */
7: /* "la $%r,%0($sp)" => ="la $%r,%y" A="%c($sp)" a=a */
8: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
9: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
10: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
11: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
12: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
13: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
14: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
15: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
16: /* "trunc.w.d $f2,$f%0,$%r; mfc1 $%r,$f2" => ="%f.%t $f2,%y,$%r; mfc1 $%r,$f2" C="trunc.w" D="d" A="$f%n" 0=0 */
17: /* "mtc1 $%0,$f%r; cvt.d.w $f%r,$f%r" => ="mtc1 %y,$f%r; %f.%t $f%r,$f%r" A="$%n" 0=0 C="cvt.d" D="w" */
18: /* "cvt.s.d $f%r,$f%0" => ="%f.%t $f%r,%y" C="cvt.s" D="d" A="$f%n" 0=0 */
19: /* "cvt.d.s $f%r,$f%0" => ="%f.%t $f%r,%y" C="cvt.d" D="s" A="$f%n" 0=0 */
20: /* "s.d $f%0,%c($sp)" => ="s.%t $f%k,%y" D="d" 2=0 A="%c($sp)" */
21: /* "s.s $f%0,%c($sp)" => ="s.%t $f%k,%y" D="s" 2=0 A="%c($sp)" */
22: /* "sw $%0,%c($sp)" => ="s%t $%k,%y" D="w" 2=0 A="%c($sp)" */
23: /* "sw $%0,%c($sp)" => ="s%t $%k,%y" D="w" 2=0 A="%c($sp)" */
24: /* "s.d $f%1,($%0)" => ="s.%t $f%k,%y" D="d" 2=1 A="($%n)" 0=0 */
25: /* "s.s $f%1,($%0)" => ="s.%t $f%k,%y" D="s" 2=1 A="($%n)" 0=0 */
26: /* "sw $%1,($%0)" => ="s%t $%k,%y" D="w" 2=1 A="($%n)" 0=0 */
27: /* "sb $%1,($%0)" => ="s%t $%k,%y" D="b" 2=1 A="($%n)" 0=0 */
28: /* "sw $%1,($%0)" => ="s%t $%k,%y" D="w" 2=1 A="($%n)" 0=0 */
29: /* "sh $%1,($%0)" => ="s%t $%k,%y" D="h" 2=1 A="($%n)" 0=0 */
30: /* "jal $%0 # real" => ="jal %y # real" A="$%n" 0=0 */
31: /* "jal $%0 # real" => ="jal %y # real" A="$%n" 0=0 */
32: /* "jal $%0 # int" => ="jal %y # int" A="$%n" 0=0 */
33: /* "jal $%0 # int" => ="jal %y # int" A="$%n" 0=0 */
34: /* "li.d $f%r,%0" => ="li.%t $f%r,%y" D="d" A="%c" a=a */
35: /* "li.s $f%r,%0" => ="li.%t $f%r,%y" D="s" A="%c" a=a */
36: /* "li $%r,%0" => ="li $%r,%y" A="%c" a=a */
37: /* "li $%r,%0" => ="li $%r,%y" A="%c" a=a */
38: /* "li $%r,%0" => ="li $%r,%y" A="%c" a=a */
39: /* "li $%r,%0" => ="li $%r,%y" A="%c" a=a */
40: /* "li $%r,%0" => ="li $%r,%y" A="%c" a=a */
41: /* "l.d $f%r,($%0)" => ="l.%t $f%r,%y" D="d" A="($%n)" 0=0 */
42: /* "l.s $f%r,($%0)" => ="l.%t $f%r,%y" D="s" A="($%n)" 0=0 */
43: /* "lw $%r,($%0)" => ="l%t $%r,%y" D="w" A="($%n)" 0=0 */
44: /* "lb $%r,($%0)" => ="l%t $%r,%y" D="b" A="($%n)" 0=0 */
45: /* "lw $%r,($%0)" => ="l%t $%r,%y" D="w" A="($%n)" 0=0 */
46: /* "lh $%r,($%0)" => ="l%t $%r,%y" D="h" A="($%n)" 0=0 */
47: /* "mov.d $f%r,$f%0" => ="mov.%t $f%r,%y" D="d" A="$f%n" 0=0 */
48: /* "mov.s $f%r,$f%0" => ="mov.%t $f%r,%y" D="s" A="$f%n" 0=0 */
49: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
50: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
51: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
52: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
53: /* "move $%r,$%0" => ="move $%r,%y" A="$%n" 0=0 */
54: /* "neg.d $f%r,$f%0" => ="%f.%t $f%r,%y" C="neg" D="d" A="$f%n" 0=0 */
55: /* "neg.s $f%r,$f%0" => ="%f.%t $f%r,%y" C="neg" D="s" A="$f%n" 0=0 */
56: /* "sub.d $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="sub" D="d" A="$f%n" 0=0 B="$f%n" 1=1 */
57: /* "sub.s $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="sub" D="s" A="$f%n" 0=0 B="$f%n" 1=1 */
58: /* "mul.d $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="mul" D="d" A="$f%n" 0=0 B="$f%n" 1=1 */
59: /* "mul.s $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="mul" D="s" A="$f%n" 0=0 B="$f%n" 1=1 */
60: /* "div.d $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="div" D="d" A="$f%n" 0=0 B="$f%n" 1=1 */
61: /* "div.s $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="div" D="s" A="$f%n" 0=0 B="$f%n" 1=1 */
62: /* "add.d $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="add" D="d" A="$f%n" 0=0 B="$f%n" 1=1 */
63: /* "add.s $f%r,$f%0,$f%1" => ="%f.%t $f%r,%y,%x" C="add" D="s" A="$f%n" 0=0 B="$f%n" 1=1 */
64: /* "negu $%r,$%0" => ="%f $%r,%y" C="negu" A="$%n" 0=0 */
65: /* "not $%r,$%0" => ="%f $%r,%y" C="not" A="$%n" 0=0 */
66: /* "sll $%r,$%0,24; sra $%r,$%r,%c" => ="sll $%r,%y,%x; %f $%r,$%r,%x" A="$%n" 0=0 B="%c" b="24" C="sra" B="%c" */
67: /* "sll $%r,$%0,16; sra $%r,$%r,%c" => ="sll $%r,%y,%x; %f $%r,$%r,%x" A="$%n" 0=0 B="%c" b="16" C="sra" B="%c" */
68: /* "and $%r,$%0,255" => ="%f $%r,%y,%x" C="and" A="$%n" 0=0 B="%c" b="255" */
69: /* "and $%r,$%0,65535" => ="%f $%r,%y,%x" C="and" A="$%n" 0=0 B="%c" b="65535" */
70: /* "divu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="divu" A="$%n" 0=0 B="$%n" 1=1 */
71: /* "srl $%r,$%0,$%1" => ="%f $%r,%y,%x" C="srl" A="$%n" 0=0 B="$%n" 1=1 */
72: /* "remu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="remu" A="$%n" 0=0 B="$%n" 1=1 */
73: /* "c.eq.d $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="eq" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
74: /* "c.eq.s $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="eq" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
75: /* "c.le.d $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="le" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
76: /* "c.le.s $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="le" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
77: /* "c.lt.d $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="lt" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
78: /* "c.lt.s $f%0,$f%1; bc1t %0" => ="c.%f.%t %y,%x; bc1t %r" C="lt" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
79: /* "c.le.d $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="le" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
80: /* "c.le.s $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="le" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
81: /* "c.eq.d $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="eq" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
82: /* "c.eq.s $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="eq" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
83: /* "c.lt.d $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="lt" D="d" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
84: /* "c.lt.s $f%0,$f%1; bc1f %0" => ="c.%f.%t %y,%x; bc1f %r" C="lt" D="s" A="$f%n" 0=0 B="$f%n" 1=1 c=a */
85: /* "bleu $%0,$%1,%0" => ="b%f %y,%x,%r" C="leu" A="$%n" 0=0 B="$%n" 1=1 c=a */
86: /* "bge $%0,$%1,%0" => ="b%f %y,%x,%r" C="ge" A="$%n" 0=0 B="$%n" 1=1 c=a */
87: /* "blt $%0,$%1,%0" => ="b%f %y,%x,%r" C="lt" A="$%n" 0=0 B="$%n" 1=1 c=a */
88: /* "ble $%0,$%1,%0" => ="b%f %y,%x,%r" C="le" A="$%n" 0=0 B="$%n" 1=1 c=a */
89: /* "beq $%0,$%1,%0" => ="b%f %y,%x,%r" C="eq" A="$%n" 0=0 B="$%n" 1=1 c=a */
90: /* "bgtu $%0,$%1,%0" => ="b%f %y,%x,%r" C="gtu" A="$%n" 0=0 B="$%n" 1=1 c=a */
91: /* "bltu $%0,$%1,%0" => ="b%f %y,%x,%r" C="ltu" A="$%n" 0=0 B="$%n" 1=1 c=a */
92: /* "bne $%0,$%1,%0" => ="b%f %y,%x,%r" C="ne" A="$%n" 0=0 B="$%n" 1=1 c=a */
93: /* "bgt $%0,$%1,%0" => ="b%f %y,%x,%r" C="gt" A="$%n" 0=0 B="$%n" 1=1 c=a */
94: /* "bgeu $%0,$%1,%0" => ="b%f %y,%x,%r" C="geu" A="$%n" 0=0 B="$%n" 1=1 c=a */
95: /* "rem $%r,$%0,$%1" => ="%f $%r,%y,%x" C="rem" A="$%n" 0=0 B="$%n" 1=1 */
96: /* "rem $%r,$%0,$%1" => ="%f $%r,%y,%x" C="rem" A="$%n" 0=0 B="$%n" 1=1 */
97: /* "mul $%r,$%0,$%1" => ="%f $%r,%y,%x" C="mul" A="$%n" 0=0 B="$%n" 1=1 */
98: /* "mul $%r,$%0,$%1" => ="%f $%r,%y,%x" C="mul" A="$%n" 0=0 B="$%n" 1=1 */
99: /* "xor $%r,$%0,$%1" => ="%f $%r,%y,%x" C="xor" A="$%n" 0=0 B="$%n" 1=1 */
100: /* "div $%r,$%0,$%1" => ="%f $%r,%y,%x" C="div" A="$%n" 0=0 B="$%n" 1=1 */
101: /* "div $%r,$%0,$%1" => ="%f $%r,%y,%x" C="div" A="$%n" 0=0 B="$%n" 1=1 */
102: /* "sll $%r,$%0,$%1" => ="%f $%r,%y,%x" C="sll" A="$%n" 0=0 B="$%n" 1=1 */
103: /* "sll $%r,$%0,$%1" => ="%f $%r,%y,%x" C="sll" A="$%n" 0=0 B="$%n" 1=1 */
104: /* "addu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="addu" A="$%n" 0=0 B="$%n" 1=1 */
105: /* "addu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="addu" A="$%n" 0=0 B="$%n" 1=1 */
106: /* "addu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="addu" A="$%n" 0=0 B="$%n" 1=1 */
107: /* "and $%r,$%0,$%1" => ="%f $%r,%y,%x" C="and" A="$%n" 0=0 B="$%n" 1=1 */
108: /* "subu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="subu" A="$%n" 0=0 B="$%n" 1=1 */
109: /* "subu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="subu" A="$%n" 0=0 B="$%n" 1=1 */
110: /* "subu $%r,$%0,$%1" => ="%f $%r,%y,%x" C="subu" A="$%n" 0=0 B="$%n" 1=1 */
111: /* "sra $%r,$%0,$%1" => ="%f $%r,%y,%x" C="sra" A="$%n" 0=0 B="$%n" 1=1 */
112: /* "sra $%r,$%0,$%1" => ="%f $%r,%y,%x" C="sra" A="$%n" 0=0 B="$%n" 1=1 */
113: /* "or $%r,$%0,$%1" => ="%f $%r,%y,%x" C="or" A="$%n" 0=0 B="$%n" 1=1 */
114: /* "j $%0" => ="j %y" A="$%n" 0=0 */
115: /* "la $%r,%c" => ="la $%r,%y" 0A="%c" */
116: /* "move $%r,$%c" => ="move $%r,%y" A="$%c" */
117: /* "mov.%t $f%r,$f%c" => ="mov.%t $f%r,%y" A="$f%c" */
118: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
119: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
120: /* "sw $%k,0($sp)" => ="s%t $%k,%y" D="w" A="%c($sp)" a="0" */
121: /* "move $4,$%n" => ="move $%r,%y" c="4" A="$%n" */
122: /* "sw $%k,4($sp)" => ="s%t $%k,%y" D="w" A="%c($sp)" a="4" */
123: /* "move $5,$%n" => ="move $%r,%y" c="5" A="$%n" */
124: /* "sw $%k,8($sp)" => ="s%t $%k,%y" D="w" A="%c($sp)" a="8" */
125: /* "move $6,$%n" => ="move $%r,%y" c="6" A="$%n" */
126: /* "sw $%k,12($sp)" => ="s%t $%k,%y" D="w" A="%c($sp)" a="12" */
127: /* "move $7,$%n" => ="move $%r,%y" c="7" A="$%n" */
128: /* "s.d $f%k,0($sp)" => ="s.%t $f%k,%y" D="d" A="%c($sp)" a="0" */
129: /* "mfc1.d $4,$f%n" => ="mfc1.d $%r,%y" c="4" A="$f%n" */
130: /* "s.s $f%k,0($sp)" => ="s.%t $f%k,%y" D="s" A="%c($sp)" a="0" */
131: /* "mfc1 $4,$f%n" => ="mfc1 $%r,%y" c="4" A="$f%n" */
132: /* "s.%t $f%k,0($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="0" */
133: /* "mov.%t $f12,$f%n" => ="mov.%t $f%r,%y" c="12" A="$f%n" */
134: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
135: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
136: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
137: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
138: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
139: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
140: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
141: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
142: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
143: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
144: /* "s.%t $f%k,4($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="4" */
145: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
146: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
147: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
148: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
149: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
150: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
151: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
152: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
153: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
154: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
155: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
156: /* "s.%t $f%k,8($sp)" => ="s.%t $f%k,%y" A="%c($sp)" a="8" */
157: /* "mov.%t $f14,$f%n" => ="mov.%t $f%r,%y" c="14" A="$f%n" */
158: /* "s.d $f%k,8($sp)" => ="s.%t $f%k,%y" D="d" A="%c($sp)" a="8" */
159: /* "mfc1.d $6,$f%n" => ="mfc1.d $%r,%y" c="6" A="$f%n" */
160: /* "s.s $f%k,4($sp)" => ="s.%t $f%k,%y" D="s" A="%c($sp)" a="4" */
161: /* "mfc1 $5,$f%n" => ="mfc1 $%r,%y" c="5" A="$f%n" */
162: /* "s.s $f%k,8($sp)" => ="s.%t $f%k,%y" D="s" A="%c($sp)" a="8" */
163: /* "mfc1 $6,$f%n" => ="mfc1 $%r,%y" c="6" A="$f%n" */
164: /* "s.s $f%k,12($sp)" => ="s.%t $f%k,%y" D="s" A="%c($sp)" a="12" */
165: /* "mfc1 $7,$f%n" => ="mfc1 $%r,%y" c="7" A="$f%n" */
166: /* "mov.%t $f%r,$f%c" => ="mov.%t $f%r,%y" A="$f%c" */
167: /* "move $%r,$%c" => ="move $%r,%y" A="$%c" */
168: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
169: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
170: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
171: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
172: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
173: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
174: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
175: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
176: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
177: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
178: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
179: /* "ld $%r,$f%n" => ="l%t $%r,%y" D="d" A="$f%n" */
180: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
181: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
182: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
183: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
184: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
185: /* "mov.%t $f%r,$f%n" => ="mov.%t $f%r,%y" A="$f%n" */
186: /* "jal $%n # real" => ="jal %y # real" A="$%n" */
187: /* "la $%r,%c" => ="la $%r,%y" 0A="%c" */
188: /* "jal $%n # int" => ="jal %y # int" A="$%n" */
189: /* "la $%r,%c" => ="la $%r,%y" 0A="%c" */
190: /* "addu $%r,%y,$%n" => ="%f $%r,%y,%x" C="addu" B="$%n" */
191: /* "la $%r,%c" => ="la $%r,%y" 1A="%c" */
192: /* "la $%r,%c($%n)" => ="la $%r,%y" A="%c($%n)" */
193: /* "addu $%r,%y,$%n" => ="%f $%r,%y,%x" C="addu" B="$%n" */
194: /* "li $%r,%c" => ="li $%r,%y" 1A="%c" */
195: /* "la $%r,%c($%n)" => ="la $%r,%y" A="%c($%n)" */
196: /* "li $%r,%c" => ="li $%r,%y" 1A="%c" */
197: /* "li $%r,%c" => ="li $%r,%y" 1A="%c" */
198: /* "li $%r,0" => ="li $%r,%y" A="%c" a="0" */
199: /* "sll $%r,$%n,%x; sra $%r,$%r,%c" => ="sll $%r,%y,%x; %f $%r,$%r,%x" A="$%n" C="sra" B="%c" */
200: /* "lh $%r,%y" => ="l%t $%r,%y" 0D="h" */
201: /* "sll $%r,$%n,%x; sra $%r,$%r,%c" => ="sll $%r,%y,%x; %f $%r,$%r,%x" A="$%n" C="sra" B="%c" */
202: /* "lb $%r,%y" => ="l%t $%r,%y" 0D="b" */
203: /* "and $%r,$%n,65535" => ="%f $%r,%y,%x" C="and" A="$%n" B="%c" b="65535" */
204: /* "lh $%r,%y" => ="l%t $%r,%y" 0D="h" */
205: /* "and $%r,$%n,255" => ="%f $%r,%y,%x" C="and" A="$%n" B="%c" b="255" */
206: /* "lb $%r,%y" => ="l%t $%r,%y" 0D="b" */
207: /* "trunc.w.d $f2,$f%n,$%r; mfc1 $%r,$f2" => ="%f.%t $f2,%y,$%r; mfc1 $%r,$f2" C="trunc.w" D="d" A="$f%n" */
208: /* "cvt.d.s $f%r,%y" => ="%f.%t $f%r,%y" 0C="cvt.d" 0D="s" */
209: /* "move $%r,$%n" => ="move $%r,%y" A="$%n" */
210: /* "{sll|srl|sra} $%r,%y,%c" => ="%f $%r,%y,%x" C=@TMP1168 B="%c" */
211: #include "pseudos.c"
212:
213: static char *shortopcodes[] = {
214: /* 608 */ "jal %y # int",
215: /* 609 */ "jal %y # real",
216: /* 610 */ "# asgnb",
217: /* 611 */ "# argb",
218: /* 612 */ "la $%r,%y",
219: /* 613 */ "mfc1 $%r,%y",
220: /* 614 */ "move $%r,%y",
221: /* 615 */ "%f $%r,%y",
222: /* 616 */ "li $%r,%y",
223: /* 617 */ "l%t $%r,%y",
224: /* 618 */ "%f.%t $f2,%y,$%r; mfc1 $%r,$f2",
225: /* 619 */ "%f $%r,%y,%x",
226: /* 620 */ "l%tu $%r,%y",
227: /* 621 */ "# nop",
228: /* 622 */ "# ret",
229: /* 623 */ "%f.%t $f%r,%y",
230: /* 624 */ "%f.%t $f%r,%y,%x",
231: /* 625 */ "sll $%r,%y,%x; %f $%r,$%r,%x",
232: /* 626 */ "# label",
233: /* 627 */ "b%f %y,%x,%r",
234: /* 628 */ "b %r",
235: /* 629 */ "j %y",
236: /* 630 */ "c.%f.%t %y,%x; bc1f %r",
237: /* 631 */ "c.%f.%t %y,%x; bc1t %r",
238: /* 632 */ "l.%t $f%r,%y",
239: /* 633 */ "li.%t $f%r,%y",
240: /* 634 */ "mfc1.d $%r,%y",
241: /* 635 */ "mov.%t $f%r,%y",
242: /* 636 */ "mtc1 %y,$f%r; %f.%t $f%r,$f%r",
243: /* 637 */ "s%t $%k,%y",
244: /* 638 */ "s.%t $f%k,%y",
245: /* 639 */ "%y:",
246: };
247:
248: static char *asmstr0[] = {
249: "(DUMMY)",
250: "$%n",
251: "$%c",
252: "$f%n",
253: "$f%c",
254: "%c",
255: "%c($%n)",
256: "%c($sp)",
257: "($%n)",
258: };
259:
260: static char *asmstr2[] = {
261: "(DUMMY)",
262: "and",
263: "cvt.d",
264: "cvt.s",
265: "eq",
266: "mul",
267: "ne",
268: "not",
269: "or",
270: "sll",
271: "sra",
272: "srl",
273: "trunc.w",
274: "xor",
275: "add",
276: "div",
277: "ge",
278: "gt",
279: "le",
280: "lt",
281: "neg",
282: "rem",
283: "sub",
284: "addu",
285: "divu",
286: "geu",
287: "gtu",
288: "leu",
289: "ltu",
290: "negu",
291: "remu",
292: "subu",
293: };
294:
295: static char *asmstr3[] = {
296: "(DUMMY)",
297: "s",
298: "d",
299: "b",
300: "h",
301: "w",
302: };
303:
304: static struct symbol sym[] = {
305: {{"(DUMMY)"}},
306: {{"0"}},
307: {{"4"}},
308: {{"5"}},
309: {{"6"}},
310: {{"7"}},
311: {{"8"}},
312: {{"12"}},
313: {{"14"}},
314: {{"16"}},
315: {{"24"}},
316: {{"255"}},
317: {{"65535"}},
318: };
319:
320: dclproto(static void rewrite,(Node));
321:
322: dclproto(static void emit,(Node));
323:
324: static void initgen() {
325: opcodes = shortopcodes-608;
326: IR->x.rewrite = rewrite;
327: IR->emit = emit;
328: asmstr[0] = asmstr0;
329: asmstr[1] = asmstr0;
330: asmstr[2] = asmstr2;
331: asmstr[3] = asmstr3;
332: sym[1].x.name = string("0");
333: sym[2].x.name = string("4");
334: sym[3].x.name = string("5");
335: sym[4].x.name = string("6");
336: sym[5].x.name = string("7");
337: sym[6].x.name = string("8");
338: sym[7].x.name = string("12");
339: sym[8].x.name = string("14");
340: sym[9].x.name = string("16");
341: sym[10].x.name = string("24");
342: sym[11].x.name = string("255");
343: sym[12].x.name = string("65535");
344: }
345:
346: dclproto(static char *emit0,(char *, Node, int));
347: static char *emit0(rbp, a, n)
348: register char *rbp;
349: register Node a;
350: register int n;
351: {
352: register char *cp;
353:
354: assert(a->x.ints[n]);
355: switch (a->x.ints[n]) {
356: case 0: /* (DUMMY) */
357: *rbp++ = '(';
358: *rbp++ = 'D';
359: *rbp++ = 'U';
360: *rbp++ = 'M';
361: *rbp++ = 'M';
362: *rbp++ = 'Y';
363: *rbp++ = ')';
364: return rbp;
365: case 1: /* $%n */
366: *rbp++ = '$';
367: assert(a->kids[n+0]);
368: assert(a->kids[n+0]->x.registered);
369: assert(a->kids[n+0]->syms[RX]);
370: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
371: return rbp;
372: case 2: /* $%c */
373: *rbp++ = '$';
374: assert(a->syms[n+0]);
375: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++);
376: return rbp;
377: case 3: /* $f%n */
378: *rbp++ = '$';
379: *rbp++ = 'f';
380: assert(a->kids[n+0]);
381: assert(a->kids[n+0]->x.registered);
382: assert(a->kids[n+0]->syms[RX]);
383: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
384: return rbp;
385: case 4: /* $f%c */
386: *rbp++ = '$';
387: *rbp++ = 'f';
388: assert(a->syms[n+0]);
389: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++);
390: return rbp;
391: case 5: /* %c */
392: assert(a->syms[n+0]);
393: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++);
394: return rbp;
395: case 6: /* %c($%n) */
396: assert(a->syms[n+0]);
397: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++);
398: *rbp++ = '(';
399: *rbp++ = '$';
400: assert(a->kids[n+0]);
401: assert(a->kids[n+0]->x.registered);
402: assert(a->kids[n+0]->syms[RX]);
403: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
404: *rbp++ = ')';
405: return rbp;
406: case 7: /* %c($sp) */
407: assert(a->syms[n+0]);
408: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++);
409: *rbp++ = '(';
410: *rbp++ = '$';
411: *rbp++ = 's';
412: *rbp++ = 'p';
413: *rbp++ = ')';
414: return rbp;
415: case 8: /* ($%n) */
416: *rbp++ = '(';
417: *rbp++ = '$';
418: assert(a->kids[n+0]);
419: assert(a->kids[n+0]->x.registered);
420: assert(a->kids[n+0]->syms[RX]);
421: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
422: *rbp++ = ')';
423: return rbp;
424: }
425: return rbp;
426: }
427:
428: static void emit(a)
429: register Node a;
430: {
431: register char *cp, *rbp;
432:
433: for (; a; a = a->x.next) {
434: switch (a->op) {
435: case 608: L608: /* jal %y # int */
436: rbp = bp;
437: *rbp++ = 'j';
438: *rbp++ = 'a';
439: *rbp++ = 'l';
440: *rbp++ = ' ';
441: rbp = emit0(rbp, a, 0);
442: *rbp++ = ' ';
443: *rbp++ = ' ';
444: *rbp++ = '#';
445: *rbp++ = ' ';
446: *rbp++ = 'i';
447: *rbp++ = 'n';
448: *rbp++ = 't';
449: bp = rbp;
450: outs("\n");
451: break;
452: case 609: L609: /* jal %y # real */
453: rbp = bp;
454: *rbp++ = 'j';
455: *rbp++ = 'a';
456: *rbp++ = 'l';
457: *rbp++ = ' ';
458: rbp = emit0(rbp, a, 0);
459: *rbp++ = ' ';
460: *rbp++ = ' ';
461: *rbp++ = '#';
462: *rbp++ = ' ';
463: *rbp++ = 'r';
464: *rbp++ = 'e';
465: *rbp++ = 'a';
466: *rbp++ = 'l';
467: bp = rbp;
468: outs("\n");
469: break;
470: case 610: L610: /* # asgnb */
471: (*IR->x.emitspecial)(a);
472: break;
473: case 611: L611: /* # argb */
474: (*IR->x.emitspecial)(a);
475: break;
476: case 612: L612: /* la $%r,%y */
477: rbp = bp;
478: *rbp++ = 'l';
479: *rbp++ = 'a';
480: *rbp++ = ' ';
481: *rbp++ = '$';
482: assert(a->syms[2]);
483: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
484: *rbp++ = ',';
485: rbp = emit0(rbp, a, 0);
486: bp = rbp;
487: outs("\n");
488: break;
489: case 613: L613: /* mfc1 $%r,%y */
490: rbp = bp;
491: *rbp++ = 'm';
492: *rbp++ = 'f';
493: *rbp++ = 'c';
494: *rbp++ = '1';
495: *rbp++ = ' ';
496: *rbp++ = '$';
497: assert(a->syms[2]);
498: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
499: *rbp++ = ',';
500: rbp = emit0(rbp, a, 0);
501: bp = rbp;
502: outs("\n");
503: break;
504: case 614: L614: /* move $%r,%y */
505: rbp = bp;
506: *rbp++ = 'm';
507: *rbp++ = 'o';
508: *rbp++ = 'v';
509: *rbp++ = 'e';
510: *rbp++ = ' ';
511: *rbp++ = '$';
512: assert(a->syms[2]);
513: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
514: *rbp++ = ',';
515: rbp = emit0(rbp, a, 0);
516: bp = rbp;
517: outs("\n");
518: break;
519: case 615: L615: /* %f $%r,%y */
520: rbp = bp;
521: assert(a->x.ints[2]);
522: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
523: *rbp++ = ' ';
524: *rbp++ = '$';
525: assert(a->syms[2]);
526: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
527: *rbp++ = ',';
528: rbp = emit0(rbp, a, 0);
529: bp = rbp;
530: outs("\n");
531: break;
532: case 616: L616: /* li $%r,%y */
533: rbp = bp;
534: *rbp++ = 'l';
535: *rbp++ = 'i';
536: *rbp++ = ' ';
537: *rbp++ = '$';
538: assert(a->syms[2]);
539: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
540: *rbp++ = ',';
541: rbp = emit0(rbp, a, 0);
542: bp = rbp;
543: outs("\n");
544: break;
545: case 617: L617: /* l%t $%r,%y */
546: rbp = bp;
547: *rbp++ = 'l';
548: assert(a->x.ints[3]);
549: cp = asmstr3[a->x.ints[3]];
550: *rbp++ = cp[0];
551: *rbp++ = ' ';
552: *rbp++ = '$';
553: assert(a->syms[2]);
554: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
555: *rbp++ = ',';
556: rbp = emit0(rbp, a, 0);
557: bp = rbp;
558: outs("\n");
559: break;
560: case 618: L618: /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
561: rbp = bp;
562: assert(a->x.ints[2]);
563: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
564: *rbp++ = '.';
565: assert(a->x.ints[3]);
566: cp = asmstr3[a->x.ints[3]];
567: *rbp++ = cp[0];
568: *rbp++ = ' ';
569: *rbp++ = '$';
570: *rbp++ = 'f';
571: *rbp++ = '2';
572: *rbp++ = ',';
573: rbp = emit0(rbp, a, 0);
574: *rbp++ = ',';
575: *rbp++ = '$';
576: assert(a->syms[2]);
577: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
578: bp = rbp; outs(";"); rbp = bp;
579: *rbp++ = ' ';
580: *rbp++ = 'm';
581: *rbp++ = 'f';
582: *rbp++ = 'c';
583: *rbp++ = '1';
584: *rbp++ = ' ';
585: *rbp++ = '$';
586: assert(a->syms[2]);
587: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
588: *rbp++ = ',';
589: *rbp++ = '$';
590: *rbp++ = 'f';
591: *rbp++ = '2';
592: bp = rbp;
593: outs("\n");
594: break;
595: case 619: L619: /* %f $%r,%y,%x */
596: rbp = bp;
597: assert(a->x.ints[2]);
598: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
599: *rbp++ = ' ';
600: *rbp++ = '$';
601: assert(a->syms[2]);
602: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
603: *rbp++ = ',';
604: rbp = emit0(rbp, a, 0);
605: *rbp++ = ',';
606: rbp = emit0(rbp, a, 1);
607: bp = rbp;
608: outs("\n");
609: break;
610: case 620: L620: /* l%tu $%r,%y */
611: rbp = bp;
612: *rbp++ = 'l';
613: assert(a->x.ints[3]);
614: cp = asmstr3[a->x.ints[3]];
615: *rbp++ = cp[0];
616: *rbp++ = 'u';
617: *rbp++ = ' ';
618: *rbp++ = '$';
619: assert(a->syms[2]);
620: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
621: *rbp++ = ',';
622: rbp = emit0(rbp, a, 0);
623: bp = rbp;
624: outs("\n");
625: break;
626: case 621: L621: /* # nop */
627: (*IR->x.emitspecial)(a);
628: break;
629: case 622: L622: /* # ret */
630: (*IR->x.emitspecial)(a);
631: break;
632: case 623: L623: /* %f.%t $f%r,%y */
633: rbp = bp;
634: assert(a->x.ints[2]);
635: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
636: *rbp++ = '.';
637: assert(a->x.ints[3]);
638: cp = asmstr3[a->x.ints[3]];
639: *rbp++ = cp[0];
640: *rbp++ = ' ';
641: *rbp++ = '$';
642: *rbp++ = 'f';
643: assert(a->syms[2]);
644: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
645: *rbp++ = ',';
646: rbp = emit0(rbp, a, 0);
647: bp = rbp;
648: outs("\n");
649: break;
650: case 624: L624: /* %f.%t $f%r,%y,%x */
651: rbp = bp;
652: assert(a->x.ints[2]);
653: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
654: *rbp++ = '.';
655: assert(a->x.ints[3]);
656: cp = asmstr3[a->x.ints[3]];
657: *rbp++ = cp[0];
658: *rbp++ = ' ';
659: *rbp++ = '$';
660: *rbp++ = 'f';
661: assert(a->syms[2]);
662: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
663: *rbp++ = ',';
664: rbp = emit0(rbp, a, 0);
665: *rbp++ = ',';
666: rbp = emit0(rbp, a, 1);
667: bp = rbp;
668: outs("\n");
669: break;
670: case 625: L625: /* sll $%r,%y,%x; %f $%r,$%r,%x */
671: rbp = bp;
672: *rbp++ = 's';
673: *rbp++ = 'l';
674: *rbp++ = 'l';
675: *rbp++ = ' ';
676: *rbp++ = '$';
677: assert(a->syms[2]);
678: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
679: *rbp++ = ',';
680: rbp = emit0(rbp, a, 0);
681: *rbp++ = ',';
682: rbp = emit0(rbp, a, 1);
683: bp = rbp; outs(";"); rbp = bp;
684: *rbp++ = ' ';
685: assert(a->x.ints[2]);
686: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
687: *rbp++ = ' ';
688: *rbp++ = '$';
689: assert(a->syms[2]);
690: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
691: *rbp++ = ',';
692: *rbp++ = '$';
693: assert(a->syms[2]);
694: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
695: *rbp++ = ',';
696: rbp = emit0(rbp, a, 1);
697: bp = rbp;
698: outs("\n");
699: break;
700: case 626: L626: /* # label */
701: (*IR->x.emitspecial)(a);
702: break;
703: case 627: L627: /* b%f %y,%x,%r */
704: rbp = bp;
705: *rbp++ = 'b';
706: assert(a->x.ints[2]);
707: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
708: *rbp++ = ' ';
709: rbp = emit0(rbp, a, 0);
710: *rbp++ = ',';
711: rbp = emit0(rbp, a, 1);
712: *rbp++ = ',';
713: assert(a->syms[2]);
714: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
715: bp = rbp;
716: outs("\n");
717: break;
718: case 628: L628: /* b %r */
719: rbp = bp;
720: *rbp++ = 'b';
721: *rbp++ = ' ';
722: assert(a->syms[2]);
723: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
724: bp = rbp;
725: outs("\n");
726: break;
727: case 629: L629: /* j %y */
728: rbp = bp;
729: *rbp++ = 'j';
730: *rbp++ = ' ';
731: rbp = emit0(rbp, a, 0);
732: bp = rbp;
733: outs("\n");
734: break;
735: case 630: L630: /* c.%f.%t %y,%x; bc1f %r */
736: rbp = bp;
737: *rbp++ = 'c';
738: *rbp++ = '.';
739: assert(a->x.ints[2]);
740: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
741: *rbp++ = '.';
742: assert(a->x.ints[3]);
743: cp = asmstr3[a->x.ints[3]];
744: *rbp++ = cp[0];
745: *rbp++ = ' ';
746: rbp = emit0(rbp, a, 0);
747: *rbp++ = ',';
748: rbp = emit0(rbp, a, 1);
749: bp = rbp; outs(";"); rbp = bp;
750: *rbp++ = ' ';
751: *rbp++ = 'b';
752: *rbp++ = 'c';
753: *rbp++ = '1';
754: *rbp++ = 'f';
755: *rbp++ = ' ';
756: assert(a->syms[2]);
757: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
758: bp = rbp;
759: outs("\n");
760: break;
761: case 631: L631: /* c.%f.%t %y,%x; bc1t %r */
762: rbp = bp;
763: *rbp++ = 'c';
764: *rbp++ = '.';
765: assert(a->x.ints[2]);
766: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
767: *rbp++ = '.';
768: assert(a->x.ints[3]);
769: cp = asmstr3[a->x.ints[3]];
770: *rbp++ = cp[0];
771: *rbp++ = ' ';
772: rbp = emit0(rbp, a, 0);
773: *rbp++ = ',';
774: rbp = emit0(rbp, a, 1);
775: bp = rbp; outs(";"); rbp = bp;
776: *rbp++ = ' ';
777: *rbp++ = 'b';
778: *rbp++ = 'c';
779: *rbp++ = '1';
780: *rbp++ = 't';
781: *rbp++ = ' ';
782: assert(a->syms[2]);
783: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
784: bp = rbp;
785: outs("\n");
786: break;
787: case 632: L632: /* l.%t $f%r,%y */
788: rbp = bp;
789: *rbp++ = 'l';
790: *rbp++ = '.';
791: assert(a->x.ints[3]);
792: cp = asmstr3[a->x.ints[3]];
793: *rbp++ = cp[0];
794: *rbp++ = ' ';
795: *rbp++ = '$';
796: *rbp++ = 'f';
797: assert(a->syms[2]);
798: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
799: *rbp++ = ',';
800: rbp = emit0(rbp, a, 0);
801: bp = rbp;
802: outs("\n");
803: break;
804: case 633: L633: /* li.%t $f%r,%y */
805: rbp = bp;
806: *rbp++ = 'l';
807: *rbp++ = 'i';
808: *rbp++ = '.';
809: assert(a->x.ints[3]);
810: cp = asmstr3[a->x.ints[3]];
811: *rbp++ = cp[0];
812: *rbp++ = ' ';
813: *rbp++ = '$';
814: *rbp++ = 'f';
815: assert(a->syms[2]);
816: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
817: *rbp++ = ',';
818: rbp = emit0(rbp, a, 0);
819: bp = rbp;
820: outs("\n");
821: break;
822: case 634: L634: /* mfc1.d $%r,%y */
823: rbp = bp;
824: *rbp++ = 'm';
825: *rbp++ = 'f';
826: *rbp++ = 'c';
827: *rbp++ = '1';
828: *rbp++ = '.';
829: *rbp++ = 'd';
830: *rbp++ = ' ';
831: *rbp++ = '$';
832: assert(a->syms[2]);
833: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
834: *rbp++ = ',';
835: rbp = emit0(rbp, a, 0);
836: bp = rbp;
837: outs("\n");
838: break;
839: case 635: L635: /* mov.%t $f%r,%y */
840: rbp = bp;
841: *rbp++ = 'm';
842: *rbp++ = 'o';
843: *rbp++ = 'v';
844: *rbp++ = '.';
845: assert(a->x.ints[3]);
846: cp = asmstr3[a->x.ints[3]];
847: *rbp++ = cp[0];
848: *rbp++ = ' ';
849: *rbp++ = '$';
850: *rbp++ = 'f';
851: assert(a->syms[2]);
852: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
853: *rbp++ = ',';
854: rbp = emit0(rbp, a, 0);
855: bp = rbp;
856: outs("\n");
857: break;
858: case 636: L636: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
859: rbp = bp;
860: *rbp++ = 'm';
861: *rbp++ = 't';
862: *rbp++ = 'c';
863: *rbp++ = '1';
864: *rbp++ = ' ';
865: rbp = emit0(rbp, a, 0);
866: *rbp++ = ',';
867: *rbp++ = '$';
868: *rbp++ = 'f';
869: assert(a->syms[2]);
870: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
871: bp = rbp; outs(";"); rbp = bp;
872: *rbp++ = ' ';
873: assert(a->x.ints[2]);
874: for (cp = asmstr2[a->x.ints[2]]; *cp; *rbp++ = *cp++);
875: *rbp++ = '.';
876: assert(a->x.ints[3]);
877: cp = asmstr3[a->x.ints[3]];
878: *rbp++ = cp[0];
879: *rbp++ = ' ';
880: *rbp++ = '$';
881: *rbp++ = 'f';
882: assert(a->syms[2]);
883: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
884: *rbp++ = ',';
885: *rbp++ = '$';
886: *rbp++ = 'f';
887: assert(a->syms[2]);
888: for (cp = a->syms[2]->x.name; *cp; *rbp++ = *cp++);
889: bp = rbp;
890: outs("\n");
891: break;
892: case 637: L637: /* s%t $%k,%y */
893: rbp = bp;
894: *rbp++ = 's';
895: assert(a->x.ints[3]);
896: cp = asmstr3[a->x.ints[3]];
897: *rbp++ = cp[0];
898: *rbp++ = ' ';
899: *rbp++ = '$';
900: assert(a->kids[2]);
901: assert(a->kids[2]->x.registered);
902: assert(a->kids[2]->syms[RX]);
903: for (cp = a->kids[2]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
904: *rbp++ = ',';
905: rbp = emit0(rbp, a, 0);
906: bp = rbp;
907: outs("\n");
908: break;
909: case 638: L638: /* s.%t $f%k,%y */
910: rbp = bp;
911: *rbp++ = 's';
912: *rbp++ = '.';
913: assert(a->x.ints[3]);
914: cp = asmstr3[a->x.ints[3]];
915: *rbp++ = cp[0];
916: *rbp++ = ' ';
917: *rbp++ = '$';
918: *rbp++ = 'f';
919: assert(a->kids[2]);
920: assert(a->kids[2]->x.registered);
921: assert(a->kids[2]->syms[RX]);
922: for (cp = a->kids[2]->syms[RX]->x.name; *cp; *rbp++ = *cp++);
923: *rbp++ = ',';
924: rbp = emit0(rbp, a, 0);
925: bp = rbp;
926: outs("\n");
927: break;
928: case 639: L639: /* %y: */
929: rbp = bp;
930: rbp = emit0(rbp, a, 0);
931: *rbp++ = ':';
932: bp = rbp;
933: outs("\n");
934: break;
935: }
936: }
937: }
938:
939: static void final(a)
940: register Node a;
941: {
942: register int s;
943: switch (a->op) {
944: case 608: L608: /* jal %y # int */
945: dumptree(a, 608);
946: spill(0x000f0ff3, FREG, a); spill(0x0300ff00, IREG, a);
947: a->op = 608;
948: break;
949: case 609: L609: /* jal %y # real */
950: dumptree(a, 609);
951: spill(0x0300ff04, IREG, a); spill(0x000f0ff0, FREG, a);
952: a->op = 609;
953: break;
954: case 610: L610: /* # asgnb */
955: dumptree(a, 610);
956: spill(0x10c, IREG, a);
957: a->op = 610;
958: return;
959: case 611: L611: /* # argb */
960: dumptree(a, 611);
961: spill(0x10c, IREG, a);
962: a->op = 611;
963: return;
964: case 612: L612: /* la $%r,%y */
965: dumptree(a, 612);
966: a->op = 612;
967: break;
968: case 613: L613: /* mfc1 $%r,%y */
969: dumptree(a, 613);
970: a->op = 613;
971: break;
972: case 614: L614: /* move $%r,%y */
973: dumptree(a, 614);
974: if (
975: a->x.ints[0] == 1 /* $%n */
976: && a->syms[2] == a->kids[0]->syms[2]
977: ) {
978: goto L621; /* # nop */
979: }
980: a->op = 614;
981: break;
982: case 615: L615: /* %f $%r,%y */
983: dumptree(a, 615);
984: a->op = 615;
985: break;
986: case 616: L616: /* li $%r,%y */
987: dumptree(a, 616);
988: a->op = 616;
989: break;
990: case 617: L617: /* l%t $%r,%y */
991: dumptree(a, 617);
992: a->op = 617;
993: break;
994: case 618: L618: /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
995: dumptree(a, 618);
996: a->op = 618;
997: break;
998: case 619: L619: /* %f $%r,%y,%x */
999: dumptree(a, 619);
1000: if (
1001: "\1\0\0\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"[a->x.ints[2]] /* <TMP1168> */
1002: && a->x.ints[1] == 5 /* %c */
1003: && lop(a,1,5)
1004: ) {
1005: goto L619; /* %f $%r,%y,%x */
1006: }
1007: a->op = 619;
1008: break;
1009: case 620: L620: /* l%tu $%r,%y */
1010: dumptree(a, 620);
1011: a->op = 620;
1012: break;
1013: case 621: L621: /* # nop */
1014: dumptree(a, 621);
1015: a->op = 621;
1016: return;
1017: case 622: L622: /* # ret */
1018: dumptree(a, 622);
1019: a->op = 622;
1020: return;
1021: case 623: L623: /* %f.%t $f%r,%y */
1022: dumptree(a, 623);
1023: a->op = 623;
1024: break;
1025: case 624: L624: /* %f.%t $f%r,%y,%x */
1026: dumptree(a, 624);
1027: a->op = 624;
1028: break;
1029: case 625: L625: /* sll $%r,%y,%x; %f $%r,$%r,%x */
1030: dumptree(a, 625);
1031: a->op = 625;
1032: break;
1033: case 626: L626: /* # label */
1034: dumptree(a, 626);
1035: a->op = 626;
1036: return;
1037: case 627: L627: /* b%f %y,%x,%r */
1038: dumptree(a, 627);
1039: a->op = 627;
1040: break;
1041: case 628: L628: /* b %r */
1042: dumptree(a, 628);
1043: a->op = 628;
1044: break;
1045: case 629: L629: /* j %y */
1046: dumptree(a, 629);
1047: a->op = 629;
1048: break;
1049: case 630: L630: /* c.%f.%t %y,%x; bc1f %r */
1050: dumptree(a, 630);
1051: a->op = 630;
1052: break;
1053: case 631: L631: /* c.%f.%t %y,%x; bc1t %r */
1054: dumptree(a, 631);
1055: a->op = 631;
1056: break;
1057: case 632: L632: /* l.%t $f%r,%y */
1058: dumptree(a, 632);
1059: a->op = 632;
1060: break;
1061: case 633: L633: /* li.%t $f%r,%y */
1062: dumptree(a, 633);
1063: a->op = 633;
1064: break;
1065: case 634: L634: /* mfc1.d $%r,%y */
1066: dumptree(a, 634);
1067: a->op = 634;
1068: break;
1069: case 635: L635: /* mov.%t $f%r,%y */
1070: dumptree(a, 635);
1071: a->op = 635;
1072: break;
1073: case 636: L636: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
1074: dumptree(a, 636);
1075: a->op = 636;
1076: break;
1077: case 637: L637: /* s%t $%k,%y */
1078: dumptree(a, 637);
1079: a->op = 637;
1080: break;
1081: case 638: L638: /* s.%t $f%k,%y */
1082: dumptree(a, 638);
1083: a->op = 638;
1084: break;
1085: case 639: L639: /* %y: */
1086: dumptree(a, 639);
1087: a->op = 639;
1088: break;
1089: }
1090: }
1091:
1092: static void rewrite(a)
1093: register Node a;
1094: {
1095: register Node b, c;
1096: register int s;
1097: assert(a);
1098: switch (a->op) {
1099: case 17: L17: /* CNSTF */
1100: dumptree(a, a->op);
1101: setreg(a, rmap[F]);
1102: a->x.ints[0] = 5; /* %c */
1103: a->x.ints[3] = 1; /* s */
1104: goto L633; /* li.%t $f%r,%y */
1105: case 18: L18: /* CNSTD */
1106: dumptree(a, a->op);
1107: setreg(a, rmap[D]);
1108: a->x.ints[0] = 5; /* %c */
1109: a->x.ints[3] = 2; /* d */
1110: goto L633; /* li.%t $f%r,%y */
1111: case 19: L19: /* CNSTC */
1112: dumptree(a, a->op);
1113: setreg(a, rmap[C]);
1114: a->x.ints[0] = 5; /* %c */
1115: goto L616; /* li $%r,%y */
1116: case 20: L20: /* CNSTS */
1117: dumptree(a, a->op);
1118: setreg(a, rmap[S]);
1119: a->x.ints[0] = 5; /* %c */
1120: goto L616; /* li $%r,%y */
1121: case 21: L21: /* CNSTI */
1122: dumptree(a, a->op);
1123: setreg(a, rmap[I]);
1124: a->x.ints[0] = 5; /* %c */
1125: goto L616; /* li $%r,%y */
1126: case 22: L22: /* CNSTU */
1127: dumptree(a, a->op);
1128: setreg(a, rmap[U]);
1129: a->x.ints[0] = 5; /* %c */
1130: goto L616; /* li $%r,%y */
1131: case 23: L23: /* CNSTP */
1132: dumptree(a, a->op);
1133: setreg(a, rmap[P]);
1134: a->x.ints[0] = 5; /* %c */
1135: goto L616; /* li $%r,%y */
1136: case 33: L33: /* ARGF */
1137: dumptree(a, a->op);
1138: rewrite(a->kids[0]);
1139: a->x.ints[0] = 7; /* %c($sp) */
1140: a->kids[2] = a->kids[0];
1141: a->kids[0] = 0;
1142: a->x.ints[3] = 1; /* s */
1143: goto L638; /* s.%t $f%k,%y */
1144: case 34: L34: /* ARGD */
1145: dumptree(a, a->op);
1146: rewrite(a->kids[0]);
1147: a->x.ints[0] = 7; /* %c($sp) */
1148: a->kids[2] = a->kids[0];
1149: a->kids[0] = 0;
1150: a->x.ints[3] = 2; /* d */
1151: goto L638; /* s.%t $f%k,%y */
1152: case 37: L37: /* ARGI */
1153: dumptree(a, a->op);
1154: rewrite(a->kids[0]);
1155: a->x.ints[0] = 7; /* %c($sp) */
1156: a->kids[2] = a->kids[0];
1157: a->kids[0] = 0;
1158: a->x.ints[3] = 5; /* w */
1159: goto L637; /* s%t $%k,%y */
1160: case 39: L39: /* ARGP */
1161: dumptree(a, a->op);
1162: rewrite(a->kids[0]);
1163: a->x.ints[0] = 7; /* %c($sp) */
1164: a->kids[2] = a->kids[0];
1165: a->kids[0] = 0;
1166: a->x.ints[3] = 5; /* w */
1167: goto L637; /* s%t $%k,%y */
1168: case 41: L41: /* ARGB */
1169: dumptree(a, a->op);
1170: rewrite(a->kids[0]);
1171: goto L611; /* # argb */
1172: case 49: L49: /* ASGNF */
1173: dumptree(a, a->op);
1174: aset(a,0);
1175: rewrite(a->kids[0]);
1176: rewrite(a->kids[1]);
1177: a->x.ints[0] = 8; /* ($%n) */
1178: a->kids[2] = a->kids[1];
1179: a->kids[1] = 0;
1180: a->x.ints[3] = 1; /* s */
1181: goto L638; /* s.%t $f%k,%y */
1182: case 50: L50: /* ASGND */
1183: dumptree(a, a->op);
1184: aset(a,0);
1185: rewrite(a->kids[0]);
1186: rewrite(a->kids[1]);
1187: a->x.ints[0] = 8; /* ($%n) */
1188: a->kids[2] = a->kids[1];
1189: a->kids[1] = 0;
1190: a->x.ints[3] = 2; /* d */
1191: goto L638; /* s.%t $f%k,%y */
1192: case 51: L51: /* ASGNC */
1193: dumptree(a, a->op);
1194: aset(a,0);
1195: rewrite(a->kids[0]);
1196: rewrite(a->kids[1]);
1197: a->x.ints[0] = 8; /* ($%n) */
1198: a->kids[2] = a->kids[1];
1199: a->kids[1] = 0;
1200: a->x.ints[3] = 3; /* b */
1201: goto L637; /* s%t $%k,%y */
1202: case 52: L52: /* ASGNS */
1203: dumptree(a, a->op);
1204: aset(a,0);
1205: rewrite(a->kids[0]);
1206: rewrite(a->kids[1]);
1207: a->x.ints[0] = 8; /* ($%n) */
1208: a->kids[2] = a->kids[1];
1209: a->kids[1] = 0;
1210: a->x.ints[3] = 4; /* h */
1211: goto L637; /* s%t $%k,%y */
1212: case 53: L53: /* ASGNI */
1213: dumptree(a, a->op);
1214: aset(a,0);
1215: rewrite(a->kids[0]);
1216: rewrite(a->kids[1]);
1217: a->x.ints[0] = 8; /* ($%n) */
1218: a->kids[2] = a->kids[1];
1219: a->kids[1] = 0;
1220: a->x.ints[3] = 5; /* w */
1221: goto L637; /* s%t $%k,%y */
1222: case 55: L55: /* ASGNP */
1223: dumptree(a, a->op);
1224: aset(a,0);
1225: rewrite(a->kids[0]);
1226: rewrite(a->kids[1]);
1227: a->x.ints[0] = 8; /* ($%n) */
1228: a->kids[2] = a->kids[1];
1229: a->kids[1] = 0;
1230: a->x.ints[3] = 5; /* w */
1231: goto L637; /* s%t $%k,%y */
1232: case 57: L57: /* ASGNB */
1233: dumptree(a, a->op);
1234: rewrite(a->kids[0]);
1235: rewrite(a->kids[1]);
1236: goto L610; /* # asgnb */
1237: case 65: L65: /* INDIRF */
1238: dumptree(a, a->op);
1239: setreg(a, rmap[F]);
1240: aset(a,0);
1241: rewrite(a->kids[0]);
1242: a->x.ints[0] = 8; /* ($%n) */
1243: a->x.ints[3] = 1; /* s */
1244: goto L632; /* l.%t $f%r,%y */
1245: case 66: L66: /* INDIRD */
1246: dumptree(a, a->op);
1247: setreg(a, rmap[D]);
1248: aset(a,0);
1249: rewrite(a->kids[0]);
1250: a->x.ints[0] = 8; /* ($%n) */
1251: a->x.ints[3] = 2; /* d */
1252: goto L632; /* l.%t $f%r,%y */
1253: case 67: L67: /* INDIRC */
1254: dumptree(a, a->op);
1255: setreg(a, rmap[C]);
1256: aset(a,0);
1257: rewrite(a->kids[0]);
1258: a->x.ints[0] = 8; /* ($%n) */
1259: a->x.ints[3] = 3; /* b */
1260: goto L617; /* l%t $%r,%y */
1261: case 68: L68: /* INDIRS */
1262: dumptree(a, a->op);
1263: setreg(a, rmap[S]);
1264: aset(a,0);
1265: rewrite(a->kids[0]);
1266: a->x.ints[0] = 8; /* ($%n) */
1267: a->x.ints[3] = 4; /* h */
1268: goto L617; /* l%t $%r,%y */
1269: case 69: L69: /* INDIRI */
1270: dumptree(a, a->op);
1271: setreg(a, rmap[I]);
1272: aset(a,0);
1273: rewrite(a->kids[0]);
1274: a->x.ints[0] = 8; /* ($%n) */
1275: a->x.ints[3] = 5; /* w */
1276: goto L617; /* l%t $%r,%y */
1277: case 71: L71: /* INDIRP */
1278: dumptree(a, a->op);
1279: setreg(a, rmap[P]);
1280: aset(a,0);
1281: rewrite(a->kids[0]);
1282: a->x.ints[0] = 8; /* ($%n) */
1283: a->x.ints[3] = 5; /* w */
1284: goto L617; /* l%t $%r,%y */
1285: case 73: L73: /* INDIRB */
1286: dumptree(a, a->op);
1287: setreg(a, rmap[P]);
1288: aset(a,0);
1289: rewrite(a->kids[0]);
1290: a->x.ints[0] = 1; /* $%n */
1291: goto L614; /* move $%r,%y */
1292: case 85: L85: /* CVCI */
1293: dumptree(a, a->op);
1294: setreg(a, rmap[I]);
1295: rewrite(a->kids[0]);
1296: a->x.ints[1] = 5; /* %c */
1297: a->x.ints[2] = 10; /* sra */
1298: a->syms[1] = &sym[10]; /* 24 */
1299: a->x.ints[1] = 5; /* %c */
1300: a->x.ints[0] = 1; /* $%n */
1301: goto L625; /* sll $%r,%y,%x; %f $%r,$%r,%x */
1302: case 86: L86: /* CVCU */
1303: dumptree(a, a->op);
1304: setreg(a, rmap[U]);
1305: rewrite(a->kids[0]);
1306: a->syms[1] = &sym[11]; /* 255 */
1307: a->x.ints[1] = 5; /* %c */
1308: a->x.ints[0] = 1; /* $%n */
1309: a->x.ints[2] = 1; /* and */
1310: goto L619; /* %f $%r,%y,%x */
1311: case 97: L97: /* CVDF */
1312: dumptree(a, a->op);
1313: setreg(a, rmap[F]);
1314: rewrite(a->kids[0]);
1315: a->x.ints[0] = 3; /* $f%n */
1316: a->x.ints[3] = 2; /* d */
1317: a->x.ints[2] = 3; /* cvt.s */
1318: goto L623; /* %f.%t $f%r,%y */
1319: case 101: L101: /* CVDI */
1320: dumptree(a, a->op);
1321: setreg(a, rmap[I]);
1322: rewrite(a->kids[0]);
1323: a->x.ints[0] = 3; /* $f%n */
1324: a->x.ints[3] = 2; /* d */
1325: a->x.ints[2] = 12; /* trunc.w */
1326: goto L618; /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
1327: case 114: L114: /* CVFD */
1328: dumptree(a, a->op);
1329: setreg(a, rmap[D]);
1330: rewrite(a->kids[0]);
1331: a->x.ints[0] = 3; /* $f%n */
1332: a->x.ints[3] = 1; /* s */
1333: a->x.ints[2] = 2; /* cvt.d */
1334: goto L623; /* %f.%t $f%r,%y */
1335: case 130: L130: /* CVID */
1336: dumptree(a, a->op);
1337: setreg(a, rmap[D]);
1338: rewrite(a->kids[0]);
1339: a->x.ints[3] = 5; /* w */
1340: a->x.ints[2] = 2; /* cvt.d */
1341: a->x.ints[0] = 1; /* $%n */
1342: goto L636; /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
1343: case 131: L131: /* CVIC */
1344: dumptree(a, a->op);
1345: setreg(a, rmap[C]);
1346: rewrite(a->kids[0]);
1347: a->x.ints[0] = 1; /* $%n */
1348: goto L614; /* move $%r,%y */
1349: case 132: L132: /* CVIS */
1350: dumptree(a, a->op);
1351: setreg(a, rmap[S]);
1352: rewrite(a->kids[0]);
1353: a->x.ints[0] = 1; /* $%n */
1354: goto L614; /* move $%r,%y */
1355: case 134: L134: /* CVIU */
1356: dumptree(a, a->op);
1357: setreg(a, rmap[U]);
1358: rewrite(a->kids[0]);
1359: a->x.ints[0] = 1; /* $%n */
1360: goto L614; /* move $%r,%y */
1361: case 150: L150: /* CVPU */
1362: dumptree(a, a->op);
1363: setreg(a, rmap[U]);
1364: rewrite(a->kids[0]);
1365: a->x.ints[0] = 1; /* $%n */
1366: goto L614; /* move $%r,%y */
1367: case 165: L165: /* CVSI */
1368: dumptree(a, a->op);
1369: setreg(a, rmap[I]);
1370: rewrite(a->kids[0]);
1371: a->x.ints[1] = 5; /* %c */
1372: a->x.ints[2] = 10; /* sra */
1373: a->syms[1] = &sym[9]; /* 16 */
1374: a->x.ints[1] = 5; /* %c */
1375: a->x.ints[0] = 1; /* $%n */
1376: goto L625; /* sll $%r,%y,%x; %f $%r,$%r,%x */
1377: case 166: L166: /* CVSU */
1378: dumptree(a, a->op);
1379: setreg(a, rmap[U]);
1380: rewrite(a->kids[0]);
1381: a->syms[1] = &sym[12]; /* 65535 */
1382: a->x.ints[1] = 5; /* %c */
1383: a->x.ints[0] = 1; /* $%n */
1384: a->x.ints[2] = 1; /* and */
1385: goto L619; /* %f $%r,%y,%x */
1386: case 179: L179: /* CVUC */
1387: dumptree(a, a->op);
1388: setreg(a, rmap[C]);
1389: rewrite(a->kids[0]);
1390: a->x.ints[0] = 1; /* $%n */
1391: goto L614; /* move $%r,%y */
1392: case 180: L180: /* CVUS */
1393: dumptree(a, a->op);
1394: setreg(a, rmap[S]);
1395: rewrite(a->kids[0]);
1396: a->x.ints[0] = 1; /* $%n */
1397: goto L614; /* move $%r,%y */
1398: case 181: L181: /* CVUI */
1399: dumptree(a, a->op);
1400: setreg(a, rmap[I]);
1401: rewrite(a->kids[0]);
1402: a->x.ints[0] = 1; /* $%n */
1403: goto L614; /* move $%r,%y */
1404: case 183: L183: /* CVUP */
1405: dumptree(a, a->op);
1406: setreg(a, rmap[P]);
1407: rewrite(a->kids[0]);
1408: a->x.ints[0] = 1; /* $%n */
1409: goto L614; /* move $%r,%y */
1410: case 193: L193: /* NEGF */
1411: dumptree(a, a->op);
1412: setreg(a, rmap[F]);
1413: rewrite(a->kids[0]);
1414: a->x.ints[0] = 3; /* $f%n */
1415: a->x.ints[3] = 1; /* s */
1416: a->x.ints[2] = 20; /* neg */
1417: goto L623; /* %f.%t $f%r,%y */
1418: case 194: L194: /* NEGD */
1419: dumptree(a, a->op);
1420: setreg(a, rmap[D]);
1421: rewrite(a->kids[0]);
1422: a->x.ints[0] = 3; /* $f%n */
1423: a->x.ints[3] = 2; /* d */
1424: a->x.ints[2] = 20; /* neg */
1425: goto L623; /* %f.%t $f%r,%y */
1426: case 197: L197: /* NEGI */
1427: dumptree(a, a->op);
1428: setreg(a, rmap[I]);
1429: rewrite(a->kids[0]);
1430: a->x.ints[0] = 1; /* $%n */
1431: a->x.ints[2] = 29; /* negu */
1432: goto L615; /* %f $%r,%y */
1433: case 209: L209: /* CALLF */
1434: dumptree(a, a->op);
1435: setreg(a, rmap[F]);
1436: rewrite(a->kids[0]);
1437: a->x.ints[0] = 1; /* $%n */
1438: setreg(a,f0);
1439: goto L609; /* jal %y # real */
1440: case 210: L210: /* CALLD */
1441: dumptree(a, a->op);
1442: setreg(a, rmap[D]);
1443: rewrite(a->kids[0]);
1444: a->x.ints[0] = 1; /* $%n */
1445: setreg(a,f0);
1446: goto L609; /* jal %y # real */
1447: case 213: L213: /* CALLI */
1448: dumptree(a, a->op);
1449: setreg(a, rmap[I]);
1450: rewrite(a->kids[0]);
1451: a->x.ints[0] = 1; /* $%n */
1452: setreg(a,ireg[2]);
1453: goto L608; /* jal %y # int */
1454: case 216: L216: /* CALLV */
1455: dumptree(a, a->op);
1456: rewrite(a->kids[0]);
1457: a->x.ints[0] = 1; /* $%n */
1458: setreg(a,ireg[2]);
1459: goto L608; /* jal %y # int */
1460: case 217: L217: /* CALLB */
1461: dumptree(a, a->op);
1462: rewrite(a->kids[0]);
1463: rewrite(a->kids[1]);
1464: a->x.ints[0] = 1; /* $%n */
1465: setreg(a,ireg[2]),rtarget(a,1,ireg[4]);
1466: goto L608; /* jal %y # int */
1467: case 225: L225: /* LOADF */
1468: dumptree(a, a->op);
1469: rewrite(a->kids[0]);
1470: a->x.ints[0] = 3; /* $f%n */
1471: a->x.ints[3] = 1; /* s */
1472: goto L635; /* mov.%t $f%r,%y */
1473: case 226: L226: /* LOADD */
1474: dumptree(a, a->op);
1475: rewrite(a->kids[0]);
1476: a->x.ints[0] = 3; /* $f%n */
1477: a->x.ints[3] = 2; /* d */
1478: goto L635; /* mov.%t $f%r,%y */
1479: case 227: L227: /* LOADC */
1480: dumptree(a, a->op);
1481: rewrite(a->kids[0]);
1482: a->x.ints[0] = 1; /* $%n */
1483: a->x.ints[3] = 3; /* b */
1484: goto L614; /* move $%r,%y */
1485: case 228: L228: /* LOADS */
1486: dumptree(a, a->op);
1487: rewrite(a->kids[0]);
1488: a->x.ints[0] = 1; /* $%n */
1489: a->x.ints[3] = 4; /* h */
1490: goto L614; /* move $%r,%y */
1491: case 229: L229: /* LOADI */
1492: case 230: L230: /* LOADU */
1493: case 231: L231: /* LOADP */
1494: dumptree(a, a->op);
1495: rewrite(a->kids[0]);
1496: a->x.ints[0] = 1; /* $%n */
1497: a->x.ints[3] = 5; /* w */
1498: goto L614; /* move $%r,%y */
1499: case 241: L241: /* RETF */
1500: case 242: L242: /* RETD */
1501: dumptree(a, a->op);
1502: rewrite(a->kids[0]);
1503: rtarget(a,0,f0);
1504: goto L622; /* # ret */
1505: case 245: L245: /* RETI */
1506: dumptree(a, a->op);
1507: rewrite(a->kids[0]);
1508: rtarget(a,0,ireg[2]);
1509: goto L622; /* # ret */
1510: case 248: L248: /* RETV */
1511: dumptree(a, a->op);
1512: goto L622; /* # ret */
1513: case 263: L263: /* ADDRGP */
1514: dumptree(a, a->op);
1515: setreg(a, rmap[P]);
1516: a->x.ints[0] = 5; /* %c */
1517: goto L612; /* la $%r,%y */
1518: case 279: L279: /* ADDRFP */
1519: dumptree(a, a->op);
1520: setreg(a, rmap[P]);
1521: a->x.ints[0] = 7; /* %c($sp) */
1522: goto L612; /* la $%r,%y */
1523: case 295: L295: /* ADDRLP */
1524: dumptree(a, a->op);
1525: setreg(a, rmap[P]);
1526: a->x.ints[0] = 7; /* %c($sp) */
1527: goto L612; /* la $%r,%y */
1528: case 305: L305: /* ADDF */
1529: dumptree(a, a->op);
1530: setreg(a, rmap[F]);
1531: rewrite(a->kids[0]);
1532: rewrite(a->kids[1]);
1533: a->x.ints[1] = 3; /* $f%n */
1534: a->x.ints[0] = 3; /* $f%n */
1535: a->x.ints[3] = 1; /* s */
1536: a->x.ints[2] = 14; /* add */
1537: goto L624; /* %f.%t $f%r,%y,%x */
1538: case 306: L306: /* ADDD */
1539: dumptree(a, a->op);
1540: setreg(a, rmap[D]);
1541: rewrite(a->kids[0]);
1542: rewrite(a->kids[1]);
1543: a->x.ints[1] = 3; /* $f%n */
1544: a->x.ints[0] = 3; /* $f%n */
1545: a->x.ints[3] = 2; /* d */
1546: a->x.ints[2] = 14; /* add */
1547: goto L624; /* %f.%t $f%r,%y,%x */
1548: case 309: L309: /* ADDI */
1549: dumptree(a, a->op);
1550: setreg(a, rmap[I]);
1551: rewrite(a->kids[0]);
1552: rewrite(a->kids[1]);
1553: a->x.ints[1] = 1; /* $%n */
1554: a->x.ints[0] = 1; /* $%n */
1555: a->x.ints[2] = 23; /* addu */
1556: goto L619; /* %f $%r,%y,%x */
1557: case 310: L310: /* ADDU */
1558: dumptree(a, a->op);
1559: setreg(a, rmap[U]);
1560: rewrite(a->kids[0]);
1561: rewrite(a->kids[1]);
1562: a->x.ints[1] = 1; /* $%n */
1563: a->x.ints[0] = 1; /* $%n */
1564: a->x.ints[2] = 23; /* addu */
1565: goto L619; /* %f $%r,%y,%x */
1566: case 311: L311: /* ADDP */
1567: dumptree(a, a->op);
1568: setreg(a, rmap[P]);
1569: rewrite(a->kids[0]);
1570: rewrite(a->kids[1]);
1571: a->x.ints[1] = 1; /* $%n */
1572: a->x.ints[0] = 1; /* $%n */
1573: a->x.ints[2] = 23; /* addu */
1574: goto L619; /* %f $%r,%y,%x */
1575: case 321: L321: /* SUBF */
1576: dumptree(a, a->op);
1577: setreg(a, rmap[F]);
1578: rewrite(a->kids[0]);
1579: rewrite(a->kids[1]);
1580: a->x.ints[1] = 3; /* $f%n */
1581: a->x.ints[0] = 3; /* $f%n */
1582: a->x.ints[3] = 1; /* s */
1583: a->x.ints[2] = 22; /* sub */
1584: goto L624; /* %f.%t $f%r,%y,%x */
1585: case 322: L322: /* SUBD */
1586: dumptree(a, a->op);
1587: setreg(a, rmap[D]);
1588: rewrite(a->kids[0]);
1589: rewrite(a->kids[1]);
1590: a->x.ints[1] = 3; /* $f%n */
1591: a->x.ints[0] = 3; /* $f%n */
1592: a->x.ints[3] = 2; /* d */
1593: a->x.ints[2] = 22; /* sub */
1594: goto L624; /* %f.%t $f%r,%y,%x */
1595: case 325: L325: /* SUBI */
1596: dumptree(a, a->op);
1597: setreg(a, rmap[I]);
1598: rewrite(a->kids[0]);
1599: rewrite(a->kids[1]);
1600: a->x.ints[1] = 1; /* $%n */
1601: a->x.ints[0] = 1; /* $%n */
1602: a->x.ints[2] = 31; /* subu */
1603: goto L619; /* %f $%r,%y,%x */
1604: case 326: L326: /* SUBU */
1605: dumptree(a, a->op);
1606: setreg(a, rmap[U]);
1607: rewrite(a->kids[0]);
1608: rewrite(a->kids[1]);
1609: a->x.ints[1] = 1; /* $%n */
1610: a->x.ints[0] = 1; /* $%n */
1611: a->x.ints[2] = 31; /* subu */
1612: goto L619; /* %f $%r,%y,%x */
1613: case 327: L327: /* SUBP */
1614: dumptree(a, a->op);
1615: setreg(a, rmap[P]);
1616: rewrite(a->kids[0]);
1617: rewrite(a->kids[1]);
1618: a->x.ints[1] = 1; /* $%n */
1619: a->x.ints[0] = 1; /* $%n */
1620: a->x.ints[2] = 31; /* subu */
1621: goto L619; /* %f $%r,%y,%x */
1622: case 341: L341: /* LSHI */
1623: dumptree(a, a->op);
1624: setreg(a, rmap[I]);
1625: rewrite(a->kids[0]);
1626: rewrite(a->kids[1]);
1627: a->x.ints[1] = 1; /* $%n */
1628: a->x.ints[0] = 1; /* $%n */
1629: a->x.ints[2] = 9; /* sll */
1630: goto L619; /* %f $%r,%y,%x */
1631: case 342: L342: /* LSHU */
1632: dumptree(a, a->op);
1633: setreg(a, rmap[U]);
1634: rewrite(a->kids[0]);
1635: rewrite(a->kids[1]);
1636: a->x.ints[1] = 1; /* $%n */
1637: a->x.ints[0] = 1; /* $%n */
1638: a->x.ints[2] = 9; /* sll */
1639: goto L619; /* %f $%r,%y,%x */
1640: case 357: L357: /* MODI */
1641: dumptree(a, a->op);
1642: setreg(a, rmap[I]);
1643: rewrite(a->kids[0]);
1644: rewrite(a->kids[1]);
1645: a->x.ints[1] = 1; /* $%n */
1646: a->x.ints[0] = 1; /* $%n */
1647: a->x.ints[2] = 21; /* rem */
1648: goto L619; /* %f $%r,%y,%x */
1649: case 358: L358: /* MODU */
1650: dumptree(a, a->op);
1651: setreg(a, rmap[U]);
1652: rewrite(a->kids[0]);
1653: rewrite(a->kids[1]);
1654: a->x.ints[1] = 1; /* $%n */
1655: a->x.ints[0] = 1; /* $%n */
1656: a->x.ints[2] = 30; /* remu */
1657: goto L619; /* %f $%r,%y,%x */
1658: case 373: L373: /* RSHI */
1659: dumptree(a, a->op);
1660: setreg(a, rmap[I]);
1661: rewrite(a->kids[0]);
1662: rewrite(a->kids[1]);
1663: a->x.ints[1] = 1; /* $%n */
1664: a->x.ints[0] = 1; /* $%n */
1665: a->x.ints[2] = 10; /* sra */
1666: goto L619; /* %f $%r,%y,%x */
1667: case 374: L374: /* RSHU */
1668: dumptree(a, a->op);
1669: setreg(a, rmap[U]);
1670: rewrite(a->kids[0]);
1671: rewrite(a->kids[1]);
1672: a->x.ints[1] = 1; /* $%n */
1673: a->x.ints[0] = 1; /* $%n */
1674: a->x.ints[2] = 11; /* srl */
1675: goto L619; /* %f $%r,%y,%x */
1676: case 390: L390: /* BANDU */
1677: dumptree(a, a->op);
1678: setreg(a, rmap[U]);
1679: rewrite(a->kids[0]);
1680: rewrite(a->kids[1]);
1681: a->x.ints[1] = 1; /* $%n */
1682: a->x.ints[0] = 1; /* $%n */
1683: a->x.ints[2] = 1; /* and */
1684: goto L619; /* %f $%r,%y,%x */
1685: case 406: L406: /* BCOMU */
1686: dumptree(a, a->op);
1687: setreg(a, rmap[U]);
1688: rewrite(a->kids[0]);
1689: a->x.ints[0] = 1; /* $%n */
1690: a->x.ints[2] = 7; /* not */
1691: goto L615; /* %f $%r,%y */
1692: case 422: L422: /* BORU */
1693: dumptree(a, a->op);
1694: setreg(a, rmap[U]);
1695: rewrite(a->kids[0]);
1696: rewrite(a->kids[1]);
1697: a->x.ints[1] = 1; /* $%n */
1698: a->x.ints[0] = 1; /* $%n */
1699: a->x.ints[2] = 8; /* or */
1700: goto L619; /* %f $%r,%y,%x */
1701: case 438: L438: /* BXORU */
1702: dumptree(a, a->op);
1703: setreg(a, rmap[U]);
1704: rewrite(a->kids[0]);
1705: rewrite(a->kids[1]);
1706: a->x.ints[1] = 1; /* $%n */
1707: a->x.ints[0] = 1; /* $%n */
1708: a->x.ints[2] = 13; /* xor */
1709: goto L619; /* %f $%r,%y,%x */
1710: case 449: L449: /* DIVF */
1711: dumptree(a, a->op);
1712: setreg(a, rmap[F]);
1713: rewrite(a->kids[0]);
1714: rewrite(a->kids[1]);
1715: a->x.ints[1] = 3; /* $f%n */
1716: a->x.ints[0] = 3; /* $f%n */
1717: a->x.ints[3] = 1; /* s */
1718: a->x.ints[2] = 15; /* div */
1719: goto L624; /* %f.%t $f%r,%y,%x */
1720: case 450: L450: /* DIVD */
1721: dumptree(a, a->op);
1722: setreg(a, rmap[D]);
1723: rewrite(a->kids[0]);
1724: rewrite(a->kids[1]);
1725: a->x.ints[1] = 3; /* $f%n */
1726: a->x.ints[0] = 3; /* $f%n */
1727: a->x.ints[3] = 2; /* d */
1728: a->x.ints[2] = 15; /* div */
1729: goto L624; /* %f.%t $f%r,%y,%x */
1730: case 453: L453: /* DIVI */
1731: dumptree(a, a->op);
1732: setreg(a, rmap[I]);
1733: rewrite(a->kids[0]);
1734: rewrite(a->kids[1]);
1735: a->x.ints[1] = 1; /* $%n */
1736: a->x.ints[0] = 1; /* $%n */
1737: a->x.ints[2] = 15; /* div */
1738: goto L619; /* %f $%r,%y,%x */
1739: case 454: L454: /* DIVU */
1740: dumptree(a, a->op);
1741: setreg(a, rmap[U]);
1742: rewrite(a->kids[0]);
1743: rewrite(a->kids[1]);
1744: a->x.ints[1] = 1; /* $%n */
1745: a->x.ints[0] = 1; /* $%n */
1746: a->x.ints[2] = 24; /* divu */
1747: goto L619; /* %f $%r,%y,%x */
1748: case 465: L465: /* MULF */
1749: dumptree(a, a->op);
1750: setreg(a, rmap[F]);
1751: rewrite(a->kids[0]);
1752: rewrite(a->kids[1]);
1753: a->x.ints[1] = 3; /* $f%n */
1754: a->x.ints[0] = 3; /* $f%n */
1755: a->x.ints[3] = 1; /* s */
1756: a->x.ints[2] = 5; /* mul */
1757: goto L624; /* %f.%t $f%r,%y,%x */
1758: case 466: L466: /* MULD */
1759: dumptree(a, a->op);
1760: setreg(a, rmap[D]);
1761: rewrite(a->kids[0]);
1762: rewrite(a->kids[1]);
1763: a->x.ints[1] = 3; /* $f%n */
1764: a->x.ints[0] = 3; /* $f%n */
1765: a->x.ints[3] = 2; /* d */
1766: a->x.ints[2] = 5; /* mul */
1767: goto L624; /* %f.%t $f%r,%y,%x */
1768: case 469: L469: /* MULI */
1769: dumptree(a, a->op);
1770: setreg(a, rmap[I]);
1771: rewrite(a->kids[0]);
1772: rewrite(a->kids[1]);
1773: a->x.ints[1] = 1; /* $%n */
1774: a->x.ints[0] = 1; /* $%n */
1775: a->x.ints[2] = 5; /* mul */
1776: goto L619; /* %f $%r,%y,%x */
1777: case 470: L470: /* MULU */
1778: dumptree(a, a->op);
1779: setreg(a, rmap[U]);
1780: rewrite(a->kids[0]);
1781: rewrite(a->kids[1]);
1782: a->x.ints[1] = 1; /* $%n */
1783: a->x.ints[0] = 1; /* $%n */
1784: a->x.ints[2] = 5; /* mul */
1785: goto L619; /* %f $%r,%y,%x */
1786: case 481: L481: /* EQF */
1787: dumptree(a, a->op);
1788: rewrite(a->kids[0]);
1789: rewrite(a->kids[1]);
1790: a->syms[2] = a->syms[0];
1791: a->x.ints[1] = 3; /* $f%n */
1792: a->x.ints[0] = 3; /* $f%n */
1793: a->x.ints[3] = 1; /* s */
1794: a->x.ints[2] = 4; /* eq */
1795: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1796: case 482: L482: /* EQD */
1797: dumptree(a, a->op);
1798: rewrite(a->kids[0]);
1799: rewrite(a->kids[1]);
1800: a->syms[2] = a->syms[0];
1801: a->x.ints[1] = 3; /* $f%n */
1802: a->x.ints[0] = 3; /* $f%n */
1803: a->x.ints[3] = 2; /* d */
1804: a->x.ints[2] = 4; /* eq */
1805: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1806: case 485: L485: /* EQI */
1807: dumptree(a, a->op);
1808: rewrite(a->kids[0]);
1809: rewrite(a->kids[1]);
1810: a->syms[2] = a->syms[0];
1811: a->x.ints[1] = 1; /* $%n */
1812: a->x.ints[0] = 1; /* $%n */
1813: a->x.ints[2] = 4; /* eq */
1814: goto L627; /* b%f %y,%x,%r */
1815: case 497: L497: /* GEF */
1816: dumptree(a, a->op);
1817: rewrite(a->kids[0]);
1818: rewrite(a->kids[1]);
1819: a->syms[2] = a->syms[0];
1820: a->x.ints[1] = 3; /* $f%n */
1821: a->x.ints[0] = 3; /* $f%n */
1822: a->x.ints[3] = 1; /* s */
1823: a->x.ints[2] = 19; /* lt */
1824: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1825: case 498: L498: /* GED */
1826: dumptree(a, a->op);
1827: rewrite(a->kids[0]);
1828: rewrite(a->kids[1]);
1829: a->syms[2] = a->syms[0];
1830: a->x.ints[1] = 3; /* $f%n */
1831: a->x.ints[0] = 3; /* $f%n */
1832: a->x.ints[3] = 2; /* d */
1833: a->x.ints[2] = 19; /* lt */
1834: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1835: case 501: L501: /* GEI */
1836: dumptree(a, a->op);
1837: rewrite(a->kids[0]);
1838: rewrite(a->kids[1]);
1839: a->syms[2] = a->syms[0];
1840: a->x.ints[1] = 1; /* $%n */
1841: a->x.ints[0] = 1; /* $%n */
1842: a->x.ints[2] = 16; /* ge */
1843: goto L627; /* b%f %y,%x,%r */
1844: case 502: L502: /* GEU */
1845: dumptree(a, a->op);
1846: rewrite(a->kids[0]);
1847: rewrite(a->kids[1]);
1848: a->syms[2] = a->syms[0];
1849: a->x.ints[1] = 1; /* $%n */
1850: a->x.ints[0] = 1; /* $%n */
1851: a->x.ints[2] = 25; /* geu */
1852: goto L627; /* b%f %y,%x,%r */
1853: case 513: L513: /* GTF */
1854: dumptree(a, a->op);
1855: rewrite(a->kids[0]);
1856: rewrite(a->kids[1]);
1857: a->syms[2] = a->syms[0];
1858: a->x.ints[1] = 3; /* $f%n */
1859: a->x.ints[0] = 3; /* $f%n */
1860: a->x.ints[3] = 1; /* s */
1861: a->x.ints[2] = 18; /* le */
1862: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1863: case 514: L514: /* GTD */
1864: dumptree(a, a->op);
1865: rewrite(a->kids[0]);
1866: rewrite(a->kids[1]);
1867: a->syms[2] = a->syms[0];
1868: a->x.ints[1] = 3; /* $f%n */
1869: a->x.ints[0] = 3; /* $f%n */
1870: a->x.ints[3] = 2; /* d */
1871: a->x.ints[2] = 18; /* le */
1872: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1873: case 517: L517: /* GTI */
1874: dumptree(a, a->op);
1875: rewrite(a->kids[0]);
1876: rewrite(a->kids[1]);
1877: a->syms[2] = a->syms[0];
1878: a->x.ints[1] = 1; /* $%n */
1879: a->x.ints[0] = 1; /* $%n */
1880: a->x.ints[2] = 17; /* gt */
1881: goto L627; /* b%f %y,%x,%r */
1882: case 518: L518: /* GTU */
1883: dumptree(a, a->op);
1884: rewrite(a->kids[0]);
1885: rewrite(a->kids[1]);
1886: a->syms[2] = a->syms[0];
1887: a->x.ints[1] = 1; /* $%n */
1888: a->x.ints[0] = 1; /* $%n */
1889: a->x.ints[2] = 26; /* gtu */
1890: goto L627; /* b%f %y,%x,%r */
1891: case 529: L529: /* LEF */
1892: dumptree(a, a->op);
1893: rewrite(a->kids[0]);
1894: rewrite(a->kids[1]);
1895: a->syms[2] = a->syms[0];
1896: a->x.ints[1] = 3; /* $f%n */
1897: a->x.ints[0] = 3; /* $f%n */
1898: a->x.ints[3] = 1; /* s */
1899: a->x.ints[2] = 18; /* le */
1900: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1901: case 530: L530: /* LED */
1902: dumptree(a, a->op);
1903: rewrite(a->kids[0]);
1904: rewrite(a->kids[1]);
1905: a->syms[2] = a->syms[0];
1906: a->x.ints[1] = 3; /* $f%n */
1907: a->x.ints[0] = 3; /* $f%n */
1908: a->x.ints[3] = 2; /* d */
1909: a->x.ints[2] = 18; /* le */
1910: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1911: case 533: L533: /* LEI */
1912: dumptree(a, a->op);
1913: rewrite(a->kids[0]);
1914: rewrite(a->kids[1]);
1915: a->syms[2] = a->syms[0];
1916: a->x.ints[1] = 1; /* $%n */
1917: a->x.ints[0] = 1; /* $%n */
1918: a->x.ints[2] = 18; /* le */
1919: goto L627; /* b%f %y,%x,%r */
1920: case 534: L534: /* LEU */
1921: dumptree(a, a->op);
1922: rewrite(a->kids[0]);
1923: rewrite(a->kids[1]);
1924: a->syms[2] = a->syms[0];
1925: a->x.ints[1] = 1; /* $%n */
1926: a->x.ints[0] = 1; /* $%n */
1927: a->x.ints[2] = 27; /* leu */
1928: goto L627; /* b%f %y,%x,%r */
1929: case 545: L545: /* LTF */
1930: dumptree(a, a->op);
1931: rewrite(a->kids[0]);
1932: rewrite(a->kids[1]);
1933: a->syms[2] = a->syms[0];
1934: a->x.ints[1] = 3; /* $f%n */
1935: a->x.ints[0] = 3; /* $f%n */
1936: a->x.ints[3] = 1; /* s */
1937: a->x.ints[2] = 19; /* lt */
1938: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1939: case 546: L546: /* LTD */
1940: dumptree(a, a->op);
1941: rewrite(a->kids[0]);
1942: rewrite(a->kids[1]);
1943: a->syms[2] = a->syms[0];
1944: a->x.ints[1] = 3; /* $f%n */
1945: a->x.ints[0] = 3; /* $f%n */
1946: a->x.ints[3] = 2; /* d */
1947: a->x.ints[2] = 19; /* lt */
1948: goto L631; /* c.%f.%t %y,%x; bc1t %r */
1949: case 549: L549: /* LTI */
1950: dumptree(a, a->op);
1951: rewrite(a->kids[0]);
1952: rewrite(a->kids[1]);
1953: a->syms[2] = a->syms[0];
1954: a->x.ints[1] = 1; /* $%n */
1955: a->x.ints[0] = 1; /* $%n */
1956: a->x.ints[2] = 19; /* lt */
1957: goto L627; /* b%f %y,%x,%r */
1958: case 550: L550: /* LTU */
1959: dumptree(a, a->op);
1960: rewrite(a->kids[0]);
1961: rewrite(a->kids[1]);
1962: a->syms[2] = a->syms[0];
1963: a->x.ints[1] = 1; /* $%n */
1964: a->x.ints[0] = 1; /* $%n */
1965: a->x.ints[2] = 28; /* ltu */
1966: goto L627; /* b%f %y,%x,%r */
1967: case 561: L561: /* NEF */
1968: dumptree(a, a->op);
1969: rewrite(a->kids[0]);
1970: rewrite(a->kids[1]);
1971: a->syms[2] = a->syms[0];
1972: a->x.ints[1] = 3; /* $f%n */
1973: a->x.ints[0] = 3; /* $f%n */
1974: a->x.ints[3] = 1; /* s */
1975: a->x.ints[2] = 4; /* eq */
1976: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1977: case 562: L562: /* NED */
1978: dumptree(a, a->op);
1979: rewrite(a->kids[0]);
1980: rewrite(a->kids[1]);
1981: a->syms[2] = a->syms[0];
1982: a->x.ints[1] = 3; /* $f%n */
1983: a->x.ints[0] = 3; /* $f%n */
1984: a->x.ints[3] = 2; /* d */
1985: a->x.ints[2] = 4; /* eq */
1986: goto L630; /* c.%f.%t %y,%x; bc1f %r */
1987: case 565: L565: /* NEI */
1988: dumptree(a, a->op);
1989: rewrite(a->kids[0]);
1990: rewrite(a->kids[1]);
1991: a->syms[2] = a->syms[0];
1992: a->x.ints[1] = 1; /* $%n */
1993: a->x.ints[0] = 1; /* $%n */
1994: a->x.ints[2] = 6; /* ne */
1995: goto L627; /* b%f %y,%x,%r */
1996: case 584: L584: /* JUMPV */
1997: dumptree(a, a->op);
1998: rewrite(a->kids[0]);
1999: a->x.ints[0] = 1; /* $%n */
2000: goto L629; /* j %y */
2001: case 600: L600: /* LABELV */
2002: dumptree(a, a->op);
2003: a->x.ints[0] = 5; /* %c */
2004: goto L639; /* %y: */
2005: case 608: L608: /* jal %y # int */
2006: dumptree(a, 608);
2007: b = a->kids[0];
2008: if (
2009: a->x.ints[0] == 1 /* $%n */
2010: && b->op == 612 /* la $%r,%y */
2011: && b->x.ints[0] == 5 /* %c */
2012: ) {
2013: if (--b->count > 0)
2014: if (c=b->kids[0]) ++c->count;
2015: a->syms[0] = b->syms[0];
2016: a->x.ints[0] = b->x.ints[0];
2017: a->kids[0] = b->kids[0];
2018: goto L608; /* jal %y # int */
2019: }
2020: a->op = 608;
2021: break;
2022: case 609: L609: /* jal %y # real */
2023: dumptree(a, 609);
2024: b = a->kids[0];
2025: if (
2026: a->x.ints[0] == 1 /* $%n */
2027: && b->op == 612 /* la $%r,%y */
2028: && b->x.ints[0] == 5 /* %c */
2029: ) {
2030: if (--b->count > 0)
2031: if (c=b->kids[0]) ++c->count;
2032: a->syms[0] = b->syms[0];
2033: a->x.ints[0] = b->x.ints[0];
2034: a->kids[0] = b->kids[0];
2035: goto L609; /* jal %y # real */
2036: }
2037: a->op = 609;
2038: break;
2039: case 610: L610: /* # asgnb */
2040: dumptree(a, 610);
2041: a->op = 610;
2042: break;
2043: case 611: L611: /* # argb */
2044: dumptree(a, 611);
2045: a->op = 611;
2046: break;
2047: case 612: L612: /* la $%r,%y */
2048: dumptree(a, 612);
2049: a->op = 612;
2050: break;
2051: case 613: L613: /* mfc1 $%r,%y */
2052: dumptree(a, 613);
2053: a->op = 613;
2054: break;
2055: case 614: L614: /* move $%r,%y */
2056: dumptree(a, 614);
2057: switch (a->x.ints[0]) {
2058: case 1: /* $%n */
2059: b = a->kids[0];
2060: switch (b->op) {
2061: case 612: /* la $%r,%y */
2062: if (
2063: b->count == 1
2064: ) {
2065: if (--b->count > 0) {
2066: if (c=b->kids[0]) ++c->count;
2067: if (c=b->kids[1]) ++c->count;
2068: }
2069: a->syms[1] = b->syms[1];
2070: a->kids[1] = b->kids[1];
2071: a->x.ints[1] = b->x.ints[1];
2072: a->syms[0] = b->syms[0];
2073: a->x.ints[0] = b->x.ints[0];
2074: a->kids[0] = b->kids[0];
2075: a->x.ints[2] = b->x.ints[2];
2076: a->x.ints[3] = b->x.ints[3];
2077: goto L612; /* la $%r,%y */
2078: }
2079: break;
2080: case 613: /* mfc1 $%r,%y */
2081: if (
2082: b->count == 1
2083: ) {
2084: if (--b->count > 0) {
2085: if (c=b->kids[0]) ++c->count;
2086: if (c=b->kids[1]) ++c->count;
2087: }
2088: a->syms[1] = b->syms[1];
2089: a->kids[1] = b->kids[1];
2090: a->x.ints[1] = b->x.ints[1];
2091: a->syms[0] = b->syms[0];
2092: a->x.ints[0] = b->x.ints[0];
2093: a->kids[0] = b->kids[0];
2094: a->x.ints[2] = b->x.ints[2];
2095: a->x.ints[3] = b->x.ints[3];
2096: goto L613; /* mfc1 $%r,%y */
2097: }
2098: break;
2099: case 614: /* move $%r,%y */
2100: if (
2101: b->count == 1
2102: ) {
2103: if (--b->count > 0) {
2104: if (c=b->kids[0]) ++c->count;
2105: if (c=b->kids[1]) ++c->count;
2106: }
2107: a->syms[1] = b->syms[1];
2108: a->kids[1] = b->kids[1];
2109: a->x.ints[1] = b->x.ints[1];
2110: a->syms[0] = b->syms[0];
2111: a->x.ints[0] = b->x.ints[0];
2112: a->kids[0] = b->kids[0];
2113: a->x.ints[2] = b->x.ints[2];
2114: a->x.ints[3] = b->x.ints[3];
2115: goto L614; /* move $%r,%y */
2116: }
2117: break;
2118: case 615: /* %f $%r,%y */
2119: if (
2120: b->count == 1
2121: ) {
2122: if (--b->count > 0) {
2123: if (c=b->kids[0]) ++c->count;
2124: if (c=b->kids[1]) ++c->count;
2125: }
2126: a->syms[1] = b->syms[1];
2127: a->kids[1] = b->kids[1];
2128: a->x.ints[1] = b->x.ints[1];
2129: a->syms[0] = b->syms[0];
2130: a->x.ints[0] = b->x.ints[0];
2131: a->kids[0] = b->kids[0];
2132: a->x.ints[2] = b->x.ints[2];
2133: a->x.ints[3] = b->x.ints[3];
2134: goto L615; /* %f $%r,%y */
2135: }
2136: break;
2137: case 616: /* li $%r,%y */
2138: if (
2139: b->count == 1
2140: ) {
2141: if (--b->count > 0) {
2142: if (c=b->kids[0]) ++c->count;
2143: if (c=b->kids[1]) ++c->count;
2144: }
2145: a->syms[1] = b->syms[1];
2146: a->kids[1] = b->kids[1];
2147: a->x.ints[1] = b->x.ints[1];
2148: a->syms[0] = b->syms[0];
2149: a->x.ints[0] = b->x.ints[0];
2150: a->kids[0] = b->kids[0];
2151: a->x.ints[2] = b->x.ints[2];
2152: a->x.ints[3] = b->x.ints[3];
2153: goto L616; /* li $%r,%y */
2154: }
2155: break;
2156: case 617: /* l%t $%r,%y */
2157: if (
2158: b->count == 1
2159: ) {
2160: if (--b->count > 0) {
2161: if (c=b->kids[0]) ++c->count;
2162: if (c=b->kids[1]) ++c->count;
2163: }
2164: a->syms[1] = b->syms[1];
2165: a->kids[1] = b->kids[1];
2166: a->x.ints[1] = b->x.ints[1];
2167: a->syms[0] = b->syms[0];
2168: a->x.ints[0] = b->x.ints[0];
2169: a->kids[0] = b->kids[0];
2170: a->x.ints[2] = b->x.ints[2];
2171: a->x.ints[3] = b->x.ints[3];
2172: goto L617; /* l%t $%r,%y */
2173: }
2174: break;
2175: case 618: /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
2176: if (
2177: b->count == 1
2178: ) {
2179: if (--b->count > 0) {
2180: if (c=b->kids[0]) ++c->count;
2181: if (c=b->kids[1]) ++c->count;
2182: }
2183: a->syms[1] = b->syms[1];
2184: a->kids[1] = b->kids[1];
2185: a->x.ints[1] = b->x.ints[1];
2186: a->syms[0] = b->syms[0];
2187: a->x.ints[0] = b->x.ints[0];
2188: a->kids[0] = b->kids[0];
2189: a->x.ints[2] = b->x.ints[2];
2190: a->x.ints[3] = b->x.ints[3];
2191: goto L618; /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
2192: }
2193: break;
2194: case 619: /* %f $%r,%y,%x */
2195: if (
2196: b->count == 1
2197: ) {
2198: if (--b->count > 0) {
2199: if (c=b->kids[0]) ++c->count;
2200: if (c=b->kids[1]) ++c->count;
2201: }
2202: a->syms[1] = b->syms[1];
2203: a->kids[1] = b->kids[1];
2204: a->x.ints[1] = b->x.ints[1];
2205: a->syms[0] = b->syms[0];
2206: a->x.ints[0] = b->x.ints[0];
2207: a->kids[0] = b->kids[0];
2208: a->x.ints[2] = b->x.ints[2];
2209: a->x.ints[3] = b->x.ints[3];
2210: goto L619; /* %f $%r,%y,%x */
2211: }
2212: break;
2213: case 620: /* l%tu $%r,%y */
2214: if (
2215: b->count == 1
2216: ) {
2217: if (--b->count > 0) {
2218: if (c=b->kids[0]) ++c->count;
2219: if (c=b->kids[1]) ++c->count;
2220: }
2221: a->syms[1] = b->syms[1];
2222: a->kids[1] = b->kids[1];
2223: a->x.ints[1] = b->x.ints[1];
2224: a->syms[0] = b->syms[0];
2225: a->x.ints[0] = b->x.ints[0];
2226: a->kids[0] = b->kids[0];
2227: a->x.ints[2] = b->x.ints[2];
2228: a->x.ints[3] = b->x.ints[3];
2229: goto L620; /* l%tu $%r,%y */
2230: }
2231: break;
2232: case 621: /* # nop */
2233: if (
2234: a->syms[RX] == rmap[I]
2235: ) {
2236: --b->count;
2237: a->syms[2] = b->syms[2];
2238: a->kids[0] = 0;
2239: goto L621; /* # nop */
2240: }
2241: break;
2242: }
2243: break;
2244: case 2: /* $%c */
2245: if (
2246: rmcopy(a)
2247: ) {
2248: a->syms[2] = a->syms[0];
2249: goto L621; /* # nop */
2250: }
2251: break;
2252: }
2253: a->op = 614;
2254: break;
2255: case 615: L615: /* %f $%r,%y */
2256: dumptree(a, 615);
2257: a->op = 615;
2258: break;
2259: case 616: L616: /* li $%r,%y */
2260: dumptree(a, 616);
2261: if (
2262: a->x.ints[0] == 5 /* %c */
2263: && a->syms[0]->x.name == sym[1].x.name /* 0 */
2264: ) {
2265: setreg(a,ireg[0]);
2266: goto L621; /* # nop */
2267: }
2268: a->op = 616;
2269: break;
2270: case 617: L617: /* l%t $%r,%y */
2271: dumptree(a, 617);
2272: switch (a->x.ints[0]) {
2273: case 7: /* %c($sp) */
2274: if (
2275: isregvar(a->syms[0])
2276: ) {
2277: a->x.ints[0] = 2; /* $%c */
2278: goto L614; /* move $%r,%y */
2279: }
2280: break;
2281: case 8: /* ($%n) */
2282: b = a->kids[0];
2283: if (
2284: b->op == 612 /* la $%r,%y */
2285: ) {
2286: if (--b->count > 0)
2287: if (c=b->kids[0]) ++c->count;
2288: a->syms[0] = b->syms[0];
2289: a->x.ints[0] = b->x.ints[0];
2290: a->kids[0] = b->kids[0];
2291: goto L617; /* l%t $%r,%y */
2292: }
2293: break;
2294: }
2295: b = a->kids[0];
2296: if (
2297: a->x.ints[3] == 2 /* d */
2298: && a->x.ints[0] == 3 /* $f%n */
2299: && b->op == 632 /* l.%t $f%r,%y */
2300: && b->count == 1
2301: ) {
2302: if (--b->count > 0)
2303: if (c=b->kids[0]) ++c->count;
2304: a->syms[0] = b->syms[0];
2305: a->x.ints[0] = b->x.ints[0];
2306: a->kids[0] = b->kids[0];
2307: a->x.ints[3] = b->x.ints[3];
2308: goto L617; /* l%t $%r,%y */
2309: }
2310: a->op = 617;
2311: break;
2312: case 618: L618: /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
2313: dumptree(a, 618);
2314: b = a->kids[0];
2315: if (
2316: a->x.ints[2] == 12 /* trunc.w */
2317: && a->x.ints[3] == 2 /* d */
2318: && a->x.ints[0] == 3 /* $f%n */
2319: && b->op == 623 /* %f.%t $f%r,%y */
2320: && b->x.ints[2] == 2 /* cvt.d */
2321: && b->x.ints[3] == 1 /* s */
2322: ) {
2323: if (--b->count > 0)
2324: if (c=b->kids[0]) ++c->count;
2325: a->x.ints[3] = 1; /* s */
2326: a->syms[0] = b->syms[0];
2327: a->x.ints[0] = b->x.ints[0];
2328: a->kids[0] = b->kids[0];
2329: goto L618; /* %f.%t $f2,%y,$%r; mfc1 $%r,$f2 */
2330: }
2331: a->op = 618;
2332: break;
2333: case 619: L619: /* %f $%r,%y,%x */
2334: dumptree(a, 619);
2335: if (
2336: a->x.ints[2] == 23 /* addu */
2337: && a->x.ints[1] == 1 /* $%n */
2338: ) {
2339: b = a->kids[1];
2340: if (
2341: b->op == 612 /* la $%r,%y */
2342: && b->x.ints[0] == 5 /* %c */
2343: ) {
2344: --b->count;
2345: a->x.ints[0] = 6; /* %c($%n) */
2346: a->syms[0] = b->syms[0];
2347: a->kids[1] = 0;
2348: goto L612; /* la $%r,%y */
2349: }
2350: if (
2351: atst(a)
2352: && b->op == 616 /* li $%r,%y */
2353: && b->x.ints[0] == 5 /* %c */
2354: ) {
2355: --b->count;
2356: a->x.ints[0] = 6; /* %c($%n) */
2357: a->syms[0] = b->syms[0];
2358: a->kids[1] = 0;
2359: goto L612; /* la $%r,%y */
2360: }
2361: }
2362: b = a->kids[1];
2363: if (
2364: a->x.ints[1] == 1 /* $%n */
2365: && b->op == 616 /* li $%r,%y */
2366: && b->x.ints[0] == 5 /* %c */
2367: ) {
2368: if (--b->count > 0)
2369: if (c=b->kids[0]) ++c->count;
2370: a->syms[1] = b->syms[0];
2371: a->x.ints[1] = b->x.ints[0];
2372: a->kids[1] = b->kids[0];
2373: goto L619; /* %f $%r,%y,%x */
2374: }
2375: if (
2376: a->x.ints[2] == 1 /* and */
2377: && a->x.ints[0] == 1 /* $%n */
2378: && a->x.ints[1] == 5 /* %c */
2379: ) {
2380: b = a->kids[0];
2381: if (
2382: a->syms[1]->x.name == sym[12].x.name /* 65535 */
2383: && b->op == 617 /* l%t $%r,%y */
2384: && b->x.ints[3] == 4 /* h */
2385: && b->count == 1
2386: ) {
2387: if (--b->count > 0)
2388: if (c=b->kids[0]) ++c->count;
2389: a->x.ints[3] = b->x.ints[3];
2390: a->syms[0] = b->syms[0];
2391: a->x.ints[0] = b->x.ints[0];
2392: a->kids[0] = b->kids[0];
2393: goto L620; /* l%tu $%r,%y */
2394: }
2395: if (
2396: a->syms[1]->x.name == sym[11].x.name /* 255 */
2397: && b->op == 617 /* l%t $%r,%y */
2398: && b->x.ints[3] == 3 /* b */
2399: && b->count == 1
2400: ) {
2401: if (--b->count > 0)
2402: if (c=b->kids[0]) ++c->count;
2403: a->x.ints[3] = b->x.ints[3];
2404: a->syms[0] = b->syms[0];
2405: a->x.ints[0] = b->x.ints[0];
2406: a->kids[0] = b->kids[0];
2407: goto L620; /* l%tu $%r,%y */
2408: }
2409: }
2410: a->op = 619;
2411: break;
2412: case 620: L620: /* l%tu $%r,%y */
2413: dumptree(a, 620);
2414: a->op = 620;
2415: break;
2416: case 621: L621: /* # nop */
2417: dumptree(a, 621);
2418: a->op = 621;
2419: break;
2420: case 622: L622: /* # ret */
2421: dumptree(a, 622);
2422: a->op = 622;
2423: break;
2424: case 623: L623: /* %f.%t $f%r,%y */
2425: dumptree(a, 623);
2426: a->op = 623;
2427: break;
2428: case 624: L624: /* %f.%t $f%r,%y,%x */
2429: dumptree(a, 624);
2430: a->op = 624;
2431: break;
2432: case 625: L625: /* sll $%r,%y,%x; %f $%r,$%r,%x */
2433: dumptree(a, 625);
2434: b = a->kids[0];
2435: if (
2436: a->x.ints[0] == 1 /* $%n */
2437: && a->x.ints[2] == 10 /* sra */
2438: && a->x.ints[1] == 5 /* %c */
2439: && b->op == 617 /* l%t $%r,%y */
2440: ) {
2441: switch (b->x.ints[3]) {
2442: case 3: /* b */
2443: if (
2444: b->count == 1
2445: && a->syms[1]->x.name == sym[10].x.name /* 24 */
2446: ) {
2447: if (--b->count > 0)
2448: if (c=b->kids[0]) ++c->count;
2449: a->x.ints[3] = b->x.ints[3];
2450: a->syms[0] = b->syms[0];
2451: a->x.ints[0] = b->x.ints[0];
2452: a->kids[0] = b->kids[0];
2453: goto L617; /* l%t $%r,%y */
2454: }
2455: break;
2456: case 4: /* h */
2457: if (
2458: b->count == 1
2459: && a->syms[1]->x.name == sym[9].x.name /* 16 */
2460: ) {
2461: if (--b->count > 0)
2462: if (c=b->kids[0]) ++c->count;
2463: a->x.ints[3] = b->x.ints[3];
2464: a->syms[0] = b->syms[0];
2465: a->x.ints[0] = b->x.ints[0];
2466: a->kids[0] = b->kids[0];
2467: goto L617; /* l%t $%r,%y */
2468: }
2469: break;
2470: }
2471: }
2472: a->op = 625;
2473: break;
2474: case 626: L626: /* # label */
2475: dumptree(a, 626);
2476: a->op = 626;
2477: break;
2478: case 627: L627: /* b%f %y,%x,%r */
2479: dumptree(a, 627);
2480: b = a->kids[1];
2481: if (
2482: a->x.ints[1] == 1 /* $%n */
2483: && b->op == 616 /* li $%r,%y */
2484: && b->x.ints[0] == 5 /* %c */
2485: ) {
2486: if (--b->count > 0)
2487: if (c=b->kids[0]) ++c->count;
2488: a->syms[1] = b->syms[0];
2489: a->x.ints[1] = b->x.ints[0];
2490: a->kids[1] = b->kids[0];
2491: goto L627; /* b%f %y,%x,%r */
2492: }
2493: a->op = 627;
2494: break;
2495: case 628: L628: /* b %r */
2496: dumptree(a, 628);
2497: a->op = 628;
2498: break;
2499: case 629: L629: /* j %y */
2500: dumptree(a, 629);
2501: b = a->kids[0];
2502: if (
2503: a->x.ints[0] == 1 /* $%n */
2504: && a->kids[0] == a->kids[0]
2505: && b->count == 1
2506: && b->op == 612 /* la $%r,%y */
2507: && b->x.ints[0] == 5 /* %c */
2508: ) {
2509: --b->count;
2510: --b->count;
2511: a->syms[2] = b->syms[0];
2512: a->kids[0] = 0;
2513: a->kids[0] = 0;
2514: goto L628; /* b %r */
2515: }
2516: a->op = 629;
2517: break;
2518: case 630: L630: /* c.%f.%t %y,%x; bc1f %r */
2519: dumptree(a, 630);
2520: a->op = 630;
2521: break;
2522: case 631: L631: /* c.%f.%t %y,%x; bc1t %r */
2523: dumptree(a, 631);
2524: a->op = 631;
2525: break;
2526: case 632: L632: /* l.%t $f%r,%y */
2527: dumptree(a, 632);
2528: switch (a->x.ints[0]) {
2529: case 7: /* %c($sp) */
2530: if (
2531: isregvar(a->syms[0])
2532: ) {
2533: a->x.ints[0] = 4; /* $f%c */
2534: goto L635; /* mov.%t $f%r,%y */
2535: }
2536: break;
2537: case 8: /* ($%n) */
2538: b = a->kids[0];
2539: if (
2540: b->op == 612 /* la $%r,%y */
2541: ) {
2542: if (--b->count > 0)
2543: if (c=b->kids[0]) ++c->count;
2544: a->syms[0] = b->syms[0];
2545: a->x.ints[0] = b->x.ints[0];
2546: a->kids[0] = b->kids[0];
2547: goto L632; /* l.%t $f%r,%y */
2548: }
2549: break;
2550: }
2551: a->op = 632;
2552: break;
2553: case 633: L633: /* li.%t $f%r,%y */
2554: dumptree(a, 633);
2555: a->op = 633;
2556: break;
2557: case 634: L634: /* mfc1.d $%r,%y */
2558: dumptree(a, 634);
2559: a->op = 634;
2560: break;
2561: case 635: L635: /* mov.%t $f%r,%y */
2562: dumptree(a, 635);
2563: switch (a->x.ints[0]) {
2564: case 3: /* $f%n */
2565: b = a->kids[0];
2566: switch (b->op) {
2567: case 621: /* # nop */
2568: if (
2569: a->syms[RX] == rmap[D]
2570: ) {
2571: --b->count;
2572: a->syms[2] = b->syms[2];
2573: a->kids[0] = 0;
2574: goto L621; /* # nop */
2575: }
2576: break;
2577: case 623: /* %f.%t $f%r,%y */
2578: if (
2579: b->count == 1
2580: ) {
2581: if (--b->count > 0) {
2582: if (c=b->kids[0]) ++c->count;
2583: if (c=b->kids[1]) ++c->count;
2584: }
2585: a->syms[1] = b->syms[1];
2586: a->kids[1] = b->kids[1];
2587: a->x.ints[1] = b->x.ints[1];
2588: a->syms[0] = b->syms[0];
2589: a->x.ints[0] = b->x.ints[0];
2590: a->kids[0] = b->kids[0];
2591: a->x.ints[2] = b->x.ints[2];
2592: a->x.ints[3] = b->x.ints[3];
2593: goto L623; /* %f.%t $f%r,%y */
2594: }
2595: break;
2596: case 624: /* %f.%t $f%r,%y,%x */
2597: if (
2598: b->count == 1
2599: ) {
2600: if (--b->count > 0) {
2601: if (c=b->kids[0]) ++c->count;
2602: if (c=b->kids[1]) ++c->count;
2603: }
2604: a->syms[1] = b->syms[1];
2605: a->kids[1] = b->kids[1];
2606: a->x.ints[1] = b->x.ints[1];
2607: a->syms[0] = b->syms[0];
2608: a->x.ints[0] = b->x.ints[0];
2609: a->kids[0] = b->kids[0];
2610: a->x.ints[2] = b->x.ints[2];
2611: a->x.ints[3] = b->x.ints[3];
2612: goto L624; /* %f.%t $f%r,%y,%x */
2613: }
2614: break;
2615: case 632: /* l.%t $f%r,%y */
2616: if (
2617: b->count == 1
2618: ) {
2619: if (--b->count > 0) {
2620: if (c=b->kids[0]) ++c->count;
2621: if (c=b->kids[1]) ++c->count;
2622: }
2623: a->syms[1] = b->syms[1];
2624: a->kids[1] = b->kids[1];
2625: a->x.ints[1] = b->x.ints[1];
2626: a->syms[0] = b->syms[0];
2627: a->x.ints[0] = b->x.ints[0];
2628: a->kids[0] = b->kids[0];
2629: a->x.ints[2] = b->x.ints[2];
2630: a->x.ints[3] = b->x.ints[3];
2631: goto L632; /* l.%t $f%r,%y */
2632: }
2633: break;
2634: case 633: /* li.%t $f%r,%y */
2635: if (
2636: b->count == 1
2637: ) {
2638: if (--b->count > 0) {
2639: if (c=b->kids[0]) ++c->count;
2640: if (c=b->kids[1]) ++c->count;
2641: }
2642: a->syms[1] = b->syms[1];
2643: a->kids[1] = b->kids[1];
2644: a->x.ints[1] = b->x.ints[1];
2645: a->syms[0] = b->syms[0];
2646: a->x.ints[0] = b->x.ints[0];
2647: a->kids[0] = b->kids[0];
2648: a->x.ints[2] = b->x.ints[2];
2649: a->x.ints[3] = b->x.ints[3];
2650: goto L633; /* li.%t $f%r,%y */
2651: }
2652: break;
2653: case 635: /* mov.%t $f%r,%y */
2654: if (
2655: b->count == 1
2656: ) {
2657: if (--b->count > 0) {
2658: if (c=b->kids[0]) ++c->count;
2659: if (c=b->kids[1]) ++c->count;
2660: }
2661: a->syms[1] = b->syms[1];
2662: a->kids[1] = b->kids[1];
2663: a->x.ints[1] = b->x.ints[1];
2664: a->syms[0] = b->syms[0];
2665: a->x.ints[0] = b->x.ints[0];
2666: a->kids[0] = b->kids[0];
2667: a->x.ints[2] = b->x.ints[2];
2668: a->x.ints[3] = b->x.ints[3];
2669: goto L635; /* mov.%t $f%r,%y */
2670: }
2671: break;
2672: case 636: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
2673: if (
2674: b->count == 1
2675: ) {
2676: if (--b->count > 0) {
2677: if (c=b->kids[0]) ++c->count;
2678: if (c=b->kids[1]) ++c->count;
2679: }
2680: a->syms[1] = b->syms[1];
2681: a->kids[1] = b->kids[1];
2682: a->x.ints[1] = b->x.ints[1];
2683: a->syms[0] = b->syms[0];
2684: a->x.ints[0] = b->x.ints[0];
2685: a->kids[0] = b->kids[0];
2686: a->x.ints[2] = b->x.ints[2];
2687: a->x.ints[3] = b->x.ints[3];
2688: goto L636; /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
2689: }
2690: break;
2691: }
2692: break;
2693: case 4: /* $f%c */
2694: if (
2695: rmcopy(a)
2696: ) {
2697: a->syms[2] = a->syms[0];
2698: goto L621; /* # nop */
2699: }
2700: break;
2701: }
2702: a->op = 635;
2703: break;
2704: case 636: L636: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
2705: dumptree(a, 636);
2706: a->op = 636;
2707: break;
2708: case 637: L637: /* s%t $%k,%y */
2709: dumptree(a, 637);
2710: if (
2711: a->x.ints[0] == 7 /* %c($sp) */
2712: && isregvar(a->syms[0])
2713: ) {
2714: a->x.ints[0] = 1; /* $%n */
2715: a->kids[0] = a->kids[2];
2716: a->kids[2] = 0;
2717: a->syms[2] = a->syms[0];
2718: goto L614; /* move $%r,%y */
2719: }
2720: if (
2721: a->x.ints[3] == 5 /* w */
2722: && a->x.ints[0] == 7 /* %c($sp) */
2723: ) {
2724: if (
2725: a->syms[0]->x.name == sym[1].x.name /* 0 */
2726: ) {
2727: a->x.ints[0] = 1; /* $%n */
2728: a->syms[2] = &sym[2]; /* 4 */
2729: a->kids[0] = a->kids[2];
2730: a->kids[2] = 0;
2731: goto L614; /* move $%r,%y */
2732: }
2733: if (
2734: a->syms[0]->x.name == sym[2].x.name /* 4 */
2735: ) {
2736: a->x.ints[0] = 1; /* $%n */
2737: a->syms[2] = &sym[3]; /* 5 */
2738: a->kids[0] = a->kids[2];
2739: a->kids[2] = 0;
2740: goto L614; /* move $%r,%y */
2741: }
2742: if (
2743: a->syms[0]->x.name == sym[6].x.name /* 8 */
2744: ) {
2745: a->x.ints[0] = 1; /* $%n */
2746: a->syms[2] = &sym[4]; /* 6 */
2747: a->kids[0] = a->kids[2];
2748: a->kids[2] = 0;
2749: goto L614; /* move $%r,%y */
2750: }
2751: if (
2752: a->syms[0]->x.name == sym[7].x.name /* 12 */
2753: ) {
2754: a->x.ints[0] = 1; /* $%n */
2755: a->syms[2] = &sym[5]; /* 7 */
2756: a->kids[0] = a->kids[2];
2757: a->kids[2] = 0;
2758: goto L614; /* move $%r,%y */
2759: }
2760: }
2761: b = a->kids[0];
2762: if (
2763: a->x.ints[0] == 8 /* ($%n) */
2764: && b->op == 612 /* la $%r,%y */
2765: ) {
2766: if (--b->count > 0)
2767: if (c=b->kids[0]) ++c->count;
2768: a->syms[0] = b->syms[0];
2769: a->x.ints[0] = b->x.ints[0];
2770: a->kids[0] = b->kids[0];
2771: goto L637; /* s%t $%k,%y */
2772: }
2773: a->op = 637;
2774: break;
2775: case 638: L638: /* s.%t $f%k,%y */
2776: dumptree(a, 638);
2777: if (
2778: a->x.ints[0] == 7 /* %c($sp) */
2779: && isregvar(a->syms[0])
2780: ) {
2781: a->x.ints[0] = 3; /* $f%n */
2782: a->kids[0] = a->kids[2];
2783: a->kids[2] = 0;
2784: a->syms[2] = a->syms[0];
2785: goto L635; /* mov.%t $f%r,%y */
2786: }
2787: switch (a->x.ints[3]) {
2788: case 1: /* s */
2789: if (
2790: a->x.ints[0] == 7 /* %c($sp) */
2791: && a->syms[0]->x.name == sym[1].x.name /* 0 */
2792: && a->x.isvararg
2793: ) {
2794: a->x.ints[0] = 3; /* $f%n */
2795: a->syms[2] = &sym[2]; /* 4 */
2796: a->kids[0] = a->kids[2];
2797: a->kids[2] = 0;
2798: goto L613; /* mfc1 $%r,%y */
2799: }
2800: break;
2801: case 2: /* d */
2802: if (
2803: a->x.ints[0] == 7 /* %c($sp) */
2804: && a->syms[0]->x.name == sym[1].x.name /* 0 */
2805: && a->x.isvararg
2806: ) {
2807: a->x.ints[0] = 3; /* $f%n */
2808: a->syms[2] = &sym[2]; /* 4 */
2809: a->kids[0] = a->kids[2];
2810: a->kids[2] = 0;
2811: goto L634; /* mfc1.d $%r,%y */
2812: }
2813: break;
2814: }
2815: if (
2816: a->x.ints[0] == 7 /* %c($sp) */
2817: ) {
2818: if (
2819: a->syms[0]->x.name == sym[1].x.name /* 0 */
2820: ) {
2821: a->x.ints[0] = 3; /* $f%n */
2822: a->syms[2] = &sym[7]; /* 12 */
2823: a->kids[0] = a->kids[2];
2824: a->kids[2] = 0;
2825: goto L635; /* mov.%t $f%r,%y */
2826: }
2827: if (
2828: a->syms[0]->x.name == sym[2].x.name /* 4 */
2829: ) {
2830: if (last)
2831: /* %f.%t $f%r,%y */
2832: /* %f.%t $f%r,%y,%x */
2833: /* l.%t $f%r,%y */
2834: /* li.%t $f%r,%y */
2835: /* mov.%t $f%r,%y */
2836: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
2837: if ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\1\1\0\1\1\0\0\0"[last->op-608]) {
2838: if (
2839: last && last->syms[2]->x.name == sym[7].x.name /* 12 */
2840: ) {
2841: a->x.ints[0] = 3; /* $f%n */
2842: a->syms[2] = &sym[8]; /* 14 */
2843: a->kids[0] = a->kids[2];
2844: a->kids[2] = 0;
2845: rewrite(last);
2846: goto L635; /* mov.%t $f%r,%y */
2847: }
2848: }
2849: }
2850: if (
2851: a->syms[0]->x.name == sym[6].x.name /* 8 */
2852: ) {
2853: if (last)
2854: /* %f.%t $f%r,%y */
2855: /* %f.%t $f%r,%y,%x */
2856: /* l.%t $f%r,%y */
2857: /* li.%t $f%r,%y */
2858: /* mov.%t $f%r,%y */
2859: /* mtc1 %y,$f%r; %f.%t $f%r,$f%r */
2860: if ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\1\1\0\1\1\0\0\0"[last->op-608]) {
2861: if (
2862: last && last->syms[2]->x.name == sym[7].x.name /* 12 */
2863: ) {
2864: a->x.ints[0] = 3; /* $f%n */
2865: a->syms[2] = &sym[8]; /* 14 */
2866: a->kids[0] = a->kids[2];
2867: a->kids[2] = 0;
2868: rewrite(last);
2869: goto L635; /* mov.%t $f%r,%y */
2870: }
2871: }
2872: }
2873: }
2874: switch (a->x.ints[3]) {
2875: case 1: /* s */
2876: if (
2877: a->x.ints[0] == 7 /* %c($sp) */
2878: ) {
2879: if (
2880: a->syms[0]->x.name == sym[2].x.name /* 4 */
2881: ) {
2882: a->x.ints[0] = 3; /* $f%n */
2883: a->syms[2] = &sym[3]; /* 5 */
2884: a->kids[0] = a->kids[2];
2885: a->kids[2] = 0;
2886: goto L613; /* mfc1 $%r,%y */
2887: }
2888: if (
2889: a->syms[0]->x.name == sym[6].x.name /* 8 */
2890: ) {
2891: a->x.ints[0] = 3; /* $f%n */
2892: a->syms[2] = &sym[4]; /* 6 */
2893: a->kids[0] = a->kids[2];
2894: a->kids[2] = 0;
2895: goto L613; /* mfc1 $%r,%y */
2896: }
2897: if (
2898: a->syms[0]->x.name == sym[7].x.name /* 12 */
2899: ) {
2900: a->x.ints[0] = 3; /* $f%n */
2901: a->syms[2] = &sym[5]; /* 7 */
2902: a->kids[0] = a->kids[2];
2903: a->kids[2] = 0;
2904: goto L613; /* mfc1 $%r,%y */
2905: }
2906: }
2907: break;
2908: case 2: /* d */
2909: if (
2910: a->x.ints[0] == 7 /* %c($sp) */
2911: && a->syms[0]->x.name == sym[6].x.name /* 8 */
2912: ) {
2913: a->x.ints[0] = 3; /* $f%n */
2914: a->syms[2] = &sym[4]; /* 6 */
2915: a->kids[0] = a->kids[2];
2916: a->kids[2] = 0;
2917: goto L634; /* mfc1.d $%r,%y */
2918: }
2919: break;
2920: }
2921: b = a->kids[0];
2922: if (
2923: a->x.ints[0] == 8 /* ($%n) */
2924: && b->op == 612 /* la $%r,%y */
2925: ) {
2926: if (--b->count > 0)
2927: if (c=b->kids[0]) ++c->count;
2928: a->syms[0] = b->syms[0];
2929: a->x.ints[0] = b->x.ints[0];
2930: a->kids[0] = b->kids[0];
2931: goto L638; /* s.%t $f%k,%y */
2932: }
2933: a->op = 638;
2934: break;
2935: case 639: L639: /* %y: */
2936: dumptree(a, 639);
2937: a->op = 639;
2938: break;
2939: default:
2940: assert(0);
2941: }
2942: }
2943:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.