|
|
1.1 ! root 1: /* "set ^0,%g1; add %fp,%g1,%^c" => ="set ^y,%g1; add %fp,%g1,^z" A="^c" a=a C="%^c" */ ! 2: /* "set _^0,%^c" => ="set ^y,^z" A="_^c" a=a C="%^c" */ ! 3: /* "set ^0,%g1; add %fp,%g1,%^c" => ="set ^y,%g1; add %fp,%g1,^z" A="^c" a=a C="%^c" */ ! 4: /* "std %f^0,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="d" A="%f^n" 0=0 C="%sp+4*^c+68" */ ! 5: /* "st %f^0,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="" A="%f^n" 0=0 C="%sp+4*^c+68" */ ! 6: /* "st %^0,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="" A="%^n" 0=0 C="%sp+4*^c+68" */ ! 7: /* "st %^0,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="" A="%^n" 0=0 C="%sp+4*^c+68" */ ! 8: /* "std %f^1,[%^0]" => ="st^t ^y,[^z]" E="d" A="%f^n" 0=1 C="%^n" 2=0 */ ! 9: /* "st %f^1,[%^0]" => ="st^t ^y,[^z]" E="" A="%f^n" 0=1 C="%^n" 2=0 */ ! 10: /* "stb %^1,[%^0]" => ="st^t ^y,[^z]" E="b" A="%^n" 0=1 C="%^n" 2=0 */ ! 11: /* "st %^1,[%^0]" => ="st^t ^y,[^z]" E="" A="%^n" 0=1 C="%^n" 2=0 */ ! 12: /* "st %^1,[%^0]" => ="st^t ^y,[^z]" E="" A="%^n" 0=1 C="%^n" 2=0 */ ! 13: /* "sth %^1,[%^0]" => ="st^t ^y,[^z]" E="h" A="%^n" 0=1 C="%^n" 2=0 */ ! 14: /* "xnor %^0,%g0,%^c" => ="^f ^y,^x,^z" D="xnor" A="%^n" 0=0 B="%g0" C="%^c" */ ! 15: /* "call %^0; st %^1,[%sp+64]" => ="call ^y; st ^z,[%sp+64]" A="%^n" 0=0 C="%^n" 2=1 */ ! 16: /* "call %^0; nop" => ="call ^y; nop" A="%^n" 0=0 */ ! 17: /* "call %^0; nop" => ="call ^y; nop" A="%^n" 0=0 */ ! 18: /* "call %^0; nop" => ="call ^y; nop" A="%^n" 0=0 */ ! 19: /* "call %^0; nop" => ="call ^y; nop" A="%^n" 0=0 */ ! 20: /* "set ^0,%^c" => ="set ^y,^z" A="^c" a=a C="%^c" */ ! 21: /* "set ^0,%^c" => ="set ^y,^z" A="^c" a=a C="%^c" */ ! 22: /* "set ^0,%^c" => ="set ^y,^z" A="^c" a=a C="%^c" */ ! 23: /* "set ^0,%^c" => ="set ^y,^z" A="^c" a=a C="%^c" */ ! 24: /* "set ^0,%^c" => ="set ^y,^z" A="^c" a=a C="%^c" */ ! 25: /* "sll %^0,24,%g1; sra %g1,24,%^c" => ="sll ^y,^x,%g1; sra %g1,^x,^z" A="%^n" 0=0 B="^c" b="24" B="^c" b="24" C="%^c" */ ! 26: /* "sll %^0,16,%g1; sra %g1,16,%^c" => ="sll ^y,^x,%g1; sra %g1,^x,^z" A="%^n" 0=0 B="^c" b="16" B="^c" b="16" C="%^c" */ ! 27: /* "and %^0,0xff,%^c" => ="^f ^y,^x,^z" D="and" A="%^n" 0=0 B="^c" b="0xff" C="%^c" */ ! 28: /* "set 0xffff,%g1; and %^0,%g1,%^c" => ="set 0xffff,%g1; and ^y,%g1,^z" A="%^n" 0=0 C="%^c" */ ! 29: /* "fdtos %f^n,%f^c" => ="fdtos ^y,^z" A="%f^n" C="%f^c" */ ! 30: /* "fstod %f^n,%f^c" => ="fstod ^y,^z" A="%f^n" C="%f^c" */ ! 31: /* "st %^0,[%sp+64]; ld [%sp+64],^z; fitod ^z,%f^c" => ="st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z" A="%^n" 0=0 C="%f^c" */ ! 32: /* "fdtoi %f^0,%f0; st %f0,[%sp+64]; ld [%sp+64],%^c" => ="fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z" A="%f^n" 0=0 C="%^c" */ ! 33: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 34: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 35: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 36: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 37: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 38: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 39: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 40: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 41: /* "mov %^1,%o1; call .rem,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".rem" A="%^n" 0=0 C="%^c" */ ! 42: /* "mov %^1,%o1; call .mul,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".mul" A="%^n" 0=0 C="%^c" */ ! 43: /* "mov %^1,%o1; call .div,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".div" A="%^n" 0=0 C="%^c" */ ! 44: /* "mov %^1,%o1; call .urem,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".urem" A="%^n" 0=0 C="%^c" */ ! 45: /* "mov %^1,%o1; call .umul,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".umul" A="%^n" 0=0 C="%^c" */ ! 46: /* "mov %^1,%o1; call .udiv,2; mov %^0,%o0; mov %o0,%^c" => ="mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z" B="%^n" 1=1 D=".udiv" A="%^n" 0=0 C="%^c" */ ! 47: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 48: /* "ldd [%^0],%f^c" => ="ld^t [^y],^z" E="d" A="%^n" 0=0 C="%f^c" */ ! 49: /* "ld [%^0],%f^c" => ="ld^t [^y],^z" E="" A="%^n" 0=0 C="%f^c" */ ! 50: /* "ld [%^0],%^c" => ="ld^t [^y],^z" E="" A="%^n" 0=0 C="%^c" */ ! 51: /* "ldsh [%^0],%^c" => ="ld^t [^y],^z" E="sh" A="%^n" 0=0 C="%^c" */ ! 52: /* "ld [%^0],%^c" => ="ld^t [^y],^z" E="" A="%^n" 0=0 C="%^c" */ ! 53: /* "ldsb [%^0],%^c" => ="ld^t [^y],^z" E="sb" A="%^n" 0=0 C="%^c" */ ! 54: /* "jmp %^0; nop" => ="jmp ^y; nop" A="%^n" 0=0 */ ! 55: /* "^0:" => ="^z:" C="^c" c=a */ ! 56: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 57: /* "fmovs %f^0,%f^c" => ="fmov^t ^y,^z" E="s" A="%f^n" 0=0 C="%f^c" */ ! 58: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 59: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 60: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 61: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 62: /* "mov %^0,%^c" => ="mov ^y,^z" A="%^n" 0=0 C="%^c" */ ! 63: /* "sll %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sll" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 64: /* "sra %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sra" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 65: /* "sll %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sll" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 66: /* "srl %^0,%^1,%^c" => ="^f ^y,^x,^z" D="srl" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 67: /* "fnegs %f^n,%f^c" => ="fnegs ^y,^z" A="%f^n" C="%f^c" */ ! 68: /* "sub %g0,%^0,%^c" => ="^f ^y,^x,^z" D="sub" A="%g0" B="%^n" 1=0 C="%^c" */ ! 69: /* "fsubd %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="sub" E="d" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 70: /* "fsubs %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="sub" E="s" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 71: /* "fmuld %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="mul" E="d" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 72: /* "fmuls %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="mul" E="s" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 73: /* "fdivd %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="div" E="d" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 74: /* "fdivs %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="div" E="s" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 75: /* "faddd %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="add" E="d" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 76: /* "fadds %f^0,%f^1,%f^c" => ="f^f^t ^y,^x,^z" D="add" E="s" A="%f^n" 0=0 B="%f^n" 1=1 C="%f^c" */ ! 77: /* "sub %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sub" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 78: /* "sub %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sub" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 79: /* "sub %^0,%^1,%^c" => ="^f ^y,^x,^z" D="sub" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 80: /* "xor %^0,%^1,%^c" => ="^f ^y,^x,^z" D="xor" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 81: /* "and %^0,%^1,%^c" => ="^f ^y,^x,^z" D="and" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 82: /* "add %^0,%^1,%^c" => ="^f ^y,^x,^z" D="add" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 83: /* "add %^0,%^1,%^c" => ="^f ^y,^x,^z" D="add" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 84: /* "add %^0,%^1,%^c" => ="^f ^y,^x,^z" D="add" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 85: /* "or %^0,%^1,%^c" => ="^f ^y,^x,^z" D="or" A="%^n" 0=0 B="%^n" 1=1 C="%^c" */ ! 86: /* "cmp %^0,%^1; bleu ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="leu" C="^c" c=a */ ! 87: /* "cmp %^0,%^1; blu ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="lu" C="^c" c=a */ ! 88: /* "cmp %^0,%^1; bgeu ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="geu" C="^c" c=a */ ! 89: /* "cmp %^0,%^1; bgu ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="gu" C="^c" c=a */ ! 90: /* "fcmped %f^0,%f^1; nop; fbne ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="ne" C="^c" c=a */ ! 91: /* "fcmpes %f^0,%f^1; nop; fbne ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="ne" C="^c" c=a */ ! 92: /* "fcmped %f^0,%f^1; nop; fbuge ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="uge" C="^c" c=a */ ! 93: /* "fcmpes %f^0,%f^1; nop; fbuge ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="uge" C="^c" c=a */ ! 94: /* "fcmped %f^0,%f^1; nop; fbug ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="ug" C="^c" c=a */ ! 95: /* "fcmpes %f^0,%f^1; nop; fbug ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="ug" C="^c" c=a */ ! 96: /* "fcmped %f^0,%f^1; nop; fbue ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="ue" C="^c" c=a */ ! 97: /* "fcmpes %f^0,%f^1; nop; fbue ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="ue" C="^c" c=a */ ! 98: /* "fcmped %f^0,%f^1; nop; fbule ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="ule" C="^c" c=a */ ! 99: /* "fcmpes %f^0,%f^1; nop; fbule ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="ule" C="^c" c=a */ ! 100: /* "fcmped %f^0,%f^1; nop; fbul ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="d" A="%f^n" 0=0 B="%f^n" 1=1 D="ul" C="^c" c=a */ ! 101: /* "fcmpes %f^0,%f^1; nop; fbul ^0; nop" => ="fcmpe^t ^y,^x; nop; fb^f ^z; nop" E="s" A="%f^n" 0=0 B="%f^n" 1=1 D="ul" C="^c" c=a */ ! 102: /* "cmp %^0,%^1; bne ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="ne" C="^c" c=a */ ! 103: /* "cmp %^0,%^1; be ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="e" C="^c" c=a */ ! 104: /* "cmp %^0,%^1; ble ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="le" C="^c" c=a */ ! 105: /* "cmp %^0,%^1; ble ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="le" C="^c" c=a */ ! 106: /* "cmp %^0,%^1; bl ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="l" C="^c" c=a */ ! 107: /* "cmp %^0,%^1; bl ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="l" C="^c" c=a */ ! 108: /* "cmp %^0,%^1; bge ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="ge" C="^c" c=a */ ! 109: /* "cmp %^0,%^1; bge ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="ge" C="^c" c=a */ ! 110: /* "cmp %^0,%^1; bg ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="g" C="^c" c=a */ ! 111: /* "cmp %^0,%^1; bg ^0; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" 0=0 B="%^n" 1=1 D="g" C="^c" c=a */ ! 112: /* "call %^n; nop" => ="call ^y; nop" A="%^n" */ ! 113: /* "set _^c,^z" => ="set ^y,^z" 0A="_^c" */ ! 114: /* "call %^n; st ^z,[%sp+64]" => ="call ^y; st ^z,[%sp+64]" A="%^n" */ ! 115: /* "set _^c,^z" => ="set ^y,^z" 0A="_^c" */ ! 116: /* "cmp ^y,%^n; b^f ^z; nop" => ="cmp ^y,^x; b^f ^z; nop" B="%^n" */ ! 117: /* "set ^c,^z" => ="set ^y,^z" 1A="^c" */ ! 118: /* "cmp ^y,%^n; b^f ^z; nop" => ="cmp ^y,^x; b^f ^z; nop" B="%^n" */ ! 119: /* "mov %^n,^z" => ="mov ^y,^z" 1A="%^n" */ ! 120: /* "cmp %^n,^x; b^f ^z; nop" => ="cmp ^y,^x; b^f ^z; nop" A="%^n" */ ! 121: /* "mov %^n,^z" => ="mov ^y,^z" 0A="%^n" */ ! 122: /* "^f ^y,%^n,^z" => ="^f ^y,^x,^z" B="%^n" */ ! 123: /* "set ^c,^z" => ="set ^y,^z" 1A="^c" */ ! 124: /* "^f ^y,%^n,^z" => ="^f ^y,^x,^z" B="%^n" */ ! 125: /* "mov %^n,^z" => ="mov ^y,^z" 1A="%^n" */ ! 126: /* "^f %^n,^x,^z" => ="^f ^y,^x,^z" A="%^n" */ ! 127: /* "mov %^n,^z" => ="mov ^y,^z" 0A="%^n" */ ! 128: /* "jmp %^n; nop" => ="jmp ^y; nop" A="%^n" */ ! 129: /* "set _^c,^z" => ="set ^y,^z" 0A="_^c" */ ! 130: /* "ba ^c; nop" => ="ba ^y; nop" A="^c" */ ! 131: /* "ld^t [%^n],^z" => ="ld^t [^y],^z" A="%^n" */ ! 132: /* "add ^c,%fp,^z" => ="^f ^y,^x,^z" 0D="add" 0A="^c" 0B="%fp" */ ! 133: /* "ld^t [%fp+^c],^z" => ="ld^t [^y],^z" A="%fp+^c" */ ! 134: /* "ld^t [%^n],^z" => ="ld^t [^y],^z" A="%^n" */ ! 135: /* "set ^c,%g1; ld^t [%fp+%g1],^z" => ="set ^y,%g1; ld^t [%fp+%g1],^z" A="^c" */ ! 136: /* "ld^t [%^n],^z" => ="ld^t [^y],^z" A="%^n" */ ! 137: /* "add %^n,^c,^z" => ="^f ^y,^x,^z" 0D="add" 0A="%^n" 0B="^c" */ ! 138: /* "ld^t [%^n+^c],^z" => ="ld^t [^y],^z" A="%^n+^c" */ ! 139: /* "ld{sb|sh|ub|uh|""|s} [%^n],^z" => ="ld^t [^y],^z" E=@TMP717 A="%^n" */ ! 140: /* "add %^n,%^n,^z" => ="^f ^y,^x,^z" 0D="add" 0A="%^n" 0B="%^n" */ ! 141: /* "ld^t [%^n+%^i],^z" => ="ld^t [^y],^z" A="%^n+%^i" */ ! 142: /* "ld^t [%^n],^z" => ="ld^t [^y],^z" A="%^n" */ ! 143: /* "mov %^n,^z" => ="mov ^y,^z" 0A="%^n" */ ! 144: /* "ld^t [%fp+^c],^z" => ="ld^t [^y],^z" A="%fp+^c" */ ! 145: /* "mov %^c,%^c" => ="mov ^y,^z" A="%^c" C="%^c" */ ! 146: /* "mov %^c,%^c" => ="mov ^y,^z" A="%^c" C="%^c" */ ! 147: /* "mov %^n,^z" => ="mov ^y,^z" A="%^n" */ ! 148: /* "mov %^n,^z" => ="mov ^y,^z" A="%^n" */ ! 149: /* "mov %^n,^z" => ="mov ^y,^z" A="%^n" */ ! 150: /* "mov %^n,^z" => ="mov ^y,^z" A="%^n" */ ! 151: /* "mov %^n,^z" => ="mov ^y,^z" A="%^n" */ ! 152: /* "mov %^n,^z" => ="mov ^y,^z" 0A="%^n" */ ! 153: /* "set 0,^z" => ="set ^y,^z" A="^c" a="0" */ ! 154: /* "set ^y,%g1; add %fp,%g1,%^c" => ="set ^y,%g1; add %fp,%g1,^z" C="%^c" */ ! 155: /* "add ^y,%fp,^z" => ="^f ^y,^x,^z" D="add" B="%fp" */ ! 156: /* "sll %^n,16,%g1; sra %g1,16,^z" => ="sll ^y,^x,%g1; sra %g1,^x,^z" A="%^n" B="^c" b="16" B="^c" b="16" */ ! 157: /* "ldsh [^y],^z" => ="ld^t [^y],^z" 0E="sh" */ ! 158: /* "ldsh [^y],^z" => ="ld^t [^y],^z" E="sh" */ ! 159: /* "sll %^n,24,%g1; sra %g1,24,^z" => ="sll ^y,^x,%g1; sra %g1,^x,^z" A="%^n" B="^c" b="24" B="^c" b="24" */ ! 160: /* "ldsb [^y],^z" => ="ld^t [^y],^z" 0E="sb" */ ! 161: /* "ldsb [^y],^z" => ="ld^t [^y],^z" E="sb" */ ! 162: /* "and %^n,0xff,^z" => ="^f ^y,^x,^z" D="and" A="%^n" B="^c" b="0xff" */ ! 163: /* "ldsb [^y],^z" => ="ld^t [^y],^z" 0E="sb" */ ! 164: /* "ldub [^y],^z" => ="ld^t [^y],^z" E="ub" */ ! 165: /* "set 0xffff,%g1; and %^n,%g1,^z" => ="set 0xffff,%g1; and ^y,%g1,^z" A="%^n" */ ! 166: /* "ldsh [^y],^z" => ="ld^t [^y],^z" 0E="sh" */ ! 167: /* "lduh [^y],^z" => ="ld^t [^y],^z" E="uh" */ ! 168: /* "st^t %^n,[%sp+4*^c+68]" => ="st^t ^y,[^z]" A="%^n" C="%sp+4*^c+68" */ ! 169: /* "mov %^n,%^c" => ="mov ^y,^z" A="%^n" C="%^c" */ ! 170: /* "st^t ^y,[%^n]" => ="st^t ^y,[^z]" C="%^n" */ ! 171: /* "add ^c,%fp,^z" => ="^f ^y,^x,^z" 2D="add" 2A="^c" 2B="%fp" */ ! 172: /* "st^t ^y,[%fp+^c]" => ="st^t ^y,[^z]" C="%fp+^c" */ ! 173: /* "st^t ^y,[%^n]" => ="st^t ^y,[^z]" C="%^n" */ ! 174: /* "set ^c,%g1; st^t ^y,[%fp+%g1]" => ="set ^z,%g1; st^t ^y,[%fp+%g1]" C="^c" */ ! 175: /* "st^t ^y,[%^n]" => ="st^t ^y,[^z]" C="%^n" */ ! 176: /* "add %^n,^c,^z" => ="^f ^y,^x,^z" 2D="add" 2A="%^n" 2B="^c" */ ! 177: /* "st^t ^y,[%^n+^c]" => ="st^t ^y,[^z]" C="%^n+^c" */ ! 178: /* "st{b|h|""|s} ^y,[%^n]" => ="st^t ^y,[^z]" E=@TMP851 C="%^n" */ ! 179: /* "add %^n,%^n,^z" => ="^f ^y,^x,^z" 2D="add" 2A="%^n" 2B="%^n" */ ! 180: /* "st^t ^y,[%^n+%^i]" => ="st^t ^y,[^z]" C="%^n+%^i" */ ! 181: /* "st^t ^y,[%^n]" => ="st^t ^y,[^z]" C="%^n" */ ! 182: /* "st^t %^n,[^z]" => ="st^t ^y,[^z]" A="%^n" */ ! 183: /* "st^t ^y,[%fp+^c]" => ="st^t ^y,[^z]" C="%fp+^c" */ ! 184: /* "mov ^y,%^c" => ="mov ^y,^z" C="%^c" */ ! 185: /* "ldd [^y],^z" => ="ld^t [^y],^z" E="d" */ ! 186: /* "ld [^y],^z; ld [^y+4],%f^c" => ="ld [^y],^z; ld [^y+4],^x" B="%f^c" */ ! 187: /* "mov %^n,%^c" => ="mov ^y,^z" A="%^n" C="%^c" */ ! 188: /* "st %f^n,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="" A="%f^n" C="%sp+4*^c+68" */ ! 189: /* "st %f^n,[%sp+4*^c+68]; ld [%sp+4*^c+68],%o^c" => ="st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x" A="%f^n" C="^c" C="^c" B="^c" */ ! 190: /* "std %f^n,[%sp+4*^c+68]" => ="st^t ^y,[^z]" E="d" A="%f^n" C="%sp+4*^c+68" */ ! 191: /* "std ^y,[^z]" => ="st^t ^y,[^z]" E="d" */ ! 192: /* "st ^y,[^z]; st %f^c,[^z+4]" => ="st ^y,[^z]; st ^x,[^z+4]" B="%f^c" */ ! 193: /* "set _^c,^z" => ="set ^y,^z" A="_^c" */ ! 194: /* "call _^c; nop" => ="call ^y; nop" A="_^c" */ ! 195: /* "call _^c; st ^z,[%sp+64]" => ="call ^y; st ^z,[%sp+64]" A="_^c" */ ! 196: #include "pseudos.c" ! 197: ! 198: static char *shortopcodes[] = { ! 199: /* 608 */ "mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z", ! 200: /* 609 */ "call ^y; nop", ! 201: /* 610 */ "call ^y; st ^z,[%sp+64]", ! 202: /* 611 */ "fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z", ! 203: /* 612 */ "sll ^y,^x,%g1; sra %g1,^x,^z", ! 204: /* 613 */ "^z:", ! 205: /* 614 */ "nop", ! 206: /* 615 */ "# argd", ! 207: /* 616 */ "# movd", ! 208: /* 617 */ "# negd", ! 209: /* 618 */ "# asgnb", ! 210: /* 619 */ "# reg", ! 211: /* 620 */ "# ret", ! 212: /* 621 */ "# label", ! 213: /* 622 */ "^f ^y,^x,^z", ! 214: /* 623 */ "f^f^t ^y,^x,^z", ! 215: /* 624 */ "call ^y,2; nop", ! 216: /* 625 */ "cmp ^y,^x; b^f ^z; nop", ! 217: /* 626 */ "fcmpe^t ^y,^x; nop; fb^f ^z; nop", ! 218: /* 627 */ "fstod ^y,^z", ! 219: /* 628 */ "fdtos ^y,^z", ! 220: /* 629 */ "fnegs ^y,^z", ! 221: /* 630 */ "fmovd ^y,^z; fnegs ^z,^z", ! 222: /* 631 */ "st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z", ! 223: /* 632 */ "jmp ^y; nop", ! 224: /* 633 */ "ba ^y; nop", ! 225: /* 634 */ "ld^t [^y],^z", ! 226: /* 635 */ "ld [^y],^z; ld [^y+4],^x", ! 227: /* 636 */ "mov ^y,^z", ! 228: /* 637 */ "fmov^t ^y,^z", ! 229: /* 638 */ "set ^y,^z", ! 230: /* 639 */ "set 0xffff,%g1; and ^y,%g1,^z", ! 231: /* 640 */ "set ^z,%g1; st^t ^y,[%fp+%g1]", ! 232: /* 641 */ "set ^y,%g1; ld^t [%fp+%g1],^z", ! 233: /* 642 */ "st^t ^y,[^z]", ! 234: /* 643 */ "st ^y,[^z]", ! 235: /* 644 */ "st ^y,[^z]; st ^x,[^z+4]", ! 236: /* 645 */ "st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x", ! 237: /* 646 */ "set ^y,%g1; add %fp,%g1,^z", ! 238: /* 647 */ "call ^f,2; nop", ! 239: }; ! 240: ! 241: static char *asmstr0[] = { ! 242: "(DUMMY)", ! 243: "%^n", ! 244: "%^c", ! 245: "%fp", ! 246: "%sp", ! 247: "%g0", ! 248: "%f^n", ! 249: "%f^c", ! 250: "%^n+%^i", ! 251: "%^c+%^i", ! 252: "%fp+%^i", ! 253: "%sp+%^i", ! 254: "%g0+%^i", ! 255: "%f^n+%^i", ! 256: "%f^c+%^i", ! 257: "%^n+^c", ! 258: "%^n+_^c", ! 259: "%^n+4*^c+68", ! 260: "%^n-^c", ! 261: "%^n-_^c", ! 262: "%^n-4*^c+68", ! 263: "%^c+^c", ! 264: "%^c+_^c", ! 265: "%^c+4*^c+68", ! 266: "%^c-^c", ! 267: "%^c-_^c", ! 268: "%^c-4*^c+68", ! 269: "%fp+^c", ! 270: "%fp+_^c", ! 271: "%fp+4*^c+68", ! 272: "%fp-^c", ! 273: "%fp-_^c", ! 274: "%fp-4*^c+68", ! 275: "%sp+^c", ! 276: "%sp+_^c", ! 277: "%sp+4*^c+68", ! 278: "%sp-^c", ! 279: "%sp-_^c", ! 280: "%sp-4*^c+68", ! 281: "%g0+^c", ! 282: "%g0+_^c", ! 283: "%g0+4*^c+68", ! 284: "%g0-^c", ! 285: "%g0-_^c", ! 286: "%g0-4*^c+68", ! 287: "%f^n+^c", ! 288: "%f^n+_^c", ! 289: "%f^n+4*^c+68", ! 290: "%f^n-^c", ! 291: "%f^n-_^c", ! 292: "%f^n-4*^c+68", ! 293: "%f^c+^c", ! 294: "%f^c+_^c", ! 295: "%f^c+4*^c+68", ! 296: "%f^c-^c", ! 297: "%f^c-_^c", ! 298: "%f^c-4*^c+68", ! 299: "^c", ! 300: "_^c", ! 301: "4*^c+68", ! 302: }; ! 303: ! 304: static char *asmstr3[] = { ! 305: "(DUMMY)", ! 306: "add", ! 307: "and", ! 308: "div", ! 309: "mul", ! 310: "or", ! 311: "sll", ! 312: "sra", ! 313: "srl", ! 314: "sub", ! 315: "xor", ! 316: "xnor", ! 317: ".udiv", ! 318: ".umul", ! 319: ".urem", ! 320: ".div", ! 321: ".mul", ! 322: ".rem", ! 323: "e", ! 324: "ne", ! 325: "gu", ! 326: "g", ! 327: "geu", ! 328: "ge", ! 329: "lu", ! 330: "l", ! 331: "leu", ! 332: "le", ! 333: "ug", ! 334: "uge", ! 335: "ul", ! 336: "ule", ! 337: "ue", ! 338: }; ! 339: ! 340: static char *asmstr4[] = { ! 341: "(DUMMY)", ! 342: "sb", ! 343: "sh", ! 344: "ub", ! 345: "uh", ! 346: "b", ! 347: "h", ! 348: "s", ! 349: "d", ! 350: "", ! 351: }; ! 352: ! 353: static struct symbol sym[] = { ! 354: {{"(DUMMY)"}}, ! 355: {{"0"}}, ! 356: {{"0xff"}}, ! 357: {{"0xffff"}}, ! 358: {{"16"}}, ! 359: {{"24"}}, ! 360: }; ! 361: ! 362: dclproto(static void rewrite,(Node)); ! 363: ! 364: dclproto(static void emit,(Node)); ! 365: ! 366: static void initgen() { ! 367: opcodes = shortopcodes-608; ! 368: IR->x.rewrite = rewrite; ! 369: IR->emit = emit; ! 370: asmstr[0] = asmstr0; ! 371: asmstr[1] = asmstr0; ! 372: asmstr[2] = asmstr0; ! 373: asmstr[3] = asmstr3; ! 374: asmstr[4] = asmstr4; ! 375: sym[1].x.name = string("0"); ! 376: sym[2].x.name = string("0xff"); ! 377: sym[3].x.name = string("0xffff"); ! 378: sym[4].x.name = string("16"); ! 379: sym[5].x.name = string("24"); ! 380: } ! 381: ! 382: dclproto(static char *emit0,(char *, Node, int)); ! 383: static char *emit0(rbp, a, n) ! 384: register char *rbp; ! 385: register Node a; ! 386: register int n; ! 387: { ! 388: register char *cp; ! 389: ! 390: assert(a->x.ints[n]); ! 391: switch (a->x.ints[n]) { ! 392: case 0: /* (DUMMY) */ ! 393: *rbp++ = '('; ! 394: *rbp++ = 'D'; ! 395: *rbp++ = 'U'; ! 396: *rbp++ = 'M'; ! 397: *rbp++ = 'M'; ! 398: *rbp++ = 'Y'; ! 399: *rbp++ = ')'; ! 400: return rbp; ! 401: case 1: /* %^n */ ! 402: *rbp++ = '%'; ! 403: assert(a->kids[n+0]); ! 404: assert(a->kids[n+0]->x.registered); ! 405: assert(a->kids[n+0]->syms[RX]); ! 406: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 407: return rbp; ! 408: case 2: /* %^c */ ! 409: *rbp++ = '%'; ! 410: assert(a->syms[n+0]); ! 411: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 412: return rbp; ! 413: case 3: /* %fp */ ! 414: *rbp++ = '%'; ! 415: *rbp++ = 'f'; ! 416: *rbp++ = 'p'; ! 417: return rbp; ! 418: case 4: /* %sp */ ! 419: *rbp++ = '%'; ! 420: *rbp++ = 's'; ! 421: *rbp++ = 'p'; ! 422: return rbp; ! 423: case 5: /* %g0 */ ! 424: *rbp++ = '%'; ! 425: *rbp++ = 'g'; ! 426: *rbp++ = '0'; ! 427: return rbp; ! 428: case 6: /* %f^n */ ! 429: *rbp++ = '%'; ! 430: *rbp++ = 'f'; ! 431: assert(a->kids[n+0]); ! 432: assert(a->kids[n+0]->x.registered); ! 433: assert(a->kids[n+0]->syms[RX]); ! 434: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 435: return rbp; ! 436: case 7: /* %f^c */ ! 437: *rbp++ = '%'; ! 438: *rbp++ = 'f'; ! 439: assert(a->syms[n+0]); ! 440: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 441: return rbp; ! 442: case 8: /* %^n+%^i */ ! 443: *rbp++ = '%'; ! 444: assert(a->kids[n+0]); ! 445: assert(a->kids[n+0]->x.registered); ! 446: assert(a->kids[n+0]->syms[RX]); ! 447: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 448: *rbp++ = '+'; ! 449: *rbp++ = '%'; ! 450: assert(a->kids[n+3]); ! 451: assert(a->kids[n+3]->x.registered); ! 452: assert(a->kids[n+3]->syms[RX]); ! 453: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 454: return rbp; ! 455: case 9: /* %^c+%^i */ ! 456: *rbp++ = '%'; ! 457: assert(a->syms[n+0]); ! 458: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 459: *rbp++ = '+'; ! 460: *rbp++ = '%'; ! 461: assert(a->kids[n+3]); ! 462: assert(a->kids[n+3]->x.registered); ! 463: assert(a->kids[n+3]->syms[RX]); ! 464: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 465: return rbp; ! 466: case 10: /* %fp+%^i */ ! 467: *rbp++ = '%'; ! 468: *rbp++ = 'f'; ! 469: *rbp++ = 'p'; ! 470: *rbp++ = '+'; ! 471: *rbp++ = '%'; ! 472: assert(a->kids[n+3]); ! 473: assert(a->kids[n+3]->x.registered); ! 474: assert(a->kids[n+3]->syms[RX]); ! 475: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 476: return rbp; ! 477: case 11: /* %sp+%^i */ ! 478: *rbp++ = '%'; ! 479: *rbp++ = 's'; ! 480: *rbp++ = 'p'; ! 481: *rbp++ = '+'; ! 482: *rbp++ = '%'; ! 483: assert(a->kids[n+3]); ! 484: assert(a->kids[n+3]->x.registered); ! 485: assert(a->kids[n+3]->syms[RX]); ! 486: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 487: return rbp; ! 488: case 12: /* %g0+%^i */ ! 489: *rbp++ = '%'; ! 490: *rbp++ = 'g'; ! 491: *rbp++ = '0'; ! 492: *rbp++ = '+'; ! 493: *rbp++ = '%'; ! 494: assert(a->kids[n+3]); ! 495: assert(a->kids[n+3]->x.registered); ! 496: assert(a->kids[n+3]->syms[RX]); ! 497: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 498: return rbp; ! 499: case 13: /* %f^n+%^i */ ! 500: *rbp++ = '%'; ! 501: *rbp++ = 'f'; ! 502: assert(a->kids[n+0]); ! 503: assert(a->kids[n+0]->x.registered); ! 504: assert(a->kids[n+0]->syms[RX]); ! 505: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 506: *rbp++ = '+'; ! 507: *rbp++ = '%'; ! 508: assert(a->kids[n+3]); ! 509: assert(a->kids[n+3]->x.registered); ! 510: assert(a->kids[n+3]->syms[RX]); ! 511: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 512: return rbp; ! 513: case 14: /* %f^c+%^i */ ! 514: *rbp++ = '%'; ! 515: *rbp++ = 'f'; ! 516: assert(a->syms[n+0]); ! 517: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 518: *rbp++ = '+'; ! 519: *rbp++ = '%'; ! 520: assert(a->kids[n+3]); ! 521: assert(a->kids[n+3]->x.registered); ! 522: assert(a->kids[n+3]->syms[RX]); ! 523: for (cp = a->kids[n+3]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 524: return rbp; ! 525: case 15: /* %^n+^c */ ! 526: *rbp++ = '%'; ! 527: assert(a->kids[n+0]); ! 528: assert(a->kids[n+0]->x.registered); ! 529: assert(a->kids[n+0]->syms[RX]); ! 530: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 531: *rbp++ = '+'; ! 532: assert(a->syms[n+0]); ! 533: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 534: return rbp; ! 535: case 16: /* %^n+_^c */ ! 536: *rbp++ = '%'; ! 537: assert(a->kids[n+0]); ! 538: assert(a->kids[n+0]->x.registered); ! 539: assert(a->kids[n+0]->syms[RX]); ! 540: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 541: *rbp++ = '+'; ! 542: *rbp++ = '_'; ! 543: assert(a->syms[n+0]); ! 544: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 545: return rbp; ! 546: case 17: /* %^n+4*^c+68 */ ! 547: *rbp++ = '%'; ! 548: assert(a->kids[n+0]); ! 549: assert(a->kids[n+0]->x.registered); ! 550: assert(a->kids[n+0]->syms[RX]); ! 551: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 552: *rbp++ = '+'; ! 553: *rbp++ = '4'; ! 554: *rbp++ = '*'; ! 555: assert(a->syms[n+0]); ! 556: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 557: *rbp++ = '+'; ! 558: *rbp++ = '6'; ! 559: *rbp++ = '8'; ! 560: return rbp; ! 561: case 18: /* %^n-^c */ ! 562: *rbp++ = '%'; ! 563: assert(a->kids[n+0]); ! 564: assert(a->kids[n+0]->x.registered); ! 565: assert(a->kids[n+0]->syms[RX]); ! 566: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 567: *rbp++ = '-'; ! 568: assert(a->syms[n+0]); ! 569: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 570: return rbp; ! 571: case 19: /* %^n-_^c */ ! 572: *rbp++ = '%'; ! 573: assert(a->kids[n+0]); ! 574: assert(a->kids[n+0]->x.registered); ! 575: assert(a->kids[n+0]->syms[RX]); ! 576: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 577: *rbp++ = '-'; ! 578: *rbp++ = '_'; ! 579: assert(a->syms[n+0]); ! 580: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 581: return rbp; ! 582: case 20: /* %^n-4*^c+68 */ ! 583: *rbp++ = '%'; ! 584: assert(a->kids[n+0]); ! 585: assert(a->kids[n+0]->x.registered); ! 586: assert(a->kids[n+0]->syms[RX]); ! 587: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 588: *rbp++ = '-'; ! 589: *rbp++ = '4'; ! 590: *rbp++ = '*'; ! 591: assert(a->syms[n+0]); ! 592: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 593: *rbp++ = '+'; ! 594: *rbp++ = '6'; ! 595: *rbp++ = '8'; ! 596: return rbp; ! 597: case 21: /* %^c+^c */ ! 598: *rbp++ = '%'; ! 599: assert(a->syms[n+0]); ! 600: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 601: *rbp++ = '+'; ! 602: assert(a->syms[n+0]); ! 603: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 604: return rbp; ! 605: case 22: /* %^c+_^c */ ! 606: *rbp++ = '%'; ! 607: assert(a->syms[n+0]); ! 608: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 609: *rbp++ = '+'; ! 610: *rbp++ = '_'; ! 611: assert(a->syms[n+0]); ! 612: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 613: return rbp; ! 614: case 23: /* %^c+4*^c+68 */ ! 615: *rbp++ = '%'; ! 616: assert(a->syms[n+0]); ! 617: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 618: *rbp++ = '+'; ! 619: *rbp++ = '4'; ! 620: *rbp++ = '*'; ! 621: assert(a->syms[n+0]); ! 622: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 623: *rbp++ = '+'; ! 624: *rbp++ = '6'; ! 625: *rbp++ = '8'; ! 626: return rbp; ! 627: case 24: /* %^c-^c */ ! 628: *rbp++ = '%'; ! 629: assert(a->syms[n+0]); ! 630: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 631: *rbp++ = '-'; ! 632: assert(a->syms[n+0]); ! 633: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 634: return rbp; ! 635: case 25: /* %^c-_^c */ ! 636: *rbp++ = '%'; ! 637: assert(a->syms[n+0]); ! 638: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 639: *rbp++ = '-'; ! 640: *rbp++ = '_'; ! 641: assert(a->syms[n+0]); ! 642: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 643: return rbp; ! 644: case 26: /* %^c-4*^c+68 */ ! 645: *rbp++ = '%'; ! 646: assert(a->syms[n+0]); ! 647: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 648: *rbp++ = '-'; ! 649: *rbp++ = '4'; ! 650: *rbp++ = '*'; ! 651: assert(a->syms[n+0]); ! 652: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 653: *rbp++ = '+'; ! 654: *rbp++ = '6'; ! 655: *rbp++ = '8'; ! 656: return rbp; ! 657: case 27: /* %fp+^c */ ! 658: *rbp++ = '%'; ! 659: *rbp++ = 'f'; ! 660: *rbp++ = 'p'; ! 661: *rbp++ = '+'; ! 662: assert(a->syms[n+0]); ! 663: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 664: return rbp; ! 665: case 28: /* %fp+_^c */ ! 666: *rbp++ = '%'; ! 667: *rbp++ = 'f'; ! 668: *rbp++ = 'p'; ! 669: *rbp++ = '+'; ! 670: *rbp++ = '_'; ! 671: assert(a->syms[n+0]); ! 672: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 673: return rbp; ! 674: case 29: /* %fp+4*^c+68 */ ! 675: *rbp++ = '%'; ! 676: *rbp++ = 'f'; ! 677: *rbp++ = 'p'; ! 678: *rbp++ = '+'; ! 679: *rbp++ = '4'; ! 680: *rbp++ = '*'; ! 681: assert(a->syms[n+0]); ! 682: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 683: *rbp++ = '+'; ! 684: *rbp++ = '6'; ! 685: *rbp++ = '8'; ! 686: return rbp; ! 687: case 30: /* %fp-^c */ ! 688: *rbp++ = '%'; ! 689: *rbp++ = 'f'; ! 690: *rbp++ = 'p'; ! 691: *rbp++ = '-'; ! 692: assert(a->syms[n+0]); ! 693: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 694: return rbp; ! 695: case 31: /* %fp-_^c */ ! 696: *rbp++ = '%'; ! 697: *rbp++ = 'f'; ! 698: *rbp++ = 'p'; ! 699: *rbp++ = '-'; ! 700: *rbp++ = '_'; ! 701: assert(a->syms[n+0]); ! 702: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 703: return rbp; ! 704: case 32: /* %fp-4*^c+68 */ ! 705: *rbp++ = '%'; ! 706: *rbp++ = 'f'; ! 707: *rbp++ = 'p'; ! 708: *rbp++ = '-'; ! 709: *rbp++ = '4'; ! 710: *rbp++ = '*'; ! 711: assert(a->syms[n+0]); ! 712: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 713: *rbp++ = '+'; ! 714: *rbp++ = '6'; ! 715: *rbp++ = '8'; ! 716: return rbp; ! 717: case 33: /* %sp+^c */ ! 718: *rbp++ = '%'; ! 719: *rbp++ = 's'; ! 720: *rbp++ = 'p'; ! 721: *rbp++ = '+'; ! 722: assert(a->syms[n+0]); ! 723: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 724: return rbp; ! 725: case 34: /* %sp+_^c */ ! 726: *rbp++ = '%'; ! 727: *rbp++ = 's'; ! 728: *rbp++ = 'p'; ! 729: *rbp++ = '+'; ! 730: *rbp++ = '_'; ! 731: assert(a->syms[n+0]); ! 732: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 733: return rbp; ! 734: case 35: /* %sp+4*^c+68 */ ! 735: *rbp++ = '%'; ! 736: *rbp++ = 's'; ! 737: *rbp++ = 'p'; ! 738: *rbp++ = '+'; ! 739: *rbp++ = '4'; ! 740: *rbp++ = '*'; ! 741: assert(a->syms[n+0]); ! 742: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 743: *rbp++ = '+'; ! 744: *rbp++ = '6'; ! 745: *rbp++ = '8'; ! 746: return rbp; ! 747: case 36: /* %sp-^c */ ! 748: *rbp++ = '%'; ! 749: *rbp++ = 's'; ! 750: *rbp++ = 'p'; ! 751: *rbp++ = '-'; ! 752: assert(a->syms[n+0]); ! 753: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 754: return rbp; ! 755: case 37: /* %sp-_^c */ ! 756: *rbp++ = '%'; ! 757: *rbp++ = 's'; ! 758: *rbp++ = 'p'; ! 759: *rbp++ = '-'; ! 760: *rbp++ = '_'; ! 761: assert(a->syms[n+0]); ! 762: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 763: return rbp; ! 764: case 38: /* %sp-4*^c+68 */ ! 765: *rbp++ = '%'; ! 766: *rbp++ = 's'; ! 767: *rbp++ = 'p'; ! 768: *rbp++ = '-'; ! 769: *rbp++ = '4'; ! 770: *rbp++ = '*'; ! 771: assert(a->syms[n+0]); ! 772: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 773: *rbp++ = '+'; ! 774: *rbp++ = '6'; ! 775: *rbp++ = '8'; ! 776: return rbp; ! 777: case 39: /* %g0+^c */ ! 778: *rbp++ = '%'; ! 779: *rbp++ = 'g'; ! 780: *rbp++ = '0'; ! 781: *rbp++ = '+'; ! 782: assert(a->syms[n+0]); ! 783: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 784: return rbp; ! 785: case 40: /* %g0+_^c */ ! 786: *rbp++ = '%'; ! 787: *rbp++ = 'g'; ! 788: *rbp++ = '0'; ! 789: *rbp++ = '+'; ! 790: *rbp++ = '_'; ! 791: assert(a->syms[n+0]); ! 792: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 793: return rbp; ! 794: case 41: /* %g0+4*^c+68 */ ! 795: *rbp++ = '%'; ! 796: *rbp++ = 'g'; ! 797: *rbp++ = '0'; ! 798: *rbp++ = '+'; ! 799: *rbp++ = '4'; ! 800: *rbp++ = '*'; ! 801: assert(a->syms[n+0]); ! 802: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 803: *rbp++ = '+'; ! 804: *rbp++ = '6'; ! 805: *rbp++ = '8'; ! 806: return rbp; ! 807: case 42: /* %g0-^c */ ! 808: *rbp++ = '%'; ! 809: *rbp++ = 'g'; ! 810: *rbp++ = '0'; ! 811: *rbp++ = '-'; ! 812: assert(a->syms[n+0]); ! 813: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 814: return rbp; ! 815: case 43: /* %g0-_^c */ ! 816: *rbp++ = '%'; ! 817: *rbp++ = 'g'; ! 818: *rbp++ = '0'; ! 819: *rbp++ = '-'; ! 820: *rbp++ = '_'; ! 821: assert(a->syms[n+0]); ! 822: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 823: return rbp; ! 824: case 44: /* %g0-4*^c+68 */ ! 825: *rbp++ = '%'; ! 826: *rbp++ = 'g'; ! 827: *rbp++ = '0'; ! 828: *rbp++ = '-'; ! 829: *rbp++ = '4'; ! 830: *rbp++ = '*'; ! 831: assert(a->syms[n+0]); ! 832: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 833: *rbp++ = '+'; ! 834: *rbp++ = '6'; ! 835: *rbp++ = '8'; ! 836: return rbp; ! 837: case 45: /* %f^n+^c */ ! 838: *rbp++ = '%'; ! 839: *rbp++ = 'f'; ! 840: assert(a->kids[n+0]); ! 841: assert(a->kids[n+0]->x.registered); ! 842: assert(a->kids[n+0]->syms[RX]); ! 843: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 844: *rbp++ = '+'; ! 845: assert(a->syms[n+0]); ! 846: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 847: return rbp; ! 848: case 46: /* %f^n+_^c */ ! 849: *rbp++ = '%'; ! 850: *rbp++ = 'f'; ! 851: assert(a->kids[n+0]); ! 852: assert(a->kids[n+0]->x.registered); ! 853: assert(a->kids[n+0]->syms[RX]); ! 854: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 855: *rbp++ = '+'; ! 856: *rbp++ = '_'; ! 857: assert(a->syms[n+0]); ! 858: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 859: return rbp; ! 860: case 47: /* %f^n+4*^c+68 */ ! 861: *rbp++ = '%'; ! 862: *rbp++ = 'f'; ! 863: assert(a->kids[n+0]); ! 864: assert(a->kids[n+0]->x.registered); ! 865: assert(a->kids[n+0]->syms[RX]); ! 866: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 867: *rbp++ = '+'; ! 868: *rbp++ = '4'; ! 869: *rbp++ = '*'; ! 870: assert(a->syms[n+0]); ! 871: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 872: *rbp++ = '+'; ! 873: *rbp++ = '6'; ! 874: *rbp++ = '8'; ! 875: return rbp; ! 876: case 48: /* %f^n-^c */ ! 877: *rbp++ = '%'; ! 878: *rbp++ = 'f'; ! 879: assert(a->kids[n+0]); ! 880: assert(a->kids[n+0]->x.registered); ! 881: assert(a->kids[n+0]->syms[RX]); ! 882: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 883: *rbp++ = '-'; ! 884: assert(a->syms[n+0]); ! 885: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 886: return rbp; ! 887: case 49: /* %f^n-_^c */ ! 888: *rbp++ = '%'; ! 889: *rbp++ = 'f'; ! 890: assert(a->kids[n+0]); ! 891: assert(a->kids[n+0]->x.registered); ! 892: assert(a->kids[n+0]->syms[RX]); ! 893: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 894: *rbp++ = '-'; ! 895: *rbp++ = '_'; ! 896: assert(a->syms[n+0]); ! 897: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 898: return rbp; ! 899: case 50: /* %f^n-4*^c+68 */ ! 900: *rbp++ = '%'; ! 901: *rbp++ = 'f'; ! 902: assert(a->kids[n+0]); ! 903: assert(a->kids[n+0]->x.registered); ! 904: assert(a->kids[n+0]->syms[RX]); ! 905: for (cp = a->kids[n+0]->syms[RX]->x.name; *cp; *rbp++ = *cp++); ! 906: *rbp++ = '-'; ! 907: *rbp++ = '4'; ! 908: *rbp++ = '*'; ! 909: assert(a->syms[n+0]); ! 910: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 911: *rbp++ = '+'; ! 912: *rbp++ = '6'; ! 913: *rbp++ = '8'; ! 914: return rbp; ! 915: case 51: /* %f^c+^c */ ! 916: *rbp++ = '%'; ! 917: *rbp++ = 'f'; ! 918: assert(a->syms[n+0]); ! 919: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 920: *rbp++ = '+'; ! 921: assert(a->syms[n+0]); ! 922: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 923: return rbp; ! 924: case 52: /* %f^c+_^c */ ! 925: *rbp++ = '%'; ! 926: *rbp++ = 'f'; ! 927: assert(a->syms[n+0]); ! 928: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 929: *rbp++ = '+'; ! 930: *rbp++ = '_'; ! 931: assert(a->syms[n+0]); ! 932: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 933: return rbp; ! 934: case 53: /* %f^c+4*^c+68 */ ! 935: *rbp++ = '%'; ! 936: *rbp++ = 'f'; ! 937: assert(a->syms[n+0]); ! 938: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 939: *rbp++ = '+'; ! 940: *rbp++ = '4'; ! 941: *rbp++ = '*'; ! 942: assert(a->syms[n+0]); ! 943: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 944: *rbp++ = '+'; ! 945: *rbp++ = '6'; ! 946: *rbp++ = '8'; ! 947: return rbp; ! 948: case 54: /* %f^c-^c */ ! 949: *rbp++ = '%'; ! 950: *rbp++ = 'f'; ! 951: assert(a->syms[n+0]); ! 952: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 953: *rbp++ = '-'; ! 954: assert(a->syms[n+0]); ! 955: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 956: return rbp; ! 957: case 55: /* %f^c-_^c */ ! 958: *rbp++ = '%'; ! 959: *rbp++ = 'f'; ! 960: assert(a->syms[n+0]); ! 961: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 962: *rbp++ = '-'; ! 963: *rbp++ = '_'; ! 964: assert(a->syms[n+0]); ! 965: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 966: return rbp; ! 967: case 56: /* %f^c-4*^c+68 */ ! 968: *rbp++ = '%'; ! 969: *rbp++ = 'f'; ! 970: assert(a->syms[n+0]); ! 971: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 972: *rbp++ = '-'; ! 973: *rbp++ = '4'; ! 974: *rbp++ = '*'; ! 975: assert(a->syms[n+0]); ! 976: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 977: *rbp++ = '+'; ! 978: *rbp++ = '6'; ! 979: *rbp++ = '8'; ! 980: return rbp; ! 981: case 57: /* ^c */ ! 982: assert(a->syms[n+0]); ! 983: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 984: return rbp; ! 985: case 58: /* _^c */ ! 986: *rbp++ = '_'; ! 987: assert(a->syms[n+0]); ! 988: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 989: return rbp; ! 990: case 59: /* 4*^c+68 */ ! 991: *rbp++ = '4'; ! 992: *rbp++ = '*'; ! 993: assert(a->syms[n+0]); ! 994: for (cp = a->syms[n+0]->x.name; *cp; *rbp++ = *cp++); ! 995: *rbp++ = '+'; ! 996: *rbp++ = '6'; ! 997: *rbp++ = '8'; ! 998: return rbp; ! 999: } ! 1000: return rbp; ! 1001: } ! 1002: ! 1003: static void emit(a) ! 1004: register Node a; ! 1005: { ! 1006: register char *cp, *rbp; ! 1007: ! 1008: for (; a; a = a->x.next) { ! 1009: switch (a->op) { ! 1010: case 608: L608: /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 1011: rbp = bp; ! 1012: *rbp++ = 'm'; ! 1013: *rbp++ = 'o'; ! 1014: *rbp++ = 'v'; ! 1015: *rbp++ = ' '; ! 1016: rbp = emit0(rbp, a, 1); ! 1017: *rbp++ = ','; ! 1018: *rbp++ = '%'; ! 1019: *rbp++ = 'o'; ! 1020: *rbp++ = '1'; ! 1021: bp = rbp; outs(";"); rbp = bp; ! 1022: *rbp++ = ' '; ! 1023: *rbp++ = 'c'; ! 1024: *rbp++ = 'a'; ! 1025: *rbp++ = 'l'; ! 1026: *rbp++ = 'l'; ! 1027: *rbp++ = ' '; ! 1028: assert(a->x.ints[3]); ! 1029: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1030: *rbp++ = ','; ! 1031: *rbp++ = '2'; ! 1032: bp = rbp; outs(";"); rbp = bp; ! 1033: *rbp++ = ' '; ! 1034: *rbp++ = 'm'; ! 1035: *rbp++ = 'o'; ! 1036: *rbp++ = 'v'; ! 1037: *rbp++ = ' '; ! 1038: rbp = emit0(rbp, a, 0); ! 1039: *rbp++ = ','; ! 1040: *rbp++ = '%'; ! 1041: *rbp++ = 'o'; ! 1042: *rbp++ = '0'; ! 1043: bp = rbp; outs(";"); rbp = bp; ! 1044: *rbp++ = ' '; ! 1045: *rbp++ = 'm'; ! 1046: *rbp++ = 'o'; ! 1047: *rbp++ = 'v'; ! 1048: *rbp++ = ' '; ! 1049: *rbp++ = '%'; ! 1050: *rbp++ = 'o'; ! 1051: *rbp++ = '0'; ! 1052: *rbp++ = ','; ! 1053: rbp = emit0(rbp, a, 2); ! 1054: bp = rbp; ! 1055: outs("\n"); ! 1056: break; ! 1057: case 609: L609: /* call ^y; nop */ ! 1058: rbp = bp; ! 1059: *rbp++ = 'c'; ! 1060: *rbp++ = 'a'; ! 1061: *rbp++ = 'l'; ! 1062: *rbp++ = 'l'; ! 1063: *rbp++ = ' '; ! 1064: rbp = emit0(rbp, a, 0); ! 1065: bp = rbp; outs(";"); rbp = bp; ! 1066: *rbp++ = ' '; ! 1067: *rbp++ = 'n'; ! 1068: *rbp++ = 'o'; ! 1069: *rbp++ = 'p'; ! 1070: bp = rbp; ! 1071: outs("\n"); ! 1072: break; ! 1073: case 610: L610: /* call ^y; st ^z,[%sp+64] */ ! 1074: rbp = bp; ! 1075: *rbp++ = 'c'; ! 1076: *rbp++ = 'a'; ! 1077: *rbp++ = 'l'; ! 1078: *rbp++ = 'l'; ! 1079: *rbp++ = ' '; ! 1080: rbp = emit0(rbp, a, 0); ! 1081: bp = rbp; outs(";"); rbp = bp; ! 1082: *rbp++ = ' '; ! 1083: *rbp++ = 's'; ! 1084: *rbp++ = 't'; ! 1085: *rbp++ = ' '; ! 1086: rbp = emit0(rbp, a, 2); ! 1087: *rbp++ = ','; ! 1088: *rbp++ = '['; ! 1089: *rbp++ = '%'; ! 1090: *rbp++ = 's'; ! 1091: *rbp++ = 'p'; ! 1092: *rbp++ = '+'; ! 1093: *rbp++ = '6'; ! 1094: *rbp++ = '4'; ! 1095: *rbp++ = ']'; ! 1096: bp = rbp; ! 1097: outs("\n"); ! 1098: break; ! 1099: case 611: L611: /* fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z */ ! 1100: rbp = bp; ! 1101: *rbp++ = 'f'; ! 1102: *rbp++ = 'd'; ! 1103: *rbp++ = 't'; ! 1104: *rbp++ = 'o'; ! 1105: *rbp++ = 'i'; ! 1106: *rbp++ = ' '; ! 1107: rbp = emit0(rbp, a, 0); ! 1108: *rbp++ = ','; ! 1109: *rbp++ = '%'; ! 1110: *rbp++ = 'f'; ! 1111: *rbp++ = '0'; ! 1112: bp = rbp; outs(";"); rbp = bp; ! 1113: *rbp++ = ' '; ! 1114: *rbp++ = 's'; ! 1115: *rbp++ = 't'; ! 1116: *rbp++ = ' '; ! 1117: *rbp++ = '%'; ! 1118: *rbp++ = 'f'; ! 1119: *rbp++ = '0'; ! 1120: *rbp++ = ','; ! 1121: *rbp++ = '['; ! 1122: *rbp++ = '%'; ! 1123: *rbp++ = 's'; ! 1124: *rbp++ = 'p'; ! 1125: *rbp++ = '+'; ! 1126: *rbp++ = '6'; ! 1127: *rbp++ = '4'; ! 1128: *rbp++ = ']'; ! 1129: bp = rbp; outs(";"); rbp = bp; ! 1130: *rbp++ = ' '; ! 1131: *rbp++ = 'l'; ! 1132: *rbp++ = 'd'; ! 1133: *rbp++ = ' '; ! 1134: *rbp++ = '['; ! 1135: *rbp++ = '%'; ! 1136: *rbp++ = 's'; ! 1137: *rbp++ = 'p'; ! 1138: *rbp++ = '+'; ! 1139: *rbp++ = '6'; ! 1140: *rbp++ = '4'; ! 1141: *rbp++ = ']'; ! 1142: *rbp++ = ','; ! 1143: rbp = emit0(rbp, a, 2); ! 1144: bp = rbp; ! 1145: outs("\n"); ! 1146: break; ! 1147: case 612: L612: /* sll ^y,^x,%g1; sra %g1,^x,^z */ ! 1148: rbp = bp; ! 1149: *rbp++ = 's'; ! 1150: *rbp++ = 'l'; ! 1151: *rbp++ = 'l'; ! 1152: *rbp++ = ' '; ! 1153: rbp = emit0(rbp, a, 0); ! 1154: *rbp++ = ','; ! 1155: rbp = emit0(rbp, a, 1); ! 1156: *rbp++ = ','; ! 1157: *rbp++ = '%'; ! 1158: *rbp++ = 'g'; ! 1159: *rbp++ = '1'; ! 1160: bp = rbp; outs(";"); rbp = bp; ! 1161: *rbp++ = ' '; ! 1162: *rbp++ = 's'; ! 1163: *rbp++ = 'r'; ! 1164: *rbp++ = 'a'; ! 1165: *rbp++ = ' '; ! 1166: *rbp++ = '%'; ! 1167: *rbp++ = 'g'; ! 1168: *rbp++ = '1'; ! 1169: *rbp++ = ','; ! 1170: rbp = emit0(rbp, a, 1); ! 1171: *rbp++ = ','; ! 1172: rbp = emit0(rbp, a, 2); ! 1173: bp = rbp; ! 1174: outs("\n"); ! 1175: break; ! 1176: case 613: L613: /* ^z: */ ! 1177: rbp = bp; ! 1178: rbp = emit0(rbp, a, 2); ! 1179: *rbp++ = ':'; ! 1180: bp = rbp; ! 1181: outs("\n"); ! 1182: break; ! 1183: case 614: L614: /* nop */ ! 1184: rbp = bp; ! 1185: *rbp++ = 'n'; ! 1186: *rbp++ = 'o'; ! 1187: *rbp++ = 'p'; ! 1188: bp = rbp; ! 1189: outs("\n"); ! 1190: break; ! 1191: case 615: L615: /* # argd */ ! 1192: (*IR->x.emitspecial)(a); ! 1193: break; ! 1194: case 616: L616: /* # movd */ ! 1195: (*IR->x.emitspecial)(a); ! 1196: break; ! 1197: case 617: L617: /* # negd */ ! 1198: (*IR->x.emitspecial)(a); ! 1199: break; ! 1200: case 618: L618: /* # asgnb */ ! 1201: (*IR->x.emitspecial)(a); ! 1202: break; ! 1203: case 619: L619: /* # reg */ ! 1204: (*IR->x.emitspecial)(a); ! 1205: break; ! 1206: case 620: L620: /* # ret */ ! 1207: (*IR->x.emitspecial)(a); ! 1208: break; ! 1209: case 621: L621: /* # label */ ! 1210: (*IR->x.emitspecial)(a); ! 1211: break; ! 1212: case 622: L622: /* ^f ^y,^x,^z */ ! 1213: rbp = bp; ! 1214: assert(a->x.ints[3]); ! 1215: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1216: *rbp++ = ' '; ! 1217: rbp = emit0(rbp, a, 0); ! 1218: *rbp++ = ','; ! 1219: rbp = emit0(rbp, a, 1); ! 1220: *rbp++ = ','; ! 1221: rbp = emit0(rbp, a, 2); ! 1222: bp = rbp; ! 1223: outs("\n"); ! 1224: break; ! 1225: case 623: L623: /* f^f^t ^y,^x,^z */ ! 1226: rbp = bp; ! 1227: *rbp++ = 'f'; ! 1228: assert(a->x.ints[3]); ! 1229: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1230: assert(a->x.ints[4]); ! 1231: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1232: *rbp++ = ' '; ! 1233: rbp = emit0(rbp, a, 0); ! 1234: *rbp++ = ','; ! 1235: rbp = emit0(rbp, a, 1); ! 1236: *rbp++ = ','; ! 1237: rbp = emit0(rbp, a, 2); ! 1238: bp = rbp; ! 1239: outs("\n"); ! 1240: break; ! 1241: case 624: L624: /* call ^y,2; nop */ ! 1242: rbp = bp; ! 1243: *rbp++ = 'c'; ! 1244: *rbp++ = 'a'; ! 1245: *rbp++ = 'l'; ! 1246: *rbp++ = 'l'; ! 1247: *rbp++ = ' '; ! 1248: rbp = emit0(rbp, a, 0); ! 1249: *rbp++ = ','; ! 1250: *rbp++ = '2'; ! 1251: bp = rbp; outs(";"); rbp = bp; ! 1252: *rbp++ = ' '; ! 1253: *rbp++ = 'n'; ! 1254: *rbp++ = 'o'; ! 1255: *rbp++ = 'p'; ! 1256: bp = rbp; ! 1257: outs("\n"); ! 1258: break; ! 1259: case 625: L625: /* cmp ^y,^x; b^f ^z; nop */ ! 1260: rbp = bp; ! 1261: *rbp++ = 'c'; ! 1262: *rbp++ = 'm'; ! 1263: *rbp++ = 'p'; ! 1264: *rbp++ = ' '; ! 1265: rbp = emit0(rbp, a, 0); ! 1266: *rbp++ = ','; ! 1267: rbp = emit0(rbp, a, 1); ! 1268: bp = rbp; outs(";"); rbp = bp; ! 1269: *rbp++ = ' '; ! 1270: *rbp++ = 'b'; ! 1271: assert(a->x.ints[3]); ! 1272: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1273: *rbp++ = ' '; ! 1274: rbp = emit0(rbp, a, 2); ! 1275: bp = rbp; outs(";"); rbp = bp; ! 1276: *rbp++ = ' '; ! 1277: *rbp++ = 'n'; ! 1278: *rbp++ = 'o'; ! 1279: *rbp++ = 'p'; ! 1280: bp = rbp; ! 1281: outs("\n"); ! 1282: break; ! 1283: case 626: L626: /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 1284: rbp = bp; ! 1285: *rbp++ = 'f'; ! 1286: *rbp++ = 'c'; ! 1287: *rbp++ = 'm'; ! 1288: *rbp++ = 'p'; ! 1289: *rbp++ = 'e'; ! 1290: assert(a->x.ints[4]); ! 1291: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1292: *rbp++ = ' '; ! 1293: rbp = emit0(rbp, a, 0); ! 1294: *rbp++ = ','; ! 1295: rbp = emit0(rbp, a, 1); ! 1296: bp = rbp; outs(";"); rbp = bp; ! 1297: *rbp++ = ' '; ! 1298: *rbp++ = 'n'; ! 1299: *rbp++ = 'o'; ! 1300: *rbp++ = 'p'; ! 1301: bp = rbp; outs(";"); rbp = bp; ! 1302: *rbp++ = ' '; ! 1303: *rbp++ = 'f'; ! 1304: *rbp++ = 'b'; ! 1305: assert(a->x.ints[3]); ! 1306: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1307: *rbp++ = ' '; ! 1308: rbp = emit0(rbp, a, 2); ! 1309: bp = rbp; outs(";"); rbp = bp; ! 1310: *rbp++ = ' '; ! 1311: *rbp++ = 'n'; ! 1312: *rbp++ = 'o'; ! 1313: *rbp++ = 'p'; ! 1314: bp = rbp; ! 1315: outs("\n"); ! 1316: break; ! 1317: case 627: L627: /* fstod ^y,^z */ ! 1318: rbp = bp; ! 1319: *rbp++ = 'f'; ! 1320: *rbp++ = 's'; ! 1321: *rbp++ = 't'; ! 1322: *rbp++ = 'o'; ! 1323: *rbp++ = 'd'; ! 1324: *rbp++ = ' '; ! 1325: rbp = emit0(rbp, a, 0); ! 1326: *rbp++ = ','; ! 1327: rbp = emit0(rbp, a, 2); ! 1328: bp = rbp; ! 1329: outs("\n"); ! 1330: break; ! 1331: case 628: L628: /* fdtos ^y,^z */ ! 1332: rbp = bp; ! 1333: *rbp++ = 'f'; ! 1334: *rbp++ = 'd'; ! 1335: *rbp++ = 't'; ! 1336: *rbp++ = 'o'; ! 1337: *rbp++ = 's'; ! 1338: *rbp++ = ' '; ! 1339: rbp = emit0(rbp, a, 0); ! 1340: *rbp++ = ','; ! 1341: rbp = emit0(rbp, a, 2); ! 1342: bp = rbp; ! 1343: outs("\n"); ! 1344: break; ! 1345: case 629: L629: /* fnegs ^y,^z */ ! 1346: rbp = bp; ! 1347: *rbp++ = 'f'; ! 1348: *rbp++ = 'n'; ! 1349: *rbp++ = 'e'; ! 1350: *rbp++ = 'g'; ! 1351: *rbp++ = 's'; ! 1352: *rbp++ = ' '; ! 1353: rbp = emit0(rbp, a, 0); ! 1354: *rbp++ = ','; ! 1355: rbp = emit0(rbp, a, 2); ! 1356: bp = rbp; ! 1357: outs("\n"); ! 1358: break; ! 1359: case 630: L630: /* fmovd ^y,^z; fnegs ^z,^z */ ! 1360: rbp = bp; ! 1361: *rbp++ = 'f'; ! 1362: *rbp++ = 'm'; ! 1363: *rbp++ = 'o'; ! 1364: *rbp++ = 'v'; ! 1365: *rbp++ = 'd'; ! 1366: *rbp++ = ' '; ! 1367: rbp = emit0(rbp, a, 0); ! 1368: *rbp++ = ','; ! 1369: rbp = emit0(rbp, a, 2); ! 1370: bp = rbp; outs(";"); rbp = bp; ! 1371: *rbp++ = ' '; ! 1372: *rbp++ = 'f'; ! 1373: *rbp++ = 'n'; ! 1374: *rbp++ = 'e'; ! 1375: *rbp++ = 'g'; ! 1376: *rbp++ = 's'; ! 1377: *rbp++ = ' '; ! 1378: rbp = emit0(rbp, a, 2); ! 1379: *rbp++ = ','; ! 1380: rbp = emit0(rbp, a, 2); ! 1381: bp = rbp; ! 1382: outs("\n"); ! 1383: break; ! 1384: case 631: L631: /* st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z */ ! 1385: rbp = bp; ! 1386: *rbp++ = 's'; ! 1387: *rbp++ = 't'; ! 1388: *rbp++ = ' '; ! 1389: rbp = emit0(rbp, a, 0); ! 1390: *rbp++ = ','; ! 1391: *rbp++ = '['; ! 1392: *rbp++ = '%'; ! 1393: *rbp++ = 's'; ! 1394: *rbp++ = 'p'; ! 1395: *rbp++ = '+'; ! 1396: *rbp++ = '6'; ! 1397: *rbp++ = '4'; ! 1398: *rbp++ = ']'; ! 1399: bp = rbp; outs(";"); rbp = bp; ! 1400: *rbp++ = ' '; ! 1401: *rbp++ = 'l'; ! 1402: *rbp++ = 'd'; ! 1403: *rbp++ = ' '; ! 1404: *rbp++ = '['; ! 1405: *rbp++ = '%'; ! 1406: *rbp++ = 's'; ! 1407: *rbp++ = 'p'; ! 1408: *rbp++ = '+'; ! 1409: *rbp++ = '6'; ! 1410: *rbp++ = '4'; ! 1411: *rbp++ = ']'; ! 1412: *rbp++ = ','; ! 1413: rbp = emit0(rbp, a, 2); ! 1414: bp = rbp; outs(";"); rbp = bp; ! 1415: *rbp++ = ' '; ! 1416: *rbp++ = 'f'; ! 1417: *rbp++ = 'i'; ! 1418: *rbp++ = 't'; ! 1419: *rbp++ = 'o'; ! 1420: *rbp++ = 'd'; ! 1421: *rbp++ = ' '; ! 1422: rbp = emit0(rbp, a, 2); ! 1423: *rbp++ = ','; ! 1424: rbp = emit0(rbp, a, 2); ! 1425: bp = rbp; ! 1426: outs("\n"); ! 1427: break; ! 1428: case 632: L632: /* jmp ^y; nop */ ! 1429: rbp = bp; ! 1430: *rbp++ = 'j'; ! 1431: *rbp++ = 'm'; ! 1432: *rbp++ = 'p'; ! 1433: *rbp++ = ' '; ! 1434: rbp = emit0(rbp, a, 0); ! 1435: bp = rbp; outs(";"); rbp = bp; ! 1436: *rbp++ = ' '; ! 1437: *rbp++ = 'n'; ! 1438: *rbp++ = 'o'; ! 1439: *rbp++ = 'p'; ! 1440: bp = rbp; ! 1441: outs("\n"); ! 1442: break; ! 1443: case 633: L633: /* ba ^y; nop */ ! 1444: rbp = bp; ! 1445: *rbp++ = 'b'; ! 1446: *rbp++ = 'a'; ! 1447: *rbp++ = ' '; ! 1448: rbp = emit0(rbp, a, 0); ! 1449: bp = rbp; outs(";"); rbp = bp; ! 1450: *rbp++ = ' '; ! 1451: *rbp++ = 'n'; ! 1452: *rbp++ = 'o'; ! 1453: *rbp++ = 'p'; ! 1454: bp = rbp; ! 1455: outs("\n"); ! 1456: break; ! 1457: case 634: L634: /* ld^t [^y],^z */ ! 1458: rbp = bp; ! 1459: *rbp++ = 'l'; ! 1460: *rbp++ = 'd'; ! 1461: assert(a->x.ints[4]); ! 1462: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1463: *rbp++ = ' '; ! 1464: *rbp++ = '['; ! 1465: rbp = emit0(rbp, a, 0); ! 1466: *rbp++ = ']'; ! 1467: *rbp++ = ','; ! 1468: rbp = emit0(rbp, a, 2); ! 1469: bp = rbp; ! 1470: outs("\n"); ! 1471: break; ! 1472: case 635: L635: /* ld [^y],^z; ld [^y+4],^x */ ! 1473: rbp = bp; ! 1474: *rbp++ = 'l'; ! 1475: *rbp++ = 'd'; ! 1476: *rbp++ = ' '; ! 1477: *rbp++ = '['; ! 1478: rbp = emit0(rbp, a, 0); ! 1479: *rbp++ = ']'; ! 1480: *rbp++ = ','; ! 1481: rbp = emit0(rbp, a, 2); ! 1482: bp = rbp; outs(";"); rbp = bp; ! 1483: *rbp++ = ' '; ! 1484: *rbp++ = 'l'; ! 1485: *rbp++ = 'd'; ! 1486: *rbp++ = ' '; ! 1487: *rbp++ = '['; ! 1488: rbp = emit0(rbp, a, 0); ! 1489: *rbp++ = '+'; ! 1490: *rbp++ = '4'; ! 1491: *rbp++ = ']'; ! 1492: *rbp++ = ','; ! 1493: rbp = emit0(rbp, a, 1); ! 1494: bp = rbp; ! 1495: outs("\n"); ! 1496: break; ! 1497: case 636: L636: /* mov ^y,^z */ ! 1498: rbp = bp; ! 1499: *rbp++ = 'm'; ! 1500: *rbp++ = 'o'; ! 1501: *rbp++ = 'v'; ! 1502: *rbp++ = ' '; ! 1503: rbp = emit0(rbp, a, 0); ! 1504: *rbp++ = ','; ! 1505: rbp = emit0(rbp, a, 2); ! 1506: bp = rbp; ! 1507: outs("\n"); ! 1508: break; ! 1509: case 637: L637: /* fmov^t ^y,^z */ ! 1510: rbp = bp; ! 1511: *rbp++ = 'f'; ! 1512: *rbp++ = 'm'; ! 1513: *rbp++ = 'o'; ! 1514: *rbp++ = 'v'; ! 1515: assert(a->x.ints[4]); ! 1516: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1517: *rbp++ = ' '; ! 1518: rbp = emit0(rbp, a, 0); ! 1519: *rbp++ = ','; ! 1520: rbp = emit0(rbp, a, 2); ! 1521: bp = rbp; ! 1522: outs("\n"); ! 1523: break; ! 1524: case 638: L638: /* set ^y,^z */ ! 1525: rbp = bp; ! 1526: *rbp++ = 's'; ! 1527: *rbp++ = 'e'; ! 1528: *rbp++ = 't'; ! 1529: *rbp++ = ' '; ! 1530: rbp = emit0(rbp, a, 0); ! 1531: *rbp++ = ','; ! 1532: rbp = emit0(rbp, a, 2); ! 1533: bp = rbp; ! 1534: outs("\n"); ! 1535: break; ! 1536: case 639: L639: /* set 0xffff,%g1; and ^y,%g1,^z */ ! 1537: rbp = bp; ! 1538: *rbp++ = 's'; ! 1539: *rbp++ = 'e'; ! 1540: *rbp++ = 't'; ! 1541: *rbp++ = ' '; ! 1542: *rbp++ = '0'; ! 1543: *rbp++ = 'x'; ! 1544: *rbp++ = 'f'; ! 1545: *rbp++ = 'f'; ! 1546: *rbp++ = 'f'; ! 1547: *rbp++ = 'f'; ! 1548: *rbp++ = ','; ! 1549: *rbp++ = '%'; ! 1550: *rbp++ = 'g'; ! 1551: *rbp++ = '1'; ! 1552: bp = rbp; outs(";"); rbp = bp; ! 1553: *rbp++ = ' '; ! 1554: *rbp++ = 'a'; ! 1555: *rbp++ = 'n'; ! 1556: *rbp++ = 'd'; ! 1557: *rbp++ = ' '; ! 1558: rbp = emit0(rbp, a, 0); ! 1559: *rbp++ = ','; ! 1560: *rbp++ = '%'; ! 1561: *rbp++ = 'g'; ! 1562: *rbp++ = '1'; ! 1563: *rbp++ = ','; ! 1564: rbp = emit0(rbp, a, 2); ! 1565: bp = rbp; ! 1566: outs("\n"); ! 1567: break; ! 1568: case 640: L640: /* set ^z,%g1; st^t ^y,[%fp+%g1] */ ! 1569: rbp = bp; ! 1570: *rbp++ = 's'; ! 1571: *rbp++ = 'e'; ! 1572: *rbp++ = 't'; ! 1573: *rbp++ = ' '; ! 1574: rbp = emit0(rbp, a, 2); ! 1575: *rbp++ = ','; ! 1576: *rbp++ = '%'; ! 1577: *rbp++ = 'g'; ! 1578: *rbp++ = '1'; ! 1579: bp = rbp; outs(";"); rbp = bp; ! 1580: *rbp++ = ' '; ! 1581: *rbp++ = 's'; ! 1582: *rbp++ = 't'; ! 1583: assert(a->x.ints[4]); ! 1584: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1585: *rbp++ = ' '; ! 1586: rbp = emit0(rbp, a, 0); ! 1587: *rbp++ = ','; ! 1588: *rbp++ = '['; ! 1589: *rbp++ = '%'; ! 1590: *rbp++ = 'f'; ! 1591: *rbp++ = 'p'; ! 1592: *rbp++ = '+'; ! 1593: *rbp++ = '%'; ! 1594: *rbp++ = 'g'; ! 1595: *rbp++ = '1'; ! 1596: *rbp++ = ']'; ! 1597: bp = rbp; ! 1598: outs("\n"); ! 1599: break; ! 1600: case 641: L641: /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 1601: rbp = bp; ! 1602: *rbp++ = 's'; ! 1603: *rbp++ = 'e'; ! 1604: *rbp++ = 't'; ! 1605: *rbp++ = ' '; ! 1606: rbp = emit0(rbp, a, 0); ! 1607: *rbp++ = ','; ! 1608: *rbp++ = '%'; ! 1609: *rbp++ = 'g'; ! 1610: *rbp++ = '1'; ! 1611: bp = rbp; outs(";"); rbp = bp; ! 1612: *rbp++ = ' '; ! 1613: *rbp++ = 'l'; ! 1614: *rbp++ = 'd'; ! 1615: assert(a->x.ints[4]); ! 1616: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1617: *rbp++ = ' '; ! 1618: *rbp++ = '['; ! 1619: *rbp++ = '%'; ! 1620: *rbp++ = 'f'; ! 1621: *rbp++ = 'p'; ! 1622: *rbp++ = '+'; ! 1623: *rbp++ = '%'; ! 1624: *rbp++ = 'g'; ! 1625: *rbp++ = '1'; ! 1626: *rbp++ = ']'; ! 1627: *rbp++ = ','; ! 1628: rbp = emit0(rbp, a, 2); ! 1629: bp = rbp; ! 1630: outs("\n"); ! 1631: break; ! 1632: case 642: L642: /* st^t ^y,[^z] */ ! 1633: rbp = bp; ! 1634: *rbp++ = 's'; ! 1635: *rbp++ = 't'; ! 1636: assert(a->x.ints[4]); ! 1637: for (cp = asmstr4[a->x.ints[4]]; *cp; *rbp++ = *cp++); ! 1638: *rbp++ = ' '; ! 1639: rbp = emit0(rbp, a, 0); ! 1640: *rbp++ = ','; ! 1641: *rbp++ = '['; ! 1642: rbp = emit0(rbp, a, 2); ! 1643: *rbp++ = ']'; ! 1644: bp = rbp; ! 1645: outs("\n"); ! 1646: break; ! 1647: case 643: L643: /* st ^y,[^z] */ ! 1648: rbp = bp; ! 1649: *rbp++ = 's'; ! 1650: *rbp++ = 't'; ! 1651: *rbp++ = ' '; ! 1652: rbp = emit0(rbp, a, 0); ! 1653: *rbp++ = ','; ! 1654: *rbp++ = '['; ! 1655: rbp = emit0(rbp, a, 2); ! 1656: *rbp++ = ']'; ! 1657: bp = rbp; ! 1658: outs("\n"); ! 1659: break; ! 1660: case 644: L644: /* st ^y,[^z]; st ^x,[^z+4] */ ! 1661: rbp = bp; ! 1662: *rbp++ = 's'; ! 1663: *rbp++ = 't'; ! 1664: *rbp++ = ' '; ! 1665: rbp = emit0(rbp, a, 0); ! 1666: *rbp++ = ','; ! 1667: *rbp++ = '['; ! 1668: rbp = emit0(rbp, a, 2); ! 1669: *rbp++ = ']'; ! 1670: bp = rbp; outs(";"); rbp = bp; ! 1671: *rbp++ = ' '; ! 1672: *rbp++ = 's'; ! 1673: *rbp++ = 't'; ! 1674: *rbp++ = ' '; ! 1675: rbp = emit0(rbp, a, 1); ! 1676: *rbp++ = ','; ! 1677: *rbp++ = '['; ! 1678: rbp = emit0(rbp, a, 2); ! 1679: *rbp++ = '+'; ! 1680: *rbp++ = '4'; ! 1681: *rbp++ = ']'; ! 1682: bp = rbp; ! 1683: outs("\n"); ! 1684: break; ! 1685: case 645: L645: /* st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x */ ! 1686: rbp = bp; ! 1687: *rbp++ = 's'; ! 1688: *rbp++ = 't'; ! 1689: *rbp++ = ' '; ! 1690: rbp = emit0(rbp, a, 0); ! 1691: *rbp++ = ','; ! 1692: *rbp++ = '['; ! 1693: *rbp++ = '%'; ! 1694: *rbp++ = 's'; ! 1695: *rbp++ = 'p'; ! 1696: *rbp++ = '+'; ! 1697: *rbp++ = '4'; ! 1698: *rbp++ = '*'; ! 1699: rbp = emit0(rbp, a, 2); ! 1700: *rbp++ = '+'; ! 1701: *rbp++ = '6'; ! 1702: *rbp++ = '8'; ! 1703: *rbp++ = ']'; ! 1704: bp = rbp; outs(";"); rbp = bp; ! 1705: *rbp++ = ' '; ! 1706: *rbp++ = 'l'; ! 1707: *rbp++ = 'd'; ! 1708: *rbp++ = ' '; ! 1709: *rbp++ = '['; ! 1710: *rbp++ = '%'; ! 1711: *rbp++ = 's'; ! 1712: *rbp++ = 'p'; ! 1713: *rbp++ = '+'; ! 1714: *rbp++ = '4'; ! 1715: *rbp++ = '*'; ! 1716: rbp = emit0(rbp, a, 2); ! 1717: *rbp++ = '+'; ! 1718: *rbp++ = '6'; ! 1719: *rbp++ = '8'; ! 1720: *rbp++ = ']'; ! 1721: *rbp++ = ','; ! 1722: *rbp++ = '%'; ! 1723: *rbp++ = 'o'; ! 1724: rbp = emit0(rbp, a, 1); ! 1725: bp = rbp; ! 1726: outs("\n"); ! 1727: break; ! 1728: case 646: L646: /* set ^y,%g1; add %fp,%g1,^z */ ! 1729: rbp = bp; ! 1730: *rbp++ = 's'; ! 1731: *rbp++ = 'e'; ! 1732: *rbp++ = 't'; ! 1733: *rbp++ = ' '; ! 1734: rbp = emit0(rbp, a, 0); ! 1735: *rbp++ = ','; ! 1736: *rbp++ = '%'; ! 1737: *rbp++ = 'g'; ! 1738: *rbp++ = '1'; ! 1739: bp = rbp; outs(";"); rbp = bp; ! 1740: *rbp++ = ' '; ! 1741: *rbp++ = 'a'; ! 1742: *rbp++ = 'd'; ! 1743: *rbp++ = 'd'; ! 1744: *rbp++ = ' '; ! 1745: *rbp++ = '%'; ! 1746: *rbp++ = 'f'; ! 1747: *rbp++ = 'p'; ! 1748: *rbp++ = ','; ! 1749: *rbp++ = '%'; ! 1750: *rbp++ = 'g'; ! 1751: *rbp++ = '1'; ! 1752: *rbp++ = ','; ! 1753: rbp = emit0(rbp, a, 2); ! 1754: bp = rbp; ! 1755: outs("\n"); ! 1756: break; ! 1757: case 647: L647: /* call ^f,2; nop */ ! 1758: rbp = bp; ! 1759: *rbp++ = 'c'; ! 1760: *rbp++ = 'a'; ! 1761: *rbp++ = 'l'; ! 1762: *rbp++ = 'l'; ! 1763: *rbp++ = ' '; ! 1764: assert(a->x.ints[3]); ! 1765: for (cp = asmstr3[a->x.ints[3]]; *cp; *rbp++ = *cp++); ! 1766: *rbp++ = ','; ! 1767: *rbp++ = '2'; ! 1768: bp = rbp; outs(";"); rbp = bp; ! 1769: *rbp++ = ' '; ! 1770: *rbp++ = 'n'; ! 1771: *rbp++ = 'o'; ! 1772: *rbp++ = 'p'; ! 1773: bp = rbp; ! 1774: outs("\n"); ! 1775: break; ! 1776: } ! 1777: } ! 1778: } ! 1779: ! 1780: static void final(a) ! 1781: register Node a; ! 1782: { ! 1783: register int s; ! 1784: switch (a->op) { ! 1785: case 608: L608: /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 1786: dumptree(a, 608); ! 1787: spill(0x0000ff00, IREG, a); ! 1788: a->op = 608; ! 1789: break; ! 1790: case 609: L609: /* call ^y; nop */ ! 1791: dumptree(a, 609); ! 1792: if ( ! 1793: a->x.ints[0] == 58 /* _^c */ ! 1794: ) { ! 1795: a->x.ints[0] = 57; /* ^c */ ! 1796: goto L609; /* call ^y; nop */ ! 1797: } ! 1798: spill(0xfffffffc, FREG, a); ! 1799: a->op = 609; ! 1800: break; ! 1801: case 610: L610: /* call ^y; st ^z,[%sp+64] */ ! 1802: dumptree(a, 610); ! 1803: if ( ! 1804: a->x.ints[0] == 58 /* _^c */ ! 1805: ) { ! 1806: a->x.ints[0] = 57; /* ^c */ ! 1807: goto L610; /* call ^y; st ^z,[%sp+64] */ ! 1808: } ! 1809: spill(0xfffffffc, FREG, a); ! 1810: a->op = 610; ! 1811: break; ! 1812: case 611: L611: /* fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z */ ! 1813: dumptree(a, 611); ! 1814: spill(0x00000001, FREG, a); ! 1815: a->op = 611; ! 1816: break; ! 1817: case 612: L612: /* sll ^y,^x,%g1; sra %g1,^x,^z */ ! 1818: dumptree(a, 612); ! 1819: a->op = 612; ! 1820: break; ! 1821: case 613: L613: /* ^z: */ ! 1822: dumptree(a, 613); ! 1823: a->op = 613; ! 1824: break; ! 1825: case 614: L614: /* nop */ ! 1826: dumptree(a, 614); ! 1827: a->op = 614; ! 1828: break; ! 1829: case 615: L615: /* # argd */ ! 1830: dumptree(a, 615); ! 1831: a->op = 615; ! 1832: return; ! 1833: case 616: L616: /* # movd */ ! 1834: dumptree(a, 616); ! 1835: a->op = 616; ! 1836: return; ! 1837: case 617: L617: /* # negd */ ! 1838: dumptree(a, 617); ! 1839: a->op = 617; ! 1840: return; ! 1841: case 618: L618: /* # asgnb */ ! 1842: dumptree(a, 618); ! 1843: a->op = 618; ! 1844: return; ! 1845: case 619: L619: /* # reg */ ! 1846: dumptree(a, 619); ! 1847: a->op = 619; ! 1848: return; ! 1849: case 620: L620: /* # ret */ ! 1850: dumptree(a, 620); ! 1851: a->op = 620; ! 1852: return; ! 1853: case 621: L621: /* # label */ ! 1854: dumptree(a, 621); ! 1855: a->op = 621; ! 1856: return; ! 1857: case 622: L622: /* ^f ^y,^x,^z */ ! 1858: dumptree(a, 622); ! 1859: a->op = 622; ! 1860: break; ! 1861: case 623: L623: /* f^f^t ^y,^x,^z */ ! 1862: dumptree(a, 623); ! 1863: a->op = 623; ! 1864: break; ! 1865: case 624: L624: /* call ^y,2; nop */ ! 1866: dumptree(a, 624); ! 1867: a->op = 624; ! 1868: break; ! 1869: case 625: L625: /* cmp ^y,^x; b^f ^z; nop */ ! 1870: dumptree(a, 625); ! 1871: a->op = 625; ! 1872: break; ! 1873: case 626: L626: /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 1874: dumptree(a, 626); ! 1875: a->op = 626; ! 1876: break; ! 1877: case 627: L627: /* fstod ^y,^z */ ! 1878: dumptree(a, 627); ! 1879: a->op = 627; ! 1880: break; ! 1881: case 628: L628: /* fdtos ^y,^z */ ! 1882: dumptree(a, 628); ! 1883: a->op = 628; ! 1884: break; ! 1885: case 629: L629: /* fnegs ^y,^z */ ! 1886: dumptree(a, 629); ! 1887: a->op = 629; ! 1888: break; ! 1889: case 630: L630: /* fmovd ^y,^z; fnegs ^z,^z */ ! 1890: dumptree(a, 630); ! 1891: a->op = 630; ! 1892: break; ! 1893: case 631: L631: /* st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z */ ! 1894: dumptree(a, 631); ! 1895: a->op = 631; ! 1896: break; ! 1897: case 632: L632: /* jmp ^y; nop */ ! 1898: dumptree(a, 632); ! 1899: a->op = 632; ! 1900: break; ! 1901: case 633: L633: /* ba ^y; nop */ ! 1902: dumptree(a, 633); ! 1903: a->op = 633; ! 1904: break; ! 1905: case 634: L634: /* ld^t [^y],^z */ ! 1906: dumptree(a, 634); ! 1907: if ( ! 1908: a->x.ints[4] == 8 /* d */ ! 1909: ) { ! 1910: a->x.ints[1] = 7; /* %f^c */ ! 1911: a->syms[1]=nextreg(a->syms[2]); ! 1912: goto L635; /* ld [^y],^z; ld [^y+4],^x */ ! 1913: } ! 1914: a->op = 634; ! 1915: break; ! 1916: case 635: L635: /* ld [^y],^z; ld [^y+4],^x */ ! 1917: dumptree(a, 635); ! 1918: a->op = 635; ! 1919: break; ! 1920: case 636: L636: /* mov ^y,^z */ ! 1921: dumptree(a, 636); ! 1922: if ( ! 1923: a->x.ints[0] == 1 /* %^n */ ! 1924: && a->x.ints[2] == 2 /* %^c */ ! 1925: && a->kids[0]->syms[RX]->x.name==a->syms[RX]->x.name ! 1926: ) { ! 1927: goto L619; /* # reg */ ! 1928: } ! 1929: a->op = 636; ! 1930: break; ! 1931: case 637: L637: /* fmov^t ^y,^z */ ! 1932: dumptree(a, 637); ! 1933: a->op = 637; ! 1934: break; ! 1935: case 638: L638: /* set ^y,^z */ ! 1936: dumptree(a, 638); ! 1937: if ( ! 1938: a->x.ints[0] == 58 /* _^c */ ! 1939: ) { ! 1940: a->x.ints[0] = 57; /* ^c */ ! 1941: goto L638; /* set ^y,^z */ ! 1942: } ! 1943: a->op = 638; ! 1944: break; ! 1945: case 639: L639: /* set 0xffff,%g1; and ^y,%g1,^z */ ! 1946: dumptree(a, 639); ! 1947: a->op = 639; ! 1948: break; ! 1949: case 640: L640: /* set ^z,%g1; st^t ^y,[%fp+%g1] */ ! 1950: dumptree(a, 640); ! 1951: a->op = 640; ! 1952: break; ! 1953: case 641: L641: /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 1954: dumptree(a, 641); ! 1955: a->op = 641; ! 1956: break; ! 1957: case 642: L642: /* st^t ^y,[^z] */ ! 1958: dumptree(a, 642); ! 1959: switch (a->x.ints[4]) { ! 1960: case 8: /* d */ ! 1961: if ( ! 1962: a->x.ints[0] == 6 /* %f^n */ ! 1963: && a->x.ints[2] == 35 /* %sp+4*^c+68 */ ! 1964: ) { ! 1965: spill(5>=a->syms[1]->u.c.v.i ? 256*("\003\006\014\030\060\040"[a->syms[1]->u.c.v.i]) : 0, IREG, a); ! 1966: goto L615; /* # argd */ ! 1967: } ! 1968: a->x.ints[1] = 7; /* %f^c */ ! 1969: a->syms[1]=nextreg(a->kids[0]->syms[2]); ! 1970: goto L644; /* st ^y,[^z]; st ^x,[^z+4] */ ! 1971: case 9: /* */ ! 1972: if ( ! 1973: a->x.ints[0] == 6 /* %f^n */ ! 1974: && a->x.ints[2] == 35 /* %sp+4*^c+68 */ ! 1975: && 6>a->syms[2]->u.c.v.i ! 1976: ) { ! 1977: a->x.ints[1] = 57; /* ^c */ ! 1978: a->x.ints[2] = 57; /* ^c */ ! 1979: a->x.ints[2] = 57; /* ^c */ ! 1980: a->x.ints[0] = 6; /* %f^n */ ! 1981: goto L645; /* st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x */ ! 1982: } ! 1983: break; ! 1984: } ! 1985: a->op = 642; ! 1986: break; ! 1987: case 643: L643: /* st ^y,[^z] */ ! 1988: dumptree(a, 643); ! 1989: a->op = 643; ! 1990: break; ! 1991: case 644: L644: /* st ^y,[^z]; st ^x,[^z+4] */ ! 1992: dumptree(a, 644); ! 1993: a->op = 644; ! 1994: break; ! 1995: case 645: L645: /* st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x */ ! 1996: dumptree(a, 645); ! 1997: a->op = 645; ! 1998: break; ! 1999: case 646: L646: /* set ^y,%g1; add %fp,%g1,^z */ ! 2000: dumptree(a, 646); ! 2001: a->op = 646; ! 2002: break; ! 2003: case 647: L647: /* call ^f,2; nop */ ! 2004: dumptree(a, 647); ! 2005: a->op = 647; ! 2006: break; ! 2007: } ! 2008: } ! 2009: ! 2010: static void rewrite(a) ! 2011: register Node a; ! 2012: { ! 2013: register Node b, c; ! 2014: register int s; ! 2015: assert(a); ! 2016: switch (a->op) { ! 2017: case 19: L19: /* CNSTC */ ! 2018: dumptree(a, a->op); ! 2019: setreg(a, rmap[C]); ! 2020: a->x.ints[2] = 2; /* %^c */ ! 2021: a->x.ints[0] = 57; /* ^c */ ! 2022: goto L638; /* set ^y,^z */ ! 2023: case 20: L20: /* CNSTS */ ! 2024: dumptree(a, a->op); ! 2025: setreg(a, rmap[S]); ! 2026: a->x.ints[2] = 2; /* %^c */ ! 2027: a->x.ints[0] = 57; /* ^c */ ! 2028: goto L638; /* set ^y,^z */ ! 2029: case 21: L21: /* CNSTI */ ! 2030: dumptree(a, a->op); ! 2031: setreg(a, rmap[I]); ! 2032: a->x.ints[2] = 2; /* %^c */ ! 2033: a->x.ints[0] = 57; /* ^c */ ! 2034: goto L638; /* set ^y,^z */ ! 2035: case 22: L22: /* CNSTU */ ! 2036: dumptree(a, a->op); ! 2037: setreg(a, rmap[U]); ! 2038: a->x.ints[2] = 2; /* %^c */ ! 2039: a->x.ints[0] = 57; /* ^c */ ! 2040: goto L638; /* set ^y,^z */ ! 2041: case 23: L23: /* CNSTP */ ! 2042: dumptree(a, a->op); ! 2043: setreg(a, rmap[P]); ! 2044: a->x.ints[2] = 2; /* %^c */ ! 2045: a->x.ints[0] = 57; /* ^c */ ! 2046: goto L638; /* set ^y,^z */ ! 2047: case 33: L33: /* ARGF */ ! 2048: dumptree(a, a->op); ! 2049: rewrite(a->kids[0]); ! 2050: a->x.ints[2] = 35; /* %sp+4*^c+68 */ ! 2051: a->x.ints[0] = 6; /* %f^n */ ! 2052: a->x.ints[4] = 9; /* */ ! 2053: goto L642; /* st^t ^y,[^z] */ ! 2054: case 34: L34: /* ARGD */ ! 2055: dumptree(a, a->op); ! 2056: rewrite(a->kids[0]); ! 2057: a->x.ints[2] = 35; /* %sp+4*^c+68 */ ! 2058: a->x.ints[0] = 6; /* %f^n */ ! 2059: a->x.ints[4] = 8; /* d */ ! 2060: goto L642; /* st^t ^y,[^z] */ ! 2061: case 37: L37: /* ARGI */ ! 2062: dumptree(a, a->op); ! 2063: rewrite(a->kids[0]); ! 2064: a->x.ints[2] = 35; /* %sp+4*^c+68 */ ! 2065: a->x.ints[0] = 1; /* %^n */ ! 2066: a->x.ints[4] = 9; /* */ ! 2067: goto L642; /* st^t ^y,[^z] */ ! 2068: case 39: L39: /* ARGP */ ! 2069: dumptree(a, a->op); ! 2070: rewrite(a->kids[0]); ! 2071: a->x.ints[2] = 35; /* %sp+4*^c+68 */ ! 2072: a->x.ints[0] = 1; /* %^n */ ! 2073: a->x.ints[4] = 9; /* */ ! 2074: goto L642; /* st^t ^y,[^z] */ ! 2075: case 49: L49: /* ASGNF */ ! 2076: dumptree(a, a->op); ! 2077: rewrite(a->kids[0]); ! 2078: rewrite(a->kids[1]); ! 2079: a->kids[2] = a->kids[0]; ! 2080: a->kids[0] = 0; ! 2081: a->x.ints[2] = 1; /* %^n */ ! 2082: a->x.ints[0] = 6; /* %f^n */ ! 2083: a->x.ints[4] = 9; /* */ ! 2084: a->kids[0] = a->kids[1]; ! 2085: a->kids[1] = 0; ! 2086: goto L642; /* st^t ^y,[^z] */ ! 2087: case 50: L50: /* ASGND */ ! 2088: dumptree(a, a->op); ! 2089: rewrite(a->kids[0]); ! 2090: rewrite(a->kids[1]); ! 2091: a->kids[2] = a->kids[0]; ! 2092: a->kids[0] = 0; ! 2093: a->x.ints[2] = 1; /* %^n */ ! 2094: a->x.ints[0] = 6; /* %f^n */ ! 2095: a->x.ints[4] = 8; /* d */ ! 2096: a->kids[0] = a->kids[1]; ! 2097: a->kids[1] = 0; ! 2098: goto L642; /* st^t ^y,[^z] */ ! 2099: case 51: L51: /* ASGNC */ ! 2100: dumptree(a, a->op); ! 2101: rewrite(a->kids[0]); ! 2102: rewrite(a->kids[1]); ! 2103: a->kids[2] = a->kids[0]; ! 2104: a->kids[0] = 0; ! 2105: a->x.ints[2] = 1; /* %^n */ ! 2106: a->x.ints[0] = 1; /* %^n */ ! 2107: a->x.ints[4] = 5; /* b */ ! 2108: a->kids[0] = a->kids[1]; ! 2109: a->kids[1] = 0; ! 2110: goto L642; /* st^t ^y,[^z] */ ! 2111: case 52: L52: /* ASGNS */ ! 2112: dumptree(a, a->op); ! 2113: rewrite(a->kids[0]); ! 2114: rewrite(a->kids[1]); ! 2115: a->kids[2] = a->kids[0]; ! 2116: a->kids[0] = 0; ! 2117: a->x.ints[2] = 1; /* %^n */ ! 2118: a->x.ints[0] = 1; /* %^n */ ! 2119: a->x.ints[4] = 6; /* h */ ! 2120: a->kids[0] = a->kids[1]; ! 2121: a->kids[1] = 0; ! 2122: goto L642; /* st^t ^y,[^z] */ ! 2123: case 53: L53: /* ASGNI */ ! 2124: dumptree(a, a->op); ! 2125: rewrite(a->kids[0]); ! 2126: rewrite(a->kids[1]); ! 2127: a->kids[2] = a->kids[0]; ! 2128: a->kids[0] = 0; ! 2129: a->x.ints[2] = 1; /* %^n */ ! 2130: a->x.ints[0] = 1; /* %^n */ ! 2131: a->x.ints[4] = 9; /* */ ! 2132: a->kids[0] = a->kids[1]; ! 2133: a->kids[1] = 0; ! 2134: goto L642; /* st^t ^y,[^z] */ ! 2135: case 55: L55: /* ASGNP */ ! 2136: dumptree(a, a->op); ! 2137: rewrite(a->kids[0]); ! 2138: rewrite(a->kids[1]); ! 2139: a->kids[2] = a->kids[0]; ! 2140: a->kids[0] = 0; ! 2141: a->x.ints[2] = 1; /* %^n */ ! 2142: a->x.ints[0] = 1; /* %^n */ ! 2143: a->x.ints[4] = 9; /* */ ! 2144: a->kids[0] = a->kids[1]; ! 2145: a->kids[1] = 0; ! 2146: goto L642; /* st^t ^y,[^z] */ ! 2147: case 57: L57: /* ASGNB */ ! 2148: dumptree(a, a->op); ! 2149: rewrite(a->kids[0]); ! 2150: rewrite(a->kids[1]); ! 2151: goto L618; /* # asgnb */ ! 2152: case 65: L65: /* INDIRF */ ! 2153: dumptree(a, a->op); ! 2154: setreg(a, rmap[F]); ! 2155: rewrite(a->kids[0]); ! 2156: a->x.ints[2] = 7; /* %f^c */ ! 2157: a->x.ints[0] = 1; /* %^n */ ! 2158: a->x.ints[4] = 9; /* */ ! 2159: goto L634; /* ld^t [^y],^z */ ! 2160: case 66: L66: /* INDIRD */ ! 2161: dumptree(a, a->op); ! 2162: setreg(a, rmap[D]); ! 2163: rewrite(a->kids[0]); ! 2164: a->x.ints[2] = 7; /* %f^c */ ! 2165: a->x.ints[0] = 1; /* %^n */ ! 2166: a->x.ints[4] = 8; /* d */ ! 2167: goto L634; /* ld^t [^y],^z */ ! 2168: case 67: L67: /* INDIRC */ ! 2169: dumptree(a, a->op); ! 2170: setreg(a, rmap[C]); ! 2171: rewrite(a->kids[0]); ! 2172: a->x.ints[2] = 2; /* %^c */ ! 2173: a->x.ints[0] = 1; /* %^n */ ! 2174: a->x.ints[4] = 1; /* sb */ ! 2175: goto L634; /* ld^t [^y],^z */ ! 2176: case 68: L68: /* INDIRS */ ! 2177: dumptree(a, a->op); ! 2178: setreg(a, rmap[S]); ! 2179: rewrite(a->kids[0]); ! 2180: a->x.ints[2] = 2; /* %^c */ ! 2181: a->x.ints[0] = 1; /* %^n */ ! 2182: a->x.ints[4] = 2; /* sh */ ! 2183: goto L634; /* ld^t [^y],^z */ ! 2184: case 69: L69: /* INDIRI */ ! 2185: dumptree(a, a->op); ! 2186: setreg(a, rmap[I]); ! 2187: rewrite(a->kids[0]); ! 2188: a->x.ints[2] = 2; /* %^c */ ! 2189: a->x.ints[0] = 1; /* %^n */ ! 2190: a->x.ints[4] = 9; /* */ ! 2191: goto L634; /* ld^t [^y],^z */ ! 2192: case 71: L71: /* INDIRP */ ! 2193: dumptree(a, a->op); ! 2194: setreg(a, rmap[P]); ! 2195: rewrite(a->kids[0]); ! 2196: a->x.ints[2] = 2; /* %^c */ ! 2197: a->x.ints[0] = 1; /* %^n */ ! 2198: a->x.ints[4] = 9; /* */ ! 2199: goto L634; /* ld^t [^y],^z */ ! 2200: case 73: L73: /* INDIRB */ ! 2201: dumptree(a, a->op); ! 2202: setreg(a, rmap[P]); ! 2203: rewrite(a->kids[0]); ! 2204: a->x.ints[2] = 2; /* %^c */ ! 2205: a->x.ints[0] = 1; /* %^n */ ! 2206: goto L636; /* mov ^y,^z */ ! 2207: case 85: L85: /* CVCI */ ! 2208: dumptree(a, a->op); ! 2209: setreg(a, rmap[I]); ! 2210: rewrite(a->kids[0]); ! 2211: a->x.ints[2] = 2; /* %^c */ ! 2212: a->syms[1] = &sym[5]; /* 24 */ ! 2213: a->x.ints[1] = 57; /* ^c */ ! 2214: a->syms[1] = &sym[5]; /* 24 */ ! 2215: a->x.ints[1] = 57; /* ^c */ ! 2216: a->x.ints[0] = 1; /* %^n */ ! 2217: goto L612; /* sll ^y,^x,%g1; sra %g1,^x,^z */ ! 2218: case 86: L86: /* CVCU */ ! 2219: dumptree(a, a->op); ! 2220: setreg(a, rmap[U]); ! 2221: rewrite(a->kids[0]); ! 2222: a->x.ints[2] = 2; /* %^c */ ! 2223: a->syms[1] = &sym[2]; /* 0xff */ ! 2224: a->x.ints[1] = 57; /* ^c */ ! 2225: a->x.ints[0] = 1; /* %^n */ ! 2226: a->x.ints[3] = 2; /* and */ ! 2227: goto L622; /* ^f ^y,^x,^z */ ! 2228: case 97: L97: /* CVDF */ ! 2229: dumptree(a, a->op); ! 2230: setreg(a, rmap[F]); ! 2231: rewrite(a->kids[0]); ! 2232: a->x.ints[2] = 7; /* %f^c */ ! 2233: a->x.ints[0] = 6; /* %f^n */ ! 2234: goto L628; /* fdtos ^y,^z */ ! 2235: case 101: L101: /* CVDI */ ! 2236: dumptree(a, a->op); ! 2237: setreg(a, rmap[I]); ! 2238: rewrite(a->kids[0]); ! 2239: a->x.ints[2] = 2; /* %^c */ ! 2240: a->x.ints[0] = 6; /* %f^n */ ! 2241: goto L611; /* fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z */ ! 2242: case 114: L114: /* CVFD */ ! 2243: dumptree(a, a->op); ! 2244: setreg(a, rmap[D]); ! 2245: rewrite(a->kids[0]); ! 2246: a->x.ints[2] = 7; /* %f^c */ ! 2247: a->x.ints[0] = 6; /* %f^n */ ! 2248: goto L627; /* fstod ^y,^z */ ! 2249: case 130: L130: /* CVID */ ! 2250: dumptree(a, a->op); ! 2251: setreg(a, rmap[D]); ! 2252: rewrite(a->kids[0]); ! 2253: a->x.ints[2] = 7; /* %f^c */ ! 2254: a->x.ints[0] = 1; /* %^n */ ! 2255: goto L631; /* st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z */ ! 2256: case 131: L131: /* CVIC */ ! 2257: dumptree(a, a->op); ! 2258: setreg(a, rmap[C]); ! 2259: rewrite(a->kids[0]); ! 2260: a->x.ints[2] = 2; /* %^c */ ! 2261: a->x.ints[0] = 1; /* %^n */ ! 2262: goto L636; /* mov ^y,^z */ ! 2263: case 132: L132: /* CVIS */ ! 2264: dumptree(a, a->op); ! 2265: setreg(a, rmap[S]); ! 2266: rewrite(a->kids[0]); ! 2267: a->x.ints[2] = 2; /* %^c */ ! 2268: a->x.ints[0] = 1; /* %^n */ ! 2269: goto L636; /* mov ^y,^z */ ! 2270: case 134: L134: /* CVIU */ ! 2271: dumptree(a, a->op); ! 2272: setreg(a, rmap[U]); ! 2273: rewrite(a->kids[0]); ! 2274: a->x.ints[2] = 2; /* %^c */ ! 2275: a->x.ints[0] = 1; /* %^n */ ! 2276: goto L636; /* mov ^y,^z */ ! 2277: case 150: L150: /* CVPU */ ! 2278: dumptree(a, a->op); ! 2279: setreg(a, rmap[U]); ! 2280: rewrite(a->kids[0]); ! 2281: a->x.ints[2] = 2; /* %^c */ ! 2282: a->x.ints[0] = 1; /* %^n */ ! 2283: goto L636; /* mov ^y,^z */ ! 2284: case 165: L165: /* CVSI */ ! 2285: dumptree(a, a->op); ! 2286: setreg(a, rmap[I]); ! 2287: rewrite(a->kids[0]); ! 2288: a->x.ints[2] = 2; /* %^c */ ! 2289: a->syms[1] = &sym[4]; /* 16 */ ! 2290: a->x.ints[1] = 57; /* ^c */ ! 2291: a->syms[1] = &sym[4]; /* 16 */ ! 2292: a->x.ints[1] = 57; /* ^c */ ! 2293: a->x.ints[0] = 1; /* %^n */ ! 2294: goto L612; /* sll ^y,^x,%g1; sra %g1,^x,^z */ ! 2295: case 166: L166: /* CVSU */ ! 2296: dumptree(a, a->op); ! 2297: setreg(a, rmap[U]); ! 2298: rewrite(a->kids[0]); ! 2299: a->x.ints[2] = 2; /* %^c */ ! 2300: a->x.ints[0] = 1; /* %^n */ ! 2301: goto L639; /* set 0xffff,%g1; and ^y,%g1,^z */ ! 2302: case 179: L179: /* CVUC */ ! 2303: dumptree(a, a->op); ! 2304: setreg(a, rmap[C]); ! 2305: rewrite(a->kids[0]); ! 2306: a->x.ints[2] = 2; /* %^c */ ! 2307: a->x.ints[0] = 1; /* %^n */ ! 2308: goto L636; /* mov ^y,^z */ ! 2309: case 180: L180: /* CVUS */ ! 2310: dumptree(a, a->op); ! 2311: setreg(a, rmap[S]); ! 2312: rewrite(a->kids[0]); ! 2313: a->x.ints[2] = 2; /* %^c */ ! 2314: a->x.ints[0] = 1; /* %^n */ ! 2315: goto L636; /* mov ^y,^z */ ! 2316: case 181: L181: /* CVUI */ ! 2317: dumptree(a, a->op); ! 2318: setreg(a, rmap[I]); ! 2319: rewrite(a->kids[0]); ! 2320: a->x.ints[2] = 2; /* %^c */ ! 2321: a->x.ints[0] = 1; /* %^n */ ! 2322: goto L636; /* mov ^y,^z */ ! 2323: case 183: L183: /* CVUP */ ! 2324: dumptree(a, a->op); ! 2325: setreg(a, rmap[P]); ! 2326: rewrite(a->kids[0]); ! 2327: a->x.ints[2] = 2; /* %^c */ ! 2328: a->x.ints[0] = 1; /* %^n */ ! 2329: goto L636; /* mov ^y,^z */ ! 2330: case 193: L193: /* NEGF */ ! 2331: dumptree(a, a->op); ! 2332: setreg(a, rmap[F]); ! 2333: rewrite(a->kids[0]); ! 2334: a->x.ints[2] = 7; /* %f^c */ ! 2335: a->x.ints[0] = 6; /* %f^n */ ! 2336: goto L629; /* fnegs ^y,^z */ ! 2337: case 194: L194: /* NEGD */ ! 2338: dumptree(a, a->op); ! 2339: setreg(a, rmap[D]); ! 2340: rewrite(a->kids[0]); ! 2341: goto L617; /* # negd */ ! 2342: case 197: L197: /* NEGI */ ! 2343: dumptree(a, a->op); ! 2344: setreg(a, rmap[I]); ! 2345: rewrite(a->kids[0]); ! 2346: a->x.ints[2] = 2; /* %^c */ ! 2347: a->kids[1] = a->kids[0]; ! 2348: a->kids[0] = 0; ! 2349: a->x.ints[1] = 1; /* %^n */ ! 2350: a->x.ints[0] = 5; /* %g0 */ ! 2351: a->x.ints[3] = 9; /* sub */ ! 2352: goto L622; /* ^f ^y,^x,^z */ ! 2353: case 209: L209: /* CALLF */ ! 2354: dumptree(a, a->op); ! 2355: setreg(a, rmap[F]); ! 2356: rewrite(a->kids[0]); ! 2357: a->x.ints[0] = 1; /* %^n */ ! 2358: setreg(a,f0); ! 2359: goto L609; /* call ^y; nop */ ! 2360: case 210: L210: /* CALLD */ ! 2361: dumptree(a, a->op); ! 2362: setreg(a, rmap[D]); ! 2363: rewrite(a->kids[0]); ! 2364: a->x.ints[0] = 1; /* %^n */ ! 2365: setreg(a,d0); ! 2366: goto L609; /* call ^y; nop */ ! 2367: case 213: L213: /* CALLI */ ! 2368: dumptree(a, a->op); ! 2369: setreg(a, rmap[I]); ! 2370: rewrite(a->kids[0]); ! 2371: a->x.ints[0] = 1; /* %^n */ ! 2372: setreg(a,oreg[0]); ! 2373: goto L609; /* call ^y; nop */ ! 2374: case 216: L216: /* CALLV */ ! 2375: dumptree(a, a->op); ! 2376: rewrite(a->kids[0]); ! 2377: a->x.ints[0] = 1; /* %^n */ ! 2378: setreg(a,oreg[0]); ! 2379: goto L609; /* call ^y; nop */ ! 2380: case 217: L217: /* CALLB */ ! 2381: dumptree(a, a->op); ! 2382: rewrite(a->kids[0]); ! 2383: rewrite(a->kids[1]); ! 2384: a->kids[2] = a->kids[1]; ! 2385: a->kids[1] = 0; ! 2386: a->x.ints[2] = 1; /* %^n */ ! 2387: a->x.ints[0] = 1; /* %^n */ ! 2388: setreg(a,oreg[0]); ! 2389: goto L610; /* call ^y; st ^z,[%sp+64] */ ! 2390: case 225: L225: /* LOADF */ ! 2391: dumptree(a, a->op); ! 2392: rewrite(a->kids[0]); ! 2393: a->x.ints[2] = 7; /* %f^c */ ! 2394: a->x.ints[0] = 6; /* %f^n */ ! 2395: a->x.ints[4] = 7; /* s */ ! 2396: goto L637; /* fmov^t ^y,^z */ ! 2397: case 226: L226: /* LOADD */ ! 2398: dumptree(a, a->op); ! 2399: rewrite(a->kids[0]); ! 2400: goto L616; /* # movd */ ! 2401: case 227: L227: /* LOADC */ ! 2402: case 228: L228: /* LOADS */ ! 2403: case 229: L229: /* LOADI */ ! 2404: case 230: L230: /* LOADU */ ! 2405: case 231: L231: /* LOADP */ ! 2406: dumptree(a, a->op); ! 2407: rewrite(a->kids[0]); ! 2408: a->x.ints[2] = 2; /* %^c */ ! 2409: a->x.ints[0] = 1; /* %^n */ ! 2410: goto L636; /* mov ^y,^z */ ! 2411: case 233: L233: /* LOADB */ ! 2412: dumptree(a, a->op); ! 2413: rewrite(a->kids[0]); ! 2414: a->x.ints[2] = 2; /* %^c */ ! 2415: a->x.ints[0] = 1; /* %^n */ ! 2416: goto L636; /* mov ^y,^z */ ! 2417: case 241: L241: /* RETF */ ! 2418: dumptree(a, a->op); ! 2419: rewrite(a->kids[0]); ! 2420: rtarget(a,0,f0); ! 2421: goto L620; /* # ret */ ! 2422: case 242: L242: /* RETD */ ! 2423: dumptree(a, a->op); ! 2424: rewrite(a->kids[0]); ! 2425: rtarget(a,0,d0); ! 2426: goto L620; /* # ret */ ! 2427: case 245: L245: /* RETI */ ! 2428: dumptree(a, a->op); ! 2429: rewrite(a->kids[0]); ! 2430: rtarget(a,0,i0); ! 2431: goto L620; /* # ret */ ! 2432: case 248: L248: /* RETV */ ! 2433: dumptree(a, a->op); ! 2434: goto L620; /* # ret */ ! 2435: case 263: L263: /* ADDRGP */ ! 2436: dumptree(a, a->op); ! 2437: setreg(a, rmap[P]); ! 2438: a->x.ints[2] = 2; /* %^c */ ! 2439: a->x.ints[0] = 58; /* _^c */ ! 2440: goto L638; /* set ^y,^z */ ! 2441: case 279: L279: /* ADDRFP */ ! 2442: dumptree(a, a->op); ! 2443: setreg(a, rmap[P]); ! 2444: a->x.ints[2] = 2; /* %^c */ ! 2445: a->x.ints[0] = 57; /* ^c */ ! 2446: goto L646; /* set ^y,%g1; add %fp,%g1,^z */ ! 2447: case 295: L295: /* ADDRLP */ ! 2448: dumptree(a, a->op); ! 2449: setreg(a, rmap[P]); ! 2450: a->x.ints[2] = 2; /* %^c */ ! 2451: a->x.ints[0] = 57; /* ^c */ ! 2452: goto L646; /* set ^y,%g1; add %fp,%g1,^z */ ! 2453: case 305: L305: /* ADDF */ ! 2454: dumptree(a, a->op); ! 2455: setreg(a, rmap[F]); ! 2456: rewrite(a->kids[0]); ! 2457: rewrite(a->kids[1]); ! 2458: a->x.ints[2] = 7; /* %f^c */ ! 2459: a->x.ints[1] = 6; /* %f^n */ ! 2460: a->x.ints[0] = 6; /* %f^n */ ! 2461: a->x.ints[4] = 7; /* s */ ! 2462: a->x.ints[3] = 1; /* add */ ! 2463: goto L623; /* f^f^t ^y,^x,^z */ ! 2464: case 306: L306: /* ADDD */ ! 2465: dumptree(a, a->op); ! 2466: setreg(a, rmap[D]); ! 2467: rewrite(a->kids[0]); ! 2468: rewrite(a->kids[1]); ! 2469: a->x.ints[2] = 7; /* %f^c */ ! 2470: a->x.ints[1] = 6; /* %f^n */ ! 2471: a->x.ints[0] = 6; /* %f^n */ ! 2472: a->x.ints[4] = 8; /* d */ ! 2473: a->x.ints[3] = 1; /* add */ ! 2474: goto L623; /* f^f^t ^y,^x,^z */ ! 2475: case 309: L309: /* ADDI */ ! 2476: dumptree(a, a->op); ! 2477: setreg(a, rmap[I]); ! 2478: rewrite(a->kids[0]); ! 2479: rewrite(a->kids[1]); ! 2480: a->x.ints[2] = 2; /* %^c */ ! 2481: a->x.ints[1] = 1; /* %^n */ ! 2482: a->x.ints[0] = 1; /* %^n */ ! 2483: a->x.ints[3] = 1; /* add */ ! 2484: goto L622; /* ^f ^y,^x,^z */ ! 2485: case 310: L310: /* ADDU */ ! 2486: dumptree(a, a->op); ! 2487: setreg(a, rmap[U]); ! 2488: rewrite(a->kids[0]); ! 2489: rewrite(a->kids[1]); ! 2490: a->x.ints[2] = 2; /* %^c */ ! 2491: a->x.ints[1] = 1; /* %^n */ ! 2492: a->x.ints[0] = 1; /* %^n */ ! 2493: a->x.ints[3] = 1; /* add */ ! 2494: goto L622; /* ^f ^y,^x,^z */ ! 2495: case 311: L311: /* ADDP */ ! 2496: dumptree(a, a->op); ! 2497: setreg(a, rmap[P]); ! 2498: rewrite(a->kids[0]); ! 2499: rewrite(a->kids[1]); ! 2500: a->x.ints[2] = 2; /* %^c */ ! 2501: a->x.ints[1] = 1; /* %^n */ ! 2502: a->x.ints[0] = 1; /* %^n */ ! 2503: a->x.ints[3] = 1; /* add */ ! 2504: goto L622; /* ^f ^y,^x,^z */ ! 2505: case 321: L321: /* SUBF */ ! 2506: dumptree(a, a->op); ! 2507: setreg(a, rmap[F]); ! 2508: rewrite(a->kids[0]); ! 2509: rewrite(a->kids[1]); ! 2510: a->x.ints[2] = 7; /* %f^c */ ! 2511: a->x.ints[1] = 6; /* %f^n */ ! 2512: a->x.ints[0] = 6; /* %f^n */ ! 2513: a->x.ints[4] = 7; /* s */ ! 2514: a->x.ints[3] = 9; /* sub */ ! 2515: goto L623; /* f^f^t ^y,^x,^z */ ! 2516: case 322: L322: /* SUBD */ ! 2517: dumptree(a, a->op); ! 2518: setreg(a, rmap[D]); ! 2519: rewrite(a->kids[0]); ! 2520: rewrite(a->kids[1]); ! 2521: a->x.ints[2] = 7; /* %f^c */ ! 2522: a->x.ints[1] = 6; /* %f^n */ ! 2523: a->x.ints[0] = 6; /* %f^n */ ! 2524: a->x.ints[4] = 8; /* d */ ! 2525: a->x.ints[3] = 9; /* sub */ ! 2526: goto L623; /* f^f^t ^y,^x,^z */ ! 2527: case 325: L325: /* SUBI */ ! 2528: dumptree(a, a->op); ! 2529: setreg(a, rmap[I]); ! 2530: rewrite(a->kids[0]); ! 2531: rewrite(a->kids[1]); ! 2532: a->x.ints[2] = 2; /* %^c */ ! 2533: a->x.ints[1] = 1; /* %^n */ ! 2534: a->x.ints[0] = 1; /* %^n */ ! 2535: a->x.ints[3] = 9; /* sub */ ! 2536: goto L622; /* ^f ^y,^x,^z */ ! 2537: case 326: L326: /* SUBU */ ! 2538: dumptree(a, a->op); ! 2539: setreg(a, rmap[U]); ! 2540: rewrite(a->kids[0]); ! 2541: rewrite(a->kids[1]); ! 2542: a->x.ints[2] = 2; /* %^c */ ! 2543: a->x.ints[1] = 1; /* %^n */ ! 2544: a->x.ints[0] = 1; /* %^n */ ! 2545: a->x.ints[3] = 9; /* sub */ ! 2546: goto L622; /* ^f ^y,^x,^z */ ! 2547: case 327: L327: /* SUBP */ ! 2548: dumptree(a, a->op); ! 2549: setreg(a, rmap[P]); ! 2550: rewrite(a->kids[0]); ! 2551: rewrite(a->kids[1]); ! 2552: a->x.ints[2] = 2; /* %^c */ ! 2553: a->x.ints[1] = 1; /* %^n */ ! 2554: a->x.ints[0] = 1; /* %^n */ ! 2555: a->x.ints[3] = 9; /* sub */ ! 2556: goto L622; /* ^f ^y,^x,^z */ ! 2557: case 341: L341: /* LSHI */ ! 2558: dumptree(a, a->op); ! 2559: setreg(a, rmap[I]); ! 2560: rewrite(a->kids[0]); ! 2561: rewrite(a->kids[1]); ! 2562: a->x.ints[2] = 2; /* %^c */ ! 2563: a->x.ints[1] = 1; /* %^n */ ! 2564: a->x.ints[0] = 1; /* %^n */ ! 2565: a->x.ints[3] = 6; /* sll */ ! 2566: goto L622; /* ^f ^y,^x,^z */ ! 2567: case 342: L342: /* LSHU */ ! 2568: dumptree(a, a->op); ! 2569: setreg(a, rmap[U]); ! 2570: rewrite(a->kids[0]); ! 2571: rewrite(a->kids[1]); ! 2572: a->x.ints[2] = 2; /* %^c */ ! 2573: a->x.ints[1] = 1; /* %^n */ ! 2574: a->x.ints[0] = 1; /* %^n */ ! 2575: a->x.ints[3] = 6; /* sll */ ! 2576: goto L622; /* ^f ^y,^x,^z */ ! 2577: case 357: L357: /* MODI */ ! 2578: dumptree(a, a->op); ! 2579: setreg(a, rmap[I]); ! 2580: rewrite(a->kids[0]); ! 2581: rewrite(a->kids[1]); ! 2582: a->x.ints[2] = 2; /* %^c */ ! 2583: a->x.ints[0] = 1; /* %^n */ ! 2584: a->x.ints[3] = 17; /* .rem */ ! 2585: a->x.ints[1] = 1; /* %^n */ ! 2586: ncalls++; ! 2587: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2588: case 358: L358: /* MODU */ ! 2589: dumptree(a, a->op); ! 2590: setreg(a, rmap[U]); ! 2591: rewrite(a->kids[0]); ! 2592: rewrite(a->kids[1]); ! 2593: a->x.ints[2] = 2; /* %^c */ ! 2594: a->x.ints[0] = 1; /* %^n */ ! 2595: a->x.ints[3] = 14; /* .urem */ ! 2596: a->x.ints[1] = 1; /* %^n */ ! 2597: ncalls++; ! 2598: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2599: case 373: L373: /* RSHI */ ! 2600: dumptree(a, a->op); ! 2601: setreg(a, rmap[I]); ! 2602: rewrite(a->kids[0]); ! 2603: rewrite(a->kids[1]); ! 2604: a->x.ints[2] = 2; /* %^c */ ! 2605: a->x.ints[1] = 1; /* %^n */ ! 2606: a->x.ints[0] = 1; /* %^n */ ! 2607: a->x.ints[3] = 7; /* sra */ ! 2608: goto L622; /* ^f ^y,^x,^z */ ! 2609: case 374: L374: /* RSHU */ ! 2610: dumptree(a, a->op); ! 2611: setreg(a, rmap[U]); ! 2612: rewrite(a->kids[0]); ! 2613: rewrite(a->kids[1]); ! 2614: a->x.ints[2] = 2; /* %^c */ ! 2615: a->x.ints[1] = 1; /* %^n */ ! 2616: a->x.ints[0] = 1; /* %^n */ ! 2617: a->x.ints[3] = 8; /* srl */ ! 2618: goto L622; /* ^f ^y,^x,^z */ ! 2619: case 390: L390: /* BANDU */ ! 2620: dumptree(a, a->op); ! 2621: setreg(a, rmap[U]); ! 2622: rewrite(a->kids[0]); ! 2623: rewrite(a->kids[1]); ! 2624: a->x.ints[2] = 2; /* %^c */ ! 2625: a->x.ints[1] = 1; /* %^n */ ! 2626: a->x.ints[0] = 1; /* %^n */ ! 2627: a->x.ints[3] = 2; /* and */ ! 2628: goto L622; /* ^f ^y,^x,^z */ ! 2629: case 406: L406: /* BCOMU */ ! 2630: dumptree(a, a->op); ! 2631: setreg(a, rmap[U]); ! 2632: rewrite(a->kids[0]); ! 2633: a->x.ints[2] = 2; /* %^c */ ! 2634: a->x.ints[1] = 5; /* %g0 */ ! 2635: a->x.ints[0] = 1; /* %^n */ ! 2636: a->x.ints[3] = 11; /* xnor */ ! 2637: goto L622; /* ^f ^y,^x,^z */ ! 2638: case 422: L422: /* BORU */ ! 2639: dumptree(a, a->op); ! 2640: setreg(a, rmap[U]); ! 2641: rewrite(a->kids[0]); ! 2642: rewrite(a->kids[1]); ! 2643: a->x.ints[2] = 2; /* %^c */ ! 2644: a->x.ints[1] = 1; /* %^n */ ! 2645: a->x.ints[0] = 1; /* %^n */ ! 2646: a->x.ints[3] = 5; /* or */ ! 2647: goto L622; /* ^f ^y,^x,^z */ ! 2648: case 438: L438: /* BXORU */ ! 2649: dumptree(a, a->op); ! 2650: setreg(a, rmap[U]); ! 2651: rewrite(a->kids[0]); ! 2652: rewrite(a->kids[1]); ! 2653: a->x.ints[2] = 2; /* %^c */ ! 2654: a->x.ints[1] = 1; /* %^n */ ! 2655: a->x.ints[0] = 1; /* %^n */ ! 2656: a->x.ints[3] = 10; /* xor */ ! 2657: goto L622; /* ^f ^y,^x,^z */ ! 2658: case 449: L449: /* DIVF */ ! 2659: dumptree(a, a->op); ! 2660: setreg(a, rmap[F]); ! 2661: rewrite(a->kids[0]); ! 2662: rewrite(a->kids[1]); ! 2663: a->x.ints[2] = 7; /* %f^c */ ! 2664: a->x.ints[1] = 6; /* %f^n */ ! 2665: a->x.ints[0] = 6; /* %f^n */ ! 2666: a->x.ints[4] = 7; /* s */ ! 2667: a->x.ints[3] = 3; /* div */ ! 2668: goto L623; /* f^f^t ^y,^x,^z */ ! 2669: case 450: L450: /* DIVD */ ! 2670: dumptree(a, a->op); ! 2671: setreg(a, rmap[D]); ! 2672: rewrite(a->kids[0]); ! 2673: rewrite(a->kids[1]); ! 2674: a->x.ints[2] = 7; /* %f^c */ ! 2675: a->x.ints[1] = 6; /* %f^n */ ! 2676: a->x.ints[0] = 6; /* %f^n */ ! 2677: a->x.ints[4] = 8; /* d */ ! 2678: a->x.ints[3] = 3; /* div */ ! 2679: goto L623; /* f^f^t ^y,^x,^z */ ! 2680: case 453: L453: /* DIVI */ ! 2681: dumptree(a, a->op); ! 2682: setreg(a, rmap[I]); ! 2683: rewrite(a->kids[0]); ! 2684: rewrite(a->kids[1]); ! 2685: a->x.ints[2] = 2; /* %^c */ ! 2686: a->x.ints[0] = 1; /* %^n */ ! 2687: a->x.ints[3] = 15; /* .div */ ! 2688: a->x.ints[1] = 1; /* %^n */ ! 2689: ncalls++; ! 2690: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2691: case 454: L454: /* DIVU */ ! 2692: dumptree(a, a->op); ! 2693: setreg(a, rmap[U]); ! 2694: rewrite(a->kids[0]); ! 2695: rewrite(a->kids[1]); ! 2696: a->x.ints[2] = 2; /* %^c */ ! 2697: a->x.ints[0] = 1; /* %^n */ ! 2698: a->x.ints[3] = 12; /* .udiv */ ! 2699: a->x.ints[1] = 1; /* %^n */ ! 2700: ncalls++; ! 2701: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2702: case 465: L465: /* MULF */ ! 2703: dumptree(a, a->op); ! 2704: setreg(a, rmap[F]); ! 2705: rewrite(a->kids[0]); ! 2706: rewrite(a->kids[1]); ! 2707: a->x.ints[2] = 7; /* %f^c */ ! 2708: a->x.ints[1] = 6; /* %f^n */ ! 2709: a->x.ints[0] = 6; /* %f^n */ ! 2710: a->x.ints[4] = 7; /* s */ ! 2711: a->x.ints[3] = 4; /* mul */ ! 2712: goto L623; /* f^f^t ^y,^x,^z */ ! 2713: case 466: L466: /* MULD */ ! 2714: dumptree(a, a->op); ! 2715: setreg(a, rmap[D]); ! 2716: rewrite(a->kids[0]); ! 2717: rewrite(a->kids[1]); ! 2718: a->x.ints[2] = 7; /* %f^c */ ! 2719: a->x.ints[1] = 6; /* %f^n */ ! 2720: a->x.ints[0] = 6; /* %f^n */ ! 2721: a->x.ints[4] = 8; /* d */ ! 2722: a->x.ints[3] = 4; /* mul */ ! 2723: goto L623; /* f^f^t ^y,^x,^z */ ! 2724: case 469: L469: /* MULI */ ! 2725: dumptree(a, a->op); ! 2726: setreg(a, rmap[I]); ! 2727: rewrite(a->kids[0]); ! 2728: rewrite(a->kids[1]); ! 2729: a->x.ints[2] = 2; /* %^c */ ! 2730: a->x.ints[0] = 1; /* %^n */ ! 2731: a->x.ints[3] = 16; /* .mul */ ! 2732: a->x.ints[1] = 1; /* %^n */ ! 2733: ncalls++; ! 2734: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2735: case 470: L470: /* MULU */ ! 2736: dumptree(a, a->op); ! 2737: setreg(a, rmap[U]); ! 2738: rewrite(a->kids[0]); ! 2739: rewrite(a->kids[1]); ! 2740: a->x.ints[2] = 2; /* %^c */ ! 2741: a->x.ints[0] = 1; /* %^n */ ! 2742: a->x.ints[3] = 13; /* .umul */ ! 2743: a->x.ints[1] = 1; /* %^n */ ! 2744: ncalls++; ! 2745: goto L608; /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2746: case 481: L481: /* EQF */ ! 2747: dumptree(a, a->op); ! 2748: rewrite(a->kids[0]); ! 2749: rewrite(a->kids[1]); ! 2750: a->syms[2] = a->syms[0]; ! 2751: a->x.ints[2] = 57; /* ^c */ ! 2752: a->x.ints[3] = 32; /* ue */ ! 2753: a->x.ints[1] = 6; /* %f^n */ ! 2754: a->x.ints[0] = 6; /* %f^n */ ! 2755: a->x.ints[4] = 7; /* s */ ! 2756: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2757: case 482: L482: /* EQD */ ! 2758: dumptree(a, a->op); ! 2759: rewrite(a->kids[0]); ! 2760: rewrite(a->kids[1]); ! 2761: a->syms[2] = a->syms[0]; ! 2762: a->x.ints[2] = 57; /* ^c */ ! 2763: a->x.ints[3] = 32; /* ue */ ! 2764: a->x.ints[1] = 6; /* %f^n */ ! 2765: a->x.ints[0] = 6; /* %f^n */ ! 2766: a->x.ints[4] = 8; /* d */ ! 2767: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2768: case 485: L485: /* EQI */ ! 2769: dumptree(a, a->op); ! 2770: rewrite(a->kids[0]); ! 2771: rewrite(a->kids[1]); ! 2772: a->syms[2] = a->syms[0]; ! 2773: a->x.ints[2] = 57; /* ^c */ ! 2774: a->x.ints[3] = 18; /* e */ ! 2775: a->x.ints[1] = 1; /* %^n */ ! 2776: a->x.ints[0] = 1; /* %^n */ ! 2777: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2778: case 497: L497: /* GEF */ ! 2779: dumptree(a, a->op); ! 2780: rewrite(a->kids[0]); ! 2781: rewrite(a->kids[1]); ! 2782: a->syms[2] = a->syms[0]; ! 2783: a->x.ints[2] = 57; /* ^c */ ! 2784: a->x.ints[3] = 29; /* uge */ ! 2785: a->x.ints[1] = 6; /* %f^n */ ! 2786: a->x.ints[0] = 6; /* %f^n */ ! 2787: a->x.ints[4] = 7; /* s */ ! 2788: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2789: case 498: L498: /* GED */ ! 2790: dumptree(a, a->op); ! 2791: rewrite(a->kids[0]); ! 2792: rewrite(a->kids[1]); ! 2793: a->syms[2] = a->syms[0]; ! 2794: a->x.ints[2] = 57; /* ^c */ ! 2795: a->x.ints[3] = 29; /* uge */ ! 2796: a->x.ints[1] = 6; /* %f^n */ ! 2797: a->x.ints[0] = 6; /* %f^n */ ! 2798: a->x.ints[4] = 8; /* d */ ! 2799: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2800: case 501: L501: /* GEI */ ! 2801: dumptree(a, a->op); ! 2802: rewrite(a->kids[0]); ! 2803: rewrite(a->kids[1]); ! 2804: a->syms[2] = a->syms[0]; ! 2805: a->x.ints[2] = 57; /* ^c */ ! 2806: a->x.ints[3] = 23; /* ge */ ! 2807: a->x.ints[1] = 1; /* %^n */ ! 2808: a->x.ints[0] = 1; /* %^n */ ! 2809: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2810: case 502: L502: /* GEU */ ! 2811: dumptree(a, a->op); ! 2812: rewrite(a->kids[0]); ! 2813: rewrite(a->kids[1]); ! 2814: a->syms[2] = a->syms[0]; ! 2815: a->x.ints[2] = 57; /* ^c */ ! 2816: a->x.ints[3] = 22; /* geu */ ! 2817: a->x.ints[1] = 1; /* %^n */ ! 2818: a->x.ints[0] = 1; /* %^n */ ! 2819: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2820: case 513: L513: /* GTF */ ! 2821: dumptree(a, a->op); ! 2822: rewrite(a->kids[0]); ! 2823: rewrite(a->kids[1]); ! 2824: a->syms[2] = a->syms[0]; ! 2825: a->x.ints[2] = 57; /* ^c */ ! 2826: a->x.ints[3] = 28; /* ug */ ! 2827: a->x.ints[1] = 6; /* %f^n */ ! 2828: a->x.ints[0] = 6; /* %f^n */ ! 2829: a->x.ints[4] = 7; /* s */ ! 2830: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2831: case 514: L514: /* GTD */ ! 2832: dumptree(a, a->op); ! 2833: rewrite(a->kids[0]); ! 2834: rewrite(a->kids[1]); ! 2835: a->syms[2] = a->syms[0]; ! 2836: a->x.ints[2] = 57; /* ^c */ ! 2837: a->x.ints[3] = 28; /* ug */ ! 2838: a->x.ints[1] = 6; /* %f^n */ ! 2839: a->x.ints[0] = 6; /* %f^n */ ! 2840: a->x.ints[4] = 8; /* d */ ! 2841: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2842: case 517: L517: /* GTI */ ! 2843: dumptree(a, a->op); ! 2844: rewrite(a->kids[0]); ! 2845: rewrite(a->kids[1]); ! 2846: a->syms[2] = a->syms[0]; ! 2847: a->x.ints[2] = 57; /* ^c */ ! 2848: a->x.ints[3] = 21; /* g */ ! 2849: a->x.ints[1] = 1; /* %^n */ ! 2850: a->x.ints[0] = 1; /* %^n */ ! 2851: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2852: case 518: L518: /* GTU */ ! 2853: dumptree(a, a->op); ! 2854: rewrite(a->kids[0]); ! 2855: rewrite(a->kids[1]); ! 2856: a->syms[2] = a->syms[0]; ! 2857: a->x.ints[2] = 57; /* ^c */ ! 2858: a->x.ints[3] = 20; /* gu */ ! 2859: a->x.ints[1] = 1; /* %^n */ ! 2860: a->x.ints[0] = 1; /* %^n */ ! 2861: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2862: case 529: L529: /* LEF */ ! 2863: dumptree(a, a->op); ! 2864: rewrite(a->kids[0]); ! 2865: rewrite(a->kids[1]); ! 2866: a->syms[2] = a->syms[0]; ! 2867: a->x.ints[2] = 57; /* ^c */ ! 2868: a->x.ints[3] = 31; /* ule */ ! 2869: a->x.ints[1] = 6; /* %f^n */ ! 2870: a->x.ints[0] = 6; /* %f^n */ ! 2871: a->x.ints[4] = 7; /* s */ ! 2872: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2873: case 530: L530: /* LED */ ! 2874: dumptree(a, a->op); ! 2875: rewrite(a->kids[0]); ! 2876: rewrite(a->kids[1]); ! 2877: a->syms[2] = a->syms[0]; ! 2878: a->x.ints[2] = 57; /* ^c */ ! 2879: a->x.ints[3] = 31; /* ule */ ! 2880: a->x.ints[1] = 6; /* %f^n */ ! 2881: a->x.ints[0] = 6; /* %f^n */ ! 2882: a->x.ints[4] = 8; /* d */ ! 2883: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2884: case 533: L533: /* LEI */ ! 2885: dumptree(a, a->op); ! 2886: rewrite(a->kids[0]); ! 2887: rewrite(a->kids[1]); ! 2888: a->syms[2] = a->syms[0]; ! 2889: a->x.ints[2] = 57; /* ^c */ ! 2890: a->x.ints[3] = 27; /* le */ ! 2891: a->x.ints[1] = 1; /* %^n */ ! 2892: a->x.ints[0] = 1; /* %^n */ ! 2893: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2894: case 534: L534: /* LEU */ ! 2895: dumptree(a, a->op); ! 2896: rewrite(a->kids[0]); ! 2897: rewrite(a->kids[1]); ! 2898: a->syms[2] = a->syms[0]; ! 2899: a->x.ints[2] = 57; /* ^c */ ! 2900: a->x.ints[3] = 26; /* leu */ ! 2901: a->x.ints[1] = 1; /* %^n */ ! 2902: a->x.ints[0] = 1; /* %^n */ ! 2903: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2904: case 545: L545: /* LTF */ ! 2905: dumptree(a, a->op); ! 2906: rewrite(a->kids[0]); ! 2907: rewrite(a->kids[1]); ! 2908: a->syms[2] = a->syms[0]; ! 2909: a->x.ints[2] = 57; /* ^c */ ! 2910: a->x.ints[3] = 30; /* ul */ ! 2911: a->x.ints[1] = 6; /* %f^n */ ! 2912: a->x.ints[0] = 6; /* %f^n */ ! 2913: a->x.ints[4] = 7; /* s */ ! 2914: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2915: case 546: L546: /* LTD */ ! 2916: dumptree(a, a->op); ! 2917: rewrite(a->kids[0]); ! 2918: rewrite(a->kids[1]); ! 2919: a->syms[2] = a->syms[0]; ! 2920: a->x.ints[2] = 57; /* ^c */ ! 2921: a->x.ints[3] = 30; /* ul */ ! 2922: a->x.ints[1] = 6; /* %f^n */ ! 2923: a->x.ints[0] = 6; /* %f^n */ ! 2924: a->x.ints[4] = 8; /* d */ ! 2925: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2926: case 549: L549: /* LTI */ ! 2927: dumptree(a, a->op); ! 2928: rewrite(a->kids[0]); ! 2929: rewrite(a->kids[1]); ! 2930: a->syms[2] = a->syms[0]; ! 2931: a->x.ints[2] = 57; /* ^c */ ! 2932: a->x.ints[3] = 25; /* l */ ! 2933: a->x.ints[1] = 1; /* %^n */ ! 2934: a->x.ints[0] = 1; /* %^n */ ! 2935: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2936: case 550: L550: /* LTU */ ! 2937: dumptree(a, a->op); ! 2938: rewrite(a->kids[0]); ! 2939: rewrite(a->kids[1]); ! 2940: a->syms[2] = a->syms[0]; ! 2941: a->x.ints[2] = 57; /* ^c */ ! 2942: a->x.ints[3] = 24; /* lu */ ! 2943: a->x.ints[1] = 1; /* %^n */ ! 2944: a->x.ints[0] = 1; /* %^n */ ! 2945: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2946: case 561: L561: /* NEF */ ! 2947: dumptree(a, a->op); ! 2948: rewrite(a->kids[0]); ! 2949: rewrite(a->kids[1]); ! 2950: a->syms[2] = a->syms[0]; ! 2951: a->x.ints[2] = 57; /* ^c */ ! 2952: a->x.ints[3] = 19; /* ne */ ! 2953: a->x.ints[1] = 6; /* %f^n */ ! 2954: a->x.ints[0] = 6; /* %f^n */ ! 2955: a->x.ints[4] = 7; /* s */ ! 2956: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2957: case 562: L562: /* NED */ ! 2958: dumptree(a, a->op); ! 2959: rewrite(a->kids[0]); ! 2960: rewrite(a->kids[1]); ! 2961: a->syms[2] = a->syms[0]; ! 2962: a->x.ints[2] = 57; /* ^c */ ! 2963: a->x.ints[3] = 19; /* ne */ ! 2964: a->x.ints[1] = 6; /* %f^n */ ! 2965: a->x.ints[0] = 6; /* %f^n */ ! 2966: a->x.ints[4] = 8; /* d */ ! 2967: goto L626; /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 2968: case 565: L565: /* NEI */ ! 2969: dumptree(a, a->op); ! 2970: rewrite(a->kids[0]); ! 2971: rewrite(a->kids[1]); ! 2972: a->syms[2] = a->syms[0]; ! 2973: a->x.ints[2] = 57; /* ^c */ ! 2974: a->x.ints[3] = 19; /* ne */ ! 2975: a->x.ints[1] = 1; /* %^n */ ! 2976: a->x.ints[0] = 1; /* %^n */ ! 2977: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 2978: case 584: L584: /* JUMPV */ ! 2979: dumptree(a, a->op); ! 2980: rewrite(a->kids[0]); ! 2981: a->x.ints[0] = 1; /* %^n */ ! 2982: goto L632; /* jmp ^y; nop */ ! 2983: case 600: L600: /* LABELV */ ! 2984: dumptree(a, a->op); ! 2985: a->syms[2] = a->syms[0]; ! 2986: a->x.ints[2] = 57; /* ^c */ ! 2987: goto L613; /* ^z: */ ! 2988: case 608: L608: /* mov ^x,%o1; call ^f,2; mov ^y,%o0; mov %o0,^z */ ! 2989: dumptree(a, 608); ! 2990: a->op = 608; ! 2991: break; ! 2992: case 609: L609: /* call ^y; nop */ ! 2993: dumptree(a, 609); ! 2994: b = a->kids[0]; ! 2995: if ( ! 2996: a->x.ints[0] == 1 /* %^n */ ! 2997: && b->op == 638 /* set ^y,^z */ ! 2998: && b->x.ints[0] == 58 /* _^c */ ! 2999: ) { ! 3000: if (--b->count > 0) { ! 3001: if (c=b->kids[0]) ++c->count; ! 3002: if (c=b->kids[3]) ++c->count; ! 3003: } ! 3004: a->syms[0] = b->syms[0]; ! 3005: a->kids[3] = b->kids[3]; ! 3006: a->x.ints[0] = b->x.ints[0]; ! 3007: a->kids[0] = b->kids[0]; ! 3008: goto L609; /* call ^y; nop */ ! 3009: } ! 3010: a->op = 609; ! 3011: break; ! 3012: case 610: L610: /* call ^y; st ^z,[%sp+64] */ ! 3013: dumptree(a, 610); ! 3014: b = a->kids[0]; ! 3015: if ( ! 3016: a->x.ints[0] == 1 /* %^n */ ! 3017: && b->op == 638 /* set ^y,^z */ ! 3018: && b->x.ints[0] == 58 /* _^c */ ! 3019: ) { ! 3020: if (--b->count > 0) { ! 3021: if (c=b->kids[0]) ++c->count; ! 3022: if (c=b->kids[3]) ++c->count; ! 3023: } ! 3024: a->syms[0] = b->syms[0]; ! 3025: a->kids[3] = b->kids[3]; ! 3026: a->x.ints[0] = b->x.ints[0]; ! 3027: a->kids[0] = b->kids[0]; ! 3028: goto L610; /* call ^y; st ^z,[%sp+64] */ ! 3029: } ! 3030: a->op = 610; ! 3031: break; ! 3032: case 611: L611: /* fdtoi ^y,%f0; st %f0,[%sp+64]; ld [%sp+64],^z */ ! 3033: dumptree(a, 611); ! 3034: a->op = 611; ! 3035: break; ! 3036: case 612: L612: /* sll ^y,^x,%g1; sra %g1,^x,^z */ ! 3037: dumptree(a, 612); ! 3038: if ( ! 3039: a->x.ints[0] == 1 /* %^n */ ! 3040: && a->x.ints[1] == 57 /* ^c */ ! 3041: ) { ! 3042: b = a->kids[0]; ! 3043: if ( ! 3044: a->syms[1]->x.name == sym[4].x.name /* 16 */ ! 3045: && a->x.ints[1] == 57 /* ^c */ ! 3046: && a->syms[1]->x.name == sym[4].x.name /* 16 */ ! 3047: && b->count == 1 ! 3048: && b->op == 634 /* ld^t [^y],^z */ ! 3049: && b->x.ints[4] == 2 /* sh */ ! 3050: ) { ! 3051: if (--b->count > 0) { ! 3052: if (c=b->kids[0]) ++c->count; ! 3053: if (c=b->kids[3]) ++c->count; ! 3054: } ! 3055: a->x.ints[4] = 2; /* sh */ ! 3056: a->syms[0] = b->syms[0]; ! 3057: a->kids[3] = b->kids[3]; ! 3058: a->x.ints[0] = b->x.ints[0]; ! 3059: a->kids[0] = b->kids[0]; ! 3060: goto L634; /* ld^t [^y],^z */ ! 3061: } ! 3062: if ( ! 3063: a->syms[1]->x.name == sym[5].x.name /* 24 */ ! 3064: && a->x.ints[1] == 57 /* ^c */ ! 3065: && a->syms[1]->x.name == sym[5].x.name /* 24 */ ! 3066: && b->count == 1 ! 3067: && b->op == 634 /* ld^t [^y],^z */ ! 3068: && b->x.ints[4] == 1 /* sb */ ! 3069: ) { ! 3070: if (--b->count > 0) { ! 3071: if (c=b->kids[0]) ++c->count; ! 3072: if (c=b->kids[3]) ++c->count; ! 3073: } ! 3074: a->x.ints[4] = 1; /* sb */ ! 3075: a->syms[0] = b->syms[0]; ! 3076: a->kids[3] = b->kids[3]; ! 3077: a->x.ints[0] = b->x.ints[0]; ! 3078: a->kids[0] = b->kids[0]; ! 3079: goto L634; /* ld^t [^y],^z */ ! 3080: } ! 3081: } ! 3082: a->op = 612; ! 3083: break; ! 3084: case 613: L613: /* ^z: */ ! 3085: dumptree(a, 613); ! 3086: a->op = 613; ! 3087: break; ! 3088: case 614: L614: /* nop */ ! 3089: dumptree(a, 614); ! 3090: a->op = 614; ! 3091: break; ! 3092: case 615: L615: /* # argd */ ! 3093: dumptree(a, 615); ! 3094: a->op = 615; ! 3095: break; ! 3096: case 616: L616: /* # movd */ ! 3097: dumptree(a, 616); ! 3098: a->op = 616; ! 3099: break; ! 3100: case 617: L617: /* # negd */ ! 3101: dumptree(a, 617); ! 3102: a->op = 617; ! 3103: break; ! 3104: case 618: L618: /* # asgnb */ ! 3105: dumptree(a, 618); ! 3106: a->op = 618; ! 3107: break; ! 3108: case 619: L619: /* # reg */ ! 3109: dumptree(a, 619); ! 3110: a->op = 619; ! 3111: break; ! 3112: case 620: L620: /* # ret */ ! 3113: dumptree(a, 620); ! 3114: a->op = 620; ! 3115: break; ! 3116: case 621: L621: /* # label */ ! 3117: dumptree(a, 621); ! 3118: a->op = 621; ! 3119: break; ! 3120: case 622: L622: /* ^f ^y,^x,^z */ ! 3121: dumptree(a, 622); ! 3122: if ( ! 3123: a->x.ints[1] == 1 /* %^n */ ! 3124: ) { ! 3125: b = a->kids[1]; ! 3126: if ( ! 3127: b->op == 638 /* set ^y,^z */ ! 3128: && b->x.ints[0] == 57 /* ^c */ ! 3129: && range(getint(a->kids[1]->syms[0]),13) ! 3130: ) { ! 3131: if (--b->count > 0) { ! 3132: if (c=b->kids[0]) ++c->count; ! 3133: if (c=b->kids[3]) ++c->count; ! 3134: } ! 3135: a->syms[1] = b->syms[0]; ! 3136: a->kids[4] = b->kids[3]; ! 3137: a->x.ints[1] = b->x.ints[0]; ! 3138: a->kids[1] = b->kids[0]; ! 3139: goto L622; /* ^f ^y,^x,^z */ ! 3140: } ! 3141: if ( ! 3142: b->count == 1 ! 3143: && b->op == 636 /* mov ^y,^z */ ! 3144: && b->x.ints[0] == 1 /* %^n */ ! 3145: ) { ! 3146: if (--b->count > 0) { ! 3147: if (c=b->kids[0]) ++c->count; ! 3148: if (c=b->kids[3]) ++c->count; ! 3149: } ! 3150: a->syms[1] = b->syms[0]; ! 3151: a->kids[4] = b->kids[3]; ! 3152: a->x.ints[1] = b->x.ints[0]; ! 3153: a->kids[1] = b->kids[0]; ! 3154: goto L622; /* ^f ^y,^x,^z */ ! 3155: } ! 3156: } ! 3157: b = a->kids[0]; ! 3158: if ( ! 3159: a->x.ints[0] == 1 /* %^n */ ! 3160: && b->count == 1 ! 3161: && b->op == 636 /* mov ^y,^z */ ! 3162: && b->x.ints[0] == 1 /* %^n */ ! 3163: ) { ! 3164: if (--b->count > 0) { ! 3165: if (c=b->kids[0]) ++c->count; ! 3166: if (c=b->kids[3]) ++c->count; ! 3167: } ! 3168: a->syms[0] = b->syms[0]; ! 3169: a->kids[3] = b->kids[3]; ! 3170: a->x.ints[0] = b->x.ints[0]; ! 3171: a->kids[0] = b->kids[0]; ! 3172: goto L622; /* ^f ^y,^x,^z */ ! 3173: } ! 3174: if ( ! 3175: a->x.ints[3] == 2 /* and */ ! 3176: && a->x.ints[0] == 1 /* %^n */ ! 3177: && a->x.ints[1] == 57 /* ^c */ ! 3178: && a->syms[1]->x.name == sym[2].x.name /* 0xff */ ! 3179: && b->count == 1 ! 3180: && b->op == 634 /* ld^t [^y],^z */ ! 3181: && b->x.ints[4] == 1 /* sb */ ! 3182: ) { ! 3183: if (--b->count > 0) { ! 3184: if (c=b->kids[0]) ++c->count; ! 3185: if (c=b->kids[3]) ++c->count; ! 3186: } ! 3187: a->x.ints[4] = 3; /* ub */ ! 3188: a->syms[0] = b->syms[0]; ! 3189: a->kids[3] = b->kids[3]; ! 3190: a->x.ints[0] = b->x.ints[0]; ! 3191: a->kids[0] = b->kids[0]; ! 3192: goto L634; /* ld^t [^y],^z */ ! 3193: } ! 3194: a->op = 622; ! 3195: break; ! 3196: case 623: L623: /* f^f^t ^y,^x,^z */ ! 3197: dumptree(a, 623); ! 3198: a->op = 623; ! 3199: break; ! 3200: case 624: L624: /* call ^y,2; nop */ ! 3201: dumptree(a, 624); ! 3202: a->op = 624; ! 3203: break; ! 3204: case 625: L625: /* cmp ^y,^x; b^f ^z; nop */ ! 3205: dumptree(a, 625); ! 3206: if ( ! 3207: a->x.ints[1] == 1 /* %^n */ ! 3208: ) { ! 3209: b = a->kids[1]; ! 3210: if ( ! 3211: b->op == 638 /* set ^y,^z */ ! 3212: && b->x.ints[0] == 57 /* ^c */ ! 3213: && range(getint(a->kids[1]->syms[0]),13) ! 3214: ) { ! 3215: if (--b->count > 0) { ! 3216: if (c=b->kids[0]) ++c->count; ! 3217: if (c=b->kids[3]) ++c->count; ! 3218: } ! 3219: a->syms[1] = b->syms[0]; ! 3220: a->kids[4] = b->kids[3]; ! 3221: a->x.ints[1] = b->x.ints[0]; ! 3222: a->kids[1] = b->kids[0]; ! 3223: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 3224: } ! 3225: if ( ! 3226: b->count == 1 ! 3227: && b->op == 636 /* mov ^y,^z */ ! 3228: && b->x.ints[0] == 1 /* %^n */ ! 3229: ) { ! 3230: if (--b->count > 0) { ! 3231: if (c=b->kids[0]) ++c->count; ! 3232: if (c=b->kids[3]) ++c->count; ! 3233: } ! 3234: a->syms[1] = b->syms[0]; ! 3235: a->kids[4] = b->kids[3]; ! 3236: a->x.ints[1] = b->x.ints[0]; ! 3237: a->kids[1] = b->kids[0]; ! 3238: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 3239: } ! 3240: } ! 3241: b = a->kids[0]; ! 3242: if ( ! 3243: a->x.ints[0] == 1 /* %^n */ ! 3244: && b->count == 1 ! 3245: && b->op == 636 /* mov ^y,^z */ ! 3246: && b->x.ints[0] == 1 /* %^n */ ! 3247: ) { ! 3248: if (--b->count > 0) { ! 3249: if (c=b->kids[0]) ++c->count; ! 3250: if (c=b->kids[3]) ++c->count; ! 3251: } ! 3252: a->syms[0] = b->syms[0]; ! 3253: a->kids[3] = b->kids[3]; ! 3254: a->x.ints[0] = b->x.ints[0]; ! 3255: a->kids[0] = b->kids[0]; ! 3256: goto L625; /* cmp ^y,^x; b^f ^z; nop */ ! 3257: } ! 3258: a->op = 625; ! 3259: break; ! 3260: case 626: L626: /* fcmpe^t ^y,^x; nop; fb^f ^z; nop */ ! 3261: dumptree(a, 626); ! 3262: a->op = 626; ! 3263: break; ! 3264: case 627: L627: /* fstod ^y,^z */ ! 3265: dumptree(a, 627); ! 3266: a->op = 627; ! 3267: break; ! 3268: case 628: L628: /* fdtos ^y,^z */ ! 3269: dumptree(a, 628); ! 3270: a->op = 628; ! 3271: break; ! 3272: case 629: L629: /* fnegs ^y,^z */ ! 3273: dumptree(a, 629); ! 3274: a->op = 629; ! 3275: break; ! 3276: case 630: L630: /* fmovd ^y,^z; fnegs ^z,^z */ ! 3277: dumptree(a, 630); ! 3278: a->op = 630; ! 3279: break; ! 3280: case 631: L631: /* st ^y,[%sp+64]; ld [%sp+64],^z; fitod ^z,^z */ ! 3281: dumptree(a, 631); ! 3282: a->op = 631; ! 3283: break; ! 3284: case 632: L632: /* jmp ^y; nop */ ! 3285: dumptree(a, 632); ! 3286: b = a->kids[0]; ! 3287: if ( ! 3288: a->x.ints[0] == 1 /* %^n */ ! 3289: && b->op == 638 /* set ^y,^z */ ! 3290: && b->x.ints[0] == 58 /* _^c */ ! 3291: ) { ! 3292: --b->count; ! 3293: a->x.ints[0] = 57; /* ^c */ ! 3294: a->syms[0] = b->syms[0]; ! 3295: a->kids[0] = 0; ! 3296: goto L633; /* ba ^y; nop */ ! 3297: } ! 3298: a->op = 632; ! 3299: break; ! 3300: case 633: L633: /* ba ^y; nop */ ! 3301: dumptree(a, 633); ! 3302: a->op = 633; ! 3303: break; ! 3304: case 634: L634: /* ld^t [^y],^z */ ! 3305: dumptree(a, 634); ! 3306: if ( ! 3307: a->x.ints[0] == 1 /* %^n */ ! 3308: ) { ! 3309: b = a->kids[0]; ! 3310: if ( ! 3311: b->op == 622 /* ^f ^y,^x,^z */ ! 3312: && b->x.ints[3] == 1 /* add */ ! 3313: && b->x.ints[0] == 57 /* ^c */ ! 3314: && b->x.ints[1] == 3 /* %fp */ ! 3315: ) { ! 3316: --b->count; ! 3317: a->x.ints[0] = 27; /* %fp+^c */ ! 3318: a->syms[0] = b->syms[0]; ! 3319: a->kids[0] = 0; ! 3320: goto L634; /* ld^t [^y],^z */ ! 3321: } ! 3322: if ( ! 3323: b->count == 1 ! 3324: ) { ! 3325: switch (b->op) { ! 3326: case 622: /* ^f ^y,^x,^z */ ! 3327: if ( ! 3328: b->x.ints[3] == 1 /* add */ ! 3329: && b->x.ints[0] == 1 /* %^n */ ! 3330: && b->x.ints[1] == 57 /* ^c */ ! 3331: ) { ! 3332: if (--b->count > 0) ! 3333: if (c=b->kids[0]) ++c->count; ! 3334: a->x.ints[0] = 15; /* %^n+^c */ ! 3335: a->kids[0] = b->kids[0]; ! 3336: a->syms[0] = b->syms[1]; ! 3337: goto L634; /* ld^t [^y],^z */ ! 3338: } ! 3339: break; ! 3340: case 646: /* set ^y,%g1; add %fp,%g1,^z */ ! 3341: --b->count; ! 3342: a->x.ints[0] = 57; /* ^c */ ! 3343: a->syms[0] = b->syms[0]; ! 3344: a->kids[0] = 0; ! 3345: goto L641; /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 3346: } ! 3347: } ! 3348: } ! 3349: b = a->kids[0]; ! 3350: if ( ! 3351: "\1\1\1\1\1\0\0\1\0\1"[a->x.ints[4]] /* <TMP717> */ ! 3352: && a->x.ints[0] == 1 /* %^n */ ! 3353: && b->count == 1 ! 3354: && b->op == 622 /* ^f ^y,^x,^z */ ! 3355: && b->x.ints[3] == 1 /* add */ ! 3356: && b->x.ints[0] == 1 /* %^n */ ! 3357: && b->x.ints[1] == 1 /* %^n */ ! 3358: ) { ! 3359: if (--b->count > 0) { ! 3360: if (c=b->kids[1]) ++c->count; ! 3361: if (c=b->kids[0]) ++c->count; ! 3362: } ! 3363: a->x.ints[0] = 8; /* %^n+%^i */ ! 3364: a->kids[0] = b->kids[0]; ! 3365: a->kids[3] = b->kids[1]; ! 3366: goto L634; /* ld^t [^y],^z */ ! 3367: } ! 3368: switch (a->x.ints[0]) { ! 3369: case 1: /* %^n */ ! 3370: if ( ! 3371: b->count == 1 ! 3372: && b->op == 636 /* mov ^y,^z */ ! 3373: && b->x.ints[0] == 1 /* %^n */ ! 3374: ) { ! 3375: if (--b->count > 0) { ! 3376: if (c=b->kids[0]) ++c->count; ! 3377: if (c=b->kids[3]) ++c->count; ! 3378: } ! 3379: a->syms[0] = b->syms[0]; ! 3380: a->kids[3] = b->kids[3]; ! 3381: a->x.ints[0] = b->x.ints[0]; ! 3382: a->kids[0] = b->kids[0]; ! 3383: goto L634; /* ld^t [^y],^z */ ! 3384: } ! 3385: break; ! 3386: case 27: /* %fp+^c */ ! 3387: if ( ! 3388: isregvar(a->syms[0]) ! 3389: ) { ! 3390: a->x.ints[2] = 2; /* %^c */ ! 3391: a->x.ints[0] = 2; /* %^c */ ! 3392: goto L636; /* mov ^y,^z */ ! 3393: } ! 3394: break; ! 3395: } ! 3396: a->op = 634; ! 3397: break; ! 3398: case 635: L635: /* ld [^y],^z; ld [^y+4],^x */ ! 3399: dumptree(a, 635); ! 3400: a->op = 635; ! 3401: break; ! 3402: case 636: L636: /* mov ^y,^z */ ! 3403: dumptree(a, 636); ! 3404: switch (a->x.ints[0]) { ! 3405: case 1: /* %^n */ ! 3406: if ( ! 3407: a->kids[0]->count == 1 ! 3408: ) { ! 3409: b = a->kids[0]; ! 3410: switch (b->op) { ! 3411: case 622: /* ^f ^y,^x,^z */ ! 3412: if (--b->count > 0) { ! 3413: if (c=b->kids[1]) ++c->count; ! 3414: if (c=b->kids[4]) ++c->count; ! 3415: if (c=b->kids[0]) ++c->count; ! 3416: if (c=b->kids[3]) ++c->count; ! 3417: } ! 3418: a->x.ints[3] = b->x.ints[3]; ! 3419: a->syms[0] = b->syms[0]; ! 3420: a->kids[3] = b->kids[3]; ! 3421: a->x.ints[0] = b->x.ints[0]; ! 3422: a->kids[0] = b->kids[0]; ! 3423: a->syms[1] = b->syms[1]; ! 3424: a->kids[4] = b->kids[4]; ! 3425: a->kids[1] = b->kids[1]; ! 3426: a->x.ints[1] = b->x.ints[1]; ! 3427: goto L622; /* ^f ^y,^x,^z */ ! 3428: case 634: /* ld^t [^y],^z */ ! 3429: if (--b->count > 0) { ! 3430: if (c=b->kids[0]) ++c->count; ! 3431: if (c=b->kids[3]) ++c->count; ! 3432: } ! 3433: a->x.ints[4] = b->x.ints[4]; ! 3434: a->syms[0] = b->syms[0]; ! 3435: a->kids[3] = b->kids[3]; ! 3436: a->x.ints[0] = b->x.ints[0]; ! 3437: a->kids[0] = b->kids[0]; ! 3438: goto L634; /* ld^t [^y],^z */ ! 3439: case 636: /* mov ^y,^z */ ! 3440: if ( ! 3441: b->x.ints[0] == 1 /* %^n */ ! 3442: ) { ! 3443: if (--b->count > 0) { ! 3444: if (c=b->kids[0]) ++c->count; ! 3445: if (c=b->kids[3]) ++c->count; ! 3446: } ! 3447: a->syms[0] = b->syms[0]; ! 3448: a->kids[3] = b->kids[3]; ! 3449: a->x.ints[0] = b->x.ints[0]; ! 3450: a->kids[0] = b->kids[0]; ! 3451: goto L636; /* mov ^y,^z */ ! 3452: } ! 3453: break; ! 3454: case 638: /* set ^y,^z */ ! 3455: if (--b->count > 0) { ! 3456: if (c=b->kids[0]) ++c->count; ! 3457: if (c=b->kids[3]) ++c->count; ! 3458: } ! 3459: a->syms[0] = b->syms[0]; ! 3460: a->kids[3] = b->kids[3]; ! 3461: a->x.ints[0] = b->x.ints[0]; ! 3462: a->kids[0] = b->kids[0]; ! 3463: goto L638; /* set ^y,^z */ ! 3464: case 641: /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 3465: if (--b->count > 0) { ! 3466: if (c=b->kids[0]) ++c->count; ! 3467: if (c=b->kids[3]) ++c->count; ! 3468: } ! 3469: a->x.ints[4] = b->x.ints[4]; ! 3470: a->syms[0] = b->syms[0]; ! 3471: a->kids[3] = b->kids[3]; ! 3472: a->x.ints[0] = b->x.ints[0]; ! 3473: a->kids[0] = b->kids[0]; ! 3474: goto L641; /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 3475: } ! 3476: } ! 3477: break; ! 3478: case 2: /* %^c */ ! 3479: if ( ! 3480: a->x.ints[2] == 2 /* %^c */ ! 3481: && rmcopy(a) ! 3482: ) { ! 3483: a->syms[2] = a->syms[0]; ! 3484: goto L619; /* # reg */ ! 3485: } ! 3486: break; ! 3487: } ! 3488: a->op = 636; ! 3489: break; ! 3490: case 637: L637: /* fmov^t ^y,^z */ ! 3491: dumptree(a, 637); ! 3492: a->op = 637; ! 3493: break; ! 3494: case 638: L638: /* set ^y,^z */ ! 3495: dumptree(a, 638); ! 3496: if ( ! 3497: a->x.ints[0] == 57 /* ^c */ ! 3498: && a->syms[0]->x.name == sym[1].x.name /* 0 */ ! 3499: ) { ! 3500: setreg(a,g0); ! 3501: goto L619; /* # reg */ ! 3502: } ! 3503: a->op = 638; ! 3504: break; ! 3505: case 639: L639: /* set 0xffff,%g1; and ^y,%g1,^z */ ! 3506: dumptree(a, 639); ! 3507: b = a->kids[0]; ! 3508: if ( ! 3509: a->x.ints[0] == 1 /* %^n */ ! 3510: && b->count == 1 ! 3511: && b->op == 634 /* ld^t [^y],^z */ ! 3512: && b->x.ints[4] == 2 /* sh */ ! 3513: ) { ! 3514: if (--b->count > 0) { ! 3515: if (c=b->kids[0]) ++c->count; ! 3516: if (c=b->kids[3]) ++c->count; ! 3517: } ! 3518: a->x.ints[4] = 4; /* uh */ ! 3519: a->syms[0] = b->syms[0]; ! 3520: a->kids[3] = b->kids[3]; ! 3521: a->x.ints[0] = b->x.ints[0]; ! 3522: a->kids[0] = b->kids[0]; ! 3523: goto L634; /* ld^t [^y],^z */ ! 3524: } ! 3525: a->op = 639; ! 3526: break; ! 3527: case 640: L640: /* set ^z,%g1; st^t ^y,[%fp+%g1] */ ! 3528: dumptree(a, 640); ! 3529: a->op = 640; ! 3530: break; ! 3531: case 641: L641: /* set ^y,%g1; ld^t [%fp+%g1],^z */ ! 3532: dumptree(a, 641); ! 3533: a->op = 641; ! 3534: break; ! 3535: case 642: L642: /* st^t ^y,[^z] */ ! 3536: dumptree(a, 642); ! 3537: if ( ! 3538: a->x.ints[0] == 1 /* %^n */ ! 3539: && a->x.ints[2] == 35 /* %sp+4*^c+68 */ ! 3540: && 6>a->syms[1]->u.c.v.i ! 3541: ) { ! 3542: a->x.ints[2] = 2; /* %^c */ ! 3543: a->x.ints[0] = 1; /* %^n */ ! 3544: a->syms[2]=oreg[a->syms[1]->u.c.v.i]; ! 3545: goto L636; /* mov ^y,^z */ ! 3546: } ! 3547: if ( ! 3548: a->x.ints[2] == 1 /* %^n */ ! 3549: ) { ! 3550: b = a->kids[2]; ! 3551: if ( ! 3552: b->op == 622 /* ^f ^y,^x,^z */ ! 3553: && b->x.ints[3] == 1 /* add */ ! 3554: && b->x.ints[0] == 57 /* ^c */ ! 3555: && b->x.ints[1] == 3 /* %fp */ ! 3556: ) { ! 3557: --b->count; ! 3558: a->x.ints[2] = 27; /* %fp+^c */ ! 3559: a->syms[2] = b->syms[0]; ! 3560: a->kids[2] = 0; ! 3561: goto L642; /* st^t ^y,[^z] */ ! 3562: } ! 3563: if ( ! 3564: b->count == 1 ! 3565: ) { ! 3566: switch (b->op) { ! 3567: case 622: /* ^f ^y,^x,^z */ ! 3568: if ( ! 3569: b->x.ints[3] == 1 /* add */ ! 3570: && b->x.ints[0] == 1 /* %^n */ ! 3571: && b->x.ints[1] == 57 /* ^c */ ! 3572: ) { ! 3573: if (--b->count > 0) ! 3574: if (c=b->kids[0]) ++c->count; ! 3575: a->x.ints[2] = 15; /* %^n+^c */ ! 3576: a->kids[2] = b->kids[0]; ! 3577: a->syms[2] = b->syms[1]; ! 3578: goto L642; /* st^t ^y,[^z] */ ! 3579: } ! 3580: break; ! 3581: case 646: /* set ^y,%g1; add %fp,%g1,^z */ ! 3582: --b->count; ! 3583: a->x.ints[2] = 57; /* ^c */ ! 3584: a->syms[2] = b->syms[0]; ! 3585: a->kids[2] = 0; ! 3586: goto L640; /* set ^z,%g1; st^t ^y,[%fp+%g1] */ ! 3587: } ! 3588: } ! 3589: } ! 3590: b = a->kids[2]; ! 3591: if ( ! 3592: "\1\0\0\0\0\1\1\1\0\1"[a->x.ints[4]] /* <TMP851> */ ! 3593: && a->x.ints[2] == 1 /* %^n */ ! 3594: && b->count == 1 ! 3595: && b->op == 622 /* ^f ^y,^x,^z */ ! 3596: && b->x.ints[3] == 1 /* add */ ! 3597: && b->x.ints[0] == 1 /* %^n */ ! 3598: && b->x.ints[1] == 1 /* %^n */ ! 3599: ) { ! 3600: if (--b->count > 0) { ! 3601: if (c=b->kids[1]) ++c->count; ! 3602: if (c=b->kids[0]) ++c->count; ! 3603: } ! 3604: a->x.ints[2] = 8; /* %^n+%^i */ ! 3605: a->kids[2] = b->kids[0]; ! 3606: a->kids[5] = b->kids[1]; ! 3607: goto L642; /* st^t ^y,[^z] */ ! 3608: } ! 3609: if ( ! 3610: a->x.ints[2] == 1 /* %^n */ ! 3611: && b->count == 1 ! 3612: && b->op == 636 /* mov ^y,^z */ ! 3613: ) { ! 3614: if (--b->count > 0) { ! 3615: if (c=b->kids[0]) ++c->count; ! 3616: if (c=b->kids[3]) ++c->count; ! 3617: } ! 3618: a->syms[2] = b->syms[0]; ! 3619: a->kids[5] = b->kids[3]; ! 3620: a->x.ints[2] = b->x.ints[0]; ! 3621: a->kids[2] = b->kids[0]; ! 3622: goto L642; /* st^t ^y,[^z] */ ! 3623: } ! 3624: b = a->kids[0]; ! 3625: if ( ! 3626: a->x.ints[0] == 1 /* %^n */ ! 3627: && b->count == 1 ! 3628: && b->op == 636 /* mov ^y,^z */ ! 3629: ) { ! 3630: if (--b->count > 0) { ! 3631: if (c=b->kids[0]) ++c->count; ! 3632: if (c=b->kids[3]) ++c->count; ! 3633: } ! 3634: a->syms[0] = b->syms[0]; ! 3635: a->kids[3] = b->kids[3]; ! 3636: a->x.ints[0] = b->x.ints[0]; ! 3637: a->kids[0] = b->kids[0]; ! 3638: goto L642; /* st^t ^y,[^z] */ ! 3639: } ! 3640: if ( ! 3641: a->x.ints[2] == 27 /* %fp+^c */ ! 3642: && isregvar(a->syms[2]) ! 3643: ) { ! 3644: a->x.ints[2] = 2; /* %^c */ ! 3645: goto L636; /* mov ^y,^z */ ! 3646: } ! 3647: a->op = 642; ! 3648: break; ! 3649: case 643: L643: /* st ^y,[^z] */ ! 3650: dumptree(a, 643); ! 3651: a->op = 643; ! 3652: break; ! 3653: case 644: L644: /* st ^y,[^z]; st ^x,[^z+4] */ ! 3654: dumptree(a, 644); ! 3655: a->op = 644; ! 3656: break; ! 3657: case 645: L645: /* st ^y,[%sp+4*^z+68]; ld [%sp+4*^z+68],%o^x */ ! 3658: dumptree(a, 645); ! 3659: a->op = 645; ! 3660: break; ! 3661: case 646: L646: /* set ^y,%g1; add %fp,%g1,^z */ ! 3662: dumptree(a, 646); ! 3663: if ( ! 3664: a->x.ints[2] == 2 /* %^c */ ! 3665: && isregvar(a->syms[0])||range(-a->syms[0]->x.offset,13) ! 3666: ) { ! 3667: a->x.ints[1] = 3; /* %fp */ ! 3668: a->x.ints[3] = 1; /* add */ ! 3669: goto L622; /* ^f ^y,^x,^z */ ! 3670: } ! 3671: a->op = 646; ! 3672: break; ! 3673: case 647: L647: /* call ^f,2; nop */ ! 3674: dumptree(a, 647); ! 3675: a->op = 647; ! 3676: break; ! 3677: default: ! 3678: assert(0); ! 3679: } ! 3680: } ! 3681:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.