]>
Commit | Line | Data |
---|---|---|
03dd17b1 | 1 | ;; m32c constraints |
83ffe9cd | 2 | ;; Copyright (C) 2012-2023 Free Software Foundation, Inc. |
03dd17b1 NF |
3 | ;; |
4 | ;; This file is part of GCC. | |
5 | ;; | |
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 by | |
8 | ;; the Free Software Foundation; either version 3, or (at your option) | |
9 | ;; any later version. | |
10 | ;; | |
11 | ;; GCC is distributed in the hope that it will be useful, but WITHOUT | |
12 | ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
13 | ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
14 | ;; License for more details. | |
15 | ;; | |
16 | ;; You should have received a copy of the GNU General Public License | |
17 | ;; along with GCC; see the file COPYING3. If not see | |
18 | ;; <http://www.gnu.org/licenses/>. | |
19 | ||
20 | (define_register_constraint "Rsp" "SP_REGS" | |
21 | "@internal") | |
22 | ||
23 | (define_register_constraint "Rfb" "FB_REGS" | |
24 | "@internal") | |
25 | ||
26 | (define_register_constraint "Rsb" "SB_REGS" | |
27 | "@internal") | |
28 | ||
29 | (define_register_constraint "Rcr" "TARGET_A16 ? CR_REGS : NO_REGS" | |
30 | "@internal") | |
31 | ||
32 | (define_register_constraint "Rcl" "TARGET_A24 ? CR_REGS : NO_REGS" | |
33 | "@internal") | |
34 | ||
35 | (define_register_constraint "R0w" "R0_REGS" | |
36 | "@internal") | |
37 | ||
38 | (define_register_constraint "R1w" "R1_REGS" | |
39 | "@internal") | |
40 | ||
41 | (define_register_constraint "R2w" "R2_REGS" | |
42 | "@internal") | |
43 | ||
44 | (define_register_constraint "R3w" "R3_REGS" | |
45 | "@internal") | |
46 | ||
47 | (define_register_constraint "R02" "R02_REGS" | |
48 | "@internal") | |
49 | ||
50 | (define_register_constraint "R13" "R13_REGS" | |
51 | "@internal") | |
52 | ||
53 | (define_register_constraint "R03" "R03_REGS" | |
54 | "@internal") | |
55 | ||
56 | (define_register_constraint "Rdi" "DI_REGS" | |
57 | "@internal") | |
58 | ||
59 | (define_register_constraint "Rhl" "HL_REGS" | |
60 | "@internal") | |
61 | ||
62 | (define_register_constraint "R23" "R23_REGS" | |
63 | "@internal") | |
64 | ||
65 | (define_register_constraint "Ra0" "A0_REGS" | |
66 | "@internal") | |
67 | ||
68 | (define_register_constraint "Ra1" "A1_REGS" | |
69 | "@internal") | |
70 | ||
71 | (define_register_constraint "Raa" "A_REGS" | |
72 | "@internal") | |
73 | ||
74 | (define_register_constraint "Raw" "TARGET_A16 ? A_REGS : NO_REGS" | |
75 | "@internal") | |
76 | ||
77 | (define_register_constraint "Ral" "TARGET_A24 ? A_REGS : NO_REGS" | |
78 | "@internal") | |
79 | ||
80 | (define_register_constraint "Rqi" "QI_REGS" | |
81 | "@internal") | |
82 | ||
83 | (define_register_constraint "Rad" "AD_REGS" | |
84 | "@internal") | |
85 | ||
86 | (define_register_constraint "Rsi" "SI_REGS" | |
87 | "@internal") | |
88 | ||
89 | (define_register_constraint "Rhi" "HI_REGS" | |
90 | "@internal") | |
91 | ||
92 | (define_register_constraint "Rhc" "HC_REGS" | |
93 | "@internal") | |
94 | ||
95 | (define_register_constraint "Rra" "RA_REGS" | |
96 | "@internal") | |
97 | ||
98 | (define_register_constraint "Rfl" "FLG_REGS" | |
99 | "@internal") | |
100 | ||
101 | (define_register_constraint "Rmm" "fixed_regs[MEM0_REGNO] ? NO_REGS : MEM_REGS" | |
102 | "@internal") | |
103 | ||
104 | (define_register_constraint "Rpi" "TARGET_A16 ? HI_REGS : RA_REGS" | |
105 | "@internal") | |
106 | ||
107 | ;;; For integer constant constraints: | |
108 | ;;; s=signed u=unsigned n=nonzero m=minus l=log2able, | |
109 | ;;; [sun] bits [SUN] bytes, p=pointer size | |
110 | ;;; I[-0-9][0-9] matches that number | |
111 | ||
112 | (define_constraint "Is3" | |
113 | "@internal" | |
114 | (and (match_code "const_int") | |
115 | (match_test "IN_RANGE (ival, -8, 7)"))) | |
116 | ||
117 | (define_constraint "IS1" | |
118 | "@internal" | |
119 | (and (match_code "const_int") | |
120 | (match_test "IN_RANGE (ival, -128, 127)"))) | |
121 | ||
122 | (define_constraint "IS2" | |
123 | "@internal" | |
124 | (and (match_code "const_int") | |
125 | (match_test "IN_RANGE (ival, -32768, 32767)"))) | |
126 | ||
127 | (define_constraint "IU2" | |
128 | "@internal" | |
129 | (and (match_code "const_int") | |
130 | (match_test "IN_RANGE (ival, 0, 65535)"))) | |
131 | ||
132 | (define_constraint "IU3" | |
133 | "@internal" | |
134 | (and (match_code "const_int") | |
135 | (match_test "IN_RANGE (ival, 0, 0x00ffffff)"))) | |
136 | ||
137 | (define_constraint "In4" | |
138 | "@internal" | |
139 | (and (match_code "const_int") | |
140 | (match_test "IN_RANGE (ival, -8, 8) && ival"))) | |
141 | ||
142 | (define_constraint "In5" | |
143 | "@internal" | |
144 | (and (match_code "const_int") | |
145 | (match_test "IN_RANGE (ival, -16, 16) && ival"))) | |
146 | ||
147 | (define_constraint "In6" | |
148 | "@internal" | |
149 | (and (match_code "const_int") | |
150 | (match_test "IN_RANGE (ival, -32, 32) && ival"))) | |
151 | ||
152 | (define_constraint "IM2" | |
153 | "@internal" | |
154 | (and (match_code "const_int") | |
155 | (match_test "IN_RANGE (ival, -65536, -1)"))) | |
156 | ||
157 | (define_constraint "Ilb" | |
158 | "@internal" | |
159 | (and (match_code "const_int") | |
160 | (match_test "IN_RANGE (exact_log2 (ival), 0, 7)"))) | |
161 | ||
162 | (define_constraint "Imb" | |
163 | "@internal" | |
164 | (and (match_code "const_int") | |
165 | (match_test "IN_RANGE (exact_log2 ((ival ^ 0xff) & 0xff), 0, 7)"))) | |
166 | ||
167 | (define_constraint "ImB" | |
168 | "@internal" | |
169 | (and (match_code "const_int") | |
170 | (match_test "IN_RANGE (exact_log2 ((ival ^ 0xffff) & 0xffff), 0, 7)"))) | |
171 | ||
172 | (define_constraint "Ilw" | |
173 | "@internal" | |
174 | (and (match_code "const_int") | |
175 | (match_test "IN_RANGE (exact_log2 (ival), 0, 15)"))) | |
176 | ||
177 | (define_constraint "Imw" | |
178 | "@internal" | |
179 | (and (match_code "const_int") | |
180 | (match_test "IN_RANGE (exact_log2 ((ival ^ 0xffff) & 0xffff), 0, 15)"))) | |
181 | ||
182 | (define_constraint "I00" | |
183 | "@internal" | |
184 | (and (match_code "const_int") | |
185 | (match_test "ival == 0"))) | |
186 | ||
187 | (define_memory_constraint "SF" | |
188 | "@internal" | |
189 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_SF)")) | |
190 | ||
191 | (define_memory_constraint "Sd" | |
192 | "@internal" | |
193 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sd)")) | |
194 | ||
195 | (define_memory_constraint "Sa" | |
196 | "@internal" | |
197 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sa)")) | |
198 | ||
199 | (define_memory_constraint "Si" | |
200 | "@internal" | |
201 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Si)")) | |
202 | ||
203 | (define_memory_constraint "Ss" | |
204 | "@internal" | |
205 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Ss)")) | |
206 | ||
207 | (define_memory_constraint "Sf" | |
208 | "@internal" | |
209 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sf)")) | |
210 | ||
211 | (define_memory_constraint "Sb" | |
212 | "@internal" | |
213 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sb)")) | |
214 | ||
215 | (define_memory_constraint "Sp" | |
216 | "@internal" | |
217 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sp)")) | |
218 | ||
219 | (define_memory_constraint "S1" | |
220 | "@internal" | |
221 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_S1)")) | |
222 | ||
223 | (define_constraint "Rpa" | |
224 | "@internal" | |
225 | (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Rpa)")) |