1: # include "pass2.h" 2: 3: # define AWD SNAME|SOREG|SCON|STARNM|STARREG|SAREG 4: # define LWD SNAME|SOREG|SCON|SAREG 5: 6: struct optab table[] = { 7: 8: ASSIGN, INAREG|FOREFF|FORCC, 9: AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, 10: SZERO, TANY, 11: 0, RLEFT|RRIGHT|RESCC, 12: " clrZB AL\n", 13: 14: ASSIGN, INAREG|FOREFF|FORCC, 15: AWD, TINT|TUNSIGNED, 16: AWD, TCHAR, 17: NAREG|NASR, RLEFT|RESC1|RESCC, 18: " movb AR,A1\n mov A1,AL\n", 19: 20: ASSIGN, INAREG|FOREFF|FORCC, 21: AWD, TINT|TUNSIGNED, 22: AWD, TUCHAR, 23: 0, RLEFT|RESCC, 24: " movb AR,AL\n bic $!377,AL\n", 25: 26: ASSIGN, INAREG|FOREFF|FORCC, 27: AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, 28: AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, 29: 0, RLEFT|RRIGHT|RESCC, 30: " movZB AR,AL\n", 31: 32: ASSIGN, INAREG|FOREFF, 33: LWD, TLONG|TULONG, 34: SZERO, TANY, 35: 0, RLEFT|RRIGHT, 36: " clr AL\n clr UL\n", 37: 38: ASSIGN, INAREG|FOREFF, 39: LWD, TLONG|TULONG, 40: LWD, TLONG|TULONG, 41: 0, RLEFT|RRIGHT, 42: " mov AR,AL\n mov UR,UL\n", 43: 44: ASSIGN, FOREFF|INAREG, 45: STARNM, TLONG|TULONG, 46: LWD, TLONG|TULONG, 47: NAREG|NASL, RRIGHT, 48: " mov ZU,A1\n mov AR,(A1)+\n mov UR,(A1)\n", 49: 50: ASSIGN, FOREFF, 51: STARNM, TLONG|TULONG, 52: AWD, TUNSIGNED|TPOINT, 53: NAREG|NASL, RRIGHT, 54: " mov ZU,A1\n clr (A1)+\n mov AR,(A1)\n", 55: 56: ASSIGN, FOREFF, 57: STARNM, TLONG|TULONG, 58: AWD, TINT, 59: NAREG|NASL, RRIGHT, 60: " mov ZU,A1\n mov AR,2(A1)\n sxt (A1)\n", 61: 62: /* PANIC! */ 63: ASSIGN, FOREFF|INAREG, 64: STARNM, TLONG|TULONG, 65: AWD, TUNSIGNED|TPOINT, 66: NAREG|NASL|NASR, RESC1, 67: "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tclr\t(A1)+\n\tmov\t(sp)+,(A1)\ 68: \nF\tmov\t(A1),U1\nF\tclr\tA1\n", 69: 70: ASSIGN, FOREFF|INAREG, 71: STARNM, TLONG|TULONG, 72: AWD, TINT, 73: NAREG|NASL|NASR, RESC1, 74: "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tmov\t(sp)+,2(A1)\nF\tmov\t2(A1),U1\ 75: \n\tsxt\t(A1)\nF\tsxt\tA1\n", 76: 77: ASSIGN, FOREFF|INAREG, 78: STARNM, TLONG|TULONG, 79: SAREG, TLONG|TULONG, 80: 0, RRIGHT, 81: " mov AR,AL\n mov ZU,AR\n mov UR,2(AR)\nF mov (AR),AR\n", 82: 83: ASSIGN, INAREG|FOREFF, 84: LWD, TLONG|TULONG, 85: AWD, TCHAR, 86: NAREG, RESC1, 87: " movb AR,U1\n mov U1,UL\n sxt AL\nF sxt A1\n", 88: 89: ASSIGN, INAREG|FOREFF, 90: LWD, TLONG|TULONG, 91: AWD, TUCHAR, 92: 0, RLEFT, 93: " movb AR,UL\n bic $!377,UL\n clr AL\n", 94: 95: ASSIGN, INAREG|FOREFF, 96: LWD, TLONG|TULONG, 97: AWD, TINT, 98: 0, RLEFT, 99: " mov AR,UL\n sxt AL\n", 100: 101: ASSIGN, INAREG|FOREFF, 102: LWD, TLONG|TULONG, 103: AWD, TUNSIGNED|TPOINT, 104: 0, RLEFT, 105: " mov AR,UL\n clr AL\n", 106: 107: ASSIGN, INBREG|INTBREG|FOREFF, 108: AWD, TDOUBLE, 109: SBREG, TDOUBLE, 110: 0, RRIGHT, 111: " movf AR,AL\n", 112: 113: ASSIGN, INBREG|INTBREG|FOREFF, 114: AWD, TFLOAT, 115: SBREG, TDOUBLE, 116: 0, RRIGHT, 117: " movfo AR,AL\n", 118: 119: ASSIGN, INAREG|FOREFF, 120: SFLD, TANY, 121: SZERO, TANY, 122: 0, RRIGHT, 123: " bic $M.,AL\n", 124: 125: ASSIGN, INTAREG|INAREG|FOREFF, 126: SFLD, TANY, 127: STAREG, TANY, 128: 0, RRIGHT, 129: "F\tmov\tAR,-(sp)\n\tash\t$H.,AR\n\tbic\t$!M.,AR\n\tbic\t$M.,AL\n\tbis\tAR,AL\nF\tmov\t(sp)+,AR\n", 130: 131: ASSIGN, INAREG|FOREFF, 132: SFLD, TANY, 133: AWD, TANY, 134: NAREG, RRIGHT, 135: "\tmov\tAR,A1\n\tash\t$H.,A1\n\tbic\t$!M.,A1\n\tbic\t$M.,AL\n\tbis\tA1,AL\n", 136: 137: ASSIGN, FOREFF, 138: AWD, TFLOAT, 139: AWD, TFLOAT, 140: NBREG, RESC1, 141: " movof AR,A1\n movfo A1,AL\n", 142: 143: /* put this here so UNARY MUL nodes match OPLTYPE when appropriate */ 144: UNARY MUL, INTAREG|INAREG, 145: SANY, TANY, 146: STARNM, TLONG|TULONG, 147: NAREG|NASR, RESC1, 148: " mov AL,U1\n mov (U1)+,A1\n mov (U1),U1\n", 149: 150: OPLTYPE, FOREFF, 151: SANY, TANY, 152: LWD, TANY, 153: 0, RRIGHT, 154: "", /* this entry throws away computations which don't do anything */ 155: OPLTYPE, INTAREG|INAREG, 156: SANY, TANY, 157: SZERO, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 158: NAREG|NASR, RESC1, 159: " clr A1\n", 160: 161: OPLTYPE, INTAREG|INAREG, 162: SANY, TANY, 163: SZERO, TLONG|TULONG, 164: NAREG|NASR, RESC1, 165: " clr A1\n clr U1\n", 166: 167: OPLTYPE, INTAREG|INAREG, 168: SANY, TANY, 169: SANY, TINT|TUNSIGNED|TPOINT|TCHAR, 170: NAREG|NASR, RESC1, 171: " movZB AR,A1\n", 172: 173: OPLTYPE, INTEMP, 174: SANY, TANY, 175: SANY, TINT|TUNSIGNED|TPOINT, 176: NTEMP, RESC1, 177: " mov AR,A1\n", 178: 179: OPLTYPE, FORCC, 180: SANY, TANY, 181: SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 182: 0, RESCC, 183: " tstZB AR\n", 184: 185: 186: OPLTYPE, FORARG, 187: SANY, TANY, 188: SANY, TINT|TUNSIGNED|TPOINT, 189: 0, RNULL, 190: " mov AR,Z-\n", 191: 192: OPLTYPE, INTAREG|INAREG, 193: SANY, TANY, 194: AWD, TUCHAR, 195: NAREG|NASR, RESC1, 196: " movb AR,A1\n bic $!377,A1\n", 197: 198: OPLTYPE, INTAREG|INAREG, 199: SANY, TANY, 200: LWD, TLONG|TULONG, 201: NAREG, RESC1, 202: " mov UR,U1\n mov AR,A1\n", 203: 204: OPLTYPE, INTAREG|INAREG, /* for use when there are no free regs */ 205: SANY, TANY, 206: LWD, TLONG|TULONG, 207: NAREG|NASR, RESC1, 208: " mov AR,-(sp)\n mov UR,U1\n mov (sp)+,A1\n", 209: 210: OPLTYPE, INTEMP, 211: SANY, TANY, 212: LWD, TLONG|TULONG, 213: 2*NTEMP, RESC1, 214: " mov AR,A1\n mov UR,U1\n", 215: 216: OPLTYPE, FORCC, 217: SANY, TANY, 218: LWD, TLONG|TULONG, 219: 0, RESCC, 220: "ZA", 221: 222: OPLTYPE, FORARG, 223: SANY, TANY, 224: LWD, TLONG|TULONG, 225: 0, RNULL, 226: " mov UR,Z-\n mov AR,Z-\n", 227: 228: UNARY MUL, FORARG, 229: STARNM, TANY, 230: SANY, TLONG|TULONG, 231: NAREG|NASR, RNULL, 232: " mov AL,A1\n mov 2(A1),Z-\n mov (A1),Z-\n", 233: 234: OPLTYPE, FORARG, 235: SANY, TANY, 236: SBREG, TDOUBLE, 237: 0, RNULL, 238: " movf AR,Z4\n", 239: 240: OPLTYPE, INTBREG|INBREG, 241: SANY, TANY, 242: AWD, TDOUBLE, 243: NBREG, RESC1, 244: " movf AR,A1\n", 245: 246: OPLTYPE, INTEMP, 247: SANY, TANY, 248: SBREG, TDOUBLE, 249: 4*NTEMP, RESC1, 250: " movf AR,A1\n", 251: 252: OPLTYPE, FORCC, 253: SANY, TANY, 254: AWD, TDOUBLE, 255: 0, RESCC, 256: " tstf AR\n cfcc\n", 257: 258: OPLTYPE, INTBREG|INBREG, 259: SANY, TANY, 260: AWD, TFLOAT, 261: NBREG, RESC1, 262: " movof AR,A1\n", 263: 264: OPLTYPE, FORCC, 265: SANY, TANY, 266: AWD, TFLOAT, 267: NBREG, RESCC, 268: " movof AR,A1\n cfcc\n", 269: 270: 271: OPLOG, FORCC, 272: AWD, TPOINT|TINT|TUNSIGNED, 273: AWD, TPOINT|TINT|TUNSIGNED, 274: 0, RESCC, 275: " cmp AL,AR\nZI", 276: 277: OPLOG, FORCC, 278: AWD, TCHAR|TUCHAR, 279: AWD, TCHAR|TUCHAR, 280: 0, RESCC, 281: " cmpb AL,AR\nZI", 282: 283: OPLOG, FORCC, 284: AWD, TCHAR|TUCHAR, 285: SSCON, TINT, /* look for constants between -128 and 127 */ 286: 0, RESCC, 287: " cmpb AL,AR\nZI", 288: 289: OPLOG, FORCC, 290: LWD, TLONG|TULONG, 291: LWD, TLONG|TULONG, 292: 0, RESCC, 293: "ZCZI", 294: 295: OPLOG, FORCC, 296: SBREG, TDOUBLE, 297: AWD, TFLOAT, 298: NBREG, RESCC, 299: " movof AR,A1\n cmpf A1,AL\n cfcc\nZF", 300: 301: OPLOG, FORCC, 302: SBREG, TDOUBLE, 303: SBREG|AWD, TDOUBLE, 304: 0, RESCC, 305: " cmpf AR,AL\n cfcc\nZF", 306: 307: CCODES, INTAREG|INAREG, 308: SANY, TANY, 309: SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 310: NAREG, RESC1, 311: " mov $1,A1\nZN", 312: 313: CCODES, INTAREG|INAREG, 314: SANY, TANY, 315: SANY, TLONG|TULONG, 316: NAREG, RESC1, 317: " clr A1\n mov $1,U1\nZN", 318: 319: UNARY MINUS, INTAREG|INAREG, 320: STAREG, TINT|TUNSIGNED, 321: SANY, TANY, 322: 0, RLEFT, 323: " neg AL\n", 324: 325: UNARY MINUS, INTAREG|INAREG, 326: STAREG, TLONG|TULONG, 327: SANY, TANY, 328: 0, RLEFT, 329: " neg AL\n neg UL\n sbc AL\n", 330: 331: UNARY MINUS, INTBREG|INBREG, 332: STBREG, TDOUBLE, 333: SANY, TANY, 334: 0, RLEFT, 335: " negf AL\n", 336: 337: COMPL, INTAREG|INAREG, 338: STAREG, TINT|TUNSIGNED, 339: SANY, TANY, 340: 0, RLEFT, 341: " com AL\n", 342: 343: INCR, INTAREG|INAREG|FOREFF, 344: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 345: SONE, TANY, 346: NAREG, RESC1, 347: "F movZB AL,A1\n incZB AL\n", 348: 349: DECR, INTAREG|INAREG|FOREFF, 350: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 351: SONE, TANY, 352: NAREG, RESC1, 353: "F movZB AL,A1\n decZB AL\n", 354: 355: INCR, INTAREG|INAREG|FOREFF, 356: AWD, TINT|TUNSIGNED|TPOINT, 357: SCON, TANY, 358: NAREG, RESC1, 359: "F mov AL,A1\n add AR,AL\n", 360: 361: DECR, INTAREG|INAREG|FOREFF, 362: AWD, TINT|TUNSIGNED|TPOINT, 363: SCON, TANY, 364: NAREG, RESC1, 365: "F mov AL,A1\n sub AR,AL\n", 366: 367: INCR, INTAREG|INAREG|FOREFF, 368: LWD, TLONG|TULONG, 369: SCON, TANY, 370: NAREG, RESC1, 371: "F mov AL,A1\nF mov UL,U1\n add AR,AL\n add UR,UL\n adc AL\n", 372: 373: DECR, INTAREG|INAREG|FOREFF, 374: LWD, TLONG|TULONG, 375: SCON, TANY, 376: NAREG, RESC1, 377: "F mov AL,A1\nF mov UL,U1\n sub AR,AL\n sub UR,UL\n sbc AL\n", 378: 379: COMPL, INTAREG|INAREG, 380: STAREG, TLONG|TULONG, 381: SANY, TANY, 382: 0, RLEFT, 383: " com AL\n com UL\n", 384: 385: AND, FORCC, 386: AWD, TINT|TUNSIGNED|TPOINT, 387: SCON, TANY, 388: 0, RESCC, 389: " bit AL,$Z~\n", 390: 391: ASG MUL, INAREG, 392: STAREG, TINT|TUNSIGNED|TPOINT, 393: AWD, TINT|TUNSIGNED|TPOINT, 394: NAREG, RLEFT, 395: " mul AR,AL\n", 396: 397: ASG DIV, INAREG, 398: STAREG, TINT|TUNSIGNED|TPOINT, 399: AWD, TINT|TUNSIGNED|TPOINT, 400: NAREG, RESC1, 401: "ZV div AR,r0\n", /* since lhs must be in r1 */ 402: 403: ASG MOD, INAREG, 404: STAREG, TINT|TUNSIGNED|TPOINT, 405: AWD, TINT|TUNSIGNED|TPOINT, 406: NAREG, RLEFT, 407: "ZV div AR,r0\n", /* since lhs must be in r1 */ 408: 409: ASG PLUS, INAREG|FORCC, 410: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 411: SONE, TINT, 412: 0, RLEFT|RESCC, 413: " incZB AL\n", 414: 415: ASG PLUS, INAREG|FORCC, 416: AWD, TINT|TUNSIGNED|TPOINT, 417: AWD, TINT|TUNSIGNED|TPOINT, 418: 0, RLEFT|RESCC, 419: " add AR,AL\n", 420: 421: ASG MINUS, INAREG|FORCC, 422: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 423: SONE, TINT, 424: 0, RLEFT|RESCC, 425: " decZB AL\n", 426: 427: ASG MINUS, INAREG|FORCC, 428: AWD, TINT|TUNSIGNED|TPOINT, 429: AWD, TINT|TUNSIGNED|TPOINT, 430: 0, RLEFT|RESCC, 431: " sub AR,AL\n", 432: 433: ASG OR, INAREG|FORCC, 434: AWD, TINT|TUNSIGNED|TPOINT, 435: AWD, TINT|TUNSIGNED|TPOINT, 436: 0, RLEFT|RESCC, 437: " bis AR,AL\n", 438: 439: /* AND transformed to "pdp11 bic" in first pass. */ 440: ASG AND, INAREG|FORCC, 441: AWD, TINT|TUNSIGNED|TPOINT, 442: AWD, TINT|TUNSIGNED|TPOINT, 443: 0, RLEFT|RESCC, 444: " bic AR,AL\n", 445: 446: ASG ER, INAREG|FORCC, 447: AWD, TINT|TUNSIGNED|TPOINT, 448: SAREG, TINT|TUNSIGNED|TPOINT, 449: 0, RLEFT|RESCC, 450: " xor AR,AL\n", 451: 452: ASG OPSHFT, INAREG, 453: SAREG, TINT|TUNSIGNED|TPOINT, 454: SONE, TINT, 455: 0, RLEFT, 456: " OI AL\nZH", 457: 458: ASG LS, INAREG, 459: SAREG, TINT|TUNSIGNED|TPOINT, 460: AWD, TINT|TUNSIGNED|TPOINT, 461: 0, RLEFT, 462: " ash AR,AL\n", 463: 464: ASG RS, INAREG, 465: SAREG, TINT|TUNSIGNED|TPOINT, 466: SCON, TANY, 467: 0, RLEFT, 468: " ash $ZM,AL\nZH", 469: 470: ASG RS, INAREG, 471: SAREG, TINT|TUNSIGNED|TPOINT, 472: STAREG, TINT|TUNSIGNED|TPOINT, 473: 0, RLEFT, 474: " neg AR\n ash AR,AL\nZH", 475: 476: ASG RS, INAREG, 477: SAREG, TINT|TUNSIGNED|TPOINT, 478: AWD, TINT|TUNSIGNED|TPOINT, 479: NAREG|NASR, RLEFT, 480: " mov AR,A1\n neg A1\n ash A1,AL\nZH", 481: 482: ASG RS, INAREG, 483: SAREG, TINT, 484: AWD, TINT, 485: 0, RLEFT, 486: " mov AR,-(sp)\n neg (sp)\n ash (sp)+,AL\nZH", 487: 488: ASG RS, INAREG, 489: SAREG, TINT|TUNSIGNED|TPOINT, 490: AWD, TINT|TUNSIGNED|TPOINT, 491: NTEMP, RLEFT, 492: " mov AR,A1\n neg A1\n ash A1,AL\nZH", 493: 494: ASG OR, INAREG|FORCC, 495: AWD, TCHAR|TUCHAR, 496: AWD, TCHAR|TUCHAR, 497: 0, RLEFT|RESCC, 498: " bisb AR,AL\n", 499: 500: /* AND transformed to "pdp11 bic" in first pass. */ 501: ASG AND, INAREG|FORCC, 502: AWD, TCHAR|TUCHAR, 503: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 504: 0, RLEFT|RESCC, 505: " bicb AR,AL\n", 506: 507: ASG PLUS, INAREG, 508: LWD, TLONG|TULONG, 509: SCCON, TINT|TLONG|TULONG, 510: 0, RLEFT, 511: " add UR,UL\n adc AL\n", 512: 513: ASG PLUS, INAREG, 514: STARNM, TLONG|TULONG, 515: LWD, TLONG|TULONG, 516: NAREG, RLEFT, 517: " mov ZU,A1\n add AR,(A1)+\n add UR,(A1)\n adc -(A1)\n", 518: 519: ASG PLUS, INAREG, 520: LWD, TLONG|TULONG, 521: LWD, TLONG|TULONG, 522: 0, RLEFT, 523: " add AR,AL\n add UR,UL\n adc AL\n", 524: 525: ASG PLUS, INAREG, 526: AWD, TPOINT, 527: LWD, TLONG|TULONG, 528: 0, RLEFT, 529: " add UR,AL\n", 530: 531: ASG MINUS, INAREG, 532: LWD, TLONG|TULONG, 533: SCCON, TINT|TLONG|TULONG, 534: 0, RLEFT, 535: " sub UR,UL\n sbc AL\n", 536: 537: ASG MINUS, INAREG, 538: STARNM, TLONG|TULONG, 539: LWD, TLONG|TULONG, 540: NAREG, RLEFT, 541: " mov ZU,A1\n sub AR,(A1)+\n sub UR,(A1)\n sbc -(A1)\n", 542: 543: ASG MINUS, INAREG, 544: LWD, TLONG|TULONG, 545: LWD, TLONG|TULONG, 546: 0, RLEFT, 547: " sub AR,AL\n sub UR,UL\n sbc AL\n", 548: 549: ASG MINUS, INAREG, 550: AWD, TPOINT, 551: LWD, TLONG|TULONG, 552: 0, RLEFT, 553: " sub UR,AL\n", 554: 555: ASG OR, INAREG, 556: LWD, TLONG|TULONG, 557: LWD, TLONG|TULONG, 558: 0, RLEFT, 559: " bis AR,AL\n bis UR,UL\n", 560: 561: /* AND transformed to "pdp11 bic" in first pass. */ 562: ASG AND, INAREG, 563: LWD, TLONG|TULONG, 564: LWD, TLONG|TULONG, 565: 0, RLEFT, 566: " bic AR,AL\n bic UR,UL\n", 567: 568: ASG ER, INAREG, 569: LWD, TLONG|TULONG, 570: SAREG, TLONG|TULONG, 571: 0, RLEFT, 572: " xor AR,AL\n xor UR,UL\n", 573: 574: /* table entries for ^ which correspond to the usual way of doing busingess 575: (rhs in a temp register */ 576: 577: ASG ER, INAREG|INTAREG, 578: STAREG, TLONG|TULONG, 579: LWD, TLONG|TULONG, 580: 0, RLEFT, 581: "\tmov\tAL,-(sp)\n\tmov\tUR,AL\n\txor\tAL,UL\n\tmov\tAR,AL\n\txor\tAL,(sp)\n\tmov\t(sp)+,AL\n", 582: 583: ASG ER, INAREG|INTAREG, 584: STAREG, TINT|TUNSIGNED|TPOINT, 585: AWD, TINT|TUNSIGNED|TPOINT, 586: 0, RLEFT, 587: "\tmov\tAL,-(sp)\n\tmov\tAR,AL\n\txor\tAL,(sp)\n\tmov\t(sp)+,AL\n", 588: 589: ASG LS, INAREG, 590: SAREG, TLONG|TULONG, 591: AWD, TINT|TUNSIGNED|TPOINT, 592: 0, RLEFT, 593: " ashc AR,AL\n", 594: 595: ASG RS, INAREG, 596: SAREG, TLONG|TULONG, 597: SCON, TANY, 598: 0, RLEFT, 599: " ashc $ZM,AL\nZH", 600: 601: ASG RS, INAREG, 602: SAREG, TLONG|TULONG, 603: STAREG, TINT|TUNSIGNED|TPOINT, 604: 0, RLEFT, 605: " neg AR\n ashc AR,AL\nZH", 606: 607: ASG RS, INAREG, 608: SAREG, TLONG|TULONG, 609: AWD, TINT|TUNSIGNED|TPOINT, 610: NAREG|NASR, RLEFT, 611: " mov AR,A1\n neg A1\n ashc A1,AL\nZH", 612: 613: ASG RS, INAREG, 614: SAREG, TLONG|TULONG, 615: AWD, TINT|TUNSIGNED|TPOINT, 616: NTEMP, RLEFT, 617: " mov AR,A1\n neg A1\n ashc A1,AL\nZH", 618: 619: ASG OPFLOAT, INBREG|INTBREG, 620: STBREG, TDOUBLE, 621: SBREG|AWD, TDOUBLE, 622: 0, RLEFT|RESCC, 623: " OF AR,AL\n", 624: 625: ASG OPFLOAT, INBREG|INTBREG, 626: STBREG, TDOUBLE, 627: AWD, TFLOAT, 628: NBREG|NBSR, RLEFT|RESCC, 629: " movof AR,A1\n OF A1,AL\n", 630: 631: ASG OPFLOAT, FORCC, 632: STBREG, TDOUBLE, 633: SBREG|AWD, TDOUBLE, 634: 0, RESCC, 635: " OF AR,AL\n cfcc\n", 636: 637: ASG OPFLOAT, FORCC, 638: STBREG, TDOUBLE, 639: AWD, TFLOAT, 640: NBREG|NBSR, RESCC, 641: " movof AR,A1\n OF A1,AL\n cfcc\n", 642: 643: UNARY CALL, INTAREG, 644: SAREG|SNAME|SOREG|SCON, TANY, 645: SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR|TLONG|TULONG, 646: NAREG|NASL, RESC1, /* should be register 0 */ 647: " jsr pc,*AL\n", 648: 649: UNARY CALL, INTBREG, 650: SAREG|SNAME|SOREG|SCON, TANY, 651: SANY, TDOUBLE|TFLOAT, 652: NBREG, RESC1, /* should be register FR0 */ 653: " jsr pc,*AL\n", 654: 655: SCONV, INTAREG, 656: STAREG, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 657: SANY, TUCHAR, 658: 0, RLEFT, 659: " bic $!377,AL\n", 660: 661: SCONV, INTAREG, 662: AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 663: SANY, TCHAR|TINT, 664: NAREG|NASL, RESC1, 665: " movZB AL,A1\n", 666: 667: SCONV, INAREG|INTAREG, 668: LWD, TLONG|TULONG, 669: SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 670: 0, RLEFT, 671: "ZT", 672: 673: SCONV, INTAREG, 674: AWD, TUCHAR, 675: SANY, TLONG|TULONG, 676: NAREG|NASL, RESC1, 677: " movb AL,U1\n bic $!377,U1\n clr A1\n", 678: 679: SCONV, INTAREG, 680: AWD, TINT, 681: SANY, TLONG|TULONG, 682: NAREG|NASL, RESC1, 683: " mov AL,U1\n sxt A1\n", 684: 685: SCONV, INTAREG, 686: AWD, TUNSIGNED|TPOINT, 687: SANY, TLONG|TULONG, 688: NAREG|NASL, RESC1, 689: " mov AL,U1\n clr A1\n", 690: 691: SCONV, INTAREG, 692: SBREG, TDOUBLE, 693: SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 694: NAREG, RESC1, 695: " movfi AL,A1\n", 696: 697: SCONV, INTAREG, 698: STBREG, TDOUBLE, 699: SANY, TLONG|TULONG, 700: NAREG, RESC1, 701: " setl\n movfi AL,-(sp)\n seti\n mov (sp)+,A1\n mov (sp)+,U1\n", 702: 703: SCONV, FORARG, 704: STBREG, TDOUBLE, 705: SANY, TLONG|TULONG, 706: 0, RNULL, 707: " setl\n movfi AL,Z4\n seti\n", 708: 709: SCONV, INTBREG, 710: SAREG, TLONG, 711: SANY, TANY, 712: NBREG, RESC1, 713: "\tmov\tUL,-(sp)\n\tmov\tAL,-(sp)\n\tsetl\n\tmovif\t(sp)+,A1\n\tseti\n", 714: 715: SCONV, INTBREG, 716: LWD, TLONG, 717: SANY, TANY, 718: NBREG, RESC1, 719: "\tsetl\n\tmovif\tAL,A1\n\tseti\n", 720: 721: SCONV, INTBREG, 722: AWD, TINT, 723: SANY, TANY, 724: NBREG, RESC1, 725: " movif AL,A1\n", 726: 727: SCONV, INTBREG, 728: SAREG, TULONG, 729: SANY, TANY, 730: NBREG, RESC1, 731: "\tmov\tUL,-(sp)\n\tmov\tAL,-(sp)\n\tsetl\n\tmovif\t(sp)+,A1\n\tseti\n\tcfcc\n\tbpl\t1f\n\taddf\t$050200,A1\n1:\n", 732: 733: SCONV, INTBREG, 734: LWD, TULONG, 735: SANY, TANY, 736: NBREG, RESC1, 737: "\tsetl\n\tmovif\tAL,A1\n\tseti\n\tcfcc\n\tbpl\t1f\n\taddf\t$050200,A1\n1:\n", 738: 739: SCONV, INTBREG, 740: STAREG, TUNSIGNED|TPOINT, 741: SANY, TANY, 742: NBREG, RESC1, 743: "\tmovif\tAL,A1\n\tcfcc\n\tbpl\t1f\n\taddf\t$044200,A1\n1:\n", 744: 745: PCONV, INTAREG, 746: AWD, TCHAR|TUCHAR, 747: SANY, TPOINT, 748: NAREG|NASL, RESC1, 749: " movb AL,A1\n", 750: 751: PCONV, INAREG|INTAREG, 752: LWD, TLONG|TULONG, 753: SANY, TPOINT, 754: 0, RLEFT, 755: "ZT", 756: 757: STARG, FORARG, 758: SNAME|SOREG, TANY, 759: SANY, TANY, 760: 0, RNULL, 761: "ZS", 762: 763: STASG, FOREFF, 764: SNAME|SOREG, TANY, 765: SCON|SAREG, TANY, 766: 0, RNOP, 767: "ZS", 768: 769: STASG, INTAREG|INAREG, 770: SNAME|SOREG, TANY, 771: STAREG, TANY, 772: 0, RRIGHT, 773: "ZS", 774: 775: STASG, INAREG|INTAREG, 776: SNAME|SOREG, TANY, 777: SCON|SAREG, TANY, 778: NAREG, RESC1, 779: "ZS mov AR,A1\n", 780: 781: INIT, FOREFF, 782: SCON, TANY, 783: SANY, TINT|TUNSIGNED|TPOINT, 784: 0, RNOP, 785: " CL\n", 786: 787: INIT, FOREFF, 788: SCON, TANY, 789: SANY, TLONG|TULONG, 790: 0, RNOP, 791: "ZL", 792: 793: INIT, FOREFF, 794: SCON, TANY, 795: SANY, TCHAR|TUCHAR, 796: 0, RNOP, 797: " .byte CL\n", 798: 799: /* for the use of fortran only */ 800: 801: GOTO, FOREFF, 802: SCON, TANY, 803: SANY, TANY, 804: 0, RNOP, 805: " jbr CL\n", 806: 807: GOTO, FOREFF, 808: SNAME, TLONG|TULONG, 809: SANY, TANY, 810: 0, RNOP, 811: " jmp *UL\n", 812: 813: GOTO, FOREFF, 814: SNAME, TINT|TUNSIGNED|TCHAR|TUCHAR|TPOINT, 815: SANY, TANY, 816: 0, RNOP, 817: " jmp *AL\n", 818: 819: /* Default actions for hard trees ... */ 820: 821: # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" 822: 823: UNARY MUL, DF( UNARY MUL ), 824: 825: INCR, DF(INCR), 826: 827: DECR, DF(INCR), 828: 829: ASSIGN, DF(ASSIGN), 830: 831: STASG, DF(STASG), 832: 833: OPLEAF, DF(NAME), 834: 835: OPLOG, FORCC, 836: SANY, TANY, 837: SANY, TANY, 838: REWRITE, BITYPE, 839: "", 840: 841: OPLOG, DF(NOT), 842: 843: COMOP, DF(COMOP), 844: 845: INIT, DF(INIT), 846: 847: OPUNARY, DF(UNARY MINUS), 848: 849: 850: ASG OPANY, DF(ASG PLUS), 851: 852: OPANY, DF(BITYPE), 853: 854: FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };