Annotation of researchv9/cmd/sun/pcc/table.c, revision 1.1

1.1     ! root        1: # include "cpass2.h"
        !             2: #ifndef lint
        !             3: static char sccsid[] = "@(#)table.c 1.1 86/02/03 Copyr 1985 Sun Micro";
        !             4: #endif
        !             5: 
        !             6: /*
        !             7:  * Copyright (c) 1985 by Sun Microsystems, Inc.
        !             8:  */
        !             9: 
        !            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 TSCALAR TCHAR|TUCHAR|TSHORT|TUSHORT|TINT|TUNSIGNED|TPOINT
        !            15: 
        !            16: # define EA SNAME|SOREG|SCON|STARREG|STARNM|SAREG|SBREG
        !            17: # define EAA SNAME|SOREG|SCON|STARREG|STARNM|SAREG
        !            18: # define EB SBREG
        !            19: # define ED SNAME|SOREG|SCON|SAREG     /* for addressability of DOUBLEs */
        !            20: # define ES SNAME|SOREG|STARREG|STARNM|SAREG|SBREG
        !            21: # define EM SNAME|SOREG|STARREG|STARNM|SCON
        !            22: 
        !            23: struct optab table[] = {
        !            24: 
        !            25: /*
        !            26:  * special-case constant assignments
        !            27:  */
        !            28: 
        !            29: ASSIGN,        INAREG|FOREFF|FORCC,
        !            30:        (EAA)&~SAREG,   TSCALAR|TFLOAT,
        !            31:        SZERO,  TANY,
        !            32:                0,      RLEFT|RRIGHT|RESCC,
        !            33:                "       clrZB   AL\n",
        !            34: 
        !            35: ASSIGN,        INAREG|FOREFF|FORCC,
        !            36:        SAREG|STAREG,   TSCALAR,
        !            37:        SCCON,  TSCALAR,
        !            38:                0,      RLEFT|RRIGHT|RESCC,
        !            39:                "       moveq   AR,AL\n",
        !            40: 
        !            41: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !            42: 
        !            43: /* 
        !            44:  * two's complement assignments, to anything but the address registers
        !            45:  */
        !            46: ASSIGN,        INAREG|FOREFF|FORCC,
        !            47:        EAA,    TSCALAR,
        !            48:        EA,     TSCALAR,
        !            49:                0,      RLEFT|RRIGHT|RESCC,
        !            50:                "       movZB   AR,AL\n",
        !            51: 
        !            52: /*
        !            53:  * two's complement assignments, to the address registers
        !            54:  */
        !            55: ASSIGN,        INBREG|FOREFF,
        !            56:        SBREG|STBREG,   TWORD|TSHORT,
        !            57:        EA,             TWORD|TSHORT,
        !            58:                0,      RLEFT|RRIGHT,
        !            59:                "       movZB   AR,AL\n",
        !            60: 
        !            61: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !            62: 
        !            63: /*
        !            64:  * Floating assignments to anything but the address registers
        !            65:  * Note that the condition codes are not left in a valid state.
        !            66:  */
        !            67: ASSIGN,        INAREG|FOREFF,
        !            68:        EAA,    TFLOAT,
        !            69:        EA,     TFLOAT,
        !            70:                0,      RLEFT|RRIGHT,
        !            71:                "       movZB   AR,AL\n",
        !            72: 
        !            73: /*
        !            74:  * Floating assignments to the address registers.
        !            75:  * Note that the condition codes are not left in a valid state.
        !            76:  */
        !            77: ASSIGN,        INBREG|FOREFF,
        !            78:        SBREG|STBREG,   TFLOAT,
        !            79:        EA,     TFLOAT,
        !            80:                0,      RLEFT|RRIGHT,
        !            81:                "       movZB   AR,AL\n",
        !            82: 
        !            83: ASSIGN|OP68881, INBREG|FOREFF,
        !            84:        SBREG|STBREG,   TFLOAT,
        !            85:        SCREG|STCREG,   TFLOAT,
        !            86:                NAREG,  RLEFT|RRIGHT|RESC1,
        !            87:                "       fmoves  AR,A1\n movl    A1,AL\n",
        !            88: 
        !            89: /*
        !            90:  * assignments from temp aregs to anything but the a-registers
        !            91:  */
        !            92: ASSIGN, INTAREG|FOREFF,
        !            93:        EAA,    TSCALAR|TFLOAT,
        !            94:        STAREG, TSCALAR|TFLOAT,
        !            95:                0,      RRIGHT,
        !            96:                "       movZB   AR,AL\n",
        !            97: 
        !            98: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !            99: 
        !           100: /*
        !           101:  * Floating assignments to the fp-registers, if we have them.
        !           102:  */
        !           103: 
        !           104: ASSIGN|OP68881,        INCREG|FOREFF|FORCC,
        !           105:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           106:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           107:                0,      RLEFT|RRIGHT|RESFCC,
        !           108:                "       fmoveZF ZK,AL\n",
        !           109: 
        !           110: ASSIGN|OP68881,        INCREG|FOREFF|FORCC,
        !           111:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           112:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           113:                0,      RLEFT|RRIGHT|RESFCC,
        !           114:                "       fmovex  AR,AL\n",
        !           115: 
        !           116: ASSIGN|OP68881,        INCREG|FOREFF|FORCC,
        !           117:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           118:        SAREG|STAREG,   TDOUBLE,
        !           119:                0,      RLEFT|RRIGHT|RESFCC,
        !           120: "      movl    UR,sp@-\n\
        !           121:        movl    AR,sp@-\n\
        !           122:        fmoved  sp@+,AL\n",
        !           123: 
        !           124: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           125: 
        !           126: /*
        !           127:  * Floating stores from the fp-registers, if we have them.
        !           128:  * Note: these do not affect the condition codes on either processor.
        !           129:  */
        !           130: 
        !           131: ASSIGN|OP68881,        INCREG|FOREFF,
        !           132:        EM,     TFLOAT|TDOUBLE,
        !           133:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           134:                0,      RLEFT|RRIGHT,
        !           135:                "       fmoveZG AR,AL\n",
        !           136: 
        !           137: ASSIGN|OP68881,        INCREG|FOREFF,
        !           138:        SAREG|STAREG,   TFLOAT,
        !           139:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           140:                0,      RLEFT|RRIGHT,
        !           141:                "       fmoveZG AR,AL\n",
        !           142: 
        !           143: ASSIGN|OP68881,        INCREG|FOREFF,
        !           144:        SAREG|STAREG,   TDOUBLE,
        !           145:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           146:                0,      RLEFT|RRIGHT,
        !           147: "      fmoved  AR,sp@-\n\
        !           148:        movl    sp@+,AL\n\
        !           149:        movl    sp@+,UL\n",
        !           150: 
        !           151: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           152: 
        !           153: /*
        !           154:  * Other floating-point assignments
        !           155:  */
        !           156: 
        !           157: ASSIGN,        INAREG|FOREFF,
        !           158:        ED,     TDOUBLE,
        !           159:        ED,     TDOUBLE,
        !           160:                0,      RLEFT|RRIGHT,
        !           161:                "       movl    AR,AL\n movl    UR,UL\n",
        !           162: 
        !           163: ASSIGN|NO68881,        INAREG|FOREFF,
        !           164:        EAA,    TFLOAT,
        !           165:        ED,     TDOUBLE,
        !           166:                0,      RLEFT|RRIGHT,
        !           167:                "Zg",
        !           168: 
        !           169: ASSIGN,        INAREG|FOREFF,
        !           170:        EAA,    TDOUBLE,
        !           171:        SAREG,  TDOUBLE,
        !           172:                0,      RLEFT|RRIGHT,
        !           173:                "ZD",
        !           174: 
        !           175: ASSIGN,        INAREG|FOREFF,
        !           176:        SAREG,  TDOUBLE,
        !           177:        EAA,    TDOUBLE,
        !           178:                0,      RLEFT|RRIGHT,
        !           179:                "ZD",
        !           180: 
        !           181: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           182: 
        !           183: /* new, fun field ops */
        !           184: ASSIGN, INAREG|FOREFF,
        !           185:        SPEC_FLD,               TANY,
        !           186:        SAREG|STAREG,   TANY,
        !           187:                NAREG,  RRIGHT,
        !           188:                "Za\n", /* ie: do the whole show by hand */
        !           189: 
        !           190: ASSIGN, INAREG|FOREFF,
        !           191:        SPEC_FLD,               TANY,
        !           192:        SCON,           TANY,
        !           193:                NAREG,  RRIGHT,
        !           194:                "Za\n", /* ie: do the whole show by hand */
        !           195: 
        !           196: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           197: 
        !           198: /* put this here so UNARY MUL nodes match OPLTYPE when appropriate */
        !           199: UNARY MUL,     INTAREG|INAREG|FORCC,
        !           200:        SBREG,  TSCALAR,
        !           201:        SANY,   TANY,
        !           202:                NAREG|NASR,     RESC1|RESCC,
        !           203:                "       movZB   AL@,A1\n",
        !           204: 
        !           205: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           206: 
        !           207: #ifdef FORT
        !           208: GOTO,  FOREFF,
        !           209:        SCON,   TANY,
        !           210:        SANY,   TANY,
        !           211:                0,      RNOP,
        !           212:                "       jra     CL\n",
        !           213: 
        !           214: GOTO,  FOREFF,
        !           215:        SBREG|STBREG,   TANY,
        !           216:        SANY,   TANY,
        !           217:                0,      RNOP,
        !           218:                "       jmp     AL@\n",
        !           219: #endif
        !           220: 
        !           221: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           222: 
        !           223: /* leaf node for effect -- evaluate and discard */
        !           224: 
        !           225: OPLTYPE,       FOREFF,
        !           226:        SANY,   TANY,
        !           227:        EA,     TANY,
        !           228:                0,      RRIGHT,
        !           229:                "Z ",   /* note that the "leaf" may have side effects!!*/
        !           230: 
        !           231: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           232: 
        !           233: /*
        !           234:  * tests to set condition codes, integral operands
        !           235:  */
        !           236: 
        !           237: OPLTYPE|OP68020,       FORCC,
        !           238:        SANY,   TANY,
        !           239:        (EA)&~SCON,     TWORD|TSHORT|TUSHORT,
        !           240:                0,      RESCC,
        !           241:                "       tstZB   AR\n",
        !           242: 
        !           243: OPLTYPE,       FORCC,
        !           244:        SANY,   TANY,
        !           245:        (EAA)&~SCON,    TSCALAR,
        !           246:                0,      RESCC,
        !           247:                "       tstZB   AR\n",
        !           248: 
        !           249: OPLTYPE,       FORCC,
        !           250:        SANY,   TANY,
        !           251:        EB,     TWORD|TSHORT|TUSHORT,
        !           252:                0,      RESCC,
        !           253:                "       cmpw    #0,AR\n",
        !           254: 
        !           255: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           256: 
        !           257: /*
        !           258:  * (68881) tests to set coprocessor condition codes, floating point operands
        !           259:  */
        !           260: 
        !           261: OPLTYPE|OP68881,       FORCC, 
        !           262:        SANY,   TANY,
        !           263:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           264:                0,      RESFCC,
        !           265:                "       ftestZF ZK\n",
        !           266: 
        !           267: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           268: 
        !           269: /*
        !           270:  * (no 68881) tests to set condtion codes, floating point operands
        !           271:  */
        !           272: OPLTYPE|NO68881,       FORCC, 
        !           273:        SANY,   TANY,
        !           274:        EA,     TFLOAT,
        !           275:                0,      RESCC,
        !           276:                "Zf",
        !           277: 
        !           278: OPLTYPE|NO68881,       FORCC, 
        !           279:        SANY,   TANY,
        !           280:        ED,     TDOUBLE,
        !           281:                0,      RESCC,
        !           282:                "Zf",
        !           283: 
        !           284: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           285: 
        !           286: /*
        !           287:  * special-case loads, constant integral operands
        !           288:  */
        !           289: OPLTYPE,       INTAREG|INAREG|FORCC,
        !           290:        SANY,   TANY,
        !           291:        SZERO,  TSCALAR,
        !           292:                NAREG|NASR,     RESC1|RESCC,
        !           293:                "       moveq   #0,A1\n",
        !           294: 
        !           295: OPLTYPE,       INTAREG|INAREG|FORCC,
        !           296:        SANY,   TANY,
        !           297:        SCCON,  TSCALAR,
        !           298:                NAREG|NASR,     RESC1|RESCC,
        !           299:                "       moveq   AR,A1\n",
        !           300: 
        !           301: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           302: 
        !           303: /*
        !           304:  * load scalar into temp d-register
        !           305:  */
        !           306: OPLTYPE,       INTAREG|INAREG|FORCC,
        !           307:        SANY,   TANY&~TSTRUCT,
        !           308:        EA,     TSCALAR,
        !           309:                NAREG|NASR,     RESC1|RESCC,
        !           310:                "       movZB   AR,A1\n",
        !           311: 
        !           312: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           313: 
        !           314: /*
        !           315:  * special-case loads, float and double operands
        !           316:  */
        !           317: OPLTYPE,       INTAREG|INAREG,
        !           318:        SANY,   TANY,
        !           319:        EAA,    TDOUBLE,
        !           320:                NAREG,  RESC1,
        !           321:                "ZD",
        !           322: 
        !           323: OPLTYPE,       INTAREG|INAREG,
        !           324:        SANY,   TANY,
        !           325:        SOREG,  TDOUBLE,
        !           326:                NAREG|NASL|NBREG|NBSL,  RESC1,
        !           327:                "ZE",
        !           328: 
        !           329: OPLTYPE,       INTAREG|INAREG,
        !           330:        SANY,   TANY,
        !           331:        EA,     TFLOAT,
        !           332:                NAREG|NASR,     RESC1,
        !           333:                "       movl    AR,A1\n",
        !           334: 
        !           335: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           336: 
        !           337: /*
        !           338:  * (68881) loads from various places into coprocessor registers
        !           339:  */
        !           340: 
        !           341: OPLTYPE|OP68881,       INTCREG|INCREG,
        !           342:        SANY,   TANY,
        !           343:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           344:                NCREG,  RESC1,
        !           345:                "       fmoveZF ZK,A1\n",
        !           346: 
        !           347: OPLTYPE|OP68881,       INTCREG|INCREG,
        !           348:        SANY,   TANY,
        !           349:        SAREG|STAREG,   TDOUBLE,
        !           350:                NCREG,  RESC1,
        !           351: "      movl    UR,sp@-\n\
        !           352:        movl    AR,sp@-\n\
        !           353:        fmoved  sp@+,A1\n",
        !           354: 
        !           355: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           356: 
        !           357: /*
        !           358:  * (68881) loads from coprocessor registers into data registers
        !           359:  */
        !           360: 
        !           361: OPLTYPE|OP68881,       INTAREG|INAREG,
        !           362:        SANY,   TANY,
        !           363:        SCREG|STCREG,   TFLOAT,
        !           364:                NAREG,  RESC1,
        !           365:                "       fmoves  AR,A1\n",
        !           366: 
        !           367: OPLTYPE|OP68881,       INTAREG|INAREG,
        !           368:        SANY,   TANY,
        !           369:        SCREG|STCREG,   TDOUBLE,
        !           370:                NAREG,  RESC1,
        !           371: "      fmoved  AR,sp@-\n\
        !           372:        movl    sp@+,A1\n\
        !           373:        movl    sp@+,U1\n",
        !           374: 
        !           375: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           376: 
        !           377: /*
        !           378:  * loads into address-registers
        !           379:  */
        !           380: OPLTYPE,       INTBREG|INBREG,
        !           381:        SANY,   TANY,
        !           382:        SCON,   TSCALAR,
        !           383:                NBREG|NBSR,     RESC1,
        !           384:                "       lea     CR,A1\n",
        !           385: 
        !           386: OPLTYPE,       INTBREG|INBREG,
        !           387:        SANY,   TANY,
        !           388:        EA,     TWORD|TSHORT,
        !           389:                NBREG|NBSR,     RESC1,
        !           390:                "       movZB   AR,A1\n",
        !           391: 
        !           392: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           393: 
        !           394: /*
        !           395:  * stores into temp stack locations
        !           396:  */
        !           397: OPLTYPE,       INTEMP|FORCC,
        !           398:        SANY,   TANY,
        !           399:        EA,     TSCALAR,
        !           400:                NTEMP,  RESC1|RESCC,
        !           401:                "       movZB   AR,A1\n",
        !           402: 
        !           403: OPLTYPE,       INTEMP,
        !           404:        SANY,   TANY,
        !           405:        EA,     TFLOAT,
        !           406:                NTEMP,  RESC1,
        !           407:                "       movZB   AR,A1\n",
        !           408: 
        !           409: OPLTYPE,       INTEMP,
        !           410:        SANY,   TANY,
        !           411:        ED,     TDOUBLE,
        !           412:                2*NTEMP,        RESC1,
        !           413:                "       movl    AR,A1\n movl    UR,U1\n",
        !           414: 
        !           415: OPLTYPE|OP68881,       INTEMP,
        !           416:        SANY,   TANY,
        !           417:        SCREG|STCREG,   TFLOAT,
        !           418:                NTEMP,  RESC1,
        !           419:                "       fmoves  AR,A1\n",
        !           420: 
        !           421: OPLTYPE|OP68881,       INTEMP,
        !           422:        SANY,   TANY,
        !           423:        SCREG|STCREG,   TDOUBLE,
        !           424:                2*NTEMP,        RESC1,
        !           425:                "       fmoved  AR,A1\n",
        !           426: 
        !           427: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           428: 
        !           429: /*
        !           430:  * argument passing, integral types
        !           431:  */
        !           432: 
        !           433: OPLTYPE,       FORARG,
        !           434:        SANY,   TANY,
        !           435:        SBREG,  TINT|TUNSIGNED|TPOINT,
        !           436:                0,      RNULL,
        !           437:                "       pea     AR@\nZP",
        !           438: 
        !           439: OPLTYPE,       FORARG,
        !           440:        SANY,   TANY,
        !           441:        SCON,   TSCALAR,
        !           442:                0,      RNULL,
        !           443:                "       pea     CR\nZP",
        !           444: 
        !           445: OPLTYPE,       FORARG,
        !           446:        SANY,   TANY,
        !           447:        EA,     TINT|TUNSIGNED|TPOINT,
        !           448:                0,      RNULL,
        !           449:                "       movl    AR,Z-\n",
        !           450: 
        !           451: OPLTYPE,       FORARG,
        !           452:        SANY,   TANY,
        !           453:        EA,     TSHORT,
        !           454:                NBREG|NBSR,     RNULL,
        !           455:                "       movw    AR,A1\n movl    A1,Z-\n",
        !           456: 
        !           457: OPLTYPE,       FORARG,
        !           458:        SANY,   TANY,
        !           459:        EA,     TUSHORT,
        !           460:                NAREG,          RNULL,
        !           461:                "       clrl    A1\n    movw    AR,A1\n movl    A1,Z-\n",
        !           462: 
        !           463: OPLTYPE|NO68020,       FORARG,
        !           464:        SANY,   TANY,
        !           465:        EA,     TCHAR,
        !           466:                NAREG|NASR,     RNULL,
        !           467:                "       movb    AR,A1\n extw    A1\n    extl    A1\n    movl    A1,Z-\n",
        !           468: 
        !           469: OPLTYPE|OP68020,       FORARG,
        !           470:        SANY,   TANY,
        !           471:        EA,     TCHAR,
        !           472:                NAREG|NASR,     RNULL,
        !           473:                "       movb    AR,A1\n extbl   A1\n    movl    A1,Z-\n",
        !           474: 
        !           475: OPLTYPE,       FORARG,
        !           476:        SANY,   TANY,
        !           477:        EA,     TUCHAR,
        !           478:                NAREG,          RNULL,
        !           479:                "       clrl    A1\n    movb    AR,A1\n movl    A1,Z-\n",
        !           480: 
        !           481: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           482: 
        !           483: /*
        !           484:  * argument passing, floating types
        !           485:  */
        !           486: 
        !           487: OPLTYPE|OP68881,       FORARG,
        !           488:        SANY,   TANY,
        !           489:        SCREG|STCREG,   TFLOAT,
        !           490:                0,      RNULL,
        !           491:                "Zf",           /* can't tell from here whether to convert */
        !           492: 
        !           493: OPLTYPE|OP68881,       FORARG,
        !           494:        SANY,   TANY,
        !           495:        SCREG|STCREG,   TDOUBLE,
        !           496:                0,      RNULL,
        !           497:                "       fmoved  AR,Z-\n",
        !           498: 
        !           499: OPLTYPE,       FORARG,
        !           500:        SANY,   TANY,
        !           501:        EA,     TFLOAT,
        !           502:                0,      RNULL,
        !           503:                "Zf",           /* can't tell from here whether to convert */
        !           504: 
        !           505: OPLTYPE,       FORARG,
        !           506:        SANY,   TANY,
        !           507:        ED,     TDOUBLE,
        !           508:                0,      RNULL,
        !           509:                "       movl    UR,Z-\n movl    AR,Z-\n",
        !           510: 
        !           511: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           512: 
        !           513: /*
        !           514:  * field extraction, for value or condition codes
        !           515:  */
        !           516: FLD,           INAREG|INTAREG|FORCC,
        !           517:        SANY,   TANY,
        !           518:        SPEC_FLD,       TSCALAR,
        !           519:                NAREG,  RESC1|RESCC,
        !           520:                "Zb\n",
        !           521: 
        !           522: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           523: 
        !           524: /*
        !           525:  * compare integral operands, for flow control
        !           526:  */
        !           527: 
        !           528: OPLOG, FORCC,
        !           529:        SAREG|STAREG|SBREG|STBREG,      TSCALAR,
        !           530:        EA,     TSCALAR,
        !           531:                0,      RESCC,
        !           532:                "       cmpZL   AR,AL\nZI",
        !           533: 
        !           534: OPLOG, FORCC,
        !           535:        (EA)&~SCON,     TSCALAR,
        !           536:        SCON,   TSCALAR,
        !           537:                0,      RESCC,
        !           538:                "       cmpZL   AR,AL\nZI",
        !           539: 
        !           540: OPLOG, FORCC,
        !           541:        SAUTOINC,       TSCALAR,
        !           542:        SAUTOINC,       TSCALAR,
        !           543:                0,      RESCC,
        !           544:                "       cmpmZL  AR,AL\nZI",
        !           545: 
        !           546: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           547: 
        !           548: /*
        !           549:  * (68881) compare floating operands, for flow control.
        !           550:  * Note that the 68881 has a separate condition code register and
        !           551:  * requires a different set of branch instructions.
        !           552:  */
        !           553: 
        !           554: OPLOG|OP68881, FORCC,
        !           555:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           556:        SFZERO,         TFLOAT|TDOUBLE,
        !           557:                0,      RESFCC,
        !           558:                "       ftestZG AL\nZH",
        !           559: 
        !           560: OPLOG|OP68881, FORCC,
        !           561:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           562:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           563:                0,      RESFCC,
        !           564:                "       fcmpZF  ZK,AL\nZH",
        !           565: 
        !           566: OPLOG|OP68881, FORCC,
        !           567:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           568:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           569:                0,      RESFCC,
        !           570:                "       fcmpx   AR,AL\nZH",
        !           571: 
        !           572: OPLOG|OP68881, FORCC,
        !           573:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           574:        SAREG|STAREG,   TDOUBLE,
        !           575:                0,      RESFCC,
        !           576: "      movl    UR,Z-\n\
        !           577:        movl    AR,Z-\n\
        !           578:        fcmpd   sp@+,AL\nZH",
        !           579: 
        !           580: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           581: 
        !           582: /*
        !           583:  * (no 68881) compare floating operands, for flow control.
        !           584:  */
        !           585: OPLOG|NO68881, FORCC,
        !           586:        SPEC_FLT,       TFLOAT,
        !           587:        SPEC_FLT,       TFLOAT,
        !           588:                0,      RESCC,
        !           589:                "ZfZI",
        !           590: 
        !           591: OPLOG|NO68881, FORCC,
        !           592:        SPEC_FLT,       TDOUBLE,
        !           593:        SPEC_DFLT,      TDOUBLE,
        !           594:                NBREG,  RESCC,
        !           595:                "ZfZI",
        !           596: 
        !           597: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           598: 
        !           599: /*
        !           600:  * compare constant to field, for flow control
        !           601:  */
        !           602: OPLOG, FORCC,
        !           603:        SPEC_FLD,       TSCALAR,
        !           604:        SCON,   TSCALAR,
        !           605:                NAREG,  RESCC,
        !           606:                "Zc\nZI",       /* let ME do it */
        !           607: 
        !           608: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           609: 
        !           610: /*
        !           611:  * compare integral operands  for boolean result
        !           612:  */
        !           613: 
        !           614: OPLOG, INTAREG,
        !           615:        SAREG|STAREG|SBREG|STBREG,      TSCALAR,
        !           616:        EA,     TSCALAR,
        !           617:                NAREG, RESC1,
        !           618:                "       moveq   #0,A1\n cmpZL   AR,AL\n sI.     A1\n    negb    A1\n",  
        !           619: 
        !           620: OPLOG, INTAREG,
        !           621:        (EA)&~SCON,     TSCALAR,
        !           622:        SCON,   TSCALAR,
        !           623:                NAREG, RESC1,
        !           624:                "       moveq   #0,A1\n cmpZL   AR,AL\n sI.     A1\n    negb    A1\n",  
        !           625: 
        !           626: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           627: 
        !           628: /*
        !           629:  * (68881) compare floating operands for boolean result
        !           630:  */
        !           631: 
        !           632: OPLOG|OP68881, INTAREG,
        !           633:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           634:        SFZERO,         TFLOAT|TDOUBLE,
        !           635:                NAREG,  RESC1,
        !           636: "      moveq   #0,A1\n\
        !           637:        ftestZG AL\n\
        !           638:        fsI.    A1\n\
        !           639:        negb    A1\n",
        !           640: 
        !           641: OPLOG|OP68881, INTAREG,
        !           642:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           643:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           644:                NAREG,  RESC1,
        !           645: "      moveq   #0,A1\n\
        !           646:        fcmpZF  ZK,AL\n\
        !           647:        fsI.    A1\n\
        !           648:        negb    A1\n",
        !           649: 
        !           650: OPLOG|OP68881, INTAREG,
        !           651:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           652:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           653:                NAREG,  RESC1,
        !           654: "      moveq   #0,A1\n\
        !           655:        fcmpx   AR,AL\n\
        !           656:        fsI.    A1\n\
        !           657:        negb    A1\n",
        !           658: 
        !           659: OPLOG|OP68881, INTAREG,
        !           660:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !           661:        SAREG|STAREG,   TDOUBLE,
        !           662:                NAREG,  RESC1,
        !           663: "      moveq   #0,A1\n\
        !           664:        movl    UR,sp@-\n\
        !           665:        movl    AR,sp@-\n\
        !           666:        fcmpd   sp@+,AL\n\
        !           667:        fsI.    A1\n\
        !           668:        negb    A1\n",
        !           669: 
        !           670: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           671: 
        !           672: /*
        !           673:  * (no 68881) compare floating operands for boolean result
        !           674:  */
        !           675: OPLOG|NO68881, INTAREG,
        !           676:        SPEC_FLT,       TFLOAT,
        !           677:        SPEC_FLT,       TFLOAT,
        !           678:                NAREG,  RESC1,
        !           679:                "       moveq   #0,A1\nZf       sfI.    A1\n    negb    A1\n",
        !           680: 
        !           681: OPLOG|NO68881, INTAREG,
        !           682:        SPEC_FLT,       TDOUBLE,
        !           683:        SPEC_DFLT,      TDOUBLE,
        !           684:                NBREG+NAREG,    RESC1,
        !           685:                "       moveq   #0,A1\nZf       sfI.    A1\n    negb    A1\n",
        !           686: 
        !           687: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           688: 
        !           689: /*
        !           690:  * compare constant to field, for boolean result
        !           691:  */
        !           692: OPLOG, INTAREG,
        !           693:        SPEC_FLD,       TSCALAR,
        !           694:        SCON,   TSCALAR,
        !           695:                2*NAREG,        RESC2,
        !           696:                "       moveq   #0,A2\nZc\n     sI.     A2\n    negb    A2\n",
        !           697: 
        !           698: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           699: 
        !           700: /*
        !           701:  * convert floating point condition codes into boolean result
        !           702:  */
        !           703: FCCODES|OP68881,       INTAREG|INAREG,
        !           704:        SANY,   TANY,
        !           705:        SANY,   TANY,
        !           706:                NAREG,  RESC1,
        !           707:                "       moveq   #1,A1\nZN",
        !           708: 
        !           709: /*
        !           710:  * convert integer condition codes into boolean result
        !           711:  */
        !           712: CCODES,        INTAREG|INAREG,
        !           713:        SANY,   TANY,
        !           714:        SANY,   TANY,
        !           715:                NAREG,  RESC1,
        !           716:                "       moveq   #1,A1\nZN",
        !           717: 
        !           718: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           719: 
        !           720: /*
        !           721:  * negate scalar in temp register
        !           722:  */
        !           723: UNARY MINUS,   INAREG|INTAREG,
        !           724:        STAREG, TSCALAR,
        !           725:        SANY,   TANY,
        !           726:                0,      RLEFT,
        !           727:                "       negZB   AL\n",
        !           728: 
        !           729: /*
        !           730:  * negate floating operand in temp data register.
        !           731:  */
        !           732: UNARY MINUS,   INAREG|INTAREG,
        !           733:        STAREG, TFLOAT|TDOUBLE,
        !           734:        SANY,   TANY,
        !           735:                0,      RLEFT,
        !           736:                "Zf",
        !           737: 
        !           738: UNARY MINUS,   INAREG|INTAREG,
        !           739:        EA&~STAREG,     TFLOAT,
        !           740:        SANY,   TANY,
        !           741:                NAREG|NASL,     RESC1,
        !           742:                "       movl    AL,A1\n bchg    #31,A1\n",
        !           743: 
        !           744: UNARY MINUS,   INAREG|INTAREG,
        !           745:        EA&~STAREG,     TDOUBLE,
        !           746:        SANY,   TANY,
        !           747:                NAREG|NASL,     RESC1,
        !           748:                "       movl    AL,A1\n movl    UL,U1\n bchg    #31,A1\n",
        !           749: 
        !           750: /*
        !           751:  * negate floating operand in floating point register
        !           752:  */
        !           753: (UNARY MINUS)|OP68881, INCREG|INTCREG,
        !           754:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           755:        SANY,   TANY,
        !           756:                NCREG|NCSL,     RESC1,
        !           757:                "       fnegZF  ZK,A1\n",
        !           758: 
        !           759: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           760: 
        !           761: /*
        !           762:  * absolute value in temp data register
        !           763:  */
        !           764: FABS,  INAREG|INTAREG,
        !           765:        STAREG, TFLOAT|TDOUBLE,
        !           766:        SANY,   TANY,
        !           767:                0,      RLEFT,
        !           768:                "       bclr    #31,AL\n",
        !           769: 
        !           770: FABS,  INAREG|INTAREG,
        !           771:        EA&~STAREG,     TFLOAT,
        !           772:        SANY,   TANY,
        !           773:                NAREG|NASL,     RESC1,
        !           774:                "       movl    AL,A1\n bclr    #31,A1\n",
        !           775: 
        !           776: FABS,  INAREG|INTAREG,
        !           777:        EA&~STAREG,     TDOUBLE,
        !           778:        SANY,   TANY,
        !           779:                NAREG|NASL,     RESC1,
        !           780:                "       movl    AL,A1\n movl    UL,U1\n bclr    #31,A1\n",
        !           781: 
        !           782: /*
        !           783:  * floating=>integer conversion -- at present, these are
        !           784:  * only generated by FORTRAN and Pascal -- but see also
        !           785:  * SCONV below.
        !           786:  */
        !           787: FNINT|OP68881, INAREG|INTAREG,
        !           788:        STCREG, TFLOAT|TDOUBLE,
        !           789:        SANY,   TSCALAR,
        !           790:                NAREG,  RESC1,
        !           791:                "Zf",
        !           792: 
        !           793: FNINT|NO68881, INAREG|INTAREG,
        !           794:        STAREG, TFLOAT|TDOUBLE,
        !           795:        SANY,   TSCALAR,
        !           796:                0,      RLEFT,
        !           797:                "Zf",
        !           798: 
        !           799: /*
        !           800:  * floating point intrinsics (sin, cos, exp, log, ...)
        !           801:  */
        !           802: OPINTR|OP68881,        INCREG|INTCREG,
        !           803:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !           804:        SANY,   TANY,
        !           805:                NCREG|NCSL,     RESC1,
        !           806:                "Zf",
        !           807: 
        !           808: OPINTR|OP68881,        INCREG|INTCREG,
        !           809:        SAREG|STAREG,   TDOUBLE,
        !           810:        SANY,   TANY,
        !           811:                NCREG|NCSL,     RESC1,
        !           812:                "Zf",
        !           813: 
        !           814: OPINTR|NO68881,        INAREG|INTAREG,
        !           815:        STAREG, TFLOAT|TDOUBLE,
        !           816:        SANY,   TANY,
        !           817:                0,      RLEFT,
        !           818:                "Zf",
        !           819: 
        !           820: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           821: 
        !           822: /*
        !           823:  * one's complement of temp d-register
        !           824:  */
        !           825: COMPL, INTAREG|FORCC,
        !           826:        STAREG, TSCALAR,
        !           827:        SANY,   TANY,
        !           828:                0,      RLEFT|RESCC,
        !           829:                "       notZB   AL\n",
        !           830: 
        !           831: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           832: 
        !           833: /*
        !           834:  * increment/decrement operators
        !           835:  */
        !           836: 
        !           837: INCR,  INTAREG|INAREG|FOREFF,
        !           838:        EAA,    TSCALAR,
        !           839:        S8CON,  TSCALAR,
        !           840:                NAREG,  RESC1,
        !           841:                "F      movZB   AL,A1\n addqZB  AR,AL\nZv",
        !           842: 
        !           843: DECR,  INTAREG|INAREG|FOREFF,
        !           844:        EAA,    TSCALAR,
        !           845:        S8CON,  TSCALAR,
        !           846:                NAREG,  RESC1,
        !           847:                "F      movZB   AL,A1\n subqZB  AR,AL\nZv",
        !           848: 
        !           849: INCR,  INTAREG|INAREG|FOREFF,
        !           850:        EAA,    TSCALAR,
        !           851:        SCON,   TSCALAR,
        !           852:                NAREG,  RESC1,
        !           853:                "F      movZB   AL,A1\n addZB   AR,AL\nZv",
        !           854: 
        !           855: DECR,  INTAREG|INAREG|FOREFF,
        !           856:        EAA,    TSCALAR,
        !           857:        SCON,   TSCALAR,
        !           858:                NAREG,  RESC1,
        !           859:                "F      movZB   AL,A1\n subZB   AR,AL\nZv",
        !           860: 
        !           861: INCR,  INTBREG|INBREG|FOREFF,
        !           862:        EB,     TSCALAR,
        !           863:        S8CON,  TSCALAR,
        !           864:                NBREG,  RESC1,
        !           865:                "F      movZB   AL,A1\n addqZB  AR,AL\n",
        !           866: 
        !           867: DECR,  INTBREG|INBREG|FOREFF,
        !           868:        EB,     TSCALAR,
        !           869:        S8CON,  TSCALAR,
        !           870:                NBREG,  RESC1,
        !           871:                "F      movZB   AL,A1\n subqZB  AR,AL\n",
        !           872: 
        !           873: INCR,  INTBREG|INBREG|FOREFF,
        !           874:        EB,     TSCALAR,
        !           875:        SCON,   TSCALAR,
        !           876:                NBREG,  RESC1,
        !           877:                "F      movZB   AL,A1\n addZB   AR,AL\n",
        !           878: 
        !           879: DECR,  INTBREG|INBREG|FOREFF,
        !           880:        EB,     TSCALAR,
        !           881:        SCON,   TSCALAR,
        !           882:                NBREG,  RESC1,
        !           883:                "F      movZB   AL,A1\n subZB   AR,AL\n",
        !           884: 
        !           885: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           886: 
        !           887: /*
        !           888:  * address expressions ( base + offset [+ index] )
        !           889:  */
        !           890: PLUS,          INBREG|INTBREG,
        !           891:        SBREG,  TPOINT,
        !           892:        SSCON,  TANY,
        !           893:                NBREG|NBSL,     RESC1,
        !           894:                "       lea     AL@(ZO),A1\n",
        !           895: 
        !           896: PLUS,          INBREG|INTBREG,
        !           897:        SBREG,  TPOINT,
        !           898:        SAREG|SBREG,    TWORD|TSHORT,
        !           899:                NBREG|NBSL,     RESC1,
        !           900:                "Zl",
        !           901: 
        !           902: PLUS,          INBREG|INTBREG,
        !           903:        SBASE,  TPOINT,
        !           904:        SXREG,  TWORD|TSHORT,
        !           905:                NBREG|NBSL,     RESC1,
        !           906:                "       lea     ZX,A1\n",
        !           907: 
        !           908: PLUS,          FORARG,
        !           909:        SBREG,  TPOINT,
        !           910:        SSCON,  TANY,
        !           911:                0,      RNULL,
        !           912:                "       pea     AL@(ZO)\nZP",
        !           913: 
        !           914: PLUS,          FORARG,
        !           915:        SBREG,  TPOINT,
        !           916:        SAREG,  TWORD|TSHORT,
        !           917:                0,      RNULL,
        !           918:                "       pea     AL@(0,AR:ZR)\nZP",
        !           919: 
        !           920: PLUS,          FORARG,
        !           921:        SBASE,  TPOINT,
        !           922:        SXREG,  TWORD|TSHORT,
        !           923:                0,      RNULL,
        !           924:                "       pea     ZX\nZP",
        !           925: 
        !           926: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           927: 
        !           928: MINUS,         INBREG|INTBREG,
        !           929:        SBREG,  TPOINT,
        !           930:        SSCON,  TANY,
        !           931:                NBREG|NBSL,     RESC1,
        !           932:                "       lea     AL@(ZM),A1\n",
        !           933: 
        !           934: MINUS,         FORARG,
        !           935:        SBREG,  TPOINT,
        !           936:        SSCON,  TANY,
        !           937:                0,      RNULL,
        !           938:                "       pea     AL@(ZM)\nZP",
        !           939: 
        !           940: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           941: 
        !           942: ASG PLUS,      INAREG|FORCC,
        !           943:        EAA,    TSCALAR,
        !           944:        S8CON,  TSCALAR,
        !           945:                0,      RLEFT|RESCC,
        !           946:                "       addqZB  AR,AL\nZv",
        !           947: 
        !           948: ASG PLUS,      INBREG,
        !           949:        EB,     TSCALAR,
        !           950:        S8CON,  TSCALAR,
        !           951:                0,      RLEFT|RESCC,
        !           952:                "       addqw   AR,AL\n",
        !           953: 
        !           954: ASG PLUS,      INAREG|FORCC,
        !           955:        SAREG|STAREG,   TSCALAR,
        !           956:        EAA,    TSCALAR,
        !           957:                0,      RLEFT|RESCC,
        !           958:                "       addZB   AR,AL\nZv",
        !           959: 
        !           960: ASG PLUS,      INAREG|FORCC,
        !           961:        SAREG|STAREG,   TWORD|TSHORT,
        !           962:        EB,     TWORD|TSHORT,
        !           963:                0,      RLEFT|RESCC,
        !           964:                "       addZB   AR,AL\nZv",
        !           965: 
        !           966: ASG PLUS,      INBREG,
        !           967:        SBREG|STBREG,   TSCALAR,
        !           968:        SICON,  TANY,
        !           969:                0,      RLEFT,
        !           970:                "       lea     AL@(CR),AL\n",
        !           971: 
        !           972: ASG PLUS,      INBREG,
        !           973:        SBREG|STBREG,   TSCALAR,
        !           974:        EA,     TWORD|TSHORT,
        !           975:                0,      RLEFT,
        !           976:                "       addZR   AR,AL\n",
        !           977: 
        !           978: ASG PLUS,      INAREG|FORCC,
        !           979:        EAA,    TSCALAR,
        !           980:        SAREG|STAREG,   TSCALAR,
        !           981:                0,      RLEFT|RESCC,
        !           982:                "       addZB   AR,AL\nZv",
        !           983: 
        !           984: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !           985: 
        !           986: ASG MINUS,     INAREG|FORCC,
        !           987:        EAA,    TSCALAR,
        !           988:        S8CON,  TSCALAR,
        !           989:                0,      RLEFT|RESCC,
        !           990:                "       subqZB  AR,AL\nZv",
        !           991: 
        !           992: ASG MINUS,     INBREG,
        !           993:        EB,     TSCALAR,
        !           994:        S8CON,  TSCALAR,
        !           995:                0,      RLEFT|RESCC,
        !           996:                "       subqw   AR,AL\n",
        !           997: 
        !           998: ASG MINUS,     INBREG,
        !           999:        SBREG|STBREG,   TSCALAR,
        !          1000:        SICON,  TANY,
        !          1001:                0,      RLEFT,
        !          1002:                "       lea     AL@(ZM),AL\n",
        !          1003: 
        !          1004: ASG MINUS,     INAREG|FORCC,
        !          1005:        SAREG|STAREG,   TSCALAR,
        !          1006:        EAA,    TSCALAR,
        !          1007:                0,      RLEFT|RESCC,
        !          1008:                "       subZB   AR,AL\nZv",
        !          1009: 
        !          1010: ASG MINUS,     INAREG|FORCC,
        !          1011:        SAREG|STAREG,   TWORD|TSHORT,
        !          1012:        EB,     TWORD|TSHORT,
        !          1013:                0,      RLEFT|RESCC,
        !          1014:                "       subZB   AR,AL\nZv",
        !          1015: 
        !          1016: ASG MINUS,     INBREG,
        !          1017:        SBREG|STBREG,   TSCALAR,
        !          1018:        EA,     TWORD|TSHORT,
        !          1019:                0,      RLEFT,
        !          1020:                "       subZR   AR,AL\n",
        !          1021: 
        !          1022: ASG MINUS,     INAREG|FORCC,
        !          1023:        EAA,    TSCALAR,
        !          1024:        SAREG|STAREG,   TSCALAR,
        !          1025:                0,      RLEFT|RESCC,
        !          1026:                "       subZB   AR,AL\nZv",
        !          1027: 
        !          1028: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1029: 
        !          1030: ASG ER,        INAREG|FORCC,
        !          1031:        EAA,    TSCALAR,
        !          1032:        SCON,   TSCALAR,
        !          1033:                0,      RLEFT|RESCC,
        !          1034:                "       eorZB   AR,AL\n",
        !          1035: 
        !          1036: ASG ER,        INAREG|FORCC,
        !          1037:        EAA,    TSCALAR,
        !          1038:        SAREG|STAREG,   TSCALAR,
        !          1039:                0,      RLEFT|RESCC,
        !          1040:                "       eorZB   AR,AL\nZv",
        !          1041: 
        !          1042: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1043: 
        !          1044: ASG OPSIMP,    INAREG|FORCC,
        !          1045:        SAREG|STAREG,   TSCALAR,
        !          1046:        EAA,    TSCALAR,
        !          1047:                0,      RLEFT|RESCC,
        !          1048:                "       OIZB    AR,AL\nZv",
        !          1049: 
        !          1050: ASG OPSIMP,    INAREG|FORCC,
        !          1051:        EAA,    TSCALAR,
        !          1052:        SCON,   TSCALAR,
        !          1053:                0,      RLEFT|RESCC,
        !          1054:                "       OIZB    AR,AL\nZv",
        !          1055: 
        !          1056: ASG OPSIMP,    INAREG|FORCC,
        !          1057:        EAA,    TSCALAR,
        !          1058:        SAREG|STAREG,   TSCALAR,
        !          1059:                0,      RLEFT|RESCC,
        !          1060:                "       OIZB    AR,AL\nZv",
        !          1061: 
        !          1062: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1063: 
        !          1064: /*
        !          1065:  * floating ASG binary operators
        !          1066:  */
        !          1067: 
        !          1068: (ASG OPFLOAT)|OP68881, INCREG|INTCREG|FOREFF,
        !          1069:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !          1070:        SFLOAT_SRCE,    TFLOAT|TDOUBLE,
        !          1071:                0,      RLEFT,
        !          1072:                "       OFZF    ZK,AL\n",
        !          1073: 
        !          1074: (ASG OPFLOAT)|OP68881, INCREG|INTCREG|FOREFF,
        !          1075:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !          1076:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !          1077:                0,      RLEFT,
        !          1078:                "       OFx     AR,AL\n",
        !          1079: 
        !          1080: (ASG OPFLOAT)|NO68881, INAREG|INTAREG|FOREFF,
        !          1081:        SPEC_FLT,       TFLOAT,
        !          1082:        SPEC_FLT,       TFLOAT,
        !          1083:                0,      RLEFT,
        !          1084:                "Zf",
        !          1085: 
        !          1086: (ASG OPFLOAT)|NO68881, INAREG|INTAREG|FOREFF,
        !          1087:        SPEC_FLT,       TDOUBLE,
        !          1088:        SPEC_DFLT,      TDOUBLE,
        !          1089:                NBREG,  RLEFT,
        !          1090:                "Zf",
        !          1091: 
        !          1092: (ASG PLUS)|NO68881,    INAREG|INTAREG|FOREFF,
        !          1093:        SPEC_FLT,       TFLOAT,
        !          1094:        SPEC_PVT,       TFLOAT,
        !          1095:                0,      RLEFT,
        !          1096:                "Zf",
        !          1097: 
        !          1098: (ASG PLUS)|NO68881,    INAREG|INTAREG|FOREFF,
        !          1099:        SPEC_FLT,       TDOUBLE,
        !          1100:        SPEC_PVT,       TDOUBLE,
        !          1101:                NBREG,  RLEFT,
        !          1102:                "Zf",
        !          1103: 
        !          1104: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1105: 
        !          1106: /*
        !          1107:  * floating binary operators
        !          1108:  */
        !          1109: 
        !          1110: OPFLOAT|NO68881,       INAREG|INTAREG,
        !          1111:        SPEC_FLT,       TFLOAT,
        !          1112:        SPEC_FLT,       TFLOAT,
        !          1113:                NAREG|NASL|NASR,        RESC1,
        !          1114:                "Zf",
        !          1115: 
        !          1116: OPFLOAT|NO68881,       INAREG|INTAREG,
        !          1117:        SPEC_FLT,       TDOUBLE,
        !          1118:        SPEC_DFLT,      TDOUBLE,
        !          1119:                NAREG|NBREG|NASL|NASR,  RESC1,
        !          1120:                "Zf",
        !          1121: 
        !          1122: PLUS|NO68881,  INAREG|INTAREG,
        !          1123:        SPEC_FLT,       TFLOAT,
        !          1124:        SPEC_PVT,       TFLOAT,
        !          1125:                NAREG|NASL|NASR,        RESC1,
        !          1126:                "Zf",
        !          1127: 
        !          1128: PLUS|NO68881,  INAREG|INTAREG,
        !          1129:        SPEC_FLT,       TDOUBLE,
        !          1130:        SPEC_PVT,       TDOUBLE,
        !          1131:                NAREG|NBREG|NASL|NASR,  RESC1,
        !          1132:                "Zf",
        !          1133: 
        !          1134: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1135: 
        !          1136: ASG MUL,       INAREG|INTAREG|FOREFF,
        !          1137:        SAREG|STAREG,   TCHAR,
        !          1138:        SCON,           TANY,
        !          1139:                NAREG,  RLEFT,
        !          1140:                "       extw    AL\nZm",
        !          1141: 
        !          1142: ASG MUL,       INAREG|INTAREG|FOREFF,
        !          1143:        SAREG|STAREG,   TUCHAR,
        !          1144:        SCON,           TANY,
        !          1145:                NAREG,  RLEFT,
        !          1146:                "       andw    #255,AL\nZm",
        !          1147: 
        !          1148: ASG MUL,       INAREG|INTAREG|FOREFF,
        !          1149:        SAREG|STAREG,   TWORD|TSHORT|TUSHORT,
        !          1150:        SCON,           TANY,
        !          1151:                NAREG,  RLEFT,
        !          1152:                "Zm",
        !          1153: 
        !          1154: ASG MUL,       INAREG|FORCC|FOREFF,
        !          1155:        SAREG|STAREG,   TSHORT,
        !          1156:        EAA,    TSHORT,
        !          1157:                0,      RLEFT|RESCC,
        !          1158:                "       muls    AR,AL\n",
        !          1159: 
        !          1160: ASG MUL,       INAREG|FORCC|FOREFF,
        !          1161:        SAREG|STAREG,   TUSHORT,
        !          1162:        EAA,    TUSHORT|TSHORT,
        !          1163:                0,      RLEFT|RESCC,
        !          1164:                "       mulu    AR,AL\n",
        !          1165: 
        !          1166: ASG MUL,       INAREG|FORCC|FOREFF,
        !          1167:        SAREG|STAREG,   TSHORT,
        !          1168:        EAA,    TUSHORT,
        !          1169:                0,      RLEFT|RESCC,
        !          1170:                "       mulu    AR,AL\n",
        !          1171: 
        !          1172: ASG MUL,       INAREG|INTAREG|FOREFF,
        !          1173:        SAREG|STAREG,   TCHAR,
        !          1174:        EAA,    TCHAR,
        !          1175:                NAREG,  RLEFT,
        !          1176:                "\textw AL\n\tmovb      AR,A1\n\textw   A1\n\tmuls      A1,AL\n",
        !          1177: 
        !          1178: ASG MUL,       INAREG|INTAREG|FOREFF,
        !          1179:        SAREG|STAREG,   TUCHAR,
        !          1180:        EAA,    TUCHAR|TCHAR,
        !          1181:                NAREG,  RLEFT,
        !          1182:                "\tandw #255,AL\n\tclrw A1\n\tmovb      AR,A1\n\tmuls   A1,AL\n",
        !          1183: 
        !          1184: (ASG MUL)|NO68020,     INTAREG|FOREFF,
        !          1185:        STAREG, TPOINT|TLONG|TINT,
        !          1186:        STAREG, TPOINT|TLONG|TINT,
        !          1187:                0,      RLEFT,
        !          1188:                "       jsr     lmult\nZv",
        !          1189: 
        !          1190: (ASG MUL)|NO68020,     INTAREG|FOREFF,
        !          1191:        STAREG, TWORD,
        !          1192:        STAREG, TWORD,
        !          1193:                0,      RLEFT,
        !          1194:                "       jsr     ulmult\nZv",
        !          1195: 
        !          1196: (ASG MUL)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1197:        SAREG|STAREG,   TPOINT|TLONG|TINT,
        !          1198:        EAA,    TPOINT|TLONG|TINT,
        !          1199:                0,      RLEFT,
        !          1200:                "       mulsl   AR,AL\nZv",
        !          1201: 
        !          1202: (ASG MUL)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1203:        SAREG|STAREG,   TWORD,
        !          1204:        EAA,    TWORD,
        !          1205:                0,      RLEFT,
        !          1206:                "       mulul   AR,AL\nZv",
        !          1207: 
        !          1208: (ASG MUL)|NO68881,     INAREG|FOREFF,
        !          1209:        STAREG, TFLOAT,
        !          1210:        STAREG, TFLOAT,
        !          1211:                0,      RLEFT,
        !          1212:                "Zf",
        !          1213: 
        !          1214: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1215: 
        !          1216: ASG DIV,       INAREG|INTAREG|FOREFF,
        !          1217:        SAREG|STAREG,   ANYSIGNED,
        !          1218:        SCON,   TANY,
        !          1219:                0,      RLEFT|RNULL,
        !          1220:                "Zd",
        !          1221: 
        !          1222: ASG DIV,       INAREG|INTAREG|FORCC|FOREFF,
        !          1223:        SAREG|STAREG,   TSHORT,
        !          1224:        EAA,    TSHORT,
        !          1225:                0,      RLEFT|RESCC,
        !          1226:                "       extl    AL\n    divs    AR,AL\n",
        !          1227: 
        !          1228: ASG DIV,       INAREG|INTAREG|FORCC|FOREFF,
        !          1229:        SAREG|STAREG,   TUSHORT,
        !          1230:        EAA,    TUSHORT|TSHORT,
        !          1231:                0,      RLEFT|RESCC,
        !          1232:                "       andl    #0xffff,AL\n    divu    AR,AL\n",
        !          1233: 
        !          1234: ASG DIV,       INAREG|INTAREG|FORCC|FOREFF,
        !          1235:        SAREG|STAREG,   TSHORT,
        !          1236:        EAA,    TUSHORT,
        !          1237:                0,      RLEFT|RESCC,
        !          1238:                "       andl    #0xffff,AL\n    divu    AR,AL\n",
        !          1239: 
        !          1240: (ASG DIV)|NO68020,     INTAREG|INAREG|FOREFF,
        !          1241:        SAREG|STAREG,   TCHAR,
        !          1242:        EAA,    TCHAR,
        !          1243:                NAREG,  RLEFT,
        !          1244: "      extw    AL\n\
        !          1245:        extl    AL\n\
        !          1246:        movb    AR,A1\n\
        !          1247:        extw    A1\n\
        !          1248:        divs    A1,AL\n",
        !          1249: 
        !          1250: (ASG DIV)|OP68020,     INTAREG|INAREG|FOREFF,
        !          1251:        SAREG|STAREG,   TCHAR,
        !          1252:        EAA,    TCHAR,
        !          1253:                NAREG,  RLEFT,
        !          1254: "      extbl   AL\n\
        !          1255:        movb    AR,A1\n\
        !          1256:        extw    A1\n\
        !          1257:        divs    A1,AL\n",
        !          1258: 
        !          1259: ASG DIV,       INTAREG|INAREG|FOREFF,
        !          1260:        SAREG|STAREG,   TUCHAR,
        !          1261:        EAA,    TUCHAR|TCHAR,
        !          1262:                NAREG,  RLEFT,
        !          1263:                "\tandw #255,AL\n\tclrw A1\n\tmovb      AR,A1\n\tdivs   A1,AL\n",
        !          1264: 
        !          1265: (ASG DIV)|NO68020,     INTAREG|FOREFF,
        !          1266:        STAREG, ANYSIGNED,
        !          1267:        STAREG, ANYSIGNED,
        !          1268:                0,      RLEFT,
        !          1269:                "       jsr     ldivt\n",
        !          1270: 
        !          1271: (ASG DIV)|NO68020,     INTAREG|FOREFF,
        !          1272:        STAREG, TWORD,
        !          1273:        STAREG, TWORD,
        !          1274:                0,      RLEFT,
        !          1275:                "       jsr     uldivt\n",
        !          1276: 
        !          1277: (ASG DIV)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1278:        SAREG|STAREG,   ANYSIGNED,
        !          1279:        EAA,    ANYSIGNED,
        !          1280:                0,      RLEFT,
        !          1281:                "       divsl   AR,AL\n",
        !          1282: 
        !          1283: (ASG DIV)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1284:        SAREG|STAREG,   TWORD,
        !          1285:        EAA,    TWORD,
        !          1286:                0,      RLEFT,
        !          1287:                "       divul   AR,AL\n",
        !          1288: 
        !          1289: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1290: 
        !          1291: /*
        !          1292:  * <areg> %= <constant, not a power of 2>.
        !          1293:  * This case has two templates before the "Zr" case, so that we can
        !          1294:  * generate a div.ll instruction with the remainder returned in RESC1
        !          1295:  * instead of RLEFT, thus saving a register-register move. whoop-te-doo
        !          1296:  */
        !          1297: 
        !          1298: (ASG MOD)|OP68020,     INAREG|INTAREG,
        !          1299:        STAREG, TINT|TLONG,
        !          1300:        SNONPOW2,       TANY,
        !          1301:                NAREG,  RESC1,
        !          1302:                "       divsll  AR,A1:AL\n",
        !          1303: 
        !          1304: (ASG MOD)|OP68020,     INAREG|INTAREG,
        !          1305:        STAREG, TUNSIGNED|TULONG,
        !          1306:        SNONPOW2,       TANY,
        !          1307:                NAREG,  RESC1,
        !          1308:                "       divull  AR,A1:AL\n",
        !          1309: 
        !          1310: ASG MOD,       INAREG|INTAREG|FOREFF,
        !          1311:        SAREG|STAREG,   ANYFIXED,
        !          1312:        SCON,   TANY,
        !          1313:                NAREG,  RLEFT|RNULL,
        !          1314:                "Zr",
        !          1315: 
        !          1316: ASG MOD,       INTAREG|INAREG|FOREFF,
        !          1317:        SAREG|STAREG,   TSHORT,
        !          1318:        EAA,    TSHORT,
        !          1319:                0,      RLEFT,
        !          1320:                "       extl    AL\n    divs    AR,AL\n swap    AL\n",
        !          1321: 
        !          1322: ASG MOD,       INTAREG|INAREG|FOREFF,
        !          1323:        SAREG|STAREG,   TUSHORT,
        !          1324:        EAA,    TUSHORT|TSHORT,
        !          1325:                0,      RLEFT,
        !          1326:                "       andl    #65535,AL\n     divu    AR,AL\n swap    AL\n",
        !          1327: 
        !          1328: ASG MOD,       INTAREG|INAREG|FOREFF,
        !          1329:        SAREG|STAREG,   TSHORT,
        !          1330:        EAA,    TUSHORT,
        !          1331:                0,      RLEFT,
        !          1332:                "       andl    #65535,AL\n     divu    AR,AL\n swap    AL\n",
        !          1333: 
        !          1334: ASG MOD,       INTAREG|INAREG|FOREFF,
        !          1335:        SAREG|STAREG,   TCHAR,
        !          1336:        EAA,    TCHAR,
        !          1337:                NAREG,  RLEFT,
        !          1338: "      extw    AL\n\
        !          1339:        movb    AR,A1\n\
        !          1340:        extw    A1\n\
        !          1341:        divs    A1,AL\n\
        !          1342:        swap    AL\n",
        !          1343: 
        !          1344: ASG MOD,       INTAREG|INAREG|FOREFF,
        !          1345:        SAREG|STAREG,   TUCHAR,
        !          1346:        EAA,    TUCHAR|TCHAR,
        !          1347:                NAREG,  RLEFT,
        !          1348:                "\tandw #255,AL\n\tclrw A1\n\tmovb      AR,A1\n\tdivs   A1,AL\n swap    AL\n",
        !          1349: 
        !          1350: (ASG MOD)|NO68020,     INTAREG|FOREFF,
        !          1351:        STAREG, ANYSIGNED,
        !          1352:        STAREG, ANYSIGNED,
        !          1353:                0,      RLEFT,
        !          1354:                "       jsr     lmodt\n",
        !          1355: 
        !          1356: (ASG MOD)|NO68020,     INTAREG|FOREFF,
        !          1357:        STAREG, TWORD,
        !          1358:        STAREG, TWORD,
        !          1359:                0,      RLEFT,
        !          1360:                "       jsr     ulmodt\n",
        !          1361: 
        !          1362: (ASG MOD)|OP68020,     INAREG|INTAREG,
        !          1363:        STAREG, ANYSIGNED,
        !          1364:        EAA,    ANYSIGNED,
        !          1365:                NAREG|NASR,     RESC1,
        !          1366:                "       divsll  AR,A1:AL\n",
        !          1367: 
        !          1368: (ASG MOD)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1369:        SAREG|STAREG,   ANYSIGNED,
        !          1370:        EAA,    ANYSIGNED,
        !          1371:                NAREG|NASR,     RLEFT,
        !          1372:                "       divsll  AR,A1:AL\n      movl    A1,AL\n",
        !          1373: 
        !          1374: (ASG MOD)|OP68020,     INAREG|INTAREG,
        !          1375:        STAREG, TWORD,
        !          1376:        EAA,    TWORD,
        !          1377:                NAREG|NASR,     RESC1,
        !          1378:                "       divull  AR,A1:AL\n",
        !          1379: 
        !          1380: (ASG MOD)|OP68020,     INAREG|INTAREG|FOREFF,
        !          1381:        SAREG|STAREG,   TWORD,
        !          1382:        EAA,    TWORD,
        !          1383:                NAREG|NASR,     RLEFT,
        !          1384:                "       divull  AR,A1:AL\n      movl    A1,AL\n",
        !          1385: 
        !          1386: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1387: 
        !          1388: ASG OPSHFT,    FOREFF,
        !          1389:        SNAME|SOREG|STARREG,    TSHORT,
        !          1390:        SONE,   TSCALAR,
        !          1391:                0,      RLEFT,
        !          1392:                "       aOIw    AL\n",
        !          1393: 
        !          1394: ASG OPSHFT,    INAREG|FOREFF,
        !          1395:        SAREG,  TINT|TSHORT|TCHAR,
        !          1396:        S8CON,  TSCALAR,
        !          1397:                0,      RLEFT,
        !          1398:                "       aOIZB   AR,AL\n",
        !          1399: 
        !          1400: ASG OPSHFT,    INAREG|FOREFF,
        !          1401:        SAREG,  TINT|TSHORT|TCHAR,
        !          1402:        SAREG,  TSCALAR,
        !          1403:                0,      RLEFT,
        !          1404:                "       aOIZB   AR,AL\n",
        !          1405: 
        !          1406: /* ASG OPSHFT,         INAREG|FOREFF, */
        !          1407: ASG OPSHFT,    FOREFF,
        !          1408:        SNAME|SOREG|STARREG,    TUSHORT,
        !          1409:        SONE,   TSCALAR,
        !          1410:                0,      RLEFT,
        !          1411:                "       lOIw    AL\n",
        !          1412: 
        !          1413: ASG OPSHFT,    INAREG|FOREFF,
        !          1414:        SAREG,  TUNSIGNED|TUSHORT|TUCHAR,
        !          1415:        S8CON,  TSCALAR,
        !          1416:                0,      RLEFT,
        !          1417:                "       lOIZB   AR,AL\n",
        !          1418: 
        !          1419: ASG OPSHFT,    INAREG|FOREFF,
        !          1420:        SAREG,  TUNSIGNED|TUSHORT|TUCHAR,
        !          1421:        SAREG,  TSCALAR,
        !          1422:                0,      RLEFT,
        !          1423:                "       lOIZB   AR,AL\n",
        !          1424: 
        !          1425: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1426: 
        !          1427: UNARY CALL,    INTAREG,
        !          1428:        SBREG|SNAME|SOREG|SCON|SAREG,   TANY,
        !          1429:        SANY,   TANY,
        !          1430:                NAREG|NASL,     RESC1, /* should be register 0 */
        !          1431:                "ZC\n",
        !          1432: 
        !          1433: CHK,           INAREG,
        !          1434:        SAREG,  TSHORT|TWORD,
        !          1435:        SZEROLB,        TANY,
        !          1436:                0,      RLEFT,
        !          1437:                "ZV",
        !          1438: 
        !          1439: CHK,           INTAREG,
        !          1440:        STAREG, TSCALAR,
        !          1441:        SANY,   TANY,
        !          1442:                0,      RLEFT,
        !          1443:                "ZV",
        !          1444: 
        !          1445: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1446: 
        !          1447: /*
        !          1448:  * conversions, from and to integer types
        !          1449:  */
        !          1450: SCONV, INTAREG,
        !          1451:        STAREG, TINT|TUNSIGNED|TPOINT,
        !          1452:        SANY,   TINT|TUNSIGNED|TPOINT,
        !          1453:                0,      RLEFT,
        !          1454:                "",
        !          1455: 
        !          1456: SCONV, INAREG|INTAREG,
        !          1457:        STAREG, TINT|TUNSIGNED|TPOINT,
        !          1458:        SANY,   TSHORT|TCHAR|TUSHORT|TUCHAR,
        !          1459:                0,      RLEFT,
        !          1460:                "",
        !          1461: 
        !          1462: SCONV, INAREG|INTAREG,
        !          1463:        SAREG,  TINT|TUNSIGNED|TPOINT,
        !          1464:        SANY,   TSHORT|TCHAR|TUSHORT|TUCHAR,
        !          1465:                NAREG|NASL,     RESC1,
        !          1466:                "       movZB   AL,A1\n",
        !          1467: 
        !          1468: SCONV, INAREG|INTAREG,
        !          1469:        STAREG, TCHAR,
        !          1470:        SANY,   TSHORT|TUSHORT,
        !          1471:                0,      RLEFT,
        !          1472:                "       extw    AL\n",
        !          1473: 
        !          1474: (SCONV)|NO68020,       INAREG|INTAREG,
        !          1475:        STAREG, TCHAR,
        !          1476:        SANY,   TINT|TUNSIGNED|TPOINT,
        !          1477:                0,      RLEFT,
        !          1478:                "       extw    AL\n    extl    AL\n",
        !          1479: 
        !          1480: (SCONV)|OP68020,       INAREG|INTAREG,
        !          1481:        STAREG, TCHAR,
        !          1482:        SANY,   TINT|TUNSIGNED|TPOINT,
        !          1483:                0,      RLEFT,
        !          1484:                "       extbl   AL\n",
        !          1485: 
        !          1486: SCONV, INAREG|INTAREG,
        !          1487:        STAREG, TSHORT,
        !          1488:        SANY,   TINT|TUNSIGNED|TPOINT,
        !          1489:                0,      RLEFT,
        !          1490:                "       extl    AL\n",
        !          1491: 
        !          1492: SCONV, INAREG|INTAREG,
        !          1493:        ES,     TUCHAR,
        !          1494:        SANY,   TSCALAR,
        !          1495:                NAREG|NASL,     RESC1,
        !          1496:                "Zt",
        !          1497: 
        !          1498: SCONV, INAREG|INTAREG,
        !          1499:        ES,     TUSHORT,
        !          1500:        SANY,   TWORD,
        !          1501:                NAREG|NASL,     RESC1,
        !          1502:                "Zt",
        !          1503: 
        !          1504: /* icky conversions into B registers -- for immediate use as a pointer */
        !          1505: SCONV, INBREG|INTBREG,
        !          1506:        STAREG, TSHORT,
        !          1507:        SANY,   TWORD,
        !          1508:                NBREG,  RESC1,
        !          1509:                "       movw    AL,A1\n",
        !          1510: 
        !          1511: SCONV, INBREG|INTBREG,
        !          1512:        STAREG, TUSHORT,
        !          1513:        SANY,   TWORD,
        !          1514:                NBREG,  RESC1,
        !          1515:                "       andl    #0xffff,AL\n    movl    AL,A1\n",
        !          1516: 
        !          1517: SCONV, INBREG|INTBREG,
        !          1518:        STAREG, TCHAR,
        !          1519:        SANY,   TWORD,
        !          1520:                NBREG,  RESC1,
        !          1521:                "       extw    AL\n    movw    AL,A1\n",
        !          1522: 
        !          1523: SCONV, INBREG|INTBREG,
        !          1524:        STAREG, TUCHAR,
        !          1525:        SANY,   TWORD,
        !          1526:                NBREG,  RESC1,
        !          1527:                "       andl    #0xff,AL\n      movl    AL,A1\n",
        !          1528: /* end icky */
        !          1529: 
        !          1530: SCONV, INAREG|INTAREG,
        !          1531:        SNAME|SOREG|SAREG,      TINT|TUNSIGNED|TPOINT|TSHORT|TUSHORT,
        !          1532:        SANY,   TSHORT|TUSHORT|TCHAR|TUCHAR,
        !          1533:                0,      RLEFT,
        !          1534:                "ZT",
        !          1535: 
        !          1536: SCONV, INAREG|INTAREG,
        !          1537:        SBREG,  TINT|TUNSIGNED|TPOINT|TSHORT|TUSHORT,
        !          1538:        SANY,   TSHORT|TUSHORT,
        !          1539:                0,      RLEFT,
        !          1540:                "ZT",
        !          1541: 
        !          1542: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1543: 
        !          1544: /*
        !          1545:  * floating point conversions
        !          1546:  */
        !          1547: 
        !          1548: SCONV|OP68881, INCREG|INTCREG,
        !          1549:        EAA,    ANYSIGNED|TFLOAT,
        !          1550:        SANY,   TFLOAT|TDOUBLE,
        !          1551:                NCREG,          RESC1,
        !          1552:                "       fmoveZG AL,A1\n",
        !          1553: 
        !          1554: SCONV|OP68881, INCREG|INTCREG,
        !          1555:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !          1556:        SANY,   TDOUBLE,
        !          1557:                0,              RLEFT,
        !          1558:                "",
        !          1559: 
        !          1560: /* conversions into the d-registers, for function results etc */
        !          1561:  
        !          1562: SCONV|OP68881, INTAREG|INTAREG,
        !          1563:        SCREG|STCREG,   TFLOAT|TDOUBLE,
        !          1564:        SANY,   TFLOAT,
        !          1565:                NAREG,  RESC1,
        !          1566:                "       fmoveZ. AL,A1\n",
        !          1567: 
        !          1568: SCONV|OP68881, INTAREG|INTAREG,
        !          1569:        SCREG|STCREG,   TFLOAT,
        !          1570:        SANY,   TDOUBLE,
        !          1571:                NAREG,  RESC1,
        !          1572: "      fmoveZ. AL,sp@-\n\
        !          1573:        movl    sp@+,A1\n\
        !          1574:        movl    sp@+,U1\n",
        !          1575: 
        !          1576: /*
        !          1577:  * conversion from float|double to integer
        !          1578:  */
        !          1579: SCONV|OP68881, INTAREG,
        !          1580:        STCREG, TDOUBLE|TFLOAT,
        !          1581:        SANY,   TSCALAR,
        !          1582:                NAREG,  RESC1,
        !          1583: "      fintrzx AL,AL\n\
        !          1584:        fmovel  AL,A1\n",
        !          1585: 
        !          1586: SCONV|NO68881, INAREG|INTAREG,
        !          1587:        STAREG, TDOUBLE,
        !          1588:        SANY,   TFLOAT,
        !          1589:                NAREG|NASL,     RESC1,
        !          1590:                "Zg",
        !          1591: 
        !          1592: SCONV|NO68881, INTAREG|INTAREG,
        !          1593:        STAREG,TFLOAT,
        !          1594:        SANY,   TDOUBLE,
        !          1595:                NAREG|NASL,     RESC1,
        !          1596:                "Zg",
        !          1597: 
        !          1598: SCONV|NO68881, INTAREG,
        !          1599:        STAREG, TDOUBLE|TFLOAT,
        !          1600:        SANY,   TSCALAR,
        !          1601:                NAREG|NASL,     RESC1,
        !          1602:                "Zg",
        !          1603: 
        !          1604: SCONV|NO68881, INTAREG,
        !          1605:        STAREG, TSCALAR,
        !          1606:        SANY,    TDOUBLE|TFLOAT,
        !          1607:                NAREG|NASL,     RESC1,
        !          1608:                "Zg",
        !          1609: 
        !          1610: SCONV, INAREG,
        !          1611:        STAREG|SAREG, TDOUBLE,
        !          1612:        SANY,           TDOUBLE,
        !          1613:                0,      RLEFT,
        !          1614:                "",
        !          1615: 
        !          1616: SCONV, INAREG,
        !          1617:        STAREG|SAREG, TFLOAT,
        !          1618:        SANY,           TFLOAT,
        !          1619:                0,      RLEFT,
        !          1620:                "",
        !          1621: 
        !          1622: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1623: 
        !          1624: /*
        !          1625:  * structure assignments
        !          1626:  */
        !          1627: 
        !          1628: STASG, FOREFF,
        !          1629:        STBREG,                         TANY,
        !          1630:        STBREG,                         TANY,
        !          1631:                NAREG,                  RNULL,
        !          1632:                "ZS",
        !          1633: 
        !          1634: STASG, INBREG|INTBREG|FOREFF,
        !          1635:        SNAME|SOREG|SBREG|STBREG,       TANY,
        !          1636:        STBREG,                         TANY,
        !          1637:                NAREG|NBREG|NBSL,       RRIGHT,
        !          1638:                "ZS",
        !          1639: 
        !          1640: /* never needs a temp register on the left */
        !          1641: STASG, INBREG|INTBREG|FOREFF,
        !          1642:        STBREG,                         TANY,
        !          1643:        SBREG|STBREG,                   TANY,
        !          1644:                NAREG|NBREG|NBSR,       RRIGHT,
        !          1645:                "ZS",
        !          1646: 
        !          1647: /* last resort -- uses more registers */
        !          1648: STASG, INBREG|INTBREG|FOREFF,
        !          1649:        SNAME|SOREG|SBREG|STBREG,       TANY,
        !          1650:        SBREG|STBREG,                   TANY,
        !          1651:                NAREG|2*NBREG|NBSR,     RRIGHT,
        !          1652:                "ZS",
        !          1653: 
        !          1654: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1655: 
        !          1656: /*
        !          1657:  * structure arguments
        !          1658:  */
        !          1659: 
        !          1660: STARG, FORARG,
        !          1661:        STBREG,                         TPOINT,
        !          1662:        SANY,                           TANY,
        !          1663:                NAREG|NBREG,            RNULL,
        !          1664:                "ZS",
        !          1665: 
        !          1666: STARG, FORARG,
        !          1667:        SNAME|SOREG,                    TSTRUCT,
        !          1668:        SANY,                           TANY,
        !          1669:                NAREG|2*NBREG,          RNULL,
        !          1670:                "ZS",
        !          1671: 
        !          1672: STARG, FORARG,
        !          1673:        SBREG|STBREG,                   TPOINT,
        !          1674:        SANY,                           TANY,
        !          1675:                NAREG|2*NBREG,          RNULL,
        !          1676:                "ZS",
        !          1677: 
        !          1678: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1679: 
        !          1680: /*
        !          1681:  * initializations - constants only
        !          1682:  */
        !          1683: INIT,  FOREFF,
        !          1684:        SCON,   TANY,
        !          1685:        SANY,   TINT|TLONG|TUNSIGNED|TULONG|TPOINT,
        !          1686:                0,      RNOP,
        !          1687:                "       .long   CL\n",
        !          1688: 
        !          1689: INIT,  FOREFF,
        !          1690:        SCON,   TANY,
        !          1691:        SANY,   TSHORT|TUSHORT,
        !          1692:                0,      RNOP,
        !          1693:                "       .word   CL\n",
        !          1694: 
        !          1695: INIT,  FOREFF,
        !          1696:        SCON,   TANY,
        !          1697:        SANY,   TCHAR|TUCHAR,
        !          1698:                0,      RNOP,
        !          1699:                "       .byte   CL\n",
        !          1700: 
        !          1701: INIT,  FOREFF,
        !          1702:        SCON,   TANY,
        !          1703:        SANY,   TFLOAT|TDOUBLE,
        !          1704:                0,      RNOP,
        !          1705:                "       .long   CL\n",
        !          1706: 
        !          1707: /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
        !          1708: 
        !          1709:        /* Default actions for hard trees ... */
        !          1710: 
        !          1711: # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
        !          1712: 
        !          1713: UNARY MUL, DF( UNARY MUL ),
        !          1714: 
        !          1715: INCR, DF(INCR),
        !          1716: 
        !          1717: DECR, DF(INCR),
        !          1718: 
        !          1719: ASSIGN, DF(ASSIGN),
        !          1720: 
        !          1721: STASG, DF(STASG),
        !          1722: 
        !          1723: OPLEAF, DF(NAME),
        !          1724: 
        !          1725: OPLOG, FORCC,
        !          1726:        SANY,   TANY,
        !          1727:        SANY,   TANY,
        !          1728:                REWRITE,        BITYPE,
        !          1729:                "",
        !          1730: 
        !          1731: /*OPLOG,       DF(NOT),*/
        !          1732: OPLOG, DF(BITYPE),
        !          1733: COMOP, DF(COMOP),
        !          1734: INIT, DF(INIT),
        !          1735: FLD, DF(FLD),
        !          1736: GOTO,DF(GOTO),
        !          1737: SCONV, DF(SCONV),
        !          1738: OPUNARY, DF(UNARY MINUS),
        !          1739: ASG OPANY, DF(ASG PLUS),
        !          1740: OPANY, DF(BITYPE),
        !          1741: FREE,  FREE,   FREE,   FREE,   FREE,   FREE,   FREE,   FREE,   "help; I'm in trouble\n" };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.