Commit | Line | Data |
---|---|---|
4d89f1ac | 1 | #ifndef lint |
a376cb2f | 2 | static char *sccsid ="@(#)table.c 1.33 (Berkeley) %G%"; |
4d89f1ac RC |
3 | #endif lint |
4 | ||
0ec67d08 | 5 | # include "pass2.h" |
b1ca30fc ML |
6 | |
7 | # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG | |
8 | # define AWD SNAME|SOREG|SCON|STARNM|STARREG | |
9 | /* tbl */ | |
10 | # define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR | |
11 | # define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR | |
12 | # define ANYFIXED ANYSIGNED|ANYUSIGNED | |
13 | # define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG | |
14 | # define NIAWD SNAME|SCON|STARNM | |
15 | /* tbl */ | |
16 | ||
17 | struct optab table[] = { | |
18 | ||
b1ca30fc ML |
19 | /* the following entry is to fix a problem with |
20 | the manner that the first pass handles the | |
21 | type of a shift expression */ | |
22 | PCONV, INAREG|INTAREG, | |
23 | SAREG|AWD, TINT|TUNSIGNED, | |
24 | SANY, TPOINT, | |
25 | NAREG|NASL, RLEFT, | |
26 | "", | |
27 | ||
4d89f1ac | 28 | #if defined(FORT) || defined(SPRECC) |
b1ca30fc | 29 | SCONV, INTAREG|FORCC, |
472582a4 RC |
30 | SAREG|AWD, TDOUBLE, |
31 | SANY, TFLOAT, | |
32 | NAREG|NASL, RESC1|RESCC, | |
33 | " cvtdf AL,A1\n", | |
b1ca30fc | 34 | |
b1ca30fc | 35 | SCONV, INTAREG|FORCC, |
d4c2018b | 36 | SAREG|AWD, ANYSIGNED, |
b1ca30fc ML |
37 | SANY, TFLOAT, |
38 | NAREG|NASL, RESC1|RESCC, | |
39 | " cvtZLf AL,TA1\n", | |
b1ca30fc ML |
40 | #endif |
41 | ||
85696ba1 KM |
42 | /* take care of redundant conversions introduced by reclaim() */ |
43 | SCONV, INTAREG, | |
44 | STAREG, TWORD, | |
45 | SANY, TWORD, | |
46 | 0, RLEFT, | |
47 | "", | |
48 | ||
9e4063b4 DS |
49 | SCONV, INTAREG, |
50 | STAREG, TDOUBLE, | |
51 | SANY, TDOUBLE, | |
52 | 0, RLEFT, | |
53 | "", | |
54 | ||
b1ca30fc | 55 | SCONV, INTAREG|FORCC, |
472582a4 | 56 | SAREG|AWD, TANY, |
b1ca30fc ML |
57 | SANY, TANY, |
58 | NAREG|NASL, RESC1|RESCC, | |
472582a4 | 59 | " ZA\n", |
b1ca30fc | 60 | |
4aa53639 DS |
61 | SCONV, FORARG, |
62 | SAREG|AWD, TANY, | |
63 | SANY, TANY, | |
1f7e73db | 64 | NAREG|NASL, RNULL, |
4aa53639 | 65 | " ZV\n", |
b1ca30fc ML |
66 | |
67 | INIT, FOREFF, | |
68 | SCON, TANY, | |
69 | SANY, TWORD, | |
70 | 0, RNOP, | |
71 | " .long CL\n", | |
72 | ||
73 | INIT, FOREFF, | |
74 | SCON, TANY, | |
75 | SANY, TSHORT|TUSHORT, | |
76 | 0, RNOP, | |
77 | " .word CL\n", | |
78 | ||
79 | INIT, FOREFF, | |
80 | SCON, TANY, | |
81 | SANY, TCHAR|TUCHAR, | |
82 | 0, RNOP, | |
83 | " .byte CL\n", | |
84 | ||
9e4063b4 | 85 | #ifdef FORT |
b1ca30fc ML |
86 | /* for the use of fortran only */ |
87 | ||
88 | GOTO, FOREFF, | |
89 | SCON, TANY, | |
90 | SANY, TANY, | |
91 | 0, RNOP, | |
92 | " jbr CL\n", | |
9e4063b4 | 93 | #endif |
b1ca30fc ML |
94 | |
95 | GOTO, FOREFF, | |
4d89f1ac | 96 | SNAME|SOREG, TANY, |
b1ca30fc ML |
97 | SANY, TANY, |
98 | 0, RNOP, | |
99 | " jmp *AL\n", | |
100 | ||
101 | GOTO, FOREFF, | |
102 | SAREG, TANY, | |
103 | SANY, TANY, | |
104 | 0, RNOP, | |
105 | " jmp (AL)\n", | |
106 | ||
107 | STARG, FORARG, | |
108 | SCON|SOREG, TANY, | |
109 | SANY, TANY, | |
b1ca30fc ML |
110 | 0, RNULL, |
111 | " subl2 ZT,sp\nZS", | |
112 | ||
113 | STASG, FOREFF, | |
114 | SNAME|SOREG, TANY, | |
115 | SCON|SAREG, TANY, | |
116 | 0, RNOP, | |
117 | "ZS", | |
118 | ||
119 | STASG, INAREG, | |
120 | SNAME|SOREG, TANY, | |
121 | SCON, TANY, | |
122 | NAREG, RESC1, | |
123 | "ZS movl AR,A1\n", | |
124 | ||
125 | STASG, INAREG, | |
126 | SNAME|SOREG, TANY, | |
127 | SAREG, TANY, | |
128 | 0, RRIGHT, | |
129 | " pushl AR\nZS movl (sp)+,AR\n", | |
130 | ||
131 | FLD, INAREG|INTAREG, | |
132 | SANY, TANY, | |
133 | SFLD, ANYSIGNED, | |
134 | NAREG|NASR, RESC1, | |
135 | " extv $H,$S,AR,A1\n", | |
136 | ||
137 | FLD, INAREG|INTAREG, | |
138 | SANY, TANY, | |
139 | SFLD, ANYUSIGNED, | |
140 | NAREG|NASR, RESC1, | |
141 | " extzv $H,$S,AR,A1\n", | |
142 | ||
143 | FLD, FORARG, | |
144 | SANY, TANY, | |
145 | SFLD, ANYSIGNED, | |
146 | 0, RNULL, | |
147 | " extv $H,$S,AR,-(sp)\n", | |
148 | ||
149 | FLD, FORARG, | |
150 | SANY, TANY, | |
151 | SFLD, ANYUSIGNED, | |
152 | 0, RNULL, | |
153 | " extzv $H,$S,AR,-(sp)\n", | |
154 | ||
155 | OPLOG, FORCC, | |
156 | SAREG|AWD, TWORD, | |
157 | SAREG|AWD, TWORD, | |
158 | 0, RESCC, | |
159 | " cmpl AL,AR\nZP", | |
160 | ||
161 | OPLOG, FORCC, | |
85696ba1 KM |
162 | SAREG|AWD, TSHORT, |
163 | SAREG|AWD, TSHORT, | |
b1ca30fc ML |
164 | 0, RESCC, |
165 | " cmpw AL,AR\nZP", | |
166 | ||
167 | OPLOG, FORCC, | |
85696ba1 KM |
168 | SAREG|AWD, TUSHORT, |
169 | SAREG|AWD, TUSHORT, | |
170 | 0, RESCC, | |
171 | " cmpw AL,AR\nZP", | |
172 | ||
173 | OPLOG, FORCC, | |
174 | SAREG|AWD, TCHAR, | |
175 | SAREG|AWD, TCHAR, | |
176 | 0, RESCC, | |
177 | " cmpb AL,AR\nZP", | |
178 | ||
179 | OPLOG, FORCC, | |
180 | SAREG|AWD, TUCHAR, | |
181 | SAREG|AWD, TUCHAR, | |
b1ca30fc ML |
182 | 0, RESCC, |
183 | " cmpb AL,AR\nZP", | |
184 | ||
9e4063b4 | 185 | /* optim2() handles degenerate comparisons with constants */ |
b1ca30fc | 186 | OPLOG, FORCC, |
9e4063b4 DS |
187 | SAREG|AWD, TCHAR|TUCHAR|TSHORT|TUSHORT, |
188 | SCON, ANYFIXED, | |
b1ca30fc | 189 | 0, RESCC, |
9e4063b4 | 190 | " cmpZL AL,AR\nZP", |
b1ca30fc ML |
191 | |
192 | OPLOG, FORCC, | |
193 | SAREG|AWD, TDOUBLE, | |
194 | SAREG|AWD, TDOUBLE, | |
195 | 0, RESCC, | |
196 | " cmpd AL,AR\nZP", | |
197 | ||
b1ca30fc ML |
198 | OPLOG, FORCC, |
199 | SAREG|AWD, TFLOAT, | |
200 | SAREG|AWD, TFLOAT, | |
201 | 0, RESCC, | |
202 | " cmpf AL,AR\nZP", | |
203 | ||
073bc43d DS |
204 | #ifdef FORT |
205 | /* this really ought to be taken care of farther upstream... XXX */ | |
206 | OPLOG, FORCC, | |
207 | SAREG|AWD, TFLOAT, | |
208 | SAREG|AWD, TDOUBLE, | |
209 | NAREG|NASL, RESCC, | |
210 | " cvtfd AL,A1\n cmpd A1,AR\nZP", | |
211 | ||
212 | OPLOG, FORCC, | |
213 | SAREG|AWD, TDOUBLE, | |
214 | SAREG|AWD, TFLOAT, | |
215 | NAREG|NASR, RESCC, | |
216 | " cvtfd AR,A1\n cmpd AL,A1\nZP", | |
217 | #endif | |
218 | ||
b1ca30fc ML |
219 | CCODES, INAREG|INTAREG, |
220 | SANY, TANY, | |
221 | SANY, TANY, | |
222 | NAREG, RESC1, | |
223 | " movl $1,A1\nZN", | |
224 | ||
472582a4 RC |
225 | UNARY CALL, INTAREG, |
226 | SCON, TANY, | |
227 | SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, | |
228 | NAREG|NASL, RESC1, | |
229 | " calls ZC,CL\n", | |
472582a4 | 230 | |
b1ca30fc ML |
231 | UNARY CALL, INTAREG, |
232 | SAREG, TANY, | |
233 | SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, | |
234 | NAREG|NASL, RESC1, /* should be 0 */ | |
235 | " calls ZC,(AL)\n", | |
236 | ||
237 | UNARY CALL, INAREG|INTAREG, | |
238 | SNAME, TANY, | |
239 | SANY, TANY, | |
240 | NAREG|NASL, RESC1, /* really reg 0 */ | |
241 | " calls ZC,*AL\n", | |
242 | ||
243 | UNARY CALL, INAREG|INTAREG, | |
244 | SSOREG, TANY, | |
245 | SANY, TANY, | |
246 | NAREG|NASL, RESC1, /* really reg 0 */ | |
247 | " calls ZC,*AL\n", | |
248 | ||
249 | ASG RS, INAREG|FOREFF|FORCC, | |
250 | SAREG, TWORD, | |
53e2f7dc | 251 | SCON, TINT|TUNSIGNED, |
b1ca30fc ML |
252 | 0, RLEFT|RESCC, |
253 | " extzv AR,ZU,AL,AL\n", | |
254 | ||
255 | ASG RS, INAREG|FOREFF|FORCC, | |
256 | SAREG, TWORD, | |
257 | SAREG, ANYFIXED, | |
258 | NAREG, RLEFT|RESCC, | |
259 | " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", | |
260 | ||
261 | ASG RS, INAREG|FOREFF|FORCC, | |
262 | SAREG, TWORD, | |
263 | SAREG|AWD, TWORD, | |
264 | NAREG, RLEFT|RESCC, | |
265 | " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", | |
266 | ||
267 | RS, INAREG|INTAREG|FORCC, | |
268 | SAREG, TWORD, | |
53e2f7dc | 269 | SCON, TINT|TUNSIGNED, |
b1ca30fc ML |
270 | NAREG|NASL, RESC1|RESCC, |
271 | " extzv AR,ZU,AL,A1\n", | |
272 | ||
273 | ASG LS, INAREG|FOREFF|FORCC, | |
274 | SAREG|AWD, TWORD, | |
275 | SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, | |
276 | 0, RLEFT|RESCC, | |
277 | " ashl AR,AL,AL\n", | |
278 | ||
279 | ASG LS, INAREG|FOREFF|FORCC, | |
280 | SAREG|AWD, TWORD, | |
281 | SSOREG, ANYSIGNED|ANYUSIGNED, | |
282 | 0, RLEFT|RESCC, | |
283 | " ashl AR,AL,AL\n", | |
284 | ||
285 | ASG LS, INAREG|FOREFF|FORCC, | |
286 | SAREG|AWD, TWORD, | |
287 | SOREG, ANYSIGNED|ANYUSIGNED, | |
288 | NAREG, RLEFT|RESCC, | |
289 | " ZB AR,A1\n ashl A1,AL,AL\n", | |
290 | ||
291 | LS, INAREG|INTAREG|FORCC, | |
292 | SAREG|AWD, TWORD, | |
293 | SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, | |
294 | NAREG|NASL|NASR, RESC1|RESCC, | |
295 | " ashl AR,AL,A1\n", | |
296 | ||
297 | LS, INAREG|INTAREG|FORCC, | |
298 | SAREG|AWD, TWORD, | |
299 | SSOREG, ANYSIGNED|ANYUSIGNED, | |
300 | NAREG|NASL|NASR, RESC1|RESCC, | |
301 | " ashl AR,AL,A1\n", | |
302 | ||
303 | LS, INAREG|INTAREG|FORCC, | |
304 | SAREG|AWD, TWORD, | |
305 | SOREG, ANYSIGNED|ANYUSIGNED, | |
306 | NAREG|NASR, RESC1|RESCC, | |
307 | " ZB AR,A1\n ashl A1,AL,A1\n", | |
308 | ||
309 | INCR, FOREFF, | |
9e4063b4 | 310 | SAREG|AWD, TANY, |
82818655 | 311 | SCON|SNAME, TANY, |
b1ca30fc ML |
312 | 0, RLEFT, |
313 | " ZE\n", | |
314 | ||
315 | DECR, FOREFF, | |
9e4063b4 | 316 | SAREG|AWD, TANY, |
82818655 | 317 | SCON|SNAME, TANY, |
b1ca30fc ML |
318 | 0, RLEFT, |
319 | " ZE\n", | |
320 | ||
b1ca30fc | 321 | INCR, INAREG|INTAREG, |
9e4063b4 | 322 | SAREG|AWD, TANY, |
82818655 | 323 | SCON|SNAME, TANY, |
b1ca30fc ML |
324 | NAREG, RESC1, |
325 | " ZD\n", | |
326 | ||
327 | DECR, INAREG|INTAREG, | |
9e4063b4 | 328 | SAREG|AWD, TANY, |
82818655 | 329 | SCON|SNAME, TANY, |
b1ca30fc ML |
330 | NAREG, RESC1, |
331 | " ZD\n", | |
332 | ||
1f7e73db DS |
333 | ASSIGN, INAREG|FOREFF|FORCC, |
334 | SAREG|AWD, TFLOAT|TDOUBLE, | |
335 | SAREG|AWD, TUCHAR|TUSHORT, | |
a399c386 | 336 | NAREG|NASR, RLEFT|RESCC, |
1f7e73db DS |
337 | " ZA\n", |
338 | ||
b1ca30fc ML |
339 | ASSIGN, INAREG|FOREFF|FORCC, |
340 | SAREG|AWD, TANY, | |
341 | SAREG|AWD, TANY, | |
eb9876d1 | 342 | 0, RLEFT|RESCC, |
b1ca30fc ML |
343 | " ZA\n", |
344 | ||
485a3c32 | 345 | ASSIGN, FOREFF, |
b1ca30fc ML |
346 | SFLD, TANY, |
347 | SAREG|AWD, TWORD, | |
485a3c32 | 348 | 0, RNOP, |
b1ca30fc ML |
349 | " insv AR,$H,$S,AL\n", |
350 | ||
485a3c32 | 351 | ASSIGN, INAREG, |
48475039 | 352 | SFLD, ANYSIGNED, |
485a3c32 DS |
353 | SAREG|AWD, TWORD, |
354 | NAREG, RESC1, | |
355 | " insv AR,$H,$S,AL\n extv $H,$S,AL,A1\n", | |
356 | ||
48475039 DS |
357 | ASSIGN, INAREG, |
358 | SFLD, ANYUSIGNED, | |
359 | SAREG|AWD, TWORD, | |
360 | NAREG, RESC1, | |
361 | " insv AR,$H,$S,AL\n extzv $H,$S,AL,A1\n", | |
362 | ||
b1ca30fc ML |
363 | ASSIGN, INAREG|FOREFF|FORCC, |
364 | SAREG|AWD, TWORD, | |
365 | SFLD, ANYSIGNED, | |
366 | 0, RLEFT|RESCC, | |
367 | " extv $H,$S,AR,AL\n", | |
368 | ||
369 | ASSIGN, INAREG|FOREFF|FORCC, | |
370 | SAREG|AWD, TWORD, | |
371 | SFLD, ANYUSIGNED, | |
372 | 0, RLEFT|RESCC, | |
373 | " extzv $H,$S,AR,AL\n", | |
374 | ||
375 | /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */ | |
376 | UNARY MUL, FOREFF, | |
377 | SCC, TANY, | |
378 | SCC, TANY, | |
379 | 0, RNULL, | |
380 | " HELP HELP HELP\n", | |
381 | ||
f955c41a DS |
382 | OREG, INTEMP, |
383 | SANY, TANY, | |
384 | SOREG, TDOUBLE, | |
385 | 2*NTEMP, RESC1, | |
9e4063b4 | 386 | " movq AR,A1\n", |
f955c41a DS |
387 | |
388 | OREG, INTEMP, | |
389 | SANY, TANY, | |
390 | SOREG, TANY, | |
391 | NTEMP, RESC1, | |
a376cb2f | 392 | " movZR AR,A1\n", |
f955c41a | 393 | |
b1ca30fc ML |
394 | REG, INTEMP, |
395 | SANY, TANY, | |
396 | SAREG, TDOUBLE, | |
397 | 2*NTEMP, RESC1, | |
9e4063b4 | 398 | " movq AR,A1\n", |
b1ca30fc ML |
399 | |
400 | REG, INTEMP, | |
401 | SANY, TANY, | |
402 | SAREG, TANY, | |
403 | NTEMP, RESC1, | |
404 | " movZF AR,A1\n", | |
405 | ||
4d89f1ac RC |
406 | #if defined(FORT) || defined(SPRECC) |
407 | REG, FORARG, | |
b1ca30fc ML |
408 | SANY, TANY, |
409 | SAREG, TFLOAT, | |
410 | 0, RNULL, | |
411 | " cvtfd AR,-(sp)\n", | |
412 | ||
413 | REG, FORARG, | |
414 | SANY, TANY, | |
415 | SAREG, TDOUBLE, | |
416 | 0, RNULL, | |
9e4063b4 | 417 | " movq AR,-(sp)\n", |
b1ca30fc ML |
418 | #endif |
419 | ||
420 | OPLEAF, FOREFF, | |
421 | SANY, TANY, | |
422 | SAREG|AWD, TANY, | |
423 | 0, RLEFT, | |
424 | "", | |
425 | ||
b1ca30fc ML |
426 | OPLTYPE, INAREG|INTAREG, |
427 | SANY, TANY, | |
428 | SANY, TANY, | |
429 | NAREG|NASR, RESC1, | |
430 | " ZA\n", | |
431 | ||
432 | OPLTYPE, FORCC, | |
433 | SANY, TANY, | |
434 | SANY, TANY, | |
435 | 0, RESCC, | |
436 | " tstZR AR\n", | |
437 | ||
b1ca30fc ML |
438 | OPLTYPE, FORARG, |
439 | SANY, TANY, | |
b1ca30fc | 440 | SANY, TANY, |
b1ca30fc | 441 | 0, RNULL, |
4aa53639 | 442 | " ZV\n", |
b1ca30fc | 443 | |
4d89f1ac | 444 | #if defined(FORT) || defined(SPRECC) |
472582a4 | 445 | UNARY MINUS, INTAREG|FORCC, |
88bb0c9f | 446 | SAREG|AWD, TFLOAT, |
472582a4 RC |
447 | SANY, TANY, |
448 | NAREG|NASL, RESC1|RESCC, | |
449 | " mnegZL TAL,A1\n", | |
450 | ||
88bb0c9f | 451 | #endif |
472582a4 | 452 | |
b1ca30fc | 453 | UNARY MINUS, INTAREG|FORCC, |
9e4063b4 | 454 | SAREG|AWD, TWORD|TDOUBLE, |
b1ca30fc ML |
455 | SANY, TANY, |
456 | NAREG|NASL, RESC1|RESCC, | |
457 | " mnegZL AL,A1\n", | |
458 | ||
459 | COMPL, INTAREG|FORCC, | |
9e4063b4 | 460 | SAREG|AWD, TWORD, |
b1ca30fc ML |
461 | SANY, TANY, |
462 | NAREG|NASL, RESC1|RESCC, | |
463 | " mcomZL AL,A1\n", | |
464 | ||
b1ca30fc | 465 | AND, FORCC, |
9e4063b4 DS |
466 | SAREG|AWD, TCHAR|TSHORT, |
467 | SCON, ANYFIXED, | |
468 | NAREG|NASL, RESCC, | |
469 | " ZZ\n", | |
b1ca30fc ML |
470 | |
471 | AND, FORCC, | |
9e4063b4 DS |
472 | SAREG|AWD, TWORD|ANYUSIGNED, |
473 | SCON, ANYFIXED, | |
b1ca30fc | 474 | 0, RESCC, |
9e4063b4 | 475 | " ZZ\n", |
b1ca30fc ML |
476 | |
477 | ASG AND, INAREG|FOREFF|FORCC, | |
478 | SAREG, TWORD, | |
479 | SCON, TWORD, | |
480 | 0, RLEFT|RESCC, | |
481 | " bicl2 AR,AL\n", | |
482 | ||
9e4063b4 DS |
483 | /* General cases for DIV and ASG DIV are handled below with OPMUL */ |
484 | /* Some special cases are handled in optim2() */ | |
485 | ||
1b46eb1e DS |
486 | DIV, INAREG|FOREFF|FORCC, |
487 | SAREG|AWD, TUNSIGNED|TULONG, | |
1fe782ac | 488 | SCON, ANYUSIGNED, |
1b46eb1e | 489 | NAREG|NEVEN, RESC1|RESCC, |
a57b600c | 490 | " movl AL,A1\n clrl U1\n ediv AR,A1,A1,U1\n", |
1b46eb1e DS |
491 | |
492 | ASG DIV, INAREG|FOREFF|FORCC, | |
9e4063b4 | 493 | SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, |
e9e2cefa DS |
494 | SMCON, ANYUSIGNED, |
495 | 0, RLEFT|RESCC, | |
496 | " ZJ\n", | |
497 | ||
498 | ASG DIV, INAREG|FOREFF|FORCC, | |
9e4063b4 | 499 | SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, |
e9e2cefa DS |
500 | SCON, ANYUSIGNED, |
501 | NAREG|NEVEN, RLEFT|RESCC, | |
502 | " movl AL,A1\n clrl U1\n ediv AR,A1,AL,U1\n", | |
503 | ||
1b46eb1e DS |
504 | MOD, INAREG|INTAREG, |
505 | SAREG|AWD, TINT|TLONG, | |
506 | SAREG|AWD, TINT|TLONG, | |
507 | NAREG, RESC1, | |
508 | " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n", | |
509 | ||
510 | MOD, INAREG|FOREFF, | |
511 | SAREG|AWD, TUNSIGNED|TULONG, | |
1fe782ac | 512 | SMCON, ANYUSIGNED, |
1b46eb1e DS |
513 | NAREG|NASL, RLEFT|RESC1, |
514 | " ZJ\n", | |
515 | ||
1b46eb1e DS |
516 | MOD, INAREG|FOREFF, |
517 | SAREG|AWD, TUNSIGNED|TULONG, | |
1fe782ac | 518 | SCON, ANYUSIGNED, |
9e4063b4 | 519 | NAREG|NEVEN, RESC1, |
a57b600c | 520 | " movl AL,A1\n clrl U1\n ediv AR,A1,U1,A1\n", |
1b46eb1e | 521 | |
1fe782ac DS |
522 | /* should only see UNSIGNED lhs here if converted from UCHAR/USHORT lhs */ |
523 | ASG MOD, INAREG|FOREFF|FORCC, | |
524 | SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, | |
1b46eb1e DS |
525 | SAREG|AWD, TINT|TLONG, |
526 | NAREG, RLEFT|RESCC, | |
527 | " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n", | |
528 | ||
529 | ASG MOD, INAREG|FOREFF, | |
9e4063b4 | 530 | SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, |
e9e2cefa | 531 | SMCON, ANYUSIGNED, |
9e4063b4 | 532 | 0, RLEFT, |
e9e2cefa DS |
533 | " ZJ\n", |
534 | ||
e9e2cefa | 535 | ASG MOD, INAREG|FOREFF, |
9e4063b4 | 536 | SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, |
e9e2cefa | 537 | SCON, ANYUSIGNED, |
9e4063b4 | 538 | NAREG|NEVEN, RLEFT, |
e9e2cefa DS |
539 | " movl AL,A1\n clrl U1\n ediv AR,A1,A1,AL\n", |
540 | ||
b1ca30fc ML |
541 | ASG OPMUL, INAREG|FOREFF|FORCC, |
542 | SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, | |
543 | SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, | |
544 | 0, RLEFT|RESCC, | |
545 | " OL2 AR,AL\n", | |
546 | ||
547 | OPMUL, INAREG|INTAREG|FORCC, | |
548 | STAREG, TINT|TUNSIGNED|TLONG|TULONG, | |
549 | SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, | |
550 | 0, RLEFT|RESCC, | |
551 | " OL2 AR,AL\n", | |
552 | ||
553 | OPMUL, INAREG|INTAREG|FORCC, | |
554 | SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, | |
555 | SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, | |
556 | NAREG|NASL|NASR, RESC1|RESCC, | |
557 | " OL3 AR,AL,A1\n", | |
558 | ||
b1ca30fc | 559 | ASG PLUS, INAREG|FOREFF|FORCC, |
9e4063b4 DS |
560 | SAREG|AWD, ANYFIXED, |
561 | SONE, TANY, | |
b1ca30fc ML |
562 | 0, RLEFT|RESCC, |
563 | " incZL AL\n", | |
564 | ||
b1ca30fc | 565 | ASG MINUS, INAREG|FOREFF|FORCC, |
9e4063b4 DS |
566 | SAREG|AWD, ANYFIXED, |
567 | SONE, TANY, | |
b1ca30fc ML |
568 | 0, RLEFT|RESCC, |
569 | " decZL AL\n", | |
570 | ||
b1ca30fc ML |
571 | PLUS, INAREG|INTAREG|FORCC, |
572 | STAREG, TWORD, | |
573 | SONE, TWORD, | |
574 | 0, RLEFT|RESCC, | |
575 | " incZL AL\n", | |
576 | ||
b1ca30fc ML |
577 | MINUS, INAREG|INTAREG|FORCC, |
578 | STAREG, TWORD, | |
579 | SONE, TWORD, | |
580 | 0, RLEFT|RESCC, | |
581 | " decZL AL\n", | |
582 | ||
b1ca30fc ML |
583 | ASG OPSIMP, INAREG|FOREFF|FORCC, |
584 | SAREG|AWD, TWORD, | |
585 | SAREG|AWD, TWORD, | |
586 | 0, RLEFT|RESCC, | |
587 | " OL2 AR,AL\n", | |
588 | ||
b1ca30fc ML |
589 | ASG OPSIMP, INAREG|FOREFF|FORCC, |
590 | AWD, TSHORT|TUSHORT, | |
9e4063b4 | 591 | SAREG|SNAME|STARNM, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG, |
b1ca30fc ML |
592 | 0, RLEFT|RESCC, |
593 | " OW2 AR,AL\n", | |
594 | ||
595 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
596 | AWD, TSHORT|TUSHORT, | |
9e4063b4 | 597 | SSOREG, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG, |
9d8c6b01 DS |
598 | 0, RLEFT|RESCC, |
599 | " OW2 AR,AL\n", | |
600 | ||
601 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
602 | AWD, TSHORT|TUSHORT, | |
603 | SSCON, ANYFIXED, | |
604 | 0, RLEFT|RESCC, | |
605 | " OW2 AR,AL\n", | |
606 | ||
607 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
608 | AWD, TSHORT|TUSHORT, | |
609 | AWD, TSHORT|TUSHORT, | |
b1ca30fc ML |
610 | 0, RLEFT|RESCC, |
611 | " OW2 AR,AL\n", | |
612 | ||
613 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
614 | AWD, TCHAR|TUCHAR, | |
9d8c6b01 | 615 | SSOREG, ANYFIXED, |
b1ca30fc ML |
616 | 0, RLEFT|RESCC, |
617 | " OB2 AR,AL\n", | |
618 | ||
619 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
620 | AWD, TCHAR|TUCHAR, | |
9d8c6b01 DS |
621 | SAREG|SNAME|STARNM, ANYFIXED, |
622 | 0, RLEFT|RESCC, | |
623 | " OB2 AR,AL\n", | |
624 | ||
625 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
626 | AWD, TCHAR|TUCHAR, | |
627 | SCCON, ANYFIXED, | |
628 | 0, RLEFT|RESCC, | |
629 | " OB2 AR,AL\n", | |
630 | ||
631 | ASG OPSIMP, INAREG|FOREFF|FORCC, | |
632 | AWD, TCHAR|TUCHAR, | |
633 | AWD, TCHAR|TUCHAR, | |
b1ca30fc ML |
634 | 0, RLEFT|RESCC, |
635 | " OB2 AR,AL\n", | |
636 | ||
b1ca30fc ML |
637 | OPSIMP, INAREG|INTAREG|FORCC, |
638 | STAREG, ANYFIXED, | |
639 | SAREG|AWD, TWORD, | |
640 | 0, RLEFT|RESCC, | |
641 | " OL2 AR,AL\n", | |
642 | ||
643 | OPSIMP, INAREG|INTAREG|FORCC, | |
644 | SAREG|AWD, TWORD, | |
645 | SAREG|AWD, TWORD, | |
646 | NAREG|NASL|NASR, RESC1|RESCC, | |
647 | " OL3 AR,AL,A1\n", | |
648 | ||
649 | ASG OPFLOAT, INAREG|FOREFF|FORCC, | |
650 | SAREG|AWD, TDOUBLE, | |
651 | SAREG|AWD, TDOUBLE, | |
652 | 0, RLEFT|RESCC, | |
653 | " OD2 AR,AL\n", | |
654 | ||
655 | ASG OPFLOAT, INAREG|FOREFF|FORCC, | |
656 | SAREG|AWD, TFLOAT, | |
657 | SAREG|AWD, TFLOAT, | |
658 | 0, RLEFT|RESCC, | |
4d89f1ac | 659 | #if defined(FORT) || defined(SPRECC) |
d1dcacf0 RC |
660 | " OF2 AR,TAL\n", |
661 | #else | |
b1ca30fc | 662 | " OF2 AR,AL\n", |
d1dcacf0 | 663 | #endif |
b1ca30fc | 664 | |
b1ca30fc ML |
665 | ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC, |
666 | SAREG|AWD, TFLOAT, | |
667 | SAREG|AWD, TDOUBLE, | |
668 | NAREG, RLEFT|RESC1|RESCC, | |
669 | " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n", | |
670 | ||
d4c2018b DS |
671 | ASG OPFLOAT, INAREG|FOREFF|FORCC, |
672 | SAREG|AWD, ANYFIXED, | |
673 | #ifndef SPRECC | |
674 | SAREG|AWD, TDOUBLE, /* force FLOAT to register */ | |
675 | #else | |
676 | SAREG|AWD, TFLOAT|TDOUBLE, | |
677 | #endif | |
678 | NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */ | |
679 | " ZG\n", | |
680 | ||
b1ca30fc ML |
681 | OPFLOAT, INAREG|INTAREG|FORCC, |
682 | STAREG, TDOUBLE, | |
683 | SAREG|AWD, TDOUBLE, | |
684 | 0, RLEFT|RESCC, | |
685 | " OD2 AR,AL\n", | |
686 | ||
687 | OPFLOAT, INAREG|INTAREG|FORCC, | |
688 | SAREG|AWD, TDOUBLE, | |
689 | SAREG|AWD, TDOUBLE, | |
690 | NAREG|NASL|NASR, RESC1|RESCC, | |
691 | " OD3 AR,AL,A1\n", | |
692 | ||
4d89f1ac | 693 | #if defined(FORT) || defined(SPRECC) |
b1ca30fc | 694 | OPFLOAT, INAREG|INTAREG|FORCC, |
d1dcacf0 RC |
695 | STAREG, TFLOAT, |
696 | SAREG|AWD, TFLOAT, | |
b1ca30fc | 697 | 0, RLEFT|RESCC, |
d1dcacf0 | 698 | " OF2 AR,TAL\n", |
b1ca30fc ML |
699 | |
700 | OPFLOAT, INAREG|INTAREG|FORCC, | |
701 | SAREG|AWD, TFLOAT, | |
702 | SAREG|AWD, TFLOAT, | |
703 | NAREG|NASL|NASR, RESC1|RESCC, | |
704 | " OF3 AR,AL,TA1\n", | |
b1ca30fc ML |
705 | #endif |
706 | ||
8b12ec80 DS |
707 | #ifdef FORT |
708 | /* perform some implicit conversions XXX SHOULD FIX f77 FRONT END */ | |
709 | OPFLOAT, INAREG|INTAREG|FORCC, | |
710 | SAREG|AWD, TFLOAT, | |
711 | SAREG|AWD, TDOUBLE, | |
712 | NAREG|NASL, RESC1|RESCC, | |
713 | " cvtfd AL,A1\n OD2 AR,A1\n", | |
714 | ||
715 | OPFLOAT, INAREG|INTAREG|FORCC, | |
716 | SAREG|AWD, TDOUBLE, | |
717 | SAREG|AWD, TFLOAT, | |
718 | NAREG|NASR, RESC1|RESCC, | |
719 | " cvtfd AR,A1\n OD3 A1,AL,A1\n", | |
720 | #endif | |
721 | ||
b1ca30fc ML |
722 | /* Default actions for hard trees ... */ |
723 | ||
724 | # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" | |
725 | ||
726 | UNARY MUL, DF( UNARY MUL ), | |
727 | ||
728 | INCR, DF(INCR), | |
729 | ||
730 | DECR, DF(INCR), | |
731 | ||
732 | ASSIGN, DF(ASSIGN), | |
733 | ||
734 | STASG, DF(STASG), | |
735 | ||
736 | FLD, DF(FLD), | |
737 | ||
738 | OPLEAF, DF(NAME), | |
739 | ||
740 | OPLOG, FORCC, | |
741 | SANY, TANY, | |
742 | SANY, TANY, | |
743 | REWRITE, BITYPE, | |
744 | "", | |
745 | ||
746 | OPLOG, DF(NOT), | |
747 | ||
748 | COMOP, DF(COMOP), | |
749 | ||
750 | INIT, DF(INIT), | |
751 | ||
752 | OPUNARY, DF(UNARY MINUS), | |
753 | ||
b1ca30fc ML |
754 | ASG OPANY, DF(ASG PLUS), |
755 | ||
756 | OPANY, DF(BITYPE), | |
757 | ||
758 | FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" }; |