1: #ifndef lint 2: static char *sccsid ="@(#)table.c 1.13 (Berkeley) 1/8/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" };