1 #ifndef lint 2 static char *sccsid ="@(#)table.c 1.13 (Berkeley) 01/08/86"; 3 #endif lint 4 5 # include "pass2.h" 6 7 # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG 8 # define AWD SNAME|SOREG|SCON|STARNM|STARREG 9 /* tbl */ 10 # define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR 11 # define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR 12 # define ANYFIXED ANYSIGNED|ANYUSIGNED 13 # define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG 14 # define NIAWD SNAME|SCON|STARNM 15 /* tbl */ 16 17 struct optab table[] = { 18 19 PCONV, INAREG|INTAREG, 20 SAREG|AWD, TCHAR|TSHORT, 21 SANY, TPOINT, 22 NAREG|NASL, RESC1, 23 " cvtZLl AL,A1\n", 24 25 PCONV, INAREG|INTAREG, 26 SAREG|AWD, TUCHAR|TUSHORT, 27 SANY, TPOINT, 28 NAREG|NASL, RESC1, 29 " movzZLl AL,A1\n", 30 31 /* the following entry is to fix a problem with 32 the manner that the first pass handles the 33 type of a shift expression */ 34 PCONV, INAREG|INTAREG, 35 SAREG|AWD, TINT|TUNSIGNED, 36 SANY, TPOINT, 37 NAREG|NASL, RLEFT, 38 "", 39 40 #if defined(FORT) || defined(SPRECC) 41 SCONV, INTAREG|FORCC, 42 SAREG|AWD, TDOUBLE, 43 SANY, TFLOAT, 44 NAREG|NASL, RESC1|RESCC, 45 " cvtdf AL,A1\n", 46 47 SCONV, INTAREG|FORCC, 48 SAREG|AWD, ANYSIGNED, 49 SANY, TFLOAT, 50 NAREG|NASL, RESC1|RESCC, 51 " cvtZLf AL,TA1\n", 52 53 SCONV, INTAREG|FORCC, 54 SAREG|AWD, TUCHAR|TUSHORT, 55 SANY, TFLOAT, 56 NAREG|NASL, RESC1|RESCC, 57 " movzZLl AL,A1\n cvtlf A1,TA1\n", 58 #endif 59 60 SCONV, INTAREG|FORCC, 61 SAREG|AWD, TUCHAR|TUSHORT, 62 SANY, TFLOAT|TDOUBLE, 63 NAREG|NASL, RESC1|RESCC, 64 " movzZLl AL,A1\n cvtld A1,A1\n", 65 66 /* take care of redundant conversions introduced by reclaim() */ 67 SCONV, INTAREG, 68 STAREG, TWORD, 69 SANY, TWORD, 70 0, RLEFT, 71 "", 72 73 SCONV, INTAREG|FORCC, 74 SAREG|AWD, TANY, 75 SANY, TANY, 76 NAREG|NASL, RESC1|RESCC, 77 " ZA\n", 78 79 80 INIT, FOREFF, 81 SCON, TANY, 82 SANY, TWORD, 83 0, RNOP, 84 " .long CL\n", 85 86 INIT, FOREFF, 87 SCON, TANY, 88 SANY, TSHORT|TUSHORT, 89 0, RNOP, 90 " .word CL\n", 91 92 INIT, FOREFF, 93 SCON, TANY, 94 SANY, TCHAR|TUCHAR, 95 0, RNOP, 96 " .byte CL\n", 97 98 /* for the use of fortran only */ 99 100 GOTO, FOREFF, 101 SCON, TANY, 102 SANY, TANY, 103 0, RNOP, 104 " jbr CL\n", 105 106 GOTO, FOREFF, 107 SNAME|SOREG, TANY, 108 SANY, TANY, 109 0, RNOP, 110 " jmp *AL\n", 111 112 GOTO, FOREFF, 113 SAREG, TANY, 114 SANY, TANY, 115 0, RNOP, 116 " jmp (AL)\n", 117 118 STARG, FORARG, 119 SCON|SOREG, TANY, 120 SANY, TANY, 121 0, RNULL, 122 " subl2 ZT,sp\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 FLD, INAREG|INTAREG, 143 SANY, TANY, 144 SFLD, ANYSIGNED, 145 NAREG|NASR, RESC1, 146 " extv $H,$S,AR,A1\n", 147 148 FLD, INAREG|INTAREG, 149 SANY, TANY, 150 SFLD, ANYUSIGNED, 151 NAREG|NASR, RESC1, 152 " extzv $H,$S,AR,A1\n", 153 154 FLD, FORARG, 155 SANY, TANY, 156 SFLD, ANYSIGNED, 157 0, RNULL, 158 " extv $H,$S,AR,-(sp)\n", 159 160 FLD, FORARG, 161 SANY, TANY, 162 SFLD, ANYUSIGNED, 163 0, RNULL, 164 " extzv $H,$S,AR,-(sp)\n", 165 166 OPLOG, FORCC, 167 SAREG|AWD, TWORD, 168 SAREG|AWD, TWORD, 169 0, RESCC, 170 " cmpl AL,AR\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 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, TSHORT|TUSHORT, 198 SSCON, TANY, 199 0, RESCC, 200 " cmpw AL,AR\nZP", 201 202 OPLOG, FORCC, 203 SAREG|AWD, TCHAR|TUCHAR, 204 SCCON, TANY, 205 0, RESCC, 206 " cmpb AL,AR\nZP", 207 208 OPLOG, FORCC, 209 SAREG|AWD, TDOUBLE, 210 SAREG|AWD, TDOUBLE, 211 0, RESCC, 212 " cmpd AL,AR\nZP", 213 214 OPLOG, FORCC, 215 SAREG|AWD, TDOUBLE, 216 SAREG|AWD, TFLOAT, 217 NAREG|NASR, RESCC, 218 " cvtfd AR,A1\n cmpd AL,A1\nZP", 219 220 OPLOG, FORCC, 221 SAREG|AWD, TFLOAT, 222 SAREG|AWD, TDOUBLE, 223 NAREG|NASL, RESCC, 224 " cvtfd AL,A1\n cmpd A1,AR\nZP", 225 226 OPLOG, FORCC, 227 SAREG|AWD, TFLOAT, 228 SAREG|AWD, TFLOAT, 229 0, RESCC, 230 " cmpf AL,AR\nZP", 231 232 CCODES, INAREG|INTAREG, 233 SANY, TANY, 234 SANY, TANY, 235 NAREG, RESC1, 236 " movl $1,A1\nZN", 237 238 UNARY CALL, INTAREG, 239 SCON, TANY, 240 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, 241 NAREG|NASL, RESC1, 242 " calls ZC,CL\n", 243 244 UNARY CALL, INTAREG, 245 SAREG, TANY, 246 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, 247 NAREG|NASL, RESC1, /* should be 0 */ 248 " calls ZC,(AL)\n", 249 250 UNARY CALL, INAREG|INTAREG, 251 SNAME, TANY, 252 SANY, TANY, 253 NAREG|NASL, RESC1, /* really reg 0 */ 254 " calls ZC,*AL\n", 255 256 UNARY CALL, INAREG|INTAREG, 257 SSOREG, TANY, 258 SANY, TANY, 259 NAREG|NASL, RESC1, /* really reg 0 */ 260 " calls ZC,*AL\n", 261 262 ASG RS, INAREG|FOREFF|FORCC, 263 SAREG, TWORD, 264 SCON, TINT, 265 0, RLEFT|RESCC, 266 " extzv AR,ZU,AL,AL\n", 267 268 ASG RS, INAREG|FOREFF|FORCC, 269 SAREG, TWORD, 270 SAREG, ANYFIXED, 271 NAREG, RLEFT|RESCC, 272 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", 273 274 ASG RS, INAREG|FOREFF|FORCC, 275 SAREG, TWORD, 276 SAREG|AWD, TWORD, 277 NAREG, RLEFT|RESCC, 278 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", 279 280 RS, INAREG|INTAREG|FORCC, 281 SAREG, TWORD, 282 SCON, TINT, 283 NAREG|NASL, RESC1|RESCC, 284 " extzv AR,ZU,AL,A1\n", 285 286 ASG LS, INAREG|FOREFF|FORCC, 287 SAREG|AWD, TWORD, 288 SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, 289 0, RLEFT|RESCC, 290 " ashl AR,AL,AL\n", 291 292 ASG LS, INAREG|FOREFF|FORCC, 293 SAREG|AWD, TWORD, 294 SSOREG, ANYSIGNED|ANYUSIGNED, 295 0, RLEFT|RESCC, 296 " ashl AR,AL,AL\n", 297 298 ASG LS, INAREG|FOREFF|FORCC, 299 SAREG|AWD, TWORD, 300 SOREG, ANYSIGNED|ANYUSIGNED, 301 NAREG, RLEFT|RESCC, 302 " ZB AR,A1\n ashl A1,AL,AL\n", 303 304 LS, INAREG|INTAREG|FORCC, 305 SAREG|AWD, TWORD, 306 SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, 307 NAREG|NASL|NASR, RESC1|RESCC, 308 " ashl AR,AL,A1\n", 309 310 LS, INAREG|INTAREG|FORCC, 311 SAREG|AWD, TWORD, 312 SSOREG, ANYSIGNED|ANYUSIGNED, 313 NAREG|NASL|NASR, RESC1|RESCC, 314 " ashl AR,AL,A1\n", 315 316 LS, INAREG|INTAREG|FORCC, 317 SAREG|AWD, TWORD, 318 SOREG, ANYSIGNED|ANYUSIGNED, 319 NAREG|NASR, RESC1|RESCC, 320 " ZB AR,A1\n ashl A1,AL,A1\n", 321 322 INCR, FOREFF, 323 AWD, TANY, 324 SCON, TANY, 325 0, RLEFT, 326 " ZE\n", 327 328 DECR, FOREFF, 329 AWD, TANY, 330 SCON, TANY, 331 0, RLEFT, 332 " ZE\n", 333 334 INCR, FOREFF, 335 SAREG, TWORD, 336 SCON, TANY, 337 0, RLEFT, 338 " ZE\n", 339 340 DECR, FOREFF, 341 SAREG, TWORD, 342 SCON, TANY, 343 0, RLEFT, 344 " ZE\n", 345 346 /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */ 347 348 INCR, INAREG|INTAREG, 349 AWD, TANY, 350 SCON, TANY, 351 NAREG, RESC1, 352 " ZD\n", 353 354 DECR, INAREG|INTAREG, 355 AWD, TANY, 356 SCON, TANY, 357 NAREG, RESC1, 358 " ZD\n", 359 360 INCR, INAREG|INTAREG, 361 SAREG, TWORD, 362 SCON, TANY, 363 NAREG, RESC1, 364 " ZD\n", 365 366 DECR, INAREG|INTAREG, 367 SAREG, TWORD, 368 SCON, TANY, 369 NAREG, RESC1, 370 " ZD\n", 371 372 ASSIGN, INAREG|FOREFF|FORCC, 373 SAREG|AWD, TDOUBLE, 374 SAREG|AWD, TUCHAR|TUSHORT, 375 NAREG|NASR, RLEFT|RESCC, 376 " movzZRl AR,A1\n cvtld A1,AL\n", 377 378 ASSIGN, INAREG|FOREFF|FORCC, 379 SAREG|AWD, TFLOAT, 380 SAREG|AWD, TUCHAR|TUSHORT, 381 NAREG|NASR, RLEFT|RESCC, 382 " movzZRl AR,A1\n cvtlf A1,AL\n", 383 384 ASSIGN, INAREG|FOREFF|FORCC, 385 SAREG|AWD, TANY, 386 SAREG|AWD, TANY, 387 0, RLEFT|RESCC, 388 " ZA\n", 389 390 ASSIGN, INAREG|FOREFF, 391 SFLD, TANY, 392 SAREG|AWD, TWORD, 393 0, RRIGHT, 394 " insv AR,$H,$S,AL\n", 395 396 ASSIGN, INAREG|FOREFF|FORCC, 397 SAREG|AWD, TWORD, 398 SFLD, ANYSIGNED, 399 0, RLEFT|RESCC, 400 " extv $H,$S,AR,AL\n", 401 402 ASSIGN, INAREG|FOREFF|FORCC, 403 SAREG|AWD, TWORD, 404 SFLD, ANYUSIGNED, 405 0, RLEFT|RESCC, 406 " extzv $H,$S,AR,AL\n", 407 408 /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */ 409 UNARY MUL, FOREFF, 410 SCC, TANY, 411 SCC, TANY, 412 0, RNULL, 413 " HELP HELP HELP\n", 414 415 REG, INTEMP, 416 SANY, TANY, 417 SAREG, TDOUBLE, 418 2*NTEMP, RESC1, 419 " movd AR,A1\n", 420 421 REG, INTEMP, 422 SANY, TANY, 423 SAREG, TANY, 424 NTEMP, RESC1, 425 " movZF AR,A1\n", 426 427 #if defined(FORT) || defined(SPRECC) 428 REG, FORARG, 429 SANY, TANY, 430 SAREG, TFLOAT, 431 0, RNULL, 432 " cvtfd AR,-(sp)\n", 433 434 REG, FORARG, 435 SANY, TANY, 436 SAREG, TDOUBLE, 437 0, RNULL, 438 " movZR AR,-(sp)\n", 439 #endif 440 441 OPLEAF, FOREFF, 442 SANY, TANY, 443 SAREG|AWD, TANY, 444 0, RLEFT, 445 "", 446 447 OPLTYPE, INAREG|INTAREG, 448 SANY, TANY, 449 SANY, TANY, 450 NAREG|NASR, RESC1, 451 " ZA\n", 452 453 OPLTYPE, FORCC, 454 SANY, TANY, 455 SANY, TANY, 456 0, RESCC, 457 " tstZR AR\n", 458 459 OPLTYPE, FORARG, 460 SANY, TANY, 461 SANY, TWORD, 462 0, RNULL, 463 " pushl AR\n", 464 465 OPLTYPE, FORARG, 466 SANY, TANY, 467 SANY, TCHAR|TSHORT, 468 0, RNULL, 469 " cvtZRl AR,-(sp)\n", 470 471 OPLTYPE, FORARG, 472 SANY, TANY, 473 SANY, TUCHAR|TUSHORT, 474 0, RNULL, 475 " movzZRl AR,-(sp)\n", 476 477 OPLTYPE, FORARG, 478 SANY, TANY, 479 SANY, TDOUBLE, 480 0, RNULL, 481 " movd AR,-(sp)\n", 482 483 OPLTYPE, FORARG, 484 SANY, TANY, 485 SANY, TFLOAT, 486 0, RNULL, 487 " cvtfd AR,-(sp)\n", 488 489 #if defined(FORT) || defined(SPRECC) 490 UNARY MINUS, INTAREG|FORCC, 491 SAREG|AWD, TFLOAT, 492 SANY, TANY, 493 NAREG|NASL, RESC1|RESCC, 494 " mnegZL TAL,A1\n", 495 496 #endif 497 498 UNARY MINUS, INTAREG|FORCC, 499 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE, 500 SANY, TANY, 501 NAREG|NASL, RESC1|RESCC, 502 " mnegZL AL,A1\n", 503 504 COMPL, INTAREG|FORCC, 505 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 506 SANY, TANY, 507 NAREG|NASL, RESC1|RESCC, 508 " mcomZL AL,A1\n", 509 510 COMPL, INTAREG|FORCC, 511 SAREG|AWD, ANYSIGNED|ANYUSIGNED, 512 SANY, TANY, 513 NAREG|NASL, RESC1|RESCC, 514 " cvtZLl AL,A1\n mcoml A1,A1\n", 515 516 AND, FORCC, 517 SAREG|AWD, TWORD, 518 SCON, TWORD, 519 0, RESCC, 520 " bitl ZZ,AL\n", 521 522 AND, FORCC, 523 SAREG|AWD, TSHORT|TUSHORT, 524 SSCON, TWORD, 525 0, RESCC, 526 " bitw ZZ,AL\n", 527 528 AND, FORCC, 529 SAREG|AWD, TCHAR|TUCHAR, 530 SCCON, TWORD, 531 0, RESCC, 532 " bitb ZZ,AL\n", 533 534 ASG AND, INAREG|FOREFF|FORCC, 535 SAREG, TWORD, 536 SCON, TWORD, 537 0, RLEFT|RESCC, 538 " bicl2 AR,AL\n", 539 540 ASG OPMUL, INAREG|FOREFF|FORCC, 541 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 542 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 543 0, RLEFT|RESCC, 544 " OL2 AR,AL\n", 545 546 OPMUL, INAREG|INTAREG|FORCC, 547 STAREG, TINT|TUNSIGNED|TLONG|TULONG, 548 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 549 0, RLEFT|RESCC, 550 " OL2 AR,AL\n", 551 552 OPMUL, INAREG|INTAREG|FORCC, 553 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 554 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 555 NAREG|NASL|NASR, RESC1|RESCC, 556 " OL3 AR,AL,A1\n", 557 558 ASG MOD, INAREG|INTAREG|FOREFF|FORCC, 559 SAREG, TINT|TUNSIGNED|TLONG|TULONG, 560 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 561 NAREG, RLEFT|RESCC, 562 " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n", 563 564 MOD, INAREG|INTAREG, 565 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 566 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 567 NAREG, RESC1, 568 " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n", 569 570 ASG PLUS, INAREG|FOREFF|FORCC, 571 SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG, 572 SONE, TINT|TLONG, 573 0, RLEFT|RESCC, 574 " incZL AL\n", 575 576 ASG PLUS, INAREG|FOREFF|FORCC, 577 AWD, ANYSIGNED|ANYUSIGNED, 578 SONE, TINT|TLONG, 579 0, RLEFT|RESCC, 580 " incZL AL\n", 581 582 ASG PLUS, INAREG|FOREFF|FORCC, 583 SAREG, TSHORT|TCHAR, 584 SONE, TINT|TLONG, 585 0, RLEFT|RESCC, 586 " incZL AL\n cvtZLl AL,AL\n", 587 588 ASG PLUS, INAREG|FOREFF|FORCC, 589 SAREG, TUSHORT|TUCHAR, 590 SONE, TINT|TLONG, 591 0, RLEFT|RESCC, 592 " incZL AL\n movzZLl AL,AL\n", 593 594 ASG MINUS, INAREG|FOREFF|FORCC, 595 SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG, 596 SONE, TINT|TLONG, 597 0, RLEFT|RESCC, 598 " decZL AL\n", 599 600 ASG MINUS, INAREG|FOREFF|FORCC, 601 AWD, ANYSIGNED|ANYUSIGNED, 602 SONE, TINT|TLONG, 603 0, RLEFT|RESCC, 604 " decZL AL\n", 605 606 ASG MINUS, INAREG|FOREFF|FORCC, 607 SAREG, TSHORT|TCHAR, 608 SONE, TINT|TLONG, 609 0, RLEFT|RESCC, 610 " decZL AL\n cvtZLl AL,AL\n", 611 612 ASG MINUS, INAREG|FOREFF|FORCC, 613 SAREG, TUSHORT|TUCHAR, 614 SONE, TINT|TLONG, 615 0, RLEFT|RESCC, 616 " decZL AL\n movzZLl AL,AL\n", 617 618 PLUS, INAREG|INTAREG|FORCC, 619 STAREG, TWORD, 620 SONE, TWORD, 621 0, RLEFT|RESCC, 622 " incZL AL\n", 623 624 PLUS, INAREG|INTAREG|FORCC, 625 STAREG, TSHORT|TCHAR, 626 SONE, TWORD, 627 0, RLEFT|RESCC, 628 " incZL AL\n cvtZLl AL,AL\n", 629 630 PLUS, INAREG|INTAREG|FORCC, 631 STAREG, TUSHORT|TUCHAR, 632 SONE, TWORD, 633 0, RLEFT|RESCC, 634 " incZL AL\n movzZLl AL,AL\n", 635 636 MINUS, INAREG|INTAREG|FORCC, 637 STAREG, TWORD, 638 SONE, TWORD, 639 0, RLEFT|RESCC, 640 " decZL AL\n", 641 642 MINUS, INAREG|INTAREG|FORCC, 643 STAREG, TSHORT|TCHAR, 644 SONE, TWORD, 645 0, RLEFT|RESCC, 646 " decZL AL\n cvtZLl AL,AL\n", 647 648 MINUS, INAREG|INTAREG|FORCC, 649 STAREG, TUSHORT|TUCHAR, 650 SONE, TWORD, 651 0, RLEFT|RESCC, 652 " decZL AL\n movzZLl AL,AL\n", 653 654 ASG OPSIMP, INAREG|FOREFF|FORCC, 655 SAREG|AWD, TWORD, 656 SAREG|AWD, TWORD, 657 0, RLEFT|RESCC, 658 " OL2 AR,AL\n", 659 660 ASG OPSIMP, INAREG|FOREFF|FORCC, 661 SAREG, TWORD, 662 SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR, 663 0, RLEFT|RESCC, 664 " OL2 AR,AL\n", 665 666 ASG OPSIMP, INAREG|FOREFF|FORCC, 667 AWD, TSHORT|TUSHORT, 668 SAREG|AWD, TSHORT|TUSHORT, 669 0, RLEFT|RESCC, 670 " OW2 AR,AL\n", 671 672 ASG OPSIMP, INAREG|FOREFF|FORCC, 673 AWD, TSHORT|TUSHORT, 674 SSCON, TWORD, 675 0, RLEFT|RESCC, 676 " OW2 AR,AL\n", 677 678 ASG OPSIMP, INAREG|FOREFF|FORCC, 679 AWD, TCHAR|TUCHAR, 680 SAREG|AWD, TCHAR|TUCHAR, 681 0, RLEFT|RESCC, 682 " OB2 AR,AL\n", 683 684 ASG OPSIMP, INAREG|FOREFF|FORCC, 685 AWD, TCHAR|TUCHAR, 686 SCCON, TWORD, 687 0, RLEFT|RESCC, 688 " OB2 AR,AL\n", 689 690 ASG OPSIMP, INAREG|FOREFF|FORCC, 691 SAREG, TSHORT, 692 SAREG|AWD, ANYFIXED, 693 0, RLEFT|RESCC, 694 " OW2 AR,AL\n cvtZLl AL,AL\n", 695 696 ASG OPSIMP, INAREG|FOREFF|FORCC, 697 SAREG, TUSHORT, 698 SAREG|AWD, ANYFIXED, 699 0, RLEFT|RESCC, 700 " OW2 AR,AL\n movzZLl AL,AL\n", 701 702 ASG OPSIMP, INAREG|FOREFF|FORCC, 703 SAREG, TCHAR, 704 SAREG|AWD, ANYFIXED, 705 0, RLEFT|RESCC, 706 " OB2 AR,AL\n cvtZLl AL,AL\n", 707 708 ASG OPSIMP, INAREG|FOREFF|FORCC, 709 SAREG, TUCHAR, 710 SAREG|AWD, ANYFIXED, 711 0, RLEFT|RESCC, 712 " OB2 AR,AL\n movzZLl AL,AL\n", 713 714 OPSIMP, INAREG|INTAREG|FORCC, 715 STAREG, ANYFIXED, 716 SAREG|AWD, TWORD, 717 0, RLEFT|RESCC, 718 " OL2 AR,AL\n", 719 720 OPSIMP, INAREG|INTAREG|FORCC, 721 SAREG|AWD, TWORD, 722 SAREG|AWD, TWORD, 723 NAREG|NASL|NASR, RESC1|RESCC, 724 " OL3 AR,AL,A1\n", 725 726 ASG OPFLOAT, INAREG|FOREFF|FORCC, 727 SAREG|AWD, TDOUBLE, 728 SAREG|AWD, TDOUBLE, 729 0, RLEFT|RESCC, 730 " OD2 AR,AL\n", 731 732 ASG OPFLOAT, INAREG|FOREFF|FORCC, 733 SAREG|AWD, TFLOAT, 734 SAREG|AWD, TFLOAT, 735 0, RLEFT|RESCC, 736 #if defined(FORT) || defined(SPRECC) 737 " OF2 AR,TAL\n", 738 #else 739 " OF2 AR,AL\n", 740 #endif 741 742 ASG OPFLOAT, INAREG|FOREFF|FORCC, 743 SAREG|AWD, TDOUBLE, 744 SAREG|AWD, TFLOAT, 745 NAREG|NASR, RLEFT|RESCC, 746 " cvtfd AR,A1\n OD2 A1,AL\n", 747 748 ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC, 749 SAREG|AWD, TFLOAT, 750 SAREG|AWD, TDOUBLE, 751 NAREG, RLEFT|RESC1|RESCC, 752 " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n", 753 754 ASG OPFLOAT, INAREG|FOREFF|FORCC, 755 SAREG|AWD, ANYFIXED, 756 #ifndef SPRECC 757 SAREG|AWD, TDOUBLE, /* force FLOAT to register */ 758 #else 759 SAREG|AWD, TFLOAT|TDOUBLE, 760 #endif 761 NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */ 762 " ZG\n", 763 764 OPFLOAT, INAREG|INTAREG|FORCC, 765 STAREG, TDOUBLE, 766 SAREG|AWD, TDOUBLE, 767 0, RLEFT|RESCC, 768 " OD2 AR,AL\n", 769 770 OPFLOAT, INAREG|INTAREG|FORCC, 771 SAREG|AWD, TDOUBLE, 772 SAREG|AWD, TDOUBLE, 773 NAREG|NASL|NASR, RESC1|RESCC, 774 " OD3 AR,AL,A1\n", 775 776 OPFLOAT, INAREG|INTAREG|FORCC, 777 SAREG|AWD, TFLOAT, 778 SAREG|AWD, TDOUBLE, 779 NAREG|NASL, RESC1|RESCC, 780 " cvtfd AL,A1\n OD2 AR,A1\n", 781 782 OPFLOAT, INAREG|INTAREG|FORCC, 783 SAREG|AWD, TDOUBLE, 784 SAREG|AWD, TFLOAT, 785 NAREG|NASR, RESC1|RESCC, 786 " cvtfd AR,A1\n OD3 A1,AL,A1\n", 787 788 #if defined(FORT) || defined(SPRECC) 789 OPFLOAT, INAREG|INTAREG|FORCC, 790 STAREG, TFLOAT, 791 SAREG|AWD, TFLOAT, 792 0, RLEFT|RESCC, 793 " OF2 AR,TAL\n", 794 795 OPFLOAT, INAREG|INTAREG|FORCC, 796 SAREG|AWD, TFLOAT, 797 SAREG|AWD, TFLOAT, 798 NAREG|NASL|NASR, RESC1|RESCC, 799 " OF3 AR,AL,TA1\n", 800 #endif 801 802 /* Default actions for hard trees ... */ 803 804 # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" 805 806 UNARY MUL, DF( UNARY MUL ), 807 808 INCR, DF(INCR), 809 810 DECR, DF(INCR), 811 812 ASSIGN, DF(ASSIGN), 813 814 STASG, DF(STASG), 815 816 FLD, DF(FLD), 817 818 OPLEAF, DF(NAME), 819 820 OPLOG, FORCC, 821 SANY, TANY, 822 SANY, TANY, 823 REWRITE, BITYPE, 824 "", 825 826 OPLOG, DF(NOT), 827 828 COMOP, DF(COMOP), 829 830 INIT, DF(INIT), 831 832 OPUNARY, DF(UNARY MINUS), 833 834 835 ASG OPANY, DF(ASG PLUS), 836 837 OPANY, DF(BITYPE), 838 839 FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" }; 840