Annotation of GNUtools/cc/config/we32k/we32k.md, revision 1.1

1.1     ! root        1: ;;- Machine description for GNU compiler
        !             2: ;;- AT&T we32000 Version
        !             3: ;;  Contributed by John Wehle ([email protected])
        !             4: ;;   Copyright (C) 1991-1992 Free Software Foundation, Inc.
        !             5: 
        !             6: ;; This file is part of GNU CC.
        !             7: 
        !             8: ;; GNU CC is free software; you can redistribute it and/or modify
        !             9: ;; it under the terms of the GNU General Public License as published by
        !            10: ;; the Free Software Foundation; either version 1, or (at your option)
        !            11: ;; any later version.
        !            12: 
        !            13: ;; GNU CC is distributed in the hope that it will be useful,
        !            14: ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15: ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            16: ;; GNU General Public License for more details.
        !            17: 
        !            18: ;; You should have received a copy of the GNU General Public License
        !            19: ;; along with GNU CC; see the file COPYING.  If not, write to
        !            20: ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
        !            21: 
        !            22: 
        !            23: ;;- instruction definitions
        !            24: 
        !            25: ;;- @@The original PO technology requires these to be ordered by speed,
        !            26: ;;- @@    so that assigner will pick the fastest.
        !            27: 
        !            28: ;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.
        !            29: 
        !            30: ;;- When naming insn's (operand 0 of define_insn) be careful about using
        !            31: ;;- names from other targets machine descriptions.
        !            32: 
        !            33: ;; move instructions
        !            34: 
        !            35: (define_insn ""
        !            36:   [(set (match_operand:DF 0 "push_operand" "=m")
        !            37:         (match_operand:DF 1 "general_operand" "mrF"))]
        !            38:   ""
        !            39:   "*
        !            40:   {
        !            41:   output_push_double(&operands[1]);
        !            42: 
        !            43:   return \"\";
        !            44:   }")
        !            45: 
        !            46: (define_insn "movdf"
        !            47:   [(set (match_operand:DF 0 "nonimmediate_operand" "=mr")
        !            48:         (match_operand:DF 1 "general_operand" "mrF"))]
        !            49:   ""
        !            50:   "*
        !            51:   {
        !            52:   output_move_double(operands);
        !            53: 
        !            54:   return \"\";
        !            55:   }")
        !            56: 
        !            57: (define_insn ""
        !            58:   [(set (match_operand:SF 0 "push_operand" "=m")
        !            59:         (match_operand:SF 1 "general_operand" "mrF"))]
        !            60:   ""
        !            61:   "pushw %1")
        !            62: 
        !            63: (define_insn "movsf"
        !            64:   [(set (match_operand:SF 0 "nonimmediate_operand" "=mr")
        !            65:         (match_operand:SF 1 "general_operand" "mrF"))]
        !            66:   ""
        !            67:   "movw %1, %0")
        !            68: 
        !            69: (define_insn ""
        !            70:   [(set (match_operand:DI 0 "push_operand" "=m")
        !            71:         (match_operand:DI 1 "general_operand" "mriF"))]
        !            72:   ""
        !            73:   "*
        !            74:   {
        !            75:   output_push_double(&operands[1]);
        !            76: 
        !            77:   return \"\";
        !            78:   }")
        !            79: 
        !            80: (define_insn "movdi"
        !            81:   [(set (match_operand:DI 0 "nonimmediate_operand" "=mr")
        !            82:         (match_operand:DI 1 "general_operand" "mriF"))]
        !            83:   ""
        !            84:   "*
        !            85:   {
        !            86:   output_move_double(operands);
        !            87: 
        !            88:   return \"\";
        !            89:   }")
        !            90: 
        !            91: (define_insn ""
        !            92:   [(set (match_operand:SI 0 "push_operand" "=m")
        !            93:         (match_operand:SI 1 "general_operand" "mri"))]
        !            94:   ""
        !            95:   "pushw %1")
        !            96: 
        !            97: (define_insn "movsi"
        !            98:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !            99:         (match_operand:SI 1 "general_operand" "mri"))]
        !           100:   ""
        !           101:   "movw %1, %0")
        !           102: 
        !           103: (define_insn "movhi"
        !           104:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           105:         (match_operand:HI 1 "general_operand" "mri"))]
        !           106:   ""
        !           107:   "movh %1, %0")
        !           108: 
        !           109: (define_insn "movqi"
        !           110:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           111:         (match_operand:QI 1 "general_operand" "mri"))]
        !           112:   ""
        !           113:   "movb %1, %0")
        !           114: 
        !           115: ;; add instructions
        !           116: 
        !           117: (define_insn ""
        !           118:   [(set (match_operand:DI 0 "nonimmediate_operand" "=&or")
        !           119:         (plus:DI (match_operand:DI 1 "nonimmediate_operand" "0")
        !           120:                  (match_operand:DI 2 "general_operand" "oriF")))]
        !           121:   ""
        !           122:   "*
        !           123:   {
        !           124:   rtx label[1];
        !           125:   rtx lsw_operands[3];
        !           126: 
        !           127:   if (GET_CODE (operands[0]) == REG)
        !           128:     lsw_operands[0] = gen_rtx(REG, SImode, REGNO (operands[0]) + 1);
        !           129:   else
        !           130:     if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0]))
        !           131:       lsw_operands[0] = adj_offsettable_operand(operands[0], 4);
        !           132:     else
        !           133:       abort();
        !           134: 
        !           135:   if (GET_CODE (operands[2]) == REG)
        !           136:     lsw_operands[2] = gen_rtx(REG, SImode, REGNO (operands[2]) + 1);
        !           137:   else
        !           138:     if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2]))
        !           139:       lsw_operands[2] = adj_offsettable_operand(operands[2], 4);
        !           140:     else
        !           141:       if (GET_CODE (operands[2]) == CONST_DOUBLE)
        !           142:         {
        !           143:         lsw_operands[2] = gen_rtx(CONST_INT, SImode,
        !           144:                                   CONST_DOUBLE_HIGH(operands[2]));
        !           145:         operands[2] = gen_rtx(CONST_INT, SImode,
        !           146:                               CONST_DOUBLE_LOW(operands[2]));
        !           147:         }
        !           148:       else
        !           149:         if (GET_CODE (operands[2]) == CONST_INT)
        !           150:           {
        !           151:           lsw_operands[2] = operands[2];
        !           152:           operands[2] = const0_rtx;
        !           153:           }
        !           154:         else
        !           155:           abort();
        !           156: 
        !           157:   label[0] = gen_label_rtx();
        !           158:   LABEL_NUSES(label[0]) = 1;
        !           159: 
        !           160:   output_asm_insn(\"addw2 %2, %0\", operands);
        !           161:   output_asm_insn(\"addw2 %2, %0\", lsw_operands);
        !           162:   output_asm_insn(\"BCCB %l0\", label);
        !           163:   output_asm_insn(\"INCW %0\", operands);
        !           164:   output_asm_insn(\"%l0:\", label);
        !           165: 
        !           166:   return \"\";
        !           167:   }")
        !           168: 
        !           169: (define_insn "adddi3"
        !           170:   [(set (match_operand:DI 0 "nonimmediate_operand" "=&or")
        !           171:         (plus:DI (match_operand:DI 1 "general_operand" "oriF")
        !           172:                  (match_operand:DI 2 "general_operand" "oriF")))]
        !           173:   ""
        !           174:   "*
        !           175:   {
        !           176:   rtx label[1];
        !           177:   rtx lsw_operands[3];
        !           178: 
        !           179:   if (GET_CODE (operands[0]) == REG)
        !           180:     lsw_operands[0] = gen_rtx(REG, SImode, REGNO (operands[0]) + 1);
        !           181:   else
        !           182:     if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0]))
        !           183:       lsw_operands[0] = adj_offsettable_operand(operands[0], 4);
        !           184:     else
        !           185:       abort();
        !           186: 
        !           187:   if (GET_CODE (operands[1]) == REG)
        !           188:     lsw_operands[1] = gen_rtx(REG, SImode, REGNO (operands[1]) + 1);
        !           189:   else
        !           190:     if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1]))
        !           191:       lsw_operands[1] = adj_offsettable_operand(operands[1], 4);
        !           192:     else
        !           193:       if (GET_CODE (operands[1]) == CONST_DOUBLE)
        !           194:         {
        !           195:         lsw_operands[1] = gen_rtx(CONST_INT, SImode,
        !           196:                                   CONST_DOUBLE_HIGH(operands[1]));
        !           197:         operands[1] = gen_rtx(CONST_INT, SImode,
        !           198:                               CONST_DOUBLE_LOW(operands[1]));
        !           199:         }
        !           200:       else
        !           201:         if (GET_CODE (operands[1]) == CONST_INT)
        !           202:           {
        !           203:           lsw_operands[1] = operands[1];
        !           204:           operands[1] = const0_rtx;
        !           205:           }
        !           206:         else
        !           207:           abort();
        !           208: 
        !           209:   if (GET_CODE (operands[2]) == REG)
        !           210:     lsw_operands[2] = gen_rtx(REG, SImode, REGNO (operands[2]) + 1);
        !           211:   else
        !           212:     if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2]))
        !           213:       lsw_operands[2] = adj_offsettable_operand(operands[2], 4);
        !           214:     else
        !           215:       if (GET_CODE (operands[2]) == CONST_DOUBLE)
        !           216:         {
        !           217:         lsw_operands[2] = gen_rtx(CONST_INT, SImode,
        !           218:                                   CONST_DOUBLE_HIGH(operands[2]));
        !           219:         operands[2] = gen_rtx(CONST_INT, SImode,
        !           220:                               CONST_DOUBLE_LOW(operands[2]));
        !           221:         }
        !           222:       else
        !           223:         if (GET_CODE (operands[2]) == CONST_INT)
        !           224:           {
        !           225:           lsw_operands[2] = operands[2];
        !           226:           operands[2] = const0_rtx;
        !           227:           }
        !           228:         else
        !           229:           abort();
        !           230: 
        !           231:   label[0] = gen_label_rtx();
        !           232:   LABEL_NUSES(label[0]) = 1;
        !           233: 
        !           234:   output_asm_insn(\"addw3 %2, %1, %0\", operands);
        !           235:   output_asm_insn(\"addw3 %2, %1, %0\", lsw_operands);
        !           236:   output_asm_insn(\"BCCB %l0\", label);
        !           237:   output_asm_insn(\"INCW %0\", operands);
        !           238:   output_asm_insn(\"%l0:\", label);
        !           239: 
        !           240:   return \"\";
        !           241:   }")
        !           242: 
        !           243: (define_insn ""
        !           244:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           245:         (plus:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           246:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           247:   ""
        !           248:   "addw2 %2, %0")
        !           249: 
        !           250: (define_insn "addsi3"
        !           251:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           252:         (plus:SI (match_operand:SI 1 "general_operand" "mri")
        !           253:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           254:   ""
        !           255:   "addw3 %2, %1, %0")
        !           256: 
        !           257: (define_insn ""
        !           258:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           259:         (plus:HI (match_operand:HI 1 "nonimmediate_operand" "0")
        !           260:                  (match_operand:HI 2 "general_operand" "mri")))]
        !           261:   ""
        !           262:   "addh2 %2, %0")
        !           263: 
        !           264: (define_insn "addhi3"
        !           265:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           266:         (plus:HI (match_operand:HI 1 "general_operand" "mri")
        !           267:                  (match_operand:HI 2 "general_operand" "mri")))]
        !           268:   ""
        !           269:   "addh3 %2, %1, %0")
        !           270: 
        !           271: (define_insn ""
        !           272:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           273:         (plus:QI (match_operand:QI 1 "nonimmediate_operand" "0")
        !           274:                  (match_operand:QI 2 "general_operand" "mri")))]
        !           275:   ""
        !           276:   "addb2 %2, %0")
        !           277: 
        !           278: (define_insn "addqi3"
        !           279:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           280:         (plus:QI (match_operand:QI 1 "general_operand" "mri")
        !           281:                  (match_operand:QI 2 "general_operand" "mri")))]
        !           282:   ""
        !           283:   "addb3 %2, %1, %0")
        !           284: 
        !           285: ;; subtract instructions
        !           286: 
        !           287: (define_insn ""
        !           288:   [(set (match_operand:DI 0 "nonimmediate_operand" "=&or")
        !           289:         (minus:DI (match_operand:DI 1 "nonimmediate_operand" "0")
        !           290:                  (match_operand:DI 2 "general_operand" "oriF")))]
        !           291:   ""
        !           292:   "*
        !           293:   {
        !           294:   rtx label[1];
        !           295:   rtx lsw_operands[3];
        !           296: 
        !           297:   if (GET_CODE (operands[0]) == REG)
        !           298:     lsw_operands[0] = gen_rtx(REG, SImode, REGNO (operands[0]) + 1);
        !           299:   else
        !           300:     if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0]))
        !           301:       lsw_operands[0] = adj_offsettable_operand(operands[0], 4);
        !           302:     else
        !           303:       abort();
        !           304: 
        !           305:   if (GET_CODE (operands[2]) == REG)
        !           306:     lsw_operands[2] = gen_rtx(REG, SImode, REGNO (operands[2]) + 1);
        !           307:   else
        !           308:     if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2]))
        !           309:       lsw_operands[2] = adj_offsettable_operand(operands[2], 4);
        !           310:     else
        !           311:       if (GET_CODE (operands[2]) == CONST_DOUBLE)
        !           312:         {
        !           313:         lsw_operands[2] = gen_rtx(CONST_INT, SImode,
        !           314:                                   CONST_DOUBLE_HIGH(operands[2]));
        !           315:         operands[2] = gen_rtx(CONST_INT, SImode,
        !           316:                               CONST_DOUBLE_LOW(operands[2]));
        !           317:         }
        !           318:       else
        !           319:         if (GET_CODE (operands[2]) == CONST_INT)
        !           320:           {
        !           321:           lsw_operands[2] = operands[2];
        !           322:           operands[2] = const0_rtx;
        !           323:           }
        !           324:         else
        !           325:           abort();
        !           326: 
        !           327:   label[0] = gen_label_rtx();
        !           328:   LABEL_NUSES(label[0]) = 1;
        !           329: 
        !           330:   output_asm_insn(\"subw2 %2, %0\", operands);
        !           331:   output_asm_insn(\"subw2 %2, %0\", lsw_operands);
        !           332:   output_asm_insn(\"BCCB %l0\", label);
        !           333:   output_asm_insn(\"DECW %0\", operands);
        !           334:   output_asm_insn(\"%l0:\", label);
        !           335: 
        !           336:   return \"\";
        !           337:   }")
        !           338: 
        !           339: (define_insn "subdi3"
        !           340:   [(set (match_operand:DI 0 "nonimmediate_operand" "=&or")
        !           341:         (minus:DI (match_operand:DI 1 "general_operand" "oriF")
        !           342:                  (match_operand:DI 2 "general_operand" "oriF")))]
        !           343:   ""
        !           344:   "*
        !           345:   {
        !           346:   rtx label[1];
        !           347:   rtx lsw_operands[3];
        !           348: 
        !           349:   if (GET_CODE (operands[0]) == REG)
        !           350:     lsw_operands[0] = gen_rtx(REG, SImode, REGNO (operands[0]) + 1);
        !           351:   else
        !           352:     if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0]))
        !           353:       lsw_operands[0] = adj_offsettable_operand(operands[0], 4);
        !           354:     else
        !           355:       abort();
        !           356: 
        !           357:   if (GET_CODE (operands[1]) == REG)
        !           358:     lsw_operands[1] = gen_rtx(REG, SImode, REGNO (operands[1]) + 1);
        !           359:   else
        !           360:     if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1]))
        !           361:       lsw_operands[1] = adj_offsettable_operand(operands[1], 4);
        !           362:     else
        !           363:       if (GET_CODE (operands[1]) == CONST_DOUBLE)
        !           364:         {
        !           365:         lsw_operands[1] = gen_rtx(CONST_INT, SImode,
        !           366:                                   CONST_DOUBLE_HIGH(operands[1]));
        !           367:         operands[1] = gen_rtx(CONST_INT, SImode,
        !           368:                               CONST_DOUBLE_LOW(operands[1]));
        !           369:         }
        !           370:       else
        !           371:         if (GET_CODE (operands[1]) == CONST_INT)
        !           372:           {
        !           373:           lsw_operands[1] = operands[1];
        !           374:           operands[1] = const0_rtx;
        !           375:           }
        !           376:         else
        !           377:           abort();
        !           378: 
        !           379:   if (GET_CODE (operands[2]) == REG)
        !           380:     lsw_operands[2] = gen_rtx(REG, SImode, REGNO (operands[2]) + 1);
        !           381:   else
        !           382:     if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2]))
        !           383:       lsw_operands[2] = adj_offsettable_operand(operands[2], 4);
        !           384:     else
        !           385:       if (GET_CODE (operands[2]) == CONST_DOUBLE)
        !           386:         {
        !           387:         lsw_operands[2] = gen_rtx(CONST_INT, SImode,
        !           388:                                   CONST_DOUBLE_HIGH(operands[2]));
        !           389:         operands[2] = gen_rtx(CONST_INT, SImode,
        !           390:                               CONST_DOUBLE_LOW(operands[2]));
        !           391:         }
        !           392:       else
        !           393:         if (GET_CODE (operands[2]) == CONST_INT)
        !           394:           {
        !           395:           lsw_operands[2] = operands[2];
        !           396:           operands[2] = const0_rtx;
        !           397:           }
        !           398:         else
        !           399:           abort();
        !           400: 
        !           401:   label[0] = gen_label_rtx();
        !           402:   LABEL_NUSES(label[0]) = 1;
        !           403: 
        !           404:   output_asm_insn(\"subw3 %2, %1, %0\", operands);
        !           405:   output_asm_insn(\"subw3 %2, %1, %0\", lsw_operands);
        !           406:   output_asm_insn(\"BCCB %l0\", label);
        !           407:   output_asm_insn(\"DECW %0\", operands);
        !           408:   output_asm_insn(\"%l0:\", label);
        !           409: 
        !           410:   return \"\";
        !           411:   }")
        !           412: 
        !           413: (define_insn ""
        !           414:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           415:         (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           416:                   (match_operand:SI 2 "general_operand" "mri")))]
        !           417:   ""
        !           418:   "subw2 %2, %0")
        !           419: 
        !           420: (define_insn "subsi3"
        !           421:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           422:         (minus:SI (match_operand:SI 1 "general_operand" "mri")
        !           423:                   (match_operand:SI 2 "general_operand" "mri")))]
        !           424:   ""
        !           425:   "subw3 %2, %1, %0")
        !           426: 
        !           427: (define_insn ""
        !           428:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           429:         (minus:HI (match_operand:HI 1 "nonimmediate_operand" "0")
        !           430:                   (match_operand:HI 2 "general_operand" "mri")))]
        !           431:   ""
        !           432:   "subh2 %2, %0")
        !           433: 
        !           434: (define_insn "subhi3"
        !           435:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           436:         (minus:HI (match_operand:HI 1 "general_operand" "mri")
        !           437:                   (match_operand:HI 2 "general_operand" "mri")))]
        !           438:   ""
        !           439:   "subh3 %2, %1, %0")
        !           440: 
        !           441: (define_insn ""
        !           442:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           443:         (minus:QI (match_operand:QI 1 "nonimmediate_operand" "0")
        !           444:                   (match_operand:QI 2 "general_operand" "mri")))]
        !           445:   ""
        !           446:   "subb2 %2, %0")
        !           447: 
        !           448: (define_insn "subqi3"
        !           449:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           450:         (minus:QI (match_operand:QI 1 "general_operand" "mri")
        !           451:                   (match_operand:QI 2 "general_operand" "mri")))]
        !           452:   ""
        !           453:   "subb3 %2, %1, %0")
        !           454: 
        !           455: ;; signed multiply instructions
        !           456: 
        !           457: (define_insn ""
        !           458:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           459:         (mult:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           460:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           461:   ""
        !           462:   "mulw2 %2, %0")
        !           463: 
        !           464: (define_insn "mulsi3"
        !           465:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           466:         (mult:SI (match_operand:SI 1 "general_operand" "mri")
        !           467:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           468:   ""
        !           469:   "mulw3 %2, %1, %0")
        !           470: 
        !           471: ;; signed divide instructions
        !           472: 
        !           473: (define_insn ""
        !           474:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           475:         (div:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           476:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           477:   ""
        !           478:   "divw2 %2, %0")
        !           479: 
        !           480: (define_insn "divsi3"
        !           481:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           482:         (div:SI (match_operand:SI 1 "general_operand" "mri")
        !           483:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           484:   ""
        !           485:   "divw3 %2, %1, %0")
        !           486: 
        !           487: ;; signed modulus instruction
        !           488: 
        !           489: (define_insn ""
        !           490:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           491:         (mod:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           492:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           493:   ""
        !           494:   "modw2 %2, %0")
        !           495: 
        !           496: (define_insn "modsi3"
        !           497:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           498:         (mod:SI (match_operand:SI 1 "general_operand" "mri")
        !           499:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           500:   ""
        !           501:   "modw3 %2, %1, %0")
        !           502: 
        !           503: ;; unsigned divide instruction
        !           504: 
        !           505: (define_insn ""
        !           506:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           507:         (udiv:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           508:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           509:   ""
        !           510:   "udivw2 %2, %0")
        !           511: 
        !           512: (define_insn "udivsi3"
        !           513:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           514:         (udiv:SI (match_operand:SI 1 "general_operand" "mri")
        !           515:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           516:   ""
        !           517:   "udivw3 %2, %1, %0")
        !           518: 
        !           519: ;; unsigned modulus instruction
        !           520: 
        !           521: (define_insn ""
        !           522:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           523:         (umod:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           524:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           525:   ""
        !           526:   "umodw2 %2, %0")
        !           527: 
        !           528: (define_insn "umodsi3"
        !           529:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           530:         (umod:SI (match_operand:SI 1 "general_operand" "mri")
        !           531:                  (match_operand:SI 2 "general_operand" "mri")))]
        !           532:   ""
        !           533:   "umodw3 %2, %1, %0")
        !           534: 
        !           535: ;; logical-and instructions
        !           536: 
        !           537: (define_insn ""
        !           538:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           539:         (and:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           540:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           541:   ""
        !           542:   "andw2 %2, %0")
        !           543: 
        !           544: (define_insn "andsi3"
        !           545:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           546:         (and:SI (match_operand:SI 1 "general_operand" "mri")
        !           547:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           548:   ""
        !           549:   "andw3 %2, %1, %0")
        !           550: 
        !           551: (define_insn ""
        !           552:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           553:         (and:HI (match_operand:HI 1 "nonimmediate_operand" "0")
        !           554:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           555:   ""
        !           556:   "andh2 %2, %0")
        !           557: 
        !           558: (define_insn "andhi3"
        !           559:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           560:         (and:HI (match_operand:HI 1 "general_operand" "mri")
        !           561:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           562:   ""
        !           563:   "andh3 %2, %1, %0")
        !           564: 
        !           565: (define_insn ""
        !           566:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           567:         (and:QI (match_operand:QI 1 "nonimmediate_operand" "0")
        !           568:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           569:   ""
        !           570:   "andb2 %2, %0")
        !           571: 
        !           572: (define_insn "andqi3"
        !           573:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           574:         (and:QI (match_operand:QI 1 "general_operand" "mri")
        !           575:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           576:   ""
        !           577:   "andb3 %2, %1, %0")
        !           578: 
        !           579: ;; inclusive-or instructions
        !           580: 
        !           581: (define_insn ""
        !           582:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           583:         (ior:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           584:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           585:   ""
        !           586:   "orw2 %2, %0")
        !           587: 
        !           588: (define_insn "iorsi3"
        !           589:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           590:         (ior:SI (match_operand:SI 1 "general_operand" "mri")
        !           591:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           592:   ""
        !           593:   "orw3 %2, %1, %0")
        !           594: 
        !           595: (define_insn ""
        !           596:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           597:         (ior:HI (match_operand:HI 1 "nonimmediate_operand" "0")
        !           598:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           599:   ""
        !           600:   "orh2 %2, %0")
        !           601: 
        !           602: (define_insn "iorhi3"
        !           603:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           604:         (ior:HI (match_operand:HI 1 "general_operand" "mri")
        !           605:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           606:   ""
        !           607:   "orh3 %2, %1, %0")
        !           608: 
        !           609: (define_insn ""
        !           610:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           611:         (ior:QI (match_operand:QI 1 "nonimmediate_operand" "0")
        !           612:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           613:   ""
        !           614:   "orb2 %2, %0")
        !           615: 
        !           616: (define_insn "iorqi3"
        !           617:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           618:         (ior:QI (match_operand:QI 1 "general_operand" "mri")
        !           619:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           620:   ""
        !           621:   "orb3 %2, %1, %0")
        !           622: 
        !           623: ;; exclusive-or instructions
        !           624: 
        !           625: (define_insn ""
        !           626:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           627:         (xor:SI (match_operand:SI 1 "nonimmediate_operand" "0")
        !           628:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           629:   ""
        !           630:   "xorw2 %2, %0")
        !           631: 
        !           632: (define_insn "xorsi3"
        !           633:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           634:         (xor:SI (match_operand:SI 1 "general_operand" "mri")
        !           635:                 (match_operand:SI 2 "general_operand" "mri")))]
        !           636:   ""
        !           637:   "xorw3 %2, %1, %0")
        !           638: 
        !           639: (define_insn ""
        !           640:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           641:         (xor:HI (match_operand:HI 1 "nonimmediate_operand" "0")
        !           642:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           643:   ""
        !           644:   "xorh2 %2, %0")
        !           645: 
        !           646: (define_insn "xorhi3"
        !           647:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           648:         (xor:HI (match_operand:HI 1 "general_operand" "mri")
        !           649:                 (match_operand:HI 2 "general_operand" "mri")))]
        !           650:   ""
        !           651:   "xorh3 %2, %1, %0")
        !           652: 
        !           653: (define_insn ""
        !           654:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           655:         (xor:QI (match_operand:QI 1 "nonimmediate_operand" "0")
        !           656:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           657:   ""
        !           658:   "xorb2 %2, %0")
        !           659: 
        !           660: (define_insn "xorqi3"
        !           661:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           662:         (xor:QI (match_operand:QI 1 "general_operand" "mri")
        !           663:                 (match_operand:QI 2 "general_operand" "mri")))]
        !           664:   ""
        !           665:   "xorb3 %2, %1, %0")
        !           666: 
        !           667: ;; arithmetic shift instructions
        !           668: 
        !           669: (define_insn "ashlsi3"
        !           670:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           671:         (ashift:SI (match_operand:SI 1 "general_operand" "mri")
        !           672:                    (match_operand:SI 2 "general_operand" "mri")))]
        !           673:   ""
        !           674:   "LLSW3 %2, %1, %0")
        !           675: 
        !           676: (define_insn "ashrsi3"
        !           677:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           678:         (ashiftrt:SI (match_operand:SI 1 "general_operand" "mri")
        !           679:                      (match_operand:SI 2 "general_operand" "mri")))]
        !           680:   ""
        !           681:   "ARSW3 %2, %1, %0")
        !           682: 
        !           683: ;; logical shift instructions
        !           684: 
        !           685: ;; (define_insn "lshlsi3"
        !           686: ;;   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           687: ;;         (lshift:SI (match_operand:SI 1 "general_operand" "mri")
        !           688: ;;                    (match_operand:SI 2 "general_operand" "mri")))]
        !           689: ;;   ""
        !           690: ;;   "LLSW3 %2, %1, %0")
        !           691: 
        !           692: (define_insn "lshrsi3"
        !           693:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           694:         (lshiftrt:SI (match_operand:SI 1 "general_operand" "mri")
        !           695:                      (match_operand:SI 2 "general_operand" "mri")))]
        !           696:   ""
        !           697:   "LRSW3 %2, %1, %0")
        !           698: 
        !           699: ;; rotate instruction
        !           700: 
        !           701: (define_insn "rotrsi3"
        !           702:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           703:         (rotatert: SI (match_operand:SI 1 "general_operand" "mri")
        !           704:                       (match_operand:SI 2 "general_operand" "mri")))]
        !           705:   ""
        !           706:   "ROTW %2, %1, %0")
        !           707: 
        !           708: ;; negate instructions
        !           709: 
        !           710: (define_insn "negsi2"
        !           711:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           712:         (neg:SI (match_operand:SI 1 "general_operand" "mri")))]
        !           713:   ""
        !           714:   "mnegw %1, %0")
        !           715: 
        !           716: (define_insn "neghi2"
        !           717:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           718:         (neg:HI (match_operand:HI 1 "general_operand" "mri")))]
        !           719:   ""
        !           720:   "mnegh %1, %0")
        !           721: 
        !           722: ;; complement instructions
        !           723: 
        !           724: (define_insn "one_cmplsi2"
        !           725:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           726:         (not:SI (match_operand:SI 1 "general_operand" "mri")))]
        !           727:   ""
        !           728:   "mcomw %1, %0")
        !           729: 
        !           730: (define_insn "one_cmplhi2"
        !           731:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           732:         (not:HI (match_operand:HI 1 "general_operand" "mri")))]
        !           733:   ""
        !           734:   "mcomh %1, %0")
        !           735: 
        !           736: (define_insn "one_cmplqi2"
        !           737:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           738:         (not:QI (match_operand:QI 1 "general_operand" "mri")))]
        !           739:   ""
        !           740:   "mcomb %1, %0")
        !           741: 
        !           742: ;; test instruction
        !           743: 
        !           744: ;; We don't want to allow a constant operand for test insns because
        !           745: ;; (set (cc0) (const_int foo)) has no mode information.  Such insns will
        !           746: ;; be folded while optimizing anyway.
        !           747: 
        !           748: (define_insn "tstsi"
        !           749:   [(set (cc0) (match_operand:SI 0 "nonimmediate_operand" "mr"))]
        !           750:   ""
        !           751:   "TSTW %0")
        !           752: 
        !           753: (define_insn "tsthi"
        !           754:   [(set (cc0) (match_operand:HI 0 "nonimmediate_operand" "mr"))]
        !           755:   ""
        !           756:   "TSTH %0")
        !           757: 
        !           758: (define_insn "tstqi"
        !           759:   [(set (cc0) (match_operand:QI 0 "nonimmediate_operand" "mr"))]
        !           760:   ""
        !           761:   "TSTB {sbyte}%0")
        !           762: 
        !           763: ;; compare instruction
        !           764: 
        !           765: (define_insn "cmpsi"
        !           766:   [(set (cc0) (compare (match_operand:SI 0 "nonimmediate_operand" "mr")
        !           767:                        (match_operand:SI 1 "general_operand" "mri")))]
        !           768:   ""
        !           769:   "CMPW %1, %0")
        !           770: 
        !           771: (define_insn "cmphi"
        !           772:   [(set (cc0) (compare (match_operand:HI 0 "nonimmediate_operand" "mr")
        !           773:                        (match_operand:HI 1 "general_operand" "mri")))]
        !           774:   ""
        !           775:   "*
        !           776:   {
        !           777: 
        !           778:   if (GET_CODE (operands[1]) == CONST_INT &&
        !           779:     ((unsigned long)INTVAL (operands[1]) & 0x8000L))
        !           780:     operands[1] = gen_rtx(CONST_INT, SImode, INTVAL(operands[1]) | 0xffff0000L);
        !           781: 
        !           782:   output_asm_insn(\"CMPH %1, %0\",operands);
        !           783: 
        !           784:   return \"\";
        !           785:   }")
        !           786: 
        !           787: (define_insn "cmpqi"
        !           788:   [(set (cc0) (compare (match_operand:QI 0 "nonimmediate_operand" "mr")
        !           789:                        (match_operand:QI 1 "general_operand" "mri")))]
        !           790:   ""
        !           791:   "*
        !           792:   {
        !           793: 
        !           794:   if (GET_CODE (operands[1]) == CONST_INT &&
        !           795:     ((unsigned long)INTVAL (operands[1]) & 0x80L))
        !           796:     operands[1] = gen_rtx(CONST_INT, SImode, INTVAL(operands[1]) | 0xffffff00L);
        !           797: 
        !           798:   output_asm_insn(\"CMPB {sbyte}%1, {sbyte}%0\",operands);
        !           799: 
        !           800:   return \"\";
        !           801:   }")
        !           802: 
        !           803: ;; truncate instructions
        !           804: 
        !           805: (define_insn ""
        !           806:   [(set (match_operand:SF 0 "register_operand" "=r")
        !           807:         (float_truncate:SF (match_operand:DF 1 "general_operand" "orF")))
        !           808:    (clobber (reg:SI 1))
        !           809:    (clobber (reg:SI 2))]
        !           810:   "REGNO (operands[0]) == 0"
        !           811:   "*
        !           812:   {
        !           813:   output_push_double(&operands[1]);
        !           814:   output_asm_insn(\"call &2, _fdtos\", operands);
        !           815: 
        !           816:   return \"\";
        !           817:   }")
        !           818: 
        !           819: (define_expand "truncdfsf2"
        !           820:   [(parallel [(set (reg:SF 0)
        !           821:                (float_truncate:SF (match_operand:DF 1 "general_operand" "orF")))
        !           822:               (clobber (reg:SI 1))
        !           823:               (clobber (reg:SI 2))])
        !           824:    (set (match_operand:SF 0 "nonimmediate_operand" "=mr")
        !           825:         (reg:SF 0))]
        !           826:   ""
        !           827:   "")
        !           828: 
        !           829: (define_insn "truncsihi2"
        !           830:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           831:         (truncate:HI (match_operand:SI 1 "general_operand" "mri")))]
        !           832:   ""
        !           833:   "movtwh %1, %0")
        !           834: 
        !           835: (define_insn "truncsiqi2"
        !           836:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           837:         (truncate:QI (match_operand:SI 1 "general_operand" "mri")))]
        !           838:   ""
        !           839:   "movtwb %1, %0")
        !           840: 
        !           841: (define_insn "trunchiqi2"
        !           842:   [(set (match_operand:QI 0 "nonimmediate_operand" "=mr")
        !           843:         (truncate:QI (match_operand:HI 1 "general_operand" "mri")))]
        !           844:   ""
        !           845:   "movthb %1, %0")
        !           846: 
        !           847: ;; sign-extend move instructions
        !           848: 
        !           849: (define_insn ""
        !           850:   [(set (match_operand:DF 0 "register_operand" "=r")
        !           851:         (float_extend:DF (match_operand:SF 1 "general_operand" "mrF")))
        !           852:    (clobber (reg:SI 2))]
        !           853:   "REGNO (operands[0]) == 0"
        !           854:   "*
        !           855:   {
        !           856:   output_asm_insn(\"pushw %1\", operands);
        !           857:   output_asm_insn(\"call &1, _fstod\", operands);
        !           858: 
        !           859:   return \"\";
        !           860:   }")
        !           861: 
        !           862: (define_expand "extendsfdf2"
        !           863:   [(parallel [(set (reg:DF 0)
        !           864:                (float_extend:DF (match_operand:SF 1 "general_operand" "mrF")))
        !           865:               (clobber (reg:SI 2))])
        !           866:    (set (match_operand:DF 0 "nonimmediate_operand" "=or")
        !           867:         (reg:DF 0))]
        !           868:   ""
        !           869:   "")
        !           870: 
        !           871: (define_insn "extendhisi2"
        !           872:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           873:         (sign_extend:SI (match_operand:HI 1 "general_operand" "mri")))]
        !           874:   ""
        !           875:   "movbhw %1, %0")
        !           876: 
        !           877: (define_insn "extendqisi2"
        !           878:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           879:         (sign_extend:SI (match_operand:QI 1 "general_operand" "mri")))]
        !           880:   ""
        !           881:   "movbbw %1, %0")
        !           882: 
        !           883: (define_insn "extendqihi2"
        !           884:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           885:         (sign_extend:HI (match_operand:QI 1 "general_operand" "mri")))]
        !           886:   ""
        !           887:   "movbbh %1, %0")
        !           888: 
        !           889: ;; zero-extend move instructions
        !           890: 
        !           891: (define_insn "zero_extendhisi2"
        !           892:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           893:         (zero_extend:SI (match_operand:HI 1 "general_operand" "mri")))]
        !           894:   ""
        !           895:   "movzhw %1, %0")
        !           896: 
        !           897: (define_insn "zero_extendqisi2"
        !           898:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           899:         (zero_extend:SI (match_operand:QI 1 "general_operand" "mri")))]
        !           900:   ""
        !           901:   "movzbw %1, %0")
        !           902: 
        !           903: (define_insn "zero_extendqihi2"
        !           904:   [(set (match_operand:HI 0 "nonimmediate_operand" "=mr")
        !           905:         (zero_extend:HI (match_operand:QI 1 "general_operand" "mri")))]
        !           906:   ""
        !           907:   "movzbh %1, %0")
        !           908: 
        !           909: ;; bit field instructions
        !           910: 
        !           911: (define_insn "extzv"
        !           912:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           913:         (zero_extract:SI (match_operand:SI 1 "general_operand" "mri")
        !           914:                          (match_operand:SI 2 "immediate_operand" "i")
        !           915:                          (match_operand:SI 3 "general_operand" "mri")))]
        !           916:   ""
        !           917:   "*
        !           918:   {
        !           919: 
        !           920:   operands[2] = gen_rtx(CONST_INT, SImode, INTVAL(operands[2]) - 1);
        !           921:   output_asm_insn(\"EXTFW %2, %3, %1, %0\",operands);
        !           922: 
        !           923:   return \"\";
        !           924:   }")
        !           925: 
        !           926: (define_insn ""
        !           927:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           928:         (zero_extract:SI (match_operand:HI 1 "general_operand" "mri")
        !           929:                          (match_operand:SI 2 "immediate_operand" "i")
        !           930:                          (match_operand:SI 3 "general_operand" "mri")))]
        !           931:   ""
        !           932:   "*
        !           933:   {
        !           934: 
        !           935:   operands[2] = gen_rtx(CONST_INT, SImode, INTVAL(operands[2]) - 1);
        !           936:   output_asm_insn(\"EXTFH %2, %3, {uhalf}%1, {uword}%0\",operands);
        !           937: 
        !           938:   return \"\";
        !           939:   }")
        !           940: 
        !           941: (define_insn ""
        !           942:   [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
        !           943:         (zero_extract:SI (match_operand:QI 1 "general_operand" "mri")
        !           944:                          (match_operand:SI 2 "immediate_operand" "i")
        !           945:                          (match_operand:SI 3 "general_operand" "mri")))]
        !           946:   ""
        !           947:   "*
        !           948:   {
        !           949: 
        !           950:   operands[2] = gen_rtx(CONST_INT, SImode, INTVAL(operands[2]) - 1);
        !           951:   output_asm_insn(\"EXTFB %2, %3, {ubyte}%1, {uword}%0\",operands);
        !           952: 
        !           953:   return \"\";
        !           954:   }")
        !           955: 
        !           956: (define_insn "insv"
        !           957:   [(set (zero_extract:SI (match_operand:SI 0 "nonimmediate_operand" "+mr")
        !           958:                          (match_operand:SI 1 "immediate_operand" "i")
        !           959:                          (match_operand:SI 2 "general_operand" "mri"))
        !           960:         (match_operand:SI 3 "general_operand" "mri"))]
        !           961:   ""
        !           962:   "*
        !           963:   {
        !           964: 
        !           965:   operands[1] = gen_rtx(CONST_INT, SImode, INTVAL(operands[1]) - 1);
        !           966:   output_asm_insn(\"INSFW %1, %2, %3, %0\",operands);
        !           967: 
        !           968:   return \"\";
        !           969:   }")
        !           970: 
        !           971: (define_insn ""
        !           972:   [(set (zero_extract:SI (match_operand:HI 0 "nonimmediate_operand" "+mr")
        !           973:                          (match_operand:SI 1 "immediate_operand" "i")
        !           974:                          (match_operand:SI 2 "general_operand" "mri"))
        !           975:         (match_operand:SI 3 "general_operand" "mri"))]
        !           976:   ""
        !           977:   "*
        !           978:   {
        !           979: 
        !           980:   operands[1] = gen_rtx(CONST_INT, SImode, INTVAL(operands[1]) - 1);
        !           981:   output_asm_insn(\"INSFH %1, %2, {uword}%3, {uhalf}%0\",operands);
        !           982: 
        !           983:   return \"\";
        !           984:   }")
        !           985: 
        !           986: (define_insn ""
        !           987:   [(set (zero_extract:SI (match_operand:QI 0 "nonimmediate_operand" "+mr")
        !           988:                          (match_operand:SI 1 "immediate_operand" "i")
        !           989:                          (match_operand:SI 2 "general_operand" "mri"))
        !           990:         (match_operand:SI 3 "general_operand" "mri"))]
        !           991:   ""
        !           992:   "*
        !           993:   {
        !           994: 
        !           995:   operands[1] = gen_rtx(CONST_INT, SImode, INTVAL(operands[1]) - 1);
        !           996:   output_asm_insn(\"INSFB %1, %2, {uword}%3, {ubyte}%0\",operands);
        !           997: 
        !           998:   return \"\";
        !           999:   }")
        !          1000: 
        !          1001: ;; conditional branch instructions
        !          1002: 
        !          1003: (define_insn "beq"
        !          1004:   [(set (pc) (if_then_else (eq (cc0) (const_int 0))
        !          1005:                            (label_ref (match_operand 0 "" ""))
        !          1006:                            (pc)))]
        !          1007:   ""
        !          1008:   "je %l0")
        !          1009: 
        !          1010: (define_insn "bne"
        !          1011:   [(set (pc) (if_then_else (ne (cc0) (const_int 0))
        !          1012:                            (label_ref (match_operand 0 "" ""))
        !          1013:                            (pc)))]
        !          1014:   ""
        !          1015:   "jne %l0")
        !          1016: 
        !          1017: (define_insn "bgt"
        !          1018:   [(set (pc) (if_then_else (gt (cc0) (const_int 0))
        !          1019:                            (label_ref (match_operand 0 "" ""))
        !          1020:                            (pc)))]
        !          1021:   ""
        !          1022:   "jg %l0")
        !          1023: 
        !          1024: (define_insn "bgtu"
        !          1025:   [(set (pc) (if_then_else (gtu (cc0) (const_int 0))
        !          1026:                            (label_ref (match_operand 0 "" ""))
        !          1027:                            (pc)))]
        !          1028:   ""
        !          1029:   "jgu %l0")
        !          1030: 
        !          1031: (define_insn "blt"
        !          1032:   [(set (pc) (if_then_else (lt (cc0) (const_int 0))
        !          1033:                            (label_ref (match_operand 0 "" ""))
        !          1034:                            (pc)))]
        !          1035:   ""
        !          1036:   "jl %l0")
        !          1037: 
        !          1038: (define_insn "bltu"
        !          1039:   [(set (pc) (if_then_else (ltu (cc0) (const_int 0))
        !          1040:                            (label_ref (match_operand 0 "" ""))
        !          1041:                            (pc)))]
        !          1042:   ""
        !          1043:   "jlu %l0")
        !          1044: 
        !          1045: (define_insn "bge"
        !          1046:   [(set (pc) (if_then_else (ge (cc0) (const_int 0))
        !          1047:                            (label_ref (match_operand 0 "" ""))
        !          1048:                            (pc)))]
        !          1049:   ""
        !          1050:   "jge %l0")
        !          1051: 
        !          1052: (define_insn "bgeu"
        !          1053:   [(set (pc) (if_then_else (geu (cc0) (const_int 0))
        !          1054:                            (label_ref (match_operand 0 "" ""))
        !          1055:                            (pc)))]
        !          1056:   ""
        !          1057:   "jgeu %l0")
        !          1058: 
        !          1059: (define_insn "ble"
        !          1060:   [(set (pc) (if_then_else (le (cc0) (const_int 0))
        !          1061:                            (label_ref (match_operand 0 "" ""))
        !          1062:                            (pc)))]
        !          1063:   ""
        !          1064:   "jle %l0")
        !          1065: 
        !          1066: (define_insn "bleu"
        !          1067:   [(set (pc) (if_then_else (leu (cc0) (const_int 0))
        !          1068:                            (label_ref (match_operand 0 "" ""))
        !          1069:                            (pc)))]
        !          1070:   ""
        !          1071:   "jleu %l0")
        !          1072: 
        !          1073: ;; reverse-conditional branch instructions
        !          1074: 
        !          1075: (define_insn ""
        !          1076:   [(set (pc) (if_then_else (eq (cc0) (const_int 0))
        !          1077:                            (pc)
        !          1078:                            (label_ref (match_operand 0 "" ""))))]
        !          1079:   ""
        !          1080:   "jne %l0")
        !          1081: 
        !          1082: (define_insn ""
        !          1083:   [(set (pc) (if_then_else (ne (cc0) (const_int 0))
        !          1084:                            (pc)
        !          1085:                            (label_ref (match_operand 0 "" ""))))]
        !          1086:   ""
        !          1087:   "je %l0")
        !          1088: 
        !          1089: (define_insn ""
        !          1090:   [(set (pc) (if_then_else (gt (cc0) (const_int 0))
        !          1091:                            (pc)
        !          1092:                            (label_ref (match_operand 0 "" ""))))]
        !          1093:   ""
        !          1094:   "jle %l0")
        !          1095: 
        !          1096: (define_insn ""
        !          1097:   [(set (pc) (if_then_else (gtu (cc0) (const_int 0))
        !          1098:                            (pc)
        !          1099:                            (label_ref (match_operand 0 "" ""))))]
        !          1100:   ""
        !          1101:   "jleu %l0")
        !          1102: 
        !          1103: (define_insn ""
        !          1104:   [(set (pc) (if_then_else (lt (cc0) (const_int 0))
        !          1105:                            (pc)
        !          1106:                            (label_ref (match_operand 0 "" ""))))]
        !          1107:   ""
        !          1108:   "jge %l0")
        !          1109: 
        !          1110: (define_insn ""
        !          1111:   [(set (pc) (if_then_else (ltu (cc0) (const_int 0))
        !          1112:                            (pc)
        !          1113:                            (label_ref (match_operand 0 "" ""))))]
        !          1114:   ""
        !          1115:   "jgeu %l0")
        !          1116: 
        !          1117: (define_insn ""
        !          1118:   [(set (pc) (if_then_else (ge (cc0) (const_int 0))
        !          1119:                            (pc)
        !          1120:                            (label_ref (match_operand 0 "" ""))))]
        !          1121:   ""
        !          1122:   "jl %l0")
        !          1123: 
        !          1124: (define_insn ""
        !          1125:   [(set (pc) (if_then_else (geu (cc0) (const_int 0))
        !          1126:                            (pc)
        !          1127:                            (label_ref (match_operand 0 "" ""))))]
        !          1128:   ""
        !          1129:   "jlu %l0")
        !          1130: 
        !          1131: (define_insn ""
        !          1132:   [(set (pc) (if_then_else (le (cc0) (const_int 0))
        !          1133:                            (pc)
        !          1134:                            (label_ref (match_operand 0 "" ""))))]
        !          1135:   ""
        !          1136:   "jg %l0")
        !          1137: 
        !          1138: (define_insn ""
        !          1139:   [(set (pc) (if_then_else (leu (cc0) (const_int 0))
        !          1140:                            (pc)
        !          1141:                            (label_ref (match_operand 0 "" ""))))]
        !          1142:   ""
        !          1143:   "jgu %l0")
        !          1144: 
        !          1145: ;; call instructions
        !          1146: 
        !          1147: (define_insn "call"
        !          1148:   [(call (match_operand:QI 0 "memory_operand" "m")
        !          1149:          (match_operand:SI 1 "immediate_operand" "i"))]
        !          1150:   ""
        !          1151:   "call %1/4, %0")
        !          1152: 
        !          1153: (define_insn "call_value"
        !          1154:   [(set (match_operand 0 "register_operand" "=r")
        !          1155:         (call (match_operand:QI 1 "memory_operand" "m")
        !          1156:               (match_operand:SI 2 "immediate_operand" "i")))]
        !          1157:   ""
        !          1158:   "call %2/4, %1")
        !          1159: 
        !          1160: ;; No-op instruction
        !          1161: 
        !          1162: (define_insn "nop"
        !          1163:   [(const_int 0)]
        !          1164:   ""
        !          1165:   "NOP")
        !          1166: 
        !          1167: ;; jump through a dispatch table instruction
        !          1168: 
        !          1169: (define_expand "casesi"
        !          1170:   [(use (match_operand:SI 0 "general_operand" "mri"))
        !          1171:    (set (cc0) (compare (match_dup 5)
        !          1172:                        (match_operand:SI 1 "general_operand" "mri")))
        !          1173:    (set (pc) (if_then_else (lt (cc0) (const_int 0))
        !          1174:                            (label_ref (match_operand 4 "" ""))
        !          1175:                            (pc)))
        !          1176:    (set (match_dup 5) (minus:SI (match_dup 5)
        !          1177:                                 (match_dup 1)))
        !          1178:    (set (cc0) (compare (match_dup 5)
        !          1179:                        (match_operand:SI 2 "general_operand" "mri")))
        !          1180:    (set (pc) (if_then_else (gtu (cc0) (const_int 0))
        !          1181:                            (label_ref (match_dup 4))
        !          1182:                            (pc)))
        !          1183:    (set (match_dup 5) (ashift:SI (match_dup 5)
        !          1184:                                  (const_int 2)))
        !          1185:    (set (pc) (mem:SI (plus:SI (label_ref (match_operand 3 "" ""))
        !          1186:                               (match_dup 5))))]
        !          1187:   ""
        !          1188:   "
        !          1189:   {
        !          1190:   operands[5] = gen_reg_rtx(GET_MODE (operands[0]));
        !          1191:   emit_move_insn(operands[5], operands[0]);
        !          1192:   }")
        !          1193: 
        !          1194: ;; jump instructions
        !          1195: 
        !          1196: (define_insn "indirect_jump"
        !          1197:   [(set (pc) (match_operand:SI 0 "address_operand" "p"))]
        !          1198:   ""
        !          1199:   "jmp %a0")
        !          1200: 
        !          1201: (define_insn "jump"
        !          1202:   [(set (pc) (label_ref (match_operand 0 "" "")))]
        !          1203:   ""
        !          1204:   "jmp %l0")

unix.superglobalmegacorp.com

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