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