# 2.11BSD#431 - /usr/src/lib/pcc/table.c

##### Variables

    table             X

##### Macros

    AWD               X
    DF                X
    LWD               X

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

#### Defined variables

table defined in line 6; never used

#### Defined macros

AWD defined in line 3; used 75 times

- in line 9, 15-28(6), 52, 58, 65, 72, 85, 91, 97, 103-108(2), 114, 133-139(3), 194, 242, 254, 260, 266, 272-284(5), 297, 303, 344, 350, 356, 362, 386, 393, 399, 405-410(2), 416-422(3), 428-435(4), 441-447(3), 460, 478, 484, 490-496(3), 502-503(2), 526, 550, 585, 591, 609, 615, 621, 627, 633, 639, 662, 674, 680, 686, 722, 746

DF defined in line 821; used 12 times

- in line 823-833(6), 841-852(6)

LWD defined in line 4; used 38 times

- in line 33, 39-40(2), 46, 84, 90, 96, 102, 152, 200, 206, 212, 218, 224, 290-291(2), 368, 374, 508, 515-521(3), 527-532(2), 539-545(3), 551-557(3), 563-569(3), 579, 668, 716, 734, 752

Last modified: 1991-07-30 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 717 |