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

1.1     ! root        1: ;;- Machine description for GNU compiler
        !             2: ;;- Convex Version
        !             3: ;;   Copyright (C) 1988, 1993 Free Software Foundation, Inc.
        !             4: 
        !             5: ;; This file is part of GNU CC.
        !             6: 
        !             7: ;; GNU CC is free software; you can redistribute it and/or modify
        !             8: ;; it under the terms of the GNU General Public License as published by
        !             9: ;; the Free Software Foundation; either version 2, or (at your option)
        !            10: ;; any later version.
        !            11: 
        !            12: ;; GNU CC is distributed in the hope that it will be useful,
        !            13: ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14: ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            15: ;; GNU General Public License for more details.
        !            16: 
        !            17: ;; You should have received a copy of the GNU General Public License
        !            18: ;; along with GNU CC; see the file COPYING.  If not, write to
        !            19: ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
        !            20: 
        !            21: ;; Attribute specifications
        !            22: 
        !            23: ; Target CPU
        !            24: (define_attr "cpu" "c1,c32,c34,c38"
        !            25:   (const (symbol_ref "(enum attr_cpu) target_cpu")))
        !            26: 
        !            27: ;; Instruction classification
        !            28: 
        !            29: (define_attr "type"
        !            30:   "alu,xalu,mldw,mldl,mldb,mst,adds,addd,mulw,mull,muls,muld,divw,divl,divs,divd,shfw,shfl,cvts,cvtd"
        !            31:   (const_string "alu"))
        !            32: 
        !            33: ;; Instruction times
        !            34: 
        !            35: (define_function_unit "mem" 1 0
        !            36:   (and (eq_attr "cpu" "c1") (eq_attr "type" "mldw")) 2 0)
        !            37: (define_function_unit "mem" 1 0
        !            38:   (and (eq_attr "cpu" "c1") (eq_attr "type" "mldl")) 4 0)
        !            39: (define_function_unit "mem" 1 0
        !            40:   (and (eq_attr "cpu" "c32") (eq_attr "type" "mldw,mldl")) 2 0)
        !            41: (define_function_unit "mem" 1 0
        !            42:   (and (eq_attr "cpu" "c34") (eq_attr "type" "mldw,mldl")) 4 0)
        !            43: (define_function_unit "mem" 1 0
        !            44:   (and (eq_attr "cpu" "c38") (eq_attr "type" "mldw,mldl")) 2 0)
        !            45: 
        !            46: (define_function_unit "mem" 1 0
        !            47:   (and (eq_attr "cpu" "c32") (eq_attr "type" "mldb")) 9 0)
        !            48: (define_function_unit "mem" 1 0
        !            49:   (and (eq_attr "cpu" "c34") (eq_attr "type" "mldb")) 36 0)
        !            50: (define_function_unit "mem" 1 0
        !            51:   (and (eq_attr "cpu" "c38") (eq_attr "type" "mldb")) 21 0)
        !            52: 
        !            53: (define_function_unit "mem" 1 0
        !            54:   (and (eq_attr "cpu" "c1") (eq_attr "type" "xalu")) 1 0)
        !            55: (define_function_unit "mem" 1 0
        !            56:   (and (eq_attr "cpu" "c32") (eq_attr "type" "xalu")) 1 0)
        !            57: (define_function_unit "mem" 1 0
        !            58:   (and (eq_attr "cpu" "c34") (eq_attr "type" "xalu")) 5 0)
        !            59: (define_function_unit "mem" 1 0
        !            60:   (and (eq_attr "cpu" "c38") (eq_attr "type" "xalu")) 2 0)
        !            61: 
        !            62: (define_function_unit "add" 1 0
        !            63:   (and (eq_attr "cpu" "c1") (eq_attr "type" "adds,addd")) 3 2)
        !            64: (define_function_unit "add" 1 0
        !            65:   (and (eq_attr "cpu" "c32") (eq_attr "type" "adds,addd")) 2 1)
        !            66: (define_function_unit "add" 1 0
        !            67:   (and (eq_attr "cpu" "c34") (eq_attr "type" "adds,addd")) 5 2)
        !            68: (define_function_unit "add" 1 0
        !            69:   (and (eq_attr "cpu" "c38") (eq_attr "type" "adds,addd")) 2 1)
        !            70: 
        !            71: (define_function_unit "mul" 1 0
        !            72:   (and (eq_attr "cpu" "c1") (eq_attr "type" "mulw,muls")) 3 2)
        !            73: (define_function_unit "mul" 1 0
        !            74:   (and (eq_attr "cpu" "c32") (eq_attr "type" "mulw,muls")) 4 2)
        !            75: (define_function_unit "mul" 1 0
        !            76:   (and (eq_attr "cpu" "c34") (eq_attr "type" "mulw,muls")) 6 2)
        !            77: (define_function_unit "mul" 1 0
        !            78:   (and (eq_attr "cpu" "c38") (eq_attr "type" "mulw,muls")) 3 2)
        !            79: 
        !            80: (define_function_unit "mul" 1 0
        !            81:   (and (eq_attr "cpu" "c1") (eq_attr "type" "mull,muld")) 4 3)
        !            82: (define_function_unit "mul" 1 0
        !            83:   (and (eq_attr "cpu" "c32") (eq_attr "type" "mull")) 10 7)
        !            84: (define_function_unit "mul" 1 0
        !            85:   (and (eq_attr "cpu" "c32") (eq_attr "type" "muld")) 5 2)
        !            86: (define_function_unit "mul" 1 0
        !            87:   (and (eq_attr "cpu" "c34") (eq_attr "type" "mull,muld")) 7 3)
        !            88: (define_function_unit "mul" 1 0
        !            89:   (and (eq_attr "cpu" "c38") (eq_attr "type" "mull,muld")) 4 3)
        !            90: 
        !            91: (define_function_unit "div" 1 0
        !            92:   (and (eq_attr "cpu" "c1") (eq_attr "type" "divw")) 24 24)
        !            93: (define_function_unit "div" 1 0
        !            94:   (and (eq_attr "cpu" "c32") (eq_attr "type" "divw")) 44 6)
        !            95: (define_function_unit "div" 1 0
        !            96:   (and (eq_attr "cpu" "c34") (eq_attr "type" "divw")) 14 10)
        !            97: (define_function_unit "div" 1 0
        !            98:   (and (eq_attr "cpu" "c38") (eq_attr "type" "divw")) 11 10)
        !            99: 
        !           100: (define_function_unit "div" 1 0
        !           101:   (and (eq_attr "cpu" "c1") (eq_attr "type" "divl")) 41 42)
        !           102: (define_function_unit "div" 1 0
        !           103:   (and (eq_attr "cpu" "c32") (eq_attr "type" "divl")) 76 5)
        !           104: (define_function_unit "div" 1 0
        !           105:   (and (eq_attr "cpu" "c34") (eq_attr "type" "divl")) 22 18)
        !           106: (define_function_unit "div" 1 0
        !           107:   (and (eq_attr "cpu" "c38") (eq_attr "type" "divl")) 19 18)
        !           108: 
        !           109: (define_function_unit "div" 1 0
        !           110:   (and (eq_attr "cpu" "c1") (eq_attr "type" "divs")) 22 22)
        !           111: (define_function_unit "div" 1 0
        !           112:   (and (eq_attr "cpu" "c32") (eq_attr "type" "divs")) 8 6)
        !           113: (define_function_unit "div" 1 0
        !           114:   (and (eq_attr "cpu" "c34") (eq_attr "type" "divs")) 13 9)
        !           115: (define_function_unit "div" 1 0
        !           116:   (and (eq_attr "cpu" "c38") (eq_attr "type" "divs")) 10 9)
        !           117: 
        !           118: (define_function_unit "div" 1 0
        !           119:   (and (eq_attr "cpu" "c1") (eq_attr "type" "divd")) 37 38)
        !           120: (define_function_unit "div" 1 0
        !           121:   (and (eq_attr "cpu" "c32") (eq_attr "type" "divd")) 12 8)
        !           122: (define_function_unit "div" 1 0
        !           123:   (and (eq_attr "cpu" "c34") (eq_attr "type" "divd")) 20 16)
        !           124: (define_function_unit "div" 1 0
        !           125:   (and (eq_attr "cpu" "c38") (eq_attr "type" "divd")) 17 16)
        !           126: 
        !           127: (define_function_unit "misc" 1 0
        !           128:   (and (eq_attr "cpu" "c1") (eq_attr "type" "cvts,cvtd")) 4 3)
        !           129: (define_function_unit "misc" 1 0
        !           130:   (and (eq_attr "cpu" "c32") (eq_attr "type" "cvts")) 9 7)
        !           131: (define_function_unit "misc" 1 0
        !           132:   (and (eq_attr "cpu" "c32") (eq_attr "type" "cvtd")) 9 6)
        !           133: (define_function_unit "misc" 1 0
        !           134:   (and (eq_attr "cpu" "c34") (eq_attr "type" "cvts")) 6 2)
        !           135: (define_function_unit "misc" 1 0
        !           136:   (and (eq_attr "cpu" "c34") (eq_attr "type" "cvtd")) 6 1)
        !           137: (define_function_unit "misc" 1 0
        !           138:   (and (eq_attr "cpu" "c38") (eq_attr "type" "cvts,cvtd")) 3 1)
        !           139: 
        !           140: (define_function_unit "misc" 1 0
        !           141:   (and (eq_attr "cpu" "c1") (eq_attr "type" "shfw,shfl")) 3 2)
        !           142: (define_function_unit "misc" 1 0
        !           143:   (and (eq_attr "cpu" "c32") (eq_attr "type" "shfw")) 7 5)
        !           144: (define_function_unit "misc" 1 0
        !           145:   (and (eq_attr "cpu" "c32") (eq_attr "type" "shfl")) 7 4)
        !           146: (define_function_unit "misc" 1 0
        !           147:   (and (eq_attr "cpu" "c38") (eq_attr "type" "shfw,shfl")) 3 1)
        !           148: 
        !           149: (define_function_unit "mystery_latch" 1 1
        !           150:   (and (eq_attr "type" "!alu,mldw,mldl,adds,addd") (eq_attr "cpu" "c32")) 2 2)
        !           151: 
        !           152: ;(define_function_unit "ip" 1 1
        !           153: ;  (and (eq_attr "cpu" "c1")
        !           154: ;       (eq_attr "type" "divw,divl,divs,divd,xalu")) 2 2)
        !           155: ;(define_function_unit "ip" 1 1
        !           156: ;  (and (eq_attr "cpu" "c1")
        !           157: ;       (eq_attr "type" "!divw,divl,divs,divd,xalu")) 1 1)
        !           158: ;(define_function_unit "ip" 1 1
        !           159: ;  (and (eq_attr "cpu" "c32")
        !           160: ;       (eq_attr "type" "mull,muld,divl,divd,shfl,cvtd,xalu")) 2 2)
        !           161: ;(define_function_unit "ip" 1 1
        !           162: ;  (and (eq_attr "cpu" "c32")
        !           163: ;       (eq_attr "type" "!mull,muld,divl,divd,shfl,cvtd,xalu")) 1 1)
        !           164: ;(define_function_unit "ip" 1 1
        !           165: ;  (and (eq_attr "cpu" "c34")
        !           166: ;       (eq_attr "type" "addd,mull,muld,divl,divd,cvtd,xalu")) 2 2)
        !           167: ;(define_function_unit "ip" 1 1
        !           168: ;  (and (eq_attr "cpu" "c34")
        !           169: ;       (eq_attr "type" "!addd,mull,muld,divl,divd,cvtd,xalu")) 1 1)
        !           170: 
        !           171: ;; Make the first thing a real insn in case of genattrtab bug
        !           172: 
        !           173: (define_insn "nop"
        !           174:   [(const_int 0)]
        !           175:   ""
        !           176:   "nop")
        !           177: 
        !           178: ;; Moves
        !           179: 
        !           180: (define_expand "movdf"
        !           181:   [(set (match_operand:DF 0 "general_operand" "")
        !           182:        (match_operand:DF 1 "general_operand" ""))]
        !           183:   ""
        !           184:   "if (GET_CODE (operands[0]) != REG)
        !           185:      operands[1] = force_reg (DFmode, operands[1]);")
        !           186: 
        !           187: (define_insn ""
        !           188:   [(set (match_operand:DF 0 "general_operand" "=d,d,d,d,d,<,m")
        !           189:        (match_operand:DF 1 "general_operand"  "d,Q,m,G,H,d,d"))]
        !           190:   "register_operand (operands[0], DFmode)
        !           191:    || register_operand (operands[1], DFmode)"
        !           192:   "@
        !           193:    mov %1,%0
        !           194:    ldb.d %1,%0
        !           195:    ld.d %1,%0
        !           196:    ld.d %u1,%0
        !           197:    ld.l %v1,%0
        !           198:    psh.l %1
        !           199:    st.d %1,%0"
        !           200:   [(set_attr "type" "alu,mldb,mldl,alu,alu,alu,mst")])
        !           201: 
        !           202: ;; This is here so we can load any result of RTL constant folding
        !           203: ;; but do not use it on constants that can be loaded from memory.
        !           204: ;; It is never better and can be worse.
        !           205: 
        !           206: (define_insn ""
        !           207:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           208:        (match_operand:DF 1 "const_double_operand" "F"))]
        !           209:   "CONST_DOUBLE_MEM (operands[1]) == const0_rtx"
        !           210:   "ld.u %u1,%0\;ld.w %v1,%0"
        !           211:   [(set_attr "type" "xalu")])
        !           212: 
        !           213: (define_expand "movsf"
        !           214:   [(set (match_operand:SF 0 "general_operand" "")
        !           215:        (match_operand:SF 1 "general_operand" ""))]
        !           216:   ""
        !           217:   "if (GET_CODE (operands[0]) != REG)
        !           218:      operands[1] = force_reg (SFmode, operands[1]);")
        !           219: 
        !           220: (define_insn ""
        !           221:   [(set (match_operand:SF 0 "general_operand" "=d,d,d,d,<,m")
        !           222:        (match_operand:SF 1 "general_operand" "d,Q,m,F,d,d"))]
        !           223:   "register_operand (operands[0], SFmode)
        !           224:    || register_operand (operands[1], SFmode)"
        !           225:   "@
        !           226:    mov.s %1,%0
        !           227:    ldb.s %1,%0
        !           228:    ld.s %1,%0
        !           229:    ld.s %1,%0
        !           230:    psh.w %1
        !           231:    st.s %1,%0"
        !           232:   [(set_attr "type" "alu,mldb,mldw,alu,alu,mst")])
        !           233: 
        !           234: (define_expand "movdi"
        !           235:   [(set (match_operand:DI 0 "general_operand" "")
        !           236:        (match_operand:DI 1 "general_operand" ""))]
        !           237:   ""
        !           238:   "if (GET_CODE (operands[0]) != REG)
        !           239:      operands[1] = force_reg (DImode, operands[1]);")
        !           240: 
        !           241: (define_insn ""
        !           242:   [(set (match_operand:DI 0 "general_operand" "=d,d,d,d,d,<,m")
        !           243:        (match_operand:DI 1 "general_operand" "d,Q,m,G,HI,d,d"))]
        !           244:   "register_operand (operands[0], DImode)
        !           245:    || register_operand (operands[1], DImode)"
        !           246:   "@
        !           247:    mov %1,%0
        !           248:    ldb.l %1,%0
        !           249:    ld.l %1,%0
        !           250:    ld.d %u1,%0
        !           251:    ld.l %1,%0
        !           252:    psh.l %1
        !           253:    st.l %1,%0"
        !           254:   [(set_attr "type" "alu,mldb,mldl,alu,alu,alu,mst")])
        !           255: 
        !           256: ;; This is here so we can load any result of RTL constant folding
        !           257: ;; but do not use it on constants that can be loaded from memory.
        !           258: ;; It is never better and can be worse.
        !           259: 
        !           260: (define_insn ""
        !           261:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           262:        (match_operand:DI 1 "const_double_operand" "F"))]
        !           263:   "CONST_DOUBLE_MEM (operands[1]) == const0_rtx"
        !           264:   "ld.u %u1,%0\;ld.w %v1,%0"
        !           265:   [(set_attr "type" "xalu")])
        !           266: 
        !           267: (define_expand "movsi"
        !           268:   [(set (match_operand:SI 0 "general_operand" "")
        !           269:        (match_operand:SI 1 "general_operand" ""))]
        !           270:   ""
        !           271:   "if (GET_CODE (operands[0]) != REG)
        !           272:      operands[1] = force_reg (SImode, operands[1]);")
        !           273: 
        !           274: (define_insn ""
        !           275:   [(set (match_operand:SI 0 "push_operand" "=<,<")
        !           276:        (match_operand:SI 1 "nonmemory_operand" "Ad,i"))]
        !           277:   ""
        !           278:   "@
        !           279:    psh.w %1
        !           280:    pshea %a1")
        !           281: 
        !           282: (define_insn ""
        !           283:   [(set (match_operand:SI 0 "general_operand" "=d,r,d,r,r,m")
        !           284:        (match_operand:SI 1 "general_operand" "d,r,Q,m,i,r"))]
        !           285:   "register_operand (operands[0], SImode)
        !           286:    || register_operand (operands[1], SImode)"
        !           287:   "@
        !           288:    mov.w %1,%0
        !           289:    mov %1,%0
        !           290:    ldb.w %1,%0
        !           291:    ld.w %1,%0
        !           292:    ld.w %1,%0
        !           293:    st.w %1,%0"
        !           294:   [(set_attr "type" "alu,alu,mldb,mldw,alu,mst")])
        !           295: 
        !           296: (define_expand "movstrictsi"
        !           297:   [(set (strict_low_part (match_operand:SI 0 "general_operand" ""))
        !           298:        (match_operand:SI 1 "general_operand" ""))]
        !           299:   ""
        !           300:   "if (GET_CODE (operands[0]) != REG)
        !           301:      operands[1] = force_reg (SImode, operands[1]);")
        !           302: 
        !           303: (define_insn ""
        !           304:   [(set (strict_low_part (match_operand:SI 0 "general_operand" "=d,r,d,r,r,m"))
        !           305:        (match_operand:SI 1 "general_operand" "d,r,Q,m,i,r"))]
        !           306:   "register_operand (operands[0], SImode)
        !           307:    || register_operand (operands[1], SImode)"
        !           308:   "@
        !           309:    mov.w %1,%0
        !           310:    mov %1,%0
        !           311:    ldb.w %1,%0
        !           312:    ld.w %1,%0
        !           313:    ld.w %1,%0
        !           314:    st.w %1,%0"
        !           315:   [(set_attr "type" "alu,alu,mldb,mldw,alu,mst")])
        !           316: 
        !           317: (define_expand "movhi"
        !           318:   [(set (match_operand:HI 0 "general_operand" "")
        !           319:        (match_operand:HI 1 "general_operand" ""))]
        !           320:   ""
        !           321:   "if (GET_CODE (operands[0]) != REG)
        !           322:      operands[1] = force_reg (HImode, operands[1]);")
        !           323: 
        !           324: (define_insn ""
        !           325:   [(set (match_operand:HI 0 "general_operand" "=d,r,d,r,r,<,m")
        !           326:        (match_operand:HI 1 "general_operand" "d,r,Q,m,i,Ad,r"))]
        !           327:   "register_operand (operands[0], HImode)
        !           328:    || register_operand (operands[1], HImode)"
        !           329:   "@
        !           330:    mov.w %1,%0
        !           331:    mov %1,%0
        !           332:    ldb.h %1,%0
        !           333:    ld.h %1,%0
        !           334:    ld.w %1,%0
        !           335:    psh.w %1
        !           336:    st.h %1,%0"
        !           337:   [(set_attr "type" "alu,alu,mldb,mldw,alu,alu,mst")])
        !           338: 
        !           339: (define_expand "movqi"
        !           340:   [(set (match_operand:QI 0 "general_operand" "")
        !           341:        (match_operand:QI 1 "general_operand" ""))]
        !           342:   ""
        !           343:   "if (GET_CODE (operands[0]) != REG)
        !           344:      operands[1] = force_reg (QImode, operands[1]);")
        !           345: 
        !           346: (define_insn ""
        !           347:   [(set (match_operand:QI 0 "general_operand" "=d,r,d,r,r,<,m")
        !           348:        (match_operand:QI 1 "general_operand" "d,r,Q,m,i,Ad,r"))]
        !           349:   "register_operand (operands[0], QImode)
        !           350:    || register_operand (operands[1], QImode)"
        !           351:   "@
        !           352:    mov.w %1,%0
        !           353:    mov %1,%0
        !           354:    ldb.b %1,%0
        !           355:    ld.b %1,%0
        !           356:    ld.w %1,%0
        !           357:    psh.w %1
        !           358:    st.b %1,%0"
        !           359:   [(set_attr "type" "alu,alu,mldb,mldw,alu,alu,mst")])
        !           360: 
        !           361: ;; Expand block moves manually to get code that pipelines the loads.
        !           362: 
        !           363: (define_expand "movstrsi"
        !           364:   [(set (match_operand:BLK 0 "memory_operand" "=m")
        !           365:        (match_operand:BLK 1 "memory_operand" "m"))
        !           366:    (use (match_operand:SI 2 "const_int_operand" "i"))
        !           367:    (use (match_operand:SI 3 "const_int_operand" "i"))]
        !           368:   ""
        !           369:   " expand_movstr (operands); DONE; ")
        !           370: 
        !           371: ;; Extension and truncation insns.
        !           372: ;; Those for integer source operand
        !           373: ;; are ordered widest source type first.
        !           374: 
        !           375: (define_insn "truncsiqi2"
        !           376:   [(set (match_operand:QI 0 "register_operand" "=d,a")
        !           377:        (truncate:QI (match_operand:SI 1 "register_operand" "d,a")))]
        !           378:   ""
        !           379:   "cvtw.b %1,%0")
        !           380: 
        !           381: (define_insn "truncsihi2"
        !           382:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           383:        (truncate:HI (match_operand:SI 1 "register_operand" "d,a")))]
        !           384:   ""
        !           385:   "cvtw.h %1,%0")
        !           386: 
        !           387: (define_insn "trunchiqi2"
        !           388:   [(set (match_operand:QI 0 "register_operand" "=r")
        !           389:        (truncate:QI (match_operand:HI 1 "register_operand" "0")))]
        !           390:   ""
        !           391:   "")
        !           392: 
        !           393: (define_insn "truncdisi2"
        !           394:   [(set (match_operand:SI 0 "register_operand" "=d")
        !           395:        (truncate:SI (match_operand:DI 1 "register_operand" "d")))]
        !           396:   ""
        !           397:   "cvtl.w %1,%0")
        !           398: 
        !           399: (define_insn "extendsidi2"
        !           400:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           401:        (sign_extend:DI (match_operand:SI 1 "register_operand" "d")))]
        !           402:   ""
        !           403:   "cvtw.l %1,%0")
        !           404: 
        !           405: (define_insn "extendhisi2"
        !           406:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           407:        (sign_extend:SI (match_operand:HI 1 "register_operand" "d,a")))]
        !           408:   ""
        !           409:   "cvth.w %1,%0")
        !           410: 
        !           411: (define_insn "extendqihi2"
        !           412:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           413:        (sign_extend:HI (match_operand:QI 1 "register_operand" "d,a")))]
        !           414:   ""
        !           415:   "cvtb.w %1,%0")
        !           416: 
        !           417: (define_insn "extendqisi2"
        !           418:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           419:        (sign_extend:SI (match_operand:QI 1 "register_operand" "d,a")))]
        !           420:   ""
        !           421:   "cvtb.w %1,%0")
        !           422: 
        !           423: (define_insn "extendsfdf2"
        !           424:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           425:        (float_extend:DF (match_operand:SF 1 "register_operand" "d")))]
        !           426:   ""
        !           427:   "cvts.d %1,%0"
        !           428:   [(set_attr "type" "cvts")])
        !           429: 
        !           430: (define_insn "truncdfsf2"
        !           431:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           432:        (float_truncate:SF (match_operand:DF 1 "register_operand" "d")))]
        !           433:   ""
        !           434:   "cvtd.s %1,%0"
        !           435:   [(set_attr "type" "cvtd")])
        !           436: 
        !           437: (define_insn "zero_extendhisi2"
        !           438:   [(set (match_operand:SI 0 "register_operand" "=r")
        !           439:        (zero_extend:SI (match_operand:HI 1 "register_operand" "0")))]
        !           440:   ""
        !           441:   "and #0xffff,%0")
        !           442: 
        !           443: (define_insn "zero_extendqihi2"
        !           444:   [(set (match_operand:HI 0 "register_operand" "=r")
        !           445:        (zero_extend:HI (match_operand:QI 1 "register_operand" "0")))]
        !           446:   ""
        !           447:   "and #0xff,%0")
        !           448: 
        !           449: (define_insn "zero_extendqisi2"
        !           450:   [(set (match_operand:SI 0 "register_operand" "=r")
        !           451:        (zero_extend:SI (match_operand:QI 1 "register_operand" "0")))]
        !           452:   ""
        !           453:   "and #0xff,%0")
        !           454: 
        !           455: (define_insn "zero_extendsidi2"
        !           456:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           457:        (zero_extend:DI (match_operand:SI 1 "register_operand" "0")))]
        !           458:   ""
        !           459:   "ld.u #0,%0")
        !           460: 
        !           461: ;; Fix-to-float conversion insns.
        !           462: ;; Note that the ones that start with SImode come first.
        !           463: ;; That is so that an operand that is a CONST_INT
        !           464: ;; (and therefore lacks a specific machine mode).
        !           465: ;; will be recognized as SImode (which is always valid)
        !           466: ;; rather than as QImode or HImode.
        !           467: 
        !           468: (define_insn "floatsisf2"
        !           469:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           470:        (float:SF (match_operand:SI 1 "register_operand" "d")))]
        !           471:   ""
        !           472:   "cvtw.s %1,%0"
        !           473:   [(set_attr "type" "cvts")])
        !           474: 
        !           475: (define_insn "floatdisf2"
        !           476:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           477:        (float:SF (match_operand:DI 1 "register_operand" "d")))]
        !           478:   ""
        !           479:   "cvtl.s %1,%0"
        !           480:   [(set_attr "type" "cvtd")])
        !           481: 
        !           482: (define_insn "floatsidf2"
        !           483:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           484:        (float:DF (match_operand:SI 1 "register_operand" "d")))]
        !           485:   "! TARGET_C1"
        !           486:   "cvtw.d %1,%0"
        !           487:   [(set_attr "type" "cvts")])
        !           488: 
        !           489: (define_insn "floatdidf2"
        !           490:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           491:        (float:DF (match_operand:DI 1 "register_operand" "d")))]
        !           492:   ""
        !           493:   "cvtl.d %1,%0"
        !           494:   [(set_attr "type" "cvtd")])
        !           495: 
        !           496: ;; These are a little slower than gcc's normal way of doing unsigned
        !           497: ;; DI floats (if the DI number is "negative") but they avoid double
        !           498: ;; rounding and they avoid explicit constants.
        !           499: 
        !           500: (define_expand "floatunsdidf2"
        !           501:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           502:        (float:DF (match_operand:DI 1 "register_operand" "d")))
        !           503:    (set (cc0) (compare:DI (match_dup 3) (match_dup 1)))
        !           504:    (set (pc)
        !           505:        (if_then_else (le (cc0) (const_int 0))
        !           506:                      (label_ref (match_dup 4))
        !           507:                      (pc)))
        !           508:    (set (match_dup 2) (lshiftrt:DI (match_dup 1) (const_int 1)))
        !           509:    (set (match_dup 0) (float:DF (match_dup 2)))
        !           510:    (set (match_dup 0) (plus:DF (match_dup 0) (match_dup 0)))
        !           511:    (match_dup 4)
        !           512:    (set (match_dup 0) (match_dup 0))]
        !           513:   ""
        !           514:   "
        !           515: {
        !           516:   operands[2] = gen_reg_rtx (DImode);
        !           517:   operands[3] = force_reg (DImode, const0_rtx);
        !           518:   operands[4] = gen_label_rtx ();
        !           519: }")
        !           520: 
        !           521: (define_expand "floatunsdisf2"
        !           522:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           523:        (float:SF (match_operand:DI 1 "register_operand" "d")))
        !           524:    (set (cc0) (compare:DI (match_dup 3) (match_dup 1)))
        !           525:    (set (pc)
        !           526:        (if_then_else (le (cc0) (const_int 0))
        !           527:                      (label_ref (match_dup 4))
        !           528:                      (pc)))
        !           529:    (set (match_dup 2) (lshiftrt:DI (match_dup 1) (const_int 1)))
        !           530:    (set (match_dup 0) (float:SF (match_dup 2)))
        !           531:    (set (match_dup 0) (plus:SF (match_dup 0) (match_dup 0)))
        !           532:    (match_dup 4)
        !           533:    (set (match_dup 0) (match_dup 0))]
        !           534:   ""
        !           535:   "
        !           536: {
        !           537:   operands[2] = gen_reg_rtx (DImode);
        !           538:   operands[3] = force_reg (DImode, const0_rtx);
        !           539:   operands[4] = gen_label_rtx ();
        !           540: }")
        !           541: 
        !           542: ;; These patterns are identical to gcc's default action 
        !           543: ;; if DI->DF and DI->SF are not present.  There are here
        !           544: ;; only to prevent SI->*F from promoting to DI->*F.
        !           545: 
        !           546: (define_expand "floatunssidf2"
        !           547:   [(set (match_dup 2)
        !           548:        (zero_extend:DI (match_operand:SI 1 "register_operand" "")))
        !           549:    (set (match_operand:DF 0 "register_operand" "")
        !           550:        (float:DF (match_dup 2)))]
        !           551:   ""
        !           552:   "operands[2] = gen_reg_rtx (DImode);")
        !           553: 
        !           554: (define_expand "floatunssisf2"
        !           555:   [(set (match_dup 2)
        !           556:         (zero_extend:DI (match_operand:SI 1 "register_operand" "")))
        !           557:    (set (match_operand:SF 0 "register_operand" "")
        !           558:         (float:SF (match_dup 2)))]
        !           559:   ""
        !           560:   "operands[2] = gen_reg_rtx (DImode);")
        !           561: 
        !           562: ;; Float-to-fix conversion insns.
        !           563: 
        !           564: (define_insn "fix_truncsfsi2"
        !           565:   [(set (match_operand:SI 0 "register_operand" "=d")
        !           566:        (fix:SI (fix:SF (match_operand:SF 1 "register_operand" "d"))))]
        !           567:   ""
        !           568:   "cvts.w %1,%0"
        !           569:   [(set_attr "type" "cvts")])
        !           570: 
        !           571: (define_insn "fix_truncsfdi2"
        !           572:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           573:        (fix:DI (fix:SF (match_operand:SF 1 "register_operand" "d"))))]
        !           574:   ""
        !           575:   "cvts.l %1,%0"
        !           576:   [(set_attr "type" "cvts")])
        !           577: 
        !           578: (define_insn "fix_truncdfsi2"
        !           579:   [(set (match_operand:SI 0 "register_operand" "=d")
        !           580:        (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "d"))))]
        !           581:   ""
        !           582:   "cvtd.l %1,%0"
        !           583:   [(set_attr "type" "cvtd")])
        !           584: 
        !           585: (define_insn "fix_truncdfdi2"
        !           586:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           587:        (fix:DI (fix:DF (match_operand:DF 1 "register_operand" "d"))))]
        !           588:   ""
        !           589:   "cvtd.l %1,%0"
        !           590:   [(set_attr "type" "cvtd")])
        !           591: 
        !           592: ;;- All kinds of add instructions.
        !           593: 
        !           594: (define_insn "adddf3"
        !           595:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           596:        (plus:DF (match_operand:DF 1 "register_operand" "%0")
        !           597:                 (match_operand:DF 2 "register_operand" "d")))]
        !           598:   ""
        !           599:   "add.d %2,%0"
        !           600:   [(set_attr "type" "addd")])
        !           601: 
        !           602: (define_insn "addsf3"
        !           603:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           604:        (plus:SF (match_operand:SF 1 "register_operand" "%0")
        !           605:                 (match_operand:SF 2 "nonmemory_operand" "dF")))]
        !           606:   ""
        !           607:   "add.s %2,%0"
        !           608:   [(set_attr "type" "adds")])
        !           609: 
        !           610: (define_insn "adddi3"
        !           611:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           612:        (plus:DI (match_operand:DI 1 "register_operand" "%0")
        !           613:                 (match_operand:DI 2 "register_operand" "d")))]
        !           614:   ""
        !           615:   "add.l %2,%0")
        !           616: 
        !           617: (define_expand "addsi3"
        !           618:   [(set (match_operand:SI 0 "register_operand" "")
        !           619:        (plus:SI (match_operand:SI 1 "register_operand" "")
        !           620:                 (match_operand:SI 2 "nonmemory_operand" "")))]
        !           621:   ""
        !           622:   "")
        !           623: 
        !           624: (define_insn ""
        !           625:   [(set (match_operand:SI 0 "register_operand" "=a")
        !           626:        (plus:SI (match_operand:SI 1 "register_operand" "%A")
        !           627:                 (match_operand:SI 2 "immediate_operand" "i")))]
        !           628:   "operands[1] == frame_pointer_rtx || operands[1] == arg_pointer_rtx"
        !           629:   "ldea %a2(%1),%0")
        !           630: 
        !           631: (define_insn ""
        !           632:   [(set (match_operand:SI 0 "register_operand" "=a")
        !           633:        (plus:SI (match_operand:SI 1 "register_operand" "%a")
        !           634:                 (match_operand:SI 2 "nonmemory_operand" "ri")))]
        !           635:   "operands[1] == stack_pointer_rtx && operands[0] != stack_pointer_rtx"
        !           636:   "mov %1,%0\;add.w %2,%0")
        !           637: 
        !           638: (define_insn ""
        !           639:   [(set (match_operand:SI 0 "push_operand" "=<")
        !           640:        (plus:SI (match_operand:SI 1 "register_operand" "A")
        !           641:                 (match_operand:SI 2 "immediate_operand" "i")))]
        !           642:   "operands[1] != stack_pointer_rtx"
        !           643:   "pshea %a2(%1)"
        !           644:   [(set_attr "type" "mst")])
        !           645: 
        !           646: (define_insn ""
        !           647:   [(set (match_operand:SI 0 "register_operand" "=d,a,a")
        !           648:        (plus:SI (match_operand:SI 1 "register_operand" "%0,0,A")
        !           649:                 (match_operand:SI 2 "nonmemory_operand" "di,ri,i")))]
        !           650:   "TARGET_C1"
        !           651:   "@
        !           652:    add.w %2,%0
        !           653:    add.w %2,%0
        !           654:    ldea %a2(%1),%0")
        !           655: 
        !           656: (define_insn ""
        !           657:   [(set (match_operand:SI 0 "register_operand" "=d,a,r")
        !           658:        (plus:SI (match_operand:SI 1 "register_operand" "%0,0,A")
        !           659:                 (match_operand:SI 2 "nonmemory_operand" "di,ri,i")))]
        !           660:   ""
        !           661:   "@
        !           662:    add.w %2,%0
        !           663:    add.w %2,%0
        !           664:    ldea %a2(%1),%0")
        !           665: 
        !           666: (define_insn "addhi3"
        !           667:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           668:        (plus:HI (match_operand:HI 1 "register_operand" "%0,0")
        !           669:                 (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           670:   ""
        !           671:   "add.h %2,%0")
        !           672: 
        !           673: (define_insn "addqi3"
        !           674:   [(set (match_operand:QI 0 "register_operand" "=d,d")
        !           675:        (plus:QI (match_operand:QI 1 "register_operand" "%0,0")
        !           676:                 (match_operand:QI 2 "nonmemory_operand" "d,i")))]
        !           677:   ""
        !           678:   "@
        !           679:    add.b %2,%0
        !           680:    add.w %2,%0")
        !           681: 
        !           682: ;;- All kinds of subtract instructions.
        !           683: 
        !           684: (define_insn "subdf3"
        !           685:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           686:        (minus:DF (match_operand:DF 1 "register_operand" "0")
        !           687:                  (match_operand:DF 2 "register_operand" "d")))]
        !           688:   ""
        !           689:   "sub.d %2,%0"
        !           690:   [(set_attr "type" "addd")])
        !           691: 
        !           692: (define_insn "subsf3"
        !           693:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           694:        (minus:SF (match_operand:SF 1 "register_operand" "0")
        !           695:                  (match_operand:SF 2 "nonmemory_operand" "dF")))]
        !           696:   ""
        !           697:   "sub.s %2,%0"
        !           698:   [(set_attr "type" "adds")])
        !           699: 
        !           700: (define_insn "subdi3"
        !           701:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           702:        (minus:DI (match_operand:DI 1 "register_operand" "0")
        !           703:                  (match_operand:DI 2 "register_operand" "d")))]
        !           704:   ""
        !           705:   "sub.l %2,%0")
        !           706: 
        !           707: (define_insn "subsi3"
        !           708:   [(set (match_operand:SI 0 "register_operand" "=d,a,?d,?a")
        !           709:        (minus:SI (match_operand:SI 1 "nonmemory_operand" "0,0,di,ai")
        !           710:                  (match_operand:SI 2 "nonmemory_operand" "di,ai,0,0")))]
        !           711:   ""
        !           712:   "@
        !           713:   sub.w %2,%0
        !           714:   sub.w %2,%0
        !           715:   sub.w %1,%0\;neg.w %0,%0
        !           716:   sub.w %1,%0\;neg.w %0,%0")
        !           717: 
        !           718: (define_insn "subhi3"
        !           719:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           720:        (minus:HI (match_operand:HI 1 "register_operand" "0,0")
        !           721:                  (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           722:   ""
        !           723:   "sub.h %2,%0")
        !           724: 
        !           725: (define_insn "subqi3"
        !           726:   [(set (match_operand:QI 0 "register_operand" "=d,d")
        !           727:        (minus:QI (match_operand:QI 1 "register_operand" "0,0")
        !           728:                  (match_operand:QI 2 "nonmemory_operand" "d,i")))]
        !           729:   ""
        !           730:   "@
        !           731:    sub.b %2,%0
        !           732:    sub.w %2,%0")
        !           733: 
        !           734: ;;- Multiply instructions.
        !           735: 
        !           736: (define_insn "muldf3"
        !           737:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           738:        (mult:DF (match_operand:DF 1 "register_operand" "%0")
        !           739:                 (match_operand:DF 2 "register_operand" "d")))]
        !           740:   ""
        !           741:   "mul.d %2,%0"
        !           742:   [(set_attr "type" "muld")])
        !           743: 
        !           744: (define_insn "mulsf3"
        !           745:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           746:        (mult:SF (match_operand:SF 1 "register_operand" "%0")
        !           747:                 (match_operand:SF 2 "nonmemory_operand" "dF")))]
        !           748:   ""
        !           749:   "mul.s %2,%0"
        !           750:   [(set_attr "type" "muls")])
        !           751: 
        !           752: (define_insn "muldi3"
        !           753:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           754:        (mult:DI (match_operand:DI 1 "register_operand" "%0")
        !           755:                 (match_operand:DI 2 "register_operand" "d")))]
        !           756:   ""
        !           757:   "mul.l %2,%0"
        !           758:   [(set_attr "type" "mull")])
        !           759: 
        !           760: (define_insn "mulsi3"
        !           761:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           762:        (mult:SI (match_operand:SI 1 "register_operand" "%0,0")
        !           763:                 (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !           764:   ""
        !           765:   "mul.w %2,%0"
        !           766:   [(set_attr "type" "mulw")])
        !           767: 
        !           768: (define_insn "mulhi3"
        !           769:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           770:        (mult:HI (match_operand:HI 1 "register_operand" "%0,0")
        !           771:                 (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           772:   ""
        !           773:   "mul.h %2,%0"
        !           774:   [(set_attr "type" "mulw")])
        !           775: 
        !           776: (define_insn "mulqi3"
        !           777:   [(set (match_operand:QI 0 "register_operand" "=d,d")
        !           778:        (mult:QI (match_operand:QI 1 "register_operand" "%0,0")
        !           779:                 (match_operand:QI 2 "nonmemory_operand" "d,i")))]
        !           780:   ""
        !           781:   "@
        !           782:    mul.b %2,%0
        !           783:    mul.w %2,%0"
        !           784:   [(set_attr "type" "mulw,mulw")])
        !           785: 
        !           786: ;;- Divide instructions.
        !           787: 
        !           788: (define_insn "divdf3"
        !           789:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           790:        (div:DF (match_operand:DF 1 "register_operand" "0")
        !           791:                (match_operand:DF 2 "register_operand" "d")))]
        !           792:   ""
        !           793:   "div.d %2,%0"
        !           794:   [(set_attr "type" "divd")])
        !           795: 
        !           796: (define_insn "divsf3"
        !           797:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           798:        (div:SF (match_operand:SF 1 "register_operand" "0")
        !           799:                (match_operand:SF 2 "nonmemory_operand" "dF")))]
        !           800:   ""
        !           801:   "div.s %2,%0"
        !           802:   [(set_attr "type" "divs")])
        !           803: 
        !           804: (define_insn "divdi3"
        !           805:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           806:        (div:DI (match_operand:DI 1 "register_operand" "0")
        !           807:                (match_operand:DI 2 "register_operand" "d")))]
        !           808:   ""
        !           809:   "div.l %2,%0"
        !           810:   [(set_attr "type" "divl")])
        !           811: 
        !           812: (define_expand "udivsi3"
        !           813:   [(set (match_dup 3)
        !           814:        (zero_extend:DI (match_operand:SI 1 "register_operand" "")))
        !           815:    (set (match_dup 4)
        !           816:        (zero_extend:DI (match_operand:SI 2 "register_operand" "")))
        !           817:    (set (match_dup 3)
        !           818:        (div:DI (match_dup 3) (match_dup 4)))
        !           819:    (set (match_operand:SI 0 "register_operand" "")
        !           820:        (subreg:SI (match_dup 3) 0))]
        !           821:   ""
        !           822:   "operands[3] = gen_reg_rtx (DImode);
        !           823:    operands[4] = gen_reg_rtx (DImode); ")
        !           824: 
        !           825: (define_insn "udivdi3"
        !           826:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           827:        (udiv:DI (match_operand:DI 1 "register_operand" "d")
        !           828:                 (match_operand:DI 2 "register_operand" "d")))]
        !           829:   ""
        !           830:   "psh.l %2\;psh.l %1\;callq udiv64\;pop.l %0\;add.w #8,sp")
        !           831: 
        !           832: (define_insn "divsi3"
        !           833:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           834:        (div:SI (match_operand:SI 1 "register_operand" "0,0")
        !           835:                (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !           836:   ""
        !           837:   "div.w %2,%0"
        !           838:   [(set_attr "type" "divw")])
        !           839: 
        !           840: (define_insn "divhi3"
        !           841:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           842:        (div:HI (match_operand:HI 1 "register_operand" "0,0")
        !           843:                (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           844:   ""
        !           845:   "div.h %2,%0"
        !           846:   [(set_attr "type" "divw")])
        !           847: 
        !           848: (define_insn "divqi3"
        !           849:   [(set (match_operand:QI 0 "register_operand" "=d")
        !           850:        (div:QI (match_operand:QI 1 "register_operand" "0")
        !           851:                (match_operand:QI 2 "register_operand" "d")))]
        !           852:   ""
        !           853:   "div.b %2,%0"
        !           854:   [(set_attr "type" "divw")])
        !           855: 
        !           856: ;;- Bit clear instructions.
        !           857: 
        !           858: (define_insn ""
        !           859:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           860:        (and:DI (match_operand:DI 1 "register_operand" "%0")
        !           861:                (match_operand:DI 2 "" "")))]
        !           862:   "(GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
        !           863:    || (GET_CODE (operands[2]) == CONST_DOUBLE
        !           864:        && CONST_DOUBLE_HIGH (operands[2]) == -1)"
        !           865:   "and %2,%0")
        !           866: 
        !           867: (define_insn "anddi3"
        !           868:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           869:        (and:DI (match_operand:DI 1 "register_operand" "%0")
        !           870:                (match_operand:DI 2 "register_operand" "d")))]
        !           871:   ""
        !           872:   "and %2,%0")
        !           873: 
        !           874: (define_insn "andsi3"
        !           875:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           876:        (and:SI (match_operand:SI 1 "register_operand" "%0,0")
        !           877:                (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !           878:   ""
        !           879:   "and %2,%0")
        !           880: 
        !           881: (define_insn "andhi3"
        !           882:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           883:        (and:HI (match_operand:HI 1 "register_operand" "%0,0")
        !           884:                (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           885:   ""
        !           886:   "and %2,%0")
        !           887: 
        !           888: (define_insn "andqi3"
        !           889:   [(set (match_operand:QI 0 "register_operand" "=d,a")
        !           890:        (and:QI (match_operand:QI 1 "register_operand" "%0,0")
        !           891:                (match_operand:QI 2 "nonmemory_operand" "di,ai")))]
        !           892:   ""
        !           893:   "and %2,%0")
        !           894: 
        !           895: ;;- Bit set instructions.
        !           896: 
        !           897: (define_insn ""
        !           898:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           899:        (ior:DI (match_operand:DI 1 "register_operand" "%0")
        !           900:                (match_operand:DI 2 "" "")))]
        !           901:   "(GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) >= 0)
        !           902:    || (GET_CODE (operands[2]) == CONST_DOUBLE
        !           903:        && CONST_DOUBLE_HIGH (operands[2]) == 0)"
        !           904:   "or %2,%0")
        !           905: 
        !           906: (define_insn "iordi3"
        !           907:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           908:        (ior:DI (match_operand:DI 1 "register_operand" "%0")
        !           909:                (match_operand:DI 2 "register_operand" "d")))]
        !           910:   ""
        !           911:   "or %2,%0")
        !           912: 
        !           913: (define_insn "iorsi3"
        !           914:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           915:        (ior:SI (match_operand:SI 1 "register_operand" "%0,0")
        !           916:                (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !           917:   ""
        !           918:   "or %2,%0")
        !           919: 
        !           920: (define_insn "iorhi3"
        !           921:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           922:        (ior:HI (match_operand:HI 1 "register_operand" "%0,0")
        !           923:                (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           924:   ""
        !           925:   "or %2,%0")
        !           926: 
        !           927: (define_insn "iorqi3"
        !           928:   [(set (match_operand:QI 0 "register_operand" "=d,a")
        !           929:        (ior:QI (match_operand:QI 1 "register_operand" "%0,0")
        !           930:                (match_operand:QI 2 "nonmemory_operand" "di,ai")))]
        !           931:   ""
        !           932:   "or %2,%0")
        !           933: 
        !           934: ;;- xor instructions.
        !           935: 
        !           936: (define_insn ""
        !           937:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           938:        (xor:DI (match_operand:DI 1 "register_operand" "%0")
        !           939:                (match_operand:DI 2 "" "")))]
        !           940:   "(GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) >= 0)
        !           941:    || (GET_CODE (operands[2]) == CONST_DOUBLE
        !           942:        && CONST_DOUBLE_HIGH (operands[2]) == 0)"
        !           943:   "xor %2,%0")
        !           944: 
        !           945: (define_insn "xordi3"
        !           946:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           947:        (xor:DI (match_operand:DI 1 "register_operand" "%0")
        !           948:                (match_operand:DI 2 "register_operand" "d")))]
        !           949:   ""
        !           950:   "xor %2,%0")
        !           951: 
        !           952: (define_insn "xorsi3"
        !           953:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           954:        (xor:SI (match_operand:SI 1 "register_operand" "%0,0")
        !           955:                (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !           956:   ""
        !           957:   "xor %2,%0")
        !           958: 
        !           959: (define_insn "xorhi3"
        !           960:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !           961:        (xor:HI (match_operand:HI 1 "register_operand" "%0,0")
        !           962:                (match_operand:HI 2 "nonmemory_operand" "di,ai")))]
        !           963:   ""
        !           964:   "xor %2,%0")
        !           965: 
        !           966: (define_insn "xorqi3"
        !           967:   [(set (match_operand:QI 0 "register_operand" "=d,a")
        !           968:        (xor:QI (match_operand:QI 1 "register_operand" "%0,0")
        !           969:                (match_operand:QI 2 "nonmemory_operand" "di,ai")))]
        !           970:   ""
        !           971:   "xor %2,%0")
        !           972: 
        !           973: (define_insn "negdf2"
        !           974:   [(set (match_operand:DF 0 "register_operand" "=d")
        !           975:        (neg:DF (match_operand:DF 1 "register_operand" "d")))]
        !           976:   ""
        !           977:   "neg.d %1,%0"
        !           978:   [(set_attr "type" "addd")])
        !           979: 
        !           980: (define_insn "negsf2"
        !           981:   [(set (match_operand:SF 0 "register_operand" "=d")
        !           982:        (neg:SF (match_operand:SF 1 "register_operand" "d")))]
        !           983:   ""
        !           984:   "neg.s %1,%0"
        !           985:   [(set_attr "type" "adds")])
        !           986: 
        !           987: (define_insn "negdi2"
        !           988:   [(set (match_operand:DI 0 "register_operand" "=d")
        !           989:        (neg:DI (match_operand:DI 1 "register_operand" "d")))]
        !           990:   ""
        !           991:   "neg.l %1,%0")
        !           992: 
        !           993: (define_insn "negsi2"
        !           994:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !           995:        (neg:SI (match_operand:SI 1 "register_operand" "d,a")))]
        !           996:   ""
        !           997:   "neg.w %1,%0")
        !           998: 
        !           999: (define_insn "neghi2"
        !          1000:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !          1001:        (neg:HI (match_operand:HI 1 "register_operand" "d,a")))]
        !          1002:   ""
        !          1003:   "neg.h %1,%0")
        !          1004: 
        !          1005: (define_insn "negqi2"
        !          1006:   [(set (match_operand:QI 0 "register_operand" "=d")
        !          1007:        (neg:QI (match_operand:QI 1 "register_operand" "d")))]
        !          1008:   ""
        !          1009:   "neg.b %1,%0")
        !          1010: 
        !          1011: (define_insn "one_cmpldi2"
        !          1012:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1013:        (not:DI (match_operand:DI 1 "register_operand" "d")))]
        !          1014:   ""
        !          1015:   "not %1,%0")
        !          1016: 
        !          1017: (define_insn "one_cmplsi2"
        !          1018:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1019:        (not:SI (match_operand:SI 1 "register_operand" "d,a")))]
        !          1020:   ""
        !          1021:   "not %1,%0")
        !          1022: 
        !          1023: (define_insn "one_cmplhi2"
        !          1024:   [(set (match_operand:HI 0 "register_operand" "=d,a")
        !          1025:        (not:HI (match_operand:HI 1 "register_operand" "d,a")))]
        !          1026:   ""
        !          1027:   "not %1,%0")
        !          1028: 
        !          1029: (define_insn "one_cmplqi2"
        !          1030:   [(set (match_operand:QI 0 "register_operand" "=d,a")
        !          1031:        (not:QI (match_operand:QI 1 "register_operand" "d,a")))]
        !          1032:   ""
        !          1033:   "not %1,%0")
        !          1034: 
        !          1035: ;;- Shifts
        !          1036: ;;
        !          1037: ;; The extreme profusion of patterns here is due to the different-speed
        !          1038: ;; shifts on different machines, and the C1's lack of word shift S-register
        !          1039: ;; instructions.
        !          1040: 
        !          1041: ;; SImode
        !          1042: 
        !          1043: ;; Logical left 1, 1 cycle on all machines via add
        !          1044: 
        !          1045: (define_insn ""
        !          1046:   [(set (match_operand:SI 0 "register_operand" "=r")
        !          1047:        (lshift:SI (match_operand:SI 1 "register_operand" "0")
        !          1048:                   (const_int 1)))]
        !          1049:   ""
        !          1050:   "add.w %0,%0")
        !          1051: 
        !          1052: ;; C34 general shift is 1 cycle
        !          1053: 
        !          1054: (define_insn ""
        !          1055:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1056:        (lshift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1057:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1058:   "TARGET_C34"
        !          1059:   "@
        !          1060:    shf.w %2,%0
        !          1061:    shf %2,%0"
        !          1062:   [(set_attr "type" "shfw,shfw")])
        !          1063: 
        !          1064: ;; else shift left 0..7 is 1 cycle if we use an A register
        !          1065: 
        !          1066: (define_insn ""
        !          1067:   [(set (match_operand:SI 0 "register_operand" "=a,?d")
        !          1068:        (lshift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1069:                   (match_operand:SI 2 "immediate_operand" "ai,di")))]
        !          1070:   "TARGET_C1 && INTVAL (operands[2]) < (unsigned) 8"
        !          1071:   "@
        !          1072:    shf %2,%0
        !          1073:    shf %2,%0"
        !          1074:   [(set_attr "type" "alu,shfl")])
        !          1075: 
        !          1076: (define_insn ""
        !          1077:   [(set (match_operand:SI 0 "register_operand" "=a,?d")
        !          1078:        (lshift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1079:                   (match_operand:SI 2 "immediate_operand" "ai,di")))]
        !          1080:   "INTVAL (operands[2]) < (unsigned) 8"
        !          1081:   "@
        !          1082:    shf %2,%0
        !          1083:    shf.w %2,%0"
        !          1084:   [(set_attr "type" "alu,shfw")])
        !          1085: 
        !          1086: ;; else general left shift
        !          1087: 
        !          1088: (define_insn ""
        !          1089:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1090:        (lshift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1091:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1092:   "TARGET_C1"
        !          1093:   "@
        !          1094:    shf %2,%0
        !          1095:    shf %2,%0"
        !          1096:   [(set_attr "type" "shfl,shfw")])
        !          1097: 
        !          1098: ;; (but C2 shift left by a constant can is faster via multiply)
        !          1099: 
        !          1100: (define_insn ""
        !          1101:   [(set (match_operand:SI 0 "register_operand" "=r")
        !          1102:        (lshift:SI (match_operand:SI 1 "register_operand" "0")
        !          1103:                   (match_operand:SI 2 "const_int_operand" "i")))]
        !          1104:   "TARGET_C2 && INTVAL (operands[2]) < (unsigned) 32"
        !          1105:   "mul.w %z2,%0"
        !          1106:   [(set_attr "type" "mulw")])
        !          1107: 
        !          1108: (define_insn "lshlsi3"
        !          1109:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1110:        (lshift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1111:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1112:   ""
        !          1113:   "@
        !          1114:    shf.w %2,%0
        !          1115:    shf %2,%0"
        !          1116:   [(set_attr "type" "shfw,shfw")])
        !          1117: 
        !          1118: ;; Arithmetic left 1, 1 cycle on all machines via add
        !          1119: 
        !          1120: (define_insn ""
        !          1121:   [(set (match_operand:SI 0 "register_operand" "=r")
        !          1122:        (ashift:SI (match_operand:SI 1 "register_operand" "0")
        !          1123:                   (const_int 1)))]
        !          1124:   ""
        !          1125:   "add.w %0,%0")
        !          1126: 
        !          1127: ;; C34 general shift is 1 cycle
        !          1128: 
        !          1129: (define_insn ""
        !          1130:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1131:        (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1132:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1133:   "TARGET_C34"
        !          1134:   "@
        !          1135:    shf.w %2,%0
        !          1136:    shf %2,%0"
        !          1137:   [(set_attr "type" "shfw,shfw")])
        !          1138: 
        !          1139: ;; else shift left 0..7 is 1 cycle if we use an A register
        !          1140: 
        !          1141: (define_insn ""
        !          1142:   [(set (match_operand:SI 0 "register_operand" "=a,?d")
        !          1143:        (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1144:                   (match_operand:SI 2 "immediate_operand" "ai,di")))]
        !          1145:   "TARGET_C1 && INTVAL (operands[2]) < (unsigned) 8"
        !          1146:   "@
        !          1147:    shf %2,%0
        !          1148:    shf %2,%0"
        !          1149:   [(set_attr "type" "alu,shfl")])
        !          1150: 
        !          1151: (define_insn ""
        !          1152:   [(set (match_operand:SI 0 "register_operand" "=a,?d")
        !          1153:        (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1154:                   (match_operand:SI 2 "immediate_operand" "ai,di")))]
        !          1155:   "INTVAL (operands[2]) < (unsigned) 8"
        !          1156:   "@
        !          1157:    shf %2,%0
        !          1158:    shf.w %2,%0"
        !          1159:   [(set_attr "type" "alu,shfw")])
        !          1160: 
        !          1161: ;; else general left shift
        !          1162: 
        !          1163: (define_insn ""
        !          1164:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1165:        (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1166:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1167:   "TARGET_C1"
        !          1168:   "@
        !          1169:    shf %2,%0
        !          1170:    shf %2,%0"
        !          1171:   [(set_attr "type" "shfl,shfw")])
        !          1172: 
        !          1173: (define_insn ""
        !          1174:   [(set (match_operand:SI 0 "register_operand" "=r")
        !          1175:        (ashift:SI (match_operand:SI 1 "register_operand" "0")
        !          1176:                   (match_operand:SI 2 "const_int_operand" "i")))]
        !          1177:   "TARGET_C2 && INTVAL (operands[2]) < (unsigned) 32"
        !          1178:   "mul.w %z2,%0"
        !          1179:   [(set_attr "type" "mulw")])
        !          1180: 
        !          1181: (define_insn "ashlsi3"
        !          1182:   [(set (match_operand:SI 0 "register_operand" "=d,a")
        !          1183:        (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1184:                   (match_operand:SI 2 "nonmemory_operand" "di,ai")))]
        !          1185:   ""
        !          1186:   "@
        !          1187:    shf.w %2,%0
        !          1188:    shf %2,%0"
        !          1189:   [(set_attr "type" "shfw,shfw")])
        !          1190: 
        !          1191: ;; Logical right, general
        !          1192: ;; The hardware wants the negative of the shift count
        !          1193: 
        !          1194: (define_expand "lshrsi3"
        !          1195:   [(set (match_operand:SI 0 "register_operand" "")
        !          1196:        (lshiftrt:SI (match_operand:SI 1 "register_operand" "")
        !          1197:                     (neg:SI (match_operand:SI 2 "nonmemory_operand" ""))))]
        !          1198:   ""
        !          1199:   "operands[2] = negate_rtx (SImode, operands[2]);")
        !          1200: 
        !          1201: ;; C1 lacks word shift S reg
        !          1202: 
        !          1203: (define_insn ""
        !          1204:   [(set
        !          1205:     (match_operand:SI 0 "register_operand" "=a,?d")
        !          1206:     (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1207:                 (neg:SI (match_operand:SI 2 "nonmemory_operand" "ai,di"))))]
        !          1208:   "TARGET_C1"
        !          1209:   "@
        !          1210:    shf %2,%0
        !          1211:    ld.u #0,%0\;shf %2,%0"
        !          1212:   [(set_attr "type" "shfw,shfl")])
        !          1213: 
        !          1214: ;; general case
        !          1215: 
        !          1216: (define_insn ""
        !          1217:   [(set
        !          1218:     (match_operand:SI 0 "register_operand" "=d,a")
        !          1219:     (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1220:                 (neg:SI (match_operand:SI 2 "nonmemory_operand" "di,ai"))))]
        !          1221:   ""
        !          1222:   "@
        !          1223:    shf.w %2,%0
        !          1224:    shf %2,%0"
        !          1225:   [(set_attr "type" "shfw,shfw")])
        !          1226: 
        !          1227: ;; Patterns without neg produced by constant folding
        !          1228: 
        !          1229: (define_insn ""
        !          1230:   [(set
        !          1231:     (match_operand:SI 0 "register_operand" "=a,?d")
        !          1232:     (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1233:                 (match_operand:SI 2 "immediate_operand" "i,i")))]
        !          1234:   "TARGET_C1"
        !          1235:   "@
        !          1236:    shf #%n2,%0
        !          1237:    ld.u #0,%0\;shf #%n2,%0"
        !          1238:   [(set_attr "type" "shfw,shfl")])
        !          1239: 
        !          1240: (define_insn ""
        !          1241:   [(set
        !          1242:     (match_operand:SI 0 "register_operand" "=d,a")
        !          1243:     (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0")
        !          1244:                 (match_operand:SI 2 "immediate_operand" "i,i")))]
        !          1245:   ""
        !          1246:   "@
        !          1247:    shf.w #%n2,%0
        !          1248:    shf #%n2,%0"
        !          1249:   [(set_attr "type" "shfw,shfw")])
        !          1250: 
        !          1251: ;; Arithmetic right, general
        !          1252: ;; Sign-extend to 64 bits, then shift that.  Works for 0..32.
        !          1253: 
        !          1254: (define_expand "ashrsi3"
        !          1255:   [(set (match_operand:SI 0 "register_operand" "")
        !          1256:        (ashiftrt:SI (match_operand:SI 1 "register_operand" "")
        !          1257:                     (neg:SI (match_operand:SI 2 "nonmemory_operand" ""))))]
        !          1258:   ""
        !          1259:   "operands[2] = negate_rtx (SImode, operands[2]);")
        !          1260: 
        !          1261: (define_insn ""
        !          1262:   [(set (match_operand:SI 0 "register_operand" "=d,&d")
        !          1263:        (ashiftrt:SI (match_operand:SI 1 "register_operand" "0,d")
        !          1264:                     (neg:SI
        !          1265:                      (match_operand:SI 2 "nonmemory_operand" "di,di"))))]
        !          1266:   ""
        !          1267:   "cvtw.l %1,%0\;shf %2,%0"
        !          1268:   [(set_attr "type" "shfl,shfl")])
        !          1269: 
        !          1270: (define_insn ""
        !          1271:   [(set (match_operand:SI 0 "register_operand" "=d")
        !          1272:        (ashiftrt:SI (match_operand:SI 1 "register_operand" "d")
        !          1273:                     (match_operand:SI 2 "immediate_operand" "i")))]
        !          1274:   ""
        !          1275:   "cvtw.l %1,%0\;shf #%n2,%0"
        !          1276:   [(set_attr "type" "shfl")])
        !          1277: 
        !          1278: ;; DImode
        !          1279: ;; Logical left, 1-cycle
        !          1280: 
        !          1281: (define_insn ""
        !          1282:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1283:        (lshift:DI (match_operand:DI 1 "register_operand" "0")
        !          1284:                   (const_int 1)))]
        !          1285:   ""
        !          1286:   "add.l %0,%0")
        !          1287: 
        !          1288: ;; Logical left, general
        !          1289: 
        !          1290: (define_insn "lshldi3"
        !          1291:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1292:        (lshift:DI (match_operand:DI 1 "register_operand" "0")
        !          1293:                   (match_operand:SI 2 "nonmemory_operand" "di")))]
        !          1294:   ""
        !          1295:   "shf %2,%0"
        !          1296:   [(set_attr "type" "shfl")])
        !          1297: 
        !          1298: ;; Arithmetic left, 1-cycle
        !          1299: 
        !          1300: (define_insn ""
        !          1301:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1302:        (ashift:DI (match_operand:DI 1 "register_operand" "0")
        !          1303:                   (const_int 1)))]
        !          1304:   ""
        !          1305:   "add.l %0,%0")
        !          1306: 
        !          1307: ;; Arithmetic left, general
        !          1308: 
        !          1309: (define_insn "ashldi3"
        !          1310:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1311:        (ashift:DI (match_operand:DI 1 "register_operand" "0")
        !          1312:                   (match_operand:SI 2 "nonmemory_operand" "di")))]
        !          1313:   ""
        !          1314:   "shf %2,%0"
        !          1315:   [(set_attr "type" "shfl")])
        !          1316: 
        !          1317: ;; Can omit zero- or sign-extend if shift is 32 or more.
        !          1318: 
        !          1319: (define_insn ""
        !          1320:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1321:        (ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "0"))
        !          1322:                   (match_operand:SI 2 "const_int_operand" "i")))]
        !          1323:   "INTVAL (operands[2]) >= 32"
        !          1324:   "shf %2,%0"
        !          1325:   [(set_attr "type" "shfl")])
        !          1326: 
        !          1327: (define_insn ""
        !          1328:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1329:        (ashift:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "0"))
        !          1330:                   (match_operand:SI 2 "const_int_operand" "i")))]
        !          1331:   "INTVAL (operands[2]) >= 32"
        !          1332:   "shf %2,%0"
        !          1333:   [(set_attr "type" "shfl")])
        !          1334: 
        !          1335: ;; Logical right, general
        !          1336: 
        !          1337: (define_expand "lshrdi3"
        !          1338:   [(set (match_operand:DI 0 "register_operand" "")
        !          1339:        (lshiftrt:DI (match_operand:DI 1 "register_operand" "")
        !          1340:                     (neg:SI (match_operand:SI 2 "nonmemory_operand" ""))))]
        !          1341:   ""
        !          1342:   "operands[2] = negate_rtx (SImode, operands[2]);")
        !          1343: 
        !          1344: (define_insn ""
        !          1345:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1346:        (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
        !          1347:                     (neg:SI (match_operand:SI 2 "nonmemory_operand" "di"))))]
        !          1348:   ""
        !          1349:   "shf %2,%0"
        !          1350:   [(set_attr "type" "shfl")])
        !          1351: 
        !          1352: (define_insn ""
        !          1353:   [(set (match_operand:DI 0 "register_operand" "=d")
        !          1354:        (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
        !          1355:                     (match_operand:SI 2 "immediate_operand" "i")))]
        !          1356:   ""
        !          1357:   "shf #%n2,%0"
        !          1358:   [(set_attr "type" "shfl")])
        !          1359: 
        !          1360: ;; Arithmetic right, general
        !          1361: ;; Use
        !          1362: ;;     ((a >> b) ^ signbit) - signbit
        !          1363: ;; where signbit is (1 << 63) >> b
        !          1364: ;; Works for 0..63.  Does not work for 64; unfortunate but legal.
        !          1365: 
        !          1366: (define_expand "ashrdi3"
        !          1367:   [(set (match_operand:DI 0 "register_operand" "")
        !          1368:        (lshiftrt:DI (match_operand:DI 1 "register_operand" "")
        !          1369:                     (neg:SI (match_operand:SI 2 "nonmemory_operand" ""))))
        !          1370:    (set (match_dup 3) (lshiftrt:DI (match_dup 3) (neg:SI (match_dup 2))))
        !          1371:    (set (match_dup 0) (xor:DI (match_dup 0) (match_dup 3)))
        !          1372:    (set (match_dup 0) (minus:DI (match_dup 0) (match_dup 3)))]
        !          1373:   ""
        !          1374:   "
        !          1375: {
        !          1376:   if (GET_CODE (operands[2]) == CONST_INT)
        !          1377:     switch (INTVAL (operands[2]))
        !          1378:       {
        !          1379:       case 32:
        !          1380:        emit_insn (gen_ashrdi3_32 (operands[0], operands[1]));
        !          1381:        DONE;
        !          1382:       }
        !          1383: 
        !          1384:   operands[2] = negate_rtx (SImode, operands[2]);
        !          1385:   operands[3] = force_reg (DImode, immed_double_const (0, 1 << 31, DImode));
        !          1386: }")
        !          1387: 
        !          1388: ;; Arithmetic right 32, a common case that can save a couple of insns.
        !          1389: 
        !          1390: (define_expand "ashrdi3_32"
        !          1391:   [(set (match_operand:DI 0 "register_operand" "")
        !          1392:        (lshiftrt:DI (match_operand:DI 1 "register_operand" "")
        !          1393:                     (const_int 32)))
        !          1394:    (set (match_dup 0)
        !          1395:        (sign_extend:DI (subreg:SI (match_dup 0) 0)))]
        !          1396:   ""
        !          1397:   "")
        !          1398: 
        !          1399: ;; __builtin instructions
        !          1400: 
        !          1401: (define_insn "sqrtdf2"
        !          1402:   [(set (match_operand:DF 0 "register_operand" "=d")
        !          1403:        (sqrt:DF (match_operand:DF 1 "register_operand" "0")))]
        !          1404:   "! TARGET_C1 && flag_fast_math"
        !          1405:   "sqrt.d %0"
        !          1406:   [(set_attr "type" "divd")])
        !          1407: 
        !          1408: (define_insn "sqrtsf2"
        !          1409:   [(set (match_operand:SF 0 "register_operand" "=d")
        !          1410:        (sqrt:SF (match_operand:SF 1 "register_operand" "0")))]
        !          1411:   "! TARGET_C1 && flag_fast_math"
        !          1412:   "sqrt.s %0"
        !          1413:   [(set_attr "type" "divs")])
        !          1414: 
        !          1415: (define_insn "sindf2"
        !          1416:   [(set (match_operand:DF 0 "register_operand" "=d")
        !          1417:        (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))]
        !          1418:   "! TARGET_C1 && flag_fast_math"
        !          1419:   "sin.d %0")
        !          1420: 
        !          1421: (define_insn "sinsf2"
        !          1422:   [(set (match_operand:SF 0 "register_operand" "=d")
        !          1423:        (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))]
        !          1424:   "! TARGET_C1 && flag_fast_math"
        !          1425:   "sin.s %0")
        !          1426: 
        !          1427: (define_insn "cosdf2"
        !          1428:   [(set (match_operand:DF 0 "register_operand" "=d")
        !          1429:        (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))]
        !          1430:   "! TARGET_C1 && flag_fast_math"
        !          1431:   "cos.d %0")
        !          1432: 
        !          1433: (define_insn "cossf2"
        !          1434:   [(set (match_operand:SF 0 "register_operand" "=d")
        !          1435:        (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))]
        !          1436:   "! TARGET_C1 && flag_fast_math"
        !          1437:   "cos.s %0")
        !          1438: 
        !          1439: (define_insn "ftruncdf2"
        !          1440:   [(set (match_operand:DF 0 "register_operand" "=d")
        !          1441:        (fix:DF (match_operand:DF 1 "register_operand" "d")))]
        !          1442:   "! TARGET_C1"
        !          1443:   "frint.d %1,%0"
        !          1444:   [(set_attr "type" "cvtd")])
        !          1445: 
        !          1446: (define_insn "ftruncsf2"
        !          1447:   [(set (match_operand:SF 0 "register_operand" "=d")
        !          1448:        (fix:SF (match_operand:SF 1 "register_operand" "d")))]
        !          1449:   "! TARGET_C1"
        !          1450:   "frint.s %1,%0"
        !          1451:   [(set_attr "type" "cvts")])
        !          1452: 
        !          1453: (define_insn ""
        !          1454:   [(set (match_operand:SI 0 "register_operand" "=d")
        !          1455:        (minus:SI (ffs:SI (match_operand:SI 1 "register_operand" "d"))
        !          1456:                  (const_int 1)))]
        !          1457:   ""
        !          1458:   "tzc %1,%0\;le.w #32,%0\;jbrs.f L0%=\;ld.w #-1,%0\\nL0%=:")
        !          1459: 
        !          1460: (define_expand "ffssi2"
        !          1461:   [(set (match_operand:SI 0 "register_operand" "=d")
        !          1462:        (minus:SI (ffs:SI (match_operand:SI 1 "register_operand" "d"))
        !          1463:                  (const_int 1)))
        !          1464:    (set (match_dup 0)
        !          1465:        (plus:SI (match_dup 0)
        !          1466:                 (const_int 1)))]
        !          1467:   ""
        !          1468:   "")
        !          1469: 
        !          1470: (define_insn "abssf2"
        !          1471:   [(set (match_operand:SF 0 "register_operand" "=d")
        !          1472:        (abs:SF (match_operand:SF 1 "register_operand" "0")))]
        !          1473:   ""
        !          1474:   "and #0x7fffffff,%0")
        !          1475: 
        !          1476: (define_expand "absdf2"
        !          1477:   [(set (subreg:DI (match_operand:DF 0 "register_operand" "=d") 0)
        !          1478:        (and:DI (subreg:DI (match_operand:DF 1 "register_operand" "d") 0)
        !          1479:                (match_dup 2)))]
        !          1480:   ""
        !          1481:   "operands[2] = force_reg (DImode,
        !          1482:                             immed_double_const (-1, 0x7fffffff, DImode));")
        !          1483: 
        !          1484: ;;- Compares
        !          1485: 
        !          1486: (define_insn "cmpdi"
        !          1487:   [(set (cc0)
        !          1488:        (compare (match_operand:DI 0 "register_operand" "d")
        !          1489:                 (match_operand:DI 1 "register_operand" "d")))]
        !          1490:   ""
        !          1491:   "* return output_cmp (operands[0], operands[1], 'l');")
        !          1492: 
        !          1493: (define_insn ""
        !          1494:   [(set (cc0) (match_operand:DI 0 "register_operand" "d"))
        !          1495:    (clobber (match_scratch:DI 1 "=d"))]
        !          1496:   "next_insn_tests_no_inequality (insn)"
        !          1497:   "* return output_cmp (operands[0], operands[1], 'L');")
        !          1498: 
        !          1499: (define_insn "cmpsi"
        !          1500:   [(set (cc0)
        !          1501:        (compare (match_operand:SI 0 "register_operand" "d,a")
        !          1502:                 (match_operand:SI 1 "nonmemory_operand" "di,ai")))]
        !          1503:   ""
        !          1504:   "* return output_cmp (operands[0], operands[1], 'w');")
        !          1505: 
        !          1506: (define_insn "cmphi"
        !          1507:   [(set (cc0)
        !          1508:        (compare (match_operand:HI 0 "register_operand" "d,a")
        !          1509:                 (match_operand:HI 1 "nonmemory_operand" "di,ai")))]
        !          1510:   ""
        !          1511:   "* return output_cmp (operands[0], operands[1], 'h');")
        !          1512: 
        !          1513: ; cmpqi is intentionally omitted.
        !          1514: ;
        !          1515: ; gcc will sign-extend or zero-extend the operands to the next
        !          1516: ; wider mode, HImode.
        !          1517: ;
        !          1518: ; For reg .cmp. constant, we just go with the halfword immediate
        !          1519: ; instruction.  Perhaps the widening insn can be cse'd or combined away.
        !          1520: ; If not, we're still as good as loading a byte constant into a register
        !          1521: ; to do a reg-reg byte compare.
        !          1522: ;
        !          1523: ; The following patterns pick up cases that can use reg .cmp. reg after all.
        !          1524: 
        !          1525: (define_insn ""
        !          1526:   [(set (cc0)
        !          1527:        (compare
        !          1528:         (sign_extend:HI (match_operand:QI 0 "register_operand" "d"))
        !          1529:         (sign_extend:HI (match_operand:QI 1 "register_operand" "d"))))]
        !          1530:   ""
        !          1531:   "* return output_cmp (operands[0], operands[1], 'b');")
        !          1532: 
        !          1533: (define_insn ""
        !          1534:   [(set (cc0)
        !          1535:        (compare
        !          1536:         (ashift:HI (subreg:HI (match_operand:QI 0 "register_operand" "d") 0)
        !          1537:                    (const_int 8))
        !          1538:         (ashift:HI (subreg:HI (match_operand:QI 1 "register_operand" "d") 0)
        !          1539:                    (const_int 8))))]
        !          1540:   ""
        !          1541:   "* return output_cmp (operands[0], operands[1], 'b');")
        !          1542: 
        !          1543: (define_insn ""
        !          1544:   [(set (cc0)
        !          1545:        (compare (match_operand:QI 0 "register_operand" "d")
        !          1546:                 (match_operand:QI 1 "register_operand" "d")))]
        !          1547:   ""
        !          1548:   "* return output_cmp (operands[0], operands[1], 'b');")
        !          1549: 
        !          1550: (define_insn ""
        !          1551:   [(set (cc0) (match_operand:QI 0 "register_operand" "d,a"))
        !          1552:    (clobber (match_scratch:QI 1 "=d,a"))]
        !          1553:   "next_insn_tests_no_inequality (insn)"
        !          1554:   "* return output_cmp (operands[0], operands[1], 'B');")
        !          1555: 
        !          1556: (define_insn ""
        !          1557:   [(set (cc0) (subreg (match_operand:QI 0 "register_operand" "d,a") 0))
        !          1558:    (clobber (match_scratch:QI 1 "=d,a"))]
        !          1559:   "next_insn_tests_no_inequality (insn)"
        !          1560:   "* return output_cmp (operands[0], operands[1], 'B');")
        !          1561: 
        !          1562: (define_insn ""
        !          1563:   [(set (cc0)
        !          1564:        (zero_extend (subreg (match_operand:QI 0 "register_operand" "d,a") 0)))
        !          1565:    (clobber (match_scratch:QI 1 "=d,a"))]
        !          1566:   "next_insn_tests_no_inequality (insn)"
        !          1567:   "* return output_cmp (operands[0], operands[1], 'B');")
        !          1568: 
        !          1569: (define_insn "cmpdf"
        !          1570:   [(set (cc0)
        !          1571:        (compare (match_operand:DF 0 "register_operand" "d")
        !          1572:                 (match_operand:DF 1 "register_operand" "d")))]
        !          1573:   ""
        !          1574:   "* return output_cmp (operands[0], operands[1], 'd');")
        !          1575: 
        !          1576: (define_insn "cmpsf"
        !          1577:   [(set (cc0)
        !          1578:        (compare (match_operand:SF 0 "register_operand" "d")
        !          1579:                 (match_operand:SF 1 "nonmemory_cmpsf_operand" "dF")))]
        !          1580:   ""
        !          1581:   "* return output_cmp (operands[0], operands[1], 's');")
        !          1582: 
        !          1583: ;; decrement-and-set-cc0 insns.
        !          1584: ;;
        !          1585: ;; The most important case where we can use the carry bit from an
        !          1586: ;; arithmetic insn to eliminate a redundant compare is the decrement in
        !          1587: ;; constructs like while (n--) and while (--n >= 0).  
        !          1588: ;;
        !          1589: ;; We do it with combine patterns instead of NOTICE_UPDATE_CC because
        !          1590: ;; the decrement needs to be kept at the end of the block during scheduling.
        !          1591: ;; 
        !          1592: ;; These patterns must have memory alternatives because reload refuses
        !          1593: ;; to do output reloads for an insn that sets cc0 (since it does not
        !          1594: ;; want to clobber cc0 with its moves).  Convex moves do not clobber
        !          1595: ;; cc0, but there is no evident way to get reload to know that.
        !          1596: 
        !          1597: (define_insn ""
        !          1598:   [(set (cc0)
        !          1599:        (match_operand:SI 0 "register_operand" "+r,*m"))
        !          1600:    (set (match_dup 0)
        !          1601:        (plus:SI (match_dup 0)
        !          1602:                 (const_int -1)))]
        !          1603:   "next_insn_tests_no_inequality (insn)"
        !          1604:   "*
        !          1605: {
        !          1606:   if (which_alternative == 0)
        !          1607:     {
        !          1608:       output_cmp (operands[0], constm1_rtx, 'W');
        !          1609:       return \"add.w #-1,%0\";
        !          1610:     }
        !          1611:   else
        !          1612:     {
        !          1613:       output_cmp (gen_rtx (REG, SImode, 7), constm1_rtx, 'W');
        !          1614:       return \"psh.w s7\;ld.w %0,s7\;add.w #-1,s7\;st.w s7,%0\;pop.w s7\";
        !          1615:     }
        !          1616: }")
        !          1617:      
        !          1618: (define_insn ""
        !          1619:   [(set (cc0)
        !          1620:        (plus:SI (match_operand:SI 0 "register_operand" "+r,*m")
        !          1621:                 (const_int -1)))
        !          1622:    (set (match_dup 0)
        !          1623:        (plus:SI (match_dup 0)
        !          1624:                 (const_int -1)))]
        !          1625:   "find_reg_note (next_cc0_user (insn), REG_NONNEG, 0)"
        !          1626:   "*
        !          1627: {
        !          1628:   if (which_alternative == 0)
        !          1629:     {
        !          1630:       output_cmp (operands[0], const0_rtx, 'W');
        !          1631:       return \"add.w #-1,%0\";
        !          1632:     }
        !          1633:   else
        !          1634:     {
        !          1635:       output_cmp (gen_rtx (REG, SImode, 7), const0_rtx, 'W');
        !          1636:       return \"psh.w s7\;ld.w %0,s7\;add.w #-1,s7\;st.w s7,%0\;pop.w s7\";
        !          1637:     }
        !          1638: }")
        !          1639: 
        !          1640: (define_insn ""
        !          1641:   [(set (cc0)
        !          1642:        (match_operand:HI 0 "register_operand" "+r,*m"))
        !          1643:    (set (match_dup 0)
        !          1644:        (plus:HI (match_dup 0)
        !          1645:                 (const_int -1)))]
        !          1646:   "next_insn_tests_no_inequality (insn)"
        !          1647:   "*
        !          1648: {
        !          1649:   if (which_alternative == 0)
        !          1650:     {
        !          1651:       output_cmp (operands[0], constm1_rtx, 'W');
        !          1652:       return \"add.w #-1,%0\";
        !          1653:     }
        !          1654:   else
        !          1655:     {
        !          1656:       output_cmp (gen_rtx (REG, HImode, 7), constm1_rtx, 'W');
        !          1657:       return \"psh.w s7\;ld.h %0,s7\;add.h #-1,s7\;st.h s7,%0\;pop.w s7\";
        !          1658:     }
        !          1659: }")
        !          1660:      
        !          1661: (define_insn ""
        !          1662:   [(set (cc0)
        !          1663:        (plus:HI (match_operand:HI 0 "register_operand" "+r,*m")
        !          1664:                 (const_int -1)))
        !          1665:    (set (match_dup 0)
        !          1666:        (plus:HI (match_dup 0)
        !          1667:                 (const_int -1)))]
        !          1668:   "find_reg_note (next_cc0_user (insn), REG_NONNEG, 0)"
        !          1669:   "*
        !          1670: {
        !          1671:   if (which_alternative == 0)
        !          1672:     {
        !          1673:       output_cmp (operands[0], const0_rtx, 'W');
        !          1674:       return \"add.w #-1,%0\";
        !          1675:     }
        !          1676:   else
        !          1677:     {
        !          1678:       output_cmp (gen_rtx (REG, HImode, 7), const0_rtx, 'W');
        !          1679:       return \"psh.w s7\;ld.h %0,s7\;add.h #-1,s7\;st.h s7,%0\;pop.w s7\";
        !          1680:     }
        !          1681: }")
        !          1682: 
        !          1683: ;;- Jumps
        !          1684: 
        !          1685: (define_insn "jump"
        !          1686:   [(set (pc)
        !          1687:        (label_ref (match_operand 0 "" "")))]
        !          1688:   ""
        !          1689:   "jbr %l0")
        !          1690: 
        !          1691: (define_insn "beq"
        !          1692:   [(set (pc)
        !          1693:        (if_then_else (eq (cc0)
        !          1694:                          (const_int 0))
        !          1695:                      (label_ref (match_operand 0 "" ""))
        !          1696:                      (pc)))]
        !          1697:   ""
        !          1698:   "* return output_condjump (operands[0], \"eq\", 't'); ")
        !          1699: 
        !          1700: (define_insn "bne"
        !          1701:   [(set (pc)
        !          1702:        (if_then_else (ne (cc0)
        !          1703:                          (const_int 0))
        !          1704:                      (label_ref (match_operand 0 "" ""))
        !          1705:                      (pc)))]
        !          1706:   ""
        !          1707:   "* return output_condjump (operands[0], \"eq\", 'f'); ")
        !          1708: 
        !          1709: (define_insn "bgt"
        !          1710:   [(set (pc)
        !          1711:        (if_then_else (gt (cc0)
        !          1712:                          (const_int 0))
        !          1713:                      (label_ref (match_operand 0 "" ""))
        !          1714:                      (pc)))]
        !          1715:   ""
        !          1716:   "* return output_condjump (operands[0], \"le\", 'f'); ")
        !          1717: 
        !          1718: (define_insn "bgtu"
        !          1719:   [(set (pc)
        !          1720:        (if_then_else (gtu (cc0)
        !          1721:                           (const_int 0))
        !          1722:                      (label_ref (match_operand 0 "" ""))
        !          1723:                      (pc)))]
        !          1724:   ""
        !          1725:   "* return output_condjump (operands[0], \"leu\", 'f'); ")
        !          1726: 
        !          1727: (define_insn "blt"
        !          1728:   [(set (pc)
        !          1729:        (if_then_else (lt (cc0)
        !          1730:                          (const_int 0))
        !          1731:                      (label_ref (match_operand 0 "" ""))
        !          1732:                      (pc)))]
        !          1733:   ""
        !          1734:   "* return output_condjump (operands[0], \"lt\", 't'); ")
        !          1735: 
        !          1736: (define_insn "bltu"
        !          1737:   [(set (pc)
        !          1738:        (if_then_else (ltu (cc0)
        !          1739:                           (const_int 0))
        !          1740:                      (label_ref (match_operand 0 "" ""))
        !          1741:                      (pc)))]
        !          1742:   ""
        !          1743:   "* return output_condjump (operands[0], \"ltu\", 't'); ")
        !          1744: 
        !          1745: (define_insn "bge"
        !          1746:   [(set (pc)
        !          1747:        (if_then_else (ge (cc0)
        !          1748:                          (const_int 0))
        !          1749:                      (label_ref (match_operand 0 "" ""))
        !          1750:                      (pc)))]
        !          1751:   ""
        !          1752:   "* return output_condjump (operands[0], \"lt\", 'f'); ")
        !          1753: 
        !          1754: (define_insn "bgeu"
        !          1755:   [(set (pc)
        !          1756:        (if_then_else (geu (cc0)
        !          1757:                           (const_int 0))
        !          1758:                      (label_ref (match_operand 0 "" ""))
        !          1759:                      (pc)))]
        !          1760:   ""
        !          1761:   "* return output_condjump (operands[0], \"ltu\", 'f'); ")
        !          1762: 
        !          1763: (define_insn "ble"
        !          1764:   [(set (pc)
        !          1765:        (if_then_else (le (cc0)
        !          1766:                          (const_int 0))
        !          1767:                      (label_ref (match_operand 0 "" ""))
        !          1768:                      (pc)))]
        !          1769:   ""
        !          1770:   "* return output_condjump (operands[0], \"le\", 't'); ")
        !          1771: 
        !          1772: (define_insn "bleu"
        !          1773:   [(set (pc)
        !          1774:        (if_then_else (leu (cc0)
        !          1775:                           (const_int 0))
        !          1776:                      (label_ref (match_operand 0 "" ""))
        !          1777:                      (pc)))]
        !          1778:   ""
        !          1779:   "* return output_condjump (operands[0], \"leu\", 't'); ")
        !          1780: 
        !          1781: (define_insn ""
        !          1782:   [(set (pc)
        !          1783:        (if_then_else (eq (cc0)
        !          1784:                          (const_int 0))
        !          1785:                      (pc)
        !          1786:                      (label_ref (match_operand 0 "" ""))))]
        !          1787:   ""
        !          1788:   "* return output_condjump (operands[0], \"eq\", 'f'); ")
        !          1789: 
        !          1790: (define_insn ""
        !          1791:   [(set (pc)
        !          1792:        (if_then_else (ne (cc0)
        !          1793:                          (const_int 0))
        !          1794:                      (pc)
        !          1795:                      (label_ref (match_operand 0 "" ""))))]
        !          1796:   ""
        !          1797:   "* return output_condjump (operands[0], \"eq\", 't'); ")
        !          1798: 
        !          1799: (define_insn ""
        !          1800:   [(set (pc)
        !          1801:        (if_then_else (gt (cc0)
        !          1802:                          (const_int 0))
        !          1803:                      (pc)
        !          1804:                      (label_ref (match_operand 0 "" ""))))]
        !          1805:   ""
        !          1806:   "* return output_condjump (operands[0], \"le\", 't'); ")
        !          1807: 
        !          1808: (define_insn ""
        !          1809:   [(set (pc)
        !          1810:        (if_then_else (gtu (cc0)
        !          1811:                           (const_int 0))
        !          1812:                      (pc)
        !          1813:                      (label_ref (match_operand 0 "" ""))))]
        !          1814:   ""
        !          1815:   "* return output_condjump (operands[0], \"leu\", 't'); ")
        !          1816: 
        !          1817: (define_insn ""
        !          1818:   [(set (pc)
        !          1819:        (if_then_else (lt (cc0)
        !          1820:                          (const_int 0))
        !          1821:                      (pc)
        !          1822:                      (label_ref (match_operand 0 "" ""))))]
        !          1823:   ""
        !          1824:   "* return output_condjump (operands[0], \"lt\", 'f'); ")
        !          1825: 
        !          1826: (define_insn ""
        !          1827:   [(set (pc)
        !          1828:        (if_then_else (ltu (cc0)
        !          1829:                           (const_int 0))
        !          1830:                      (pc)
        !          1831:                      (label_ref (match_operand 0 "" ""))))]
        !          1832:   ""
        !          1833:   "* return output_condjump (operands[0], \"ltu\", 'f'); ")
        !          1834: 
        !          1835: (define_insn ""
        !          1836:   [(set (pc)
        !          1837:        (if_then_else (ge (cc0)
        !          1838:                          (const_int 0))
        !          1839:                      (pc)
        !          1840:                      (label_ref (match_operand 0 "" ""))))]
        !          1841:   ""
        !          1842:   "* return output_condjump (operands[0], \"lt\", 't'); ")
        !          1843: 
        !          1844: (define_insn ""
        !          1845:   [(set (pc)
        !          1846:        (if_then_else (geu (cc0)
        !          1847:                           (const_int 0))
        !          1848:                      (pc)
        !          1849:                      (label_ref (match_operand 0 "" ""))))]
        !          1850:   ""
        !          1851:   "* return output_condjump (operands[0], \"ltu\", 't'); ")
        !          1852: 
        !          1853: (define_insn ""
        !          1854:   [(set (pc)
        !          1855:        (if_then_else (le (cc0)
        !          1856:                          (const_int 0))
        !          1857:                      (pc)
        !          1858:                      (label_ref (match_operand 0 "" ""))))]
        !          1859:   ""
        !          1860:   "* return output_condjump (operands[0], \"le\", 'f'); ")
        !          1861: 
        !          1862: (define_insn ""
        !          1863:   [(set (pc)
        !          1864:        (if_then_else (leu (cc0)
        !          1865:                           (const_int 0))
        !          1866:                      (pc)
        !          1867:                      (label_ref (match_operand 0 "" ""))))]
        !          1868:   ""
        !          1869:   "* return output_condjump (operands[0], \"leu\", 'f'); ")
        !          1870: 
        !          1871: ;;- Calls
        !          1872: 
        !          1873: (define_expand "call_pop"
        !          1874:   [(parallel [(call (match_operand:QI 0 "memory_operand" "m")
        !          1875:                    (match_operand:SI 1 "const_int_operand" "i"))
        !          1876:              (match_operand:SI 2 "const_int_operand" "i")
        !          1877:              (match_operand:SI 3 "const_int_operand" "i")
        !          1878:              (reg:SI 8)])]
        !          1879:   ""
        !          1880:   "")
        !          1881: 
        !          1882: (define_insn ""
        !          1883:   [(call (match_operand:QI 0 "memory_operand" "m")
        !          1884:         (match_operand:SI 1 "const_int_operand" "i"))
        !          1885:    (match_operand:SI 2 "const_int_operand" "i")
        !          1886:    (match_operand:SI 3 "const_int_operand" "i")
        !          1887:    (match_operand:SI 4 "" "")]
        !          1888:   ""
        !          1889:   "* return output_call (insn, &operands[0]);")
        !          1890: 
        !          1891: (define_expand "call_value_pop"
        !          1892:   [(parallel [(set (match_operand 0 "" "=g")
        !          1893:                   (call (match_operand:QI 1 "memory_operand" "m")
        !          1894:                         (match_operand:SI 2 "const_int_operand" "i")))
        !          1895:              (match_operand:SI 3 "const_int_operand" "i")
        !          1896:              (match_operand:SI 4 "const_int_operand" "i")
        !          1897:              (reg:SI 8)])]
        !          1898:   ""
        !          1899:   "")
        !          1900: 
        !          1901: (define_insn ""
        !          1902:   [(set (match_operand 0 "" "=g")
        !          1903:        (call (match_operand:QI 1 "memory_operand" "m")
        !          1904:              (match_operand:SI 2 "const_int_operand" "i")))
        !          1905:    (match_operand:SI 3 "const_int_operand" "i")
        !          1906:    (match_operand:SI 4 "const_int_operand" "i")
        !          1907:    (match_operand:SI 5 "" "")]
        !          1908:   ""
        !          1909:   "* return output_call (insn, &operands[1]); ")
        !          1910: 
        !          1911: ;; Call subroutine returning any type.
        !          1912: 
        !          1913: (define_expand "untyped_call"
        !          1914:   [(parallel [(call (match_operand 0 "" "")
        !          1915:                   (const_int 0))
        !          1916:             (match_operand 1 "" "")
        !          1917:             (match_operand 2 "" "")])]
        !          1918:   ""
        !          1919:   "
        !          1920: {
        !          1921:   int i;
        !          1922: 
        !          1923:   emit_call_insn (gen_call_pop (operands[0], const0_rtx,
        !          1924:                                const0_rtx, const0_rtx));
        !          1925: 
        !          1926:   for (i = 0; i < XVECLEN (operands[2], 0); i++)
        !          1927:     {
        !          1928:       rtx set = XVECEXP (operands[2], 0, i);
        !          1929:       emit_move_insn (SET_DEST (set), SET_SRC (set));
        !          1930:     }
        !          1931: 
        !          1932:   /* The optimizer does not know that the call sets the function value
        !          1933:      registers we stored in the result block.  We avoid problems by
        !          1934:      claiming that all hard registers are used and clobbered at this
        !          1935:      point.  */
        !          1936:   emit_insn (gen_blockage ());
        !          1937: 
        !          1938:   DONE;
        !          1939: }")
        !          1940: 
        !          1941: ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
        !          1942: ;; all of memory.  This blocks insns from being moved across this point.
        !          1943: 
        !          1944: (define_insn "blockage"
        !          1945:   [(unspec_volatile [(const_int 0)] 0)]
        !          1946:   ""
        !          1947:   "")
        !          1948: 
        !          1949: (define_expand "return"
        !          1950:   [(return)]
        !          1951:   ""
        !          1952:   " replace_arg_pushes (); ")
        !          1953: 
        !          1954: (define_insn ""
        !          1955:   [(return)]
        !          1956:   ""
        !          1957:   "rtn")
        !          1958: 
        !          1959: (define_expand "prologue"
        !          1960:   [(const_int 0)]
        !          1961:   ""
        !          1962:   "
        !          1963: {
        !          1964:   emit_ap_optimizations ();
        !          1965:   DONE; 
        !          1966: }")
        !          1967: 
        !          1968: (define_insn "tablejump"
        !          1969:   [(set (pc) (match_operand:SI 0 "address_operand" "p"))
        !          1970:    (use (label_ref (match_operand 1 "" "")))]
        !          1971:   ""
        !          1972:   "jmp %a0")
        !          1973: 
        !          1974: (define_insn "indirect_jump"
        !          1975:   [(set (pc) (match_operand:SI 0 "address_operand" "p"))]
        !          1976:   ""
        !          1977:   "jmp %a0")

unix.superglobalmegacorp.com

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