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" };

Defined variables

sccsid defined in line 2; never used
table defined in line 17; never used

Defined macros

ANYFIXED defined in line 12; used 7 times
ANYSIGNED defined in line 10; used 14 times
ANYUSIGNED defined in line 11; used 13 times
AWD defined in line 8; used 102 times
DF defined in line 804; used 13 times
NIAWD defined in line 14; used 2 times
TWORD defined in line 13; used 48 times
WPTR defined in line 7; never used
Last modified: 1986-01-11
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 796
Valid CSS Valid XHTML 1.0 Strict