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