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