1 #ifndef lint 2 static char sccsid[] = "@(#)table.c 1.3 (Berkeley) 07/27/86"; 3 #endif 4 5 # include "pass2.h" 6 /* special shapes (SSOREG,SZERO etc.) shouldn't be or-ed */ 7 # define AWD SNAME|SOREG|SCON|STARNM|STARREG 8 /* tbl */ 9 # define ANYSIGNED TPOINT|TINT|TSHORT|TCHAR 10 # define ANYUSIGNED TUNSIGNED|TUSHORT|TUCHAR 11 # define ANYFIXED ANYSIGNED|ANYUSIGNED 12 # define TWORD TINT|TUNSIGNED|TPOINT 13 /* tbl */ 14 15 struct optab table[] = { 16 17 PCONV, INAREG|INTAREG, 18 SAREG|AWD, TCHAR|TSHORT, 19 SANY, TPOINT, 20 NAREG|NASL, RESC1, 21 " cvtZLl AL,A1\n", 22 23 PCONV, INAREG|INTAREG, 24 SAREG|AWD, TUCHAR|TUSHORT, 25 SANY, TPOINT, 26 NAREG|NASL, RESC1, 27 " movzZLl AL,A1\n", 28 29 /* the following entry is to fix a problem with 30 the manner that the first pass handles the 31 type of a shift expression */ 32 PCONV, INAREG|INTAREG, 33 SAREG|AWD, TINT|TUNSIGNED, 34 SANY, TPOINT, 35 NAREG|NASL, RLEFT, 36 "", 37 38 SCONV, INAREG|INTAREG|FORCC, 39 SAREG|AWD, TDOUBLE, 40 SANY, TFLOAT, 41 NAREG|NASL, RESC1|RESCC, 42 " ldd AL\n cvdf\n stf TA1\n", 43 44 SCONV, INAREG|INTAREG|FORCC, 45 SAREG|AWD, TFLOAT, 46 SANY, TDOUBLE, 47 NAREG|NASL, RESC1|RESCC, 48 " ldfd AL\n std A1\n", 49 50 SCONV, INAREG|INTAREG|FORCC, 51 SAREG|AWD, TINT|TUNSIGNED, 52 SANY, TFLOAT|TDOUBLE, 53 NAREG|NASL, RESC1|RESCC, 54 " cvlZR AL\n stZR TA1\n", 55 56 SCONV, INAREG|INTAREG|FORCC, 57 SAREG|AWD, TFLOAT|TDOUBLE, 58 SANY, ANYFIXED, 59 NAREG|NASL, RESC1|RESCC, 60 " ldZL AL\n cvZLl A1\n", 61 62 /* cast to longer types */ 63 SCONV, INAREG|INTAREG|FORCC, 64 SAREG|AWD, TCHAR, 65 SANY, TUSHORT, 66 NAREG|NASL, RESC1|RESCC, 67 " cvtbw AL,A1\n andl2 $0xffff,A1\n", 68 69 /* casts to shorter types */ 70 SCONV, INAREG|INTAREG|FORCC, 71 SAREG|SCON, ANYFIXED, 72 SANY, ANYUSIGNED, 73 NAREG|NASL, RESC1|RESCC, 74 " movzZRl AL,A1\n", 75 76 SCONV, INAREG|INTAREG|FORCC, 77 SNAME, ANYFIXED, 78 SANY, ANYUSIGNED, 79 NAREG|NASL, RESC1|RESCC, 80 " movzZRl ZU,A1\n", 81 82 SCONV, INAREG|INTAREG|FORCC, 83 SSOREG, ANYFIXED, 84 SANY, ANYUSIGNED, 85 NAREG|NASL, RESC1|RESCC, 86 " movzZRl ZU,A1\n", 87 88 SCONV, INAREG|INTAREG|FORCC, 89 SAREG|SCON, ANYFIXED, 90 SANY, ANYFIXED, 91 NAREG|NASL, RESC1|RESCC, 92 " cvtZRl AL,A1\n", 93 94 SCONV, INAREG|INTAREG|FORCC, 95 SNAME, ANYFIXED, 96 SANY, ANYFIXED, 97 NAREG|NASL, RESC1|RESCC, 98 " cvtZRl ZU,A1\n", 99 100 SCONV, INAREG|INTAREG|FORCC, 101 SSOREG, ANYFIXED, 102 SANY, ANYFIXED, 103 NAREG|NASL, RESC1|RESCC, 104 " cvtZRl ZU,A1\n", 105 106 INIT, FOREFF, 107 SCON, TANY, 108 SANY, TWORD, 109 0, RNOP, 110 " .long CL\n", 111 112 INIT, FOREFF, 113 SCON, TANY, 114 SANY, TSHORT|TUSHORT, 115 0, RNOP, 116 " .word CL\n", 117 118 INIT, FOREFF, 119 SCON, TANY, 120 SANY, TCHAR|TUCHAR, 121 0, RNOP, 122 " .byte CL\n", 123 124 /* for the use of fortran only */ 125 126 GOTO, FOREFF, 127 SCON, TANY, 128 SANY, TANY, 129 0, RNOP, 130 " jbr CL\n", 131 132 GOTO, FOREFF, 133 AWD, TANY, 134 SANY, TANY, 135 0, RNOP, 136 " jmp *AL\n", 137 138 GOTO, FOREFF, 139 SAREG, TANY, 140 SANY, TANY, 141 0, RNOP, 142 " jmp (AL)\n", 143 144 STARG, FORARG, 145 SCON|SOREG, TANY, 146 SANY, TANY, 147 NTEMP+2*NAREG, RESC3, 148 "ZS", 149 150 STASG, FORARG, 151 SNAME|SOREG, TANY, 152 SCON|SAREG, TANY, 153 0, RNULL, 154 " ZT\nZS", 155 156 STASG, FOREFF, 157 SNAME|SOREG, TANY, 158 SCON|SAREG, TANY, 159 0, RNOP, 160 "ZS", 161 162 STASG, INAREG, 163 SNAME|SOREG, TANY, 164 SCON, TANY, 165 NAREG, RESC1, 166 "ZS movl AR,A1\n", 167 168 STASG, INAREG, 169 SNAME|SOREG, TANY, 170 SAREG, TANY, 171 0, RRIGHT, 172 " pushl AR\nZS movl (sp)+,AR\n", 173 174 OPLOG, FORCC, 175 SAREG|AWD, TWORD, 176 SAREG|AWD, TWORD, 177 0, RESCC, 178 " cmpl AL,AR\nZP", 179 180 OPLOG, FORCC, 181 SAREG|AWD, TSHORT|TUSHORT, 182 SCON , TUSHORT, 183 NAREG, RESCC, 184 " movzwl AL,A1\n cmpw A1,AR\nZP", 185 OPLOG, FORCC, 186 SAREG|AWD, TSHORT|TUSHORT, 187 SAREG|AWD, TSHORT|TUSHORT, 188 0, RESCC, 189 " cmpw AL,AR\nZP", 190 191 OPLOG, FORCC, 192 SAREG|AWD, TCHAR|TUCHAR, 193 SCON , TUCHAR, 194 NAREG, RESCC, 195 " movzbl AL,A1\n cmpb A1,AR\nZP", 196 197 OPLOG, FORCC, 198 SAREG|AWD, TCHAR|TUCHAR, 199 SAREG|AWD, TCHAR|TUCHAR, 200 0, RESCC, 201 " cmpb AL,AR\nZP", 202 203 OPLOG, FORCC, 204 SAREG|AWD, TSHORT|TUSHORT, 205 SSCON, TANY, 206 0, RESCC, 207 " cmpw AL,AR\nZP", 208 209 210 OPLOG, FORCC, 211 SAREG|AWD, TSHORT|TUSHORT, 212 SAREG|AWD, TSHORT|TUSHORT, 213 0, RESCC, 214 " cmpw AL,AR\nZP", 215 216 OPLOG, FORCC, 217 SAREG|AWD, TCHAR|TUCHAR, 218 SAREG|AWD, TCHAR|TUCHAR, 219 0, RESCC, 220 " cmpb AL,AR\nZP", 221 222 OPLOG, FORCC, 223 SAREG|AWD, TSHORT|TUSHORT, 224 SSCON, TANY, 225 0, RESCC, 226 " cmpw AL,AR\nZP", 227 228 OPLOG, FORCC, 229 SAREG|AWD, TCHAR|TUCHAR, 230 SCCON, TANY, 231 0, RESCC, 232 " cmpb AL,AR\nZP", 233 234 OPLOG, FORCC, 235 SAREG|AWD, TFLOAT, 236 SAREG|AWD, TFLOAT, 237 0, RESCC, 238 " cmpZL2 AL,AR\nZP", 239 240 OPLOG, FORCC, 241 SZERO, TDOUBLE, 242 SAREG|AWD, TDOUBLE, 243 0, RESCC, 244 " cmpf2 AL,AR\nZP", 245 246 OPLOG, FORCC, 247 SAREG|AWD, TDOUBLE, 248 SAREG|AWD, TDOUBLE, 249 0, RESCC, 250 " cmpZL2 AL,AR\nZP", 251 252 CCODES, INAREG|INTAREG, 253 SANY, TANY, 254 SANY, TANY, 255 NAREG, RESC1, 256 " movl $1,A1\nZN", 257 258 UNARY CALL, INAREG|INTAREG, 259 SCON, TANY, 260 SANY, TANY, 261 NAREG|NASL, RESC1, /* should be register 0 */ 262 " ZC,CL\n", 263 264 UNARY CALL, INAREG|INTAREG, 265 SAREG, TANY, 266 SANY, TANY, 267 NAREG|NASL, RESC1, /* should be 0 */ 268 " ZC,(AL)\n", 269 270 UNARY CALL, INAREG|INTAREG, 271 SNAME, TANY, 272 SANY, TANY, 273 NAREG|NASL, RESC1, /* really reg 0 */ 274 " ZC,*AL\n", 275 276 UNARY CALL, INAREG|INTAREG, 277 SSOREG, TANY, 278 SANY, TANY, 279 NAREG|NASL, RESC1, /* really reg 0 */ 280 " ZC,*AL\n", 281 282 FORTCALL, INAREG|INTAREG, 283 SCON, TANY, 284 SAREG|AWD, TFLOAT, 285 NAREG|NASL|NASR, RESC1, 286 " ldf AR\n CLf\n stf TA1\n", 287 288 ASG OPSHFT, INAREG|FOREFF|FORCC, 289 SAREG|AWD, TWORD, 290 SAREG|SCON, ANYFIXED, 291 0, RLEFT|RESCC, 292 " ZH AR,AL,AL\n", 293 294 ASG OPSHFT, INAREG|FOREFF|FORCC, 295 SAREG|AWD, TWORD, 296 AWD, TCHAR|TUCHAR, 297 0, RLEFT|RESCC, 298 " ZH AR,AL,AL\n", 299 300 ASG OPSHFT, INAREG|FOREFF|FORCC, 301 SAREG|AWD, TWORD, 302 AWD, ANYFIXED, 303 NAREG, RLEFT|RESCC, 304 " ZB AR,A1\n ZH A1,AL,AL\n", 305 306 OPSHFT, INAREG|INTAREG|FORCC, 307 SAREG|AWD, TWORD, 308 SAREG|SCON, ANYFIXED, 309 NAREG|NASL|NASR, RESC1|RESCC, 310 " ZH AR,AL,A1\n", 311 312 OPSHFT, INAREG|INTAREG|FORCC, 313 SAREG|AWD, TWORD, 314 AWD, TCHAR|TUCHAR, 315 NAREG|NASL|NASR, RESC1|RESCC, 316 " ZH AR,AL,A1\n", 317 318 OPSHFT, INAREG|INTAREG|FORCC, 319 SAREG|AWD, TWORD, 320 AWD, ANYFIXED, 321 NAREG|NASR, RESC1|RESCC, 322 " ZB AR,A1\n ZH A1,AL,A1\n", 323 324 INCR, FOREFF, 325 AWD, TWORD, 326 SCON, TANY, 327 0, RLEFT, 328 " ZE\n", 329 330 DECR, FOREFF, 331 AWD, TWORD, 332 SCON, TANY, 333 0, RLEFT, 334 " ZE\n", 335 336 INCR, FOREFF, 337 SAREG, TWORD, 338 SCON, TANY, 339 0, RLEFT, 340 " ZE\n", 341 342 DECR, FOREFF, 343 SAREG, TWORD, 344 SCON, TANY, 345 0, RLEFT, 346 " ZE\n", 347 348 /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */ 349 350 INCR, INAREG|INTAREG, 351 AWD, TANY, 352 SCON, TANY, 353 NAREG, RESC1, 354 " ZD\n", 355 356 DECR, INAREG|INTAREG, 357 AWD, TANY, 358 SCON, TANY, 359 NAREG, RESC1, 360 " ZD\n", 361 362 INCR, INAREG|INTAREG, 363 SAREG, TWORD, 364 SCON, TANY, 365 NAREG, RESC1, 366 " ZD\n", 367 368 DECR, INAREG|INTAREG, 369 SAREG, TWORD, 370 SCON, TANY, 371 NAREG, RESC1, 372 " ZD\n", 373 374 ASSIGN, INAREG|FOREFF|FORCC, 375 SIREG, TDOUBLE, 376 SZERO, TANY, 377 0, RLEFT|RESCC, 378 " cvld $0\n std AL\n", 379 380 ASSIGN, INAREG|FOREFF|FORCC, 381 SAREG|SNAME|SOREG, TDOUBLE, 382 SZERO, TANY, 383 0, RLEFT|RESCC, 384 " clrl UL\n clrl AL\n", 385 386 ASSIGN, INAREG|FOREFF|FORCC, 387 SAREG|AWD, TDOUBLE, 388 SIREG, TDOUBLE, 389 0, RLEFT|RRIGHT|RESCC, 390 " ldd AR\n std AL\n", 391 392 ASSIGN, INAREG|FOREFF|FORCC, 393 SIREG, TDOUBLE, 394 SAREG|AWD, TDOUBLE, 395 0, RLEFT|RRIGHT|RESCC, 396 " ldd AR\n std AL\n", 397 398 ASSIGN, INAREG|FOREFF|FORCC, 399 SAREG|SNAME|SOREG, TDOUBLE, 400 SAREG|SNAME|SOREG, TDOUBLE, 401 0, RLEFT|RRIGHT|RESCC, 402 " movl UR,UL\n movl AR,AL\n", 403 404 ASSIGN, INAREG|FOREFF|FORCC, 405 SAREG|AWD, TFLOAT, 406 SZERO, TANY, 407 0, RLEFT|RESCC, 408 " clrl TAL\n", 409 410 ASSIGN, INAREG|FOREFF|FORCC, 411 SAREG|AWD, TFLOAT, 412 SAREG|AWD, TFLOAT, 413 0, RLEFT|RRIGHT|RESCC, 414 " movl AR,TAL\n", 415 416 ASSIGN, INAREG|FOREFF|FORCC, 417 SAREG|AWD, ANYFIXED, 418 SAREG|AWD, ANYFIXED, 419 0, RLEFT|RRIGHT|RESCC, 420 " ZA\n", 421 422 ASSIGN, INAREG|FOREFF, 423 SFLD, TANY, 424 SZERO, TANY, 425 0, RRIGHT, 426 " andl2 N,AL\n", 427 428 ASSIGN, INAREG|FOREFF, 429 SFLD, TANY, 430 SCON, TANY, 431 0, RRIGHT, 432 " andl2 N,AL\n orl2 ZF,AL\n", 433 434 ASSIGN, INAREG|FOREFF, 435 SFLD, TANY, 436 SAREG|AWD, TWORD, 437 NAREG|NASL, RRIGHT, 438 " shll $H,AR,A1\n andl2 M,A1\n andl2 N,AL\n\ 439 orl2 A1,AL\n", 440 441 /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */ 442 UNARY MUL, FOREFF, 443 SCC, TANY, 444 SCC, TANY, 445 0, RNULL, 446 " help help help\n", 447 448 REG, INTEMP, 449 SANY, TANY, 450 SAREG, TDOUBLE, 451 2*NTEMP, RESC1, 452 " movl UR,U1\n movl AR,A1\n", 453 454 REG, INTEMP, 455 SANY, TANY, 456 SAREG, TANY, 457 NTEMP, RESC1, 458 " movl AR,A1\n", 459 460 REG, FORARG, 461 SANY, TANY, 462 SAREG, TFLOAT, 463 0, RNULL, 464 " pushl $0\n pushl AR\n", 465 466 REG, FORARG, 467 SANY, TANY, 468 SAREG, TDOUBLE, 469 0, RNULL, 470 " pushl UR\n pushl AR\n", 471 472 OPLEAF, FOREFF, 473 SANY, TANY, 474 SAREG|AWD, TANY, 475 0, RLEFT, 476 "", 477 478 OPLTYPE, INAREG|INTAREG, 479 SANY, TANY, 480 SZERO, TDOUBLE, 481 NAREG|NASR, RESC1, 482 " clrl U1\n clrl A1\n", 483 484 OPLTYPE, INAREG|INTAREG, 485 SANY, TANY, 486 SIREG, TDOUBLE, 487 NAREG|NASR, RESC1, 488 " ldd AR\n std A1\n", 489 490 OPLTYPE, INAREG|INTAREG, 491 SANY, TANY, 492 SAREG|SNAME|SOREG|SCON, TDOUBLE, 493 NAREG, RESC1, 494 " movl AR,A1\n movl UR,U1\n", 495 496 OPLTYPE, INAREG|INTAREG, 497 SANY, TANY, 498 SZERO, TANY, 499 NAREG|NASR, RESC1, 500 " clrl TA1\n", 501 502 OPLTYPE, INAREG|INTAREG, 503 SANY, TANY, 504 SAREG|AWD, TFLOAT, 505 NAREG|NASR, RESC1, 506 " movl AR,TA1\n", 507 508 OPLTYPE, INAREG|INTAREG, 509 SANY, TANY, 510 SANY, ANYFIXED, 511 NAREG|NASR, RESC1, 512 " ZA\n", 513 514 OPLTYPE, FORCC, 515 SANY, TANY, 516 SIREG, TDOUBLE, 517 0, RESCC, 518 " ldd AR\n tstd\n", 519 520 OPLTYPE, FORCC, 521 SANY, TANY, 522 SAREG|AWD, TFLOAT, 523 0, RESCC, 524 " ldf AR\n tstf\n", 525 526 OPLTYPE, FORCC, 527 SANY, TANY, 528 SAREG|AWD, TDOUBLE, 529 0, RESCC, 530 " ldd AR\n tstd\n", 531 532 OPLTYPE, FORCC, 533 SANY, TANY, 534 SANY, ANYFIXED, 535 0, RESCC, 536 " tstZR AR\n", 537 538 OPLTYPE, FORARG, 539 SANY, TANY, 540 SANY, TWORD, 541 0, RNULL, 542 " pushl AR\n", 543 544 OPLTYPE, FORARG, 545 SANY, TANY, 546 SANY, TCHAR|TSHORT, 547 0, RNULL, 548 " pushZR AR\n", 549 550 OPLTYPE, FORARG, 551 SANY, TANY, 552 SANY, TUCHAR|TUSHORT, 553 0, RNULL, 554 " movzZRl AR,-(sp)\n", 555 556 OPLTYPE, FORARG, 557 SANY, TANY, 558 SZERO, TFLOAT|TDOUBLE, 559 0, RNULL, 560 " pushl $0\n pushl $0\n", 561 562 OPLTYPE, FORARG, 563 SANY, TANY, 564 SIREG, TDOUBLE, 565 0, RNULL, 566 " ldd AR\n pushd\n", 567 568 OPLTYPE, FORARG, 569 SANY, TANY, 570 SAREG|AWD, TDOUBLE, 571 0, RNULL, 572 " pushl UR\n pushl AR\n", 573 574 OPLTYPE, FORARG, 575 SANY, TANY, 576 SAREG|AWD, TFLOAT, 577 0, RNULL, 578 " pushl $0\n pushl AR\n", 579 580 UNARY MINUS, INAREG|INTAREG|FORCC, 581 SAREG|AWD, ANYSIGNED|TUNSIGNED, 582 SANY, TANY, 583 NAREG|NASL, RESC1|RESCC, 584 " mnegZL AL,A1\n", 585 586 UNARY MINUS, INAREG|INTAREG|FORCC, 587 SAREG|AWD, TFLOAT|TDOUBLE, 588 SANY, TANY, 589 NAREG|NASL, RESC1|RESCC, 590 " lnZL AL\n stZL TA1\n", 591 592 COMPL, INAREG|INTAREG|FORCC, 593 SAREG|AWD, ANYSIGNED|TUNSIGNED, 594 SANY, TANY, 595 NAREG|NASL, RESC1|RESCC, 596 " mcomZL AL,A1\n", 597 598 COMPL, INAREG|INTAREG|FORCC, 599 SAREG|AWD, ANYFIXED, 600 SANY, TANY, 601 NAREG|NASL, RESC1|RESCC, 602 " cvtZLl AL,A1\n mcoml A1,A1\n", 603 604 AND, FORCC, 605 SAREG|AWD, TWORD, 606 SAREG|AWD, TWORD, 607 0, RESCC, 608 " bitl AR,AL\n", 609 610 AND, FORCC, 611 SAREG|AWD, TSHORT|TUSHORT, 612 SSCON, TWORD, 613 0, RESCC, 614 " bitw AR,AL\n", 615 616 AND, FORCC, 617 SAREG|AWD, TSHORT|TUSHORT, 618 SAREG|AWD, TSHORT|TUSHORT, 619 0, RESCC, 620 " bitw AR,AL\n", 621 622 AND, FORCC, 623 SAREG|AWD, TCHAR|TUCHAR, 624 SCCON, TWORD, 625 0, RESCC, 626 " bitb AR,AL\n", 627 628 AND, FORCC, 629 SAREG|AWD, TCHAR|TUCHAR, 630 SAREG|AWD, TCHAR|TUCHAR, 631 0, RESCC, 632 " bitb AR,AL\n", 633 634 ASG DIV, INAREG|FOREFF|FORCC, /* should have been done in mip */ 635 SAREG|AWD, ANYFIXED, 636 SONE, TWORD, 637 0, RLEFT|RESCC, 638 " tstZL AL\n", 639 640 ASG DIV, INAREG|FOREFF|FORCC, 641 SAREG|AWD, TUCHAR|TUSHORT, 642 SAREG|AWD, TUCHAR|TUSHORT, 643 2*NAREG, RLEFT|RESC1|RESCC, 644 "ZX OL2 A2,A1\n cvtlZL A1,AL\n", 645 646 ASG DIV, INAREG|FOREFF|FORCC, 647 SAREG|AWD, TWORD, 648 SAREG|AWD, TUNSIGNED, 649 3*NAREG|NEVEN, RLEFT|RESCC, 650 "ZM OE AR,A1,A2,A3\n movl A2,AL\n", 651 652 DIV, INAREG|INTAREG|FORCC, 653 SAREG|AWD, TUCHAR|TUSHORT, 654 SAREG|AWD, TUCHAR|TUSHORT, 655 2*NAREG, RESC1|RESCC, 656 "ZX OL2 A2,A1\n", 657 658 DIV, INAREG|INTAREG|FORCC, 659 SAREG|AWD, TWORD, 660 SAREG|AWD, TUNSIGNED, 661 3*NAREG|NEVEN, RESC2|RESCC, 662 "ZM OE AR,A1,A2,A3\n", 663 664 ASG MOD, INAREG|FOREFF, 665 SAREG|AWD, ANYFIXED, 666 SONE, TWORD, 667 0, RLEFT, 668 " clrZL AL\n", 669 670 MOD, INAREG|INTAREG, 671 STAREG, TWORD, 672 SONE, TWORD, 673 0, RLEFT, 674 " clrl AL\n", 675 676 MOD, INAREG|INTAREG, 677 SAREG|AWD, ANYFIXED, 678 SONE, TWORD, 679 0, RESC1, 680 " clrl A1\n", 681 682 ASG MOD, INAREG|FOREFF, 683 SAREG|AWD, TWORD, 684 SAREG|AWD, TWORD, 685 3*NAREG|NEVEN, RLEFT, 686 "ZM OE AR,A1,A2,A3\n movl A3,AL\n", 687 688 MOD, INAREG|INTAREG, 689 SAREG|AWD, TWORD, 690 SAREG|AWD, TWORD, 691 3*NAREG|NEVEN, RESC3, 692 "ZM OE AR,A1,A2,A3\n", 693 694 ASG MUL, INAREG|FOREFF|FORCC, 695 SAREG|AWD, TCHAR|TUCHAR, 696 SAREG|AWD, TCHAR|TUCHAR, 697 2*NAREG, RLEFT|RESCC, 698 "ZX OL2 A2,A1\n cvtlb A1,AL\n", 699 700 ASG MUL, INAREG|FOREFF|FORCC, 701 SAREG|AWD, TUNSIGNED, 702 SAREG|AWD, TUNSIGNED|TINT, 703 NAREG|NEVEN, RLEFT|RESCC, 704 " emul AR,AL,$0,A1\n movl U1,AL\n", 705 706 ASG MUL, INAREG|FOREFF|FORCC, 707 SAREG|AWD, TUNSIGNED|TINT, 708 SAREG|AWD, TUNSIGNED, 709 NAREG|NEVEN, RLEFT|RESCC, 710 " emul AR,AL,$0,A1\n movl U1,AL\n", 711 712 ASG OPMUL, INAREG|FOREFF|FORCC, 713 SAREG|AWD, TWORD, 714 SAREG|AWD, TWORD, 715 0, RLEFT|RESCC, 716 " OL2 AR,AL\n", 717 718 MUL, INAREG|INTAREG|FORCC, 719 STAREG, TUNSIGNED, 720 SAREG|AWD, TUNSIGNED|TINT, 721 NAREG|NEVEN, RLEFT|RESCC, 722 " emul AR,AL,$0,A1\n movl U1,AL\n", 723 724 MUL, INAREG|INTAREG|FORCC, 725 STAREG, TUNSIGNED|TINT, 726 SAREG|AWD, TUNSIGNED, 727 NAREG|NEVEN, RLEFT|RESCC, 728 " emul AR,AL,$0,A1\n movl U1,AL\n", 729 730 OPMUL, INAREG|INTAREG|FORCC, 731 STAREG, TWORD, 732 SAREG|AWD, TWORD, 733 0, RLEFT|RESCC, 734 " OL2 AR,AL\n", 735 736 MUL, INAREG|INTAREG|FORCC, 737 SAREG|AWD, TCHAR|TUCHAR, 738 SAREG|AWD, TCHAR|TUCHAR, 739 2*NAREG, RESC1|RESCC, 740 "ZX mull2 A2,A1\n", 741 742 MUL, INAREG|INTAREG|FORCC, 743 SAREG|AWD, TUNSIGNED, 744 SAREG|AWD, TUNSIGNED|TINT, 745 NAREG|NEVEN, RESC1|RESCC, 746 " emul AR,AL,$0,A1\n movl U1,A1\n", 747 748 MUL, INAREG|INTAREG|FORCC, 749 SAREG|AWD, TUNSIGNED|TINT, 750 SAREG|AWD, TUNSIGNED, 751 NAREG|NEVEN, RESC1|RESCC, 752 " emul AR,AL,$0,A1\n movl U1,A1\n", 753 754 OPMUL, INAREG|INTAREG|FORCC, 755 SAREG|AWD, TWORD, 756 SAREG|AWD, TWORD, 757 NAREG|NASL|NASR, RESC1|RESCC, 758 " OL3 AR,AL,A1\n", 759 760 ASG PLUS, INAREG|FOREFF|FORCC, 761 SAREG, TWORD, 762 SONE, TINT, 763 0, RLEFT|RESCC, 764 " incZL AL\n", 765 766 ASG PLUS, INAREG|FOREFF|FORCC, 767 AWD, ANYFIXED, 768 SONE, TINT, 769 0, RLEFT|RESCC, 770 " incZL AL\n", 771 772 ASG MINUS, INAREG|FOREFF|FORCC, 773 SAREG, TWORD, 774 SONE, TINT, 775 0, RLEFT|RESCC, 776 " decZL AL\n", 777 778 ASG MINUS, INAREG|FOREFF|FORCC, 779 AWD, ANYFIXED, 780 SONE, TINT, 781 0, RLEFT|RESCC, 782 " decZL AL\n", 783 784 PLUS, INAREG|INTAREG|FORCC, 785 STAREG, TWORD, 786 SONE, TWORD, 787 0, RLEFT|RESCC, 788 " incZL AL\n", 789 790 MINUS, INAREG|INTAREG|FORCC, 791 STAREG, TWORD, 792 SONE, TWORD, 793 0, RLEFT|RESCC, 794 " decZL AL\n", 795 796 ASG OPSIMP, INAREG|FOREFF|FORCC, 797 SAREG|AWD, TWORD, 798 SAREG|AWD, TWORD, 799 0, RLEFT|RESCC, 800 " OL2 AR,AL\n", 801 802 ASG OPSIMP, INAREG|FOREFF|FORCC, 803 SAREG, TWORD, 804 SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR, 805 0, RLEFT|RESCC, 806 " OL2 AR,AL\n", 807 808 ASG OPSIMP, INAREG|FOREFF|FORCC, 809 AWD, TSHORT|TUSHORT, 810 SAREG|AWD, TSHORT|TUSHORT, 811 0, RLEFT|RESCC, 812 " OW2 AR,AL\n", 813 814 ASG OPSIMP, INAREG|FOREFF|FORCC, 815 AWD, TSHORT|TUSHORT, 816 SSCON, TWORD, 817 0, RLEFT|RESCC, 818 " OW2 AR,AL\n", 819 820 ASG OPSIMP, INAREG|FOREFF|FORCC, 821 AWD, TCHAR|TUCHAR, 822 SAREG|AWD, TCHAR|TUCHAR, 823 0, RLEFT|RESCC, 824 " OB2 AR,AL\n", 825 826 ASG OPSIMP, INAREG|FOREFF|FORCC, 827 AWD, TCHAR|TUCHAR, 828 SCCON, TWORD, 829 0, RLEFT|RESCC, 830 " OB2 AR,AL\n", 831 832 OPSIMP, INAREG|INTAREG|FORCC, 833 STAREG, ANYFIXED, 834 SAREG|AWD, TWORD, 835 0, RLEFT|RESCC, 836 " OL2 AR,AL\n", 837 838 OPSIMP, INAREG|INTAREG|FORCC, 839 SAREG|AWD, TWORD, 840 SAREG|AWD, TWORD, 841 NAREG|NASL|NASR, RESC1|RESCC, 842 " OL3 AR,AL,A1\n", 843 844 ASG OPSIMP, INAREG|FOREFF, 845 SAREG|AWD, TFLOAT|TDOUBLE, 846 SZERO, TANY, 847 0, RLEFT, 848 "", 849 850 ASG MUL, INAREG|FOREFF|FORCC, 851 SIREG, TDOUBLE, 852 SZERO, TANY, 853 0, RLEFT|RESCC, 854 " cvld $0\n std AL\n", 855 856 ASG MUL, INAREG|FOREFF|FORCC, 857 SAREG|SNAME|SOREG, TDOUBLE, 858 SZERO, TANY, 859 0, RLEFT|RESCC, 860 " clrl UL\n clrl AL\n", 861 862 ASG MUL, INAREG|FOREFF|FORCC, 863 SAREG|AWD, TFLOAT, 864 SZERO, TANY, 865 0, RLEFT|RESCC, 866 " clrl TAL\n", 867 868 ASG OPFLOAT, INAREG|FOREFF|FORCC, 869 SAREG|AWD, TFLOAT, 870 SAREG|AWD, TFLOAT, 871 0, RLEFT|RESCC, 872 " ldf AL\n OF AR\n stf TAL\n", 873 874 ASG OPFLOAT, INAREG|FOREFF|FORCC, 875 SAREG|AWD, TDOUBLE, 876 SAREG|AWD, TDOUBLE, 877 0, RLEFT|RESCC, 878 " ldd AL\n OD AR\n std AL\n", 879 880 OPSIMP, INAREG|INTAREG, 881 SAREG, TFLOAT|TDOUBLE, 882 SZERO, TANY, 883 0, RLEFT, 884 "T", 885 886 OPSIMP, INAREG|INTAREG|FORCC, 887 AWD, TFLOAT, 888 SZERO, TANY, 889 NAREG, RESC1|RESCC, 890 " movl AL,A1\n", 891 892 OPSIMP, INAREG|INTAREG|FORCC, 893 AWD, TDOUBLE, 894 SZERO, TANY, 895 NAREG, RESC1|RESCC, 896 " movl UL,U1\n movl AL,A1\n", 897 898 MUL, INAREG|INTAREG|FORCC, 899 SAREG|AWD, TDOUBLE, 900 SZERO, TANY, 901 NAREG|NASR, RESC1|RESCC, 902 " clrl U1\n clrl A1\n", 903 904 MUL, INAREG|INTAREG|FORCC, 905 SAREG|AWD, TFLOAT, 906 SZERO, TANY, 907 NAREG|NASR, RESC1|RESCC, 908 " clrl TA1\n", 909 910 OPFLOAT, INAREG|INTAREG|FORCC, 911 SAREG|AWD, TFLOAT, 912 SAREG|AWD, TFLOAT, 913 NAREG|NASL|NASR, RESC1|RESCC, 914 " ldf AL\n OF AR\n stf TA1\n", 915 916 OPFLOAT, INAREG|INTAREG|FORCC, 917 SZERO, TANY, 918 SAREG|AWD, TDOUBLE, 919 NAREG, RESC1|RESCC, 920 "\tclrl\tA1\n\tclrl\tU1\n\tldd\tA1\n\tOD\tAR\n\tstd\tA1\n", 921 922 OPFLOAT, INAREG|INTAREG|FORCC, 923 SAREG|AWD, TDOUBLE, 924 SAREG|AWD, TDOUBLE, 925 NAREG|NASL|NASR, RESC1|RESCC, 926 " ldd AL\n OD AR\n std A1\n", 927 928 /* Default actions for hard trees ... */ 929 930 # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" 931 932 UNARY MUL, DF( UNARY MUL ), 933 934 INCR, DF(INCR), 935 936 DECR, DF(INCR), 937 938 ASSIGN, DF(ASSIGN), 939 940 STASG, DF(STASG), 941 942 FLD, DF(FLD), 943 944 OPLEAF, DF(NAME), 945 946 OPLOG, FORCC, 947 SANY, TANY, 948 SANY, TANY, 949 REWRITE, BITYPE, 950 "", 951 952 OPLOG, DF(NOT), 953 954 COMOP, DF(COMOP), 955 956 INIT, DF(INIT), 957 958 OPUNARY, DF(UNARY MINUS), 959 960 961 ASG OPANY, DF(ASG PLUS), 962 963 OPANY, DF(BITYPE), 964 965 FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" }; 966