]>
Commit | Line | Data |
---|---|---|
018a61c9 | 1 | ;; Constraint definitions for Blackfin |
5624e564 | 2 | ;; Copyright (C) 2008-2015 Free Software Foundation, Inc. |
018a61c9 BS |
3 | ;; Contributed by Analog Devices |
4 | ||
5 | ;; This file is part of GCC. | |
6 | ||
7 | ;; GCC is free software; you can redistribute it and/or modify it | |
8 | ;; under the terms of the GNU General Public License as published | |
96a791f7 | 9 | ;; by the Free Software Foundation; either version 3, or (at your |
018a61c9 BS |
10 | ;; option) any later version. |
11 | ||
12 | ;; GCC is distributed in the hope that it will be useful, but WITHOUT | |
13 | ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
14 | ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
15 | ;; License for more details. | |
16 | ||
17 | ;; You should have received a copy of the GNU General Public License | |
96a791f7 BS |
18 | ;; along with GCC; see the file COPYING3. If not see |
19 | ;; <http://www.gnu.org/licenses/>. | |
018a61c9 BS |
20 | |
21 | (define_register_constraint "a" "PREGS" | |
22 | "A Pn register.") | |
23 | ||
24 | (define_register_constraint "d" "DREGS" | |
25 | "A Rn register.") | |
26 | ||
27 | (define_register_constraint "z" "PREGS_CLOBBERED" | |
28 | "A call clobbered Pn register.") | |
29 | ||
30 | (define_register_constraint "D" "EVEN_DREGS" | |
31 | "An even-numbered Rn register.") | |
32 | ||
33 | (define_register_constraint "W" "ODD_DREGS" | |
34 | "An odd-numbered Rn register.") | |
35 | ||
36 | (define_register_constraint "e" "AREGS" | |
37 | "An accumulator register.") | |
38 | ||
39 | (define_register_constraint "A" "EVEN_AREGS" | |
40 | "An even-numbered accumulator; A0.") | |
41 | ||
42 | (define_register_constraint "B" "ODD_AREGS" | |
43 | "An odd-numbered accumulator; A1.") | |
44 | ||
45 | (define_register_constraint "b" "IREGS" | |
46 | "An I register.") | |
47 | ||
48 | (define_register_constraint "v" "BREGS" | |
49 | "A B register.") | |
50 | ||
51 | (define_register_constraint "f" "MREGS" | |
52 | "An M register.") | |
53 | ||
54 | (define_register_constraint "c" "CIRCREGS" | |
55 | "A register used for circular buffering, i.e. I, B, or L registers.") | |
56 | ||
57 | (define_register_constraint "C" "CCREGS" | |
58 | "The CC register.") | |
59 | ||
60 | (define_register_constraint "t" "LT_REGS" | |
61 | "LT0 or LT1.") | |
62 | ||
63 | (define_register_constraint "u" "LB_REGS" | |
64 | "LB0 or LB1.") | |
65 | ||
66 | (define_register_constraint "k" "LC_REGS" | |
67 | "LC0 or LC1.") | |
68 | ||
69 | (define_register_constraint "x" "MOST_REGS" | |
70 | "Any R, P, B, M, I or L register.") | |
71 | ||
72 | (define_register_constraint "y" "PROLOGUE_REGS" | |
73 | "Additional registers typically used only in prologues and epilogues: | |
74 | RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP.") | |
75 | ||
76 | (define_register_constraint "w" "NON_A_CC_REGS" | |
77 | "Any register except accumulators or CC.") | |
78 | ||
79 | (define_register_constraint "Z" "FDPIC_REGS" | |
80 | "@internal The FD-PIC GOT pointer; P3.") | |
81 | ||
82 | (define_register_constraint "Y" "FDPIC_FPTR_REGS" | |
83 | "@internal The FD-PIC function pointer register; P1.") | |
84 | ||
85 | (define_register_constraint "q0" "D0REGS" | |
86 | "The register R0.") | |
87 | ||
88 | (define_register_constraint "q1" "D1REGS" | |
89 | "The register R1.") | |
90 | ||
91 | (define_register_constraint "q2" "D2REGS" | |
92 | "The register R2.") | |
93 | ||
94 | (define_register_constraint "q3" "D3REGS" | |
95 | "The register R3.") | |
96 | ||
97 | (define_register_constraint "q4" "D4REGS" | |
98 | "The register R4.") | |
99 | ||
100 | (define_register_constraint "q5" "D5REGS" | |
101 | "The register R5.") | |
102 | ||
103 | (define_register_constraint "q6" "D6REGS" | |
104 | "The register R6.") | |
105 | ||
106 | (define_register_constraint "q7" "D7REGS" | |
107 | "The register R7.") | |
108 | ||
109 | (define_register_constraint "qA" "P0REGS" | |
110 | "The register P0.") | |
111 | ||
112 | ;; Constant constraints. | |
113 | ||
114 | (define_constraint "J" | |
115 | "A constant value of the form 2**N, where N 5-bit wide." | |
116 | (and (match_code "const_int") | |
117 | (match_test "log2constp (ival)"))) | |
118 | ||
119 | (define_constraint "Ks3" | |
120 | "A signed 3 bit immediate." | |
121 | (and (match_code "const_int") | |
122 | (match_test "ival >= -4 && ival <= 3"))) | |
123 | ||
124 | (define_constraint "Ku3" | |
125 | "An unsigned 3 bit immediate." | |
126 | (and (match_code "const_int") | |
127 | (match_test "ival >= 0 && ival <= 7"))) | |
128 | ||
129 | (define_constraint "Ks4" | |
130 | "A signed 4 bit immediate." | |
131 | (and (match_code "const_int") | |
132 | (match_test "ival >= -8 && ival <= 7"))) | |
133 | ||
134 | (define_constraint "Ku4" | |
135 | "An unsigned 4 bit immediate." | |
136 | (and (match_code "const_int") | |
137 | (match_test "ival >= 0 && ival <= 15"))) | |
138 | ||
139 | (define_constraint "Ks5" | |
140 | "A signed 5 bit immediate." | |
141 | (and (match_code "const_int") | |
142 | (match_test "ival >= -16 && ival <= 15"))) | |
143 | ||
144 | (define_constraint "Ku5" | |
145 | "An unsigned 5 bit immediate." | |
146 | (and (match_code "const_int") | |
147 | (match_test "ival >= 0 && ival <= 31"))) | |
148 | ||
149 | (define_constraint "Ks7" | |
150 | "A signed 7 bit immediate." | |
151 | (and (match_code "const_int") | |
152 | (match_test "ival >= -64 && ival <= 63"))) | |
153 | ||
154 | (define_constraint "KN7" | |
155 | "A constant that when negated is a signed 7 bit immediate." | |
156 | (and (match_code "const_int") | |
157 | (match_test "ival >= -63 && ival <= 64"))) | |
158 | ||
159 | (define_constraint "Ksh" | |
160 | "A signed 16 bit immediate." | |
161 | (and (match_code "const_int") | |
162 | (match_test "ival >= -32768 && ival <= 32767"))) | |
163 | ||
164 | (define_constraint "Kuh" | |
165 | "An unsigned 16 bit immediate." | |
166 | (and (match_code "const_int") | |
167 | (match_test "ival >= 0 && ival <= 65535"))) | |
168 | ||
169 | (define_constraint "L" | |
170 | "A constant value of the form ~(2**N)." | |
171 | (and (match_code "const_int") | |
172 | (match_test "log2constp (~ival)"))) | |
173 | ||
174 | (define_constraint "M1" | |
175 | "An integer with the value 255." | |
176 | (and (match_code "const_int") | |
177 | (match_test "ival == 255"))) | |
178 | ||
179 | (define_constraint "M2" | |
180 | "An integer with the value 65535." | |
181 | (and (match_code "const_int") | |
182 | (match_test "ival == 65535"))) | |
183 | ||
184 | (define_constraint "P0" | |
185 | "An integer with the value 0." | |
186 | (and (match_code "const_int") | |
187 | (match_test "ival == 0"))) | |
188 | ||
189 | (define_constraint "P1" | |
190 | "An integer with the value 1." | |
191 | (and (match_code "const_int") | |
192 | (match_test "ival == 1"))) | |
193 | ||
194 | (define_constraint "P2" | |
195 | "An integer with the value 2." | |
196 | (and (match_code "const_int") | |
197 | (match_test "ival == 2"))) | |
198 | ||
199 | (define_constraint "P3" | |
200 | "An integer with the value 3." | |
201 | (and (match_code "const_int") | |
202 | (match_test "ival == 3"))) | |
203 | ||
204 | (define_constraint "P4" | |
205 | "An integer with the value 4." | |
206 | (and (match_code "const_int") | |
207 | (match_test "ival == 4"))) | |
208 | ||
209 | (define_constraint "PA" | |
210 | "An integer constant describing any macflag except variants involving M." | |
211 | (and (match_code "const_int") | |
212 | (match_test "ival != MACFLAG_M && ival != MACFLAG_IS_M"))) | |
213 | ||
214 | (define_constraint "PB" | |
215 | "An integer constant describing any macflag involving M." | |
216 | (and (match_code "const_int") | |
217 | (match_test "ival == MACFLAG_M || ival == MACFLAG_IS_M"))) | |
218 | ||
219 | ||
220 | ;; Extra constraints | |
221 | ||
222 | (define_constraint "Q" | |
223 | "A SYMBOL_REF." | |
224 | (match_code "symbol_ref")) | |
225 |