Annotation of gcc/ns32k.md, revision 1.1.1.3

1.1       root        1: ;; BUGS:
                      2: ;; Insert no-op between an insn with memory read-write operands
                      3: ;;   following by a scale-indexing operation.
                      4: ;; The Sequent assembler does not allow addresses to be used
                      5: ;;   except in insns which explicitly compute an effective address.
                      6: ;;   I.e., one cannot say "cmpd _p,@_x"
                      7: ;; Implement unsigned multiplication??
                      8: 
                      9: ;;- Machine descrption for GNU compiler
                     10: ;;- ns32000 Version
                     11: ;;   Copyright (C) 1988 Free Software Foundation, Inc.
                     12: ;;   Contributed by Michael Tiemann ([email protected])
                     13: 
                     14: ;; This file is part of GNU CC.
                     15: 
                     16: ;; GNU CC is distributed in the hope that it will be useful,
                     17: ;; but WITHOUT ANY WARRANTY.  No author or distributor
                     18: ;; accepts responsibility to anyone for the consequences of using it
                     19: ;; or for whether it serves any particular purpose or works at all,
                     20: ;; unless he says so in writing.  Refer to the GNU CC General Public
                     21: ;; License for full details.
                     22: 
                     23: ;; Everyone is granted permission to copy, modify and redistribute
                     24: ;; GNU CC, but only under the conditions described in the
                     25: ;; GNU CC General Public License.   A copy of this license is
                     26: ;; supposed to have been given to you along with GNU CC so you
                     27: ;; can know your rights and responsibilities.  It should be in a
                     28: ;; file named COPYING.  Among other things, the copyright notice
                     29: ;; and this notice must be preserved on all copies.
                     30: 
                     31: 
                     32: ;;- Instruction patterns.  When multiple patterns apply,
                     33: ;;- the first one in the file is chosen.
                     34: ;;-
                     35: ;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.
                     36: ;;-
                     37: ;;- cpp macro #define NOTICE_UPDATE_CC in file tm.h handles condition code
                     38: ;;- updates for most instructions.
                     39: 
                     40: ; tstsi is first test insn so that it is the one to match
                     41: ; a constant argument.
                     42: 
                     43: (define_insn "tstsi"
                     44:   [(set (cc0)
                     45:        (match_operand:SI 0 "general_operand" "rmn"))]
                     46:   ""
                     47:   "*
1.1.1.2   root       48: { cc_status.flags |= CC_REVERSED;
                     49:   operands[1] = const0_rtx;
                     50:   return \"cmpqd %1,%0\"; }")
1.1       root       51: 
                     52: (define_insn "tsthi"
                     53:   [(set (cc0)
                     54:        (match_operand:HI 0 "general_operand" "g"))]
                     55:   ""
                     56:   "*
1.1.1.2   root       57: { cc_status.flags |= CC_REVERSED;
                     58:   operands[1] = const0_rtx;
                     59:   return \"cmpqw %1,%0\"; }")
1.1       root       60: 
                     61: (define_insn "tstqi"
                     62:   [(set (cc0)
                     63:        (match_operand:QI 0 "general_operand" "g"))]
                     64:   ""
                     65:   "*
1.1.1.2   root       66: { cc_status.flags |= CC_REVERSED;
                     67:   operands[1] = const0_rtx;
                     68:   return \"cmpqb %1,%0\"; }")
1.1       root       69: 
                     70: (define_insn "tstdf"
                     71:   [(set (cc0)
                     72:        (match_operand:DF 0 "general_operand" "fmF"))]
                     73:   "TARGET_32081"
                     74:   "*
1.1.1.2   root       75: { cc_status.flags |= CC_REVERSED;
                     76:   operands[1] = dconst0_rtx;
                     77:   return \"cmpl %1,%0\"; }")
1.1       root       78: 
                     79: (define_insn "tstsf"
                     80:   [(set (cc0)
                     81:        (match_operand:SF 0 "general_operand" "fmF"))]
                     82:   "TARGET_32081"
                     83:   "*
1.1.1.2   root       84: { cc_status.flags |= CC_REVERSED;
                     85:   operands[1] = fconst0_rtx;
                     86:   return \"cmpf %1,%0\"; }")
1.1       root       87: 
                     88: (define_insn "cmpdf"
                     89:   [(set (cc0)
                     90:        (minus (match_operand:DF 0 "general_operand" "fmF")
                     91:               (match_operand:DF 1 "general_operand" "fmF")))]
                     92:   "TARGET_32081"
                     93:   "cmpl %0,%1")
                     94: 
                     95: (define_insn "cmpsf"
                     96:   [(set (cc0)
                     97:        (minus (match_operand:SF 0 "general_operand" "fmF")
                     98:               (match_operand:SF 1 "general_operand" "fmF")))]
                     99:   "TARGET_32081"
                    100:   "cmpf %0,%1")
                    101: 
                    102: (define_insn "cmpsi"
                    103:   [(set (cc0)
                    104:        (minus (match_operand:SI 0 "general_operand" "rmn")
                    105:               (match_operand:SI 1 "general_operand" "rmn")))]
                    106:   ""
                    107:   "*
                    108: {
                    109:   if (GET_CODE (operands[1]) == CONST_INT)
                    110:     {
                    111:       int i = INTVAL (operands[1]);
                    112:       if (i <= 7 && i >= -8)
                    113:        {
                    114:          cc_status.flags |= CC_REVERSED;
                    115:          return \"cmpqd %1,%0\";
                    116:        }
                    117:     }
                    118:   cc_status.flags &= ~CC_REVERSED;
                    119:   if (GET_CODE (operands[0]) == CONST_INT)
                    120:     {
                    121:       int i = INTVAL (operands[0]);
                    122:       if (i <= 7 && i >= -8)
                    123:        return \"cmpqd %0,%1\";
                    124:     }
                    125:   return \"cmpd %0,%1\";
                    126: }")
                    127: 
                    128: (define_insn "cmphi"
                    129:   [(set (cc0)
                    130:        (minus (match_operand:HI 0 "general_operand" "g")
                    131:               (match_operand:HI 1 "general_operand" "g")))]
                    132:   ""
                    133:   "*
                    134: {
                    135:   if (GET_CODE (operands[1]) == CONST_INT)
                    136:     {
                    137:       short i = INTVAL (operands[1]);
                    138:     if (i <= 7 && i >= -8)
                    139:       {
                    140:        cc_status.flags |= CC_REVERSED;
                    141:        if (INTVAL (operands[1]) > 7)
                    142:          operands[1] = gen_rtx(CONST_INT, VOIDmode, i);
                    143:        return \"cmpqw %1,%0\";
                    144:       }
                    145:     }
                    146:   cc_status.flags &= ~CC_REVERSED;
                    147:   if (GET_CODE (operands[0]) == CONST_INT)
                    148:     {
                    149:       short i = INTVAL (operands[0]);
                    150:       if (i <= 7 && i >= -8)
                    151:        {
                    152:          if (INTVAL (operands[0]) > 7)
                    153:            operands[0] = gen_rtx(CONST_INT, VOIDmode, i);
                    154:          return \"cmpqw %0,%1\";
                    155:        }
                    156:     }
                    157:   return \"cmpw %0,%1\";
                    158: }")
                    159: 
                    160: (define_insn "cmpqi"
                    161:   [(set (cc0)
                    162:        (minus (match_operand:QI 0 "general_operand" "g")
                    163:               (match_operand:QI 1 "general_operand" "g")))]
                    164:   ""
                    165:   "*
                    166: {
                    167:   if (GET_CODE (operands[1]) == CONST_INT)
                    168:     {
                    169:       char i = INTVAL (operands[1]);
                    170:       if (i <= 7 && i >= -8)
                    171:        {
                    172:          cc_status.flags |= CC_REVERSED;
                    173:          if (INTVAL (operands[1]) > 7)
                    174:            operands[1] = gen_rtx(CONST_INT, VOIDmode, i);
                    175:          return \"cmpqb %1,%0\";
                    176:        }
                    177:     }
                    178:   cc_status.flags &= ~CC_REVERSED;
                    179:   if (GET_CODE (operands[0]) == CONST_INT)
                    180:     {
                    181:       char i = INTVAL (operands[0]);
                    182:       if (i <= 7 && i >= -8)
                    183:        {
                    184:          if (INTVAL (operands[0]) > 7)
                    185:            operands[0] = gen_rtx(CONST_INT, VOIDmode, i);
                    186:          return \"cmpqb %0,%1\";
                    187:        }
                    188:     }
                    189:   return \"cmpb %0,%1\";
                    190: }")
                    191: 
                    192: (define_insn "movdf"
                    193:   [(set (match_operand:DF 0 "general_operand" "=fg<")
                    194:        (match_operand:DF 1 "general_operand" "fFg"))]
                    195:   ""
                    196:   "*
                    197: {
                    198:   if (FP_REG_P (operands[0]))
                    199:     {
                    200:       if (FP_REG_P (operands[1]) || GET_CODE (operands[1]) == CONST_DOUBLE)
                    201:        return \"movl %1,%0\";
                    202:       if (REG_P (operands[1]))
                    203:        {
                    204:          rtx xoperands[2];
                    205:          xoperands[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
                    206:          output_asm_insn (\"movd %1,tos\", xoperands);
                    207:          output_asm_insn (\"movd %1,tos\", operands);
                    208:          return \"movl tos,%0\";
                    209:        }
                    210:       return \"movl %1,%0\";
                    211:     }
                    212:   else if (FP_REG_P (operands[1]))
                    213:     {
                    214:       if (REG_P (operands[0]))
                    215:        {
                    216:          output_asm_insn (\"movl %1,tos\;movd tos,%0\", operands);
                    217:          operands[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);
                    218:          return \"movd tos,%0\";
                    219:        }
                    220:       else
                    221:         return \"movl %1,%0\";
                    222:     }
                    223:   return output_move_double (operands);
                    224: }")
                    225: 
                    226: (define_insn "movsf"
                    227:   [(set (match_operand:SF 0 "general_operand" "=fg<")
                    228:        (match_operand:SF 1 "general_operand" "fFg"))]
                    229:   ""
                    230:   "*
                    231: {
                    232:   if (FP_REG_P (operands[0]))
                    233:     {
                    234:       if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) < 8)
                    235:        return \"movd %1,tos\;movf tos,%0\";
                    236:       else
                    237:        return \"movf %1,%0\";
                    238:     }
                    239:   else if (FP_REG_P (operands[1]))
                    240:     {
                    241:       if (REG_P (operands[0]))
                    242:        return \"movf %1,tos\;movd tos,%0\";
                    243:       return \"movf %1,%0\";
                    244:     }
                    245:   else if (GET_CODE (operands[1]) == CONST_DOUBLE)
                    246:     {
                    247:       /* Is there a better machine-independent way to to this?  */
                    248:       operands[1] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[1]));
                    249:       return \"movd %1,%0\";
                    250:     }
                    251:   else return \"movd %1,%0\";
                    252: }")
                    253: 
                    254: (define_insn ""
                    255:   [(set (match_operand:TI 0 "memory_operand" "=m")
                    256:        (match_operand:TI 1 "memory_operand" "m"))]
                    257:   ""
                    258:   "movmd %1,%0,4")
                    259: 
                    260: (define_insn "movdi"
                    261:   [(set (match_operand:DI 0 "general_operand" "=g<")
1.1.1.3 ! root      262:        (match_operand:DI 1 "general_operand" "gF"))]
1.1       root      263:   ""
                    264:   "* return output_move_double (operands); ")
                    265: 
                    266: (define_insn "movsi"
                    267:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    268:        (match_operand:SI 1 "general_operand" "gx"))]
                    269:   ""
                    270:   "*
                    271: { if (GET_CODE (operands[1]) == CONST_INT)
                    272:     {
                    273:       int i = INTVAL (operands[1]);
                    274:       if (i <= 7 && i >= -8)
                    275:        return \"movqd %1,%0\";
                    276:       if (i < 0x4000 && i >= -0x4000)
1.1.1.2   root      277:        return \"addr @%c1,%0\";
1.1       root      278:       return \"movd %1,%0\";
                    279:     }
                    280:   else if (GET_CODE (operands[1]) == REG)
                    281:     if (REGNO (operands[1]) < 16)
                    282:       return \"movd %1,%0\";
                    283:     else if (REGNO (operands[1]) == 16)
                    284:       return \"addr 0(fp),%0\";
                    285:     else return \"addr tos,%0\";
                    286:   else if (GET_CODE (operands[1]) == MEM)
                    287:     return \"movd %1,%0\";
1.1.1.2   root      288:   /* Check if this effective address can be
                    289:      calculated faster by pulling it apart.  */
                    290:   if (REG_P (operands[0])
                    291:       && GET_CODE (operands[1]) == MULT
                    292:       && GET_CODE (XEXP (operands[1], 1)) == CONST_INT
                    293:       && (INTVAL (XEXP (operands[1], 1)) == 2
                    294:          || INTVAL (XEXP (operands[1], 1)) == 4))
                    295:     {
                    296:       rtx xoperands[3];
                    297:       xoperands[0] = operands[0];
                    298:       xoperands[1] = XEXP (operands[1], 0);
                    299:       xoperands[2] = gen_rtx (CONST_INT, VOIDmode, INTVAL (XEXP (operands[1], 1)) >> 1);
                    300:       return output_shift_insn (xoperands);
                    301:     }
1.1       root      302:   return \"addr %a1,%0\";
                    303: }")
                    304: 
                    305: (define_insn "movhi"
                    306:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    307:        (match_operand:HI 1 "general_operand" "g"))]
                    308:   ""
                    309:   "*
                    310: {
                    311:   if (GET_CODE (operands[1]) == CONST_INT)
                    312:     {
                    313:       short i = INTVAL (operands[1]);
                    314:       if (i <= 7 && i >= -8)
                    315:        {
                    316:          if (INTVAL (operands[1]) > 7)
                    317:            operands[1] =
                    318:              gen_rtx (CONST_INT, VOIDmode, i);
                    319:          return \"movqw %1,%0\";
                    320:        }
                    321:     }
                    322:   return \"movw %1,%0\";
                    323: }")
                    324: 
                    325: (define_insn "movstricthi"
                    326:   [(set (strict_low_part (match_operand:HI 0 "general_operand" "+r"))
                    327:        (match_operand:HI 1 "general_operand" "g"))]
                    328:   ""
                    329:   "*
                    330: {
                    331:   if (GET_CODE (operands[1]) == CONST_INT
                    332:       && INTVAL(operands[1]) <= 7 && INTVAL(operands[1]) >= -8)
                    333:     return \"movqw %1,%0\";
                    334:   return \"movw %1,%0\";
                    335: }")
                    336: 
                    337: (define_insn "movqi"
                    338:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    339:        (match_operand:QI 1 "general_operand" "g"))]
                    340:   ""
                    341:   "*
                    342: { if (GET_CODE (operands[1]) == CONST_INT)
                    343:     {
                    344:       char char_val = (char)INTVAL (operands[1]);
                    345:       if (char_val <= 7 && char_val >= -8)
                    346:        {
                    347:          if (INTVAL (operands[1]) > 7)
                    348:            operands[1] =
                    349:              gen_rtx (CONST_INT, VOIDmode, char_val);
                    350:          return \"movqb %1,%0\";
                    351:        }
                    352:     }
                    353:   return \"movb %1,%0\";
                    354: }")
                    355: 
                    356: (define_insn "movstrictqi"
                    357:   [(set (strict_low_part (match_operand:QI 0 "general_operand" "+r"))
                    358:        (match_operand:QI 1 "general_operand" "g"))]
                    359:   ""
                    360:   "*
                    361: {
                    362:   if (GET_CODE (operands[1]) == CONST_INT
                    363:       && INTVAL(operands[1]) < 8 && INTVAL(operands[1]) > -9)
                    364:     return \"movqb %1,%0\";
                    365:   return \"movb %1,%0\";
                    366: }")
                    367: 
                    368: (define_insn ""
                    369:   [(set (reg:SI 17)
1.1.1.2   root      370:        (match_operand:SI 0 "general_operand" "rmn"))]
1.1       root      371:   ""
                    372:   "lprd sp,%0")
                    373: 
                    374: ;; The definition of this insn does not really explain what it does,
                    375: ;; but it should suffice
                    376: ;; that anything generated as this insn will be recognized as one
                    377: ;; and that it won't successfully combine with anything.
                    378: (define_insn "movstrsi"
                    379:   [(set (match_operand:BLK 0 "general_operand" "=g")
                    380:        (match_operand:BLK 1 "general_operand" "g"))
                    381:    (use (match_operand:SI 2 "general_operand" "rmn"))
                    382:    (clobber (reg:SI 0))
                    383:    (clobber (reg:SI 1))
                    384:    (clobber (reg:SI 2))]
                    385:   ""
                    386:   "*
                    387: {
                    388:   if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
                    389:     abort ();
                    390:   operands[0] = XEXP (operands[0], 0);
                    391:   operands[1] = XEXP (operands[1], 0);
                    392:   if (GET_CODE (operands[0]) == MEM)
                    393:     if (GET_CODE (operands[1]) == MEM)
                    394:       output_asm_insn (\"movd %0,r2\;movd %1,r1\", operands);
                    395:     else
                    396:       output_asm_insn (\"movd %0,r2\;addr %a1,r1\", operands);
                    397:   else if (GET_CODE (operands[1]) == MEM)
                    398:     output_asm_insn (\"addr %a0,r2\;movd %1,r1\", operands);
                    399:   else
                    400:     output_asm_insn (\"addr %a0,r2\;addr %a1,r1\", operands);
                    401: 
                    402:   if (GET_CODE (operands[2]) == CONST_INT && (INTVAL (operands[2]) & 0x3) == 0)
                    403:     {
                    404:       operands[2] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) >> 2);
                    405:       if ((unsigned) INTVAL (operands[2]) <= 7)
                    406:        return \"movqd %2,r0\;movsd\";
                    407:       else 
                    408:        return \"movd %2,r0\;movsd\";
                    409:     }
                    410:   else
                    411:     {
                    412:       return \"movd %2,r0\;movsb\";
                    413:     }
                    414: }")
                    415: 
                    416: ;; Extension and truncation insns.
                    417: ;; Those for integer source operand
                    418: ;; are ordered widest source type first.
                    419: 
                    420: (define_insn "truncsiqi2"
                    421:   [(set (match_operand:QI 0 "general_operand" "=g<")
1.1.1.2   root      422:        (truncate:QI (match_operand:SI 1 "general_operand" "rmn")))]
1.1       root      423:   ""
                    424:   "movb %1,%0")
                    425: 
                    426: (define_insn "truncsihi2"
                    427:   [(set (match_operand:HI 0 "general_operand" "=g<")
1.1.1.2   root      428:        (truncate:HI (match_operand:SI 1 "general_operand" "rmn")))]
1.1       root      429:   ""
                    430:   "movw %1,%0")
                    431: 
                    432: (define_insn "trunchiqi2"
                    433:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    434:        (truncate:QI (match_operand:HI 1 "general_operand" "g")))]
                    435:   ""
                    436:   "movb %1,%0")
                    437: 
                    438: (define_insn "extendhisi2"
                    439:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    440:        (sign_extend:SI (match_operand:HI 1 "general_operand" "g")))]
                    441:   ""
                    442:   "movxwd %1,%0")
                    443: 
                    444: (define_insn "extendqihi2"
                    445:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    446:        (sign_extend:HI (match_operand:QI 1 "general_operand" "g")))]
                    447:   ""
                    448:   "movxbw %1,%0")
                    449: 
                    450: (define_insn "extendqisi2"
                    451:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    452:        (sign_extend:SI (match_operand:QI 1 "general_operand" "g")))]
                    453:   ""
                    454:   "movxbd %1,%0")
                    455: 
                    456: (define_insn "extendsfdf2"
                    457:   [(set (match_operand:DF 0 "general_operand" "=fm<")
                    458:        (float_extend:DF (match_operand:SF 1 "general_operand" "fmF")))]
                    459:   "TARGET_32081"
                    460:   "movfl %1,%0")
                    461: 
                    462: (define_insn "truncdfsf2"
                    463:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                    464:        (float_truncate:SF (match_operand:DF 1 "general_operand" "fmF")))]
                    465:   "TARGET_32081"
                    466:   "movlf %1,%0")
                    467: 
                    468: (define_insn "zero_extendhisi2"
                    469:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    470:        (zero_extend:SI (match_operand:HI 1 "general_operand" "g")))]
                    471:   ""
                    472:   "movzwd %1,%0")
                    473: 
                    474: (define_insn "zero_extendqihi2"
                    475:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    476:        (zero_extend:HI (match_operand:QI 1 "general_operand" "g")))]
                    477:   ""
                    478:   "movzbw %1,%0")
                    479: 
                    480: (define_insn "zero_extendqisi2"
                    481:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    482:        (zero_extend:SI (match_operand:QI 1 "general_operand" "g")))]
                    483:   ""
                    484:   "movzbd %1,%0")
                    485: 
                    486: ;; Fix-to-float conversion insns.
                    487: ;; Note that the ones that start with SImode come first.
                    488: ;; That is so that an operand that is a CONST_INT
                    489: ;; (and therefore lacks a specific machine mode).
                    490: ;; will be recognized as SImode (which is always valid)
                    491: ;; rather than as QImode or HImode.
                    492: 
                    493: ;; Rumor has it that the National part does not correctly convert
                    494: ;; constant ints to floats.  This conversion is therefore disabled.
                    495: ;; A register must be used to perform the conversion.
                    496: 
                    497: (define_insn "floatsisf2"
                    498:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                    499:        (float:SF (match_operand:SI 1 "general_operand" "rm")))]
                    500:   "TARGET_32081"
                    501:   "movdf %1,%0")
                    502: 
                    503: (define_insn "floatsidf2"
                    504:   [(set (match_operand:DF 0 "general_operand" "=fm<")
                    505:        (float:DF (match_operand:SI 1 "general_operand" "rm")))]
                    506:   "TARGET_32081"
                    507:   "movdl %1,%0")
                    508: 
                    509: (define_insn "floathisf2"
                    510:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                    511:        (float:SF (match_operand:HI 1 "general_operand" "rm")))]
                    512:   "TARGET_32081"
                    513:   "movwf %1,%0")
                    514: 
                    515: (define_insn "floathidf2"
                    516:   [(set (match_operand:DF 0 "general_operand" "=fm<")
                    517:        (float:DF (match_operand:HI 1 "general_operand" "rm")))]
                    518:   "TARGET_32081"
                    519:   "movwl %1,%0")
                    520: 
                    521: (define_insn "floatqisf2"
                    522:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                    523:        (float:SF (match_operand:QI 1 "general_operand" "rm")))]
                    524:   "TARGET_32081"
                    525:   "movbf %1,%0")
                    526: 
