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