|
|
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.