1.1.1.3 ! root      527: ; Some assemblers warn that this insn doesn't work.
        !           528: ; Maybe they know something we don't.
        !           529: ;(define_insn "floatqidf2"
        !           530: ;  [(set (match_operand:DF 0 "general_operand" "=fm<")
        !           531: ;      (float:DF (match_operand:QI 1 "general_operand" "rm")))]
        !           532: ;  "TARGET_32081"
        !           533: ;  "movbl %1,%0")
1.1       root      534: 
                    535: ;; Float-to-fix conversion insns.
                    536: ;; The sequent compiler always generates "trunc" insns.
                    537: 
                    538: (define_insn "fixsfqi2"
                    539:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    540:        (fix:QI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    541:   "TARGET_32081"
                    542:   "truncfb %1,%0")
                    543: 
                    544: (define_insn "fixsfhi2"
                    545:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    546:        (fix:HI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    547:   "TARGET_32081"
                    548:   "truncfw %1,%0")
                    549: 
                    550: (define_insn "fixsfsi2"
                    551:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    552:        (fix:SI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    553:   "TARGET_32081"
                    554:   "truncfd %1,%0")
                    555: 
                    556: (define_insn "fixdfqi2"
                    557:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    558:        (fix:QI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    559:   "TARGET_32081"
                    560:   "trunclb %1,%0")
                    561: 
                    562: (define_insn "fixdfhi2"
                    563:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    564:        (fix:HI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    565:   "TARGET_32081"
                    566:   "trunclw %1,%0")
                    567: 
                    568: (define_insn "fixdfsi2"
                    569:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    570:        (fix:SI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    571:   "TARGET_32081"
                    572:   "truncld %1,%0")
                    573: 
                    574: ;; Unsigned
                    575: 
                    576: (define_insn "fixunssfqi2"
                    577:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    578:        (unsigned_fix:QI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    579:   "TARGET_32081"
                    580:   "truncfb %1,%0")
                    581: 
                    582: (define_insn "fixunssfhi2"
                    583:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    584:        (unsigned_fix:HI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    585:   "TARGET_32081"
                    586:   "truncfw %1,%0")
                    587: 
                    588: (define_insn "fixunssfsi2"
                    589:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    590:        (unsigned_fix:SI (fix:SF (match_operand:SF 1 "general_operand" "fm"))))]
                    591:   "TARGET_32081"
                    592:   "truncfd %1,%0")
                    593: 
                    594: (define_insn "fixunsdfqi2"
                    595:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    596:        (unsigned_fix:QI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    597:   "TARGET_32081"
                    598:   "trunclb %1,%0")
                    599: 
                    600: (define_insn "fixunsdfhi2"
                    601:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    602:        (unsigned_fix:HI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    603:   "TARGET_32081"
                    604:   "trunclw %1,%0")
                    605: 
                    606: (define_insn "fixunsdfsi2"
                    607:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    608:        (unsigned_fix:SI (fix:DF (match_operand:DF 1 "general_operand" "fm"))))]
                    609:   "TARGET_32081"
                    610:   "truncld %1,%0")
                    611: 
                    612: ;;; These are not yet used by GCC
                    613: (define_insn "fix_truncsfqi2"
                    614:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    615:        (fix:QI (match_operand:SF 1 "general_operand" "fm")))]
                    616:   "TARGET_32081"
                    617:   "truncfb %1,%0")
                    618: 
                    619: (define_insn "fix_truncsfhi2"
                    620:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    621:        (fix:HI (match_operand:SF 1 "general_operand" "fm")))]
                    622:   "TARGET_32081"
                    623:   "truncfw %1,%0")
                    624: 
                    625: (define_insn "fix_truncsfsi2"
                    626:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    627:        (fix:SI (match_operand:SF 1 "general_operand" "fm")))]
                    628:   "TARGET_32081"
                    629:   "truncfd %1,%0")
                    630: 
                    631: (define_insn "fix_truncdfqi2"
                    632:   [(set (match_operand:QI 0 "general_operand" "=g<")
                    633:        (fix:QI (match_operand:DF 1 "general_operand" "fm")))]
                    634:   "TARGET_32081"
                    635:   "trunclb %1,%0")
                    636: 
                    637: (define_insn "fix_truncdfhi2"
                    638:   [(set (match_operand:HI 0 "general_operand" "=g<")
                    639:        (fix:HI (match_operand:DF 1 "general_operand" "fm")))]
                    640:   "TARGET_32081"
                    641:   "trunclw %1,%0")
                    642: 
                    643: (define_insn "fix_truncdfsi2"
                    644:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    645:        (fix:SI (match_operand:DF 1 "general_operand" "fm")))]
                    646:   "TARGET_32081"
                    647:   "truncld %1,%0")
                    648: 
                    649: ;;- All kinds of add instructions.
                    650: 
                    651: (define_insn "adddf3"
                    652:   [(set (match_operand:DF 0 "general_operand" "=fm")
                    653:        (plus:DF (match_operand:DF 1 "general_operand" "%0")
                    654:                 (match_operand:DF 2 "general_operand" "fmF")))]
                    655:   "TARGET_32081"
                    656:   "addl %2,%0")
                    657: 
                    658: 
                    659: (define_insn "addsf3"
                    660:   [(set (match_operand:SF 0 "general_operand" "=fm")
                    661:        (plus:SF (match_operand:SF 1 "general_operand" "%0")
                    662:                 (match_operand:SF 2 "general_operand" "fmF")))]
                    663:   "TARGET_32081"
                    664:   "addf %2,%0")
                    665: 
                    666: (define_insn ""
                    667:   [(set (reg:SI 17)
                    668:        (plus:SI (reg:SI 17)
                    669:                 (match_operand:SI 0 "immediate_operand" "i")))]
                    670:   "GET_CODE (operands[0]) == CONST_INT"
                    671:   "*
                    672: {
                    673:   if (INTVAL(operands[0]) < 64 && INTVAL(operands[0]) > -64)
                    674:     return \"adjspb %$%n0\";
                    675:   else if (INTVAL (operands[0]) < 8192 && INTVAL (operands[0]) >= -8192)
                    676:     return \"adjspw %$%n0\";
                    677:   return \"adjspd %$%n0\";
                    678: }")
                    679: 
                    680: (define_insn ""
                    681:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    682:        (plus:SI (reg:SI 16)
                    683:                 (match_operand:SI 1 "immediate_operand" "i")))]
                    684:   "GET_CODE (operands[1]) == CONST_INT"
