Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/fa606te.md @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 561a7518be6b |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ;; Faraday FA606TE Pipeline Description | 1 ;; Faraday FA606TE Pipeline Description |
2 ;; Copyright (C) 2010 Free Software Foundation, Inc. | 2 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. |
3 ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description. | 3 ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description. |
4 ;; | 4 ;; |
5 ;; This file is part of GCC. | 5 ;; This file is part of GCC. |
6 ;; | 6 ;; |
7 ;; GCC is free software; you can redistribute it and/or modify it under | 7 ;; GCC is free software; you can redistribute it and/or modify it under |
52 ;; ALU Instructions | 52 ;; ALU Instructions |
53 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 53 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
54 | 54 |
55 ;; ALU instructions require two cycles to execute, and use the ALU | 55 ;; ALU instructions require two cycles to execute, and use the ALU |
56 ;; pipeline in each of the three stages. The results are available | 56 ;; pipeline in each of the three stages. The results are available |
57 ;; after the execute stage stage has finished. | 57 ;; after the execute stage has finished. |
58 ;; | 58 ;; |
59 ;; If the destination register is the PC, the pipelines are stalled | 59 ;; If the destination register is the PC, the pipelines are stalled |
60 ;; for several cycles. That case is not modeled here. | 60 ;; for several cycles. That case is not modeled here. |
61 | 61 |
62 ;; ALU operations | 62 ;; ALU operations |
63 (define_insn_reservation "606te_alu_op" 1 | 63 (define_insn_reservation "606te_alu_op" 1 |
64 (and (eq_attr "tune" "fa606te") | 64 (and (eq_attr "tune" "fa606te") |
65 (eq_attr "type" "alu,alu_shift,alu_shift_reg")) | 65 (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ |
66 alu_sreg,alus_sreg,logic_reg,logics_reg,\ | |
67 adc_imm,adcs_imm,adc_reg,adcs_reg,\ | |
68 adr,bfm,rev,\ | |
69 shift_imm,shift_reg,extend,\ | |
70 alu_shift_imm,alus_shift_imm,\ | |
71 logic_shift_imm,logics_shift_imm,\ | |
72 alu_shift_reg,alus_shift_reg,\ | |
73 logic_shift_reg,logics_shift_reg,\ | |
74 mov_imm,mov_reg,mov_shift,mov_shift_reg,\ | |
75 mvn_imm,mvn_reg,mvn_shift,mvn_shift_reg,\ | |
76 mrs,multiple,no_insn")) | |
66 "fa606te_core") | 77 "fa606te_core") |
67 | 78 |
68 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 79 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
69 ;; Multiplication Instructions | 80 ;; Multiplication Instructions |
70 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 81 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
71 | 82 |
72 (define_insn_reservation "606te_mult1" 2 | 83 (define_insn_reservation "606te_mult1" 2 |
73 (and (eq_attr "tune" "fa606te") | 84 (and (eq_attr "tune" "fa606te") |
74 (eq_attr "insn" "smlalxy")) | 85 (eq_attr "type" "smlalxy")) |
75 "fa606te_core") | 86 "fa606te_core") |
76 | 87 |
77 (define_insn_reservation "606te_mult2" 3 | 88 (define_insn_reservation "606te_mult2" 3 |
78 (and (eq_attr "tune" "fa606te") | 89 (and (eq_attr "tune" "fa606te") |
79 (eq_attr "insn" "smlaxy,smulxy,smulwy,smlawy")) | 90 (eq_attr "type" "smlaxy,smulxy,smulwy,smlawy")) |
80 "fa606te_core*2") | 91 "fa606te_core*2") |
81 | 92 |
82 (define_insn_reservation "606te_mult3" 4 | 93 (define_insn_reservation "606te_mult3" 4 |
83 (and (eq_attr "tune" "fa606te") | 94 (and (eq_attr "tune" "fa606te") |
84 (eq_attr "insn" "mul,mla,muls,mlas")) | 95 (eq_attr "type" "mul,mla,muls,mlas")) |
85 "fa606te_core*3") | 96 "fa606te_core*3") |
86 | 97 |
87 (define_insn_reservation "606te_mult4" 5 | 98 (define_insn_reservation "606te_mult4" 5 |
88 (and (eq_attr "tune" "fa606te") | 99 (and (eq_attr "tune" "fa606te") |
89 (eq_attr "insn" "umull,umlal,smull,smlal,umulls,umlals,smulls,smlals")) | 100 (eq_attr "type" "umull,umlal,smull,smlal,umulls,umlals,smulls,smlals")) |
90 "fa606te_core*4") | 101 "fa606te_core*4") |
91 | 102 |
92 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 103 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
93 ;; Load/Store Instructions | 104 ;; Load/Store Instructions |
94 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 105 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
98 ;; (such as "ldm!"). These models assume that all memory references | 109 ;; (such as "ldm!"). These models assume that all memory references |
99 ;; hit in dcache. | 110 ;; hit in dcache. |
100 | 111 |
101 (define_insn_reservation "606te_load1_op" 2 | 112 (define_insn_reservation "606te_load1_op" 2 |
102 (and (eq_attr "tune" "fa606te") | 113 (and (eq_attr "tune" "fa606te") |
103 (eq_attr "type" "load1,load_byte")) | 114 (eq_attr "type" "load_4,load_byte")) |
104 "fa606te_core") | 115 "fa606te_core") |
105 | 116 |
106 (define_insn_reservation "606te_load2_op" 3 | 117 (define_insn_reservation "606te_load2_op" 3 |
107 (and (eq_attr "tune" "fa606te") | 118 (and (eq_attr "tune" "fa606te") |
108 (eq_attr "type" "load2")) | 119 (eq_attr "type" "load_8")) |
109 "fa606te_core*2") | 120 "fa606te_core*2") |
110 | 121 |
111 (define_insn_reservation "606te_load3_op" 4 | 122 (define_insn_reservation "606te_load3_op" 4 |
112 (and (eq_attr "tune" "fa606te") | 123 (and (eq_attr "tune" "fa606te") |
113 (eq_attr "type" "load3")) | 124 (eq_attr "type" "load_12")) |
114 "fa606te_core*3") | 125 "fa606te_core*3") |
115 | 126 |
116 (define_insn_reservation "606te_load4_op" 5 | 127 (define_insn_reservation "606te_load4_op" 5 |
117 (and (eq_attr "tune" "fa606te") | 128 (and (eq_attr "tune" "fa606te") |
118 (eq_attr "type" "load4")) | 129 (eq_attr "type" "load_16")) |
119 "fa606te_core*4") | 130 "fa606te_core*4") |
120 | 131 |
121 (define_insn_reservation "606te_store1_op" 0 | 132 (define_insn_reservation "606te_store1_op" 0 |
122 (and (eq_attr "tune" "fa606te") | 133 (and (eq_attr "tune" "fa606te") |
123 (eq_attr "type" "store1")) | 134 (eq_attr "type" "store_4")) |
124 "fa606te_core") | 135 "fa606te_core") |
125 | 136 |
126 (define_insn_reservation "606te_store2_op" 1 | 137 (define_insn_reservation "606te_store2_op" 1 |
127 (and (eq_attr "tune" "fa606te") | 138 (and (eq_attr "tune" "fa606te") |
128 (eq_attr "type" "store2")) | 139 (eq_attr "type" "store_8")) |
129 "fa606te_core*2") | 140 "fa606te_core*2") |
130 | 141 |
131 (define_insn_reservation "606te_store3_op" 2 | 142 (define_insn_reservation "606te_store3_op" 2 |
132 (and (eq_attr "tune" "fa606te") | 143 (and (eq_attr "tune" "fa606te") |
133 (eq_attr "type" "store3")) | 144 (eq_attr "type" "store_12")) |
134 "fa606te_core*3") | 145 "fa606te_core*3") |
135 | 146 |
136 (define_insn_reservation "606te_store4_op" 3 | 147 (define_insn_reservation "606te_store4_op" 3 |
137 (and (eq_attr "tune" "fa606te") | 148 (and (eq_attr "tune" "fa606te") |
138 (eq_attr "type" "store4")) | 149 (eq_attr "type" "store_16")) |
139 "fa606te_core*4") | 150 "fa606te_core*4") |
140 | 151 |
141 | 152 |
142 ;;(define_insn_reservation "606te_ldm_op" 9 | 153 ;;(define_insn_reservation "606te_ldm_op" 9 |
143 ;; (and (eq_attr "tune" "fa606te") | 154 ;; (and (eq_attr "tune" "fa606te") |
144 ;; (eq_attr "type" "load2,load3,load4,store2,store3,store4")) | 155 ;; (eq_attr "type" "load_8,load_12,load_16,store_8,store_12,store_16")) |
145 ;; "fa606te_core*7") | 156 ;; "fa606te_core*7") |
146 | 157 |
147 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 158 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
148 ;; Branch and Call Instructions | 159 ;; Branch and Call Instructions |
149 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 160 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |