]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/mips/3000.md
cirrus.md (cirrus_arm_movdi, [...]): Set pool ranges for coprocessor loads.
[thirdparty/gcc.git] / gcc / config / mips / 3000.md
CommitLineData
2ac23d05
EC
1;; DFA based pipeline description for the r3000
2;; This is a special pipeline - this is also the default schedule and
3;; so we need to schedule instructions that may not exist on the r2k/r3k.
4
5;; Generic processor description that assumes that the only latencies are for
6;; hazards or delay slots, otherwise everything is assumed to issue and execute
7;; in one cycle.
8(define_automaton "r3k")
9
10(define_cpu_unit "r3k_alu" "r3k")
11
12(define_insn_reservation "r3k_generic_alu" 1
13 (and (eq_attr "cpu" "r3000")
14 (eq_attr "type" "unknown,prefetch,prefetchx,condmove,mthilo,const,arith,shift,slt,clz,trap,fmove,fadd,fmadd,fabs,fneg,fcvt,fsqrt,frsqrt,multi,nop"))
15 "r3k_alu")
16
17(define_insn_reservation "r3k_load_alu" 2
18 (and (eq_attr "cpu" "r3000")
19 (eq_attr "type" "load, fpload, fpidxload, xfer"))
20 "r3k_alu*2")
21
22(define_insn_reservation "r3k_call_alu" 2
23 (and (eq_attr "cpu" "r3000")
24 (eq_attr "type" "branch,jump,call"))
25 "r3k_alu*2")
26
27(define_insn_reservation "r3k_hilo_alu" 3
28 (and (eq_attr "cpu" "r3000")
29 (eq_attr "type" "mfhilo"))
30 "r3k_alu*3")
31
32(define_insn_reservation "r3k_fcmp_alu" 2
33 (and (eq_attr "cpu" "r3000")
34 (eq_attr "type" "fcmp, fadd"))
35 "r3k_alu*2")
36
37(define_insn_reservation "r3k_imul_alu" 12
38 (and (eq_attr "cpu" "r3000")
39 (eq_attr "type" "imul, imadd"))
40 "r3k_alu*12")
41
42(define_insn_reservation "r3k_idiv_alu" 35
43 (and (eq_attr "cpu" "r3000")
44 (eq_attr "type" "idiv"))
45 "r3k_alu*35")
46
47(define_insn_reservation "r3k_fmul_single_alu" 4
48 (and (eq_attr "cpu" "r3000")
49 (and (eq_attr "type" "fmul")
50 (eq_attr "mode" "SF")))
51 "r3k_alu*4")
52
53(define_insn_reservation "r3k_fmul_double_alu" 5
54 (and (eq_attr "cpu" "r3000")
55 (and (eq_attr "type" "fmul")
56 (eq_attr "mode" "DF")))
57 "r3k_alu*5")
58
59(define_insn_reservation "r3k_fdiv_single_alu" 12
60 (and (eq_attr "cpu" "r3000")
61 (and (eq_attr "type" "fdiv")
62 (eq_attr "mode" "SF")))
63 "r3k_alu*12")
64
65(define_insn_reservation "r3k_fdiv_double_alu" 19
66 (and (eq_attr "cpu" "r3000")
67 (and (eq_attr "type" "fdiv")
68 (eq_attr "mode" "DF")))
69 "r3k_alu*19")