1.1.1.2   root      685:   "addr %c1(fp),%0")
1.1       root      686: 
                    687: (define_insn ""
                    688:   [(set (match_operand:SI 0 "general_operand" "=g<")
                    689:        (plus:SI (reg:SI 17)
                    690:                 (match_operand:SI 1 "immediate_operand" "i")))]
                    691:   "GET_CODE (operands[1]) == CONST_INT"
1.1.1.2   root      692:   "addr %c1(sp),%0")
1.1       root      693: 
                    694: (define_insn "addsi3"
                    695:   [(set (match_operand:SI 0 "general_operand" "=g")
                    696:        (plus:SI (match_operand:SI 1 "general_operand" "%0")
                    697:                 (match_operand:SI 2 "general_operand" "rmn")))]
                    698:   ""
                    699:   "*
                    700: {
                    701:   if (GET_CODE (operands[2]) == CONST_INT)
                    702:     {
                    703:       int i = INTVAL (operands[2]);
                    704: 
                    705:       if (i <= 7 && i >= -8)
                    706:        return \"addqd %2,%0\";
                    707:       else if (GET_CODE (operands[0]) == REG
                    708:               && i < 0x4000 && i >= -0x4000)
1.1.1.2   root      709:        return \"addr %c2(%0),%0\";
1.1       root      710:     }
                    711:   return \"addd %2,%0\";
                    712: }")
                    713: 
                    714: (define_insn "addhi3"
                    715:   [(set (match_operand:HI 0 "general_operand" "=g")
                    716:        (plus:HI (match_operand:HI 1 "general_operand" "%0")
                    717:                 (match_operand:HI 2 "general_operand" "g")))]
                    718:   ""
                    719:   "*
                    720: { if (GET_CODE (operands[2]) == CONST_INT)
                    721:     {
                    722:       int i = INTVAL (operands[2]);
                    723:       if (i <= 7 && i >= -8)
                    724:        return \"addqw %2,%0\";
                    725:     }
                    726:   return \"addw %2,%0\";
                    727: }")
                    728: 
                    729: (define_insn ""
                    730:   [(set (strict_low_part (match_operand:HI 0 "general_operand" "=r"))
                    731:        (plus:HI (match_operand:HI 1 "general_operand" "0")
                    732:                 (match_operand:HI 2 "general_operand" "g")))]
                    733:   ""
                    734:   "*
                    735: {
                    736:   if (GET_CODE (operands[1]) == CONST_INT
                    737:       && INTVAL (operands[1]) >-9 && INTVAL(operands[1]) < 8)
                    738:     return \"addqw %1,%0\";
                    739:   return \"addw %1,%0\";
                    740: }")
                    741: 
                    742: (define_insn "addqi3"
                    743:   [(set (match_operand:QI 0 "general_operand" "=g")
                    744:        (plus:QI (match_operand:QI 1 "general_operand" "%0")
                    745:                 (match_operand:QI 2 "general_operand" "g")))]
                    746:   ""
                    747:   "*
                    748: { if (GET_CODE (operands[2]) == CONST_INT)
                    749:     {
                    750:       int i = INTVAL (operands[2]);
                    751:       if (i <= 7 && i >= -8)
                    752:        return \"addqb %2,%0\";
                    753:     }
                    754:   return \"addb %2,%0\";
                    755: }")
                    756: 
                    757: (define_insn ""
                    758:   [(set (strict_low_part (match_operand:QI 0 "general_operand" "=r"))
                    759:        (plus:QI (match_operand:QI 1 "general_operand" "0")
                    760:                 (match_operand:QI 2 "general_operand" "g")))]
                    761:   ""
                    762:   "*
                    763: {
                    764:   if (GET_CODE (operands[1]) == CONST_INT
                    765:       && INTVAL (operands[1]) >-9 && INTVAL(operands[1]) < 8)
                    766:     return \"addqb %1,%0\";
                    767:   return \"addb %1,%0\";
                    768: }")
                    769: 
                    770: ;;- All kinds of subtract instructions.
                    771: 
                    772: (define_insn "subdf3"
                    773:   [(set (match_operand:DF 0 "general_operand" "=fm")
                    774:        (minus:DF (match_operand:DF 1 "general_operand" "0")
                    775:                  (match_operand:DF 2 "general_operand" "fmF")))]
                    776:   "TARGET_32081"
                    777:   "subl %2,%0")
                    778: 
                    779: (define_insn "subsf3"
                    780:   [(set (match_operand:SF 0 "general_operand" "=fm")
                    781:        (minus:SF (match_operand:SF 1 "general_operand" "0")
                    782:                  (match_operand:SF 2 "general_operand" "fmF")))]
                    783:   "TARGET_32081"
                    784:   "subf %2,%0")
                    785: 
                    786: (define_insn ""
                    787:   [(set (reg:SI 17)
                    788:        (minus:SI (reg:SI 17)
                    789:                  (match_operand:SI 0 "immediate_operand" "i")))]
                    790:   "GET_CODE (operands[0]) == CONST_INT"
                    791:   "*
                    792: {
                    793:   if (GET_CODE(operands[0]) == CONST_INT && INTVAL(operands[0]) < 64
                    794:       && INTVAL(operands[0]) > -64)
                    795:     return \"adjspb %0\";
                    796:   return \"adjspd %0\";
                    797: }")
                    798: 
                    799: (define_insn "subsi3"
                    800:   [(set (match_operand:SI 0 "general_operand" "=g")
                    801:        (minus:SI (match_operand:SI 1 "general_operand" "0")
                    802:                  (match_operand:SI 2 "general_operand" "rmn")))]
                    803:   ""
                    804:   "*
                    805: { if (GET_CODE (operands[2]) == CONST_INT)
                    806:     {
                    807:       int i = INTVAL (operands[2]);
                    808: 
                    809:       if (i <= 8 && i >= -7)
                    810:         return \"addqd %$%n2,%0\";
                    811:     }
                    812:   return \"subd %2,%0\";
                    813: }")
                    814: 
                    815: (define_insn "subhi3"
                    816:   [(set (match_operand:HI 0 "general_operand" "=g")
                    817:        (minus:HI (match_operand:HI 1 "general_operand" "0")
                    818:                  (match_operand:HI 2 "general_operand" "g")))]
                    819:   ""
                    820:   "*
                    821: { if (GET_CODE (operands[2]) == CONST_INT)
                    822:     {
                    823:       int i = INTVAL (operands[2]);
                    824: 
                    825:       if (i <= 8 && i >= -7)
                    826:         return \"addqw %$%n2,%0\";
                    827:     }
                    828:   return \"subw %2,%0\";
                    829: }")
                    830: 
                    831: (define_insn ""
                    832:   [(set (strict_low_part (match_operand:HI 0 "general_operand" "=r"))
                    833:        (minus:HI (match_operand:HI 1 "general_operand" "0")
                    834:                  (match_operand:HI 2 "general_operand" "g")))]
                    835:   ""
                    836:   "*
                    837: {
                    838:   if (GET_CODE (operands[1]) == CONST_INT
                    839:       && INTVAL (operands[1]) >-8 && INTVAL(operands[1]) < 9)
                    840:     return \"addqw %$%n1,%0\";
                    841:   return \"subw %1,%0\";
                    842: }")
                    843: 
                    844: (define_insn "subqi3"
                    845:   [(set (match_operand:QI 0 "general_operand" "=g")
                    846:        (minus:QI (match_operand:QI 1 "general_operand" "0")
                    847:                  (match_operand:QI 2 "general_operand" "g")))]
                    848:   ""
                    849:   "*
                    850: { if (GET_CODE (operands[2]) == CONST_INT)
                    851:     {
                    852:       int i = INTVAL (operands[2]);
                    853: 
                    854:       if (i <= 8 && i >= -7)
                    855:        return \"addqb %$%n2,%0\";
                    856:     }
                    857:   return \"subb %2,%0\";
                    858: }")
                    859: 
                    860: (define_insn ""
                    861:   [(set (strict_low_part (match_operand:QI 0 "general_operand" "=r"))
                    862:        (minus:QI (match_operand:QI 1 "general_operand" "0")
                    863:                  (match_operand:QI 2 "general_operand" "g")))]
                    864:   ""
                    865:   "*
                    866: {
                    867:   if (GET_CODE (operands[1]) == CONST_INT
                    868:       && INTVAL (operands[1]) >-8 && INTVAL(operands[1]) < 9)
                    869:     return \"addqb %$%n1,%0\";
                    870:   return \"subb %1,%0\";
                    871: }")
                    872: 
                    873: ;;- Multiply instructions.
                    874: 
                    875: (define_insn "muldf3"
                    876:   [(set (match_operand:DF 0 "general_operand" "=fm")
                    877:        (mult:DF (match_operand:DF 1 "general_operand" "%0")
                    878:                 (match_operand:DF 2 "general_operand" "fmF")))]
                    879:   "TARGET_32081"
                    880:   "mull %2,%0")
                    881: 
                    882: (define_insn "mulsf3"
                    883:   [(set (match_operand:SF 0 "general_operand" "=fm")
                    884:        (mult:SF (match_operand:SF 1 "general_operand" "%0")
                    885:                 (match_operand:SF 2 "general_operand" "fmF")))]
                    886:   "TARGET_32081"
                    887:   "mulf %2,%0")
                    888: 
                    889: (define_insn "mulsi3"
                    890:   [(set (match_operand:SI 0 "general_operand" "=g")
                    891:        (mult:SI (match_operand:SI 1 "general_operand" "%0")
                    892:                 (match_operand:SI 2 "general_operand" "rmn")))]
                    893:   ""
                    894:   "muld %2,%0")
                    895: 
                    896: (define_insn "mulhi3"
                    897:   [(set (match_operand:HI 0 "general_operand" "=g")
                    898:        (mult:HI (match_operand:HI 1 "general_operand" "%0")
                    899:                 (match_operand:HI 2 "general_operand" "g")))]
                    900:   ""
                    901:   "mulw %2,%0")
                    902: 
                    903: (define_insn "mulqi3"
                    904:   [(set (match_operand:QI 0 "general_operand" "=g")
                    905:        (mult:QI (match_operand:QI 1 "general_operand" "%0")
                    906:                 (match_operand:QI 2 "general_operand" "g")))]
                    907:   ""
                    908:   "mulb %2,%0")
                    909: 
                    910: (define_insn "umulsi3"
                    911:   [(set (match_operand:SI 0 "general_operand" "=g")
                    912:        (umult:SI (match_operand:SI 1 "general_operand" "%0")
1.1.1.2   root      913:                  (match_operand:SI 2 "general_operand" "rmn")))]
1.1       root      914:   ""
                    915:   "muld %2,%0")
                    916: 
                    917: (define_insn "umulhi3"
                    918:   [(set (match_operand:HI 0 "general_operand" "=g")
                    919:        (umult:HI (match_operand:HI 1 "general_operand" "%0")
                    920:                  (match_operand:HI 2 "general_operand" "g")))]
                    921:   ""
                    922:   "mulw %2,%0")
                    923: 
                    924: (define_insn "umulqi3"
                    925:   [(set (match_operand:QI 0 "general_operand" "=g")
                    926:        (umult:QI (match_operand:QI 1 "general_operand" "%0")
                    927:                  (match_operand:QI 2 "general_operand" "g")))]
                    928:   ""
                    929:   "mulb %2,%0")
                    930: 
                    931: (define_insn "umulsidi3"
                    932:   [(set (match_operand:DI 0 "general_operand" "=g")
                    933:        (umult:DI (match_operand:SI 1 "general_operand" "0")
                    934:                  (match_operand:SI 2 "general_operand" "rmn")))]
                    935:   ""
                    936:   "meid %2,%0")
                    937: 
                    938: ;;- Divide instructions.
                    939: 
                    940: (define_insn "divdf3"
                    941:   [(set (match_operand:DF 0 "general_operand" "=fm")
                    942:        (div:DF (match_operand:DF 1 "general_operand" "0")
                    943:                (match_operand:DF 2 "general_operand" "fmF")))]
                    944:   "TARGET_32081"
                    945:   "divl %2,%0")
                    946: 
                    947: (define_insn "divsf3"
                    948:   [(set (match_operand:SF 0 "general_operand" "=fm")
                    949:        (div:SF (match_operand:SF 1 "general_operand" "0")
                    950:                (match_operand:SF 2 "general_operand" "fmF")))]
                    951:   "TARGET_32081"
                    952:   "divf %2,%0")
                    953: 
                    954: (define_insn "divsi3"
                    955:   [(set (match_operand:SI 0 "general_operand" "=g")
                    956:        (div:SI (match_operand:SI 1 "general_operand" "0")
                    957:                (match_operand:SI 2 "general_operand" "rmn")))]
                    958:   ""
                    959:   "quod %2,%0")
                    960: 
                    961: (define_insn "divhi3"
                    962:   [(set (match_operand:HI 0 "general_operand" "=g")
                    963:        (div:HI (match_operand:HI 1 "general_operand" "0")
                    964:                (match_operand:HI 2 "general_operand" "g")))]
                    965:   ""
                    966:   "quow %2,%0")
                    967: 
                    968: (define_insn "divqi3"
                    969:   [(set (match_operand:QI 0 "general_operand" "=g")
                    970:        (div:QI (match_operand:QI 1 "general_operand" "0")
                    971:                (match_operand:QI 2 "general_operand" "g")))]
                    972:   ""
                    973:   "quob %2,%0")
                    974: 
                    975: (define_insn "udivsi3"
                    976:   [(set (match_operand:SI 0 "register_operand" "=r")
1.1.1.2   root      977:        (udiv:SI (subreg:SI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root      978:                 (match_operand:SI 2 "general_operand" "rmn")))]
                    979:   ""
                    980:   "*
                    981: {
                    982:   operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);
                    983:   return \"deid %2,%0\;movd %1,%0\";
                    984: }")
                    985: 
                    986: (define_insn "udivhi3"
                    987:   [(set (match_operand:HI 0 "register_operand" "=r")
1.1.1.2   root      988:        (udiv:HI (subreg:HI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root      989:                 (match_operand:HI 2 "general_operand" "g")))]
                    990:   ""
                    991:   "*
                    992: {
                    993:   operands[1] = gen_rtx (REG, HImode, REGNO (operands[0]) + 1);
                    994:   return \"deiw %2,%0\;movw %1,%0\";
                    995: }")
                    996: 
                    997: (define_insn "udivqi3"
                    998:   [(set (match_operand:QI 0 "register_operand" "=r")
1.1.1.2   root      999:        (udiv:QI (subreg:QI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root     1000:                 (match_operand:QI 2 "general_operand" "g")))]
                   1001:   ""
                   1002:   "*
                   1003: {
                   1004:   operands[1] = gen_rtx (REG, QImode, REGNO (operands[0]) + 1);
                   1005:   return \"deib %2,%0\;movb %1,%0\";
                   1006: }")
                   1007: 
                   1008: ;; Remainder instructions.
                   1009: 
                   1010: (define_insn "modsi3"
                   1011:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1012:        (mod:SI (match_operand:SI 1 "general_operand" "0")
                   1013:                (match_operand:SI 2 "general_operand" "rmn")))]
                   1014:   ""
                   1015:   "remd %2,%0")
                   1016: 
                   1017: (define_insn "modhi3"
                   1018:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1019:        (mod:HI (match_operand:HI 1 "general_operand" "0")
                   1020:                (match_operand:HI 2 "general_operand" "g")))]
                   1021:   ""
                   1022:   "remw %2,%0")
                   1023: 
                   1024: (define_insn "modqi3"
                   1025:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1026:        (mod:QI (match_operand:QI 1 "general_operand" "0")
                   1027:                (match_operand:QI 2 "general_operand" "g")))]
                   1028:   ""
                   1029:   "remb %2,%0")
                   1030: 
                   1031: (define_insn "umodsi3"
                   1032:   [(set (match_operand:SI 0 "register_operand" "=r")
1.1.1.2   root     1033:        (umod:SI (subreg:SI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root     1034:                 (match_operand:SI 2 "general_operand" "rmn")))]
                   1035:   ""
                   1036:   "deid %2,%0")
                   1037: 
                   1038: (define_insn "umodhi3"
                   1039:   [(set (match_operand:HI 0 "register_operand" "=r")
1.1.1.2   root     1040:        (umod:HI (subreg:HI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root     1041:                 (match_operand:HI 2 "general_operand" "g")))]
                   1042:   ""
                   1043:   "deiw %2,%0")
                   1044: 
                   1045: (define_insn "umodqi3"
                   1046:   [(set (match_operand:QI 0 "register_operand" "=r")
1.1.1.2   root     1047:        (umod:QI (subreg:QI (match_operand:DI 1 "reg_or_mem_operand" "0") 0)
1.1       root     1048:                 (match_operand:QI 2 "general_operand" "g")))]
                   1049:   ""
                   1050:   "deib %2,%0")
                   1051: 
                   1052: ; This isn't be usable in its current form.
                   1053: ;(define_insn "udivmoddisi4"
                   1054: ;  [(set (subreg:SI (match_operand:DI 0 "general_operand" "=r") 1)
                   1055: ;      (udiv:SI (match_operand:DI 1 "general_operand" "0")
                   1056: ;               (match_operand:SI 2 "general_operand" "rmn")))
                   1057: ;   (set (subreg:SI (match_dup 0) 0)
                   1058: ;      (umod:SI (match_dup 1) (match_dup 2)))]
                   1059: ;  ""
                   1060: ;  "deid %2,%0")
                   1061: 
                   1062: ;;- Logical Instructions: AND
                   1063: 
                   1064: (define_insn "andsi3"
                   1065:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1066:        (and:SI (match_operand:SI 1 "general_operand" "%0")
                   1067:                (match_operand:SI 2 "general_operand" "rmn")))]
                   1068:   ""
                   1069:   "*
                   1070: {
                   1071:   if (GET_CODE (operands[2]) == CONST_INT) {
                   1072:     if ((INTVAL (operands[2]) | 0xff) == 0xffffffff)
                   1073:       if (INTVAL (operands[2]) == 0xffffff00)
                   1074:         return \"movqb %$0,%0\";
                   1075:       else {
                   1076:         INTVAL (operands[2]) &= 0xff;
                   1077:         return \"andb %2,%0\";
                   1078:       }
                   1079:     if ((INTVAL (operands[2]) | 0xffff) == 0xffffffff)
                   1080:       if (INTVAL (operands[2]) == 0xffff0000)
                   1081:         return \"movqw %$0,%0\";
                   1082:       else {
                   1083:         INTVAL (operands[2]) &= 0xffff;
                   1084:         return \"andw %2,%0\";
                   1085:       }
                   1086:   }
                   1087:   return \"andd %2,%0\";
                   1088: }")
                   1089: 
                   1090: (define_insn "andhi3"
                   1091:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1092:        (and:HI (match_operand:HI 1 "general_operand" "%0")
                   1093:                (match_operand:HI 2 "general_operand" "g")))]
                   1094:   ""
                   1095:   "*
                   1096: {
                   1097:   if (GET_CODE (operands[2]) == CONST_INT
                   1098:       && (INTVAL (operands[2]) | 0xff) == 0xffffffff)
                   1099:     if (INTVAL (operands[2]) == 0xffffff00)
                   1100:       return \"movqb %$0,%0\";
                   1101:     else {
                   1102:       INTVAL (operands[2]) &= 0xff;
                   1103:       return \"andb %2,%0\";
                   1104:     }
                   1105:   return \"andw %2,%0\";
                   1106: }")
                   1107: 
                   1108: (define_insn "andqi3"
                   1109:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1110:        (and:QI (match_operand:QI 1 "general_operand" "%0")
                   1111:                (match_operand:QI 2 "general_operand" "g")))]
                   1112:   ""
                   1113:   "andb %2,%0")
                   1114: 
                   1115: (define_insn "andcbsi3"
                   1116:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1117:        (and:SI (match_operand:SI 1 "general_operand" "0")
                   1118:                (not:SI (match_operand:SI 2 "general_operand" "rmn"))))]
                   1119:   ""
                   1120:   "*
                   1121: {
                   1122:   if (GET_CODE (operands[2]) == CONST_INT)
                   1123:     {
                   1124:       if ((INTVAL (operands[2]) & 0xffffff00) == 0)
                   1125:        return \"bicb %2,%0\";
                   1126:       if ((INTVAL (operands[2]) & 0xffff0000) == 0)
                   1127:        return \"bicw %2,%0\";
                   1128:     }
                   1129:   return \"bicd %2,%0\";
                   1130: }")
                   1131: 
                   1132: (define_insn ""
                   1133:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1134:        (and:SI (not:SI (match_operand:SI 1 "general_operand" "rmn"))
                   1135:                (match_operand:SI 2 "general_operand" "0")))]
                   1136:   ""
                   1137:   "*
                   1138: {
                   1139:   if (GET_CODE (operands[1]) == CONST_INT)
                   1140:     {
                   1141:       if ((INTVAL (operands[1]) & 0xffffff00) == 0)
                   1142:        return \"bicb %1,%0\";
                   1143:       if ((INTVAL (operands[1]) & 0xffff0000) == 0)
                   1144:        return \"bicw %1,%0\";
                   1145:     }
                   1146:   return \"bicd %1,%0\";
                   1147: }")
                   1148: 
                   1149: (define_insn "andcbhi3"
                   1150:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1151:        (and:HI (match_operand:HI 1 "general_operand" "%0")
                   1152:                (not:HI (match_operand:HI 2 "general_operand" "g"))))]
                   1153:   ""
                   1154:   "*
                   1155: {
                   1156:   if (GET_CODE (operands[2]) == CONST_INT
                   1157:       && (INTVAL (operands[2]) & 0xffffff00) == 0)
                   1158:     return \"bicb %2,%0\";
                   1159:   return \"bicw %2,%0\";
                   1160: }")
                   1161: 
                   1162: (define_insn ""
                   1163:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1164:        (and:HI (not:HI (match_operand:HI 1 "general_operand" "g"))
                   1165:                (match_operand:HI 2 "general_operand" "0")))]
                   1166:   ""
                   1167:   "*
                   1168: {
                   1169:   if (GET_CODE (operands[1]) == CONST_INT
                   1170:       && (INTVAL (operands[1]) & 0xffffff00) == 0)
                   1171:     return \"bicb %1,%0\";
                   1172:   return \"bicw %1,%0\";
                   1173: }")
                   1174: 
                   1175: (define_insn "andcbqi3"
                   1176:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1177:        (and:QI (match_operand:QI 1 "general_operand" "%0")
                   1178:                (not:QI (match_operand:QI 2 "general_operand" "g"))))]
                   1179:   ""
                   1180:   "bicb %2,%0")
                   1181: 
                   1182: (define_insn ""
                   1183:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1184:        (and:QI (not:QI (match_operand:QI 1 "general_operand" "g"))
                   1185:                (match_operand:QI 2 "general_operand" "0")))]
                   1186:   ""
                   1187:   "bicb %1,%0")
                   1188: 
                   1189: ;;- Bit set instructions.
                   1190: 
                   1191: (define_insn "iorsi3"
                   1192:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1193:        (ior:SI (match_operand:SI 1 "general_operand" "%0")
                   1194:                (match_operand:SI 2 "general_operand" "rmn")))]
                   1195:   ""
                   1196:   "*
                   1197: {
                   1198:   if (GET_CODE (operands[2]) == CONST_INT) {
                   1199:     if ((INTVAL (operands[2]) & 0xffffff00) == 0)
                   1200:       return \"orb %2,%0\";
                   1201:     if ((INTVAL (operands[2]) & 0xffff0000) == 0)
                   1202:       return \"orw %2,%0\";
                   1203:   }
                   1204:   return \"ord %2,%0\";
                   1205: }")
                   1206: 
                   1207: (define_insn "iorhi3"
                   1208:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1209:        (ior:HI (match_operand:HI 1 "general_operand" "%0")
                   1210:                (match_operand:HI 2 "general_operand" "g")))]
                   1211:   ""
                   1212:   "*
                   1213: {
                   1214:   if (GET_CODE(operands[2]) == CONST_INT &&
                   1215:       (INTVAL(operands[2]) & 0xffffff00) == 0)
                   1216:     return \"orb %2,%0\";
                   1217:   return \"orw %2,%0\";
                   1218: }")
                   1219: 
                   1220: (define_insn "iorqi3"
                   1221:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1222:        (ior:QI (match_operand:QI 1 "general_operand" "%0")
                   1223:                (match_operand:QI 2 "general_operand" "g")))]
                   1224:   ""
                   1225:   "orb %2,%0")
                   1226: 
                   1227: ;;- xor instructions.
                   1228: 
                   1229: (define_insn "xorsi3"
                   1230:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1231:        (xor:SI (match_operand:SI 1 "general_operand" "%0")
                   1232:                (match_operand:SI 2 "general_operand" "rmn")))]
                   1233:   ""
                   1234:   "*
                   1235: {
                   1236:   if (GET_CODE (operands[2]) == CONST_INT) {
                   1237:     if ((INTVAL (operands[2]) & 0xffffff00) == 0)
                   1238:       return \"xorb %2,%0\";
                   1239:     if ((INTVAL (operands[2]) & 0xffff0000) == 0)
                   1240:       return \"xorw %2,%0\";
                   1241:   }
                   1242:   return \"xord %2,%0\";
                   1243: }")
                   1244: 
                   1245: (define_insn "xorhi3"
                   1246:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1247:        (xor:HI (match_operand:HI 1 "general_operand" "%0")
                   1248:                (match_operand:HI 2 "general_operand" "g")))]
                   1249:   ""
                   1250:   "*
                   1251: {
                   1252:   if (GET_CODE(operands[2]) == CONST_INT &&
                   1253:       (INTVAL(operands[2]) & 0xffffff00) == 0)
                   1254:     return \"xorb %2,%0\";
                   1255:   return \"xorw %2,%0\";
                   1256: }")
                   1257: 
                   1258: (define_insn "xorqi3"
                   1259:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1260:        (xor:QI (match_operand:QI 1 "general_operand" "%0")
                   1261:                (match_operand:QI 2 "general_operand" "g")))]
                   1262:   ""
                   1263:   "xorb %2,%0")
                   1264: 
                   1265: (define_insn "negdf2"
                   1266:   [(set (match_operand:DF 0 "general_operand" "=fm<")
                   1267:        (neg:DF (match_operand:DF 1 "general_operand" "fmF")))]
                   1268:   "TARGET_32081"
                   1269:   "negl %1,%0")
                   1270: 
                   1271: (define_insn "negsf2"
                   1272:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                   1273:        (neg:SF (match_operand:SF 1 "general_operand" "fmF")))]
                   1274:   "TARGET_32081"
                   1275:   "negf %1,%0")
                   1276: 
                   1277: (define_insn "negsi2"
                   1278:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   1279:        (neg:SI (match_operand:SI 1 "general_operand" "rmn")))]
                   1280:   ""
                   1281:   "negd %1,%0")
                   1282: 
                   1283: (define_insn "neghi2"
                   1284:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   1285:        (neg:HI (match_operand:HI 1 "general_operand" "g")))]
                   1286:   ""
                   1287:   "negw %1,%0")
                   1288: 
                   1289: (define_insn "negqi2"
                   1290:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   1291:        (neg:QI (match_operand:QI 1 "general_operand" "g")))]
                   1292:   ""
                   1293:   "negb %1,%0")
                   1294: 
                   1295: (define_insn "one_cmplsi2"
                   1296:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   1297:        (not:SI (match_operand:SI 1 "general_operand" "rmn")))]
                   1298:   ""
                   1299:   "comd %1,%0")
                   1300: 
                   1301: (define_insn "one_cmplhi2"
                   1302:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   1303:        (not:HI (match_operand:HI 1 "general_operand" "g")))]
                   1304:   ""
                   1305:   "comw %1,%0")
                   1306: 
                   1307: (define_insn "one_cmplqi2"
                   1308:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   1309:        (not:QI (match_operand:QI 1 "general_operand" "g")))]
                   1310:   ""
                   1311:   "comb %1,%0")
                   1312: 
                   1313: ;; arithmetic left and right shift operations
                   1314: 
                   1315: (define_insn "ashlsi3"
                   1316:   [(set (match_operand:SI 0 "general_operand" "=g,g")
                   1317:        (ashift:SI (match_operand:SI 1 "general_operand" "r,0")
                   1318:                   (match_operand:SI 2 "general_operand" "I,rmn")))]
                   1319:   ""
1.1.1.2   root     1320:   "* output_shift_insn (operands);")
1.1       root     1321: 
                   1322: (define_insn ""
                   1323:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1324:        (ashift:SI (match_operand:SI 1 "general_operand" "0")
                   1325:                   (and:SI (match_operand:SI 2 "general_operand" "rmn")
                   1326:                           (const_int 31))))]
                   1327:   ""
                   1328:   "ashd %2,%0")
                   1329: 
                   1330: (define_insn "ashlhi3"
                   1331:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1332:        (ashift:HI (match_operand:HI 1 "general_operand" "0")
                   1333:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1334:   ""
                   1335:   "*
                   1336: { if (GET_CODE (operands[2]) == CONST_INT)
                   1337:     if (INTVAL (operands[2]) == 1)
                   1338:       return \"addw %1,%0\";
                   1339:     else if (INTVAL (operands[2]) == 2)
                   1340:       return \"addw %1,%0\;addw %0,%0\";
                   1341:   return \"ashw %2,%0\";
                   1342: }")
                   1343: 
                   1344: (define_insn "ashlqi3"
                   1345:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1346:        (ashift:QI (match_operand:QI 1 "general_operand" "0")
                   1347:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1348:   ""
                   1349:   "*
                   1350: { if (GET_CODE (operands[2]) == CONST_INT)
                   1351:     if (INTVAL (operands[2]) == 1)
                   1352:       return \"addb %1,%0\";
                   1353:     else if (INTVAL (operands[2]) == 2)
                   1354:       return \"addb %1,%0\;addb %0,%0\";
                   1355:   return \"ashb %2,%0\";
                   1356: }")
                   1357: 
                   1358: ;; logical shift instructions
                   1359: 
                   1360: (define_insn "lshlsi3"
                   1361:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1362:        (lshift:SI (match_operand:SI 1 "general_operand" "0")
                   1363:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1364:   ""
                   1365:   "lshd %2,%0")
                   1366: 
                   1367: (define_insn ""
                   1368:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1369:        (lshift:SI (match_operand:SI 1 "general_operand" "0")
                   1370:                   (and:SI (match_operand:SI 2 "general_operand" "rmn")
                   1371:                           (const_int 31))))]
                   1372:   ""
                   1373:   "lshd %2,%0")
                   1374: 
                   1375: (define_insn "lshlhi3"
                   1376:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1377:        (lshift:HI (match_operand:HI 1 "general_operand" "0")
                   1378:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1379:   ""
                   1380:   "lshw %2,%0")
                   1381: 
                   1382: (define_insn "lshlqi3"
                   1383:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1384:        (lshift:QI (match_operand:QI 1 "general_operand" "0")
                   1385:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1386:   ""
                   1387:   "lshb %2,%0")
                   1388: 
                   1389: ;; Rotate instructions
                   1390: 
                   1391: (define_insn "rotlsi3"
                   1392:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1393:        (rotate:SI (match_operand:SI 1 "general_operand" "0")
                   1394:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1395:   ""
                   1396:   "rotd %2,%0")
                   1397: 
                   1398: (define_insn "rotlhi3"
                   1399:   [(set (match_operand:HI 0 "general_operand" "=g")
                   1400:        (rotate:HI (match_operand:HI 1 "general_operand" "0")
                   1401:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1402:   ""
                   1403:   "rotw %2,%0")
                   1404: 
                   1405: (define_insn "rotlqi3"
                   1406:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1407:        (rotate:QI (match_operand:QI 1 "general_operand" "0")
                   1408:                   (match_operand:SI 2 "general_operand" "rmn")))]
                   1409:   ""
                   1410:   "rotb %2,%0")
                   1411: 
                   1412: ;;- load or push effective address 
                   1413: ;; These come after the move, add, and multiply patterns
                   1414: ;; because we don't want pushl $1 turned into pushad 1.
                   1415: 
                   1416: (define_insn ""
                   1417:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   1418:        (match_operand:QI 1 "address_operand" "p"))]
                   1419:   ""
1.1.1.2   root     1420:   "*
                   1421: {
                   1422:   if (REG_P (operands[0])
                   1423:       && GET_CODE (operands[1]) == MULT
                   1424:       && GET_CODE (XEXP (operands[1], 1)) == CONST_INT
                   1425:       && (INTVAL (XEXP (operands[1], 1)) == 2
                   1426:          || INTVAL (XEXP (operands[1], 1)) == 4))
                   1427:     {
                   1428:       rtx xoperands[3];
                   1429:       xoperands[0] = operands[0];
                   1430:       xoperands[1] = XEXP (operands[1], 0);
                   1431:       xoperands[2] = gen_rtx (CONST_INT, VOIDmode, INTVAL (XEXP (operands[1], 1)) >> 1);
                   1432:       return output_shift_insn (xoperands);
                   1433:     }
                   1434:   return \"addr %a1,%0\";
                   1435: }")
1.1       root     1436: 
                   1437: ;;; Index insns.  These are about the same speed as multiply-add counterparts.
                   1438: ;;; but slower then using power-of-2 shifts if we can use them
                   1439: ;
                   1440: ;(define_insn ""
                   1441: ;  [(set (match_operand:SI 0 "register_operand" "=r")
                   1442: ;      (plus:SI (match_operand:SI 1 "general_operand" "rmn")
                   1443: ;               (mult:SI (match_operand:SI 2 "register_operand" "0")
                   1444: ;                        (plus:SI (match_operand:SI 3 "general_operand" "rmn") (const_int 1)))))]
                   1445: ;  "GET_CODE (operands[3]) != CONST_INT || INTVAL (operands[3]) > 8"
                   1446: ;  "indexd %0,%3,%1")
                   1447: ;
                   1448: ;(define_insn ""
                   1449: ;  [(set (match_operand:SI 0 "register_operand" "=r")
                   1450: ;      (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "0")
                   1451: ;                        (plus:SI (match_operand:SI 2 "general_operand" "rmn") (const_int 1)))
                   1452: ;               (match_operand:SI 3 "general_operand" "rmn")))]
                   1453: ;  "GET_CODE (operands[2]) != CONST_INT || INTVAL (operands[2]) > 8"
                   1454: ;  "indexd %0,%2,%3")
                   1455: 
                   1456: ;; Set, Clear, and Invert bit
                   1457: 
                   1458: (define_insn ""
                   1459:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1460:        (ior:SI
                   1461:         (ashift:SI (const_int 1)
                   1462:                    (match_operand:SI 1 "general_operand" "rmn"))
                   1463:         (match_dup 0)))]
                   1464:   ""
                   1465:   "sbitd %1,%0")
                   1466: 
                   1467: (define_insn ""
                   1468:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1469:        (ior:SI
                   1470:         (match_dup 0)
                   1471:         (ashift:SI (const_int 1)
                   1472:                    (match_operand:SI 1 "general_operand" "rmn"))))]
                   1473:   ""
                   1474:   "sbitd %1,%0")
                   1475: 
                   1476: (define_insn ""
                   1477:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1478:        (ior:QI
                   1479:         (subreg:QI
                   1480:          (ashift:SI (const_int 1)
                   1481:                     (match_operand:QI 1 "general_operand" "rmn")) 0)
                   1482:         (match_dup 0)))]
                   1483:   ""
                   1484:   "sbitb %1,%0")
                   1485: 
                   1486: (define_insn ""
                   1487:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1488:        (ior:QI
                   1489:         (match_dup 0)
                   1490:         (subreg:QI
                   1491:          (ashift:SI (const_int 1)
                   1492:                     (match_operand:QI 1 "general_operand" "rmn")) 0)))]
                   1493:   ""
                   1494:   "sbitb %1,%0")
                   1495: 
                   1496: (define_insn ""
                   1497:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1498:        (and:SI
                   1499:         (not:SI
                   1500:          (ashift:SI (const_int 1)
                   1501:                     (match_operand:SI 1 "general_operand" "rmn")))
                   1502:         (match_dup 0)))]
                   1503:   ""
                   1504:   "cbitd %1,%0")
                   1505: 
                   1506: (define_insn ""
                   1507:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1508:        (and:SI
                   1509:         (match_dup 0)
                   1510:         (not:SI
                   1511:          (ashift:SI (const_int 1)
                   1512:                     (match_operand:SI 1 "general_operand" "rmn")))))]
                   1513:   ""
                   1514:   "cbitd %1,%0")
                   1515: 
                   1516: (define_insn ""
                   1517:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1518:        (and:QI
                   1519:         (subreg:QI
                   1520:          (not:SI
                   1521:           (ashift:SI (const_int 1)
                   1522:                      (match_operand:QI 1 "general_operand" "rmn"))) 0)
                   1523:         (match_dup 0)))]
                   1524:   ""
                   1525:   "cbitb %1,%0")
                   1526: 
                   1527: (define_insn ""
                   1528:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1529:        (and:QI
                   1530:         (match_dup 0)
                   1531:         (subreg:QI
                   1532:          (not:SI
                   1533:           (ashift:SI (const_int 1)
                   1534:                      (match_operand:QI 1 "general_operand" "rmn"))) 0)))]
                   1535:   ""
                   1536:   "cbitb %1,%0")
                   1537: 
                   1538: (define_insn ""
                   1539:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1540:        (xor:SI
                   1541:         (ashift:SI (const_int 1)
                   1542:                    (match_operand:SI 1 "general_operand" "rmn"))
                   1543:         (match_dup 0)))]
                   1544:   ""
                   1545:   "ibitd %1,%0")
                   1546: 
                   1547: (define_insn ""
                   1548:   [(set (match_operand:SI 0 "general_operand" "=g")
                   1549:        (xor:SI
                   1550:         (match_dup 0)
                   1551:         (ashift:SI (const_int 1)
                   1552:                    (match_operand:SI 1 "general_operand" "rmn"))))]
                   1553:   ""
                   1554:   "ibitd %1,%0")
                   1555: 
                   1556: (define_insn ""
                   1557:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1558:        (xor:QI
                   1559:         (subreg:QI
                   1560:          (ashift:SI (const_int 1)
                   1561:                     (match_operand:QI 1 "general_operand" "rmn")) 0)
                   1562:         (match_dup 0)))]
                   1563:   ""
                   1564:   "ibitb %1,%0")
                   1565: 
                   1566: (define_insn ""
                   1567:   [(set (match_operand:QI 0 "general_operand" "=g")
                   1568:        (xor:QI
                   1569:         (match_dup 0)
                   1570:         (subreg:QI
                   1571:          (ashift:SI (const_int 1)
                   1572:                     (match_operand:QI 1 "general_operand" "rmn")) 0)))]
                   1573:   ""
                   1574:   "ibitb %1,%0")
                   1575: 
                   1576: ;; Recognize jbs and jbc instructions.
                   1577: 
                   1578: (define_insn ""
                   1579:   [(set (cc0)
                   1580:        (zero_extract (match_operand:SI 0 "general_operand" "rmn")
                   1581:                      (const_int 1)
                   1582:                      (match_operand:SI 1 "general_operand" "rmn")))]
                   1583:   ""
                   1584:   "*
                   1585: { cc_status.flags = CC_Z_IN_F;
                   1586:   return \"tbitd %1,%0\";
                   1587: }")
                   1588: 
                   1589: (define_insn ""
                   1590:   [(set (cc0)
                   1591:        (minus (zero_extract (match_operand:SI 0 "general_operand" "rmn")
                   1592:                             (const_int 1)
                   1593:                             (match_operand:SI 1 "general_operand" "rmn"))
                   1594:               (const_int 1)))]
                   1595:   ""
                   1596:   "*
                   1597: { cc_status.flags = CC_Z_IN_NOT_F;
                   1598:   return \"tbitd %1,%0\";
                   1599: }")
                   1600: 
                   1601: (define_insn ""
                   1602:   [(set (cc0)
                   1603:        (zero_extract (match_operand:HI 0 "general_operand" "g")
                   1604:                      (const_int 1)
                   1605:                      (match_operand:HI 1 "general_operand" "g")))]
                   1606:   ""
                   1607:   "*
                   1608: { cc_status.flags = CC_Z_IN_F;
                   1609:   return \"tbitw %1,%0\";
                   1610: }")
                   1611: 
                   1612: (define_insn ""
                   1613:   [(set (cc0)
                   1614:        (minus (zero_extract (match_operand:HI 0 "general_operand" "g")
                   1615:                             (const_int 1)
                   1616:                             (match_operand:HI 1 "general_operand" "rmn"))
                   1617:               (const_int 1)))]
                   1618:   ""
                   1619:   "*
                   1620: { cc_status.flags = CC_Z_IN_NOT_F;
                   1621:   return \"tbitw %1,%0\";
                   1622: }")
                   1623: 
                   1624: (define_insn ""
                   1625:   [(set (cc0)
                   1626:        (zero_extract (match_operand:QI 0 "general_operand" "g")
                   1627:                      (const_int 1)
                   1628:                      (match_operand:QI 1 "general_operand" "g")))]
                   1629:   ""
                   1630:   "*
                   1631: { cc_status.flags = CC_Z_IN_F;
                   1632:   return \"tbitb %1,%0\";
                   1633: }")
                   1634: 
                   1635: (define_insn ""
                   1636:   [(set (cc0)
                   1637:        (minus (zero_extract:SI (match_operand:QI 0 "general_operand" "g")
                   1638:                                (const_int 1)
                   1639:                                (match_operand:QI 1 "general_operand" "rmn"))
                   1640:               (const_int 1)))]
                   1641:   ""
                   1642:   "*
                   1643: { cc_status.flags = CC_Z_IN_NOT_F;
                   1644:   return \"tbitb %1,%0\";
                   1645: }")
                   1646: 
                   1647: (define_insn ""
                   1648:   [(set (cc0)
                   1649:        (and:SI (match_operand:SI 0 "general_operand" "rmn")
                   1650:                (match_operand:SI 1 "immediate_operand" "i")))]
                   1651:   "GET_CODE (operands[1]) == CONST_INT
                   1652:    && exact_log2 (INTVAL (operands[1])) >= 0"
                   1653:   "*
                   1654: {
                   1655:   operands[1]
                   1656:     = gen_rtx (CONST_INT, VOIDmode, exact_log2 (INTVAL (operands[1])));
                   1657:   cc_status.flags = CC_Z_IN_F;
                   1658:   return \"tbitd %1,%0\";
                   1659: }")
                   1660: 
                   1661: ;; extract(base, width, offset)
                   1662: ;; Signed bitfield extraction is not supported in hardware on the
                   1663: ;; NS 32032.  It is therefore better to let GCC figure out a
                   1664: ;; good strategy for generating the proper instruction sequence
                   1665: ;; and represent it as rtl.
                   1666: 
1.1.1.2   root     1667: ;; Optimize the case of extracting a byte or word from a register.
                   1668: ;; Otherwise we must load a register with the offset of the
                   1669: ;; chunk we want, and perform an extract insn (each of which
                   1670: ;; is very expensive).  Since we use the stack to do our bit-twiddling
                   1671: ;; we cannot use it for a destination.  Perhaps things are fast
                   1672: ;; enough on the 32532 that such hacks are not needed.
                   1673: 
                   1674: (define_insn ""
                   1675:   [(set (match_operand:SI 0 "general_operand" "=ro")
                   1676:        (zero_extract:SI (match_operand:SI 1 "register_operand" "r")
1.1       root     1677:                         (match_operand:SI 2 "const_int" "i")
1.1.1.2   root     1678:                         (match_operand:SI 3 "const_int" "i")))]
                   1679:   "(INTVAL (operands[2]) == 8 || INTVAL (operands[2]) == 16)
                   1680:    && (INTVAL (operands[3]) == 8 || INTVAL (operands[3]) == 16 || INTVAL (operands[3]) == 24)"
                   1681:   "*
                   1682: {
                   1683:   output_asm_insn (\"movd %1,tos\", operands);
                   1684:   if (INTVAL (operands[2]) == 16)
                   1685:     {
                   1686:       if (INTVAL (operands[3]) == 8)
                   1687:        output_asm_insn (\"movzwd 1(sp),%0\", operands);
                   1688:       else
                   1689:        output_asm_insn (\"movzwd 2(sp),%0\", operands);
                   1690:     }
                   1691:   else
                   1692:     {
                   1693:       if (INTVAL (operands[3]) == 8)
                   1694:        output_asm_insn (\"movzbd 1(sp),%0\", operands);
                   1695:       else if (INTVAL (operands[3]) == 16)
                   1696:        output_asm_insn (\"movzbd 2(sp),%0\", operands);
                   1697:       else
                   1698:        output_asm_insn (\"movzbd 3(sp),%0\", operands);
                   1699:     }
                   1700:   return \"adjspb %$-4\";
                   1701: }")
                   1702: 
                   1703: (define_insn ""
                   1704:   [(set (match_operand:SI 0 "general_operand" "=ro")
                   1705:        (zero_extract:SI (match_operand:HI 1 "register_operand" "r")
                   1706:                         (match_operand:SI 2 "const_int" "i")
                   1707:                         (match_operand:SI 3 "const_int" "i")))]
                   1708:   "INTVAL (operands[2]) == 8 && INTVAL (operands[3]) == 8"
                   1709:   "movw %1,tos\;movzbd 1(sp),%0\;adjspb %$-2")
                   1710: 
                   1711: (define_insn "extzv"
                   1712:   [(set (match_operand:SI 0 "general_operand" "=g<,g<")
                   1713:        (zero_extract:SI (match_operand:SI 1 "general_operand" "rm,o")
                   1714:                         (match_operand:SI 2 "const_int" "i,i")
                   1715:                         (match_operand:SI 3 "general_operand" "rK,n")))]
1.1       root     1716:   ""
                   1717:   "*
                   1718: { if (GET_CODE (operands[3]) == CONST_INT)
1.1.1.2   root     1719:     {
                   1720:       if (INTVAL (operands[3]) >= 8)
                   1721:        operands[1] = plus_constant (operands[1], INTVAL (operands[3]) >> 3);
                   1722:       return \"extsd %1,%0,%3,%2\";
                   1723:     }
1.1       root     1724:   else return \"extd %3,%1,%0,%2\";
                   1725: }")
                   1726: 
                   1727: (define_insn ""
1.1.1.2   root     1728:   [(set (match_operand:SI 0 "general_operand" "=g<,g<")
                   1729:        (zero_extract:SI (match_operand:HI 1 "general_operand" "rm,o")
                   1730:                         (match_operand:SI 2 "const_int" "i,i")
                   1731:                         (match_operand:SI 3 "general_operand" "rK,n")))]
1.1       root     1732:   ""
                   1733:   "*
                   1734: { if (GET_CODE (operands[3]) == CONST_INT)
1.1.1.2   root     1735:     {
                   1736:       if (INTVAL (operands[3]) >= 8)
                   1737:        operands[1] = plus_constant (operands[1], INTVAL (operands[3]) >> 3);
                   1738:       return \"extsd %1,%0,%3,%2\";
                   1739:     }
1.1       root     1740:   else return \"extd %3,%1,%0,%2\";
                   1741: }")
                   1742: 
                   1743: (define_insn ""
                   1744:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   1745:        (zero_extract:SI (match_operand:QI 1 "general_operand" "g")
                   1746:                         (match_operand:SI 2 "const_int" "i")
1.1.1.2   root     1747:                         (match_operand:SI 3 "general_operand" "rn")))]
1.1       root     1748:   ""
                   1749:   "*
                   1750: { if (GET_CODE (operands[3]) == CONST_INT)
                   1751:     return \"extsd %1,%0,%3,%2\";
                   1752:   else return \"extd %3,%1,%0,%2\";
                   1753: }")
                   1754: 
                   1755: (define_insn "insv"
1.1.1.2   root     1756:   [(set (zero_extract:SI (match_operand:SI 0 "general_operand" "=g,o")
                   1757:                         (match_operand:SI 1 "const_int" "i,i")
                   1758:                         (match_operand:SI 2 "general_operand" "rK,n"))
                   1759:        (match_operand:SI 3 "general_operand" "rm,rm"))]
1.1       root     1760:   ""
                   1761:   "*
                   1762: { if (GET_CODE (operands[2]) == CONST_INT)
1.1.1.2   root     1763:     {
                   1764:       if (INTVAL (operands[2]) >= 8)
                   1765:        operands[0] = plus_constant (operands[0], INTVAL (operands[2]) >> 3);
                   1766:       if (INTVAL (operands[1]) <= 8)
                   1767:        return \"inssb %3,%0,%2,%1\";
                   1768:       else if (INTVAL (operands[1]) <= 16)
                   1769:        return \"inssw %3,%0,%2,%1\";
                   1770:       else
                   1771:        return \"inssd %3,%0,%2,%1\";
                   1772:     }
                   1773:   return \"insd %2,%3,%0,%1\";
1.1       root     1774: }")
                   1775: 
                   1776: (define_insn ""
1.1.1.2   root     1777:   [(set (zero_extract:SI (match_operand:HI 0 "general_operand" "=g,o")
                   1778:                         (match_operand:SI 1 "const_int" "i,i")
                   1779:                         (match_operand:SI 2 "general_operand" "rK,n"))
                   1780:        (match_operand:SI 3 "general_operand" "rm,rm"))]
1.1       root     1781:   ""
                   1782:   "*
                   1783: { if (GET_CODE (operands[2]) == CONST_INT)
1.1.1.2   root     1784:     {
                   1785:       if (INTVAL (operands[2]) >= 8)
                   1786:        operands[0] = plus_constant (operands[0], INTVAL (operands[2]) >> 3);
                   1787:       if (INTVAL (operands[1]) <= 8)
                   1788:        return \"inssb %3,%0,%2,%1\";
                   1789:       else if (INTVAL (operands[1]) <= 16)
                   1790:        return \"inssw %3,%0,%2,%1\";
                   1791:       else
                   1792:        return \"inssd %3,%0,%2,%1\";
                   1793:     }
                   1794:   return \"insd %2,%3,%0,%1\";
1.1       root     1795: }")
                   1796: 
                   1797: (define_insn ""
                   1798:   [(set (zero_extract:SI (match_operand:QI 0 "general_operand" "=g")
                   1799:                         (match_operand:SI 1 "const_int" "i")
1.1.1.2   root     1800:                         (match_operand:SI 2 "general_operand" "rn"))
                   1801:        (match_operand:SI 3 "general_operand" "rm"))]
1.1       root     1802:   ""
                   1803:   "*
                   1804: { if (GET_CODE (operands[2]) == CONST_INT)
                   1805:     if (INTVAL (operands[1]) <= 8)
                   1806:       return \"inssb %3,%0,%2,%1\";
                   1807:     else if (INTVAL (operands[1]) <= 16)
                   1808:       return \"inssw %3,%0,%2,%1\";
                   1809:     else
                   1810:       return \"inssd %3,%0,%2,%1\";
1.1.1.2   root     1811:   return \"insd %2,%3,%0,%1\";
1.1       root     1812: }")
                   1813: 
                   1814: 
                   1815: (define_insn "jump"
                   1816:   [(set (pc)
                   1817:        (label_ref (match_operand 0 "" "")))]
                   1818:   ""
                   1819:   "br %l0")
                   1820: 
                   1821: (define_insn "beq"
                   1822:   [(set (pc)
                   1823:        (if_then_else (eq (cc0)
                   1824:                          (const_int 0))
                   1825:                      (label_ref (match_operand 0 "" ""))
                   1826:                      (pc)))]
                   1827:   ""
                   1828:   "*
                   1829: { if (cc_prev_status.flags & CC_Z_IN_F)
                   1830:     return \"bfc %l0\";
                   1831:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   1832:     return \"bfs %l0\";
                   1833:   else return \"beq %l0\";
                   1834: }")
                   1835: 
                   1836: (define_insn "bne"
                   1837:   [(set (pc)
                   1838:        (if_then_else (ne (cc0)
                   1839:                          (const_int 0))
                   1840:                      (label_ref (match_operand 0 "" ""))
                   1841:                      (pc)))]
                   1842:   ""
                   1843:   "*
                   1844: { if (cc_prev_status.flags & CC_Z_IN_F)
                   1845:     return \"bfs %l0\";
                   1846:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   1847:     return \"bfc %l0\";
                   1848:   else return \"bne %l0\";
                   1849: }")
                   1850: 
                   1851: (define_insn "bgt"
                   1852:   [(set (pc)
                   1853:        (if_then_else (gt (cc0)
                   1854:                          (const_int 0))
                   1855:                      (label_ref (match_operand 0 "" ""))
                   1856:                      (pc)))]
                   1857:   ""
                   1858:   "bgt %l0")
                   1859: 
                   1860: (define_insn "bgtu"
                   1861:   [(set (pc)
                   1862:        (if_then_else (gtu (cc0)
                   1863:                           (const_int 0))
                   1864:                      (label_ref (match_operand 0 "" ""))
                   1865:                      (pc)))]
                   1866:   ""
                   1867:   "bhi %l0")
                   1868: 
                   1869: (define_insn "blt"
                   1870:   [(set (pc)
                   1871:        (if_then_else (lt (cc0)
                   1872:                          (const_int 0))
                   1873:                      (label_ref (match_operand 0 "" ""))
                   1874:                      (pc)))]
                   1875:   ""
                   1876:   "blt %l0")
                   1877: 
                   1878: (define_insn "bltu"
                   1879:   [(set (pc)
                   1880:        (if_then_else (ltu (cc0)
                   1881:                           (const_int 0))
                   1882:                      (label_ref (match_operand 0 "" ""))
                   1883:                      (pc)))]
                   1884:   ""
                   1885:   "blo %l0")
                   1886: 
                   1887: (define_insn "bge"
                   1888:   [(set (pc)
                   1889:        (if_then_else (ge (cc0)
                   1890:                          (const_int 0))
                   1891:                      (label_ref (match_operand 0 "" ""))
                   1892:                      (pc)))]
                   1893:   ""
                   1894:   "bge %l0")
                   1895: 
                   1896: (define_insn "bgeu"
                   1897:   [(set (pc)
                   1898:        (if_then_else (geu (cc0)
                   1899:                           (const_int 0))
                   1900:                      (label_ref (match_operand 0 "" ""))
                   1901:                      (pc)))]
                   1902:   ""
                   1903:   "bhs %l0")
                   1904: 
                   1905: (define_insn "ble"
                   1906:   [(set (pc)
                   1907:        (if_then_else (le (cc0)
                   1908:                          (const_int 0))
                   1909:                      (label_ref (match_operand 0 "" ""))
                   1910:                      (pc)))]
                   1911:   ""
                   1912:   "ble %l0")
                   1913: 
                   1914: (define_insn "bleu"
                   1915:   [(set (pc)
                   1916:        (if_then_else (leu (cc0)
                   1917:                           (const_int 0))
                   1918:                      (label_ref (match_operand 0 "" ""))
                   1919:                      (pc)))]
                   1920:   ""
                   1921:   "bls %l0")
                   1922: 
                   1923: (define_insn ""
                   1924:   [(set (pc)
                   1925:        (if_then_else (eq (cc0)
                   1926:                          (const_int 0))
                   1927:                      (pc)
                   1928:                      (label_ref (match_operand 0 "" ""))))]
                   1929:   ""
                   1930:   "*
                   1931: { if (cc_prev_status.flags & CC_Z_IN_F)
                   1932:     return \"bfs %l0\";
                   1933:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   1934:     return \"bfc %l0\";
                   1935:   else return \"bne %l0\";
                   1936: }")
                   1937: 
                   1938: (define_insn ""
                   1939:   [(set (pc)
                   1940:        (if_then_else (ne (cc0)
                   1941:                          (const_int 0))
                   1942:                      (pc)
                   1943:                      (label_ref (match_operand 0 "" ""))))]
                   1944:   ""
                   1945:   "*
                   1946: { if (cc_prev_status.flags & CC_Z_IN_F)
                   1947:     return \"bfc %l0\";
                   1948:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   1949:     return \"bfs %l0\";
                   1950:   else return \"beq %l0\";
                   1951: }")
                   1952: 
                   1953: (define_insn ""
                   1954:   [(set (pc)
                   1955:        (if_then_else (gt (cc0)
                   1956:                          (const_int 0))
                   1957:                      (pc)
                   1958:                      (label_ref (match_operand 0 "" ""))))]
                   1959:   ""
                   1960:   "ble %l0")
                   1961: 
                   1962: (define_insn ""
                   1963:   [(set (pc)
                   1964:        (if_then_else (gtu (cc0)
                   1965:                           (const_int 0))
                   1966:                      (pc)
                   1967:                      (label_ref (match_operand 0 "" ""))))]
                   1968:   ""
                   1969:   "bls %l0")
                   1970: 
                   1971: (define_insn ""
                   1972:   [(set (pc)
                   1973:        (if_then_else (lt (cc0)
                   1974:                          (const_int 0))
                   1975:                      (pc)
                   1976:                      (label_ref (match_operand 0 "" ""))))]
                   1977:   ""
                   1978:   "bge %l0")
                   1979: 
                   1980: (define_insn ""
                   1981:   [(set (pc)
                   1982:        (if_then_else (ltu (cc0)
                   1983:                           (const_int 0))
                   1984:                      (pc)
                   1985:                      (label_ref (match_operand 0 "" ""))))]
                   1986:   ""
                   1987:   "bhs %l0")
                   1988: 
                   1989: (define_insn ""
                   1990:   [(set (pc)
                   1991:        (if_then_else (ge (cc0)
                   1992:                          (const_int 0))
                   1993:                      (pc)
                   1994:                      (label_ref (match_operand 0 "" ""))))]
                   1995:   ""
                   1996:   "blt %l0")
                   1997: 
                   1998: (define_insn ""
                   1999:   [(set (pc)
                   2000:        (if_then_else (geu (cc0)
                   2001:                           (const_int 0))
                   2002:                      (pc)
                   2003:                      (label_ref (match_operand 0 "" ""))))]
                   2004:   ""
                   2005:   "blo %l0")
                   2006: 
                   2007: (define_insn ""
                   2008:   [(set (pc)
                   2009:        (if_then_else (le (cc0)
                   2010:                          (const_int 0))
                   2011:                      (pc)
                   2012:                      (label_ref (match_operand 0 "" ""))))]
                   2013:   ""
                   2014:   "bgt %l0")
                   2015: 
                   2016: (define_insn ""
                   2017:   [(set (pc)
                   2018:        (if_then_else (leu (cc0)
                   2019:                           (const_int 0))
                   2020:                      (pc)
                   2021:                      (label_ref (match_operand 0 "" ""))))]
                   2022:   ""
                   2023:   "bhi %l0")
                   2024: 
                   2025: ;; Subtract-and-jump and Add-and-jump insns.
                   2026: ;; These can actually be used for adding numbers in the range -8 to 7
                   2027: 
                   2028: (define_insn ""
                   2029:   [(set (pc)
                   2030:        (if_then_else
                   2031:         (ne (minus:SI (match_operand:SI 0 "general_operand" "+g")
                   2032:                       (match_operand:SI 1 "general_operand" "i"))
                   2033:             (const_int 0))
                   2034:         (label_ref (match_operand 2 "" ""))
                   2035:         (pc)))
                   2036:   (set (match_dup 0)
                   2037:        (minus:SI (match_dup 0)
                   2038:                 (match_dup 1)))]
                   2039:   "GET_CODE (operands[1]) == CONST_INT
                   2040:    && INTVAL (operands[1]) > -8 && INTVAL (operands[1]) <= 8"
                   2041:   "acbd %$%n1,%0,%l2")
                   2042: 
                   2043: (define_insn ""
                   2044:   [(set (pc)
                   2045:        (if_then_else
                   2046:         (ne (plus:SI (match_operand:SI 0 "general_operand" "+g")
                   2047:                      (match_operand:SI 1 "general_operand" "i"))
                   2048:             (const_int 0))
                   2049:         (label_ref (match_operand 2 "" ""))
                   2050:         (pc)))
                   2051:   (set (match_dup 0)
                   2052:        (plus:SI (match_dup 0)
                   2053:                (match_dup 1)))]
                   2054:   "GET_CODE (operands[1]) == CONST_INT
                   2055:    && INTVAL (operands[1]) >= -8 && INTVAL (operands[1]) < 8"
                   2056:   "acbd %1,%0,%l2")
                   2057: 
                   2058: ;; Reversed
                   2059: 
                   2060: (define_insn ""
                   2061:   [(set (pc)
                   2062:        (if_then_else
                   2063:         (eq (minus:SI (match_operand:SI 0 "general_operand" "+g")
                   2064:                       (match_operand:SI 1 "general_operand" "i"))
                   2065:             (const_int 0))
                   2066:         (pc)
                   2067:         (label_ref (match_operand 2 "" ""))))
                   2068:   (set (match_dup 0)
                   2069:        (minus:SI (match_dup 0)
                   2070:                 (match_dup 1)))]
                   2071:   "GET_CODE (operands[1]) == CONST_INT
                   2072:    && INTVAL (operands[1]) > -8 && INTVAL (operands[1]) <= 8"
                   2073:   "acbd %$%n1,%0,%l2")
                   2074: 
                   2075: (define_insn ""
                   2076:   [(set (pc)
                   2077:        (if_then_else
                   2078:         (eq (plus:SI (match_operand:SI 0 "general_operand" "+g")
                   2079:                      (match_operand:SI 1 "general_operand" "i"))
                   2080:             (const_int 0))
                   2081:         (pc)
                   2082:         (label_ref (match_operand 2 "" ""))))
                   2083:   (set (match_dup 0)
                   2084:        (plus:SI (match_dup 0)
                   2085:                (match_dup 1)))]
                   2086:   "GET_CODE (operands[1]) == CONST_INT
                   2087:    && INTVAL (operands[1]) >= -8 && INTVAL (operands[1]) < 8"
                   2088:   "acbd %1,%0,%l2")
                   2089: 
                   2090: (define_insn "call"
                   2091:   [(call (match_operand:QI 0 "general_operand" "g")
                   2092:         (match_operand:QI 1 "general_operand" "g"))]
                   2093:   ""
                   2094:   "*
                   2095: {
                   2096:   if (GET_CODE (operands[0]) == MEM)
                   2097:     {
                   2098:       if (CONSTANT_ADDRESS_P (XEXP (operands[0], 0)))
1.1.1.2   root     2099:        return \"bsr %?%a0\";
1.1       root     2100:       if (GET_CODE (XEXP (operands[0], 0)) == REG)
                   2101:         return \"jsr %a0\";
                   2102:     }
                   2103:   return \"jsr %0\";
                   2104: }")
                   2105: 
                   2106: (define_insn "call_value"
                   2107:   [(set (match_operand 0 "" "fg")
                   2108:        (call (match_operand:QI 1 "general_operand" "g")
                   2109:              (match_operand:QI 2 "general_operand" "g")))]
                   2110:   ""
                   2111:   "*
                   2112: {
                   2113:   if (GET_CODE (operands[1]) == MEM)
                   2114:     {
                   2115:       if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
1.1.1.2   root     2116:        return \"bsr %?%a1\";
1.1       root     2117:       if (GET_CODE (XEXP (operands[1], 0)) == REG)
                   2118:         return \"jsr %a1\";
                   2119:     }
                   2120:   return \"jsr %1\";
                   2121: }")
                   2122: 
                   2123: (define_insn "return"
                   2124:   [(return)]
                   2125:   ""
                   2126:   "ret 0")
                   2127: 
                   2128: (define_insn "abssf2"
                   2129:   [(set (match_operand:SF 0 "general_operand" "=fm<")
                   2130:        (abs:SF (match_operand:SF 1 "general_operand" "fmF")))]
                   2131:   "TARGET_32081"
                   2132:   "absf %1,%0")
                   2133: 
                   2134: (define_insn "absdf2"
                   2135:   [(set (match_operand:DF 0 "general_operand" "=fm<")
                   2136:        (abs:DF (match_operand:DF 1 "general_operand" "fmF")))]
                   2137:   "TARGET_32081"
                   2138:   "absl %1,%0")
                   2139: 
                   2140: (define_insn "abssi2"
                   2141:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2142:        (abs:SI (match_operand:SI 1 "general_operand" "rmn")))]
                   2143:   ""
                   2144:   "absd %1,%0")
                   2145: 
                   2146: (define_insn "abshi2"
                   2147:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2148:        (abs:HI (match_operand:HI 1 "general_operand" "g")))]
                   2149:   ""
                   2150:   "absw %1,%0")
                   2151: 
                   2152: (define_insn "absqi2"
                   2153:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2154:        (abs:QI (match_operand:QI 1 "general_operand" "g")))]
                   2155:   ""
                   2156:   "absb %1,%0")
                   2157: 
                   2158: ;;(define_insn "tablejump"
                   2159: ;;  [(set (pc)
                   2160: ;;     (plus:SI (match_operand:SI 0 "general_operand" "g")
                   2161: ;;              (pc)))]
                   2162: ;;  ""
                   2163: ;;  "cased %0")
                   2164: 
                   2165: (define_insn "tablejump"
                   2166:   [(set (pc)
                   2167:        (plus:SI (pc) (match_operand:HI 0 "general_operand" "g")))
                   2168:    (use (label_ref (match_operand 1 "" "")))]
                   2169:   ""
                   2170:   "*
                   2171: {
                   2172:   ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"LI\",
                   2173:                             CODE_LABEL_NUMBER (operands[1]));
                   2174:   return \"casew %0\";
                   2175: }")
                   2176: 
                   2177: ;;(define_insn ""
                   2178: ;;  [(set (pc)
                   2179: ;;     (plus:SI (match_operand:QI 0 "general_operand" "g")
                   2180: ;;              (pc)))]
                   2181: ;;  ""
                   2182: ;;  "caseb %0")
                   2183: 
                   2184: ;; Scondi instructions
                   2185: (define_insn "seq"
                   2186:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2187:        (eq (cc0) (const_int 0)))]
                   2188:   ""
                   2189:   "*
                   2190: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2191:     return \"sfcd %0\";
                   2192:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2193:     return \"sfsd %0\";
                   2194:   else return \"seqd %0\";
                   2195: }")
                   2196: 
                   2197: (define_insn ""
                   2198:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2199:        (eq (cc0) (const_int 0)))]
                   2200:   ""
                   2201:   "*
                   2202: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2203:     return \"sfcw %0\";
                   2204:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2205:     return \"sfsw %0\";
                   2206:   else return \"seqw %0\";
                   2207: }")
                   2208: 
                   2209: (define_insn ""
                   2210:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2211:        (eq (cc0) (const_int 0)))]
                   2212:   ""
                   2213:   "*
                   2214: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2215:     return \"sfcb %0\";
                   2216:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2217:     return \"sfsb %0\";
                   2218:   else return \"seqb %0\";
                   2219: }")
                   2220: 
                   2221: (define_insn "sne"
                   2222:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2223:        (ne (cc0) (const_int 0)))]
                   2224:   ""
                   2225:   "*
                   2226: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2227:     return \"sfsd %0\";
                   2228:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2229:     return \"sfcd %0\";
                   2230:   else return \"sned %0\";
                   2231: }")
                   2232: 
                   2233: (define_insn ""
                   2234:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2235:        (ne (cc0) (const_int 0)))]
                   2236:   ""
                   2237:   "*
                   2238: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2239:     return \"sfsw %0\";
                   2240:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2241:     return \"sfcw %0\";
                   2242:   else return \"snew %0\";
                   2243: }")
                   2244: 
                   2245: (define_insn ""
                   2246:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2247:        (ne (cc0) (const_int 0)))]
                   2248:   ""
                   2249:   "*
                   2250: { if (cc_prev_status.flags & CC_Z_IN_F)
                   2251:     return \"sfsb %0\";
                   2252:   else if (cc_prev_status.flags & CC_Z_IN_NOT_F)
                   2253:     return \"sfcb %0\";
                   2254:   else return \"sneb %0\";
                   2255: }")
                   2256: 
                   2257: (define_insn "sgt"
                   2258:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2259:        (gt (cc0) (const_int 0)))]
                   2260:   ""
                   2261:   "sgtd %0")
                   2262: 
                   2263: (define_insn ""
                   2264:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2265:        (gt (cc0) (const_int 0)))]
                   2266:   ""
                   2267:   "sgtw %0")
                   2268: 
                   2269: (define_insn ""
                   2270:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2271:        (gt (cc0) (const_int 0)))]
                   2272:   ""
                   2273:   "sgtb %0")
                   2274: 
                   2275: (define_insn "sgtu"
                   2276:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2277:        (gtu (cc0) (const_int 0)))]
                   2278:   ""
                   2279:   "shid %0")
                   2280: 
                   2281: (define_insn ""
                   2282:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2283:        (gtu (cc0) (const_int 0)))]
                   2284:   ""
                   2285:   "shiw %0")
                   2286: 
                   2287: (define_insn ""
                   2288:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2289:        (gtu (cc0) (const_int 0)))]
                   2290:   ""
                   2291:   "shib %0")
                   2292: 
                   2293: (define_insn "slt"
                   2294:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2295:        (lt (cc0) (const_int 0)))]
                   2296:   ""
                   2297:   "sltd %0")
                   2298: 
                   2299: (define_insn ""
                   2300:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2301:        (lt (cc0) (const_int 0)))]
                   2302:   ""
                   2303:   "sltw %0")
                   2304: 
                   2305: (define_insn ""
                   2306:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2307:        (lt (cc0) (const_int 0)))]
                   2308:   ""
                   2309:   "sltb %0")
                   2310: 
                   2311: (define_insn "sltu"
                   2312:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2313:        (ltu (cc0) (const_int 0)))]
                   2314:   ""
                   2315:   "slod %0")
                   2316: 
                   2317: (define_insn ""
                   2318:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2319:        (ltu (cc0) (const_int 0)))]
                   2320:   ""
                   2321:   "slow %0")
                   2322: 
                   2323: (define_insn ""
                   2324:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2325:        (ltu (cc0) (const_int 0)))]
                   2326:   ""
                   2327:   "slob %0")
                   2328: 
                   2329: (define_insn "sge"
                   2330:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2331:        (ge (cc0) (const_int 0)))]
                   2332:   ""
                   2333:   "sged %0")
                   2334: 
                   2335: (define_insn ""
                   2336:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2337:        (ge (cc0) (const_int 0)))]
                   2338:   ""
                   2339:   "sgew %0")
                   2340: 
                   2341: (define_insn ""
                   2342:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2343:        (ge (cc0) (const_int 0)))]
                   2344:   ""
                   2345:   "sgeb %0")
                   2346: 
                   2347: (define_insn "sgeu"
                   2348:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2349:        (geu (cc0) (const_int 0)))]
                   2350:   ""
                   2351:   "shsd %0")  
                   2352: 
                   2353: (define_insn ""
                   2354:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2355:        (geu (cc0) (const_int 0)))]
                   2356:   ""
                   2357:   "shsw %0")  
                   2358: 
                   2359: (define_insn ""
                   2360:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2361:        (geu (cc0) (const_int 0)))]
                   2362:   ""
                   2363:   "shsb %0")  
                   2364: 
                   2365: (define_insn "sle"
                   2366:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2367:        (le (cc0) (const_int 0)))]
                   2368:   ""
                   2369:   "sled %0")
                   2370: 
                   2371: (define_insn ""
                   2372:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2373:        (le (cc0) (const_int 0)))]
                   2374:   ""
                   2375:   "slew %0")
                   2376: 
                   2377: (define_insn ""
                   2378:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2379:        (le (cc0) (const_int 0)))]
                   2380:   ""
                   2381:   "sleb %0")
                   2382: 
                   2383: (define_insn "sleu"
                   2384:   [(set (match_operand:SI 0 "general_operand" "=g<")
                   2385:        (leu (cc0) (const_int 0)))]
                   2386:   ""
                   2387:   "slsd %0")
                   2388: 
                   2389: (define_insn ""
                   2390:   [(set (match_operand:HI 0 "general_operand" "=g<")
                   2391:        (leu (cc0) (const_int 0)))]
                   2392:   ""
                   2393:   "slsw %0")
                   2394: 
                   2395: (define_insn ""
                   2396:   [(set (match_operand:QI 0 "general_operand" "=g<")
                   2397:        (leu (cc0) (const_int 0)))]
                   2398:   ""
                   2399:   "slsb %0")
                   2400: 
                   2401: ;;- Local variables:
                   2402: ;;- mode:emacs-lisp
                   2403: ;;- comment-start: ";;- "
                   2404: ;;- eval: (set-syntax-table (copy-sequence (syntax-table)))
                   2405: ;;- eval: (modify-syntax-entry ?[ "(]")
                   2406: ;;- eval: (modify-syntax-entry ?] ")[")
                   2407: ;;- eval: (modify-syntax-entry ?{ "(}")
                   2408: ;;- eval: (modify-syntax-entry ?} "){")
                   2409: ;;- End:

unix.superglobalmegacorp.com

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