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