1 #ifndef lint 2 static char sccsid[] = "@(#)table.c 1.9 (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, FOREFF, 427 SFLD, TANY, 428 SAREG|AWD, TWORD, 429 NAREG|NASL, RNOP, 430 " shll $H,AR,A1\n andl2 M,A1\n andl2 N,AL\n\ 431 orl2 A1,AL\n", 432 433 ASSIGN, INAREG, 434 SFLD, TANY, 435 SAREG|AWD, TWORD, 436 NAREG|NASL, RESC1, 437 " shll $H,AR,A1\n andl2 M,A1\n andl2 N,AL\n\ 438 orl2 A1,AL\n shrl $H,A1,A1\n", 439 440 /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */ 441 UNARY MUL, FOREFF, 442 SCC, TANY, 443 SCC, TANY, 444 0, RNULL, 445 " help help help\n", 446 447 REG, INTEMP, 448 SANY, TANY, 449 SAREG, TDOUBLE, 450 2*NTEMP, RESC1, 451 " movl UR,U1\n movl AR,A1\n", 452 453 REG, INTEMP, 454 SANY, TANY, 455 SAREG, TANY, 456 NTEMP, RESC1, 457 " movl AR,A1\n", 458 459 REG, FORARG, 460 SANY, TANY, 461 SAREG, TFLOAT, 462 0, RNULL, 463 " pushl $0\n pushl AR\n", 464 465 REG, FORARG, 466 SANY, TANY, 467 SAREG, TDOUBLE, 468 0, RNULL, 469 " pushl UR\n pushl AR\n", 470 471 OPLEAF, FOREFF, 472 SANY, TANY, 473 SAREG|AWD, TANY, 474 0, RLEFT, 475 "", 476 477 OPLTYPE, INAREG|INTAREG, 478 SANY, TANY, 479 SZERO, TDOUBLE, 480 NAREG|NASR, RESC1, 481 " clrl U1\n clrl A1\n", 482 483 OPLTYPE, INAREG|INTAREG, 484 SANY, TANY, 485 SIREG, TDOUBLE, 486 NAREG|NASR, RESC1, 487 " ldd AR\n std A1\n", 488 489 OPLTYPE, INAREG|INTAREG, 490 SANY, TANY, 491 SAREG|SNAME|SOREG|SCON, TDOUBLE, 492 NAREG, RESC1, 493 " movl AR,A1\n movl UR,U1\n", 494 495 OPLTYPE, INAREG|INTAREG, 496 SANY, TANY, 497 SZERO, TANY, 498 NAREG|NASR, RESC1, 499 " clrl TA1\n", 500 501 OPLTYPE, INAREG|INTAREG, 502 SANY, TANY, 503 SAREG|AWD, TFLOAT, 504 NAREG|NASR, RESC1, 505 " movl AR,TA1\n", 506 507 OPLTYPE, INAREG|INTAREG, 508 SANY, TANY, 509 SANY, ANYFIXED, 510 NAREG|NASR, RESC1, 511 " ZU\n", 512 513 OPLTYPE, FORCC, 514 SANY, TANY, 515 SIREG, TDOUBLE, 516 0, RESCC, 517 " ldd AR\n tstd\n", 518 519 OPLTYPE, FORCC, 520 SANY, TANY, 521 SAREG|AWD, TFLOAT, 522 0, RESCC, 523 " ldf AR\n tstf\n", 524 525 OPLTYPE, FORCC, 526 SANY, TANY, 527 SAREG|AWD, TDOUBLE, 528 0, RESCC, 529 " ldd AR\n tstd\n", 530 531 OPLTYPE, FORCC, 532 SANY, TANY, 533 SANY, ANYFIXED, 534 0, RESCC, 535 " tstZR AR\n", 536 537 OPLTYPE, FORARG, 538 SANY, TANY, 539 SANY, TWORD, 540 0, RNULL, 541 " pushl AR\n", 542 543 OPLTYPE, FORARG, 544 SANY, TANY, 545 SANY, TCHAR|TSHORT, 546 0, RNULL, 547 " pushZR AR\n", 548 549 OPLTYPE, FORARG, 550 SANY, TANY, 551 SANY, TUCHAR|TUSHORT, 552 0, RNULL, 553 " movzZRl AR,-(sp)\n", 554 555 OPLTYPE, FORARG, 556 SANY, TANY, 557 SZERO, TFLOAT|TDOUBLE, 558 0, RNULL, 559 " pushl $0\n pushl $0\n", 560 561 OPLTYPE, FORARG, 562 SANY, TANY, 563 SIREG, TDOUBLE, 564 0, RNULL, 565 " ldd AR\n pushd\n", 566 567 OPLTYPE, FORARG, 568 SANY, TANY, 569 SAREG|AWD, TDOUBLE, 570 0, RNULL, 571 " pushl UR\n pushl AR\n", 572 573 OPLTYPE, FORARG, 574 SANY, TANY, 575 SAREG|AWD, TFLOAT, 576 0, RNULL, 577 " pushl $0\n pushl AR\n", 578 579 UNARY MINUS, INAREG|INTAREG|FORCC, 580 SAREG|AWD, ANYSIGNED|TUNSIGNED, 581 SANY, TANY, 582 NAREG|NASL, RESC1|RESCC, 583 " mnegZL AL,A1\n", 584 585 UNARY MINUS, INAREG|INTAREG|FORCC, 586 SAREG|AWD, TFLOAT|TDOUBLE, 587 SANY, TANY, 588 NAREG|NASL, RESC1|RESCC, 589 " lnZL AL\n stZL TA1\n", 590 591 COMPL, INAREG|INTAREG|FORCC, 592 SAREG|AWD, ANYSIGNED|TUNSIGNED, 593 SANY, TANY, 594 NAREG|NASL, RESC1|RESCC, 595 " mcomZL AL,A1\n", 596 597 COMPL, INAREG|INTAREG|FORCC, 598 SAREG|AWD, ANYFIXED, 599 SANY, TANY, 600 NAREG|NASL, RESC1|RESCC, 601 " cvtZLl AL,A1\n mcoml A1,A1\n", 602 603 AND, FORCC, 604 SAREG|AWD, TWORD, 605 SAREG|AWD, TWORD, 606 0, RESCC, 607 " bitl AR,AL\n", 608 609 AND, FORCC, 610 SAREG|AWD, TSHORT|TUSHORT, 611 SSCON, TWORD, 612 0, RESCC, 613 " bitw AR,AL\n", 614 615 AND, FORCC, 616 SAREG|AWD, TSHORT|TUSHORT, 617 SAREG|AWD, TSHORT|TUSHORT, 618 0, RESCC, 619 " bitw AR,AL\n", 620 621 AND, FORCC, 622 SAREG|AWD, TCHAR|TUCHAR, 623 SCCON, TWORD, 624 0, RESCC, 625 " bitb AR,AL\n", 626 627 AND, FORCC, 628 SAREG|AWD, TCHAR|TUCHAR, 629 SAREG|AWD, TCHAR|TUCHAR, 630 0, RESCC, 631 " bitb AR,AL\n", 632 633 ASG DIV, INAREG|FOREFF|FORCC, /* should have been done in mip */ 634 SAREG|AWD, ANYFIXED, 635 SONE, TWORD, 636 0, RLEFT|RESCC, 637 " tstZL AL\n", 638 639 ASG DIV, INAREG|FOREFF|FORCC, 640 SAREG|AWD, TUCHAR|TUSHORT, 641 SAREG|AWD, TUCHAR|TUSHORT, 642 2*NAREG, RLEFT|RESC1|RESCC, 643 "ZX OL2 A2,A1\n cvtlZL A1,AL\n", 644 645 ASG DIV, INAREG|FOREFF|FORCC, 646 SAREG|AWD, TWORD, 647 SAREG|AWD, TUNSIGNED, 648 3*NAREG|NEVEN, RLEFT|RESCC, 649 "ZM OE AR,A1,A2,A3\n movl A2,AL\n", 650 651 DIV, INAREG|INTAREG|FORCC, 652 SAREG|AWD, TUCHAR|TUSHORT, 653 SAREG|AWD, TUCHAR|TUSHORT, 654 2*NAREG, RESC1|RESCC, 655 "ZX OL2 A2,A1\n", 656 657 DIV, INAREG|INTAREG|FORCC, 658 SAREG|AWD, TWORD, 659 SAREG|AWD, TUNSIGNED, 660 3*NAREG|NEVEN, RESC2|RESCC, 661 "ZM OE AR,A1,A2,A3\n", 662 663 ASG MOD, INAREG|FOREFF, 664 SAREG|AWD, ANYFIXED, 665 SONE, TWORD, 666 0, RLEFT, 667 " clrZL AL\n", 668 669 MOD, INAREG|INTAREG, 670 STAREG, TWORD, 671 SONE, TWORD, 672 0, RLEFT, 673 " clrl AL\n", 674 675 MOD, INAREG|INTAREG, 676 SAREG|AWD, ANYFIXED, 677 SONE, TWORD, 678 0, RESC1, 679 " clrl A1\n", 680 681 ASG MOD, INAREG|FOREFF, 682 SAREG|AWD, TWORD, 683 SAREG|AWD, TWORD, 684 3*NAREG|NEVEN, RLEFT, 685 "ZM OE AR,A1,A2,A3\n movl A3,AL\n", 686 687 MOD, INAREG|INTAREG, 688 SAREG|AWD, TWORD, 689 SAREG|AWD, TWORD, 690 3*NAREG|NEVEN, RESC3, 691 "ZM OE AR,A1,A2,A3\n", 692 693 ASG MUL, INAREG|FOREFF|FORCC, 694 SAREG|AWD, TCHAR|TUCHAR, 695 SAREG|AWD, TCHAR|TUCHAR, 696 2*NAREG, RLEFT|RESCC, 697 "ZX OL2 A2,A1\n cvtlb A1,AL\n", 698 699 ASG MUL, INAREG|FOREFF|FORCC, 700 SAREG|AWD, TUNSIGNED, 701 SAREG|AWD, TUNSIGNED|TINT, 702 NAREG|NEVEN, RLEFT|RESCC, 703 " emul AR,AL,$0,A1\n movl U1,AL\n", 704 705 ASG MUL, INAREG|FOREFF|FORCC, 706 SAREG|AWD, TUNSIGNED|TINT, 707 SAREG|AWD, TUNSIGNED, 708 NAREG|NEVEN, RLEFT|RESCC, 709 " emul AR,AL,$0,A1\n movl U1,AL\n", 710 711 ASG OPMUL, INAREG|FOREFF|FORCC, 712 SAREG|AWD, TWORD, 713 SAREG|AWD, TWORD, 714 0, RLEFT|RESCC, 715 " OL2 AR,AL\n", 716 717 MUL, INAREG|INTAREG|FORCC, 718 STAREG, TUNSIGNED, 719 SAREG|AWD, TUNSIGNED|TINT, 720 NAREG|NEVEN, RLEFT|RESCC, 721 " emul AR,AL,$0,A1\n movl U1,AL\n", 722 723 MUL, INAREG|INTAREG|FORCC, 724 STAREG, TUNSIGNED|TINT, 725 SAREG|AWD, TUNSIGNED, 726 NAREG|NEVEN, RLEFT|RESCC, 727 " emul AR,AL,$0,A1\n movl U1,AL\n", 728 729 OPMUL, INAREG|INTAREG|FORCC, 730 STAREG, TWORD, 731 SAREG|AWD, TWORD, 732 0, RLEFT|RESCC, 733 " OL2 AR,AL\n", 734 735 MUL, INAREG|INTAREG|FORCC, 736 SAREG|AWD, TCHAR|TUCHAR, 737 SAREG|AWD, TCHAR|TUCHAR, 738 2*NAREG, RESC1|RESCC, 739 "ZX mull2 A2,A1\n", 740 741 MUL, INAREG|INTAREG|FORCC, 742 SAREG|AWD, TUNSIGNED, 743 SAREG|AWD, TUNSIGNED|TINT, 744 NAREG|NEVEN, RESC1|RESCC, 745 " emul AR,AL,$0,A1\n movl U1,A1\n", 746 747 MUL, INAREG|INTAREG|FORCC, 748 SAREG|AWD, TUNSIGNED|TINT, 749 SAREG|AWD, TUNSIGNED, 750 NAREG|NEVEN, RESC1|RESCC, 751 " emul AR,AL,$0,A1\n movl U1,A1\n", 752 753 OPMUL, INAREG|INTAREG|FORCC, 754 SAREG|AWD, TWORD, 755 SAREG|AWD, TWORD, 756 NAREG|NASL|NASR, RESC1|RESCC, 757 " OL3 AR,AL,A1\n", 758 759 ASG PLUS, INAREG|FOREFF|FORCC, 760 SAREG, TWORD, 761 SONE, TINT, 762 0, RLEFT|RESCC, 763 " incZL AL\n", 764 765 ASG PLUS, INAREG|FOREFF|FORCC, 766 AWD, ANYFIXED, 767 SONE, TINT, 768 0, RLEFT|RESCC, 769 " incZL AL\n", 770 771 ASG MINUS, INAREG|FOREFF|FORCC, 772 SAREG, TWORD, 773 SONE, TINT, 774 0, RLEFT|RESCC, 775 " decZL AL\n", 776 777 ASG MINUS, INAREG|FOREFF|FORCC, 778 AWD, ANYFIXED, 779 SONE, TINT, 780 0, RLEFT|RESCC, 781 " decZL AL\n", 782 783 PLUS, INAREG|INTAREG|FORCC, 784 STAREG, TWORD, 785 SONE, TWORD, 786 0, RLEFT|RESCC, 787 " incZL AL\n", 788 789 MINUS, INAREG|INTAREG|FORCC, 790 STAREG, TWORD, 791 SONE, TWORD, 792 0, RLEFT|RESCC, 793 " decZL AL\n", 794 795 ASG OPSIMP, INAREG|FOREFF|FORCC, 796 SAREG|AWD, TWORD, 797 SAREG|AWD, TWORD, 798 0, RLEFT|RESCC, 799 " OL2 AR,AL\n", 800 801 ASG OPSIMP, INAREG|FOREFF|FORCC, 802 SAREG, TWORD, 803 SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR, 804 0, RLEFT|RESCC, 805 " OL2 AR,AL\n", 806 807 ASG OPSIMP, INAREG|FOREFF|FORCC, 808 AWD, TSHORT|TUSHORT, 809 SAREG|AWD, TSHORT|TUSHORT, 810 0, RLEFT|RESCC, 811 " OW2 AR,AL\n", 812 813 ASG OPSIMP, INAREG|FOREFF|FORCC, 814 AWD, TSHORT|TUSHORT, 815 SSCON, TWORD, 816 0, RLEFT|RESCC, 817 " OW2 AR,AL\n", 818 819 ASG OPSIMP, INAREG|FOREFF|FORCC, 820 AWD, TCHAR|TUCHAR, 821 SAREG|AWD, TCHAR|TUCHAR, 822 0, RLEFT|RESCC, 823 " OB2 AR,AL\n", 824 825 ASG OPSIMP, INAREG|FOREFF|FORCC, 826 AWD, TCHAR|TUCHAR, 827 SCCON, TWORD, 828 0, RLEFT|RESCC, 829 " OB2 AR,AL\n", 830 831 OPSIMP, INAREG|INTAREG|FORCC, 832 STAREG, ANYFIXED, 833 SAREG|AWD, TWORD, 834 0, RLEFT|RESCC, 835 " OL2 AR,AL\n", 836 837 OPSIMP, INAREG|INTAREG|FORCC, 838 SAREG|AWD, TWORD, 839 SAREG|AWD, TWORD, 840 NAREG|NASL|NASR, RESC1|RESCC, 841 " OL3 AR,AL,A1\n", 842 843 ASG OPSIMP, INAREG|FOREFF, 844 SAREG|AWD, TFLOAT|TDOUBLE, 845 SZERO, TANY, 846 0, RLEFT, 847 "", 848 849 ASG MUL, INAREG|FOREFF|FORCC, 850 SIREG, TDOUBLE, 851 SZERO, TANY, 852 0, RLEFT|RESCC, 853 " cvld $0\n std AL\n", 854 855 ASG MUL, INAREG|FOREFF|FORCC, 856 SAREG|SNAME|SOREG, TDOUBLE, 857 SZERO, TANY, 858 0, RLEFT|RESCC, 859 " clrl UL\n clrl AL\n", 860 861 ASG MUL, INAREG|FOREFF|FORCC, 862 SAREG|AWD, TFLOAT, 863 SZERO, TANY, 864 0, RLEFT|RESCC, 865 " clrl TAL\n", 866 867 ASG OPFLOAT, INAREG|FOREFF|FORCC, 868 SAREG|AWD, TFLOAT, 869 SAREG|AWD, TFLOAT, 870 0, RLEFT|RESCC, 871 " ldf AL\n OF AR\n stf TAL\n", 872 873 ASG OPFLOAT, INAREG|FOREFF|FORCC, 874 SAREG|AWD, TDOUBLE, 875 SAREG|AWD, TDOUBLE, 876 0, RLEFT|RESCC, 877 " ldd AL\n OD AR\n std AL\n", 878 879 ASG OPFLOAT, INAREG|FOREFF, 880 SAREG|AWD, ANYFIXED, 881 SAREG|AWD, TDOUBLE, 882 NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */ 883 " ZG\n", 884 885 OPSIMP, INAREG|INTAREG, 886 SAREG, TFLOAT|TDOUBLE, 887 SZERO, TANY, 888 0, RLEFT, 889 #if defined(FORT) || defined(SPRECC) 890 "T", 891 #else 892 "", 893 #endif 894 895 OPSIMP, INAREG|INTAREG|FORCC, 896 AWD, TFLOAT, 897 SZERO, TANY, 898 NAREG, RESC1|RESCC, 899 " movl AL,A1\n", 900 901 OPSIMP, INAREG|INTAREG|FORCC, 902 AWD, TDOUBLE, 903 SZERO, TANY, 904 NAREG, RESC1|RESCC, 905 " movl UL,U1\n movl AL,A1\n", 906 907 MUL, INAREG|INTAREG|FORCC, 908 SAREG|AWD, TDOUBLE, 909 SZERO, TANY, 910 NAREG|NASR, RESC1|RESCC, 911 " clrl U1\n clrl A1\n", 912 913 MUL, INAREG|INTAREG|FORCC, 914 SAREG|AWD, TFLOAT, 915 SZERO, TANY, 916 NAREG|NASR, RESC1|RESCC, 917 " clrl TA1\n", 918 919 OPFLOAT, INAREG|INTAREG|FORCC, 920 SAREG|AWD, TFLOAT, 921 SAREG|AWD, TFLOAT, 922 NAREG|NASL|NASR, RESC1|RESCC, 923 " ldf AL\n OF AR\n stf TA1\n", 924 925 OPFLOAT, INAREG|INTAREG|FORCC, 926 SZERO, TANY, 927 SAREG|AWD, TDOUBLE, 928 NAREG, RESC1|RESCC, 929 "\tclrl\tA1\n\tclrl\tU1\n\tldd\tA1\n\tOD\tAR\n\tstd\tA1\n", 930 931 OPFLOAT, INAREG|INTAREG|FORCC, 932 SAREG|AWD, TDOUBLE, 933 SAREG|AWD, TDOUBLE, 934 NAREG|NASL|NASR, RESC1|RESCC, 935 " ldd AL\n OD AR\n std A1\n", 936 937 /* Default actions for hard trees ... */ 938 939 # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" 940 941 UNARY MUL, DF( UNARY MUL ), 942 943 INCR, DF(INCR), 944 945 DECR, DF(INCR), 946 947 ASSIGN, DF(ASSIGN), 948 949 STASG, DF(STASG), 950 951 FLD, DF(FLD), 952 953 OPLEAF, DF(NAME), 954 955 OPLOG, FORCC, 956 SANY, TANY, 957 SANY, TANY, 958 REWRITE, BITYPE, 959 "", 960 961 OPLOG, DF(NOT), 962 963 COMOP, DF(COMOP), 964 965 INIT, DF(INIT), 966 967 OPUNARY, DF(UNARY MINUS), 968 969 970 ASG OPANY, DF(ASG PLUS), 971 972 OPANY, DF(BITYPE), 973 974 FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" }; 975