]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/mips/generic.md
mips.md (type): Add logical, signext and move.
[thirdparty/gcc.git] / 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,logical,signext,move")
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" "mfc,mtc")
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")