]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/gcc/config/mips/generic.md
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / gcc / config / mips / generic.md
1 ;; Generic DFA-based pipeline description for MIPS targets
2 ;;   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
3 ;;
4 ;; This file is part of GCC.
5
6 ;; GCC is free software; you can redistribute it and/or modify it
7 ;; under the terms of the GNU General Public License as published
8 ;; by the Free Software Foundation; either version 2, or (at your
9 ;; option) any later version.
10
11 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
12 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
14 ;; License for more details.
15
16 ;; You should have received a copy of the GNU General Public License
17 ;; along with GCC; see the file COPYING.  If not, write to the
18 ;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
19 ;; MA 02110-1301, USA.
20
21
22 ;; This file is derived from the old define_function_unit description.
23 ;; Each reservation can be overridden on a processor-by-processor basis.
24
25 (define_insn_reservation "generic_alu" 1
26   (eq_attr "type" "unknown,prefetch,prefetchx,condmove,const,arith,
27                    shift,slt,clz,trap,multi,nop")
28   "alu")
29
30 (define_insn_reservation "generic_load" 3
31   (eq_attr "type" "load,fpload,fpidxload")
32   "alu")
33
34 (define_insn_reservation "generic_store" 1
35   (eq_attr "type" "store,fpstore,fpidxstore")
36   "alu")
37
38 (define_insn_reservation "generic_xfer" 2
39   (eq_attr "type" "xfer")
40   "alu")
41
42 (define_insn_reservation "generic_branch" 1
43   (eq_attr "type" "branch,jump,call")
44   "alu")
45
46 (define_insn_reservation "generic_hilo" 1
47   (eq_attr "type" "mfhilo,mthilo")
48   "imuldiv*3")
49
50 (define_insn_reservation "generic_imul" 17
51   (eq_attr "type" "imul,imul3,imadd")
52   "imuldiv*17")
53
54 (define_insn_reservation "generic_idiv" 38
55   (eq_attr "type" "idiv")
56   "imuldiv*38")
57
58 (define_insn_reservation "generic_fcvt" 1
59   (eq_attr "type" "fcvt")
60   "alu")
61
62 (define_insn_reservation "generic_fmove" 2
63   (eq_attr "type" "fabs,fneg,fmove")
64   "alu")
65
66 (define_insn_reservation "generic_fcmp" 3
67   (eq_attr "type" "fcmp")
68   "alu")
69
70 (define_insn_reservation "generic_fadd" 4
71   (eq_attr "type" "fadd")
72   "alu")
73
74 (define_insn_reservation "generic_fmul_single" 7
75   (and (eq_attr "type" "fmul,fmadd")
76        (eq_attr "mode" "SF"))
77   "alu")
78
79 (define_insn_reservation "generic_fmul_double" 8
80   (and (eq_attr "type" "fmul,fmadd")
81        (eq_attr "mode" "DF"))
82   "alu")
83
84 (define_insn_reservation "generic_fdiv_single" 23
85   (and (eq_attr "type" "fdiv,frdiv")
86        (eq_attr "mode" "SF"))
87   "alu")
88
89 (define_insn_reservation "generic_fdiv_double" 36
90   (and (eq_attr "type" "fdiv,frdiv")
91        (eq_attr "mode" "DF"))
92   "alu")
93
94 (define_insn_reservation "generic_fsqrt_single" 54
95   (and (eq_attr "type" "fsqrt,frsqrt")
96        (eq_attr "mode" "SF"))
97   "alu")
98
99 (define_insn_reservation "generic_fsqrt_double" 112
100   (and (eq_attr "type" "fsqrt,frsqrt")
101        (eq_attr "mode" "DF"))
102   "alu")
103
104 (define_insn_reservation "generic_frecip_fsqrt_step" 5
105   (eq_attr "type" "frdiv1,frdiv2,frsqrt1,frsqrt2")
106   "alu")