Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/rs6000/rs64.md @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 77e2b8dfacca |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ;; Scheduling description for IBM RS64 processors. | 1 ;; Scheduling description for IBM RS64 processors. |
2 ;; Copyright (C) 2003, 2004, 2007, 2009 Free Software Foundation, Inc. | 2 ;; Copyright (C) 2003-2017 Free Software Foundation, Inc. |
3 ;; | 3 ;; |
4 ;; This file is part of GCC. | 4 ;; This file is part of GCC. |
5 | 5 |
6 ;; GCC is free software; you can redistribute it and/or modify it | 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 | 7 ;; under the terms of the GNU General Public License as published |
24 (define_cpu_unit "lsu_rs64,bpu_rs64" "rs64") | 24 (define_cpu_unit "lsu_rs64,bpu_rs64" "rs64") |
25 | 25 |
26 ;; RS64a 64-bit IU, LSU, FPU, BPU | 26 ;; RS64a 64-bit IU, LSU, FPU, BPU |
27 | 27 |
28 (define_insn_reservation "rs64a-load" 2 | 28 (define_insn_reservation "rs64a-load" 2 |
29 (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u") | 29 (and (eq_attr "type" "load") |
30 (eq_attr "cpu" "rs64a")) | 30 (eq_attr "cpu" "rs64a")) |
31 "lsu_rs64") | 31 "lsu_rs64") |
32 | 32 |
33 (define_insn_reservation "rs64a-store" 2 | 33 (define_insn_reservation "rs64a-store" 2 |
34 (and (eq_attr "type" "store,store_ux,store_u,fpstore,fpstore_ux,fpstore_u") | 34 (and (eq_attr "type" "store,fpstore") |
35 (eq_attr "cpu" "rs64a")) | 35 (eq_attr "cpu" "rs64a")) |
36 "lsu_rs64") | 36 "lsu_rs64") |
37 | 37 |
38 (define_insn_reservation "rs64a-fpload" 3 | 38 (define_insn_reservation "rs64a-fpload" 3 |
39 (and (eq_attr "type" "fpload,fpload_ux,fpload_u") | 39 (and (eq_attr "type" "fpload") |
40 (eq_attr "cpu" "rs64a")) | 40 (eq_attr "cpu" "rs64a")) |
41 "lsu_rs64") | 41 "lsu_rs64") |
42 | 42 |
43 (define_insn_reservation "rs64a-llsc" 2 | 43 (define_insn_reservation "rs64a-llsc" 2 |
44 (and (eq_attr "type" "load_l,store_c") | 44 (and (eq_attr "type" "load_l,store_c") |
45 (eq_attr "cpu" "rs64a")) | 45 (eq_attr "cpu" "rs64a")) |
46 "lsu_rs64") | 46 "lsu_rs64") |
47 | 47 |
48 (define_insn_reservation "rs64a-integer" 1 | 48 (define_insn_reservation "rs64a-integer" 1 |
49 (and (eq_attr "type" "integer,insert_word,insert_dword,shift,trap,\ | 49 (and (ior (eq_attr "type" "integer,insert,trap,cntlz,isel") |
50 var_shift_rotate,cntlz,exts,isel") | 50 (and (eq_attr "type" "add,logical,shift,exts") |
51 (eq_attr "dot" "no"))) | |
51 (eq_attr "cpu" "rs64a")) | 52 (eq_attr "cpu" "rs64a")) |
52 "iu_rs64") | 53 "iu_rs64") |
53 | 54 |
54 (define_insn_reservation "rs64a-two" 1 | 55 (define_insn_reservation "rs64a-two" 1 |
55 (and (eq_attr "type" "two") | 56 (and (eq_attr "type" "two") |
60 (and (eq_attr "type" "three") | 61 (and (eq_attr "type" "three") |
61 (eq_attr "cpu" "rs64a")) | 62 (eq_attr "cpu" "rs64a")) |
62 "iu_rs64,iu_rs64,iu_rs64") | 63 "iu_rs64,iu_rs64,iu_rs64") |
63 | 64 |
64 (define_insn_reservation "rs64a-imul" 20 | 65 (define_insn_reservation "rs64a-imul" 20 |
65 (and (eq_attr "type" "imul,imul_compare") | 66 (and (eq_attr "type" "mul") |
67 (eq_attr "size" "32") | |
66 (eq_attr "cpu" "rs64a")) | 68 (eq_attr "cpu" "rs64a")) |
67 "mciu_rs64*13") | 69 "mciu_rs64*13") |
68 | 70 |
69 (define_insn_reservation "rs64a-imul2" 12 | 71 (define_insn_reservation "rs64a-imul2" 12 |
70 (and (eq_attr "type" "imul2") | 72 (and (eq_attr "type" "mul") |
73 (eq_attr "size" "16") | |
71 (eq_attr "cpu" "rs64a")) | 74 (eq_attr "cpu" "rs64a")) |
72 "mciu_rs64*5") | 75 "mciu_rs64*5") |
73 | 76 |
74 (define_insn_reservation "rs64a-imul3" 8 | 77 (define_insn_reservation "rs64a-imul3" 8 |
75 (and (eq_attr "type" "imul3") | 78 (and (eq_attr "type" "mul") |
79 (eq_attr "size" "8") | |
76 (eq_attr "cpu" "rs64a")) | 80 (eq_attr "cpu" "rs64a")) |
77 "mciu_rs64*2") | 81 "mciu_rs64*2") |
78 | 82 |
79 (define_insn_reservation "rs64a-lmul" 34 | 83 (define_insn_reservation "rs64a-lmul" 34 |
80 (and (eq_attr "type" "lmul,lmul_compare") | 84 (and (eq_attr "type" "mul") |
85 (eq_attr "size" "64") | |
81 (eq_attr "cpu" "rs64a")) | 86 (eq_attr "cpu" "rs64a")) |
82 "mciu_rs64*34") | 87 "mciu_rs64*34") |
83 | 88 |
84 (define_insn_reservation "rs64a-idiv" 66 | 89 (define_insn_reservation "rs64a-idiv" 66 |
85 (and (eq_attr "type" "idiv") | 90 (and (eq_attr "type" "div") |
91 (eq_attr "size" "32") | |
86 (eq_attr "cpu" "rs64a")) | 92 (eq_attr "cpu" "rs64a")) |
87 "mciu_rs64*66") | 93 "mciu_rs64*66") |
88 | 94 |
89 (define_insn_reservation "rs64a-ldiv" 66 | 95 (define_insn_reservation "rs64a-ldiv" 66 |
90 (and (eq_attr "type" "ldiv") | 96 (and (eq_attr "type" "div") |
97 (eq_attr "size" "64") | |
91 (eq_attr "cpu" "rs64a")) | 98 (eq_attr "cpu" "rs64a")) |
92 "mciu_rs64*66") | 99 "mciu_rs64*66") |
93 | 100 |
94 (define_insn_reservation "rs64a-compare" 3 | 101 (define_insn_reservation "rs64a-compare" 3 |
95 (and (eq_attr "type" "cmp,fast_compare,compare,\ | 102 (and (ior (eq_attr "type" "cmp") |
96 delayed_compare,var_delayed_compare") | 103 (and (eq_attr "type" "add,logical,shift,exts") |
104 (eq_attr "dot" "yes"))) | |
97 (eq_attr "cpu" "rs64a")) | 105 (eq_attr "cpu" "rs64a")) |
98 "iu_rs64,nothing,bpu_rs64") | 106 "iu_rs64,nothing,bpu_rs64") |
99 | 107 |
100 (define_insn_reservation "rs64a-fpcompare" 5 | 108 (define_insn_reservation "rs64a-fpcompare" 5 |
101 (and (eq_attr "type" "fpcompare") | 109 (and (eq_attr "type" "fpcompare") |
102 (eq_attr "cpu" "rs64a")) | 110 (eq_attr "cpu" "rs64a")) |
103 "mciu_rs64,fpu_rs64,bpu_rs64") | 111 "mciu_rs64,fpu_rs64,bpu_rs64") |
104 | 112 |
105 (define_insn_reservation "rs64a-fp" 4 | 113 (define_insn_reservation "rs64a-fp" 4 |
106 (and (eq_attr "type" "fp,dmul") | 114 (and (eq_attr "type" "fp,fpsimple,dmul") |
107 (eq_attr "cpu" "rs64a")) | 115 (eq_attr "cpu" "rs64a")) |
108 "mciu_rs64,fpu_rs64") | 116 "mciu_rs64,fpu_rs64") |
109 | 117 |
110 (define_insn_reservation "rs64a-sdiv" 31 | 118 (define_insn_reservation "rs64a-sdiv" 31 |
111 (and (eq_attr "type" "sdiv,ddiv") | 119 (and (eq_attr "type" "sdiv,ddiv") |