• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GNU Binutils with patches for OS216


Commit MetaInfo

修订版33cb208e497186ed33e49bbb71e6d8229afc496f (tree)
时间2002-06-19 06:21:06
作者nobody <>
Commiternobody <>

Log Message

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>':

bfd/cpu-frv.c
bfd/elf32-frv.c
include/elf/frv.h
opcodes/frv-asm.c
opcodes/frv-desc.c
opcodes/frv-desc.h
opcodes/frv-dis.c
opcodes/frv-ibld.c
opcodes/frv-opc.c
opcodes/frv-opc.h

更改概述

差异

--- /dev/null
+++ b/bfd/cpu-frv.c
@@ -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+
--- /dev/null
+++ b/bfd/elf32-frv.c
@@ -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"
--- /dev/null
+++ b/include/elf/frv.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 */
--- /dev/null
+++ b/opcodes/frv-asm.c
@@ -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 */
--- /dev/null
+++ b/opcodes/frv-desc.c
@@ -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+
--- /dev/null
+++ b/opcodes/frv-desc.h
@@ -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 */
--- /dev/null
+++ b/opcodes/frv-dis.c
@@ -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+}
--- /dev/null
+++ b/opcodes/frv-ibld.c
@@ -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+}
--- /dev/null
+++ b/opcodes/frv-opc.c
@@ -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.