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