0
|
1 ;; Constraint definitions for Blackfin
|
131
|
2 ;; Copyright (C) 2008-2018 Free Software Foundation, Inc.
|
0
|
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
|
|
9 ;; by the Free Software Foundation; either version 3, or (at your
|
|
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
|
|
18 ;; along with GCC; see the file COPYING3. If not see
|
|
19 ;; <http://www.gnu.org/licenses/>.
|
|
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
|