GNU Binutils with patches for OS216
修订版 | 33cb208e497186ed33e49bbb71e6d8229afc496f (tree) |
---|---|
时间 | 2002-06-19 06:21:06 |
作者 | nobody <> |
Commiter | nobody <> |
This commit was manufactured by cvs2svn to create branch
'cagney_regbuf-20020515-branch'.
Cherrypick from master 2002-06-18 21:21:05 UTC Dave Brolley <brolley@redhat.com> '2002-06-18 Dave Brolley <brolley@redhat.com>':
@@ -0,0 +1,64 @@ | ||
1 | +/* BFD support for the FRV processor. | |
2 | + Copyright (C) 2002 Free Software Foundation, Inc. | |
3 | + | |
4 | +This file is part of BFD, the Binary File Descriptor library. | |
5 | + | |
6 | +This program is free software; you can redistribute it and/or modify | |
7 | +it under the terms of the GNU General Public License as published by | |
8 | +the Free Software Foundation; either version 2 of the License, or | |
9 | +(at your option) any later version. | |
10 | + | |
11 | +This program is distributed in the hope that it will be useful, | |
12 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | +GNU General Public License for more details. | |
15 | + | |
16 | +You should have received a copy of the GNU General Public License | |
17 | +along with this program; if not, write to the Free Software | |
18 | +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
19 | + | |
20 | +#include "bfd.h" | |
21 | +#include "sysdep.h" | |
22 | +#include "libbfd.h" | |
23 | + | |
24 | +enum { | |
25 | + I_frv_generic, | |
26 | + I_frv_simple, | |
27 | + I_frv_500, | |
28 | + I_frv_300, | |
29 | +}; | |
30 | + | |
31 | +#define FRV_ARCH(MACHINE, NAME, DEFAULT, NEXT) \ | |
32 | +{ \ | |
33 | + 32, /* 32 bits in a word */ \ | |
34 | + 32, /* 32 bits in an address */ \ | |
35 | + 8, /* 8 bits in a byte */ \ | |
36 | + bfd_arch_frv, /* architecture */ \ | |
37 | + MACHINE, /* which machine */ \ | |
38 | + "frv", /* architecture name */ \ | |
39 | + NAME, /* machine name */ \ | |
40 | + 4, /* default alignment */ \ | |
41 | + DEFAULT, /* is this the default? */ \ | |
42 | + bfd_default_compatible, /* architecture comparison fn */ \ | |
43 | + bfd_default_scan, /* string to architecture convert fn */ \ | |
44 | + NEXT /* next in list */ \ | |
45 | +} | |
46 | + | |
47 | +static const bfd_arch_info_type arch_info_300 | |
48 | + = FRV_ARCH (bfd_mach_fr300, "fr300", false, (bfd_arch_info_type *)0); | |
49 | + | |
50 | +static const bfd_arch_info_type arch_info_400 | |
51 | + = FRV_ARCH (bfd_mach_fr400, "fr400", false, &arch_info_300); | |
52 | + | |
53 | +static const bfd_arch_info_type arch_info_500 | |
54 | + = FRV_ARCH (bfd_mach_fr500, "fr500", false, &arch_info_400); | |
55 | + | |
56 | +static const bfd_arch_info_type arch_info_simple | |
57 | + = FRV_ARCH (bfd_mach_frvsimple, "simple", false, &arch_info_500); | |
58 | + | |
59 | +static const bfd_arch_info_type arch_info_tomcat | |
60 | + = FRV_ARCH (bfd_mach_frvtomcat, "tomcat", false, &arch_info_simple); | |
61 | + | |
62 | +const bfd_arch_info_type bfd_frv_arch | |
63 | + = FRV_ARCH (bfd_mach_frv, "frv", true, &arch_info_tomcat); | |
64 | + |
@@ -0,0 +1,1405 @@ | ||
1 | +/* FRV-specific support for 32-bit ELF. | |
2 | + Copyright (C) 2002 Free Software Foundation, Inc. | |
3 | + | |
4 | +This file is part of BFD, the Binary File Descriptor library. | |
5 | + | |
6 | +This program is free software; you can redistribute it and/or modify | |
7 | +it under the terms of the GNU General Public License as published by | |
8 | +the Free Software Foundation; either version 2 of the License, or | |
9 | +(at your option) any later version. | |
10 | + | |
11 | +This program is distributed in the hope that it will be useful, | |
12 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | +GNU General Public License for more details. | |
15 | + | |
16 | +You should have received a copy of the GNU General Public License | |
17 | +along with this program; if not, write to the Free Software | |
18 | +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
19 | + | |
20 | +#include "bfd.h" | |
21 | +#include "sysdep.h" | |
22 | +#include "libbfd.h" | |
23 | +#include "elf-bfd.h" | |
24 | +#include "elf/frv.h" | |
25 | + | |
26 | +/* Forward declarations. */ | |
27 | +static bfd_reloc_status_type elf32_frv_relocate_lo16 | |
28 | + PARAMS ((bfd *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
29 | +static bfd_reloc_status_type elf32_frv_relocate_hi16 | |
30 | + PARAMS ((bfd *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
31 | +static bfd_reloc_status_type elf32_frv_relocate_label24 | |
32 | + PARAMS ((bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
33 | +static bfd_reloc_status_type elf32_frv_relocate_gprel12 | |
34 | + PARAMS ((struct bfd_link_info *, bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
35 | +static bfd_reloc_status_type elf32_frv_relocate_gprelu12 | |
36 | + PARAMS ((struct bfd_link_info *, bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
37 | +static bfd_reloc_status_type elf32_frv_relocate_gprello | |
38 | + PARAMS ((struct bfd_link_info *, bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
39 | +static bfd_reloc_status_type elf32_frv_relocate_gprelhi | |
40 | + PARAMS ((struct bfd_link_info *, bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_vma)); | |
41 | +static reloc_howto_type *frv_reloc_type_lookup | |
42 | + PARAMS ((bfd *, bfd_reloc_code_real_type)); | |
43 | +static void frv_info_to_howto_rela | |
44 | + PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *)); | |
45 | +static boolean elf32_frv_relocate_section | |
46 | + PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); | |
47 | +static boolean elf32_frv_add_symbol_hook | |
48 | + PARAMS (( bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, const char **, flagword *, asection **, bfd_vma *)); | |
49 | +static bfd_reloc_status_type frv_final_link_relocate | |
50 | + PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma)); | |
51 | +static boolean elf32_frv_gc_sweep_hook | |
52 | + PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); | |
53 | +static asection * elf32_frv_gc_mark_hook | |
54 | + PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *)); | |
55 | +static boolean elf32_frv_check_relocs | |
56 | + PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); | |
57 | +static int elf32_frv_machine PARAMS ((bfd *)); | |
58 | +static boolean elf32_frv_object_p PARAMS ((bfd *)); | |
59 | +static boolean frv_elf_set_private_flags PARAMS ((bfd *, flagword)); | |
60 | +static boolean frv_elf_copy_private_bfd_data PARAMS ((bfd *, bfd *)); | |
61 | +static boolean frv_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); | |
62 | +static boolean frv_elf_print_private_bfd_data PARAMS ((bfd *, PTR)); | |
63 | + | |
64 | +static reloc_howto_type elf32_frv_howto_table [] = | |
65 | +{ | |
66 | + /* This reloc does nothing. */ | |
67 | + HOWTO (R_FRV_NONE, /* type */ | |
68 | + 0, /* rightshift */ | |
69 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
70 | + 32, /* bitsize */ | |
71 | + false, /* pc_relative */ | |
72 | + 0, /* bitpos */ | |
73 | + complain_overflow_bitfield, /* complain_on_overflow */ | |
74 | + bfd_elf_generic_reloc, /* special_function */ | |
75 | + "R_FRV_NONE", /* name */ | |
76 | + false, /* partial_inplace */ | |
77 | + 0, /* src_mask */ | |
78 | + 0, /* dst_mask */ | |
79 | + false), /* pcrel_offset */ | |
80 | + | |
81 | + /* A 32 bit absolute relocation. */ | |
82 | + HOWTO (R_FRV_32, /* type */ | |
83 | + 0, /* rightshift */ | |
84 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
85 | + 32, /* bitsize */ | |
86 | + false, /* pc_relative */ | |
87 | + 0, /* bitpos */ | |
88 | + complain_overflow_bitfield, /* complain_on_overflow */ | |
89 | + bfd_elf_generic_reloc, /* special_function */ | |
90 | + "R_FRV_32", /* name */ | |
91 | + false, /* partial_inplace */ | |
92 | + 0xffffffff, /* src_mask */ | |
93 | + 0xffffffff, /* dst_mask */ | |
94 | + false), /* pcrel_offset */ | |
95 | + | |
96 | + /* A 16 bit pc-relative relocation. */ | |
97 | + HOWTO (R_FRV_LABEL16, /* type */ | |
98 | + 0, /* rightshift */ | |
99 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
100 | + 16, /* bitsize */ | |
101 | + true, /* pc_relative */ | |
102 | + 0, /* bitpos */ | |
103 | + complain_overflow_bitfield, /* complain_on_overflow */ | |
104 | + bfd_elf_generic_reloc, /* special_function */ | |
105 | + "R_FRV_LABEL16", /* name */ | |
106 | + false, /* partial_inplace */ | |
107 | + 0xffff, /* src_mask */ | |
108 | + 0xffff, /* dst_mask */ | |
109 | + true), /* pcrel_offset */ | |
110 | + | |
111 | + /* A 24-bit pc-relative relocation. */ | |
112 | + HOWTO (R_FRV_LABEL24, /* type */ | |
113 | + 2, /* rightshift */ | |
114 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
115 | + 26, /* bitsize */ | |
116 | + true, /* pc_relative */ | |
117 | + 0, /* bitpos */ | |
118 | + complain_overflow_bitfield, /* complain_on_overflow */ | |
119 | + bfd_elf_generic_reloc, /* special_function */ | |
120 | + "R_FRV_LABEL24", /* name */ | |
121 | + false, /* partial_inplace */ | |
122 | + 0x7e03ffff, /* src_mask */ | |
123 | + 0x7e03ffff, /* dst_mask */ | |
124 | + true), /* pcrel_offset */ | |
125 | + | |
126 | + HOWTO (R_FRV_LO16, /* type */ | |
127 | + 0, /* rightshift */ | |
128 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
129 | + 16, /* bitsize */ | |
130 | + false, /* pc_relative */ | |
131 | + 0, /* bitpos */ | |
132 | + complain_overflow_dont, /* complain_on_overflow */ | |
133 | + bfd_elf_generic_reloc, /* special_function */ | |
134 | + "R_FRV_LO16", /* name */ | |
135 | + false, /* partial_inplace */ | |
136 | + 0xffff, /* src_mask */ | |
137 | + 0xffff, /* dst_mask */ | |
138 | + false), /* pcrel_offset */ | |
139 | + | |
140 | + HOWTO (R_FRV_HI16, /* type */ | |
141 | + 0, /* rightshift */ | |
142 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
143 | + 16, /* bitsize */ | |
144 | + false, /* pc_relative */ | |
145 | + 0, /* bitpos */ | |
146 | + complain_overflow_dont, /* complain_on_overflow */ | |
147 | + bfd_elf_generic_reloc, /* special_function */ | |
148 | + "R_FRV_HI16", /* name */ | |
149 | + false, /* partial_inplace */ | |
150 | + 0xffff, /* src_mask */ | |
151 | + 0xffff, /* dst_mask */ | |
152 | + false), /* pcrel_offset */ | |
153 | + | |
154 | + HOWTO (R_FRV_GPREL12, /* type */ | |
155 | + 0, /* rightshift */ | |
156 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
157 | + 12, /* bitsize */ | |
158 | + false, /* pc_relative */ | |
159 | + 0, /* bitpos */ | |
160 | + complain_overflow_dont, /* complain_on_overflow */ | |
161 | + bfd_elf_generic_reloc, /* special_function */ | |
162 | + "R_FRV_GPREL12", /* name */ | |
163 | + false, /* partial_inplace */ | |
164 | + 0xfff, /* src_mask */ | |
165 | + 0xfff, /* dst_mask */ | |
166 | + false), /* pcrel_offset */ | |
167 | + | |
168 | + HOWTO (R_FRV_GPRELU12, /* type */ | |
169 | + 0, /* rightshift */ | |
170 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
171 | + 12, /* bitsize */ | |
172 | + false, /* pc_relative */ | |
173 | + 0, /* bitpos */ | |
174 | + complain_overflow_dont, /* complain_on_overflow */ | |
175 | + bfd_elf_generic_reloc, /* special_function */ | |
176 | + "R_FRV_GPRELU12", /* name */ | |
177 | + false, /* partial_inplace */ | |
178 | + 0xfff, /* src_mask */ | |
179 | + 0x3f03f, /* dst_mask */ | |
180 | + false), /* pcrel_offset */ | |
181 | + | |
182 | + HOWTO (R_FRV_GPREL32, /* type */ | |
183 | + 0, /* rightshift */ | |
184 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
185 | + 32, /* bitsize */ | |
186 | + false, /* pc_relative */ | |
187 | + 0, /* bitpos */ | |
188 | + complain_overflow_dont, /* complain_on_overflow */ | |
189 | + bfd_elf_generic_reloc, /* special_function */ | |
190 | + "R_FRV_GPREL32", /* name */ | |
191 | + false, /* partial_inplace */ | |
192 | + 0xffffffff, /* src_mask */ | |
193 | + 0xffffffff, /* dst_mask */ | |
194 | + false), /* pcrel_offset */ | |
195 | + | |
196 | + HOWTO (R_FRV_GPRELHI, /* type */ | |
197 | + 0, /* rightshift */ | |
198 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
199 | + 16, /* bitsize */ | |
200 | + false, /* pc_relative */ | |
201 | + 0, /* bitpos */ | |
202 | + complain_overflow_dont, /* complain_on_overflow */ | |
203 | + bfd_elf_generic_reloc, /* special_function */ | |
204 | + "R_FRV_GPRELHI", /* name */ | |
205 | + false, /* partial_inplace */ | |
206 | + 0xffff, /* src_mask */ | |
207 | + 0xffff, /* dst_mask */ | |
208 | + false), /* pcrel_offset */ | |
209 | + | |
210 | + HOWTO (R_FRV_GPRELLO, /* type */ | |
211 | + 0, /* rightshift */ | |
212 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
213 | + 16, /* bitsize */ | |
214 | + false, /* pc_relative */ | |
215 | + 0, /* bitpos */ | |
216 | + complain_overflow_dont, /* complain_on_overflow */ | |
217 | + bfd_elf_generic_reloc, /* special_function */ | |
218 | + "R_FRV_GPRELLO", /* name */ | |
219 | + false, /* partial_inplace */ | |
220 | + 0xffff, /* src_mask */ | |
221 | + 0xffff, /* dst_mask */ | |
222 | + false), /* pcrel_offset */ | |
223 | +}; | |
224 | + | |
225 | +/* GNU extension to record C++ vtable hierarchy. */ | |
226 | +static reloc_howto_type elf32_frv_vtinherit_howto = | |
227 | + HOWTO (R_FRV_GNU_VTINHERIT, /* type */ | |
228 | + 0, /* rightshift */ | |
229 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
230 | + 0, /* bitsize */ | |
231 | + false, /* pc_relative */ | |
232 | + 0, /* bitpos */ | |
233 | + complain_overflow_dont, /* complain_on_overflow */ | |
234 | + NULL, /* special_function */ | |
235 | + "R_FRV_GNU_VTINHERIT", /* name */ | |
236 | + false, /* partial_inplace */ | |
237 | + 0, /* src_mask */ | |
238 | + 0, /* dst_mask */ | |
239 | + false); /* pcrel_offset */ | |
240 | + | |
241 | + /* GNU extension to record C++ vtable member usage. */ | |
242 | +static reloc_howto_type elf32_frv_vtentry_howto = | |
243 | + HOWTO (R_FRV_GNU_VTENTRY, /* type */ | |
244 | + 0, /* rightshift */ | |
245 | + 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
246 | + 0, /* bitsize */ | |
247 | + false, /* pc_relative */ | |
248 | + 0, /* bitpos */ | |
249 | + complain_overflow_dont, /* complain_on_overflow */ | |
250 | + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ | |
251 | + "R_FRV_GNU_VTENTRY", /* name */ | |
252 | + false, /* partial_inplace */ | |
253 | + 0, /* src_mask */ | |
254 | + 0, /* dst_mask */ | |
255 | + false); /* pcrel_offset */ | |
256 | + | |
257 | +/* Map BFD reloc types to FRV ELF reloc types. */ | |
258 | +#if 0 | |
259 | +struct frv_reloc_map | |
260 | +{ | |
261 | + unsigned int bfd_reloc_val; | |
262 | + unsigned int frv_reloc_val; | |
263 | +}; | |
264 | + | |
265 | +static const struct frv_reloc_map frv_reloc_map [] = | |
266 | +{ | |
267 | + { BFD_RELOC_NONE, R_FRV_NONE }, | |
268 | + { BFD_RELOC_32, R_FRV_32 }, | |
269 | + { BFD_RELOC_FRV_LABEL16, R_FRV_LABEL16 }, | |
270 | + { BFD_RELOC_FRV_LABEL24, R_FRV_LABEL24 }, | |
271 | + { BFD_RELOC_FRV_LO16, R_FRV_LO16 }, | |
272 | + { BFD_RELOC_FRV_HI16, R_FRV_HI16 }, | |
273 | + { BFD_RELOC_FRV_GPREL12, R_FRV_GPREL12 }, | |
274 | + { BFD_RELOC_FRV_GPRELU12, R_FRV_GPRELU12 }, | |
275 | + { BFD_RELOC_FRV_GPREL32, R_FRV_GPREL32 }, | |
276 | + { BFD_RELOC_FRV_GPRELHI, R_FRV_GPRELHI }, | |
277 | + { BFD_RELOC_FRV_GPRELLO, R_FRV_GPRELLO }, | |
278 | + { BFD_RELOC_VTABLE_INHERIT, R_FRV_GNU_VTINHERIT }, | |
279 | + { BFD_RELOC_VTABLE_ENTRY, R_FRV_GNU_VTENTRY }, | |
280 | +}; | |
281 | +#endif | |
282 | + | |
283 | +/* Handle an FRV small data reloc. */ | |
284 | + | |
285 | +static bfd_reloc_status_type | |
286 | +elf32_frv_relocate_gprel12 (info, input_bfd, input_section, relocation, contents, value) | |
287 | + struct bfd_link_info *info; | |
288 | + bfd *input_bfd; | |
289 | + asection *input_section; | |
290 | + Elf_Internal_Rela *relocation; | |
291 | + bfd_byte *contents; | |
292 | + bfd_vma value; | |
293 | +{ | |
294 | + bfd_vma insn; | |
295 | + bfd_vma gp; | |
296 | + struct bfd_link_hash_entry *h; | |
297 | + | |
298 | + h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true); | |
299 | + | |
300 | + gp = (h->u.def.value | |
301 | + + h->u.def.section->output_section->vma | |
302 | + + h->u.def.section->output_offset); | |
303 | + | |
304 | + value -= input_section->output_section->vma; | |
305 | + value -= (gp - input_section->output_section->vma); | |
306 | + | |
307 | + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); | |
308 | + | |
309 | + value += relocation->r_addend; | |
310 | + | |
311 | + if ((long) value > 0x7ff || (long) value < -0x800) | |
312 | + return bfd_reloc_overflow; | |
313 | + | |
314 | + bfd_put_32 (input_bfd, | |
315 | + (insn & 0xfffff000) | (value & 0xfff), | |
316 | + contents + relocation->r_offset); | |
317 | + | |
318 | + return bfd_reloc_ok; | |
319 | +} | |
320 | + | |
321 | +/* Handle an FRV small data reloc. for the u12 field. */ | |
322 | + | |
323 | +static bfd_reloc_status_type | |
324 | +elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, relocation, contents, value) | |
325 | + struct bfd_link_info *info; | |
326 | + bfd *input_bfd; | |
327 | + asection *input_section; | |
328 | + Elf_Internal_Rela *relocation; | |
329 | + bfd_byte *contents; | |
330 | + bfd_vma value; | |
331 | +{ | |
332 | + bfd_vma insn; | |
333 | + bfd_vma gp; | |
334 | + struct bfd_link_hash_entry *h; | |
335 | + bfd_vma mask; | |
336 | + | |
337 | + h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true); | |
338 | + | |
339 | + gp = (h->u.def.value | |
340 | + + h->u.def.section->output_section->vma | |
341 | + + h->u.def.section->output_offset); | |
342 | + | |
343 | + value -= input_section->output_section->vma; | |
344 | + value -= (gp - input_section->output_section->vma); | |
345 | + | |
346 | + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); | |
347 | + | |
348 | + value += relocation->r_addend; | |
349 | + | |
350 | + if ((long) value > 0x7ff || (long) value < -0x800) | |
351 | + return bfd_reloc_overflow; | |
352 | + | |
353 | + /* The high 6 bits go into bits 17-12. The low 6 bits go into bits 5-0. */ | |
354 | + mask = 0x3f03f; | |
355 | + insn = (insn & ~mask) | ((value & 0xfc0) << 12) | (value & 0x3f); | |
356 | + | |
357 | + bfd_put_32 (input_bfd, insn, contents + relocation->r_offset); | |
358 | + | |
359 | + return bfd_reloc_ok; | |
360 | +} | |
361 | + | |
362 | +/* Handle an FRV ELF HI16 reloc. */ | |
363 | + | |
364 | +static bfd_reloc_status_type | |
365 | +elf32_frv_relocate_hi16 (input_bfd, relhi, contents, value) | |
366 | + bfd *input_bfd; | |
367 | + Elf_Internal_Rela *relhi; | |
368 | + bfd_byte *contents; | |
369 | + bfd_vma value; | |
370 | +{ | |
371 | + bfd_vma insn; | |
372 | + | |
373 | + insn = bfd_get_32 (input_bfd, contents + relhi->r_offset); | |
374 | + | |
375 | + value += relhi->r_addend; | |
376 | + value = ((value >> 16) & 0xffff); | |
377 | + | |
378 | + insn = (insn & 0xffff0000) | value; | |
379 | + | |
380 | + if ((long) value > 0xffff || (long) value < -0x10000) | |
381 | + return bfd_reloc_overflow; | |
382 | + | |
383 | + bfd_put_32 (input_bfd, insn, contents + relhi->r_offset); | |
384 | + return bfd_reloc_ok; | |
385 | + | |
386 | +} | |
387 | +static bfd_reloc_status_type | |
388 | +elf32_frv_relocate_lo16 (input_bfd, rello, contents, value) | |
389 | + bfd *input_bfd; | |
390 | + Elf_Internal_Rela *rello; | |
391 | + bfd_byte *contents; | |
392 | + bfd_vma value; | |
393 | +{ | |
394 | + bfd_vma insn; | |
395 | + | |
396 | + insn = bfd_get_32 (input_bfd, contents + rello->r_offset); | |
397 | + | |
398 | + value += rello->r_addend; | |
399 | + value = value & 0xffff; | |
400 | + | |
401 | + insn = (insn & 0xffff0000) | value; | |
402 | + | |
403 | + if ((long) value > 0xffff || (long) value < -0x10000) | |
404 | + return bfd_reloc_overflow; | |
405 | + | |
406 | + bfd_put_32 (input_bfd, insn, contents + rello->r_offset); | |
407 | + return bfd_reloc_ok; | |
408 | +} | |
409 | + | |
410 | +/* Perform the relocation for the CALL label24 instruction. */ | |
411 | + | |
412 | +static bfd_reloc_status_type | |
413 | +elf32_frv_relocate_label24 (input_bfd, input_section, rello, contents, value) | |
414 | + bfd *input_bfd; | |
415 | + asection *input_section; | |
416 | + Elf_Internal_Rela *rello; | |
417 | + bfd_byte *contents; | |
418 | + bfd_vma value; | |
419 | +{ | |
420 | + bfd_vma insn; | |
421 | + bfd_vma label6; | |
422 | + bfd_vma label18; | |
423 | + | |
424 | + /* The format for the call instruction is: | |
425 | + | |
426 | + 0 000000 0001111 000000000000000000 | |
427 | + label6 opcode label18 | |
428 | + | |
429 | + The branch calculation is: pc + (4*label24) | |
430 | + where label24 is the concatenation of label6 and label18. */ | |
431 | + | |
432 | + /* Grab the instruction. */ | |
433 | + insn = bfd_get_32 (input_bfd, contents + rello->r_offset); | |
434 | + | |
435 | + value -= input_section->output_section->vma + input_section->output_offset; | |
436 | + value -= rello->r_offset; | |
437 | + value += rello->r_addend; | |
438 | + | |
439 | + value = value >> 2; | |
440 | + | |
441 | + label6 = value & 0xfc0000; | |
442 | + label6 = label6 << 7; | |
443 | + | |
444 | + label18 = value & 0x3ffff; | |
445 | + | |
446 | + insn = insn & 0x803c0000; | |
447 | + insn = insn | label6; | |
448 | + insn = insn | label18; | |
449 | + | |
450 | + bfd_put_32 (input_bfd, insn, contents + rello->r_offset); | |
451 | + | |
452 | + return bfd_reloc_ok; | |
453 | +} | |
454 | + | |
455 | +static bfd_reloc_status_type | |
456 | +elf32_frv_relocate_gprelhi (info, input_bfd, input_section, relocation, contents, value) | |
457 | + struct bfd_link_info *info; | |
458 | + bfd *input_bfd; | |
459 | + asection *input_section; | |
460 | + Elf_Internal_Rela *relocation; | |
461 | + bfd_byte *contents; | |
462 | + bfd_vma value; | |
463 | +{ | |
464 | + bfd_vma insn; | |
465 | + bfd_vma gp; | |
466 | + struct bfd_link_hash_entry *h; | |
467 | + | |
468 | + h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true); | |
469 | + | |
470 | + gp = (h->u.def.value | |
471 | + + h->u.def.section->output_section->vma | |
472 | + + h->u.def.section->output_offset); | |
473 | + | |
474 | + value -= input_section->output_section->vma; | |
475 | + value -= (gp - input_section->output_section->vma); | |
476 | + value += relocation->r_addend; | |
477 | + value = ((value >> 16) & 0xffff); | |
478 | + | |
479 | + if ((long) value > 0xffff || (long) value < -0x10000) | |
480 | + return bfd_reloc_overflow; | |
481 | + | |
482 | + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); | |
483 | + insn = (insn & 0xffff0000) | value; | |
484 | + | |
485 | + bfd_put_32 (input_bfd, insn, contents + relocation->r_offset); | |
486 | + return bfd_reloc_ok; | |
487 | +} | |
488 | + | |
489 | +static bfd_reloc_status_type | |
490 | +elf32_frv_relocate_gprello (info, input_bfd, input_section, relocation, contents, value) | |
491 | + struct bfd_link_info *info; | |
492 | + bfd *input_bfd; | |
493 | + asection *input_section; | |
494 | + Elf_Internal_Rela *relocation; | |
495 | + bfd_byte *contents; | |
496 | + bfd_vma value; | |
497 | +{ | |
498 | + bfd_vma insn; | |
499 | + bfd_vma gp; | |
500 | + struct bfd_link_hash_entry *h; | |
501 | + | |
502 | + h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true); | |
503 | + | |
504 | + gp = (h->u.def.value | |
505 | + + h->u.def.section->output_section->vma | |
506 | + + h->u.def.section->output_offset); | |
507 | + | |
508 | + value -= input_section->output_section->vma; | |
509 | + value -= (gp - input_section->output_section->vma); | |
510 | + value += relocation->r_addend; | |
511 | + value = value & 0xffff; | |
512 | + | |
513 | + if ((long) value > 0xffff || (long) value < -0x10000) | |
514 | + return bfd_reloc_overflow; | |
515 | + | |
516 | + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); | |
517 | + insn = (insn & 0xffff0000) | value; | |
518 | + | |
519 | + bfd_put_32 (input_bfd, insn, contents + relocation->r_offset); | |
520 | + | |
521 | + return bfd_reloc_ok; | |
522 | +} | |
523 | + | |
524 | +static reloc_howto_type * | |
525 | +frv_reloc_type_lookup (abfd, code) | |
526 | + bfd * abfd ATTRIBUTE_UNUSED; | |
527 | + bfd_reloc_code_real_type code; | |
528 | +{ | |
529 | + switch (code) | |
530 | + { | |
531 | + default: | |
532 | + break; | |
533 | + | |
534 | + case BFD_RELOC_NONE: | |
535 | + return &elf32_frv_howto_table[ (int) R_FRV_NONE]; | |
536 | + | |
537 | + case BFD_RELOC_32: | |
538 | + case BFD_RELOC_CTOR: | |
539 | + return &elf32_frv_howto_table[ (int) R_FRV_32]; | |
540 | + | |
541 | + case BFD_RELOC_FRV_LABEL16: | |
542 | + return &elf32_frv_howto_table[ (int) R_FRV_LABEL16]; | |
543 | + | |
544 | + case BFD_RELOC_FRV_LABEL24: | |
545 | + return &elf32_frv_howto_table[ (int) R_FRV_LABEL24]; | |
546 | + | |
547 | + case BFD_RELOC_FRV_LO16: | |
548 | + return &elf32_frv_howto_table[ (int) R_FRV_LO16]; | |
549 | + | |
550 | + case BFD_RELOC_FRV_HI16: | |
551 | + return &elf32_frv_howto_table[ (int) R_FRV_HI16]; | |
552 | + | |
553 | + case BFD_RELOC_FRV_GPREL12: | |
554 | + return &elf32_frv_howto_table[ (int) R_FRV_GPREL12]; | |
555 | + | |
556 | + case BFD_RELOC_FRV_GPRELU12: | |
557 | + return &elf32_frv_howto_table[ (int) R_FRV_GPRELU12]; | |
558 | + | |
559 | + case BFD_RELOC_FRV_GPREL32: | |
560 | + return &elf32_frv_howto_table[ (int) R_FRV_GPREL32]; | |
561 | + | |
562 | + case BFD_RELOC_FRV_GPRELHI: | |
563 | + return &elf32_frv_howto_table[ (int) R_FRV_GPRELHI]; | |
564 | + | |
565 | + case BFD_RELOC_FRV_GPRELLO: | |
566 | + return &elf32_frv_howto_table[ (int) R_FRV_GPRELLO]; | |
567 | + | |
568 | + case BFD_RELOC_VTABLE_INHERIT: | |
569 | + return &elf32_frv_vtinherit_howto; | |
570 | + | |
571 | + case BFD_RELOC_VTABLE_ENTRY: | |
572 | + return &elf32_frv_vtentry_howto; | |
573 | + } | |
574 | + | |
575 | + return NULL; | |
576 | +} | |
577 | + | |
578 | +/* Set the howto pointer for an FRV ELF reloc. */ | |
579 | + | |
580 | +static void | |
581 | +frv_info_to_howto_rela (abfd, cache_ptr, dst) | |
582 | + bfd * abfd ATTRIBUTE_UNUSED; | |
583 | + arelent * cache_ptr; | |
584 | + Elf32_Internal_Rela * dst; | |
585 | +{ | |
586 | + unsigned int r_type; | |
587 | + | |
588 | + r_type = ELF32_R_TYPE (dst->r_info); | |
589 | + switch (r_type) | |
590 | + { | |
591 | + case R_FRV_GNU_VTINHERIT: | |
592 | + cache_ptr->howto = &elf32_frv_vtinherit_howto; | |
593 | + break; | |
594 | + | |
595 | + case R_FRV_GNU_VTENTRY: | |
596 | + cache_ptr->howto = &elf32_frv_vtentry_howto; | |
597 | + break; | |
598 | + | |
599 | + default: | |
600 | + cache_ptr->howto = & elf32_frv_howto_table [r_type]; | |
601 | + break; | |
602 | + } | |
603 | +} | |
604 | + | |
605 | +/* Perform a single relocation. By default we use the standard BFD | |
606 | + routines, but a few relocs, we have to do them ourselves. */ | |
607 | + | |
608 | +static bfd_reloc_status_type | |
609 | +frv_final_link_relocate (howto, input_bfd, input_section, contents, rel, relocation) | |
610 | + reloc_howto_type * howto; | |
611 | + bfd * input_bfd; | |
612 | + asection * input_section; | |
613 | + bfd_byte * contents; | |
614 | + Elf_Internal_Rela * rel; | |
615 | + bfd_vma relocation; | |
616 | +{ | |
617 | + return _bfd_final_link_relocate (howto, input_bfd, input_section, | |
618 | + contents, rel->r_offset, relocation, | |
619 | + rel->r_addend); | |
620 | +} | |
621 | + | |
622 | + | |
623 | +/* Relocate an FRV ELF section. | |
624 | + There is some attempt to make this function usable for many architectures, | |
625 | + both USE_REL and USE_RELA ['twould be nice if such a critter existed], | |
626 | + if only to serve as a learning tool. | |
627 | + | |
628 | + The RELOCATE_SECTION function is called by the new ELF backend linker | |
629 | + to handle the relocations for a section. | |
630 | + | |
631 | + The relocs are always passed as Rela structures; if the section | |
632 | + actually uses Rel structures, the r_addend field will always be | |
633 | + zero. | |
634 | + | |
635 | + This function is responsible for adjusting the section contents as | |
636 | + necessary, and (if using Rela relocs and generating a relocateable | |
637 | + output file) adjusting the reloc addend as necessary. | |
638 | + | |
639 | + This function does not have to worry about setting the reloc | |
640 | + address or the reloc symbol index. | |
641 | + | |
642 | + LOCAL_SYMS is a pointer to the swapped in local symbols. | |
643 | + | |
644 | + LOCAL_SECTIONS is an array giving the section in the input file | |
645 | + corresponding to the st_shndx field of each local symbol. | |
646 | + | |
647 | + The global hash table entry for the global symbols can be found | |
648 | + via elf_sym_hashes (input_bfd). | |
649 | + | |
650 | + When generating relocateable output, this function must handle | |
651 | + STB_LOCAL/STT_SECTION symbols specially. The output symbol is | |
652 | + going to be the section symbol corresponding to the output | |
653 | + section, which means that the addend must be adjusted | |
654 | + accordingly. */ | |
655 | + | |
656 | +static boolean | |
657 | +elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section, | |
658 | + contents, relocs, local_syms, local_sections) | |
659 | + bfd * output_bfd ATTRIBUTE_UNUSED; | |
660 | + struct bfd_link_info * info; | |
661 | + bfd * input_bfd; | |
662 | + asection * input_section; | |
663 | + bfd_byte * contents; | |
664 | + Elf_Internal_Rela * relocs; | |
665 | + Elf_Internal_Sym * local_syms; | |
666 | + asection ** local_sections; | |
667 | +{ | |
668 | + Elf_Internal_Shdr * symtab_hdr; | |
669 | + struct elf_link_hash_entry ** sym_hashes; | |
670 | + Elf_Internal_Rela * rel; | |
671 | + Elf_Internal_Rela * relend; | |
672 | + | |
673 | + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; | |
674 | + sym_hashes = elf_sym_hashes (input_bfd); | |
675 | + relend = relocs + input_section->reloc_count; | |
676 | + | |
677 | + for (rel = relocs; rel < relend; rel ++) | |
678 | + { | |
679 | + reloc_howto_type * howto; | |
680 | + unsigned long r_symndx; | |
681 | + Elf_Internal_Sym * sym; | |
682 | + asection * sec; | |
683 | + struct elf_link_hash_entry * h; | |
684 | + bfd_vma relocation; | |
685 | + bfd_reloc_status_type r; | |
686 | + const char * name = NULL; | |
687 | + int r_type; | |
688 | + | |
689 | + r_type = ELF32_R_TYPE (rel->r_info); | |
690 | + | |
691 | + if ( r_type == R_FRV_GNU_VTINHERIT | |
692 | + || r_type == R_FRV_GNU_VTENTRY) | |
693 | + continue; | |
694 | + | |
695 | + r_symndx = ELF32_R_SYM (rel->r_info); | |
696 | + | |
697 | + if (info->relocateable) | |
698 | + { | |
699 | + /* This is a relocateable link. We don't have to change | |
700 | + anything, unless the reloc is against a section symbol, | |
701 | + in which case we have to adjust according to where the | |
702 | + section symbol winds up in the output section. */ | |
703 | + if (r_symndx < symtab_hdr->sh_info) | |
704 | + { | |
705 | + sym = local_syms + r_symndx; | |
706 | + | |
707 | + if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) | |
708 | + { | |
709 | + sec = local_sections [r_symndx]; | |
710 | + rel->r_addend += sec->output_offset + sym->st_value; | |
711 | + } | |
712 | + } | |
713 | + | |
714 | + continue; | |
715 | + } | |
716 | + | |
717 | + /* This is a final link. */ | |
718 | + howto = elf32_frv_howto_table + ELF32_R_TYPE (rel->r_info); | |
719 | + h = NULL; | |
720 | + sym = NULL; | |
721 | + sec = NULL; | |
722 | + | |
723 | + if (r_symndx < symtab_hdr->sh_info) | |
724 | + { | |
725 | + sym = local_syms + r_symndx; | |
726 | + sec = local_sections [r_symndx]; | |
727 | + relocation = (sec->output_section->vma | |
728 | + + sec->output_offset | |
729 | + + sym->st_value); | |
730 | + | |
731 | + name = bfd_elf_string_from_elf_section | |
732 | + (input_bfd, symtab_hdr->sh_link, sym->st_name); | |
733 | + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; | |
734 | + } | |
735 | + else | |
736 | + { | |
737 | + h = sym_hashes [r_symndx - symtab_hdr->sh_info]; | |
738 | + | |
739 | + while (h->root.type == bfd_link_hash_indirect | |
740 | + || h->root.type == bfd_link_hash_warning) | |
741 | + h = (struct elf_link_hash_entry *) h->root.u.i.link; | |
742 | + | |
743 | + name = h->root.root.string; | |
744 | + | |
745 | + if (h->root.type == bfd_link_hash_defined | |
746 | + || h->root.type == bfd_link_hash_defweak) | |
747 | + { | |
748 | + sec = h->root.u.def.section; | |
749 | + relocation = (h->root.u.def.value | |
750 | + + sec->output_section->vma | |
751 | + + sec->output_offset); | |
752 | + } | |
753 | + else if (h->root.type == bfd_link_hash_undefweak) | |
754 | + { | |
755 | + relocation = 0; | |
756 | + } | |
757 | + else | |
758 | + { | |
759 | + if (! ((*info->callbacks->undefined_symbol) | |
760 | + (info, h->root.root.string, input_bfd, | |
761 | + input_section, rel->r_offset, true))) | |
762 | + return false; | |
763 | + relocation = 0; | |
764 | + } | |
765 | + } | |
766 | + | |
767 | + if (r_type == R_FRV_HI16) | |
768 | + r = elf32_frv_relocate_hi16 (input_bfd, rel, contents, relocation); | |
769 | + | |
770 | + else if (r_type == R_FRV_LO16) | |
771 | + r = elf32_frv_relocate_lo16 (input_bfd, rel, contents, relocation); | |
772 | + | |
773 | + else if (r_type == R_FRV_LABEL24) | |
774 | + r = elf32_frv_relocate_label24 (input_bfd, input_section, rel, contents, relocation); | |
775 | + | |
776 | + else if (r_type == R_FRV_GPREL12) | |
777 | + r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel, contents, relocation); | |
778 | + | |
779 | + else if (r_type == R_FRV_GPRELU12) | |
780 | + r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel, contents, relocation); | |
781 | + | |
782 | + else if (r_type == R_FRV_GPRELLO) | |
783 | + r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel, contents, relocation); | |
784 | + | |
785 | + else if (r_type == R_FRV_GPRELHI) | |
786 | + r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel, contents, relocation); | |
787 | + | |
788 | + else | |
789 | + r = frv_final_link_relocate (howto, input_bfd, input_section, contents, rel, relocation); | |
790 | + | |
791 | + if (r != bfd_reloc_ok) | |
792 | + { | |
793 | + const char * msg = (const char *) NULL; | |
794 | + | |
795 | + switch (r) | |
796 | + { | |
797 | + case bfd_reloc_overflow: | |
798 | + r = info->callbacks->reloc_overflow | |
799 | + (info, name, howto->name, (bfd_vma) 0, | |
800 | + input_bfd, input_section, rel->r_offset); | |
801 | + break; | |
802 | + | |
803 | + case bfd_reloc_undefined: | |
804 | + r = info->callbacks->undefined_symbol | |
805 | + (info, name, input_bfd, input_section, rel->r_offset, true); | |
806 | + break; | |
807 | + | |
808 | + case bfd_reloc_outofrange: | |
809 | + msg = _("internal error: out of range error"); | |
810 | + break; | |
811 | + | |
812 | + case bfd_reloc_notsupported: | |
813 | + msg = _("internal error: unsupported relocation error"); | |
814 | + break; | |
815 | + | |
816 | + case bfd_reloc_dangerous: | |
817 | + msg = _("internal error: dangerous relocation"); | |
818 | + break; | |
819 | + | |
820 | + default: | |
821 | + msg = _("internal error: unknown error"); | |
822 | + break; | |
823 | + } | |
824 | + | |
825 | + if (msg) | |
826 | + r = info->callbacks->warning | |
827 | + (info, msg, name, input_bfd, input_section, rel->r_offset); | |
828 | + | |
829 | + if (! r) | |
830 | + return false; | |
831 | + } | |
832 | + } | |
833 | + | |
834 | + return true; | |
835 | +} | |
836 | + | |
837 | +/* Return the section that should be marked against GC for a given | |
838 | + relocation. */ | |
839 | + | |
840 | +static asection * | |
841 | +elf32_frv_gc_mark_hook (abfd, info, rel, h, sym) | |
842 | + bfd * abfd; | |
843 | + struct bfd_link_info * info ATTRIBUTE_UNUSED; | |
844 | + Elf_Internal_Rela * rel; | |
845 | + struct elf_link_hash_entry * h; | |
846 | + Elf_Internal_Sym * sym; | |
847 | +{ | |
848 | + if (h != NULL) | |
849 | + { | |
850 | + switch (ELF32_R_TYPE (rel->r_info)) | |
851 | + { | |
852 | + case R_FRV_GNU_VTINHERIT: | |
853 | + case R_FRV_GNU_VTENTRY: | |
854 | + break; | |
855 | + | |
856 | + default: | |
857 | + switch (h->root.type) | |
858 | + { | |
859 | + default: | |
860 | + break; | |
861 | + | |
862 | + case bfd_link_hash_defined: | |
863 | + case bfd_link_hash_defweak: | |
864 | + return h->root.u.def.section; | |
865 | + | |
866 | + case bfd_link_hash_common: | |
867 | + return h->root.u.c.p->section; | |
868 | + } | |
869 | + } | |
870 | + } | |
871 | + else | |
872 | + { | |
873 | + if (!(elf_bad_symtab (abfd) | |
874 | + && ELF_ST_BIND (sym->st_info) != STB_LOCAL) | |
875 | + && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) | |
876 | + && sym->st_shndx != SHN_COMMON)) | |
877 | + return bfd_section_from_elf_index (abfd, sym->st_shndx); | |
878 | + } | |
879 | + | |
880 | + return NULL; | |
881 | +} | |
882 | + | |
883 | +/* Update the got entry reference counts for the section being removed. */ | |
884 | + | |
885 | +static boolean | |
886 | +elf32_frv_gc_sweep_hook (abfd, info, sec, relocs) | |
887 | + bfd * abfd ATTRIBUTE_UNUSED; | |
888 | + struct bfd_link_info * info ATTRIBUTE_UNUSED; | |
889 | + asection * sec ATTRIBUTE_UNUSED; | |
890 | + const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED; | |
891 | +{ | |
892 | + return true; | |
893 | +} | |
894 | + | |
895 | + | |
896 | +/* Hook called by the linker routine which adds symbols from an object | |
897 | + file. We use it to put .comm items in .scomm, and not .comm. */ | |
898 | + | |
899 | +static boolean | |
900 | +elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) | |
901 | + bfd *abfd; | |
902 | + struct bfd_link_info *info; | |
903 | + const Elf_Internal_Sym *sym; | |
904 | + const char **namep ATTRIBUTE_UNUSED; | |
905 | + flagword *flagsp ATTRIBUTE_UNUSED; | |
906 | + asection **secp; | |
907 | + bfd_vma *valp; | |
908 | +{ | |
909 | + if (sym->st_shndx == SHN_COMMON | |
910 | + && !info->relocateable | |
911 | + && (int)sym->st_size <= (int)bfd_get_gp_size (abfd)) | |
912 | + { | |
913 | + /* Common symbols less than or equal to -G nn bytes are | |
914 | + automatically put into .sbss. */ | |
915 | + | |
916 | + asection *scomm = bfd_get_section_by_name (abfd, ".scommon"); | |
917 | + | |
918 | + if (scomm == NULL) | |
919 | + { | |
920 | + scomm = bfd_make_section (abfd, ".scommon"); | |
921 | + if (scomm == NULL | |
922 | + || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC | |
923 | + | SEC_IS_COMMON | |
924 | + | SEC_LINKER_CREATED))) | |
925 | + return false; | |
926 | + } | |
927 | + | |
928 | + *secp = scomm; | |
929 | + *valp = sym->st_size; | |
930 | + } | |
931 | + | |
932 | + return true; | |
933 | +} | |
934 | +/* Look through the relocs for a section during the first phase. | |
935 | + Since we don't do .gots or .plts, we just need to consider the | |
936 | + virtual table relocs for gc. */ | |
937 | + | |
938 | +static boolean | |
939 | +elf32_frv_check_relocs (abfd, info, sec, relocs) | |
940 | + bfd *abfd; | |
941 | + struct bfd_link_info *info; | |
942 | + asection *sec; | |
943 | + const Elf_Internal_Rela *relocs; | |
944 | +{ | |
945 | + Elf_Internal_Shdr *symtab_hdr; | |
946 | + struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; | |
947 | + const Elf_Internal_Rela *rel; | |
948 | + const Elf_Internal_Rela *rel_end; | |
949 | + | |
950 | + if (info->relocateable) | |
951 | + return true; | |
952 | + | |
953 | + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; | |
954 | + sym_hashes = elf_sym_hashes (abfd); | |
955 | + sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym); | |
956 | + if (!elf_bad_symtab (abfd)) | |
957 | + sym_hashes_end -= symtab_hdr->sh_info; | |
958 | + | |
959 | + rel_end = relocs + sec->reloc_count; | |
960 | + for (rel = relocs; rel < rel_end; rel++) | |
961 | + { | |
962 | + struct elf_link_hash_entry *h; | |
963 | + unsigned long r_symndx; | |
964 | + | |
965 | + r_symndx = ELF32_R_SYM (rel->r_info); | |
966 | + if (r_symndx < symtab_hdr->sh_info) | |
967 | + h = NULL; | |
968 | + else | |
969 | + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; | |
970 | + | |
971 | + switch (ELF32_R_TYPE (rel->r_info)) | |
972 | + { | |
973 | + /* This relocation describes the C++ object vtable hierarchy. | |
974 | + Reconstruct it for later use during GC. */ | |
975 | + case R_FRV_GNU_VTINHERIT: | |
976 | + if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset)) | |
977 | + return false; | |
978 | + break; | |
979 | + | |
980 | + /* This relocation describes which C++ vtable entries are actually | |
981 | + used. Record for later use during GC. */ | |
982 | + case R_FRV_GNU_VTENTRY: | |
983 | + if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend)) | |
984 | + return false; | |
985 | + break; | |
986 | + } | |
987 | + } | |
988 | + | |
989 | + return true; | |
990 | +} | |
991 | + | |
992 | + | |
993 | +/* Return the machine subcode from the ELF e_flags header. */ | |
994 | + | |
995 | +static int | |
996 | +elf32_frv_machine (abfd) | |
997 | + bfd *abfd; | |
998 | +{ | |
999 | + switch (elf_elfheader (abfd)->e_flags & EF_FRV_CPU_MASK) | |
1000 | + { | |
1001 | + default: break; | |
1002 | + case EF_FRV_CPU_FR500: return bfd_mach_fr500; | |
1003 | + case EF_FRV_CPU_FR400: return bfd_mach_fr400; | |
1004 | + case EF_FRV_CPU_FR300: return bfd_mach_fr300; | |
1005 | + case EF_FRV_CPU_SIMPLE: return bfd_mach_frvsimple; | |
1006 | + case EF_FRV_CPU_TOMCAT: return bfd_mach_frvtomcat; | |
1007 | + } | |
1008 | + | |
1009 | + return bfd_mach_frv; | |
1010 | +} | |
1011 | + | |
1012 | +/* Set the right machine number for a FRV ELF file. */ | |
1013 | + | |
1014 | +static boolean | |
1015 | +elf32_frv_object_p (abfd) | |
1016 | + bfd *abfd; | |
1017 | +{ | |
1018 | + bfd_default_set_arch_mach (abfd, bfd_arch_frv, elf32_frv_machine (abfd)); | |
1019 | + return true; | |
1020 | +} | |
1021 | + | |
1022 | +/* Function to set the ELF flag bits. */ | |
1023 | + | |
1024 | +static boolean | |
1025 | +frv_elf_set_private_flags (abfd, flags) | |
1026 | + bfd *abfd; | |
1027 | + flagword flags; | |
1028 | +{ | |
1029 | + elf_elfheader (abfd)->e_flags = flags; | |
1030 | + elf_flags_init (abfd) = true; | |
1031 | + return true; | |
1032 | +} | |
1033 | + | |
1034 | +/* Copy backend specific data from one object module to another. */ | |
1035 | + | |
1036 | +static boolean | |
1037 | +frv_elf_copy_private_bfd_data (ibfd, obfd) | |
1038 | + bfd *ibfd; | |
1039 | + bfd *obfd; | |
1040 | +{ | |
1041 | + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour | |
1042 | + || bfd_get_flavour (obfd) != bfd_target_elf_flavour) | |
1043 | + return true; | |
1044 | + | |
1045 | + BFD_ASSERT (!elf_flags_init (obfd) | |
1046 | + || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags); | |
1047 | + | |
1048 | + elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; | |
1049 | + elf_flags_init (obfd) = true; | |
1050 | + return true; | |
1051 | +} | |
1052 | + | |
1053 | +/* Merge backend specific data from an object file to the output | |
1054 | + object file when linking. */ | |
1055 | + | |
1056 | +static boolean | |
1057 | +frv_elf_merge_private_bfd_data (ibfd, obfd) | |
1058 | + bfd *ibfd; | |
1059 | + bfd *obfd; | |
1060 | +{ | |
1061 | + flagword old_flags, old_partial; | |
1062 | + flagword new_flags, new_partial; | |
1063 | + boolean error = false; | |
1064 | + char new_opt[80]; | |
1065 | + char old_opt[80]; | |
1066 | + | |
1067 | + new_opt[0] = old_opt[0] = '\0'; | |
1068 | + new_flags = elf_elfheader (ibfd)->e_flags; | |
1069 | + old_flags = elf_elfheader (obfd)->e_flags; | |
1070 | + | |
1071 | +#ifdef DEBUG | |
1072 | + (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s", | |
1073 | + old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no", | |
1074 | + bfd_get_filename (ibfd)); | |
1075 | +#endif | |
1076 | + | |
1077 | + if (!elf_flags_init (obfd)) /* First call, no flags set. */ | |
1078 | + { | |
1079 | + elf_flags_init (obfd) = true; | |
1080 | + old_flags = new_flags; | |
1081 | + } | |
1082 | + | |
1083 | + else if (new_flags == old_flags) /* Compatible flags are ok. */ | |
1084 | + ; | |
1085 | + | |
1086 | + else /* Possibly incompatible flags. */ | |
1087 | + { | |
1088 | + /* Warn if different # of gprs are used. Note, 0 means nothing is | |
1089 | + said about the size of gprs. */ | |
1090 | + new_partial = (new_flags & EF_FRV_GPR_MASK); | |
1091 | + old_partial = (old_flags & EF_FRV_GPR_MASK); | |
1092 | + if (new_partial == old_partial) | |
1093 | + ; | |
1094 | + | |
1095 | + else if (new_partial == 0) | |
1096 | + ; | |
1097 | + | |
1098 | + else if (old_partial == 0) | |
1099 | + old_flags |= new_partial; | |
1100 | + | |
1101 | + else | |
1102 | + { | |
1103 | + switch (new_partial) | |
1104 | + { | |
1105 | + default: strcat (new_opt, " -mgpr-??"); break; | |
1106 | + case EF_FRV_GPR_32: strcat (new_opt, " -mgpr-32"); break; | |
1107 | + case EF_FRV_GPR_64: strcat (new_opt, " -mgpr-64"); break; | |
1108 | + } | |
1109 | + | |
1110 | + switch (old_partial) | |
1111 | + { | |
1112 | + default: strcat (old_opt, " -mgpr-??"); break; | |
1113 | + case EF_FRV_GPR_32: strcat (old_opt, " -mgpr-32"); break; | |
1114 | + case EF_FRV_GPR_64: strcat (old_opt, " -mgpr-64"); break; | |
1115 | + } | |
1116 | + } | |
1117 | + | |
1118 | + /* Warn if different # of fprs are used. Note, 0 means nothing is | |
1119 | + said about the size of fprs. */ | |
1120 | + new_partial = (new_flags & EF_FRV_FPR_MASK); | |
1121 | + old_partial = (old_flags & EF_FRV_FPR_MASK); | |
1122 | + if (new_partial == old_partial) | |
1123 | + ; | |
1124 | + | |
1125 | + else if (new_partial == 0) | |
1126 | + ; | |
1127 | + | |
1128 | + else if (old_partial == 0) | |
1129 | + old_flags |= new_partial; | |
1130 | + | |
1131 | + else | |
1132 | + { | |
1133 | + switch (new_partial) | |
1134 | + { | |
1135 | + default: strcat (new_opt, " -mfpr-?"); break; | |
1136 | + case EF_FRV_FPR_32: strcat (new_opt, " -mfpr-32"); break; | |
1137 | + case EF_FRV_FPR_64: strcat (new_opt, " -mfpr-64"); break; | |
1138 | + case EF_FRV_FPR_NONE: strcat (new_opt, " -msoft-float"); break; | |
1139 | + } | |
1140 | + | |
1141 | + switch (old_partial) | |
1142 | + { | |
1143 | + default: strcat (old_opt, " -mfpr-?"); break; | |
1144 | + case EF_FRV_FPR_32: strcat (old_opt, " -mfpr-32"); break; | |
1145 | + case EF_FRV_FPR_64: strcat (old_opt, " -mfpr-64"); break; | |
1146 | + case EF_FRV_FPR_NONE: strcat (old_opt, " -msoft-float"); break; | |
1147 | + } | |
1148 | + } | |
1149 | + | |
1150 | + /* Warn if different dword support was used. Note, 0 means nothing is | |
1151 | + said about the dword support. */ | |
1152 | + new_partial = (new_flags & EF_FRV_DWORD_MASK); | |
1153 | + old_partial = (old_flags & EF_FRV_DWORD_MASK); | |
1154 | + if (new_partial == old_partial) | |
1155 | + ; | |
1156 | + | |
1157 | + else if (new_partial == 0) | |
1158 | + ; | |
1159 | + | |
1160 | + else if (old_partial == 0) | |
1161 | + old_flags |= new_partial; | |
1162 | + | |
1163 | + else | |
1164 | + { | |
1165 | + switch (new_partial) | |
1166 | + { | |
1167 | + default: strcat (new_opt, " -mdword-?"); break; | |
1168 | + case EF_FRV_DWORD_YES: strcat (new_opt, " -mdword"); break; | |
1169 | + case EF_FRV_DWORD_NO: strcat (new_opt, " -mno-dword"); break; | |
1170 | + } | |
1171 | + | |
1172 | + switch (old_partial) | |
1173 | + { | |
1174 | + default: strcat (old_opt, " -mdword-?"); break; | |
1175 | + case EF_FRV_DWORD_YES: strcat (old_opt, " -mdword"); break; | |
1176 | + case EF_FRV_DWORD_NO: strcat (old_opt, " -mno-dword"); break; | |
1177 | + } | |
1178 | + } | |
1179 | + | |
1180 | + /* Or in flags that accumulate (ie, if one module uses it, mark that the | |
1181 | + feature is used. */ | |
1182 | + old_flags |= new_flags & (EF_FRV_DOUBLE | |
1183 | + | EF_FRV_MEDIA | |
1184 | + | EF_FRV_MULADD | |
1185 | + | EF_FRV_NON_PIC_RELOCS); | |
1186 | + | |
1187 | + /* If any module was compiled without -G0, clear the G0 bit. */ | |
1188 | + old_flags = ((old_flags & ~ EF_FRV_G0) | |
1189 | + | (old_flags & new_flags & EF_FRV_G0)); | |
1190 | + | |
1191 | + /* If any module was compiled without -mnopack, clear the mnopack bit. */ | |
1192 | + old_flags = ((old_flags & ~ EF_FRV_NOPACK) | |
1193 | + | (old_flags & new_flags & EF_FRV_NOPACK)); | |
1194 | + | |
1195 | + /* We don't have to do anything if the pic flags are the same, or the new | |
1196 | + module(s) were compiled with -mlibrary-pic. */ | |
1197 | + new_partial = (new_flags & EF_FRV_PIC_FLAGS); | |
1198 | + old_partial = (old_flags & EF_FRV_PIC_FLAGS); | |
1199 | + if ((new_partial == old_partial) || ((new_partial & EF_FRV_LIBPIC) != 0)) | |
1200 | + ; | |
1201 | + | |
1202 | + /* If the old module(s) were compiled with -mlibrary-pic, copy in the pic | |
1203 | + flags if any from the new module. */ | |
1204 | + else if ((old_partial & EF_FRV_LIBPIC) != 0) | |
1205 | + old_flags = (old_flags & ~ EF_FRV_PIC_FLAGS) | new_partial; | |
1206 | + | |
1207 | + /* If we have mixtures of -fpic and -fPIC, or in both bits. */ | |
1208 | + else if (new_partial != 0 && old_partial != 0) | |
1209 | + old_flags |= new_partial; | |
1210 | + | |
1211 | + /* One module was compiled for pic and the other was not, see if we have | |
1212 | + had any relocations that are not pic-safe. */ | |
1213 | + else | |
1214 | + { | |
1215 | + if ((old_flags & EF_FRV_NON_PIC_RELOCS) == 0) | |
1216 | + old_flags |= new_partial; | |
1217 | + else | |
1218 | + { | |
1219 | + old_flags &= ~ EF_FRV_PIC_FLAGS; | |
1220 | +#ifndef FRV_NO_PIC_ERROR | |
1221 | + error = true; | |
1222 | + (*_bfd_error_handler) | |
1223 | + (_("%s: compiled with %s and linked with modules that use non-pic relocations"), | |
1224 | + bfd_get_filename (ibfd), | |
1225 | + (new_flags & EF_FRV_BIGPIC) ? "-fPIC" : "-fpic"); | |
1226 | +#endif | |
1227 | + } | |
1228 | + } | |
1229 | + | |
1230 | + /* Warn if different cpu is used (allow a specific cpu to override | |
1231 | + the generic cpu). */ | |
1232 | + new_partial = (new_flags & EF_FRV_CPU_MASK); | |
1233 | + old_partial = (old_flags & EF_FRV_CPU_MASK); | |
1234 | + if (new_partial == old_partial) | |
1235 | + ; | |
1236 | + | |
1237 | + else if (new_partial == EF_FRV_CPU_GENERIC) | |
1238 | + ; | |
1239 | + | |
1240 | + else if (old_partial == EF_FRV_CPU_GENERIC) | |
1241 | + old_flags = (old_flags & ~EF_FRV_CPU_MASK) | new_partial; | |
1242 | + | |
1243 | + else | |
1244 | + { | |
1245 | + switch (new_partial) | |
1246 | + { | |
1247 | + default: strcat (new_opt, " -mcpu=?"); break; | |
1248 | + case EF_FRV_CPU_GENERIC: strcat (new_opt, " -mcpu=frv"); break; | |
1249 | + case EF_FRV_CPU_SIMPLE: strcat (new_opt, " -mcpu=simple"); break; | |
1250 | + case EF_FRV_CPU_FR500: strcat (new_opt, " -mcpu=fr500"); break; | |
1251 | + case EF_FRV_CPU_FR400: strcat (new_opt, " -mcpu=fr400"); break; | |
1252 | + case EF_FRV_CPU_FR300: strcat (new_opt, " -mcpu=fr300"); break; | |
1253 | + case EF_FRV_CPU_TOMCAT: strcat (new_opt, " -mcpu=tomcat"); break; | |
1254 | + } | |
1255 | + | |
1256 | + switch (old_partial) | |
1257 | + { | |
1258 | + default: strcat (old_opt, " -mcpu=?"); break; | |
1259 | + case EF_FRV_CPU_GENERIC: strcat (old_opt, " -mcpu=frv"); break; | |
1260 | + case EF_FRV_CPU_SIMPLE: strcat (old_opt, " -mcpu=simple"); break; | |
1261 | + case EF_FRV_CPU_FR500: strcat (old_opt, " -mcpu=fr500"); break; | |
1262 | + case EF_FRV_CPU_FR400: strcat (old_opt, " -mcpu=fr400"); break; | |
1263 | + case EF_FRV_CPU_FR300: strcat (old_opt, " -mcpu=fr300"); break; | |
1264 | + case EF_FRV_CPU_TOMCAT: strcat (old_opt, " -mcpu=tomcat"); break; | |
1265 | + } | |
1266 | + } | |
1267 | + | |
1268 | + /* Print out any mismatches from above. */ | |
1269 | + if (new_opt[0]) | |
1270 | + { | |
1271 | + error = true; | |
1272 | + (*_bfd_error_handler) | |
1273 | + (_("%s: compiled with %s and linked with modules compiled with %s"), | |
1274 | + bfd_get_filename (ibfd), new_opt, old_opt); | |
1275 | + } | |
1276 | + | |
1277 | + /* Warn about any other mismatches */ | |
1278 | + new_partial = (new_flags & ~ EF_FRV_ALL_FLAGS); | |
1279 | + old_partial = (old_flags & ~ EF_FRV_ALL_FLAGS); | |
1280 | + if (new_partial != old_partial) | |
1281 | + { | |
1282 | + old_flags |= new_partial; | |
1283 | + error = true; | |
1284 | + (*_bfd_error_handler) | |
1285 | + (_("%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"), | |
1286 | + bfd_get_filename (ibfd), (long)new_partial, (long)old_partial); | |
1287 | + } | |
1288 | + } | |
1289 | + | |
1290 | + /* If the cpu is -mcpu=simple, then set the -mnopack bit. */ | |
1291 | + if ((old_flags & EF_FRV_CPU_MASK) == EF_FRV_CPU_SIMPLE) | |
1292 | + old_flags |= EF_FRV_NOPACK; | |
1293 | + | |
1294 | + /* Update the old flags now with changes made above. */ | |
1295 | + old_partial = elf_elfheader (obfd)->e_flags & EF_FRV_CPU_MASK; | |
1296 | + elf_elfheader (obfd)->e_flags = old_flags; | |
1297 | + if (old_partial != (old_flags & EF_FRV_CPU_MASK)) | |
1298 | + bfd_default_set_arch_mach (obfd, bfd_arch_frv, elf32_frv_machine (obfd)); | |
1299 | + | |
1300 | + if (error) | |
1301 | + bfd_set_error (bfd_error_bad_value); | |
1302 | + | |
1303 | + return !error; | |
1304 | +} | |
1305 | + | |
1306 | + | |
1307 | +boolean | |
1308 | +frv_elf_print_private_bfd_data (abfd, ptr) | |
1309 | + bfd *abfd; | |
1310 | + PTR ptr; | |
1311 | +{ | |
1312 | + FILE *file = (FILE *) ptr; | |
1313 | + flagword flags; | |
1314 | + | |
1315 | + BFD_ASSERT (abfd != NULL && ptr != NULL); | |
1316 | + | |
1317 | + /* Print normal ELF private data. */ | |
1318 | + _bfd_elf_print_private_bfd_data (abfd, ptr); | |
1319 | + | |
1320 | + flags = elf_elfheader (abfd)->e_flags; | |
1321 | + fprintf (file, _("private flags = 0x%lx:"), (long)flags); | |
1322 | + | |
1323 | + switch (flags & EF_FRV_CPU_MASK) | |
1324 | + { | |
1325 | + default: break; | |
1326 | + case EF_FRV_CPU_SIMPLE: fprintf (file, " -mcpu=simple"); break; | |
1327 | + case EF_FRV_CPU_FR500: fprintf (file, " -mcpu=fr500"); break; | |
1328 | + case EF_FRV_CPU_FR400: fprintf (file, " -mcpu=fr400"); break; | |
1329 | + case EF_FRV_CPU_FR300: fprintf (file, " -mcpu=fr300"); break; | |
1330 | + case EF_FRV_CPU_TOMCAT: fprintf (file, " -mcpu=tomcat"); break; | |
1331 | + } | |
1332 | + | |
1333 | + switch (flags & EF_FRV_GPR_MASK) | |
1334 | + { | |
1335 | + default: break; | |
1336 | + case EF_FRV_GPR_32: fprintf (file, " -mgpr-32"); break; | |
1337 | + case EF_FRV_GPR_64: fprintf (file, " -mgpr-64"); break; | |
1338 | + } | |
1339 | + | |
1340 | + switch (flags & EF_FRV_FPR_MASK) | |
1341 | + { | |
1342 | + default: break; | |
1343 | + case EF_FRV_FPR_32: fprintf (file, " -mfpr-32"); break; | |
1344 | + case EF_FRV_FPR_64: fprintf (file, " -mfpr-64"); break; | |
1345 | + case EF_FRV_FPR_NONE: fprintf (file, " -msoft-float"); break; | |
1346 | + } | |
1347 | + | |
1348 | + switch (flags & EF_FRV_DWORD_MASK) | |
1349 | + { | |
1350 | + default: break; | |
1351 | + case EF_FRV_DWORD_YES: fprintf (file, " -mdword"); break; | |
1352 | + case EF_FRV_DWORD_NO: fprintf (file, " -mno-dword"); break; | |
1353 | + } | |
1354 | + | |
1355 | + if (flags & EF_FRV_DOUBLE) | |
1356 | + fprintf (file, " -mdouble"); | |
1357 | + | |
1358 | + if (flags & EF_FRV_MEDIA) | |
1359 | + fprintf (file, " -mmedia"); | |
1360 | + | |
1361 | + if (flags & EF_FRV_MULADD) | |
1362 | + fprintf (file, " -mmuladd"); | |
1363 | + | |
1364 | + if (flags & EF_FRV_PIC) | |
1365 | + fprintf (file, " -fpic"); | |
1366 | + | |
1367 | + if (flags & EF_FRV_BIGPIC) | |
1368 | + fprintf (file, " -fPIC"); | |
1369 | + | |
1370 | + if (flags & EF_FRV_NON_PIC_RELOCS) | |
1371 | + fprintf (file, " non-pic relocations"); | |
1372 | + | |
1373 | + if (flags & EF_FRV_G0) | |
1374 | + fprintf (file, " -G0"); | |
1375 | + | |
1376 | + fputc ('\n', file); | |
1377 | + return true; | |
1378 | +} | |
1379 | + | |
1380 | + | |
1381 | +#define ELF_ARCH bfd_arch_frv | |
1382 | +#define ELF_MACHINE_CODE EM_CYGNUS_FRV | |
1383 | +#define ELF_MAXPAGESIZE 0x1000 | |
1384 | + | |
1385 | +#define TARGET_BIG_SYM bfd_elf32_frv_vec | |
1386 | +#define TARGET_BIG_NAME "elf32-frv" | |
1387 | + | |
1388 | +#define elf_info_to_howto_rel NULL | |
1389 | +#define elf_info_to_howto frv_info_to_howto_rela | |
1390 | +#define elf_backend_relocate_section elf32_frv_relocate_section | |
1391 | +#define elf_backend_gc_mark_hook elf32_frv_gc_mark_hook | |
1392 | +#define elf_backend_gc_sweep_hook elf32_frv_gc_sweep_hook | |
1393 | +#define elf_backend_check_relocs elf32_frv_check_relocs | |
1394 | +#define elf_backend_object_p elf32_frv_object_p | |
1395 | +#define elf_backend_add_symbol_hook elf32_frv_add_symbol_hook | |
1396 | + | |
1397 | +#define elf_backend_can_gc_sections 1 | |
1398 | + | |
1399 | +#define bfd_elf32_bfd_reloc_type_lookup frv_reloc_type_lookup | |
1400 | +#define bfd_elf32_bfd_set_private_flags frv_elf_set_private_flags | |
1401 | +#define bfd_elf32_bfd_copy_private_bfd_data frv_elf_copy_private_bfd_data | |
1402 | +#define bfd_elf32_bfd_merge_private_bfd_data frv_elf_merge_private_bfd_data | |
1403 | +#define bfd_elf32_bfd_print_private_bfd_data frv_elf_print_private_bfd_data | |
1404 | + | |
1405 | +#include "elf32-target.h" |
@@ -0,0 +1,95 @@ | ||
1 | +/* FRV ELF support for BFD. | |
2 | + Copyright (C) 2002 Free Software Foundation, Inc. | |
3 | + | |
4 | +This file is part of BFD, the Binary File Descriptor library. | |
5 | + | |
6 | +This program is free software; you can redistribute it and/or modify | |
7 | +it under the terms of the GNU General Public License as published by | |
8 | +the Free Software Foundation; either version 2 of the License, or | |
9 | +(at your option) any later version. | |
10 | + | |
11 | +This program is distributed in the hope that it will be useful, | |
12 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | +GNU General Public License for more details. | |
15 | + | |
16 | +You should have received a copy of the GNU General Public License | |
17 | +along with this program; if not, write to the Free Software Foundation, Inc., | |
18 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
19 | + | |
20 | +#ifndef _ELF_FRV_H | |
21 | +#define _ELF_FRV_H | |
22 | + | |
23 | +#include "elf/reloc-macros.h" | |
24 | + | |
25 | +/* Relocations. */ | |
26 | +START_RELOC_NUMBERS (elf_frv_reloc_type) | |
27 | + RELOC_NUMBER (R_FRV_NONE, 0) | |
28 | + RELOC_NUMBER (R_FRV_32, 1) | |
29 | + RELOC_NUMBER (R_FRV_LABEL16, 2) | |
30 | + RELOC_NUMBER (R_FRV_LABEL24, 3) | |
31 | + RELOC_NUMBER (R_FRV_LO16, 4) | |
32 | + RELOC_NUMBER (R_FRV_HI16, 5) | |
33 | + RELOC_NUMBER (R_FRV_GPREL12, 6) | |
34 | + RELOC_NUMBER (R_FRV_GPRELU12, 7) | |
35 | + RELOC_NUMBER (R_FRV_GPREL32, 8) | |
36 | + RELOC_NUMBER (R_FRV_GPRELHI, 9) | |
37 | + RELOC_NUMBER (R_FRV_GPRELLO, 10) | |
38 | + RELOC_NUMBER (R_FRV_GNU_VTINHERIT, 200) | |
39 | + RELOC_NUMBER (R_FRV_GNU_VTENTRY, 201) | |
40 | +END_RELOC_NUMBERS(R_FRV_max) | |
41 | + | |
42 | +/* Processor specific flags for the ELF header e_flags field. */ | |
43 | + /* gpr support */ | |
44 | +#define EF_FRV_GPR_MASK 0x00000003 /* mask for # of gprs */ | |
45 | +#define EF_FRV_GPR_32 0x00000001 /* -mgpr-32 */ | |
46 | +#define EF_FRV_GPR_64 0x00000002 /* -mgpr-64 */ | |
47 | + | |
48 | + /* fpr support */ | |
49 | +#define EF_FRV_FPR_MASK 0x0000000c /* mask for # of fprs */ | |
50 | +#define EF_FRV_FPR_32 0x00000004 /* -mfpr-32 */ | |
51 | +#define EF_FRV_FPR_64 0x00000008 /* -mfpr-64 */ | |
52 | +#define EF_FRV_FPR_NONE 0x0000000c /* -msoft-float */ | |
53 | + | |
54 | + /* double word support */ | |
55 | +#define EF_FRV_DWORD_MASK 0x00000030 /* mask for dword support */ | |
56 | +#define EF_FRV_DWORD_YES 0x00000010 /* use double word insns */ | |
57 | +#define EF_FRV_DWORD_NO 0x00000020 /* don't use double word insn*/ | |
58 | + | |
59 | +#define EF_FRV_DOUBLE 0x00000040 /* -mdouble */ | |
60 | +#define EF_FRV_MEDIA 0x00000080 /* -mmedia */ | |
61 | + | |
62 | +#define EF_FRV_PIC 0x00000100 /* -fpic */ | |
63 | +#define EF_FRV_NON_PIC_RELOCS 0x00000200 /* used non pic safe relocs */ | |
64 | + | |
65 | +#define EF_FRV_MULADD 0x00000400 /* -mmuladd */ | |
66 | +#define EF_FRV_BIGPIC 0x00000800 /* -fPIC */ | |
67 | +#define EF_FRV_LIBPIC 0x00001000 /* -mlibrary-pic */ | |
68 | +#define EF_FRV_G0 0x00002000 /* -G 0, no small data ptr */ | |
69 | +#define EF_FRV_NOPACK 0x00004000 /* -mnopack */ | |
70 | + | |
71 | +#define EF_FRV_CPU_MASK 0xff000000 /* specific cpu bits */ | |
72 | +#define EF_FRV_CPU_GENERIC 0x00000000 /* generic FRV */ | |
73 | +#define EF_FRV_CPU_FR500 0x01000000 /* FRV500 */ | |
74 | +#define EF_FRV_CPU_FR300 0x02000000 /* FRV300 */ | |
75 | +#define EF_FRV_CPU_SIMPLE 0x03000000 /* SIMPLE */ | |
76 | +#define EF_FRV_CPU_TOMCAT 0x04000000 /* Tomcat, FR500 prototype */ | |
77 | +#define EF_FRV_CPU_FR400 0x05000000 /* FRV400 */ | |
78 | + | |
79 | + /* Mask of PIC related bits */ | |
80 | +#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC) | |
81 | + | |
82 | + /* Mask of all flags */ | |
83 | +#define EF_FRV_ALL_FLAGS (EF_FRV_GPR_MASK | \ | |
84 | + EF_FRV_FPR_MASK | \ | |
85 | + EF_FRV_DWORD_MASK | \ | |
86 | + EF_FRV_DOUBLE | \ | |
87 | + EF_FRV_MEDIA | \ | |
88 | + EF_FRV_PIC_FLAGS | \ | |
89 | + EF_FRV_NON_PIC_RELOCS | \ | |
90 | + EF_FRV_MULADD | \ | |
91 | + EF_FRV_G0 | \ | |
92 | + EF_FRV_NOPACK | \ | |
93 | + EF_FRV_CPU_MASK) | |
94 | + | |
95 | +#endif /* _ELF_FRV_H */ |
@@ -0,0 +1,1023 @@ | ||
1 | +/* Assembler interface for targets using CGEN. -*- C -*- | |
2 | + CGEN: Cpu tools GENerator | |
3 | + | |
4 | +THIS FILE IS MACHINE GENERATED WITH CGEN. | |
5 | +- the resultant file is machine generated, cgen-asm.in isn't | |
6 | + | |
7 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. | |
8 | + | |
9 | +This file is part of the GNU Binutils and GDB, the GNU debugger. | |
10 | + | |
11 | +This program is free software; you can redistribute it and/or modify | |
12 | +it under the terms of the GNU General Public License as published by | |
13 | +the Free Software Foundation; either version 2, or (at your option) | |
14 | +any later version. | |
15 | + | |
16 | +This program is distributed in the hope that it will be useful, | |
17 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | +GNU General Public License for more details. | |
20 | + | |
21 | +You should have received a copy of the GNU General Public License | |
22 | +along with this program; if not, write to the Free Software Foundation, Inc., | |
23 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
24 | + | |
25 | +/* ??? Eventually more and more of this stuff can go to cpu-independent files. | |
26 | + Keep that in mind. */ | |
27 | + | |
28 | +#include "sysdep.h" | |
29 | +#include <stdio.h> | |
30 | +#include "ansidecl.h" | |
31 | +#include "bfd.h" | |
32 | +#include "symcat.h" | |
33 | +#include "frv-desc.h" | |
34 | +#include "frv-opc.h" | |
35 | +#include "opintl.h" | |
36 | +#include "xregex.h" | |
37 | +#include "libiberty.h" | |
38 | +#include "safe-ctype.h" | |
39 | + | |
40 | +#undef min | |
41 | +#define min(a,b) ((a) < (b) ? (a) : (b)) | |
42 | +#undef max | |
43 | +#define max(a,b) ((a) > (b) ? (a) : (b)) | |
44 | + | |
45 | +static const char * parse_insn_normal | |
46 | + PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *)); | |
47 | + | |
48 | +/* -- assembler routines inserted here. */ | |
49 | + | |
50 | +/* -- asm.c */ | |
51 | +static const char * parse_ulo16 | |
52 | + PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); | |
53 | +static const char * parse_uslo16 | |
54 | + PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); | |
55 | +static const char * parse_uhi16 | |
56 | + PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); | |
57 | +static long parse_register_number | |
58 | + PARAMS ((const char **)); | |
59 | +static const char * parse_spr | |
60 | + PARAMS ((CGEN_CPU_DESC, const char **, CGEN_KEYWORD *, long *)); | |
61 | +static const char * parse_d12 | |
62 | + PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); | |
63 | +static const char * parse_s12 | |
64 | + PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); | |
65 | +static const char * parse_u12 | |
66 | + PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); | |
67 | + | |
68 | +static const char * | |
69 | +parse_ulo16 (cd, strp, opindex, valuep) | |
70 | + CGEN_CPU_DESC cd; | |
71 | + const char **strp; | |
72 | + int opindex; | |
73 | + unsigned long *valuep; | |
74 | +{ | |
75 | + const char *errmsg; | |
76 | + enum cgen_parse_operand_result result_type; | |
77 | + bfd_vma value; | |
78 | + | |
79 | + if (**strp == '#' || **strp == '%') | |
80 | + { | |
81 | + if (strncasecmp (*strp + 1, "lo(", 3) == 0) | |
82 | + { | |
83 | + *strp += 4; | |
84 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_LO16, | |
85 | + &result_type, &value); | |
86 | + if (**strp != ')') | |
87 | + return "missing `)'"; | |
88 | + ++*strp; | |
89 | + if (errmsg == NULL | |
90 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
91 | + value &= 0xffff; | |
92 | + *valuep = value; | |
93 | + return errmsg; | |
94 | + } | |
95 | + if (strncasecmp (*strp + 1, "gprello(", 8) == 0) | |
96 | + { | |
97 | + *strp += 9; | |
98 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPRELLO, | |
99 | + &result_type, &value); | |
100 | + if (**strp != ')') | |
101 | + return "missing ')'"; | |
102 | + ++*strp; | |
103 | + if (errmsg == NULL | |
104 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
105 | + value >>= 16; | |
106 | + *valuep = value; | |
107 | + return errmsg; | |
108 | + } | |
109 | + } | |
110 | + return cgen_parse_signed_integer (cd, strp, opindex, valuep); | |
111 | +} | |
112 | + | |
113 | +static const char * | |
114 | +parse_uslo16 (cd, strp, opindex, valuep) | |
115 | + CGEN_CPU_DESC cd; | |
116 | + const char **strp; | |
117 | + int opindex; | |
118 | + unsigned long *valuep; | |
119 | +{ | |
120 | + const char *errmsg; | |
121 | + enum cgen_parse_operand_result result_type; | |
122 | + bfd_vma value; | |
123 | + | |
124 | + if (**strp == '#' || **strp == '%') | |
125 | + { | |
126 | + if (strncasecmp (*strp + 1, "lo(", 3) == 0) | |
127 | + { | |
128 | + *strp += 4; | |
129 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_LO16, | |
130 | + &result_type, &value); | |
131 | + if (**strp != ')') | |
132 | + return "missing `)'"; | |
133 | + ++*strp; | |
134 | + if (errmsg == NULL | |
135 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
136 | + value &= 0xffff; | |
137 | + *valuep = value; | |
138 | + return errmsg; | |
139 | + } | |
140 | + else if (strncasecmp (*strp + 1, "gprello(", 8) == 0) | |
141 | + { | |
142 | + *strp += 9; | |
143 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPRELLO, | |
144 | + &result_type, &value); | |
145 | + if (**strp != ')') | |
146 | + return "missing ')'"; | |
147 | + ++*strp; | |
148 | + if (errmsg == NULL | |
149 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
150 | + value &= 0xffff; | |
151 | + *valuep = value; | |
152 | + return errmsg; | |
153 | + } | |
154 | + } | |
155 | + return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); | |
156 | +} | |
157 | + | |
158 | +static const char * | |
159 | +parse_uhi16 (cd, strp, opindex, valuep) | |
160 | + CGEN_CPU_DESC cd; | |
161 | + const char **strp; | |
162 | + int opindex; | |
163 | + unsigned long *valuep; | |
164 | +{ | |
165 | + const char *errmsg; | |
166 | + enum cgen_parse_operand_result result_type; | |
167 | + bfd_vma value; | |
168 | + | |
169 | + if (**strp == '#' || **strp == '%') | |
170 | + { | |
171 | + if (strncasecmp (*strp + 1, "hi(", 3) == 0) | |
172 | + { | |
173 | + *strp += 4; | |
174 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_HI16, | |
175 | + &result_type, &value); | |
176 | + if (**strp != ')') | |
177 | + return "missing `)'"; | |
178 | + ++*strp; | |
179 | + if (errmsg == NULL | |
180 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
181 | + value >>= 16; | |
182 | + *valuep = value; | |
183 | + return errmsg; | |
184 | + } | |
185 | + else if (strncasecmp (*strp + 1, "gprelhi(", 8) == 0) | |
186 | + { | |
187 | + *strp += 9; | |
188 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPRELHI, | |
189 | + &result_type, &value); | |
190 | + if (**strp != ')') | |
191 | + return "missing ')'"; | |
192 | + ++*strp; | |
193 | + if (errmsg == NULL | |
194 | + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) | |
195 | + value >>= 16; | |
196 | + *valuep = value; | |
197 | + return errmsg; | |
198 | + } | |
199 | + } | |
200 | + return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); | |
201 | +} | |
202 | + | |
203 | +static long | |
204 | +parse_register_number (strp) | |
205 | + const char **strp; | |
206 | +{ | |
207 | + int regno; | |
208 | + if (**strp < '0' || **strp > '9') | |
209 | + return -1; /* error */ | |
210 | + | |
211 | + regno = **strp - '0'; | |
212 | + for (++*strp; **strp >= '0' && **strp <= '9'; ++*strp) | |
213 | + regno = regno * 10 + (**strp - '0'); | |
214 | + | |
215 | + return regno; | |
216 | +} | |
217 | + | |
218 | +static const char * | |
219 | +parse_spr (cd, strp, table, valuep) | |
220 | + CGEN_CPU_DESC cd; | |
221 | + const char **strp; | |
222 | + CGEN_KEYWORD * table; | |
223 | + long *valuep; | |
224 | +{ | |
225 | + const char *save_strp; | |
226 | + long regno; | |
227 | + | |
228 | + /* Check for spr index notation. */ | |
229 | + if (strncasecmp (*strp, "spr[", 4) == 0) | |
230 | + { | |
231 | + *strp += 4; | |
232 | + regno = parse_register_number (strp); | |
233 | + if (**strp != ']') | |
234 | + return "missing `]'"; | |
235 | + ++*strp; | |
236 | + if (! spr_valid (regno)) | |
237 | + return "Special purpose register number is out of range"; | |
238 | + *valuep = regno; | |
239 | + return NULL; | |
240 | + } | |
241 | + | |
242 | + save_strp = *strp; | |
243 | + regno = parse_register_number (strp); | |
244 | + if (regno != -1) | |
245 | + { | |
246 | + if (! spr_valid (regno)) | |
247 | + return "Special purpose register number is out of range"; | |
248 | + *valuep = regno; | |
249 | + return NULL; | |
250 | + } | |
251 | + | |
252 | + *strp = save_strp; | |
253 | + return cgen_parse_keyword (cd, strp, table, valuep); | |
254 | +} | |
255 | + | |
256 | +static const char * | |
257 | +parse_d12 (cd, strp, opindex, valuep) | |
258 | + CGEN_CPU_DESC cd; | |
259 | + const char **strp; | |
260 | + int opindex; | |
261 | + long *valuep; | |
262 | +{ | |
263 | + const char *errmsg; | |
264 | + enum cgen_parse_operand_result result_type; | |
265 | + bfd_vma value; | |
266 | + | |
267 | + /* Check for small data reference. */ | |
268 | + if (**strp == '#' || **strp == '%') | |
269 | + { | |
270 | + if (strncasecmp (*strp + 1, "gprel12(", 8) == 0) | |
271 | + { | |
272 | + *strp += 9; | |
273 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPREL12, | |
274 | + &result_type, &value); | |
275 | + if (**strp != ')') | |
276 | + return "missing `)'"; | |
277 | + ++*strp; | |
278 | + *valuep = value; | |
279 | + return errmsg; | |
280 | + } | |
281 | + } | |
282 | + return cgen_parse_signed_integer (cd, strp, opindex, valuep); | |
283 | +} | |
284 | + | |
285 | +static const char * | |
286 | +parse_s12 (cd, strp, opindex, valuep) | |
287 | + CGEN_CPU_DESC cd; | |
288 | + const char **strp; | |
289 | + int opindex; | |
290 | + long *valuep; | |
291 | +{ | |
292 | + const char *errmsg; | |
293 | + enum cgen_parse_operand_result result_type; | |
294 | + bfd_vma value; | |
295 | + | |
296 | + /* Check for small data reference. */ | |
297 | + if ((**strp == '#' || **strp == '%') | |
298 | + && strncasecmp (*strp + 1, "gprel12(", 8) == 0) | |
299 | + { | |
300 | + *strp += 9; | |
301 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPREL12, | |
302 | + &result_type, &value); | |
303 | + if (**strp != ')') | |
304 | + return "missing `)'"; | |
305 | + ++*strp; | |
306 | + *valuep = value; | |
307 | + return errmsg; | |
308 | + } | |
309 | + else | |
310 | + { | |
311 | + if (**strp == '#') | |
312 | + ++*strp; | |
313 | + return cgen_parse_signed_integer (cd, strp, opindex, valuep); | |
314 | + } | |
315 | +} | |
316 | + | |
317 | +static const char * | |
318 | +parse_u12 (cd, strp, opindex, valuep) | |
319 | + CGEN_CPU_DESC cd; | |
320 | + const char **strp; | |
321 | + int opindex; | |
322 | + long *valuep; | |
323 | +{ | |
324 | + const char *errmsg; | |
325 | + enum cgen_parse_operand_result result_type; | |
326 | + bfd_vma value; | |
327 | + | |
328 | + /* Check for small data reference. */ | |
329 | + if ((**strp == '#' || **strp == '%') | |
330 | + && strncasecmp (*strp + 1, "gprel12(", 8) == 0) | |
331 | + { | |
332 | + *strp += 9; | |
333 | + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GPRELU12, | |
334 | + &result_type, &value); | |
335 | + if (**strp != ')') | |
336 | + return "missing `)'"; | |
337 | + ++*strp; | |
338 | + *valuep = value; | |
339 | + return errmsg; | |
340 | + } | |
341 | + else | |
342 | + { | |
343 | + if (**strp == '#') | |
344 | + ++*strp; | |
345 | + return cgen_parse_signed_integer (cd, strp, opindex, valuep); | |
346 | + } | |
347 | +} | |
348 | + | |
349 | +/* -- */ | |
350 | + | |
351 | +const char * frv_cgen_parse_operand | |
352 | + PARAMS ((CGEN_CPU_DESC, int, const char **, CGEN_FIELDS *)); | |
353 | + | |
354 | +/* Main entry point for operand parsing. | |
355 | + | |
356 | + This function is basically just a big switch statement. Earlier versions | |
357 | + used tables to look up the function to use, but | |
358 | + - if the table contains both assembler and disassembler functions then | |
359 | + the disassembler contains much of the assembler and vice-versa, | |
360 | + - there's a lot of inlining possibilities as things grow, | |
361 | + - using a switch statement avoids the function call overhead. | |
362 | + | |
363 | + This function could be moved into `parse_insn_normal', but keeping it | |
364 | + separate makes clear the interface between `parse_insn_normal' and each of | |
365 | + the handlers. */ | |
366 | + | |
367 | +const char * | |
368 | +frv_cgen_parse_operand (cd, opindex, strp, fields) | |
369 | + CGEN_CPU_DESC cd; | |
370 | + int opindex; | |
371 | + const char ** strp; | |
372 | + CGEN_FIELDS * fields; | |
373 | +{ | |
374 | + const char * errmsg = NULL; | |
375 | + /* Used by scalar operands that still need to be parsed. */ | |
376 | + long junk ATTRIBUTE_UNUSED; | |
377 | + | |
378 | + switch (opindex) | |
379 | + { | |
380 | + case FRV_OPERAND_A : | |
381 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_A, &fields->f_A); | |
382 | + break; | |
383 | + case FRV_OPERAND_ACC40SI : | |
384 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_acc_names, & fields->f_ACC40Si); | |
385 | + break; | |
386 | + case FRV_OPERAND_ACC40SK : | |
387 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_acc_names, & fields->f_ACC40Sk); | |
388 | + break; | |
389 | + case FRV_OPERAND_ACC40UI : | |
390 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_acc_names, & fields->f_ACC40Ui); | |
391 | + break; | |
392 | + case FRV_OPERAND_ACC40UK : | |
393 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_acc_names, & fields->f_ACC40Uk); | |
394 | + break; | |
395 | + case FRV_OPERAND_ACCGI : | |
396 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_accg_names, & fields->f_ACCGi); | |
397 | + break; | |
398 | + case FRV_OPERAND_ACCGK : | |
399 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_accg_names, & fields->f_ACCGk); | |
400 | + break; | |
401 | + case FRV_OPERAND_CCI : | |
402 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CCi); | |
403 | + break; | |
404 | + case FRV_OPERAND_CPRDOUBLEK : | |
405 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cpr_names, & fields->f_CPRk); | |
406 | + break; | |
407 | + case FRV_OPERAND_CPRI : | |
408 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cpr_names, & fields->f_CPRi); | |
409 | + break; | |
410 | + case FRV_OPERAND_CPRJ : | |
411 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cpr_names, & fields->f_CPRj); | |
412 | + break; | |
413 | + case FRV_OPERAND_CPRK : | |
414 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cpr_names, & fields->f_CPRk); | |
415 | + break; | |
416 | + case FRV_OPERAND_CRI : | |
417 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CRi); | |
418 | + break; | |
419 | + case FRV_OPERAND_CRJ : | |
420 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CRj); | |
421 | + break; | |
422 | + case FRV_OPERAND_CRJ_FLOAT : | |
423 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CRj_float); | |
424 | + break; | |
425 | + case FRV_OPERAND_CRJ_INT : | |
426 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CRj_int); | |
427 | + break; | |
428 | + case FRV_OPERAND_CRK : | |
429 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_cccr_names, & fields->f_CRk); | |
430 | + break; | |
431 | + case FRV_OPERAND_FCCI_1 : | |
432 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fccr_names, & fields->f_FCCi_1); | |
433 | + break; | |
434 | + case FRV_OPERAND_FCCI_2 : | |
435 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fccr_names, & fields->f_FCCi_2); | |
436 | + break; | |
437 | + case FRV_OPERAND_FCCI_3 : | |
438 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fccr_names, & fields->f_FCCi_3); | |
439 | + break; | |
440 | + case FRV_OPERAND_FCCK : | |
441 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fccr_names, & fields->f_FCCk); | |
442 | + break; | |
443 | + case FRV_OPERAND_FRDOUBLEI : | |
444 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRi); | |
445 | + break; | |
446 | + case FRV_OPERAND_FRDOUBLEJ : | |
447 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj); | |
448 | + break; | |
449 | + case FRV_OPERAND_FRDOUBLEK : | |
450 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk); | |
451 | + break; | |
452 | + case FRV_OPERAND_FRI : | |
453 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRi); | |
454 | + break; | |
455 | + case FRV_OPERAND_FRINTI : | |
456 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRi); | |
457 | + break; | |
458 | + case FRV_OPERAND_FRINTJ : | |
459 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj); | |
460 | + break; | |
461 | + case FRV_OPERAND_FRINTK : | |
462 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk); | |
463 | + break; | |
464 | + case FRV_OPERAND_FRJ : | |
465 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj); | |
466 | + break; | |
467 | + case FRV_OPERAND_FRK : | |
468 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk); | |
469 | + break; | |
470 | + case FRV_OPERAND_FRKHI : | |
471 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk); | |
472 | + break; | |
473 | + case FRV_OPERAND_FRKLO : | |
474 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk); | |
475 | + break; | |
476 | + case FRV_OPERAND_GRDOUBLEK : | |
477 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRk); | |
478 | + break; | |
479 | + case FRV_OPERAND_GRI : | |
480 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRi); | |
481 | + break; | |
482 | + case FRV_OPERAND_GRJ : | |
483 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRj); | |
484 | + break; | |
485 | + case FRV_OPERAND_GRK : | |
486 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRk); | |
487 | + break; | |
488 | + case FRV_OPERAND_GRKHI : | |
489 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRk); | |
490 | + break; | |
491 | + case FRV_OPERAND_GRKLO : | |
492 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_gr_names, & fields->f_GRk); | |
493 | + break; | |
494 | + case FRV_OPERAND_ICCI_1 : | |
495 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_iccr_names, & fields->f_ICCi_1); | |
496 | + break; | |
497 | + case FRV_OPERAND_ICCI_2 : | |
498 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_iccr_names, & fields->f_ICCi_2); | |
499 | + break; | |
500 | + case FRV_OPERAND_ICCI_3 : | |
501 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_iccr_names, & fields->f_ICCi_3); | |
502 | + break; | |
503 | + case FRV_OPERAND_LI : | |
504 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_LI, &fields->f_LI); | |
505 | + break; | |
506 | + case FRV_OPERAND_AE : | |
507 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_AE, &fields->f_ae); | |
508 | + break; | |
509 | + case FRV_OPERAND_CCOND : | |
510 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_CCOND, &fields->f_ccond); | |
511 | + break; | |
512 | + case FRV_OPERAND_COND : | |
513 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_COND, &fields->f_cond); | |
514 | + break; | |
515 | + case FRV_OPERAND_D12 : | |
516 | + errmsg = parse_d12 (cd, strp, FRV_OPERAND_D12, &fields->f_d12); | |
517 | + break; | |
518 | + case FRV_OPERAND_DEBUG : | |
519 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_DEBUG, &fields->f_debug); | |
520 | + break; | |
521 | + case FRV_OPERAND_EIR : | |
522 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_EIR, &fields->f_eir); | |
523 | + break; | |
524 | + case FRV_OPERAND_HINT : | |
525 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_HINT, &fields->f_hint); | |
526 | + break; | |
527 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
528 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_h_hint_not_taken, & fields->f_hint); | |
529 | + break; | |
530 | + case FRV_OPERAND_HINT_TAKEN : | |
531 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_h_hint_taken, & fields->f_hint); | |
532 | + break; | |
533 | + case FRV_OPERAND_LABEL16 : | |
534 | + { | |
535 | + bfd_vma value; | |
536 | + errmsg = cgen_parse_address (cd, strp, FRV_OPERAND_LABEL16, 0, NULL, & value); | |
537 | + fields->f_label16 = value; | |
538 | + } | |
539 | + break; | |
540 | + case FRV_OPERAND_LABEL24 : | |
541 | + { | |
542 | + bfd_vma value; | |
543 | + errmsg = cgen_parse_address (cd, strp, FRV_OPERAND_LABEL24, 0, NULL, & value); | |
544 | + fields->f_label24 = value; | |
545 | + } | |
546 | + break; | |
547 | + case FRV_OPERAND_LOCK : | |
548 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_LOCK, &fields->f_lock); | |
549 | + break; | |
550 | + case FRV_OPERAND_PACK : | |
551 | + errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_h_pack, & fields->f_pack); | |
552 | + break; | |
553 | + case FRV_OPERAND_S10 : | |
554 | + errmsg = cgen_parse_signed_integer (cd, strp, FRV_OPERAND_S10, &fields->f_s10); | |
555 | + break; | |
556 | + case FRV_OPERAND_S12 : | |
557 | + errmsg = parse_s12 (cd, strp, FRV_OPERAND_S12, &fields->f_d12); | |
558 | + break; | |
559 | + case FRV_OPERAND_S16 : | |
560 | + errmsg = cgen_parse_signed_integer (cd, strp, FRV_OPERAND_S16, &fields->f_s16); | |
561 | + break; | |
562 | + case FRV_OPERAND_S5 : | |
563 | + errmsg = cgen_parse_signed_integer (cd, strp, FRV_OPERAND_S5, &fields->f_s5); | |
564 | + break; | |
565 | + case FRV_OPERAND_S6 : | |
566 | + errmsg = cgen_parse_signed_integer (cd, strp, FRV_OPERAND_S6, &fields->f_s6); | |
567 | + break; | |
568 | + case FRV_OPERAND_S6_1 : | |
569 | + errmsg = cgen_parse_signed_integer (cd, strp, FRV_OPERAND_S6_1, &fields->f_s6_1); | |
570 | + break; | |
571 | + case FRV_OPERAND_SLO16 : | |
572 | + errmsg = parse_uslo16 (cd, strp, FRV_OPERAND_SLO16, &fields->f_s16); | |
573 | + break; | |
574 | + case FRV_OPERAND_SPR : | |
575 | + errmsg = parse_spr (cd, strp, & frv_cgen_opval_spr_names, & fields->f_spr); | |
576 | + break; | |
577 | + case FRV_OPERAND_U12 : | |
578 | + errmsg = parse_u12 (cd, strp, FRV_OPERAND_U12, &fields->f_u12); | |
579 | + break; | |
580 | + case FRV_OPERAND_U16 : | |
581 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_U16, &fields->f_u16); | |
582 | + break; | |
583 | + case FRV_OPERAND_U6 : | |
584 | + errmsg = cgen_parse_unsigned_integer (cd, strp, FRV_OPERAND_U6, &fields->f_u6); | |
585 | + break; | |
586 | + case FRV_OPERAND_UHI16 : | |
587 | + errmsg = parse_uhi16 (cd, strp, FRV_OPERAND_UHI16, &fields->f_u16); | |
588 | + break; | |
589 | + case FRV_OPERAND_ULO16 : | |
590 | + errmsg = parse_ulo16 (cd, strp, FRV_OPERAND_ULO16, &fields->f_u16); | |
591 | + break; | |
592 | + | |
593 | + default : | |
594 | + /* xgettext:c-format */ | |
595 | + fprintf (stderr, _("Unrecognized field %d while parsing.\n"), opindex); | |
596 | + abort (); | |
597 | + } | |
598 | + | |
599 | + return errmsg; | |
600 | +} | |
601 | + | |
602 | +cgen_parse_fn * const frv_cgen_parse_handlers[] = | |
603 | +{ | |
604 | + parse_insn_normal, | |
605 | +}; | |
606 | + | |
607 | +void | |
608 | +frv_cgen_init_asm (cd) | |
609 | + CGEN_CPU_DESC cd; | |
610 | +{ | |
611 | + frv_cgen_init_opcode_table (cd); | |
612 | + frv_cgen_init_ibld_table (cd); | |
613 | + cd->parse_handlers = & frv_cgen_parse_handlers[0]; | |
614 | + cd->parse_operand = frv_cgen_parse_operand; | |
615 | +} | |
616 | + | |
617 | + | |
618 | + | |
619 | +/* Regex construction routine. | |
620 | + | |
621 | + This translates an opcode syntax string into a regex string, | |
622 | + by replacing any non-character syntax element (such as an | |
623 | + opcode) with the pattern '.*' | |
624 | + | |
625 | + It then compiles the regex and stores it in the opcode, for | |
626 | + later use by frv_cgen_assemble_insn | |
627 | + | |
628 | + Returns NULL for success, an error message for failure. */ | |
629 | + | |
630 | +char * | |
631 | +frv_cgen_build_insn_regex (insn) | |
632 | + CGEN_INSN *insn; | |
633 | +{ | |
634 | + CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn); | |
635 | + const char *mnem = CGEN_INSN_MNEMONIC (insn); | |
636 | + char rxbuf[CGEN_MAX_RX_ELEMENTS]; | |
637 | + char *rx = rxbuf; | |
638 | + const CGEN_SYNTAX_CHAR_TYPE *syn; | |
639 | + int reg_err; | |
640 | + | |
641 | + syn = CGEN_SYNTAX_STRING (CGEN_OPCODE_SYNTAX (opc)); | |
642 | + | |
643 | + /* Mnemonics come first in the syntax string. */ | |
644 | + if (! CGEN_SYNTAX_MNEMONIC_P (* syn)) | |
645 | + return _("missing mnemonic in syntax string"); | |
646 | + ++syn; | |
647 | + | |
648 | + /* Generate a case sensitive regular expression that emulates case | |
649 | + insensitive matching in the "C" locale. We cannot generate a case | |
650 | + insensitive regular expression because in Turkish locales, 'i' and 'I' | |
651 | + are not equal modulo case conversion. */ | |
652 | + | |
653 | + /* Copy the literal mnemonic out of the insn. */ | |
654 | + for (; *mnem; mnem++) | |
655 | + { | |
656 | + char c = *mnem; | |
657 | + | |
658 | + if (ISALPHA (c)) | |
659 | + { | |
660 | + *rx++ = '['; | |
661 | + *rx++ = TOLOWER (c); | |
662 | + *rx++ = TOUPPER (c); | |
663 | + *rx++ = ']'; | |
664 | + } | |
665 | + else | |
666 | + *rx++ = c; | |
667 | + } | |
668 | + | |
669 | + /* Copy any remaining literals from the syntax string into the rx. */ | |
670 | + for(; * syn != 0 && rx <= rxbuf + (CGEN_MAX_RX_ELEMENTS - 7 - 4); ++syn) | |
671 | + { | |
672 | + if (CGEN_SYNTAX_CHAR_P (* syn)) | |
673 | + { | |
674 | + char c = CGEN_SYNTAX_CHAR (* syn); | |
675 | + | |
676 | + switch (c) | |
677 | + { | |
678 | + /* Escape any regex metacharacters in the syntax. */ | |
679 | + case '.': case '[': case '\\': | |
680 | + case '*': case '^': case '$': | |
681 | + | |
682 | +#ifdef CGEN_ESCAPE_EXTENDED_REGEX | |
683 | + case '?': case '{': case '}': | |
684 | + case '(': case ')': case '*': | |
685 | + case '|': case '+': case ']': | |
686 | +#endif | |
687 | + *rx++ = '\\'; | |
688 | + *rx++ = c; | |
689 | + break; | |
690 | + | |
691 | + default: | |
692 | + if (ISALPHA (c)) | |
693 | + { | |
694 | + *rx++ = '['; | |
695 | + *rx++ = TOLOWER (c); | |
696 | + *rx++ = TOUPPER (c); | |
697 | + *rx++ = ']'; | |
698 | + } | |
699 | + else | |
700 | + *rx++ = c; | |
701 | + break; | |
702 | + } | |
703 | + } | |
704 | + else | |
705 | + { | |
706 | + /* Replace non-syntax fields with globs. */ | |
707 | + *rx++ = '.'; | |
708 | + *rx++ = '*'; | |
709 | + } | |
710 | + } | |
711 | + | |
712 | + /* Trailing whitespace ok. */ | |
713 | + * rx++ = '['; | |
714 | + * rx++ = ' '; | |
715 | + * rx++ = '\t'; | |
716 | + * rx++ = ']'; | |
717 | + * rx++ = '*'; | |
718 | + | |
719 | + /* But anchor it after that. */ | |
720 | + * rx++ = '$'; | |
721 | + * rx = '\0'; | |
722 | + | |
723 | + CGEN_INSN_RX (insn) = xmalloc (sizeof (regex_t)); | |
724 | + reg_err = regcomp ((regex_t *) CGEN_INSN_RX (insn), rxbuf, REG_NOSUB); | |
725 | + | |
726 | + if (reg_err == 0) | |
727 | + return NULL; | |
728 | + else | |
729 | + { | |
730 | + static char msg[80]; | |
731 | + | |
732 | + regerror (reg_err, (regex_t *) CGEN_INSN_RX (insn), msg, 80); | |
733 | + regfree ((regex_t *) CGEN_INSN_RX (insn)); | |
734 | + free (CGEN_INSN_RX (insn)); | |
735 | + (CGEN_INSN_RX (insn)) = NULL; | |
736 | + return msg; | |
737 | + } | |
738 | +} | |
739 | + | |
740 | + | |
741 | +/* Default insn parser. | |
742 | + | |
743 | + The syntax string is scanned and operands are parsed and stored in FIELDS. | |
744 | + Relocs are queued as we go via other callbacks. | |
745 | + | |
746 | + ??? Note that this is currently an all-or-nothing parser. If we fail to | |
747 | + parse the instruction, we return 0 and the caller will start over from | |
748 | + the beginning. Backtracking will be necessary in parsing subexpressions, | |
749 | + but that can be handled there. Not handling backtracking here may get | |
750 | + expensive in the case of the m68k. Deal with later. | |
751 | + | |
752 | + Returns NULL for success, an error message for failure. */ | |
753 | + | |
754 | +static const char * | |
755 | +parse_insn_normal (cd, insn, strp, fields) | |
756 | + CGEN_CPU_DESC cd; | |
757 | + const CGEN_INSN *insn; | |
758 | + const char **strp; | |
759 | + CGEN_FIELDS *fields; | |
760 | +{ | |
761 | + /* ??? Runtime added insns not handled yet. */ | |
762 | + const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn); | |
763 | + const char *str = *strp; | |
764 | + const char *errmsg; | |
765 | + const char *p; | |
766 | + const CGEN_SYNTAX_CHAR_TYPE * syn; | |
767 | +#ifdef CGEN_MNEMONIC_OPERANDS | |
768 | + /* FIXME: wip */ | |
769 | + int past_opcode_p; | |
770 | +#endif | |
771 | + | |
772 | + /* For now we assume the mnemonic is first (there are no leading operands). | |
773 | + We can parse it without needing to set up operand parsing. | |
774 | + GAS's input scrubber will ensure mnemonics are lowercase, but we may | |
775 | + not be called from GAS. */ | |
776 | + p = CGEN_INSN_MNEMONIC (insn); | |
777 | + while (*p && TOLOWER (*p) == TOLOWER (*str)) | |
778 | + ++p, ++str; | |
779 | + | |
780 | + if (* p) | |
781 | + return _("unrecognized instruction"); | |
782 | + | |
783 | +#ifndef CGEN_MNEMONIC_OPERANDS | |
784 | + if (* str && ! ISSPACE (* str)) | |
785 | + return _("unrecognized instruction"); | |
786 | +#endif | |
787 | + | |
788 | + CGEN_INIT_PARSE (cd); | |
789 | + cgen_init_parse_operand (cd); | |
790 | +#ifdef CGEN_MNEMONIC_OPERANDS | |
791 | + past_opcode_p = 0; | |
792 | +#endif | |
793 | + | |
794 | + /* We don't check for (*str != '\0') here because we want to parse | |
795 | + any trailing fake arguments in the syntax string. */ | |
796 | + syn = CGEN_SYNTAX_STRING (syntax); | |
797 | + | |
798 | + /* Mnemonics come first for now, ensure valid string. */ | |
799 | + if (! CGEN_SYNTAX_MNEMONIC_P (* syn)) | |
800 | + abort (); | |
801 | + | |
802 | + ++syn; | |
803 | + | |
804 | + while (* syn != 0) | |
805 | + { | |
806 | + /* Non operand chars must match exactly. */ | |
807 | + if (CGEN_SYNTAX_CHAR_P (* syn)) | |
808 | + { | |
809 | + /* FIXME: While we allow for non-GAS callers above, we assume the | |
810 | + first char after the mnemonic part is a space. */ | |
811 | + /* FIXME: We also take inappropriate advantage of the fact that | |
812 | + GAS's input scrubber will remove extraneous blanks. */ | |
813 | + if (TOLOWER (*str) == TOLOWER (CGEN_SYNTAX_CHAR (* syn))) | |
814 | + { | |
815 | +#ifdef CGEN_MNEMONIC_OPERANDS | |
816 | + if (CGEN_SYNTAX_CHAR(* syn) == ' ') | |
817 | + past_opcode_p = 1; | |
818 | +#endif | |
819 | + ++ syn; | |
820 | + ++ str; | |
821 | + } | |
822 | + else if (*str) | |
823 | + { | |
824 | + /* Syntax char didn't match. Can't be this insn. */ | |
825 | + static char msg [80]; | |
826 | + | |
827 | + /* xgettext:c-format */ | |
828 | + sprintf (msg, _("syntax error (expected char `%c', found `%c')"), | |
829 | + CGEN_SYNTAX_CHAR(*syn), *str); | |
830 | + return msg; | |
831 | + } | |
832 | + else | |
833 | + { | |
834 | + /* Ran out of input. */ | |
835 | + static char msg [80]; | |
836 | + | |
837 | + /* xgettext:c-format */ | |
838 | + sprintf (msg, _("syntax error (expected char `%c', found end of instruction)"), | |
839 | + CGEN_SYNTAX_CHAR(*syn)); | |
840 | + return msg; | |
841 | + } | |
842 | + continue; | |
843 | + } | |
844 | + | |
845 | + /* We have an operand of some sort. */ | |
846 | + errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), | |
847 | + &str, fields); | |
848 | + if (errmsg) | |
849 | + return errmsg; | |
850 | + | |
851 | + /* Done with this operand, continue with next one. */ | |
852 | + ++ syn; | |
853 | + } | |
854 | + | |
855 | + /* If we're at the end of the syntax string, we're done. */ | |
856 | + if (* syn == 0) | |
857 | + { | |
858 | + /* FIXME: For the moment we assume a valid `str' can only contain | |
859 | + blanks now. IE: We needn't try again with a longer version of | |
860 | + the insn and it is assumed that longer versions of insns appear | |
861 | + before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3). */ | |
862 | + while (ISSPACE (* str)) | |
863 | + ++ str; | |
864 | + | |
865 | + if (* str != '\0') | |
866 | + return _("junk at end of line"); /* FIXME: would like to include `str' */ | |
867 | + | |
868 | + return NULL; | |
869 | + } | |
870 | + | |
871 | + /* We couldn't parse it. */ | |
872 | + return _("unrecognized instruction"); | |
873 | +} | |
874 | + | |
875 | +/* Main entry point. | |
876 | + This routine is called for each instruction to be assembled. | |
877 | + STR points to the insn to be assembled. | |
878 | + We assume all necessary tables have been initialized. | |
879 | + The assembled instruction, less any fixups, is stored in BUF. | |
880 | + Remember that if CGEN_INT_INSN_P then BUF is an int and thus the value | |
881 | + still needs to be converted to target byte order, otherwise BUF is an array | |
882 | + of bytes in target byte order. | |
883 | + The result is a pointer to the insn's entry in the opcode table, | |
884 | + or NULL if an error occured (an error message will have already been | |
885 | + printed). | |
886 | + | |
887 | + Note that when processing (non-alias) macro-insns, | |
888 | + this function recurses. | |
889 | + | |
890 | + ??? It's possible to make this cpu-independent. | |
891 | + One would have to deal with a few minor things. | |
892 | + At this point in time doing so would be more of a curiosity than useful | |
893 | + [for example this file isn't _that_ big], but keeping the possibility in | |
894 | + mind helps keep the design clean. */ | |
895 | + | |
896 | +const CGEN_INSN * | |
897 | +frv_cgen_assemble_insn (cd, str, fields, buf, errmsg) | |
898 | + CGEN_CPU_DESC cd; | |
899 | + const char *str; | |
900 | + CGEN_FIELDS *fields; | |
901 | + CGEN_INSN_BYTES_PTR buf; | |
902 | + char **errmsg; | |
903 | +{ | |
904 | + const char *start; | |
905 | + CGEN_INSN_LIST *ilist; | |
906 | + const char *parse_errmsg = NULL; | |
907 | + const char *insert_errmsg = NULL; | |
908 | + int recognized_mnemonic = 0; | |
909 | + | |
910 | + /* Skip leading white space. */ | |
911 | + while (ISSPACE (* str)) | |
912 | + ++ str; | |
913 | + | |
914 | + /* The instructions are stored in hashed lists. | |
915 | + Get the first in the list. */ | |
916 | + ilist = CGEN_ASM_LOOKUP_INSN (cd, str); | |
917 | + | |
918 | + /* Keep looking until we find a match. */ | |
919 | + start = str; | |
920 | + for ( ; ilist != NULL ; ilist = CGEN_ASM_NEXT_INSN (ilist)) | |
921 | + { | |
922 | + const CGEN_INSN *insn = ilist->insn; | |
923 | + recognized_mnemonic = 1; | |
924 | + | |
925 | +#ifdef CGEN_VALIDATE_INSN_SUPPORTED | |
926 | + /* Not usually needed as unsupported opcodes | |
927 | + shouldn't be in the hash lists. */ | |
928 | + /* Is this insn supported by the selected cpu? */ | |
929 | + if (! frv_cgen_insn_supported (cd, insn)) | |
930 | + continue; | |
931 | +#endif | |
932 | + /* If the RELAX attribute is set, this is an insn that shouldn't be | |
933 | + chosen immediately. Instead, it is used during assembler/linker | |
934 | + relaxation if possible. */ | |
935 | + if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAX) != 0) | |
936 | + continue; | |
937 | + | |
938 | + str = start; | |
939 | + | |
940 | + /* Skip this insn if str doesn't look right lexically. */ | |
941 | + if (CGEN_INSN_RX (insn) != NULL && | |
942 | + regexec ((regex_t *) CGEN_INSN_RX (insn), str, 0, NULL, 0) == REG_NOMATCH) | |
943 | + continue; | |
944 | + | |
945 | + /* Allow parse/insert handlers to obtain length of insn. */ | |
946 | + CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn); | |
947 | + | |
948 | + parse_errmsg = CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields); | |
949 | + if (parse_errmsg != NULL) | |
950 | + continue; | |
951 | + | |
952 | + /* ??? 0 is passed for `pc'. */ | |
953 | + insert_errmsg = CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf, | |
954 | + (bfd_vma) 0); | |
955 | + if (insert_errmsg != NULL) | |
956 | + continue; | |
957 | + | |
958 | + /* It is up to the caller to actually output the insn and any | |
959 | + queued relocs. */ | |
960 | + return insn; | |
961 | + } | |
962 | + | |
963 | + { | |
964 | + static char errbuf[150]; | |
965 | +#ifdef CGEN_VERBOSE_ASSEMBLER_ERRORS | |
966 | + const char *tmp_errmsg; | |
967 | + | |
968 | + /* If requesting verbose error messages, use insert_errmsg. | |
969 | + Failing that, use parse_errmsg. */ | |
970 | + tmp_errmsg = (insert_errmsg ? insert_errmsg : | |
971 | + parse_errmsg ? parse_errmsg : | |
972 | + recognized_mnemonic ? | |
973 | + _("unrecognized form of instruction") : | |
974 | + _("unrecognized instruction")); | |
975 | + | |
976 | + if (strlen (start) > 50) | |
977 | + /* xgettext:c-format */ | |
978 | + sprintf (errbuf, "%s `%.50s...'", tmp_errmsg, start); | |
979 | + else | |
980 | + /* xgettext:c-format */ | |
981 | + sprintf (errbuf, "%s `%.50s'", tmp_errmsg, start); | |
982 | +#else | |
983 | + if (strlen (start) > 50) | |
984 | + /* xgettext:c-format */ | |
985 | + sprintf (errbuf, _("bad instruction `%.50s...'"), start); | |
986 | + else | |
987 | + /* xgettext:c-format */ | |
988 | + sprintf (errbuf, _("bad instruction `%.50s'"), start); | |
989 | +#endif | |
990 | + | |
991 | + *errmsg = errbuf; | |
992 | + return NULL; | |
993 | + } | |
994 | +} | |
995 | + | |
996 | +#if 0 /* This calls back to GAS which we can't do without care. */ | |
997 | + | |
998 | +/* Record each member of OPVALS in the assembler's symbol table. | |
999 | + This lets GAS parse registers for us. | |
1000 | + ??? Interesting idea but not currently used. */ | |
1001 | + | |
1002 | +/* Record each member of OPVALS in the assembler's symbol table. | |
1003 | + FIXME: Not currently used. */ | |
1004 | + | |
1005 | +void | |
1006 | +frv_cgen_asm_hash_keywords (cd, opvals) | |
1007 | + CGEN_CPU_DESC cd; | |
1008 | + CGEN_KEYWORD *opvals; | |
1009 | +{ | |
1010 | + CGEN_KEYWORD_SEARCH search = cgen_keyword_search_init (opvals, NULL); | |
1011 | + const CGEN_KEYWORD_ENTRY * ke; | |
1012 | + | |
1013 | + while ((ke = cgen_keyword_search_next (& search)) != NULL) | |
1014 | + { | |
1015 | +#if 0 /* Unnecessary, should be done in the search routine. */ | |
1016 | + if (! frv_cgen_opval_supported (ke)) | |
1017 | + continue; | |
1018 | +#endif | |
1019 | + cgen_asm_record_register (cd, ke->name, ke->value); | |
1020 | + } | |
1021 | +} | |
1022 | + | |
1023 | +#endif /* 0 */ |
@@ -0,0 +1,6311 @@ | ||
1 | +/* CPU data for frv. | |
2 | + | |
3 | +THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | + | |
5 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. | |
6 | + | |
7 | +This file is part of the GNU Binutils and/or GDB, the GNU debugger. | |
8 | + | |
9 | +This program is free software; you can redistribute it and/or modify | |
10 | +it under the terms of the GNU General Public License as published by | |
11 | +the Free Software Foundation; either version 2, or (at your option) | |
12 | +any later version. | |
13 | + | |
14 | +This program is distributed in the hope that it will be useful, | |
15 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | +GNU General Public License for more details. | |
18 | + | |
19 | +You should have received a copy of the GNU General Public License along | |
20 | +with this program; if not, write to the Free Software Foundation, Inc., | |
21 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
22 | + | |
23 | +*/ | |
24 | + | |
25 | +#include "sysdep.h" | |
26 | +#include <stdio.h> | |
27 | +#include <stdarg.h> | |
28 | +#include "ansidecl.h" | |
29 | +#include "bfd.h" | |
30 | +#include "symcat.h" | |
31 | +#include "frv-desc.h" | |
32 | +#include "frv-opc.h" | |
33 | +#include "opintl.h" | |
34 | +#include "libiberty.h" | |
35 | + | |
36 | +/* Attributes. */ | |
37 | + | |
38 | +static const CGEN_ATTR_ENTRY bool_attr[] = | |
39 | +{ | |
40 | + { "#f", 0 }, | |
41 | + { "#t", 1 }, | |
42 | + { 0, 0 } | |
43 | +}; | |
44 | + | |
45 | +static const CGEN_ATTR_ENTRY MACH_attr[] = | |
46 | +{ | |
47 | + { "base", MACH_BASE }, | |
48 | + { "frv", MACH_FRV }, | |
49 | + { "fr500", MACH_FR500 }, | |
50 | + { "fr400", MACH_FR400 }, | |
51 | + { "tomcat", MACH_TOMCAT }, | |
52 | + { "simple", MACH_SIMPLE }, | |
53 | + { "max", MACH_MAX }, | |
54 | + { 0, 0 } | |
55 | +}; | |
56 | + | |
57 | +static const CGEN_ATTR_ENTRY ISA_attr[] = | |
58 | +{ | |
59 | + { "frv", ISA_FRV }, | |
60 | + { "max", ISA_MAX }, | |
61 | + { 0, 0 } | |
62 | +}; | |
63 | + | |
64 | +static const CGEN_ATTR_ENTRY UNIT_attr[] = | |
65 | +{ | |
66 | + { "NIL", UNIT_NIL }, | |
67 | + { "I0", UNIT_I0 }, | |
68 | + { "I1", UNIT_I1 }, | |
69 | + { "I01", UNIT_I01 }, | |
70 | + { "FM0", UNIT_FM0 }, | |
71 | + { "FM1", UNIT_FM1 }, | |
72 | + { "FM01", UNIT_FM01 }, | |
73 | + { "B0", UNIT_B0 }, | |
74 | + { "B1", UNIT_B1 }, | |
75 | + { "B01", UNIT_B01 }, | |
76 | + { "C", UNIT_C }, | |
77 | + { "MULT_DIV", UNIT_MULT_DIV }, | |
78 | + { "LOAD", UNIT_LOAD }, | |
79 | + { "NUM_UNITS", UNIT_NUM_UNITS }, | |
80 | + { 0, 0 } | |
81 | +}; | |
82 | + | |
83 | +static const CGEN_ATTR_ENTRY FR400_MAJOR_attr[] = | |
84 | +{ | |
85 | + { "NONE", FR400_MAJOR_NONE }, | |
86 | + { "I_1", FR400_MAJOR_I_1 }, | |
87 | + { "I_2", FR400_MAJOR_I_2 }, | |
88 | + { "I_3", FR400_MAJOR_I_3 }, | |
89 | + { "I_4", FR400_MAJOR_I_4 }, | |
90 | + { "I_5", FR400_MAJOR_I_5 }, | |
91 | + { "B_1", FR400_MAJOR_B_1 }, | |
92 | + { "B_2", FR400_MAJOR_B_2 }, | |
93 | + { "B_3", FR400_MAJOR_B_3 }, | |
94 | + { "B_4", FR400_MAJOR_B_4 }, | |
95 | + { "B_5", FR400_MAJOR_B_5 }, | |
96 | + { "B_6", FR400_MAJOR_B_6 }, | |
97 | + { "C_1", FR400_MAJOR_C_1 }, | |
98 | + { "C_2", FR400_MAJOR_C_2 }, | |
99 | + { "M_1", FR400_MAJOR_M_1 }, | |
100 | + { "M_2", FR400_MAJOR_M_2 }, | |
101 | + { 0, 0 } | |
102 | +}; | |
103 | + | |
104 | +static const CGEN_ATTR_ENTRY FR500_MAJOR_attr[] = | |
105 | +{ | |
106 | + { "NONE", FR500_MAJOR_NONE }, | |
107 | + { "I_1", FR500_MAJOR_I_1 }, | |
108 | + { "I_2", FR500_MAJOR_I_2 }, | |
109 | + { "I_3", FR500_MAJOR_I_3 }, | |
110 | + { "I_4", FR500_MAJOR_I_4 }, | |
111 | + { "I_5", FR500_MAJOR_I_5 }, | |
112 | + { "I_6", FR500_MAJOR_I_6 }, | |
113 | + { "B_1", FR500_MAJOR_B_1 }, | |
114 | + { "B_2", FR500_MAJOR_B_2 }, | |
115 | + { "B_3", FR500_MAJOR_B_3 }, | |
116 | + { "B_4", FR500_MAJOR_B_4 }, | |
117 | + { "B_5", FR500_MAJOR_B_5 }, | |
118 | + { "B_6", FR500_MAJOR_B_6 }, | |
119 | + { "C_1", FR500_MAJOR_C_1 }, | |
120 | + { "C_2", FR500_MAJOR_C_2 }, | |
121 | + { "F_1", FR500_MAJOR_F_1 }, | |
122 | + { "F_2", FR500_MAJOR_F_2 }, | |
123 | + { "F_3", FR500_MAJOR_F_3 }, | |
124 | + { "F_4", FR500_MAJOR_F_4 }, | |
125 | + { "F_5", FR500_MAJOR_F_5 }, | |
126 | + { "F_6", FR500_MAJOR_F_6 }, | |
127 | + { "F_7", FR500_MAJOR_F_7 }, | |
128 | + { "F_8", FR500_MAJOR_F_8 }, | |
129 | + { "M_1", FR500_MAJOR_M_1 }, | |
130 | + { "M_2", FR500_MAJOR_M_2 }, | |
131 | + { "M_3", FR500_MAJOR_M_3 }, | |
132 | + { "M_4", FR500_MAJOR_M_4 }, | |
133 | + { "M_5", FR500_MAJOR_M_5 }, | |
134 | + { "M_6", FR500_MAJOR_M_6 }, | |
135 | + { "M_7", FR500_MAJOR_M_7 }, | |
136 | + { "M_8", FR500_MAJOR_M_8 }, | |
137 | + { 0, 0 } | |
138 | +}; | |
139 | + | |
140 | +const CGEN_ATTR_TABLE frv_cgen_ifield_attr_table[] = | |
141 | +{ | |
142 | + { "MACH", & MACH_attr[0], & MACH_attr[0] }, | |
143 | + { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, | |
144 | + { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] }, | |
145 | + { "ABS-ADDR", &bool_attr[0], &bool_attr[0] }, | |
146 | + { "RESERVED", &bool_attr[0], &bool_attr[0] }, | |
147 | + { "SIGN-OPT", &bool_attr[0], &bool_attr[0] }, | |
148 | + { "SIGNED", &bool_attr[0], &bool_attr[0] }, | |
149 | + { 0, 0, 0 } | |
150 | +}; | |
151 | + | |
152 | +const CGEN_ATTR_TABLE frv_cgen_hardware_attr_table[] = | |
153 | +{ | |
154 | + { "MACH", & MACH_attr[0], & MACH_attr[0] }, | |
155 | + { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, | |
156 | + { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] }, | |
157 | + { "PC", &bool_attr[0], &bool_attr[0] }, | |
158 | + { "PROFILE", &bool_attr[0], &bool_attr[0] }, | |
159 | + { 0, 0, 0 } | |
160 | +}; | |
161 | + | |
162 | +const CGEN_ATTR_TABLE frv_cgen_operand_attr_table[] = | |
163 | +{ | |
164 | + { "MACH", & MACH_attr[0], & MACH_attr[0] }, | |
165 | + { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, | |
166 | + { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] }, | |
167 | + { "ABS-ADDR", &bool_attr[0], &bool_attr[0] }, | |
168 | + { "SIGN-OPT", &bool_attr[0], &bool_attr[0] }, | |
169 | + { "SIGNED", &bool_attr[0], &bool_attr[0] }, | |
170 | + { "NEGATIVE", &bool_attr[0], &bool_attr[0] }, | |
171 | + { "RELAX", &bool_attr[0], &bool_attr[0] }, | |
172 | + { "SEM-ONLY", &bool_attr[0], &bool_attr[0] }, | |
173 | + { "HASH-PREFIX", &bool_attr[0], &bool_attr[0] }, | |
174 | + { 0, 0, 0 } | |
175 | +}; | |
176 | + | |
177 | +const CGEN_ATTR_TABLE frv_cgen_insn_attr_table[] = | |
178 | +{ | |
179 | + { "MACH", & MACH_attr[0], & MACH_attr[0] }, | |
180 | + { "UNIT", & UNIT_attr[0], & UNIT_attr[0] }, | |
181 | + { "FR400-MAJOR", & FR400_MAJOR_attr[0], & FR400_MAJOR_attr[0] }, | |
182 | + { "FR500-MAJOR", & FR500_MAJOR_attr[0], & FR500_MAJOR_attr[0] }, | |
183 | + { "ALIAS", &bool_attr[0], &bool_attr[0] }, | |
184 | + { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, | |
185 | + { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] }, | |
186 | + { "COND-CTI", &bool_attr[0], &bool_attr[0] }, | |
187 | + { "SKIP-CTI", &bool_attr[0], &bool_attr[0] }, | |
188 | + { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] }, | |
189 | + { "RELAXABLE", &bool_attr[0], &bool_attr[0] }, | |
190 | + { "RELAX", &bool_attr[0], &bool_attr[0] }, | |
191 | + { "NO-DIS", &bool_attr[0], &bool_attr[0] }, | |
192 | + { "PBB", &bool_attr[0], &bool_attr[0] }, | |
193 | + { "PRIVILEGED", &bool_attr[0], &bool_attr[0] }, | |
194 | + { "NON-EXCEPTING", &bool_attr[0], &bool_attr[0] }, | |
195 | + { "CONDITIONAL", &bool_attr[0], &bool_attr[0] }, | |
196 | + { "FR-ACCESS", &bool_attr[0], &bool_attr[0] }, | |
197 | + { "PRESERVE-OVF", &bool_attr[0], &bool_attr[0] }, | |
198 | + { 0, 0, 0 } | |
199 | +}; | |
200 | + | |
201 | +/* Instruction set variants. */ | |
202 | + | |
203 | +static const CGEN_ISA frv_cgen_isa_table[] = { | |
204 | + { "frv", 32, 32, 32, 32 }, | |
205 | + { 0, 0, 0, 0, 0 } | |
206 | +}; | |
207 | + | |
208 | +/* Machine variants. */ | |
209 | + | |
210 | +static const CGEN_MACH frv_cgen_mach_table[] = { | |
211 | + { "frv", "frv", MACH_FRV, 0 }, | |
212 | + { "fr500", "fr500", MACH_FR500, 0 }, | |
213 | + { "tomcat", "tomcat", MACH_TOMCAT, 0 }, | |
214 | + { "fr400", "fr400", MACH_FR400, 0 }, | |
215 | + { "simple", "simple", MACH_SIMPLE, 0 }, | |
216 | + { 0, 0, 0, 0 } | |
217 | +}; | |
218 | + | |
219 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_gr_names_entries[] = | |
220 | +{ | |
221 | + { "sp", 1, {0, {0}}, 0, 0 }, | |
222 | + { "fp", 2, {0, {0}}, 0, 0 }, | |
223 | + { "gr0", 0, {0, {0}}, 0, 0 }, | |
224 | + { "gr1", 1, {0, {0}}, 0, 0 }, | |
225 | + { "gr2", 2, {0, {0}}, 0, 0 }, | |
226 | + { "gr3", 3, {0, {0}}, 0, 0 }, | |
227 | + { "gr4", 4, {0, {0}}, 0, 0 }, | |
228 | + { "gr5", 5, {0, {0}}, 0, 0 }, | |
229 | + { "gr6", 6, {0, {0}}, 0, 0 }, | |
230 | + { "gr7", 7, {0, {0}}, 0, 0 }, | |
231 | + { "gr8", 8, {0, {0}}, 0, 0 }, | |
232 | + { "gr9", 9, {0, {0}}, 0, 0 }, | |
233 | + { "gr10", 10, {0, {0}}, 0, 0 }, | |
234 | + { "gr11", 11, {0, {0}}, 0, 0 }, | |
235 | + { "gr12", 12, {0, {0}}, 0, 0 }, | |
236 | + { "gr13", 13, {0, {0}}, 0, 0 }, | |
237 | + { "gr14", 14, {0, {0}}, 0, 0 }, | |
238 | + { "gr15", 15, {0, {0}}, 0, 0 }, | |
239 | + { "gr16", 16, {0, {0}}, 0, 0 }, | |
240 | + { "gr17", 17, {0, {0}}, 0, 0 }, | |
241 | + { "gr18", 18, {0, {0}}, 0, 0 }, | |
242 | + { "gr19", 19, {0, {0}}, 0, 0 }, | |
243 | + { "gr20", 20, {0, {0}}, 0, 0 }, | |
244 | + { "gr21", 21, {0, {0}}, 0, 0 }, | |
245 | + { "gr22", 22, {0, {0}}, 0, 0 }, | |
246 | + { "gr23", 23, {0, {0}}, 0, 0 }, | |
247 | + { "gr24", 24, {0, {0}}, 0, 0 }, | |
248 | + { "gr25", 25, {0, {0}}, 0, 0 }, | |
249 | + { "gr26", 26, {0, {0}}, 0, 0 }, | |
250 | + { "gr27", 27, {0, {0}}, 0, 0 }, | |
251 | + { "gr28", 28, {0, {0}}, 0, 0 }, | |
252 | + { "gr29", 29, {0, {0}}, 0, 0 }, | |
253 | + { "gr30", 30, {0, {0}}, 0, 0 }, | |
254 | + { "gr31", 31, {0, {0}}, 0, 0 }, | |
255 | + { "gr32", 32, {0, {0}}, 0, 0 }, | |
256 | + { "gr33", 33, {0, {0}}, 0, 0 }, | |
257 | + { "gr34", 34, {0, {0}}, 0, 0 }, | |
258 | + { "gr35", 35, {0, {0}}, 0, 0 }, | |
259 | + { "gr36", 36, {0, {0}}, 0, 0 }, | |
260 | + { "gr37", 37, {0, {0}}, 0, 0 }, | |
261 | + { "gr38", 38, {0, {0}}, 0, 0 }, | |
262 | + { "gr39", 39, {0, {0}}, 0, 0 }, | |
263 | + { "gr40", 40, {0, {0}}, 0, 0 }, | |
264 | + { "gr41", 41, {0, {0}}, 0, 0 }, | |
265 | + { "gr42", 42, {0, {0}}, 0, 0 }, | |
266 | + { "gr43", 43, {0, {0}}, 0, 0 }, | |
267 | + { "gr44", 44, {0, {0}}, 0, 0 }, | |
268 | + { "gr45", 45, {0, {0}}, 0, 0 }, | |
269 | + { "gr46", 46, {0, {0}}, 0, 0 }, | |
270 | + { "gr47", 47, {0, {0}}, 0, 0 }, | |
271 | + { "gr48", 48, {0, {0}}, 0, 0 }, | |
272 | + { "gr49", 49, {0, {0}}, 0, 0 }, | |
273 | + { "gr50", 50, {0, {0}}, 0, 0 }, | |
274 | + { "gr51", 51, {0, {0}}, 0, 0 }, | |
275 | + { "gr52", 52, {0, {0}}, 0, 0 }, | |
276 | + { "gr53", 53, {0, {0}}, 0, 0 }, | |
277 | + { "gr54", 54, {0, {0}}, 0, 0 }, | |
278 | + { "gr55", 55, {0, {0}}, 0, 0 }, | |
279 | + { "gr56", 56, {0, {0}}, 0, 0 }, | |
280 | + { "gr57", 57, {0, {0}}, 0, 0 }, | |
281 | + { "gr58", 58, {0, {0}}, 0, 0 }, | |
282 | + { "gr59", 59, {0, {0}}, 0, 0 }, | |
283 | + { "gr60", 60, {0, {0}}, 0, 0 }, | |
284 | + { "gr61", 61, {0, {0}}, 0, 0 }, | |
285 | + { "gr62", 62, {0, {0}}, 0, 0 }, | |
286 | + { "gr63", 63, {0, {0}}, 0, 0 } | |
287 | +}; | |
288 | + | |
289 | +CGEN_KEYWORD frv_cgen_opval_gr_names = | |
290 | +{ | |
291 | + & frv_cgen_opval_gr_names_entries[0], | |
292 | + 66, | |
293 | + 0, 0, 0, 0, "" | |
294 | +}; | |
295 | + | |
296 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_fr_names_entries[] = | |
297 | +{ | |
298 | + { "fr0", 0, {0, {0}}, 0, 0 }, | |
299 | + { "fr1", 1, {0, {0}}, 0, 0 }, | |
300 | + { "fr2", 2, {0, {0}}, 0, 0 }, | |
301 | + { "fr3", 3, {0, {0}}, 0, 0 }, | |
302 | + { "fr4", 4, {0, {0}}, 0, 0 }, | |
303 | + { "fr5", 5, {0, {0}}, 0, 0 }, | |
304 | + { "fr6", 6, {0, {0}}, 0, 0 }, | |
305 | + { "fr7", 7, {0, {0}}, 0, 0 }, | |
306 | + { "fr8", 8, {0, {0}}, 0, 0 }, | |
307 | + { "fr9", 9, {0, {0}}, 0, 0 }, | |
308 | + { "fr10", 10, {0, {0}}, 0, 0 }, | |
309 | + { "fr11", 11, {0, {0}}, 0, 0 }, | |
310 | + { "fr12", 12, {0, {0}}, 0, 0 }, | |
311 | + { "fr13", 13, {0, {0}}, 0, 0 }, | |
312 | + { "fr14", 14, {0, {0}}, 0, 0 }, | |
313 | + { "fr15", 15, {0, {0}}, 0, 0 }, | |
314 | + { "fr16", 16, {0, {0}}, 0, 0 }, | |
315 | + { "fr17", 17, {0, {0}}, 0, 0 }, | |
316 | + { "fr18", 18, {0, {0}}, 0, 0 }, | |
317 | + { "fr19", 19, {0, {0}}, 0, 0 }, | |
318 | + { "fr20", 20, {0, {0}}, 0, 0 }, | |
319 | + { "fr21", 21, {0, {0}}, 0, 0 }, | |
320 | + { "fr22", 22, {0, {0}}, 0, 0 }, | |
321 | + { "fr23", 23, {0, {0}}, 0, 0 }, | |
322 | + { "fr24", 24, {0, {0}}, 0, 0 }, | |
323 | + { "fr25", 25, {0, {0}}, 0, 0 }, | |
324 | + { "fr26", 26, {0, {0}}, 0, 0 }, | |
325 | + { "fr27", 27, {0, {0}}, 0, 0 }, | |
326 | + { "fr28", 28, {0, {0}}, 0, 0 }, | |
327 | + { "fr29", 29, {0, {0}}, 0, 0 }, | |
328 | + { "fr30", 30, {0, {0}}, 0, 0 }, | |
329 | + { "fr31", 31, {0, {0}}, 0, 0 }, | |
330 | + { "fr32", 32, {0, {0}}, 0, 0 }, | |
331 | + { "fr33", 33, {0, {0}}, 0, 0 }, | |
332 | + { "fr34", 34, {0, {0}}, 0, 0 }, | |
333 | + { "fr35", 35, {0, {0}}, 0, 0 }, | |
334 | + { "fr36", 36, {0, {0}}, 0, 0 }, | |
335 | + { "fr37", 37, {0, {0}}, 0, 0 }, | |
336 | + { "fr38", 38, {0, {0}}, 0, 0 }, | |
337 | + { "fr39", 39, {0, {0}}, 0, 0 }, | |
338 | + { "fr40", 40, {0, {0}}, 0, 0 }, | |
339 | + { "fr41", 41, {0, {0}}, 0, 0 }, | |
340 | + { "fr42", 42, {0, {0}}, 0, 0 }, | |
341 | + { "fr43", 43, {0, {0}}, 0, 0 }, | |
342 | + { "fr44", 44, {0, {0}}, 0, 0 }, | |
343 | + { "fr45", 45, {0, {0}}, 0, 0 }, | |
344 | + { "fr46", 46, {0, {0}}, 0, 0 }, | |
345 | + { "fr47", 47, {0, {0}}, 0, 0 }, | |
346 | + { "fr48", 48, {0, {0}}, 0, 0 }, | |
347 | + { "fr49", 49, {0, {0}}, 0, 0 }, | |
348 | + { "fr50", 50, {0, {0}}, 0, 0 }, | |
349 | + { "fr51", 51, {0, {0}}, 0, 0 }, | |
350 | + { "fr52", 52, {0, {0}}, 0, 0 }, | |
351 | + { "fr53", 53, {0, {0}}, 0, 0 }, | |
352 | + { "fr54", 54, {0, {0}}, 0, 0 }, | |
353 | + { "fr55", 55, {0, {0}}, 0, 0 }, | |
354 | + { "fr56", 56, {0, {0}}, 0, 0 }, | |
355 | + { "fr57", 57, {0, {0}}, 0, 0 }, | |
356 | + { "fr58", 58, {0, {0}}, 0, 0 }, | |
357 | + { "fr59", 59, {0, {0}}, 0, 0 }, | |
358 | + { "fr60", 60, {0, {0}}, 0, 0 }, | |
359 | + { "fr61", 61, {0, {0}}, 0, 0 }, | |
360 | + { "fr62", 62, {0, {0}}, 0, 0 }, | |
361 | + { "fr63", 63, {0, {0}}, 0, 0 } | |
362 | +}; | |
363 | + | |
364 | +CGEN_KEYWORD frv_cgen_opval_fr_names = | |
365 | +{ | |
366 | + & frv_cgen_opval_fr_names_entries[0], | |
367 | + 64, | |
368 | + 0, 0, 0, 0, "" | |
369 | +}; | |
370 | + | |
371 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_cpr_names_entries[] = | |
372 | +{ | |
373 | + { "cpr0", 0, {0, {0}}, 0, 0 }, | |
374 | + { "cpr1", 1, {0, {0}}, 0, 0 }, | |
375 | + { "cpr2", 2, {0, {0}}, 0, 0 }, | |
376 | + { "cpr3", 3, {0, {0}}, 0, 0 }, | |
377 | + { "cpr4", 4, {0, {0}}, 0, 0 }, | |
378 | + { "cpr5", 5, {0, {0}}, 0, 0 }, | |
379 | + { "cpr6", 6, {0, {0}}, 0, 0 }, | |
380 | + { "cpr7", 7, {0, {0}}, 0, 0 }, | |
381 | + { "cpr8", 8, {0, {0}}, 0, 0 }, | |
382 | + { "cpr9", 9, {0, {0}}, 0, 0 }, | |
383 | + { "cpr10", 10, {0, {0}}, 0, 0 }, | |
384 | + { "cpr11", 11, {0, {0}}, 0, 0 }, | |
385 | + { "cpr12", 12, {0, {0}}, 0, 0 }, | |
386 | + { "cpr13", 13, {0, {0}}, 0, 0 }, | |
387 | + { "cpr14", 14, {0, {0}}, 0, 0 }, | |
388 | + { "cpr15", 15, {0, {0}}, 0, 0 }, | |
389 | + { "cpr16", 16, {0, {0}}, 0, 0 }, | |
390 | + { "cpr17", 17, {0, {0}}, 0, 0 }, | |
391 | + { "cpr18", 18, {0, {0}}, 0, 0 }, | |
392 | + { "cpr19", 19, {0, {0}}, 0, 0 }, | |
393 | + { "cpr20", 20, {0, {0}}, 0, 0 }, | |
394 | + { "cpr21", 21, {0, {0}}, 0, 0 }, | |
395 | + { "cpr22", 22, {0, {0}}, 0, 0 }, | |
396 | + { "cpr23", 23, {0, {0}}, 0, 0 }, | |
397 | + { "cpr24", 24, {0, {0}}, 0, 0 }, | |
398 | + { "cpr25", 25, {0, {0}}, 0, 0 }, | |
399 | + { "cpr26", 26, {0, {0}}, 0, 0 }, | |
400 | + { "cpr27", 27, {0, {0}}, 0, 0 }, | |
401 | + { "cpr28", 28, {0, {0}}, 0, 0 }, | |
402 | + { "cpr29", 29, {0, {0}}, 0, 0 }, | |
403 | + { "cpr30", 30, {0, {0}}, 0, 0 }, | |
404 | + { "cpr31", 31, {0, {0}}, 0, 0 }, | |
405 | + { "cpr32", 32, {0, {0}}, 0, 0 }, | |
406 | + { "cpr33", 33, {0, {0}}, 0, 0 }, | |
407 | + { "cpr34", 34, {0, {0}}, 0, 0 }, | |
408 | + { "cpr35", 35, {0, {0}}, 0, 0 }, | |
409 | + { "cpr36", 36, {0, {0}}, 0, 0 }, | |
410 | + { "cpr37", 37, {0, {0}}, 0, 0 }, | |
411 | + { "cpr38", 38, {0, {0}}, 0, 0 }, | |
412 | + { "cpr39", 39, {0, {0}}, 0, 0 }, | |
413 | + { "cpr40", 40, {0, {0}}, 0, 0 }, | |
414 | + { "cpr41", 41, {0, {0}}, 0, 0 }, | |
415 | + { "cpr42", 42, {0, {0}}, 0, 0 }, | |
416 | + { "cpr43", 43, {0, {0}}, 0, 0 }, | |
417 | + { "cpr44", 44, {0, {0}}, 0, 0 }, | |
418 | + { "cpr45", 45, {0, {0}}, 0, 0 }, | |
419 | + { "cpr46", 46, {0, {0}}, 0, 0 }, | |
420 | + { "cpr47", 47, {0, {0}}, 0, 0 }, | |
421 | + { "cpr48", 48, {0, {0}}, 0, 0 }, | |
422 | + { "cpr49", 49, {0, {0}}, 0, 0 }, | |
423 | + { "cpr50", 50, {0, {0}}, 0, 0 }, | |
424 | + { "cpr51", 51, {0, {0}}, 0, 0 }, | |
425 | + { "cpr52", 52, {0, {0}}, 0, 0 }, | |
426 | + { "cpr53", 53, {0, {0}}, 0, 0 }, | |
427 | + { "cpr54", 54, {0, {0}}, 0, 0 }, | |
428 | + { "cpr55", 55, {0, {0}}, 0, 0 }, | |
429 | + { "cpr56", 56, {0, {0}}, 0, 0 }, | |
430 | + { "cpr57", 57, {0, {0}}, 0, 0 }, | |
431 | + { "cpr58", 58, {0, {0}}, 0, 0 }, | |
432 | + { "cpr59", 59, {0, {0}}, 0, 0 }, | |
433 | + { "cpr60", 60, {0, {0}}, 0, 0 }, | |
434 | + { "cpr61", 61, {0, {0}}, 0, 0 }, | |
435 | + { "cpr62", 62, {0, {0}}, 0, 0 }, | |
436 | + { "cpr63", 63, {0, {0}}, 0, 0 } | |
437 | +}; | |
438 | + | |
439 | +CGEN_KEYWORD frv_cgen_opval_cpr_names = | |
440 | +{ | |
441 | + & frv_cgen_opval_cpr_names_entries[0], | |
442 | + 64, | |
443 | + 0, 0, 0, 0, "" | |
444 | +}; | |
445 | + | |
446 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_spr_names_entries[] = | |
447 | +{ | |
448 | + { "psr", 0, {0, {0}}, 0, 0 }, | |
449 | + { "pcsr", 1, {0, {0}}, 0, 0 }, | |
450 | + { "bpcsr", 2, {0, {0}}, 0, 0 }, | |
451 | + { "tbr", 3, {0, {0}}, 0, 0 }, | |
452 | + { "bpsr", 4, {0, {0}}, 0, 0 }, | |
453 | + { "hsr0", 16, {0, {0}}, 0, 0 }, | |
454 | + { "hsr1", 17, {0, {0}}, 0, 0 }, | |
455 | + { "hsr2", 18, {0, {0}}, 0, 0 }, | |
456 | + { "hsr3", 19, {0, {0}}, 0, 0 }, | |
457 | + { "hsr4", 20, {0, {0}}, 0, 0 }, | |
458 | + { "hsr5", 21, {0, {0}}, 0, 0 }, | |
459 | + { "hsr6", 22, {0, {0}}, 0, 0 }, | |
460 | + { "hsr7", 23, {0, {0}}, 0, 0 }, | |
461 | + { "hsr8", 24, {0, {0}}, 0, 0 }, | |
462 | + { "hsr9", 25, {0, {0}}, 0, 0 }, | |
463 | + { "hsr10", 26, {0, {0}}, 0, 0 }, | |
464 | + { "hsr11", 27, {0, {0}}, 0, 0 }, | |
465 | + { "hsr12", 28, {0, {0}}, 0, 0 }, | |
466 | + { "hsr13", 29, {0, {0}}, 0, 0 }, | |
467 | + { "hsr14", 30, {0, {0}}, 0, 0 }, | |
468 | + { "hsr15", 31, {0, {0}}, 0, 0 }, | |
469 | + { "hsr16", 32, {0, {0}}, 0, 0 }, | |
470 | + { "hsr17", 33, {0, {0}}, 0, 0 }, | |
471 | + { "hsr18", 34, {0, {0}}, 0, 0 }, | |
472 | + { "hsr19", 35, {0, {0}}, 0, 0 }, | |
473 | + { "hsr20", 36, {0, {0}}, 0, 0 }, | |
474 | + { "hsr21", 37, {0, {0}}, 0, 0 }, | |
475 | + { "hsr22", 38, {0, {0}}, 0, 0 }, | |
476 | + { "hsr23", 39, {0, {0}}, 0, 0 }, | |
477 | + { "hsr24", 40, {0, {0}}, 0, 0 }, | |
478 | + { "hsr25", 41, {0, {0}}, 0, 0 }, | |
479 | + { "hsr26", 42, {0, {0}}, 0, 0 }, | |
480 | + { "hsr27", 43, {0, {0}}, 0, 0 }, | |
481 | + { "hsr28", 44, {0, {0}}, 0, 0 }, | |
482 | + { "hsr29", 45, {0, {0}}, 0, 0 }, | |
483 | + { "hsr30", 46, {0, {0}}, 0, 0 }, | |
484 | + { "hsr31", 47, {0, {0}}, 0, 0 }, | |
485 | + { "hsr32", 48, {0, {0}}, 0, 0 }, | |
486 | + { "hsr33", 49, {0, {0}}, 0, 0 }, | |
487 | + { "hsr34", 50, {0, {0}}, 0, 0 }, | |
488 | + { "hsr35", 51, {0, {0}}, 0, 0 }, | |
489 | + { "hsr36", 52, {0, {0}}, 0, 0 }, | |
490 | + { "hsr37", 53, {0, {0}}, 0, 0 }, | |
491 | + { "hsr38", 54, {0, {0}}, 0, 0 }, | |
492 | + { "hsr39", 55, {0, {0}}, 0, 0 }, | |
493 | + { "hsr40", 56, {0, {0}}, 0, 0 }, | |
494 | + { "hsr41", 57, {0, {0}}, 0, 0 }, | |
495 | + { "hsr42", 58, {0, {0}}, 0, 0 }, | |
496 | + { "hsr43", 59, {0, {0}}, 0, 0 }, | |
497 | + { "hsr44", 60, {0, {0}}, 0, 0 }, | |
498 | + { "hsr45", 61, {0, {0}}, 0, 0 }, | |
499 | + { "hsr46", 62, {0, {0}}, 0, 0 }, | |
500 | + { "hsr47", 63, {0, {0}}, 0, 0 }, | |
501 | + { "hsr48", 64, {0, {0}}, 0, 0 }, | |
502 | + { "hsr49", 65, {0, {0}}, 0, 0 }, | |
503 | + { "hsr50", 66, {0, {0}}, 0, 0 }, | |
504 | + { "hsr51", 67, {0, {0}}, 0, 0 }, | |
505 | + { "hsr52", 68, {0, {0}}, 0, 0 }, | |
506 | + { "hsr53", 69, {0, {0}}, 0, 0 }, | |
507 | + { "hsr54", 70, {0, {0}}, 0, 0 }, | |
508 | + { "hsr55", 71, {0, {0}}, 0, 0 }, | |
509 | + { "hsr56", 72, {0, {0}}, 0, 0 }, | |
510 | + { "hsr57", 73, {0, {0}}, 0, 0 }, | |
511 | + { "hsr58", 74, {0, {0}}, 0, 0 }, | |
512 | + { "hsr59", 75, {0, {0}}, 0, 0 }, | |
513 | + { "hsr60", 76, {0, {0}}, 0, 0 }, | |
514 | + { "hsr61", 77, {0, {0}}, 0, 0 }, | |
515 | + { "hsr62", 78, {0, {0}}, 0, 0 }, | |
516 | + { "hsr63", 79, {0, {0}}, 0, 0 }, | |
517 | + { "ccr", 256, {0, {0}}, 0, 0 }, | |
518 | + { "cccr", 263, {0, {0}}, 0, 0 }, | |
519 | + { "lr", 272, {0, {0}}, 0, 0 }, | |
520 | + { "lcr", 273, {0, {0}}, 0, 0 }, | |
521 | + { "isr", 288, {0, {0}}, 0, 0 }, | |
522 | + { "neear0", 352, {0, {0}}, 0, 0 }, | |
523 | + { "neear1", 353, {0, {0}}, 0, 0 }, | |
524 | + { "neear2", 354, {0, {0}}, 0, 0 }, | |
525 | + { "neear3", 355, {0, {0}}, 0, 0 }, | |
526 | + { "neear4", 356, {0, {0}}, 0, 0 }, | |
527 | + { "neear5", 357, {0, {0}}, 0, 0 }, | |
528 | + { "neear6", 358, {0, {0}}, 0, 0 }, | |
529 | + { "neear7", 359, {0, {0}}, 0, 0 }, | |
530 | + { "neear8", 360, {0, {0}}, 0, 0 }, | |
531 | + { "neear9", 361, {0, {0}}, 0, 0 }, | |
532 | + { "neear10", 362, {0, {0}}, 0, 0 }, | |
533 | + { "neear11", 363, {0, {0}}, 0, 0 }, | |
534 | + { "neear12", 364, {0, {0}}, 0, 0 }, | |
535 | + { "neear13", 365, {0, {0}}, 0, 0 }, | |
536 | + { "neear14", 366, {0, {0}}, 0, 0 }, | |
537 | + { "neear15", 367, {0, {0}}, 0, 0 }, | |
538 | + { "neear16", 368, {0, {0}}, 0, 0 }, | |
539 | + { "neear17", 369, {0, {0}}, 0, 0 }, | |
540 | + { "neear18", 370, {0, {0}}, 0, 0 }, | |
541 | + { "neear19", 371, {0, {0}}, 0, 0 }, | |
542 | + { "neear20", 372, {0, {0}}, 0, 0 }, | |
543 | + { "neear21", 373, {0, {0}}, 0, 0 }, | |
544 | + { "neear22", 374, {0, {0}}, 0, 0 }, | |
545 | + { "neear23", 375, {0, {0}}, 0, 0 }, | |
546 | + { "neear24", 376, {0, {0}}, 0, 0 }, | |
547 | + { "neear25", 377, {0, {0}}, 0, 0 }, | |
548 | + { "neear26", 378, {0, {0}}, 0, 0 }, | |
549 | + { "neear27", 379, {0, {0}}, 0, 0 }, | |
550 | + { "neear28", 380, {0, {0}}, 0, 0 }, | |
551 | + { "neear29", 381, {0, {0}}, 0, 0 }, | |
552 | + { "neear30", 382, {0, {0}}, 0, 0 }, | |
553 | + { "neear31", 383, {0, {0}}, 0, 0 }, | |
554 | + { "nesr0", 384, {0, {0}}, 0, 0 }, | |
555 | + { "nesr1", 385, {0, {0}}, 0, 0 }, | |
556 | + { "nesr2", 386, {0, {0}}, 0, 0 }, | |
557 | + { "nesr3", 387, {0, {0}}, 0, 0 }, | |
558 | + { "nesr4", 388, {0, {0}}, 0, 0 }, | |
559 | + { "nesr5", 389, {0, {0}}, 0, 0 }, | |
560 | + { "nesr6", 390, {0, {0}}, 0, 0 }, | |
561 | + { "nesr7", 391, {0, {0}}, 0, 0 }, | |
562 | + { "nesr8", 392, {0, {0}}, 0, 0 }, | |
563 | + { "nesr9", 393, {0, {0}}, 0, 0 }, | |
564 | + { "nesr10", 394, {0, {0}}, 0, 0 }, | |
565 | + { "nesr11", 395, {0, {0}}, 0, 0 }, | |
566 | + { "nesr12", 396, {0, {0}}, 0, 0 }, | |
567 | + { "nesr13", 397, {0, {0}}, 0, 0 }, | |
568 | + { "nesr14", 398, {0, {0}}, 0, 0 }, | |
569 | + { "nesr15", 399, {0, {0}}, 0, 0 }, | |
570 | + { "nesr16", 400, {0, {0}}, 0, 0 }, | |
571 | + { "nesr17", 401, {0, {0}}, 0, 0 }, | |
572 | + { "nesr18", 402, {0, {0}}, 0, 0 }, | |
573 | + { "nesr19", 403, {0, {0}}, 0, 0 }, | |
574 | + { "nesr20", 404, {0, {0}}, 0, 0 }, | |
575 | + { "nesr21", 405, {0, {0}}, 0, 0 }, | |
576 | + { "nesr22", 406, {0, {0}}, 0, 0 }, | |
577 | + { "nesr23", 407, {0, {0}}, 0, 0 }, | |
578 | + { "nesr24", 408, {0, {0}}, 0, 0 }, | |
579 | + { "nesr25", 409, {0, {0}}, 0, 0 }, | |
580 | + { "nesr26", 410, {0, {0}}, 0, 0 }, | |
581 | + { "nesr27", 411, {0, {0}}, 0, 0 }, | |
582 | + { "nesr28", 412, {0, {0}}, 0, 0 }, | |
583 | + { "nesr29", 413, {0, {0}}, 0, 0 }, | |
584 | + { "nesr30", 414, {0, {0}}, 0, 0 }, | |
585 | + { "nesr31", 415, {0, {0}}, 0, 0 }, | |
586 | + { "necr", 416, {0, {0}}, 0, 0 }, | |
587 | + { "gner0", 432, {0, {0}}, 0, 0 }, | |
588 | + { "gner1", 433, {0, {0}}, 0, 0 }, | |
589 | + { "fner0", 434, {0, {0}}, 0, 0 }, | |
590 | + { "fner1", 435, {0, {0}}, 0, 0 }, | |
591 | + { "epcr0", 512, {0, {0}}, 0, 0 }, | |
592 | + { "epcr1", 513, {0, {0}}, 0, 0 }, | |
593 | + { "epcr2", 514, {0, {0}}, 0, 0 }, | |
594 | + { "epcr3", 515, {0, {0}}, 0, 0 }, | |
595 | + { "epcr4", 516, {0, {0}}, 0, 0 }, | |
596 | + { "epcr5", 517, {0, {0}}, 0, 0 }, | |
597 | + { "epcr6", 518, {0, {0}}, 0, 0 }, | |
598 | + { "epcr7", 519, {0, {0}}, 0, 0 }, | |
599 | + { "epcr8", 520, {0, {0}}, 0, 0 }, | |
600 | + { "epcr9", 521, {0, {0}}, 0, 0 }, | |
601 | + { "epcr10", 522, {0, {0}}, 0, 0 }, | |
602 | + { "epcr11", 523, {0, {0}}, 0, 0 }, | |
603 | + { "epcr12", 524, {0, {0}}, 0, 0 }, | |
604 | + { "epcr13", 525, {0, {0}}, 0, 0 }, | |
605 | + { "epcr14", 526, {0, {0}}, 0, 0 }, | |
606 | + { "epcr15", 527, {0, {0}}, 0, 0 }, | |
607 | + { "epcr16", 528, {0, {0}}, 0, 0 }, | |
608 | + { "epcr17", 529, {0, {0}}, 0, 0 }, | |
609 | + { "epcr18", 530, {0, {0}}, 0, 0 }, | |
610 | + { "epcr19", 531, {0, {0}}, 0, 0 }, | |
611 | + { "epcr20", 532, {0, {0}}, 0, 0 }, | |
612 | + { "epcr21", 533, {0, {0}}, 0, 0 }, | |
613 | + { "epcr22", 534, {0, {0}}, 0, 0 }, | |
614 | + { "epcr23", 535, {0, {0}}, 0, 0 }, | |
615 | + { "epcr24", 536, {0, {0}}, 0, 0 }, | |
616 | + { "epcr25", 537, {0, {0}}, 0, 0 }, | |
617 | + { "epcr26", 538, {0, {0}}, 0, 0 }, | |
618 | + { "epcr27", 539, {0, {0}}, 0, 0 }, | |
619 | + { "epcr28", 540, {0, {0}}, 0, 0 }, | |
620 | + { "epcr29", 541, {0, {0}}, 0, 0 }, | |
621 | + { "epcr30", 542, {0, {0}}, 0, 0 }, | |
622 | + { "epcr31", 543, {0, {0}}, 0, 0 }, | |
623 | + { "epcr32", 544, {0, {0}}, 0, 0 }, | |
624 | + { "epcr33", 545, {0, {0}}, 0, 0 }, | |
625 | + { "epcr34", 546, {0, {0}}, 0, 0 }, | |
626 | + { "epcr35", 547, {0, {0}}, 0, 0 }, | |
627 | + { "epcr36", 548, {0, {0}}, 0, 0 }, | |
628 | + { "epcr37", 549, {0, {0}}, 0, 0 }, | |
629 | + { "epcr38", 550, {0, {0}}, 0, 0 }, | |
630 | + { "epcr39", 551, {0, {0}}, 0, 0 }, | |
631 | + { "epcr40", 552, {0, {0}}, 0, 0 }, | |
632 | + { "epcr41", 553, {0, {0}}, 0, 0 }, | |
633 | + { "epcr42", 554, {0, {0}}, 0, 0 }, | |
634 | + { "epcr43", 555, {0, {0}}, 0, 0 }, | |
635 | + { "epcr44", 556, {0, {0}}, 0, 0 }, | |
636 | + { "epcr45", 557, {0, {0}}, 0, 0 }, | |
637 | + { "epcr46", 558, {0, {0}}, 0, 0 }, | |
638 | + { "epcr47", 559, {0, {0}}, 0, 0 }, | |
639 | + { "epcr48", 560, {0, {0}}, 0, 0 }, | |
640 | + { "epcr49", 561, {0, {0}}, 0, 0 }, | |
641 | + { "epcr50", 562, {0, {0}}, 0, 0 }, | |
642 | + { "epcr51", 563, {0, {0}}, 0, 0 }, | |
643 | + { "epcr52", 564, {0, {0}}, 0, 0 }, | |
644 | + { "epcr53", 565, {0, {0}}, 0, 0 }, | |
645 | + { "epcr54", 566, {0, {0}}, 0, 0 }, | |
646 | + { "epcr55", 567, {0, {0}}, 0, 0 }, | |
647 | + { "epcr56", 568, {0, {0}}, 0, 0 }, | |
648 | + { "epcr57", 569, {0, {0}}, 0, 0 }, | |
649 | + { "epcr58", 570, {0, {0}}, 0, 0 }, | |
650 | + { "epcr59", 571, {0, {0}}, 0, 0 }, | |
651 | + { "epcr60", 572, {0, {0}}, 0, 0 }, | |
652 | + { "epcr61", 573, {0, {0}}, 0, 0 }, | |
653 | + { "epcr62", 574, {0, {0}}, 0, 0 }, | |
654 | + { "epcr63", 575, {0, {0}}, 0, 0 }, | |
655 | + { "esr0", 576, {0, {0}}, 0, 0 }, | |
656 | + { "esr1", 577, {0, {0}}, 0, 0 }, | |
657 | + { "esr2", 578, {0, {0}}, 0, 0 }, | |
658 | + { "esr3", 579, {0, {0}}, 0, 0 }, | |
659 | + { "esr4", 580, {0, {0}}, 0, 0 }, | |
660 | + { "esr5", 581, {0, {0}}, 0, 0 }, | |
661 | + { "esr6", 582, {0, {0}}, 0, 0 }, | |
662 | + { "esr7", 583, {0, {0}}, 0, 0 }, | |
663 | + { "esr8", 584, {0, {0}}, 0, 0 }, | |
664 | + { "esr9", 585, {0, {0}}, 0, 0 }, | |
665 | + { "esr10", 586, {0, {0}}, 0, 0 }, | |
666 | + { "esr11", 587, {0, {0}}, 0, 0 }, | |
667 | + { "esr12", 588, {0, {0}}, 0, 0 }, | |
668 | + { "esr13", 589, {0, {0}}, 0, 0 }, | |
669 | + { "esr14", 590, {0, {0}}, 0, 0 }, | |
670 | + { "esr15", 591, {0, {0}}, 0, 0 }, | |
671 | + { "esr16", 592, {0, {0}}, 0, 0 }, | |
672 | + { "esr17", 593, {0, {0}}, 0, 0 }, | |
673 | + { "esr18", 594, {0, {0}}, 0, 0 }, | |
674 | + { "esr19", 595, {0, {0}}, 0, 0 }, | |
675 | + { "esr20", 596, {0, {0}}, 0, 0 }, | |
676 | + { "esr21", 597, {0, {0}}, 0, 0 }, | |
677 | + { "esr22", 598, {0, {0}}, 0, 0 }, | |
678 | + { "esr23", 599, {0, {0}}, 0, 0 }, | |
679 | + { "esr24", 600, {0, {0}}, 0, 0 }, | |
680 | + { "esr25", 601, {0, {0}}, 0, 0 }, | |
681 | + { "esr26", 602, {0, {0}}, 0, 0 }, | |
682 | + { "esr27", 603, {0, {0}}, 0, 0 }, | |
683 | + { "esr28", 604, {0, {0}}, 0, 0 }, | |
684 | + { "esr29", 605, {0, {0}}, 0, 0 }, | |
685 | + { "esr30", 606, {0, {0}}, 0, 0 }, | |
686 | + { "esr31", 607, {0, {0}}, 0, 0 }, | |
687 | + { "esr32", 608, {0, {0}}, 0, 0 }, | |
688 | + { "esr33", 609, {0, {0}}, 0, 0 }, | |
689 | + { "esr34", 610, {0, {0}}, 0, 0 }, | |
690 | + { "esr35", 611, {0, {0}}, 0, 0 }, | |
691 | + { "esr36", 612, {0, {0}}, 0, 0 }, | |
692 | + { "esr37", 613, {0, {0}}, 0, 0 }, | |
693 | + { "esr38", 614, {0, {0}}, 0, 0 }, | |
694 | + { "esr39", 615, {0, {0}}, 0, 0 }, | |
695 | + { "esr40", 616, {0, {0}}, 0, 0 }, | |
696 | + { "esr41", 617, {0, {0}}, 0, 0 }, | |
697 | + { "esr42", 618, {0, {0}}, 0, 0 }, | |
698 | + { "esr43", 619, {0, {0}}, 0, 0 }, | |
699 | + { "esr44", 620, {0, {0}}, 0, 0 }, | |
700 | + { "esr45", 621, {0, {0}}, 0, 0 }, | |
701 | + { "esr46", 622, {0, {0}}, 0, 0 }, | |
702 | + { "esr47", 623, {0, {0}}, 0, 0 }, | |
703 | + { "esr48", 624, {0, {0}}, 0, 0 }, | |
704 | + { "esr49", 625, {0, {0}}, 0, 0 }, | |
705 | + { "esr50", 626, {0, {0}}, 0, 0 }, | |
706 | + { "esr51", 627, {0, {0}}, 0, 0 }, | |
707 | + { "esr52", 628, {0, {0}}, 0, 0 }, | |
708 | + { "esr53", 629, {0, {0}}, 0, 0 }, | |
709 | + { "esr54", 630, {0, {0}}, 0, 0 }, | |
710 | + { "esr55", 631, {0, {0}}, 0, 0 }, | |
711 | + { "esr56", 632, {0, {0}}, 0, 0 }, | |
712 | + { "esr57", 633, {0, {0}}, 0, 0 }, | |
713 | + { "esr58", 634, {0, {0}}, 0, 0 }, | |
714 | + { "esr59", 635, {0, {0}}, 0, 0 }, | |
715 | + { "esr60", 636, {0, {0}}, 0, 0 }, | |
716 | + { "esr61", 637, {0, {0}}, 0, 0 }, | |
717 | + { "esr62", 638, {0, {0}}, 0, 0 }, | |
718 | + { "esr63", 639, {0, {0}}, 0, 0 }, | |
719 | + { "eir0", 640, {0, {0}}, 0, 0 }, | |
720 | + { "eir1", 641, {0, {0}}, 0, 0 }, | |
721 | + { "eir2", 642, {0, {0}}, 0, 0 }, | |
722 | + { "eir3", 643, {0, {0}}, 0, 0 }, | |
723 | + { "eir4", 644, {0, {0}}, 0, 0 }, | |
724 | + { "eir5", 645, {0, {0}}, 0, 0 }, | |
725 | + { "eir6", 646, {0, {0}}, 0, 0 }, | |
726 | + { "eir7", 647, {0, {0}}, 0, 0 }, | |
727 | + { "eir8", 648, {0, {0}}, 0, 0 }, | |
728 | + { "eir9", 649, {0, {0}}, 0, 0 }, | |
729 | + { "eir10", 650, {0, {0}}, 0, 0 }, | |
730 | + { "eir11", 651, {0, {0}}, 0, 0 }, | |
731 | + { "eir12", 652, {0, {0}}, 0, 0 }, | |
732 | + { "eir13", 653, {0, {0}}, 0, 0 }, | |
733 | + { "eir14", 654, {0, {0}}, 0, 0 }, | |
734 | + { "eir15", 655, {0, {0}}, 0, 0 }, | |
735 | + { "eir16", 656, {0, {0}}, 0, 0 }, | |
736 | + { "eir17", 657, {0, {0}}, 0, 0 }, | |
737 | + { "eir18", 658, {0, {0}}, 0, 0 }, | |
738 | + { "eir19", 659, {0, {0}}, 0, 0 }, | |
739 | + { "eir20", 660, {0, {0}}, 0, 0 }, | |
740 | + { "eir21", 661, {0, {0}}, 0, 0 }, | |
741 | + { "eir22", 662, {0, {0}}, 0, 0 }, | |
742 | + { "eir23", 663, {0, {0}}, 0, 0 }, | |
743 | + { "eir24", 664, {0, {0}}, 0, 0 }, | |
744 | + { "eir25", 665, {0, {0}}, 0, 0 }, | |
745 | + { "eir26", 666, {0, {0}}, 0, 0 }, | |
746 | + { "eir27", 667, {0, {0}}, 0, 0 }, | |
747 | + { "eir28", 668, {0, {0}}, 0, 0 }, | |
748 | + { "eir29", 669, {0, {0}}, 0, 0 }, | |
749 | + { "eir30", 670, {0, {0}}, 0, 0 }, | |
750 | + { "eir31", 671, {0, {0}}, 0, 0 }, | |
751 | + { "esfr0", 672, {0, {0}}, 0, 0 }, | |
752 | + { "esfr1", 673, {0, {0}}, 0, 0 }, | |
753 | + { "sr0", 768, {0, {0}}, 0, 0 }, | |
754 | + { "sr1", 769, {0, {0}}, 0, 0 }, | |
755 | + { "sr2", 770, {0, {0}}, 0, 0 }, | |
756 | + { "sr3", 771, {0, {0}}, 0, 0 }, | |
757 | + { "fsr0", 1024, {0, {0}}, 0, 0 }, | |
758 | + { "fsr1", 1025, {0, {0}}, 0, 0 }, | |
759 | + { "fsr2", 1026, {0, {0}}, 0, 0 }, | |
760 | + { "fsr3", 1027, {0, {0}}, 0, 0 }, | |
761 | + { "fsr4", 1028, {0, {0}}, 0, 0 }, | |
762 | + { "fsr5", 1029, {0, {0}}, 0, 0 }, | |
763 | + { "fsr6", 1030, {0, {0}}, 0, 0 }, | |
764 | + { "fsr7", 1031, {0, {0}}, 0, 0 }, | |
765 | + { "fsr8", 1032, {0, {0}}, 0, 0 }, | |
766 | + { "fsr9", 1033, {0, {0}}, 0, 0 }, | |
767 | + { "fsr10", 1034, {0, {0}}, 0, 0 }, | |
768 | + { "fsr11", 1035, {0, {0}}, 0, 0 }, | |
769 | + { "fsr12", 1036, {0, {0}}, 0, 0 }, | |
770 | + { "fsr13", 1037, {0, {0}}, 0, 0 }, | |
771 | + { "fsr14", 1038, {0, {0}}, 0, 0 }, | |
772 | + { "fsr15", 1039, {0, {0}}, 0, 0 }, | |
773 | + { "fsr16", 1040, {0, {0}}, 0, 0 }, | |
774 | + { "fsr17", 1041, {0, {0}}, 0, 0 }, | |
775 | + { "fsr18", 1042, {0, {0}}, 0, 0 }, | |
776 | + { "fsr19", 1043, {0, {0}}, 0, 0 }, | |
777 | + { "fsr20", 1044, {0, {0}}, 0, 0 }, | |
778 | + { "fsr21", 1045, {0, {0}}, 0, 0 }, | |
779 | + { "fsr22", 1046, {0, {0}}, 0, 0 }, | |
780 | + { "fsr23", 1047, {0, {0}}, 0, 0 }, | |
781 | + { "fsr24", 1048, {0, {0}}, 0, 0 }, | |
782 | + { "fsr25", 1049, {0, {0}}, 0, 0 }, | |
783 | + { "fsr26", 1050, {0, {0}}, 0, 0 }, | |
784 | + { "fsr27", 1051, {0, {0}}, 0, 0 }, | |
785 | + { "fsr28", 1052, {0, {0}}, 0, 0 }, | |
786 | + { "fsr29", 1053, {0, {0}}, 0, 0 }, | |
787 | + { "fsr30", 1054, {0, {0}}, 0, 0 }, | |
788 | + { "fsr31", 1055, {0, {0}}, 0, 0 }, | |
789 | + { "fsr32", 1056, {0, {0}}, 0, 0 }, | |
790 | + { "fsr33", 1057, {0, {0}}, 0, 0 }, | |
791 | + { "fsr34", 1058, {0, {0}}, 0, 0 }, | |
792 | + { "fsr35", 1059, {0, {0}}, 0, 0 }, | |
793 | + { "fsr36", 1060, {0, {0}}, 0, 0 }, | |
794 | + { "fsr37", 1061, {0, {0}}, 0, 0 }, | |
795 | + { "fsr38", 1062, {0, {0}}, 0, 0 }, | |
796 | + { "fsr39", 1063, {0, {0}}, 0, 0 }, | |
797 | + { "fsr40", 1064, {0, {0}}, 0, 0 }, | |
798 | + { "fsr41", 1065, {0, {0}}, 0, 0 }, | |
799 | + { "fsr42", 1066, {0, {0}}, 0, 0 }, | |
800 | + { "fsr43", 1067, {0, {0}}, 0, 0 }, | |
801 | + { "fsr44", 1068, {0, {0}}, 0, 0 }, | |
802 | + { "fsr45", 1069, {0, {0}}, 0, 0 }, | |
803 | + { "fsr46", 1070, {0, {0}}, 0, 0 }, | |
804 | + { "fsr47", 1071, {0, {0}}, 0, 0 }, | |
805 | + { "fsr48", 1072, {0, {0}}, 0, 0 }, | |
806 | + { "fsr49", 1073, {0, {0}}, 0, 0 }, | |
807 | + { "fsr50", 1074, {0, {0}}, 0, 0 }, | |
808 | + { "fsr51", 1075, {0, {0}}, 0, 0 }, | |
809 | + { "fsr52", 1076, {0, {0}}, 0, 0 }, | |
810 | + { "fsr53", 1077, {0, {0}}, 0, 0 }, | |
811 | + { "fsr54", 1078, {0, {0}}, 0, 0 }, | |
812 | + { "fsr55", 1079, {0, {0}}, 0, 0 }, | |
813 | + { "fsr56", 1080, {0, {0}}, 0, 0 }, | |
814 | + { "fsr57", 1081, {0, {0}}, 0, 0 }, | |
815 | + { "fsr58", 1082, {0, {0}}, 0, 0 }, | |
816 | + { "fsr59", 1083, {0, {0}}, 0, 0 }, | |
817 | + { "fsr60", 1084, {0, {0}}, 0, 0 }, | |
818 | + { "fsr61", 1085, {0, {0}}, 0, 0 }, | |
819 | + { "fsr62", 1086, {0, {0}}, 0, 0 }, | |
820 | + { "fsr63", 1087, {0, {0}}, 0, 0 }, | |
821 | + { "fqop0", 1088, {0, {0}}, 0, 0 }, | |
822 | + { "fqop1", 1090, {0, {0}}, 0, 0 }, | |
823 | + { "fqop2", 1092, {0, {0}}, 0, 0 }, | |
824 | + { "fqop3", 1094, {0, {0}}, 0, 0 }, | |
825 | + { "fqop4", 1096, {0, {0}}, 0, 0 }, | |
826 | + { "fqop5", 1098, {0, {0}}, 0, 0 }, | |
827 | + { "fqop6", 1100, {0, {0}}, 0, 0 }, | |
828 | + { "fqop7", 1102, {0, {0}}, 0, 0 }, | |
829 | + { "fqop8", 1104, {0, {0}}, 0, 0 }, | |
830 | + { "fqop9", 1106, {0, {0}}, 0, 0 }, | |
831 | + { "fqop10", 1108, {0, {0}}, 0, 0 }, | |
832 | + { "fqop11", 1110, {0, {0}}, 0, 0 }, | |
833 | + { "fqop12", 1112, {0, {0}}, 0, 0 }, | |
834 | + { "fqop13", 1114, {0, {0}}, 0, 0 }, | |
835 | + { "fqop14", 1116, {0, {0}}, 0, 0 }, | |
836 | + { "fqop15", 1118, {0, {0}}, 0, 0 }, | |
837 | + { "fqop16", 1120, {0, {0}}, 0, 0 }, | |
838 | + { "fqop17", 1122, {0, {0}}, 0, 0 }, | |
839 | + { "fqop18", 1124, {0, {0}}, 0, 0 }, | |
840 | + { "fqop19", 1126, {0, {0}}, 0, 0 }, | |
841 | + { "fqop20", 1128, {0, {0}}, 0, 0 }, | |
842 | + { "fqop21", 1130, {0, {0}}, 0, 0 }, | |
843 | + { "fqop22", 1132, {0, {0}}, 0, 0 }, | |
844 | + { "fqop23", 1134, {0, {0}}, 0, 0 }, | |
845 | + { "fqop24", 1136, {0, {0}}, 0, 0 }, | |
846 | + { "fqop25", 1138, {0, {0}}, 0, 0 }, | |
847 | + { "fqop26", 1140, {0, {0}}, 0, 0 }, | |
848 | + { "fqop27", 1142, {0, {0}}, 0, 0 }, | |
849 | + { "fqop28", 1144, {0, {0}}, 0, 0 }, | |
850 | + { "fqop29", 1146, {0, {0}}, 0, 0 }, | |
851 | + { "fqop30", 1148, {0, {0}}, 0, 0 }, | |
852 | + { "fqop31", 1150, {0, {0}}, 0, 0 }, | |
853 | + { "fqst0", 1089, {0, {0}}, 0, 0 }, | |
854 | + { "fqst1", 1091, {0, {0}}, 0, 0 }, | |
855 | + { "fqst2", 1093, {0, {0}}, 0, 0 }, | |
856 | + { "fqst3", 1095, {0, {0}}, 0, 0 }, | |
857 | + { "fqst4", 1097, {0, {0}}, 0, 0 }, | |
858 | + { "fqst5", 1099, {0, {0}}, 0, 0 }, | |
859 | + { "fqst6", 1101, {0, {0}}, 0, 0 }, | |
860 | + { "fqst7", 1103, {0, {0}}, 0, 0 }, | |
861 | + { "fqst8", 1105, {0, {0}}, 0, 0 }, | |
862 | + { "fqst9", 1107, {0, {0}}, 0, 0 }, | |
863 | + { "fqst10", 1109, {0, {0}}, 0, 0 }, | |
864 | + { "fqst11", 1111, {0, {0}}, 0, 0 }, | |
865 | + { "fqst12", 1113, {0, {0}}, 0, 0 }, | |
866 | + { "fqst13", 1115, {0, {0}}, 0, 0 }, | |
867 | + { "fqst14", 1117, {0, {0}}, 0, 0 }, | |
868 | + { "fqst15", 1119, {0, {0}}, 0, 0 }, | |
869 | + { "fqst16", 1121, {0, {0}}, 0, 0 }, | |
870 | + { "fqst17", 1123, {0, {0}}, 0, 0 }, | |
871 | + { "fqst18", 1125, {0, {0}}, 0, 0 }, | |
872 | + { "fqst19", 1127, {0, {0}}, 0, 0 }, | |
873 | + { "fqst20", 1129, {0, {0}}, 0, 0 }, | |
874 | + { "fqst21", 1131, {0, {0}}, 0, 0 }, | |
875 | + { "fqst22", 1133, {0, {0}}, 0, 0 }, | |
876 | + { "fqst23", 1135, {0, {0}}, 0, 0 }, | |
877 | + { "fqst24", 1137, {0, {0}}, 0, 0 }, | |
878 | + { "fqst25", 1139, {0, {0}}, 0, 0 }, | |
879 | + { "fqst26", 1141, {0, {0}}, 0, 0 }, | |
880 | + { "fqst27", 1143, {0, {0}}, 0, 0 }, | |
881 | + { "fqst28", 1145, {0, {0}}, 0, 0 }, | |
882 | + { "fqst29", 1147, {0, {0}}, 0, 0 }, | |
883 | + { "fqst30", 1149, {0, {0}}, 0, 0 }, | |
884 | + { "fqst31", 1151, {0, {0}}, 0, 0 }, | |
885 | + { "mcilr0", 1272, {0, {0}}, 0, 0 }, | |
886 | + { "mcilr1", 1273, {0, {0}}, 0, 0 }, | |
887 | + { "msr0", 1280, {0, {0}}, 0, 0 }, | |
888 | + { "msr1", 1281, {0, {0}}, 0, 0 }, | |
889 | + { "msr2", 1282, {0, {0}}, 0, 0 }, | |
890 | + { "msr3", 1283, {0, {0}}, 0, 0 }, | |
891 | + { "msr4", 1284, {0, {0}}, 0, 0 }, | |
892 | + { "msr5", 1285, {0, {0}}, 0, 0 }, | |
893 | + { "msr6", 1286, {0, {0}}, 0, 0 }, | |
894 | + { "msr7", 1287, {0, {0}}, 0, 0 }, | |
895 | + { "msr8", 1288, {0, {0}}, 0, 0 }, | |
896 | + { "msr9", 1289, {0, {0}}, 0, 0 }, | |
897 | + { "msr10", 1290, {0, {0}}, 0, 0 }, | |
898 | + { "msr11", 1291, {0, {0}}, 0, 0 }, | |
899 | + { "msr12", 1292, {0, {0}}, 0, 0 }, | |
900 | + { "msr13", 1293, {0, {0}}, 0, 0 }, | |
901 | + { "msr14", 1294, {0, {0}}, 0, 0 }, | |
902 | + { "msr15", 1295, {0, {0}}, 0, 0 }, | |
903 | + { "msr16", 1296, {0, {0}}, 0, 0 }, | |
904 | + { "msr17", 1297, {0, {0}}, 0, 0 }, | |
905 | + { "msr18", 1298, {0, {0}}, 0, 0 }, | |
906 | + { "msr19", 1299, {0, {0}}, 0, 0 }, | |
907 | + { "msr20", 1300, {0, {0}}, 0, 0 }, | |
908 | + { "msr21", 1301, {0, {0}}, 0, 0 }, | |
909 | + { "msr22", 1302, {0, {0}}, 0, 0 }, | |
910 | + { "msr23", 1303, {0, {0}}, 0, 0 }, | |
911 | + { "msr24", 1304, {0, {0}}, 0, 0 }, | |
912 | + { "msr25", 1305, {0, {0}}, 0, 0 }, | |
913 | + { "msr26", 1306, {0, {0}}, 0, 0 }, | |
914 | + { "msr27", 1307, {0, {0}}, 0, 0 }, | |
915 | + { "msr28", 1308, {0, {0}}, 0, 0 }, | |
916 | + { "msr29", 1309, {0, {0}}, 0, 0 }, | |
917 | + { "msr30", 1310, {0, {0}}, 0, 0 }, | |
918 | + { "msr31", 1311, {0, {0}}, 0, 0 }, | |
919 | + { "msr32", 1312, {0, {0}}, 0, 0 }, | |
920 | + { "msr33", 1313, {0, {0}}, 0, 0 }, | |
921 | + { "msr34", 1314, {0, {0}}, 0, 0 }, | |
922 | + { "msr35", 1315, {0, {0}}, 0, 0 }, | |
923 | + { "msr36", 1316, {0, {0}}, 0, 0 }, | |
924 | + { "msr37", 1317, {0, {0}}, 0, 0 }, | |
925 | + { "msr38", 1318, {0, {0}}, 0, 0 }, | |
926 | + { "msr39", 1319, {0, {0}}, 0, 0 }, | |
927 | + { "msr40", 1320, {0, {0}}, 0, 0 }, | |
928 | + { "msr41", 1321, {0, {0}}, 0, 0 }, | |
929 | + { "msr42", 1322, {0, {0}}, 0, 0 }, | |
930 | + { "msr43", 1323, {0, {0}}, 0, 0 }, | |
931 | + { "msr44", 1324, {0, {0}}, 0, 0 }, | |
932 | + { "msr45", 1325, {0, {0}}, 0, 0 }, | |
933 | + { "msr46", 1326, {0, {0}}, 0, 0 }, | |
934 | + { "msr47", 1327, {0, {0}}, 0, 0 }, | |
935 | + { "msr48", 1328, {0, {0}}, 0, 0 }, | |
936 | + { "msr49", 1329, {0, {0}}, 0, 0 }, | |
937 | + { "msr50", 1330, {0, {0}}, 0, 0 }, | |
938 | + { "msr51", 1331, {0, {0}}, 0, 0 }, | |
939 | + { "msr52", 1332, {0, {0}}, 0, 0 }, | |
940 | + { "msr53", 1333, {0, {0}}, 0, 0 }, | |
941 | + { "msr54", 1334, {0, {0}}, 0, 0 }, | |
942 | + { "msr55", 1335, {0, {0}}, 0, 0 }, | |
943 | + { "msr56", 1336, {0, {0}}, 0, 0 }, | |
944 | + { "msr57", 1337, {0, {0}}, 0, 0 }, | |
945 | + { "msr58", 1338, {0, {0}}, 0, 0 }, | |
946 | + { "msr59", 1339, {0, {0}}, 0, 0 }, | |
947 | + { "msr60", 1340, {0, {0}}, 0, 0 }, | |
948 | + { "msr61", 1341, {0, {0}}, 0, 0 }, | |
949 | + { "msr62", 1342, {0, {0}}, 0, 0 }, | |
950 | + { "msr63", 1343, {0, {0}}, 0, 0 }, | |
951 | + { "mqop0", 1344, {0, {0}}, 0, 0 }, | |
952 | + { "mqop1", 1346, {0, {0}}, 0, 0 }, | |
953 | + { "mqop2", 1348, {0, {0}}, 0, 0 }, | |
954 | + { "mqop3", 1350, {0, {0}}, 0, 0 }, | |
955 | + { "mqop4", 1352, {0, {0}}, 0, 0 }, | |
956 | + { "mqop5", 1354, {0, {0}}, 0, 0 }, | |
957 | + { "mqop6", 1356, {0, {0}}, 0, 0 }, | |
958 | + { "mqop7", 1358, {0, {0}}, 0, 0 }, | |
959 | + { "mqop8", 1360, {0, {0}}, 0, 0 }, | |
960 | + { "mqop9", 1362, {0, {0}}, 0, 0 }, | |
961 | + { "mqop10", 1364, {0, {0}}, 0, 0 }, | |
962 | + { "mqop11", 1366, {0, {0}}, 0, 0 }, | |
963 | + { "mqop12", 1368, {0, {0}}, 0, 0 }, | |
964 | + { "mqop13", 1370, {0, {0}}, 0, 0 }, | |
965 | + { "mqop14", 1372, {0, {0}}, 0, 0 }, | |
966 | + { "mqop15", 1374, {0, {0}}, 0, 0 }, | |
967 | + { "mqop16", 1376, {0, {0}}, 0, 0 }, | |
968 | + { "mqop17", 1378, {0, {0}}, 0, 0 }, | |
969 | + { "mqop18", 1380, {0, {0}}, 0, 0 }, | |
970 | + { "mqop19", 1382, {0, {0}}, 0, 0 }, | |
971 | + { "mqop20", 1384, {0, {0}}, 0, 0 }, | |
972 | + { "mqop21", 1386, {0, {0}}, 0, 0 }, | |
973 | + { "mqop22", 1388, {0, {0}}, 0, 0 }, | |
974 | + { "mqop23", 1390, {0, {0}}, 0, 0 }, | |
975 | + { "mqop24", 1392, {0, {0}}, 0, 0 }, | |
976 | + { "mqop25", 1394, {0, {0}}, 0, 0 }, | |
977 | + { "mqop26", 1396, {0, {0}}, 0, 0 }, | |
978 | + { "mqop27", 1398, {0, {0}}, 0, 0 }, | |
979 | + { "mqop28", 1400, {0, {0}}, 0, 0 }, | |
980 | + { "mqop29", 1402, {0, {0}}, 0, 0 }, | |
981 | + { "mqop30", 1404, {0, {0}}, 0, 0 }, | |
982 | + { "mqop31", 1406, {0, {0}}, 0, 0 }, | |
983 | + { "mqst0", 1345, {0, {0}}, 0, 0 }, | |
984 | + { "mqst1", 1347, {0, {0}}, 0, 0 }, | |
985 | + { "mqst2", 1349, {0, {0}}, 0, 0 }, | |
986 | + { "mqst3", 1351, {0, {0}}, 0, 0 }, | |
987 | + { "mqst4", 1353, {0, {0}}, 0, 0 }, | |
988 | + { "mqst5", 1355, {0, {0}}, 0, 0 }, | |
989 | + { "mqst6", 1357, {0, {0}}, 0, 0 }, | |
990 | + { "mqst7", 1359, {0, {0}}, 0, 0 }, | |
991 | + { "mqst8", 1361, {0, {0}}, 0, 0 }, | |
992 | + { "mqst9", 1363, {0, {0}}, 0, 0 }, | |
993 | + { "mqst10", 1365, {0, {0}}, 0, 0 }, | |
994 | + { "mqst11", 1367, {0, {0}}, 0, 0 }, | |
995 | + { "mqst12", 1369, {0, {0}}, 0, 0 }, | |
996 | + { "mqst13", 1371, {0, {0}}, 0, 0 }, | |
997 | + { "mqst14", 1373, {0, {0}}, 0, 0 }, | |
998 | + { "mqst15", 1375, {0, {0}}, 0, 0 }, | |
999 | + { "mqst16", 1377, {0, {0}}, 0, 0 }, | |
1000 | + { "mqst17", 1379, {0, {0}}, 0, 0 }, | |
1001 | + { "mqst18", 1381, {0, {0}}, 0, 0 }, | |
1002 | + { "mqst19", 1383, {0, {0}}, 0, 0 }, | |
1003 | + { "mqst20", 1385, {0, {0}}, 0, 0 }, | |
1004 | + { "mqst21", 1387, {0, {0}}, 0, 0 }, | |
1005 | + { "mqst22", 1389, {0, {0}}, 0, 0 }, | |
1006 | + { "mqst23", 1391, {0, {0}}, 0, 0 }, | |
1007 | + { "mqst24", 1393, {0, {0}}, 0, 0 }, | |
1008 | + { "mqst25", 1395, {0, {0}}, 0, 0 }, | |
1009 | + { "mqst26", 1397, {0, {0}}, 0, 0 }, | |
1010 | + { "mqst27", 1399, {0, {0}}, 0, 0 }, | |
1011 | + { "mqst28", 1401, {0, {0}}, 0, 0 }, | |
1012 | + { "mqst29", 1403, {0, {0}}, 0, 0 }, | |
1013 | + { "mqst30", 1405, {0, {0}}, 0, 0 }, | |
1014 | + { "mqst31", 1407, {0, {0}}, 0, 0 }, | |
1015 | + { "ear0", 1536, {0, {0}}, 0, 0 }, | |
1016 | + { "ear1", 1537, {0, {0}}, 0, 0 }, | |
1017 | + { "ear2", 1538, {0, {0}}, 0, 0 }, | |
1018 | + { "ear3", 1539, {0, {0}}, 0, 0 }, | |
1019 | + { "ear4", 1540, {0, {0}}, 0, 0 }, | |
1020 | + { "ear5", 1541, {0, {0}}, 0, 0 }, | |
1021 | + { "ear6", 1542, {0, {0}}, 0, 0 }, | |
1022 | + { "ear7", 1543, {0, {0}}, 0, 0 }, | |
1023 | + { "ear8", 1544, {0, {0}}, 0, 0 }, | |
1024 | + { "ear9", 1545, {0, {0}}, 0, 0 }, | |
1025 | + { "ear10", 1546, {0, {0}}, 0, 0 }, | |
1026 | + { "ear11", 1547, {0, {0}}, 0, 0 }, | |
1027 | + { "ear12", 1548, {0, {0}}, 0, 0 }, | |
1028 | + { "ear13", 1549, {0, {0}}, 0, 0 }, | |
1029 | + { "ear14", 1550, {0, {0}}, 0, 0 }, | |
1030 | + { "ear15", 1551, {0, {0}}, 0, 0 }, | |
1031 | + { "ear16", 1552, {0, {0}}, 0, 0 }, | |
1032 | + { "ear17", 1553, {0, {0}}, 0, 0 }, | |
1033 | + { "ear18", 1554, {0, {0}}, 0, 0 }, | |
1034 | + { "ear19", 1555, {0, {0}}, 0, 0 }, | |
1035 | + { "ear20", 1556, {0, {0}}, 0, 0 }, | |
1036 | + { "ear21", 1557, {0, {0}}, 0, 0 }, | |
1037 | + { "ear22", 1558, {0, {0}}, 0, 0 }, | |
1038 | + { "ear23", 1559, {0, {0}}, 0, 0 }, | |
1039 | + { "ear24", 1560, {0, {0}}, 0, 0 }, | |
1040 | + { "ear25", 1561, {0, {0}}, 0, 0 }, | |
1041 | + { "ear26", 1562, {0, {0}}, 0, 0 }, | |
1042 | + { "ear27", 1563, {0, {0}}, 0, 0 }, | |
1043 | + { "ear28", 1564, {0, {0}}, 0, 0 }, | |
1044 | + { "ear29", 1565, {0, {0}}, 0, 0 }, | |
1045 | + { "ear30", 1566, {0, {0}}, 0, 0 }, | |
1046 | + { "ear31", 1567, {0, {0}}, 0, 0 }, | |
1047 | + { "ear32", 1568, {0, {0}}, 0, 0 }, | |
1048 | + { "ear33", 1569, {0, {0}}, 0, 0 }, | |
1049 | + { "ear34", 1570, {0, {0}}, 0, 0 }, | |
1050 | + { "ear35", 1571, {0, {0}}, 0, 0 }, | |
1051 | + { "ear36", 1572, {0, {0}}, 0, 0 }, | |
1052 | + { "ear37", 1573, {0, {0}}, 0, 0 }, | |
1053 | + { "ear38", 1574, {0, {0}}, 0, 0 }, | |
1054 | + { "ear39", 1575, {0, {0}}, 0, 0 }, | |
1055 | + { "ear40", 1576, {0, {0}}, 0, 0 }, | |
1056 | + { "ear41", 1577, {0, {0}}, 0, 0 }, | |
1057 | + { "ear42", 1578, {0, {0}}, 0, 0 }, | |
1058 | + { "ear43", 1579, {0, {0}}, 0, 0 }, | |
1059 | + { "ear44", 1580, {0, {0}}, 0, 0 }, | |
1060 | + { "ear45", 1581, {0, {0}}, 0, 0 }, | |
1061 | + { "ear46", 1582, {0, {0}}, 0, 0 }, | |
1062 | + { "ear47", 1583, {0, {0}}, 0, 0 }, | |
1063 | + { "ear48", 1584, {0, {0}}, 0, 0 }, | |
1064 | + { "ear49", 1585, {0, {0}}, 0, 0 }, | |
1065 | + { "ear50", 1586, {0, {0}}, 0, 0 }, | |
1066 | + { "ear51", 1587, {0, {0}}, 0, 0 }, | |
1067 | + { "ear52", 1588, {0, {0}}, 0, 0 }, | |
1068 | + { "ear53", 1589, {0, {0}}, 0, 0 }, | |
1069 | + { "ear54", 1590, {0, {0}}, 0, 0 }, | |
1070 | + { "ear55", 1591, {0, {0}}, 0, 0 }, | |
1071 | + { "ear56", 1592, {0, {0}}, 0, 0 }, | |
1072 | + { "ear57", 1593, {0, {0}}, 0, 0 }, | |
1073 | + { "ear58", 1594, {0, {0}}, 0, 0 }, | |
1074 | + { "ear59", 1595, {0, {0}}, 0, 0 }, | |
1075 | + { "ear60", 1596, {0, {0}}, 0, 0 }, | |
1076 | + { "ear61", 1597, {0, {0}}, 0, 0 }, | |
1077 | + { "ear62", 1598, {0, {0}}, 0, 0 }, | |
1078 | + { "ear63", 1599, {0, {0}}, 0, 0 }, | |
1079 | + { "edr0", 1600, {0, {0}}, 0, 0 }, | |
1080 | + { "edr1", 1601, {0, {0}}, 0, 0 }, | |
1081 | + { "edr2", 1602, {0, {0}}, 0, 0 }, | |
1082 | + { "edr3", 1603, {0, {0}}, 0, 0 }, | |
1083 | + { "edr4", 1604, {0, {0}}, 0, 0 }, | |
1084 | + { "edr5", 1605, {0, {0}}, 0, 0 }, | |
1085 | + { "edr6", 1606, {0, {0}}, 0, 0 }, | |
1086 | + { "edr7", 1607, {0, {0}}, 0, 0 }, | |
1087 | + { "edr8", 1608, {0, {0}}, 0, 0 }, | |
1088 | + { "edr9", 1609, {0, {0}}, 0, 0 }, | |
1089 | + { "edr10", 1610, {0, {0}}, 0, 0 }, | |
1090 | + { "edr11", 1611, {0, {0}}, 0, 0 }, | |
1091 | + { "edr12", 1612, {0, {0}}, 0, 0 }, | |
1092 | + { "edr13", 1613, {0, {0}}, 0, 0 }, | |
1093 | + { "edr14", 1614, {0, {0}}, 0, 0 }, | |
1094 | + { "edr15", 1615, {0, {0}}, 0, 0 }, | |
1095 | + { "edr16", 1616, {0, {0}}, 0, 0 }, | |
1096 | + { "edr17", 1617, {0, {0}}, 0, 0 }, | |
1097 | + { "edr18", 1618, {0, {0}}, 0, 0 }, | |
1098 | + { "edr19", 1619, {0, {0}}, 0, 0 }, | |
1099 | + { "edr20", 1620, {0, {0}}, 0, 0 }, | |
1100 | + { "edr21", 1621, {0, {0}}, 0, 0 }, | |
1101 | + { "edr22", 1622, {0, {0}}, 0, 0 }, | |
1102 | + { "edr23", 1623, {0, {0}}, 0, 0 }, | |
1103 | + { "edr24", 1624, {0, {0}}, 0, 0 }, | |
1104 | + { "edr25", 1625, {0, {0}}, 0, 0 }, | |
1105 | + { "edr26", 1626, {0, {0}}, 0, 0 }, | |
1106 | + { "edr27", 1627, {0, {0}}, 0, 0 }, | |
1107 | + { "edr28", 1628, {0, {0}}, 0, 0 }, | |
1108 | + { "edr29", 1629, {0, {0}}, 0, 0 }, | |
1109 | + { "edr30", 1630, {0, {0}}, 0, 0 }, | |
1110 | + { "edr31", 1631, {0, {0}}, 0, 0 }, | |
1111 | + { "edr32", 1632, {0, {0}}, 0, 0 }, | |
1112 | + { "edr33", 1636, {0, {0}}, 0, 0 }, | |
1113 | + { "edr34", 1634, {0, {0}}, 0, 0 }, | |
1114 | + { "edr35", 1635, {0, {0}}, 0, 0 }, | |
1115 | + { "edr36", 1636, {0, {0}}, 0, 0 }, | |
1116 | + { "edr37", 1637, {0, {0}}, 0, 0 }, | |
1117 | + { "edr38", 1638, {0, {0}}, 0, 0 }, | |
1118 | + { "edr39", 1639, {0, {0}}, 0, 0 }, | |
1119 | + { "edr40", 1640, {0, {0}}, 0, 0 }, | |
1120 | + { "edr41", 1641, {0, {0}}, 0, 0 }, | |
1121 | + { "edr42", 1642, {0, {0}}, 0, 0 }, | |
1122 | + { "edr43", 1643, {0, {0}}, 0, 0 }, | |
1123 | + { "edr44", 1644, {0, {0}}, 0, 0 }, | |
1124 | + { "edr45", 1645, {0, {0}}, 0, 0 }, | |
1125 | + { "edr46", 1646, {0, {0}}, 0, 0 }, | |
1126 | + { "edr47", 1647, {0, {0}}, 0, 0 }, | |
1127 | + { "edr48", 1648, {0, {0}}, 0, 0 }, | |
1128 | + { "edr49", 1649, {0, {0}}, 0, 0 }, | |
1129 | + { "edr50", 1650, {0, {0}}, 0, 0 }, | |
1130 | + { "edr51", 1651, {0, {0}}, 0, 0 }, | |
1131 | + { "edr52", 1652, {0, {0}}, 0, 0 }, | |
1132 | + { "edr53", 1653, {0, {0}}, 0, 0 }, | |
1133 | + { "edr54", 1654, {0, {0}}, 0, 0 }, | |
1134 | + { "edr55", 1655, {0, {0}}, 0, 0 }, | |
1135 | + { "edr56", 1656, {0, {0}}, 0, 0 }, | |
1136 | + { "edr57", 1657, {0, {0}}, 0, 0 }, | |
1137 | + { "edr58", 1658, {0, {0}}, 0, 0 }, | |
1138 | + { "edr59", 1659, {0, {0}}, 0, 0 }, | |
1139 | + { "edr60", 1660, {0, {0}}, 0, 0 }, | |
1140 | + { "edr61", 1661, {0, {0}}, 0, 0 }, | |
1141 | + { "edr62", 1662, {0, {0}}, 0, 0 }, | |
1142 | + { "edr63", 1663, {0, {0}}, 0, 0 }, | |
1143 | + { "iamlr0", 1664, {0, {0}}, 0, 0 }, | |
1144 | + { "iamlr1", 1665, {0, {0}}, 0, 0 }, | |
1145 | + { "iamlr2", 1666, {0, {0}}, 0, 0 }, | |
1146 | + { "iamlr3", 1667, {0, {0}}, 0, 0 }, | |
1147 | + { "iamlr4", 1668, {0, {0}}, 0, 0 }, | |
1148 | + { "iamlr5", 1669, {0, {0}}, 0, 0 }, | |
1149 | + { "iamlr6", 1670, {0, {0}}, 0, 0 }, | |
1150 | + { "iamlr7", 1671, {0, {0}}, 0, 0 }, | |
1151 | + { "iamlr8", 1672, {0, {0}}, 0, 0 }, | |
1152 | + { "iamlr9", 1673, {0, {0}}, 0, 0 }, | |
1153 | + { "iamlr10", 1674, {0, {0}}, 0, 0 }, | |
1154 | + { "iamlr11", 1675, {0, {0}}, 0, 0 }, | |
1155 | + { "iamlr12", 1676, {0, {0}}, 0, 0 }, | |
1156 | + { "iamlr13", 1677, {0, {0}}, 0, 0 }, | |
1157 | + { "iamlr14", 1678, {0, {0}}, 0, 0 }, | |
1158 | + { "iamlr15", 1679, {0, {0}}, 0, 0 }, | |
1159 | + { "iamlr16", 1680, {0, {0}}, 0, 0 }, | |
1160 | + { "iamlr17", 1681, {0, {0}}, 0, 0 }, | |
1161 | + { "iamlr18", 1682, {0, {0}}, 0, 0 }, | |
1162 | + { "iamlr19", 1683, {0, {0}}, 0, 0 }, | |
1163 | + { "iamlr20", 1684, {0, {0}}, 0, 0 }, | |
1164 | + { "iamlr21", 1685, {0, {0}}, 0, 0 }, | |
1165 | + { "iamlr22", 1686, {0, {0}}, 0, 0 }, | |
1166 | + { "iamlr23", 1687, {0, {0}}, 0, 0 }, | |
1167 | + { "iamlr24", 1688, {0, {0}}, 0, 0 }, | |
1168 | + { "iamlr25", 1689, {0, {0}}, 0, 0 }, | |
1169 | + { "iamlr26", 1690, {0, {0}}, 0, 0 }, | |
1170 | + { "iamlr27", 1691, {0, {0}}, 0, 0 }, | |
1171 | + { "iamlr28", 1692, {0, {0}}, 0, 0 }, | |
1172 | + { "iamlr29", 1693, {0, {0}}, 0, 0 }, | |
1173 | + { "iamlr30", 1694, {0, {0}}, 0, 0 }, | |
1174 | + { "iamlr31", 1695, {0, {0}}, 0, 0 }, | |
1175 | + { "iamlr32", 1696, {0, {0}}, 0, 0 }, | |
1176 | + { "iamlr33", 1697, {0, {0}}, 0, 0 }, | |
1177 | + { "iamlr34", 1698, {0, {0}}, 0, 0 }, | |
1178 | + { "iamlr35", 1699, {0, {0}}, 0, 0 }, | |
1179 | + { "iamlr36", 1700, {0, {0}}, 0, 0 }, | |
1180 | + { "iamlr37", 1701, {0, {0}}, 0, 0 }, | |
1181 | + { "iamlr38", 1702, {0, {0}}, 0, 0 }, | |
1182 | + { "iamlr39", 1703, {0, {0}}, 0, 0 }, | |
1183 | + { "iamlr40", 1704, {0, {0}}, 0, 0 }, | |
1184 | + { "iamlr41", 1705, {0, {0}}, 0, 0 }, | |
1185 | + { "iamlr42", 1706, {0, {0}}, 0, 0 }, | |
1186 | + { "iamlr43", 1707, {0, {0}}, 0, 0 }, | |
1187 | + { "iamlr44", 1708, {0, {0}}, 0, 0 }, | |
1188 | + { "iamlr45", 1709, {0, {0}}, 0, 0 }, | |
1189 | + { "iamlr46", 1710, {0, {0}}, 0, 0 }, | |
1190 | + { "iamlr47", 1711, {0, {0}}, 0, 0 }, | |
1191 | + { "iamlr48", 1712, {0, {0}}, 0, 0 }, | |
1192 | + { "iamlr49", 1713, {0, {0}}, 0, 0 }, | |
1193 | + { "iamlr50", 1714, {0, {0}}, 0, 0 }, | |
1194 | + { "iamlr51", 1715, {0, {0}}, 0, 0 }, | |
1195 | + { "iamlr52", 1716, {0, {0}}, 0, 0 }, | |
1196 | + { "iamlr53", 1717, {0, {0}}, 0, 0 }, | |
1197 | + { "iamlr54", 1718, {0, {0}}, 0, 0 }, | |
1198 | + { "iamlr55", 1719, {0, {0}}, 0, 0 }, | |
1199 | + { "iamlr56", 1720, {0, {0}}, 0, 0 }, | |
1200 | + { "iamlr57", 1721, {0, {0}}, 0, 0 }, | |
1201 | + { "iamlr58", 1722, {0, {0}}, 0, 0 }, | |
1202 | + { "iamlr59", 1723, {0, {0}}, 0, 0 }, | |
1203 | + { "iamlr60", 1724, {0, {0}}, 0, 0 }, | |
1204 | + { "iamlr61", 1725, {0, {0}}, 0, 0 }, | |
1205 | + { "iamlr62", 1726, {0, {0}}, 0, 0 }, | |
1206 | + { "iamlr63", 1727, {0, {0}}, 0, 0 }, | |
1207 | + { "iampr0", 1728, {0, {0}}, 0, 0 }, | |
1208 | + { "iampr1", 1729, {0, {0}}, 0, 0 }, | |
1209 | + { "iampr2", 1730, {0, {0}}, 0, 0 }, | |
1210 | + { "iampr3", 1731, {0, {0}}, 0, 0 }, | |
1211 | + { "iampr4", 1732, {0, {0}}, 0, 0 }, | |
1212 | + { "iampr5", 1733, {0, {0}}, 0, 0 }, | |
1213 | + { "iampr6", 1734, {0, {0}}, 0, 0 }, | |
1214 | + { "iampr7", 1735, {0, {0}}, 0, 0 }, | |
1215 | + { "iampr8", 1736, {0, {0}}, 0, 0 }, | |
1216 | + { "iampr9", 1737, {0, {0}}, 0, 0 }, | |
1217 | + { "iampr10", 1738, {0, {0}}, 0, 0 }, | |
1218 | + { "iampr11", 1739, {0, {0}}, 0, 0 }, | |
1219 | + { "iampr12", 1740, {0, {0}}, 0, 0 }, | |
1220 | + { "iampr13", 1741, {0, {0}}, 0, 0 }, | |
1221 | + { "iampr14", 1742, {0, {0}}, 0, 0 }, | |
1222 | + { "iampr15", 1743, {0, {0}}, 0, 0 }, | |
1223 | + { "iampr16", 1744, {0, {0}}, 0, 0 }, | |
1224 | + { "iampr17", 1745, {0, {0}}, 0, 0 }, | |
1225 | + { "iampr18", 1746, {0, {0}}, 0, 0 }, | |
1226 | + { "iampr19", 1747, {0, {0}}, 0, 0 }, | |
1227 | + { "iampr20", 1748, {0, {0}}, 0, 0 }, | |
1228 | + { "iampr21", 1749, {0, {0}}, 0, 0 }, | |
1229 | + { "iampr22", 1750, {0, {0}}, 0, 0 }, | |
1230 | + { "iampr23", 1751, {0, {0}}, 0, 0 }, | |
1231 | + { "iampr24", 1752, {0, {0}}, 0, 0 }, | |
1232 | + { "iampr25", 1753, {0, {0}}, 0, 0 }, | |
1233 | + { "iampr26", 1754, {0, {0}}, 0, 0 }, | |
1234 | + { "iampr27", 1755, {0, {0}}, 0, 0 }, | |
1235 | + { "iampr28", 1756, {0, {0}}, 0, 0 }, | |
1236 | + { "iampr29", 1757, {0, {0}}, 0, 0 }, | |
1237 | + { "iampr30", 1758, {0, {0}}, 0, 0 }, | |
1238 | + { "iampr31", 1759, {0, {0}}, 0, 0 }, | |
1239 | + { "iampr32", 1760, {0, {0}}, 0, 0 }, | |
1240 | + { "iampr33", 1761, {0, {0}}, 0, 0 }, | |
1241 | + { "iampr34", 1762, {0, {0}}, 0, 0 }, | |
1242 | + { "iampr35", 1763, {0, {0}}, 0, 0 }, | |
1243 | + { "iampr36", 1764, {0, {0}}, 0, 0 }, | |
1244 | + { "iampr37", 1765, {0, {0}}, 0, 0 }, | |
1245 | + { "iampr38", 1766, {0, {0}}, 0, 0 }, | |
1246 | + { "iampr39", 1767, {0, {0}}, 0, 0 }, | |
1247 | + { "iampr40", 1768, {0, {0}}, 0, 0 }, | |
1248 | + { "iampr41", 1769, {0, {0}}, 0, 0 }, | |
1249 | + { "iampr42", 1770, {0, {0}}, 0, 0 }, | |
1250 | + { "iampr43", 1771, {0, {0}}, 0, 0 }, | |
1251 | + { "iampr44", 1772, {0, {0}}, 0, 0 }, | |
1252 | + { "iampr45", 1773, {0, {0}}, 0, 0 }, | |
1253 | + { "iampr46", 1774, {0, {0}}, 0, 0 }, | |
1254 | + { "iampr47", 1775, {0, {0}}, 0, 0 }, | |
1255 | + { "iampr48", 1776, {0, {0}}, 0, 0 }, | |
1256 | + { "iampr49", 1777, {0, {0}}, 0, 0 }, | |
1257 | + { "iampr50", 1778, {0, {0}}, 0, 0 }, | |
1258 | + { "iampr51", 1779, {0, {0}}, 0, 0 }, | |
1259 | + { "iampr52", 1780, {0, {0}}, 0, 0 }, | |
1260 | + { "iampr53", 1781, {0, {0}}, 0, 0 }, | |
1261 | + { "iampr54", 1782, {0, {0}}, 0, 0 }, | |
1262 | + { "iampr55", 1783, {0, {0}}, 0, 0 }, | |
1263 | + { "iampr56", 1784, {0, {0}}, 0, 0 }, | |
1264 | + { "iampr57", 1785, {0, {0}}, 0, 0 }, | |
1265 | + { "iampr58", 1786, {0, {0}}, 0, 0 }, | |
1266 | + { "iampr59", 1787, {0, {0}}, 0, 0 }, | |
1267 | + { "iampr60", 1788, {0, {0}}, 0, 0 }, | |
1268 | + { "iampr61", 1789, {0, {0}}, 0, 0 }, | |
1269 | + { "iampr62", 1790, {0, {0}}, 0, 0 }, | |
1270 | + { "iampr63", 1791, {0, {0}}, 0, 0 }, | |
1271 | + { "damlr0", 1792, {0, {0}}, 0, 0 }, | |
1272 | + { "damlr1", 1793, {0, {0}}, 0, 0 }, | |
1273 | + { "damlr2", 1794, {0, {0}}, 0, 0 }, | |
1274 | + { "damlr3", 1795, {0, {0}}, 0, 0 }, | |
1275 | + { "damlr4", 1796, {0, {0}}, 0, 0 }, | |
1276 | + { "damlr5", 1797, {0, {0}}, 0, 0 }, | |
1277 | + { "damlr6", 1798, {0, {0}}, 0, 0 }, | |
1278 | + { "damlr7", 1799, {0, {0}}, 0, 0 }, | |
1279 | + { "damlr8", 1800, {0, {0}}, 0, 0 }, | |
1280 | + { "damlr9", 1801, {0, {0}}, 0, 0 }, | |
1281 | + { "damlr10", 1802, {0, {0}}, 0, 0 }, | |
1282 | + { "damlr11", 1803, {0, {0}}, 0, 0 }, | |
1283 | + { "damlr12", 1804, {0, {0}}, 0, 0 }, | |
1284 | + { "damlr13", 1805, {0, {0}}, 0, 0 }, | |
1285 | + { "damlr14", 1806, {0, {0}}, 0, 0 }, | |
1286 | + { "damlr15", 1807, {0, {0}}, 0, 0 }, | |
1287 | + { "damlr16", 1808, {0, {0}}, 0, 0 }, | |
1288 | + { "damlr17", 1809, {0, {0}}, 0, 0 }, | |
1289 | + { "damlr18", 1810, {0, {0}}, 0, 0 }, | |
1290 | + { "damlr19", 1811, {0, {0}}, 0, 0 }, | |
1291 | + { "damlr20", 1812, {0, {0}}, 0, 0 }, | |
1292 | + { "damlr21", 1813, {0, {0}}, 0, 0 }, | |
1293 | + { "damlr22", 1814, {0, {0}}, 0, 0 }, | |
1294 | + { "damlr23", 1815, {0, {0}}, 0, 0 }, | |
1295 | + { "damlr24", 1816, {0, {0}}, 0, 0 }, | |
1296 | + { "damlr25", 1817, {0, {0}}, 0, 0 }, | |
1297 | + { "damlr26", 1818, {0, {0}}, 0, 0 }, | |
1298 | + { "damlr27", 1819, {0, {0}}, 0, 0 }, | |
1299 | + { "damlr28", 1820, {0, {0}}, 0, 0 }, | |
1300 | + { "damlr29", 1821, {0, {0}}, 0, 0 }, | |
1301 | + { "damlr30", 1822, {0, {0}}, 0, 0 }, | |
1302 | + { "damlr31", 1823, {0, {0}}, 0, 0 }, | |
1303 | + { "damlr32", 1824, {0, {0}}, 0, 0 }, | |
1304 | + { "damlr33", 1825, {0, {0}}, 0, 0 }, | |
1305 | + { "damlr34", 1826, {0, {0}}, 0, 0 }, | |
1306 | + { "damlr35", 1827, {0, {0}}, 0, 0 }, | |
1307 | + { "damlr36", 1828, {0, {0}}, 0, 0 }, | |
1308 | + { "damlr37", 1829, {0, {0}}, 0, 0 }, | |
1309 | + { "damlr38", 1830, {0, {0}}, 0, 0 }, | |
1310 | + { "damlr39", 1831, {0, {0}}, 0, 0 }, | |
1311 | + { "damlr40", 1832, {0, {0}}, 0, 0 }, | |
1312 | + { "damlr41", 1833, {0, {0}}, 0, 0 }, | |
1313 | + { "damlr42", 1834, {0, {0}}, 0, 0 }, | |
1314 | + { "damlr43", 1835, {0, {0}}, 0, 0 }, | |
1315 | + { "damlr44", 1836, {0, {0}}, 0, 0 }, | |
1316 | + { "damlr45", 1837, {0, {0}}, 0, 0 }, | |
1317 | + { "damlr46", 1838, {0, {0}}, 0, 0 }, | |
1318 | + { "damlr47", 1839, {0, {0}}, 0, 0 }, | |
1319 | + { "damlr48", 1840, {0, {0}}, 0, 0 }, | |
1320 | + { "damlr49", 1841, {0, {0}}, 0, 0 }, | |
1321 | + { "damlr50", 1842, {0, {0}}, 0, 0 }, | |
1322 | + { "damlr51", 1843, {0, {0}}, 0, 0 }, | |
1323 | + { "damlr52", 1844, {0, {0}}, 0, 0 }, | |
1324 | + { "damlr53", 1845, {0, {0}}, 0, 0 }, | |
1325 | + { "damlr54", 1846, {0, {0}}, 0, 0 }, | |
1326 | + { "damlr55", 1847, {0, {0}}, 0, 0 }, | |
1327 | + { "damlr56", 1848, {0, {0}}, 0, 0 }, | |
1328 | + { "damlr57", 1849, {0, {0}}, 0, 0 }, | |
1329 | + { "damlr58", 1850, {0, {0}}, 0, 0 }, | |
1330 | + { "damlr59", 1851, {0, {0}}, 0, 0 }, | |
1331 | + { "damlr60", 1852, {0, {0}}, 0, 0 }, | |
1332 | + { "damlr61", 1853, {0, {0}}, 0, 0 }, | |
1333 | + { "damlr62", 1854, {0, {0}}, 0, 0 }, | |
1334 | + { "damlr63", 1855, {0, {0}}, 0, 0 }, | |
1335 | + { "dampr0", 1856, {0, {0}}, 0, 0 }, | |
1336 | + { "dampr1", 1857, {0, {0}}, 0, 0 }, | |
1337 | + { "dampr2", 1858, {0, {0}}, 0, 0 }, | |
1338 | + { "dampr3", 1859, {0, {0}}, 0, 0 }, | |
1339 | + { "dampr4", 1860, {0, {0}}, 0, 0 }, | |
1340 | + { "dampr5", 1861, {0, {0}}, 0, 0 }, | |
1341 | + { "dampr6", 1862, {0, {0}}, 0, 0 }, | |
1342 | + { "dampr7", 1863, {0, {0}}, 0, 0 }, | |
1343 | + { "dampr8", 1864, {0, {0}}, 0, 0 }, | |
1344 | + { "dampr9", 1865, {0, {0}}, 0, 0 }, | |
1345 | + { "dampr10", 1866, {0, {0}}, 0, 0 }, | |
1346 | + { "dampr11", 1867, {0, {0}}, 0, 0 }, | |
1347 | + { "dampr12", 1868, {0, {0}}, 0, 0 }, | |
1348 | + { "dampr13", 1869, {0, {0}}, 0, 0 }, | |
1349 | + { "dampr14", 1870, {0, {0}}, 0, 0 }, | |
1350 | + { "dampr15", 1871, {0, {0}}, 0, 0 }, | |
1351 | + { "dampr16", 1872, {0, {0}}, 0, 0 }, | |
1352 | + { "dampr17", 1873, {0, {0}}, 0, 0 }, | |
1353 | + { "dampr18", 1874, {0, {0}}, 0, 0 }, | |
1354 | + { "dampr19", 1875, {0, {0}}, 0, 0 }, | |
1355 | + { "dampr20", 1876, {0, {0}}, 0, 0 }, | |
1356 | + { "dampr21", 1877, {0, {0}}, 0, 0 }, | |
1357 | + { "dampr22", 1878, {0, {0}}, 0, 0 }, | |
1358 | + { "dampr23", 1879, {0, {0}}, 0, 0 }, | |
1359 | + { "dampr24", 1880, {0, {0}}, 0, 0 }, | |
1360 | + { "dampr25", 1881, {0, {0}}, 0, 0 }, | |
1361 | + { "dampr26", 1882, {0, {0}}, 0, 0 }, | |
1362 | + { "dampr27", 1883, {0, {0}}, 0, 0 }, | |
1363 | + { "dampr28", 1884, {0, {0}}, 0, 0 }, | |
1364 | + { "dampr29", 1885, {0, {0}}, 0, 0 }, | |
1365 | + { "dampr30", 1886, {0, {0}}, 0, 0 }, | |
1366 | + { "dampr31", 1887, {0, {0}}, 0, 0 }, | |
1367 | + { "dampr32", 1888, {0, {0}}, 0, 0 }, | |
1368 | + { "dampr33", 1889, {0, {0}}, 0, 0 }, | |
1369 | + { "dampr34", 1890, {0, {0}}, 0, 0 }, | |
1370 | + { "dampr35", 1891, {0, {0}}, 0, 0 }, | |
1371 | + { "dampr36", 1892, {0, {0}}, 0, 0 }, | |
1372 | + { "dampr37", 1893, {0, {0}}, 0, 0 }, | |
1373 | + { "dampr38", 1894, {0, {0}}, 0, 0 }, | |
1374 | + { "dampr39", 1895, {0, {0}}, 0, 0 }, | |
1375 | + { "dampr40", 1896, {0, {0}}, 0, 0 }, | |
1376 | + { "dampr41", 1897, {0, {0}}, 0, 0 }, | |
1377 | + { "dampr42", 1898, {0, {0}}, 0, 0 }, | |
1378 | + { "dampr43", 1899, {0, {0}}, 0, 0 }, | |
1379 | + { "dampr44", 1900, {0, {0}}, 0, 0 }, | |
1380 | + { "dampr45", 1901, {0, {0}}, 0, 0 }, | |
1381 | + { "dampr46", 1902, {0, {0}}, 0, 0 }, | |
1382 | + { "dampr47", 1903, {0, {0}}, 0, 0 }, | |
1383 | + { "dampr48", 1904, {0, {0}}, 0, 0 }, | |
1384 | + { "dampr49", 1905, {0, {0}}, 0, 0 }, | |
1385 | + { "dampr50", 1906, {0, {0}}, 0, 0 }, | |
1386 | + { "dampr51", 1907, {0, {0}}, 0, 0 }, | |
1387 | + { "dampr52", 1908, {0, {0}}, 0, 0 }, | |
1388 | + { "dampr53", 1909, {0, {0}}, 0, 0 }, | |
1389 | + { "dampr54", 1910, {0, {0}}, 0, 0 }, | |
1390 | + { "dampr55", 1911, {0, {0}}, 0, 0 }, | |
1391 | + { "dampr56", 1912, {0, {0}}, 0, 0 }, | |
1392 | + { "dampr57", 1913, {0, {0}}, 0, 0 }, | |
1393 | + { "dampr58", 1914, {0, {0}}, 0, 0 }, | |
1394 | + { "dampr59", 1915, {0, {0}}, 0, 0 }, | |
1395 | + { "dampr60", 1916, {0, {0}}, 0, 0 }, | |
1396 | + { "dampr61", 1917, {0, {0}}, 0, 0 }, | |
1397 | + { "dampr62", 1918, {0, {0}}, 0, 0 }, | |
1398 | + { "dampr63", 1919, {0, {0}}, 0, 0 }, | |
1399 | + { "amcr", 1920, {0, {0}}, 0, 0 }, | |
1400 | + { "stbar", 1921, {0, {0}}, 0, 0 }, | |
1401 | + { "mmcr", 1922, {0, {0}}, 0, 0 }, | |
1402 | + { "dcr", 2048, {0, {0}}, 0, 0 }, | |
1403 | + { "brr", 2049, {0, {0}}, 0, 0 }, | |
1404 | + { "nmar", 2050, {0, {0}}, 0, 0 }, | |
1405 | + { "ibar0", 2052, {0, {0}}, 0, 0 }, | |
1406 | + { "ibar1", 2053, {0, {0}}, 0, 0 }, | |
1407 | + { "ibar2", 2054, {0, {0}}, 0, 0 }, | |
1408 | + { "ibar3", 2055, {0, {0}}, 0, 0 }, | |
1409 | + { "dbar0", 2056, {0, {0}}, 0, 0 }, | |
1410 | + { "dbar1", 2057, {0, {0}}, 0, 0 }, | |
1411 | + { "dbar2", 2058, {0, {0}}, 0, 0 }, | |
1412 | + { "dbar3", 2059, {0, {0}}, 0, 0 }, | |
1413 | + { "dbdr00", 2060, {0, {0}}, 0, 0 }, | |
1414 | + { "dbdr01", 2061, {0, {0}}, 0, 0 }, | |
1415 | + { "dbdr02", 2062, {0, {0}}, 0, 0 }, | |
1416 | + { "dbdr03", 2063, {0, {0}}, 0, 0 }, | |
1417 | + { "dbdr10", 2064, {0, {0}}, 0, 0 }, | |
1418 | + { "dbdr11", 2065, {0, {0}}, 0, 0 }, | |
1419 | + { "dbdr12", 2066, {0, {0}}, 0, 0 }, | |
1420 | + { "dbdr13", 2067, {0, {0}}, 0, 0 }, | |
1421 | + { "dbdr20", 2068, {0, {0}}, 0, 0 }, | |
1422 | + { "dbdr21", 2069, {0, {0}}, 0, 0 }, | |
1423 | + { "dbdr22", 2070, {0, {0}}, 0, 0 }, | |
1424 | + { "dbdr23", 2071, {0, {0}}, 0, 0 }, | |
1425 | + { "dbdr30", 2072, {0, {0}}, 0, 0 }, | |
1426 | + { "dbdr31", 2073, {0, {0}}, 0, 0 }, | |
1427 | + { "dbdr32", 2074, {0, {0}}, 0, 0 }, | |
1428 | + { "dbdr33", 2075, {0, {0}}, 0, 0 }, | |
1429 | + { "dbmr00", 2076, {0, {0}}, 0, 0 }, | |
1430 | + { "dbmr01", 2077, {0, {0}}, 0, 0 }, | |
1431 | + { "dbmr02", 2078, {0, {0}}, 0, 0 }, | |
1432 | + { "dbmr03", 2079, {0, {0}}, 0, 0 }, | |
1433 | + { "dbmr10", 2080, {0, {0}}, 0, 0 }, | |
1434 | + { "dbmr11", 2081, {0, {0}}, 0, 0 }, | |
1435 | + { "dbmr12", 2082, {0, {0}}, 0, 0 }, | |
1436 | + { "dbmr13", 2083, {0, {0}}, 0, 0 }, | |
1437 | + { "dbmr20", 2084, {0, {0}}, 0, 0 }, | |
1438 | + { "dbmr21", 2085, {0, {0}}, 0, 0 }, | |
1439 | + { "dbmr22", 2086, {0, {0}}, 0, 0 }, | |
1440 | + { "dbmr23", 2087, {0, {0}}, 0, 0 }, | |
1441 | + { "dbmr30", 2088, {0, {0}}, 0, 0 }, | |
1442 | + { "dbmr31", 2089, {0, {0}}, 0, 0 }, | |
1443 | + { "dbmr32", 2090, {0, {0}}, 0, 0 }, | |
1444 | + { "dbmr33", 2091, {0, {0}}, 0, 0 }, | |
1445 | + { "cpcfr", 2092, {0, {0}}, 0, 0 }, | |
1446 | + { "cpcr", 2093, {0, {0}}, 0, 0 }, | |
1447 | + { "cpsr", 2094, {0, {0}}, 0, 0 }, | |
1448 | + { "cpesr0", 2096, {0, {0}}, 0, 0 }, | |
1449 | + { "cpesr1", 2097, {0, {0}}, 0, 0 }, | |
1450 | + { "cpemr0", 2098, {0, {0}}, 0, 0 }, | |
1451 | + { "cpemr1", 2099, {0, {0}}, 0, 0 }, | |
1452 | + { "ihsr8", 3848, {0, {0}}, 0, 0 } | |
1453 | +}; | |
1454 | + | |
1455 | +CGEN_KEYWORD frv_cgen_opval_spr_names = | |
1456 | +{ | |
1457 | + & frv_cgen_opval_spr_names_entries[0], | |
1458 | + 1005, | |
1459 | + 0, 0, 0, 0, "" | |
1460 | +}; | |
1461 | + | |
1462 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_accg_names_entries[] = | |
1463 | +{ | |
1464 | + { "accg0", 0, {0, {0}}, 0, 0 }, | |
1465 | + { "accg1", 1, {0, {0}}, 0, 0 }, | |
1466 | + { "accg2", 2, {0, {0}}, 0, 0 }, | |
1467 | + { "accg3", 3, {0, {0}}, 0, 0 }, | |
1468 | + { "accg4", 4, {0, {0}}, 0, 0 }, | |
1469 | + { "accg5", 5, {0, {0}}, 0, 0 }, | |
1470 | + { "accg6", 6, {0, {0}}, 0, 0 }, | |
1471 | + { "accg7", 7, {0, {0}}, 0, 0 }, | |
1472 | + { "accg8", 8, {0, {0}}, 0, 0 }, | |
1473 | + { "accg9", 9, {0, {0}}, 0, 0 }, | |
1474 | + { "accg10", 10, {0, {0}}, 0, 0 }, | |
1475 | + { "accg11", 11, {0, {0}}, 0, 0 }, | |
1476 | + { "accg12", 12, {0, {0}}, 0, 0 }, | |
1477 | + { "accg13", 13, {0, {0}}, 0, 0 }, | |
1478 | + { "accg14", 14, {0, {0}}, 0, 0 }, | |
1479 | + { "accg15", 15, {0, {0}}, 0, 0 }, | |
1480 | + { "accg16", 16, {0, {0}}, 0, 0 }, | |
1481 | + { "accg17", 17, {0, {0}}, 0, 0 }, | |
1482 | + { "accg18", 18, {0, {0}}, 0, 0 }, | |
1483 | + { "accg19", 19, {0, {0}}, 0, 0 }, | |
1484 | + { "accg20", 20, {0, {0}}, 0, 0 }, | |
1485 | + { "accg21", 21, {0, {0}}, 0, 0 }, | |
1486 | + { "accg22", 22, {0, {0}}, 0, 0 }, | |
1487 | + { "accg23", 23, {0, {0}}, 0, 0 }, | |
1488 | + { "accg24", 24, {0, {0}}, 0, 0 }, | |
1489 | + { "accg25", 25, {0, {0}}, 0, 0 }, | |
1490 | + { "accg26", 26, {0, {0}}, 0, 0 }, | |
1491 | + { "accg27", 27, {0, {0}}, 0, 0 }, | |
1492 | + { "accg28", 28, {0, {0}}, 0, 0 }, | |
1493 | + { "accg29", 29, {0, {0}}, 0, 0 }, | |
1494 | + { "accg30", 30, {0, {0}}, 0, 0 }, | |
1495 | + { "accg31", 31, {0, {0}}, 0, 0 }, | |
1496 | + { "accg32", 32, {0, {0}}, 0, 0 }, | |
1497 | + { "accg33", 33, {0, {0}}, 0, 0 }, | |
1498 | + { "accg34", 34, {0, {0}}, 0, 0 }, | |
1499 | + { "accg35", 35, {0, {0}}, 0, 0 }, | |
1500 | + { "accg36", 36, {0, {0}}, 0, 0 }, | |
1501 | + { "accg37", 37, {0, {0}}, 0, 0 }, | |
1502 | + { "accg38", 38, {0, {0}}, 0, 0 }, | |
1503 | + { "accg39", 39, {0, {0}}, 0, 0 }, | |
1504 | + { "accg40", 40, {0, {0}}, 0, 0 }, | |
1505 | + { "accg41", 41, {0, {0}}, 0, 0 }, | |
1506 | + { "accg42", 42, {0, {0}}, 0, 0 }, | |
1507 | + { "accg43", 43, {0, {0}}, 0, 0 }, | |
1508 | + { "accg44", 44, {0, {0}}, 0, 0 }, | |
1509 | + { "accg45", 45, {0, {0}}, 0, 0 }, | |
1510 | + { "accg46", 46, {0, {0}}, 0, 0 }, | |
1511 | + { "accg47", 47, {0, {0}}, 0, 0 }, | |
1512 | + { "accg48", 48, {0, {0}}, 0, 0 }, | |
1513 | + { "accg49", 49, {0, {0}}, 0, 0 }, | |
1514 | + { "accg50", 50, {0, {0}}, 0, 0 }, | |
1515 | + { "accg51", 51, {0, {0}}, 0, 0 }, | |
1516 | + { "accg52", 52, {0, {0}}, 0, 0 }, | |
1517 | + { "accg53", 53, {0, {0}}, 0, 0 }, | |
1518 | + { "accg54", 54, {0, {0}}, 0, 0 }, | |
1519 | + { "accg55", 55, {0, {0}}, 0, 0 }, | |
1520 | + { "accg56", 56, {0, {0}}, 0, 0 }, | |
1521 | + { "accg57", 57, {0, {0}}, 0, 0 }, | |
1522 | + { "accg58", 58, {0, {0}}, 0, 0 }, | |
1523 | + { "accg59", 59, {0, {0}}, 0, 0 }, | |
1524 | + { "accg60", 60, {0, {0}}, 0, 0 }, | |
1525 | + { "accg61", 61, {0, {0}}, 0, 0 }, | |
1526 | + { "accg62", 62, {0, {0}}, 0, 0 }, | |
1527 | + { "accg63", 63, {0, {0}}, 0, 0 } | |
1528 | +}; | |
1529 | + | |
1530 | +CGEN_KEYWORD frv_cgen_opval_accg_names = | |
1531 | +{ | |
1532 | + & frv_cgen_opval_accg_names_entries[0], | |
1533 | + 64, | |
1534 | + 0, 0, 0, 0, "" | |
1535 | +}; | |
1536 | + | |
1537 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_acc_names_entries[] = | |
1538 | +{ | |
1539 | + { "acc0", 0, {0, {0}}, 0, 0 }, | |
1540 | + { "acc1", 1, {0, {0}}, 0, 0 }, | |
1541 | + { "acc2", 2, {0, {0}}, 0, 0 }, | |
1542 | + { "acc3", 3, {0, {0}}, 0, 0 }, | |
1543 | + { "acc4", 4, {0, {0}}, 0, 0 }, | |
1544 | + { "acc5", 5, {0, {0}}, 0, 0 }, | |
1545 | + { "acc6", 6, {0, {0}}, 0, 0 }, | |
1546 | + { "acc7", 7, {0, {0}}, 0, 0 }, | |
1547 | + { "acc8", 8, {0, {0}}, 0, 0 }, | |
1548 | + { "acc9", 9, {0, {0}}, 0, 0 }, | |
1549 | + { "acc10", 10, {0, {0}}, 0, 0 }, | |
1550 | + { "acc11", 11, {0, {0}}, 0, 0 }, | |
1551 | + { "acc12", 12, {0, {0}}, 0, 0 }, | |
1552 | + { "acc13", 13, {0, {0}}, 0, 0 }, | |
1553 | + { "acc14", 14, {0, {0}}, 0, 0 }, | |
1554 | + { "acc15", 15, {0, {0}}, 0, 0 }, | |
1555 | + { "acc16", 16, {0, {0}}, 0, 0 }, | |
1556 | + { "acc17", 17, {0, {0}}, 0, 0 }, | |
1557 | + { "acc18", 18, {0, {0}}, 0, 0 }, | |
1558 | + { "acc19", 19, {0, {0}}, 0, 0 }, | |
1559 | + { "acc20", 20, {0, {0}}, 0, 0 }, | |
1560 | + { "acc21", 21, {0, {0}}, 0, 0 }, | |
1561 | + { "acc22", 22, {0, {0}}, 0, 0 }, | |
1562 | + { "acc23", 23, {0, {0}}, 0, 0 }, | |
1563 | + { "acc24", 24, {0, {0}}, 0, 0 }, | |
1564 | + { "acc25", 25, {0, {0}}, 0, 0 }, | |
1565 | + { "acc26", 26, {0, {0}}, 0, 0 }, | |
1566 | + { "acc27", 27, {0, {0}}, 0, 0 }, | |
1567 | + { "acc28", 28, {0, {0}}, 0, 0 }, | |
1568 | + { "acc29", 29, {0, {0}}, 0, 0 }, | |
1569 | + { "acc30", 30, {0, {0}}, 0, 0 }, | |
1570 | + { "acc31", 31, {0, {0}}, 0, 0 }, | |
1571 | + { "acc32", 32, {0, {0}}, 0, 0 }, | |
1572 | + { "acc33", 33, {0, {0}}, 0, 0 }, | |
1573 | + { "acc34", 34, {0, {0}}, 0, 0 }, | |
1574 | + { "acc35", 35, {0, {0}}, 0, 0 }, | |
1575 | + { "acc36", 36, {0, {0}}, 0, 0 }, | |
1576 | + { "acc37", 37, {0, {0}}, 0, 0 }, | |
1577 | + { "acc38", 38, {0, {0}}, 0, 0 }, | |
1578 | + { "acc39", 39, {0, {0}}, 0, 0 }, | |
1579 | + { "acc40", 40, {0, {0}}, 0, 0 }, | |
1580 | + { "acc41", 41, {0, {0}}, 0, 0 }, | |
1581 | + { "acc42", 42, {0, {0}}, 0, 0 }, | |
1582 | + { "acc43", 43, {0, {0}}, 0, 0 }, | |
1583 | + { "acc44", 44, {0, {0}}, 0, 0 }, | |
1584 | + { "acc45", 45, {0, {0}}, 0, 0 }, | |
1585 | + { "acc46", 46, {0, {0}}, 0, 0 }, | |
1586 | + { "acc47", 47, {0, {0}}, 0, 0 }, | |
1587 | + { "acc48", 48, {0, {0}}, 0, 0 }, | |
1588 | + { "acc49", 49, {0, {0}}, 0, 0 }, | |
1589 | + { "acc50", 50, {0, {0}}, 0, 0 }, | |
1590 | + { "acc51", 51, {0, {0}}, 0, 0 }, | |
1591 | + { "acc52", 52, {0, {0}}, 0, 0 }, | |
1592 | + { "acc53", 53, {0, {0}}, 0, 0 }, | |
1593 | + { "acc54", 54, {0, {0}}, 0, 0 }, | |
1594 | + { "acc55", 55, {0, {0}}, 0, 0 }, | |
1595 | + { "acc56", 56, {0, {0}}, 0, 0 }, | |
1596 | + { "acc57", 57, {0, {0}}, 0, 0 }, | |
1597 | + { "acc58", 58, {0, {0}}, 0, 0 }, | |
1598 | + { "acc59", 59, {0, {0}}, 0, 0 }, | |
1599 | + { "acc60", 60, {0, {0}}, 0, 0 }, | |
1600 | + { "acc61", 61, {0, {0}}, 0, 0 }, | |
1601 | + { "acc62", 62, {0, {0}}, 0, 0 }, | |
1602 | + { "acc63", 63, {0, {0}}, 0, 0 } | |
1603 | +}; | |
1604 | + | |
1605 | +CGEN_KEYWORD frv_cgen_opval_acc_names = | |
1606 | +{ | |
1607 | + & frv_cgen_opval_acc_names_entries[0], | |
1608 | + 64, | |
1609 | + 0, 0, 0, 0, "" | |
1610 | +}; | |
1611 | + | |
1612 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_iccr_names_entries[] = | |
1613 | +{ | |
1614 | + { "icc0", 0, {0, {0}}, 0, 0 }, | |
1615 | + { "icc1", 1, {0, {0}}, 0, 0 }, | |
1616 | + { "icc2", 2, {0, {0}}, 0, 0 }, | |
1617 | + { "icc3", 3, {0, {0}}, 0, 0 } | |
1618 | +}; | |
1619 | + | |
1620 | +CGEN_KEYWORD frv_cgen_opval_iccr_names = | |
1621 | +{ | |
1622 | + & frv_cgen_opval_iccr_names_entries[0], | |
1623 | + 4, | |
1624 | + 0, 0, 0, 0, "" | |
1625 | +}; | |
1626 | + | |
1627 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_fccr_names_entries[] = | |
1628 | +{ | |
1629 | + { "fcc0", 0, {0, {0}}, 0, 0 }, | |
1630 | + { "fcc1", 1, {0, {0}}, 0, 0 }, | |
1631 | + { "fcc2", 2, {0, {0}}, 0, 0 }, | |
1632 | + { "fcc3", 3, {0, {0}}, 0, 0 } | |
1633 | +}; | |
1634 | + | |
1635 | +CGEN_KEYWORD frv_cgen_opval_fccr_names = | |
1636 | +{ | |
1637 | + & frv_cgen_opval_fccr_names_entries[0], | |
1638 | + 4, | |
1639 | + 0, 0, 0, 0, "" | |
1640 | +}; | |
1641 | + | |
1642 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_cccr_names_entries[] = | |
1643 | +{ | |
1644 | + { "cc0", 0, {0, {0}}, 0, 0 }, | |
1645 | + { "cc1", 1, {0, {0}}, 0, 0 }, | |
1646 | + { "cc2", 2, {0, {0}}, 0, 0 }, | |
1647 | + { "cc3", 3, {0, {0}}, 0, 0 }, | |
1648 | + { "cc4", 4, {0, {0}}, 0, 0 }, | |
1649 | + { "cc5", 5, {0, {0}}, 0, 0 }, | |
1650 | + { "cc6", 6, {0, {0}}, 0, 0 }, | |
1651 | + { "cc7", 7, {0, {0}}, 0, 0 } | |
1652 | +}; | |
1653 | + | |
1654 | +CGEN_KEYWORD frv_cgen_opval_cccr_names = | |
1655 | +{ | |
1656 | + & frv_cgen_opval_cccr_names_entries[0], | |
1657 | + 8, | |
1658 | + 0, 0, 0, 0, "" | |
1659 | +}; | |
1660 | + | |
1661 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_h_pack_entries[] = | |
1662 | +{ | |
1663 | + { "", 1, {0, {0}}, 0, 0 }, | |
1664 | + { ".p", 0, {0, {0}}, 0, 0 }, | |
1665 | + { ".P", 0, {0, {0}}, 0, 0 } | |
1666 | +}; | |
1667 | + | |
1668 | +CGEN_KEYWORD frv_cgen_opval_h_pack = | |
1669 | +{ | |
1670 | + & frv_cgen_opval_h_pack_entries[0], | |
1671 | + 3, | |
1672 | + 0, 0, 0, 0, "" | |
1673 | +}; | |
1674 | + | |
1675 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_h_hint_taken_entries[] = | |
1676 | +{ | |
1677 | + { "", 2, {0, {0}}, 0, 0 }, | |
1678 | + { "", 0, {0, {0}}, 0, 0 }, | |
1679 | + { "", 1, {0, {0}}, 0, 0 }, | |
1680 | + { "", 3, {0, {0}}, 0, 0 } | |
1681 | +}; | |
1682 | + | |
1683 | +CGEN_KEYWORD frv_cgen_opval_h_hint_taken = | |
1684 | +{ | |
1685 | + & frv_cgen_opval_h_hint_taken_entries[0], | |
1686 | + 4, | |
1687 | + 0, 0, 0, 0, "" | |
1688 | +}; | |
1689 | + | |
1690 | +static CGEN_KEYWORD_ENTRY frv_cgen_opval_h_hint_not_taken_entries[] = | |
1691 | +{ | |
1692 | + { "", 0, {0, {0}}, 0, 0 }, | |
1693 | + { "", 1, {0, {0}}, 0, 0 }, | |
1694 | + { "", 2, {0, {0}}, 0, 0 }, | |
1695 | + { "", 3, {0, {0}}, 0, 0 } | |
1696 | +}; | |
1697 | + | |
1698 | +CGEN_KEYWORD frv_cgen_opval_h_hint_not_taken = | |
1699 | +{ | |
1700 | + & frv_cgen_opval_h_hint_not_taken_entries[0], | |
1701 | + 4, | |
1702 | + 0, 0, 0, 0, "" | |
1703 | +}; | |
1704 | + | |
1705 | + | |
1706 | +/* The hardware table. */ | |
1707 | + | |
1708 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1709 | +#define A(a) (1 << CGEN_HW_##a) | |
1710 | +#else | |
1711 | +#define A(a) (1 << CGEN_HW_/**/a) | |
1712 | +#endif | |
1713 | + | |
1714 | +const CGEN_HW_ENTRY frv_cgen_hw_table[] = | |
1715 | +{ | |
1716 | + { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1717 | + { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1718 | + { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1719 | + { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1720 | + { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1721 | + { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { (1<<MACH_BASE) } } }, | |
1722 | + { "h-psr_imple", HW_H_PSR_IMPLE, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1723 | + { "h-psr_ver", HW_H_PSR_VER, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1724 | + { "h-psr_ice", HW_H_PSR_ICE, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1725 | + { "h-psr_nem", HW_H_PSR_NEM, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1726 | + { "h-psr_cm", HW_H_PSR_CM, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1727 | + { "h-psr_be", HW_H_PSR_BE, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1728 | + { "h-psr_esr", HW_H_PSR_ESR, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1729 | + { "h-psr_ef", HW_H_PSR_EF, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1730 | + { "h-psr_em", HW_H_PSR_EM, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1731 | + { "h-psr_pil", HW_H_PSR_PIL, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1732 | + { "h-psr_ps", HW_H_PSR_PS, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1733 | + { "h-psr_et", HW_H_PSR_ET, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1734 | + { "h-psr_s", HW_H_PSR_S, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1735 | + { "h-tbr_tba", HW_H_TBR_TBA, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1736 | + { "h-tbr_tt", HW_H_TBR_TT, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1737 | + { "h-bpsr_bs", HW_H_BPSR_BS, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1738 | + { "h-bpsr_bet", HW_H_BPSR_BET, CGEN_ASM_NONE, 0, { 0, { (1<<MACH_BASE) } } }, | |
1739 | + { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_gr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1740 | + { "h-gr_double", HW_H_GR_DOUBLE, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_gr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1741 | + { "h-gr_hi", HW_H_GR_HI, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_gr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1742 | + { "h-gr_lo", HW_H_GR_LO, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_gr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1743 | + { "h-fr", HW_H_FR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1744 | + { "h-fr_double", HW_H_FR_DOUBLE, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1745 | + { "h-fr_int", HW_H_FR_INT, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1746 | + { "h-fr_hi", HW_H_FR_HI, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1747 | + { "h-fr_lo", HW_H_FR_LO, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1748 | + { "h-fr_0", HW_H_FR_0, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1749 | + { "h-fr_1", HW_H_FR_1, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1750 | + { "h-fr_2", HW_H_FR_2, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1751 | + { "h-fr_3", HW_H_FR_3, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1752 | + { "h-cpr", HW_H_CPR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_cpr_names, { 0|A(PROFILE), { (1<<MACH_FRV) } } }, | |
1753 | + { "h-cpr_double", HW_H_CPR_DOUBLE, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_cpr_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_FRV) } } }, | |
1754 | + { "h-spr", HW_H_SPR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_spr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1755 | + { "h-accg", HW_H_ACCG, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_accg_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1756 | + { "h-acc40S", HW_H_ACC40S, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_acc_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1757 | + { "h-acc40U", HW_H_ACC40U, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_acc_names, { 0|A(VIRTUAL)|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1758 | + { "h-iccr", HW_H_ICCR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_iccr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1759 | + { "h-fccr", HW_H_FCCR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_fccr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1760 | + { "h-cccr", HW_H_CCCR, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_cccr_names, { 0|A(PROFILE), { (1<<MACH_BASE) } } }, | |
1761 | + { "h-pack", HW_H_PACK, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_h_pack, { 0, { (1<<MACH_BASE) } } }, | |
1762 | + { "h-hint-taken", HW_H_HINT_TAKEN, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_h_hint_taken, { 0, { (1<<MACH_BASE) } } }, | |
1763 | + { "h-hint-not-taken", HW_H_HINT_NOT_TAKEN, CGEN_ASM_KEYWORD, (PTR) & frv_cgen_opval_h_hint_not_taken, { 0, { (1<<MACH_BASE) } } }, | |
1764 | + { 0, 0, CGEN_ASM_NONE, 0, {0, {0}} } | |
1765 | +}; | |
1766 | + | |
1767 | +#undef A | |
1768 | + | |
1769 | + | |
1770 | +/* The instruction field table. */ | |
1771 | + | |
1772 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1773 | +#define A(a) (1 << CGEN_IFLD_##a) | |
1774 | +#else | |
1775 | +#define A(a) (1 << CGEN_IFLD_/**/a) | |
1776 | +#endif | |
1777 | + | |
1778 | +const CGEN_IFLD frv_cgen_ifld_table[] = | |
1779 | +{ | |
1780 | + { FRV_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } }, | |
1781 | + { FRV_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } }, | |
1782 | + { FRV_F_PACK, "f-pack", 0, 32, 31, 1, { 0, { (1<<MACH_BASE) } } }, | |
1783 | + { FRV_F_OP, "f-op", 0, 32, 24, 7, { 0, { (1<<MACH_BASE) } } }, | |
1784 | + { FRV_F_OPE1, "f-ope1", 0, 32, 11, 6, { 0, { (1<<MACH_BASE) } } }, | |
1785 | + { FRV_F_OPE2, "f-ope2", 0, 32, 9, 4, { 0, { (1<<MACH_BASE) } } }, | |
1786 | + { FRV_F_OPE3, "f-ope3", 0, 32, 15, 3, { 0, { (1<<MACH_BASE) } } }, | |
1787 | + { FRV_F_OPE4, "f-ope4", 0, 32, 7, 2, { 0, { (1<<MACH_BASE) } } }, | |
1788 | + { FRV_F_GRI, "f-GRi", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1789 | + { FRV_F_GRJ, "f-GRj", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1790 | + { FRV_F_GRK, "f-GRk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1791 | + { FRV_F_FRI, "f-FRi", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1792 | + { FRV_F_FRJ, "f-FRj", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1793 | + { FRV_F_FRK, "f-FRk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1794 | + { FRV_F_CPRI, "f-CPRi", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1795 | + { FRV_F_CPRJ, "f-CPRj", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1796 | + { FRV_F_CPRK, "f-CPRk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1797 | + { FRV_F_ACCGI, "f-ACCGi", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1798 | + { FRV_F_ACCGK, "f-ACCGk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1799 | + { FRV_F_ACC40SI, "f-ACC40Si", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1800 | + { FRV_F_ACC40UI, "f-ACC40Ui", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1801 | + { FRV_F_ACC40SK, "f-ACC40Sk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1802 | + { FRV_F_ACC40UK, "f-ACC40Uk", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1803 | + { FRV_F_CRI, "f-CRi", 0, 32, 14, 3, { 0, { (1<<MACH_BASE) } } }, | |
1804 | + { FRV_F_CRJ, "f-CRj", 0, 32, 2, 3, { 0, { (1<<MACH_BASE) } } }, | |
1805 | + { FRV_F_CRK, "f-CRk", 0, 32, 27, 3, { 0, { (1<<MACH_BASE) } } }, | |
1806 | + { FRV_F_CCI, "f-CCi", 0, 32, 11, 3, { 0, { (1<<MACH_BASE) } } }, | |
1807 | + { FRV_F_CRJ_INT, "f-CRj_int", 0, 32, 26, 2, { 0, { (1<<MACH_BASE) } } }, | |
1808 | + { FRV_F_CRJ_FLOAT, "f-CRj_float", 0, 32, 26, 2, { 0, { (1<<MACH_BASE) } } }, | |
1809 | + { FRV_F_ICCI_1, "f-ICCi_1", 0, 32, 11, 2, { 0, { (1<<MACH_BASE) } } }, | |
1810 | + { FRV_F_ICCI_2, "f-ICCi_2", 0, 32, 26, 2, { 0, { (1<<MACH_BASE) } } }, | |
1811 | + { FRV_F_ICCI_3, "f-ICCi_3", 0, 32, 1, 2, { 0, { (1<<MACH_BASE) } } }, | |
1812 | + { FRV_F_FCCI_1, "f-FCCi_1", 0, 32, 11, 2, { 0, { (1<<MACH_BASE) } } }, | |
1813 | + { FRV_F_FCCI_2, "f-FCCi_2", 0, 32, 26, 2, { 0, { (1<<MACH_BASE) } } }, | |
1814 | + { FRV_F_FCCI_3, "f-FCCi_3", 0, 32, 1, 2, { 0, { (1<<MACH_BASE) } } }, | |
1815 | + { FRV_F_FCCK, "f-FCCk", 0, 32, 26, 2, { 0, { (1<<MACH_BASE) } } }, | |
1816 | + { FRV_F_EIR, "f-eir", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1817 | + { FRV_F_S10, "f-s10", 0, 32, 9, 10, { 0, { (1<<MACH_BASE) } } }, | |
1818 | + { FRV_F_S12, "f-s12", 0, 32, 11, 12, { 0, { (1<<MACH_BASE) } } }, | |
1819 | + { FRV_F_D12, "f-d12", 0, 32, 11, 12, { 0, { (1<<MACH_BASE) } } }, | |
1820 | + { FRV_F_U16, "f-u16", 0, 32, 15, 16, { 0, { (1<<MACH_BASE) } } }, | |
1821 | + { FRV_F_S16, "f-s16", 0, 32, 15, 16, { 0, { (1<<MACH_BASE) } } }, | |
1822 | + { FRV_F_S6, "f-s6", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1823 | + { FRV_F_S6_1, "f-s6_1", 0, 32, 11, 6, { 0, { (1<<MACH_BASE) } } }, | |
1824 | + { FRV_F_U6, "f-u6", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1825 | + { FRV_F_S5, "f-s5", 0, 32, 4, 5, { 0, { (1<<MACH_BASE) } } }, | |
1826 | + { FRV_F_U12_H, "f-u12-h", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1827 | + { FRV_F_U12_L, "f-u12-l", 0, 32, 5, 6, { 0, { (1<<MACH_BASE) } } }, | |
1828 | + { FRV_F_INT_CC, "f-int-cc", 0, 32, 30, 4, { 0, { (1<<MACH_BASE) } } }, | |
1829 | + { FRV_F_FLT_CC, "f-flt-cc", 0, 32, 30, 4, { 0, { (1<<MACH_BASE) } } }, | |
1830 | + { FRV_F_COND, "f-cond", 0, 32, 8, 1, { 0, { (1<<MACH_BASE) } } }, | |
1831 | + { FRV_F_CCOND, "f-ccond", 0, 32, 12, 1, { 0, { (1<<MACH_BASE) } } }, | |
1832 | + { FRV_F_HINT, "f-hint", 0, 32, 17, 2, { 0, { (1<<MACH_BASE) } } }, | |
1833 | + { FRV_F_LI, "f-LI", 0, 32, 25, 1, { 0, { (1<<MACH_BASE) } } }, | |
1834 | + { FRV_F_LOCK, "f-lock", 0, 32, 25, 1, { 0, { (1<<MACH_BASE) } } }, | |
1835 | + { FRV_F_DEBUG, "f-debug", 0, 32, 25, 1, { 0, { (1<<MACH_BASE) } } }, | |
1836 | + { FRV_F_A, "f-A", 0, 32, 17, 1, { 0, { (1<<MACH_BASE) } } }, | |
1837 | + { FRV_F_AE, "f-ae", 0, 32, 25, 1, { 0, { (1<<MACH_BASE) } } }, | |
1838 | + { FRV_F_SPR_H, "f-spr-h", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1839 | + { FRV_F_SPR_L, "f-spr-l", 0, 32, 17, 6, { 0, { (1<<MACH_BASE) } } }, | |
1840 | + { FRV_F_LABEL16, "f-label16", 0, 32, 15, 16, { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } } }, | |
1841 | + { FRV_F_LABELH6, "f-labelH6", 0, 32, 30, 6, { 0, { (1<<MACH_BASE) } } }, | |
1842 | + { FRV_F_LABELL18, "f-labelL18", 0, 32, 17, 18, { 0, { (1<<MACH_BASE) } } }, | |
1843 | + { FRV_F_ICCI_1_NULL, "f-ICCi_1-null", 0, 32, 11, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1844 | + { FRV_F_ICCI_2_NULL, "f-ICCi_2-null", 0, 32, 26, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1845 | + { FRV_F_ICCI_3_NULL, "f-ICCi_3-null", 0, 32, 1, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1846 | + { FRV_F_FCCI_1_NULL, "f-FCCi_1-null", 0, 32, 11, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1847 | + { FRV_F_FCCI_2_NULL, "f-FCCi_2-null", 0, 32, 26, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1848 | + { FRV_F_FCCI_3_NULL, "f-FCCi_3-null", 0, 32, 1, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1849 | + { FRV_F_RS_NULL, "f-rs-null", 0, 32, 17, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1850 | + { FRV_F_GRI_NULL, "f-GRi-null", 0, 32, 17, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1851 | + { FRV_F_GRJ_NULL, "f-GRj-null", 0, 32, 5, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1852 | + { FRV_F_GRK_NULL, "f-GRk-null", 0, 32, 30, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1853 | + { FRV_F_FRI_NULL, "f-FRi-null", 0, 32, 17, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1854 | + { FRV_F_FRJ_NULL, "f-FRj-null", 0, 32, 5, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1855 | + { FRV_F_ACCJ_NULL, "f-ACCj-null", 0, 32, 5, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1856 | + { FRV_F_RD_NULL, "f-rd-null", 0, 32, 30, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1857 | + { FRV_F_COND_NULL, "f-cond-null", 0, 32, 30, 4, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1858 | + { FRV_F_CCOND_NULL, "f-ccond-null", 0, 32, 12, 1, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1859 | + { FRV_F_S12_NULL, "f-s12-null", 0, 32, 11, 12, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1860 | + { FRV_F_LABEL16_NULL, "f-label16-null", 0, 32, 15, 16, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1861 | + { FRV_F_MISC_NULL_1, "f-misc-null-1", 0, 32, 30, 5, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1862 | + { FRV_F_MISC_NULL_2, "f-misc-null-2", 0, 32, 11, 6, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1863 | + { FRV_F_MISC_NULL_3, "f-misc-null-3", 0, 32, 11, 4, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1864 | + { FRV_F_MISC_NULL_4, "f-misc-null-4", 0, 32, 17, 2, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1865 | + { FRV_F_MISC_NULL_5, "f-misc-null-5", 0, 32, 17, 16, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1866 | + { FRV_F_MISC_NULL_6, "f-misc-null-6", 0, 32, 30, 3, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1867 | + { FRV_F_MISC_NULL_7, "f-misc-null-7", 0, 32, 17, 3, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1868 | + { FRV_F_MISC_NULL_8, "f-misc-null-8", 0, 32, 5, 3, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1869 | + { FRV_F_MISC_NULL_9, "f-misc-null-9", 0, 32, 5, 4, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1870 | + { FRV_F_MISC_NULL_10, "f-misc-null-10", 0, 32, 16, 5, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1871 | + { FRV_F_MISC_NULL_11, "f-misc-null-11", 0, 32, 5, 1, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1872 | + { FRV_F_LI_OFF, "f-LI-off", 0, 32, 25, 1, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1873 | + { FRV_F_LI_ON, "f-LI-on", 0, 32, 25, 1, { 0|A(RESERVED), { (1<<MACH_BASE) } } }, | |
1874 | + { 0, 0, 0, 0, 0, 0, {0, {0}} } | |
1875 | +}; | |
1876 | + | |
1877 | +#undef A | |
1878 | + | |
1879 | + | |
1880 | + | |
1881 | +/* multi ifield declarations */ | |
1882 | + | |
1883 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_U12_MULTI_IFIELD []; | |
1884 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_SPR_MULTI_IFIELD []; | |
1885 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_LABEL24_MULTI_IFIELD []; | |
1886 | + | |
1887 | + | |
1888 | +/* multi ifield definitions */ | |
1889 | + | |
1890 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_U12_MULTI_IFIELD [] = | |
1891 | +{ | |
1892 | + { 0, &(frv_cgen_ifld_table[46]) }, | |
1893 | + { 0, &(frv_cgen_ifld_table[47]) }, | |
1894 | + {0,0} | |
1895 | +}; | |
1896 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_SPR_MULTI_IFIELD [] = | |
1897 | +{ | |
1898 | + { 0, &(frv_cgen_ifld_table[58]) }, | |
1899 | + { 0, &(frv_cgen_ifld_table[59]) }, | |
1900 | + {0,0} | |
1901 | +}; | |
1902 | +const CGEN_MAYBE_MULTI_IFLD FRV_F_LABEL24_MULTI_IFIELD [] = | |
1903 | +{ | |
1904 | + { 0, &(frv_cgen_ifld_table[61]) }, | |
1905 | + { 0, &(frv_cgen_ifld_table[62]) }, | |
1906 | + {0,0} | |
1907 | +}; | |
1908 | + | |
1909 | +/* The operand table. */ | |
1910 | + | |
1911 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1912 | +#define A(a) (1 << CGEN_OPERAND_##a) | |
1913 | +#else | |
1914 | +#define A(a) (1 << CGEN_OPERAND_/**/a) | |
1915 | +#endif | |
1916 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1917 | +#define OPERAND(op) FRV_OPERAND_##op | |
1918 | +#else | |
1919 | +#define OPERAND(op) FRV_OPERAND_/**/op | |
1920 | +#endif | |
1921 | + | |
1922 | +const CGEN_OPERAND frv_cgen_operand_table[] = | |
1923 | +{ | |
1924 | +/* pc: program counter */ | |
1925 | + { "pc", FRV_OPERAND_PC, HW_H_PC, 0, 0, | |
1926 | + { 0, &(frv_cgen_ifld_table[0]) }, | |
1927 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
1928 | +/* pack: packing bit */ | |
1929 | + { "pack", FRV_OPERAND_PACK, HW_H_PACK, 31, 1, | |
1930 | + { 0, &(frv_cgen_ifld_table[2]) }, | |
1931 | + { 0, { (1<<MACH_BASE) } } }, | |
1932 | +/* GRi: source register 1 */ | |
1933 | + { "GRi", FRV_OPERAND_GRI, HW_H_GR, 17, 6, | |
1934 | + { 0, &(frv_cgen_ifld_table[8]) }, | |
1935 | + { 0, { (1<<MACH_BASE) } } }, | |
1936 | +/* GRj: source register 2 */ | |
1937 | + { "GRj", FRV_OPERAND_GRJ, HW_H_GR, 5, 6, | |
1938 | + { 0, &(frv_cgen_ifld_table[9]) }, | |
1939 | + { 0, { (1<<MACH_BASE) } } }, | |
1940 | +/* GRk: destination register */ | |
1941 | + { "GRk", FRV_OPERAND_GRK, HW_H_GR, 30, 6, | |
1942 | + { 0, &(frv_cgen_ifld_table[10]) }, | |
1943 | + { 0, { (1<<MACH_BASE) } } }, | |
1944 | +/* GRkhi: destination register */ | |
1945 | + { "GRkhi", FRV_OPERAND_GRKHI, HW_H_GR_HI, 30, 6, | |
1946 | + { 0, &(frv_cgen_ifld_table[10]) }, | |
1947 | + { 0, { (1<<MACH_BASE) } } }, | |
1948 | +/* GRklo: destination register */ | |
1949 | + { "GRklo", FRV_OPERAND_GRKLO, HW_H_GR_LO, 30, 6, | |
1950 | + { 0, &(frv_cgen_ifld_table[10]) }, | |
1951 | + { 0, { (1<<MACH_BASE) } } }, | |
1952 | +/* GRdoublek: destination register */ | |
1953 | + { "GRdoublek", FRV_OPERAND_GRDOUBLEK, HW_H_GR_DOUBLE, 30, 6, | |
1954 | + { 0, &(frv_cgen_ifld_table[10]) }, | |
1955 | + { 0, { (1<<MACH_BASE) } } }, | |
1956 | +/* ACC40Si: signed accumulator */ | |
1957 | + { "ACC40Si", FRV_OPERAND_ACC40SI, HW_H_ACC40S, 17, 6, | |
1958 | + { 0, &(frv_cgen_ifld_table[19]) }, | |
1959 | + { 0, { (1<<MACH_BASE) } } }, | |
1960 | +/* ACC40Ui: unsigned accumulator */ | |
1961 | + { "ACC40Ui", FRV_OPERAND_ACC40UI, HW_H_ACC40U, 17, 6, | |
1962 | + { 0, &(frv_cgen_ifld_table[20]) }, | |
1963 | + { 0, { (1<<MACH_BASE) } } }, | |
1964 | +/* ACC40Sk: target accumulator */ | |
1965 | + { "ACC40Sk", FRV_OPERAND_ACC40SK, HW_H_ACC40S, 30, 6, | |
1966 | + { 0, &(frv_cgen_ifld_table[21]) }, | |
1967 | + { 0, { (1<<MACH_BASE) } } }, | |
1968 | +/* ACC40Uk: target accumulator */ | |
1969 | + { "ACC40Uk", FRV_OPERAND_ACC40UK, HW_H_ACC40U, 30, 6, | |
1970 | + { 0, &(frv_cgen_ifld_table[22]) }, | |
1971 | + { 0, { (1<<MACH_BASE) } } }, | |
1972 | +/* ACCGi: source register */ | |
1973 | + { "ACCGi", FRV_OPERAND_ACCGI, HW_H_ACCG, 17, 6, | |
1974 | + { 0, &(frv_cgen_ifld_table[17]) }, | |
1975 | + { 0, { (1<<MACH_BASE) } } }, | |
1976 | +/* ACCGk: target register */ | |
1977 | + { "ACCGk", FRV_OPERAND_ACCGK, HW_H_ACCG, 30, 6, | |
1978 | + { 0, &(frv_cgen_ifld_table[18]) }, | |
1979 | + { 0, { (1<<MACH_BASE) } } }, | |
1980 | +/* CPRi: source register */ | |
1981 | + { "CPRi", FRV_OPERAND_CPRI, HW_H_CPR, 17, 6, | |
1982 | + { 0, &(frv_cgen_ifld_table[14]) }, | |
1983 | + { 0, { (1<<MACH_FRV) } } }, | |
1984 | +/* CPRj: source register */ | |
1985 | + { "CPRj", FRV_OPERAND_CPRJ, HW_H_CPR, 5, 6, | |
1986 | + { 0, &(frv_cgen_ifld_table[15]) }, | |
1987 | + { 0, { (1<<MACH_FRV) } } }, | |
1988 | +/* CPRk: destination register */ | |
1989 | + { "CPRk", FRV_OPERAND_CPRK, HW_H_CPR, 30, 6, | |
1990 | + { 0, &(frv_cgen_ifld_table[16]) }, | |
1991 | + { 0, { (1<<MACH_FRV) } } }, | |
1992 | +/* CPRdoublek: destination register */ | |
1993 | + { "CPRdoublek", FRV_OPERAND_CPRDOUBLEK, HW_H_CPR_DOUBLE, 30, 6, | |
1994 | + { 0, &(frv_cgen_ifld_table[16]) }, | |
1995 | + { 0, { (1<<MACH_FRV) } } }, | |
1996 | +/* FRinti: source register 1 */ | |
1997 | + { "FRinti", FRV_OPERAND_FRINTI, HW_H_FR_INT, 17, 6, | |
1998 | + { 0, &(frv_cgen_ifld_table[11]) }, | |
1999 | + { 0, { (1<<MACH_BASE) } } }, | |
2000 | +/* FRintj: source register 2 */ | |
2001 | + { "FRintj", FRV_OPERAND_FRINTJ, HW_H_FR_INT, 5, 6, | |
2002 | + { 0, &(frv_cgen_ifld_table[12]) }, | |
2003 | + { 0, { (1<<MACH_BASE) } } }, | |
2004 | +/* FRintk: target register */ | |
2005 | + { "FRintk", FRV_OPERAND_FRINTK, HW_H_FR_INT, 30, 6, | |
2006 | + { 0, &(frv_cgen_ifld_table[13]) }, | |
2007 | + { 0, { (1<<MACH_BASE) } } }, | |
2008 | +/* FRi: source register 1 */ | |
2009 | + { "FRi", FRV_OPERAND_FRI, HW_H_FR, 17, 6, | |
2010 | + { 0, &(frv_cgen_ifld_table[11]) }, | |
2011 | + { 0, { (1<<MACH_BASE) } } }, | |
2012 | +/* FRj: source register 2 */ | |
2013 | + { "FRj", FRV_OPERAND_FRJ, HW_H_FR, 5, 6, | |
2014 | + { 0, &(frv_cgen_ifld_table[12]) }, | |
2015 | + { 0, { (1<<MACH_BASE) } } }, | |
2016 | +/* FRk: destination register */ | |
2017 | + { "FRk", FRV_OPERAND_FRK, HW_H_FR, 30, 6, | |
2018 | + { 0, &(frv_cgen_ifld_table[13]) }, | |
2019 | + { 0, { (1<<MACH_BASE) } } }, | |
2020 | +/* FRkhi: destination register */ | |
2021 | + { "FRkhi", FRV_OPERAND_FRKHI, HW_H_FR_HI, 30, 6, | |
2022 | + { 0, &(frv_cgen_ifld_table[13]) }, | |
2023 | + { 0, { (1<<MACH_BASE) } } }, | |
2024 | +/* FRklo: destination register */ | |
2025 | + { "FRklo", FRV_OPERAND_FRKLO, HW_H_FR_LO, 30, 6, | |
2026 | + { 0, &(frv_cgen_ifld_table[13]) }, | |
2027 | + { 0, { (1<<MACH_BASE) } } }, | |
2028 | +/* FRdoublei: source register 1 */ | |
2029 | + { "FRdoublei", FRV_OPERAND_FRDOUBLEI, HW_H_FR_DOUBLE, 17, 6, | |
2030 | + { 0, &(frv_cgen_ifld_table[11]) }, | |
2031 | + { 0, { (1<<MACH_BASE) } } }, | |
2032 | +/* FRdoublej: source register 2 */ | |
2033 | + { "FRdoublej", FRV_OPERAND_FRDOUBLEJ, HW_H_FR_DOUBLE, 5, 6, | |
2034 | + { 0, &(frv_cgen_ifld_table[12]) }, | |
2035 | + { 0, { (1<<MACH_BASE) } } }, | |
2036 | +/* FRdoublek: target register */ | |
2037 | + { "FRdoublek", FRV_OPERAND_FRDOUBLEK, HW_H_FR_DOUBLE, 30, 6, | |
2038 | + { 0, &(frv_cgen_ifld_table[13]) }, | |
2039 | + { 0, { (1<<MACH_BASE) } } }, | |
2040 | +/* CRi: source register 1 */ | |
2041 | + { "CRi", FRV_OPERAND_CRI, HW_H_CCCR, 14, 3, | |
2042 | + { 0, &(frv_cgen_ifld_table[23]) }, | |
2043 | + { 0, { (1<<MACH_BASE) } } }, | |
2044 | +/* CRj: source register 2 */ | |
2045 | + { "CRj", FRV_OPERAND_CRJ, HW_H_CCCR, 2, 3, | |
2046 | + { 0, &(frv_cgen_ifld_table[24]) }, | |
2047 | + { 0, { (1<<MACH_BASE) } } }, | |
2048 | +/* CRj_int: destination register */ | |
2049 | + { "CRj_int", FRV_OPERAND_CRJ_INT, HW_H_CCCR, 26, 2, | |
2050 | + { 0, &(frv_cgen_ifld_table[27]) }, | |
2051 | + { 0, { (1<<MACH_BASE) } } }, | |
2052 | +/* CRj_float: destination register */ | |
2053 | + { "CRj_float", FRV_OPERAND_CRJ_FLOAT, HW_H_CCCR, 26, 2, | |
2054 | + { 0, &(frv_cgen_ifld_table[28]) }, | |
2055 | + { 0, { (1<<MACH_BASE) } } }, | |
2056 | +/* CRk: destination register */ | |
2057 | + { "CRk", FRV_OPERAND_CRK, HW_H_CCCR, 27, 3, | |
2058 | + { 0, &(frv_cgen_ifld_table[25]) }, | |
2059 | + { 0, { (1<<MACH_BASE) } } }, | |
2060 | +/* CCi: condition register */ | |
2061 | + { "CCi", FRV_OPERAND_CCI, HW_H_CCCR, 11, 3, | |
2062 | + { 0, &(frv_cgen_ifld_table[26]) }, | |
2063 | + { 0, { (1<<MACH_BASE) } } }, | |
2064 | +/* ICCi_1: condition register */ | |
2065 | + { "ICCi_1", FRV_OPERAND_ICCI_1, HW_H_ICCR, 11, 2, | |
2066 | + { 0, &(frv_cgen_ifld_table[29]) }, | |
2067 | + { 0, { (1<<MACH_BASE) } } }, | |
2068 | +/* ICCi_2: condition register */ | |
2069 | + { "ICCi_2", FRV_OPERAND_ICCI_2, HW_H_ICCR, 26, 2, | |
2070 | + { 0, &(frv_cgen_ifld_table[30]) }, | |
2071 | + { 0, { (1<<MACH_BASE) } } }, | |
2072 | +/* ICCi_3: condition register */ | |
2073 | + { "ICCi_3", FRV_OPERAND_ICCI_3, HW_H_ICCR, 1, 2, | |
2074 | + { 0, &(frv_cgen_ifld_table[31]) }, | |
2075 | + { 0, { (1<<MACH_BASE) } } }, | |
2076 | +/* FCCi_1: condition register */ | |
2077 | + { "FCCi_1", FRV_OPERAND_FCCI_1, HW_H_FCCR, 11, 2, | |
2078 | + { 0, &(frv_cgen_ifld_table[32]) }, | |
2079 | + { 0, { (1<<MACH_BASE) } } }, | |
2080 | +/* FCCi_2: condition register */ | |
2081 | + { "FCCi_2", FRV_OPERAND_FCCI_2, HW_H_FCCR, 26, 2, | |
2082 | + { 0, &(frv_cgen_ifld_table[33]) }, | |
2083 | + { 0, { (1<<MACH_BASE) } } }, | |
2084 | +/* FCCi_3: condition register */ | |
2085 | + { "FCCi_3", FRV_OPERAND_FCCI_3, HW_H_FCCR, 1, 2, | |
2086 | + { 0, &(frv_cgen_ifld_table[34]) }, | |
2087 | + { 0, { (1<<MACH_BASE) } } }, | |
2088 | +/* FCCk: condition register */ | |
2089 | + { "FCCk", FRV_OPERAND_FCCK, HW_H_FCCR, 26, 2, | |
2090 | + { 0, &(frv_cgen_ifld_table[35]) }, | |
2091 | + { 0, { (1<<MACH_BASE) } } }, | |
2092 | +/* eir: exception insn reg */ | |
2093 | + { "eir", FRV_OPERAND_EIR, HW_H_UINT, 17, 6, | |
2094 | + { 0, &(frv_cgen_ifld_table[36]) }, | |
2095 | + { 0, { (1<<MACH_BASE) } } }, | |
2096 | +/* s10: 10 bit signed immediate */ | |
2097 | + { "s10", FRV_OPERAND_S10, HW_H_SINT, 9, 10, | |
2098 | + { 0, &(frv_cgen_ifld_table[37]) }, | |
2099 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2100 | +/* u16: 16 bit unsigned immediate */ | |
2101 | + { "u16", FRV_OPERAND_U16, HW_H_UINT, 15, 16, | |
2102 | + { 0, &(frv_cgen_ifld_table[40]) }, | |
2103 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2104 | +/* s16: 16 bit signed immediate */ | |
2105 | + { "s16", FRV_OPERAND_S16, HW_H_SINT, 15, 16, | |
2106 | + { 0, &(frv_cgen_ifld_table[41]) }, | |
2107 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2108 | +/* s6: 6 bit signed immediate */ | |
2109 | + { "s6", FRV_OPERAND_S6, HW_H_SINT, 5, 6, | |
2110 | + { 0, &(frv_cgen_ifld_table[42]) }, | |
2111 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2112 | +/* s6_1: 6 bit signed immediate */ | |
2113 | + { "s6_1", FRV_OPERAND_S6_1, HW_H_SINT, 11, 6, | |
2114 | + { 0, &(frv_cgen_ifld_table[43]) }, | |
2115 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2116 | +/* u6: 6 bit unsigned immediate */ | |
2117 | + { "u6", FRV_OPERAND_U6, HW_H_UINT, 5, 6, | |
2118 | + { 0, &(frv_cgen_ifld_table[44]) }, | |
2119 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2120 | +/* s5: 5 bit signed immediate */ | |
2121 | + { "s5", FRV_OPERAND_S5, HW_H_SINT, 4, 5, | |
2122 | + { 0, &(frv_cgen_ifld_table[45]) }, | |
2123 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2124 | +/* cond: conditional arithmetic */ | |
2125 | + { "cond", FRV_OPERAND_COND, HW_H_UINT, 8, 1, | |
2126 | + { 0, &(frv_cgen_ifld_table[50]) }, | |
2127 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2128 | +/* ccond: lr branch condition */ | |
2129 | + { "ccond", FRV_OPERAND_CCOND, HW_H_UINT, 12, 1, | |
2130 | + { 0, &(frv_cgen_ifld_table[51]) }, | |
2131 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2132 | +/* hint: 2 bit branch predictor */ | |
2133 | + { "hint", FRV_OPERAND_HINT, HW_H_UINT, 17, 2, | |
2134 | + { 0, &(frv_cgen_ifld_table[52]) }, | |
2135 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2136 | +/* hint_taken: 2 bit branch predictor */ | |
2137 | + { "hint_taken", FRV_OPERAND_HINT_TAKEN, HW_H_HINT_TAKEN, 17, 2, | |
2138 | + { 0, &(frv_cgen_ifld_table[52]) }, | |
2139 | + { 0, { (1<<MACH_BASE) } } }, | |
2140 | +/* hint_not_taken: 2 bit branch predictor */ | |
2141 | + { "hint_not_taken", FRV_OPERAND_HINT_NOT_TAKEN, HW_H_HINT_NOT_TAKEN, 17, 2, | |
2142 | + { 0, &(frv_cgen_ifld_table[52]) }, | |
2143 | + { 0, { (1<<MACH_BASE) } } }, | |
2144 | +/* LI: link indicator */ | |
2145 | + { "LI", FRV_OPERAND_LI, HW_H_UINT, 25, 1, | |
2146 | + { 0, &(frv_cgen_ifld_table[53]) }, | |
2147 | + { 0, { (1<<MACH_BASE) } } }, | |
2148 | +/* lock: cache lock indicator */ | |
2149 | + { "lock", FRV_OPERAND_LOCK, HW_H_UINT, 25, 1, | |
2150 | + { 0, &(frv_cgen_ifld_table[54]) }, | |
2151 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2152 | +/* debug: debug mode indicator */ | |
2153 | + { "debug", FRV_OPERAND_DEBUG, HW_H_UINT, 25, 1, | |
2154 | + { 0, &(frv_cgen_ifld_table[55]) }, | |
2155 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2156 | +/* A: all accumulator indicator */ | |
2157 | + { "A", FRV_OPERAND_A, HW_H_UINT, 17, 1, | |
2158 | + { 0, &(frv_cgen_ifld_table[56]) }, | |
2159 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2160 | +/* ae: all entries indicator */ | |
2161 | + { "ae", FRV_OPERAND_AE, HW_H_UINT, 25, 1, | |
2162 | + { 0, &(frv_cgen_ifld_table[57]) }, | |
2163 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2164 | +/* label16: 18 bit pc relative address */ | |
2165 | + { "label16", FRV_OPERAND_LABEL16, HW_H_IADDR, 15, 16, | |
2166 | + { 0, &(frv_cgen_ifld_table[60]) }, | |
2167 | + { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } } }, | |
2168 | +/* label24: 26 bit pc relative address */ | |
2169 | + { "label24", FRV_OPERAND_LABEL24, HW_H_IADDR, 17, 24, | |
2170 | + { 2, &(FRV_F_LABEL24_MULTI_IFIELD[0]) }, | |
2171 | + { 0|A(PCREL_ADDR)|A(VIRTUAL), { (1<<MACH_BASE) } } }, | |
2172 | +/* d12: 12 bit signed immediate */ | |
2173 | + { "d12", FRV_OPERAND_D12, HW_H_SINT, 11, 12, | |
2174 | + { 0, &(frv_cgen_ifld_table[39]) }, | |
2175 | + { 0, { (1<<MACH_BASE) } } }, | |
2176 | +/* s12: 12 bit signed immediate */ | |
2177 | + { "s12", FRV_OPERAND_S12, HW_H_SINT, 11, 12, | |
2178 | + { 0, &(frv_cgen_ifld_table[39]) }, | |
2179 | + { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, | |
2180 | +/* u12: 12 bit signed immediate */ | |
2181 | + { "u12", FRV_OPERAND_U12, HW_H_SINT, 5, 12, | |
2182 | + { 2, &(FRV_F_U12_MULTI_IFIELD[0]) }, | |
2183 | + { 0|A(HASH_PREFIX)|A(VIRTUAL), { (1<<MACH_BASE) } } }, | |
2184 | +/* spr: special purpose register */ | |
2185 | + { "spr", FRV_OPERAND_SPR, HW_H_SPR, 17, 12, | |
2186 | + { 2, &(FRV_F_SPR_MULTI_IFIELD[0]) }, | |
2187 | + { 0|A(VIRTUAL), { (1<<MACH_BASE) } } }, | |
2188 | +/* ulo16: 16 bit unsigned immediate, for #lo() */ | |
2189 | + { "ulo16", FRV_OPERAND_ULO16, HW_H_UINT, 15, 16, | |
2190 | + { 0, &(frv_cgen_ifld_table[40]) }, | |
2191 | + { 0, { (1<<MACH_BASE) } } }, | |
2192 | +/* slo16: 16 bit unsigned immediate, for #lo() */ | |
2193 | + { "slo16", FRV_OPERAND_SLO16, HW_H_SINT, 15, 16, | |
2194 | + { 0, &(frv_cgen_ifld_table[41]) }, | |
2195 | + { 0, { (1<<MACH_BASE) } } }, | |
2196 | +/* uhi16: 16 bit unsigned immediate, for #hi() */ | |
2197 | + { "uhi16", FRV_OPERAND_UHI16, HW_H_UINT, 15, 16, | |
2198 | + { 0, &(frv_cgen_ifld_table[40]) }, | |
2199 | + { 0, { (1<<MACH_BASE) } } }, | |
2200 | +/* psr_esr: PSR.ESR bit */ | |
2201 | + { "psr_esr", FRV_OPERAND_PSR_ESR, HW_H_PSR_ESR, 0, 0, | |
2202 | + { 0, 0 }, | |
2203 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2204 | +/* psr_s: PSR.S bit */ | |
2205 | + { "psr_s", FRV_OPERAND_PSR_S, HW_H_PSR_S, 0, 0, | |
2206 | + { 0, 0 }, | |
2207 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2208 | +/* psr_ps: PSR.PS bit */ | |
2209 | + { "psr_ps", FRV_OPERAND_PSR_PS, HW_H_PSR_PS, 0, 0, | |
2210 | + { 0, 0 }, | |
2211 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2212 | +/* psr_et: PSR.ET bit */ | |
2213 | + { "psr_et", FRV_OPERAND_PSR_ET, HW_H_PSR_ET, 0, 0, | |
2214 | + { 0, 0 }, | |
2215 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2216 | +/* bpsr_bs: BPSR.BS bit */ | |
2217 | + { "bpsr_bs", FRV_OPERAND_BPSR_BS, HW_H_BPSR_BS, 0, 0, | |
2218 | + { 0, 0 }, | |
2219 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2220 | +/* bpsr_bet: BPSR.BET bit */ | |
2221 | + { "bpsr_bet", FRV_OPERAND_BPSR_BET, HW_H_BPSR_BET, 0, 0, | |
2222 | + { 0, 0 }, | |
2223 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2224 | +/* tbr_tba: TBR.TBA */ | |
2225 | + { "tbr_tba", FRV_OPERAND_TBR_TBA, HW_H_TBR_TBA, 0, 0, | |
2226 | + { 0, 0 }, | |
2227 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2228 | +/* tbr_tt: TBR.TT */ | |
2229 | + { "tbr_tt", FRV_OPERAND_TBR_TT, HW_H_TBR_TT, 0, 0, | |
2230 | + { 0, 0 }, | |
2231 | + { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, | |
2232 | + { 0, 0, 0, 0, 0, {0, {0}} } | |
2233 | +}; | |
2234 | + | |
2235 | +#undef A | |
2236 | + | |
2237 | + | |
2238 | +/* The instruction table. */ | |
2239 | + | |
2240 | +#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) | |
2241 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
2242 | +#define A(a) (1 << CGEN_INSN_##a) | |
2243 | +#else | |
2244 | +#define A(a) (1 << CGEN_INSN_/**/a) | |
2245 | +#endif | |
2246 | + | |
2247 | +static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] = | |
2248 | +{ | |
2249 | + /* Special null first entry. | |
2250 | + A `num' value of zero is thus invalid. | |
2251 | + Also, the special `invalid' insn resides here. */ | |
2252 | + { 0, 0, 0, 0, {0, {0}} }, | |
2253 | +/* add$pack $GRi,$GRj,$GRk */ | |
2254 | + { | |
2255 | + FRV_INSN_ADD, "add", "add", 32, | |
2256 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2257 | + }, | |
2258 | +/* sub$pack $GRi,$GRj,$GRk */ | |
2259 | + { | |
2260 | + FRV_INSN_SUB, "sub", "sub", 32, | |
2261 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2262 | + }, | |
2263 | +/* and$pack $GRi,$GRj,$GRk */ | |
2264 | + { | |
2265 | + FRV_INSN_AND, "and", "and", 32, | |
2266 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2267 | + }, | |
2268 | +/* or$pack $GRi,$GRj,$GRk */ | |
2269 | + { | |
2270 | + FRV_INSN_OR, "or", "or", 32, | |
2271 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2272 | + }, | |
2273 | +/* xor$pack $GRi,$GRj,$GRk */ | |
2274 | + { | |
2275 | + FRV_INSN_XOR, "xor", "xor", 32, | |
2276 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2277 | + }, | |
2278 | +/* not$pack $GRj,$GRk */ | |
2279 | + { | |
2280 | + FRV_INSN_NOT, "not", "not", 32, | |
2281 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2282 | + }, | |
2283 | +/* sdiv$pack $GRi,$GRj,$GRk */ | |
2284 | + { | |
2285 | + FRV_INSN_SDIV, "sdiv", "sdiv", 32, | |
2286 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2287 | + }, | |
2288 | +/* nsdiv$pack $GRi,$GRj,$GRk */ | |
2289 | + { | |
2290 | + FRV_INSN_NSDIV, "nsdiv", "nsdiv", 32, | |
2291 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_MULT_DIV, FR400_MAJOR_NONE, FR500_MAJOR_I_1 } } | |
2292 | + }, | |
2293 | +/* udiv$pack $GRi,$GRj,$GRk */ | |
2294 | + { | |
2295 | + FRV_INSN_UDIV, "udiv", "udiv", 32, | |
2296 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2297 | + }, | |
2298 | +/* nudiv$pack $GRi,$GRj,$GRk */ | |
2299 | + { | |
2300 | + FRV_INSN_NUDIV, "nudiv", "nudiv", 32, | |
2301 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_MULT_DIV, FR400_MAJOR_NONE, FR500_MAJOR_I_1 } } | |
2302 | + }, | |
2303 | +/* smul$pack $GRi,$GRj,$GRdoublek */ | |
2304 | + { | |
2305 | + FRV_INSN_SMUL, "smul", "smul", 32, | |
2306 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2307 | + }, | |
2308 | +/* umul$pack $GRi,$GRj,$GRdoublek */ | |
2309 | + { | |
2310 | + FRV_INSN_UMUL, "umul", "umul", 32, | |
2311 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2312 | + }, | |
2313 | +/* sll$pack $GRi,$GRj,$GRk */ | |
2314 | + { | |
2315 | + FRV_INSN_SLL, "sll", "sll", 32, | |
2316 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2317 | + }, | |
2318 | +/* srl$pack $GRi,$GRj,$GRk */ | |
2319 | + { | |
2320 | + FRV_INSN_SRL, "srl", "srl", 32, | |
2321 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2322 | + }, | |
2323 | +/* sra$pack $GRi,$GRj,$GRk */ | |
2324 | + { | |
2325 | + FRV_INSN_SRA, "sra", "sra", 32, | |
2326 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2327 | + }, | |
2328 | +/* scan$pack $GRi,$GRj,$GRk */ | |
2329 | + { | |
2330 | + FRV_INSN_SCAN, "scan", "scan", 32, | |
2331 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2332 | + }, | |
2333 | +/* cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2334 | + { | |
2335 | + FRV_INSN_CADD, "cadd", "cadd", 32, | |
2336 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2337 | + }, | |
2338 | +/* csub$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2339 | + { | |
2340 | + FRV_INSN_CSUB, "csub", "csub", 32, | |
2341 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2342 | + }, | |
2343 | +/* cand$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2344 | + { | |
2345 | + FRV_INSN_CAND, "cand", "cand", 32, | |
2346 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2347 | + }, | |
2348 | +/* cor$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2349 | + { | |
2350 | + FRV_INSN_COR, "cor", "cor", 32, | |
2351 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2352 | + }, | |
2353 | +/* cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2354 | + { | |
2355 | + FRV_INSN_CXOR, "cxor", "cxor", 32, | |
2356 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2357 | + }, | |
2358 | +/* cnot$pack $GRj,$GRk,$CCi,$cond */ | |
2359 | + { | |
2360 | + FRV_INSN_CNOT, "cnot", "cnot", 32, | |
2361 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2362 | + }, | |
2363 | +/* csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */ | |
2364 | + { | |
2365 | + FRV_INSN_CSMUL, "csmul", "csmul", 32, | |
2366 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2367 | + }, | |
2368 | +/* csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2369 | + { | |
2370 | + FRV_INSN_CSDIV, "csdiv", "csdiv", 32, | |
2371 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2372 | + }, | |
2373 | +/* cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2374 | + { | |
2375 | + FRV_INSN_CUDIV, "cudiv", "cudiv", 32, | |
2376 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2377 | + }, | |
2378 | +/* csll$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2379 | + { | |
2380 | + FRV_INSN_CSLL, "csll", "csll", 32, | |
2381 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2382 | + }, | |
2383 | +/* csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2384 | + { | |
2385 | + FRV_INSN_CSRL, "csrl", "csrl", 32, | |
2386 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2387 | + }, | |
2388 | +/* csra$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2389 | + { | |
2390 | + FRV_INSN_CSRA, "csra", "csra", 32, | |
2391 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2392 | + }, | |
2393 | +/* cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2394 | + { | |
2395 | + FRV_INSN_CSCAN, "cscan", "cscan", 32, | |
2396 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2397 | + }, | |
2398 | +/* addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2399 | + { | |
2400 | + FRV_INSN_ADDCC, "addcc", "addcc", 32, | |
2401 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2402 | + }, | |
2403 | +/* subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2404 | + { | |
2405 | + FRV_INSN_SUBCC, "subcc", "subcc", 32, | |
2406 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2407 | + }, | |
2408 | +/* andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2409 | + { | |
2410 | + FRV_INSN_ANDCC, "andcc", "andcc", 32, | |
2411 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2412 | + }, | |
2413 | +/* orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2414 | + { | |
2415 | + FRV_INSN_ORCC, "orcc", "orcc", 32, | |
2416 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2417 | + }, | |
2418 | +/* xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2419 | + { | |
2420 | + FRV_INSN_XORCC, "xorcc", "xorcc", 32, | |
2421 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2422 | + }, | |
2423 | +/* sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2424 | + { | |
2425 | + FRV_INSN_SLLCC, "sllcc", "sllcc", 32, | |
2426 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2427 | + }, | |
2428 | +/* srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2429 | + { | |
2430 | + FRV_INSN_SRLCC, "srlcc", "srlcc", 32, | |
2431 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2432 | + }, | |
2433 | +/* sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2434 | + { | |
2435 | + FRV_INSN_SRACC, "sracc", "sracc", 32, | |
2436 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2437 | + }, | |
2438 | +/* smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */ | |
2439 | + { | |
2440 | + FRV_INSN_SMULCC, "smulcc", "smulcc", 32, | |
2441 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2442 | + }, | |
2443 | +/* umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */ | |
2444 | + { | |
2445 | + FRV_INSN_UMULCC, "umulcc", "umulcc", 32, | |
2446 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2447 | + }, | |
2448 | +/* caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2449 | + { | |
2450 | + FRV_INSN_CADDCC, "caddcc", "caddcc", 32, | |
2451 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2452 | + }, | |
2453 | +/* csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2454 | + { | |
2455 | + FRV_INSN_CSUBCC, "csubcc", "csubcc", 32, | |
2456 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2457 | + }, | |
2458 | +/* csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */ | |
2459 | + { | |
2460 | + FRV_INSN_CSMULCC, "csmulcc", "csmulcc", 32, | |
2461 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2462 | + }, | |
2463 | +/* candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2464 | + { | |
2465 | + FRV_INSN_CANDCC, "candcc", "candcc", 32, | |
2466 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2467 | + }, | |
2468 | +/* corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2469 | + { | |
2470 | + FRV_INSN_CORCC, "corcc", "corcc", 32, | |
2471 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2472 | + }, | |
2473 | +/* cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2474 | + { | |
2475 | + FRV_INSN_CXORCC, "cxorcc", "cxorcc", 32, | |
2476 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2477 | + }, | |
2478 | +/* csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2479 | + { | |
2480 | + FRV_INSN_CSLLCC, "csllcc", "csllcc", 32, | |
2481 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2482 | + }, | |
2483 | +/* csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2484 | + { | |
2485 | + FRV_INSN_CSRLCC, "csrlcc", "csrlcc", 32, | |
2486 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2487 | + }, | |
2488 | +/* csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
2489 | + { | |
2490 | + FRV_INSN_CSRACC, "csracc", "csracc", 32, | |
2491 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2492 | + }, | |
2493 | +/* addx$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2494 | + { | |
2495 | + FRV_INSN_ADDX, "addx", "addx", 32, | |
2496 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2497 | + }, | |
2498 | +/* subx$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2499 | + { | |
2500 | + FRV_INSN_SUBX, "subx", "subx", 32, | |
2501 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2502 | + }, | |
2503 | +/* addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2504 | + { | |
2505 | + FRV_INSN_ADDXCC, "addxcc", "addxcc", 32, | |
2506 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2507 | + }, | |
2508 | +/* subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
2509 | + { | |
2510 | + FRV_INSN_SUBXCC, "subxcc", "subxcc", 32, | |
2511 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2512 | + }, | |
2513 | +/* addi$pack $GRi,$s12,$GRk */ | |
2514 | + { | |
2515 | + FRV_INSN_ADDI, "addi", "addi", 32, | |
2516 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2517 | + }, | |
2518 | +/* subi$pack $GRi,$s12,$GRk */ | |
2519 | + { | |
2520 | + FRV_INSN_SUBI, "subi", "subi", 32, | |
2521 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2522 | + }, | |
2523 | +/* andi$pack $GRi,$s12,$GRk */ | |
2524 | + { | |
2525 | + FRV_INSN_ANDI, "andi", "andi", 32, | |
2526 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2527 | + }, | |
2528 | +/* ori$pack $GRi,$s12,$GRk */ | |
2529 | + { | |
2530 | + FRV_INSN_ORI, "ori", "ori", 32, | |
2531 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2532 | + }, | |
2533 | +/* xori$pack $GRi,$s12,$GRk */ | |
2534 | + { | |
2535 | + FRV_INSN_XORI, "xori", "xori", 32, | |
2536 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2537 | + }, | |
2538 | +/* sdivi$pack $GRi,$s12,$GRk */ | |
2539 | + { | |
2540 | + FRV_INSN_SDIVI, "sdivi", "sdivi", 32, | |
2541 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2542 | + }, | |
2543 | +/* nsdivi$pack $GRi,$s12,$GRk */ | |
2544 | + { | |
2545 | + FRV_INSN_NSDIVI, "nsdivi", "nsdivi", 32, | |
2546 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_MULT_DIV, FR400_MAJOR_NONE, FR500_MAJOR_I_1 } } | |
2547 | + }, | |
2548 | +/* udivi$pack $GRi,$s12,$GRk */ | |
2549 | + { | |
2550 | + FRV_INSN_UDIVI, "udivi", "udivi", 32, | |
2551 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2552 | + }, | |
2553 | +/* nudivi$pack $GRi,$s12,$GRk */ | |
2554 | + { | |
2555 | + FRV_INSN_NUDIVI, "nudivi", "nudivi", 32, | |
2556 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_MULT_DIV, FR400_MAJOR_NONE, FR500_MAJOR_I_1 } } | |
2557 | + }, | |
2558 | +/* smuli$pack $GRi,$s12,$GRdoublek */ | |
2559 | + { | |
2560 | + FRV_INSN_SMULI, "smuli", "smuli", 32, | |
2561 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2562 | + }, | |
2563 | +/* umuli$pack $GRi,$s12,$GRdoublek */ | |
2564 | + { | |
2565 | + FRV_INSN_UMULI, "umuli", "umuli", 32, | |
2566 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2567 | + }, | |
2568 | +/* slli$pack $GRi,$s12,$GRk */ | |
2569 | + { | |
2570 | + FRV_INSN_SLLI, "slli", "slli", 32, | |
2571 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2572 | + }, | |
2573 | +/* srli$pack $GRi,$s12,$GRk */ | |
2574 | + { | |
2575 | + FRV_INSN_SRLI, "srli", "srli", 32, | |
2576 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2577 | + }, | |
2578 | +/* srai$pack $GRi,$s12,$GRk */ | |
2579 | + { | |
2580 | + FRV_INSN_SRAI, "srai", "srai", 32, | |
2581 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2582 | + }, | |
2583 | +/* scani$pack $GRi,$s12,$GRk */ | |
2584 | + { | |
2585 | + FRV_INSN_SCANI, "scani", "scani", 32, | |
2586 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2587 | + }, | |
2588 | +/* addicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2589 | + { | |
2590 | + FRV_INSN_ADDICC, "addicc", "addicc", 32, | |
2591 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2592 | + }, | |
2593 | +/* subicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2594 | + { | |
2595 | + FRV_INSN_SUBICC, "subicc", "subicc", 32, | |
2596 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2597 | + }, | |
2598 | +/* andicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2599 | + { | |
2600 | + FRV_INSN_ANDICC, "andicc", "andicc", 32, | |
2601 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2602 | + }, | |
2603 | +/* oricc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2604 | + { | |
2605 | + FRV_INSN_ORICC, "oricc", "oricc", 32, | |
2606 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2607 | + }, | |
2608 | +/* xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2609 | + { | |
2610 | + FRV_INSN_XORICC, "xoricc", "xoricc", 32, | |
2611 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2612 | + }, | |
2613 | +/* smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */ | |
2614 | + { | |
2615 | + FRV_INSN_SMULICC, "smulicc", "smulicc", 32, | |
2616 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2617 | + }, | |
2618 | +/* umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */ | |
2619 | + { | |
2620 | + FRV_INSN_UMULICC, "umulicc", "umulicc", 32, | |
2621 | + { 0, { (1<<MACH_BASE), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2622 | + }, | |
2623 | +/* sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2624 | + { | |
2625 | + FRV_INSN_SLLICC, "sllicc", "sllicc", 32, | |
2626 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2627 | + }, | |
2628 | +/* srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2629 | + { | |
2630 | + FRV_INSN_SRLICC, "srlicc", "srlicc", 32, | |
2631 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2632 | + }, | |
2633 | +/* sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2634 | + { | |
2635 | + FRV_INSN_SRAICC, "sraicc", "sraicc", 32, | |
2636 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2637 | + }, | |
2638 | +/* addxi$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2639 | + { | |
2640 | + FRV_INSN_ADDXI, "addxi", "addxi", 32, | |
2641 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2642 | + }, | |
2643 | +/* subxi$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2644 | + { | |
2645 | + FRV_INSN_SUBXI, "subxi", "subxi", 32, | |
2646 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2647 | + }, | |
2648 | +/* addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2649 | + { | |
2650 | + FRV_INSN_ADDXICC, "addxicc", "addxicc", 32, | |
2651 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2652 | + }, | |
2653 | +/* subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
2654 | + { | |
2655 | + FRV_INSN_SUBXICC, "subxicc", "subxicc", 32, | |
2656 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2657 | + }, | |
2658 | +/* cmpb$pack $GRi,$GRj,$ICCi_1 */ | |
2659 | + { | |
2660 | + FRV_INSN_CMPB, "cmpb", "cmpb", 32, | |
2661 | + { 0, { (1<<MACH_FR400), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_NONE } } | |
2662 | + }, | |
2663 | +/* cmpba$pack $GRi,$GRj,$ICCi_1 */ | |
2664 | + { | |
2665 | + FRV_INSN_CMPBA, "cmpba", "cmpba", 32, | |
2666 | + { 0, { (1<<MACH_FR400), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_NONE } } | |
2667 | + }, | |
2668 | +/* setlo$pack $ulo16,$GRklo */ | |
2669 | + { | |
2670 | + FRV_INSN_SETLO, "setlo", "setlo", 32, | |
2671 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2672 | + }, | |
2673 | +/* sethi$pack $uhi16,$GRkhi */ | |
2674 | + { | |
2675 | + FRV_INSN_SETHI, "sethi", "sethi", 32, | |
2676 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2677 | + }, | |
2678 | +/* setlos$pack $slo16,$GRk */ | |
2679 | + { | |
2680 | + FRV_INSN_SETLOS, "setlos", "setlos", 32, | |
2681 | + { 0, { (1<<MACH_BASE), UNIT_I01, FR400_MAJOR_I_1, FR500_MAJOR_I_1 } } | |
2682 | + }, | |
2683 | +/* ldsb$pack @($GRi,$GRj),$GRk */ | |
2684 | + { | |
2685 | + FRV_INSN_LDSB, "ldsb", "ldsb", 32, | |
2686 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2687 | + }, | |
2688 | +/* ldub$pack @($GRi,$GRj),$GRk */ | |
2689 | + { | |
2690 | + FRV_INSN_LDUB, "ldub", "ldub", 32, | |
2691 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2692 | + }, | |
2693 | +/* ldsh$pack @($GRi,$GRj),$GRk */ | |
2694 | + { | |
2695 | + FRV_INSN_LDSH, "ldsh", "ldsh", 32, | |
2696 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2697 | + }, | |
2698 | +/* lduh$pack @($GRi,$GRj),$GRk */ | |
2699 | + { | |
2700 | + FRV_INSN_LDUH, "lduh", "lduh", 32, | |
2701 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2702 | + }, | |
2703 | +/* ld$pack @($GRi,$GRj),$GRk */ | |
2704 | + { | |
2705 | + FRV_INSN_LD, "ld", "ld", 32, | |
2706 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2707 | + }, | |
2708 | +/* ldbf$pack @($GRi,$GRj),$FRintk */ | |
2709 | + { | |
2710 | + FRV_INSN_LDBF, "ldbf", "ldbf", 32, | |
2711 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2712 | + }, | |
2713 | +/* ldhf$pack @($GRi,$GRj),$FRintk */ | |
2714 | + { | |
2715 | + FRV_INSN_LDHF, "ldhf", "ldhf", 32, | |
2716 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2717 | + }, | |
2718 | +/* ldf$pack @($GRi,$GRj),$FRintk */ | |
2719 | + { | |
2720 | + FRV_INSN_LDF, "ldf", "ldf", 32, | |
2721 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2722 | + }, | |
2723 | +/* ldc$pack @($GRi,$GRj),$CPRk */ | |
2724 | + { | |
2725 | + FRV_INSN_LDC, "ldc", "ldc", 32, | |
2726 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2727 | + }, | |
2728 | +/* nldsb$pack @($GRi,$GRj),$GRk */ | |
2729 | + { | |
2730 | + FRV_INSN_NLDSB, "nldsb", "nldsb", 32, | |
2731 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2732 | + }, | |
2733 | +/* nldub$pack @($GRi,$GRj),$GRk */ | |
2734 | + { | |
2735 | + FRV_INSN_NLDUB, "nldub", "nldub", 32, | |
2736 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2737 | + }, | |
2738 | +/* nldsh$pack @($GRi,$GRj),$GRk */ | |
2739 | + { | |
2740 | + FRV_INSN_NLDSH, "nldsh", "nldsh", 32, | |
2741 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2742 | + }, | |
2743 | +/* nlduh$pack @($GRi,$GRj),$GRk */ | |
2744 | + { | |
2745 | + FRV_INSN_NLDUH, "nlduh", "nlduh", 32, | |
2746 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2747 | + }, | |
2748 | +/* nld$pack @($GRi,$GRj),$GRk */ | |
2749 | + { | |
2750 | + FRV_INSN_NLD, "nld", "nld", 32, | |
2751 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2752 | + }, | |
2753 | +/* nldbf$pack @($GRi,$GRj),$FRintk */ | |
2754 | + { | |
2755 | + FRV_INSN_NLDBF, "nldbf", "nldbf", 32, | |
2756 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2757 | + }, | |
2758 | +/* nldhf$pack @($GRi,$GRj),$FRintk */ | |
2759 | + { | |
2760 | + FRV_INSN_NLDHF, "nldhf", "nldhf", 32, | |
2761 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2762 | + }, | |
2763 | +/* nldf$pack @($GRi,$GRj),$FRintk */ | |
2764 | + { | |
2765 | + FRV_INSN_NLDF, "nldf", "nldf", 32, | |
2766 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2767 | + }, | |
2768 | +/* ldd$pack @($GRi,$GRj),$GRdoublek */ | |
2769 | + { | |
2770 | + FRV_INSN_LDD, "ldd", "ldd", 32, | |
2771 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2772 | + }, | |
2773 | +/* lddf$pack @($GRi,$GRj),$FRdoublek */ | |
2774 | + { | |
2775 | + FRV_INSN_LDDF, "lddf", "lddf", 32, | |
2776 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2777 | + }, | |
2778 | +/* lddc$pack @($GRi,$GRj),$CPRdoublek */ | |
2779 | + { | |
2780 | + FRV_INSN_LDDC, "lddc", "lddc", 32, | |
2781 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2782 | + }, | |
2783 | +/* nldd$pack @($GRi,$GRj),$GRdoublek */ | |
2784 | + { | |
2785 | + FRV_INSN_NLDD, "nldd", "nldd", 32, | |
2786 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2787 | + }, | |
2788 | +/* nlddf$pack @($GRi,$GRj),$FRdoublek */ | |
2789 | + { | |
2790 | + FRV_INSN_NLDDF, "nlddf", "nlddf", 32, | |
2791 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2792 | + }, | |
2793 | +/* ldq$pack @($GRi,$GRj),$GRk */ | |
2794 | + { | |
2795 | + FRV_INSN_LDQ, "ldq", "ldq", 32, | |
2796 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2797 | + }, | |
2798 | +/* ldqf$pack @($GRi,$GRj),$FRintk */ | |
2799 | + { | |
2800 | + FRV_INSN_LDQF, "ldqf", "ldqf", 32, | |
2801 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2802 | + }, | |
2803 | +/* ldqc$pack @($GRi,$GRj),$CPRk */ | |
2804 | + { | |
2805 | + FRV_INSN_LDQC, "ldqc", "ldqc", 32, | |
2806 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2807 | + }, | |
2808 | +/* nldq$pack @($GRi,$GRj),$GRk */ | |
2809 | + { | |
2810 | + FRV_INSN_NLDQ, "nldq", "nldq", 32, | |
2811 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2812 | + }, | |
2813 | +/* nldqf$pack @($GRi,$GRj),$FRintk */ | |
2814 | + { | |
2815 | + FRV_INSN_NLDQF, "nldqf", "nldqf", 32, | |
2816 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2817 | + }, | |
2818 | +/* ldsbu$pack @($GRi,$GRj),$GRk */ | |
2819 | + { | |
2820 | + FRV_INSN_LDSBU, "ldsbu", "ldsbu", 32, | |
2821 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2822 | + }, | |
2823 | +/* ldubu$pack @($GRi,$GRj),$GRk */ | |
2824 | + { | |
2825 | + FRV_INSN_LDUBU, "ldubu", "ldubu", 32, | |
2826 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2827 | + }, | |
2828 | +/* ldshu$pack @($GRi,$GRj),$GRk */ | |
2829 | + { | |
2830 | + FRV_INSN_LDSHU, "ldshu", "ldshu", 32, | |
2831 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2832 | + }, | |
2833 | +/* lduhu$pack @($GRi,$GRj),$GRk */ | |
2834 | + { | |
2835 | + FRV_INSN_LDUHU, "lduhu", "lduhu", 32, | |
2836 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2837 | + }, | |
2838 | +/* ldu$pack @($GRi,$GRj),$GRk */ | |
2839 | + { | |
2840 | + FRV_INSN_LDU, "ldu", "ldu", 32, | |
2841 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2842 | + }, | |
2843 | +/* nldsbu$pack @($GRi,$GRj),$GRk */ | |
2844 | + { | |
2845 | + FRV_INSN_NLDSBU, "nldsbu", "nldsbu", 32, | |
2846 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2847 | + }, | |
2848 | +/* nldubu$pack @($GRi,$GRj),$GRk */ | |
2849 | + { | |
2850 | + FRV_INSN_NLDUBU, "nldubu", "nldubu", 32, | |
2851 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2852 | + }, | |
2853 | +/* nldshu$pack @($GRi,$GRj),$GRk */ | |
2854 | + { | |
2855 | + FRV_INSN_NLDSHU, "nldshu", "nldshu", 32, | |
2856 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2857 | + }, | |
2858 | +/* nlduhu$pack @($GRi,$GRj),$GRk */ | |
2859 | + { | |
2860 | + FRV_INSN_NLDUHU, "nlduhu", "nlduhu", 32, | |
2861 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2862 | + }, | |
2863 | +/* nldu$pack @($GRi,$GRj),$GRk */ | |
2864 | + { | |
2865 | + FRV_INSN_NLDU, "nldu", "nldu", 32, | |
2866 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2867 | + }, | |
2868 | +/* ldbfu$pack @($GRi,$GRj),$FRintk */ | |
2869 | + { | |
2870 | + FRV_INSN_LDBFU, "ldbfu", "ldbfu", 32, | |
2871 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2872 | + }, | |
2873 | +/* ldhfu$pack @($GRi,$GRj),$FRintk */ | |
2874 | + { | |
2875 | + FRV_INSN_LDHFU, "ldhfu", "ldhfu", 32, | |
2876 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2877 | + }, | |
2878 | +/* ldfu$pack @($GRi,$GRj),$FRintk */ | |
2879 | + { | |
2880 | + FRV_INSN_LDFU, "ldfu", "ldfu", 32, | |
2881 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2882 | + }, | |
2883 | +/* ldcu$pack @($GRi,$GRj),$CPRk */ | |
2884 | + { | |
2885 | + FRV_INSN_LDCU, "ldcu", "ldcu", 32, | |
2886 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2887 | + }, | |
2888 | +/* nldbfu$pack @($GRi,$GRj),$FRintk */ | |
2889 | + { | |
2890 | + FRV_INSN_NLDBFU, "nldbfu", "nldbfu", 32, | |
2891 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2892 | + }, | |
2893 | +/* nldhfu$pack @($GRi,$GRj),$FRintk */ | |
2894 | + { | |
2895 | + FRV_INSN_NLDHFU, "nldhfu", "nldhfu", 32, | |
2896 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2897 | + }, | |
2898 | +/* nldfu$pack @($GRi,$GRj),$FRintk */ | |
2899 | + { | |
2900 | + FRV_INSN_NLDFU, "nldfu", "nldfu", 32, | |
2901 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2902 | + }, | |
2903 | +/* lddu$pack @($GRi,$GRj),$GRdoublek */ | |
2904 | + { | |
2905 | + FRV_INSN_LDDU, "lddu", "lddu", 32, | |
2906 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2907 | + }, | |
2908 | +/* nlddu$pack @($GRi,$GRj),$GRdoublek */ | |
2909 | + { | |
2910 | + FRV_INSN_NLDDU, "nlddu", "nlddu", 32, | |
2911 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2912 | + }, | |
2913 | +/* lddfu$pack @($GRi,$GRj),$FRdoublek */ | |
2914 | + { | |
2915 | + FRV_INSN_LDDFU, "lddfu", "lddfu", 32, | |
2916 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2917 | + }, | |
2918 | +/* lddcu$pack @($GRi,$GRj),$CPRdoublek */ | |
2919 | + { | |
2920 | + FRV_INSN_LDDCU, "lddcu", "lddcu", 32, | |
2921 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2922 | + }, | |
2923 | +/* nlddfu$pack @($GRi,$GRj),$FRdoublek */ | |
2924 | + { | |
2925 | + FRV_INSN_NLDDFU, "nlddfu", "nlddfu", 32, | |
2926 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2927 | + }, | |
2928 | +/* ldqu$pack @($GRi,$GRj),$GRk */ | |
2929 | + { | |
2930 | + FRV_INSN_LDQU, "ldqu", "ldqu", 32, | |
2931 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2932 | + }, | |
2933 | +/* nldqu$pack @($GRi,$GRj),$GRk */ | |
2934 | + { | |
2935 | + FRV_INSN_NLDQU, "nldqu", "nldqu", 32, | |
2936 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2937 | + }, | |
2938 | +/* ldqfu$pack @($GRi,$GRj),$FRintk */ | |
2939 | + { | |
2940 | + FRV_INSN_LDQFU, "ldqfu", "ldqfu", 32, | |
2941 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2942 | + }, | |
2943 | +/* ldqcu$pack @($GRi,$GRj),$CPRk */ | |
2944 | + { | |
2945 | + FRV_INSN_LDQCU, "ldqcu", "ldqcu", 32, | |
2946 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2947 | + }, | |
2948 | +/* nldqfu$pack @($GRi,$GRj),$FRintk */ | |
2949 | + { | |
2950 | + FRV_INSN_NLDQFU, "nldqfu", "nldqfu", 32, | |
2951 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2952 | + }, | |
2953 | +/* ldsbi$pack @($GRi,$d12),$GRk */ | |
2954 | + { | |
2955 | + FRV_INSN_LDSBI, "ldsbi", "ldsbi", 32, | |
2956 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2957 | + }, | |
2958 | +/* ldshi$pack @($GRi,$d12),$GRk */ | |
2959 | + { | |
2960 | + FRV_INSN_LDSHI, "ldshi", "ldshi", 32, | |
2961 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2962 | + }, | |
2963 | +/* ldi$pack @($GRi,$d12),$GRk */ | |
2964 | + { | |
2965 | + FRV_INSN_LDI, "ldi", "ldi", 32, | |
2966 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2967 | + }, | |
2968 | +/* ldubi$pack @($GRi,$d12),$GRk */ | |
2969 | + { | |
2970 | + FRV_INSN_LDUBI, "ldubi", "ldubi", 32, | |
2971 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2972 | + }, | |
2973 | +/* lduhi$pack @($GRi,$d12),$GRk */ | |
2974 | + { | |
2975 | + FRV_INSN_LDUHI, "lduhi", "lduhi", 32, | |
2976 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2977 | + }, | |
2978 | +/* ldbfi$pack @($GRi,$d12),$FRintk */ | |
2979 | + { | |
2980 | + FRV_INSN_LDBFI, "ldbfi", "ldbfi", 32, | |
2981 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2982 | + }, | |
2983 | +/* ldhfi$pack @($GRi,$d12),$FRintk */ | |
2984 | + { | |
2985 | + FRV_INSN_LDHFI, "ldhfi", "ldhfi", 32, | |
2986 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2987 | + }, | |
2988 | +/* ldfi$pack @($GRi,$d12),$FRintk */ | |
2989 | + { | |
2990 | + FRV_INSN_LDFI, "ldfi", "ldfi", 32, | |
2991 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
2992 | + }, | |
2993 | +/* nldsbi$pack @($GRi,$d12),$GRk */ | |
2994 | + { | |
2995 | + FRV_INSN_NLDSBI, "nldsbi", "nldsbi", 32, | |
2996 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
2997 | + }, | |
2998 | +/* nldubi$pack @($GRi,$d12),$GRk */ | |
2999 | + { | |
3000 | + FRV_INSN_NLDUBI, "nldubi", "nldubi", 32, | |
3001 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3002 | + }, | |
3003 | +/* nldshi$pack @($GRi,$d12),$GRk */ | |
3004 | + { | |
3005 | + FRV_INSN_NLDSHI, "nldshi", "nldshi", 32, | |
3006 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3007 | + }, | |
3008 | +/* nlduhi$pack @($GRi,$d12),$GRk */ | |
3009 | + { | |
3010 | + FRV_INSN_NLDUHI, "nlduhi", "nlduhi", 32, | |
3011 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3012 | + }, | |
3013 | +/* nldi$pack @($GRi,$d12),$GRk */ | |
3014 | + { | |
3015 | + FRV_INSN_NLDI, "nldi", "nldi", 32, | |
3016 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3017 | + }, | |
3018 | +/* nldbfi$pack @($GRi,$d12),$FRintk */ | |
3019 | + { | |
3020 | + FRV_INSN_NLDBFI, "nldbfi", "nldbfi", 32, | |
3021 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3022 | + }, | |
3023 | +/* nldhfi$pack @($GRi,$d12),$FRintk */ | |
3024 | + { | |
3025 | + FRV_INSN_NLDHFI, "nldhfi", "nldhfi", 32, | |
3026 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3027 | + }, | |
3028 | +/* nldfi$pack @($GRi,$d12),$FRintk */ | |
3029 | + { | |
3030 | + FRV_INSN_NLDFI, "nldfi", "nldfi", 32, | |
3031 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3032 | + }, | |
3033 | +/* lddi$pack @($GRi,$d12),$GRdoublek */ | |
3034 | + { | |
3035 | + FRV_INSN_LDDI, "lddi", "lddi", 32, | |
3036 | + { 0, { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3037 | + }, | |
3038 | +/* lddfi$pack @($GRi,$d12),$FRdoublek */ | |
3039 | + { | |
3040 | + FRV_INSN_LDDFI, "lddfi", "lddfi", 32, | |
3041 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3042 | + }, | |
3043 | +/* nlddi$pack @($GRi,$d12),$GRdoublek */ | |
3044 | + { | |
3045 | + FRV_INSN_NLDDI, "nlddi", "nlddi", 32, | |
3046 | + { 0|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3047 | + }, | |
3048 | +/* nlddfi$pack @($GRi,$d12),$FRdoublek */ | |
3049 | + { | |
3050 | + FRV_INSN_NLDDFI, "nlddfi", "nlddfi", 32, | |
3051 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3052 | + }, | |
3053 | +/* ldqi$pack @($GRi,$d12),$GRk */ | |
3054 | + { | |
3055 | + FRV_INSN_LDQI, "ldqi", "ldqi", 32, | |
3056 | + { 0, { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3057 | + }, | |
3058 | +/* ldqfi$pack @($GRi,$d12),$FRintk */ | |
3059 | + { | |
3060 | + FRV_INSN_LDQFI, "ldqfi", "ldqfi", 32, | |
3061 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3062 | + }, | |
3063 | +/* nldqi$pack @($GRi,$d12),$GRk */ | |
3064 | + { | |
3065 | + FRV_INSN_NLDQI, "nldqi", "nldqi", 32, | |
3066 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3067 | + }, | |
3068 | +/* nldqfi$pack @($GRi,$d12),$FRintk */ | |
3069 | + { | |
3070 | + FRV_INSN_NLDQFI, "nldqfi", "nldqfi", 32, | |
3071 | + { 0|A(FR_ACCESS)|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3072 | + }, | |
3073 | +/* stb$pack $GRk,@($GRi,$GRj) */ | |
3074 | + { | |
3075 | + FRV_INSN_STB, "stb", "stb", 32, | |
3076 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3077 | + }, | |
3078 | +/* sth$pack $GRk,@($GRi,$GRj) */ | |
3079 | + { | |
3080 | + FRV_INSN_STH, "sth", "sth", 32, | |
3081 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3082 | + }, | |
3083 | +/* st$pack $GRk,@($GRi,$GRj) */ | |
3084 | + { | |
3085 | + FRV_INSN_ST, "st", "st", 32, | |
3086 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3087 | + }, | |
3088 | +/* stbf$pack $FRintk,@($GRi,$GRj) */ | |
3089 | + { | |
3090 | + FRV_INSN_STBF, "stbf", "stbf", 32, | |
3091 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3092 | + }, | |
3093 | +/* sthf$pack $FRintk,@($GRi,$GRj) */ | |
3094 | + { | |
3095 | + FRV_INSN_STHF, "sthf", "sthf", 32, | |
3096 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3097 | + }, | |
3098 | +/* stf$pack $FRintk,@($GRi,$GRj) */ | |
3099 | + { | |
3100 | + FRV_INSN_STF, "stf", "stf", 32, | |
3101 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3102 | + }, | |
3103 | +/* stc$pack $CPRk,@($GRi,$GRj) */ | |
3104 | + { | |
3105 | + FRV_INSN_STC, "stc", "stc", 32, | |
3106 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3107 | + }, | |
3108 | +/* rstb$pack $GRk,@($GRi,$GRj) */ | |
3109 | + { | |
3110 | + FRV_INSN_RSTB, "rstb", "rstb", 32, | |
3111 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3112 | + }, | |
3113 | +/* rsth$pack $GRk,@($GRi,$GRj) */ | |
3114 | + { | |
3115 | + FRV_INSN_RSTH, "rsth", "rsth", 32, | |
3116 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3117 | + }, | |
3118 | +/* rst$pack $GRk,@($GRi,$GRj) */ | |
3119 | + { | |
3120 | + FRV_INSN_RST, "rst", "rst", 32, | |
3121 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3122 | + }, | |
3123 | +/* rstbf$pack $FRintk,@($GRi,$GRj) */ | |
3124 | + { | |
3125 | + FRV_INSN_RSTBF, "rstbf", "rstbf", 32, | |
3126 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3127 | + }, | |
3128 | +/* rsthf$pack $FRintk,@($GRi,$GRj) */ | |
3129 | + { | |
3130 | + FRV_INSN_RSTHF, "rsthf", "rsthf", 32, | |
3131 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3132 | + }, | |
3133 | +/* rstf$pack $FRintk,@($GRi,$GRj) */ | |
3134 | + { | |
3135 | + FRV_INSN_RSTF, "rstf", "rstf", 32, | |
3136 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3137 | + }, | |
3138 | +/* std$pack $GRk,@($GRi,$GRj) */ | |
3139 | + { | |
3140 | + FRV_INSN_STD, "std", "std", 32, | |
3141 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3142 | + }, | |
3143 | +/* stdf$pack $FRk,@($GRi,$GRj) */ | |
3144 | + { | |
3145 | + FRV_INSN_STDF, "stdf", "stdf", 32, | |
3146 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3147 | + }, | |
3148 | +/* stdc$pack $CPRk,@($GRi,$GRj) */ | |
3149 | + { | |
3150 | + FRV_INSN_STDC, "stdc", "stdc", 32, | |
3151 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3152 | + }, | |
3153 | +/* rstd$pack $GRk,@($GRi,$GRj) */ | |
3154 | + { | |
3155 | + FRV_INSN_RSTD, "rstd", "rstd", 32, | |
3156 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3157 | + }, | |
3158 | +/* rstdf$pack $FRk,@($GRi,$GRj) */ | |
3159 | + { | |
3160 | + FRV_INSN_RSTDF, "rstdf", "rstdf", 32, | |
3161 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3162 | + }, | |
3163 | +/* stq$pack $GRk,@($GRi,$GRj) */ | |
3164 | + { | |
3165 | + FRV_INSN_STQ, "stq", "stq", 32, | |
3166 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3167 | + }, | |
3168 | +/* stqf$pack $FRintk,@($GRi,$GRj) */ | |
3169 | + { | |
3170 | + FRV_INSN_STQF, "stqf", "stqf", 32, | |
3171 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3172 | + }, | |
3173 | +/* stqc$pack $CPRk,@($GRi,$GRj) */ | |
3174 | + { | |
3175 | + FRV_INSN_STQC, "stqc", "stqc", 32, | |
3176 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3177 | + }, | |
3178 | +/* rstq$pack $GRk,@($GRi,$GRj) */ | |
3179 | + { | |
3180 | + FRV_INSN_RSTQ, "rstq", "rstq", 32, | |
3181 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3182 | + }, | |
3183 | +/* rstqf$pack $FRintk,@($GRi,$GRj) */ | |
3184 | + { | |
3185 | + FRV_INSN_RSTQF, "rstqf", "rstqf", 32, | |
3186 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3187 | + }, | |
3188 | +/* stbu$pack $GRk,@($GRi,$GRj) */ | |
3189 | + { | |
3190 | + FRV_INSN_STBU, "stbu", "stbu", 32, | |
3191 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3192 | + }, | |
3193 | +/* sthu$pack $GRk,@($GRi,$GRj) */ | |
3194 | + { | |
3195 | + FRV_INSN_STHU, "sthu", "sthu", 32, | |
3196 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3197 | + }, | |
3198 | +/* stu$pack $GRk,@($GRi,$GRj) */ | |
3199 | + { | |
3200 | + FRV_INSN_STU, "stu", "stu", 32, | |
3201 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3202 | + }, | |
3203 | +/* stbfu$pack $FRintk,@($GRi,$GRj) */ | |
3204 | + { | |
3205 | + FRV_INSN_STBFU, "stbfu", "stbfu", 32, | |
3206 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3207 | + }, | |
3208 | +/* sthfu$pack $FRintk,@($GRi,$GRj) */ | |
3209 | + { | |
3210 | + FRV_INSN_STHFU, "sthfu", "sthfu", 32, | |
3211 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3212 | + }, | |
3213 | +/* stfu$pack $FRintk,@($GRi,$GRj) */ | |
3214 | + { | |
3215 | + FRV_INSN_STFU, "stfu", "stfu", 32, | |
3216 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3217 | + }, | |
3218 | +/* stcu$pack $CPRk,@($GRi,$GRj) */ | |
3219 | + { | |
3220 | + FRV_INSN_STCU, "stcu", "stcu", 32, | |
3221 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3222 | + }, | |
3223 | +/* stdu$pack $GRk,@($GRi,$GRj) */ | |
3224 | + { | |
3225 | + FRV_INSN_STDU, "stdu", "stdu", 32, | |
3226 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3227 | + }, | |
3228 | +/* stdfu$pack $FRk,@($GRi,$GRj) */ | |
3229 | + { | |
3230 | + FRV_INSN_STDFU, "stdfu", "stdfu", 32, | |
3231 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3232 | + }, | |
3233 | +/* stdcu$pack $CPRk,@($GRi,$GRj) */ | |
3234 | + { | |
3235 | + FRV_INSN_STDCU, "stdcu", "stdcu", 32, | |
3236 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3237 | + }, | |
3238 | +/* stqu$pack $GRk,@($GRi,$GRj) */ | |
3239 | + { | |
3240 | + FRV_INSN_STQU, "stqu", "stqu", 32, | |
3241 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3242 | + }, | |
3243 | +/* stqfu$pack $FRintk,@($GRi,$GRj) */ | |
3244 | + { | |
3245 | + FRV_INSN_STQFU, "stqfu", "stqfu", 32, | |
3246 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3247 | + }, | |
3248 | +/* stqcu$pack $CPRk,@($GRi,$GRj) */ | |
3249 | + { | |
3250 | + FRV_INSN_STQCU, "stqcu", "stqcu", 32, | |
3251 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3252 | + }, | |
3253 | +/* cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3254 | + { | |
3255 | + FRV_INSN_CLDSB, "cldsb", "cldsb", 32, | |
3256 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3257 | + }, | |
3258 | +/* cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3259 | + { | |
3260 | + FRV_INSN_CLDUB, "cldub", "cldub", 32, | |
3261 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3262 | + }, | |
3263 | +/* cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3264 | + { | |
3265 | + FRV_INSN_CLDSH, "cldsh", "cldsh", 32, | |
3266 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3267 | + }, | |
3268 | +/* clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3269 | + { | |
3270 | + FRV_INSN_CLDUH, "clduh", "clduh", 32, | |
3271 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3272 | + }, | |
3273 | +/* cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3274 | + { | |
3275 | + FRV_INSN_CLD, "cld", "cld", 32, | |
3276 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3277 | + }, | |
3278 | +/* cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3279 | + { | |
3280 | + FRV_INSN_CLDBF, "cldbf", "cldbf", 32, | |
3281 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3282 | + }, | |
3283 | +/* cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3284 | + { | |
3285 | + FRV_INSN_CLDHF, "cldhf", "cldhf", 32, | |
3286 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3287 | + }, | |
3288 | +/* cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3289 | + { | |
3290 | + FRV_INSN_CLDF, "cldf", "cldf", 32, | |
3291 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3292 | + }, | |
3293 | +/* cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */ | |
3294 | + { | |
3295 | + FRV_INSN_CLDD, "cldd", "cldd", 32, | |
3296 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3297 | + }, | |
3298 | +/* clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */ | |
3299 | + { | |
3300 | + FRV_INSN_CLDDF, "clddf", "clddf", 32, | |
3301 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3302 | + }, | |
3303 | +/* cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3304 | + { | |
3305 | + FRV_INSN_CLDQ, "cldq", "cldq", 32, | |
3306 | + { 0|A(CONDITIONAL), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3307 | + }, | |
3308 | +/* cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3309 | + { | |
3310 | + FRV_INSN_CLDSBU, "cldsbu", "cldsbu", 32, | |
3311 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3312 | + }, | |
3313 | +/* cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3314 | + { | |
3315 | + FRV_INSN_CLDUBU, "cldubu", "cldubu", 32, | |
3316 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3317 | + }, | |
3318 | +/* cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3319 | + { | |
3320 | + FRV_INSN_CLDSHU, "cldshu", "cldshu", 32, | |
3321 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3322 | + }, | |
3323 | +/* clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3324 | + { | |
3325 | + FRV_INSN_CLDUHU, "clduhu", "clduhu", 32, | |
3326 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3327 | + }, | |
3328 | +/* cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3329 | + { | |
3330 | + FRV_INSN_CLDU, "cldu", "cldu", 32, | |
3331 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3332 | + }, | |
3333 | +/* cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3334 | + { | |
3335 | + FRV_INSN_CLDBFU, "cldbfu", "cldbfu", 32, | |
3336 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3337 | + }, | |
3338 | +/* cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3339 | + { | |
3340 | + FRV_INSN_CLDHFU, "cldhfu", "cldhfu", 32, | |
3341 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3342 | + }, | |
3343 | +/* cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */ | |
3344 | + { | |
3345 | + FRV_INSN_CLDFU, "cldfu", "cldfu", 32, | |
3346 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3347 | + }, | |
3348 | +/* clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */ | |
3349 | + { | |
3350 | + FRV_INSN_CLDDU, "clddu", "clddu", 32, | |
3351 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3352 | + }, | |
3353 | +/* clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */ | |
3354 | + { | |
3355 | + FRV_INSN_CLDDFU, "clddfu", "clddfu", 32, | |
3356 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_LOAD, FR400_MAJOR_I_2, FR500_MAJOR_I_2 } } | |
3357 | + }, | |
3358 | +/* cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3359 | + { | |
3360 | + FRV_INSN_CLDQU, "cldqu", "cldqu", 32, | |
3361 | + { 0|A(CONDITIONAL), { (1<<MACH_FRV), UNIT_LOAD, FR400_MAJOR_NONE, FR500_MAJOR_I_2 } } | |
3362 | + }, | |
3363 | +/* cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3364 | + { | |
3365 | + FRV_INSN_CSTB, "cstb", "cstb", 32, | |
3366 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3367 | + }, | |
3368 | +/* csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3369 | + { | |
3370 | + FRV_INSN_CSTH, "csth", "csth", 32, | |
3371 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3372 | + }, | |
3373 | +/* cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3374 | + { | |
3375 | + FRV_INSN_CST, "cst", "cst", 32, | |
3376 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3377 | + }, | |
3378 | +/* cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3379 | + { | |
3380 | + FRV_INSN_CSTBF, "cstbf", "cstbf", 32, | |
3381 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3382 | + }, | |
3383 | +/* csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3384 | + { | |
3385 | + FRV_INSN_CSTHF, "csthf", "csthf", 32, | |
3386 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3387 | + }, | |
3388 | +/* cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3389 | + { | |
3390 | + FRV_INSN_CSTF, "cstf", "cstf", 32, | |
3391 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3392 | + }, | |
3393 | +/* cstd$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3394 | + { | |
3395 | + FRV_INSN_CSTD, "cstd", "cstd", 32, | |
3396 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3397 | + }, | |
3398 | +/* cstdf$pack $FRk,@($GRi,$GRj),$CCi,$cond */ | |
3399 | + { | |
3400 | + FRV_INSN_CSTDF, "cstdf", "cstdf", 32, | |
3401 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3402 | + }, | |
3403 | +/* cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3404 | + { | |
3405 | + FRV_INSN_CSTQ, "cstq", "cstq", 32, | |
3406 | + { 0|A(CONDITIONAL), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3407 | + }, | |
3408 | +/* cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3409 | + { | |
3410 | + FRV_INSN_CSTBU, "cstbu", "cstbu", 32, | |
3411 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3412 | + }, | |
3413 | +/* csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3414 | + { | |
3415 | + FRV_INSN_CSTHU, "csthu", "csthu", 32, | |
3416 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3417 | + }, | |
3418 | +/* cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3419 | + { | |
3420 | + FRV_INSN_CSTU, "cstu", "cstu", 32, | |
3421 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3422 | + }, | |
3423 | +/* cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3424 | + { | |
3425 | + FRV_INSN_CSTBFU, "cstbfu", "cstbfu", 32, | |
3426 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3427 | + }, | |
3428 | +/* csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3429 | + { | |
3430 | + FRV_INSN_CSTHFU, "csthfu", "csthfu", 32, | |
3431 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3432 | + }, | |
3433 | +/* cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */ | |
3434 | + { | |
3435 | + FRV_INSN_CSTFU, "cstfu", "cstfu", 32, | |
3436 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3437 | + }, | |
3438 | +/* cstdu$pack $GRk,@($GRi,$GRj),$CCi,$cond */ | |
3439 | + { | |
3440 | + FRV_INSN_CSTDU, "cstdu", "cstdu", 32, | |
3441 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3442 | + }, | |
3443 | +/* cstdfu$pack $FRk,@($GRi,$GRj),$CCi,$cond */ | |
3444 | + { | |
3445 | + FRV_INSN_CSTDFU, "cstdfu", "cstdfu", 32, | |
3446 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3447 | + }, | |
3448 | +/* stbi$pack $GRk,@($GRi,$d12) */ | |
3449 | + { | |
3450 | + FRV_INSN_STBI, "stbi", "stbi", 32, | |
3451 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3452 | + }, | |
3453 | +/* sthi$pack $GRk,@($GRi,$d12) */ | |
3454 | + { | |
3455 | + FRV_INSN_STHI, "sthi", "sthi", 32, | |
3456 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3457 | + }, | |
3458 | +/* sti$pack $GRk,@($GRi,$d12) */ | |
3459 | + { | |
3460 | + FRV_INSN_STI, "sti", "sti", 32, | |
3461 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3462 | + }, | |
3463 | +/* stbfi$pack $FRintk,@($GRi,$d12) */ | |
3464 | + { | |
3465 | + FRV_INSN_STBFI, "stbfi", "stbfi", 32, | |
3466 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3467 | + }, | |
3468 | +/* sthfi$pack $FRintk,@($GRi,$d12) */ | |
3469 | + { | |
3470 | + FRV_INSN_STHFI, "sthfi", "sthfi", 32, | |
3471 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3472 | + }, | |
3473 | +/* stfi$pack $FRintk,@($GRi,$d12) */ | |
3474 | + { | |
3475 | + FRV_INSN_STFI, "stfi", "stfi", 32, | |
3476 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3477 | + }, | |
3478 | +/* stdi$pack $GRk,@($GRi,$d12) */ | |
3479 | + { | |
3480 | + FRV_INSN_STDI, "stdi", "stdi", 32, | |
3481 | + { 0, { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3482 | + }, | |
3483 | +/* stdfi$pack $FRk,@($GRi,$d12) */ | |
3484 | + { | |
3485 | + FRV_INSN_STDFI, "stdfi", "stdfi", 32, | |
3486 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_3, FR500_MAJOR_I_3 } } | |
3487 | + }, | |
3488 | +/* stqi$pack $GRk,@($GRi,$d12) */ | |
3489 | + { | |
3490 | + FRV_INSN_STQI, "stqi", "stqi", 32, | |
3491 | + { 0, { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3492 | + }, | |
3493 | +/* stqfi$pack $FRintk,@($GRi,$d12) */ | |
3494 | + { | |
3495 | + FRV_INSN_STQFI, "stqfi", "stqfi", 32, | |
3496 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_3 } } | |
3497 | + }, | |
3498 | +/* swap$pack @($GRi,$GRj),$GRk */ | |
3499 | + { | |
3500 | + FRV_INSN_SWAP, "swap", "swap", 32, | |
3501 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
3502 | + }, | |
3503 | +/* swapi$pack @($GRi,$d12),$GRk */ | |
3504 | + { | |
3505 | + FRV_INSN_SWAPI, "swapi", "swapi", 32, | |
3506 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
3507 | + }, | |
3508 | +/* cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */ | |
3509 | + { | |
3510 | + FRV_INSN_CSWAP, "cswap", "cswap", 32, | |
3511 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
3512 | + }, | |
3513 | +/* movgf$pack $GRj,$FRintk */ | |
3514 | + { | |
3515 | + FRV_INSN_MOVGF, "movgf", "movgf", 32, | |
3516 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3517 | + }, | |
3518 | +/* movfg$pack $FRintk,$GRj */ | |
3519 | + { | |
3520 | + FRV_INSN_MOVFG, "movfg", "movfg", 32, | |
3521 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3522 | + }, | |
3523 | +/* movgfd$pack $GRj,$FRintk */ | |
3524 | + { | |
3525 | + FRV_INSN_MOVGFD, "movgfd", "movgfd", 32, | |
3526 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3527 | + }, | |
3528 | +/* movfgd$pack $FRintk,$GRj */ | |
3529 | + { | |
3530 | + FRV_INSN_MOVFGD, "movfgd", "movfgd", 32, | |
3531 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3532 | + }, | |
3533 | +/* movgfq$pack $GRj,$FRintk */ | |
3534 | + { | |
3535 | + FRV_INSN_MOVGFQ, "movgfq", "movgfq", 32, | |
3536 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_4 } } | |
3537 | + }, | |
3538 | +/* movfgq$pack $FRintk,$GRj */ | |
3539 | + { | |
3540 | + FRV_INSN_MOVFGQ, "movfgq", "movfgq", 32, | |
3541 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV), UNIT_I0, FR400_MAJOR_NONE, FR500_MAJOR_I_4 } } | |
3542 | + }, | |
3543 | +/* cmovgf$pack $GRj,$FRintk,$CCi,$cond */ | |
3544 | + { | |
3545 | + FRV_INSN_CMOVGF, "cmovgf", "cmovgf", 32, | |
3546 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3547 | + }, | |
3548 | +/* cmovfg$pack $FRintk,$GRj,$CCi,$cond */ | |
3549 | + { | |
3550 | + FRV_INSN_CMOVFG, "cmovfg", "cmovfg", 32, | |
3551 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3552 | + }, | |
3553 | +/* cmovgfd$pack $GRj,$FRintk,$CCi,$cond */ | |
3554 | + { | |
3555 | + FRV_INSN_CMOVGFD, "cmovgfd", "cmovgfd", 32, | |
3556 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3557 | + }, | |
3558 | +/* cmovfgd$pack $FRintk,$GRj,$CCi,$cond */ | |
3559 | + { | |
3560 | + FRV_INSN_CMOVFGD, "cmovfgd", "cmovfgd", 32, | |
3561 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_4, FR500_MAJOR_I_4 } } | |
3562 | + }, | |
3563 | +/* movgs$pack $GRj,$spr */ | |
3564 | + { | |
3565 | + FRV_INSN_MOVGS, "movgs", "movgs", 32, | |
3566 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
3567 | + }, | |
3568 | +/* movsg$pack $spr,$GRj */ | |
3569 | + { | |
3570 | + FRV_INSN_MOVSG, "movsg", "movsg", 32, | |
3571 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
3572 | + }, | |
3573 | +/* bra$pack $hint_taken$label16 */ | |
3574 | + { | |
3575 | + FRV_INSN_BRA, "bra", "bra", 32, | |
3576 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3577 | + }, | |
3578 | +/* bno$pack$hint_not_taken */ | |
3579 | + { | |
3580 | + FRV_INSN_BNO, "bno", "bno", 32, | |
3581 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3582 | + }, | |
3583 | +/* beq$pack $ICCi_2,$hint,$label16 */ | |
3584 | + { | |
3585 | + FRV_INSN_BEQ, "beq", "beq", 32, | |
3586 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3587 | + }, | |
3588 | +/* bne$pack $ICCi_2,$hint,$label16 */ | |
3589 | + { | |
3590 | + FRV_INSN_BNE, "bne", "bne", 32, | |
3591 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3592 | + }, | |
3593 | +/* ble$pack $ICCi_2,$hint,$label16 */ | |
3594 | + { | |
3595 | + FRV_INSN_BLE, "ble", "ble", 32, | |
3596 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3597 | + }, | |
3598 | +/* bgt$pack $ICCi_2,$hint,$label16 */ | |
3599 | + { | |
3600 | + FRV_INSN_BGT, "bgt", "bgt", 32, | |
3601 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3602 | + }, | |
3603 | +/* blt$pack $ICCi_2,$hint,$label16 */ | |
3604 | + { | |
3605 | + FRV_INSN_BLT, "blt", "blt", 32, | |
3606 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3607 | + }, | |
3608 | +/* bge$pack $ICCi_2,$hint,$label16 */ | |
3609 | + { | |
3610 | + FRV_INSN_BGE, "bge", "bge", 32, | |
3611 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3612 | + }, | |
3613 | +/* bls$pack $ICCi_2,$hint,$label16 */ | |
3614 | + { | |
3615 | + FRV_INSN_BLS, "bls", "bls", 32, | |
3616 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3617 | + }, | |
3618 | +/* bhi$pack $ICCi_2,$hint,$label16 */ | |
3619 | + { | |
3620 | + FRV_INSN_BHI, "bhi", "bhi", 32, | |
3621 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3622 | + }, | |
3623 | +/* bc$pack $ICCi_2,$hint,$label16 */ | |
3624 | + { | |
3625 | + FRV_INSN_BC, "bc", "bc", 32, | |
3626 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3627 | + }, | |
3628 | +/* bnc$pack $ICCi_2,$hint,$label16 */ | |
3629 | + { | |
3630 | + FRV_INSN_BNC, "bnc", "bnc", 32, | |
3631 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3632 | + }, | |
3633 | +/* bn$pack $ICCi_2,$hint,$label16 */ | |
3634 | + { | |
3635 | + FRV_INSN_BN, "bn", "bn", 32, | |
3636 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3637 | + }, | |
3638 | +/* bp$pack $ICCi_2,$hint,$label16 */ | |
3639 | + { | |
3640 | + FRV_INSN_BP, "bp", "bp", 32, | |
3641 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3642 | + }, | |
3643 | +/* bv$pack $ICCi_2,$hint,$label16 */ | |
3644 | + { | |
3645 | + FRV_INSN_BV, "bv", "bv", 32, | |
3646 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3647 | + }, | |
3648 | +/* bnv$pack $ICCi_2,$hint,$label16 */ | |
3649 | + { | |
3650 | + FRV_INSN_BNV, "bnv", "bnv", 32, | |
3651 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3652 | + }, | |
3653 | +/* fbra$pack $hint_taken$label16 */ | |
3654 | + { | |
3655 | + FRV_INSN_FBRA, "fbra", "fbra", 32, | |
3656 | + { 0|A(FR_ACCESS)|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3657 | + }, | |
3658 | +/* fbno$pack$hint_not_taken */ | |
3659 | + { | |
3660 | + FRV_INSN_FBNO, "fbno", "fbno", 32, | |
3661 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3662 | + }, | |
3663 | +/* fbne$pack $FCCi_2,$hint,$label16 */ | |
3664 | + { | |
3665 | + FRV_INSN_FBNE, "fbne", "fbne", 32, | |
3666 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3667 | + }, | |
3668 | +/* fbeq$pack $FCCi_2,$hint,$label16 */ | |
3669 | + { | |
3670 | + FRV_INSN_FBEQ, "fbeq", "fbeq", 32, | |
3671 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3672 | + }, | |
3673 | +/* fblg$pack $FCCi_2,$hint,$label16 */ | |
3674 | + { | |
3675 | + FRV_INSN_FBLG, "fblg", "fblg", 32, | |
3676 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3677 | + }, | |
3678 | +/* fbue$pack $FCCi_2,$hint,$label16 */ | |
3679 | + { | |
3680 | + FRV_INSN_FBUE, "fbue", "fbue", 32, | |
3681 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3682 | + }, | |
3683 | +/* fbul$pack $FCCi_2,$hint,$label16 */ | |
3684 | + { | |
3685 | + FRV_INSN_FBUL, "fbul", "fbul", 32, | |
3686 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3687 | + }, | |
3688 | +/* fbge$pack $FCCi_2,$hint,$label16 */ | |
3689 | + { | |
3690 | + FRV_INSN_FBGE, "fbge", "fbge", 32, | |
3691 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3692 | + }, | |
3693 | +/* fblt$pack $FCCi_2,$hint,$label16 */ | |
3694 | + { | |
3695 | + FRV_INSN_FBLT, "fblt", "fblt", 32, | |
3696 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3697 | + }, | |
3698 | +/* fbuge$pack $FCCi_2,$hint,$label16 */ | |
3699 | + { | |
3700 | + FRV_INSN_FBUGE, "fbuge", "fbuge", 32, | |
3701 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3702 | + }, | |
3703 | +/* fbug$pack $FCCi_2,$hint,$label16 */ | |
3704 | + { | |
3705 | + FRV_INSN_FBUG, "fbug", "fbug", 32, | |
3706 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3707 | + }, | |
3708 | +/* fble$pack $FCCi_2,$hint,$label16 */ | |
3709 | + { | |
3710 | + FRV_INSN_FBLE, "fble", "fble", 32, | |
3711 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3712 | + }, | |
3713 | +/* fbgt$pack $FCCi_2,$hint,$label16 */ | |
3714 | + { | |
3715 | + FRV_INSN_FBGT, "fbgt", "fbgt", 32, | |
3716 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3717 | + }, | |
3718 | +/* fbule$pack $FCCi_2,$hint,$label16 */ | |
3719 | + { | |
3720 | + FRV_INSN_FBULE, "fbule", "fbule", 32, | |
3721 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3722 | + }, | |
3723 | +/* fbu$pack $FCCi_2,$hint,$label16 */ | |
3724 | + { | |
3725 | + FRV_INSN_FBU, "fbu", "fbu", 32, | |
3726 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3727 | + }, | |
3728 | +/* fbo$pack $FCCi_2,$hint,$label16 */ | |
3729 | + { | |
3730 | + FRV_INSN_FBO, "fbo", "fbo", 32, | |
3731 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_1, FR500_MAJOR_B_1 } } | |
3732 | + }, | |
3733 | +/* bctrlr$pack $ccond,$hint */ | |
3734 | + { | |
3735 | + FRV_INSN_BCTRLR, "bctrlr", "bctrlr", 32, | |
3736 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3737 | + }, | |
3738 | +/* bralr$pack$hint_taken */ | |
3739 | + { | |
3740 | + FRV_INSN_BRALR, "bralr", "bralr", 32, | |
3741 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3742 | + }, | |
3743 | +/* bnolr$pack$hint_not_taken */ | |
3744 | + { | |
3745 | + FRV_INSN_BNOLR, "bnolr", "bnolr", 32, | |
3746 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3747 | + }, | |
3748 | +/* beqlr$pack $ICCi_2,$hint */ | |
3749 | + { | |
3750 | + FRV_INSN_BEQLR, "beqlr", "beqlr", 32, | |
3751 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3752 | + }, | |
3753 | +/* bnelr$pack $ICCi_2,$hint */ | |
3754 | + { | |
3755 | + FRV_INSN_BNELR, "bnelr", "bnelr", 32, | |
3756 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3757 | + }, | |
3758 | +/* blelr$pack $ICCi_2,$hint */ | |
3759 | + { | |
3760 | + FRV_INSN_BLELR, "blelr", "blelr", 32, | |
3761 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3762 | + }, | |
3763 | +/* bgtlr$pack $ICCi_2,$hint */ | |
3764 | + { | |
3765 | + FRV_INSN_BGTLR, "bgtlr", "bgtlr", 32, | |
3766 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3767 | + }, | |
3768 | +/* bltlr$pack $ICCi_2,$hint */ | |
3769 | + { | |
3770 | + FRV_INSN_BLTLR, "bltlr", "bltlr", 32, | |
3771 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3772 | + }, | |
3773 | +/* bgelr$pack $ICCi_2,$hint */ | |
3774 | + { | |
3775 | + FRV_INSN_BGELR, "bgelr", "bgelr", 32, | |
3776 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3777 | + }, | |
3778 | +/* blslr$pack $ICCi_2,$hint */ | |
3779 | + { | |
3780 | + FRV_INSN_BLSLR, "blslr", "blslr", 32, | |
3781 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3782 | + }, | |
3783 | +/* bhilr$pack $ICCi_2,$hint */ | |
3784 | + { | |
3785 | + FRV_INSN_BHILR, "bhilr", "bhilr", 32, | |
3786 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3787 | + }, | |
3788 | +/* bclr$pack $ICCi_2,$hint */ | |
3789 | + { | |
3790 | + FRV_INSN_BCLR, "bclr", "bclr", 32, | |
3791 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3792 | + }, | |
3793 | +/* bnclr$pack $ICCi_2,$hint */ | |
3794 | + { | |
3795 | + FRV_INSN_BNCLR, "bnclr", "bnclr", 32, | |
3796 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3797 | + }, | |
3798 | +/* bnlr$pack $ICCi_2,$hint */ | |
3799 | + { | |
3800 | + FRV_INSN_BNLR, "bnlr", "bnlr", 32, | |
3801 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3802 | + }, | |
3803 | +/* bplr$pack $ICCi_2,$hint */ | |
3804 | + { | |
3805 | + FRV_INSN_BPLR, "bplr", "bplr", 32, | |
3806 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3807 | + }, | |
3808 | +/* bvlr$pack $ICCi_2,$hint */ | |
3809 | + { | |
3810 | + FRV_INSN_BVLR, "bvlr", "bvlr", 32, | |
3811 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3812 | + }, | |
3813 | +/* bnvlr$pack $ICCi_2,$hint */ | |
3814 | + { | |
3815 | + FRV_INSN_BNVLR, "bnvlr", "bnvlr", 32, | |
3816 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3817 | + }, | |
3818 | +/* fbralr$pack$hint_taken */ | |
3819 | + { | |
3820 | + FRV_INSN_FBRALR, "fbralr", "fbralr", 32, | |
3821 | + { 0|A(FR_ACCESS)|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3822 | + }, | |
3823 | +/* fbnolr$pack$hint_not_taken */ | |
3824 | + { | |
3825 | + FRV_INSN_FBNOLR, "fbnolr", "fbnolr", 32, | |
3826 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3827 | + }, | |
3828 | +/* fbeqlr$pack $FCCi_2,$hint */ | |
3829 | + { | |
3830 | + FRV_INSN_FBEQLR, "fbeqlr", "fbeqlr", 32, | |
3831 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3832 | + }, | |
3833 | +/* fbnelr$pack $FCCi_2,$hint */ | |
3834 | + { | |
3835 | + FRV_INSN_FBNELR, "fbnelr", "fbnelr", 32, | |
3836 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3837 | + }, | |
3838 | +/* fblglr$pack $FCCi_2,$hint */ | |
3839 | + { | |
3840 | + FRV_INSN_FBLGLR, "fblglr", "fblglr", 32, | |
3841 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3842 | + }, | |
3843 | +/* fbuelr$pack $FCCi_2,$hint */ | |
3844 | + { | |
3845 | + FRV_INSN_FBUELR, "fbuelr", "fbuelr", 32, | |
3846 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3847 | + }, | |
3848 | +/* fbullr$pack $FCCi_2,$hint */ | |
3849 | + { | |
3850 | + FRV_INSN_FBULLR, "fbullr", "fbullr", 32, | |
3851 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3852 | + }, | |
3853 | +/* fbgelr$pack $FCCi_2,$hint */ | |
3854 | + { | |
3855 | + FRV_INSN_FBGELR, "fbgelr", "fbgelr", 32, | |
3856 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3857 | + }, | |
3858 | +/* fbltlr$pack $FCCi_2,$hint */ | |
3859 | + { | |
3860 | + FRV_INSN_FBLTLR, "fbltlr", "fbltlr", 32, | |
3861 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3862 | + }, | |
3863 | +/* fbugelr$pack $FCCi_2,$hint */ | |
3864 | + { | |
3865 | + FRV_INSN_FBUGELR, "fbugelr", "fbugelr", 32, | |
3866 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3867 | + }, | |
3868 | +/* fbuglr$pack $FCCi_2,$hint */ | |
3869 | + { | |
3870 | + FRV_INSN_FBUGLR, "fbuglr", "fbuglr", 32, | |
3871 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3872 | + }, | |
3873 | +/* fblelr$pack $FCCi_2,$hint */ | |
3874 | + { | |
3875 | + FRV_INSN_FBLELR, "fblelr", "fblelr", 32, | |
3876 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3877 | + }, | |
3878 | +/* fbgtlr$pack $FCCi_2,$hint */ | |
3879 | + { | |
3880 | + FRV_INSN_FBGTLR, "fbgtlr", "fbgtlr", 32, | |
3881 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3882 | + }, | |
3883 | +/* fbulelr$pack $FCCi_2,$hint */ | |
3884 | + { | |
3885 | + FRV_INSN_FBULELR, "fbulelr", "fbulelr", 32, | |
3886 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3887 | + }, | |
3888 | +/* fbulr$pack $FCCi_2,$hint */ | |
3889 | + { | |
3890 | + FRV_INSN_FBULR, "fbulr", "fbulr", 32, | |
3891 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3892 | + }, | |
3893 | +/* fbolr$pack $FCCi_2,$hint */ | |
3894 | + { | |
3895 | + FRV_INSN_FBOLR, "fbolr", "fbolr", 32, | |
3896 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_3, FR500_MAJOR_B_3 } } | |
3897 | + }, | |
3898 | +/* bcralr$pack $ccond$hint_taken */ | |
3899 | + { | |
3900 | + FRV_INSN_BCRALR, "bcralr", "bcralr", 32, | |
3901 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3902 | + }, | |
3903 | +/* bcnolr$pack$hint_not_taken */ | |
3904 | + { | |
3905 | + FRV_INSN_BCNOLR, "bcnolr", "bcnolr", 32, | |
3906 | + { 0, { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3907 | + }, | |
3908 | +/* bceqlr$pack $ICCi_2,$ccond,$hint */ | |
3909 | + { | |
3910 | + FRV_INSN_BCEQLR, "bceqlr", "bceqlr", 32, | |
3911 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3912 | + }, | |
3913 | +/* bcnelr$pack $ICCi_2,$ccond,$hint */ | |
3914 | + { | |
3915 | + FRV_INSN_BCNELR, "bcnelr", "bcnelr", 32, | |
3916 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3917 | + }, | |
3918 | +/* bclelr$pack $ICCi_2,$ccond,$hint */ | |
3919 | + { | |
3920 | + FRV_INSN_BCLELR, "bclelr", "bclelr", 32, | |
3921 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3922 | + }, | |
3923 | +/* bcgtlr$pack $ICCi_2,$ccond,$hint */ | |
3924 | + { | |
3925 | + FRV_INSN_BCGTLR, "bcgtlr", "bcgtlr", 32, | |
3926 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3927 | + }, | |
3928 | +/* bcltlr$pack $ICCi_2,$ccond,$hint */ | |
3929 | + { | |
3930 | + FRV_INSN_BCLTLR, "bcltlr", "bcltlr", 32, | |
3931 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3932 | + }, | |
3933 | +/* bcgelr$pack $ICCi_2,$ccond,$hint */ | |
3934 | + { | |
3935 | + FRV_INSN_BCGELR, "bcgelr", "bcgelr", 32, | |
3936 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3937 | + }, | |
3938 | +/* bclslr$pack $ICCi_2,$ccond,$hint */ | |
3939 | + { | |
3940 | + FRV_INSN_BCLSLR, "bclslr", "bclslr", 32, | |
3941 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3942 | + }, | |
3943 | +/* bchilr$pack $ICCi_2,$ccond,$hint */ | |
3944 | + { | |
3945 | + FRV_INSN_BCHILR, "bchilr", "bchilr", 32, | |
3946 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3947 | + }, | |
3948 | +/* bcclr$pack $ICCi_2,$ccond,$hint */ | |
3949 | + { | |
3950 | + FRV_INSN_BCCLR, "bcclr", "bcclr", 32, | |
3951 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3952 | + }, | |
3953 | +/* bcnclr$pack $ICCi_2,$ccond,$hint */ | |
3954 | + { | |
3955 | + FRV_INSN_BCNCLR, "bcnclr", "bcnclr", 32, | |
3956 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3957 | + }, | |
3958 | +/* bcnlr$pack $ICCi_2,$ccond,$hint */ | |
3959 | + { | |
3960 | + FRV_INSN_BCNLR, "bcnlr", "bcnlr", 32, | |
3961 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3962 | + }, | |
3963 | +/* bcplr$pack $ICCi_2,$ccond,$hint */ | |
3964 | + { | |
3965 | + FRV_INSN_BCPLR, "bcplr", "bcplr", 32, | |
3966 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3967 | + }, | |
3968 | +/* bcvlr$pack $ICCi_2,$ccond,$hint */ | |
3969 | + { | |
3970 | + FRV_INSN_BCVLR, "bcvlr", "bcvlr", 32, | |
3971 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3972 | + }, | |
3973 | +/* bcnvlr$pack $ICCi_2,$ccond,$hint */ | |
3974 | + { | |
3975 | + FRV_INSN_BCNVLR, "bcnvlr", "bcnvlr", 32, | |
3976 | + { 0|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3977 | + }, | |
3978 | +/* fcbralr$pack $ccond$hint_taken */ | |
3979 | + { | |
3980 | + FRV_INSN_FCBRALR, "fcbralr", "fcbralr", 32, | |
3981 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3982 | + }, | |
3983 | +/* fcbnolr$pack$hint_not_taken */ | |
3984 | + { | |
3985 | + FRV_INSN_FCBNOLR, "fcbnolr", "fcbnolr", 32, | |
3986 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3987 | + }, | |
3988 | +/* fcbeqlr$pack $FCCi_2,$ccond,$hint */ | |
3989 | + { | |
3990 | + FRV_INSN_FCBEQLR, "fcbeqlr", "fcbeqlr", 32, | |
3991 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3992 | + }, | |
3993 | +/* fcbnelr$pack $FCCi_2,$ccond,$hint */ | |
3994 | + { | |
3995 | + FRV_INSN_FCBNELR, "fcbnelr", "fcbnelr", 32, | |
3996 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
3997 | + }, | |
3998 | +/* fcblglr$pack $FCCi_2,$ccond,$hint */ | |
3999 | + { | |
4000 | + FRV_INSN_FCBLGLR, "fcblglr", "fcblglr", 32, | |
4001 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4002 | + }, | |
4003 | +/* fcbuelr$pack $FCCi_2,$ccond,$hint */ | |
4004 | + { | |
4005 | + FRV_INSN_FCBUELR, "fcbuelr", "fcbuelr", 32, | |
4006 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4007 | + }, | |
4008 | +/* fcbullr$pack $FCCi_2,$ccond,$hint */ | |
4009 | + { | |
4010 | + FRV_INSN_FCBULLR, "fcbullr", "fcbullr", 32, | |
4011 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4012 | + }, | |
4013 | +/* fcbgelr$pack $FCCi_2,$ccond,$hint */ | |
4014 | + { | |
4015 | + FRV_INSN_FCBGELR, "fcbgelr", "fcbgelr", 32, | |
4016 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4017 | + }, | |
4018 | +/* fcbltlr$pack $FCCi_2,$ccond,$hint */ | |
4019 | + { | |
4020 | + FRV_INSN_FCBLTLR, "fcbltlr", "fcbltlr", 32, | |
4021 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4022 | + }, | |
4023 | +/* fcbugelr$pack $FCCi_2,$ccond,$hint */ | |
4024 | + { | |
4025 | + FRV_INSN_FCBUGELR, "fcbugelr", "fcbugelr", 32, | |
4026 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4027 | + }, | |
4028 | +/* fcbuglr$pack $FCCi_2,$ccond,$hint */ | |
4029 | + { | |
4030 | + FRV_INSN_FCBUGLR, "fcbuglr", "fcbuglr", 32, | |
4031 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4032 | + }, | |
4033 | +/* fcblelr$pack $FCCi_2,$ccond,$hint */ | |
4034 | + { | |
4035 | + FRV_INSN_FCBLELR, "fcblelr", "fcblelr", 32, | |
4036 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4037 | + }, | |
4038 | +/* fcbgtlr$pack $FCCi_2,$ccond,$hint */ | |
4039 | + { | |
4040 | + FRV_INSN_FCBGTLR, "fcbgtlr", "fcbgtlr", 32, | |
4041 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4042 | + }, | |
4043 | +/* fcbulelr$pack $FCCi_2,$ccond,$hint */ | |
4044 | + { | |
4045 | + FRV_INSN_FCBULELR, "fcbulelr", "fcbulelr", 32, | |
4046 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4047 | + }, | |
4048 | +/* fcbulr$pack $FCCi_2,$ccond,$hint */ | |
4049 | + { | |
4050 | + FRV_INSN_FCBULR, "fcbulr", "fcbulr", 32, | |
4051 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4052 | + }, | |
4053 | +/* fcbolr$pack $FCCi_2,$ccond,$hint */ | |
4054 | + { | |
4055 | + FRV_INSN_FCBOLR, "fcbolr", "fcbolr", 32, | |
4056 | + { 0|A(FR_ACCESS)|A(COND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_2, FR500_MAJOR_B_2 } } | |
4057 | + }, | |
4058 | +/* jmpl$pack @($GRi,$GRj) */ | |
4059 | + { | |
4060 | + FRV_INSN_JMPL, "jmpl", "jmpl", 32, | |
4061 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4062 | + }, | |
4063 | +/* calll$pack @($GRi,$GRj) */ | |
4064 | + { | |
4065 | + FRV_INSN_CALLL, "calll", "calll", 32, | |
4066 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4067 | + }, | |
4068 | +/* jmpil$pack @($GRi,$s12) */ | |
4069 | + { | |
4070 | + FRV_INSN_JMPIL, "jmpil", "jmpil", 32, | |
4071 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4072 | + }, | |
4073 | +/* callil$pack @($GRi,$s12) */ | |
4074 | + { | |
4075 | + FRV_INSN_CALLIL, "callil", "callil", 32, | |
4076 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4077 | + }, | |
4078 | +/* call$pack $label24 */ | |
4079 | + { | |
4080 | + FRV_INSN_CALL, "call", "call", 32, | |
4081 | + { 0|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_B0, FR400_MAJOR_B_4, FR500_MAJOR_B_4 } } | |
4082 | + }, | |
4083 | +/* rett$pack $debug */ | |
4084 | + { | |
4085 | + FRV_INSN_RETT, "rett", "rett", 32, | |
4086 | + { 0|A(PRIVILEGED)|A(UNCOND_CTI), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4087 | + }, | |
4088 | +/* rei$pack $eir */ | |
4089 | + { | |
4090 | + FRV_INSN_REI, "rei", "rei", 32, | |
4091 | + { 0|A(PRIVILEGED), { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_1 } } | |
4092 | + }, | |
4093 | +/* tra$pack $GRi,$GRj */ | |
4094 | + { | |
4095 | + FRV_INSN_TRA, "tra", "tra", 32, | |
4096 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4097 | + }, | |
4098 | +/* tno$pack */ | |
4099 | + { | |
4100 | + FRV_INSN_TNO, "tno", "tno", 32, | |
4101 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4102 | + }, | |
4103 | +/* teq$pack $ICCi_2,$GRi,$GRj */ | |
4104 | + { | |
4105 | + FRV_INSN_TEQ, "teq", "teq", 32, | |
4106 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4107 | + }, | |
4108 | +/* tne$pack $ICCi_2,$GRi,$GRj */ | |
4109 | + { | |
4110 | + FRV_INSN_TNE, "tne", "tne", 32, | |
4111 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4112 | + }, | |
4113 | +/* tle$pack $ICCi_2,$GRi,$GRj */ | |
4114 | + { | |
4115 | + FRV_INSN_TLE, "tle", "tle", 32, | |
4116 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4117 | + }, | |
4118 | +/* tgt$pack $ICCi_2,$GRi,$GRj */ | |
4119 | + { | |
4120 | + FRV_INSN_TGT, "tgt", "tgt", 32, | |
4121 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4122 | + }, | |
4123 | +/* tlt$pack $ICCi_2,$GRi,$GRj */ | |
4124 | + { | |
4125 | + FRV_INSN_TLT, "tlt", "tlt", 32, | |
4126 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4127 | + }, | |
4128 | +/* tge$pack $ICCi_2,$GRi,$GRj */ | |
4129 | + { | |
4130 | + FRV_INSN_TGE, "tge", "tge", 32, | |
4131 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4132 | + }, | |
4133 | +/* tls$pack $ICCi_2,$GRi,$GRj */ | |
4134 | + { | |
4135 | + FRV_INSN_TLS, "tls", "tls", 32, | |
4136 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4137 | + }, | |
4138 | +/* thi$pack $ICCi_2,$GRi,$GRj */ | |
4139 | + { | |
4140 | + FRV_INSN_THI, "thi", "thi", 32, | |
4141 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4142 | + }, | |
4143 | +/* tc$pack $ICCi_2,$GRi,$GRj */ | |
4144 | + { | |
4145 | + FRV_INSN_TC, "tc", "tc", 32, | |
4146 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4147 | + }, | |
4148 | +/* tnc$pack $ICCi_2,$GRi,$GRj */ | |
4149 | + { | |
4150 | + FRV_INSN_TNC, "tnc", "tnc", 32, | |
4151 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4152 | + }, | |
4153 | +/* tn$pack $ICCi_2,$GRi,$GRj */ | |
4154 | + { | |
4155 | + FRV_INSN_TN, "tn", "tn", 32, | |
4156 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4157 | + }, | |
4158 | +/* tp$pack $ICCi_2,$GRi,$GRj */ | |
4159 | + { | |
4160 | + FRV_INSN_TP, "tp", "tp", 32, | |
4161 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4162 | + }, | |
4163 | +/* tv$pack $ICCi_2,$GRi,$GRj */ | |
4164 | + { | |
4165 | + FRV_INSN_TV, "tv", "tv", 32, | |
4166 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4167 | + }, | |
4168 | +/* tnv$pack $ICCi_2,$GRi,$GRj */ | |
4169 | + { | |
4170 | + FRV_INSN_TNV, "tnv", "tnv", 32, | |
4171 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4172 | + }, | |
4173 | +/* ftra$pack $GRi,$GRj */ | |
4174 | + { | |
4175 | + FRV_INSN_FTRA, "ftra", "ftra", 32, | |
4176 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4177 | + }, | |
4178 | +/* ftno$pack */ | |
4179 | + { | |
4180 | + FRV_INSN_FTNO, "ftno", "ftno", 32, | |
4181 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4182 | + }, | |
4183 | +/* ftne$pack $FCCi_2,$GRi,$GRj */ | |
4184 | + { | |
4185 | + FRV_INSN_FTNE, "ftne", "ftne", 32, | |
4186 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4187 | + }, | |
4188 | +/* fteq$pack $FCCi_2,$GRi,$GRj */ | |
4189 | + { | |
4190 | + FRV_INSN_FTEQ, "fteq", "fteq", 32, | |
4191 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4192 | + }, | |
4193 | +/* ftlg$pack $FCCi_2,$GRi,$GRj */ | |
4194 | + { | |
4195 | + FRV_INSN_FTLG, "ftlg", "ftlg", 32, | |
4196 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4197 | + }, | |
4198 | +/* ftue$pack $FCCi_2,$GRi,$GRj */ | |
4199 | + { | |
4200 | + FRV_INSN_FTUE, "ftue", "ftue", 32, | |
4201 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4202 | + }, | |
4203 | +/* ftul$pack $FCCi_2,$GRi,$GRj */ | |
4204 | + { | |
4205 | + FRV_INSN_FTUL, "ftul", "ftul", 32, | |
4206 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4207 | + }, | |
4208 | +/* ftge$pack $FCCi_2,$GRi,$GRj */ | |
4209 | + { | |
4210 | + FRV_INSN_FTGE, "ftge", "ftge", 32, | |
4211 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4212 | + }, | |
4213 | +/* ftlt$pack $FCCi_2,$GRi,$GRj */ | |
4214 | + { | |
4215 | + FRV_INSN_FTLT, "ftlt", "ftlt", 32, | |
4216 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4217 | + }, | |
4218 | +/* ftuge$pack $FCCi_2,$GRi,$GRj */ | |
4219 | + { | |
4220 | + FRV_INSN_FTUGE, "ftuge", "ftuge", 32, | |
4221 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4222 | + }, | |
4223 | +/* ftug$pack $FCCi_2,$GRi,$GRj */ | |
4224 | + { | |
4225 | + FRV_INSN_FTUG, "ftug", "ftug", 32, | |
4226 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4227 | + }, | |
4228 | +/* ftle$pack $FCCi_2,$GRi,$GRj */ | |
4229 | + { | |
4230 | + FRV_INSN_FTLE, "ftle", "ftle", 32, | |
4231 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4232 | + }, | |
4233 | +/* ftgt$pack $FCCi_2,$GRi,$GRj */ | |
4234 | + { | |
4235 | + FRV_INSN_FTGT, "ftgt", "ftgt", 32, | |
4236 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4237 | + }, | |
4238 | +/* ftule$pack $FCCi_2,$GRi,$GRj */ | |
4239 | + { | |
4240 | + FRV_INSN_FTULE, "ftule", "ftule", 32, | |
4241 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4242 | + }, | |
4243 | +/* ftu$pack $FCCi_2,$GRi,$GRj */ | |
4244 | + { | |
4245 | + FRV_INSN_FTU, "ftu", "ftu", 32, | |
4246 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4247 | + }, | |
4248 | +/* fto$pack $FCCi_2,$GRi,$GRj */ | |
4249 | + { | |
4250 | + FRV_INSN_FTO, "fto", "fto", 32, | |
4251 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4252 | + }, | |
4253 | +/* tira$pack $GRi,$s12 */ | |
4254 | + { | |
4255 | + FRV_INSN_TIRA, "tira", "tira", 32, | |
4256 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4257 | + }, | |
4258 | +/* tino$pack */ | |
4259 | + { | |
4260 | + FRV_INSN_TINO, "tino", "tino", 32, | |
4261 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4262 | + }, | |
4263 | +/* tieq$pack $ICCi_2,$GRi,$s12 */ | |
4264 | + { | |
4265 | + FRV_INSN_TIEQ, "tieq", "tieq", 32, | |
4266 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4267 | + }, | |
4268 | +/* tine$pack $ICCi_2,$GRi,$s12 */ | |
4269 | + { | |
4270 | + FRV_INSN_TINE, "tine", "tine", 32, | |
4271 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4272 | + }, | |
4273 | +/* tile$pack $ICCi_2,$GRi,$s12 */ | |
4274 | + { | |
4275 | + FRV_INSN_TILE, "tile", "tile", 32, | |
4276 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4277 | + }, | |
4278 | +/* tigt$pack $ICCi_2,$GRi,$s12 */ | |
4279 | + { | |
4280 | + FRV_INSN_TIGT, "tigt", "tigt", 32, | |
4281 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4282 | + }, | |
4283 | +/* tilt$pack $ICCi_2,$GRi,$s12 */ | |
4284 | + { | |
4285 | + FRV_INSN_TILT, "tilt", "tilt", 32, | |
4286 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4287 | + }, | |
4288 | +/* tige$pack $ICCi_2,$GRi,$s12 */ | |
4289 | + { | |
4290 | + FRV_INSN_TIGE, "tige", "tige", 32, | |
4291 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4292 | + }, | |
4293 | +/* tils$pack $ICCi_2,$GRi,$s12 */ | |
4294 | + { | |
4295 | + FRV_INSN_TILS, "tils", "tils", 32, | |
4296 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4297 | + }, | |
4298 | +/* tihi$pack $ICCi_2,$GRi,$s12 */ | |
4299 | + { | |
4300 | + FRV_INSN_TIHI, "tihi", "tihi", 32, | |
4301 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4302 | + }, | |
4303 | +/* tic$pack $ICCi_2,$GRi,$s12 */ | |
4304 | + { | |
4305 | + FRV_INSN_TIC, "tic", "tic", 32, | |
4306 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4307 | + }, | |
4308 | +/* tinc$pack $ICCi_2,$GRi,$s12 */ | |
4309 | + { | |
4310 | + FRV_INSN_TINC, "tinc", "tinc", 32, | |
4311 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4312 | + }, | |
4313 | +/* tin$pack $ICCi_2,$GRi,$s12 */ | |
4314 | + { | |
4315 | + FRV_INSN_TIN, "tin", "tin", 32, | |
4316 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4317 | + }, | |
4318 | +/* tip$pack $ICCi_2,$GRi,$s12 */ | |
4319 | + { | |
4320 | + FRV_INSN_TIP, "tip", "tip", 32, | |
4321 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4322 | + }, | |
4323 | +/* tiv$pack $ICCi_2,$GRi,$s12 */ | |
4324 | + { | |
4325 | + FRV_INSN_TIV, "tiv", "tiv", 32, | |
4326 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4327 | + }, | |
4328 | +/* tinv$pack $ICCi_2,$GRi,$s12 */ | |
4329 | + { | |
4330 | + FRV_INSN_TINV, "tinv", "tinv", 32, | |
4331 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4332 | + }, | |
4333 | +/* ftira$pack $GRi,$s12 */ | |
4334 | + { | |
4335 | + FRV_INSN_FTIRA, "ftira", "ftira", 32, | |
4336 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4337 | + }, | |
4338 | +/* ftino$pack */ | |
4339 | + { | |
4340 | + FRV_INSN_FTINO, "ftino", "ftino", 32, | |
4341 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4342 | + }, | |
4343 | +/* ftine$pack $FCCi_2,$GRi,$s12 */ | |
4344 | + { | |
4345 | + FRV_INSN_FTINE, "ftine", "ftine", 32, | |
4346 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4347 | + }, | |
4348 | +/* ftieq$pack $FCCi_2,$GRi,$s12 */ | |
4349 | + { | |
4350 | + FRV_INSN_FTIEQ, "ftieq", "ftieq", 32, | |
4351 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4352 | + }, | |
4353 | +/* ftilg$pack $FCCi_2,$GRi,$s12 */ | |
4354 | + { | |
4355 | + FRV_INSN_FTILG, "ftilg", "ftilg", 32, | |
4356 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4357 | + }, | |
4358 | +/* ftiue$pack $FCCi_2,$GRi,$s12 */ | |
4359 | + { | |
4360 | + FRV_INSN_FTIUE, "ftiue", "ftiue", 32, | |
4361 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4362 | + }, | |
4363 | +/* ftiul$pack $FCCi_2,$GRi,$s12 */ | |
4364 | + { | |
4365 | + FRV_INSN_FTIUL, "ftiul", "ftiul", 32, | |
4366 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4367 | + }, | |
4368 | +/* ftige$pack $FCCi_2,$GRi,$s12 */ | |
4369 | + { | |
4370 | + FRV_INSN_FTIGE, "ftige", "ftige", 32, | |
4371 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4372 | + }, | |
4373 | +/* ftilt$pack $FCCi_2,$GRi,$s12 */ | |
4374 | + { | |
4375 | + FRV_INSN_FTILT, "ftilt", "ftilt", 32, | |
4376 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4377 | + }, | |
4378 | +/* ftiuge$pack $FCCi_2,$GRi,$s12 */ | |
4379 | + { | |
4380 | + FRV_INSN_FTIUGE, "ftiuge", "ftiuge", 32, | |
4381 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4382 | + }, | |
4383 | +/* ftiug$pack $FCCi_2,$GRi,$s12 */ | |
4384 | + { | |
4385 | + FRV_INSN_FTIUG, "ftiug", "ftiug", 32, | |
4386 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4387 | + }, | |
4388 | +/* ftile$pack $FCCi_2,$GRi,$s12 */ | |
4389 | + { | |
4390 | + FRV_INSN_FTILE, "ftile", "ftile", 32, | |
4391 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4392 | + }, | |
4393 | +/* ftigt$pack $FCCi_2,$GRi,$s12 */ | |
4394 | + { | |
4395 | + FRV_INSN_FTIGT, "ftigt", "ftigt", 32, | |
4396 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4397 | + }, | |
4398 | +/* ftiule$pack $FCCi_2,$GRi,$s12 */ | |
4399 | + { | |
4400 | + FRV_INSN_FTIULE, "ftiule", "ftiule", 32, | |
4401 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4402 | + }, | |
4403 | +/* ftiu$pack $FCCi_2,$GRi,$s12 */ | |
4404 | + { | |
4405 | + FRV_INSN_FTIU, "ftiu", "ftiu", 32, | |
4406 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4407 | + }, | |
4408 | +/* ftio$pack $FCCi_2,$GRi,$s12 */ | |
4409 | + { | |
4410 | + FRV_INSN_FTIO, "ftio", "ftio", 32, | |
4411 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4412 | + }, | |
4413 | +/* break$pack */ | |
4414 | + { | |
4415 | + FRV_INSN_BREAK, "break", "break", 32, | |
4416 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4417 | + }, | |
4418 | +/* mtrap$pack */ | |
4419 | + { | |
4420 | + FRV_INSN_MTRAP, "mtrap", "mtrap", 32, | |
4421 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_1, FR500_MAJOR_C_1 } } | |
4422 | + }, | |
4423 | +/* andcr$pack $CRi,$CRj,$CRk */ | |
4424 | + { | |
4425 | + FRV_INSN_ANDCR, "andcr", "andcr", 32, | |
4426 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4427 | + }, | |
4428 | +/* orcr$pack $CRi,$CRj,$CRk */ | |
4429 | + { | |
4430 | + FRV_INSN_ORCR, "orcr", "orcr", 32, | |
4431 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4432 | + }, | |
4433 | +/* xorcr$pack $CRi,$CRj,$CRk */ | |
4434 | + { | |
4435 | + FRV_INSN_XORCR, "xorcr", "xorcr", 32, | |
4436 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4437 | + }, | |
4438 | +/* nandcr$pack $CRi,$CRj,$CRk */ | |
4439 | + { | |
4440 | + FRV_INSN_NANDCR, "nandcr", "nandcr", 32, | |
4441 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4442 | + }, | |
4443 | +/* norcr$pack $CRi,$CRj,$CRk */ | |
4444 | + { | |
4445 | + FRV_INSN_NORCR, "norcr", "norcr", 32, | |
4446 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4447 | + }, | |
4448 | +/* andncr$pack $CRi,$CRj,$CRk */ | |
4449 | + { | |
4450 | + FRV_INSN_ANDNCR, "andncr", "andncr", 32, | |
4451 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4452 | + }, | |
4453 | +/* orncr$pack $CRi,$CRj,$CRk */ | |
4454 | + { | |
4455 | + FRV_INSN_ORNCR, "orncr", "orncr", 32, | |
4456 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4457 | + }, | |
4458 | +/* nandncr$pack $CRi,$CRj,$CRk */ | |
4459 | + { | |
4460 | + FRV_INSN_NANDNCR, "nandncr", "nandncr", 32, | |
4461 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4462 | + }, | |
4463 | +/* norncr$pack $CRi,$CRj,$CRk */ | |
4464 | + { | |
4465 | + FRV_INSN_NORNCR, "norncr", "norncr", 32, | |
4466 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4467 | + }, | |
4468 | +/* notcr$pack $CRj,$CRk */ | |
4469 | + { | |
4470 | + FRV_INSN_NOTCR, "notcr", "notcr", 32, | |
4471 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_6, FR500_MAJOR_B_6 } } | |
4472 | + }, | |
4473 | +/* ckra$pack $CRj_int */ | |
4474 | + { | |
4475 | + FRV_INSN_CKRA, "ckra", "ckra", 32, | |
4476 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4477 | + }, | |
4478 | +/* ckno$pack $CRj_int */ | |
4479 | + { | |
4480 | + FRV_INSN_CKNO, "ckno", "ckno", 32, | |
4481 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4482 | + }, | |
4483 | +/* ckeq$pack $ICCi_3,$CRj_int */ | |
4484 | + { | |
4485 | + FRV_INSN_CKEQ, "ckeq", "ckeq", 32, | |
4486 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4487 | + }, | |
4488 | +/* ckne$pack $ICCi_3,$CRj_int */ | |
4489 | + { | |
4490 | + FRV_INSN_CKNE, "ckne", "ckne", 32, | |
4491 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4492 | + }, | |
4493 | +/* ckle$pack $ICCi_3,$CRj_int */ | |
4494 | + { | |
4495 | + FRV_INSN_CKLE, "ckle", "ckle", 32, | |
4496 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4497 | + }, | |
4498 | +/* ckgt$pack $ICCi_3,$CRj_int */ | |
4499 | + { | |
4500 | + FRV_INSN_CKGT, "ckgt", "ckgt", 32, | |
4501 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4502 | + }, | |
4503 | +/* cklt$pack $ICCi_3,$CRj_int */ | |
4504 | + { | |
4505 | + FRV_INSN_CKLT, "cklt", "cklt", 32, | |
4506 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4507 | + }, | |
4508 | +/* ckge$pack $ICCi_3,$CRj_int */ | |
4509 | + { | |
4510 | + FRV_INSN_CKGE, "ckge", "ckge", 32, | |
4511 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4512 | + }, | |
4513 | +/* ckls$pack $ICCi_3,$CRj_int */ | |
4514 | + { | |
4515 | + FRV_INSN_CKLS, "ckls", "ckls", 32, | |
4516 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4517 | + }, | |
4518 | +/* ckhi$pack $ICCi_3,$CRj_int */ | |
4519 | + { | |
4520 | + FRV_INSN_CKHI, "ckhi", "ckhi", 32, | |
4521 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4522 | + }, | |
4523 | +/* ckc$pack $ICCi_3,$CRj_int */ | |
4524 | + { | |
4525 | + FRV_INSN_CKC, "ckc", "ckc", 32, | |
4526 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4527 | + }, | |
4528 | +/* cknc$pack $ICCi_3,$CRj_int */ | |
4529 | + { | |
4530 | + FRV_INSN_CKNC, "cknc", "cknc", 32, | |
4531 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4532 | + }, | |
4533 | +/* ckn$pack $ICCi_3,$CRj_int */ | |
4534 | + { | |
4535 | + FRV_INSN_CKN, "ckn", "ckn", 32, | |
4536 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4537 | + }, | |
4538 | +/* ckp$pack $ICCi_3,$CRj_int */ | |
4539 | + { | |
4540 | + FRV_INSN_CKP, "ckp", "ckp", 32, | |
4541 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4542 | + }, | |
4543 | +/* ckv$pack $ICCi_3,$CRj_int */ | |
4544 | + { | |
4545 | + FRV_INSN_CKV, "ckv", "ckv", 32, | |
4546 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4547 | + }, | |
4548 | +/* cknv$pack $ICCi_3,$CRj_int */ | |
4549 | + { | |
4550 | + FRV_INSN_CKNV, "cknv", "cknv", 32, | |
4551 | + { 0, { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4552 | + }, | |
4553 | +/* fckra$pack $CRj_float */ | |
4554 | + { | |
4555 | + FRV_INSN_FCKRA, "fckra", "fckra", 32, | |
4556 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4557 | + }, | |
4558 | +/* fckno$pack $CRj_float */ | |
4559 | + { | |
4560 | + FRV_INSN_FCKNO, "fckno", "fckno", 32, | |
4561 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4562 | + }, | |
4563 | +/* fckne$pack $FCCi_3,$CRj_float */ | |
4564 | + { | |
4565 | + FRV_INSN_FCKNE, "fckne", "fckne", 32, | |
4566 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4567 | + }, | |
4568 | +/* fckeq$pack $FCCi_3,$CRj_float */ | |
4569 | + { | |
4570 | + FRV_INSN_FCKEQ, "fckeq", "fckeq", 32, | |
4571 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4572 | + }, | |
4573 | +/* fcklg$pack $FCCi_3,$CRj_float */ | |
4574 | + { | |
4575 | + FRV_INSN_FCKLG, "fcklg", "fcklg", 32, | |
4576 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4577 | + }, | |
4578 | +/* fckue$pack $FCCi_3,$CRj_float */ | |
4579 | + { | |
4580 | + FRV_INSN_FCKUE, "fckue", "fckue", 32, | |
4581 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4582 | + }, | |
4583 | +/* fckul$pack $FCCi_3,$CRj_float */ | |
4584 | + { | |
4585 | + FRV_INSN_FCKUL, "fckul", "fckul", 32, | |
4586 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4587 | + }, | |
4588 | +/* fckge$pack $FCCi_3,$CRj_float */ | |
4589 | + { | |
4590 | + FRV_INSN_FCKGE, "fckge", "fckge", 32, | |
4591 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4592 | + }, | |
4593 | +/* fcklt$pack $FCCi_3,$CRj_float */ | |
4594 | + { | |
4595 | + FRV_INSN_FCKLT, "fcklt", "fcklt", 32, | |
4596 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4597 | + }, | |
4598 | +/* fckuge$pack $FCCi_3,$CRj_float */ | |
4599 | + { | |
4600 | + FRV_INSN_FCKUGE, "fckuge", "fckuge", 32, | |
4601 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4602 | + }, | |
4603 | +/* fckug$pack $FCCi_3,$CRj_float */ | |
4604 | + { | |
4605 | + FRV_INSN_FCKUG, "fckug", "fckug", 32, | |
4606 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4607 | + }, | |
4608 | +/* fckle$pack $FCCi_3,$CRj_float */ | |
4609 | + { | |
4610 | + FRV_INSN_FCKLE, "fckle", "fckle", 32, | |
4611 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4612 | + }, | |
4613 | +/* fckgt$pack $FCCi_3,$CRj_float */ | |
4614 | + { | |
4615 | + FRV_INSN_FCKGT, "fckgt", "fckgt", 32, | |
4616 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4617 | + }, | |
4618 | +/* fckule$pack $FCCi_3,$CRj_float */ | |
4619 | + { | |
4620 | + FRV_INSN_FCKULE, "fckule", "fckule", 32, | |
4621 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4622 | + }, | |
4623 | +/* fcku$pack $FCCi_3,$CRj_float */ | |
4624 | + { | |
4625 | + FRV_INSN_FCKU, "fcku", "fcku", 32, | |
4626 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4627 | + }, | |
4628 | +/* fcko$pack $FCCi_3,$CRj_float */ | |
4629 | + { | |
4630 | + FRV_INSN_FCKO, "fcko", "fcko", 32, | |
4631 | + { 0|A(FR_ACCESS), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4632 | + }, | |
4633 | +/* cckra$pack $CRj_int,$CCi,$cond */ | |
4634 | + { | |
4635 | + FRV_INSN_CCKRA, "cckra", "cckra", 32, | |
4636 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4637 | + }, | |
4638 | +/* cckno$pack $CRj_int,$CCi,$cond */ | |
4639 | + { | |
4640 | + FRV_INSN_CCKNO, "cckno", "cckno", 32, | |
4641 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4642 | + }, | |
4643 | +/* cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4644 | + { | |
4645 | + FRV_INSN_CCKEQ, "cckeq", "cckeq", 32, | |
4646 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4647 | + }, | |
4648 | +/* cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4649 | + { | |
4650 | + FRV_INSN_CCKNE, "cckne", "cckne", 32, | |
4651 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4652 | + }, | |
4653 | +/* cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4654 | + { | |
4655 | + FRV_INSN_CCKLE, "cckle", "cckle", 32, | |
4656 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4657 | + }, | |
4658 | +/* cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4659 | + { | |
4660 | + FRV_INSN_CCKGT, "cckgt", "cckgt", 32, | |
4661 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4662 | + }, | |
4663 | +/* ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4664 | + { | |
4665 | + FRV_INSN_CCKLT, "ccklt", "ccklt", 32, | |
4666 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4667 | + }, | |
4668 | +/* cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4669 | + { | |
4670 | + FRV_INSN_CCKGE, "cckge", "cckge", 32, | |
4671 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4672 | + }, | |
4673 | +/* cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4674 | + { | |
4675 | + FRV_INSN_CCKLS, "cckls", "cckls", 32, | |
4676 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4677 | + }, | |
4678 | +/* cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4679 | + { | |
4680 | + FRV_INSN_CCKHI, "cckhi", "cckhi", 32, | |
4681 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4682 | + }, | |
4683 | +/* cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4684 | + { | |
4685 | + FRV_INSN_CCKC, "cckc", "cckc", 32, | |
4686 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4687 | + }, | |
4688 | +/* ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4689 | + { | |
4690 | + FRV_INSN_CCKNC, "ccknc", "ccknc", 32, | |
4691 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4692 | + }, | |
4693 | +/* cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4694 | + { | |
4695 | + FRV_INSN_CCKN, "cckn", "cckn", 32, | |
4696 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4697 | + }, | |
4698 | +/* cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4699 | + { | |
4700 | + FRV_INSN_CCKP, "cckp", "cckp", 32, | |
4701 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4702 | + }, | |
4703 | +/* cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4704 | + { | |
4705 | + FRV_INSN_CCKV, "cckv", "cckv", 32, | |
4706 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4707 | + }, | |
4708 | +/* ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */ | |
4709 | + { | |
4710 | + FRV_INSN_CCKNV, "ccknv", "ccknv", 32, | |
4711 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4712 | + }, | |
4713 | +/* cfckra$pack $CRj_float,$CCi,$cond */ | |
4714 | + { | |
4715 | + FRV_INSN_CFCKRA, "cfckra", "cfckra", 32, | |
4716 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4717 | + }, | |
4718 | +/* cfckno$pack $CRj_float,$CCi,$cond */ | |
4719 | + { | |
4720 | + FRV_INSN_CFCKNO, "cfckno", "cfckno", 32, | |
4721 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4722 | + }, | |
4723 | +/* cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4724 | + { | |
4725 | + FRV_INSN_CFCKNE, "cfckne", "cfckne", 32, | |
4726 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4727 | + }, | |
4728 | +/* cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4729 | + { | |
4730 | + FRV_INSN_CFCKEQ, "cfckeq", "cfckeq", 32, | |
4731 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4732 | + }, | |
4733 | +/* cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4734 | + { | |
4735 | + FRV_INSN_CFCKLG, "cfcklg", "cfcklg", 32, | |
4736 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4737 | + }, | |
4738 | +/* cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4739 | + { | |
4740 | + FRV_INSN_CFCKUE, "cfckue", "cfckue", 32, | |
4741 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4742 | + }, | |
4743 | +/* cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4744 | + { | |
4745 | + FRV_INSN_CFCKUL, "cfckul", "cfckul", 32, | |
4746 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4747 | + }, | |
4748 | +/* cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4749 | + { | |
4750 | + FRV_INSN_CFCKGE, "cfckge", "cfckge", 32, | |
4751 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4752 | + }, | |
4753 | +/* cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4754 | + { | |
4755 | + FRV_INSN_CFCKLT, "cfcklt", "cfcklt", 32, | |
4756 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4757 | + }, | |
4758 | +/* cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4759 | + { | |
4760 | + FRV_INSN_CFCKUGE, "cfckuge", "cfckuge", 32, | |
4761 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4762 | + }, | |
4763 | +/* cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4764 | + { | |
4765 | + FRV_INSN_CFCKUG, "cfckug", "cfckug", 32, | |
4766 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4767 | + }, | |
4768 | +/* cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4769 | + { | |
4770 | + FRV_INSN_CFCKLE, "cfckle", "cfckle", 32, | |
4771 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4772 | + }, | |
4773 | +/* cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4774 | + { | |
4775 | + FRV_INSN_CFCKGT, "cfckgt", "cfckgt", 32, | |
4776 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4777 | + }, | |
4778 | +/* cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4779 | + { | |
4780 | + FRV_INSN_CFCKULE, "cfckule", "cfckule", 32, | |
4781 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4782 | + }, | |
4783 | +/* cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4784 | + { | |
4785 | + FRV_INSN_CFCKU, "cfcku", "cfcku", 32, | |
4786 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4787 | + }, | |
4788 | +/* cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */ | |
4789 | + { | |
4790 | + FRV_INSN_CFCKO, "cfcko", "cfcko", 32, | |
4791 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_B01, FR400_MAJOR_B_5, FR500_MAJOR_B_5 } } | |
4792 | + }, | |
4793 | +/* cjmpl$pack @($GRi,$GRj),$CCi,$cond */ | |
4794 | + { | |
4795 | + FRV_INSN_CJMPL, "cjmpl", "cjmpl", 32, | |
4796 | + { 0|A(CONDITIONAL)|A(COND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4797 | + }, | |
4798 | +/* ccalll$pack @($GRi,$GRj),$CCi,$cond */ | |
4799 | + { | |
4800 | + FRV_INSN_CCALLL, "ccalll", "ccalll", 32, | |
4801 | + { 0|A(CONDITIONAL)|A(COND_CTI), { (1<<MACH_BASE), UNIT_I0, FR400_MAJOR_I_5, FR500_MAJOR_I_5 } } | |
4802 | + }, | |
4803 | +/* ici$pack @($GRi,$GRj) */ | |
4804 | + { | |
4805 | + FRV_INSN_ICI, "ici", "ici", 32, | |
4806 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4807 | + }, | |
4808 | +/* dci$pack @($GRi,$GRj) */ | |
4809 | + { | |
4810 | + FRV_INSN_DCI, "dci", "dci", 32, | |
4811 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4812 | + }, | |
4813 | +/* icei$pack @($GRi,$GRj),$ae */ | |
4814 | + { | |
4815 | + FRV_INSN_ICEI, "icei", "icei", 32, | |
4816 | + { 0, { (1<<MACH_FR400), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_NONE } } | |
4817 | + }, | |
4818 | +/* dcei$pack @($GRi,$GRj),$ae */ | |
4819 | + { | |
4820 | + FRV_INSN_DCEI, "dcei", "dcei", 32, | |
4821 | + { 0, { (1<<MACH_FR400), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_NONE } } | |
4822 | + }, | |
4823 | +/* dcf$pack @($GRi,$GRj) */ | |
4824 | + { | |
4825 | + FRV_INSN_DCF, "dcf", "dcf", 32, | |
4826 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4827 | + }, | |
4828 | +/* dcef$pack @($GRi,$GRj),$ae */ | |
4829 | + { | |
4830 | + FRV_INSN_DCEF, "dcef", "dcef", 32, | |
4831 | + { 0, { (1<<MACH_FR400), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_NONE } } | |
4832 | + }, | |
4833 | +/* witlb$pack $GRk,@($GRi,$GRj) */ | |
4834 | + { | |
4835 | + FRV_INSN_WITLB, "witlb", "witlb", 32, | |
4836 | + { 0|A(PRIVILEGED), { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4837 | + }, | |
4838 | +/* wdtlb$pack $GRk,@($GRi,$GRj) */ | |
4839 | + { | |
4840 | + FRV_INSN_WDTLB, "wdtlb", "wdtlb", 32, | |
4841 | + { 0|A(PRIVILEGED), { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4842 | + }, | |
4843 | +/* itlbi$pack @($GRi,$GRj) */ | |
4844 | + { | |
4845 | + FRV_INSN_ITLBI, "itlbi", "itlbi", 32, | |
4846 | + { 0|A(PRIVILEGED), { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4847 | + }, | |
4848 | +/* dtlbi$pack @($GRi,$GRj) */ | |
4849 | + { | |
4850 | + FRV_INSN_DTLBI, "dtlbi", "dtlbi", 32, | |
4851 | + { 0|A(PRIVILEGED), { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4852 | + }, | |
4853 | +/* icpl$pack $GRi,$GRj,$lock */ | |
4854 | + { | |
4855 | + FRV_INSN_ICPL, "icpl", "icpl", 32, | |
4856 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4857 | + }, | |
4858 | +/* dcpl$pack $GRi,$GRj,$lock */ | |
4859 | + { | |
4860 | + FRV_INSN_DCPL, "dcpl", "dcpl", 32, | |
4861 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4862 | + }, | |
4863 | +/* icul$pack $GRi */ | |
4864 | + { | |
4865 | + FRV_INSN_ICUL, "icul", "icul", 32, | |
4866 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4867 | + }, | |
4868 | +/* dcul$pack $GRi */ | |
4869 | + { | |
4870 | + FRV_INSN_DCUL, "dcul", "dcul", 32, | |
4871 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4872 | + }, | |
4873 | +/* bar$pack */ | |
4874 | + { | |
4875 | + FRV_INSN_BAR, "bar", "bar", 32, | |
4876 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4877 | + }, | |
4878 | +/* membar$pack */ | |
4879 | + { | |
4880 | + FRV_INSN_MEMBAR, "membar", "membar", 32, | |
4881 | + { 0, { (1<<MACH_BASE), UNIT_C, FR400_MAJOR_C_2, FR500_MAJOR_C_2 } } | |
4882 | + }, | |
4883 | +/* cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */ | |
4884 | + { | |
4885 | + FRV_INSN_COP1, "cop1", "cop1", 32, | |
4886 | + { 0, { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4887 | + }, | |
4888 | +/* cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */ | |
4889 | + { | |
4890 | + FRV_INSN_COP2, "cop2", "cop2", 32, | |
4891 | + { 0, { (1<<MACH_FRV), UNIT_C, FR400_MAJOR_NONE, FR500_MAJOR_C_2 } } | |
4892 | + }, | |
4893 | +/* clrgr$pack $GRk */ | |
4894 | + { | |
4895 | + FRV_INSN_CLRGR, "clrgr", "clrgr", 32, | |
4896 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4897 | + }, | |
4898 | +/* clrfr$pack $FRk */ | |
4899 | + { | |
4900 | + FRV_INSN_CLRFR, "clrfr", "clrfr", 32, | |
4901 | + { 0|A(FR_ACCESS), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4902 | + }, | |
4903 | +/* clrga$pack */ | |
4904 | + { | |
4905 | + FRV_INSN_CLRGA, "clrga", "clrga", 32, | |
4906 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4907 | + }, | |
4908 | +/* clrfa$pack */ | |
4909 | + { | |
4910 | + FRV_INSN_CLRFA, "clrfa", "clrfa", 32, | |
4911 | + { 0|A(FR_ACCESS), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4912 | + }, | |
4913 | +/* commitgr$pack $GRk */ | |
4914 | + { | |
4915 | + FRV_INSN_COMMITGR, "commitgr", "commitgr", 32, | |
4916 | + { 0, { (1<<MACH_FRV)|(1<<MACH_FR500), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4917 | + }, | |
4918 | +/* commitfr$pack $FRk */ | |
4919 | + { | |
4920 | + FRV_INSN_COMMITFR, "commitfr", "commitfr", 32, | |
4921 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV)|(1<<MACH_FR500), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4922 | + }, | |
4923 | +/* commitga$pack */ | |
4924 | + { | |
4925 | + FRV_INSN_COMMITGA, "commitga", "commitga", 32, | |
4926 | + { 0, { (1<<MACH_FRV)|(1<<MACH_FR500), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4927 | + }, | |
4928 | +/* commitfa$pack */ | |
4929 | + { | |
4930 | + FRV_INSN_COMMITFA, "commitfa", "commitfa", 32, | |
4931 | + { 0|A(FR_ACCESS), { (1<<MACH_FRV)|(1<<MACH_FR500), UNIT_I01, FR400_MAJOR_NONE, FR500_MAJOR_I_6 } } | |
4932 | + }, | |
4933 | +/* fitos$pack $FRintj,$FRk */ | |
4934 | + { | |
4935 | + FRV_INSN_FITOS, "fitos", "fitos", 32, | |
4936 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4937 | + }, | |
4938 | +/* fstoi$pack $FRj,$FRintk */ | |
4939 | + { | |
4940 | + FRV_INSN_FSTOI, "fstoi", "fstoi", 32, | |
4941 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4942 | + }, | |
4943 | +/* fitod$pack $FRintj,$FRdoublek */ | |
4944 | + { | |
4945 | + FRV_INSN_FITOD, "fitod", "fitod", 32, | |
4946 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4947 | + }, | |
4948 | +/* fdtoi$pack $FRdoublej,$FRintk */ | |
4949 | + { | |
4950 | + FRV_INSN_FDTOI, "fdtoi", "fdtoi", 32, | |
4951 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4952 | + }, | |
4953 | +/* fditos$pack $FRintj,$FRk */ | |
4954 | + { | |
4955 | + FRV_INSN_FDITOS, "fditos", "fditos", 32, | |
4956 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4957 | + }, | |
4958 | +/* fdstoi$pack $FRj,$FRintk */ | |
4959 | + { | |
4960 | + FRV_INSN_FDSTOI, "fdstoi", "fdstoi", 32, | |
4961 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4962 | + }, | |
4963 | +/* nfditos$pack $FRintj,$FRk */ | |
4964 | + { | |
4965 | + FRV_INSN_NFDITOS, "nfditos", "nfditos", 32, | |
4966 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4967 | + }, | |
4968 | +/* nfdstoi$pack $FRj,$FRintk */ | |
4969 | + { | |
4970 | + FRV_INSN_NFDSTOI, "nfdstoi", "nfdstoi", 32, | |
4971 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4972 | + }, | |
4973 | +/* cfitos$pack $FRintj,$FRk,$CCi,$cond */ | |
4974 | + { | |
4975 | + FRV_INSN_CFITOS, "cfitos", "cfitos", 32, | |
4976 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4977 | + }, | |
4978 | +/* cfstoi$pack $FRj,$FRintk,$CCi,$cond */ | |
4979 | + { | |
4980 | + FRV_INSN_CFSTOI, "cfstoi", "cfstoi", 32, | |
4981 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4982 | + }, | |
4983 | +/* nfitos$pack $FRintj,$FRk */ | |
4984 | + { | |
4985 | + FRV_INSN_NFITOS, "nfitos", "nfitos", 32, | |
4986 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4987 | + }, | |
4988 | +/* nfstoi$pack $FRj,$FRintk */ | |
4989 | + { | |
4990 | + FRV_INSN_NFSTOI, "nfstoi", "nfstoi", 32, | |
4991 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4992 | + }, | |
4993 | +/* fmovs$pack $FRj,$FRk */ | |
4994 | + { | |
4995 | + FRV_INSN_FMOVS, "fmovs", "fmovs", 32, | |
4996 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
4997 | + }, | |
4998 | +/* fmovd$pack $FRdoublej,$FRdoublek */ | |
4999 | + { | |
5000 | + FRV_INSN_FMOVD, "fmovd", "fmovd", 32, | |
5001 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5002 | + }, | |
5003 | +/* fdmovs$pack $FRj,$FRk */ | |
5004 | + { | |
5005 | + FRV_INSN_FDMOVS, "fdmovs", "fdmovs", 32, | |
5006 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5007 | + }, | |
5008 | +/* cfmovs$pack $FRj,$FRk,$CCi,$cond */ | |
5009 | + { | |
5010 | + FRV_INSN_CFMOVS, "cfmovs", "cfmovs", 32, | |
5011 | + { 0|A(FR_ACCESS)|A(CONDITIONAL), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5012 | + }, | |
5013 | +/* fnegs$pack $FRj,$FRk */ | |
5014 | + { | |
5015 | + FRV_INSN_FNEGS, "fnegs", "fnegs", 32, | |
5016 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5017 | + }, | |
5018 | +/* fnegd$pack $FRdoublej,$FRdoublek */ | |
5019 | + { | |
5020 | + FRV_INSN_FNEGD, "fnegd", "fnegd", 32, | |
5021 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5022 | + }, | |
5023 | +/* fdnegs$pack $FRj,$FRk */ | |
5024 | + { | |
5025 | + FRV_INSN_FDNEGS, "fdnegs", "fdnegs", 32, | |
5026 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5027 | + }, | |
5028 | +/* cfnegs$pack $FRj,$FRk,$CCi,$cond */ | |
5029 | + { | |
5030 | + FRV_INSN_CFNEGS, "cfnegs", "cfnegs", 32, | |
5031 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5032 | + }, | |
5033 | +/* fabss$pack $FRj,$FRk */ | |
5034 | + { | |
5035 | + FRV_INSN_FABSS, "fabss", "fabss", 32, | |
5036 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5037 | + }, | |
5038 | +/* fabsd$pack $FRdoublej,$FRdoublek */ | |
5039 | + { | |
5040 | + FRV_INSN_FABSD, "fabsd", "fabsd", 32, | |
5041 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5042 | + }, | |
5043 | +/* fdabss$pack $FRj,$FRk */ | |
5044 | + { | |
5045 | + FRV_INSN_FDABSS, "fdabss", "fdabss", 32, | |
5046 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5047 | + }, | |
5048 | +/* cfabss$pack $FRj,$FRk,$CCi,$cond */ | |
5049 | + { | |
5050 | + FRV_INSN_CFABSS, "cfabss", "cfabss", 32, | |
5051 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_1 } } | |
5052 | + }, | |
5053 | +/* fsqrts$pack $FRj,$FRk */ | |
5054 | + { | |
5055 | + FRV_INSN_FSQRTS, "fsqrts", "fsqrts", 32, | |
5056 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5057 | + }, | |
5058 | +/* fdsqrts$pack $FRj,$FRk */ | |
5059 | + { | |
5060 | + FRV_INSN_FDSQRTS, "fdsqrts", "fdsqrts", 32, | |
5061 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5062 | + }, | |
5063 | +/* nfdsqrts$pack $FRj,$FRk */ | |
5064 | + { | |
5065 | + FRV_INSN_NFDSQRTS, "nfdsqrts", "nfdsqrts", 32, | |
5066 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5067 | + }, | |
5068 | +/* fsqrtd$pack $FRdoublej,$FRdoublek */ | |
5069 | + { | |
5070 | + FRV_INSN_FSQRTD, "fsqrtd", "fsqrtd", 32, | |
5071 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5072 | + }, | |
5073 | +/* cfsqrts$pack $FRj,$FRk,$CCi,$cond */ | |
5074 | + { | |
5075 | + FRV_INSN_CFSQRTS, "cfsqrts", "cfsqrts", 32, | |
5076 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5077 | + }, | |
5078 | +/* nfsqrts$pack $FRj,$FRk */ | |
5079 | + { | |
5080 | + FRV_INSN_NFSQRTS, "nfsqrts", "nfsqrts", 32, | |
5081 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5082 | + }, | |
5083 | +/* fadds$pack $FRi,$FRj,$FRk */ | |
5084 | + { | |
5085 | + FRV_INSN_FADDS, "fadds", "fadds", 32, | |
5086 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5087 | + }, | |
5088 | +/* fsubs$pack $FRi,$FRj,$FRk */ | |
5089 | + { | |
5090 | + FRV_INSN_FSUBS, "fsubs", "fsubs", 32, | |
5091 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5092 | + }, | |
5093 | +/* fmuls$pack $FRi,$FRj,$FRk */ | |
5094 | + { | |
5095 | + FRV_INSN_FMULS, "fmuls", "fmuls", 32, | |
5096 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_3 } } | |
5097 | + }, | |
5098 | +/* fdivs$pack $FRi,$FRj,$FRk */ | |
5099 | + { | |
5100 | + FRV_INSN_FDIVS, "fdivs", "fdivs", 32, | |
5101 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5102 | + }, | |
5103 | +/* faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5104 | + { | |
5105 | + FRV_INSN_FADDD, "faddd", "faddd", 32, | |
5106 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5107 | + }, | |
5108 | +/* fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5109 | + { | |
5110 | + FRV_INSN_FSUBD, "fsubd", "fsubd", 32, | |
5111 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5112 | + }, | |
5113 | +/* fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5114 | + { | |
5115 | + FRV_INSN_FMULD, "fmuld", "fmuld", 32, | |
5116 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_3 } } | |
5117 | + }, | |
5118 | +/* fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5119 | + { | |
5120 | + FRV_INSN_FDIVD, "fdivd", "fdivd", 32, | |
5121 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5122 | + }, | |
5123 | +/* cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5124 | + { | |
5125 | + FRV_INSN_CFADDS, "cfadds", "cfadds", 32, | |
5126 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5127 | + }, | |
5128 | +/* cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5129 | + { | |
5130 | + FRV_INSN_CFSUBS, "cfsubs", "cfsubs", 32, | |
5131 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5132 | + }, | |
5133 | +/* cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5134 | + { | |
5135 | + FRV_INSN_CFMULS, "cfmuls", "cfmuls", 32, | |
5136 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_3 } } | |
5137 | + }, | |
5138 | +/* cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5139 | + { | |
5140 | + FRV_INSN_CFDIVS, "cfdivs", "cfdivs", 32, | |
5141 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5142 | + }, | |
5143 | +/* nfadds$pack $FRi,$FRj,$FRk */ | |
5144 | + { | |
5145 | + FRV_INSN_NFADDS, "nfadds", "nfadds", 32, | |
5146 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5147 | + }, | |
5148 | +/* nfsubs$pack $FRi,$FRj,$FRk */ | |
5149 | + { | |
5150 | + FRV_INSN_NFSUBS, "nfsubs", "nfsubs", 32, | |
5151 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5152 | + }, | |
5153 | +/* nfmuls$pack $FRi,$FRj,$FRk */ | |
5154 | + { | |
5155 | + FRV_INSN_NFMULS, "nfmuls", "nfmuls", 32, | |
5156 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_3 } } | |
5157 | + }, | |
5158 | +/* nfdivs$pack $FRi,$FRj,$FRk */ | |
5159 | + { | |
5160 | + FRV_INSN_NFDIVS, "nfdivs", "nfdivs", 32, | |
5161 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_4 } } | |
5162 | + }, | |
5163 | +/* fcmps$pack $FRi,$FRj,$FCCi_2 */ | |
5164 | + { | |
5165 | + FRV_INSN_FCMPS, "fcmps", "fcmps", 32, | |
5166 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5167 | + }, | |
5168 | +/* fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */ | |
5169 | + { | |
5170 | + FRV_INSN_FCMPD, "fcmpd", "fcmpd", 32, | |
5171 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5172 | + }, | |
5173 | +/* cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */ | |
5174 | + { | |
5175 | + FRV_INSN_CFCMPS, "cfcmps", "cfcmps", 32, | |
5176 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_2 } } | |
5177 | + }, | |
5178 | +/* fdcmps$pack $FRi,$FRj,$FCCi_2 */ | |
5179 | + { | |
5180 | + FRV_INSN_FDCMPS, "fdcmps", "fdcmps", 32, | |
5181 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5182 | + }, | |
5183 | +/* fmadds$pack $FRi,$FRj,$FRk */ | |
5184 | + { | |
5185 | + FRV_INSN_FMADDS, "fmadds", "fmadds", 32, | |
5186 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5187 | + }, | |
5188 | +/* fmsubs$pack $FRi,$FRj,$FRk */ | |
5189 | + { | |
5190 | + FRV_INSN_FMSUBS, "fmsubs", "fmsubs", 32, | |
5191 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5192 | + }, | |
5193 | +/* fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5194 | + { | |
5195 | + FRV_INSN_FMADDD, "fmaddd", "fmaddd", 32, | |
5196 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5197 | + }, | |
5198 | +/* fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */ | |
5199 | + { | |
5200 | + FRV_INSN_FMSUBD, "fmsubd", "fmsubd", 32, | |
5201 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5202 | + }, | |
5203 | +/* fdmadds$pack $FRi,$FRj,$FRk */ | |
5204 | + { | |
5205 | + FRV_INSN_FDMADDS, "fdmadds", "fdmadds", 32, | |
5206 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5207 | + }, | |
5208 | +/* nfdmadds$pack $FRi,$FRj,$FRk */ | |
5209 | + { | |
5210 | + FRV_INSN_NFDMADDS, "nfdmadds", "nfdmadds", 32, | |
5211 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5212 | + }, | |
5213 | +/* cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5214 | + { | |
5215 | + FRV_INSN_CFMADDS, "cfmadds", "cfmadds", 32, | |
5216 | + { 0|A(CONDITIONAL), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5217 | + }, | |
5218 | +/* cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5219 | + { | |
5220 | + FRV_INSN_CFMSUBS, "cfmsubs", "cfmsubs", 32, | |
5221 | + { 0|A(CONDITIONAL), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5222 | + }, | |
5223 | +/* nfmadds$pack $FRi,$FRj,$FRk */ | |
5224 | + { | |
5225 | + FRV_INSN_NFMADDS, "nfmadds", "nfmadds", 32, | |
5226 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5227 | + }, | |
5228 | +/* nfmsubs$pack $FRi,$FRj,$FRk */ | |
5229 | + { | |
5230 | + FRV_INSN_NFMSUBS, "nfmsubs", "nfmsubs", 32, | |
5231 | + { 0|A(NON_EXCEPTING), { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5232 | + }, | |
5233 | +/* fmas$pack $FRi,$FRj,$FRk */ | |
5234 | + { | |
5235 | + FRV_INSN_FMAS, "fmas", "fmas", 32, | |
5236 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5237 | + }, | |
5238 | +/* fmss$pack $FRi,$FRj,$FRk */ | |
5239 | + { | |
5240 | + FRV_INSN_FMSS, "fmss", "fmss", 32, | |
5241 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5242 | + }, | |
5243 | +/* fdmas$pack $FRi,$FRj,$FRk */ | |
5244 | + { | |
5245 | + FRV_INSN_FDMAS, "fdmas", "fdmas", 32, | |
5246 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5247 | + }, | |
5248 | +/* fdmss$pack $FRi,$FRj,$FRk */ | |
5249 | + { | |
5250 | + FRV_INSN_FDMSS, "fdmss", "fdmss", 32, | |
5251 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5252 | + }, | |
5253 | +/* nfdmas$pack $FRi,$FRj,$FRk */ | |
5254 | + { | |
5255 | + FRV_INSN_NFDMAS, "nfdmas", "nfdmas", 32, | |
5256 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5257 | + }, | |
5258 | +/* nfdmss$pack $FRi,$FRj,$FRk */ | |
5259 | + { | |
5260 | + FRV_INSN_NFDMSS, "nfdmss", "nfdmss", 32, | |
5261 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5262 | + }, | |
5263 | +/* cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5264 | + { | |
5265 | + FRV_INSN_CFMAS, "cfmas", "cfmas", 32, | |
5266 | + { 0|A(CONDITIONAL), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5267 | + }, | |
5268 | +/* cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */ | |
5269 | + { | |
5270 | + FRV_INSN_CFMSS, "cfmss", "cfmss", 32, | |
5271 | + { 0|A(CONDITIONAL), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5272 | + }, | |
5273 | +/* fmad$pack $FRi,$FRj,$FRk */ | |
5274 | + { | |
5275 | + FRV_INSN_FMAD, "fmad", "fmad", 32, | |
5276 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5277 | + }, | |
5278 | +/* fmsd$pack $FRi,$FRj,$FRk */ | |
5279 | + { | |
5280 | + FRV_INSN_FMSD, "fmsd", "fmsd", 32, | |
5281 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5282 | + }, | |
5283 | +/* nfmas$pack $FRi,$FRj,$FRk */ | |
5284 | + { | |
5285 | + FRV_INSN_NFMAS, "nfmas", "nfmas", 32, | |
5286 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5287 | + }, | |
5288 | +/* nfmss$pack $FRi,$FRj,$FRk */ | |
5289 | + { | |
5290 | + FRV_INSN_NFMSS, "nfmss", "nfmss", 32, | |
5291 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_5 } } | |
5292 | + }, | |
5293 | +/* fdadds$pack $FRi,$FRj,$FRk */ | |
5294 | + { | |
5295 | + FRV_INSN_FDADDS, "fdadds", "fdadds", 32, | |
5296 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5297 | + }, | |
5298 | +/* fdsubs$pack $FRi,$FRj,$FRk */ | |
5299 | + { | |
5300 | + FRV_INSN_FDSUBS, "fdsubs", "fdsubs", 32, | |
5301 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5302 | + }, | |
5303 | +/* fdmuls$pack $FRi,$FRj,$FRk */ | |
5304 | + { | |
5305 | + FRV_INSN_FDMULS, "fdmuls", "fdmuls", 32, | |
5306 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5307 | + }, | |
5308 | +/* fddivs$pack $FRi,$FRj,$FRk */ | |
5309 | + { | |
5310 | + FRV_INSN_FDDIVS, "fddivs", "fddivs", 32, | |
5311 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5312 | + }, | |
5313 | +/* fdsads$pack $FRi,$FRj,$FRk */ | |
5314 | + { | |
5315 | + FRV_INSN_FDSADS, "fdsads", "fdsads", 32, | |
5316 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5317 | + }, | |
5318 | +/* fdmulcs$pack $FRi,$FRj,$FRk */ | |
5319 | + { | |
5320 | + FRV_INSN_FDMULCS, "fdmulcs", "fdmulcs", 32, | |
5321 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5322 | + }, | |
5323 | +/* nfdmulcs$pack $FRi,$FRj,$FRk */ | |
5324 | + { | |
5325 | + FRV_INSN_NFDMULCS, "nfdmulcs", "nfdmulcs", 32, | |
5326 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5327 | + }, | |
5328 | +/* nfdadds$pack $FRi,$FRj,$FRk */ | |
5329 | + { | |
5330 | + FRV_INSN_NFDADDS, "nfdadds", "nfdadds", 32, | |
5331 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5332 | + }, | |
5333 | +/* nfdsubs$pack $FRi,$FRj,$FRk */ | |
5334 | + { | |
5335 | + FRV_INSN_NFDSUBS, "nfdsubs", "nfdsubs", 32, | |
5336 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5337 | + }, | |
5338 | +/* nfdmuls$pack $FRi,$FRj,$FRk */ | |
5339 | + { | |
5340 | + FRV_INSN_NFDMULS, "nfdmuls", "nfdmuls", 32, | |
5341 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5342 | + }, | |
5343 | +/* nfddivs$pack $FRi,$FRj,$FRk */ | |
5344 | + { | |
5345 | + FRV_INSN_NFDDIVS, "nfddivs", "nfddivs", 32, | |
5346 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_7 } } | |
5347 | + }, | |
5348 | +/* nfdsads$pack $FRi,$FRj,$FRk */ | |
5349 | + { | |
5350 | + FRV_INSN_NFDSADS, "nfdsads", "nfdsads", 32, | |
5351 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5352 | + }, | |
5353 | +/* nfdcmps$pack $FRi,$FRj,$FCCi_2 */ | |
5354 | + { | |
5355 | + FRV_INSN_NFDCMPS, "nfdcmps", "nfdcmps", 32, | |
5356 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_6 } } | |
5357 | + }, | |
5358 | +/* mhsetlos$pack $u12,$FRklo */ | |
5359 | + { | |
5360 | + FRV_INSN_MHSETLOS, "mhsetlos", "mhsetlos", 32, | |
5361 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5362 | + }, | |
5363 | +/* mhsethis$pack $u12,$FRkhi */ | |
5364 | + { | |
5365 | + FRV_INSN_MHSETHIS, "mhsethis", "mhsethis", 32, | |
5366 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5367 | + }, | |
5368 | +/* mhdsets$pack $u12,$FRintk */ | |
5369 | + { | |
5370 | + FRV_INSN_MHDSETS, "mhdsets", "mhdsets", 32, | |
5371 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5372 | + }, | |
5373 | +/* mhsetloh$pack $s5,$FRklo */ | |
5374 | + { | |
5375 | + FRV_INSN_MHSETLOH, "mhsetloh", "mhsetloh", 32, | |
5376 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5377 | + }, | |
5378 | +/* mhsethih$pack $s5,$FRkhi */ | |
5379 | + { | |
5380 | + FRV_INSN_MHSETHIH, "mhsethih", "mhsethih", 32, | |
5381 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5382 | + }, | |
5383 | +/* mhdseth$pack $s5,$FRintk */ | |
5384 | + { | |
5385 | + FRV_INSN_MHDSETH, "mhdseth", "mhdseth", 32, | |
5386 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5387 | + }, | |
5388 | +/* mand$pack $FRinti,$FRintj,$FRintk */ | |
5389 | + { | |
5390 | + FRV_INSN_MAND, "mand", "mand", 32, | |
5391 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5392 | + }, | |
5393 | +/* mor$pack $FRinti,$FRintj,$FRintk */ | |
5394 | + { | |
5395 | + FRV_INSN_MOR, "mor", "mor", 32, | |
5396 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5397 | + }, | |
5398 | +/* mxor$pack $FRinti,$FRintj,$FRintk */ | |
5399 | + { | |
5400 | + FRV_INSN_MXOR, "mxor", "mxor", 32, | |
5401 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5402 | + }, | |
5403 | +/* cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5404 | + { | |
5405 | + FRV_INSN_CMAND, "cmand", "cmand", 32, | |
5406 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5407 | + }, | |
5408 | +/* cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5409 | + { | |
5410 | + FRV_INSN_CMOR, "cmor", "cmor", 32, | |
5411 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5412 | + }, | |
5413 | +/* cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5414 | + { | |
5415 | + FRV_INSN_CMXOR, "cmxor", "cmxor", 32, | |
5416 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5417 | + }, | |
5418 | +/* mnot$pack $FRintj,$FRintk */ | |
5419 | + { | |
5420 | + FRV_INSN_MNOT, "mnot", "mnot", 32, | |
5421 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5422 | + }, | |
5423 | +/* cmnot$pack $FRintj,$FRintk,$CCi,$cond */ | |
5424 | + { | |
5425 | + FRV_INSN_CMNOT, "cmnot", "cmnot", 32, | |
5426 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5427 | + }, | |
5428 | +/* mrotli$pack $FRinti,$u6,$FRintk */ | |
5429 | + { | |
5430 | + FRV_INSN_MROTLI, "mrotli", "mrotli", 32, | |
5431 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5432 | + }, | |
5433 | +/* mrotri$pack $FRinti,$u6,$FRintk */ | |
5434 | + { | |
5435 | + FRV_INSN_MROTRI, "mrotri", "mrotri", 32, | |
5436 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5437 | + }, | |
5438 | +/* mwcut$pack $FRinti,$FRintj,$FRintk */ | |
5439 | + { | |
5440 | + FRV_INSN_MWCUT, "mwcut", "mwcut", 32, | |
5441 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5442 | + }, | |
5443 | +/* mwcuti$pack $FRinti,$u6,$FRintk */ | |
5444 | + { | |
5445 | + FRV_INSN_MWCUTI, "mwcuti", "mwcuti", 32, | |
5446 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5447 | + }, | |
5448 | +/* mcut$pack $ACC40Si,$FRintj,$FRintk */ | |
5449 | + { | |
5450 | + FRV_INSN_MCUT, "mcut", "mcut", 32, | |
5451 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5452 | + }, | |
5453 | +/* mcuti$pack $ACC40Si,$s6,$FRintk */ | |
5454 | + { | |
5455 | + FRV_INSN_MCUTI, "mcuti", "mcuti", 32, | |
5456 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5457 | + }, | |
5458 | +/* mcutss$pack $ACC40Si,$FRintj,$FRintk */ | |
5459 | + { | |
5460 | + FRV_INSN_MCUTSS, "mcutss", "mcutss", 32, | |
5461 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5462 | + }, | |
5463 | +/* mcutssi$pack $ACC40Si,$s6,$FRintk */ | |
5464 | + { | |
5465 | + FRV_INSN_MCUTSSI, "mcutssi", "mcutssi", 32, | |
5466 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5467 | + }, | |
5468 | +/* mdcutssi$pack $ACC40Si,$s6,$FRintk */ | |
5469 | + { | |
5470 | + FRV_INSN_MDCUTSSI, "mdcutssi", "mdcutssi", 32, | |
5471 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5472 | + }, | |
5473 | +/* maveh$pack $FRinti,$FRintj,$FRintk */ | |
5474 | + { | |
5475 | + FRV_INSN_MAVEH, "maveh", "maveh", 32, | |
5476 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5477 | + }, | |
5478 | +/* msllhi$pack $FRinti,$u6,$FRintk */ | |
5479 | + { | |
5480 | + FRV_INSN_MSLLHI, "msllhi", "msllhi", 32, | |
5481 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5482 | + }, | |
5483 | +/* msrlhi$pack $FRinti,$u6,$FRintk */ | |
5484 | + { | |
5485 | + FRV_INSN_MSRLHI, "msrlhi", "msrlhi", 32, | |
5486 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5487 | + }, | |
5488 | +/* msrahi$pack $FRinti,$u6,$FRintk */ | |
5489 | + { | |
5490 | + FRV_INSN_MSRAHI, "msrahi", "msrahi", 32, | |
5491 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5492 | + }, | |
5493 | +/* mdrotli$pack $FRinti,$u6,$FRintk */ | |
5494 | + { | |
5495 | + FRV_INSN_MDROTLI, "mdrotli", "mdrotli", 32, | |
5496 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5497 | + }, | |
5498 | +/* mcplhi$pack $FRinti,$u6,$FRintk */ | |
5499 | + { | |
5500 | + FRV_INSN_MCPLHI, "mcplhi", "mcplhi", 32, | |
5501 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5502 | + }, | |
5503 | +/* mcpli$pack $FRinti,$u6,$FRintk */ | |
5504 | + { | |
5505 | + FRV_INSN_MCPLI, "mcpli", "mcpli", 32, | |
5506 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5507 | + }, | |
5508 | +/* msaths$pack $FRinti,$FRintj,$FRintk */ | |
5509 | + { | |
5510 | + FRV_INSN_MSATHS, "msaths", "msaths", 32, | |
5511 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5512 | + }, | |
5513 | +/* mqsaths$pack $FRinti,$FRintj,$FRintk */ | |
5514 | + { | |
5515 | + FRV_INSN_MQSATHS, "mqsaths", "mqsaths", 32, | |
5516 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5517 | + }, | |
5518 | +/* msathu$pack $FRinti,$FRintj,$FRintk */ | |
5519 | + { | |
5520 | + FRV_INSN_MSATHU, "msathu", "msathu", 32, | |
5521 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5522 | + }, | |
5523 | +/* mcmpsh$pack $FRinti,$FRintj,$FCCk */ | |
5524 | + { | |
5525 | + FRV_INSN_MCMPSH, "mcmpsh", "mcmpsh", 32, | |
5526 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5527 | + }, | |
5528 | +/* mcmpuh$pack $FRinti,$FRintj,$FCCk */ | |
5529 | + { | |
5530 | + FRV_INSN_MCMPUH, "mcmpuh", "mcmpuh", 32, | |
5531 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5532 | + }, | |
5533 | +/* mabshs$pack $FRintj,$FRintk */ | |
5534 | + { | |
5535 | + FRV_INSN_MABSHS, "mabshs", "mabshs", 32, | |
5536 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5537 | + }, | |
5538 | +/* maddhss$pack $FRinti,$FRintj,$FRintk */ | |
5539 | + { | |
5540 | + FRV_INSN_MADDHSS, "maddhss", "maddhss", 32, | |
5541 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5542 | + }, | |
5543 | +/* maddhus$pack $FRinti,$FRintj,$FRintk */ | |
5544 | + { | |
5545 | + FRV_INSN_MADDHUS, "maddhus", "maddhus", 32, | |
5546 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5547 | + }, | |
5548 | +/* msubhss$pack $FRinti,$FRintj,$FRintk */ | |
5549 | + { | |
5550 | + FRV_INSN_MSUBHSS, "msubhss", "msubhss", 32, | |
5551 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5552 | + }, | |
5553 | +/* msubhus$pack $FRinti,$FRintj,$FRintk */ | |
5554 | + { | |
5555 | + FRV_INSN_MSUBHUS, "msubhus", "msubhus", 32, | |
5556 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5557 | + }, | |
5558 | +/* cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5559 | + { | |
5560 | + FRV_INSN_CMADDHSS, "cmaddhss", "cmaddhss", 32, | |
5561 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5562 | + }, | |
5563 | +/* cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5564 | + { | |
5565 | + FRV_INSN_CMADDHUS, "cmaddhus", "cmaddhus", 32, | |
5566 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5567 | + }, | |
5568 | +/* cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5569 | + { | |
5570 | + FRV_INSN_CMSUBHSS, "cmsubhss", "cmsubhss", 32, | |
5571 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5572 | + }, | |
5573 | +/* cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5574 | + { | |
5575 | + FRV_INSN_CMSUBHUS, "cmsubhus", "cmsubhus", 32, | |
5576 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } } | |
5577 | + }, | |
5578 | +/* mqaddhss$pack $FRinti,$FRintj,$FRintk */ | |
5579 | + { | |
5580 | + FRV_INSN_MQADDHSS, "mqaddhss", "mqaddhss", 32, | |
5581 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5582 | + }, | |
5583 | +/* mqaddhus$pack $FRinti,$FRintj,$FRintk */ | |
5584 | + { | |
5585 | + FRV_INSN_MQADDHUS, "mqaddhus", "mqaddhus", 32, | |
5586 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5587 | + }, | |
5588 | +/* mqsubhss$pack $FRinti,$FRintj,$FRintk */ | |
5589 | + { | |
5590 | + FRV_INSN_MQSUBHSS, "mqsubhss", "mqsubhss", 32, | |
5591 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5592 | + }, | |
5593 | +/* mqsubhus$pack $FRinti,$FRintj,$FRintk */ | |
5594 | + { | |
5595 | + FRV_INSN_MQSUBHUS, "mqsubhus", "mqsubhus", 32, | |
5596 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5597 | + }, | |
5598 | +/* cmqaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5599 | + { | |
5600 | + FRV_INSN_CMQADDHSS, "cmqaddhss", "cmqaddhss", 32, | |
5601 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5602 | + }, | |
5603 | +/* cmqaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5604 | + { | |
5605 | + FRV_INSN_CMQADDHUS, "cmqaddhus", "cmqaddhus", 32, | |
5606 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5607 | + }, | |
5608 | +/* cmqsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5609 | + { | |
5610 | + FRV_INSN_CMQSUBHSS, "cmqsubhss", "cmqsubhss", 32, | |
5611 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5612 | + }, | |
5613 | +/* cmqsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */ | |
5614 | + { | |
5615 | + FRV_INSN_CMQSUBHUS, "cmqsubhus", "cmqsubhus", 32, | |
5616 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } } | |
5617 | + }, | |
5618 | +/* maddaccs$pack $ACC40Si,$ACC40Sk */ | |
5619 | + { | |
5620 | + FRV_INSN_MADDACCS, "maddaccs", "maddaccs", 32, | |
5621 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5622 | + }, | |
5623 | +/* msubaccs$pack $ACC40Si,$ACC40Sk */ | |
5624 | + { | |
5625 | + FRV_INSN_MSUBACCS, "msubaccs", "msubaccs", 32, | |
5626 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5627 | + }, | |
5628 | +/* mdaddaccs$pack $ACC40Si,$ACC40Sk */ | |
5629 | + { | |
5630 | + FRV_INSN_MDADDACCS, "mdaddaccs", "mdaddaccs", 32, | |
5631 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5632 | + }, | |
5633 | +/* mdsubaccs$pack $ACC40Si,$ACC40Sk */ | |
5634 | + { | |
5635 | + FRV_INSN_MDSUBACCS, "mdsubaccs", "mdsubaccs", 32, | |
5636 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5637 | + }, | |
5638 | +/* masaccs$pack $ACC40Si,$ACC40Sk */ | |
5639 | + { | |
5640 | + FRV_INSN_MASACCS, "masaccs", "masaccs", 32, | |
5641 | + { 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } } | |
5642 | + }, | |
5643 | +/* mdasaccs$pack $ACC40Si,$ACC40Sk */ | |
5644 | + { | |
5645 | + FRV_INSN_MDASACCS, "mdasaccs", "mdasaccs", 32, | |
5646 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5647 | + }, | |
5648 | +/* mmulhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5649 | + { | |
5650 | + FRV_INSN_MMULHS, "mmulhs", "mmulhs", 32, | |
5651 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5652 | + }, | |
5653 | +/* mmulhu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5654 | + { | |
5655 | + FRV_INSN_MMULHU, "mmulhu", "mmulhu", 32, | |
5656 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5657 | + }, | |
5658 | +/* mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5659 | + { | |
5660 | + FRV_INSN_MMULXHS, "mmulxhs", "mmulxhs", 32, | |
5661 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5662 | + }, | |
5663 | +/* mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5664 | + { | |
5665 | + FRV_INSN_MMULXHU, "mmulxhu", "mmulxhu", 32, | |
5666 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5667 | + }, | |
5668 | +/* cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5669 | + { | |
5670 | + FRV_INSN_CMMULHS, "cmmulhs", "cmmulhs", 32, | |
5671 | + { 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5672 | + }, | |
5673 | +/* cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5674 | + { | |
5675 | + FRV_INSN_CMMULHU, "cmmulhu", "cmmulhu", 32, | |
5676 | + { 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5677 | + }, | |
5678 | +/* mqmulhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5679 | + { | |
5680 | + FRV_INSN_MQMULHS, "mqmulhs", "mqmulhs", 32, | |
5681 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5682 | + }, | |
5683 | +/* mqmulhu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5684 | + { | |
5685 | + FRV_INSN_MQMULHU, "mqmulhu", "mqmulhu", 32, | |
5686 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5687 | + }, | |
5688 | +/* mqmulxhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5689 | + { | |
5690 | + FRV_INSN_MQMULXHS, "mqmulxhs", "mqmulxhs", 32, | |
5691 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5692 | + }, | |
5693 | +/* mqmulxhu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5694 | + { | |
5695 | + FRV_INSN_MQMULXHU, "mqmulxhu", "mqmulxhu", 32, | |
5696 | + { 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5697 | + }, | |
5698 | +/* cmqmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5699 | + { | |
5700 | + FRV_INSN_CMQMULHS, "cmqmulhs", "cmqmulhs", 32, | |
5701 | + { 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5702 | + }, | |
5703 | +/* cmqmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5704 | + { | |
5705 | + FRV_INSN_CMQMULHU, "cmqmulhu", "cmqmulhu", 32, | |
5706 | + { 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5707 | + }, | |
5708 | +/* mmachs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5709 | + { | |
5710 | + FRV_INSN_MMACHS, "mmachs", "mmachs", 32, | |
5711 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5712 | + }, | |
5713 | +/* mmachu$pack $FRinti,$FRintj,$ACC40Uk */ | |
5714 | + { | |
5715 | + FRV_INSN_MMACHU, "mmachu", "mmachu", 32, | |
5716 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5717 | + }, | |
5718 | +/* mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5719 | + { | |
5720 | + FRV_INSN_MMRDHS, "mmrdhs", "mmrdhs", 32, | |
5721 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5722 | + }, | |
5723 | +/* mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */ | |
5724 | + { | |
5725 | + FRV_INSN_MMRDHU, "mmrdhu", "mmrdhu", 32, | |
5726 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5727 | + }, | |
5728 | +/* cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5729 | + { | |
5730 | + FRV_INSN_CMMACHS, "cmmachs", "cmmachs", 32, | |
5731 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5732 | + }, | |
5733 | +/* cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */ | |
5734 | + { | |
5735 | + FRV_INSN_CMMACHU, "cmmachu", "cmmachu", 32, | |
5736 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5737 | + }, | |
5738 | +/* mqmachs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5739 | + { | |
5740 | + FRV_INSN_MQMACHS, "mqmachs", "mqmachs", 32, | |
5741 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5742 | + }, | |
5743 | +/* mqmachu$pack $FRinti,$FRintj,$ACC40Uk */ | |
5744 | + { | |
5745 | + FRV_INSN_MQMACHU, "mqmachu", "mqmachu", 32, | |
5746 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5747 | + }, | |
5748 | +/* cmqmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5749 | + { | |
5750 | + FRV_INSN_CMQMACHS, "cmqmachs", "cmqmachs", 32, | |
5751 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5752 | + }, | |
5753 | +/* cmqmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */ | |
5754 | + { | |
5755 | + FRV_INSN_CMQMACHU, "cmqmachu", "cmqmachu", 32, | |
5756 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5757 | + }, | |
5758 | +/* mqxmachs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5759 | + { | |
5760 | + FRV_INSN_MQXMACHS, "mqxmachs", "mqxmachs", 32, | |
5761 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5762 | + }, | |
5763 | +/* mqxmacxhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5764 | + { | |
5765 | + FRV_INSN_MQXMACXHS, "mqxmacxhs", "mqxmacxhs", 32, | |
5766 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5767 | + }, | |
5768 | +/* mqmacxhs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5769 | + { | |
5770 | + FRV_INSN_MQMACXHS, "mqmacxhs", "mqmacxhs", 32, | |
5771 | + { 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } } | |
5772 | + }, | |
5773 | +/* mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5774 | + { | |
5775 | + FRV_INSN_MCPXRS, "mcpxrs", "mcpxrs", 32, | |
5776 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5777 | + }, | |
5778 | +/* mcpxru$pack $FRinti,$FRintj,$ACC40Sk */ | |
5779 | + { | |
5780 | + FRV_INSN_MCPXRU, "mcpxru", "mcpxru", 32, | |
5781 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5782 | + }, | |
5783 | +/* mcpxis$pack $FRinti,$FRintj,$ACC40Sk */ | |
5784 | + { | |
5785 | + FRV_INSN_MCPXIS, "mcpxis", "mcpxis", 32, | |
5786 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5787 | + }, | |
5788 | +/* mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5789 | + { | |
5790 | + FRV_INSN_MCPXIU, "mcpxiu", "mcpxiu", 32, | |
5791 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5792 | + }, | |
5793 | +/* cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5794 | + { | |
5795 | + FRV_INSN_CMCPXRS, "cmcpxrs", "cmcpxrs", 32, | |
5796 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5797 | + }, | |
5798 | +/* cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5799 | + { | |
5800 | + FRV_INSN_CMCPXRU, "cmcpxru", "cmcpxru", 32, | |
5801 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5802 | + }, | |
5803 | +/* cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5804 | + { | |
5805 | + FRV_INSN_CMCPXIS, "cmcpxis", "cmcpxis", 32, | |
5806 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5807 | + }, | |
5808 | +/* cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */ | |
5809 | + { | |
5810 | + FRV_INSN_CMCPXIU, "cmcpxiu", "cmcpxiu", 32, | |
5811 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } } | |
5812 | + }, | |
5813 | +/* mqcpxrs$pack $FRinti,$FRintj,$ACC40Sk */ | |
5814 | + { | |
5815 | + FRV_INSN_MQCPXRS, "mqcpxrs", "mqcpxrs", 32, | |
5816 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5817 | + }, | |
5818 | +/* mqcpxru$pack $FRinti,$FRintj,$ACC40Sk */ | |
5819 | + { | |
5820 | + FRV_INSN_MQCPXRU, "mqcpxru", "mqcpxru", 32, | |
5821 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5822 | + }, | |
5823 | +/* mqcpxis$pack $FRinti,$FRintj,$ACC40Sk */ | |
5824 | + { | |
5825 | + FRV_INSN_MQCPXIS, "mqcpxis", "mqcpxis", 32, | |
5826 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5827 | + }, | |
5828 | +/* mqcpxiu$pack $FRinti,$FRintj,$ACC40Sk */ | |
5829 | + { | |
5830 | + FRV_INSN_MQCPXIU, "mqcpxiu", "mqcpxiu", 32, | |
5831 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } } | |
5832 | + }, | |
5833 | +/* mexpdhw$pack $FRinti,$u6,$FRintk */ | |
5834 | + { | |
5835 | + FRV_INSN_MEXPDHW, "mexpdhw", "mexpdhw", 32, | |
5836 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5837 | + }, | |
5838 | +/* cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */ | |
5839 | + { | |
5840 | + FRV_INSN_CMEXPDHW, "cmexpdhw", "cmexpdhw", 32, | |
5841 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5842 | + }, | |
5843 | +/* mexpdhd$pack $FRinti,$u6,$FRintk */ | |
5844 | + { | |
5845 | + FRV_INSN_MEXPDHD, "mexpdhd", "mexpdhd", 32, | |
5846 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5847 | + }, | |
5848 | +/* cmexpdhd$pack $FRinti,$u6,$FRintk,$CCi,$cond */ | |
5849 | + { | |
5850 | + FRV_INSN_CMEXPDHD, "cmexpdhd", "cmexpdhd", 32, | |
5851 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5852 | + }, | |
5853 | +/* mpackh$pack $FRinti,$FRintj,$FRintk */ | |
5854 | + { | |
5855 | + FRV_INSN_MPACKH, "mpackh", "mpackh", 32, | |
5856 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5857 | + }, | |
5858 | +/* mdpackh$pack $FRinti,$FRintj,$FRintk */ | |
5859 | + { | |
5860 | + FRV_INSN_MDPACKH, "mdpackh", "mdpackh", 32, | |
5861 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_5 } } | |
5862 | + }, | |
5863 | +/* munpackh$pack $FRinti,$FRintk */ | |
5864 | + { | |
5865 | + FRV_INSN_MUNPACKH, "munpackh", "munpackh", 32, | |
5866 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5867 | + }, | |
5868 | +/* mdunpackh$pack $FRinti,$FRintk */ | |
5869 | + { | |
5870 | + FRV_INSN_MDUNPACKH, "mdunpackh", "mdunpackh", 32, | |
5871 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_7 } } | |
5872 | + }, | |
5873 | +/* mbtoh$pack $FRintj,$FRintk */ | |
5874 | + { | |
5875 | + FRV_INSN_MBTOH, "mbtoh", "mbtoh", 32, | |
5876 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5877 | + }, | |
5878 | +/* cmbtoh$pack $FRintj,$FRintk,$CCi,$cond */ | |
5879 | + { | |
5880 | + FRV_INSN_CMBTOH, "cmbtoh", "cmbtoh", 32, | |
5881 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5882 | + }, | |
5883 | +/* mhtob$pack $FRintj,$FRintk */ | |
5884 | + { | |
5885 | + FRV_INSN_MHTOB, "mhtob", "mhtob", 32, | |
5886 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5887 | + }, | |
5888 | +/* cmhtob$pack $FRintj,$FRintk,$CCi,$cond */ | |
5889 | + { | |
5890 | + FRV_INSN_CMHTOB, "cmhtob", "cmhtob", 32, | |
5891 | + { 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } } | |
5892 | + }, | |
5893 | +/* mbtohe$pack $FRintj,$FRintk */ | |
5894 | + { | |
5895 | + FRV_INSN_MBTOHE, "mbtohe", "mbtohe", 32, | |
5896 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_7 } } | |
5897 | + }, | |
5898 | +/* cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */ | |
5899 | + { | |
5900 | + FRV_INSN_CMBTOHE, "cmbtohe", "cmbtohe", 32, | |
5901 | + { 0|A(CONDITIONAL), { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_7 } } | |
5902 | + }, | |
5903 | +/* mclracc$pack $ACC40Sk,$A */ | |
5904 | + { | |
5905 | + FRV_INSN_MCLRACC, "mclracc", "mclracc", 32, | |
5906 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_3 } } | |
5907 | + }, | |
5908 | +/* mrdacc$pack $ACC40Si,$FRintk */ | |
5909 | + { | |
5910 | + FRV_INSN_MRDACC, "mrdacc", "mrdacc", 32, | |
5911 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5912 | + }, | |
5913 | +/* mrdaccg$pack $ACCGi,$FRintk */ | |
5914 | + { | |
5915 | + FRV_INSN_MRDACCG, "mrdaccg", "mrdaccg", 32, | |
5916 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } } | |
5917 | + }, | |
5918 | +/* mwtacc$pack $FRinti,$ACC40Sk */ | |
5919 | + { | |
5920 | + FRV_INSN_MWTACC, "mwtacc", "mwtacc", 32, | |
5921 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_3 } } | |
5922 | + }, | |
5923 | +/* mwtaccg$pack $FRinti,$ACCGk */ | |
5924 | + { | |
5925 | + FRV_INSN_MWTACCG, "mwtaccg", "mwtaccg", 32, | |
5926 | + { 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_3 } } | |
5927 | + }, | |
5928 | +/* mcop1$pack $FRi,$FRj,$FRk */ | |
5929 | + { | |
5930 | + FRV_INSN_MCOP1, "mcop1", "mcop1", 32, | |
5931 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_1 } } | |
5932 | + }, | |
5933 | +/* mcop2$pack $FRi,$FRj,$FRk */ | |
5934 | + { | |
5935 | + FRV_INSN_MCOP2, "mcop2", "mcop2", 32, | |
5936 | + { 0, { (1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_1 } } | |
5937 | + }, | |
5938 | +/* fnop$pack */ | |
5939 | + { | |
5940 | + FRV_INSN_FNOP, "fnop", "fnop", 32, | |
5941 | + { 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FR500)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_F_8 } } | |
5942 | + }, | |
5943 | +}; | |
5944 | + | |
5945 | +#undef OP | |
5946 | +#undef A | |
5947 | + | |
5948 | +/* Initialize anything needed to be done once, before any cpu_open call. */ | |
5949 | +static void init_tables PARAMS ((void)); | |
5950 | + | |
5951 | +static void | |
5952 | +init_tables () | |
5953 | +{ | |
5954 | +} | |
5955 | + | |
5956 | +static const CGEN_MACH * lookup_mach_via_bfd_name | |
5957 | + PARAMS ((const CGEN_MACH *, const char *)); | |
5958 | +static void build_hw_table PARAMS ((CGEN_CPU_TABLE *)); | |
5959 | +static void build_ifield_table PARAMS ((CGEN_CPU_TABLE *)); | |
5960 | +static void build_operand_table PARAMS ((CGEN_CPU_TABLE *)); | |
5961 | +static void build_insn_table PARAMS ((CGEN_CPU_TABLE *)); | |
5962 | +static void frv_cgen_rebuild_tables PARAMS ((CGEN_CPU_TABLE *)); | |
5963 | + | |
5964 | +/* Subroutine of frv_cgen_cpu_open to look up a mach via its bfd name. */ | |
5965 | + | |
5966 | +static const CGEN_MACH * | |
5967 | +lookup_mach_via_bfd_name (table, name) | |
5968 | + const CGEN_MACH *table; | |
5969 | + const char *name; | |
5970 | +{ | |
5971 | + while (table->name) | |
5972 | + { | |
5973 | + if (strcmp (name, table->bfd_name) == 0) | |
5974 | + return table; | |
5975 | + ++table; | |
5976 | + } | |
5977 | + abort (); | |
5978 | +} | |
5979 | + | |
5980 | +/* Subroutine of frv_cgen_cpu_open to build the hardware table. */ | |
5981 | + | |
5982 | +static void | |
5983 | +build_hw_table (cd) | |
5984 | + CGEN_CPU_TABLE *cd; | |
5985 | +{ | |
5986 | + int i; | |
5987 | + int machs = cd->machs; | |
5988 | + const CGEN_HW_ENTRY *init = & frv_cgen_hw_table[0]; | |
5989 | + /* MAX_HW is only an upper bound on the number of selected entries. | |
5990 | + However each entry is indexed by it's enum so there can be holes in | |
5991 | + the table. */ | |
5992 | + const CGEN_HW_ENTRY **selected = | |
5993 | + (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *)); | |
5994 | + | |
5995 | + cd->hw_table.init_entries = init; | |
5996 | + cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY); | |
5997 | + memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *)); | |
5998 | + /* ??? For now we just use machs to determine which ones we want. */ | |
5999 | + for (i = 0; init[i].name != NULL; ++i) | |
6000 | + if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH) | |
6001 | + & machs) | |
6002 | + selected[init[i].type] = &init[i]; | |
6003 | + cd->hw_table.entries = selected; | |
6004 | + cd->hw_table.num_entries = MAX_HW; | |
6005 | +} | |
6006 | + | |
6007 | +/* Subroutine of frv_cgen_cpu_open to build the hardware table. */ | |
6008 | + | |
6009 | +static void | |
6010 | +build_ifield_table (cd) | |
6011 | + CGEN_CPU_TABLE *cd; | |
6012 | +{ | |
6013 | + cd->ifld_table = & frv_cgen_ifld_table[0]; | |
6014 | +} | |
6015 | + | |
6016 | +/* Subroutine of frv_cgen_cpu_open to build the hardware table. */ | |
6017 | + | |
6018 | +static void | |
6019 | +build_operand_table (cd) | |
6020 | + CGEN_CPU_TABLE *cd; | |
6021 | +{ | |
6022 | + int i; | |
6023 | + int machs = cd->machs; | |
6024 | + const CGEN_OPERAND *init = & frv_cgen_operand_table[0]; | |
6025 | + /* MAX_OPERANDS is only an upper bound on the number of selected entries. | |
6026 | + However each entry is indexed by it's enum so there can be holes in | |
6027 | + the table. */ | |
6028 | + const CGEN_OPERAND **selected = | |
6029 | + (const CGEN_OPERAND **) xmalloc (MAX_OPERANDS * sizeof (CGEN_OPERAND *)); | |
6030 | + | |
6031 | + cd->operand_table.init_entries = init; | |
6032 | + cd->operand_table.entry_size = sizeof (CGEN_OPERAND); | |
6033 | + memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *)); | |
6034 | + /* ??? For now we just use mach to determine which ones we want. */ | |
6035 | + for (i = 0; init[i].name != NULL; ++i) | |
6036 | + if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH) | |
6037 | + & machs) | |
6038 | + selected[init[i].type] = &init[i]; | |
6039 | + cd->operand_table.entries = selected; | |
6040 | + cd->operand_table.num_entries = MAX_OPERANDS; | |
6041 | +} | |
6042 | + | |
6043 | +/* Subroutine of frv_cgen_cpu_open to build the hardware table. | |
6044 | + ??? This could leave out insns not supported by the specified mach/isa, | |
6045 | + but that would cause errors like "foo only supported by bar" to become | |
6046 | + "unknown insn", so for now we include all insns and require the app to | |
6047 | + do the checking later. | |
6048 | + ??? On the other hand, parsing of such insns may require their hardware or | |
6049 | + operand elements to be in the table [which they mightn't be]. */ | |
6050 | + | |
6051 | +static void | |
6052 | +build_insn_table (cd) | |
6053 | + CGEN_CPU_TABLE *cd; | |
6054 | +{ | |
6055 | + int i; | |
6056 | + const CGEN_IBASE *ib = & frv_cgen_insn_table[0]; | |
6057 | + CGEN_INSN *insns = (CGEN_INSN *) xmalloc (MAX_INSNS * sizeof (CGEN_INSN)); | |
6058 | + | |
6059 | + memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN)); | |
6060 | + for (i = 0; i < MAX_INSNS; ++i) | |
6061 | + insns[i].base = &ib[i]; | |
6062 | + cd->insn_table.init_entries = insns; | |
6063 | + cd->insn_table.entry_size = sizeof (CGEN_IBASE); | |
6064 | + cd->insn_table.num_init_entries = MAX_INSNS; | |
6065 | +} | |
6066 | + | |
6067 | +/* Subroutine of frv_cgen_cpu_open to rebuild the tables. */ | |
6068 | + | |
6069 | +static void | |
6070 | +frv_cgen_rebuild_tables (cd) | |
6071 | + CGEN_CPU_TABLE *cd; | |
6072 | +{ | |
6073 | + int i; | |
6074 | + unsigned int isas = cd->isas; | |
6075 | + unsigned int machs = cd->machs; | |
6076 | + | |
6077 | + cd->int_insn_p = CGEN_INT_INSN_P; | |
6078 | + | |
6079 | + /* Data derived from the isa spec. */ | |
6080 | +#define UNSET (CGEN_SIZE_UNKNOWN + 1) | |
6081 | + cd->default_insn_bitsize = UNSET; | |
6082 | + cd->base_insn_bitsize = UNSET; | |
6083 | + cd->min_insn_bitsize = 65535; /* some ridiculously big number */ | |
6084 | + cd->max_insn_bitsize = 0; | |
6085 | + for (i = 0; i < MAX_ISAS; ++i) | |
6086 | + if (((1 << i) & isas) != 0) | |
6087 | + { | |
6088 | + const CGEN_ISA *isa = & frv_cgen_isa_table[i]; | |
6089 | + | |
6090 | + /* Default insn sizes of all selected isas must be | |
6091 | + equal or we set the result to 0, meaning "unknown". */ | |
6092 | + if (cd->default_insn_bitsize == UNSET) | |
6093 | + cd->default_insn_bitsize = isa->default_insn_bitsize; | |
6094 | + else if (isa->default_insn_bitsize == cd->default_insn_bitsize) | |
6095 | + ; /* this is ok */ | |
6096 | + else | |
6097 | + cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN; | |
6098 | + | |
6099 | + /* Base insn sizes of all selected isas must be equal | |
6100 | + or we set the result to 0, meaning "unknown". */ | |
6101 | + if (cd->base_insn_bitsize == UNSET) | |
6102 | + cd->base_insn_bitsize = isa->base_insn_bitsize; | |
6103 | + else if (isa->base_insn_bitsize == cd->base_insn_bitsize) | |
6104 | + ; /* this is ok */ | |
6105 | + else | |
6106 | + cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN; | |
6107 | + | |
6108 | + /* Set min,max insn sizes. */ | |
6109 | + if (isa->min_insn_bitsize < cd->min_insn_bitsize) | |
6110 | + cd->min_insn_bitsize = isa->min_insn_bitsize; | |
6111 | + if (isa->max_insn_bitsize > cd->max_insn_bitsize) | |
6112 | + cd->max_insn_bitsize = isa->max_insn_bitsize; | |
6113 | + } | |
6114 | + | |
6115 | + /* Data derived from the mach spec. */ | |
6116 | + for (i = 0; i < MAX_MACHS; ++i) | |
6117 | + if (((1 << i) & machs) != 0) | |
6118 | + { | |
6119 | + const CGEN_MACH *mach = & frv_cgen_mach_table[i]; | |
6120 | + | |
6121 | + if (mach->insn_chunk_bitsize != 0) | |
6122 | + { | |
6123 | + if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize) | |
6124 | + { | |
6125 | + fprintf (stderr, "frv_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n", | |
6126 | + cd->insn_chunk_bitsize, mach->insn_chunk_bitsize); | |
6127 | + abort (); | |
6128 | + } | |
6129 | + | |
6130 | + cd->insn_chunk_bitsize = mach->insn_chunk_bitsize; | |
6131 | + } | |
6132 | + } | |
6133 | + | |
6134 | + /* Determine which hw elements are used by MACH. */ | |
6135 | + build_hw_table (cd); | |
6136 | + | |
6137 | + /* Build the ifield table. */ | |
6138 | + build_ifield_table (cd); | |
6139 | + | |
6140 | + /* Determine which operands are used by MACH/ISA. */ | |
6141 | + build_operand_table (cd); | |
6142 | + | |
6143 | + /* Build the instruction table. */ | |
6144 | + build_insn_table (cd); | |
6145 | +} | |
6146 | + | |
6147 | +/* Initialize a cpu table and return a descriptor. | |
6148 | + It's much like opening a file, and must be the first function called. | |
6149 | + The arguments are a set of (type/value) pairs, terminated with | |
6150 | + CGEN_CPU_OPEN_END. | |
6151 | + | |
6152 | + Currently supported values: | |
6153 | + CGEN_CPU_OPEN_ISAS: bitmap of values in enum isa_attr | |
6154 | + CGEN_CPU_OPEN_MACHS: bitmap of values in enum mach_attr | |
6155 | + CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name | |
6156 | + CGEN_CPU_OPEN_ENDIAN: specify endian choice | |
6157 | + CGEN_CPU_OPEN_END: terminates arguments | |
6158 | + | |
6159 | + ??? Simultaneous multiple isas might not make sense, but it's not (yet) | |
6160 | + precluded. | |
6161 | + | |
6162 | + ??? We only support ISO C stdargs here, not K&R. | |
6163 | + Laziness, plus experiment to see if anything requires K&R - eventually | |
6164 | + K&R will no longer be supported - e.g. GDB is currently trying this. */ | |
6165 | + | |
6166 | +CGEN_CPU_DESC | |
6167 | +frv_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...) | |
6168 | +{ | |
6169 | + CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE)); | |
6170 | + static int init_p; | |
6171 | + unsigned int isas = 0; /* 0 = "unspecified" */ | |
6172 | + unsigned int machs = 0; /* 0 = "unspecified" */ | |
6173 | + enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN; | |
6174 | + va_list ap; | |
6175 | + | |
6176 | + if (! init_p) | |
6177 | + { | |
6178 | + init_tables (); | |
6179 | + init_p = 1; | |
6180 | + } | |
6181 | + | |
6182 | + memset (cd, 0, sizeof (*cd)); | |
6183 | + | |
6184 | + va_start (ap, arg_type); | |
6185 | + while (arg_type != CGEN_CPU_OPEN_END) | |
6186 | + { | |
6187 | + switch (arg_type) | |
6188 | + { | |
6189 | + case CGEN_CPU_OPEN_ISAS : | |
6190 | + isas = va_arg (ap, unsigned int); | |
6191 | + break; | |
6192 | + case CGEN_CPU_OPEN_MACHS : | |
6193 | + machs = va_arg (ap, unsigned int); | |
6194 | + break; | |
6195 | + case CGEN_CPU_OPEN_BFDMACH : | |
6196 | + { | |
6197 | + const char *name = va_arg (ap, const char *); | |
6198 | + const CGEN_MACH *mach = | |
6199 | + lookup_mach_via_bfd_name (frv_cgen_mach_table, name); | |
6200 | + | |
6201 | + machs |= 1 << mach->num; | |
6202 | + break; | |
6203 | + } | |
6204 | + case CGEN_CPU_OPEN_ENDIAN : | |
6205 | + endian = va_arg (ap, enum cgen_endian); | |
6206 | + break; | |
6207 | + default : | |
6208 | + fprintf (stderr, "frv_cgen_cpu_open: unsupported argument `%d'\n", | |
6209 | + arg_type); | |
6210 | + abort (); /* ??? return NULL? */ | |
6211 | + } | |
6212 | + arg_type = va_arg (ap, enum cgen_cpu_open_arg); | |
6213 | + } | |
6214 | + va_end (ap); | |
6215 | + | |
6216 | + /* mach unspecified means "all" */ | |
6217 | + if (machs == 0) | |
6218 | + machs = (1 << MAX_MACHS) - 1; | |
6219 | + /* base mach is always selected */ | |
6220 | + machs |= 1; | |
6221 | + /* isa unspecified means "all" */ | |
6222 | + if (isas == 0) | |
6223 | + isas = (1 << MAX_ISAS) - 1; | |
6224 | + if (endian == CGEN_ENDIAN_UNKNOWN) | |
6225 | + { | |
6226 | + /* ??? If target has only one, could have a default. */ | |
6227 | + fprintf (stderr, "frv_cgen_cpu_open: no endianness specified\n"); | |
6228 | + abort (); | |
6229 | + } | |
6230 | + | |
6231 | + cd->isas = isas; | |
6232 | + cd->machs = machs; | |
6233 | + cd->endian = endian; | |
6234 | + /* FIXME: for the sparc case we can determine insn-endianness statically. | |
6235 | + The worry here is where both data and insn endian can be independently | |
6236 | + chosen, in which case this function will need another argument. | |
6237 | + Actually, will want to allow for more arguments in the future anyway. */ | |
6238 | + cd->insn_endian = endian; | |
6239 | + | |
6240 | + /* Table (re)builder. */ | |
6241 | + cd->rebuild_tables = frv_cgen_rebuild_tables; | |
6242 | + frv_cgen_rebuild_tables (cd); | |
6243 | + | |
6244 | + /* Default to not allowing signed overflow. */ | |
6245 | + cd->signed_overflow_ok_p = 0; | |
6246 | + | |
6247 | + return (CGEN_CPU_DESC) cd; | |
6248 | +} | |
6249 | + | |
6250 | +/* Cover fn to frv_cgen_cpu_open to handle the simple case of 1 isa, 1 mach. | |
6251 | + MACH_NAME is the bfd name of the mach. */ | |
6252 | + | |
6253 | +CGEN_CPU_DESC | |
6254 | +frv_cgen_cpu_open_1 (mach_name, endian) | |
6255 | + const char *mach_name; | |
6256 | + enum cgen_endian endian; | |
6257 | +{ | |
6258 | + return frv_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name, | |
6259 | + CGEN_CPU_OPEN_ENDIAN, endian, | |
6260 | + CGEN_CPU_OPEN_END); | |
6261 | +} | |
6262 | + | |
6263 | +/* Close a cpu table. | |
6264 | + ??? This can live in a machine independent file, but there's currently | |
6265 | + no place to put this file (there's no libcgen). libopcodes is the wrong | |
6266 | + place as some simulator ports use this but they don't use libopcodes. */ | |
6267 | + | |
6268 | +void | |
6269 | +frv_cgen_cpu_close (cd) | |
6270 | + CGEN_CPU_DESC cd; | |
6271 | +{ | |
6272 | + unsigned int i; | |
6273 | + CGEN_INSN *insns; | |
6274 | + | |
6275 | + if (cd->macro_insn_table.init_entries) | |
6276 | + { | |
6277 | + insns = cd->macro_insn_table.init_entries; | |
6278 | + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) | |
6279 | + { | |
6280 | + if (CGEN_INSN_RX ((insns))) | |
6281 | + regfree(CGEN_INSN_RX (insns)); | |
6282 | + } | |
6283 | + } | |
6284 | + | |
6285 | + if (cd->insn_table.init_entries) | |
6286 | + { | |
6287 | + insns = cd->insn_table.init_entries; | |
6288 | + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) | |
6289 | + { | |
6290 | + if (CGEN_INSN_RX (insns)) | |
6291 | + regfree(CGEN_INSN_RX (insns)); | |
6292 | + } | |
6293 | + } | |
6294 | + | |
6295 | + | |
6296 | + | |
6297 | + if (cd->macro_insn_table.init_entries) | |
6298 | + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); | |
6299 | + | |
6300 | + if (cd->insn_table.init_entries) | |
6301 | + free ((CGEN_INSN *) cd->insn_table.init_entries); | |
6302 | + | |
6303 | + if (cd->hw_table.entries) | |
6304 | + free ((CGEN_HW_ENTRY *) cd->hw_table.entries); | |
6305 | + | |
6306 | + if (cd->operand_table.entries) | |
6307 | + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); | |
6308 | + | |
6309 | + free (cd); | |
6310 | +} | |
6311 | + |
@@ -0,0 +1,748 @@ | ||
1 | +/* CPU data header for frv. | |
2 | + | |
3 | +THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | + | |
5 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. | |
6 | + | |
7 | +This file is part of the GNU Binutils and/or GDB, the GNU debugger. | |
8 | + | |
9 | +This program is free software; you can redistribute it and/or modify | |
10 | +it under the terms of the GNU General Public License as published by | |
11 | +the Free Software Foundation; either version 2, or (at your option) | |
12 | +any later version. | |
13 | + | |
14 | +This program is distributed in the hope that it will be useful, | |
15 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | +GNU General Public License for more details. | |
18 | + | |
19 | +You should have received a copy of the GNU General Public License along | |
20 | +with this program; if not, write to the Free Software Foundation, Inc., | |
21 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
22 | + | |
23 | +*/ | |
24 | + | |
25 | +#ifndef FRV_CPU_H | |
26 | +#define FRV_CPU_H | |
27 | + | |
28 | +#define CGEN_ARCH frv | |
29 | + | |
30 | +/* Given symbol S, return frv_cgen_<S>. */ | |
31 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
32 | +#define CGEN_SYM(s) frv##_cgen_##s | |
33 | +#else | |
34 | +#define CGEN_SYM(s) frv/**/_cgen_/**/s | |
35 | +#endif | |
36 | + | |
37 | + | |
38 | +/* Selected cpu families. */ | |
39 | +#define HAVE_CPU_FRVBF | |
40 | + | |
41 | +#define CGEN_INSN_LSB0_P 1 | |
42 | + | |
43 | +/* Minimum size of any insn (in bytes). */ | |
44 | +#define CGEN_MIN_INSN_SIZE 4 | |
45 | + | |
46 | +/* Maximum size of any insn (in bytes). */ | |
47 | +#define CGEN_MAX_INSN_SIZE 4 | |
48 | + | |
49 | +#define CGEN_INT_INSN_P 1 | |
50 | + | |
51 | +/* Maximum number of syntax elements in an instruction. */ | |
52 | +#define CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS 22 | |
53 | + | |
54 | +/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands. | |
55 | + e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands | |
56 | + we can't hash on everything up to the space. */ | |
57 | +#define CGEN_MNEMONIC_OPERANDS | |
58 | + | |
59 | +/* Maximum number of fields in an instruction. */ | |
60 | +#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 10 | |
61 | + | |
62 | +/* Enums. */ | |
63 | + | |
64 | +/* Enum declaration for insn op enums. */ | |
65 | +typedef enum insn_op { | |
66 | + OP_00, OP_01, OP_02, OP_03 | |
67 | + , OP_04, OP_05, OP_06, OP_07 | |
68 | + , OP_08, OP_09, OP_0A, OP_0B | |
69 | + , OP_0C, OP_0D, OP_0E, OP_0F | |
70 | + , OP_10, OP_11, OP_12, OP_13 | |
71 | + , OP_14, OP_15, OP_16, OP_17 | |
72 | + , OP_18, OP_19, OP_1A, OP_1B | |
73 | + , OP_1C, OP_1D, OP_1E, OP_1F | |
74 | + , OP_20, OP_21, OP_22, OP_23 | |
75 | + , OP_24, OP_25, OP_26, OP_27 | |
76 | + , OP_28, OP_29, OP_2A, OP_2B | |
77 | + , OP_2C, OP_2D, OP_2E, OP_2F | |
78 | + , OP_30, OP_31, OP_32, OP_33 | |
79 | + , OP_34, OP_35, OP_36, OP_37 | |
80 | + , OP_38, OP_39, OP_3A, OP_3B | |
81 | + , OP_3C, OP_3D, OP_3E, OP_3F | |
82 | + , OP_40, OP_41, OP_42, OP_43 | |
83 | + , OP_44, OP_45, OP_46, OP_47 | |
84 | + , OP_48, OP_49, OP_4A, OP_4B | |
85 | + , OP_4C, OP_4D, OP_4E, OP_4F | |
86 | + , OP_50, OP_51, OP_52, OP_53 | |
87 | + , OP_54, OP_55, OP_56, OP_57 | |
88 | + , OP_58, OP_59, OP_5A, OP_5B | |
89 | + , OP_5C, OP_5D, OP_5E, OP_5F | |
90 | + , OP_60, OP_61, OP_62, OP_63 | |
91 | + , OP_64, OP_65, OP_66, OP_67 | |
92 | + , OP_68, OP_69, OP_6A, OP_6B | |
93 | + , OP_6C, OP_6D, OP_6E, OP_6F | |
94 | + , OP_70, OP_71, OP_72, OP_73 | |
95 | + , OP_74, OP_75, OP_76, OP_77 | |
96 | + , OP_78, OP_79, OP_7A, OP_7B | |
97 | + , OP_7C, OP_7D, OP_7E, OP_7F | |
98 | +} INSN_OP; | |
99 | + | |
100 | +/* Enum declaration for insn ope enums. */ | |
101 | +typedef enum insn_ope1 { | |
102 | + OPE1_00, OPE1_01, OPE1_02, OPE1_03 | |
103 | + , OPE1_04, OPE1_05, OPE1_06, OPE1_07 | |
104 | + , OPE1_08, OPE1_09, OPE1_0A, OPE1_0B | |
105 | + , OPE1_0C, OPE1_0D, OPE1_0E, OPE1_0F | |
106 | + , OPE1_10, OPE1_11, OPE1_12, OPE1_13 | |
107 | + , OPE1_14, OPE1_15, OPE1_16, OPE1_17 | |
108 | + , OPE1_18, OPE1_19, OPE1_1A, OPE1_1B | |
109 | + , OPE1_1C, OPE1_1D, OPE1_1E, OPE1_1F | |
110 | + , OPE1_20, OPE1_21, OPE1_22, OPE1_23 | |
111 | + , OPE1_24, OPE1_25, OPE1_26, OPE1_27 | |
112 | + , OPE1_28, OPE1_29, OPE1_2A, OPE1_2B | |
113 | + , OPE1_2C, OPE1_2D, OPE1_2E, OPE1_2F | |
114 | + , OPE1_30, OPE1_31, OPE1_32, OPE1_33 | |
115 | + , OPE1_34, OPE1_35, OPE1_36, OPE1_37 | |
116 | + , OPE1_38, OPE1_39, OPE1_3A, OPE1_3B | |
117 | + , OPE1_3C, OPE1_3D, OPE1_3E, OPE1_3F | |
118 | +} INSN_OPE1; | |
119 | + | |
120 | +/* Enum declaration for insn ope enums. */ | |
121 | +typedef enum insn_ope2 { | |
122 | + OPE2_00, OPE2_01, OPE2_02, OPE2_03 | |
123 | + , OPE2_04, OPE2_05, OPE2_06, OPE2_07 | |
124 | + , OPE2_08, OPE2_09, OPE2_0A, OPE2_0B | |
125 | + , OPE2_0C, OPE2_0D, OPE2_0E, OPE2_0F | |
126 | +} INSN_OPE2; | |
127 | + | |
128 | +/* Enum declaration for insn ope enums. */ | |
129 | +typedef enum insn_ope3 { | |
130 | + OPE3_00, OPE3_01, OPE3_02, OPE3_03 | |
131 | + , OPE3_04, OPE3_05, OPE3_06, OPE3_07 | |
132 | +} INSN_OPE3; | |
133 | + | |
134 | +/* Enum declaration for insn ope enums. */ | |
135 | +typedef enum insn_ope4 { | |
136 | + OPE4_0, OPE4_1, OPE4_2, OPE4_3 | |
137 | +} INSN_OPE4; | |
138 | + | |
139 | +/* Enum declaration for integer branch cond enums. */ | |
140 | +typedef enum int_cc { | |
141 | + ICC_NEV, ICC_C, ICC_V, ICC_LT | |
142 | + , ICC_EQ, ICC_LS, ICC_N, ICC_LE | |
143 | + , ICC_RA, ICC_NC, ICC_NV, ICC_GE | |
144 | + , ICC_NE, ICC_HI, ICC_P, ICC_GT | |
145 | +} INT_CC; | |
146 | + | |
147 | +/* Enum declaration for float branch cond enums. */ | |
148 | +typedef enum flt_cc { | |
149 | + FCC_NEV, FCC_U, FCC_GT, FCC_UG | |
150 | + , FCC_LT, FCC_UL, FCC_LG, FCC_NE | |
151 | + , FCC_EQ, FCC_UE, FCC_GE, FCC_UGE | |
152 | + , FCC_LE, FCC_ULE, FCC_O, FCC_RA | |
153 | +} FLT_CC; | |
154 | + | |
155 | +/* Enum declaration for . */ | |
156 | +typedef enum gr_names { | |
157 | + H_GR_SP = 1, H_GR_FP = 2, H_GR_GR0 = 0, H_GR_GR1 = 1 | |
158 | + , H_GR_GR2 = 2, H_GR_GR3 = 3, H_GR_GR4 = 4, H_GR_GR5 = 5 | |
159 | + , H_GR_GR6 = 6, H_GR_GR7 = 7, H_GR_GR8 = 8, H_GR_GR9 = 9 | |
160 | + , H_GR_GR10 = 10, H_GR_GR11 = 11, H_GR_GR12 = 12, H_GR_GR13 = 13 | |
161 | + , H_GR_GR14 = 14, H_GR_GR15 = 15, H_GR_GR16 = 16, H_GR_GR17 = 17 | |
162 | + , H_GR_GR18 = 18, H_GR_GR19 = 19, H_GR_GR20 = 20, H_GR_GR21 = 21 | |
163 | + , H_GR_GR22 = 22, H_GR_GR23 = 23, H_GR_GR24 = 24, H_GR_GR25 = 25 | |
164 | + , H_GR_GR26 = 26, H_GR_GR27 = 27, H_GR_GR28 = 28, H_GR_GR29 = 29 | |
165 | + , H_GR_GR30 = 30, H_GR_GR31 = 31, H_GR_GR32 = 32, H_GR_GR33 = 33 | |
166 | + , H_GR_GR34 = 34, H_GR_GR35 = 35, H_GR_GR36 = 36, H_GR_GR37 = 37 | |
167 | + , H_GR_GR38 = 38, H_GR_GR39 = 39, H_GR_GR40 = 40, H_GR_GR41 = 41 | |
168 | + , H_GR_GR42 = 42, H_GR_GR43 = 43, H_GR_GR44 = 44, H_GR_GR45 = 45 | |
169 | + , H_GR_GR46 = 46, H_GR_GR47 = 47, H_GR_GR48 = 48, H_GR_GR49 = 49 | |
170 | + , H_GR_GR50 = 50, H_GR_GR51 = 51, H_GR_GR52 = 52, H_GR_GR53 = 53 | |
171 | + , H_GR_GR54 = 54, H_GR_GR55 = 55, H_GR_GR56 = 56, H_GR_GR57 = 57 | |
172 | + , H_GR_GR58 = 58, H_GR_GR59 = 59, H_GR_GR60 = 60, H_GR_GR61 = 61 | |
173 | + , H_GR_GR62 = 62, H_GR_GR63 = 63 | |
174 | +} GR_NAMES; | |
175 | + | |
176 | +/* Enum declaration for . */ | |
177 | +typedef enum fr_names { | |
178 | + H_FR_FR0, H_FR_FR1, H_FR_FR2, H_FR_FR3 | |
179 | + , H_FR_FR4, H_FR_FR5, H_FR_FR6, H_FR_FR7 | |
180 | + , H_FR_FR8, H_FR_FR9, H_FR_FR10, H_FR_FR11 | |
181 | + , H_FR_FR12, H_FR_FR13, H_FR_FR14, H_FR_FR15 | |
182 | + , H_FR_FR16, H_FR_FR17, H_FR_FR18, H_FR_FR19 | |
183 | + , H_FR_FR20, H_FR_FR21, H_FR_FR22, H_FR_FR23 | |
184 | + , H_FR_FR24, H_FR_FR25, H_FR_FR26, H_FR_FR27 | |
185 | + , H_FR_FR28, H_FR_FR29, H_FR_FR30, H_FR_FR31 | |
186 | + , H_FR_FR32, H_FR_FR33, H_FR_FR34, H_FR_FR35 | |
187 | + , H_FR_FR36, H_FR_FR37, H_FR_FR38, H_FR_FR39 | |
188 | + , H_FR_FR40, H_FR_FR41, H_FR_FR42, H_FR_FR43 | |
189 | + , H_FR_FR44, H_FR_FR45, H_FR_FR46, H_FR_FR47 | |
190 | + , H_FR_FR48, H_FR_FR49, H_FR_FR50, H_FR_FR51 | |
191 | + , H_FR_FR52, H_FR_FR53, H_FR_FR54, H_FR_FR55 | |
192 | + , H_FR_FR56, H_FR_FR57, H_FR_FR58, H_FR_FR59 | |
193 | + , H_FR_FR60, H_FR_FR61, H_FR_FR62, H_FR_FR63 | |
194 | +} FR_NAMES; | |
195 | + | |
196 | +/* Enum declaration for . */ | |
197 | +typedef enum cpr_names { | |
198 | + H_CPR_CPR0, H_CPR_CPR1, H_CPR_CPR2, H_CPR_CPR3 | |
199 | + , H_CPR_CPR4, H_CPR_CPR5, H_CPR_CPR6, H_CPR_CPR7 | |
200 | + , H_CPR_CPR8, H_CPR_CPR9, H_CPR_CPR10, H_CPR_CPR11 | |
201 | + , H_CPR_CPR12, H_CPR_CPR13, H_CPR_CPR14, H_CPR_CPR15 | |
202 | + , H_CPR_CPR16, H_CPR_CPR17, H_CPR_CPR18, H_CPR_CPR19 | |
203 | + , H_CPR_CPR20, H_CPR_CPR21, H_CPR_CPR22, H_CPR_CPR23 | |
204 | + , H_CPR_CPR24, H_CPR_CPR25, H_CPR_CPR26, H_CPR_CPR27 | |
205 | + , H_CPR_CPR28, H_CPR_CPR29, H_CPR_CPR30, H_CPR_CPR31 | |
206 | + , H_CPR_CPR32, H_CPR_CPR33, H_CPR_CPR34, H_CPR_CPR35 | |
207 | + , H_CPR_CPR36, H_CPR_CPR37, H_CPR_CPR38, H_CPR_CPR39 | |
208 | + , H_CPR_CPR40, H_CPR_CPR41, H_CPR_CPR42, H_CPR_CPR43 | |
209 | + , H_CPR_CPR44, H_CPR_CPR45, H_CPR_CPR46, H_CPR_CPR47 | |
210 | + , H_CPR_CPR48, H_CPR_CPR49, H_CPR_CPR50, H_CPR_CPR51 | |
211 | + , H_CPR_CPR52, H_CPR_CPR53, H_CPR_CPR54, H_CPR_CPR55 | |
212 | + , H_CPR_CPR56, H_CPR_CPR57, H_CPR_CPR58, H_CPR_CPR59 | |
213 | + , H_CPR_CPR60, H_CPR_CPR61, H_CPR_CPR62, H_CPR_CPR63 | |
214 | +} CPR_NAMES; | |
215 | + | |
216 | +/* Enum declaration for . */ | |
217 | +typedef enum spr_names { | |
218 | + H_SPR_PSR = 0, H_SPR_PCSR = 1, H_SPR_BPCSR = 2, H_SPR_TBR = 3 | |
219 | + , H_SPR_BPSR = 4, H_SPR_HSR0 = 16, H_SPR_HSR1 = 17, H_SPR_HSR2 = 18 | |
220 | + , H_SPR_HSR3 = 19, H_SPR_HSR4 = 20, H_SPR_HSR5 = 21, H_SPR_HSR6 = 22 | |
221 | + , H_SPR_HSR7 = 23, H_SPR_HSR8 = 24, H_SPR_HSR9 = 25, H_SPR_HSR10 = 26 | |
222 | + , H_SPR_HSR11 = 27, H_SPR_HSR12 = 28, H_SPR_HSR13 = 29, H_SPR_HSR14 = 30 | |
223 | + , H_SPR_HSR15 = 31, H_SPR_HSR16 = 32, H_SPR_HSR17 = 33, H_SPR_HSR18 = 34 | |
224 | + , H_SPR_HSR19 = 35, H_SPR_HSR20 = 36, H_SPR_HSR21 = 37, H_SPR_HSR22 = 38 | |
225 | + , H_SPR_HSR23 = 39, H_SPR_HSR24 = 40, H_SPR_HSR25 = 41, H_SPR_HSR26 = 42 | |
226 | + , H_SPR_HSR27 = 43, H_SPR_HSR28 = 44, H_SPR_HSR29 = 45, H_SPR_HSR30 = 46 | |
227 | + , H_SPR_HSR31 = 47, H_SPR_HSR32 = 48, H_SPR_HSR33 = 49, H_SPR_HSR34 = 50 | |
228 | + , H_SPR_HSR35 = 51, H_SPR_HSR36 = 52, H_SPR_HSR37 = 53, H_SPR_HSR38 = 54 | |
229 | + , H_SPR_HSR39 = 55, H_SPR_HSR40 = 56, H_SPR_HSR41 = 57, H_SPR_HSR42 = 58 | |
230 | + , H_SPR_HSR43 = 59, H_SPR_HSR44 = 60, H_SPR_HSR45 = 61, H_SPR_HSR46 = 62 | |
231 | + , H_SPR_HSR47 = 63, H_SPR_HSR48 = 64, H_SPR_HSR49 = 65, H_SPR_HSR50 = 66 | |
232 | + , H_SPR_HSR51 = 67, H_SPR_HSR52 = 68, H_SPR_HSR53 = 69, H_SPR_HSR54 = 70 | |
233 | + , H_SPR_HSR55 = 71, H_SPR_HSR56 = 72, H_SPR_HSR57 = 73, H_SPR_HSR58 = 74 | |
234 | + , H_SPR_HSR59 = 75, H_SPR_HSR60 = 76, H_SPR_HSR61 = 77, H_SPR_HSR62 = 78 | |
235 | + , H_SPR_HSR63 = 79, H_SPR_CCR = 256, H_SPR_CCCR = 263, H_SPR_LR = 272 | |
236 | + , H_SPR_LCR = 273, H_SPR_ISR = 288, H_SPR_NEEAR0 = 352, H_SPR_NEEAR1 = 353 | |
237 | + , H_SPR_NEEAR2 = 354, H_SPR_NEEAR3 = 355, H_SPR_NEEAR4 = 356, H_SPR_NEEAR5 = 357 | |
238 | + , H_SPR_NEEAR6 = 358, H_SPR_NEEAR7 = 359, H_SPR_NEEAR8 = 360, H_SPR_NEEAR9 = 361 | |
239 | + , H_SPR_NEEAR10 = 362, H_SPR_NEEAR11 = 363, H_SPR_NEEAR12 = 364, H_SPR_NEEAR13 = 365 | |
240 | + , H_SPR_NEEAR14 = 366, H_SPR_NEEAR15 = 367, H_SPR_NEEAR16 = 368, H_SPR_NEEAR17 = 369 | |
241 | + , H_SPR_NEEAR18 = 370, H_SPR_NEEAR19 = 371, H_SPR_NEEAR20 = 372, H_SPR_NEEAR21 = 373 | |
242 | + , H_SPR_NEEAR22 = 374, H_SPR_NEEAR23 = 375, H_SPR_NEEAR24 = 376, H_SPR_NEEAR25 = 377 | |
243 | + , H_SPR_NEEAR26 = 378, H_SPR_NEEAR27 = 379, H_SPR_NEEAR28 = 380, H_SPR_NEEAR29 = 381 | |
244 | + , H_SPR_NEEAR30 = 382, H_SPR_NEEAR31 = 383, H_SPR_NESR0 = 384, H_SPR_NESR1 = 385 | |
245 | + , H_SPR_NESR2 = 386, H_SPR_NESR3 = 387, H_SPR_NESR4 = 388, H_SPR_NESR5 = 389 | |
246 | + , H_SPR_NESR6 = 390, H_SPR_NESR7 = 391, H_SPR_NESR8 = 392, H_SPR_NESR9 = 393 | |
247 | + , H_SPR_NESR10 = 394, H_SPR_NESR11 = 395, H_SPR_NESR12 = 396, H_SPR_NESR13 = 397 | |
248 | + , H_SPR_NESR14 = 398, H_SPR_NESR15 = 399, H_SPR_NESR16 = 400, H_SPR_NESR17 = 401 | |
249 | + , H_SPR_NESR18 = 402, H_SPR_NESR19 = 403, H_SPR_NESR20 = 404, H_SPR_NESR21 = 405 | |
250 | + , H_SPR_NESR22 = 406, H_SPR_NESR23 = 407, H_SPR_NESR24 = 408, H_SPR_NESR25 = 409 | |
251 | + , H_SPR_NESR26 = 410, H_SPR_NESR27 = 411, H_SPR_NESR28 = 412, H_SPR_NESR29 = 413 | |
252 | + , H_SPR_NESR30 = 414, H_SPR_NESR31 = 415, H_SPR_NECR = 416, H_SPR_GNER0 = 432 | |
253 | + , H_SPR_GNER1 = 433, H_SPR_FNER0 = 434, H_SPR_FNER1 = 435, H_SPR_EPCR0 = 512 | |
254 | + , H_SPR_EPCR1 = 513, H_SPR_EPCR2 = 514, H_SPR_EPCR3 = 515, H_SPR_EPCR4 = 516 | |
255 | + , H_SPR_EPCR5 = 517, H_SPR_EPCR6 = 518, H_SPR_EPCR7 = 519, H_SPR_EPCR8 = 520 | |
256 | + , H_SPR_EPCR9 = 521, H_SPR_EPCR10 = 522, H_SPR_EPCR11 = 523, H_SPR_EPCR12 = 524 | |
257 | + , H_SPR_EPCR13 = 525, H_SPR_EPCR14 = 526, H_SPR_EPCR15 = 527, H_SPR_EPCR16 = 528 | |
258 | + , H_SPR_EPCR17 = 529, H_SPR_EPCR18 = 530, H_SPR_EPCR19 = 531, H_SPR_EPCR20 = 532 | |
259 | + , H_SPR_EPCR21 = 533, H_SPR_EPCR22 = 534, H_SPR_EPCR23 = 535, H_SPR_EPCR24 = 536 | |
260 | + , H_SPR_EPCR25 = 537, H_SPR_EPCR26 = 538, H_SPR_EPCR27 = 539, H_SPR_EPCR28 = 540 | |
261 | + , H_SPR_EPCR29 = 541, H_SPR_EPCR30 = 542, H_SPR_EPCR31 = 543, H_SPR_EPCR32 = 544 | |
262 | + , H_SPR_EPCR33 = 545, H_SPR_EPCR34 = 546, H_SPR_EPCR35 = 547, H_SPR_EPCR36 = 548 | |
263 | + , H_SPR_EPCR37 = 549, H_SPR_EPCR38 = 550, H_SPR_EPCR39 = 551, H_SPR_EPCR40 = 552 | |
264 | + , H_SPR_EPCR41 = 553, H_SPR_EPCR42 = 554, H_SPR_EPCR43 = 555, H_SPR_EPCR44 = 556 | |
265 | + , H_SPR_EPCR45 = 557, H_SPR_EPCR46 = 558, H_SPR_EPCR47 = 559, H_SPR_EPCR48 = 560 | |
266 | + , H_SPR_EPCR49 = 561, H_SPR_EPCR50 = 562, H_SPR_EPCR51 = 563, H_SPR_EPCR52 = 564 | |
267 | + , H_SPR_EPCR53 = 565, H_SPR_EPCR54 = 566, H_SPR_EPCR55 = 567, H_SPR_EPCR56 = 568 | |
268 | + , H_SPR_EPCR57 = 569, H_SPR_EPCR58 = 570, H_SPR_EPCR59 = 571, H_SPR_EPCR60 = 572 | |
269 | + , H_SPR_EPCR61 = 573, H_SPR_EPCR62 = 574, H_SPR_EPCR63 = 575, H_SPR_ESR0 = 576 | |
270 | + , H_SPR_ESR1 = 577, H_SPR_ESR2 = 578, H_SPR_ESR3 = 579, H_SPR_ESR4 = 580 | |
271 | + , H_SPR_ESR5 = 581, H_SPR_ESR6 = 582, H_SPR_ESR7 = 583, H_SPR_ESR8 = 584 | |
272 | + , H_SPR_ESR9 = 585, H_SPR_ESR10 = 586, H_SPR_ESR11 = 587, H_SPR_ESR12 = 588 | |
273 | + , H_SPR_ESR13 = 589, H_SPR_ESR14 = 590, H_SPR_ESR15 = 591, H_SPR_ESR16 = 592 | |
274 | + , H_SPR_ESR17 = 593, H_SPR_ESR18 = 594, H_SPR_ESR19 = 595, H_SPR_ESR20 = 596 | |
275 | + , H_SPR_ESR21 = 597, H_SPR_ESR22 = 598, H_SPR_ESR23 = 599, H_SPR_ESR24 = 600 | |
276 | + , H_SPR_ESR25 = 601, H_SPR_ESR26 = 602, H_SPR_ESR27 = 603, H_SPR_ESR28 = 604 | |
277 | + , H_SPR_ESR29 = 605, H_SPR_ESR30 = 606, H_SPR_ESR31 = 607, H_SPR_ESR32 = 608 | |
278 | + , H_SPR_ESR33 = 609, H_SPR_ESR34 = 610, H_SPR_ESR35 = 611, H_SPR_ESR36 = 612 | |
279 | + , H_SPR_ESR37 = 613, H_SPR_ESR38 = 614, H_SPR_ESR39 = 615, H_SPR_ESR40 = 616 | |
280 | + , H_SPR_ESR41 = 617, H_SPR_ESR42 = 618, H_SPR_ESR43 = 619, H_SPR_ESR44 = 620 | |
281 | + , H_SPR_ESR45 = 621, H_SPR_ESR46 = 622, H_SPR_ESR47 = 623, H_SPR_ESR48 = 624 | |
282 | + , H_SPR_ESR49 = 625, H_SPR_ESR50 = 626, H_SPR_ESR51 = 627, H_SPR_ESR52 = 628 | |
283 | + , H_SPR_ESR53 = 629, H_SPR_ESR54 = 630, H_SPR_ESR55 = 631, H_SPR_ESR56 = 632 | |
284 | + , H_SPR_ESR57 = 633, H_SPR_ESR58 = 634, H_SPR_ESR59 = 635, H_SPR_ESR60 = 636 | |
285 | + , H_SPR_ESR61 = 637, H_SPR_ESR62 = 638, H_SPR_ESR63 = 639, H_SPR_EIR0 = 640 | |
286 | + , H_SPR_EIR1 = 641, H_SPR_EIR2 = 642, H_SPR_EIR3 = 643, H_SPR_EIR4 = 644 | |
287 | + , H_SPR_EIR5 = 645, H_SPR_EIR6 = 646, H_SPR_EIR7 = 647, H_SPR_EIR8 = 648 | |
288 | + , H_SPR_EIR9 = 649, H_SPR_EIR10 = 650, H_SPR_EIR11 = 651, H_SPR_EIR12 = 652 | |
289 | + , H_SPR_EIR13 = 653, H_SPR_EIR14 = 654, H_SPR_EIR15 = 655, H_SPR_EIR16 = 656 | |
290 | + , H_SPR_EIR17 = 657, H_SPR_EIR18 = 658, H_SPR_EIR19 = 659, H_SPR_EIR20 = 660 | |
291 | + , H_SPR_EIR21 = 661, H_SPR_EIR22 = 662, H_SPR_EIR23 = 663, H_SPR_EIR24 = 664 | |
292 | + , H_SPR_EIR25 = 665, H_SPR_EIR26 = 666, H_SPR_EIR27 = 667, H_SPR_EIR28 = 668 | |
293 | + , H_SPR_EIR29 = 669, H_SPR_EIR30 = 670, H_SPR_EIR31 = 671, H_SPR_ESFR0 = 672 | |
294 | + , H_SPR_ESFR1 = 673, H_SPR_SR0 = 768, H_SPR_SR1 = 769, H_SPR_SR2 = 770 | |
295 | + , H_SPR_SR3 = 771, H_SPR_FSR0 = 1024, H_SPR_FSR1 = 1025, H_SPR_FSR2 = 1026 | |
296 | + , H_SPR_FSR3 = 1027, H_SPR_FSR4 = 1028, H_SPR_FSR5 = 1029, H_SPR_FSR6 = 1030 | |
297 | + , H_SPR_FSR7 = 1031, H_SPR_FSR8 = 1032, H_SPR_FSR9 = 1033, H_SPR_FSR10 = 1034 | |
298 | + , H_SPR_FSR11 = 1035, H_SPR_FSR12 = 1036, H_SPR_FSR13 = 1037, H_SPR_FSR14 = 1038 | |
299 | + , H_SPR_FSR15 = 1039, H_SPR_FSR16 = 1040, H_SPR_FSR17 = 1041, H_SPR_FSR18 = 1042 | |
300 | + , H_SPR_FSR19 = 1043, H_SPR_FSR20 = 1044, H_SPR_FSR21 = 1045, H_SPR_FSR22 = 1046 | |
301 | + , H_SPR_FSR23 = 1047, H_SPR_FSR24 = 1048, H_SPR_FSR25 = 1049, H_SPR_FSR26 = 1050 | |
302 | + , H_SPR_FSR27 = 1051, H_SPR_FSR28 = 1052, H_SPR_FSR29 = 1053, H_SPR_FSR30 = 1054 | |
303 | + , H_SPR_FSR31 = 1055, H_SPR_FSR32 = 1056, H_SPR_FSR33 = 1057, H_SPR_FSR34 = 1058 | |
304 | + , H_SPR_FSR35 = 1059, H_SPR_FSR36 = 1060, H_SPR_FSR37 = 1061, H_SPR_FSR38 = 1062 | |
305 | + , H_SPR_FSR39 = 1063, H_SPR_FSR40 = 1064, H_SPR_FSR41 = 1065, H_SPR_FSR42 = 1066 | |
306 | + , H_SPR_FSR43 = 1067, H_SPR_FSR44 = 1068, H_SPR_FSR45 = 1069, H_SPR_FSR46 = 1070 | |
307 | + , H_SPR_FSR47 = 1071, H_SPR_FSR48 = 1072, H_SPR_FSR49 = 1073, H_SPR_FSR50 = 1074 | |
308 | + , H_SPR_FSR51 = 1075, H_SPR_FSR52 = 1076, H_SPR_FSR53 = 1077, H_SPR_FSR54 = 1078 | |
309 | + , H_SPR_FSR55 = 1079, H_SPR_FSR56 = 1080, H_SPR_FSR57 = 1081, H_SPR_FSR58 = 1082 | |
310 | + , H_SPR_FSR59 = 1083, H_SPR_FSR60 = 1084, H_SPR_FSR61 = 1085, H_SPR_FSR62 = 1086 | |
311 | + , H_SPR_FSR63 = 1087, H_SPR_FQOP0 = 1088, H_SPR_FQOP1 = 1090, H_SPR_FQOP2 = 1092 | |
312 | + , H_SPR_FQOP3 = 1094, H_SPR_FQOP4 = 1096, H_SPR_FQOP5 = 1098, H_SPR_FQOP6 = 1100 | |
313 | + , H_SPR_FQOP7 = 1102, H_SPR_FQOP8 = 1104, H_SPR_FQOP9 = 1106, H_SPR_FQOP10 = 1108 | |
314 | + , H_SPR_FQOP11 = 1110, H_SPR_FQOP12 = 1112, H_SPR_FQOP13 = 1114, H_SPR_FQOP14 = 1116 | |
315 | + , H_SPR_FQOP15 = 1118, H_SPR_FQOP16 = 1120, H_SPR_FQOP17 = 1122, H_SPR_FQOP18 = 1124 | |
316 | + , H_SPR_FQOP19 = 1126, H_SPR_FQOP20 = 1128, H_SPR_FQOP21 = 1130, H_SPR_FQOP22 = 1132 | |
317 | + , H_SPR_FQOP23 = 1134, H_SPR_FQOP24 = 1136, H_SPR_FQOP25 = 1138, H_SPR_FQOP26 = 1140 | |
318 | + , H_SPR_FQOP27 = 1142, H_SPR_FQOP28 = 1144, H_SPR_FQOP29 = 1146, H_SPR_FQOP30 = 1148 | |
319 | + , H_SPR_FQOP31 = 1150, H_SPR_FQST0 = 1089, H_SPR_FQST1 = 1091, H_SPR_FQST2 = 1093 | |
320 | + , H_SPR_FQST3 = 1095, H_SPR_FQST4 = 1097, H_SPR_FQST5 = 1099, H_SPR_FQST6 = 1101 | |
321 | + , H_SPR_FQST7 = 1103, H_SPR_FQST8 = 1105, H_SPR_FQST9 = 1107, H_SPR_FQST10 = 1109 | |
322 | + , H_SPR_FQST11 = 1111, H_SPR_FQST12 = 1113, H_SPR_FQST13 = 1115, H_SPR_FQST14 = 1117 | |
323 | + , H_SPR_FQST15 = 1119, H_SPR_FQST16 = 1121, H_SPR_FQST17 = 1123, H_SPR_FQST18 = 1125 | |
324 | + , H_SPR_FQST19 = 1127, H_SPR_FQST20 = 1129, H_SPR_FQST21 = 1131, H_SPR_FQST22 = 1133 | |
325 | + , H_SPR_FQST23 = 1135, H_SPR_FQST24 = 1137, H_SPR_FQST25 = 1139, H_SPR_FQST26 = 1141 | |
326 | + , H_SPR_FQST27 = 1143, H_SPR_FQST28 = 1145, H_SPR_FQST29 = 1147, H_SPR_FQST30 = 1149 | |
327 | + , H_SPR_FQST31 = 1151, H_SPR_MCILR0 = 1272, H_SPR_MCILR1 = 1273, H_SPR_MSR0 = 1280 | |
328 | + , H_SPR_MSR1 = 1281, H_SPR_MSR2 = 1282, H_SPR_MSR3 = 1283, H_SPR_MSR4 = 1284 | |
329 | + , H_SPR_MSR5 = 1285, H_SPR_MSR6 = 1286, H_SPR_MSR7 = 1287, H_SPR_MSR8 = 1288 | |
330 | + , H_SPR_MSR9 = 1289, H_SPR_MSR10 = 1290, H_SPR_MSR11 = 1291, H_SPR_MSR12 = 1292 | |
331 | + , H_SPR_MSR13 = 1293, H_SPR_MSR14 = 1294, H_SPR_MSR15 = 1295, H_SPR_MSR16 = 1296 | |
332 | + , H_SPR_MSR17 = 1297, H_SPR_MSR18 = 1298, H_SPR_MSR19 = 1299, H_SPR_MSR20 = 1300 | |
333 | + , H_SPR_MSR21 = 1301, H_SPR_MSR22 = 1302, H_SPR_MSR23 = 1303, H_SPR_MSR24 = 1304 | |
334 | + , H_SPR_MSR25 = 1305, H_SPR_MSR26 = 1306, H_SPR_MSR27 = 1307, H_SPR_MSR28 = 1308 | |
335 | + , H_SPR_MSR29 = 1309, H_SPR_MSR30 = 1310, H_SPR_MSR31 = 1311, H_SPR_MSR32 = 1312 | |
336 | + , H_SPR_MSR33 = 1313, H_SPR_MSR34 = 1314, H_SPR_MSR35 = 1315, H_SPR_MSR36 = 1316 | |
337 | + , H_SPR_MSR37 = 1317, H_SPR_MSR38 = 1318, H_SPR_MSR39 = 1319, H_SPR_MSR40 = 1320 | |
338 | + , H_SPR_MSR41 = 1321, H_SPR_MSR42 = 1322, H_SPR_MSR43 = 1323, H_SPR_MSR44 = 1324 | |
339 | + , H_SPR_MSR45 = 1325, H_SPR_MSR46 = 1326, H_SPR_MSR47 = 1327, H_SPR_MSR48 = 1328 | |
340 | + , H_SPR_MSR49 = 1329, H_SPR_MSR50 = 1330, H_SPR_MSR51 = 1331, H_SPR_MSR52 = 1332 | |
341 | + , H_SPR_MSR53 = 1333, H_SPR_MSR54 = 1334, H_SPR_MSR55 = 1335, H_SPR_MSR56 = 1336 | |
342 | + , H_SPR_MSR57 = 1337, H_SPR_MSR58 = 1338, H_SPR_MSR59 = 1339, H_SPR_MSR60 = 1340 | |
343 | + , H_SPR_MSR61 = 1341, H_SPR_MSR62 = 1342, H_SPR_MSR63 = 1343, H_SPR_MQOP0 = 1344 | |
344 | + , H_SPR_MQOP1 = 1346, H_SPR_MQOP2 = 1348, H_SPR_MQOP3 = 1350, H_SPR_MQOP4 = 1352 | |
345 | + , H_SPR_MQOP5 = 1354, H_SPR_MQOP6 = 1356, H_SPR_MQOP7 = 1358, H_SPR_MQOP8 = 1360 | |
346 | + , H_SPR_MQOP9 = 1362, H_SPR_MQOP10 = 1364, H_SPR_MQOP11 = 1366, H_SPR_MQOP12 = 1368 | |
347 | + , H_SPR_MQOP13 = 1370, H_SPR_MQOP14 = 1372, H_SPR_MQOP15 = 1374, H_SPR_MQOP16 = 1376 | |
348 | + , H_SPR_MQOP17 = 1378, H_SPR_MQOP18 = 1380, H_SPR_MQOP19 = 1382, H_SPR_MQOP20 = 1384 | |
349 | + , H_SPR_MQOP21 = 1386, H_SPR_MQOP22 = 1388, H_SPR_MQOP23 = 1390, H_SPR_MQOP24 = 1392 | |
350 | + , H_SPR_MQOP25 = 1394, H_SPR_MQOP26 = 1396, H_SPR_MQOP27 = 1398, H_SPR_MQOP28 = 1400 | |
351 | + , H_SPR_MQOP29 = 1402, H_SPR_MQOP30 = 1404, H_SPR_MQOP31 = 1406, H_SPR_MQST0 = 1345 | |
352 | + , H_SPR_MQST1 = 1347, H_SPR_MQST2 = 1349, H_SPR_MQST3 = 1351, H_SPR_MQST4 = 1353 | |
353 | + , H_SPR_MQST5 = 1355, H_SPR_MQST6 = 1357, H_SPR_MQST7 = 1359, H_SPR_MQST8 = 1361 | |
354 | + , H_SPR_MQST9 = 1363, H_SPR_MQST10 = 1365, H_SPR_MQST11 = 1367, H_SPR_MQST12 = 1369 | |
355 | + , H_SPR_MQST13 = 1371, H_SPR_MQST14 = 1373, H_SPR_MQST15 = 1375, H_SPR_MQST16 = 1377 | |
356 | + , H_SPR_MQST17 = 1379, H_SPR_MQST18 = 1381, H_SPR_MQST19 = 1383, H_SPR_MQST20 = 1385 | |
357 | + , H_SPR_MQST21 = 1387, H_SPR_MQST22 = 1389, H_SPR_MQST23 = 1391, H_SPR_MQST24 = 1393 | |
358 | + , H_SPR_MQST25 = 1395, H_SPR_MQST26 = 1397, H_SPR_MQST27 = 1399, H_SPR_MQST28 = 1401 | |
359 | + , H_SPR_MQST29 = 1403, H_SPR_MQST30 = 1405, H_SPR_MQST31 = 1407, H_SPR_EAR0 = 1536 | |
360 | + , H_SPR_EAR1 = 1537, H_SPR_EAR2 = 1538, H_SPR_EAR3 = 1539, H_SPR_EAR4 = 1540 | |
361 | + , H_SPR_EAR5 = 1541, H_SPR_EAR6 = 1542, H_SPR_EAR7 = 1543, H_SPR_EAR8 = 1544 | |
362 | + , H_SPR_EAR9 = 1545, H_SPR_EAR10 = 1546, H_SPR_EAR11 = 1547, H_SPR_EAR12 = 1548 | |
363 | + , H_SPR_EAR13 = 1549, H_SPR_EAR14 = 1550, H_SPR_EAR15 = 1551, H_SPR_EAR16 = 1552 | |
364 | + , H_SPR_EAR17 = 1553, H_SPR_EAR18 = 1554, H_SPR_EAR19 = 1555, H_SPR_EAR20 = 1556 | |
365 | + , H_SPR_EAR21 = 1557, H_SPR_EAR22 = 1558, H_SPR_EAR23 = 1559, H_SPR_EAR24 = 1560 | |
366 | + , H_SPR_EAR25 = 1561, H_SPR_EAR26 = 1562, H_SPR_EAR27 = 1563, H_SPR_EAR28 = 1564 | |
367 | + , H_SPR_EAR29 = 1565, H_SPR_EAR30 = 1566, H_SPR_EAR31 = 1567, H_SPR_EAR32 = 1568 | |
368 | + , H_SPR_EAR33 = 1569, H_SPR_EAR34 = 1570, H_SPR_EAR35 = 1571, H_SPR_EAR36 = 1572 | |
369 | + , H_SPR_EAR37 = 1573, H_SPR_EAR38 = 1574, H_SPR_EAR39 = 1575, H_SPR_EAR40 = 1576 | |
370 | + , H_SPR_EAR41 = 1577, H_SPR_EAR42 = 1578, H_SPR_EAR43 = 1579, H_SPR_EAR44 = 1580 | |
371 | + , H_SPR_EAR45 = 1581, H_SPR_EAR46 = 1582, H_SPR_EAR47 = 1583, H_SPR_EAR48 = 1584 | |
372 | + , H_SPR_EAR49 = 1585, H_SPR_EAR50 = 1586, H_SPR_EAR51 = 1587, H_SPR_EAR52 = 1588 | |
373 | + , H_SPR_EAR53 = 1589, H_SPR_EAR54 = 1590, H_SPR_EAR55 = 1591, H_SPR_EAR56 = 1592 | |
374 | + , H_SPR_EAR57 = 1593, H_SPR_EAR58 = 1594, H_SPR_EAR59 = 1595, H_SPR_EAR60 = 1596 | |
375 | + , H_SPR_EAR61 = 1597, H_SPR_EAR62 = 1598, H_SPR_EAR63 = 1599, H_SPR_EDR0 = 1600 | |
376 | + , H_SPR_EDR1 = 1601, H_SPR_EDR2 = 1602, H_SPR_EDR3 = 1603, H_SPR_EDR4 = 1604 | |
377 | + , H_SPR_EDR5 = 1605, H_SPR_EDR6 = 1606, H_SPR_EDR7 = 1607, H_SPR_EDR8 = 1608 | |
378 | + , H_SPR_EDR9 = 1609, H_SPR_EDR10 = 1610, H_SPR_EDR11 = 1611, H_SPR_EDR12 = 1612 | |
379 | + , H_SPR_EDR13 = 1613, H_SPR_EDR14 = 1614, H_SPR_EDR15 = 1615, H_SPR_EDR16 = 1616 | |
380 | + , H_SPR_EDR17 = 1617, H_SPR_EDR18 = 1618, H_SPR_EDR19 = 1619, H_SPR_EDR20 = 1620 | |
381 | + , H_SPR_EDR21 = 1621, H_SPR_EDR22 = 1622, H_SPR_EDR23 = 1623, H_SPR_EDR24 = 1624 | |
382 | + , H_SPR_EDR25 = 1625, H_SPR_EDR26 = 1626, H_SPR_EDR27 = 1627, H_SPR_EDR28 = 1628 | |
383 | + , H_SPR_EDR29 = 1629, H_SPR_EDR30 = 1630, H_SPR_EDR31 = 1631, H_SPR_EDR32 = 1632 | |
384 | + , H_SPR_EDR33 = 1636, H_SPR_EDR34 = 1634, H_SPR_EDR35 = 1635, H_SPR_EDR36 = 1636 | |
385 | + , H_SPR_EDR37 = 1637, H_SPR_EDR38 = 1638, H_SPR_EDR39 = 1639, H_SPR_EDR40 = 1640 | |
386 | + , H_SPR_EDR41 = 1641, H_SPR_EDR42 = 1642, H_SPR_EDR43 = 1643, H_SPR_EDR44 = 1644 | |
387 | + , H_SPR_EDR45 = 1645, H_SPR_EDR46 = 1646, H_SPR_EDR47 = 1647, H_SPR_EDR48 = 1648 | |
388 | + , H_SPR_EDR49 = 1649, H_SPR_EDR50 = 1650, H_SPR_EDR51 = 1651, H_SPR_EDR52 = 1652 | |
389 | + , H_SPR_EDR53 = 1653, H_SPR_EDR54 = 1654, H_SPR_EDR55 = 1655, H_SPR_EDR56 = 1656 | |
390 | + , H_SPR_EDR57 = 1657, H_SPR_EDR58 = 1658, H_SPR_EDR59 = 1659, H_SPR_EDR60 = 1660 | |
391 | + , H_SPR_EDR61 = 1661, H_SPR_EDR62 = 1662, H_SPR_EDR63 = 1663, H_SPR_IAMLR0 = 1664 | |
392 | + , H_SPR_IAMLR1 = 1665, H_SPR_IAMLR2 = 1666, H_SPR_IAMLR3 = 1667, H_SPR_IAMLR4 = 1668 | |
393 | + , H_SPR_IAMLR5 = 1669, H_SPR_IAMLR6 = 1670, H_SPR_IAMLR7 = 1671, H_SPR_IAMLR8 = 1672 | |
394 | + , H_SPR_IAMLR9 = 1673, H_SPR_IAMLR10 = 1674, H_SPR_IAMLR11 = 1675, H_SPR_IAMLR12 = 1676 | |
395 | + , H_SPR_IAMLR13 = 1677, H_SPR_IAMLR14 = 1678, H_SPR_IAMLR15 = 1679, H_SPR_IAMLR16 = 1680 | |
396 | + , H_SPR_IAMLR17 = 1681, H_SPR_IAMLR18 = 1682, H_SPR_IAMLR19 = 1683, H_SPR_IAMLR20 = 1684 | |
397 | + , H_SPR_IAMLR21 = 1685, H_SPR_IAMLR22 = 1686, H_SPR_IAMLR23 = 1687, H_SPR_IAMLR24 = 1688 | |
398 | + , H_SPR_IAMLR25 = 1689, H_SPR_IAMLR26 = 1690, H_SPR_IAMLR27 = 1691, H_SPR_IAMLR28 = 1692 | |
399 | + , H_SPR_IAMLR29 = 1693, H_SPR_IAMLR30 = 1694, H_SPR_IAMLR31 = 1695, H_SPR_IAMLR32 = 1696 | |
400 | + , H_SPR_IAMLR33 = 1697, H_SPR_IAMLR34 = 1698, H_SPR_IAMLR35 = 1699, H_SPR_IAMLR36 = 1700 | |
401 | + , H_SPR_IAMLR37 = 1701, H_SPR_IAMLR38 = 1702, H_SPR_IAMLR39 = 1703, H_SPR_IAMLR40 = 1704 | |
402 | + , H_SPR_IAMLR41 = 1705, H_SPR_IAMLR42 = 1706, H_SPR_IAMLR43 = 1707, H_SPR_IAMLR44 = 1708 | |
403 | + , H_SPR_IAMLR45 = 1709, H_SPR_IAMLR46 = 1710, H_SPR_IAMLR47 = 1711, H_SPR_IAMLR48 = 1712 | |
404 | + , H_SPR_IAMLR49 = 1713, H_SPR_IAMLR50 = 1714, H_SPR_IAMLR51 = 1715, H_SPR_IAMLR52 = 1716 | |
405 | + , H_SPR_IAMLR53 = 1717, H_SPR_IAMLR54 = 1718, H_SPR_IAMLR55 = 1719, H_SPR_IAMLR56 = 1720 | |
406 | + , H_SPR_IAMLR57 = 1721, H_SPR_IAMLR58 = 1722, H_SPR_IAMLR59 = 1723, H_SPR_IAMLR60 = 1724 | |
407 | + , H_SPR_IAMLR61 = 1725, H_SPR_IAMLR62 = 1726, H_SPR_IAMLR63 = 1727, H_SPR_IAMPR0 = 1728 | |
408 | + , H_SPR_IAMPR1 = 1729, H_SPR_IAMPR2 = 1730, H_SPR_IAMPR3 = 1731, H_SPR_IAMPR4 = 1732 | |
409 | + , H_SPR_IAMPR5 = 1733, H_SPR_IAMPR6 = 1734, H_SPR_IAMPR7 = 1735, H_SPR_IAMPR8 = 1736 | |
410 | + , H_SPR_IAMPR9 = 1737, H_SPR_IAMPR10 = 1738, H_SPR_IAMPR11 = 1739, H_SPR_IAMPR12 = 1740 | |
411 | + , H_SPR_IAMPR13 = 1741, H_SPR_IAMPR14 = 1742, H_SPR_IAMPR15 = 1743, H_SPR_IAMPR16 = 1744 | |
412 | + , H_SPR_IAMPR17 = 1745, H_SPR_IAMPR18 = 1746, H_SPR_IAMPR19 = 1747, H_SPR_IAMPR20 = 1748 | |
413 | + , H_SPR_IAMPR21 = 1749, H_SPR_IAMPR22 = 1750, H_SPR_IAMPR23 = 1751, H_SPR_IAMPR24 = 1752 | |
414 | + , H_SPR_IAMPR25 = 1753, H_SPR_IAMPR26 = 1754, H_SPR_IAMPR27 = 1755, H_SPR_IAMPR28 = 1756 | |
415 | + , H_SPR_IAMPR29 = 1757, H_SPR_IAMPR30 = 1758, H_SPR_IAMPR31 = 1759, H_SPR_IAMPR32 = 1760 | |
416 | + , H_SPR_IAMPR33 = 1761, H_SPR_IAMPR34 = 1762, H_SPR_IAMPR35 = 1763, H_SPR_IAMPR36 = 1764 | |
417 | + , H_SPR_IAMPR37 = 1765, H_SPR_IAMPR38 = 1766, H_SPR_IAMPR39 = 1767, H_SPR_IAMPR40 = 1768 | |
418 | + , H_SPR_IAMPR41 = 1769, H_SPR_IAMPR42 = 1770, H_SPR_IAMPR43 = 1771, H_SPR_IAMPR44 = 1772 | |
419 | + , H_SPR_IAMPR45 = 1773, H_SPR_IAMPR46 = 1774, H_SPR_IAMPR47 = 1775, H_SPR_IAMPR48 = 1776 | |
420 | + , H_SPR_IAMPR49 = 1777, H_SPR_IAMPR50 = 1778, H_SPR_IAMPR51 = 1779, H_SPR_IAMPR52 = 1780 | |
421 | + , H_SPR_IAMPR53 = 1781, H_SPR_IAMPR54 = 1782, H_SPR_IAMPR55 = 1783, H_SPR_IAMPR56 = 1784 | |
422 | + , H_SPR_IAMPR57 = 1785, H_SPR_IAMPR58 = 1786, H_SPR_IAMPR59 = 1787, H_SPR_IAMPR60 = 1788 | |
423 | + , H_SPR_IAMPR61 = 1789, H_SPR_IAMPR62 = 1790, H_SPR_IAMPR63 = 1791, H_SPR_DAMLR0 = 1792 | |
424 | + , H_SPR_DAMLR1 = 1793, H_SPR_DAMLR2 = 1794, H_SPR_DAMLR3 = 1795, H_SPR_DAMLR4 = 1796 | |
425 | + , H_SPR_DAMLR5 = 1797, H_SPR_DAMLR6 = 1798, H_SPR_DAMLR7 = 1799, H_SPR_DAMLR8 = 1800 | |
426 | + , H_SPR_DAMLR9 = 1801, H_SPR_DAMLR10 = 1802, H_SPR_DAMLR11 = 1803, H_SPR_DAMLR12 = 1804 | |
427 | + , H_SPR_DAMLR13 = 1805, H_SPR_DAMLR14 = 1806, H_SPR_DAMLR15 = 1807, H_SPR_DAMLR16 = 1808 | |
428 | + , H_SPR_DAMLR17 = 1809, H_SPR_DAMLR18 = 1810, H_SPR_DAMLR19 = 1811, H_SPR_DAMLR20 = 1812 | |
429 | + , H_SPR_DAMLR21 = 1813, H_SPR_DAMLR22 = 1814, H_SPR_DAMLR23 = 1815, H_SPR_DAMLR24 = 1816 | |
430 | + , H_SPR_DAMLR25 = 1817, H_SPR_DAMLR26 = 1818, H_SPR_DAMLR27 = 1819, H_SPR_DAMLR28 = 1820 | |
431 | + , H_SPR_DAMLR29 = 1821, H_SPR_DAMLR30 = 1822, H_SPR_DAMLR31 = 1823, H_SPR_DAMLR32 = 1824 | |
432 | + , H_SPR_DAMLR33 = 1825, H_SPR_DAMLR34 = 1826, H_SPR_DAMLR35 = 1827, H_SPR_DAMLR36 = 1828 | |
433 | + , H_SPR_DAMLR37 = 1829, H_SPR_DAMLR38 = 1830, H_SPR_DAMLR39 = 1831, H_SPR_DAMLR40 = 1832 | |
434 | + , H_SPR_DAMLR41 = 1833, H_SPR_DAMLR42 = 1834, H_SPR_DAMLR43 = 1835, H_SPR_DAMLR44 = 1836 | |
435 | + , H_SPR_DAMLR45 = 1837, H_SPR_DAMLR46 = 1838, H_SPR_DAMLR47 = 1839, H_SPR_DAMLR48 = 1840 | |
436 | + , H_SPR_DAMLR49 = 1841, H_SPR_DAMLR50 = 1842, H_SPR_DAMLR51 = 1843, H_SPR_DAMLR52 = 1844 | |
437 | + , H_SPR_DAMLR53 = 1845, H_SPR_DAMLR54 = 1846, H_SPR_DAMLR55 = 1847, H_SPR_DAMLR56 = 1848 | |
438 | + , H_SPR_DAMLR57 = 1849, H_SPR_DAMLR58 = 1850, H_SPR_DAMLR59 = 1851, H_SPR_DAMLR60 = 1852 | |
439 | + , H_SPR_DAMLR61 = 1853, H_SPR_DAMLR62 = 1854, H_SPR_DAMLR63 = 1855, H_SPR_DAMPR0 = 1856 | |
440 | + , H_SPR_DAMPR1 = 1857, H_SPR_DAMPR2 = 1858, H_SPR_DAMPR3 = 1859, H_SPR_DAMPR4 = 1860 | |
441 | + , H_SPR_DAMPR5 = 1861, H_SPR_DAMPR6 = 1862, H_SPR_DAMPR7 = 1863, H_SPR_DAMPR8 = 1864 | |
442 | + , H_SPR_DAMPR9 = 1865, H_SPR_DAMPR10 = 1866, H_SPR_DAMPR11 = 1867, H_SPR_DAMPR12 = 1868 | |
443 | + , H_SPR_DAMPR13 = 1869, H_SPR_DAMPR14 = 1870, H_SPR_DAMPR15 = 1871, H_SPR_DAMPR16 = 1872 | |
444 | + , H_SPR_DAMPR17 = 1873, H_SPR_DAMPR18 = 1874, H_SPR_DAMPR19 = 1875, H_SPR_DAMPR20 = 1876 | |
445 | + , H_SPR_DAMPR21 = 1877, H_SPR_DAMPR22 = 1878, H_SPR_DAMPR23 = 1879, H_SPR_DAMPR24 = 1880 | |
446 | + , H_SPR_DAMPR25 = 1881, H_SPR_DAMPR26 = 1882, H_SPR_DAMPR27 = 1883, H_SPR_DAMPR28 = 1884 | |
447 | + , H_SPR_DAMPR29 = 1885, H_SPR_DAMPR30 = 1886, H_SPR_DAMPR31 = 1887, H_SPR_DAMPR32 = 1888 | |
448 | + , H_SPR_DAMPR33 = 1889, H_SPR_DAMPR34 = 1890, H_SPR_DAMPR35 = 1891, H_SPR_DAMPR36 = 1892 | |
449 | + , H_SPR_DAMPR37 = 1893, H_SPR_DAMPR38 = 1894, H_SPR_DAMPR39 = 1895, H_SPR_DAMPR40 = 1896 | |
450 | + , H_SPR_DAMPR41 = 1897, H_SPR_DAMPR42 = 1898, H_SPR_DAMPR43 = 1899, H_SPR_DAMPR44 = 1900 | |
451 | + , H_SPR_DAMPR45 = 1901, H_SPR_DAMPR46 = 1902, H_SPR_DAMPR47 = 1903, H_SPR_DAMPR48 = 1904 | |
452 | + , H_SPR_DAMPR49 = 1905, H_SPR_DAMPR50 = 1906, H_SPR_DAMPR51 = 1907, H_SPR_DAMPR52 = 1908 | |
453 | + , H_SPR_DAMPR53 = 1909, H_SPR_DAMPR54 = 1910, H_SPR_DAMPR55 = 1911, H_SPR_DAMPR56 = 1912 | |
454 | + , H_SPR_DAMPR57 = 1913, H_SPR_DAMPR58 = 1914, H_SPR_DAMPR59 = 1915, H_SPR_DAMPR60 = 1916 | |
455 | + , H_SPR_DAMPR61 = 1917, H_SPR_DAMPR62 = 1918, H_SPR_DAMPR63 = 1919, H_SPR_AMCR = 1920 | |
456 | + , H_SPR_STBAR = 1921, H_SPR_MMCR = 1922, H_SPR_DCR = 2048, H_SPR_BRR = 2049 | |
457 | + , H_SPR_NMAR = 2050, H_SPR_IBAR0 = 2052, H_SPR_IBAR1 = 2053, H_SPR_IBAR2 = 2054 | |
458 | + , H_SPR_IBAR3 = 2055, H_SPR_DBAR0 = 2056, H_SPR_DBAR1 = 2057, H_SPR_DBAR2 = 2058 | |
459 | + , H_SPR_DBAR3 = 2059, H_SPR_DBDR00 = 2060, H_SPR_DBDR01 = 2061, H_SPR_DBDR02 = 2062 | |
460 | + , H_SPR_DBDR03 = 2063, H_SPR_DBDR10 = 2064, H_SPR_DBDR11 = 2065, H_SPR_DBDR12 = 2066 | |
461 | + , H_SPR_DBDR13 = 2067, H_SPR_DBDR20 = 2068, H_SPR_DBDR21 = 2069, H_SPR_DBDR22 = 2070 | |
462 | + , H_SPR_DBDR23 = 2071, H_SPR_DBDR30 = 2072, H_SPR_DBDR31 = 2073, H_SPR_DBDR32 = 2074 | |
463 | + , H_SPR_DBDR33 = 2075, H_SPR_DBMR00 = 2076, H_SPR_DBMR01 = 2077, H_SPR_DBMR02 = 2078 | |
464 | + , H_SPR_DBMR03 = 2079, H_SPR_DBMR10 = 2080, H_SPR_DBMR11 = 2081, H_SPR_DBMR12 = 2082 | |
465 | + , H_SPR_DBMR13 = 2083, H_SPR_DBMR20 = 2084, H_SPR_DBMR21 = 2085, H_SPR_DBMR22 = 2086 | |
466 | + , H_SPR_DBMR23 = 2087, H_SPR_DBMR30 = 2088, H_SPR_DBMR31 = 2089, H_SPR_DBMR32 = 2090 | |
467 | + , H_SPR_DBMR33 = 2091, H_SPR_CPCFR = 2092, H_SPR_CPCR = 2093, H_SPR_CPSR = 2094 | |
468 | + , H_SPR_CPESR0 = 2096, H_SPR_CPESR1 = 2097, H_SPR_CPEMR0 = 2098, H_SPR_CPEMR1 = 2099 | |
469 | + , H_SPR_IHSR8 = 3848 | |
470 | +} SPR_NAMES; | |
471 | + | |
472 | +/* Enum declaration for . */ | |
473 | +typedef enum accg_names { | |
474 | + H_ACCG_ACCG0, H_ACCG_ACCG1, H_ACCG_ACCG2, H_ACCG_ACCG3 | |
475 | + , H_ACCG_ACCG4, H_ACCG_ACCG5, H_ACCG_ACCG6, H_ACCG_ACCG7 | |
476 | + , H_ACCG_ACCG8, H_ACCG_ACCG9, H_ACCG_ACCG10, H_ACCG_ACCG11 | |
477 | + , H_ACCG_ACCG12, H_ACCG_ACCG13, H_ACCG_ACCG14, H_ACCG_ACCG15 | |
478 | + , H_ACCG_ACCG16, H_ACCG_ACCG17, H_ACCG_ACCG18, H_ACCG_ACCG19 | |
479 | + , H_ACCG_ACCG20, H_ACCG_ACCG21, H_ACCG_ACCG22, H_ACCG_ACCG23 | |
480 | + , H_ACCG_ACCG24, H_ACCG_ACCG25, H_ACCG_ACCG26, H_ACCG_ACCG27 | |
481 | + , H_ACCG_ACCG28, H_ACCG_ACCG29, H_ACCG_ACCG30, H_ACCG_ACCG31 | |
482 | + , H_ACCG_ACCG32, H_ACCG_ACCG33, H_ACCG_ACCG34, H_ACCG_ACCG35 | |
483 | + , H_ACCG_ACCG36, H_ACCG_ACCG37, H_ACCG_ACCG38, H_ACCG_ACCG39 | |
484 | + , H_ACCG_ACCG40, H_ACCG_ACCG41, H_ACCG_ACCG42, H_ACCG_ACCG43 | |
485 | + , H_ACCG_ACCG44, H_ACCG_ACCG45, H_ACCG_ACCG46, H_ACCG_ACCG47 | |
486 | + , H_ACCG_ACCG48, H_ACCG_ACCG49, H_ACCG_ACCG50, H_ACCG_ACCG51 | |
487 | + , H_ACCG_ACCG52, H_ACCG_ACCG53, H_ACCG_ACCG54, H_ACCG_ACCG55 | |
488 | + , H_ACCG_ACCG56, H_ACCG_ACCG57, H_ACCG_ACCG58, H_ACCG_ACCG59 | |
489 | + , H_ACCG_ACCG60, H_ACCG_ACCG61, H_ACCG_ACCG62, H_ACCG_ACCG63 | |
490 | +} ACCG_NAMES; | |
491 | + | |
492 | +/* Enum declaration for . */ | |
493 | +typedef enum acc_names { | |
494 | + H_ACC40_ACC0, H_ACC40_ACC1, H_ACC40_ACC2, H_ACC40_ACC3 | |
495 | + , H_ACC40_ACC4, H_ACC40_ACC5, H_ACC40_ACC6, H_ACC40_ACC7 | |
496 | + , H_ACC40_ACC8, H_ACC40_ACC9, H_ACC40_ACC10, H_ACC40_ACC11 | |
497 | + , H_ACC40_ACC12, H_ACC40_ACC13, H_ACC40_ACC14, H_ACC40_ACC15 | |
498 | + , H_ACC40_ACC16, H_ACC40_ACC17, H_ACC40_ACC18, H_ACC40_ACC19 | |
499 | + , H_ACC40_ACC20, H_ACC40_ACC21, H_ACC40_ACC22, H_ACC40_ACC23 | |
500 | + , H_ACC40_ACC24, H_ACC40_ACC25, H_ACC40_ACC26, H_ACC40_ACC27 | |
501 | + , H_ACC40_ACC28, H_ACC40_ACC29, H_ACC40_ACC30, H_ACC40_ACC31 | |
502 | + , H_ACC40_ACC32, H_ACC40_ACC33, H_ACC40_ACC34, H_ACC40_ACC35 | |
503 | + , H_ACC40_ACC36, H_ACC40_ACC37, H_ACC40_ACC38, H_ACC40_ACC39 | |
504 | + , H_ACC40_ACC40, H_ACC40_ACC41, H_ACC40_ACC42, H_ACC40_ACC43 | |
505 | + , H_ACC40_ACC44, H_ACC40_ACC45, H_ACC40_ACC46, H_ACC40_ACC47 | |
506 | + , H_ACC40_ACC48, H_ACC40_ACC49, H_ACC40_ACC50, H_ACC40_ACC51 | |
507 | + , H_ACC40_ACC52, H_ACC40_ACC53, H_ACC40_ACC54, H_ACC40_ACC55 | |
508 | + , H_ACC40_ACC56, H_ACC40_ACC57, H_ACC40_ACC58, H_ACC40_ACC59 | |
509 | + , H_ACC40_ACC60, H_ACC40_ACC61, H_ACC40_ACC62, H_ACC40_ACC63 | |
510 | +} ACC_NAMES; | |
511 | + | |
512 | +/* Enum declaration for . */ | |
513 | +typedef enum iccr_names { | |
514 | + H_ICCR_ICC0, H_ICCR_ICC1, H_ICCR_ICC2, H_ICCR_ICC3 | |
515 | +} ICCR_NAMES; | |
516 | + | |
517 | +/* Enum declaration for . */ | |
518 | +typedef enum fccr_names { | |
519 | + H_FCCR_FCC0, H_FCCR_FCC1, H_FCCR_FCC2, H_FCCR_FCC3 | |
520 | +} FCCR_NAMES; | |
521 | + | |
522 | +/* Enum declaration for . */ | |
523 | +typedef enum cccr_names { | |
524 | + H_CCCR_CC0, H_CCCR_CC1, H_CCCR_CC2, H_CCCR_CC3 | |
525 | + , H_CCCR_CC4, H_CCCR_CC5, H_CCCR_CC6, H_CCCR_CC7 | |
526 | +} CCCR_NAMES; | |
527 | + | |
528 | +/* Attributes. */ | |
529 | + | |
530 | +/* Enum declaration for machine type selection. */ | |
531 | +typedef enum mach_attr { | |
532 | + MACH_BASE, MACH_FRV, MACH_FR500, MACH_FR400 | |
533 | + , MACH_TOMCAT, MACH_SIMPLE, MACH_MAX | |
534 | +} MACH_ATTR; | |
535 | + | |
536 | +/* Enum declaration for instruction set selection. */ | |
537 | +typedef enum isa_attr { | |
538 | + ISA_FRV, ISA_MAX | |
539 | +} ISA_ATTR; | |
540 | + | |
541 | +/* Enum declaration for parallel execution pipeline selection. */ | |
542 | +typedef enum unit_attr { | |
543 | + UNIT_NIL, UNIT_I0, UNIT_I1, UNIT_I01 | |
544 | + , UNIT_FM0, UNIT_FM1, UNIT_FM01, UNIT_B0 | |
545 | + , UNIT_B1, UNIT_B01, UNIT_C, UNIT_MULT_DIV | |
546 | + , UNIT_LOAD, UNIT_NUM_UNITS | |
547 | +} UNIT_ATTR; | |
548 | + | |
549 | +/* Enum declaration for fr400 major insn categories. */ | |
550 | +typedef enum fr400_major_attr { | |
551 | + FR400_MAJOR_NONE, FR400_MAJOR_I_1, FR400_MAJOR_I_2, FR400_MAJOR_I_3 | |
552 | + , FR400_MAJOR_I_4, FR400_MAJOR_I_5, FR400_MAJOR_B_1, FR400_MAJOR_B_2 | |
553 | + , FR400_MAJOR_B_3, FR400_MAJOR_B_4, FR400_MAJOR_B_5, FR400_MAJOR_B_6 | |
554 | + , FR400_MAJOR_C_1, FR400_MAJOR_C_2, FR400_MAJOR_M_1, FR400_MAJOR_M_2 | |
555 | +} FR400_MAJOR_ATTR; | |
556 | + | |
557 | +/* Enum declaration for fr500 major insn categories. */ | |
558 | +typedef enum fr500_major_attr { | |
559 | + FR500_MAJOR_NONE, FR500_MAJOR_I_1, FR500_MAJOR_I_2, FR500_MAJOR_I_3 | |
560 | + , FR500_MAJOR_I_4, FR500_MAJOR_I_5, FR500_MAJOR_I_6, FR500_MAJOR_B_1 | |
561 | + , FR500_MAJOR_B_2, FR500_MAJOR_B_3, FR500_MAJOR_B_4, FR500_MAJOR_B_5 | |
562 | + , FR500_MAJOR_B_6, FR500_MAJOR_C_1, FR500_MAJOR_C_2, FR500_MAJOR_F_1 | |
563 | + , FR500_MAJOR_F_2, FR500_MAJOR_F_3, FR500_MAJOR_F_4, FR500_MAJOR_F_5 | |
564 | + , FR500_MAJOR_F_6, FR500_MAJOR_F_7, FR500_MAJOR_F_8, FR500_MAJOR_M_1 | |
565 | + , FR500_MAJOR_M_2, FR500_MAJOR_M_3, FR500_MAJOR_M_4, FR500_MAJOR_M_5 | |
566 | + , FR500_MAJOR_M_6, FR500_MAJOR_M_7, FR500_MAJOR_M_8 | |
567 | +} FR500_MAJOR_ATTR; | |
568 | + | |
569 | +/* Number of architecture variants. */ | |
570 | +#define MAX_ISAS 1 | |
571 | +#define MAX_MACHS ((int) MACH_MAX) | |
572 | + | |
573 | +/* Ifield support. */ | |
574 | + | |
575 | +extern const struct cgen_ifld frv_cgen_ifld_table[]; | |
576 | + | |
577 | +/* Ifield attribute indices. */ | |
578 | + | |
579 | +/* Enum declaration for cgen_ifld attrs. */ | |
580 | +typedef enum cgen_ifld_attr { | |
581 | + CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED | |
582 | + , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_END_BOOLS, CGEN_IFLD_START_NBOOLS = 31 | |
583 | + , CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS | |
584 | +} CGEN_IFLD_ATTR; | |
585 | + | |
586 | +/* Number of non-boolean elements in cgen_ifld_attr. */ | |
587 | +#define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1) | |
588 | + | |
589 | +/* Enum declaration for frv ifield types. */ | |
590 | +typedef enum ifield_type { | |
591 | + FRV_F_NIL, FRV_F_ANYOF, FRV_F_PACK, FRV_F_OP | |
592 | + , FRV_F_OPE1, FRV_F_OPE2, FRV_F_OPE3, FRV_F_OPE4 | |
593 | + , FRV_F_GRI, FRV_F_GRJ, FRV_F_GRK, FRV_F_FRI | |
594 | + , FRV_F_FRJ, FRV_F_FRK, FRV_F_CPRI, FRV_F_CPRJ | |
595 | + , FRV_F_CPRK, FRV_F_ACCGI, FRV_F_ACCGK, FRV_F_ACC40SI | |
596 | + , FRV_F_ACC40UI, FRV_F_ACC40SK, FRV_F_ACC40UK, FRV_F_CRI | |
597 | + , FRV_F_CRJ, FRV_F_CRK, FRV_F_CCI, FRV_F_CRJ_INT | |
598 | + , FRV_F_CRJ_FLOAT, FRV_F_ICCI_1, FRV_F_ICCI_2, FRV_F_ICCI_3 | |
599 | + , FRV_F_FCCI_1, FRV_F_FCCI_2, FRV_F_FCCI_3, FRV_F_FCCK | |
600 | + , FRV_F_EIR, FRV_F_S10, FRV_F_S12, FRV_F_D12 | |
601 | + , FRV_F_U16, FRV_F_S16, FRV_F_S6, FRV_F_S6_1 | |
602 | + , FRV_F_U6, FRV_F_S5, FRV_F_U12_H, FRV_F_U12_L | |
603 | + , FRV_F_U12, FRV_F_INT_CC, FRV_F_FLT_CC, FRV_F_COND | |
604 | + , FRV_F_CCOND, FRV_F_HINT, FRV_F_LI, FRV_F_LOCK | |
605 | + , FRV_F_DEBUG, FRV_F_A, FRV_F_AE, FRV_F_SPR_H | |
606 | + , FRV_F_SPR_L, FRV_F_SPR, FRV_F_LABEL16, FRV_F_LABELH6 | |
607 | + , FRV_F_LABELL18, FRV_F_LABEL24, FRV_F_ICCI_1_NULL, FRV_F_ICCI_2_NULL | |
608 | + , FRV_F_ICCI_3_NULL, FRV_F_FCCI_1_NULL, FRV_F_FCCI_2_NULL, FRV_F_FCCI_3_NULL | |
609 | + , FRV_F_RS_NULL, FRV_F_GRI_NULL, FRV_F_GRJ_NULL, FRV_F_GRK_NULL | |
610 | + , FRV_F_FRI_NULL, FRV_F_FRJ_NULL, FRV_F_ACCJ_NULL, FRV_F_RD_NULL | |
611 | + , FRV_F_COND_NULL, FRV_F_CCOND_NULL, FRV_F_S12_NULL, FRV_F_LABEL16_NULL | |
612 | + , FRV_F_MISC_NULL_1, FRV_F_MISC_NULL_2, FRV_F_MISC_NULL_3, FRV_F_MISC_NULL_4 | |
613 | + , FRV_F_MISC_NULL_5, FRV_F_MISC_NULL_6, FRV_F_MISC_NULL_7, FRV_F_MISC_NULL_8 | |
614 | + , FRV_F_MISC_NULL_9, FRV_F_MISC_NULL_10, FRV_F_MISC_NULL_11, FRV_F_LI_OFF | |
615 | + , FRV_F_LI_ON, FRV_F_MAX | |
616 | +} IFIELD_TYPE; | |
617 | + | |
618 | +#define MAX_IFLD ((int) FRV_F_MAX) | |
619 | + | |
620 | +/* Hardware attribute indices. */ | |
621 | + | |
622 | +/* Enum declaration for cgen_hw attrs. */ | |
623 | +typedef enum cgen_hw_attr { | |
624 | + CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE | |
625 | + , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS | |
626 | +} CGEN_HW_ATTR; | |
627 | + | |
628 | +/* Number of non-boolean elements in cgen_hw_attr. */ | |
629 | +#define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1) | |
630 | + | |
631 | +/* Enum declaration for frv hardware types. */ | |
632 | +typedef enum cgen_hw_type { | |
633 | + HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR | |
634 | + , HW_H_IADDR, HW_H_PC, HW_H_PSR_IMPLE, HW_H_PSR_VER | |
635 | + , HW_H_PSR_ICE, HW_H_PSR_NEM, HW_H_PSR_CM, HW_H_PSR_BE | |
636 | + , HW_H_PSR_ESR, HW_H_PSR_EF, HW_H_PSR_EM, HW_H_PSR_PIL | |
637 | + , HW_H_PSR_PS, HW_H_PSR_ET, HW_H_PSR_S, HW_H_TBR_TBA | |
638 | + , HW_H_TBR_TT, HW_H_BPSR_BS, HW_H_BPSR_BET, HW_H_GR | |
639 | + , HW_H_GR_DOUBLE, HW_H_GR_HI, HW_H_GR_LO, HW_H_FR | |
640 | + , HW_H_FR_DOUBLE, HW_H_FR_INT, HW_H_FR_HI, HW_H_FR_LO | |
641 | + , HW_H_FR_0, HW_H_FR_1, HW_H_FR_2, HW_H_FR_3 | |
642 | + , HW_H_CPR, HW_H_CPR_DOUBLE, HW_H_SPR, HW_H_ACCG | |
643 | + , HW_H_ACC40S, HW_H_ACC40U, HW_H_ICCR, HW_H_FCCR | |
644 | + , HW_H_CCCR, HW_H_PACK, HW_H_HINT_TAKEN, HW_H_HINT_NOT_TAKEN | |
645 | + , HW_MAX | |
646 | +} CGEN_HW_TYPE; | |
647 | + | |
648 | +#define MAX_HW ((int) HW_MAX) | |
649 | + | |
650 | +/* Operand attribute indices. */ | |
651 | + | |
652 | +/* Enum declaration for cgen_operand attrs. */ | |
653 | +typedef enum cgen_operand_attr { | |
654 | + CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT | |
655 | + , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY | |
656 | + , CGEN_OPERAND_HASH_PREFIX, CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH | |
657 | + , CGEN_OPERAND_END_NBOOLS | |
658 | +} CGEN_OPERAND_ATTR; | |
659 | + | |
660 | +/* Number of non-boolean elements in cgen_operand_attr. */ | |
661 | +#define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1) | |
662 | + | |
663 | +/* Enum declaration for frv operand types. */ | |
664 | +typedef enum cgen_operand_type { | |
665 | + FRV_OPERAND_PC, FRV_OPERAND_PACK, FRV_OPERAND_GRI, FRV_OPERAND_GRJ | |
666 | + , FRV_OPERAND_GRK, FRV_OPERAND_GRKHI, FRV_OPERAND_GRKLO, FRV_OPERAND_GRDOUBLEK | |
667 | + , FRV_OPERAND_ACC40SI, FRV_OPERAND_ACC40UI, FRV_OPERAND_ACC40SK, FRV_OPERAND_ACC40UK | |
668 | + , FRV_OPERAND_ACCGI, FRV_OPERAND_ACCGK, FRV_OPERAND_CPRI, FRV_OPERAND_CPRJ | |
669 | + , FRV_OPERAND_CPRK, FRV_OPERAND_CPRDOUBLEK, FRV_OPERAND_FRINTI, FRV_OPERAND_FRINTJ | |
670 | + , FRV_OPERAND_FRINTK, FRV_OPERAND_FRI, FRV_OPERAND_FRJ, FRV_OPERAND_FRK | |
671 | + , FRV_OPERAND_FRKHI, FRV_OPERAND_FRKLO, FRV_OPERAND_FRDOUBLEI, FRV_OPERAND_FRDOUBLEJ | |
672 | + , FRV_OPERAND_FRDOUBLEK, FRV_OPERAND_CRI, FRV_OPERAND_CRJ, FRV_OPERAND_CRJ_INT | |
673 | + , FRV_OPERAND_CRJ_FLOAT, FRV_OPERAND_CRK, FRV_OPERAND_CCI, FRV_OPERAND_ICCI_1 | |
674 | + , FRV_OPERAND_ICCI_2, FRV_OPERAND_ICCI_3, FRV_OPERAND_FCCI_1, FRV_OPERAND_FCCI_2 | |
675 | + , FRV_OPERAND_FCCI_3, FRV_OPERAND_FCCK, FRV_OPERAND_EIR, FRV_OPERAND_S10 | |
676 | + , FRV_OPERAND_U16, FRV_OPERAND_S16, FRV_OPERAND_S6, FRV_OPERAND_S6_1 | |
677 | + , FRV_OPERAND_U6, FRV_OPERAND_S5, FRV_OPERAND_COND, FRV_OPERAND_CCOND | |
678 | + , FRV_OPERAND_HINT, FRV_OPERAND_HINT_TAKEN, FRV_OPERAND_HINT_NOT_TAKEN, FRV_OPERAND_LI | |
679 | + , FRV_OPERAND_LOCK, FRV_OPERAND_DEBUG, FRV_OPERAND_A, FRV_OPERAND_AE | |
680 | + , FRV_OPERAND_LABEL16, FRV_OPERAND_LABEL24, FRV_OPERAND_D12, FRV_OPERAND_S12 | |
681 | + , FRV_OPERAND_U12, FRV_OPERAND_SPR, FRV_OPERAND_ULO16, FRV_OPERAND_SLO16 | |
682 | + , FRV_OPERAND_UHI16, FRV_OPERAND_PSR_ESR, FRV_OPERAND_PSR_S, FRV_OPERAND_PSR_PS | |
683 | + , FRV_OPERAND_PSR_ET, FRV_OPERAND_BPSR_BS, FRV_OPERAND_BPSR_BET, FRV_OPERAND_TBR_TBA | |
684 | + , FRV_OPERAND_TBR_TT, FRV_OPERAND_MAX | |
685 | +} CGEN_OPERAND_TYPE; | |
686 | + | |
687 | +/* Number of operands types. */ | |
688 | +#define MAX_OPERANDS 77 | |
689 | + | |
690 | +/* Maximum number of operands referenced by any insn. */ | |
691 | +#define MAX_OPERAND_INSTANCES 8 | |
692 | + | |
693 | +/* Insn attribute indices. */ | |
694 | + | |
695 | +/* Enum declaration for cgen_insn attrs. */ | |
696 | +typedef enum cgen_insn_attr { | |
697 | + CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI | |
698 | + , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAX | |
699 | + , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_PRIVILEGED, CGEN_INSN_NON_EXCEPTING | |
700 | + , CGEN_INSN_CONDITIONAL, CGEN_INSN_FR_ACCESS, CGEN_INSN_PRESERVE_OVF, CGEN_INSN_END_BOOLS | |
701 | + , CGEN_INSN_START_NBOOLS = 31, CGEN_INSN_MACH, CGEN_INSN_UNIT, CGEN_INSN_FR400_MAJOR | |
702 | + , CGEN_INSN_FR500_MAJOR, CGEN_INSN_END_NBOOLS | |
703 | +} CGEN_INSN_ATTR; | |
704 | + | |
705 | +/* Number of non-boolean elements in cgen_insn_attr. */ | |
706 | +#define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1) | |
707 | + | |
708 | +/* cgen.h uses things we just defined. */ | |
709 | +#include "opcode/cgen.h" | |
710 | + | |
711 | +/* Attributes. */ | |
712 | +extern const CGEN_ATTR_TABLE frv_cgen_hardware_attr_table[]; | |
713 | +extern const CGEN_ATTR_TABLE frv_cgen_ifield_attr_table[]; | |
714 | +extern const CGEN_ATTR_TABLE frv_cgen_operand_attr_table[]; | |
715 | +extern const CGEN_ATTR_TABLE frv_cgen_insn_attr_table[]; | |
716 | + | |
717 | +/* Hardware decls. */ | |
718 | + | |
719 | +extern CGEN_KEYWORD frv_cgen_opval_gr_names; | |
720 | +extern CGEN_KEYWORD frv_cgen_opval_gr_names; | |
721 | +extern CGEN_KEYWORD frv_cgen_opval_gr_names; | |
722 | +extern CGEN_KEYWORD frv_cgen_opval_gr_names; | |
723 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
724 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
725 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
726 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
727 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
728 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
729 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
730 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
731 | +extern CGEN_KEYWORD frv_cgen_opval_fr_names; | |
732 | +extern CGEN_KEYWORD frv_cgen_opval_cpr_names; | |
733 | +extern CGEN_KEYWORD frv_cgen_opval_cpr_names; | |
734 | +extern CGEN_KEYWORD frv_cgen_opval_spr_names; | |
735 | +extern CGEN_KEYWORD frv_cgen_opval_accg_names; | |
736 | +extern CGEN_KEYWORD frv_cgen_opval_acc_names; | |
737 | +extern CGEN_KEYWORD frv_cgen_opval_acc_names; | |
738 | +extern CGEN_KEYWORD frv_cgen_opval_iccr_names; | |
739 | +extern CGEN_KEYWORD frv_cgen_opval_fccr_names; | |
740 | +extern CGEN_KEYWORD frv_cgen_opval_cccr_names; | |
741 | +extern CGEN_KEYWORD frv_cgen_opval_h_pack; | |
742 | +extern CGEN_KEYWORD frv_cgen_opval_h_hint_taken; | |
743 | +extern CGEN_KEYWORD frv_cgen_opval_h_hint_not_taken; | |
744 | + | |
745 | + | |
746 | + | |
747 | + | |
748 | +#endif /* FRV_CPU_H */ |
@@ -0,0 +1,789 @@ | ||
1 | +/* Disassembler interface for targets using CGEN. -*- C -*- | |
2 | + CGEN: Cpu tools GENerator | |
3 | + | |
4 | +THIS FILE IS MACHINE GENERATED WITH CGEN. | |
5 | +- the resultant file is machine generated, cgen-dis.in isn't | |
6 | + | |
7 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. | |
8 | + | |
9 | +This file is part of the GNU Binutils and GDB, the GNU debugger. | |
10 | + | |
11 | +This program is free software; you can redistribute it and/or modify | |
12 | +it under the terms of the GNU General Public License as published by | |
13 | +the Free Software Foundation; either version 2, or (at your option) | |
14 | +any later version. | |
15 | + | |
16 | +This program is distributed in the hope that it will be useful, | |
17 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | +GNU General Public License for more details. | |
20 | + | |
21 | +You should have received a copy of the GNU General Public License | |
22 | +along with this program; if not, write to the Free Software Foundation, Inc., | |
23 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
24 | + | |
25 | +/* ??? Eventually more and more of this stuff can go to cpu-independent files. | |
26 | + Keep that in mind. */ | |
27 | + | |
28 | +#include "sysdep.h" | |
29 | +#include <stdio.h> | |
30 | +#include "ansidecl.h" | |
31 | +#include "dis-asm.h" | |
32 | +#include "bfd.h" | |
33 | +#include "symcat.h" | |
34 | +#include "frv-desc.h" | |
35 | +#include "frv-opc.h" | |
36 | +#include "opintl.h" | |
37 | + | |
38 | +/* Default text to print if an instruction isn't recognized. */ | |
39 | +#define UNKNOWN_INSN_MSG _("*unknown*") | |
40 | + | |
41 | +static void print_normal | |
42 | + PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int)); | |
43 | +static void print_address | |
44 | + PARAMS ((CGEN_CPU_DESC, PTR, bfd_vma, unsigned int, bfd_vma, int)); | |
45 | +static void print_keyword | |
46 | + PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int)); | |
47 | +static void print_insn_normal | |
48 | + PARAMS ((CGEN_CPU_DESC, PTR, const CGEN_INSN *, CGEN_FIELDS *, | |
49 | + bfd_vma, int)); | |
50 | +static int print_insn | |
51 | + PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, unsigned)); | |
52 | +static int default_print_insn | |
53 | + PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *)); | |
54 | +static int read_insn | |
55 | + PARAMS ((CGEN_CPU_DESC, bfd_vma, disassemble_info *, char *, int, | |
56 | + CGEN_EXTRACT_INFO *, unsigned long *)); | |
57 | + | |
58 | +/* -- disassembler routines inserted here */ | |
59 | + | |
60 | +/* -- dis.c */ | |
61 | +static void print_spr | |
62 | + PARAMS ((CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned)); | |
63 | +static void print_hi | |
64 | + PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int)); | |
65 | +static void print_lo | |
66 | + PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int)); | |
67 | + | |
68 | +static void | |
69 | +print_spr (cd, dis_info, names, regno, attrs) | |
70 | + CGEN_CPU_DESC cd; | |
71 | + PTR dis_info; | |
72 | + CGEN_KEYWORD *names; | |
73 | + long regno; | |
74 | + unsigned int attrs; | |
75 | +{ | |
76 | + /* Use the register index format for any unnamed registers. */ | |
77 | + if (cgen_keyword_lookup_value (names, regno) == NULL) | |
78 | + { | |
79 | + disassemble_info *info = (disassemble_info *) dis_info; | |
80 | + (*info->fprintf_func) (info->stream, "spr[%ld]", regno); | |
81 | + } | |
82 | + else | |
83 | + print_keyword (cd, dis_info, names, regno, attrs); | |
84 | +} | |
85 | + | |
86 | +static void | |
87 | +print_hi (cd, dis_info, value, attrs, pc, length) | |
88 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
89 | + PTR dis_info; | |
90 | + long value; | |
91 | + unsigned int attrs ATTRIBUTE_UNUSED; | |
92 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
93 | + int length ATTRIBUTE_UNUSED; | |
94 | +{ | |
95 | + disassemble_info *info = (disassemble_info *) dis_info; | |
96 | + if (value) | |
97 | + (*info->fprintf_func) (info->stream, "0x%lx", value); | |
98 | + else | |
99 | + (*info->fprintf_func) (info->stream, "hi(0x%lx)", value); | |
100 | +} | |
101 | + | |
102 | +static void | |
103 | +print_lo (cd, dis_info, value, attrs, pc, length) | |
104 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
105 | + PTR dis_info; | |
106 | + long value; | |
107 | + unsigned int attrs ATTRIBUTE_UNUSED; | |
108 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
109 | + int length ATTRIBUTE_UNUSED; | |
110 | +{ | |
111 | + disassemble_info *info = (disassemble_info *) dis_info; | |
112 | + if (value) | |
113 | + (*info->fprintf_func) (info->stream, "0x%lx", value); | |
114 | + else | |
115 | + (*info->fprintf_func) (info->stream, "lo(0x%lx)", value); | |
116 | +} | |
117 | + | |
118 | +/* -- */ | |
119 | + | |
120 | +void frv_cgen_print_operand | |
121 | + PARAMS ((CGEN_CPU_DESC, int, PTR, CGEN_FIELDS *, | |
122 | + void const *, bfd_vma, int)); | |
123 | + | |
124 | +/* Main entry point for printing operands. | |
125 | + XINFO is a `void *' and not a `disassemble_info *' to not put a requirement | |
126 | + of dis-asm.h on cgen.h. | |
127 | + | |
128 | + This function is basically just a big switch statement. Earlier versions | |
129 | + used tables to look up the function to use, but | |
130 | + - if the table contains both assembler and disassembler functions then | |
131 | + the disassembler contains much of the assembler and vice-versa, | |
132 | + - there's a lot of inlining possibilities as things grow, | |
133 | + - using a switch statement avoids the function call overhead. | |
134 | + | |
135 | + This function could be moved into `print_insn_normal', but keeping it | |
136 | + separate makes clear the interface between `print_insn_normal' and each of | |
137 | + the handlers. */ | |
138 | + | |
139 | +void | |
140 | +frv_cgen_print_operand (cd, opindex, xinfo, fields, attrs, pc, length) | |
141 | + CGEN_CPU_DESC cd; | |
142 | + int opindex; | |
143 | + PTR xinfo; | |
144 | + CGEN_FIELDS *fields; | |
145 | + void const *attrs ATTRIBUTE_UNUSED; | |
146 | + bfd_vma pc; | |
147 | + int length; | |
148 | +{ | |
149 | + disassemble_info *info = (disassemble_info *) xinfo; | |
150 | + | |
151 | + switch (opindex) | |
152 | + { | |
153 | + case FRV_OPERAND_A : | |
154 | + print_normal (cd, info, fields->f_A, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
155 | + break; | |
156 | + case FRV_OPERAND_ACC40SI : | |
157 | + print_keyword (cd, info, & frv_cgen_opval_acc_names, fields->f_ACC40Si, 0); | |
158 | + break; | |
159 | + case FRV_OPERAND_ACC40SK : | |
160 | + print_keyword (cd, info, & frv_cgen_opval_acc_names, fields->f_ACC40Sk, 0); | |
161 | + break; | |
162 | + case FRV_OPERAND_ACC40UI : | |
163 | + print_keyword (cd, info, & frv_cgen_opval_acc_names, fields->f_ACC40Ui, 0); | |
164 | + break; | |
165 | + case FRV_OPERAND_ACC40UK : | |
166 | + print_keyword (cd, info, & frv_cgen_opval_acc_names, fields->f_ACC40Uk, 0); | |
167 | + break; | |
168 | + case FRV_OPERAND_ACCGI : | |
169 | + print_keyword (cd, info, & frv_cgen_opval_accg_names, fields->f_ACCGi, 0); | |
170 | + break; | |
171 | + case FRV_OPERAND_ACCGK : | |
172 | + print_keyword (cd, info, & frv_cgen_opval_accg_names, fields->f_ACCGk, 0); | |
173 | + break; | |
174 | + case FRV_OPERAND_CCI : | |
175 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CCi, 0); | |
176 | + break; | |
177 | + case FRV_OPERAND_CPRDOUBLEK : | |
178 | + print_keyword (cd, info, & frv_cgen_opval_cpr_names, fields->f_CPRk, 0); | |
179 | + break; | |
180 | + case FRV_OPERAND_CPRI : | |
181 | + print_keyword (cd, info, & frv_cgen_opval_cpr_names, fields->f_CPRi, 0); | |
182 | + break; | |
183 | + case FRV_OPERAND_CPRJ : | |
184 | + print_keyword (cd, info, & frv_cgen_opval_cpr_names, fields->f_CPRj, 0); | |
185 | + break; | |
186 | + case FRV_OPERAND_CPRK : | |
187 | + print_keyword (cd, info, & frv_cgen_opval_cpr_names, fields->f_CPRk, 0); | |
188 | + break; | |
189 | + case FRV_OPERAND_CRI : | |
190 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CRi, 0); | |
191 | + break; | |
192 | + case FRV_OPERAND_CRJ : | |
193 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CRj, 0); | |
194 | + break; | |
195 | + case FRV_OPERAND_CRJ_FLOAT : | |
196 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CRj_float, 0); | |
197 | + break; | |
198 | + case FRV_OPERAND_CRJ_INT : | |
199 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CRj_int, 0); | |
200 | + break; | |
201 | + case FRV_OPERAND_CRK : | |
202 | + print_keyword (cd, info, & frv_cgen_opval_cccr_names, fields->f_CRk, 0); | |
203 | + break; | |
204 | + case FRV_OPERAND_FCCI_1 : | |
205 | + print_keyword (cd, info, & frv_cgen_opval_fccr_names, fields->f_FCCi_1, 0); | |
206 | + break; | |
207 | + case FRV_OPERAND_FCCI_2 : | |
208 | + print_keyword (cd, info, & frv_cgen_opval_fccr_names, fields->f_FCCi_2, 0); | |
209 | + break; | |
210 | + case FRV_OPERAND_FCCI_3 : | |
211 | + print_keyword (cd, info, & frv_cgen_opval_fccr_names, fields->f_FCCi_3, 0); | |
212 | + break; | |
213 | + case FRV_OPERAND_FCCK : | |
214 | + print_keyword (cd, info, & frv_cgen_opval_fccr_names, fields->f_FCCk, 0); | |
215 | + break; | |
216 | + case FRV_OPERAND_FRDOUBLEI : | |
217 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRi, 0); | |
218 | + break; | |
219 | + case FRV_OPERAND_FRDOUBLEJ : | |
220 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0); | |
221 | + break; | |
222 | + case FRV_OPERAND_FRDOUBLEK : | |
223 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0); | |
224 | + break; | |
225 | + case FRV_OPERAND_FRI : | |
226 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRi, 0); | |
227 | + break; | |
228 | + case FRV_OPERAND_FRINTI : | |
229 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRi, 0); | |
230 | + break; | |
231 | + case FRV_OPERAND_FRINTJ : | |
232 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0); | |
233 | + break; | |
234 | + case FRV_OPERAND_FRINTK : | |
235 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0); | |
236 | + break; | |
237 | + case FRV_OPERAND_FRJ : | |
238 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0); | |
239 | + break; | |
240 | + case FRV_OPERAND_FRK : | |
241 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0); | |
242 | + break; | |
243 | + case FRV_OPERAND_FRKHI : | |
244 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0); | |
245 | + break; | |
246 | + case FRV_OPERAND_FRKLO : | |
247 | + print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0); | |
248 | + break; | |
249 | + case FRV_OPERAND_GRDOUBLEK : | |
250 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRk, 0); | |
251 | + break; | |
252 | + case FRV_OPERAND_GRI : | |
253 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRi, 0); | |
254 | + break; | |
255 | + case FRV_OPERAND_GRJ : | |
256 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRj, 0); | |
257 | + break; | |
258 | + case FRV_OPERAND_GRK : | |
259 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRk, 0); | |
260 | + break; | |
261 | + case FRV_OPERAND_GRKHI : | |
262 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRk, 0); | |
263 | + break; | |
264 | + case FRV_OPERAND_GRKLO : | |
265 | + print_keyword (cd, info, & frv_cgen_opval_gr_names, fields->f_GRk, 0); | |
266 | + break; | |
267 | + case FRV_OPERAND_ICCI_1 : | |
268 | + print_keyword (cd, info, & frv_cgen_opval_iccr_names, fields->f_ICCi_1, 0); | |
269 | + break; | |
270 | + case FRV_OPERAND_ICCI_2 : | |
271 | + print_keyword (cd, info, & frv_cgen_opval_iccr_names, fields->f_ICCi_2, 0); | |
272 | + break; | |
273 | + case FRV_OPERAND_ICCI_3 : | |
274 | + print_keyword (cd, info, & frv_cgen_opval_iccr_names, fields->f_ICCi_3, 0); | |
275 | + break; | |
276 | + case FRV_OPERAND_LI : | |
277 | + print_normal (cd, info, fields->f_LI, 0, pc, length); | |
278 | + break; | |
279 | + case FRV_OPERAND_AE : | |
280 | + print_normal (cd, info, fields->f_ae, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
281 | + break; | |
282 | + case FRV_OPERAND_CCOND : | |
283 | + print_normal (cd, info, fields->f_ccond, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
284 | + break; | |
285 | + case FRV_OPERAND_COND : | |
286 | + print_normal (cd, info, fields->f_cond, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
287 | + break; | |
288 | + case FRV_OPERAND_D12 : | |
289 | + print_normal (cd, info, fields->f_d12, 0|(1<<CGEN_OPERAND_SIGNED), pc, length); | |
290 | + break; | |
291 | + case FRV_OPERAND_DEBUG : | |
292 | + print_normal (cd, info, fields->f_debug, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
293 | + break; | |
294 | + case FRV_OPERAND_EIR : | |
295 | + print_normal (cd, info, fields->f_eir, 0, pc, length); | |
296 | + break; | |
297 | + case FRV_OPERAND_HINT : | |
298 | + print_normal (cd, info, fields->f_hint, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
299 | + break; | |
300 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
301 | + print_keyword (cd, info, & frv_cgen_opval_h_hint_not_taken, fields->f_hint, 0); | |
302 | + break; | |
303 | + case FRV_OPERAND_HINT_TAKEN : | |
304 | + print_keyword (cd, info, & frv_cgen_opval_h_hint_taken, fields->f_hint, 0); | |
305 | + break; | |
306 | + case FRV_OPERAND_LABEL16 : | |
307 | + print_address (cd, info, fields->f_label16, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length); | |
308 | + break; | |
309 | + case FRV_OPERAND_LABEL24 : | |
310 | + print_address (cd, info, fields->f_label24, 0|(1<<CGEN_OPERAND_PCREL_ADDR)|(1<<CGEN_OPERAND_VIRTUAL), pc, length); | |
311 | + break; | |
312 | + case FRV_OPERAND_LOCK : | |
313 | + print_normal (cd, info, fields->f_lock, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
314 | + break; | |
315 | + case FRV_OPERAND_PACK : | |
316 | + print_keyword (cd, info, & frv_cgen_opval_h_pack, fields->f_pack, 0); | |
317 | + break; | |
318 | + case FRV_OPERAND_S10 : | |
319 | + print_normal (cd, info, fields->f_s10, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
320 | + break; | |
321 | + case FRV_OPERAND_S12 : | |
322 | + print_normal (cd, info, fields->f_d12, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
323 | + break; | |
324 | + case FRV_OPERAND_S16 : | |
325 | + print_normal (cd, info, fields->f_s16, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
326 | + break; | |
327 | + case FRV_OPERAND_S5 : | |
328 | + print_normal (cd, info, fields->f_s5, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
329 | + break; | |
330 | + case FRV_OPERAND_S6 : | |
331 | + print_normal (cd, info, fields->f_s6, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
332 | + break; | |
333 | + case FRV_OPERAND_S6_1 : | |
334 | + print_normal (cd, info, fields->f_s6_1, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
335 | + break; | |
336 | + case FRV_OPERAND_SLO16 : | |
337 | + print_lo (cd, info, fields->f_s16, 0|(1<<CGEN_OPERAND_SIGNED), pc, length); | |
338 | + break; | |
339 | + case FRV_OPERAND_SPR : | |
340 | + print_spr (cd, info, & frv_cgen_opval_spr_names, fields->f_spr, 0|(1<<CGEN_OPERAND_VIRTUAL)); | |
341 | + break; | |
342 | + case FRV_OPERAND_U12 : | |
343 | + print_normal (cd, info, fields->f_u12, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_VIRTUAL), pc, length); | |
344 | + break; | |
345 | + case FRV_OPERAND_U16 : | |
346 | + print_normal (cd, info, fields->f_u16, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
347 | + break; | |
348 | + case FRV_OPERAND_U6 : | |
349 | + print_normal (cd, info, fields->f_u6, 0|(1<<CGEN_OPERAND_HASH_PREFIX), pc, length); | |
350 | + break; | |
351 | + case FRV_OPERAND_UHI16 : | |
352 | + print_hi (cd, info, fields->f_u16, 0, pc, length); | |
353 | + break; | |
354 | + case FRV_OPERAND_ULO16 : | |
355 | + print_lo (cd, info, fields->f_u16, 0, pc, length); | |
356 | + break; | |
357 | + | |
358 | + default : | |
359 | + /* xgettext:c-format */ | |
360 | + fprintf (stderr, _("Unrecognized field %d while printing insn.\n"), | |
361 | + opindex); | |
362 | + abort (); | |
363 | + } | |
364 | +} | |
365 | + | |
366 | +cgen_print_fn * const frv_cgen_print_handlers[] = | |
367 | +{ | |
368 | + print_insn_normal, | |
369 | +}; | |
370 | + | |
371 | + | |
372 | +void | |
373 | +frv_cgen_init_dis (cd) | |
374 | + CGEN_CPU_DESC cd; | |
375 | +{ | |
376 | + frv_cgen_init_opcode_table (cd); | |
377 | + frv_cgen_init_ibld_table (cd); | |
378 | + cd->print_handlers = & frv_cgen_print_handlers[0]; | |
379 | + cd->print_operand = frv_cgen_print_operand; | |
380 | +} | |
381 | + | |
382 | + | |
383 | +/* Default print handler. */ | |
384 | + | |
385 | +static void | |
386 | +print_normal (cd, dis_info, value, attrs, pc, length) | |
387 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
388 | + PTR dis_info; | |
389 | + long value; | |
390 | + unsigned int attrs; | |
391 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
392 | + int length ATTRIBUTE_UNUSED; | |
393 | +{ | |
394 | + disassemble_info *info = (disassemble_info *) dis_info; | |
395 | + | |
396 | +#ifdef CGEN_PRINT_NORMAL | |
397 | + CGEN_PRINT_NORMAL (cd, info, value, attrs, pc, length); | |
398 | +#endif | |
399 | + | |
400 | + /* Print the operand as directed by the attributes. */ | |
401 | + if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY)) | |
402 | + ; /* nothing to do */ | |
403 | + else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED)) | |
404 | + (*info->fprintf_func) (info->stream, "%ld", value); | |
405 | + else | |
406 | + (*info->fprintf_func) (info->stream, "0x%lx", value); | |
407 | +} | |
408 | + | |
409 | +/* Default address handler. */ | |
410 | + | |
411 | +static void | |
412 | +print_address (cd, dis_info, value, attrs, pc, length) | |
413 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
414 | + PTR dis_info; | |
415 | + bfd_vma value; | |
416 | + unsigned int attrs; | |
417 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
418 | + int length ATTRIBUTE_UNUSED; | |
419 | +{ | |
420 | + disassemble_info *info = (disassemble_info *) dis_info; | |
421 | + | |
422 | +#ifdef CGEN_PRINT_ADDRESS | |
423 | + CGEN_PRINT_ADDRESS (cd, info, value, attrs, pc, length); | |
424 | +#endif | |
425 | + | |
426 | + /* Print the operand as directed by the attributes. */ | |
427 | + if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY)) | |
428 | + ; /* nothing to do */ | |
429 | + else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_PCREL_ADDR)) | |
430 | + (*info->print_address_func) (value, info); | |
431 | + else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_ABS_ADDR)) | |
432 | + (*info->print_address_func) (value, info); | |
433 | + else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED)) | |
434 | + (*info->fprintf_func) (info->stream, "%ld", (long) value); | |
435 | + else | |
436 | + (*info->fprintf_func) (info->stream, "0x%lx", (long) value); | |
437 | +} | |
438 | + | |
439 | +/* Keyword print handler. */ | |
440 | + | |
441 | +static void | |
442 | +print_keyword (cd, dis_info, keyword_table, value, attrs) | |
443 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
444 | + PTR dis_info; | |
445 | + CGEN_KEYWORD *keyword_table; | |
446 | + long value; | |
447 | + unsigned int attrs ATTRIBUTE_UNUSED; | |
448 | +{ | |
449 | + disassemble_info *info = (disassemble_info *) dis_info; | |
450 | + const CGEN_KEYWORD_ENTRY *ke; | |
451 | + | |
452 | + ke = cgen_keyword_lookup_value (keyword_table, value); | |
453 | + if (ke != NULL) | |
454 | + (*info->fprintf_func) (info->stream, "%s", ke->name); | |
455 | + else | |
456 | + (*info->fprintf_func) (info->stream, "???"); | |
457 | +} | |
458 | + | |
459 | +/* Default insn printer. | |
460 | + | |
461 | + DIS_INFO is defined as `PTR' so the disassembler needn't know anything | |
462 | + about disassemble_info. */ | |
463 | + | |
464 | +static void | |
465 | +print_insn_normal (cd, dis_info, insn, fields, pc, length) | |
466 | + CGEN_CPU_DESC cd; | |
467 | + PTR dis_info; | |
468 | + const CGEN_INSN *insn; | |
469 | + CGEN_FIELDS *fields; | |
470 | + bfd_vma pc; | |
471 | + int length; | |
472 | +{ | |
473 | + const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn); | |
474 | + disassemble_info *info = (disassemble_info *) dis_info; | |
475 | + const CGEN_SYNTAX_CHAR_TYPE *syn; | |
476 | + | |
477 | + CGEN_INIT_PRINT (cd); | |
478 | + | |
479 | + for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn) | |
480 | + { | |
481 | + if (CGEN_SYNTAX_MNEMONIC_P (*syn)) | |
482 | + { | |
483 | + (*info->fprintf_func) (info->stream, "%s", CGEN_INSN_MNEMONIC (insn)); | |
484 | + continue; | |
485 | + } | |
486 | + if (CGEN_SYNTAX_CHAR_P (*syn)) | |
487 | + { | |
488 | + (*info->fprintf_func) (info->stream, "%c", CGEN_SYNTAX_CHAR (*syn)); | |
489 | + continue; | |
490 | + } | |
491 | + | |
492 | + /* We have an operand. */ | |
493 | + frv_cgen_print_operand (cd, CGEN_SYNTAX_FIELD (*syn), info, | |
494 | + fields, CGEN_INSN_ATTRS (insn), pc, length); | |
495 | + } | |
496 | +} | |
497 | + | |
498 | +/* Subroutine of print_insn. Reads an insn into the given buffers and updates | |
499 | + the extract info. | |
500 | + Returns 0 if all is well, non-zero otherwise. */ | |
501 | + | |
502 | +static int | |
503 | +read_insn (cd, pc, info, buf, buflen, ex_info, insn_value) | |
504 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
505 | + bfd_vma pc; | |
506 | + disassemble_info *info; | |
507 | + char *buf; | |
508 | + int buflen; | |
509 | + CGEN_EXTRACT_INFO *ex_info; | |
510 | + unsigned long *insn_value; | |
511 | +{ | |
512 | + int status = (*info->read_memory_func) (pc, buf, buflen, info); | |
513 | + if (status != 0) | |
514 | + { | |
515 | + (*info->memory_error_func) (status, pc, info); | |
516 | + return -1; | |
517 | + } | |
518 | + | |
519 | + ex_info->dis_info = info; | |
520 | + ex_info->valid = (1 << buflen) - 1; | |
521 | + ex_info->insn_bytes = buf; | |
522 | + | |
523 | + *insn_value = bfd_get_bits (buf, buflen * 8, info->endian == BFD_ENDIAN_BIG); | |
524 | + return 0; | |
525 | +} | |
526 | + | |
527 | +/* Utility to print an insn. | |
528 | + BUF is the base part of the insn, target byte order, BUFLEN bytes long. | |
529 | + The result is the size of the insn in bytes or zero for an unknown insn | |
530 | + or -1 if an error occurs fetching data (memory_error_func will have | |
531 | + been called). */ | |
532 | + | |
533 | +static int | |
534 | +print_insn (cd, pc, info, buf, buflen) | |
535 | + CGEN_CPU_DESC cd; | |
536 | + bfd_vma pc; | |
537 | + disassemble_info *info; | |
538 | + char *buf; | |
539 | + unsigned int buflen; | |
540 | +{ | |
541 | + CGEN_INSN_INT insn_value; | |
542 | + const CGEN_INSN_LIST *insn_list; | |
543 | + CGEN_EXTRACT_INFO ex_info; | |
544 | + int basesize; | |
545 | + | |
546 | + /* Extract base part of instruction, just in case CGEN_DIS_* uses it. */ | |
547 | + basesize = cd->base_insn_bitsize < buflen * 8 ? | |
548 | + cd->base_insn_bitsize : buflen * 8; | |
549 | + insn_value = cgen_get_insn_value (cd, buf, basesize); | |
550 | + | |
551 | + | |
552 | + /* Fill in ex_info fields like read_insn would. Don't actually call | |
553 | + read_insn, since the incoming buffer is already read (and possibly | |
554 | + modified a la m32r). */ | |
555 | + ex_info.valid = (1 << buflen) - 1; | |
556 | + ex_info.dis_info = info; | |
557 | + ex_info.insn_bytes = buf; | |
558 | + | |
559 | + /* The instructions are stored in hash lists. | |
560 | + Pick the first one and keep trying until we find the right one. */ | |
561 | + | |
562 | + insn_list = CGEN_DIS_LOOKUP_INSN (cd, buf, insn_value); | |
563 | + while (insn_list != NULL) | |
564 | + { | |
565 | + const CGEN_INSN *insn = insn_list->insn; | |
566 | + CGEN_FIELDS fields; | |
567 | + int length; | |
568 | + unsigned long insn_value_cropped; | |
569 | + | |
570 | +#ifdef CGEN_VALIDATE_INSN_SUPPORTED | |
571 | + /* Not needed as insn shouldn't be in hash lists if not supported. */ | |
572 | + /* Supported by this cpu? */ | |
573 | + if (! frv_cgen_insn_supported (cd, insn)) | |
574 | + { | |
575 | + insn_list = CGEN_DIS_NEXT_INSN (insn_list); | |
576 | + continue; | |
577 | + } | |
578 | +#endif | |
579 | + | |
580 | + /* Basic bit mask must be correct. */ | |
581 | + /* ??? May wish to allow target to defer this check until the extract | |
582 | + handler. */ | |
583 | + | |
584 | + /* Base size may exceed this instruction's size. Extract the | |
585 | + relevant part from the buffer. */ | |
586 | + if ((unsigned) (CGEN_INSN_BITSIZE (insn) / 8) < buflen && | |
587 | + (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long)) | |
588 | + insn_value_cropped = bfd_get_bits (buf, CGEN_INSN_BITSIZE (insn), | |
589 | + info->endian == BFD_ENDIAN_BIG); | |
590 | + else | |
591 | + insn_value_cropped = insn_value; | |
592 | + | |
593 | + if ((insn_value_cropped & CGEN_INSN_BASE_MASK (insn)) | |
594 | + == CGEN_INSN_BASE_VALUE (insn)) | |
595 | + { | |
596 | + /* Printing is handled in two passes. The first pass parses the | |
597 | + machine insn and extracts the fields. The second pass prints | |
598 | + them. */ | |
599 | + | |
600 | + /* Make sure the entire insn is loaded into insn_value, if it | |
601 | + can fit. */ | |
602 | + if (((unsigned) CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize) && | |
603 | + (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long)) | |
604 | + { | |
605 | + unsigned long full_insn_value; | |
606 | + int rc = read_insn (cd, pc, info, buf, | |
607 | + CGEN_INSN_BITSIZE (insn) / 8, | |
608 | + & ex_info, & full_insn_value); | |
609 | + if (rc != 0) | |
610 | + return rc; | |
611 | + length = CGEN_EXTRACT_FN (cd, insn) | |
612 | + (cd, insn, &ex_info, full_insn_value, &fields, pc); | |
613 | + } | |
614 | + else | |
615 | + length = CGEN_EXTRACT_FN (cd, insn) | |
616 | + (cd, insn, &ex_info, insn_value_cropped, &fields, pc); | |
617 | + | |
618 | + /* length < 0 -> error */ | |
619 | + if (length < 0) | |
620 | + return length; | |
621 | + if (length > 0) | |
622 | + { | |
623 | + CGEN_PRINT_FN (cd, insn) (cd, info, insn, &fields, pc, length); | |
624 | + /* length is in bits, result is in bytes */ | |
625 | + return length / 8; | |
626 | + } | |
627 | + } | |
628 | + | |
629 | + insn_list = CGEN_DIS_NEXT_INSN (insn_list); | |
630 | + } | |
631 | + | |
632 | + return 0; | |
633 | +} | |
634 | + | |
635 | +/* Default value for CGEN_PRINT_INSN. | |
636 | + The result is the size of the insn in bytes or zero for an unknown insn | |
637 | + or -1 if an error occured fetching bytes. */ | |
638 | + | |
639 | +#ifndef CGEN_PRINT_INSN | |
640 | +#define CGEN_PRINT_INSN default_print_insn | |
641 | +#endif | |
642 | + | |
643 | +static int | |
644 | +default_print_insn (cd, pc, info) | |
645 | + CGEN_CPU_DESC cd; | |
646 | + bfd_vma pc; | |
647 | + disassemble_info *info; | |
648 | +{ | |
649 | + char buf[CGEN_MAX_INSN_SIZE]; | |
650 | + int buflen; | |
651 | + int status; | |
652 | + | |
653 | + /* Attempt to read the base part of the insn. */ | |
654 | + buflen = cd->base_insn_bitsize / 8; | |
655 | + status = (*info->read_memory_func) (pc, buf, buflen, info); | |
656 | + | |
657 | + /* Try again with the minimum part, if min < base. */ | |
658 | + if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize)) | |
659 | + { | |
660 | + buflen = cd->min_insn_bitsize / 8; | |
661 | + status = (*info->read_memory_func) (pc, buf, buflen, info); | |
662 | + } | |
663 | + | |
664 | + if (status != 0) | |
665 | + { | |
666 | + (*info->memory_error_func) (status, pc, info); | |
667 | + return -1; | |
668 | + } | |
669 | + | |
670 | + return print_insn (cd, pc, info, buf, buflen); | |
671 | +} | |
672 | + | |
673 | +/* Main entry point. | |
674 | + Print one instruction from PC on INFO->STREAM. | |
675 | + Return the size of the instruction (in bytes). */ | |
676 | + | |
677 | +typedef struct cpu_desc_list { | |
678 | + struct cpu_desc_list *next; | |
679 | + int isa; | |
680 | + int mach; | |
681 | + int endian; | |
682 | + CGEN_CPU_DESC cd; | |
683 | +} cpu_desc_list; | |
684 | + | |
685 | +int | |
686 | +print_insn_frv (pc, info) | |
687 | + bfd_vma pc; | |
688 | + disassemble_info *info; | |
689 | +{ | |
690 | + static cpu_desc_list *cd_list = 0; | |
691 | + cpu_desc_list *cl = 0; | |
692 | + static CGEN_CPU_DESC cd = 0; | |
693 | + static int prev_isa; | |
694 | + static int prev_mach; | |
695 | + static int prev_endian; | |
696 | + int length; | |
697 | + int isa,mach; | |
698 | + int endian = (info->endian == BFD_ENDIAN_BIG | |
699 | + ? CGEN_ENDIAN_BIG | |
700 | + : CGEN_ENDIAN_LITTLE); | |
701 | + enum bfd_architecture arch; | |
702 | + | |
703 | + /* ??? gdb will set mach but leave the architecture as "unknown" */ | |
704 | +#ifndef CGEN_BFD_ARCH | |
705 | +#define CGEN_BFD_ARCH bfd_arch_frv | |
706 | +#endif | |
707 | + arch = info->arch; | |
708 | + if (arch == bfd_arch_unknown) | |
709 | + arch = CGEN_BFD_ARCH; | |
710 | + | |
711 | + /* There's no standard way to compute the machine or isa number | |
712 | + so we leave it to the target. */ | |
713 | +#ifdef CGEN_COMPUTE_MACH | |
714 | + mach = CGEN_COMPUTE_MACH (info); | |
715 | +#else | |
716 | + mach = info->mach; | |
717 | +#endif | |
718 | + | |
719 | +#ifdef CGEN_COMPUTE_ISA | |
720 | + isa = CGEN_COMPUTE_ISA (info); | |
721 | +#else | |
722 | + isa = info->insn_sets; | |
723 | +#endif | |
724 | + | |
725 | + /* If we've switched cpu's, try to find a handle we've used before */ | |
726 | + if (cd | |
727 | + && (isa != prev_isa | |
728 | + || mach != prev_mach | |
729 | + || endian != prev_endian)) | |
730 | + { | |
731 | + cd = 0; | |
732 | + for (cl = cd_list; cl; cl = cl->next) | |
733 | + { | |
734 | + if (cl->isa == isa && | |
735 | + cl->mach == mach && | |
736 | + cl->endian == endian) | |
737 | + { | |
738 | + cd = cl->cd; | |
739 | + break; | |
740 | + } | |
741 | + } | |
742 | + } | |
743 | + | |
744 | + /* If we haven't initialized yet, initialize the opcode table. */ | |
745 | + if (! cd) | |
746 | + { | |
747 | + const bfd_arch_info_type *arch_type = bfd_lookup_arch (arch, mach); | |
748 | + const char *mach_name; | |
749 | + | |
750 | + if (!arch_type) | |
751 | + abort (); | |
752 | + mach_name = arch_type->printable_name; | |
753 | + | |
754 | + prev_isa = isa; | |
755 | + prev_mach = mach; | |
756 | + prev_endian = endian; | |
757 | + cd = frv_cgen_cpu_open (CGEN_CPU_OPEN_ISAS, prev_isa, | |
758 | + CGEN_CPU_OPEN_BFDMACH, mach_name, | |
759 | + CGEN_CPU_OPEN_ENDIAN, prev_endian, | |
760 | + CGEN_CPU_OPEN_END); | |
761 | + if (!cd) | |
762 | + abort (); | |
763 | + | |
764 | + /* save this away for future reference */ | |
765 | + cl = xmalloc (sizeof (struct cpu_desc_list)); | |
766 | + cl->cd = cd; | |
767 | + cl->isa = isa; | |
768 | + cl->mach = mach; | |
769 | + cl->endian = endian; | |
770 | + cl->next = cd_list; | |
771 | + cd_list = cl; | |
772 | + | |
773 | + frv_cgen_init_dis (cd); | |
774 | + } | |
775 | + | |
776 | + /* We try to have as much common code as possible. | |
777 | + But at this point some targets need to take over. */ | |
778 | + /* ??? Some targets may need a hook elsewhere. Try to avoid this, | |
779 | + but if not possible try to move this hook elsewhere rather than | |
780 | + have two hooks. */ | |
781 | + length = CGEN_PRINT_INSN (cd, pc, info); | |
782 | + if (length > 0) | |
783 | + return length; | |
784 | + if (length < 0) | |
785 | + return -1; | |
786 | + | |
787 | + (*info->fprintf_func) (info->stream, UNKNOWN_INSN_MSG); | |
788 | + return cd->default_insn_bitsize / 8; | |
789 | +} |
@@ -0,0 +1,2051 @@ | ||
1 | +/* Instruction building/extraction support for frv. -*- C -*- | |
2 | + | |
3 | +THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator. | |
4 | +- the resultant file is machine generated, cgen-ibld.in isn't | |
5 | + | |
6 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. | |
7 | + | |
8 | +This file is part of the GNU Binutils and GDB, the GNU debugger. | |
9 | + | |
10 | +This program is free software; you can redistribute it and/or modify | |
11 | +it under the terms of the GNU General Public License as published by | |
12 | +the Free Software Foundation; either version 2, or (at your option) | |
13 | +any later version. | |
14 | + | |
15 | +This program is distributed in the hope that it will be useful, | |
16 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | +GNU General Public License for more details. | |
19 | + | |
20 | +You should have received a copy of the GNU General Public License | |
21 | +along with this program; if not, write to the Free Software Foundation, Inc., | |
22 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
23 | + | |
24 | +/* ??? Eventually more and more of this stuff can go to cpu-independent files. | |
25 | + Keep that in mind. */ | |
26 | + | |
27 | +#include "sysdep.h" | |
28 | +#include <stdio.h> | |
29 | +#include "ansidecl.h" | |
30 | +#include "dis-asm.h" | |
31 | +#include "bfd.h" | |
32 | +#include "symcat.h" | |
33 | +#include "frv-desc.h" | |
34 | +#include "frv-opc.h" | |
35 | +#include "opintl.h" | |
36 | +#include "safe-ctype.h" | |
37 | + | |
38 | +#undef min | |
39 | +#define min(a,b) ((a) < (b) ? (a) : (b)) | |
40 | +#undef max | |
41 | +#define max(a,b) ((a) > (b) ? (a) : (b)) | |
42 | + | |
43 | +/* Used by the ifield rtx function. */ | |
44 | +#define FLD(f) (fields->f) | |
45 | + | |
46 | +static const char * insert_normal | |
47 | + PARAMS ((CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int, | |
48 | + unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR)); | |
49 | +static const char * insert_insn_normal | |
50 | + PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, | |
51 | + CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma)); | |
52 | +static int extract_normal | |
53 | + PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT, | |
54 | + unsigned int, unsigned int, unsigned int, unsigned int, | |
55 | + unsigned int, unsigned int, bfd_vma, long *)); | |
56 | +static int extract_insn_normal | |
57 | + PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *, | |
58 | + CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma)); | |
59 | +#if CGEN_INT_INSN_P | |
60 | +static void put_insn_int_value | |
61 | + PARAMS ((CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT)); | |
62 | +#endif | |
63 | +#if ! CGEN_INT_INSN_P | |
64 | +static CGEN_INLINE void insert_1 | |
65 | + PARAMS ((CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *)); | |
66 | +static CGEN_INLINE int fill_cache | |
67 | + PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, bfd_vma)); | |
68 | +static CGEN_INLINE long extract_1 | |
69 | + PARAMS ((CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, | |
70 | + unsigned char *, bfd_vma)); | |
71 | +#endif | |
72 | + | |
73 | +/* Operand insertion. */ | |
74 | + | |
75 | +#if ! CGEN_INT_INSN_P | |
76 | + | |
77 | +/* Subroutine of insert_normal. */ | |
78 | + | |
79 | +static CGEN_INLINE void | |
80 | +insert_1 (cd, value, start, length, word_length, bufp) | |
81 | + CGEN_CPU_DESC cd; | |
82 | + unsigned long value; | |
83 | + int start,length,word_length; | |
84 | + unsigned char *bufp; | |
85 | +{ | |
86 | + unsigned long x,mask; | |
87 | + int shift; | |
88 | + | |
89 | + x = cgen_get_insn_value (cd, bufp, word_length); | |
90 | + | |
91 | + /* Written this way to avoid undefined behaviour. */ | |
92 | + mask = (((1L << (length - 1)) - 1) << 1) | 1; | |
93 | + if (CGEN_INSN_LSB0_P) | |
94 | + shift = (start + 1) - length; | |
95 | + else | |
96 | + shift = (word_length - (start + length)); | |
97 | + x = (x & ~(mask << shift)) | ((value & mask) << shift); | |
98 | + | |
99 | + cgen_put_insn_value (cd, bufp, word_length, (bfd_vma) x); | |
100 | +} | |
101 | + | |
102 | +#endif /* ! CGEN_INT_INSN_P */ | |
103 | + | |
104 | +/* Default insertion routine. | |
105 | + | |
106 | + ATTRS is a mask of the boolean attributes. | |
107 | + WORD_OFFSET is the offset in bits from the start of the insn of the value. | |
108 | + WORD_LENGTH is the length of the word in bits in which the value resides. | |
109 | + START is the starting bit number in the word, architecture origin. | |
110 | + LENGTH is the length of VALUE in bits. | |
111 | + TOTAL_LENGTH is the total length of the insn in bits. | |
112 | + | |
113 | + The result is an error message or NULL if success. */ | |
114 | + | |
115 | +/* ??? This duplicates functionality with bfd's howto table and | |
116 | + bfd_install_relocation. */ | |
117 | +/* ??? This doesn't handle bfd_vma's. Create another function when | |
118 | + necessary. */ | |
119 | + | |
120 | +static const char * | |
121 | +insert_normal (cd, value, attrs, word_offset, start, length, word_length, | |
122 | + total_length, buffer) | |
123 | + CGEN_CPU_DESC cd; | |
124 | + long value; | |
125 | + unsigned int attrs; | |
126 | + unsigned int word_offset, start, length, word_length, total_length; | |
127 | + CGEN_INSN_BYTES_PTR buffer; | |
128 | +{ | |
129 | + static char errbuf[100]; | |
130 | + /* Written this way to avoid undefined behaviour. */ | |
131 | + unsigned long mask = (((1L << (length - 1)) - 1) << 1) | 1; | |
132 | + | |
133 | + /* If LENGTH is zero, this operand doesn't contribute to the value. */ | |
134 | + if (length == 0) | |
135 | + return NULL; | |
136 | + | |
137 | +#if 0 | |
138 | + if (CGEN_INT_INSN_P | |
139 | + && word_offset != 0) | |
140 | + abort (); | |
141 | +#endif | |
142 | + | |
143 | + if (word_length > 32) | |
144 | + abort (); | |
145 | + | |
146 | + /* For architectures with insns smaller than the base-insn-bitsize, | |
147 | + word_length may be too big. */ | |
148 | + if (cd->min_insn_bitsize < cd->base_insn_bitsize) | |
149 | + { | |
150 | + if (word_offset == 0 | |
151 | + && word_length > total_length) | |
152 | + word_length = total_length; | |
153 | + } | |
154 | + | |
155 | + /* Ensure VALUE will fit. */ | |
156 | + if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT)) | |
157 | + { | |
158 | + long minval = - (1L << (length - 1)); | |
159 | + unsigned long maxval = mask; | |
160 | + | |
161 | + if ((value > 0 && (unsigned long) value > maxval) | |
162 | + || value < minval) | |
163 | + { | |
164 | + /* xgettext:c-format */ | |
165 | + sprintf (errbuf, | |
166 | + _("operand out of range (%ld not between %ld and %lu)"), | |
167 | + value, minval, maxval); | |
168 | + return errbuf; | |
169 | + } | |
170 | + } | |
171 | + else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)) | |
172 | + { | |
173 | + unsigned long maxval = mask; | |
174 | + | |
175 | + if ((unsigned long) value > maxval) | |
176 | + { | |
177 | + /* xgettext:c-format */ | |
178 | + sprintf (errbuf, | |
179 | + _("operand out of range (%lu not between 0 and %lu)"), | |
180 | + value, maxval); | |
181 | + return errbuf; | |
182 | + } | |
183 | + } | |
184 | + else | |
185 | + { | |
186 | + if (! cgen_signed_overflow_ok_p (cd)) | |
187 | + { | |
188 | + long minval = - (1L << (length - 1)); | |
189 | + long maxval = (1L << (length - 1)) - 1; | |
190 | + | |
191 | + if (value < minval || value > maxval) | |
192 | + { | |
193 | + sprintf | |
194 | + /* xgettext:c-format */ | |
195 | + (errbuf, _("operand out of range (%ld not between %ld and %ld)"), | |
196 | + value, minval, maxval); | |
197 | + return errbuf; | |
198 | + } | |
199 | + } | |
200 | + } | |
201 | + | |
202 | +#if CGEN_INT_INSN_P | |
203 | + | |
204 | + { | |
205 | + int shift; | |
206 | + | |
207 | + if (CGEN_INSN_LSB0_P) | |
208 | + shift = (word_offset + start + 1) - length; | |
209 | + else | |
210 | + shift = total_length - (word_offset + start + length); | |
211 | + *buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift); | |
212 | + } | |
213 | + | |
214 | +#else /* ! CGEN_INT_INSN_P */ | |
215 | + | |
216 | + { | |
217 | + unsigned char *bufp = (unsigned char *) buffer + word_offset / 8; | |
218 | + | |
219 | + insert_1 (cd, value, start, length, word_length, bufp); | |
220 | + } | |
221 | + | |
222 | +#endif /* ! CGEN_INT_INSN_P */ | |
223 | + | |
224 | + return NULL; | |
225 | +} | |
226 | + | |
227 | +/* Default insn builder (insert handler). | |
228 | + The instruction is recorded in CGEN_INT_INSN_P byte order (meaning | |
229 | + that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is | |
230 | + recorded in host byte order, otherwise BUFFER is an array of bytes | |
231 | + and the value is recorded in target byte order). | |
232 | + The result is an error message or NULL if success. */ | |
233 | + | |
234 | +static const char * | |
235 | +insert_insn_normal (cd, insn, fields, buffer, pc) | |
236 | + CGEN_CPU_DESC cd; | |
237 | + const CGEN_INSN * insn; | |
238 | + CGEN_FIELDS * fields; | |
239 | + CGEN_INSN_BYTES_PTR buffer; | |
240 | + bfd_vma pc; | |
241 | +{ | |
242 | + const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn); | |
243 | + unsigned long value; | |
244 | + const CGEN_SYNTAX_CHAR_TYPE * syn; | |
245 | + | |
246 | + CGEN_INIT_INSERT (cd); | |
247 | + value = CGEN_INSN_BASE_VALUE (insn); | |
248 | + | |
249 | + /* If we're recording insns as numbers (rather than a string of bytes), | |
250 | + target byte order handling is deferred until later. */ | |
251 | + | |
252 | +#if CGEN_INT_INSN_P | |
253 | + | |
254 | + put_insn_int_value (cd, buffer, cd->base_insn_bitsize, | |
255 | + CGEN_FIELDS_BITSIZE (fields), value); | |
256 | + | |
257 | +#else | |
258 | + | |
259 | + cgen_put_insn_value (cd, buffer, min ((unsigned) cd->base_insn_bitsize, | |
260 | + (unsigned) CGEN_FIELDS_BITSIZE (fields)), | |
261 | + value); | |
262 | + | |
263 | +#endif /* ! CGEN_INT_INSN_P */ | |
264 | + | |
265 | + /* ??? It would be better to scan the format's fields. | |
266 | + Still need to be able to insert a value based on the operand though; | |
267 | + e.g. storing a branch displacement that got resolved later. | |
268 | + Needs more thought first. */ | |
269 | + | |
270 | + for (syn = CGEN_SYNTAX_STRING (syntax); * syn; ++ syn) | |
271 | + { | |
272 | + const char *errmsg; | |
273 | + | |
274 | + if (CGEN_SYNTAX_CHAR_P (* syn)) | |
275 | + continue; | |
276 | + | |
277 | + errmsg = (* cd->insert_operand) (cd, CGEN_SYNTAX_FIELD (*syn), | |
278 | + fields, buffer, pc); | |
279 | + if (errmsg) | |
280 | + return errmsg; | |
281 | + } | |
282 | + | |
283 | + return NULL; | |
284 | +} | |
285 | + | |
286 | +#if CGEN_INT_INSN_P | |
287 | +/* Cover function to store an insn value into an integral insn. Must go here | |
288 | + because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */ | |
289 | + | |
290 | +static void | |
291 | +put_insn_int_value (cd, buf, length, insn_length, value) | |
292 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
293 | + CGEN_INSN_BYTES_PTR buf; | |
294 | + int length; | |
295 | + int insn_length; | |
296 | + CGEN_INSN_INT value; | |
297 | +{ | |
298 | + /* For architectures with insns smaller than the base-insn-bitsize, | |
299 | + length may be too big. */ | |
300 | + if (length > insn_length) | |
301 | + *buf = value; | |
302 | + else | |
303 | + { | |
304 | + int shift = insn_length - length; | |
305 | + /* Written this way to avoid undefined behaviour. */ | |
306 | + CGEN_INSN_INT mask = (((1L << (length - 1)) - 1) << 1) | 1; | |
307 | + *buf = (*buf & ~(mask << shift)) | ((value & mask) << shift); | |
308 | + } | |
309 | +} | |
310 | +#endif | |
311 | + | |
312 | +/* Operand extraction. */ | |
313 | + | |
314 | +#if ! CGEN_INT_INSN_P | |
315 | + | |
316 | +/* Subroutine of extract_normal. | |
317 | + Ensure sufficient bytes are cached in EX_INFO. | |
318 | + OFFSET is the offset in bytes from the start of the insn of the value. | |
319 | + BYTES is the length of the needed value. | |
320 | + Returns 1 for success, 0 for failure. */ | |
321 | + | |
322 | +static CGEN_INLINE int | |
323 | +fill_cache (cd, ex_info, offset, bytes, pc) | |
324 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
325 | + CGEN_EXTRACT_INFO *ex_info; | |
326 | + int offset, bytes; | |
327 | + bfd_vma pc; | |
328 | +{ | |
329 | + /* It's doubtful that the middle part has already been fetched so | |
330 | + we don't optimize that case. kiss. */ | |
331 | + unsigned int mask; | |
332 | + disassemble_info *info = (disassemble_info *) ex_info->dis_info; | |
333 | + | |
334 | + /* First do a quick check. */ | |
335 | + mask = (1 << bytes) - 1; | |
336 | + if (((ex_info->valid >> offset) & mask) == mask) | |
337 | + return 1; | |
338 | + | |
339 | + /* Search for the first byte we need to read. */ | |
340 | + for (mask = 1 << offset; bytes > 0; --bytes, ++offset, mask <<= 1) | |
341 | + if (! (mask & ex_info->valid)) | |
342 | + break; | |
343 | + | |
344 | + if (bytes) | |
345 | + { | |
346 | + int status; | |
347 | + | |
348 | + pc += offset; | |
349 | + status = (*info->read_memory_func) | |
350 | + (pc, ex_info->insn_bytes + offset, bytes, info); | |
351 | + | |
352 | + if (status != 0) | |
353 | + { | |
354 | + (*info->memory_error_func) (status, pc, info); | |
355 | + return 0; | |
356 | + } | |
357 | + | |
358 | + ex_info->valid |= ((1 << bytes) - 1) << offset; | |
359 | + } | |
360 | + | |
361 | + return 1; | |
362 | +} | |
363 | + | |
364 | +/* Subroutine of extract_normal. */ | |
365 | + | |
366 | +static CGEN_INLINE long | |
367 | +extract_1 (cd, ex_info, start, length, word_length, bufp, pc) | |
368 | + CGEN_CPU_DESC cd; | |
369 | + CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED; | |
370 | + int start,length,word_length; | |
371 | + unsigned char *bufp; | |
372 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
373 | +{ | |
374 | + unsigned long x; | |
375 | + int shift; | |
376 | +#if 0 | |
377 | + int big_p = CGEN_CPU_INSN_ENDIAN (cd) == CGEN_ENDIAN_BIG; | |
378 | +#endif | |
379 | + x = cgen_get_insn_value (cd, bufp, word_length); | |
380 | + | |
381 | + if (CGEN_INSN_LSB0_P) | |
382 | + shift = (start + 1) - length; | |
383 | + else | |
384 | + shift = (word_length - (start + length)); | |
385 | + return x >> shift; | |
386 | +} | |
387 | + | |
388 | +#endif /* ! CGEN_INT_INSN_P */ | |
389 | + | |
390 | +/* Default extraction routine. | |
391 | + | |
392 | + INSN_VALUE is the first base_insn_bitsize bits of the insn in host order, | |
393 | + or sometimes less for cases like the m32r where the base insn size is 32 | |
394 | + but some insns are 16 bits. | |
395 | + ATTRS is a mask of the boolean attributes. We only need `SIGNED', | |
396 | + but for generality we take a bitmask of all of them. | |
397 | + WORD_OFFSET is the offset in bits from the start of the insn of the value. | |
398 | + WORD_LENGTH is the length of the word in bits in which the value resides. | |
399 | + START is the starting bit number in the word, architecture origin. | |
400 | + LENGTH is the length of VALUE in bits. | |
401 | + TOTAL_LENGTH is the total length of the insn in bits. | |
402 | + | |
403 | + Returns 1 for success, 0 for failure. */ | |
404 | + | |
405 | +/* ??? The return code isn't properly used. wip. */ | |
406 | + | |
407 | +/* ??? This doesn't handle bfd_vma's. Create another function when | |
408 | + necessary. */ | |
409 | + | |
410 | +static int | |
411 | +extract_normal (cd, ex_info, insn_value, attrs, word_offset, start, length, | |
412 | + word_length, total_length, pc, valuep) | |
413 | + CGEN_CPU_DESC cd; | |
414 | +#if ! CGEN_INT_INSN_P | |
415 | + CGEN_EXTRACT_INFO *ex_info; | |
416 | +#else | |
417 | + CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED; | |
418 | +#endif | |
419 | + CGEN_INSN_INT insn_value; | |
420 | + unsigned int attrs; | |
421 | + unsigned int word_offset, start, length, word_length, total_length; | |
422 | +#if ! CGEN_INT_INSN_P | |
423 | + bfd_vma pc; | |
424 | +#else | |
425 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
426 | +#endif | |
427 | + long *valuep; | |
428 | +{ | |
429 | + long value, mask; | |
430 | + | |
431 | + /* If LENGTH is zero, this operand doesn't contribute to the value | |
432 | + so give it a standard value of zero. */ | |
433 | + if (length == 0) | |
434 | + { | |
435 | + *valuep = 0; | |
436 | + return 1; | |
437 | + } | |
438 | + | |
439 | +#if 0 | |
440 | + if (CGEN_INT_INSN_P | |
441 | + && word_offset != 0) | |
442 | + abort (); | |
443 | +#endif | |
444 | + | |
445 | + if (word_length > 32) | |
446 | + abort (); | |
447 | + | |
448 | + /* For architectures with insns smaller than the insn-base-bitsize, | |
449 | + word_length may be too big. */ | |
450 | + if (cd->min_insn_bitsize < cd->base_insn_bitsize) | |
451 | + { | |
452 | + if (word_offset == 0 | |
453 | + && word_length > total_length) | |
454 | + word_length = total_length; | |
455 | + } | |
456 | + | |
457 | + /* Does the value reside in INSN_VALUE, and at the right alignment? */ | |
458 | + | |
459 | + if (CGEN_INT_INSN_P || (word_offset == 0 && word_length == total_length)) | |
460 | + { | |
461 | + if (CGEN_INSN_LSB0_P) | |
462 | + value = insn_value >> ((word_offset + start + 1) - length); | |
463 | + else | |
464 | + value = insn_value >> (total_length - ( word_offset + start + length)); | |
465 | + } | |
466 | + | |
467 | +#if ! CGEN_INT_INSN_P | |
468 | + | |
469 | + else | |
470 | + { | |
471 | + unsigned char *bufp = ex_info->insn_bytes + word_offset / 8; | |
472 | + | |
473 | + if (word_length > 32) | |
474 | + abort (); | |
475 | + | |
476 | + if (fill_cache (cd, ex_info, word_offset / 8, word_length / 8, pc) == 0) | |
477 | + return 0; | |
478 | + | |
479 | + value = extract_1 (cd, ex_info, start, length, word_length, bufp, pc); | |
480 | + } | |
481 | + | |
482 | +#endif /* ! CGEN_INT_INSN_P */ | |
483 | + | |
484 | + /* Written this way to avoid undefined behaviour. */ | |
485 | + mask = (((1L << (length - 1)) - 1) << 1) | 1; | |
486 | + | |
487 | + value &= mask; | |
488 | + /* sign extend? */ | |
489 | + if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED) | |
490 | + && (value & (1L << (length - 1)))) | |
491 | + value |= ~mask; | |
492 | + | |
493 | + *valuep = value; | |
494 | + | |
495 | + return 1; | |
496 | +} | |
497 | + | |
498 | +/* Default insn extractor. | |
499 | + | |
500 | + INSN_VALUE is the first base_insn_bitsize bits, translated to host order. | |
501 | + The extracted fields are stored in FIELDS. | |
502 | + EX_INFO is used to handle reading variable length insns. | |
503 | + Return the length of the insn in bits, or 0 if no match, | |
504 | + or -1 if an error occurs fetching data (memory_error_func will have | |
505 | + been called). */ | |
506 | + | |
507 | +static int | |
508 | +extract_insn_normal (cd, insn, ex_info, insn_value, fields, pc) | |
509 | + CGEN_CPU_DESC cd; | |
510 | + const CGEN_INSN *insn; | |
511 | + CGEN_EXTRACT_INFO *ex_info; | |
512 | + CGEN_INSN_INT insn_value; | |
513 | + CGEN_FIELDS *fields; | |
514 | + bfd_vma pc; | |
515 | +{ | |
516 | + const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn); | |
517 | + const CGEN_SYNTAX_CHAR_TYPE *syn; | |
518 | + | |
519 | + CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn); | |
520 | + | |
521 | + CGEN_INIT_EXTRACT (cd); | |
522 | + | |
523 | + for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn) | |
524 | + { | |
525 | + int length; | |
526 | + | |
527 | + if (CGEN_SYNTAX_CHAR_P (*syn)) | |
528 | + continue; | |
529 | + | |
530 | + length = (* cd->extract_operand) (cd, CGEN_SYNTAX_FIELD (*syn), | |
531 | + ex_info, insn_value, fields, pc); | |
532 | + if (length <= 0) | |
533 | + return length; | |
534 | + } | |
535 | + | |
536 | + /* We recognized and successfully extracted this insn. */ | |
537 | + return CGEN_INSN_BITSIZE (insn); | |
538 | +} | |
539 | + | |
540 | +/* machine generated code added here */ | |
541 | + | |
542 | +const char * frv_cgen_insert_operand | |
543 | + PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma)); | |
544 | + | |
545 | +/* Main entry point for operand insertion. | |
546 | + | |
547 | + This function is basically just a big switch statement. Earlier versions | |
548 | + used tables to look up the function to use, but | |
549 | + - if the table contains both assembler and disassembler functions then | |
550 | + the disassembler contains much of the assembler and vice-versa, | |
551 | + - there's a lot of inlining possibilities as things grow, | |
552 | + - using a switch statement avoids the function call overhead. | |
553 | + | |
554 | + This function could be moved into `parse_insn_normal', but keeping it | |
555 | + separate makes clear the interface between `parse_insn_normal' and each of | |
556 | + the handlers. It's also needed by GAS to insert operands that couldn't be | |
557 | + resolved during parsing. */ | |
558 | + | |
559 | +const char * | |
560 | +frv_cgen_insert_operand (cd, opindex, fields, buffer, pc) | |
561 | + CGEN_CPU_DESC cd; | |
562 | + int opindex; | |
563 | + CGEN_FIELDS * fields; | |
564 | + CGEN_INSN_BYTES_PTR buffer; | |
565 | + bfd_vma pc ATTRIBUTE_UNUSED; | |
566 | +{ | |
567 | + const char * errmsg = NULL; | |
568 | + unsigned int total_length = CGEN_FIELDS_BITSIZE (fields); | |
569 | + | |
570 | + switch (opindex) | |
571 | + { | |
572 | + case FRV_OPERAND_A : | |
573 | + errmsg = insert_normal (cd, fields->f_A, 0, 0, 17, 1, 32, total_length, buffer); | |
574 | + break; | |
575 | + case FRV_OPERAND_ACC40SI : | |
576 | + errmsg = insert_normal (cd, fields->f_ACC40Si, 0, 0, 17, 6, 32, total_length, buffer); | |
577 | + break; | |
578 | + case FRV_OPERAND_ACC40SK : | |
579 | + errmsg = insert_normal (cd, fields->f_ACC40Sk, 0, 0, 30, 6, 32, total_length, buffer); | |
580 | + break; | |
581 | + case FRV_OPERAND_ACC40UI : | |
582 | + errmsg = insert_normal (cd, fields->f_ACC40Ui, 0, 0, 17, 6, 32, total_length, buffer); | |
583 | + break; | |
584 | + case FRV_OPERAND_ACC40UK : | |
585 | + errmsg = insert_normal (cd, fields->f_ACC40Uk, 0, 0, 30, 6, 32, total_length, buffer); | |
586 | + break; | |
587 | + case FRV_OPERAND_ACCGI : | |
588 | + errmsg = insert_normal (cd, fields->f_ACCGi, 0, 0, 17, 6, 32, total_length, buffer); | |
589 | + break; | |
590 | + case FRV_OPERAND_ACCGK : | |
591 | + errmsg = insert_normal (cd, fields->f_ACCGk, 0, 0, 30, 6, 32, total_length, buffer); | |
592 | + break; | |
593 | + case FRV_OPERAND_CCI : | |
594 | + errmsg = insert_normal (cd, fields->f_CCi, 0, 0, 11, 3, 32, total_length, buffer); | |
595 | + break; | |
596 | + case FRV_OPERAND_CPRDOUBLEK : | |
597 | + errmsg = insert_normal (cd, fields->f_CPRk, 0, 0, 30, 6, 32, total_length, buffer); | |
598 | + break; | |
599 | + case FRV_OPERAND_CPRI : | |
600 | + errmsg = insert_normal (cd, fields->f_CPRi, 0, 0, 17, 6, 32, total_length, buffer); | |
601 | + break; | |
602 | + case FRV_OPERAND_CPRJ : | |
603 | + errmsg = insert_normal (cd, fields->f_CPRj, 0, 0, 5, 6, 32, total_length, buffer); | |
604 | + break; | |
605 | + case FRV_OPERAND_CPRK : | |
606 | + errmsg = insert_normal (cd, fields->f_CPRk, 0, 0, 30, 6, 32, total_length, buffer); | |
607 | + break; | |
608 | + case FRV_OPERAND_CRI : | |
609 | + errmsg = insert_normal (cd, fields->f_CRi, 0, 0, 14, 3, 32, total_length, buffer); | |
610 | + break; | |
611 | + case FRV_OPERAND_CRJ : | |
612 | + errmsg = insert_normal (cd, fields->f_CRj, 0, 0, 2, 3, 32, total_length, buffer); | |
613 | + break; | |
614 | + case FRV_OPERAND_CRJ_FLOAT : | |
615 | + errmsg = insert_normal (cd, fields->f_CRj_float, 0, 0, 26, 2, 32, total_length, buffer); | |
616 | + break; | |
617 | + case FRV_OPERAND_CRJ_INT : | |
618 | + { | |
619 | + long value = fields->f_CRj_int; | |
620 | + value = ((value) - (4)); | |
621 | + errmsg = insert_normal (cd, value, 0, 0, 26, 2, 32, total_length, buffer); | |
622 | + } | |
623 | + break; | |
624 | + case FRV_OPERAND_CRK : | |
625 | + errmsg = insert_normal (cd, fields->f_CRk, 0, 0, 27, 3, 32, total_length, buffer); | |
626 | + break; | |
627 | + case FRV_OPERAND_FCCI_1 : | |
628 | + errmsg = insert_normal (cd, fields->f_FCCi_1, 0, 0, 11, 2, 32, total_length, buffer); | |
629 | + break; | |
630 | + case FRV_OPERAND_FCCI_2 : | |
631 | + errmsg = insert_normal (cd, fields->f_FCCi_2, 0, 0, 26, 2, 32, total_length, buffer); | |
632 | + break; | |
633 | + case FRV_OPERAND_FCCI_3 : | |
634 | + errmsg = insert_normal (cd, fields->f_FCCi_3, 0, 0, 1, 2, 32, total_length, buffer); | |
635 | + break; | |
636 | + case FRV_OPERAND_FCCK : | |
637 | + errmsg = insert_normal (cd, fields->f_FCCk, 0, 0, 26, 2, 32, total_length, buffer); | |
638 | + break; | |
639 | + case FRV_OPERAND_FRDOUBLEI : | |
640 | + errmsg = insert_normal (cd, fields->f_FRi, 0, 0, 17, 6, 32, total_length, buffer); | |
641 | + break; | |
642 | + case FRV_OPERAND_FRDOUBLEJ : | |
643 | + errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer); | |
644 | + break; | |
645 | + case FRV_OPERAND_FRDOUBLEK : | |
646 | + errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer); | |
647 | + break; | |
648 | + case FRV_OPERAND_FRI : | |
649 | + errmsg = insert_normal (cd, fields->f_FRi, 0, 0, 17, 6, 32, total_length, buffer); | |
650 | + break; | |
651 | + case FRV_OPERAND_FRINTI : | |
652 | + errmsg = insert_normal (cd, fields->f_FRi, 0, 0, 17, 6, 32, total_length, buffer); | |
653 | + break; | |
654 | + case FRV_OPERAND_FRINTJ : | |
655 | + errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer); | |
656 | + break; | |
657 | + case FRV_OPERAND_FRINTK : | |
658 | + errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer); | |
659 | + break; | |
660 | + case FRV_OPERAND_FRJ : | |
661 | + errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer); | |
662 | + break; | |
663 | + case FRV_OPERAND_FRK : | |
664 | + errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer); | |
665 | + break; | |
666 | + case FRV_OPERAND_FRKHI : | |
667 | + errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer); | |
668 | + break; | |
669 | + case FRV_OPERAND_FRKLO : | |
670 | + errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer); | |
671 | + break; | |
672 | + case FRV_OPERAND_GRDOUBLEK : | |
673 | + errmsg = insert_normal (cd, fields->f_GRk, 0, 0, 30, 6, 32, total_length, buffer); | |
674 | + break; | |
675 | + case FRV_OPERAND_GRI : | |
676 | + errmsg = insert_normal (cd, fields->f_GRi, 0, 0, 17, 6, 32, total_length, buffer); | |
677 | + break; | |
678 | + case FRV_OPERAND_GRJ : | |
679 | + errmsg = insert_normal (cd, fields->f_GRj, 0, 0, 5, 6, 32, total_length, buffer); | |
680 | + break; | |
681 | + case FRV_OPERAND_GRK : | |
682 | + errmsg = insert_normal (cd, fields->f_GRk, 0, 0, 30, 6, 32, total_length, buffer); | |
683 | + break; | |
684 | + case FRV_OPERAND_GRKHI : | |
685 | + errmsg = insert_normal (cd, fields->f_GRk, 0, 0, 30, 6, 32, total_length, buffer); | |
686 | + break; | |
687 | + case FRV_OPERAND_GRKLO : | |
688 | + errmsg = insert_normal (cd, fields->f_GRk, 0, 0, 30, 6, 32, total_length, buffer); | |
689 | + break; | |
690 | + case FRV_OPERAND_ICCI_1 : | |
691 | + errmsg = insert_normal (cd, fields->f_ICCi_1, 0, 0, 11, 2, 32, total_length, buffer); | |
692 | + break; | |
693 | + case FRV_OPERAND_ICCI_2 : | |
694 | + errmsg = insert_normal (cd, fields->f_ICCi_2, 0, 0, 26, 2, 32, total_length, buffer); | |
695 | + break; | |
696 | + case FRV_OPERAND_ICCI_3 : | |
697 | + errmsg = insert_normal (cd, fields->f_ICCi_3, 0, 0, 1, 2, 32, total_length, buffer); | |
698 | + break; | |
699 | + case FRV_OPERAND_LI : | |
700 | + errmsg = insert_normal (cd, fields->f_LI, 0, 0, 25, 1, 32, total_length, buffer); | |
701 | + break; | |
702 | + case FRV_OPERAND_AE : | |
703 | + errmsg = insert_normal (cd, fields->f_ae, 0, 0, 25, 1, 32, total_length, buffer); | |
704 | + break; | |
705 | + case FRV_OPERAND_CCOND : | |
706 | + errmsg = insert_normal (cd, fields->f_ccond, 0, 0, 12, 1, 32, total_length, buffer); | |
707 | + break; | |
708 | + case FRV_OPERAND_COND : | |
709 | + errmsg = insert_normal (cd, fields->f_cond, 0, 0, 8, 1, 32, total_length, buffer); | |
710 | + break; | |
711 | + case FRV_OPERAND_D12 : | |
712 | + errmsg = insert_normal (cd, fields->f_d12, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 12, 32, total_length, buffer); | |
713 | + break; | |
714 | + case FRV_OPERAND_DEBUG : | |
715 | + errmsg = insert_normal (cd, fields->f_debug, 0, 0, 25, 1, 32, total_length, buffer); | |
716 | + break; | |
717 | + case FRV_OPERAND_EIR : | |
718 | + errmsg = insert_normal (cd, fields->f_eir, 0, 0, 17, 6, 32, total_length, buffer); | |
719 | + break; | |
720 | + case FRV_OPERAND_HINT : | |
721 | + errmsg = insert_normal (cd, fields->f_hint, 0, 0, 17, 2, 32, total_length, buffer); | |
722 | + break; | |
723 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
724 | + errmsg = insert_normal (cd, fields->f_hint, 0, 0, 17, 2, 32, total_length, buffer); | |
725 | + break; | |
726 | + case FRV_OPERAND_HINT_TAKEN : | |
727 | + errmsg = insert_normal (cd, fields->f_hint, 0, 0, 17, 2, 32, total_length, buffer); | |
728 | + break; | |
729 | + case FRV_OPERAND_LABEL16 : | |
730 | + { | |
731 | + long value = fields->f_label16; | |
732 | + value = ((int) (((value) - (pc))) >> (2)); | |
733 | + errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 16, 32, total_length, buffer); | |
734 | + } | |
735 | + break; | |
736 | + case FRV_OPERAND_LABEL24 : | |
737 | + { | |
738 | +{ | |
739 | + FLD (f_labelH6) = ((int) (((FLD (f_label24)) - (pc))) >> (20)); | |
740 | + FLD (f_labelL18) = ((((unsigned int) (((FLD (f_label24)) - (pc))) >> (2))) & (262143)); | |
741 | +} | |
742 | + errmsg = insert_normal (cd, fields->f_labelH6, 0|(1<<CGEN_IFLD_SIGNED), 0, 30, 6, 32, total_length, buffer); | |
743 | + if (errmsg) | |
744 | + break; | |
745 | + errmsg = insert_normal (cd, fields->f_labelL18, 0, 0, 17, 18, 32, total_length, buffer); | |
746 | + if (errmsg) | |
747 | + break; | |
748 | + } | |
749 | + break; | |
750 | + case FRV_OPERAND_LOCK : | |
751 | + errmsg = insert_normal (cd, fields->f_lock, 0, 0, 25, 1, 32, total_length, buffer); | |
752 | + break; | |
753 | + case FRV_OPERAND_PACK : | |
754 | + errmsg = insert_normal (cd, fields->f_pack, 0, 0, 31, 1, 32, total_length, buffer); | |
755 | + break; | |
756 | + case FRV_OPERAND_S10 : | |
757 | + errmsg = insert_normal (cd, fields->f_s10, 0|(1<<CGEN_IFLD_SIGNED), 0, 9, 10, 32, total_length, buffer); | |
758 | + break; | |
759 | + case FRV_OPERAND_S12 : | |
760 | + errmsg = insert_normal (cd, fields->f_d12, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 12, 32, total_length, buffer); | |
761 | + break; | |
762 | + case FRV_OPERAND_S16 : | |
763 | + errmsg = insert_normal (cd, fields->f_s16, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, buffer); | |
764 | + break; | |
765 | + case FRV_OPERAND_S5 : | |
766 | + errmsg = insert_normal (cd, fields->f_s5, 0|(1<<CGEN_IFLD_SIGNED), 0, 4, 5, 32, total_length, buffer); | |
767 | + break; | |
768 | + case FRV_OPERAND_S6 : | |
769 | + errmsg = insert_normal (cd, fields->f_s6, 0|(1<<CGEN_IFLD_SIGNED), 0, 5, 6, 32, total_length, buffer); | |
770 | + break; | |
771 | + case FRV_OPERAND_S6_1 : | |
772 | + errmsg = insert_normal (cd, fields->f_s6_1, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 6, 32, total_length, buffer); | |
773 | + break; | |
774 | + case FRV_OPERAND_SLO16 : | |
775 | + errmsg = insert_normal (cd, fields->f_s16, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, buffer); | |
776 | + break; | |
777 | + case FRV_OPERAND_SPR : | |
778 | + { | |
779 | +{ | |
780 | + FLD (f_spr_h) = ((unsigned int) (FLD (f_spr)) >> (6)); | |
781 | + FLD (f_spr_l) = ((FLD (f_spr)) & (63)); | |
782 | +} | |
783 | + errmsg = insert_normal (cd, fields->f_spr_h, 0, 0, 30, 6, 32, total_length, buffer); | |
784 | + if (errmsg) | |
785 | + break; | |
786 | + errmsg = insert_normal (cd, fields->f_spr_l, 0, 0, 17, 6, 32, total_length, buffer); | |
787 | + if (errmsg) | |
788 | + break; | |
789 | + } | |
790 | + break; | |
791 | + case FRV_OPERAND_U12 : | |
792 | + { | |
793 | +{ | |
794 | + FLD (f_u12_h) = ((int) (FLD (f_u12)) >> (6)); | |
795 | + FLD (f_u12_l) = ((FLD (f_u12)) & (63)); | |
796 | +} | |
797 | + errmsg = insert_normal (cd, fields->f_u12_h, 0|(1<<CGEN_IFLD_SIGNED), 0, 17, 6, 32, total_length, buffer); | |
798 | + if (errmsg) | |
799 | + break; | |
800 | + errmsg = insert_normal (cd, fields->f_u12_l, 0, 0, 5, 6, 32, total_length, buffer); | |
801 | + if (errmsg) | |
802 | + break; | |
803 | + } | |
804 | + break; | |
805 | + case FRV_OPERAND_U16 : | |
806 | + errmsg = insert_normal (cd, fields->f_u16, 0, 0, 15, 16, 32, total_length, buffer); | |
807 | + break; | |
808 | + case FRV_OPERAND_U6 : | |
809 | + errmsg = insert_normal (cd, fields->f_u6, 0, 0, 5, 6, 32, total_length, buffer); | |
810 | + break; | |
811 | + case FRV_OPERAND_UHI16 : | |
812 | + errmsg = insert_normal (cd, fields->f_u16, 0, 0, 15, 16, 32, total_length, buffer); | |
813 | + break; | |
814 | + case FRV_OPERAND_ULO16 : | |
815 | + errmsg = insert_normal (cd, fields->f_u16, 0, 0, 15, 16, 32, total_length, buffer); | |
816 | + break; | |
817 | + | |
818 | + default : | |
819 | + /* xgettext:c-format */ | |
820 | + fprintf (stderr, _("Unrecognized field %d while building insn.\n"), | |
821 | + opindex); | |
822 | + abort (); | |
823 | + } | |
824 | + | |
825 | + return errmsg; | |
826 | +} | |
827 | + | |
828 | +int frv_cgen_extract_operand | |
829 | + PARAMS ((CGEN_CPU_DESC, int, CGEN_EXTRACT_INFO *, CGEN_INSN_INT, | |
830 | + CGEN_FIELDS *, bfd_vma)); | |
831 | + | |
832 | +/* Main entry point for operand extraction. | |
833 | + The result is <= 0 for error, >0 for success. | |
834 | + ??? Actual values aren't well defined right now. | |
835 | + | |
836 | + This function is basically just a big switch statement. Earlier versions | |
837 | + used tables to look up the function to use, but | |
838 | + - if the table contains both assembler and disassembler functions then | |
839 | + the disassembler contains much of the assembler and vice-versa, | |
840 | + - there's a lot of inlining possibilities as things grow, | |
841 | + - using a switch statement avoids the function call overhead. | |
842 | + | |
843 | + This function could be moved into `print_insn_normal', but keeping it | |
844 | + separate makes clear the interface between `print_insn_normal' and each of | |
845 | + the handlers. */ | |
846 | + | |
847 | +int | |
848 | +frv_cgen_extract_operand (cd, opindex, ex_info, insn_value, fields, pc) | |
849 | + CGEN_CPU_DESC cd; | |
850 | + int opindex; | |
851 | + CGEN_EXTRACT_INFO *ex_info; | |
852 | + CGEN_INSN_INT insn_value; | |
853 | + CGEN_FIELDS * fields; | |
854 | + bfd_vma pc; | |
855 | +{ | |
856 | + /* Assume success (for those operands that are nops). */ | |
857 | + int length = 1; | |
858 | + unsigned int total_length = CGEN_FIELDS_BITSIZE (fields); | |
859 | + | |
860 | + switch (opindex) | |
861 | + { | |
862 | + case FRV_OPERAND_A : | |
863 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_A); | |
864 | + break; | |
865 | + case FRV_OPERAND_ACC40SI : | |
866 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_ACC40Si); | |
867 | + break; | |
868 | + case FRV_OPERAND_ACC40SK : | |
869 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_ACC40Sk); | |
870 | + break; | |
871 | + case FRV_OPERAND_ACC40UI : | |
872 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_ACC40Ui); | |
873 | + break; | |
874 | + case FRV_OPERAND_ACC40UK : | |
875 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_ACC40Uk); | |
876 | + break; | |
877 | + case FRV_OPERAND_ACCGI : | |
878 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_ACCGi); | |
879 | + break; | |
880 | + case FRV_OPERAND_ACCGK : | |
881 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_ACCGk); | |
882 | + break; | |
883 | + case FRV_OPERAND_CCI : | |
884 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 3, 32, total_length, pc, & fields->f_CCi); | |
885 | + break; | |
886 | + case FRV_OPERAND_CPRDOUBLEK : | |
887 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_CPRk); | |
888 | + break; | |
889 | + case FRV_OPERAND_CPRI : | |
890 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_CPRi); | |
891 | + break; | |
892 | + case FRV_OPERAND_CPRJ : | |
893 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_CPRj); | |
894 | + break; | |
895 | + case FRV_OPERAND_CPRK : | |
896 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_CPRk); | |
897 | + break; | |
898 | + case FRV_OPERAND_CRI : | |
899 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_CRi); | |
900 | + break; | |
901 | + case FRV_OPERAND_CRJ : | |
902 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 3, 32, total_length, pc, & fields->f_CRj); | |
903 | + break; | |
904 | + case FRV_OPERAND_CRJ_FLOAT : | |
905 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 26, 2, 32, total_length, pc, & fields->f_CRj_float); | |
906 | + break; | |
907 | + case FRV_OPERAND_CRJ_INT : | |
908 | + { | |
909 | + long value; | |
910 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 26, 2, 32, total_length, pc, & value); | |
911 | + value = ((value) + (4)); | |
912 | + fields->f_CRj_int = value; | |
913 | + } | |
914 | + break; | |
915 | + case FRV_OPERAND_CRK : | |
916 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 27, 3, 32, total_length, pc, & fields->f_CRk); | |
917 | + break; | |
918 | + case FRV_OPERAND_FCCI_1 : | |
919 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 2, 32, total_length, pc, & fields->f_FCCi_1); | |
920 | + break; | |
921 | + case FRV_OPERAND_FCCI_2 : | |
922 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 26, 2, 32, total_length, pc, & fields->f_FCCi_2); | |
923 | + break; | |
924 | + case FRV_OPERAND_FCCI_3 : | |
925 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 1, 2, 32, total_length, pc, & fields->f_FCCi_3); | |
926 | + break; | |
927 | + case FRV_OPERAND_FCCK : | |
928 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 26, 2, 32, total_length, pc, & fields->f_FCCk); | |
929 | + break; | |
930 | + case FRV_OPERAND_FRDOUBLEI : | |
931 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_FRi); | |
932 | + break; | |
933 | + case FRV_OPERAND_FRDOUBLEJ : | |
934 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj); | |
935 | + break; | |
936 | + case FRV_OPERAND_FRDOUBLEK : | |
937 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk); | |
938 | + break; | |
939 | + case FRV_OPERAND_FRI : | |
940 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_FRi); | |
941 | + break; | |
942 | + case FRV_OPERAND_FRINTI : | |
943 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_FRi); | |
944 | + break; | |
945 | + case FRV_OPERAND_FRINTJ : | |
946 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj); | |
947 | + break; | |
948 | + case FRV_OPERAND_FRINTK : | |
949 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk); | |
950 | + break; | |
951 | + case FRV_OPERAND_FRJ : | |
952 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj); | |
953 | + break; | |
954 | + case FRV_OPERAND_FRK : | |
955 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk); | |
956 | + break; | |
957 | + case FRV_OPERAND_FRKHI : | |
958 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk); | |
959 | + break; | |
960 | + case FRV_OPERAND_FRKLO : | |
961 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk); | |
962 | + break; | |
963 | + case FRV_OPERAND_GRDOUBLEK : | |
964 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_GRk); | |
965 | + break; | |
966 | + case FRV_OPERAND_GRI : | |
967 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_GRi); | |
968 | + break; | |
969 | + case FRV_OPERAND_GRJ : | |
970 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_GRj); | |
971 | + break; | |
972 | + case FRV_OPERAND_GRK : | |
973 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_GRk); | |
974 | + break; | |
975 | + case FRV_OPERAND_GRKHI : | |
976 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_GRk); | |
977 | + break; | |
978 | + case FRV_OPERAND_GRKLO : | |
979 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_GRk); | |
980 | + break; | |
981 | + case FRV_OPERAND_ICCI_1 : | |
982 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 2, 32, total_length, pc, & fields->f_ICCi_1); | |
983 | + break; | |
984 | + case FRV_OPERAND_ICCI_2 : | |
985 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 26, 2, 32, total_length, pc, & fields->f_ICCi_2); | |
986 | + break; | |
987 | + case FRV_OPERAND_ICCI_3 : | |
988 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 1, 2, 32, total_length, pc, & fields->f_ICCi_3); | |
989 | + break; | |
990 | + case FRV_OPERAND_LI : | |
991 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 1, 32, total_length, pc, & fields->f_LI); | |
992 | + break; | |
993 | + case FRV_OPERAND_AE : | |
994 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 1, 32, total_length, pc, & fields->f_ae); | |
995 | + break; | |
996 | + case FRV_OPERAND_CCOND : | |
997 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 1, 32, total_length, pc, & fields->f_ccond); | |
998 | + break; | |
999 | + case FRV_OPERAND_COND : | |
1000 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 1, 32, total_length, pc, & fields->f_cond); | |
1001 | + break; | |
1002 | + case FRV_OPERAND_D12 : | |
1003 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 12, 32, total_length, pc, & fields->f_d12); | |
1004 | + break; | |
1005 | + case FRV_OPERAND_DEBUG : | |
1006 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 1, 32, total_length, pc, & fields->f_debug); | |
1007 | + break; | |
1008 | + case FRV_OPERAND_EIR : | |
1009 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_eir); | |
1010 | + break; | |
1011 | + case FRV_OPERAND_HINT : | |
1012 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 2, 32, total_length, pc, & fields->f_hint); | |
1013 | + break; | |
1014 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
1015 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 2, 32, total_length, pc, & fields->f_hint); | |
1016 | + break; | |
1017 | + case FRV_OPERAND_HINT_TAKEN : | |
1018 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 2, 32, total_length, pc, & fields->f_hint); | |
1019 | + break; | |
1020 | + case FRV_OPERAND_LABEL16 : | |
1021 | + { | |
1022 | + long value; | |
1023 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 16, 32, total_length, pc, & value); | |
1024 | + value = ((((value) << (2))) + (pc)); | |
1025 | + fields->f_label16 = value; | |
1026 | + } | |
1027 | + break; | |
1028 | + case FRV_OPERAND_LABEL24 : | |
1029 | + { | |
1030 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 30, 6, 32, total_length, pc, & fields->f_labelH6); | |
1031 | + if (length <= 0) break; | |
1032 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 18, 32, total_length, pc, & fields->f_labelL18); | |
1033 | + if (length <= 0) break; | |
1034 | +{ | |
1035 | + FLD (f_label24) = ((((((((FLD (f_labelH6)) << (18))) | (FLD (f_labelL18)))) << (2))) + (pc)); | |
1036 | +} | |
1037 | + } | |
1038 | + break; | |
1039 | + case FRV_OPERAND_LOCK : | |
1040 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 1, 32, total_length, pc, & fields->f_lock); | |
1041 | + break; | |
1042 | + case FRV_OPERAND_PACK : | |
1043 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 1, 32, total_length, pc, & fields->f_pack); | |
1044 | + break; | |
1045 | + case FRV_OPERAND_S10 : | |
1046 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 9, 10, 32, total_length, pc, & fields->f_s10); | |
1047 | + break; | |
1048 | + case FRV_OPERAND_S12 : | |
1049 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 12, 32, total_length, pc, & fields->f_d12); | |
1050 | + break; | |
1051 | + case FRV_OPERAND_S16 : | |
1052 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, pc, & fields->f_s16); | |
1053 | + break; | |
1054 | + case FRV_OPERAND_S5 : | |
1055 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 4, 5, 32, total_length, pc, & fields->f_s5); | |
1056 | + break; | |
1057 | + case FRV_OPERAND_S6 : | |
1058 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 5, 6, 32, total_length, pc, & fields->f_s6); | |
1059 | + break; | |
1060 | + case FRV_OPERAND_S6_1 : | |
1061 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 11, 6, 32, total_length, pc, & fields->f_s6_1); | |
1062 | + break; | |
1063 | + case FRV_OPERAND_SLO16 : | |
1064 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, pc, & fields->f_s16); | |
1065 | + break; | |
1066 | + case FRV_OPERAND_SPR : | |
1067 | + { | |
1068 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_spr_h); | |
1069 | + if (length <= 0) break; | |
1070 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_spr_l); | |
1071 | + if (length <= 0) break; | |
1072 | +{ | |
1073 | + FLD (f_spr) = ((((FLD (f_spr_h)) << (6))) | (FLD (f_spr_l))); | |
1074 | +} | |
1075 | + } | |
1076 | + break; | |
1077 | + case FRV_OPERAND_U12 : | |
1078 | + { | |
1079 | + length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 17, 6, 32, total_length, pc, & fields->f_u12_h); | |
1080 | + if (length <= 0) break; | |
1081 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_u12_l); | |
1082 | + if (length <= 0) break; | |
1083 | +{ | |
1084 | + FLD (f_u12) = ((((FLD (f_u12_h)) << (6))) | (FLD (f_u12_l))); | |
1085 | +} | |
1086 | + } | |
1087 | + break; | |
1088 | + case FRV_OPERAND_U16 : | |
1089 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_u16); | |
1090 | + break; | |
1091 | + case FRV_OPERAND_U6 : | |
1092 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_u6); | |
1093 | + break; | |
1094 | + case FRV_OPERAND_UHI16 : | |
1095 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_u16); | |
1096 | + break; | |
1097 | + case FRV_OPERAND_ULO16 : | |
1098 | + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_u16); | |
1099 | + break; | |
1100 | + | |
1101 | + default : | |
1102 | + /* xgettext:c-format */ | |
1103 | + fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"), | |
1104 | + opindex); | |
1105 | + abort (); | |
1106 | + } | |
1107 | + | |
1108 | + return length; | |
1109 | +} | |
1110 | + | |
1111 | +cgen_insert_fn * const frv_cgen_insert_handlers[] = | |
1112 | +{ | |
1113 | + insert_insn_normal, | |
1114 | +}; | |
1115 | + | |
1116 | +cgen_extract_fn * const frv_cgen_extract_handlers[] = | |
1117 | +{ | |
1118 | + extract_insn_normal, | |
1119 | +}; | |
1120 | + | |
1121 | +int frv_cgen_get_int_operand | |
1122 | + PARAMS ((CGEN_CPU_DESC, int, const CGEN_FIELDS *)); | |
1123 | +bfd_vma frv_cgen_get_vma_operand | |
1124 | + PARAMS ((CGEN_CPU_DESC, int, const CGEN_FIELDS *)); | |
1125 | + | |
1126 | +/* Getting values from cgen_fields is handled by a collection of functions. | |
1127 | + They are distinguished by the type of the VALUE argument they return. | |
1128 | + TODO: floating point, inlining support, remove cases where result type | |
1129 | + not appropriate. */ | |
1130 | + | |
1131 | +int | |
1132 | +frv_cgen_get_int_operand (cd, opindex, fields) | |
1133 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
1134 | + int opindex; | |
1135 | + const CGEN_FIELDS * fields; | |
1136 | +{ | |
1137 | + int value; | |
1138 | + | |
1139 | + switch (opindex) | |
1140 | + { | |
1141 | + case FRV_OPERAND_A : | |
1142 | + value = fields->f_A; | |
1143 | + break; | |
1144 | + case FRV_OPERAND_ACC40SI : | |
1145 | + value = fields->f_ACC40Si; | |
1146 | + break; | |
1147 | + case FRV_OPERAND_ACC40SK : | |
1148 | + value = fields->f_ACC40Sk; | |
1149 | + break; | |
1150 | + case FRV_OPERAND_ACC40UI : | |
1151 | + value = fields->f_ACC40Ui; | |
1152 | + break; | |
1153 | + case FRV_OPERAND_ACC40UK : | |
1154 | + value = fields->f_ACC40Uk; | |
1155 | + break; | |
1156 | + case FRV_OPERAND_ACCGI : | |
1157 | + value = fields->f_ACCGi; | |
1158 | + break; | |
1159 | + case FRV_OPERAND_ACCGK : | |
1160 | + value = fields->f_ACCGk; | |
1161 | + break; | |
1162 | + case FRV_OPERAND_CCI : | |
1163 | + value = fields->f_CCi; | |
1164 | + break; | |
1165 | + case FRV_OPERAND_CPRDOUBLEK : | |
1166 | + value = fields->f_CPRk; | |
1167 | + break; | |
1168 | + case FRV_OPERAND_CPRI : | |
1169 | + value = fields->f_CPRi; | |
1170 | + break; | |
1171 | + case FRV_OPERAND_CPRJ : | |
1172 | + value = fields->f_CPRj; | |
1173 | + break; | |
1174 | + case FRV_OPERAND_CPRK : | |
1175 | + value = fields->f_CPRk; | |
1176 | + break; | |
1177 | + case FRV_OPERAND_CRI : | |
1178 | + value = fields->f_CRi; | |
1179 | + break; | |
1180 | + case FRV_OPERAND_CRJ : | |
1181 | + value = fields->f_CRj; | |
1182 | + break; | |
1183 | + case FRV_OPERAND_CRJ_FLOAT : | |
1184 | + value = fields->f_CRj_float; | |
1185 | + break; | |
1186 | + case FRV_OPERAND_CRJ_INT : | |
1187 | + value = fields->f_CRj_int; | |
1188 | + break; | |
1189 | + case FRV_OPERAND_CRK : | |
1190 | + value = fields->f_CRk; | |
1191 | + break; | |
1192 | + case FRV_OPERAND_FCCI_1 : | |
1193 | + value = fields->f_FCCi_1; | |
1194 | + break; | |
1195 | + case FRV_OPERAND_FCCI_2 : | |
1196 | + value = fields->f_FCCi_2; | |
1197 | + break; | |
1198 | + case FRV_OPERAND_FCCI_3 : | |
1199 | + value = fields->f_FCCi_3; | |
1200 | + break; | |
1201 | + case FRV_OPERAND_FCCK : | |
1202 | + value = fields->f_FCCk; | |
1203 | + break; | |
1204 | + case FRV_OPERAND_FRDOUBLEI : | |
1205 | + value = fields->f_FRi; | |
1206 | + break; | |
1207 | + case FRV_OPERAND_FRDOUBLEJ : | |
1208 | + value = fields->f_FRj; | |
1209 | + break; | |
1210 | + case FRV_OPERAND_FRDOUBLEK : | |
1211 | + value = fields->f_FRk; | |
1212 | + break; | |
1213 | + case FRV_OPERAND_FRI : | |
1214 | + value = fields->f_FRi; | |
1215 | + break; | |
1216 | + case FRV_OPERAND_FRINTI : | |
1217 | + value = fields->f_FRi; | |
1218 | + break; | |
1219 | + case FRV_OPERAND_FRINTJ : | |
1220 | + value = fields->f_FRj; | |
1221 | + break; | |
1222 | + case FRV_OPERAND_FRINTK : | |
1223 | + value = fields->f_FRk; | |
1224 | + break; | |
1225 | + case FRV_OPERAND_FRJ : | |
1226 | + value = fields->f_FRj; | |
1227 | + break; | |
1228 | + case FRV_OPERAND_FRK : | |
1229 | + value = fields->f_FRk; | |
1230 | + break; | |
1231 | + case FRV_OPERAND_FRKHI : | |
1232 | + value = fields->f_FRk; | |
1233 | + break; | |
1234 | + case FRV_OPERAND_FRKLO : | |
1235 | + value = fields->f_FRk; | |
1236 | + break; | |
1237 | + case FRV_OPERAND_GRDOUBLEK : | |
1238 | + value = fields->f_GRk; | |
1239 | + break; | |
1240 | + case FRV_OPERAND_GRI : | |
1241 | + value = fields->f_GRi; | |
1242 | + break; | |
1243 | + case FRV_OPERAND_GRJ : | |
1244 | + value = fields->f_GRj; | |
1245 | + break; | |
1246 | + case FRV_OPERAND_GRK : | |
1247 | + value = fields->f_GRk; | |
1248 | + break; | |
1249 | + case FRV_OPERAND_GRKHI : | |
1250 | + value = fields->f_GRk; | |
1251 | + break; | |
1252 | + case FRV_OPERAND_GRKLO : | |
1253 | + value = fields->f_GRk; | |
1254 | + break; | |
1255 | + case FRV_OPERAND_ICCI_1 : | |
1256 | + value = fields->f_ICCi_1; | |
1257 | + break; | |
1258 | + case FRV_OPERAND_ICCI_2 : | |
1259 | + value = fields->f_ICCi_2; | |
1260 | + break; | |
1261 | + case FRV_OPERAND_ICCI_3 : | |
1262 | + value = fields->f_ICCi_3; | |
1263 | + break; | |
1264 | + case FRV_OPERAND_LI : | |
1265 | + value = fields->f_LI; | |
1266 | + break; | |
1267 | + case FRV_OPERAND_AE : | |
1268 | + value = fields->f_ae; | |
1269 | + break; | |
1270 | + case FRV_OPERAND_CCOND : | |
1271 | + value = fields->f_ccond; | |
1272 | + break; | |
1273 | + case FRV_OPERAND_COND : | |
1274 | + value = fields->f_cond; | |
1275 | + break; | |
1276 | + case FRV_OPERAND_D12 : | |
1277 | + value = fields->f_d12; | |
1278 | + break; | |
1279 | + case FRV_OPERAND_DEBUG : | |
1280 | + value = fields->f_debug; | |
1281 | + break; | |
1282 | + case FRV_OPERAND_EIR : | |
1283 | + value = fields->f_eir; | |
1284 | + break; | |
1285 | + case FRV_OPERAND_HINT : | |
1286 | + value = fields->f_hint; | |
1287 | + break; | |
1288 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
1289 | + value = fields->f_hint; | |
1290 | + break; | |
1291 | + case FRV_OPERAND_HINT_TAKEN : | |
1292 | + value = fields->f_hint; | |
1293 | + break; | |
1294 | + case FRV_OPERAND_LABEL16 : | |
1295 | + value = fields->f_label16; | |
1296 | + break; | |
1297 | + case FRV_OPERAND_LABEL24 : | |
1298 | + value = fields->f_label24; | |
1299 | + break; | |
1300 | + case FRV_OPERAND_LOCK : | |
1301 | + value = fields->f_lock; | |
1302 | + break; | |
1303 | + case FRV_OPERAND_PACK : | |
1304 | + value = fields->f_pack; | |
1305 | + break; | |
1306 | + case FRV_OPERAND_S10 : | |
1307 | + value = fields->f_s10; | |
1308 | + break; | |
1309 | + case FRV_OPERAND_S12 : | |
1310 | + value = fields->f_d12; | |
1311 | + break; | |
1312 | + case FRV_OPERAND_S16 : | |
1313 | + value = fields->f_s16; | |
1314 | + break; | |
1315 | + case FRV_OPERAND_S5 : | |
1316 | + value = fields->f_s5; | |
1317 | + break; | |
1318 | + case FRV_OPERAND_S6 : | |
1319 | + value = fields->f_s6; | |
1320 | + break; | |
1321 | + case FRV_OPERAND_S6_1 : | |
1322 | + value = fields->f_s6_1; | |
1323 | + break; | |
1324 | + case FRV_OPERAND_SLO16 : | |
1325 | + value = fields->f_s16; | |
1326 | + break; | |
1327 | + case FRV_OPERAND_SPR : | |
1328 | + value = fields->f_spr; | |
1329 | + break; | |
1330 | + case FRV_OPERAND_U12 : | |
1331 | + value = fields->f_u12; | |
1332 | + break; | |
1333 | + case FRV_OPERAND_U16 : | |
1334 | + value = fields->f_u16; | |
1335 | + break; | |
1336 | + case FRV_OPERAND_U6 : | |
1337 | + value = fields->f_u6; | |
1338 | + break; | |
1339 | + case FRV_OPERAND_UHI16 : | |
1340 | + value = fields->f_u16; | |
1341 | + break; | |
1342 | + case FRV_OPERAND_ULO16 : | |
1343 | + value = fields->f_u16; | |
1344 | + break; | |
1345 | + | |
1346 | + default : | |
1347 | + /* xgettext:c-format */ | |
1348 | + fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"), | |
1349 | + opindex); | |
1350 | + abort (); | |
1351 | + } | |
1352 | + | |
1353 | + return value; | |
1354 | +} | |
1355 | + | |
1356 | +bfd_vma | |
1357 | +frv_cgen_get_vma_operand (cd, opindex, fields) | |
1358 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
1359 | + int opindex; | |
1360 | + const CGEN_FIELDS * fields; | |
1361 | +{ | |
1362 | + bfd_vma value; | |
1363 | + | |
1364 | + switch (opindex) | |
1365 | + { | |
1366 | + case FRV_OPERAND_A : | |
1367 | + value = fields->f_A; | |
1368 | + break; | |
1369 | + case FRV_OPERAND_ACC40SI : | |
1370 | + value = fields->f_ACC40Si; | |
1371 | + break; | |
1372 | + case FRV_OPERAND_ACC40SK : | |
1373 | + value = fields->f_ACC40Sk; | |
1374 | + break; | |
1375 | + case FRV_OPERAND_ACC40UI : | |
1376 | + value = fields->f_ACC40Ui; | |
1377 | + break; | |
1378 | + case FRV_OPERAND_ACC40UK : | |
1379 | + value = fields->f_ACC40Uk; | |
1380 | + break; | |
1381 | + case FRV_OPERAND_ACCGI : | |
1382 | + value = fields->f_ACCGi; | |
1383 | + break; | |
1384 | + case FRV_OPERAND_ACCGK : | |
1385 | + value = fields->f_ACCGk; | |
1386 | + break; | |
1387 | + case FRV_OPERAND_CCI : | |
1388 | + value = fields->f_CCi; | |
1389 | + break; | |
1390 | + case FRV_OPERAND_CPRDOUBLEK : | |
1391 | + value = fields->f_CPRk; | |
1392 | + break; | |
1393 | + case FRV_OPERAND_CPRI : | |
1394 | + value = fields->f_CPRi; | |
1395 | + break; | |
1396 | + case FRV_OPERAND_CPRJ : | |
1397 | + value = fields->f_CPRj; | |
1398 | + break; | |
1399 | + case FRV_OPERAND_CPRK : | |
1400 | + value = fields->f_CPRk; | |
1401 | + break; | |
1402 | + case FRV_OPERAND_CRI : | |
1403 | + value = fields->f_CRi; | |
1404 | + break; | |
1405 | + case FRV_OPERAND_CRJ : | |
1406 | + value = fields->f_CRj; | |
1407 | + break; | |
1408 | + case FRV_OPERAND_CRJ_FLOAT : | |
1409 | + value = fields->f_CRj_float; | |
1410 | + break; | |
1411 | + case FRV_OPERAND_CRJ_INT : | |
1412 | + value = fields->f_CRj_int; | |
1413 | + break; | |
1414 | + case FRV_OPERAND_CRK : | |
1415 | + value = fields->f_CRk; | |
1416 | + break; | |
1417 | + case FRV_OPERAND_FCCI_1 : | |
1418 | + value = fields->f_FCCi_1; | |
1419 | + break; | |
1420 | + case FRV_OPERAND_FCCI_2 : | |
1421 | + value = fields->f_FCCi_2; | |
1422 | + break; | |
1423 | + case FRV_OPERAND_FCCI_3 : | |
1424 | + value = fields->f_FCCi_3; | |
1425 | + break; | |
1426 | + case FRV_OPERAND_FCCK : | |
1427 | + value = fields->f_FCCk; | |
1428 | + break; | |
1429 | + case FRV_OPERAND_FRDOUBLEI : | |
1430 | + value = fields->f_FRi; | |
1431 | + break; | |
1432 | + case FRV_OPERAND_FRDOUBLEJ : | |
1433 | + value = fields->f_FRj; | |
1434 | + break; | |
1435 | + case FRV_OPERAND_FRDOUBLEK : | |
1436 | + value = fields->f_FRk; | |
1437 | + break; | |
1438 | + case FRV_OPERAND_FRI : | |
1439 | + value = fields->f_FRi; | |
1440 | + break; | |
1441 | + case FRV_OPERAND_FRINTI : | |
1442 | + value = fields->f_FRi; | |
1443 | + break; | |
1444 | + case FRV_OPERAND_FRINTJ : | |
1445 | + value = fields->f_FRj; | |
1446 | + break; | |
1447 | + case FRV_OPERAND_FRINTK : | |
1448 | + value = fields->f_FRk; | |
1449 | + break; | |
1450 | + case FRV_OPERAND_FRJ : | |
1451 | + value = fields->f_FRj; | |
1452 | + break; | |
1453 | + case FRV_OPERAND_FRK : | |
1454 | + value = fields->f_FRk; | |
1455 | + break; | |
1456 | + case FRV_OPERAND_FRKHI : | |
1457 | + value = fields->f_FRk; | |
1458 | + break; | |
1459 | + case FRV_OPERAND_FRKLO : | |
1460 | + value = fields->f_FRk; | |
1461 | + break; | |
1462 | + case FRV_OPERAND_GRDOUBLEK : | |
1463 | + value = fields->f_GRk; | |
1464 | + break; | |
1465 | + case FRV_OPERAND_GRI : | |
1466 | + value = fields->f_GRi; | |
1467 | + break; | |
1468 | + case FRV_OPERAND_GRJ : | |
1469 | + value = fields->f_GRj; | |
1470 | + break; | |
1471 | + case FRV_OPERAND_GRK : | |
1472 | + value = fields->f_GRk; | |
1473 | + break; | |
1474 | + case FRV_OPERAND_GRKHI : | |
1475 | + value = fields->f_GRk; | |
1476 | + break; | |
1477 | + case FRV_OPERAND_GRKLO : | |
1478 | + value = fields->f_GRk; | |
1479 | + break; | |
1480 | + case FRV_OPERAND_ICCI_1 : | |
1481 | + value = fields->f_ICCi_1; | |
1482 | + break; | |
1483 | + case FRV_OPERAND_ICCI_2 : | |
1484 | + value = fields->f_ICCi_2; | |
1485 | + break; | |
1486 | + case FRV_OPERAND_ICCI_3 : | |
1487 | + value = fields->f_ICCi_3; | |
1488 | + break; | |
1489 | + case FRV_OPERAND_LI : | |
1490 | + value = fields->f_LI; | |
1491 | + break; | |
1492 | + case FRV_OPERAND_AE : | |
1493 | + value = fields->f_ae; | |
1494 | + break; | |
1495 | + case FRV_OPERAND_CCOND : | |
1496 | + value = fields->f_ccond; | |
1497 | + break; | |
1498 | + case FRV_OPERAND_COND : | |
1499 | + value = fields->f_cond; | |
1500 | + break; | |
1501 | + case FRV_OPERAND_D12 : | |
1502 | + value = fields->f_d12; | |
1503 | + break; | |
1504 | + case FRV_OPERAND_DEBUG : | |
1505 | + value = fields->f_debug; | |
1506 | + break; | |
1507 | + case FRV_OPERAND_EIR : | |
1508 | + value = fields->f_eir; | |
1509 | + break; | |
1510 | + case FRV_OPERAND_HINT : | |
1511 | + value = fields->f_hint; | |
1512 | + break; | |
1513 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
1514 | + value = fields->f_hint; | |
1515 | + break; | |
1516 | + case FRV_OPERAND_HINT_TAKEN : | |
1517 | + value = fields->f_hint; | |
1518 | + break; | |
1519 | + case FRV_OPERAND_LABEL16 : | |
1520 | + value = fields->f_label16; | |
1521 | + break; | |
1522 | + case FRV_OPERAND_LABEL24 : | |
1523 | + value = fields->f_label24; | |
1524 | + break; | |
1525 | + case FRV_OPERAND_LOCK : | |
1526 | + value = fields->f_lock; | |
1527 | + break; | |
1528 | + case FRV_OPERAND_PACK : | |
1529 | + value = fields->f_pack; | |
1530 | + break; | |
1531 | + case FRV_OPERAND_S10 : | |
1532 | + value = fields->f_s10; | |
1533 | + break; | |
1534 | + case FRV_OPERAND_S12 : | |
1535 | + value = fields->f_d12; | |
1536 | + break; | |
1537 | + case FRV_OPERAND_S16 : | |
1538 | + value = fields->f_s16; | |
1539 | + break; | |
1540 | + case FRV_OPERAND_S5 : | |
1541 | + value = fields->f_s5; | |
1542 | + break; | |
1543 | + case FRV_OPERAND_S6 : | |
1544 | + value = fields->f_s6; | |
1545 | + break; | |
1546 | + case FRV_OPERAND_S6_1 : | |
1547 | + value = fields->f_s6_1; | |
1548 | + break; | |
1549 | + case FRV_OPERAND_SLO16 : | |
1550 | + value = fields->f_s16; | |
1551 | + break; | |
1552 | + case FRV_OPERAND_SPR : | |
1553 | + value = fields->f_spr; | |
1554 | + break; | |
1555 | + case FRV_OPERAND_U12 : | |
1556 | + value = fields->f_u12; | |
1557 | + break; | |
1558 | + case FRV_OPERAND_U16 : | |
1559 | + value = fields->f_u16; | |
1560 | + break; | |
1561 | + case FRV_OPERAND_U6 : | |
1562 | + value = fields->f_u6; | |
1563 | + break; | |
1564 | + case FRV_OPERAND_UHI16 : | |
1565 | + value = fields->f_u16; | |
1566 | + break; | |
1567 | + case FRV_OPERAND_ULO16 : | |
1568 | + value = fields->f_u16; | |
1569 | + break; | |
1570 | + | |
1571 | + default : | |
1572 | + /* xgettext:c-format */ | |
1573 | + fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"), | |
1574 | + opindex); | |
1575 | + abort (); | |
1576 | + } | |
1577 | + | |
1578 | + return value; | |
1579 | +} | |
1580 | + | |
1581 | +void frv_cgen_set_int_operand | |
1582 | + PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, int)); | |
1583 | +void frv_cgen_set_vma_operand | |
1584 | + PARAMS ((CGEN_CPU_DESC, int, CGEN_FIELDS *, bfd_vma)); | |
1585 | + | |
1586 | +/* Stuffing values in cgen_fields is handled by a collection of functions. | |
1587 | + They are distinguished by the type of the VALUE argument they accept. | |
1588 | + TODO: floating point, inlining support, remove cases where argument type | |
1589 | + not appropriate. */ | |
1590 | + | |
1591 | +void | |
1592 | +frv_cgen_set_int_operand (cd, opindex, fields, value) | |
1593 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
1594 | + int opindex; | |
1595 | + CGEN_FIELDS * fields; | |
1596 | + int value; | |
1597 | +{ | |
1598 | + switch (opindex) | |
1599 | + { | |
1600 | + case FRV_OPERAND_A : | |
1601 | + fields->f_A = value; | |
1602 | + break; | |
1603 | + case FRV_OPERAND_ACC40SI : | |
1604 | + fields->f_ACC40Si = value; | |
1605 | + break; | |
1606 | + case FRV_OPERAND_ACC40SK : | |
1607 | + fields->f_ACC40Sk = value; | |
1608 | + break; | |
1609 | + case FRV_OPERAND_ACC40UI : | |
1610 | + fields->f_ACC40Ui = value; | |
1611 | + break; | |
1612 | + case FRV_OPERAND_ACC40UK : | |
1613 | + fields->f_ACC40Uk = value; | |
1614 | + break; | |
1615 | + case FRV_OPERAND_ACCGI : | |
1616 | + fields->f_ACCGi = value; | |
1617 | + break; | |
1618 | + case FRV_OPERAND_ACCGK : | |
1619 | + fields->f_ACCGk = value; | |
1620 | + break; | |
1621 | + case FRV_OPERAND_CCI : | |
1622 | + fields->f_CCi = value; | |
1623 | + break; | |
1624 | + case FRV_OPERAND_CPRDOUBLEK : | |
1625 | + fields->f_CPRk = value; | |
1626 | + break; | |
1627 | + case FRV_OPERAND_CPRI : | |
1628 | + fields->f_CPRi = value; | |
1629 | + break; | |
1630 | + case FRV_OPERAND_CPRJ : | |
1631 | + fields->f_CPRj = value; | |
1632 | + break; | |
1633 | + case FRV_OPERAND_CPRK : | |
1634 | + fields->f_CPRk = value; | |
1635 | + break; | |
1636 | + case FRV_OPERAND_CRI : | |
1637 | + fields->f_CRi = value; | |
1638 | + break; | |
1639 | + case FRV_OPERAND_CRJ : | |
1640 | + fields->f_CRj = value; | |
1641 | + break; | |
1642 | + case FRV_OPERAND_CRJ_FLOAT : | |
1643 | + fields->f_CRj_float = value; | |
1644 | + break; | |
1645 | + case FRV_OPERAND_CRJ_INT : | |
1646 | + fields->f_CRj_int = value; | |
1647 | + break; | |
1648 | + case FRV_OPERAND_CRK : | |
1649 | + fields->f_CRk = value; | |
1650 | + break; | |
1651 | + case FRV_OPERAND_FCCI_1 : | |
1652 | + fields->f_FCCi_1 = value; | |
1653 | + break; | |
1654 | + case FRV_OPERAND_FCCI_2 : | |
1655 | + fields->f_FCCi_2 = value; | |
1656 | + break; | |
1657 | + case FRV_OPERAND_FCCI_3 : | |
1658 | + fields->f_FCCi_3 = value; | |
1659 | + break; | |
1660 | + case FRV_OPERAND_FCCK : | |
1661 | + fields->f_FCCk = value; | |
1662 | + break; | |
1663 | + case FRV_OPERAND_FRDOUBLEI : | |
1664 | + fields->f_FRi = value; | |
1665 | + break; | |
1666 | + case FRV_OPERAND_FRDOUBLEJ : | |
1667 | + fields->f_FRj = value; | |
1668 | + break; | |
1669 | + case FRV_OPERAND_FRDOUBLEK : | |
1670 | + fields->f_FRk = value; | |
1671 | + break; | |
1672 | + case FRV_OPERAND_FRI : | |
1673 | + fields->f_FRi = value; | |
1674 | + break; | |
1675 | + case FRV_OPERAND_FRINTI : | |
1676 | + fields->f_FRi = value; | |
1677 | + break; | |
1678 | + case FRV_OPERAND_FRINTJ : | |
1679 | + fields->f_FRj = value; | |
1680 | + break; | |
1681 | + case FRV_OPERAND_FRINTK : | |
1682 | + fields->f_FRk = value; | |
1683 | + break; | |
1684 | + case FRV_OPERAND_FRJ : | |
1685 | + fields->f_FRj = value; | |
1686 | + break; | |
1687 | + case FRV_OPERAND_FRK : | |
1688 | + fields->f_FRk = value; | |
1689 | + break; | |
1690 | + case FRV_OPERAND_FRKHI : | |
1691 | + fields->f_FRk = value; | |
1692 | + break; | |
1693 | + case FRV_OPERAND_FRKLO : | |
1694 | + fields->f_FRk = value; | |
1695 | + break; | |
1696 | + case FRV_OPERAND_GRDOUBLEK : | |
1697 | + fields->f_GRk = value; | |
1698 | + break; | |
1699 | + case FRV_OPERAND_GRI : | |
1700 | + fields->f_GRi = value; | |
1701 | + break; | |
1702 | + case FRV_OPERAND_GRJ : | |
1703 | + fields->f_GRj = value; | |
1704 | + break; | |
1705 | + case FRV_OPERAND_GRK : | |
1706 | + fields->f_GRk = value; | |
1707 | + break; | |
1708 | + case FRV_OPERAND_GRKHI : | |
1709 | + fields->f_GRk = value; | |
1710 | + break; | |
1711 | + case FRV_OPERAND_GRKLO : | |
1712 | + fields->f_GRk = value; | |
1713 | + break; | |
1714 | + case FRV_OPERAND_ICCI_1 : | |
1715 | + fields->f_ICCi_1 = value; | |
1716 | + break; | |
1717 | + case FRV_OPERAND_ICCI_2 : | |
1718 | + fields->f_ICCi_2 = value; | |
1719 | + break; | |
1720 | + case FRV_OPERAND_ICCI_3 : | |
1721 | + fields->f_ICCi_3 = value; | |
1722 | + break; | |
1723 | + case FRV_OPERAND_LI : | |
1724 | + fields->f_LI = value; | |
1725 | + break; | |
1726 | + case FRV_OPERAND_AE : | |
1727 | + fields->f_ae = value; | |
1728 | + break; | |
1729 | + case FRV_OPERAND_CCOND : | |
1730 | + fields->f_ccond = value; | |
1731 | + break; | |
1732 | + case FRV_OPERAND_COND : | |
1733 | + fields->f_cond = value; | |
1734 | + break; | |
1735 | + case FRV_OPERAND_D12 : | |
1736 | + fields->f_d12 = value; | |
1737 | + break; | |
1738 | + case FRV_OPERAND_DEBUG : | |
1739 | + fields->f_debug = value; | |
1740 | + break; | |
1741 | + case FRV_OPERAND_EIR : | |
1742 | + fields->f_eir = value; | |
1743 | + break; | |
1744 | + case FRV_OPERAND_HINT : | |
1745 | + fields->f_hint = value; | |
1746 | + break; | |
1747 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
1748 | + fields->f_hint = value; | |
1749 | + break; | |
1750 | + case FRV_OPERAND_HINT_TAKEN : | |
1751 | + fields->f_hint = value; | |
1752 | + break; | |
1753 | + case FRV_OPERAND_LABEL16 : | |
1754 | + fields->f_label16 = value; | |
1755 | + break; | |
1756 | + case FRV_OPERAND_LABEL24 : | |
1757 | + fields->f_label24 = value; | |
1758 | + break; | |
1759 | + case FRV_OPERAND_LOCK : | |
1760 | + fields->f_lock = value; | |
1761 | + break; | |
1762 | + case FRV_OPERAND_PACK : | |
1763 | + fields->f_pack = value; | |
1764 | + break; | |
1765 | + case FRV_OPERAND_S10 : | |
1766 | + fields->f_s10 = value; | |
1767 | + break; | |
1768 | + case FRV_OPERAND_S12 : | |
1769 | + fields->f_d12 = value; | |
1770 | + break; | |
1771 | + case FRV_OPERAND_S16 : | |
1772 | + fields->f_s16 = value; | |
1773 | + break; | |
1774 | + case FRV_OPERAND_S5 : | |
1775 | + fields->f_s5 = value; | |
1776 | + break; | |
1777 | + case FRV_OPERAND_S6 : | |
1778 | + fields->f_s6 = value; | |
1779 | + break; | |
1780 | + case FRV_OPERAND_S6_1 : | |
1781 | + fields->f_s6_1 = value; | |
1782 | + break; | |
1783 | + case FRV_OPERAND_SLO16 : | |
1784 | + fields->f_s16 = value; | |
1785 | + break; | |
1786 | + case FRV_OPERAND_SPR : | |
1787 | + fields->f_spr = value; | |
1788 | + break; | |
1789 | + case FRV_OPERAND_U12 : | |
1790 | + fields->f_u12 = value; | |
1791 | + break; | |
1792 | + case FRV_OPERAND_U16 : | |
1793 | + fields->f_u16 = value; | |
1794 | + break; | |
1795 | + case FRV_OPERAND_U6 : | |
1796 | + fields->f_u6 = value; | |
1797 | + break; | |
1798 | + case FRV_OPERAND_UHI16 : | |
1799 | + fields->f_u16 = value; | |
1800 | + break; | |
1801 | + case FRV_OPERAND_ULO16 : | |
1802 | + fields->f_u16 = value; | |
1803 | + break; | |
1804 | + | |
1805 | + default : | |
1806 | + /* xgettext:c-format */ | |
1807 | + fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"), | |
1808 | + opindex); | |
1809 | + abort (); | |
1810 | + } | |
1811 | +} | |
1812 | + | |
1813 | +void | |
1814 | +frv_cgen_set_vma_operand (cd, opindex, fields, value) | |
1815 | + CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; | |
1816 | + int opindex; | |
1817 | + CGEN_FIELDS * fields; | |
1818 | + bfd_vma value; | |
1819 | +{ | |
1820 | + switch (opindex) | |
1821 | + { | |
1822 | + case FRV_OPERAND_A : | |
1823 | + fields->f_A = value; | |
1824 | + break; | |
1825 | + case FRV_OPERAND_ACC40SI : | |
1826 | + fields->f_ACC40Si = value; | |
1827 | + break; | |
1828 | + case FRV_OPERAND_ACC40SK : | |
1829 | + fields->f_ACC40Sk = value; | |
1830 | + break; | |
1831 | + case FRV_OPERAND_ACC40UI : | |
1832 | + fields->f_ACC40Ui = value; | |
1833 | + break; | |
1834 | + case FRV_OPERAND_ACC40UK : | |
1835 | + fields->f_ACC40Uk = value; | |
1836 | + break; | |
1837 | + case FRV_OPERAND_ACCGI : | |
1838 | + fields->f_ACCGi = value; | |
1839 | + break; | |
1840 | + case FRV_OPERAND_ACCGK : | |
1841 | + fields->f_ACCGk = value; | |
1842 | + break; | |
1843 | + case FRV_OPERAND_CCI : | |
1844 | + fields->f_CCi = value; | |
1845 | + break; | |
1846 | + case FRV_OPERAND_CPRDOUBLEK : | |
1847 | + fields->f_CPRk = value; | |
1848 | + break; | |
1849 | + case FRV_OPERAND_CPRI : | |
1850 | + fields->f_CPRi = value; | |
1851 | + break; | |
1852 | + case FRV_OPERAND_CPRJ : | |
1853 | + fields->f_CPRj = value; | |
1854 | + break; | |
1855 | + case FRV_OPERAND_CPRK : | |
1856 | + fields->f_CPRk = value; | |
1857 | + break; | |
1858 | + case FRV_OPERAND_CRI : | |
1859 | + fields->f_CRi = value; | |
1860 | + break; | |
1861 | + case FRV_OPERAND_CRJ : | |
1862 | + fields->f_CRj = value; | |
1863 | + break; | |
1864 | + case FRV_OPERAND_CRJ_FLOAT : | |
1865 | + fields->f_CRj_float = value; | |
1866 | + break; | |
1867 | + case FRV_OPERAND_CRJ_INT : | |
1868 | + fields->f_CRj_int = value; | |
1869 | + break; | |
1870 | + case FRV_OPERAND_CRK : | |
1871 | + fields->f_CRk = value; | |
1872 | + break; | |
1873 | + case FRV_OPERAND_FCCI_1 : | |
1874 | + fields->f_FCCi_1 = value; | |
1875 | + break; | |
1876 | + case FRV_OPERAND_FCCI_2 : | |
1877 | + fields->f_FCCi_2 = value; | |
1878 | + break; | |
1879 | + case FRV_OPERAND_FCCI_3 : | |
1880 | + fields->f_FCCi_3 = value; | |
1881 | + break; | |
1882 | + case FRV_OPERAND_FCCK : | |
1883 | + fields->f_FCCk = value; | |
1884 | + break; | |
1885 | + case FRV_OPERAND_FRDOUBLEI : | |
1886 | + fields->f_FRi = value; | |
1887 | + break; | |
1888 | + case FRV_OPERAND_FRDOUBLEJ : | |
1889 | + fields->f_FRj = value; | |
1890 | + break; | |
1891 | + case FRV_OPERAND_FRDOUBLEK : | |
1892 | + fields->f_FRk = value; | |
1893 | + break; | |
1894 | + case FRV_OPERAND_FRI : | |
1895 | + fields->f_FRi = value; | |
1896 | + break; | |
1897 | + case FRV_OPERAND_FRINTI : | |
1898 | + fields->f_FRi = value; | |
1899 | + break; | |
1900 | + case FRV_OPERAND_FRINTJ : | |
1901 | + fields->f_FRj = value; | |
1902 | + break; | |
1903 | + case FRV_OPERAND_FRINTK : | |
1904 | + fields->f_FRk = value; | |
1905 | + break; | |
1906 | + case FRV_OPERAND_FRJ : | |
1907 | + fields->f_FRj = value; | |
1908 | + break; | |
1909 | + case FRV_OPERAND_FRK : | |
1910 | + fields->f_FRk = value; | |
1911 | + break; | |
1912 | + case FRV_OPERAND_FRKHI : | |
1913 | + fields->f_FRk = value; | |
1914 | + break; | |
1915 | + case FRV_OPERAND_FRKLO : | |
1916 | + fields->f_FRk = value; | |
1917 | + break; | |
1918 | + case FRV_OPERAND_GRDOUBLEK : | |
1919 | + fields->f_GRk = value; | |
1920 | + break; | |
1921 | + case FRV_OPERAND_GRI : | |
1922 | + fields->f_GRi = value; | |
1923 | + break; | |
1924 | + case FRV_OPERAND_GRJ : | |
1925 | + fields->f_GRj = value; | |
1926 | + break; | |
1927 | + case FRV_OPERAND_GRK : | |
1928 | + fields->f_GRk = value; | |
1929 | + break; | |
1930 | + case FRV_OPERAND_GRKHI : | |
1931 | + fields->f_GRk = value; | |
1932 | + break; | |
1933 | + case FRV_OPERAND_GRKLO : | |
1934 | + fields->f_GRk = value; | |
1935 | + break; | |
1936 | + case FRV_OPERAND_ICCI_1 : | |
1937 | + fields->f_ICCi_1 = value; | |
1938 | + break; | |
1939 | + case FRV_OPERAND_ICCI_2 : | |
1940 | + fields->f_ICCi_2 = value; | |
1941 | + break; | |
1942 | + case FRV_OPERAND_ICCI_3 : | |
1943 | + fields->f_ICCi_3 = value; | |
1944 | + break; | |
1945 | + case FRV_OPERAND_LI : | |
1946 | + fields->f_LI = value; | |
1947 | + break; | |
1948 | + case FRV_OPERAND_AE : | |
1949 | + fields->f_ae = value; | |
1950 | + break; | |
1951 | + case FRV_OPERAND_CCOND : | |
1952 | + fields->f_ccond = value; | |
1953 | + break; | |
1954 | + case FRV_OPERAND_COND : | |
1955 | + fields->f_cond = value; | |
1956 | + break; | |
1957 | + case FRV_OPERAND_D12 : | |
1958 | + fields->f_d12 = value; | |
1959 | + break; | |
1960 | + case FRV_OPERAND_DEBUG : | |
1961 | + fields->f_debug = value; | |
1962 | + break; | |
1963 | + case FRV_OPERAND_EIR : | |
1964 | + fields->f_eir = value; | |
1965 | + break; | |
1966 | + case FRV_OPERAND_HINT : | |
1967 | + fields->f_hint = value; | |
1968 | + break; | |
1969 | + case FRV_OPERAND_HINT_NOT_TAKEN : | |
1970 | + fields->f_hint = value; | |
1971 | + break; | |
1972 | + case FRV_OPERAND_HINT_TAKEN : | |
1973 | + fields->f_hint = value; | |
1974 | + break; | |
1975 | + case FRV_OPERAND_LABEL16 : | |
1976 | + fields->f_label16 = value; | |
1977 | + break; | |
1978 | + case FRV_OPERAND_LABEL24 : | |
1979 | + fields->f_label24 = value; | |
1980 | + break; | |
1981 | + case FRV_OPERAND_LOCK : | |
1982 | + fields->f_lock = value; | |
1983 | + break; | |
1984 | + case FRV_OPERAND_PACK : | |
1985 | + fields->f_pack = value; | |
1986 | + break; | |
1987 | + case FRV_OPERAND_S10 : | |
1988 | + fields->f_s10 = value; | |
1989 | + break; | |
1990 | + case FRV_OPERAND_S12 : | |
1991 | + fields->f_d12 = value; | |
1992 | + break; | |
1993 | + case FRV_OPERAND_S16 : | |
1994 | + fields->f_s16 = value; | |
1995 | + break; | |
1996 | + case FRV_OPERAND_S5 : | |
1997 | + fields->f_s5 = value; | |
1998 | + break; | |
1999 | + case FRV_OPERAND_S6 : | |
2000 | + fields->f_s6 = value; | |
2001 | + break; | |
2002 | + case FRV_OPERAND_S6_1 : | |
2003 | + fields->f_s6_1 = value; | |
2004 | + break; | |
2005 | + case FRV_OPERAND_SLO16 : | |
2006 | + fields->f_s16 = value; | |
2007 | + break; | |
2008 | + case FRV_OPERAND_SPR : | |
2009 | + fields->f_spr = value; | |
2010 | + break; | |
2011 | + case FRV_OPERAND_U12 : | |
2012 | + fields->f_u12 = value; | |
2013 | + break; | |
2014 | + case FRV_OPERAND_U16 : | |
2015 | + fields->f_u16 = value; | |
2016 | + break; | |
2017 | + case FRV_OPERAND_U6 : | |
2018 | + fields->f_u6 = value; | |
2019 | + break; | |
2020 | + case FRV_OPERAND_UHI16 : | |
2021 | + fields->f_u16 = value; | |
2022 | + break; | |
2023 | + case FRV_OPERAND_ULO16 : | |
2024 | + fields->f_u16 = value; | |
2025 | + break; | |
2026 | + | |
2027 | + default : | |
2028 | + /* xgettext:c-format */ | |
2029 | + fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"), | |
2030 | + opindex); | |
2031 | + abort (); | |
2032 | + } | |
2033 | +} | |
2034 | + | |
2035 | +/* Function to call before using the instruction builder tables. */ | |
2036 | + | |
2037 | +void | |
2038 | +frv_cgen_init_ibld_table (cd) | |
2039 | + CGEN_CPU_DESC cd; | |
2040 | +{ | |
2041 | + cd->insert_handlers = & frv_cgen_insert_handlers[0]; | |
2042 | + cd->extract_handlers = & frv_cgen_extract_handlers[0]; | |
2043 | + | |
2044 | + cd->insert_operand = frv_cgen_insert_operand; | |
2045 | + cd->extract_operand = frv_cgen_extract_operand; | |
2046 | + | |
2047 | + cd->get_int_operand = frv_cgen_get_int_operand; | |
2048 | + cd->set_int_operand = frv_cgen_set_int_operand; | |
2049 | + cd->get_vma_operand = frv_cgen_get_vma_operand; | |
2050 | + cd->set_vma_operand = frv_cgen_set_vma_operand; | |
2051 | +} |
@@ -0,0 +1,5842 @@ | ||
1 | +/* Instruction opcode table for frv. | |
2 | + | |
3 | +THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | + | |
5 | +Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. | |
6 | + | |
7 | +This file is part of the GNU Binutils and/or GDB, the GNU debugger. | |
8 | + | |
9 | +This program is free software; you can redistribute it and/or modify | |
10 | +it under the terms of the GNU General Public License as published by | |
11 | +the Free Software Foundation; either version 2, or (at your option) | |
12 | +any later version. | |
13 | + | |
14 | +This program is distributed in the hope that it will be useful, | |
15 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | +GNU General Public License for more details. | |
18 | + | |
19 | +You should have received a copy of the GNU General Public License along | |
20 | +with this program; if not, write to the Free Software Foundation, Inc., | |
21 | +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
22 | + | |
23 | +*/ | |
24 | + | |
25 | +#include "sysdep.h" | |
26 | +#include "ansidecl.h" | |
27 | +#include "bfd.h" | |
28 | +#include "symcat.h" | |
29 | +#include "frv-desc.h" | |
30 | +#include "frv-opc.h" | |
31 | +#include "libiberty.h" | |
32 | + | |
33 | +/* -- opc.c */ | |
34 | +#include "elf/frv.h" | |
35 | + | |
36 | +static int match_unit | |
37 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE, CGEN_ATTR_VALUE_TYPE)); | |
38 | +static int match_vliw | |
39 | + PARAMS ((VLIW_COMBO *, VLIW_COMBO *, int)); | |
40 | +static VLIW_COMBO * add_next_to_vliw | |
41 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE)); | |
42 | +static int find_major_in_vliw | |
43 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE)); | |
44 | +static int fr400_check_insn_major_constraints | |
45 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE)); | |
46 | +static int fr500_check_insn_major_constraints | |
47 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE)); | |
48 | +static int check_insn_major_constraints | |
49 | + PARAMS ((FRV_VLIW *, CGEN_ATTR_VALUE_TYPE)); | |
50 | + | |
51 | +int | |
52 | +frv_is_branch_major (CGEN_ATTR_VALUE_TYPE major, unsigned long mach) | |
53 | +{ | |
54 | + switch (mach) | |
55 | + { | |
56 | + case bfd_mach_fr400: | |
57 | + if (major >= FR400_MAJOR_B_1 && major <= FR400_MAJOR_B_6) | |
58 | + return 1; /* is a branch */ | |
59 | + break; | |
60 | + default: | |
61 | + if (major >= FR500_MAJOR_B_1 && major <= FR500_MAJOR_B_6) | |
62 | + return 1; /* is a branch */ | |
63 | + break; | |
64 | + } | |
65 | + | |
66 | + return 0; /* not a branch */ | |
67 | +} | |
68 | + | |
69 | +int | |
70 | +frv_is_float_major (CGEN_ATTR_VALUE_TYPE major, unsigned long mach) | |
71 | +{ | |
72 | + switch (mach) | |
73 | + { | |
74 | + case bfd_mach_fr400: | |
75 | + return 0; /* No float insns */ | |
76 | + default: | |
77 | + if (major >= FR500_MAJOR_F_1 && major <= FR500_MAJOR_F_8) | |
78 | + return 1; /* is a float insn */ | |
79 | + break; | |
80 | + } | |
81 | + | |
82 | + return 0; /* not a branch */ | |
83 | +} | |
84 | + | |
85 | +int | |
86 | +frv_is_media_major (CGEN_ATTR_VALUE_TYPE major, unsigned long mach) | |
87 | +{ | |
88 | + switch (mach) | |
89 | + { | |
90 | + case bfd_mach_fr400: | |
91 | + if (major >= FR400_MAJOR_M_1 && major <= FR400_MAJOR_M_2) | |
92 | + return 1; /* is a media insn */ | |
93 | + break; | |
94 | + default: | |
95 | + if (major >= FR500_MAJOR_M_1 && major <= FR500_MAJOR_M_8) | |
96 | + return 1; /* is a media insn */ | |
97 | + break; | |
98 | + } | |
99 | + | |
100 | + return 0; /* not a branch */ | |
101 | +} | |
102 | + | |
103 | +int | |
104 | +frv_is_branch_insn (const CGEN_INSN *insn) | |
105 | +{ | |
106 | + if (frv_is_branch_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR), | |
107 | + bfd_mach_fr400)) | |
108 | + return 1; | |
109 | + if (frv_is_branch_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR), | |
110 | + bfd_mach_fr500)) | |
111 | + return 1; | |
112 | + | |
113 | + return 0; | |
114 | +} | |
115 | + | |
116 | +int | |
117 | +frv_is_float_insn (const CGEN_INSN *insn) | |
118 | +{ | |
119 | + if (frv_is_float_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR), | |
120 | + bfd_mach_fr400)) | |
121 | + return 1; | |
122 | + if (frv_is_float_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR), | |
123 | + bfd_mach_fr500)) | |
124 | + return 1; | |
125 | + | |
126 | + return 0; | |
127 | +} | |
128 | + | |
129 | +int | |
130 | +frv_is_media_insn (const CGEN_INSN *insn) | |
131 | +{ | |
132 | + if (frv_is_media_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR), | |
133 | + bfd_mach_fr400)) | |
134 | + return 1; | |
135 | + if (frv_is_media_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR), | |
136 | + bfd_mach_fr500)) | |
137 | + return 1; | |
138 | + | |
139 | + return 0; | |
140 | +} | |
141 | + | |
142 | +/* This table represents the allowable packing for vliw insns for the fr400. | |
143 | + The fr400 has only 2 vliw slots. Represent this by not allowing any insns | |
144 | + in slots 2 and 3. | |
145 | + Subsets of any given row are also allowed. */ | |
146 | +static VLIW_COMBO fr400_allowed_vliw[] = | |
147 | +{ | |
148 | + /* slot0 slot1 slot2 slot3 */ | |
149 | + { UNIT_I0, UNIT_I1, UNIT_NIL, UNIT_NIL }, | |
150 | + { UNIT_I0, UNIT_FM0, UNIT_NIL, UNIT_NIL }, | |
151 | + { UNIT_I0, UNIT_B0, UNIT_NIL, UNIT_NIL }, | |
152 | + { UNIT_FM0, UNIT_FM1, UNIT_NIL, UNIT_NIL }, | |
153 | + { UNIT_FM0, UNIT_B0, UNIT_NIL, UNIT_NIL }, | |
154 | + { UNIT_B0, UNIT_NIL, UNIT_NIL, UNIT_NIL }, | |
155 | + { UNIT_C, UNIT_NIL, UNIT_NIL, UNIT_NIL }, | |
156 | + { UNIT_NIL, UNIT_NIL, UNIT_NIL, UNIT_NIL } | |
157 | +}; | |
158 | + | |
159 | +/* This table represents the allowable packing for vliw insns for the fr500. | |
160 | + Subsets of any given row are also allowed. */ | |
161 | +static VLIW_COMBO fr500_allowed_vliw[] = | |
162 | +{ | |
163 | + /* slot0 slot1 slot2 slot3 */ | |
164 | + { UNIT_I0, UNIT_FM0, UNIT_I1, UNIT_FM1 }, | |
165 | + { UNIT_I0, UNIT_FM0, UNIT_I1, UNIT_B0 }, | |
166 | + { UNIT_I0, UNIT_FM0, UNIT_FM1, UNIT_B0 }, | |
167 | + { UNIT_I0, UNIT_FM0, UNIT_B0, UNIT_B1 }, | |
168 | + { UNIT_I0, UNIT_I1, UNIT_B0, UNIT_B1 }, | |
169 | + { UNIT_I0, UNIT_B0, UNIT_B1, UNIT_NIL }, | |
170 | + { UNIT_FM0, UNIT_FM1, UNIT_B0, UNIT_B1 }, | |
171 | + { UNIT_FM0, UNIT_B0, UNIT_B1, UNIT_NIL }, | |
172 | + { UNIT_B0, UNIT_B1, UNIT_NIL, UNIT_NIL }, | |
173 | + { UNIT_C, UNIT_NIL, UNIT_NIL, UNIT_NIL }, | |
174 | + { UNIT_NIL, UNIT_NIL, UNIT_NIL, UNIT_NIL } | |
175 | +}; | |
176 | + | |
177 | +/* Some insns are assigned specialized implementation units which map to | |
178 | + different actual implementation units on different machines. These | |
179 | + tables perform that mapping. */ | |
180 | +static CGEN_ATTR_VALUE_TYPE fr400_unit_mapping[] = | |
181 | +{ | |
182 | +/* unit in insn actual unit */ | |
183 | +/* NIL */ UNIT_NIL, | |
184 | +/* I0 */ UNIT_I0, | |
185 | +/* I1 */ UNIT_I1, | |
186 | +/* I01 */ UNIT_I01, | |
187 | +/* FM0 */ UNIT_FM0, | |
188 | +/* FM1 */ UNIT_FM1, | |
189 | +/* FM01 */ UNIT_FM01, | |
190 | +/* B0 */ UNIT_B0, /* branches only in B0 unit. */ | |
191 | +/* B1 */ UNIT_B0, | |
192 | +/* B01 */ UNIT_B0, | |
193 | +/* C */ UNIT_C, | |
194 | +/* MULT-DIV */ UNIT_I0, /* multiply and divide only in I0 unit. */ | |
195 | +/* LOAD */ UNIT_I0 /* load only in I0 unit. */ | |
196 | +}; | |
197 | + | |
198 | +static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] = | |
199 | +{ | |
200 | +/* unit in insn actual unit */ | |
201 | +/* NIL */ UNIT_NIL, | |
202 | +/* I0 */ UNIT_I0, | |
203 | +/* I1 */ UNIT_I1, | |
204 | +/* I01 */ UNIT_I01, | |
205 | +/* FM0 */ UNIT_FM0, | |
206 | +/* FM1 */ UNIT_FM1, | |
207 | +/* FM01 */ UNIT_FM01, | |
208 | +/* B0 */ UNIT_B0, | |
209 | +/* B1 */ UNIT_B1, | |
210 | +/* B01 */ UNIT_B01, | |
211 | +/* C */ UNIT_C, | |
212 | +/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */ | |
213 | +/* LOAD */ UNIT_I01 /* load in I0 or I1 unit. */ | |
214 | +}; | |
215 | + | |
216 | +void | |
217 | +frv_vliw_reset (FRV_VLIW *vliw, unsigned long mach, unsigned long elf_flags) | |
218 | +{ | |
219 | + vliw->next_slot = 0; | |
220 | + vliw->constraint_violation = 0; | |
221 | + vliw->mach = mach; | |
222 | + vliw->elf_flags = elf_flags; | |
223 | + | |
224 | + switch (mach) | |
225 | + { | |
226 | + case bfd_mach_fr400: | |
227 | + vliw->current_vliw = fr400_allowed_vliw; | |
228 | + vliw->unit_mapping = fr400_unit_mapping; | |
229 | + break; | |
230 | + default: | |
231 | + vliw->current_vliw = fr500_allowed_vliw; | |
232 | + vliw->unit_mapping = fr500_unit_mapping; | |
233 | + break; | |
234 | + } | |
235 | +} | |
236 | + | |
237 | +/* Return 1 if unit1 is a match for unit2. | |
238 | + Unit1 comes from the insn's UNIT attribute. unit2 comes from one of the | |
239 | + *_allowed_vliw tables above. */ | |
240 | +static int | |
241 | +match_unit (FRV_VLIW *vliw, | |
242 | + CGEN_ATTR_VALUE_TYPE unit1, CGEN_ATTR_VALUE_TYPE unit2) | |
243 | +{ | |
244 | + /* Map any specialized implementation units to actual ones. */ | |
245 | + unit1 = vliw->unit_mapping[unit1]; | |
246 | + | |
247 | + if (unit1 == unit2) | |
248 | + return 1; | |
249 | + if (unit1 < unit2) | |
250 | + return 0; | |
251 | + | |
252 | + switch (unit1) | |
253 | + { | |
254 | + case UNIT_I01: | |
255 | + case UNIT_FM01: | |
256 | + case UNIT_B01: | |
257 | + /* The 01 versions of these units are within 2 enums of the 0 or 1 | |
258 | + versions. */ | |
259 | + if (unit1 - unit2 <= 2) | |
260 | + return 1; | |
261 | + break; | |
262 | + default: | |
263 | + break; | |
264 | + } | |
265 | + | |
266 | + return 0; | |
267 | +} | |
268 | + | |
269 | +/* Return 1 if the vliws match, 0 otherwise. */ | |
270 | + | |
271 | +static int | |
272 | +match_vliw (VLIW_COMBO *vliw1, VLIW_COMBO *vliw2, int vliw_size) | |
273 | +{ | |
274 | + int i; | |
275 | + | |
276 | + for (i = 0; i < vliw_size; ++i) | |
277 | + { | |
278 | + if ((*vliw1)[i] != (*vliw2)[i]) | |
279 | + return 0; | |
280 | + } | |
281 | + | |
282 | + return 1; | |
283 | +} | |
284 | + | |
285 | +/* Find the next vliw vliw in the table that can accomodate the new insn. | |
286 | + If one is found then return it. Otherwise return NULL. */ | |
287 | + | |
288 | +static VLIW_COMBO * | |
289 | +add_next_to_vliw (FRV_VLIW *vliw, CGEN_ATTR_VALUE_TYPE unit) | |
290 | +{ | |
291 | + int next = vliw->next_slot; | |
292 | + VLIW_COMBO *current = vliw->current_vliw; | |
293 | + VLIW_COMBO *potential; | |
294 | + | |
295 | + if (next <= 0) | |
296 | + abort (); /* Should never happen */ | |
297 | + | |
298 | + /* The table is sorted by units allowed within slots, so vliws with | |
299 | + identical starting sequences are together. */ | |
300 | + potential = current; | |
301 | + do | |
302 | + { | |
303 | + if (match_unit (vliw, unit, (*potential)[next])) | |
304 | + return potential; | |
305 | + ++potential; | |
306 | + } | |
307 | + while (match_vliw (potential, current, next)); | |
308 | + | |
309 | + return NULL; | |
310 | +} | |
311 | + | |
312 | +/* Look for the given major insn type in the given vliw. Return 1 if found, | |
313 | + return 0 otherwise. */ | |
314 | + | |
315 | +static int | |
316 | +find_major_in_vliw (FRV_VLIW *vliw, CGEN_ATTR_VALUE_TYPE major) | |
317 | +{ | |
318 | + int i; | |
319 | + | |
320 | + for (i = 0; i < vliw->next_slot; ++i) | |
321 | + if (vliw->major[i] == major) | |
322 | + return 1; | |
323 | + | |
324 | + return 0; | |
325 | +} | |
326 | + | |
327 | +/* Check for constraints between the insns in the vliw due to major insn | |
328 | + types. */ | |
329 | + | |
330 | +static int | |
331 | +fr400_check_insn_major_constraints ( | |
332 | + FRV_VLIW *vliw, CGEN_ATTR_VALUE_TYPE major | |
333 | +) | |
334 | +{ | |
335 | + /* In the cpu file, all media insns are represented as being allowed in | |
336 | + both media units. This makes it easier since this is the case for fr500. | |
337 | + Catch the invalid combinations here. Insns of major class FR400_MAJOR_M_2 | |
338 | + cannot coexist with any other media insn in a vliw. */ | |
339 | + switch (major) | |
340 | + { | |
341 | + case FR400_MAJOR_M_2: | |
342 | + return ! find_major_in_vliw (vliw, FR400_MAJOR_M_1) | |
343 | + && ! find_major_in_vliw (vliw, FR400_MAJOR_M_2); | |
344 | + default: | |
345 | + break; | |
346 | + } | |
347 | + return 1; | |
348 | +} | |
349 | + | |
350 | +static int | |
351 | +fr500_check_insn_major_constraints ( | |
352 | + FRV_VLIW *vliw, CGEN_ATTR_VALUE_TYPE major | |
353 | +) | |
354 | +{ | |
355 | + /* TODO: A table might be faster for some of the more complex instances | |
356 | + here. */ | |
357 | + switch (major) | |
358 | + { | |
359 | + case FR500_MAJOR_I_1: | |
360 | + case FR500_MAJOR_I_4: | |
361 | + case FR500_MAJOR_I_5: | |
362 | + case FR500_MAJOR_I_6: | |
363 | + case FR500_MAJOR_B_1: | |
364 | + case FR500_MAJOR_B_2: | |
365 | + case FR500_MAJOR_B_3: | |
366 | + case FR500_MAJOR_B_4: | |
367 | + case FR500_MAJOR_B_5: | |
368 | + case FR500_MAJOR_B_6: | |
369 | + case FR500_MAJOR_F_4: | |
370 | + case FR500_MAJOR_F_8: | |
371 | + case FR500_MAJOR_M_8: | |
372 | + return 1; /* OK */ | |
373 | + case FR500_MAJOR_I_2: | |
374 | + /* Cannot coexist with I-3 insn. */ | |
375 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_I_3); | |
376 | + case FR500_MAJOR_I_3: | |
377 | + /* Cannot coexist with I-2 insn. */ | |
378 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_I_2); | |
379 | + case FR500_MAJOR_F_1: | |
380 | + case FR500_MAJOR_F_2: | |
381 | + /* Cannot coexist with F-5, F-6, or M-7 insn. */ | |
382 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_F_5) | |
383 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_6) | |
384 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
385 | + case FR500_MAJOR_F_3: | |
386 | + /* Cannot coexist with F-7, or M-7 insn. */ | |
387 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_F_7) | |
388 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
389 | + case FR500_MAJOR_F_5: | |
390 | + /* Cannot coexist with F-1, F-2, F-6, F-7, or M-7 insn. */ | |
391 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_F_1) | |
392 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_2) | |
393 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_6) | |
394 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_7) | |
395 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
396 | + case FR500_MAJOR_F_6: | |
397 | + /* Cannot coexist with F-1, F-2, F-5, F-6, or M-7 insn. */ | |
398 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_F_1) | |
399 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_2) | |
400 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_5) | |
401 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_6) | |
402 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
403 | + case FR500_MAJOR_F_7: | |
404 | + /* Cannot coexist with F-3, F-5, F-7, or M-7 insn. */ | |
405 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_F_3) | |
406 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_5) | |
407 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_7) | |
408 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
409 | + case FR500_MAJOR_M_1: | |
410 | + /* Cannot coexist with M-7 insn. */ | |
411 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
412 | + case FR500_MAJOR_M_2: | |
413 | + case FR500_MAJOR_M_3: | |
414 | + /* Cannot coexist with M-5, M-6 or M-7 insn. */ | |
415 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_5) | |
416 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_6) | |
417 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
418 | + case FR500_MAJOR_M_4: | |
419 | + /* Cannot coexist with M-6 insn. */ | |
420 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_6); | |
421 | + case FR500_MAJOR_M_5: | |
422 | + /* Cannot coexist with M-2, M-3, M-5, M-6 or M-7 insn. */ | |
423 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_2) | |
424 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_3) | |
425 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_5) | |
426 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_6) | |
427 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
428 | + case FR500_MAJOR_M_6: | |
429 | + /* Cannot coexist with M-2, M-3, M-4, M-5, M-6 or M-7 insn. */ | |
430 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_2) | |
431 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_3) | |
432 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_4) | |
433 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_5) | |
434 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_6) | |
435 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7); | |
436 | + case FR500_MAJOR_M_7: | |
437 | + /* Cannot coexist with M-1, M-2, M-3, M-5, M-6 or M-7 insn. */ | |
438 | + return ! find_major_in_vliw (vliw, FR500_MAJOR_M_1) | |
439 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_2) | |
440 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_3) | |
441 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_5) | |
442 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_6) | |
443 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_M_7) | |
444 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_1) | |
445 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_2) | |
446 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_3) | |
447 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_5) | |
448 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_6) | |
449 | + && ! find_major_in_vliw (vliw, FR500_MAJOR_F_7); | |
450 | + default: | |
451 | + abort (); | |
452 | + break; | |
453 | + } | |
454 | + return 1; | |
455 | +} | |
456 | + | |
457 | +static int | |
458 | +check_insn_major_constraints ( | |
459 | + FRV_VLIW *vliw, CGEN_ATTR_VALUE_TYPE major | |
460 | +) | |
461 | +{ | |
462 | + int rc; | |
463 | + switch (vliw->mach) | |
464 | + { | |
465 | + case bfd_mach_fr400: | |
466 | + rc = fr400_check_insn_major_constraints (vliw, major); | |
467 | + break; | |
468 | + default: | |
469 | + rc = fr500_check_insn_major_constraints (vliw, major); | |
470 | + break; | |
471 | + } | |
472 | + return rc; | |
473 | +} | |
474 | + | |
475 | +/* Add in insn to the VLIW vliw if possible. Return 0 if successful, | |
476 | + non-zero otherwise. */ | |
477 | +int | |
478 | +frv_vliw_add_insn (FRV_VLIW *vliw, const CGEN_INSN *insn) | |
479 | +{ | |
480 | + int index; | |
481 | + CGEN_ATTR_VALUE_TYPE major; | |
482 | + CGEN_ATTR_VALUE_TYPE unit; | |
483 | + VLIW_COMBO *new_vliw; | |
484 | + | |
485 | + if (vliw->constraint_violation || CGEN_INSN_INVALID_P (insn)) | |
486 | + return 1; | |
487 | + | |
488 | + index = vliw->next_slot; | |
489 | + if (index >= FRV_VLIW_SIZE) | |
490 | + return 1; | |
491 | + | |
492 | + unit = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_UNIT); | |
493 | + if (unit == UNIT_NIL) | |
494 | + abort (); /* no UNIT specified for this insn in frv.cpu */ | |
495 | + | |
496 | + if (vliw->mach == bfd_mach_fr400) | |
497 | + major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR); | |
498 | + else | |
499 | + major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR); | |
500 | + | |
501 | + if (index <= 0) | |
502 | + { | |
503 | + /* Any insn can be added to slot 0. */ | |
504 | + while (! match_unit (vliw, unit, (*vliw->current_vliw)[0])) | |
505 | + ++vliw->current_vliw; | |
506 | + vliw->major[0] = major; | |
507 | + vliw->next_slot = 1; | |
508 | + return 0; | |
509 | + } | |
510 | + | |
511 | + /* If there are already insns in the vliw(s) check to see that | |
512 | + this one can be added. Do this by finding an allowable vliw | |
513 | + combination that can accept the new insn. */ | |
514 | + if (! (vliw->elf_flags & EF_FRV_NOPACK)) | |
515 | + { | |
516 | + new_vliw = add_next_to_vliw (vliw, unit); | |
517 | + if (new_vliw && check_insn_major_constraints (vliw, major)) | |
518 | + { | |
519 | + vliw->current_vliw = new_vliw; | |
520 | + vliw->major[index] = major; | |
521 | + vliw->next_slot++; | |
522 | + return 0; | |
523 | + } | |
524 | + | |
525 | + /* The frv machine supports all packing conbinations. If we fail, | |
526 | + to add the insn, then it could not be handled as if it was the fr500. | |
527 | + Just return as if it was handled ok. */ | |
528 | + if (vliw->mach == bfd_mach_frv) | |
529 | + return 0; | |
530 | + } | |
531 | + | |
532 | + vliw->constraint_violation = 1; | |
533 | + return 1; | |
534 | +} | |
535 | + | |
536 | +int | |
537 | +spr_valid (regno) | |
538 | + long regno; | |
539 | +{ | |
540 | + if (regno < 0) return 0; | |
541 | + if (regno <= 4095) return 1; | |
542 | + return 0; | |
543 | +} | |
544 | +/* -- */ | |
545 | +/* The hash functions are recorded here to help keep assembler code out of | |
546 | + the disassembler and vice versa. */ | |
547 | + | |
548 | +static int asm_hash_insn_p PARAMS ((const CGEN_INSN *)); | |
549 | +static unsigned int asm_hash_insn PARAMS ((const char *)); | |
550 | +static int dis_hash_insn_p PARAMS ((const CGEN_INSN *)); | |
551 | +static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT)); | |
552 | + | |
553 | +/* Instruction formats. */ | |
554 | + | |
555 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
556 | +#define F(f) & frv_cgen_ifld_table[FRV_##f] | |
557 | +#else | |
558 | +#define F(f) & frv_cgen_ifld_table[FRV_/**/f] | |
559 | +#endif | |
560 | +static const CGEN_IFMT ifmt_empty = { | |
561 | + 0, 0, 0x0, { { 0 } } | |
562 | +}; | |
563 | + | |
564 | +static const CGEN_IFMT ifmt_add = { | |
565 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1_NULL) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
566 | +}; | |
567 | + | |
568 | +static const CGEN_IFMT ifmt_not = { | |
569 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_ICCI_1_NULL) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
570 | +}; | |
571 | + | |
572 | +static const CGEN_IFMT ifmt_smul = { | |
573 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1_NULL) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
574 | +}; | |
575 | + | |
576 | +static const CGEN_IFMT ifmt_cadd = { | |
577 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
578 | +}; | |
579 | + | |
580 | +static const CGEN_IFMT ifmt_cnot = { | |
581 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
582 | +}; | |
583 | + | |
584 | +static const CGEN_IFMT ifmt_csmul = { | |
585 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
586 | +}; | |
587 | + | |
588 | +static const CGEN_IFMT ifmt_addcc = { | |
589 | + 32, 32, 0x1fc03c0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
590 | +}; | |
591 | + | |
592 | +static const CGEN_IFMT ifmt_smulcc = { | |
593 | + 32, 32, 0x1fc03c0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
594 | +}; | |
595 | + | |
596 | +static const CGEN_IFMT ifmt_addi = { | |
597 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
598 | +}; | |
599 | + | |
600 | +static const CGEN_IFMT ifmt_smuli = { | |
601 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
602 | +}; | |
603 | + | |
604 | +static const CGEN_IFMT ifmt_addicc = { | |
605 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1) }, { F (F_S10) }, { 0 } } | |
606 | +}; | |
607 | + | |
608 | +static const CGEN_IFMT ifmt_smulicc = { | |
609 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1) }, { F (F_S10) }, { 0 } } | |
610 | +}; | |
611 | + | |
612 | +static const CGEN_IFMT ifmt_cmpb = { | |
613 | + 32, 32, 0x7ffc03c0, { { F (F_PACK) }, { F (F_GRK_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_ICCI_1) }, { F (F_OPE2) }, { F (F_GRJ) }, { 0 } } | |
614 | +}; | |
615 | + | |
616 | +static const CGEN_IFMT ifmt_setlo = { | |
617 | + 32, 32, 0x1ff0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_MISC_NULL_4) }, { F (F_U16) }, { 0 } } | |
618 | +}; | |
619 | + | |
620 | +static const CGEN_IFMT ifmt_sethi = { | |
621 | + 32, 32, 0x1ff0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_MISC_NULL_4) }, { F (F_U16) }, { 0 } } | |
622 | +}; | |
623 | + | |
624 | +static const CGEN_IFMT ifmt_setlos = { | |
625 | + 32, 32, 0x1ff0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_MISC_NULL_4) }, { F (F_S16) }, { 0 } } | |
626 | +}; | |
627 | + | |
628 | +static const CGEN_IFMT ifmt_ldsb = { | |
629 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
630 | +}; | |
631 | + | |
632 | +static const CGEN_IFMT ifmt_ldbf = { | |
633 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
634 | +}; | |
635 | + | |
636 | +static const CGEN_IFMT ifmt_ldc = { | |
637 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_CPRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
638 | +}; | |
639 | + | |
640 | +static const CGEN_IFMT ifmt_ldd = { | |
641 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
642 | +}; | |
643 | + | |
644 | +static const CGEN_IFMT ifmt_lddf = { | |
645 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
646 | +}; | |
647 | + | |
648 | +static const CGEN_IFMT ifmt_lddc = { | |
649 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_CPRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
650 | +}; | |
651 | + | |
652 | +static const CGEN_IFMT ifmt_ldsbi = { | |
653 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
654 | +}; | |
655 | + | |
656 | +static const CGEN_IFMT ifmt_ldbfi = { | |
657 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
658 | +}; | |
659 | + | |
660 | +static const CGEN_IFMT ifmt_lddi = { | |
661 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
662 | +}; | |
663 | + | |
664 | +static const CGEN_IFMT ifmt_lddfi = { | |
665 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
666 | +}; | |
667 | + | |
668 | +static const CGEN_IFMT ifmt_stdf = { | |
669 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
670 | +}; | |
671 | + | |
672 | +static const CGEN_IFMT ifmt_cldbf = { | |
673 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
674 | +}; | |
675 | + | |
676 | +static const CGEN_IFMT ifmt_clddf = { | |
677 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
678 | +}; | |
679 | + | |
680 | +static const CGEN_IFMT ifmt_cstdf = { | |
681 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
682 | +}; | |
683 | + | |
684 | +static const CGEN_IFMT ifmt_stdfi = { | |
685 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
686 | +}; | |
687 | + | |
688 | +static const CGEN_IFMT ifmt_movgf = { | |
689 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
690 | +}; | |
691 | + | |
692 | +static const CGEN_IFMT ifmt_cmovgf = { | |
693 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
694 | +}; | |
695 | + | |
696 | +static const CGEN_IFMT ifmt_movgs = { | |
697 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_OP) }, { F (F_SPR) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
698 | +}; | |
699 | + | |
700 | +static const CGEN_IFMT ifmt_bra = { | |
701 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16) }, { 0 } } | |
702 | +}; | |
703 | + | |
704 | +static const CGEN_IFMT ifmt_bno = { | |
705 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16_NULL) }, { 0 } } | |
706 | +}; | |
707 | + | |
708 | +static const CGEN_IFMT ifmt_beq = { | |
709 | + 32, 32, 0x79fc0000, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16) }, { 0 } } | |
710 | +}; | |
711 | + | |
712 | +static const CGEN_IFMT ifmt_fbra = { | |
713 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16) }, { 0 } } | |
714 | +}; | |
715 | + | |
716 | +static const CGEN_IFMT ifmt_fbno = { | |
717 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16_NULL) }, { 0 } } | |
718 | +}; | |
719 | + | |
720 | +static const CGEN_IFMT ifmt_fbne = { | |
721 | + 32, 32, 0x79fc0000, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_LABEL16) }, { 0 } } | |
722 | +}; | |
723 | + | |
724 | +static const CGEN_IFMT ifmt_bctrlr = { | |
725 | + 32, 32, 0x7ffcefff, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND) }, { F (F_S12_NULL) }, { 0 } } | |
726 | +}; | |
727 | + | |
728 | +static const CGEN_IFMT ifmt_bralr = { | |
729 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
730 | +}; | |
731 | + | |
732 | +static const CGEN_IFMT ifmt_bnolr = { | |
733 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
734 | +}; | |
735 | + | |
736 | +static const CGEN_IFMT ifmt_beqlr = { | |
737 | + 32, 32, 0x79fcffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
738 | +}; | |
739 | + | |
740 | +static const CGEN_IFMT ifmt_fbralr = { | |
741 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
742 | +}; | |
743 | + | |
744 | +static const CGEN_IFMT ifmt_fbnolr = { | |
745 | + 32, 32, 0x7ffcffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
746 | +}; | |
747 | + | |
748 | +static const CGEN_IFMT ifmt_fbeqlr = { | |
749 | + 32, 32, 0x79fcffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
750 | +}; | |
751 | + | |
752 | +static const CGEN_IFMT ifmt_bcralr = { | |
753 | + 32, 32, 0x7ffcefff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND) }, { F (F_S12_NULL) }, { 0 } } | |
754 | +}; | |
755 | + | |
756 | +static const CGEN_IFMT ifmt_bceqlr = { | |
757 | + 32, 32, 0x79fcefff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND) }, { F (F_S12_NULL) }, { 0 } } | |
758 | +}; | |
759 | + | |
760 | +static const CGEN_IFMT ifmt_fcbralr = { | |
761 | + 32, 32, 0x7ffcefff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND) }, { F (F_S12_NULL) }, { 0 } } | |
762 | +}; | |
763 | + | |
764 | +static const CGEN_IFMT ifmt_fcbeqlr = { | |
765 | + 32, 32, 0x79fcefff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_HINT) }, { F (F_OPE3) }, { F (F_CCOND) }, { F (F_S12_NULL) }, { 0 } } | |
766 | +}; | |
767 | + | |
768 | +static const CGEN_IFMT ifmt_jmpl = { | |
769 | + 32, 32, 0x7ffc0fc0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_OFF) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_2) }, { F (F_GRJ) }, { 0 } } | |
770 | +}; | |
771 | + | |
772 | +static const CGEN_IFMT ifmt_calll = { | |
773 | + 32, 32, 0x7ffc0fc0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_ON) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_2) }, { F (F_GRJ) }, { 0 } } | |
774 | +}; | |
775 | + | |
776 | +static const CGEN_IFMT ifmt_jmpil = { | |
777 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_OFF) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
778 | +}; | |
779 | + | |
780 | +static const CGEN_IFMT ifmt_callil = { | |
781 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_ON) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
782 | +}; | |
783 | + | |
784 | +static const CGEN_IFMT ifmt_call = { | |
785 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_OP) }, { F (F_LABEL24) }, { 0 } } | |
786 | +}; | |
787 | + | |
788 | +static const CGEN_IFMT ifmt_rett = { | |
789 | + 32, 32, 0x7dffffff, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_DEBUG) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
790 | +}; | |
791 | + | |
792 | +static const CGEN_IFMT ifmt_rei = { | |
793 | + 32, 32, 0x7ffc0fff, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_EIR) }, { F (F_S12_NULL) }, { 0 } } | |
794 | +}; | |
795 | + | |
796 | +static const CGEN_IFMT ifmt_tra = { | |
797 | + 32, 32, 0x7ffc0fc0, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
798 | +}; | |
799 | + | |
800 | +static const CGEN_IFMT ifmt_tno = { | |
801 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_GRI_NULL) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ_NULL) }, { 0 } } | |
802 | +}; | |
803 | + | |
804 | +static const CGEN_IFMT ifmt_teq = { | |
805 | + 32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
806 | +}; | |
807 | + | |
808 | +static const CGEN_IFMT ifmt_ftra = { | |
809 | + 32, 32, 0x7ffc0fc0, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
810 | +}; | |
811 | + | |
812 | +static const CGEN_IFMT ifmt_ftno = { | |
813 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_GRI_NULL) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ_NULL) }, { 0 } } | |
814 | +}; | |
815 | + | |
816 | +static const CGEN_IFMT ifmt_ftne = { | |
817 | + 32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_GRI) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
818 | +}; | |
819 | + | |
820 | +static const CGEN_IFMT ifmt_tira = { | |
821 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
822 | +}; | |
823 | + | |
824 | +static const CGEN_IFMT ifmt_tino = { | |
825 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_GRI_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
826 | +}; | |
827 | + | |
828 | +static const CGEN_IFMT ifmt_tieq = { | |
829 | + 32, 32, 0x79fc0000, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_ICCI_2) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
830 | +}; | |
831 | + | |
832 | +static const CGEN_IFMT ifmt_ftira = { | |
833 | + 32, 32, 0x7ffc0000, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_ICCI_2_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
834 | +}; | |
835 | + | |
836 | +static const CGEN_IFMT ifmt_ftino = { | |
837 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2_NULL) }, { F (F_OP) }, { F (F_GRI_NULL) }, { F (F_S12_NULL) }, { 0 } } | |
838 | +}; | |
839 | + | |
840 | +static const CGEN_IFMT ifmt_ftine = { | |
841 | + 32, 32, 0x79fc0000, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_GRI) }, { F (F_D12) }, { 0 } } | |
842 | +}; | |
843 | + | |
844 | +static const CGEN_IFMT ifmt_break = { | |
845 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_MISC_NULL_3) }, { F (F_OPE4) }, { F (F_GRJ_NULL) }, { 0 } } | |
846 | +}; | |
847 | + | |
848 | +static const CGEN_IFMT ifmt_andcr = { | |
849 | + 32, 32, 0x71ff8ff8, { { F (F_PACK) }, { F (F_MISC_NULL_6) }, { F (F_CRK) }, { F (F_OP) }, { F (F_MISC_NULL_7) }, { F (F_CRI) }, { F (F_OPE1) }, { F (F_MISC_NULL_8) }, { F (F_CRJ) }, { 0 } } | |
850 | +}; | |
851 | + | |
852 | +static const CGEN_IFMT ifmt_notcr = { | |
853 | + 32, 32, 0x71fffff8, { { F (F_PACK) }, { F (F_MISC_NULL_6) }, { F (F_CRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_MISC_NULL_8) }, { F (F_CRJ) }, { 0 } } | |
854 | +}; | |
855 | + | |
856 | +static const CGEN_IFMT ifmt_ckra = { | |
857 | + 32, 32, 0x79ffffff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_CRJ_INT) }, { F (F_OP) }, { F (F_MISC_NULL_5) }, { F (F_ICCI_3_NULL) }, { 0 } } | |
858 | +}; | |
859 | + | |
860 | +static const CGEN_IFMT ifmt_ckeq = { | |
861 | + 32, 32, 0x79fffffc, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_CRJ_INT) }, { F (F_OP) }, { F (F_MISC_NULL_5) }, { F (F_ICCI_3) }, { 0 } } | |
862 | +}; | |
863 | + | |
864 | +static const CGEN_IFMT ifmt_fckra = { | |
865 | + 32, 32, 0x79fffffc, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_CRJ_FLOAT) }, { F (F_OP) }, { F (F_MISC_NULL_5) }, { F (F_FCCI_3) }, { 0 } } | |
866 | +}; | |
867 | + | |
868 | +static const CGEN_IFMT ifmt_cckra = { | |
869 | + 32, 32, 0x79fff0ff, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_CRJ_INT) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_MISC_NULL_9) }, { F (F_ICCI_3_NULL) }, { 0 } } | |
870 | +}; | |
871 | + | |
872 | +static const CGEN_IFMT ifmt_cckeq = { | |
873 | + 32, 32, 0x79fff0fc, { { F (F_PACK) }, { F (F_INT_CC) }, { F (F_CRJ_INT) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_MISC_NULL_9) }, { F (F_ICCI_3) }, { 0 } } | |
874 | +}; | |
875 | + | |
876 | +static const CGEN_IFMT ifmt_cfckra = { | |
877 | + 32, 32, 0x79fff0ff, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_CRJ_FLOAT) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_MISC_NULL_9) }, { F (F_FCCI_3_NULL) }, { 0 } } | |
878 | +}; | |
879 | + | |
880 | +static const CGEN_IFMT ifmt_cfckne = { | |
881 | + 32, 32, 0x79fff0fc, { { F (F_PACK) }, { F (F_FLT_CC) }, { F (F_CRJ_FLOAT) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_MISC_NULL_9) }, { F (F_FCCI_3) }, { 0 } } | |
882 | +}; | |
883 | + | |
884 | +static const CGEN_IFMT ifmt_cjmpl = { | |
885 | + 32, 32, 0x7ffc00c0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_OFF) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
886 | +}; | |
887 | + | |
888 | +static const CGEN_IFMT ifmt_ccalll = { | |
889 | + 32, 32, 0x7ffc00c0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LI_ON) }, { F (F_OP) }, { F (F_GRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_GRJ) }, { 0 } } | |
890 | +}; | |
891 | + | |
892 | +static const CGEN_IFMT ifmt_ici = { | |
893 | + 32, 32, 0x7ffc0fc0, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
894 | +}; | |
895 | + | |
896 | +static const CGEN_IFMT ifmt_icei = { | |
897 | + 32, 32, 0x7dfc0fc0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_AE) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
898 | +}; | |
899 | + | |
900 | +static const CGEN_IFMT ifmt_icpl = { | |
901 | + 32, 32, 0x7dfc0fc0, { { F (F_PACK) }, { F (F_MISC_NULL_1) }, { F (F_LOCK) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ) }, { 0 } } | |
902 | +}; | |
903 | + | |
904 | +static const CGEN_IFMT ifmt_icul = { | |
905 | + 32, 32, 0x7ffc0fff, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_GRI) }, { F (F_OPE1) }, { F (F_GRJ_NULL) }, { 0 } } | |
906 | +}; | |
907 | + | |
908 | +static const CGEN_IFMT ifmt_bar = { | |
909 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_GRJ_NULL) }, { 0 } } | |
910 | +}; | |
911 | + | |
912 | +static const CGEN_IFMT ifmt_cop1 = { | |
913 | + 32, 32, 0x1fc0000, { { F (F_PACK) }, { F (F_CPRK) }, { F (F_OP) }, { F (F_CPRI) }, { F (F_S6_1) }, { F (F_CPRJ) }, { 0 } } | |
914 | +}; | |
915 | + | |
916 | +static const CGEN_IFMT ifmt_clrgr = { | |
917 | + 32, 32, 0x1ffffff, { { F (F_PACK) }, { F (F_GRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_GRJ_NULL) }, { 0 } } | |
918 | +}; | |
919 | + | |
920 | +static const CGEN_IFMT ifmt_clrfr = { | |
921 | + 32, 32, 0x1ffffff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_GRJ_NULL) }, { 0 } } | |
922 | +}; | |
923 | + | |
924 | +static const CGEN_IFMT ifmt_fitos = { | |
925 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
926 | +}; | |
927 | + | |
928 | +static const CGEN_IFMT ifmt_fstoi = { | |
929 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
930 | +}; | |
931 | + | |
932 | +static const CGEN_IFMT ifmt_fitod = { | |
933 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
934 | +}; | |
935 | + | |
936 | +static const CGEN_IFMT ifmt_fdtoi = { | |
937 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
938 | +}; | |
939 | + | |
940 | +static const CGEN_IFMT ifmt_cfitos = { | |
941 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
942 | +}; | |
943 | + | |
944 | +static const CGEN_IFMT ifmt_cfstoi = { | |
945 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
946 | +}; | |
947 | + | |
948 | +static const CGEN_IFMT ifmt_fmovs = { | |
949 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
950 | +}; | |
951 | + | |
952 | +static const CGEN_IFMT ifmt_fmovd = { | |
953 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
954 | +}; | |
955 | + | |
956 | +static const CGEN_IFMT ifmt_cfmovs = { | |
957 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
958 | +}; | |
959 | + | |
960 | +static const CGEN_IFMT ifmt_fadds = { | |
961 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
962 | +}; | |
963 | + | |
964 | +static const CGEN_IFMT ifmt_faddd = { | |
965 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
966 | +}; | |
967 | + | |
968 | +static const CGEN_IFMT ifmt_cfadds = { | |
969 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
970 | +}; | |
971 | + | |
972 | +static const CGEN_IFMT ifmt_fcmps = { | |
973 | + 32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
974 | +}; | |
975 | + | |
976 | +static const CGEN_IFMT ifmt_fcmpd = { | |
977 | + 32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
978 | +}; | |
979 | + | |
980 | +static const CGEN_IFMT ifmt_cfcmps = { | |
981 | + 32, 32, 0x79fc00c0, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_FCCI_2) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
982 | +}; | |
983 | + | |
984 | +static const CGEN_IFMT ifmt_mhsetlos = { | |
985 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_OPE1) }, { F (F_U12) }, { 0 } } | |
986 | +}; | |
987 | + | |
988 | +static const CGEN_IFMT ifmt_mhsethis = { | |
989 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_OPE1) }, { F (F_U12) }, { 0 } } | |
990 | +}; | |
991 | + | |
992 | +static const CGEN_IFMT ifmt_mhdsets = { | |
993 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_OPE1) }, { F (F_U12) }, { 0 } } | |
994 | +}; | |
995 | + | |
996 | +static const CGEN_IFMT ifmt_mhsetloh = { | |
997 | + 32, 32, 0x1ffffe0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_MISC_NULL_11) }, { F (F_S5) }, { 0 } } | |
998 | +}; | |
999 | + | |
1000 | +static const CGEN_IFMT ifmt_mhsethih = { | |
1001 | + 32, 32, 0x1ffffe0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_MISC_NULL_11) }, { F (F_S5) }, { 0 } } | |
1002 | +}; | |
1003 | + | |
1004 | +static const CGEN_IFMT ifmt_mhdseth = { | |
1005 | + 32, 32, 0x1ffffe0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_MISC_NULL_11) }, { F (F_S5) }, { 0 } } | |
1006 | +}; | |
1007 | + | |
1008 | +static const CGEN_IFMT ifmt_mand = { | |
1009 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1010 | +}; | |
1011 | + | |
1012 | +static const CGEN_IFMT ifmt_cmand = { | |
1013 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
1014 | +}; | |
1015 | + | |
1016 | +static const CGEN_IFMT ifmt_mnot = { | |
1017 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1018 | +}; | |
1019 | + | |
1020 | +static const CGEN_IFMT ifmt_cmnot = { | |
1021 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_RS_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
1022 | +}; | |
1023 | + | |
1024 | +static const CGEN_IFMT ifmt_mrotli = { | |
1025 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_U6) }, { 0 } } | |
1026 | +}; | |
1027 | + | |
1028 | +static const CGEN_IFMT ifmt_mcut = { | |
1029 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1030 | +}; | |
1031 | + | |
1032 | +static const CGEN_IFMT ifmt_mcuti = { | |
1033 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_S6) }, { 0 } } | |
1034 | +}; | |
1035 | + | |
1036 | +static const CGEN_IFMT ifmt_mcmpsh = { | |
1037 | + 32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_FCCK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1038 | +}; | |
1039 | + | |
1040 | +static const CGEN_IFMT ifmt_mabshs = { | |
1041 | + 32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1042 | +}; | |
1043 | + | |
1044 | +static const CGEN_IFMT ifmt_maddaccs = { | |
1045 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_ACCJ_NULL) }, { 0 } } | |
1046 | +}; | |
1047 | + | |
1048 | +static const CGEN_IFMT ifmt_mmulhs = { | |
1049 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1050 | +}; | |
1051 | + | |
1052 | +static const CGEN_IFMT ifmt_cmmulhs = { | |
1053 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
1054 | +}; | |
1055 | + | |
1056 | +static const CGEN_IFMT ifmt_mmachu = { | |
1057 | + 32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } } | |
1058 | +}; | |
1059 | + | |
1060 | +static const CGEN_IFMT ifmt_cmmachu = { | |
1061 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
1062 | +}; | |
1063 | + | |
1064 | +static const CGEN_IFMT ifmt_cmexpdhw = { | |
1065 | + 32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_U6) }, { 0 } } | |
1066 | +}; | |
1067 | + | |
1068 | +static const CGEN_IFMT ifmt_munpackh = { | |
1069 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1070 | +}; | |
1071 | + | |
1072 | +static const CGEN_IFMT ifmt_cmbtoh = { | |
1073 | + 32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } } | |
1074 | +}; | |
1075 | + | |
1076 | +static const CGEN_IFMT ifmt_mclracc = { | |
1077 | + 32, 32, 0x1fdffff, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_A) }, { F (F_MISC_NULL_10) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1078 | +}; | |
1079 | + | |
1080 | +static const CGEN_IFMT ifmt_mrdacc = { | |
1081 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1082 | +}; | |
1083 | + | |
1084 | +static const CGEN_IFMT ifmt_mrdaccg = { | |
1085 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACCGI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1086 | +}; | |
1087 | + | |
1088 | +static const CGEN_IFMT ifmt_mwtacc = { | |
1089 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1090 | +}; | |
1091 | + | |
1092 | +static const CGEN_IFMT ifmt_mwtaccg = { | |
1093 | + 32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_ACCGK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1094 | +}; | |
1095 | + | |
1096 | +static const CGEN_IFMT ifmt_fnop = { | |
1097 | + 32, 32, 0x7fffffff, { { F (F_PACK) }, { F (F_RD_NULL) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } } | |
1098 | +}; | |
1099 | + | |
1100 | +#undef F | |
1101 | + | |
1102 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1103 | +#define A(a) (1 << CGEN_INSN_##a) | |
1104 | +#else | |
1105 | +#define A(a) (1 << CGEN_INSN_/**/a) | |
1106 | +#endif | |
1107 | +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) | |
1108 | +#define OPERAND(op) FRV_OPERAND_##op | |
1109 | +#else | |
1110 | +#define OPERAND(op) FRV_OPERAND_/**/op | |
1111 | +#endif | |
1112 | +#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ | |
1113 | +#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) | |
1114 | + | |
1115 | +/* The instruction table. */ | |
1116 | + | |
1117 | +static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] = | |
1118 | +{ | |
1119 | + /* Special null first entry. | |
1120 | + A `num' value of zero is thus invalid. | |
1121 | + Also, the special `invalid' insn resides here. */ | |
1122 | + { { 0, 0, 0, 0 }, {{0}}, 0, {0}}, | |
1123 | +/* add$pack $GRi,$GRj,$GRk */ | |
1124 | + { | |
1125 | + { 0, 0, 0, 0 }, | |
1126 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1127 | + & ifmt_add, { 0x0 } | |
1128 | + }, | |
1129 | +/* sub$pack $GRi,$GRj,$GRk */ | |
1130 | + { | |
1131 | + { 0, 0, 0, 0 }, | |
1132 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1133 | + & ifmt_add, { 0x100 } | |
1134 | + }, | |
1135 | +/* and$pack $GRi,$GRj,$GRk */ | |
1136 | + { | |
1137 | + { 0, 0, 0, 0 }, | |
1138 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1139 | + & ifmt_add, { 0x40000 } | |
1140 | + }, | |
1141 | +/* or$pack $GRi,$GRj,$GRk */ | |
1142 | + { | |
1143 | + { 0, 0, 0, 0 }, | |
1144 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1145 | + & ifmt_add, { 0x40080 } | |
1146 | + }, | |
1147 | +/* xor$pack $GRi,$GRj,$GRk */ | |
1148 | + { | |
1149 | + { 0, 0, 0, 0 }, | |
1150 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1151 | + & ifmt_add, { 0x40100 } | |
1152 | + }, | |
1153 | +/* not$pack $GRj,$GRk */ | |
1154 | + { | |
1155 | + { 0, 0, 0, 0 }, | |
1156 | + { { MNEM, OP (PACK), ' ', OP (GRJ), ',', OP (GRK), 0 } }, | |
1157 | + & ifmt_not, { 0x40180 } | |
1158 | + }, | |
1159 | +/* sdiv$pack $GRi,$GRj,$GRk */ | |
1160 | + { | |
1161 | + { 0, 0, 0, 0 }, | |
1162 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1163 | + & ifmt_add, { 0x380 } | |
1164 | + }, | |
1165 | +/* nsdiv$pack $GRi,$GRj,$GRk */ | |
1166 | + { | |
1167 | + { 0, 0, 0, 0 }, | |
1168 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1169 | + & ifmt_add, { 0x40380 } | |
1170 | + }, | |
1171 | +/* udiv$pack $GRi,$GRj,$GRk */ | |
1172 | + { | |
1173 | + { 0, 0, 0, 0 }, | |
1174 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1175 | + & ifmt_add, { 0x3c0 } | |
1176 | + }, | |
1177 | +/* nudiv$pack $GRi,$GRj,$GRk */ | |
1178 | + { | |
1179 | + { 0, 0, 0, 0 }, | |
1180 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1181 | + & ifmt_add, { 0x403c0 } | |
1182 | + }, | |
1183 | +/* smul$pack $GRi,$GRj,$GRdoublek */ | |
1184 | + { | |
1185 | + { 0, 0, 0, 0 }, | |
1186 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), 0 } }, | |
1187 | + & ifmt_smul, { 0x200 } | |
1188 | + }, | |
1189 | +/* umul$pack $GRi,$GRj,$GRdoublek */ | |
1190 | + { | |
1191 | + { 0, 0, 0, 0 }, | |
1192 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), 0 } }, | |
1193 | + & ifmt_smul, { 0x280 } | |
1194 | + }, | |
1195 | +/* sll$pack $GRi,$GRj,$GRk */ | |
1196 | + { | |
1197 | + { 0, 0, 0, 0 }, | |
1198 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1199 | + & ifmt_add, { 0x40200 } | |
1200 | + }, | |
1201 | +/* srl$pack $GRi,$GRj,$GRk */ | |
1202 | + { | |
1203 | + { 0, 0, 0, 0 }, | |
1204 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1205 | + & ifmt_add, { 0x40280 } | |
1206 | + }, | |
1207 | +/* sra$pack $GRi,$GRj,$GRk */ | |
1208 | + { | |
1209 | + { 0, 0, 0, 0 }, | |
1210 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1211 | + & ifmt_add, { 0x40300 } | |
1212 | + }, | |
1213 | +/* scan$pack $GRi,$GRj,$GRk */ | |
1214 | + { | |
1215 | + { 0, 0, 0, 0 }, | |
1216 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), 0 } }, | |
1217 | + & ifmt_add, { 0x2c0000 } | |
1218 | + }, | |
1219 | +/* cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1220 | + { | |
1221 | + { 0, 0, 0, 0 }, | |
1222 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1223 | + & ifmt_cadd, { 0x1600000 } | |
1224 | + }, | |
1225 | +/* csub$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1226 | + { | |
1227 | + { 0, 0, 0, 0 }, | |
1228 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1229 | + & ifmt_cadd, { 0x1600040 } | |
1230 | + }, | |
1231 | +/* cand$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1232 | + { | |
1233 | + { 0, 0, 0, 0 }, | |
1234 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1235 | + & ifmt_cadd, { 0x1680000 } | |
1236 | + }, | |
1237 | +/* cor$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1238 | + { | |
1239 | + { 0, 0, 0, 0 }, | |
1240 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1241 | + & ifmt_cadd, { 0x1680040 } | |
1242 | + }, | |
1243 | +/* cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1244 | + { | |
1245 | + { 0, 0, 0, 0 }, | |
1246 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1247 | + & ifmt_cadd, { 0x1680080 } | |
1248 | + }, | |
1249 | +/* cnot$pack $GRj,$GRk,$CCi,$cond */ | |
1250 | + { | |
1251 | + { 0, 0, 0, 0 }, | |
1252 | + { { MNEM, OP (PACK), ' ', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1253 | + & ifmt_cnot, { 0x16800c0 } | |
1254 | + }, | |
1255 | +/* csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */ | |
1256 | + { | |
1257 | + { 0, 0, 0, 0 }, | |
1258 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1259 | + & ifmt_csmul, { 0x1600080 } | |
1260 | + }, | |
1261 | +/* csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1262 | + { | |
1263 | + { 0, 0, 0, 0 }, | |
1264 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1265 | + & ifmt_cadd, { 0x16000c0 } | |
1266 | + }, | |
1267 | +/* cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1268 | + { | |
1269 | + { 0, 0, 0, 0 }, | |
1270 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1271 | + & ifmt_cadd, { 0x16400c0 } | |
1272 | + }, | |
1273 | +/* csll$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1274 | + { | |
1275 | + { 0, 0, 0, 0 }, | |
1276 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1277 | + & ifmt_cadd, { 0x1700000 } | |
1278 | + }, | |
1279 | +/* csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1280 | + { | |
1281 | + { 0, 0, 0, 0 }, | |
1282 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1283 | + & ifmt_cadd, { 0x1700040 } | |
1284 | + }, | |
1285 | +/* csra$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1286 | + { | |
1287 | + { 0, 0, 0, 0 }, | |
1288 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1289 | + & ifmt_cadd, { 0x1700080 } | |
1290 | + }, | |
1291 | +/* cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1292 | + { | |
1293 | + { 0, 0, 0, 0 }, | |
1294 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1295 | + & ifmt_cadd, { 0x19400c0 } | |
1296 | + }, | |
1297 | +/* addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1298 | + { | |
1299 | + { 0, 0, 0, 0 }, | |
1300 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1301 | + & ifmt_addcc, { 0x40 } | |
1302 | + }, | |
1303 | +/* subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1304 | + { | |
1305 | + { 0, 0, 0, 0 }, | |
1306 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1307 | + & ifmt_addcc, { 0x140 } | |
1308 | + }, | |
1309 | +/* andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1310 | + { | |
1311 | + { 0, 0, 0, 0 }, | |
1312 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1313 | + & ifmt_addcc, { 0x40040 } | |
1314 | + }, | |
1315 | +/* orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1316 | + { | |
1317 | + { 0, 0, 0, 0 }, | |
1318 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1319 | + & ifmt_addcc, { 0x400c0 } | |
1320 | + }, | |
1321 | +/* xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1322 | + { | |
1323 | + { 0, 0, 0, 0 }, | |
1324 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1325 | + & ifmt_addcc, { 0x40140 } | |
1326 | + }, | |
1327 | +/* sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1328 | + { | |
1329 | + { 0, 0, 0, 0 }, | |
1330 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1331 | + & ifmt_addcc, { 0x40240 } | |
1332 | + }, | |
1333 | +/* srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1334 | + { | |
1335 | + { 0, 0, 0, 0 }, | |
1336 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1337 | + & ifmt_addcc, { 0x402c0 } | |
1338 | + }, | |
1339 | +/* sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1340 | + { | |
1341 | + { 0, 0, 0, 0 }, | |
1342 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1343 | + & ifmt_addcc, { 0x40340 } | |
1344 | + }, | |
1345 | +/* smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */ | |
1346 | + { | |
1347 | + { 0, 0, 0, 0 }, | |
1348 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), ',', OP (ICCI_1), 0 } }, | |
1349 | + & ifmt_smulcc, { 0x240 } | |
1350 | + }, | |
1351 | +/* umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */ | |
1352 | + { | |
1353 | + { 0, 0, 0, 0 }, | |
1354 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), ',', OP (ICCI_1), 0 } }, | |
1355 | + & ifmt_smulcc, { 0x2c0 } | |
1356 | + }, | |
1357 | +/* caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1358 | + { | |
1359 | + { 0, 0, 0, 0 }, | |
1360 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1361 | + & ifmt_cadd, { 0x1640000 } | |
1362 | + }, | |
1363 | +/* csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1364 | + { | |
1365 | + { 0, 0, 0, 0 }, | |
1366 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1367 | + & ifmt_cadd, { 0x1640040 } | |
1368 | + }, | |
1369 | +/* csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */ | |
1370 | + { | |
1371 | + { 0, 0, 0, 0 }, | |
1372 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRDOUBLEK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1373 | + & ifmt_csmul, { 0x1640080 } | |
1374 | + }, | |
1375 | +/* candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1376 | + { | |
1377 | + { 0, 0, 0, 0 }, | |
1378 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1379 | + & ifmt_cadd, { 0x16c0000 } | |
1380 | + }, | |
1381 | +/* corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1382 | + { | |
1383 | + { 0, 0, 0, 0 }, | |
1384 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1385 | + & ifmt_cadd, { 0x16c0040 } | |
1386 | + }, | |
1387 | +/* cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1388 | + { | |
1389 | + { 0, 0, 0, 0 }, | |
1390 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1391 | + & ifmt_cadd, { 0x16c0080 } | |
1392 | + }, | |
1393 | +/* csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1394 | + { | |
1395 | + { 0, 0, 0, 0 }, | |
1396 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1397 | + & ifmt_cadd, { 0x1740000 } | |
1398 | + }, | |
1399 | +/* csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1400 | + { | |
1401 | + { 0, 0, 0, 0 }, | |
1402 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1403 | + & ifmt_cadd, { 0x1740040 } | |
1404 | + }, | |
1405 | +/* csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */ | |
1406 | + { | |
1407 | + { 0, 0, 0, 0 }, | |
1408 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (CCI), ',', OP (COND), 0 } }, | |
1409 | + & ifmt_cadd, { 0x1740080 } | |
1410 | + }, | |
1411 | +/* addx$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1412 | + { | |
1413 | + { 0, 0, 0, 0 }, | |
1414 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1415 | + & ifmt_addcc, { 0x80 } | |
1416 | + }, | |
1417 | +/* subx$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1418 | + { | |
1419 | + { 0, 0, 0, 0 }, | |
1420 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1421 | + & ifmt_addcc, { 0x180 } | |
1422 | + }, | |
1423 | +/* addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1424 | + { | |
1425 | + { 0, 0, 0, 0 }, | |
1426 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1427 | + & ifmt_addcc, { 0xc0 } | |
1428 | + }, | |
1429 | +/* subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */ | |
1430 | + { | |
1431 | + { 0, 0, 0, 0 }, | |
1432 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1433 | + & ifmt_addcc, { 0x1c0 } | |
1434 | + }, | |
1435 | +/* addi$pack $GRi,$s12,$GRk */ | |
1436 | + { | |
1437 | + { 0, 0, 0, 0 }, | |
1438 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1439 | + & ifmt_addi, { 0x400000 } | |
1440 | + }, | |
1441 | +/* subi$pack $GRi,$s12,$GRk */ | |
1442 | + { | |
1443 | + { 0, 0, 0, 0 }, | |
1444 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1445 | + & ifmt_addi, { 0x500000 } | |
1446 | + }, | |
1447 | +/* andi$pack $GRi,$s12,$GRk */ | |
1448 | + { | |
1449 | + { 0, 0, 0, 0 }, | |
1450 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1451 | + & ifmt_addi, { 0x800000 } | |
1452 | + }, | |
1453 | +/* ori$pack $GRi,$s12,$GRk */ | |
1454 | + { | |
1455 | + { 0, 0, 0, 0 }, | |
1456 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1457 | + & ifmt_addi, { 0x880000 } | |
1458 | + }, | |
1459 | +/* xori$pack $GRi,$s12,$GRk */ | |
1460 | + { | |
1461 | + { 0, 0, 0, 0 }, | |
1462 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1463 | + & ifmt_addi, { 0x900000 } | |
1464 | + }, | |
1465 | +/* sdivi$pack $GRi,$s12,$GRk */ | |
1466 | + { | |
1467 | + { 0, 0, 0, 0 }, | |
1468 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1469 | + & ifmt_addi, { 0x780000 } | |
1470 | + }, | |
1471 | +/* nsdivi$pack $GRi,$s12,$GRk */ | |
1472 | + { | |
1473 | + { 0, 0, 0, 0 }, | |
1474 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1475 | + & ifmt_addi, { 0xb80000 } | |
1476 | + }, | |
1477 | +/* udivi$pack $GRi,$s12,$GRk */ | |
1478 | + { | |
1479 | + { 0, 0, 0, 0 }, | |
1480 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1481 | + & ifmt_addi, { 0x7c0000 } | |
1482 | + }, | |
1483 | +/* nudivi$pack $GRi,$s12,$GRk */ | |
1484 | + { | |
1485 | + { 0, 0, 0, 0 }, | |
1486 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1487 | + & ifmt_addi, { 0xbc0000 } | |
1488 | + }, | |
1489 | +/* smuli$pack $GRi,$s12,$GRdoublek */ | |
1490 | + { | |
1491 | + { 0, 0, 0, 0 }, | |
1492 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRDOUBLEK), 0 } }, | |
1493 | + & ifmt_smuli, { 0x600000 } | |
1494 | + }, | |
1495 | +/* umuli$pack $GRi,$s12,$GRdoublek */ | |
1496 | + { | |
1497 | + { 0, 0, 0, 0 }, | |
1498 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRDOUBLEK), 0 } }, | |
1499 | + & ifmt_smuli, { 0x680000 } | |
1500 | + }, | |
1501 | +/* slli$pack $GRi,$s12,$GRk */ | |
1502 | + { | |
1503 | + { 0, 0, 0, 0 }, | |
1504 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1505 | + & ifmt_addi, { 0xa00000 } | |
1506 | + }, | |
1507 | +/* srli$pack $GRi,$s12,$GRk */ | |
1508 | + { | |
1509 | + { 0, 0, 0, 0 }, | |
1510 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1511 | + & ifmt_addi, { 0xa80000 } | |
1512 | + }, | |
1513 | +/* srai$pack $GRi,$s12,$GRk */ | |
1514 | + { | |
1515 | + { 0, 0, 0, 0 }, | |
1516 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1517 | + & ifmt_addi, { 0xb00000 } | |
1518 | + }, | |
1519 | +/* scani$pack $GRi,$s12,$GRk */ | |
1520 | + { | |
1521 | + { 0, 0, 0, 0 }, | |
1522 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S12), ',', OP (GRK), 0 } }, | |
1523 | + & ifmt_addi, { 0x11c0000 } | |
1524 | + }, | |
1525 | +/* addicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1526 | + { | |
1527 | + { 0, 0, 0, 0 }, | |
1528 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1529 | + & ifmt_addicc, { 0x440000 } | |
1530 | + }, | |
1531 | +/* subicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1532 | + { | |
1533 | + { 0, 0, 0, 0 }, | |
1534 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1535 | + & ifmt_addicc, { 0x540000 } | |
1536 | + }, | |
1537 | +/* andicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1538 | + { | |
1539 | + { 0, 0, 0, 0 }, | |
1540 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1541 | + & ifmt_addicc, { 0x840000 } | |
1542 | + }, | |
1543 | +/* oricc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1544 | + { | |
1545 | + { 0, 0, 0, 0 }, | |
1546 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1547 | + & ifmt_addicc, { 0x8c0000 } | |
1548 | + }, | |
1549 | +/* xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1550 | + { | |
1551 | + { 0, 0, 0, 0 }, | |
1552 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1553 | + & ifmt_addicc, { 0x940000 } | |
1554 | + }, | |
1555 | +/* smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */ | |
1556 | + { | |
1557 | + { 0, 0, 0, 0 }, | |
1558 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRDOUBLEK), ',', OP (ICCI_1), 0 } }, | |
1559 | + & ifmt_smulicc, { 0x640000 } | |
1560 | + }, | |
1561 | +/* umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */ | |
1562 | + { | |
1563 | + { 0, 0, 0, 0 }, | |
1564 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRDOUBLEK), ',', OP (ICCI_1), 0 } }, | |
1565 | + & ifmt_smulicc, { 0x6c0000 } | |
1566 | + }, | |
1567 | +/* sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1568 | + { | |
1569 | + { 0, 0, 0, 0 }, | |
1570 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1571 | + & ifmt_addicc, { 0xa40000 } | |
1572 | + }, | |
1573 | +/* srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1574 | + { | |
1575 | + { 0, 0, 0, 0 }, | |
1576 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1577 | + & ifmt_addicc, { 0xac0000 } | |
1578 | + }, | |
1579 | +/* sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1580 | + { | |
1581 | + { 0, 0, 0, 0 }, | |
1582 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1583 | + & ifmt_addicc, { 0xb40000 } | |
1584 | + }, | |
1585 | +/* addxi$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1586 | + { | |
1587 | + { 0, 0, 0, 0 }, | |
1588 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1589 | + & ifmt_addicc, { 0x480000 } | |
1590 | + }, | |
1591 | +/* subxi$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1592 | + { | |
1593 | + { 0, 0, 0, 0 }, | |
1594 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1595 | + & ifmt_addicc, { 0x580000 } | |
1596 | + }, | |
1597 | +/* addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1598 | + { | |
1599 | + { 0, 0, 0, 0 }, | |
1600 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1601 | + & ifmt_addicc, { 0x4c0000 } | |
1602 | + }, | |
1603 | +/* subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */ | |
1604 | + { | |
1605 | + { 0, 0, 0, 0 }, | |
1606 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (S10), ',', OP (GRK), ',', OP (ICCI_1), 0 } }, | |
1607 | + & ifmt_addicc, { 0x5c0000 } | |
1608 | + }, | |
1609 | +/* cmpb$pack $GRi,$GRj,$ICCi_1 */ | |
1610 | + { | |
1611 | + { 0, 0, 0, 0 }, | |
1612 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (ICCI_1), 0 } }, | |
1613 | + & ifmt_cmpb, { 0x300 } | |
1614 | + }, | |
1615 | +/* cmpba$pack $GRi,$GRj,$ICCi_1 */ | |
1616 | + { | |
1617 | + { 0, 0, 0, 0 }, | |
1618 | + { { MNEM, OP (PACK), ' ', OP (GRI), ',', OP (GRJ), ',', OP (ICCI_1), 0 } }, | |
1619 | + & ifmt_cmpb, { 0x340 } | |
1620 | + }, | |
1621 | +/* setlo$pack $ulo16,$GRklo */ | |
1622 | + { | |
1623 | + { 0, 0, 0, 0 }, | |
1624 | + { { MNEM, OP (PACK), ' ', OP (ULO16), ',', OP (GRKLO), 0 } }, | |
1625 | + & ifmt_setlo, { 0xf40000 } | |
1626 | + }, | |
1627 | +/* sethi$pack $uhi16,$GRkhi */ | |
1628 | + { | |
1629 | + { 0, 0, 0, 0 }, | |
1630 | + { { MNEM, OP (PACK), ' ', OP (UHI16), ',', OP (GRKHI), 0 } }, | |
1631 | + & ifmt_sethi, { 0xf80000 } | |
1632 | + }, | |
1633 | +/* setlos$pack $slo16,$GRk */ | |
1634 | + { | |
1635 | + { 0, 0, 0, 0 }, | |
1636 | + { { MNEM, OP (PACK), ' ', OP (SLO16), ',', OP (GRK), 0 } }, | |
1637 | + & ifmt_setlos, { 0xfc0000 } | |
1638 | + }, | |
1639 | +/* ldsb$pack @($GRi,$GRj),$GRk */ | |
1640 | + { | |
1641 | + { 0, 0, 0, 0 }, | |
1642 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1643 | + & ifmt_ldsb, { 0x80000 } | |
1644 | + }, | |
1645 | +/* ldub$pack @($GRi,$GRj),$GRk */ | |
1646 | + { | |
1647 | + { 0, 0, 0, 0 }, | |
1648 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1649 | + & ifmt_ldsb, { 0x80040 } | |
1650 | + }, | |
1651 | +/* ldsh$pack @($GRi,$GRj),$GRk */ | |
1652 | + { | |
1653 | + { 0, 0, 0, 0 }, | |
1654 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1655 | + & ifmt_ldsb, { 0x80080 } | |
1656 | + }, | |
1657 | +/* lduh$pack @($GRi,$GRj),$GRk */ | |
1658 | + { | |
1659 | + { 0, 0, 0, 0 }, | |
1660 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1661 | + & ifmt_ldsb, { 0x800c0 } | |
1662 | + }, | |
1663 | +/* ld$pack @($GRi,$GRj),$GRk */ | |
1664 | + { | |
1665 | + { 0, 0, 0, 0 }, | |
1666 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1667 | + & ifmt_ldsb, { 0x80100 } | |
1668 | + }, | |
1669 | +/* ldbf$pack @($GRi,$GRj),$FRintk */ | |
1670 | + { | |
1671 | + { 0, 0, 0, 0 }, | |
1672 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1673 | + & ifmt_ldbf, { 0x80200 } | |
1674 | + }, | |
1675 | +/* ldhf$pack @($GRi,$GRj),$FRintk */ | |
1676 | + { | |
1677 | + { 0, 0, 0, 0 }, | |
1678 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1679 | + & ifmt_ldbf, { 0x80240 } | |
1680 | + }, | |
1681 | +/* ldf$pack @($GRi,$GRj),$FRintk */ | |
1682 | + { | |
1683 | + { 0, 0, 0, 0 }, | |
1684 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1685 | + & ifmt_ldbf, { 0x80280 } | |
1686 | + }, | |
1687 | +/* ldc$pack @($GRi,$GRj),$CPRk */ | |
1688 | + { | |
1689 | + { 0, 0, 0, 0 }, | |
1690 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRK), 0 } }, | |
1691 | + & ifmt_ldc, { 0x80340 } | |
1692 | + }, | |
1693 | +/* nldsb$pack @($GRi,$GRj),$GRk */ | |
1694 | + { | |
1695 | + { 0, 0, 0, 0 }, | |
1696 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1697 | + & ifmt_ldsb, { 0x80800 } | |
1698 | + }, | |
1699 | +/* nldub$pack @($GRi,$GRj),$GRk */ | |
1700 | + { | |
1701 | + { 0, 0, 0, 0 }, | |
1702 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1703 | + & ifmt_ldsb, { 0x80840 } | |
1704 | + }, | |
1705 | +/* nldsh$pack @($GRi,$GRj),$GRk */ | |
1706 | + { | |
1707 | + { 0, 0, 0, 0 }, | |
1708 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1709 | + & ifmt_ldsb, { 0x80880 } | |
1710 | + }, | |
1711 | +/* nlduh$pack @($GRi,$GRj),$GRk */ | |
1712 | + { | |
1713 | + { 0, 0, 0, 0 }, | |
1714 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1715 | + & ifmt_ldsb, { 0x808c0 } | |
1716 | + }, | |
1717 | +/* nld$pack @($GRi,$GRj),$GRk */ | |
1718 | + { | |
1719 | + { 0, 0, 0, 0 }, | |
1720 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1721 | + & ifmt_ldsb, { 0x80900 } | |
1722 | + }, | |
1723 | +/* nldbf$pack @($GRi,$GRj),$FRintk */ | |
1724 | + { | |
1725 | + { 0, 0, 0, 0 }, | |
1726 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1727 | + & ifmt_ldbf, { 0x80a00 } | |
1728 | + }, | |
1729 | +/* nldhf$pack @($GRi,$GRj),$FRintk */ | |
1730 | + { | |
1731 | + { 0, 0, 0, 0 }, | |
1732 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1733 | + & ifmt_ldbf, { 0x80a40 } | |
1734 | + }, | |
1735 | +/* nldf$pack @($GRi,$GRj),$FRintk */ | |
1736 | + { | |
1737 | + { 0, 0, 0, 0 }, | |
1738 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1739 | + & ifmt_ldbf, { 0x80a80 } | |
1740 | + }, | |
1741 | +/* ldd$pack @($GRi,$GRj),$GRdoublek */ | |
1742 | + { | |
1743 | + { 0, 0, 0, 0 }, | |
1744 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRDOUBLEK), 0 } }, | |
1745 | + & ifmt_ldd, { 0x80140 } | |
1746 | + }, | |
1747 | +/* lddf$pack @($GRi,$GRj),$FRdoublek */ | |
1748 | + { | |
1749 | + { 0, 0, 0, 0 }, | |
1750 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRDOUBLEK), 0 } }, | |
1751 | + & ifmt_lddf, { 0x802c0 } | |
1752 | + }, | |
1753 | +/* lddc$pack @($GRi,$GRj),$CPRdoublek */ | |
1754 | + { | |
1755 | + { 0, 0, 0, 0 }, | |
1756 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRDOUBLEK), 0 } }, | |
1757 | + & ifmt_lddc, { 0x80380 } | |
1758 | + }, | |
1759 | +/* nldd$pack @($GRi,$GRj),$GRdoublek */ | |
1760 | + { | |
1761 | + { 0, 0, 0, 0 }, | |
1762 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRDOUBLEK), 0 } }, | |
1763 | + & ifmt_ldd, { 0x80940 } | |
1764 | + }, | |
1765 | +/* nlddf$pack @($GRi,$GRj),$FRdoublek */ | |
1766 | + { | |
1767 | + { 0, 0, 0, 0 }, | |
1768 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRDOUBLEK), 0 } }, | |
1769 | + & ifmt_lddf, { 0x80ac0 } | |
1770 | + }, | |
1771 | +/* ldq$pack @($GRi,$GRj),$GRk */ | |
1772 | + { | |
1773 | + { 0, 0, 0, 0 }, | |
1774 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1775 | + & ifmt_ldsb, { 0x80180 } | |
1776 | + }, | |
1777 | +/* ldqf$pack @($GRi,$GRj),$FRintk */ | |
1778 | + { | |
1779 | + { 0, 0, 0, 0 }, | |
1780 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1781 | + & ifmt_ldbf, { 0x80300 } | |
1782 | + }, | |
1783 | +/* ldqc$pack @($GRi,$GRj),$CPRk */ | |
1784 | + { | |
1785 | + { 0, 0, 0, 0 }, | |
1786 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRK), 0 } }, | |
1787 | + & ifmt_ldc, { 0x803c0 } | |
1788 | + }, | |
1789 | +/* nldq$pack @($GRi,$GRj),$GRk */ | |
1790 | + { | |
1791 | + { 0, 0, 0, 0 }, | |
1792 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1793 | + & ifmt_ldsb, { 0x80980 } | |
1794 | + }, | |
1795 | +/* nldqf$pack @($GRi,$GRj),$FRintk */ | |
1796 | + { | |
1797 | + { 0, 0, 0, 0 }, | |
1798 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1799 | + & ifmt_ldbf, { 0x80b00 } | |
1800 | + }, | |
1801 | +/* ldsbu$pack @($GRi,$GRj),$GRk */ | |
1802 | + { | |
1803 | + { 0, 0, 0, 0 }, | |
1804 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1805 | + & ifmt_ldsb, { 0x80400 } | |
1806 | + }, | |
1807 | +/* ldubu$pack @($GRi,$GRj),$GRk */ | |
1808 | + { | |
1809 | + { 0, 0, 0, 0 }, | |
1810 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1811 | + & ifmt_ldsb, { 0x80440 } | |
1812 | + }, | |
1813 | +/* ldshu$pack @($GRi,$GRj),$GRk */ | |
1814 | + { | |
1815 | + { 0, 0, 0, 0 }, | |
1816 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1817 | + & ifmt_ldsb, { 0x80480 } | |
1818 | + }, | |
1819 | +/* lduhu$pack @($GRi,$GRj),$GRk */ | |
1820 | + { | |
1821 | + { 0, 0, 0, 0 }, | |
1822 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1823 | + & ifmt_ldsb, { 0x804c0 } | |
1824 | + }, | |
1825 | +/* ldu$pack @($GRi,$GRj),$GRk */ | |
1826 | + { | |
1827 | + { 0, 0, 0, 0 }, | |
1828 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1829 | + & ifmt_ldsb, { 0x80500 } | |
1830 | + }, | |
1831 | +/* nldsbu$pack @($GRi,$GRj),$GRk */ | |
1832 | + { | |
1833 | + { 0, 0, 0, 0 }, | |
1834 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1835 | + & ifmt_ldsb, { 0x80c00 } | |
1836 | + }, | |
1837 | +/* nldubu$pack @($GRi,$GRj),$GRk */ | |
1838 | + { | |
1839 | + { 0, 0, 0, 0 }, | |
1840 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1841 | + & ifmt_ldsb, { 0x80c40 } | |
1842 | + }, | |
1843 | +/* nldshu$pack @($GRi,$GRj),$GRk */ | |
1844 | + { | |
1845 | + { 0, 0, 0, 0 }, | |
1846 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1847 | + & ifmt_ldsb, { 0x80c80 } | |
1848 | + }, | |
1849 | +/* nlduhu$pack @($GRi,$GRj),$GRk */ | |
1850 | + { | |
1851 | + { 0, 0, 0, 0 }, | |
1852 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1853 | + & ifmt_ldsb, { 0x80cc0 } | |
1854 | + }, | |
1855 | +/* nldu$pack @($GRi,$GRj),$GRk */ | |
1856 | + { | |
1857 | + { 0, 0, 0, 0 }, | |
1858 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1859 | + & ifmt_ldsb, { 0x80d00 } | |
1860 | + }, | |
1861 | +/* ldbfu$pack @($GRi,$GRj),$FRintk */ | |
1862 | + { | |
1863 | + { 0, 0, 0, 0 }, | |
1864 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1865 | + & ifmt_ldbf, { 0x80600 } | |
1866 | + }, | |
1867 | +/* ldhfu$pack @($GRi,$GRj),$FRintk */ | |
1868 | + { | |
1869 | + { 0, 0, 0, 0 }, | |
1870 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1871 | + & ifmt_ldbf, { 0x80640 } | |
1872 | + }, | |
1873 | +/* ldfu$pack @($GRi,$GRj),$FRintk */ | |
1874 | + { | |
1875 | + { 0, 0, 0, 0 }, | |
1876 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1877 | + & ifmt_ldbf, { 0x80680 } | |
1878 | + }, | |
1879 | +/* ldcu$pack @($GRi,$GRj),$CPRk */ | |
1880 | + { | |
1881 | + { 0, 0, 0, 0 }, | |
1882 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRK), 0 } }, | |
1883 | + & ifmt_ldc, { 0x80740 } | |
1884 | + }, | |
1885 | +/* nldbfu$pack @($GRi,$GRj),$FRintk */ | |
1886 | + { | |
1887 | + { 0, 0, 0, 0 }, | |
1888 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1889 | + & ifmt_ldbf, { 0x80e00 } | |
1890 | + }, | |
1891 | +/* nldhfu$pack @($GRi,$GRj),$FRintk */ | |
1892 | + { | |
1893 | + { 0, 0, 0, 0 }, | |
1894 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1895 | + & ifmt_ldbf, { 0x80e40 } | |
1896 | + }, | |
1897 | +/* nldfu$pack @($GRi,$GRj),$FRintk */ | |
1898 | + { | |
1899 | + { 0, 0, 0, 0 }, | |
1900 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1901 | + & ifmt_ldbf, { 0x80e80 } | |
1902 | + }, | |
1903 | +/* lddu$pack @($GRi,$GRj),$GRdoublek */ | |
1904 | + { | |
1905 | + { 0, 0, 0, 0 }, | |
1906 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRDOUBLEK), 0 } }, | |
1907 | + & ifmt_ldd, { 0x80540 } | |
1908 | + }, | |
1909 | +/* nlddu$pack @($GRi,$GRj),$GRdoublek */ | |
1910 | + { | |
1911 | + { 0, 0, 0, 0 }, | |
1912 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRDOUBLEK), 0 } }, | |
1913 | + & ifmt_ldd, { 0x80d40 } | |
1914 | + }, | |
1915 | +/* lddfu$pack @($GRi,$GRj),$FRdoublek */ | |
1916 | + { | |
1917 | + { 0, 0, 0, 0 }, | |
1918 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRDOUBLEK), 0 } }, | |
1919 | + & ifmt_lddf, { 0x806c0 } | |
1920 | + }, | |
1921 | +/* lddcu$pack @($GRi,$GRj),$CPRdoublek */ | |
1922 | + { | |
1923 | + { 0, 0, 0, 0 }, | |
1924 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRDOUBLEK), 0 } }, | |
1925 | + & ifmt_lddc, { 0x80780 } | |
1926 | + }, | |
1927 | +/* nlddfu$pack @($GRi,$GRj),$FRdoublek */ | |
1928 | + { | |
1929 | + { 0, 0, 0, 0 }, | |
1930 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRDOUBLEK), 0 } }, | |
1931 | + & ifmt_lddf, { 0x80ec0 } | |
1932 | + }, | |
1933 | +/* ldqu$pack @($GRi,$GRj),$GRk */ | |
1934 | + { | |
1935 | + { 0, 0, 0, 0 }, | |
1936 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1937 | + & ifmt_ldsb, { 0x80580 } | |
1938 | + }, | |
1939 | +/* nldqu$pack @($GRi,$GRj),$GRk */ | |
1940 | + { | |
1941 | + { 0, 0, 0, 0 }, | |
1942 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (GRK), 0 } }, | |
1943 | + & ifmt_ldsb, { 0x80d80 } | |
1944 | + }, | |
1945 | +/* ldqfu$pack @($GRi,$GRj),$FRintk */ | |
1946 | + { | |
1947 | + { 0, 0, 0, 0 }, | |
1948 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1949 | + & ifmt_ldbf, { 0x80700 } | |
1950 | + }, | |
1951 | +/* ldqcu$pack @($GRi,$GRj),$CPRk */ | |
1952 | + { | |
1953 | + { 0, 0, 0, 0 }, | |
1954 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (CPRK), 0 } }, | |
1955 | + & ifmt_ldc, { 0x807c0 } | |
1956 | + }, | |
1957 | +/* nldqfu$pack @($GRi,$GRj),$FRintk */ | |
1958 | + { | |
1959 | + { 0, 0, 0, 0 }, | |
1960 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (GRJ), ')', ',', OP (FRINTK), 0 } }, | |
1961 | + & ifmt_ldbf, { 0x80f00 } | |
1962 | + }, | |
1963 | +/* ldsbi$pack @($GRi,$d12),$GRk */ | |
1964 | + { | |
1965 | + { 0, 0, 0, 0 }, | |
1966 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
1967 | + & ifmt_ldsbi, { 0xc00000 } | |
1968 | + }, | |
1969 | +/* ldshi$pack @($GRi,$d12),$GRk */ | |
1970 | + { | |
1971 | + { 0, 0, 0, 0 }, | |
1972 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
1973 | + & ifmt_ldsbi, { 0xc40000 } | |
1974 | + }, | |
1975 | +/* ldi$pack @($GRi,$d12),$GRk */ | |
1976 | + { | |
1977 | + { 0, 0, 0, 0 }, | |
1978 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
1979 | + & ifmt_ldsbi, { 0xc80000 } | |
1980 | + }, | |
1981 | +/* ldubi$pack @($GRi,$d12),$GRk */ | |
1982 | + { | |
1983 | + { 0, 0, 0, 0 }, | |
1984 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
1985 | + & ifmt_ldsbi, { 0xd40000 } | |
1986 | + }, | |
1987 | +/* lduhi$pack @($GRi,$d12),$GRk */ | |
1988 | + { | |
1989 | + { 0, 0, 0, 0 }, | |
1990 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
1991 | + & ifmt_ldsbi, { 0xd80000 } | |
1992 | + }, | |
1993 | +/* ldbfi$pack @($GRi,$d12),$FRintk */ | |
1994 | + { | |
1995 | + { 0, 0, 0, 0 }, | |
1996 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
1997 | + & ifmt_ldbfi, { 0xe00000 } | |
1998 | + }, | |
1999 | +/* ldhfi$pack @($GRi,$d12),$FRintk */ | |
2000 | + { | |
2001 | + { 0, 0, 0, 0 }, | |
2002 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2003 | + & ifmt_ldbfi, { 0xe40000 } | |
2004 | + }, | |
2005 | +/* ldfi$pack @($GRi,$d12),$FRintk */ | |
2006 | + { | |
2007 | + { 0, 0, 0, 0 }, | |
2008 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2009 | + & ifmt_ldbfi, { 0xe80000 } | |
2010 | + }, | |
2011 | +/* nldsbi$pack @($GRi,$d12),$GRk */ | |
2012 | + { | |
2013 | + { 0, 0, 0, 0 }, | |
2014 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2015 | + & ifmt_ldsbi, { 0x1000000 } | |
2016 | + }, | |
2017 | +/* nldubi$pack @($GRi,$d12),$GRk */ | |
2018 | + { | |
2019 | + { 0, 0, 0, 0 }, | |
2020 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2021 | + & ifmt_ldsbi, { 0x1040000 } | |
2022 | + }, | |
2023 | +/* nldshi$pack @($GRi,$d12),$GRk */ | |
2024 | + { | |
2025 | + { 0, 0, 0, 0 }, | |
2026 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2027 | + & ifmt_ldsbi, { 0x1080000 } | |
2028 | + }, | |
2029 | +/* nlduhi$pack @($GRi,$d12),$GRk */ | |
2030 | + { | |
2031 | + { 0, 0, 0, 0 }, | |
2032 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2033 | + & ifmt_ldsbi, { 0x10c0000 } | |
2034 | + }, | |
2035 | +/* nldi$pack @($GRi,$d12),$GRk */ | |
2036 | + { | |
2037 | + { 0, 0, 0, 0 }, | |
2038 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2039 | + & ifmt_ldsbi, { 0x1100000 } | |
2040 | + }, | |
2041 | +/* nldbfi$pack @($GRi,$d12),$FRintk */ | |
2042 | + { | |
2043 | + { 0, 0, 0, 0 }, | |
2044 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2045 | + & ifmt_ldbfi, { 0x1200000 } | |
2046 | + }, | |
2047 | +/* nldhfi$pack @($GRi,$d12),$FRintk */ | |
2048 | + { | |
2049 | + { 0, 0, 0, 0 }, | |
2050 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2051 | + & ifmt_ldbfi, { 0x1240000 } | |
2052 | + }, | |
2053 | +/* nldfi$pack @($GRi,$d12),$FRintk */ | |
2054 | + { | |
2055 | + { 0, 0, 0, 0 }, | |
2056 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2057 | + & ifmt_ldbfi, { 0x1280000 } | |
2058 | + }, | |
2059 | +/* lddi$pack @($GRi,$d12),$GRdoublek */ | |
2060 | + { | |
2061 | + { 0, 0, 0, 0 }, | |
2062 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRDOUBLEK), 0 } }, | |
2063 | + & ifmt_lddi, { 0xcc0000 } | |
2064 | + }, | |
2065 | +/* lddfi$pack @($GRi,$d12),$FRdoublek */ | |
2066 | + { | |
2067 | + { 0, 0, 0, 0 }, | |
2068 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRDOUBLEK), 0 } }, | |
2069 | + & ifmt_lddfi, { 0xec0000 } | |
2070 | + }, | |
2071 | +/* nlddi$pack @($GRi,$d12),$GRdoublek */ | |
2072 | + { | |
2073 | + { 0, 0, 0, 0 }, | |
2074 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRDOUBLEK), 0 } }, | |
2075 | + & ifmt_lddi, { 0x1140000 } | |
2076 | + }, | |
2077 | +/* nlddfi$pack @($GRi,$d12),$FRdoublek */ | |
2078 | + { | |
2079 | + { 0, 0, 0, 0 }, | |
2080 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRDOUBLEK), 0 } }, | |
2081 | + & ifmt_lddfi, { 0x12c0000 } | |
2082 | + }, | |
2083 | +/* ldqi$pack @($GRi,$d12),$GRk */ | |
2084 | + { | |
2085 | + { 0, 0, 0, 0 }, | |
2086 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2087 | + & ifmt_ldsbi, { 0xd00000 } | |
2088 | + }, | |
2089 | +/* ldqfi$pack @($GRi,$d12),$FRintk */ | |
2090 | + { | |
2091 | + { 0, 0, 0, 0 }, | |
2092 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2093 | + & ifmt_ldbfi, { 0xf00000 } | |
2094 | + }, | |
2095 | +/* nldqi$pack @($GRi,$d12),$GRk */ | |
2096 | + { | |
2097 | + { 0, 0, 0, 0 }, | |
2098 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (GRK), 0 } }, | |
2099 | + & ifmt_ldsbi, { 0x1180000 } | |
2100 | + }, | |
2101 | +/* nldqfi$pack @($GRi,$d12),$FRintk */ | |
2102 | + { | |
2103 | + { 0, 0, 0, 0 }, | |
2104 | + { { MNEM, OP (PACK), ' ', '@', '(', OP (GRI), ',', OP (D12), ')', ',', OP (FRINTK), 0 } }, | |
2105 | + & ifmt_ldbfi, { 0x1300000 } | |
2106 | + }, | |
2107 | +/* stb$pack $GRk,@($GRi,$GRj) */ | |
2108 | + { | |
2109 | + { 0, 0, 0, 0 }, | |
2110 | + { { MNEM, OP (PACK), ' ', OP (GRK), ',', '@', '(', OP (GRI), ',', OP (GRJ), ')', 0 } }, | |
2111 | + & ifmt_ldsb, { 0xc0000 } | |
2112 | + }, | |
2113 | +/* sth$pack $GRk,@($GRi,$GRj) */ | |
2114 | + { | |
2115 | + { 0, 0, 0, 0 }, | |
2116 | + { { MNEM, OP (PACK), ' ', OP (GRK), ',', '@', '(', OP (GRI), ',', OP (GRJ), ')', 0 } }, | |
2117 | + & ifmt_ldsb, { 0xc0040 } | |
2118 | + }, | |
2119 | +/* st$pack $GRk,@($GRi,$GRj) */ | |
2120 | + { | |
2121 | + { 0, 0, 0, 0 }, | |
2122 | + { { MNEM, OP (PACK), ' ', OP (GRK), ',', '@', '(', OP (GRI), ',', OP (GRJ), ')', 0 } }, | |
2123 | + & ifmt_ldsb, { 0xc0080 } | |
2124 | + }, | |
2125 | +/* stbf$pack $FRintk,@($GRi,$GRj) */ | |
2126 | + { | |
2127 | + { 0, 0, 0, 0 }, | |
2128 | + { { MNEM, OP (PACK), ' ', OP (F |
Part of diff was cut off due to size limit. Use your local client to view the full diff.