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