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