sdk-ng/patches-arc64/binutils/0001-Add-ARC64-support.patch

30805 lines
1.4 MiB

From 9fb4053152aa67c25eb37488a95847474e46bfd1 Mon Sep 17 00:00:00 2001
From: Alexey Brodkin <abrodkin@synopsys.com>
Date: Tue, 27 Apr 2021 19:38:21 +0300
Subject: [PATCH] Add ARC64 support
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
---
bfd/Makefile.am | 17 +-
bfd/Makefile.in | 18 +-
bfd/arc-got.h | 92 +-
bfd/arc-plt.c | 121 +
bfd/arc-plt.def | 43 +-
bfd/arc-plt.h | 93 +-
bfd/archures.c | 2 +
bfd/bfd-in2.h | 23 +
bfd/config.bfd | 18 +-
bfd/configure | 5 +-
bfd/configure.ac | 5 +-
bfd/cpu-arc.c | 58 +-
bfd/elf32-arc.c | 3158 ---
bfd/elflink.c | 2 +-
bfd/elfnn-arc.c | 3556 +++
bfd/libbfd.h | 20 +
bfd/reloc.c | 40 +
bfd/targets.c | 8 +-
binutils/readelf.c | 44 +-
config.sub | 2 +-
gas/config/tc-arc.c | 471 +-
gas/config/tc-arc.h | 56 +-
gas/configure | 2 +-
gas/configure.ac | 2 +-
gas/configure.tgt | 4 +-
gas/testsuite/gas/arc/arc.exp | 4 +
gas/testsuite/gas/arc64/arc64.exp | 24 +
gas/testsuite/gas/arc64/lddl.d | 46 +
gas/testsuite/gas/arc64/lddl.s | 54 +
gas/testsuite/gas/arc64/stdl.d | 32 +
gas/testsuite/gas/arc64/stdl.s | 35 +
gas/write.c | 12 +-
include/elf/arc-cpu.def | 2 +
include/elf/arc-reloc.def | 147 +-
include/elf/arc.h | 1 +
include/elf/common.h | 3 +
include/opcode/arc-attrs.h | 4 +-
include/opcode/arc-func.h | 87 +-
include/opcode/arc.h | 124 +-
ld/Makefile.am | 4 +
ld/Makefile.in | 6 +
ld/configure.tgt | 14 +-
ld/emulparams/arc64linux.sh | 22 +
ld/emulparams/arcelf.sh | 1 +
ld/emulparams/arcv2elf.sh | 2 +-
ld/emulparams/arcv2elfx.sh | 2 +-
ld/emulparams/elf64arc.sh | 15 +
ld/emultempl/arcelf.em | 40 +
ld/testsuite/ld-arc/arc.exp | 3 +-
ld/testsuite/ld-arc/hiddso.d | 6 +
ld/testsuite/ld-arc/hiddsoA.s | 3 +
ld/testsuite/ld-arc/hiddsoB.s | 6 +
ld/testsuite/ld-arc/nps-1a.d | 2 +-
ld/testsuite/ld-arc/nps-1b.d | 2 +-
ld/testsuite/ld-arc/relax-call-1.d | 20 +
ld/testsuite/ld-arc/relax-call-1.s | 14 +
ld/testsuite/ld-arc/relax-call-2.d | 27 +
ld/testsuite/ld-arc/relax-call-2.s | 23 +
ld/testsuite/ld-arc/relax-call-3.d | 36 +
ld/testsuite/ld-arc/relax-call-3.s | 27 +
ld/testsuite/ld-arc/relax-local-pic.d | 4 +-
ld/testsuite/ld-arc/weakhid.s | 13 +
ld/testsuite/ld-arc/weakhiddso.d | 29 +
.../ld-arc64/arcv3_64-reloc-near-exe.dd | 29 +
.../ld-arc64/arcv3_64-reloc-near-so.dd | 23 +
ld/testsuite/ld-arc64/arcv3_64-reloc-near.s | 11 +
ld/testsuite/ld-arc64/arcv3_64.exp | 36 +
opcodes/arc-dis.c | 107 +-
opcodes/arc-ext-tbl.h | 15 +
opcodes/arc-fxi.h | 60 +
opcodes/arc-opc.c | 424 +-
opcodes/arc64-fp-tbl.h | 479 +
opcodes/arc64-tbl.h | 18828 ++++++++++++++++
73 files changed, 25172 insertions(+), 3596 deletions(-)
create mode 100644 bfd/arc-plt.c
delete mode 100644 bfd/elf32-arc.c
create mode 100644 bfd/elfnn-arc.c
create mode 100644 gas/testsuite/gas/arc64/arc64.exp
create mode 100644 gas/testsuite/gas/arc64/lddl.d
create mode 100644 gas/testsuite/gas/arc64/lddl.s
create mode 100644 gas/testsuite/gas/arc64/stdl.d
create mode 100644 gas/testsuite/gas/arc64/stdl.s
create mode 100644 ld/emulparams/arc64linux.sh
create mode 100644 ld/emulparams/elf64arc.sh
create mode 100644 ld/emultempl/arcelf.em
create mode 100644 ld/testsuite/ld-arc/hiddso.d
create mode 100644 ld/testsuite/ld-arc/hiddsoA.s
create mode 100644 ld/testsuite/ld-arc/hiddsoB.s
create mode 100644 ld/testsuite/ld-arc/relax-call-1.d
create mode 100644 ld/testsuite/ld-arc/relax-call-1.s
create mode 100644 ld/testsuite/ld-arc/relax-call-2.d
create mode 100644 ld/testsuite/ld-arc/relax-call-2.s
create mode 100644 ld/testsuite/ld-arc/relax-call-3.d
create mode 100644 ld/testsuite/ld-arc/relax-call-3.s
create mode 100644 ld/testsuite/ld-arc/weakhid.s
create mode 100644 ld/testsuite/ld-arc/weakhiddso.d
create mode 100644 ld/testsuite/ld-arc64/arcv3_64-reloc-near-exe.dd
create mode 100644 ld/testsuite/ld-arc64/arcv3_64-reloc-near-so.dd
create mode 100644 ld/testsuite/ld-arc64/arcv3_64-reloc-near.s
create mode 100644 ld/testsuite/ld-arc64/arcv3_64.exp
create mode 100644 opcodes/arc64-fp-tbl.h
create mode 100644 opcodes/arc64-tbl.h
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index c88c4480001..ae292e0442e 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -291,7 +291,6 @@ BFD32_BACKENDS = \
elf-vxworks.lo \
elf.lo \
elf32-am33lin.lo \
- elf32-arc.lo \
elf32-arm.lo \
elf32-avr.lo \
elf32-bfin.lo \
@@ -426,7 +425,6 @@ BFD32_BACKENDS_CFILES = \
elf-vxworks.c \
elf.c \
elf32-am33lin.c \
- elf32-arc.c \
elf32-arm.c \
elf32-avr.c \
elf32-bfin.c \
@@ -537,6 +535,8 @@ BFD64_BACKENDS = \
elf32-aarch64.lo \
elf64-aarch64.lo \
elfxx-aarch64.lo \
+ elf32-arc.lo \
+ elf64-arc.lo \
aix5ppc-core.lo \
aout64.lo \
coff-alpha.lo \
@@ -668,6 +668,7 @@ SOURCE_CFILES = \
BUILD_CFILES = \
elf32-aarch64.c elf64-aarch64.c \
+ elf32-arc.c elf64-arc.c \
elf32-ia64.c elf64-ia64.c \
elf32-riscv.c elf64-riscv.c \
peigen.c pepigen.c pex64igen.c
@@ -838,6 +839,18 @@ elf64-aarch64.c : elfnn-aarch64.c
echo "#line 1 \"elfnn-aarch64.c\"" > $@
$(SED) -e s/NN/64/g < $< >> $@
+elf32-arc.c : elfnn-arc.c
+ rm -f elf32-arc.c
+ echo "#line 1 \"$(srcdir)/elfnn-arc.c\"" > elf32-arc.new
+ sed -e s/NN/32/g < $(srcdir)/elfnn-arc.c >> elf32-arc.new
+ mv -f elf32-arc.new elf32-arc.c
+
+elf64-arc.c : elfnn-arc.c
+ rm -f elf64-arc.c
+ echo "#line 1 \"$(srcdir)/elfnn-arc.c\"" > elf64-arc.new
+ sed -e s/NN/64/g < $(srcdir)/elfnn-arc.c >> elf64-arc.new
+ mv -f elf64-arc.new elf64-arc.c
+
elf32-ia64.c : elfnn-ia64.c
echo "#line 1 \"elfnn-ia64.c\"" > $@
$(SED) -e s/NN/32/g < $< >> $@
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index d0d14c6ab32..f8a7f610199 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -716,7 +716,6 @@ BFD32_BACKENDS = \
elf-vxworks.lo \
elf.lo \
elf32-am33lin.lo \
- elf32-arc.lo \
elf32-arm.lo \
elf32-avr.lo \
elf32-bfin.lo \
@@ -851,7 +850,6 @@ BFD32_BACKENDS_CFILES = \
elf-vxworks.c \
elf.c \
elf32-am33lin.c \
- elf32-arc.c \
elf32-arm.c \
elf32-avr.c \
elf32-bfin.c \
@@ -963,6 +961,8 @@ BFD64_BACKENDS = \
elf32-aarch64.lo \
elf64-aarch64.lo \
elfxx-aarch64.lo \
+ elf32-arc.lo \
+ elf64-arc.lo \
aix5ppc-core.lo \
aout64.lo \
coff-alpha.lo \
@@ -1093,6 +1093,7 @@ SOURCE_CFILES = \
BUILD_CFILES = \
elf32-aarch64.c elf64-aarch64.c \
+ elf32-arc.c elf64-arc.c \
elf32-ia64.c elf64-ia64.c \
elf32-riscv.c elf64-riscv.c \
peigen.c pepigen.c pex64igen.c
@@ -1491,6 +1492,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-aarch64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-alpha.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-bpf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-arc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-gen.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-hppa.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64-vms.Plo@am__quote@
@@ -1969,6 +1971,18 @@ elf64-aarch64.c : elfnn-aarch64.c
echo "#line 1 \"elfnn-aarch64.c\"" > $@
$(SED) -e s/NN/64/g < $< >> $@
+elf32-arc.c : elfnn-arc.c
+ rm -f elf32-arc.c
+ echo "#line 1 \"$(srcdir)/elfnn-arc.c\"" > elf32-arc.new
+ sed -e s/NN/32/g < $(srcdir)/elfnn-arc.c >> elf32-arc.new
+ mv -f elf32-arc.new elf32-arc.c
+
+elf64-arc.c : elfnn-arc.c
+ rm -f elf64-arc.c
+ echo "#line 1 \"$(srcdir)/elfnn-arc.c\"" > elf64-arc.new
+ sed -e s/NN/64/g < $(srcdir)/elfnn-arc.c >> elf64-arc.new
+ mv -f elf64-arc.new elf64-arc.c
+
elf32-ia64.c : elfnn-ia64.c
echo "#line 1 \"elfnn-ia64.c\"" > $@
$(SED) -e s/NN/32/g < $< >> $@
diff --git a/bfd/arc-got.h b/bfd/arc-got.h
index 8053a2d9077..f45de1e5265 100644
--- a/bfd/arc-got.h
+++ b/bfd/arc-got.h
@@ -22,7 +22,21 @@
#ifndef ARC_GOT_H
#define ARC_GOT_H
+#if ARCH_SIZE == 32
#define TCB_SIZE (8)
+#else
+#define TCB_SIZE (16)
+#endif
+
+#if ARCH_SIZE == 32
+#define GOT_ENTRY_SIZE 4
+#define write_in_got(A, B, C) bfd_put_32 (A, B, C)
+#define read_from_got(A, B) bfd_get_32 (A, B)
+#else
+#define GOT_ENTRY_SIZE 8
+#define write_in_got(A, B, C) bfd_put_64 (A, B, C)
+#define read_from_got(A, B) bfd_get_64 (A, B)
+#endif
#define align_power(addr, align) \
(((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
@@ -201,7 +215,7 @@ arc_got_entry_type_for_reloc (reloc_howto_type *howto)
{ \
if (COND_FOR_RELOC) \
{ \
- htab->srel##SECNAME->size += sizeof (Elf32_External_Rela); \
+ htab->srel##SECNAME->size += RELA_SIZE; \
ARC_DEBUG ("arc_info: Added reloc space in " \
#SECNAME " section at " __FILE__ \
":%d for symbol %s\n", \
@@ -211,7 +225,7 @@ arc_got_entry_type_for_reloc (reloc_howto_type *howto)
if (H->dynindx == -1 && !H->forced_local) \
if (! bfd_elf_link_record_dynamic_symbol (info, H)) \
return FALSE; \
- htab->s##SECNAME->size += 4; \
+ htab->s##SECNAME->size += GOT_ENTRY_SIZE; \
} \
static bfd_boolean
@@ -335,27 +349,27 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
if (h == NULL || h->forced_local
|| !elf_hash_table (info)->dynamic_sections_created)
{
- bfd_put_32 (output_bfd,
- sym_value - sec_vma
- + (elf_hash_table (info)->dynamic_sections_created
- ? 0
- : (align_power (0,
- tls_sec->alignment_power))),
- htab->sgot->contents + entry->offset
- + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
- ? 4 : 0));
+ write_in_got (output_bfd,
+ sym_value - sec_vma
+ + (elf_hash_table (info)->dynamic_sections_created
+ ? 0
+ : (align_power (0,
+ tls_sec->alignment_power))),
+ htab->sgot->contents + entry->offset
+ + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
+ ? GOT_ENTRY_SIZE : 0));
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
- "@ %lx, for symbol %s\n",
- (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
- "GOT_TLS_IE"),
- (long) (sym_value - sec_vma),
- (long) (htab->sgot->output_section->vma
- + htab->sgot->output_offset
- + entry->offset
- + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
- ? 4 : 0)),
- symbol_name);
+ "@ %lx, for symbol %s\n",
+ (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
+ "GOT_TLS_IE"),
+ (long) (sym_value - sec_vma),
+ (long) (htab->sgot->output_section->vma
+ + htab->sgot->output_offset
+ + entry->offset
+ + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
+ ? GOT_ENTRY_SIZE : 0)),
+ symbol_name);
}
}
break;
@@ -366,26 +380,26 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
bfd_vma ATTRIBUTE_UNUSED sec_vma
= tls_sec->output_section->vma;
- bfd_put_32 (output_bfd,
- sym_value - sec_vma
- + (elf_hash_table (info)->dynamic_sections_created
- ? 0
- : (align_power (TCB_SIZE,
- tls_sec->alignment_power))),
- htab->sgot->contents + entry->offset
- + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
- ? 4 : 0));
+ write_in_got (output_bfd,
+ sym_value - sec_vma
+ + (elf_hash_table (info)->dynamic_sections_created
+ ? 0
+ : (align_power (TCB_SIZE,
+ tls_sec->alignment_power))),
+ htab->sgot->contents + entry->offset
+ + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
+ ? GOT_ENTRY_SIZE : 0));
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
"@ %p, for symbol %s\n",
(entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
"GOT_TLS_IE"),
(long) (sym_value - sec_vma),
- (long) (htab->sgot->output_section->vma
+ (void *) (htab->sgot->output_section->vma
+ htab->sgot->output_offset
+ entry->offset
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
- ? 4 : 0)),
+ ? GOT_ENTRY_SIZE : 0)),
symbol_name);
}
break;
@@ -408,9 +422,9 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
(long) entry->offset);
else
{
- bfd_put_32 (output_bfd,
- reloc_data->sym_value + sec_vma,
- htab->sgot->contents + entry->offset);
+ write_in_got (output_bfd,
+ reloc_data->sym_value + sec_vma,
+ htab->sgot->contents + entry->offset);
ARC_DEBUG ("arc_info: PATCHED: %#08lx "
"@ %#08lx for sym %s in got offset %#lx\n",
(long) (reloc_data->sym_value + sec_vma),
@@ -496,12 +510,14 @@ GOT_OFFSET = %#lx, GOT_VMA = %#lx, INDEX = %ld, ADDEND = 0x0\n",
bfd_vma addend = 0;
if (list->type == GOT_TLS_IE)
{
- addend = bfd_get_32 (output_bfd,
- htab->sgot->contents + got_offset);
+ /* CZI: I don't understand why we need this. Adding an
+ assert to catch the usecase. */
+ addend = read_from_got (output_bfd,
+ htab->sgot->contents + got_offset);
}
ADD_RELA (output_bfd, got,
- got_offset + (e == TLS_GOT_MOD_AND_OFF ? 4 : 0),
+ got_offset + (e == TLS_GOT_MOD_AND_OFF ? GOT_ENTRY_SIZE : 0),
dynindx,
(list->type == GOT_TLS_IE ? R_ARC_TLS_TPOFF
: R_ARC_TLS_DTPOFF),
diff --git a/bfd/arc-plt.c b/bfd/arc-plt.c
new file mode 100644
index 00000000000..7ba98fdc570
--- /dev/null
+++ b/bfd/arc-plt.c
@@ -0,0 +1,121 @@
+/* ARC-specific support for PLT relocations.
+ Copyright (C) 2016-2019 Free Software Foundation, Inc.
+ Contributed by Cupertino Miranda (cmiranda@synopsys.com).
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "arc-plt.h"
+
+#define PLT_TYPE_START(NAME) \
+ const insn_hword NAME##_plt_entry[] = {
+#define PLT_TYPE_END(NAME) };
+#define PLT_ENTRY(...) __VA_ARGS__,
+#define PLT_ELEM(...)
+#define ENTRY_RELOC(...)
+#define ELEM_RELOC(...)
+
+#include "arc-plt.def"
+
+#undef PLT_TYPE_START
+#undef PLT_TYPE_END
+#undef PLT_ENTRY
+#undef PLT_ELEM
+#undef ENTRY_RELOC
+#undef ELEM_RELOC
+
+#define PLT_TYPE_START(NAME) \
+ const struct plt_reloc NAME##_plt_entry_relocs[] = {
+#define PLT_TYPE_END(NAME) \
+ {0, 0, 0, LAST_RELOC, 0} \
+ };
+#define PLT_ENTRY(...)
+#define PLT_ELEM(...)
+#define ENTRY_RELOC(...) { __VA_ARGS__ },
+#define ELEM_RELOC(...)
+
+#include "arc-plt.def"
+
+#undef PLT_TYPE_START
+#undef PLT_TYPE_END
+#undef PLT_ENTRY
+#undef PLT_ELEM
+#undef ENTRY_RELOC
+#undef ELEM_RELOC
+
+
+#define PLT_TYPE_START(NAME) \
+ const insn_hword NAME##_plt_elem[] = {
+#define PLT_TYPE_END(NAME) };
+#define PLT_ENTRY(...)
+#define PLT_ELEM(...) __VA_ARGS__,
+#define ENTRY_RELOC(...)
+#define ELEM_RELOC(...)
+
+#include "arc-plt.def"
+
+#undef PLT_TYPE_START
+#undef PLT_TYPE_END
+#undef PLT_ENTRY
+#undef PLT_ELEM
+#undef ENTRY_RELOC
+#undef ELEM_RELOC
+
+#define PLT_TYPE_START(NAME) \
+ const struct plt_reloc NAME##_plt_elem_relocs[] = {
+#define PLT_TYPE_END(NAME) \
+ {0, 0, 0, LAST_RELOC, 0} \
+ };
+#define PLT_ENTRY(...)
+#define PLT_ELEM(...)
+#define ENTRY_RELOC(...)
+#define ELEM_RELOC(...) { __VA_ARGS__ },
+
+#include "arc-plt.def"
+
+#undef PLT_TYPE_START
+#undef PLT_TYPE_END
+#undef PLT_ENTRY
+#undef PLT_ELEM
+#undef ENTRY_RELOC
+#undef ELEM_RELOC
+
+
+#define PLT_TYPE_START(NAME) \
+ { \
+ .entry = &NAME##_plt_entry, \
+ .entry_size = sizeof (NAME##_plt_entry), \
+ .elem = &NAME##_plt_elem, \
+ .elem_size = sizeof (NAME##_plt_elem), \
+ .entry_relocs = NAME##_plt_entry_relocs, \
+ .elem_relocs = NAME##_plt_elem_relocs
+#define PLT_TYPE_END(NAME) },
+#define PLT_ENTRY(...)
+#define PLT_ELEM(...)
+#define ENTRY_RELOC(...)
+#define ELEM_RELOC(...)
+struct plt_version_t plt_versions[PLT_MAX] = {
+
+#include "arc-plt.def"
+
+};
+#undef PLT_TYPE_START
+#undef PLT_TYPE_END
+#undef PLT_ENTRY
+#undef PLT_ELEM
+#undef ENTRY_RELOC
+#undef ELEM_RELOC
diff --git a/bfd/arc-plt.def b/bfd/arc-plt.def
index 254f1e5b85e..87bac4f69be 100644
--- a/bfd/arc-plt.def
+++ b/bfd/arc-plt.def
@@ -1,4 +1,4 @@
-/* Arc V2 Related PLT entries.
+/* Arc V2/V3 Related PLT entries.
Copyright (C) 2016-2020 Free Software Foundation, Inc.
Contributed by Cupertino Miranda (cmiranda@synopsys.com).
@@ -19,6 +19,47 @@
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
+
+PLT_TYPE_START (ELF_ARCV3_PIC)
+// ldl r11, [pcl, 0] .got.plt + 8 -- at .got.plt + 0 should be the address of .dynamic
+// ldl r10, [pcl, 0] .got.plt + 16
+// j [r10]
+// padding
+
+
+// 2e: 2731 ff0b 0000 0000 ldl r11,[pcl,0@s32] ;2c <main+0x2c>
+// 32: R_ARC_GOTPC32 f_var
+// 36: 2731 ff0a 0000 0000 ldl r10,[pcl,0@s32] ;34 <main+0x34>
+// 3a: R_ARC_GOTPC32 f_var
+// 3e: 2020 0280 j [r10]
+
+
+ PLT_ENTRY (0x2731, 0xff0b, 0x0000, 0x0000) /* ldl %r11, [pcl,0] : 0 to be replaced by _DYNAMIC@GOTPC+4 */
+ PLT_ENTRY (0x2731, 0xff0a, 0x0000, 0x0000) /* ldl %r10, [pcl,0] : 0 to be replaced by _DYNAMIC@GOTPC+8 */
+ PLT_ENTRY (0x2020, 0x0280) /* j [%r10] */
+ PLT_ENTRY (0x0, 0x0, 0x0, 0x0, 0x0,0x0) /* padding */
+
+// ldl r12, [pcl, 0] -- at .got.plt + 0 should be the address of .dynamic
+
+// 46: 2731 ff0c 0000 0000 ldl r12,[pcl,0@s32] ;44 <main+0x44>
+// 4a: R_ARC_GOTPC32 f_var
+// 4e: 2021 0300 j.d [r12]
+// 52: 240a 1fc0 mov r12,pcl
+
+
+ PLT_ELEM (0x2731, 0xff0c, 0x0000, 0x0000) /* ld %r12, [%pc,func@got] */
+ PLT_ELEM (0x2021, 0x0300) /* j.d [%r12] */
+ PLT_ELEM (0x240a, 0x1fc0) /* mov %r12, %pcl */
+
+ ENTRY_RELOC (4, 32, 0xFFFFFFFF, SGOT | RELATIVE_INSN_32 | MIDDLE_ENDIAN, 8)
+ ENTRY_RELOC (12, 32, 0xFFFFFFFF, SGOT | RELATIVE_INSN_32 | MIDDLE_ENDIAN, 16)
+ ENTRY_RELOC (20, 32, 0xFFFFFFFF, SGOT, 0)
+
+ ELEM_RELOC (4, 32, 0xFFFFFFFF, SGOT | RELATIVE_INSN_32 | MIDDLE_ENDIAN, 0)
+
+PLT_TYPE_END (ELF_ARCV3_PIC)
+
+
PLT_TYPE_START (ELF_ARCV2_PIC)
PLT_ENTRY (0x2730, 0x7f8b, 0x0000, 0x0000) /* ld %r11, [pcl,0] : 0 to be replaced by _DYNAMIC@GOTPC+4 */
PLT_ENTRY (0x2730, 0x7f8a, 0x0000, 0x0000) /* ld %r10, [pcl,0] : 0 to be replaced by _DYNAMIC@GOTPC+8 */
diff --git a/bfd/arc-plt.h b/bfd/arc-plt.h
index f668fee8ca6..3c98b2ff141 100644
--- a/bfd/arc-plt.h
+++ b/bfd/arc-plt.h
@@ -22,6 +22,9 @@
#ifndef ARC_PLT_H
#define ARC_PLT_H
+#include "sysdep.h"
+#include "bfd.h"
+
/* Instructions appear in memory as a sequence of half-words (16 bit);
individual half-words are represented on the target in target byte order.
We use 'unsigned short' on the host to represent the PLT templates,
@@ -92,97 +95,20 @@ struct plt_version_t
};
#define PLT_TYPE_START(NAME) \
- const insn_hword NAME##_plt_entry[] = {
-#define PLT_TYPE_END(NAME) };
-#define PLT_ENTRY(...) __VA_ARGS__,
-#define PLT_ELEM(...)
-#define ENTRY_RELOC(...)
-#define ELEM_RELOC(...)
-
-#include "arc-plt.def"
-
-#undef PLT_TYPE_START
-#undef PLT_TYPE_END
-#undef PLT_ENTRY
-#undef PLT_ELEM
-#undef ENTRY_RELOC
-#undef ELEM_RELOC
-
-#define PLT_TYPE_START(NAME) \
- const struct plt_reloc NAME##_plt_entry_relocs[] = {
-#define PLT_TYPE_END(NAME) \
- {0, 0, 0, LAST_RELOC, 0} \
- };
-#define PLT_ENTRY(...)
-#define PLT_ELEM(...)
-#define ENTRY_RELOC(...) { __VA_ARGS__ },
-#define ELEM_RELOC(...)
+ extern const insn_hword NAME##_plt_entry[]; \
+ extern const struct plt_reloc NAME##_plt_entry_relocs[]; \
+ extern const insn_hword NAME##_plt_elem[]; \
+ extern const struct plt_reloc NAME##_plt_elem_relocs[];
-#include "arc-plt.def"
-#undef PLT_TYPE_START
-#undef PLT_TYPE_END
-#undef PLT_ENTRY
-#undef PLT_ELEM
-#undef ENTRY_RELOC
-#undef ELEM_RELOC
-
-
-#define PLT_TYPE_START(NAME) \
- const insn_hword NAME##_plt_elem[] = {
-#define PLT_TYPE_END(NAME) };
-#define PLT_ENTRY(...)
-#define PLT_ELEM(...) __VA_ARGS__,
-#define ENTRY_RELOC(...)
-#define ELEM_RELOC(...)
-
-#include "arc-plt.def"
-
-#undef PLT_TYPE_START
-#undef PLT_TYPE_END
-#undef PLT_ENTRY
-#undef PLT_ELEM
-#undef ENTRY_RELOC
-#undef ELEM_RELOC
-
-#define PLT_TYPE_START(NAME) \
- const struct plt_reloc NAME##_plt_elem_relocs[] = {
-#define PLT_TYPE_END(NAME) \
- {0, 0, 0, LAST_RELOC, 0} \
- };
-#define PLT_ENTRY(...)
-#define PLT_ELEM(...)
-#define ENTRY_RELOC(...)
-#define ELEM_RELOC(...) { __VA_ARGS__ },
-
-#include "arc-plt.def"
-
-#undef PLT_TYPE_START
-#undef PLT_TYPE_END
-#undef PLT_ENTRY
-#undef PLT_ELEM
-#undef ENTRY_RELOC
-#undef ELEM_RELOC
-
-
-#define PLT_TYPE_START(NAME) \
- { \
- .entry = &NAME##_plt_entry, \
- .entry_size = sizeof (NAME##_plt_entry), \
- .elem = &NAME##_plt_elem, \
- .elem_size = sizeof (NAME##_plt_elem), \
- .entry_relocs = NAME##_plt_entry_relocs, \
- .elem_relocs = NAME##_plt_elem_relocs
-#define PLT_TYPE_END(NAME) },
+#define PLT_TYPE_END(NAME)
#define PLT_ENTRY(...)
#define PLT_ELEM(...)
#define ENTRY_RELOC(...)
#define ELEM_RELOC(...)
-struct plt_version_t plt_versions[PLT_MAX] = {
#include "arc-plt.def"
-};
#undef PLT_TYPE_START
#undef PLT_TYPE_END
#undef PLT_ENTRY
@@ -190,5 +116,6 @@ struct plt_version_t plt_versions[PLT_MAX] = {
#undef ENTRY_RELOC
#undef ELEM_RELOC
+extern struct plt_version_t plt_versions[PLT_MAX];
-#endif /* ARC_PLT_H */
+#endif
diff --git a/bfd/archures.c b/bfd/archures.c
index bcc2601e0c8..890d0796757 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -365,6 +365,8 @@ DESCRIPTION
.#define bfd_mach_arc_arc601 4
.#define bfd_mach_arc_arc700 3
.#define bfd_mach_arc_arcv2 5
+.#define bfd_mach_arcv3_64 0x10
+.#define bfd_mach_arcv3_32 0x20
. bfd_arch_m32c, {* Renesas M16C/M32C. *}
.#define bfd_mach_m16c 0x75
.#define bfd_mach_m32c 0x78
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index df6f9f45673..e833861bfd5 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1765,6 +1765,8 @@ enum bfd_architecture
#define bfd_mach_arc_arc601 4
#define bfd_mach_arc_arc700 3
#define bfd_mach_arc_arcv2 5
+#define bfd_mach_arcv3_64 0x10
+#define bfd_mach_arcv3_32 0x20
bfd_arch_m32c, /* Renesas M16C/M32C. */
#define bfd_mach_m16c 0x75
#define bfd_mach_m32c 0x78
@@ -3352,6 +3354,7 @@ pc-relative or some form of GOT-indirect relocation. */
BFD_RELOC_ARC_16,
BFD_RELOC_ARC_24,
BFD_RELOC_ARC_32,
+ BFD_RELOC_ARC_64,
BFD_RELOC_ARC_N8,
BFD_RELOC_ARC_N16,
BFD_RELOC_ARC_N24,
@@ -3416,6 +3419,26 @@ pc-relative or some form of GOT-indirect relocation. */
BFD_RELOC_ARC_S21H_PCREL_PLT,
BFD_RELOC_ARC_NPS_CMEM16,
BFD_RELOC_ARC_JLI_SECTOFF,
+ BFD_RELOC_ARC_S7H_PCREL,
+ BFD_RELOC_ARC_S8H_PCREL,
+ BFD_RELOC_ARC_S9H_PCREL,
+ BFD_RELOC_ARC_S10H_PCREL,
+ BFD_RELOC_ARC_S13H_PCREL,
+ BFD_RELOC_ARC_ALIGN,
+ BFD_RELOC_ARC_ADD8,
+ BFD_RELOC_ARC_ADD16,
+ BFD_RELOC_ARC_SUB8,
+ BFD_RELOC_ARC_SUB16,
+ BFD_RELOC_ARC_SUB32,
+ BFD_RELOC_ARC_LO32,
+ BFD_RELOC_ARC_HI32,
+ BFD_RELOC_ARC_LO32_ME,
+ BFD_RELOC_ARC_HI32_ME,
+ BFD_RELOC_ARC_N64,
+ BFD_RELOC_ARC_SDA_LDST3,
+ BFD_RELOC_ARC_NLO32,
+ BFD_RELOC_ARC_NLO32_ME,
+
/* ADI Blackfin 16 bit immediate absolute reloc. */
BFD_RELOC_BFIN_16_IMM,
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 14523caf0c5..5bc2635b159 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -319,16 +319,26 @@ case "${targ}" in
targ_defvec=am33_elf32_linux_vec
;;
- arc*eb-*-elf* | arc*eb-*-linux*)
+#ifdef BFD64
+ arceb-*-elf* | arceb-*-linux*)
targ_defvec=arc_elf32_be_vec
- targ_selvecs=arc_elf32_le_vec
+ targ_selvecs="arc_elf32_le_vec arc_elf64_le_vec"
+ want64=true
;;
- arc*-*-elf* | arc*-*-linux*)
+ arc-*-elf* | arc-*-linux*)
targ_defvec=arc_elf32_le_vec
- targ_selvecs=arc_elf32_be_vec
+ targ_selvecs="arc_elf32_be_vec arc_elf64_le_vec"
+ want64=true
;;
+ arc64-*-*)
+ targ_defvec=arc_elf64_le_vec
+ targ_selvecs="arc_elf32_be_vec arc_elf32_le_vec"
+ want64=true
+ ;;
+#endif
+
arm-*-darwin*)
targ_defvec=arm_mach_o_vec
targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec"
diff --git a/bfd/configure b/bfd/configure
index c6905180819..eee59a34a9a 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -14721,8 +14721,9 @@ do
aout0_be_vec) tb="$tb aout0.lo aout32.lo" ;;
aout64_vec) tb="$tb demo64.lo aout64.lo"; target_size=64 ;;
aout_vec) tb="$tb host-aout.lo aout32.lo" ;;
- arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
- arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf32_be_vec) tb="$tb arc-plt.lo elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf32_le_vec) tb="$tb arc-plt.lo elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf64_le_vec) tb="$tb arc-plt.lo elf64-arc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 8e86f8399ce..b23cda48157 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -457,8 +457,9 @@ do
aout0_be_vec) tb="$tb aout0.lo aout32.lo" ;;
aout64_vec) tb="$tb demo64.lo aout64.lo"; target_size=64 ;;
aout_vec) tb="$tb host-aout.lo aout32.lo" ;;
- arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
- arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf32_be_vec) tb="$tb arc-plt.lo elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf32_le_vec) tb="$tb arc-plt.lo elf32-arc.lo elf32.lo $elf" ;;
+ arc_elf64_le_vec) tb="$tb arc-plt.lo elf64-arc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
diff --git a/bfd/cpu-arc.c b/bfd/cpu-arc.c
index 56a9f7bb454..71eed8432c2 100644
--- a/bfd/cpu-arc.c
+++ b/bfd/cpu-arc.c
@@ -26,37 +26,39 @@
static const bfd_arch_info_type *
arc_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
-#define ARC(mach, print_name, default_p, next) \
- { \
- 32, /* Bits in a word. */ \
- 32, /* Bits in an address. */ \
- 8, /* Bits in a byte. */ \
- bfd_arch_arc, \
- mach, \
- "arc", \
- print_name, \
- 4, /* Section alignment power. */ \
- default_p, \
- arc_compatible, \
- bfd_default_scan, \
- bfd_arch_default_fill, \
- next, \
- 0 /* Maximum offset of a reloc from the start of an insn. */ \
- }
+#define ARC(BITS_WORD, BITS_ADDR, MACH, PRINT_NAME, DEFAULT_P, NEXT) \
+{ \
+ BITS_WORD, /* 32 bits in a word */ \
+ BITS_ADDR, /* 32 bits in an address */ \
+ 8, /* 8 bits in a byte */ \
+ bfd_arch_arc, \
+ MACH, \
+ "arc", \
+ PRINT_NAME, \
+ 4, /* section alignment power */ \
+ DEFAULT_P, \
+ arc_compatible, \
+ bfd_default_scan, \
+ bfd_arch_default_fill, \
+ NEXT, \
+ 0 /* Maximum offset of a reloc from the start of an insn. */ \
+}
static const bfd_arch_info_type arch_info_struct[] =
{
- ARC (bfd_mach_arc_arc600, "A6" , FALSE, &arch_info_struct[1]),
- ARC (bfd_mach_arc_arc601, "ARC601", FALSE, &arch_info_struct[2]),
- ARC (bfd_mach_arc_arc700, "ARC700", FALSE, &arch_info_struct[3]),
- ARC (bfd_mach_arc_arc700, "A7", FALSE, &arch_info_struct[4]),
- ARC (bfd_mach_arc_arcv2, "ARCv2", FALSE, &arch_info_struct[5]),
- ARC (bfd_mach_arc_arcv2, "EM", FALSE, &arch_info_struct[6]),
- ARC (bfd_mach_arc_arcv2, "HS", FALSE, NULL),
+ ARC (32, 32, bfd_mach_arc_arc600, "A6" , FALSE, &arch_info_struct[1]),
+ ARC (32, 32, bfd_mach_arc_arc601, "ARC601", FALSE, &arch_info_struct[2]),
+ ARC (32, 32, bfd_mach_arc_arc700, "ARC700", FALSE, &arch_info_struct[3]),
+ ARC (32, 32, bfd_mach_arc_arc700, "A7", FALSE, &arch_info_struct[4]),
+ ARC (32, 32, bfd_mach_arc_arcv2, "ARCv2", FALSE, &arch_info_struct[5]),
+ ARC (32, 32, bfd_mach_arc_arcv2, "EM", FALSE, &arch_info_struct[6]),
+ ARC (32, 32, bfd_mach_arc_arcv2, "HS", FALSE, &arch_info_struct[7]),
+ ARC (32, 32, bfd_mach_arcv3_32, "ARCv3_32", FALSE, &arch_info_struct[8]),
+ ARC (64, 64, bfd_mach_arcv3_64, "ARCv3_64", FALSE, NULL),
};
const bfd_arch_info_type bfd_arc_arch =
- ARC (bfd_mach_arc_arc600, "ARC600", TRUE, &arch_info_struct[0]);
+ ARC (32, 32, bfd_mach_arc_arc600, "ARC600", TRUE, &arch_info_struct[0]);
/* ARC-specific "compatible" function. The general rule is that if A and B are
compatible, then this function should return architecture that is more
@@ -84,9 +86,6 @@ arc_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
if (a->arch != b->arch)
return NULL;
- if (a->bits_per_word != b->bits_per_word)
- return NULL;
-
/* ARCv2|EM and EM. */
if ((a->mach == bfd_mach_arc_arcv2 && b == em)
|| (b->mach == bfd_mach_arc_arcv2 && a == em))
@@ -97,5 +96,6 @@ arc_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
|| (b->mach == bfd_mach_arc_arcv2 && a == hs))
return hs;
- return bfd_default_compatible (a, b);
+ /* Machine compatibilitu is checked in merge_private_bfd_data. */
+ return a;
}
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
deleted file mode 100644
index 4d9d6b99928..00000000000
--- a/bfd/elf32-arc.c
+++ /dev/null
@@ -1,3158 +0,0 @@
-/* ARC-specific support for 32-bit ELF
- Copyright (C) 1994-2020 Free Software Foundation, Inc.
- Contributed by Cupertino Miranda (cmiranda@synopsys.com).
-
- This file is part of BFD, the Binary File Descriptor library.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "elf-bfd.h"
-#include "elf/arc.h"
-#include "libiberty.h"
-#include "opcode/arc-func.h"
-#include "opcode/arc.h"
-#include "arc-plt.h"
-
-#define FEATURE_LIST_NAME bfd_feature_list
-#define CONFLICT_LIST bfd_conflict_list
-#include "opcode/arc-attrs.h"
-
-/* #define ARC_ENABLE_DEBUG 1 */
-#ifdef ARC_ENABLE_DEBUG
-static const char *
-name_for_global_symbol (struct elf_link_hash_entry *h)
-{
- static char *local_str = "(local)";
- if (h == NULL)
- return local_str;
- return h->root.root.string;
-}
-#define ARC_DEBUG(fmt, args...) fprintf (stderr, fmt, ##args)
-#else
-#define ARC_DEBUG(...)
-#endif
-
-
-#define ADD_RELA(BFD, SECTION, OFFSET, SYM_IDX, TYPE, ADDEND) \
- { \
- struct elf_link_hash_table *_htab = elf_hash_table (info); \
- Elf_Internal_Rela _rel; \
- bfd_byte * _loc; \
- \
- if (_htab->dynamic_sections_created == TRUE) \
- { \
- BFD_ASSERT (_htab->srel##SECTION &&_htab->srel##SECTION->contents); \
- _loc = _htab->srel##SECTION->contents \
- + ((_htab->srel##SECTION->reloc_count) \
- * sizeof (Elf32_External_Rela)); \
- _htab->srel##SECTION->reloc_count++; \
- _rel.r_addend = ADDEND; \
- _rel.r_offset = (_htab->s##SECTION)->output_section->vma \
- + (_htab->s##SECTION)->output_offset + OFFSET; \
- BFD_ASSERT ((long) SYM_IDX != -1); \
- _rel.r_info = ELF32_R_INFO (SYM_IDX, TYPE); \
- bfd_elf32_swap_reloca_out (BFD, &_rel, _loc); \
- } \
- }
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- case VALUE: \
- return "R_" #TYPE; \
- break;
-
-static ATTRIBUTE_UNUSED const char *
-reloc_type_to_name (unsigned int type)
-{
- switch (type)
- {
-#include "elf/arc-reloc.def"
-
- default:
- return "UNKNOWN";
- break;
- }
-}
-
-#undef ARC_RELOC_HOWTO
-
-/* Try to minimize the amount of space occupied by relocation tables
- on the ROM (not that the ROM won't be swamped by other ELF overhead). */
-
-#define USE_REL 1
-
-/* Similar with bfd_get_32 but taking into account the
- middle-endianess of the ARC CPUs. Only to be used in code
- sections. */
-
-static bfd_vma
-bfd_get_32_me (bfd * abfd,const unsigned char * data)
-{
- bfd_vma value = 0;
-
- if (bfd_big_endian (abfd))
- value = bfd_get_32 (abfd, data);
- else
- {
- value = ((bfd_get_8 (abfd, data) & 255) << 16);
- value |= ((bfd_get_8 (abfd, data + 1) & 255) << 24);
- value |= (bfd_get_8 (abfd, data + 2) & 255);
- value |= ((bfd_get_8 (abfd, data + 3) & 255) << 8);
- }
-
- return value;
-}
-
-static void
-bfd_put_32_me (bfd *abfd, bfd_vma value,unsigned char *data)
-{
- bfd_put_16 (abfd, (value & 0xffff0000) >> 16, data);
- bfd_put_16 (abfd, value & 0xffff, data + 2);
-}
-
-static ATTRIBUTE_UNUSED bfd_boolean
-is_reloc_PC_relative (reloc_howto_type *howto)
-{
- return (strstr (howto->name, "PC") != NULL) ? TRUE : FALSE;
-}
-
-static bfd_boolean
-is_reloc_SDA_relative (reloc_howto_type *howto)
-{
- return (strstr (howto->name, "SDA") != NULL) ? TRUE : FALSE;
-}
-
-static bfd_boolean
-is_reloc_for_GOT (reloc_howto_type * howto)
-{
- if (strstr (howto->name, "TLS") != NULL)
- return FALSE;
- return (strstr (howto->name, "GOT") != NULL) ? TRUE : FALSE;
-}
-
-static bfd_boolean
-is_reloc_for_PLT (reloc_howto_type * howto)
-{
- return (strstr (howto->name, "PLT") != NULL) ? TRUE : FALSE;
-}
-
-static bfd_boolean
-is_reloc_for_TLS (reloc_howto_type *howto)
-{
- return (strstr (howto->name, "TLS") != NULL) ? TRUE : FALSE;
-}
-
-struct arc_relocation_data
-{
- bfd_signed_vma reloc_offset;
- bfd_signed_vma reloc_addend;
- bfd_signed_vma got_offset_value;
-
- bfd_signed_vma sym_value;
- asection * sym_section;
-
- reloc_howto_type *howto;
-
- asection * input_section;
-
- bfd_signed_vma sdata_begin_symbol_vma;
- bfd_boolean sdata_begin_symbol_vma_set;
- bfd_signed_vma got_symbol_vma;
-
- bfd_boolean should_relocate;
-
- const char * symbol_name;
-};
-
-/* ARC ELF linker hash entry. */
-struct elf_arc_link_hash_entry
-{
- struct elf_link_hash_entry root;
-
- struct got_entry *got_ents;
-};
-
-
-/* Should be included at this location due to static declarations
- defined before this point. */
-#include "arc-got.h"
-
-#define arc_bfd_get_8(A,B,C) bfd_get_8(A,B)
-#define arc_bfd_get_16(A,B,C) bfd_get_16(A,B)
-#define arc_bfd_get_32(A,B,C) bfd_get_32(A,B)
-#define arc_bfd_put_8(A,B,C,D) bfd_put_8(A,B,C)
-#define arc_bfd_put_16(A,B,C,D) bfd_put_16(A,B,C)
-#define arc_bfd_put_32(A,B,C,D) bfd_put_32(A,B,C)
-
-
-static bfd_reloc_status_type
-arc_elf_reloc (bfd *abfd ATTRIBUTE_UNUSED,
- arelent *reloc_entry,
- asymbol *symbol_in,
- void *data ATTRIBUTE_UNUSED,
- asection *input_section,
- bfd *output_bfd,
- char ** error_message ATTRIBUTE_UNUSED)
-{
- if (output_bfd != NULL)
- {
- reloc_entry->address += input_section->output_offset;
-
- /* In case of relocateable link and if the reloc is against a
- section symbol, the addend needs to be adjusted according to
- where the section symbol winds up in the output section. */
- if ((symbol_in->flags & BSF_SECTION_SYM) && symbol_in->section)
- reloc_entry->addend += symbol_in->section->output_offset;
-
- return bfd_reloc_ok;
- }
-
- return bfd_reloc_continue;
-}
-
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- TYPE = VALUE,
-
-enum howto_list
-{
-#include "elf/arc-reloc.def"
- HOWTO_LIST_LAST
-};
-
-#undef ARC_RELOC_HOWTO
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, RSIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- [TYPE] = HOWTO (R_##TYPE, 0, RSIZE, BITSIZE, FALSE, 0, \
- complain_overflow_##OVERFLOW, arc_elf_reloc, \
- "R_" #TYPE, FALSE, 0, 0, FALSE),
-
-static struct reloc_howto_struct elf_arc_howto_table[] =
-{
-#include "elf/arc-reloc.def"
-/* Example of what is generated by the preprocessor. Currently kept as an
- example.
- HOWTO (R_ARC_NONE, // Type.
- 0, // Rightshift.
- 2, // Size (0 = byte, 1 = short, 2 = long).
- 32, // Bitsize.
- FALSE, // PC_relative.
- 0, // Bitpos.
- complain_overflow_bitfield, // Complain_on_overflow.
- bfd_elf_generic_reloc, // Special_function.
- "R_ARC_NONE", // Name.
- TRUE, // Partial_inplace.
- 0, // Src_mask.
- 0, // Dst_mask.
- FALSE), // PCrel_offset.
-*/
-};
-#undef ARC_RELOC_HOWTO
-
-static void
-arc_elf_howto_init (void)
-{
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- elf_arc_howto_table[TYPE].pc_relative = \
- (strstr (#FORMULA, " P ") != NULL || strstr (#FORMULA, " PDATA ") != NULL); \
- elf_arc_howto_table[TYPE].dst_mask = RELOC_FUNCTION(0, ~0); \
- /* Only 32 bit data relocations should be marked as ME. */ \
- if (strstr (#FORMULA, " ME ") != NULL) \
- { \
- BFD_ASSERT (SIZE == 2); \
- }
-
-#include "elf/arc-reloc.def"
-
-}
-#undef ARC_RELOC_HOWTO
-
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- [TYPE] = VALUE,
-
-const int howto_table_lookup[] =
-{
-#include "elf/arc-reloc.def"
-};
-
-#undef ARC_RELOC_HOWTO
-
-static reloc_howto_type *
-arc_elf_howto (unsigned int r_type)
-{
- if (elf_arc_howto_table[R_ARC_32].dst_mask == 0)
- arc_elf_howto_init ();
- return &elf_arc_howto_table[r_type];
-}
-
-/* Map BFD reloc types to ARC ELF reloc types. */
-
-struct arc_reloc_map
-{
- bfd_reloc_code_real_type bfd_reloc_val;
- unsigned char elf_reloc_val;
-};
-
-/* ARC ELF linker hash table. */
-struct elf_arc_link_hash_table
-{
- struct elf_link_hash_table elf;
-};
-
-static struct bfd_hash_entry *
-elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry,
- struct bfd_hash_table *table,
- const char *string)
-{
- struct elf_arc_link_hash_entry * ret =
- (struct elf_arc_link_hash_entry *) entry;
-
- /* Allocate the structure if it has not already been allocated by a
- subclass. */
- if (ret == NULL)
- ret = (struct elf_arc_link_hash_entry *)
- bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry));
- if (ret == NULL)
- return (struct bfd_hash_entry *) ret;
-
- /* Call the allocation method of the superclass. */
- ret = ((struct elf_arc_link_hash_entry *)
- _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
- table, string));
- if (ret != NULL)
- {
- ret->got_ents = NULL;
- }
-
- return (struct bfd_hash_entry *) ret;
-}
-
-/* Destroy an ARC ELF linker hash table. */
-static void
-elf_arc_link_hash_table_free (bfd *obfd)
-{
- _bfd_elf_link_hash_table_free (obfd);
-}
-
-/* Create an ARC ELF linker hash table. */
-
-static struct bfd_link_hash_table *
-arc_elf_link_hash_table_create (bfd *abfd)
-{
- struct elf_arc_link_hash_table *ret;
-
- ret = (struct elf_arc_link_hash_table *) bfd_zmalloc (sizeof (*ret));
- if (ret == NULL)
- return NULL;
-
- if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
- elf_arc_link_hash_newfunc,
- sizeof (struct elf_arc_link_hash_entry),
- ARC_ELF_DATA))
- {
- free (ret);
- return NULL;
- }
-
- ret->elf.root.hash_table_free = elf_arc_link_hash_table_free;
-
- return &ret->elf.root;
-}
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- { BFD_RELOC_##TYPE, R_##TYPE },
-
-static const struct arc_reloc_map arc_reloc_map[] =
-{
-#include "elf/arc-reloc.def"
-
- {BFD_RELOC_NONE, R_ARC_NONE},
- {BFD_RELOC_8, R_ARC_8},
- {BFD_RELOC_16, R_ARC_16},
- {BFD_RELOC_24, R_ARC_24},
- {BFD_RELOC_32, R_ARC_32},
-};
-
-#undef ARC_RELOC_HOWTO
-
-typedef ATTRIBUTE_UNUSED bfd_vma (*replace_func) (unsigned, int ATTRIBUTE_UNUSED);
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- case TYPE: \
- func = (void *) RELOC_FUNCTION; \
- break;
-
-static replace_func
-get_replace_function (bfd *abfd, unsigned int r_type)
-{
- void *func = NULL;
-
- switch (r_type)
- {
- #include "elf/arc-reloc.def"
- }
-
- if (func == replace_bits24 && bfd_big_endian (abfd))
- func = replace_bits24_be;
-
- return (replace_func) func;
-}
-#undef ARC_RELOC_HOWTO
-
-static reloc_howto_type *
-arc_elf32_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
- bfd_reloc_code_real_type code)
-{
- unsigned int i;
-
- for (i = ARRAY_SIZE (arc_reloc_map); i--;)
- {
- if (arc_reloc_map[i].bfd_reloc_val == code)
- return arc_elf_howto (arc_reloc_map[i].elf_reloc_val);
- }
-
- return NULL;
-}
-
-/* Function to set the ELF flag bits. */
-static bfd_boolean
-arc_elf_set_private_flags (bfd *abfd, flagword flags)
-{
- elf_elfheader (abfd)->e_flags = flags;
- elf_flags_init (abfd) = TRUE;
- return TRUE;
-}
-
-/* Print private flags. */
-static bfd_boolean
-arc_elf_print_private_bfd_data (bfd *abfd, void * ptr)
-{
- FILE *file = (FILE *) ptr;
- flagword flags;
-
- BFD_ASSERT (abfd != NULL && ptr != NULL);
-
- /* Print normal ELF private data. */
- _bfd_elf_print_private_bfd_data (abfd, ptr);
-
- flags = elf_elfheader (abfd)->e_flags;
- fprintf (file, _("private flags = 0x%lx:"), (unsigned long) flags);
-
- switch (flags & EF_ARC_MACH_MSK)
- {
- case EF_ARC_CPU_ARCV2HS : fprintf (file, " -mcpu=ARCv2HS"); break;
- case EF_ARC_CPU_ARCV2EM : fprintf (file, " -mcpu=ARCv2EM"); break;
- case E_ARC_MACH_ARC600 : fprintf (file, " -mcpu=ARC600"); break;
- case E_ARC_MACH_ARC601 : fprintf (file, " -mcpu=ARC601"); break;
- case E_ARC_MACH_ARC700 : fprintf (file, " -mcpu=ARC700"); break;
- default:
- fprintf (file, "-mcpu=unknown");
- break;
- }
-
- switch (flags & EF_ARC_OSABI_MSK)
- {
- case E_ARC_OSABI_ORIG : fprintf (file, " (ABI:legacy)"); break;
- case E_ARC_OSABI_V2 : fprintf (file, " (ABI:v2)"); break;
- case E_ARC_OSABI_V3 : fprintf (file, " (ABI:v3)"); break;
- case E_ARC_OSABI_V4 : fprintf (file, " (ABI:v4)"); break;
- default:
- fprintf (file, " (ABI:unknown)");
- break;
- }
-
- fputc ('\n', file);
- return TRUE;
-}
-
-/* Copy backend specific data from one object module to another. */
-
-static bfd_boolean
-arc_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
-{
- if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
- || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
- return TRUE;
-
- BFD_ASSERT (!elf_flags_init (obfd)
- || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
-
- elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
- elf_flags_init (obfd) = TRUE;
-
- /* Copy object attributes. */
- _bfd_elf_copy_obj_attributes (ibfd, obfd);
-
- return _bfd_elf_copy_private_bfd_data (ibfd, obfd);
-}
-
-static reloc_howto_type *
-bfd_elf32_bfd_reloc_name_lookup (bfd * abfd ATTRIBUTE_UNUSED,
- const char *r_name)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE (elf_arc_howto_table); i++)
- if (elf_arc_howto_table[i].name != NULL
- && strcasecmp (elf_arc_howto_table[i].name, r_name) == 0)
- return arc_elf_howto (i);
-
- return NULL;
-}
-
-/* Set the howto pointer for an ARC ELF reloc. */
-
-static bfd_boolean
-arc_info_to_howto_rel (bfd * abfd,
- arelent * cache_ptr,
- Elf_Internal_Rela * dst)
-{
- unsigned int r_type;
-
- r_type = ELF32_R_TYPE (dst->r_info);
- if (r_type >= (unsigned int) R_ARC_max)
- {
- /* xgettext:c-format */
- _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
- abfd, r_type);
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
-
- cache_ptr->howto = arc_elf_howto (r_type);
- return TRUE;
-}
-
-/* Extract CPU features from an NTBS. */
-
-static unsigned
-arc_extract_features (const char *p)
-{
- unsigned i, r = 0;
-
- if (!p)
- return 0;
-
- for (i = 0; i < ARRAY_SIZE (bfd_feature_list); i++)
- {
- char *t = strstr (p, bfd_feature_list[i].attr);
- unsigned l = strlen (bfd_feature_list[i].attr);
- if ((t != NULL)
- && (t[l] == ','
- || t[l] == '\0'))
- r |= bfd_feature_list[i].feature;
- }
-
- return r;
-}
-
-/* Concatenate two strings. s1 can be NULL but not
- s2. */
-
-static char *
-arc_stralloc (char * s1, const char * s2)
-{
- char *p;
-
- /* Only s1 can be null. */
- BFD_ASSERT (s2);
-
- p = s1 ? concat (s1, ",", s2, NULL) : (char *)s2;
-
- return p;
-}
-
-/* Merge ARC object attributes from IBFD into OBFD. Raise an error if
- there are conflicting attributes. */
-
-static bfd_boolean
-arc_elf_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
-{
- bfd *obfd = info->output_bfd;
- obj_attribute *in_attr;
- obj_attribute *out_attr;
- int i;
- bfd_boolean result = TRUE;
- const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
- char *tagname = NULL;
-
- /* Skip the linker stubs file. This preserves previous behavior
- of accepting unknown attributes in the first input file - but
- is that a bug? */
- if (ibfd->flags & BFD_LINKER_CREATED)
- return TRUE;
-
- /* Skip any input that hasn't attribute section.
- This enables to link object files without attribute section with
- any others. */
- if (bfd_get_section_by_name (ibfd, sec_name) == NULL)
- return TRUE;
-
- if (!elf_known_obj_attributes_proc (obfd)[0].i)
- {
- /* This is the first object. Copy the attributes. */
- _bfd_elf_copy_obj_attributes (ibfd, obfd);
-
- out_attr = elf_known_obj_attributes_proc (obfd);
-
- /* Use the Tag_null value to indicate the attributes have been
- initialized. */
- out_attr[0].i = 1;
-
- return TRUE;
- }
-
- in_attr = elf_known_obj_attributes_proc (ibfd);
- out_attr = elf_known_obj_attributes_proc (obfd);
-
- for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
- {
- /* Merge this attribute with existing attributes. */
- switch (i)
- {
- case Tag_ARC_PCS_config:
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- else if (in_attr[i].i != 0 && out_attr[i].i != in_attr[i].i)
- {
- const char *tagval[] = { "Absent", "Bare-metal/mwdt",
- "Bare-metal/newlib", "Linux/uclibc",
- "Linux/glibc" };
- BFD_ASSERT (in_attr[i].i < 5);
- BFD_ASSERT (out_attr[i].i < 5);
- /* It's sometimes ok to mix different configs, so this is only
- a warning. */
- _bfd_error_handler
- (_("warning: %pB: conflicting platform configuration "
- "%s with %s"), ibfd,
- tagval[in_attr[i].i],
- tagval[out_attr[i].i]);
- }
- break;
-
- case Tag_ARC_CPU_base:
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- else if (in_attr[i].i != 0 && out_attr[i].i != in_attr[i].i
- && ((out_attr[i].i + in_attr[i].i) < 6))
- {
- const char *tagval[] = { "Absent", "ARC6xx", "ARC7xx",
- "ARCEM", "ARCHS" };
- BFD_ASSERT (in_attr[i].i < 5);
- BFD_ASSERT (out_attr[i].i < 5);
- /* We cannot mix code for different CPUs. */
- _bfd_error_handler
- (_("error: %pB: unable to merge CPU base attributes "
- "%s with %s"),
- obfd,
- tagval[in_attr[i].i],
- tagval[out_attr[i].i]);
- result = FALSE;
- break;
- }
- else
- {
- /* The CPUs may be different, check if we can still mix
- the objects against the output choosen CPU. */
- unsigned in_feature = 0;
- unsigned out_feature = 0;
- char *p1 = in_attr[Tag_ARC_ISA_config].s;
- char *p2 = out_attr[Tag_ARC_ISA_config].s;
- unsigned j;
- unsigned cpu_out;
- unsigned opcode_map[] = {0, ARC_OPCODE_ARC600, ARC_OPCODE_ARC700,
- ARC_OPCODE_ARCv2EM, ARC_OPCODE_ARCv2HS};
-
- BFD_ASSERT (in_attr[i].i < (sizeof (opcode_map)
- / sizeof (unsigned)));
- BFD_ASSERT (out_attr[i].i < (sizeof (opcode_map)
- / sizeof (unsigned)));
- cpu_out = opcode_map[out_attr[i].i];
-
- in_feature = arc_extract_features (p1);
- out_feature = arc_extract_features (p2);
-
- /* First, check if a feature is compatible with the
- output object chosen CPU. */
- for (j = 0; j < ARRAY_SIZE (bfd_feature_list); j++)
- if (((in_feature | out_feature) & bfd_feature_list[j].feature)
- && (!(cpu_out & bfd_feature_list[j].cpus)))
- {
- _bfd_error_handler
- (_("error: %pB: unable to merge ISA extension attributes "
- "%s"),
- obfd, bfd_feature_list[j].name);
- result = FALSE;
- break;
- }
- /* Second, if we have compatible features with the
- chosen CPU, check if they are compatible among
- them. */
- for (j = 0; j < ARRAY_SIZE (bfd_conflict_list); j++)
- if (((in_feature | out_feature) & bfd_conflict_list[j])
- == bfd_conflict_list[j])
- {
- unsigned k;
- for (k = 0; k < ARRAY_SIZE (bfd_feature_list); k++)
- {
- if (in_feature & bfd_feature_list[k].feature
- & bfd_conflict_list[j])
- p1 = (char *) bfd_feature_list[k].name;
- if (out_feature & bfd_feature_list[k].feature
- & bfd_conflict_list[j])
- p2 = (char *) bfd_feature_list[k].name;
- }
- _bfd_error_handler
- (_("error: %pB: conflicting ISA extension attributes "
- "%s with %s"),
- obfd, p1, p2);
- result = FALSE;
- break;
- }
- /* Everithing is alright. */
- out_feature |= in_feature;
- p1 = NULL;
- for (j = 0; j < ARRAY_SIZE (bfd_feature_list); j++)
- if (out_feature & bfd_feature_list[j].feature)
- p1 = arc_stralloc (p1, bfd_feature_list[j].attr);
- if (p1)
- out_attr[Tag_ARC_ISA_config].s =
- _bfd_elf_attr_strdup (obfd, p1);
- }
- /* Fall through. */
- case Tag_ARC_CPU_variation:
- case Tag_ARC_ISA_mpy_option:
- case Tag_ARC_ABI_osver:
- /* Use the largest value specified. */
- if (in_attr[i].i > out_attr[i].i)
- out_attr[i].i = in_attr[i].i;
- break;
-
- /* The CPU name is given by the vendor, just choose an
- existing one if missing or different. There are no fail
- criteria if they different or both missing. */
- case Tag_ARC_CPU_name:
- if (!out_attr[i].s && in_attr[i].s)
- out_attr[i].s = _bfd_elf_attr_strdup (obfd, in_attr[i].s);
- break;
-
- case Tag_ARC_ABI_rf16:
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- else if (out_attr[i].i != in_attr[i].i)
- {
- /* We cannot mix code with rf16 and without. */
- _bfd_error_handler
- (_("error: %pB: cannot mix rf16 with full register set %pB"),
- obfd, ibfd);
- result = FALSE;
- }
- break;
-
- case Tag_ARC_ABI_pic:
- tagname = "PIC";
- /* fall through */
- case Tag_ARC_ABI_sda:
- if (!tagname)
- tagname = "SDA";
- /* fall through */
- case Tag_ARC_ABI_tls:
- {
- const char *tagval[] = { "Absent", "MWDT", "GNU" };
-
- if (!tagname)
- tagname = "TLS";
-
- BFD_ASSERT (in_attr[i].i < 3);
- BFD_ASSERT (out_attr[i].i < 3);
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- else if (out_attr[i].i != 0 && in_attr[i].i != 0
- && out_attr[i].i != in_attr[i].i)
- {
- _bfd_error_handler
- (_("error: %pB: conflicting attributes %s: %s with %s"),
- obfd, tagname,
- tagval[in_attr[i].i],
- tagval[out_attr[i].i]);
- result = FALSE;
- }
- tagname = NULL;
- break;
- }
-
- case Tag_ARC_ABI_double_size:
- tagname = "Double size";
- /* fall through */
- case Tag_ARC_ABI_enumsize:
- if (!tagname)
- tagname = "Enum size";
- /* fall through */
- case Tag_ARC_ABI_exceptions:
- if (!tagname)
- tagname = "ABI exceptions";
-
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- else if (out_attr[i].i != 0 && in_attr[i].i != 0
- && out_attr[i].i != in_attr[i].i)
- {
- _bfd_error_handler
- (_("error: %pB: conflicting attributes %s"),
- obfd, tagname);
- result = FALSE;
- }
- break;
-
- case Tag_ARC_ISA_apex:
- break; /* Do nothing for APEX attributes. */
-
- case Tag_ARC_ISA_config:
- /* It is handled in Tag_ARC_CPU_base. */
- break;
-
- case Tag_ARC_ATR_version:
- if (out_attr[i].i == 0)
- out_attr[i].i = in_attr[i].i;
- break;
-
- default:
- result
- = result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i);
- }
-
- /* If out_attr was copied from in_attr then it won't have a type yet. */
- if (in_attr[i].type && !out_attr[i].type)
- out_attr[i].type = in_attr[i].type;
- }
-
- /* Merge Tag_compatibility attributes and any common GNU ones. */
- if (!_bfd_elf_merge_object_attributes (ibfd, info))
- return FALSE;
-
- /* Check for any attributes not known on ARC. */
- result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
-
- return result;
-}
-
-/* Merge backend specific data from an object file to the output
- object file when linking. */
-
-static bfd_boolean
-arc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
-{
- bfd *obfd = info->output_bfd;
- unsigned short mach_ibfd;
- static unsigned short mach_obfd = EM_NONE;
- flagword out_flags;
- flagword in_flags;
- asection *sec;
-
- /* Check if we have the same endianess. */
- if (! _bfd_generic_verify_endian_match (ibfd, info))
- return FALSE;
-
- if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
- || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
- return TRUE;
-
- /* Collect ELF flags. */
- in_flags = elf_elfheader (ibfd)->e_flags & EF_ARC_MACH_MSK;
- out_flags = elf_elfheader (obfd)->e_flags & EF_ARC_MACH_MSK;
-
- if (!elf_flags_init (obfd)) /* First call, no flags set. */
- {
- elf_flags_init (obfd) = TRUE;
- out_flags = in_flags;
- }
-
- if (!arc_elf_merge_attributes (ibfd, info))
- return FALSE;
-
- /* Check to see if the input BFD actually contains any sections. Do
- not short-circuit dynamic objects; their section list may be
- emptied by elf_link_add_object_symbols. */
- if (!(ibfd->flags & DYNAMIC))
- {
- bfd_boolean null_input_bfd = TRUE;
- bfd_boolean only_data_sections = TRUE;
-
- for (sec = ibfd->sections; sec != NULL; sec = sec->next)
- {
- if ((bfd_section_flags (sec)
- & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
- == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
- only_data_sections = FALSE;
-
- null_input_bfd = FALSE;
- }
-
- if (null_input_bfd || only_data_sections)
- return TRUE;
- }
-
- /* Complain about various flag/architecture mismatches. */
- mach_ibfd = elf_elfheader (ibfd)->e_machine;
- if (mach_obfd == EM_NONE)
- {
- mach_obfd = mach_ibfd;
- }
- else
- {
- if (mach_ibfd != mach_obfd)
- {
- /* xgettext:c-format */
- _bfd_error_handler (_("error: attempting to link %pB "
- "with a binary %pB of different architecture"),
- ibfd, obfd);
- return FALSE;
- }
- else if ((in_flags != out_flags)
- /* If we have object attributes, then we already
- checked the objects compatibility, skip it. */
- && !bfd_elf_get_obj_attr_int (ibfd, OBJ_ATTR_PROC,
- Tag_ARC_CPU_base))
- {
- if (in_flags && out_flags)
- {
- /* Warn if different flags. */
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB: uses different e_flags (%#x) fields than "
- "previous modules (%#x)"),
- ibfd, in_flags, out_flags);
- return FALSE;
- }
- /* MWDT doesnt set the eflags hence make sure we choose the
- eflags set by gcc. */
- in_flags = in_flags > out_flags ? in_flags : out_flags;
- }
- else
- {
- /* Everything is correct; don't change the output flags. */
- in_flags = out_flags;
- }
- }
-
- /* Update the flags. */
- elf_elfheader (obfd)->e_flags = in_flags;
-
- if (bfd_get_mach (obfd) < bfd_get_mach (ibfd))
- {
- return bfd_set_arch_mach (obfd, bfd_arch_arc, bfd_get_mach (ibfd));
- }
-
- return TRUE;
-}
-
-/* Return a best guess for the machine number based on the attributes. */
-
-static unsigned int
-bfd_arc_get_mach_from_attributes (bfd * abfd)
-{
- int arch = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, Tag_ARC_CPU_base);
- unsigned e_machine = elf_elfheader (abfd)->e_machine;
-
- switch (arch)
- {
- case TAG_CPU_ARC6xx:
- return bfd_mach_arc_arc600;
- case TAG_CPU_ARC7xx:
- return bfd_mach_arc_arc700;
- case TAG_CPU_ARCEM:
- case TAG_CPU_ARCHS:
- return bfd_mach_arc_arcv2;
- default:
- break;
- }
- return (e_machine == EM_ARC_COMPACT)
- ? bfd_mach_arc_arc700 : bfd_mach_arc_arcv2;
-}
-
-/* Set the right machine number for an ARC ELF file. */
-static bfd_boolean
-arc_elf_object_p (bfd * abfd)
-{
- /* Make sure this is initialised, or you'll have the potential of passing
- garbage---or misleading values---into the call to
- bfd_default_set_arch_mach (). */
- unsigned int mach = bfd_mach_arc_arc700;
- unsigned long arch = elf_elfheader (abfd)->e_flags & EF_ARC_MACH_MSK;
- unsigned e_machine = elf_elfheader (abfd)->e_machine;
-
- if (e_machine == EM_ARC_COMPACT || e_machine == EM_ARC_COMPACT2)
- {
- switch (arch)
- {
- case E_ARC_MACH_ARC600:
- mach = bfd_mach_arc_arc600;
- break;
- case E_ARC_MACH_ARC601:
- mach = bfd_mach_arc_arc601;
- break;
- case E_ARC_MACH_ARC700:
- mach = bfd_mach_arc_arc700;
- break;
- case EF_ARC_CPU_ARCV2HS:
- case EF_ARC_CPU_ARCV2EM:
- mach = bfd_mach_arc_arcv2;
- break;
- default:
- mach = bfd_arc_get_mach_from_attributes (abfd);
- break;
- }
- }
- else
- {
- if (e_machine == EM_ARC)
- {
- _bfd_error_handler
- (_("error: the ARC4 architecture is no longer supported"));
- return FALSE;
- }
- else
- {
- _bfd_error_handler
- (_("warning: unset or old architecture flags; "
- "use default machine"));
- }
- }
-
- return bfd_default_set_arch_mach (abfd, bfd_arch_arc, mach);
-}
-
-/* The final processing done just before writing out an ARC ELF object file.
- This gets the ARC architecture right based on the machine number. */
-
-static bfd_boolean
-arc_elf_final_write_processing (bfd *abfd)
-{
- unsigned long emf;
- int osver = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
- Tag_ARC_ABI_osver);
- flagword e_flags = elf_elfheader (abfd)->e_flags & ~EF_ARC_OSABI_MSK;
-
- switch (bfd_get_mach (abfd))
- {
- case bfd_mach_arc_arcv2:
- emf = EM_ARC_COMPACT2;
- break;
- default:
- emf = EM_ARC_COMPACT;
- break;
- }
-
- elf_elfheader (abfd)->e_machine = emf;
-
- /* Record whatever is the current syscall ABI version. */
- if (osver)
- e_flags |= ((osver & 0x0f) << 8);
- else
- e_flags |= E_ARC_OSABI_V3;
-
- elf_elfheader (abfd)->e_flags |= e_flags;
- return _bfd_elf_final_write_processing (abfd);
-}
-
-#ifdef ARC_ENABLE_DEBUG
-#define DEBUG_ARC_RELOC(A) debug_arc_reloc (A)
-
-static void
-debug_arc_reloc (struct arc_relocation_data reloc_data)
-{
- ARC_DEBUG ("Reloc type=%s, should_relocate = %s\n",
- reloc_data.howto->name,
- reloc_data.should_relocate ? "true" : "false");
- ARC_DEBUG (" offset = 0x%x, addend = 0x%x\n",
- (unsigned int) reloc_data.reloc_offset,
- (unsigned int) reloc_data.reloc_addend);
- ARC_DEBUG (" Symbol:\n");
- ARC_DEBUG (" value = 0x%08x\n",
- (unsigned int) reloc_data.sym_value);
- if (reloc_data.sym_section != NULL)
- {
- ARC_DEBUG (" Symbol Section:\n");
- ARC_DEBUG (" section name = %s, output_offset 0x%08x",
- reloc_data.sym_section->name,
- (unsigned int) reloc_data.sym_section->output_offset);
- if (reloc_data.sym_section->output_section != NULL)
- ARC_DEBUG (", output_section->vma = 0x%08x",
- ((unsigned int) reloc_data.sym_section->output_section->vma));
- ARC_DEBUG ("\n");
- if (reloc_data.sym_section->owner
- && reloc_data.sym_section->owner->filename)
- ARC_DEBUG (" file: %s\n", reloc_data.sym_section->owner->filename);
- }
- else
- {
- ARC_DEBUG (" symbol section is NULL\n");
- }
-
- ARC_DEBUG (" Input_section:\n");
- if (reloc_data.input_section != NULL)
- {
- ARC_DEBUG (" section name = %s, output_offset 0x%08x, output_section->vma = 0x%08x\n",
- reloc_data.input_section->name,
- (unsigned int) reloc_data.input_section->output_offset,
- (unsigned int) reloc_data.input_section->output_section->vma);
- ARC_DEBUG (" changed_address = 0x%08x\n",
- (unsigned int) (reloc_data.input_section->output_section->vma
- + reloc_data.input_section->output_offset
- + reloc_data.reloc_offset));
- ARC_DEBUG (" file: %s\n", reloc_data.input_section->owner->filename);
- }
- else
- {
- ARC_DEBUG (" input section is NULL\n");
- }
-}
-#else
-#define DEBUG_ARC_RELOC(A)
-#endif /* ARC_ENABLE_DEBUG */
-
-static bfd_vma
-middle_endian_convert (bfd_vma insn, bfd_boolean do_it)
-{
- if (do_it)
- {
- insn
- = ((insn & 0xffff0000) >> 16)
- | ((insn & 0xffff) << 16);
- }
- return insn;
-}
-
-/* This function is called for relocations that are otherwise marked as NOT
- requiring overflow checks. In here we perform non-standard checks of
- the relocation value. */
-
-static inline bfd_reloc_status_type
-arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
- bfd_signed_vma relocation,
- struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
- switch (reloc_data.howto->type)
- {
- case R_ARC_NPS_CMEM16:
- if (((relocation >> 16) & 0xffff) != NPS_CMEM_HIGH_VALUE)
- {
- if (reloc_data.reloc_addend == 0)
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB(%pA+%#" PRIx64 "): CMEM relocation to `%s' is invalid, "
- "16 MSB should be %#x (value is %#" PRIx64 ")"),
- reloc_data.input_section->owner,
- reloc_data.input_section,
- (uint64_t) reloc_data.reloc_offset,
- reloc_data.symbol_name,
- NPS_CMEM_HIGH_VALUE,
- (uint64_t) relocation);
- else
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB(%pA+%#" PRIx64 "): CMEM relocation to `%s+%#" PRIx64
- "' is invalid, 16 MSB should be %#x (value is %#" PRIx64 ")"),
- reloc_data.input_section->owner,
- reloc_data.input_section,
- (uint64_t) reloc_data.reloc_offset,
- reloc_data.symbol_name,
- (uint64_t) reloc_data.reloc_addend,
- NPS_CMEM_HIGH_VALUE,
- (uint64_t) relocation);
- return bfd_reloc_overflow;
- }
- break;
-
- default:
- break;
- }
-
- return bfd_reloc_ok;
-}
-
-#define ME(reloc) (reloc)
-
-#define IS_ME(FORMULA,BFD) ((strstr (FORMULA, "ME") != NULL) \
- && (!bfd_big_endian (BFD)))
-
-#define S ((bfd_signed_vma) (reloc_data.sym_value \
- + (reloc_data.sym_section->output_section != NULL ? \
- (reloc_data.sym_section->output_offset \
- + reloc_data.sym_section->output_section->vma) : 0)))
-#define L ((bfd_signed_vma) (reloc_data.sym_value \
- + (reloc_data.sym_section->output_section != NULL ? \
- (reloc_data.sym_section->output_offset \
- + reloc_data.sym_section->output_section->vma) : 0)))
-#define A (reloc_data.reloc_addend)
-#define B (0)
-#define G (reloc_data.got_offset_value)
-#define GOT (reloc_data.got_symbol_vma)
-#define GOT_BEGIN (htab->sgot->output_section->vma)
-
-#define MES (0)
- /* P: relative offset to PCL The offset should be to the
- current location aligned to 32 bits. */
-#define P ((bfd_signed_vma) ( \
- ( \
- (reloc_data.input_section->output_section != NULL ? \
- reloc_data.input_section->output_section->vma : 0) \
- + reloc_data.input_section->output_offset \
- + (reloc_data.reloc_offset - (bitsize >= 32 ? 4 : 0))) \
- & ~0x3))
-#define PDATA ((bfd_signed_vma) ( \
- (reloc_data.input_section->output_section->vma \
- + reloc_data.input_section->output_offset \
- + (reloc_data.reloc_offset))))
-#define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
- + reloc_data.sym_section->output_offset)
-#define FINAL_SECTSTART \
- (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
-#define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
-#define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
-#define TLS_REL (bfd_signed_vma) \
- ((elf_hash_table (info))->tls_sec->output_section->vma)
-#define TLS_TBSS (align_power(TCB_SIZE, \
- reloc_data.sym_section->alignment_power))
-
-#define none (0)
-
-#ifdef ARC_ENABLE_DEBUG
-#define PRINT_DEBUG_RELOC_INFO_BEFORE(FORMULA, TYPE) \
- do \
- { \
- asection *sym_section = reloc_data.sym_section; \
- asection *input_section = reloc_data.input_section; \
- ARC_DEBUG ("RELOC_TYPE = " TYPE "\n"); \
- ARC_DEBUG ("FORMULA = " FORMULA "\n"); \
- ARC_DEBUG ("S = %#lx\n", S); \
- ARC_DEBUG ("A = %#lx\n", A); \
- ARC_DEBUG ("L = %lx\n", L); \
- if (sym_section->output_section != NULL) \
- ARC_DEBUG ("symbol_section->vma = %#lx\n", \
- sym_section->output_section->vma \
- + sym_section->output_offset); \
- else \
- ARC_DEBUG ("symbol_section->vma = NULL\n"); \
- if (input_section->output_section != NULL) \
- ARC_DEBUG ("input_section->vma = %#lx\n", \
- input_section->output_section->vma \
- + input_section->output_offset); \
- else \
- ARC_DEBUG ("input_section->vma = NULL\n"); \
- ARC_DEBUG ("PCL = %#lx\n", P); \
- ARC_DEBUG ("P = %#lx\n", P); \
- ARC_DEBUG ("G = %#lx\n", G); \
- ARC_DEBUG ("SDA_OFFSET = %#lx\n", _SDA_BASE_); \
- ARC_DEBUG ("SDA_SET = %d\n", reloc_data.sdata_begin_symbol_vma_set); \
- ARC_DEBUG ("GOT_OFFSET = %#lx\n", GOT); \
- ARC_DEBUG ("relocation = %#08lx\n", relocation); \
- ARC_DEBUG ("before = %#08x\n", (unsigned) insn); \
- ARC_DEBUG ("data = %08x (%u) (%d)\n", (unsigned) relocation, \
- (unsigned) relocation, (int) relocation); \
- } \
- while (0)
-
-#define PRINT_DEBUG_RELOC_INFO_AFTER \
- do \
- { \
- ARC_DEBUG ("after = 0x%08x\n", (unsigned int) insn); \
- } \
- while (0)
-
-#else
-
-#define PRINT_DEBUG_RELOC_INFO_BEFORE(...)
-#define PRINT_DEBUG_RELOC_INFO_AFTER
-
-#endif /* ARC_ENABLE_DEBUG */
-
-#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
- case R_##TYPE: \
- { \
- bfd_signed_vma bitsize ATTRIBUTE_UNUSED = BITSIZE; \
- relocation = FORMULA ; \
- PRINT_DEBUG_RELOC_INFO_BEFORE (#FORMULA, #TYPE); \
- insn = middle_endian_convert (insn, IS_ME (#FORMULA, abfd)); \
- insn = (* get_replace_function (abfd, TYPE)) (insn, relocation); \
- insn = middle_endian_convert (insn, IS_ME (#FORMULA, abfd)); \
- PRINT_DEBUG_RELOC_INFO_AFTER; \
- } \
- break;
-
-static bfd_reloc_status_type
-arc_do_relocation (bfd_byte * contents,
- struct arc_relocation_data reloc_data,
- struct bfd_link_info *info)
-{
- bfd_signed_vma relocation = 0;
- bfd_vma insn;
- bfd_vma orig_insn ATTRIBUTE_UNUSED;
- bfd * abfd = reloc_data.input_section->owner;
- struct elf_link_hash_table *htab ATTRIBUTE_UNUSED = elf_hash_table (info);
- bfd_reloc_status_type flag;
-
- if (!reloc_data.should_relocate)
- return bfd_reloc_ok;
-
- switch (reloc_data.howto->size)
- {
- case 2:
- insn = arc_bfd_get_32 (abfd,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- case 1:
- insn = arc_bfd_get_16 (abfd,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- case 0:
- insn = arc_bfd_get_8 (abfd,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- default:
- insn = 0;
- BFD_ASSERT (0);
- break;
- }
-
- orig_insn = insn;
-
- switch (reloc_data.howto->type)
- {
-#include "elf/arc-reloc.def"
-
- default:
- BFD_ASSERT (0);
- break;
- }
-
- /* Check for relocation overflow. */
- if (reloc_data.howto->complain_on_overflow != complain_overflow_dont)
- flag = bfd_check_overflow (reloc_data.howto->complain_on_overflow,
- reloc_data.howto->bitsize,
- reloc_data.howto->rightshift,
- bfd_arch_bits_per_address (abfd),
- relocation);
- else
- flag = arc_special_overflow_checks (reloc_data, relocation, info);
-
- if (flag != bfd_reloc_ok)
- {
- ARC_DEBUG ("Relocation overflows !\n");
- DEBUG_ARC_RELOC (reloc_data);
- ARC_DEBUG ("Relocation value = signed -> %d, unsigned -> %u"
- ", hex -> (0x%08x)\n",
- (int) relocation, (unsigned) relocation, (int) relocation);
-
- return flag;
- }
-
- /* Write updated instruction back to memory. */
- switch (reloc_data.howto->size)
- {
- case 2:
- arc_bfd_put_32 (abfd, insn,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- case 1:
- arc_bfd_put_16 (abfd, insn,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- case 0:
- arc_bfd_put_8 (abfd, insn,
- contents + reloc_data.reloc_offset,
- reloc_data.input_section);
- break;
- default:
- ARC_DEBUG ("size = %d\n", reloc_data.howto->size);
- BFD_ASSERT (0);
- break;
- }
-
- return bfd_reloc_ok;
-}
-#undef S
-#undef A
-#undef B
-#undef G
-#undef GOT
-#undef L
-#undef MES
-#undef P
-#undef SECTSTAR
-#undef SECTSTART
-#undef JLI
-#undef _SDA_BASE_
-#undef none
-
-#undef ARC_RELOC_HOWTO
-
-
-/* Relocate an arc ELF section.
- Function : elf_arc_relocate_section
- Brief : Relocate an arc section, by handling all the relocations
- appearing in that section.
- Args : output_bfd : The bfd being written to.
- info : Link information.
- input_bfd : The input bfd.
- input_section : The section being relocated.
- contents : contents of the section being relocated.
- relocs : List of relocations in the section.
- local_syms : is a pointer to the swapped in local symbols.
- local_section : is an array giving the section in the input file
- corresponding to the st_shndx field of each
- local symbol. */
-static bfd_boolean
-elf_arc_relocate_section (bfd * output_bfd,
- struct bfd_link_info * info,
- bfd * input_bfd,
- asection * input_section,
- bfd_byte * contents,
- Elf_Internal_Rela * relocs,
- Elf_Internal_Sym * local_syms,
- asection ** local_sections)
-{
- Elf_Internal_Shdr * symtab_hdr;
- struct elf_link_hash_entry ** sym_hashes;
- Elf_Internal_Rela * rel;
- Elf_Internal_Rela * wrel;
- Elf_Internal_Rela * relend;
- struct elf_link_hash_table * htab = elf_hash_table (info);
-
- symtab_hdr = &((elf_tdata (input_bfd))->symtab_hdr);
- sym_hashes = elf_sym_hashes (input_bfd);
-
- rel = wrel = relocs;
- relend = relocs + input_section->reloc_count;
- for (; rel < relend; wrel++, rel++)
- {
- enum elf_arc_reloc_type r_type;
- reloc_howto_type * howto;
- unsigned long r_symndx;
- struct elf_link_hash_entry * h;
- Elf_Internal_Sym * sym;
- asection * sec;
- struct elf_link_hash_entry * h2;
- const char * msg;
- bfd_boolean unresolved_reloc = FALSE;
-
- struct arc_relocation_data reloc_data =
- {
- .reloc_offset = 0,
- .reloc_addend = 0,
- .got_offset_value = 0,
- .sym_value = 0,
- .sym_section = NULL,
- .howto = NULL,
- .input_section = NULL,
- .sdata_begin_symbol_vma = 0,
- .sdata_begin_symbol_vma_set = FALSE,
- .got_symbol_vma = 0,
- .should_relocate = FALSE
- };
-
- r_type = ELF32_R_TYPE (rel->r_info);
-
- if (r_type >= (int) R_ARC_max)
- {
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
- howto = arc_elf_howto (r_type);
-
- r_symndx = ELF32_R_SYM (rel->r_info);
-
- /* If we are generating another .o file and the symbol in not
- local, skip this relocation. */
- if (bfd_link_relocatable (info))
- {
- /* This is a relocateable link. We don't have to change
- anything, unless the reloc is against a section symbol,
- in which case we have to adjust according to where the
- section symbol winds up in the output section. */
-
- /* Checks if this is a local symbol and thus the reloc
- might (will??) be against a section symbol. */
- if (r_symndx < symtab_hdr->sh_info)
- {
- sym = local_syms + r_symndx;
- if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
- {
- sec = local_sections[r_symndx];
-
- /* For RELA relocs. Just adjust the addend
- value in the relocation entry. */
- rel->r_addend += sec->output_offset + sym->st_value;
-
- ARC_DEBUG ("local symbols reloc (section=%d %s) seen in %s\n",
- (int) r_symndx, local_sections[r_symndx]->name,
- __PRETTY_FUNCTION__);
- }
- }
- }
-
- h2 = elf_link_hash_lookup (elf_hash_table (info), "__SDATA_BEGIN__",
- FALSE, FALSE, TRUE);
-
- if (!reloc_data.sdata_begin_symbol_vma_set
- && h2 != NULL && h2->root.type != bfd_link_hash_undefined
- && h2->root.u.def.section->output_section != NULL)
- /* TODO: Verify this condition. */
- {
- reloc_data.sdata_begin_symbol_vma =
- (h2->root.u.def.value
- + h2->root.u.def.section->output_section->vma);
- reloc_data.sdata_begin_symbol_vma_set = TRUE;
- }
-
- reloc_data.input_section = input_section;
- reloc_data.howto = howto;
- reloc_data.reloc_offset = rel->r_offset;
- reloc_data.reloc_addend = rel->r_addend;
-
- /* This is a final link. */
- h = NULL;
- sym = NULL;
- sec = NULL;
-
- if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
- {
- sym = local_syms + r_symndx;
- sec = local_sections[r_symndx];
- }
- else
- {
- bfd_boolean warned, ignored;
- bfd_vma relocation ATTRIBUTE_UNUSED;
-
- RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
- r_symndx, symtab_hdr, sym_hashes,
- h, sec, relocation,
- unresolved_reloc, warned, ignored);
-
- /* TODO: This code is repeated from below. We should
- clean it and remove duplications.
- Sec is used check for discarded sections.
- Need to redesign code below. */
-
- /* Get the symbol's entry in the symtab. */
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* If we have encountered a definition for this symbol. */
- if (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- {
- reloc_data.sym_value = h->root.u.def.value;
- sec = h->root.u.def.section;
- }
- }
-
- /* Clean relocs for symbols in discarded sections. */
- if (sec != NULL && discarded_section (sec))
- {
- _bfd_clear_contents (howto, input_bfd, input_section,
- contents, rel->r_offset);
- rel->r_info = 0;
- rel->r_addend = 0;
-
- /* For ld -r, remove relocations in debug sections against
- sections defined in discarded sections. Not done for
- eh_frame editing code expects to be present. */
- if (bfd_link_relocatable (info)
- && (input_section->flags & SEC_DEBUGGING))
- wrel--;
-
- continue;
- }
-
- if (bfd_link_relocatable (info))
- {
- if (wrel != rel)
- *wrel = *rel;
- continue;
- }
-
- if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
- {
- reloc_data.sym_value = sym->st_value;
- reloc_data.sym_section = sec;
- reloc_data.symbol_name =
- bfd_elf_string_from_elf_section (input_bfd,
- symtab_hdr->sh_link,
- sym->st_name);
-
- /* Mergeable section handling. */
- if ((sec->flags & SEC_MERGE)
- && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
- {
- asection *msec;
- msec = sec;
- rel->r_addend = _bfd_elf_rel_local_sym (output_bfd, sym,
- &msec, rel->r_addend);
- rel->r_addend -= (sec->output_section->vma
- + sec->output_offset
- + sym->st_value);
- rel->r_addend += msec->output_section->vma + msec->output_offset;
-
- reloc_data.reloc_addend = rel->r_addend;
- }
-
- BFD_ASSERT (htab->sgot != NULL || !is_reloc_for_GOT (howto));
- if (htab->sgot != NULL)
- reloc_data.got_symbol_vma = htab->sgot->output_section->vma
- + htab->sgot->output_offset;
-
- reloc_data.should_relocate = TRUE;
- }
- else /* Global symbol. */
- {
- /* FIXME: We should use the RELOC_FOR_GLOBAL_SYMBOL macro
- (defined in elf-bfd.h) here. */
-
- /* Get the symbol's entry in the symtab. */
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- {
- struct elf_arc_link_hash_entry *ah_old =
- (struct elf_arc_link_hash_entry *) h;
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- struct elf_arc_link_hash_entry *ah =
- (struct elf_arc_link_hash_entry *) h;
-
- if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents)
- ah->got_ents = ah_old->got_ents;
- }
-
- /* TODO: Need to validate what was the intention. */
- /* BFD_ASSERT ((h->dynindx == -1) || (h->forced_local != 0)); */
- reloc_data.symbol_name = h->root.root.string;
-
- /* If we have encountered a definition for this symbol. */
- if (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- {
- reloc_data.sym_value = h->root.u.def.value;
- reloc_data.sym_section = h->root.u.def.section;
-
- reloc_data.should_relocate = TRUE;
-
- if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
- {
- struct elf_arc_link_hash_entry *ah =
- (struct elf_arc_link_hash_entry *) h;
- /* TODO: Change it to use arc_do_relocation with
- ARC_32 reloc. Try to use ADD_RELA macro. */
- bfd_vma relocation =
- reloc_data.sym_value + reloc_data.reloc_addend
- + (reloc_data.sym_section->output_section != NULL ?
- (reloc_data.sym_section->output_offset
- + reloc_data.sym_section->output_section->vma)
- : 0);
-
- BFD_ASSERT (ah->got_ents);
- bfd_vma got_offset = ah->got_ents->offset;
- bfd_put_32 (output_bfd, relocation,
- htab->sgot->contents + got_offset);
- }
- if (is_reloc_for_PLT (howto) && h->plt.offset != (bfd_vma) -1)
- {
- /* TODO: This is repeated up here. */
- reloc_data.sym_value = h->plt.offset;
- reloc_data.sym_section = htab->splt;
- }
- }
- else if (h->root.type == bfd_link_hash_undefweak)
- {
- /* Is weak symbol and has no definition. */
- if (is_reloc_for_GOT (howto))
- {
- reloc_data.sym_value = h->root.u.def.value;
- reloc_data.sym_section = htab->sgot;
- reloc_data.should_relocate = TRUE;
- }
- else if (is_reloc_for_PLT (howto)
- && h->plt.offset != (bfd_vma) -1)
- {
- /* TODO: This is repeated up here. */
- reloc_data.sym_value = h->plt.offset;
- reloc_data.sym_section = htab->splt;
- reloc_data.should_relocate = TRUE;
- }
- else
- continue;
- }
- else
- {
- if (is_reloc_for_GOT (howto))
- {
- reloc_data.sym_value = h->root.u.def.value;
- reloc_data.sym_section = htab->sgot;
-
- reloc_data.should_relocate = TRUE;
- }
- else if (is_reloc_for_PLT (howto))
- {
- /* Fail if it is linking for PIE and the symbol is
- undefined. */
- if (bfd_link_executable (info))
- (*info->callbacks->undefined_symbol)
- (info, h->root.root.string, input_bfd, input_section,
- rel->r_offset, TRUE);
- reloc_data.sym_value = h->plt.offset;
- reloc_data.sym_section = htab->splt;
-
- reloc_data.should_relocate = TRUE;
- }
- else if (!bfd_link_pic (info) || bfd_link_executable (info))
- (*info->callbacks->undefined_symbol)
- (info, h->root.root.string, input_bfd, input_section,
- rel->r_offset, TRUE);
- }
-
- BFD_ASSERT (htab->sgot != NULL || !is_reloc_for_GOT (howto));
- if (htab->sgot != NULL)
- reloc_data.got_symbol_vma = htab->sgot->output_section->vma
- + htab->sgot->output_offset;
- }
-
- if ((is_reloc_for_GOT (howto)
- || is_reloc_for_TLS (howto)))
- {
- reloc_data.should_relocate = TRUE;
-
- struct got_entry **list
- = get_got_entry_list_for_symbol (input_bfd, r_symndx, h);
-
- reloc_data.got_offset_value
- = relocate_fix_got_relocs_for_got_info (list,
- tls_type_for_reloc (howto),
- info,
- output_bfd,
- r_symndx,
- local_syms,
- local_sections,
- h,
- &reloc_data);
-
- if (h == NULL)
- {
- create_got_dynrelocs_for_single_entry (
- got_entry_for_type (list,
- arc_got_entry_type_for_reloc (howto)),
- output_bfd, info, NULL);
- }
- }
-
-
-#define IS_ARC_PCREL_TYPE(TYPE) \
- ( (TYPE == R_ARC_PC32) \
- || (TYPE == R_ARC_32_PCREL))
-
- switch (r_type)
- {
- case R_ARC_32:
- case R_ARC_32_ME:
- case R_ARC_PC32:
- case R_ARC_32_PCREL:
- if (bfd_link_pic (info)
- && (input_section->flags & SEC_ALLOC) != 0
- && (!IS_ARC_PCREL_TYPE (r_type)
- || (h != NULL
- && h->dynindx != -1
- && !h->def_regular
- && (!info->symbolic || !h->def_regular))))
- {
- Elf_Internal_Rela outrel;
- bfd_byte *loc;
- bfd_boolean skip = FALSE;
- bfd_boolean relocate = FALSE;
- asection *sreloc = _bfd_elf_get_dynamic_reloc_section
- (input_bfd, input_section,
- /*RELA*/ TRUE);
-
- BFD_ASSERT (sreloc != NULL);
-
- outrel.r_offset = _bfd_elf_section_offset (output_bfd,
- info,
- input_section,
- rel->r_offset);
-
- if (outrel.r_offset == (bfd_vma) -1)
- skip = TRUE;
-
- outrel.r_addend = rel->r_addend;
- outrel.r_offset += (input_section->output_section->vma
- + input_section->output_offset);
-
- if (skip)
- {
- memset (&outrel, 0, sizeof outrel);
- relocate = FALSE;
- }
- else if (h != NULL
- && h->dynindx != -1
- && (IS_ARC_PCREL_TYPE (r_type)
- || !(bfd_link_executable (info)
- || SYMBOLIC_BIND (info, h))
- || ! h->def_regular))
- {
- BFD_ASSERT (h != NULL);
- if ((input_section->flags & SEC_ALLOC) != 0)
- relocate = FALSE;
- else
- relocate = TRUE;
-
- BFD_ASSERT (h->dynindx != -1);
- outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
- }
- else
- {
- /* Handle local symbols, they either do not have a
- global hash table entry (h == NULL), or are
- forced local due to a version script
- (h->forced_local), or the third condition is
- legacy, it appears to say something like, for
- links where we are pre-binding the symbols, or
- there's not an entry for this symbol in the
- dynamic symbol table, and it's a regular symbol
- not defined in a shared object, then treat the
- symbol as local, resolve it now. */
- relocate = TRUE;
- /* outrel.r_addend = 0; */
- outrel.r_info = ELF32_R_INFO (0, R_ARC_RELATIVE);
- }
-
- BFD_ASSERT (sreloc->contents != 0);
-
- loc = sreloc->contents;
- loc += sreloc->reloc_count * sizeof (Elf32_External_Rela);
- sreloc->reloc_count += 1;
-
- bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-
- if (!relocate)
- continue;
- }
- break;
- default:
- break;
- }
-
- if (is_reloc_SDA_relative (howto)
- && !reloc_data.sdata_begin_symbol_vma_set)
- {
- _bfd_error_handler
- ("error: linker symbol __SDATA_BEGIN__ not found");
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
-
- DEBUG_ARC_RELOC (reloc_data);
-
- /* Make sure we have with a dynamic linker. In case of GOT and PLT
- the sym_section should point to .got or .plt respectively. */
- if ((is_reloc_for_GOT (howto) || is_reloc_for_PLT (howto))
- && reloc_data.sym_section == NULL)
- {
- _bfd_error_handler
- (_("GOT and PLT relocations cannot be fixed with a non dynamic linker"));
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
-
- msg = NULL;
- switch (arc_do_relocation (contents, reloc_data, info))
- {
- case bfd_reloc_ok:
- continue; /* The reloc processing loop. */
-
- case bfd_reloc_overflow:
- (*info->callbacks->reloc_overflow)
- (info, (h ? &h->root : NULL), reloc_data.symbol_name, howto->name, (bfd_vma) 0,
- input_bfd, input_section, rel->r_offset);
- break;
-
- case bfd_reloc_undefined:
- (*info->callbacks->undefined_symbol)
- (info, reloc_data.symbol_name, input_bfd, input_section, rel->r_offset, TRUE);
- break;
-
- case bfd_reloc_other:
- /* xgettext:c-format */
- msg = _("%pB(%pA): warning: unaligned access to symbol '%s' in the small data area");
- break;
-
- case bfd_reloc_outofrange:
- /* xgettext:c-format */
- msg = _("%pB(%pA): internal error: out of range error");
- break;
-
- case bfd_reloc_notsupported:
- /* xgettext:c-format */
- msg = _("%pB(%pA): internal error: unsupported relocation error");
- break;
-
- case bfd_reloc_dangerous:
- /* xgettext:c-format */
- msg = _("%pB(%pA): internal error: dangerous relocation");
- break;
-
- default:
- /* xgettext:c-format */
- msg = _("%pB(%pA): internal error: unknown error");
- break;
- }
-
- if (msg)
- _bfd_error_handler (msg, input_bfd, input_section, reloc_data.symbol_name);
- return FALSE;
- }
-
- return TRUE;
-}
-
-#define elf_arc_hash_table(p) \
- (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
- == ARC_ELF_DATA ? ((struct elf_arc_link_hash_table *) ((p)->hash)) : NULL)
-
-static bfd_boolean
-elf_arc_check_relocs (bfd * abfd,
- struct bfd_link_info * info,
- asection * sec,
- const Elf_Internal_Rela * relocs)
-{
- Elf_Internal_Shdr * symtab_hdr;
- struct elf_link_hash_entry ** sym_hashes;
- const Elf_Internal_Rela * rel;
- const Elf_Internal_Rela * rel_end;
- bfd * dynobj;
- asection * sreloc = NULL;
- struct elf_link_hash_table * htab = elf_hash_table (info);
-
- if (bfd_link_relocatable (info))
- return TRUE;
-
- if (htab->dynobj == NULL)
- htab->dynobj = abfd;
-
- dynobj = (elf_hash_table (info))->dynobj;
- symtab_hdr = &((elf_tdata (abfd))->symtab_hdr);
- sym_hashes = elf_sym_hashes (abfd);
-
- rel_end = relocs + sec->reloc_count;
- for (rel = relocs; rel < rel_end; rel++)
- {
- enum elf_arc_reloc_type r_type;
- reloc_howto_type *howto;
- unsigned long r_symndx;
- struct elf_link_hash_entry *h;
-
- r_type = ELF32_R_TYPE (rel->r_info);
-
- if (r_type >= (int) R_ARC_max)
- {
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
- howto = arc_elf_howto (r_type);
-
- /* Load symbol information. */
- r_symndx = ELF32_R_SYM (rel->r_info);
- if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
- h = NULL;
- else /* Global one. */
- {
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- }
-
-
- switch (r_type)
- {
- case R_ARC_32:
- case R_ARC_32_ME:
- /* During shared library creation, these relocs should not
- appear in a shared library (as memory will be read only
- and the dynamic linker can not resolve these. However
- the error should not occur for e.g. debugging or
- non-readonly sections. */
- if (h != NULL
- && (bfd_link_dll (info) && !bfd_link_pie (info))
- && (sec->flags & SEC_ALLOC) != 0
- && (sec->flags & SEC_READONLY) != 0
- && ((sec->flags & SEC_CODE) != 0
- || (sec->flags & SEC_DEBUGGING) != 0))
- {
- const char *name;
- if (h)
- name = h->root.root.string;
- else
- name = "UNKNOWN";
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB: relocation %s against `%s' can not be used"
- " when making a shared object; recompile with -fPIC"),
- abfd,
- arc_elf_howto (r_type)->name,
- name);
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
-
- /* In some cases we are not setting the 'non_got_ref'
- flag, even though the relocations don't require a GOT
- access. We should extend the testing in this area to
- ensure that no significant cases are being missed. */
- if (h)
- h->non_got_ref = 1;
- /* FALLTHROUGH */
- case R_ARC_PC32:
- case R_ARC_32_PCREL:
- if ((bfd_link_pic (info))
- && ((r_type != R_ARC_PC32 && r_type != R_ARC_32_PCREL)
- || (h != NULL
- && (!info->symbolic || !h->def_regular))))
- {
- if (sreloc == NULL)
- {
- if (info->dynamic
- && ! htab->dynamic_sections_created
- && ! _bfd_elf_link_create_dynamic_sections (abfd, info))
- return FALSE;
- sreloc = _bfd_elf_make_dynamic_reloc_section (sec, dynobj,
- 2, abfd,
- /*rela*/
- TRUE);
-
- if (sreloc == NULL)
- return FALSE;
- }
- sreloc->size += sizeof (Elf32_External_Rela);
-
- }
- default:
- break;
- }
-
- if (is_reloc_for_PLT (howto))
- {
- if (h == NULL)
- continue;
- else
- if (h->forced_local == 0)
- h->needs_plt = 1;
- }
-
- /* Add info to the symbol got_entry_list. */
- if (is_reloc_for_GOT (howto)
- || is_reloc_for_TLS (howto))
- {
- if (bfd_link_dll (info) && !bfd_link_pie (info)
- && (r_type == R_ARC_TLS_LE_32 || r_type == R_ARC_TLS_LE_S9))
- {
- const char *name;
- if (h)
- name = h->root.root.string;
- else
- /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
- name = "UNKNOWN";
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB: relocation %s against `%s' can not be used"
- " when making a shared object; recompile with -fPIC"),
- abfd,
- arc_elf_howto (r_type)->name,
- name);
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
- if (! _bfd_elf_create_got_section (dynobj, info))
- return FALSE;
-
- arc_fill_got_info_for_reloc (
- arc_got_entry_type_for_reloc (howto),
- get_got_entry_list_for_symbol (abfd, r_symndx, h),
- info,
- h);
- }
- }
-
- return TRUE;
-}
-
-#define ELF_DYNAMIC_INTERPRETER "/sbin/ld-uClibc.so"
-
-static struct plt_version_t *
-arc_get_plt_version (struct bfd_link_info *info)
-{
- int i;
-
- for (i = 0; i < 1; i++)
- {
- ARC_DEBUG ("%d: size1 = %d, size2 = %d\n", i,
- (int) plt_versions[i].entry_size,
- (int) plt_versions[i].elem_size);
- }
-
- if (bfd_get_mach (info->output_bfd) == bfd_mach_arc_arcv2)
- {
- if (bfd_link_pic (info))
- return &(plt_versions[ELF_ARCV2_PIC]);
- else
- return &(plt_versions[ELF_ARCV2_ABS]);
- }
- else
- {
- if (bfd_link_pic (info))
- return &(plt_versions[ELF_ARC_PIC]);
- else
- return &(plt_versions[ELF_ARC_ABS]);
- }
-}
-
-static bfd_vma
-add_symbol_to_plt (struct bfd_link_info *info)
-{
- struct elf_link_hash_table *htab = elf_hash_table (info);
- bfd_vma ret;
-
- struct plt_version_t *plt_data = arc_get_plt_version (info);
-
- /* If this is the first .plt entry, make room for the special first
- entry. */
- if (htab->splt->size == 0)
- htab->splt->size += plt_data->entry_size;
-
- ret = htab->splt->size;
-
- htab->splt->size += plt_data->elem_size;
- ARC_DEBUG ("PLT_SIZE = %d\n", (int) htab->splt->size);
-
- htab->sgotplt->size += 4;
- htab->srelplt->size += sizeof (Elf32_External_Rela);
-
- return ret;
-}
-
-#define PLT_DO_RELOCS_FOR_ENTRY(ABFD, DS, RELOCS) \
- plt_do_relocs_for_symbol (ABFD, DS, RELOCS, 0, 0)
-
-static void
-plt_do_relocs_for_symbol (bfd *abfd,
- struct elf_link_hash_table *htab,
- const struct plt_reloc *reloc,
- bfd_vma plt_offset,
- bfd_vma symbol_got_offset)
-{
- while (SYM_ONLY (reloc->symbol) != LAST_RELOC)
- {
- bfd_vma relocation = 0;
-
- switch (SYM_ONLY (reloc->symbol))
- {
- case SGOT:
- relocation
- = htab->sgotplt->output_section->vma
- + htab->sgotplt->output_offset + symbol_got_offset;
- break;
- }
- relocation += reloc->addend;
-
- if (IS_RELATIVE (reloc->symbol))
- {
- bfd_vma reloc_offset = reloc->offset;
- reloc_offset -= (IS_INSN_32 (reloc->symbol)) ? 4 : 0;
- reloc_offset -= (IS_INSN_24 (reloc->symbol)) ? 2 : 0;
-
- relocation -= htab->splt->output_section->vma
- + htab->splt->output_offset
- + plt_offset + reloc_offset;
- }
-
- /* TODO: being ME is not a property of the relocation but of the
- section of which is applying the relocation. */
- if (IS_MIDDLE_ENDIAN (reloc->symbol) && !bfd_big_endian (abfd))
- {
- relocation
- = ((relocation & 0xffff0000) >> 16)
- | ((relocation & 0xffff) << 16);
- }
-
- switch (reloc->size)
- {
- case 32:
- bfd_put_32 (htab->splt->output_section->owner,
- relocation,
- htab->splt->contents + plt_offset + reloc->offset);
- break;
- }
-
- reloc = &(reloc[1]); /* Jump to next relocation. */
- }
-}
-
-static void
-relocate_plt_for_symbol (bfd *output_bfd,
- struct bfd_link_info *info,
- struct elf_link_hash_entry *h)
-{
- struct plt_version_t *plt_data = arc_get_plt_version (info);
- struct elf_link_hash_table *htab = elf_hash_table (info);
-
- bfd_vma plt_index = (h->plt.offset - plt_data->entry_size)
- / plt_data->elem_size;
- bfd_vma got_offset = (plt_index + 3) * 4;
-
- ARC_DEBUG ("arc_info: PLT_OFFSET = %#lx, PLT_ENTRY_VMA = %#lx, \
-GOT_ENTRY_OFFSET = %#lx, GOT_ENTRY_VMA = %#lx, for symbol %s\n",
- (long) h->plt.offset,
- (long) (htab->splt->output_section->vma
- + htab->splt->output_offset
- + h->plt.offset),
- (long) got_offset,
- (long) (htab->sgotplt->output_section->vma
- + htab->sgotplt->output_offset
- + got_offset),
- h->root.root.string);
-
- {
- bfd_vma i = 0;
- uint16_t *ptr = (uint16_t *) plt_data->elem;
-
- for (i = 0; i < plt_data->elem_size/2; i++)
- {
- uint16_t data = ptr[i];
- bfd_put_16 (output_bfd,
- (bfd_vma) data,
- htab->splt->contents + h->plt.offset + (i*2));
- }
- }
-
- plt_do_relocs_for_symbol (output_bfd, htab,
- plt_data->elem_relocs,
- h->plt.offset,
- got_offset);
-
- /* Fill in the entry in the global offset table. */
- bfd_put_32 (output_bfd,
- (bfd_vma) (htab->splt->output_section->vma
- + htab->splt->output_offset),
- htab->sgotplt->contents + got_offset);
-
- /* TODO: Fill in the entry in the .rela.plt section. */
- {
- Elf_Internal_Rela rel;
- bfd_byte *loc;
-
- rel.r_offset = (htab->sgotplt->output_section->vma
- + htab->sgotplt->output_offset
- + got_offset);
- rel.r_addend = 0;
-
- BFD_ASSERT (h->dynindx != -1);
- rel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_JMP_SLOT);
-
- loc = htab->srelplt->contents;
- loc += plt_index * sizeof (Elf32_External_Rela); /* relA */
- bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
- }
-}
-
-static void
-relocate_plt_for_entry (bfd *abfd,
- struct bfd_link_info *info)
-{
- struct plt_version_t *plt_data = arc_get_plt_version (info);
- struct elf_link_hash_table *htab = elf_hash_table (info);
-
- {
- bfd_vma i = 0;
- uint16_t *ptr = (uint16_t *) plt_data->entry;
- for (i = 0; i < plt_data->entry_size/2; i++)
- {
- uint16_t data = ptr[i];
- bfd_put_16 (abfd,
- (bfd_vma) data,
- htab->splt->contents + (i*2));
- }
- }
- PLT_DO_RELOCS_FOR_ENTRY (abfd, htab, plt_data->entry_relocs);
-}
-
-/* Desc : Adjust a symbol defined by a dynamic object and referenced
- by a regular object. The current definition is in some section of
- the dynamic object, but we're not including those sections. We
- have to change the definition to something the rest of the link can
- understand. */
-
-static bfd_boolean
-elf_arc_adjust_dynamic_symbol (struct bfd_link_info *info,
- struct elf_link_hash_entry *h)
-{
- asection *s;
- bfd *dynobj = (elf_hash_table (info))->dynobj;
- struct elf_link_hash_table *htab = elf_hash_table (info);
-
- if (h->type == STT_FUNC
- || h->type == STT_GNU_IFUNC
- || h->needs_plt == 1)
- {
- if (!bfd_link_pic (info) && !h->def_dynamic && !h->ref_dynamic)
- {
- /* This case can occur if we saw a PLT32 reloc in an input
- file, but the symbol was never referred to by a dynamic
- object. In such a case, we don't actually need to build
- a procedure linkage table, and we can just do a PC32
- reloc instead. */
- BFD_ASSERT (h->needs_plt);
- return TRUE;
- }
-
- /* Make sure this symbol is output as a dynamic symbol. */
- if (h->dynindx == -1 && !h->forced_local
- && !bfd_elf_link_record_dynamic_symbol (info, h))
- return FALSE;
-
- if (bfd_link_pic (info)
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
- {
- bfd_vma loc = add_symbol_to_plt (info);
-
- if (bfd_link_executable (info) && !h->def_regular)
- {
- h->root.u.def.section = htab->splt;
- h->root.u.def.value = loc;
- }
- h->plt.offset = loc;
- }
- else
- {
- h->plt.offset = (bfd_vma) -1;
- h->needs_plt = 0;
- }
- return TRUE;
- }
-
- /* If this is a weak symbol, and there is a real definition, the
- processor independent code will have arranged for us to see the
- real definition first, and we can just use the same value. */
- if (h->is_weakalias)
- {
- struct elf_link_hash_entry *def = weakdef (h);
- BFD_ASSERT (def->root.type == bfd_link_hash_defined);
- h->root.u.def.section = def->root.u.def.section;
- h->root.u.def.value = def->root.u.def.value;
- return TRUE;
- }
-
- /* This is a reference to a symbol defined by a dynamic object which
- is not a function. */
-
- /* If we are creating a shared library, we must presume that the
- only references to the symbol are via the global offset table.
- For such cases we need not do anything here; the relocations will
- be handled correctly by relocate_section. */
- if (!bfd_link_executable (info))
- return TRUE;
-
- /* If there are no non-GOT references, we do not need a copy
- relocation. */
- if (!h->non_got_ref)
- return TRUE;
-
- /* If -z nocopyreloc was given, we won't generate them either. */
- if (info->nocopyreloc)
- {
- h->non_got_ref = 0;
- return TRUE;
- }
-
- /* We must allocate the symbol in our .dynbss section, which will
- become part of the .bss section of the executable. There will be
- an entry for this symbol in the .dynsym section. The dynamic
- object will contain position independent code, so all references
- from the dynamic object to this symbol will go through the global
- offset table. The dynamic linker will use the .dynsym entry to
- determine the address it must put in the global offset table, so
- both the dynamic object and the regular object will refer to the
- same memory location for the variable. */
-
- if (htab == NULL)
- return FALSE;
-
- /* We must generate a R_ARC_COPY reloc to tell the dynamic linker to
- copy the initial value out of the dynamic object and into the
- runtime process image. We need to remember the offset into the
- .rela.bss section we are going to use. */
- if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
- {
- struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
-
- BFD_ASSERT (arc_htab->elf.srelbss != NULL);
- arc_htab->elf.srelbss->size += sizeof (Elf32_External_Rela);
- h->needs_copy = 1;
- }
-
- /* TODO: Move this also to arc_hash_table. */
- s = bfd_get_section_by_name (dynobj, ".dynbss");
- BFD_ASSERT (s != NULL);
-
- return _bfd_elf_adjust_dynamic_copy (info, h, s);
-}
-
-/* Function : elf_arc_finish_dynamic_symbol
- Brief : Finish up dynamic symbol handling. We set the
- contents of various dynamic sections here.
- Args : output_bfd :
- info :
- h :
- sym :
- Returns : True/False as the return status. */
-
-static bfd_boolean
-elf_arc_finish_dynamic_symbol (bfd * output_bfd,
- struct bfd_link_info *info,
- struct elf_link_hash_entry *h,
- Elf_Internal_Sym * sym)
-{
- if (h->plt.offset != (bfd_vma) -1)
- {
- relocate_plt_for_symbol (output_bfd, info, h);
-
- if (!h->def_regular)
- {
- /* Mark the symbol as undefined, rather than as defined in
- the .plt section. Leave the value alone. */
- sym->st_shndx = SHN_UNDEF;
- }
- }
-
-
- /* This function traverses list of GOT entries and
- create respective dynamic relocs. */
- /* TODO: Make function to get list and not access the list directly. */
- /* TODO: Move function to relocate_section create this relocs eagerly. */
- struct elf_arc_link_hash_entry *ah =
- (struct elf_arc_link_hash_entry *) h;
- create_got_dynrelocs_for_got_info (&ah->got_ents,
- output_bfd,
- info,
- h);
-
- if (h->needs_copy)
- {
- struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
-
- if (arc_htab == NULL)
- return FALSE;
-
- if (h->dynindx == -1
- || (h->root.type != bfd_link_hash_defined
- && h->root.type != bfd_link_hash_defweak)
- || arc_htab->elf.srelbss == NULL)
- abort ();
-
- bfd_vma rel_offset = (h->root.u.def.value
- + h->root.u.def.section->output_section->vma
- + h->root.u.def.section->output_offset);
-
- bfd_byte * loc = arc_htab->elf.srelbss->contents
- + (arc_htab->elf.srelbss->reloc_count * sizeof (Elf32_External_Rela));
- arc_htab->elf.srelbss->reloc_count++;
-
- Elf_Internal_Rela rel;
- rel.r_addend = 0;
- rel.r_offset = rel_offset;
-
- BFD_ASSERT (h->dynindx != -1);
- rel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_COPY);
-
- bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
- }
-
- /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */
- if (strcmp (h->root.root.string, "_DYNAMIC") == 0
- || strcmp (h->root.root.string, "__DYNAMIC") == 0
- || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
- sym->st_shndx = SHN_ABS;
-
- return TRUE;
-}
-
-#define GET_SYMBOL_OR_SECTION(TAG, SYMBOL, SECTION) \
- case TAG: \
- if (SYMBOL != NULL) \
- h = elf_link_hash_lookup (elf_hash_table (info), \
- SYMBOL, FALSE, FALSE, TRUE); \
- else if (SECTION != NULL) \
- s = bfd_get_linker_section (dynobj, SECTION); \
- break;
-
-
-struct obfd_info_group {
- bfd *output_bfd;
- struct bfd_link_info *info;
-};
-
-static bfd_boolean
-arc_create_forced_local_got_entries_for_tls (struct bfd_hash_entry *bh,
- void *data)
-{
- struct elf_arc_link_hash_entry * h =
- (struct elf_arc_link_hash_entry *) bh;
- struct obfd_info_group *tmp = (struct obfd_info_group *) data;
-
- if (h->got_ents != NULL)
- {
- BFD_ASSERT (h);
-
- struct got_entry *list = h->got_ents;
-
- while (list != NULL)
- {
- create_got_dynrelocs_for_single_entry (list, tmp->output_bfd,
- tmp->info,
- (struct elf_link_hash_entry *) h);
- list = list->next;
- }
- }
-
- return TRUE;
-}
-
-
-/* Function : elf_arc_finish_dynamic_sections
- Brief : Finish up the dynamic sections handling.
- Args : output_bfd :
- info :
- h :
- sym :
- Returns : True/False as the return status. */
-
-static bfd_boolean
-elf_arc_finish_dynamic_sections (bfd * output_bfd,
- struct bfd_link_info *info)
-{
- struct elf_link_hash_table *htab = elf_hash_table (info);
- bfd *dynobj = (elf_hash_table (info))->dynobj;
- asection *sdyn = bfd_get_linker_section (dynobj, ".dynamic");
-
- if (sdyn)
- {
- Elf32_External_Dyn *dyncon, *dynconend;
-
- dyncon = (Elf32_External_Dyn *) sdyn->contents;
- dynconend
- = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
- for (; dyncon < dynconend; dyncon++)
- {
- Elf_Internal_Dyn internal_dyn;
- bfd_boolean do_it = FALSE;
-
- struct elf_link_hash_entry *h = NULL;
- asection *s = NULL;
-
- bfd_elf32_swap_dyn_in (dynobj, dyncon, &internal_dyn);
-
- switch (internal_dyn.d_tag)
- {
- GET_SYMBOL_OR_SECTION (DT_INIT, info->init_function, NULL)
- GET_SYMBOL_OR_SECTION (DT_FINI, info->fini_function, NULL)
- GET_SYMBOL_OR_SECTION (DT_PLTGOT, NULL, ".plt")
- GET_SYMBOL_OR_SECTION (DT_JMPREL, NULL, ".rela.plt")
- GET_SYMBOL_OR_SECTION (DT_PLTRELSZ, NULL, ".rela.plt")
- GET_SYMBOL_OR_SECTION (DT_VERSYM, NULL, ".gnu.version")
- GET_SYMBOL_OR_SECTION (DT_VERDEF, NULL, ".gnu.version_d")
- GET_SYMBOL_OR_SECTION (DT_VERNEED, NULL, ".gnu.version_r")
- default:
- break;
- }
-
- /* In case the dynamic symbols should be updated with a symbol. */
- if (h != NULL
- && (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak))
- {
- asection *asec_ptr;
-
- internal_dyn.d_un.d_val = h->root.u.def.value;
- asec_ptr = h->root.u.def.section;
- if (asec_ptr->output_section != NULL)
- {
- internal_dyn.d_un.d_val +=
- (asec_ptr->output_section->vma
- + asec_ptr->output_offset);
- }
- else
- {
- /* The symbol is imported from another shared
- library and does not apply to this one. */
- internal_dyn.d_un.d_val = 0;
- }
- do_it = TRUE;
- }
- else if (s != NULL) /* With a section information. */
- {
- switch (internal_dyn.d_tag)
- {
- case DT_PLTGOT:
- case DT_JMPREL:
- case DT_VERSYM:
- case DT_VERDEF:
- case DT_VERNEED:
- internal_dyn.d_un.d_ptr = (s->output_section->vma
- + s->output_offset);
- do_it = TRUE;
- break;
-
- case DT_PLTRELSZ:
- internal_dyn.d_un.d_val = s->size;
- do_it = TRUE;
- break;
-
- default:
- break;
- }
- }
-
- if (do_it)
- bfd_elf32_swap_dyn_out (output_bfd, &internal_dyn, dyncon);
- }
-
- if (htab->splt->size > 0)
- {
- relocate_plt_for_entry (output_bfd, info);
- }
-
- /* TODO: Validate this. */
- if (htab->srelplt->output_section != bfd_abs_section_ptr)
- elf_section_data (htab->srelplt->output_section)
- ->this_hdr.sh_entsize = 12;
- }
-
- /* Fill in the first three entries in the global offset table. */
- if (htab->sgot)
- {
- struct elf_link_hash_entry *h;
- h = elf_link_hash_lookup (elf_hash_table (info), "_GLOBAL_OFFSET_TABLE_",
- FALSE, FALSE, TRUE);
-
- if (h != NULL && h->root.type != bfd_link_hash_undefined
- && h->root.u.def.section != NULL)
- {
- asection *sec = h->root.u.def.section;
-
- if (sdyn == NULL)
- bfd_put_32 (output_bfd, (bfd_vma) 0,
- sec->contents);
- else
- bfd_put_32 (output_bfd,
- sdyn->output_section->vma + sdyn->output_offset,
- sec->contents);
- bfd_put_32 (output_bfd, (bfd_vma) 0, sec->contents + 4);
- bfd_put_32 (output_bfd, (bfd_vma) 0, sec->contents + 8);
- }
- }
-
- struct obfd_info_group group;
- group.output_bfd = output_bfd;
- group.info = info;
- bfd_hash_traverse (&info->hash->table,
- arc_create_forced_local_got_entries_for_tls, &group);
-
- return TRUE;
-}
-
-#define ADD_DYNAMIC_SYMBOL(NAME, TAG) \
- h = elf_link_hash_lookup (elf_hash_table (info), \
- NAME, FALSE, FALSE, FALSE); \
- if ((h != NULL && (h->ref_regular || h->def_regular))) \
- if (! _bfd_elf_add_dynamic_entry (info, TAG, 0)) \
- return FALSE;
-
-/* Set the sizes of the dynamic sections. */
-static bfd_boolean
-elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
- struct bfd_link_info *info)
-{
- bfd *dynobj;
- asection *s;
- bfd_boolean relocs_exist = FALSE;
- struct elf_link_hash_table *htab = elf_hash_table (info);
-
- dynobj = htab->dynobj;
- BFD_ASSERT (dynobj != NULL);
-
- if (htab->dynamic_sections_created)
- {
- struct elf_link_hash_entry *h;
-
- /* Set the contents of the .interp section to the
- interpreter. */
- if (bfd_link_executable (info) && !info->nointerp)
- {
- s = bfd_get_section_by_name (dynobj, ".interp");
- BFD_ASSERT (s != NULL);
- s->size = sizeof (ELF_DYNAMIC_INTERPRETER);
- s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
- }
-
- /* Add some entries to the .dynamic section. We fill in some of
- the values later, in elf_bfd_final_link, but we must add the
- entries now so that we know the final size of the .dynamic
- section. Checking if the .init section is present. We also
- create DT_INIT and DT_FINI entries if the init_str has been
- changed by the user. */
- ADD_DYNAMIC_SYMBOL (info->init_function, DT_INIT);
- ADD_DYNAMIC_SYMBOL (info->fini_function, DT_FINI);
- }
- else
- {
- /* We may have created entries in the .rela.got section.
- However, if we are not creating the dynamic sections, we will
- not actually use these entries. Reset the size of .rela.got,
- which will cause it to get stripped from the output file
- below. */
- if (htab->srelgot != NULL)
- htab->srelgot->size = 0;
- }
-
- for (s = dynobj->sections; s != NULL; s = s->next)
- {
- if ((s->flags & SEC_LINKER_CREATED) == 0)
- continue;
-
- if (s == htab->splt
- || s == htab->sgot
- || s == htab->sgotplt
- || s == htab->sdynbss)
- {
- /* Strip this section if we don't need it. */
- }
- else if (strncmp (s->name, ".rela", 5) == 0)
- {
- if (s->size != 0 && s != htab->srelplt)
- relocs_exist = TRUE;
-
- /* We use the reloc_count field as a counter if we need to
- copy relocs into the output file. */
- s->reloc_count = 0;
- }
- else
- {
- /* It's not one of our sections, so don't allocate space. */
- continue;
- }
-
- if (s->size == 0)
- {
- s->flags |= SEC_EXCLUDE;
- continue;
- }
-
- if ((s->flags & SEC_HAS_CONTENTS) == 0)
- continue;
-
- /* Allocate memory for the section contents. */
- s->contents = bfd_zalloc (dynobj, s->size);
- if (s->contents == NULL)
- return FALSE;
- }
-
- return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs_exist);
-}
-
-
-/* Classify dynamic relocs such that -z combreloc can reorder and combine
- them. */
-static enum elf_reloc_type_class
-elf32_arc_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
- const asection *rel_sec ATTRIBUTE_UNUSED,
- const Elf_Internal_Rela *rela)
-{
- switch ((int) ELF32_R_TYPE (rela->r_info))
- {
- case R_ARC_RELATIVE:
- return reloc_class_relative;
- case R_ARC_JMP_SLOT:
- return reloc_class_plt;
- case R_ARC_COPY:
- return reloc_class_copy;
- /* TODO: Needed in future to support ifunc. */
- /*
- case R_ARC_IRELATIVE:
- return reloc_class_ifunc;
- */
- default:
- return reloc_class_normal;
- }
-}
-
-const struct elf_size_info arc_elf32_size_info =
-{
- sizeof (Elf32_External_Ehdr),
- sizeof (Elf32_External_Phdr),
- sizeof (Elf32_External_Shdr),
- sizeof (Elf32_External_Rel),
- sizeof (Elf32_External_Rela),
- sizeof (Elf32_External_Sym),
- sizeof (Elf32_External_Dyn),
- sizeof (Elf_External_Note),
- 4,
- 1,
- 32, 2,
- ELFCLASS32, EV_CURRENT,
- bfd_elf32_write_out_phdrs,
- bfd_elf32_write_shdrs_and_ehdr,
- bfd_elf32_checksum_contents,
- bfd_elf32_write_relocs,
- bfd_elf32_swap_symbol_in,
- bfd_elf32_swap_symbol_out,
- bfd_elf32_slurp_reloc_table,
- bfd_elf32_slurp_symbol_table,
- bfd_elf32_swap_dyn_in,
- bfd_elf32_swap_dyn_out,
- bfd_elf32_swap_reloc_in,
- bfd_elf32_swap_reloc_out,
- bfd_elf32_swap_reloca_in,
- bfd_elf32_swap_reloca_out
-};
-
-#define elf_backend_size_info arc_elf32_size_info
-
-/* GDB expects general purpose registers to be in section .reg. However Linux
- kernel doesn't create this section and instead writes registers to NOTE
- section. It is up to the binutils to create a pseudo-section .reg from the
- contents of NOTE. Also BFD will read pid and signal number from NOTE. This
- function relies on offsets inside elf_prstatus structure in Linux to be
- stable. */
-
-static bfd_boolean
-elf32_arc_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
-{
- int offset;
- size_t size;
-
- switch (note->descsz)
- {
- default:
- return FALSE;
-
- case 236: /* sizeof (struct elf_prstatus) on Linux/arc. */
- /* pr_cursig */
- elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
- /* pr_pid */
- elf_tdata (abfd)->core->lwpid = bfd_get_32 (abfd, note->descdata + 24);
- /* pr_regs */
- offset = 72;
- size = (40 * 4); /* There are 40 registers in user_regs_struct. */
- break;
- }
- /* Make a ".reg/999" section. */
- return _bfd_elfcore_make_pseudosection (abfd, ".reg", size,
- note->descpos + offset);
-}
-
-/* Determine whether an object attribute tag takes an integer, a
- string or both. */
-
-static int
-elf32_arc_obj_attrs_arg_type (int tag)
-{
- if (tag == Tag_ARC_CPU_name
- || tag == Tag_ARC_ISA_config
- || tag == Tag_ARC_ISA_apex)
- return ATTR_TYPE_FLAG_STR_VAL;
- else if (tag < (Tag_ARC_ISA_mpy_option + 1))
- return ATTR_TYPE_FLAG_INT_VAL;
- else
- return (tag & 1) != 0 ? ATTR_TYPE_FLAG_STR_VAL : ATTR_TYPE_FLAG_INT_VAL;
-}
-
-/* Attribute numbers >=14 can be safely ignored. */
-
-static bfd_boolean
-elf32_arc_obj_attrs_handle_unknown (bfd *abfd, int tag)
-{
- if ((tag & 127) < (Tag_ARC_ISA_mpy_option + 1))
- {
- _bfd_error_handler
- (_("%pB: unknown mandatory ARC object attribute %d"),
- abfd, tag);
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
- else
- {
- _bfd_error_handler
- (_("warning: %pB: unknown ARC object attribute %d"),
- abfd, tag);
- return TRUE;
- }
-}
-
-/* Handle an ARC specific section when reading an object file. This is
- called when bfd_section_from_shdr finds a section with an unknown
- type. */
-
-static bfd_boolean
-elf32_arc_section_from_shdr (bfd *abfd,
- Elf_Internal_Shdr * hdr,
- const char *name,
- int shindex)
-{
- switch (hdr->sh_type)
- {
- case 0x0c: /* MWDT specific section, don't complain about it. */
- case SHT_ARC_ATTRIBUTES:
- break;
-
- default:
- return FALSE;
- }
-
- if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
- return FALSE;
-
- return TRUE;
-}
-
-/* Relaxation hook.
-
- These are the current relaxing opportunities available:
-
- * R_ARC_GOTPC32 => R_ARC_PCREL.
-
-*/
-
-static bfd_boolean
-arc_elf_relax_section (bfd *abfd, asection *sec,
- struct bfd_link_info *link_info, bfd_boolean *again)
-{
- Elf_Internal_Shdr *symtab_hdr;
- Elf_Internal_Rela *internal_relocs;
- Elf_Internal_Rela *irel, *irelend;
- bfd_byte *contents = NULL;
- Elf_Internal_Sym *isymbuf = NULL;
-
- /* Assume nothing changes. */
- *again = FALSE;
-
- /* We don't have to do anything for a relocatable link, if this
- section does not have relocs, or if this is not a code
- section. */
- if (bfd_link_relocatable (link_info)
- || (sec->flags & SEC_RELOC) == 0
- || sec->reloc_count == 0
- || (sec->flags & SEC_CODE) == 0)
- return TRUE;
-
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-
- /* Get a copy of the native relocations. */
- internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
- link_info->keep_memory);
- if (internal_relocs == NULL)
- goto error_return;
-
- /* Walk through them looking for relaxing opportunities. */
- irelend = internal_relocs + sec->reloc_count;
- for (irel = internal_relocs; irel < irelend; irel++)
- {
- /* If this isn't something that can be relaxed, then ignore
- this reloc. */
- if (ELF32_R_TYPE (irel->r_info) != (int) R_ARC_GOTPC32)
- continue;
-
- /* Get the section contents if we haven't done so already. */
- if (contents == NULL)
- {
- /* Get cached copy if it exists. */
- if (elf_section_data (sec)->this_hdr.contents != NULL)
- contents = elf_section_data (sec)->this_hdr.contents;
- /* Go get them off disk. */
- else if (!bfd_malloc_and_get_section (abfd, sec, &contents))
- goto error_return;
- }
-
- /* Read this BFD's local symbols if we haven't done so already. */
- if (isymbuf == NULL && symtab_hdr->sh_info != 0)
- {
- isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
- if (isymbuf == NULL)
- isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
- symtab_hdr->sh_info, 0,
- NULL, NULL, NULL);
- if (isymbuf == NULL)
- goto error_return;
- }
-
- struct elf_link_hash_entry *htop = NULL;
-
- if (ELF32_R_SYM (irel->r_info) >= symtab_hdr->sh_info)
- {
- /* An external symbol. */
- unsigned int indx = ELF32_R_SYM (irel->r_info) - symtab_hdr->sh_info;
- htop = elf_sym_hashes (abfd)[indx];
- }
-
- if (ELF32_R_TYPE (irel->r_info) == (int) R_ARC_GOTPC32
- && SYMBOL_REFERENCES_LOCAL (link_info, htop))
- {
- unsigned int code;
-
- /* Get the opcode. */
- code = bfd_get_32_me (abfd, contents + irel->r_offset - 4);
-
- /* Note that we've changed the relocs, section contents, etc. */
- elf_section_data (sec)->relocs = internal_relocs;
- elf_section_data (sec)->this_hdr.contents = contents;
- symtab_hdr->contents = (unsigned char *) isymbuf;
-
- /* Fix the relocation's type. */
- irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), R_ARC_PC32);
-
- /* ld rA,[pcl,symbol@tgot] -> add rA,pcl,symbol@pcl. */
- /* 0010 0bbb aa11 0ZZX DBBB 1111 10AA AAAA.
- 111 00 000 0111 xx xxxx*/
- code &= ~0x27307F80;
- BFD_ASSERT (code <= 62UL);
- code |= 0x27007F80;
-
- /* Write back the new instruction. */
- bfd_put_32_me (abfd, code, contents + irel->r_offset - 4);
-
- /* The size isn't changed, don't redo. */
- *again = FALSE;
- }
- }
-
- if (isymbuf != NULL
- && symtab_hdr->contents != (unsigned char *) isymbuf)
- {
- if (!link_info->keep_memory)
- free (isymbuf);
- else
- /* Cache the symbols for elf_link_input_bfd. */
- symtab_hdr->contents = (unsigned char *) isymbuf;
- }
-
- if (contents != NULL
- && elf_section_data (sec)->this_hdr.contents != contents)
- {
- if (!link_info->keep_memory)
- free (contents);
- else
- /* Cache the section contents for elf_link_input_bfd. */
- elf_section_data (sec)->this_hdr.contents = contents;
- }
-
- if (elf_section_data (sec)->relocs != internal_relocs)
- free (internal_relocs);
-
- return TRUE;
-
- error_return:
- if (symtab_hdr->contents != (unsigned char *) isymbuf)
- free (isymbuf);
- if (elf_section_data (sec)->this_hdr.contents != contents)
- free (contents);
- if (elf_section_data (sec)->relocs != internal_relocs)
- free (internal_relocs);
-
- return FALSE;
-}
-
-#define TARGET_LITTLE_SYM arc_elf32_le_vec
-#define TARGET_LITTLE_NAME "elf32-littlearc"
-#define TARGET_BIG_SYM arc_elf32_be_vec
-#define TARGET_BIG_NAME "elf32-bigarc"
-#define ELF_ARCH bfd_arch_arc
-#define ELF_TARGET_ID ARC_ELF_DATA
-#define ELF_MACHINE_CODE EM_ARC_COMPACT
-#define ELF_MACHINE_ALT1 EM_ARC_COMPACT2
-#define ELF_MAXPAGESIZE 0x2000
-
-#define bfd_elf32_bfd_link_hash_table_create arc_elf_link_hash_table_create
-
-#define bfd_elf32_bfd_merge_private_bfd_data arc_elf_merge_private_bfd_data
-#define bfd_elf32_bfd_reloc_type_lookup arc_elf32_bfd_reloc_type_lookup
-#define bfd_elf32_bfd_set_private_flags arc_elf_set_private_flags
-#define bfd_elf32_bfd_print_private_bfd_data arc_elf_print_private_bfd_data
-#define bfd_elf32_bfd_copy_private_bfd_data arc_elf_copy_private_bfd_data
-#define bfd_elf32_bfd_relax_section arc_elf_relax_section
-
-#define elf_info_to_howto_rel arc_info_to_howto_rel
-#define elf_backend_object_p arc_elf_object_p
-#define elf_backend_final_write_processing arc_elf_final_write_processing
-
-#define elf_backend_relocate_section elf_arc_relocate_section
-#define elf_backend_check_relocs elf_arc_check_relocs
-#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
-
-#define elf_backend_reloc_type_class elf32_arc_reloc_type_class
-
-#define elf_backend_adjust_dynamic_symbol elf_arc_adjust_dynamic_symbol
-#define elf_backend_finish_dynamic_symbol elf_arc_finish_dynamic_symbol
-
-#define elf_backend_finish_dynamic_sections elf_arc_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections elf_arc_size_dynamic_sections
-
-#define elf_backend_can_gc_sections 1
-#define elf_backend_want_got_plt 1
-#define elf_backend_plt_readonly 1
-#define elf_backend_rela_plts_and_copies_p 1
-#define elf_backend_want_plt_sym 0
-#define elf_backend_got_header_size 12
-#define elf_backend_dtrel_excludes_plt 1
-
-#define elf_backend_may_use_rel_p 0
-#define elf_backend_may_use_rela_p 1
-#define elf_backend_default_use_rela_p 1
-
-#define elf_backend_grok_prstatus elf32_arc_grok_prstatus
-
-#define elf_backend_default_execstack 0
-
-#undef elf_backend_obj_attrs_vendor
-#define elf_backend_obj_attrs_vendor "ARC"
-#undef elf_backend_obj_attrs_section
-#define elf_backend_obj_attrs_section ".ARC.attributes"
-#undef elf_backend_obj_attrs_arg_type
-#define elf_backend_obj_attrs_arg_type elf32_arc_obj_attrs_arg_type
-#undef elf_backend_obj_attrs_section_type
-#define elf_backend_obj_attrs_section_type SHT_ARC_ATTRIBUTES
-#define elf_backend_obj_attrs_handle_unknown elf32_arc_obj_attrs_handle_unknown
-
-#define elf_backend_section_from_shdr elf32_arc_section_from_shdr
-
-#include "elf32-target.h"
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 998b72f2281..27b11a7f7b7 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -13234,7 +13234,7 @@ elf_gc_mark_debug_section (asection *sec ATTRIBUTE_UNUSED,
/* Return the local debug definition section. */
asection *isec = bfd_section_from_elf_index (sec->owner,
sym->st_shndx);
- if ((isec->flags & SEC_DEBUGGING) != 0)
+ if (isec && (isec->flags & SEC_DEBUGGING) != 0)
return isec;
}
diff --git a/bfd/elfnn-arc.c b/bfd/elfnn-arc.c
new file mode 100644
index 00000000000..f27f1ef5966
--- /dev/null
+++ b/bfd/elfnn-arc.c
@@ -0,0 +1,3556 @@
+/* ARC-specific support for 32-bit ELF
+ Copyright (C) 1994-2020 Free Software Foundation, Inc.
+ Contributed by Cupertino Miranda (cmiranda@synopsys.com).
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/arc.h"
+#include "libiberty.h"
+#include "opcode/arc-func.h"
+#include "opcode/arc.h"
+
+#define RELA_SIZE sizeof(ElfNN_External_Rela)
+
+#include "arc-plt.h"
+
+#define FEATURE_LIST_NAME bfdNN_feature_list
+#define CONFLICT_LIST bfdNN_conflict_list
+#include "opcode/arc-attrs.h"
+
+
+#define ARCH_SIZE NN
+
+/* The name of the dynamic interpreter. This is put in the .interp
+ section. */
+
+#define ELF64_DYNAMIC_INTERPRETER "/lib/ld.so.1"
+#define ELF32_DYNAMIC_INTERPRETER "/sbin/ld-uClibc.so"
+
+#define LOG_FILE_ALIGN (ARCH_SIZE == 32 ? 2 : 3)
+
+/* Do not enable this unless you know what you are doing.
+ * Code under this macro is not safe for production.
+ * */
+/* #define ARC_ENABLE_DEBUG 1 */
+#ifdef ARC_ENABLE_DEBUG
+static const char *
+name_for_global_symbol (struct elf_link_hash_entry *h)
+{
+ static char *local_str = "(local)";
+ if (h == NULL)
+ return local_str;
+ return h->root.root.string;
+}
+#define ARC_DEBUG(fmt, args...) fprintf (stderr, fmt, ##args)
+#else
+#define ARC_DEBUG(...)
+#endif
+
+#define ADD_RELA(BFD, SECTION, OFFSET, SYM_IDX, TYPE, ADDEND) \
+ { \
+ struct elf_link_hash_table *_htab = elf_hash_table (info); \
+ Elf_Internal_Rela _rel; \
+ bfd_byte * _loc; \
+ const struct elf_backend_data *bed; \
+ bed = get_elf_backend_data (BFD); \
+ \
+ if (_htab->dynamic_sections_created == TRUE) \
+ { \
+ BFD_ASSERT (_htab->srel##SECTION &&_htab->srel##SECTION->contents); \
+ _loc = _htab->srel##SECTION->contents \
+ + ((_htab->srel##SECTION->reloc_count) \
+ * sizeof (ElfNN_External_Rela)); \
+ _htab->srel##SECTION->reloc_count++; \
+ _rel.r_addend = ADDEND; \
+ _rel.r_offset = (_htab->s##SECTION)->output_section->vma \
+ + (_htab->s##SECTION)->output_offset + OFFSET; \
+ BFD_ASSERT ((long) SYM_IDX != -1); \
+ _rel.r_info = ELFNN_R_INFO (SYM_IDX, TYPE); \
+ bed->s->swap_reloca_out (BFD, &_rel, _loc); \
+ } \
+ }
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ case VALUE: \
+ return "R_" #TYPE; \
+ break;
+
+static ATTRIBUTE_UNUSED const char *
+reloc_type_to_name (unsigned int type)
+{
+ switch (type)
+ {
+#include "elf/arc-reloc.def"
+
+ default:
+ return "UNKNOWN";
+ break;
+ }
+}
+
+#undef ARC_RELOC_HOWTO
+
+/* Try to minimize the amount of space occupied by relocation tables
+ on the ROM (not that the ROM won't be swamped by other ELF overhead). */
+
+#define USE_REL 1
+
+/* Similar with bfd_get_32 but taking into account the
+ middle-endianess of the ARC CPUs. Only to be used in code
+ sections. */
+
+static bfd_vma
+bfd_get_32_me (bfd * abfd,const unsigned char * data)
+{
+ bfd_vma value = 0;
+
+ if (bfd_big_endian (abfd))
+ value = bfd_get_32 (abfd, data);
+ else
+ {
+ value = ((bfd_get_8 (abfd, data) & 255) << 16);
+ value |= ((bfd_get_8 (abfd, data + 1) & 255) << 24);
+ value |= (bfd_get_8 (abfd, data + 2) & 255);
+ value |= ((bfd_get_8 (abfd, data + 3) & 255) << 8);
+ }
+
+ return value;
+}
+
+static void
+bfd_put_32_me (bfd *abfd, bfd_vma value,unsigned char *data)
+{
+ bfd_put_16 (abfd, (value & 0xffff0000) >> 16, data);
+ bfd_put_16 (abfd, value & 0xffff, data + 2);
+}
+
+static ATTRIBUTE_UNUSED bfd_boolean
+is_reloc_PC_relative (reloc_howto_type *howto)
+{
+ return (strstr (howto->name, "PC") != NULL) ? TRUE : FALSE;
+}
+
+static bfd_boolean
+is_reloc_SDA_relative (reloc_howto_type *howto)
+{
+ return (strstr (howto->name, "SDA") != NULL) ? TRUE : FALSE;
+}
+
+static bfd_boolean
+is_reloc_for_GOT (reloc_howto_type * howto)
+{
+ if (strstr (howto->name, "TLS") != NULL)
+ return FALSE;
+ return (strstr (howto->name, "GOT") != NULL) ? TRUE : FALSE;
+}
+
+static bfd_boolean
+is_reloc_for_PLT (reloc_howto_type * howto)
+{
+ return (strstr (howto->name, "PLT") != NULL) ? TRUE : FALSE;
+}
+
+static bfd_boolean
+is_reloc_for_TLS (reloc_howto_type *howto)
+{
+ return (strstr (howto->name, "TLS") != NULL) ? TRUE : FALSE;
+}
+
+struct arc_relocation_data
+{
+ bfd_signed_vma reloc_offset;
+ bfd_signed_vma reloc_addend;
+ bfd_signed_vma got_offset_value;
+
+ bfd_signed_vma sym_value;
+ asection * sym_section;
+
+ reloc_howto_type *howto;
+
+ asection * input_section;
+
+ bfd_signed_vma sdata_begin_symbol_vma;
+ bfd_boolean sdata_begin_symbol_vma_set;
+ bfd_signed_vma got_symbol_vma;
+
+ bfd_boolean should_relocate;
+
+ const char * symbol_name;
+};
+
+/* ARC ELF linker hash entry. */
+struct elf_arc_link_hash_entry
+{
+ struct elf_link_hash_entry root;
+
+ struct got_entry *got_ents;
+};
+
+
+/* Should be included at this location due to static declarations
+ defined before this point. */
+#include "arc-got.h"
+
+#define arc_bfd_get_8(A,B,C) bfd_get_8(A,B)
+#define arc_bfd_get_16(A,B,C) bfd_get_16(A,B)
+#define arc_bfd_get_32(A,B,C) bfd_get_32(A,B)
+#define arc_bfd_put_8(A,B,C,D) bfd_put_8(A,B,C)
+#define arc_bfd_put_16(A,B,C,D) bfd_put_16(A,B,C)
+#define arc_bfd_put_32(A,B,C,D) bfd_put_32(A,B,C)
+
+
+static bfd_reloc_status_type
+arc_elf_reloc (bfd *abfd ATTRIBUTE_UNUSED,
+ arelent *reloc_entry,
+ asymbol *symbol_in,
+ void *data ATTRIBUTE_UNUSED,
+ asection *input_section,
+ bfd *output_bfd,
+ char ** error_message ATTRIBUTE_UNUSED)
+{
+ if (output_bfd != NULL)
+ {
+ reloc_entry->address += input_section->output_offset;
+
+ /* In case of relocateable link and if the reloc is against a
+ section symbol, the addend needs to be adjusted according to
+ where the section symbol winds up in the output section. */
+ if ((symbol_in->flags & BSF_SECTION_SYM) && symbol_in->section)
+ reloc_entry->addend += symbol_in->section->output_offset;
+
+ return bfd_reloc_ok;
+ }
+
+ return bfd_reloc_continue;
+}
+
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ TYPE = VALUE,
+
+enum howto_list
+ {
+#include "elf/arc-reloc.def"
+ HOWTO_LIST_LAST
+ };
+
+#undef ARC_RELOC_HOWTO
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, RSIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ [TYPE] = HOWTO (R_##TYPE, 0, RSIZE, BITSIZE, FALSE, 0, \
+ complain_overflow_##OVERFLOW, arc_elf_reloc, \
+ "R_" #TYPE, FALSE, 0, 0, FALSE),
+
+static struct reloc_howto_struct elf_arc_howto_table[] =
+ {
+#include "elf/arc-reloc.def"
+ /* Example of what is generated by the preprocessor. Currently kept as an
+ example.
+ HOWTO (R_ARC_NONE, // Type.
+ 0, // Rightshift.
+ 2, // Size (0 = byte, 1 = short, 2 = long).
+ 32, // Bitsize.
+ FALSE, // PC_relative.
+ 0, // Bitpos.
+ complain_overflow_bitfield, // Complain_on_overflow.
+ bfd_elf_generic_reloc, // Special_function.
+ "R_ARC_NONE", // Name.
+ TRUE, // Partial_inplace.
+ 0, // Src_mask.
+ 0, // Dst_mask.
+ FALSE), // PCrel_offset.
+ */
+ };
+#undef ARC_RELOC_HOWTO
+
+static void
+arc_elf_howto_init (void)
+{
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ elf_arc_howto_table[TYPE].pc_relative = \
+ (strstr (#FORMULA, " P ") != NULL || strstr (#FORMULA, " PDATA ") != NULL); \
+ elf_arc_howto_table[TYPE].dst_mask = RELOC_FUNCTION(0, ~0); \
+ /* Only 32 bit data relocations should be marked as ME. */ \
+ if (strstr (#FORMULA, " ME ") != NULL) \
+ { \
+ BFD_ASSERT (SIZE == 2); \
+ }
+
+#include "elf/arc-reloc.def"
+
+}
+#undef ARC_RELOC_HOWTO
+
+static reloc_howto_type *
+arc_elf_howto (unsigned int r_type)
+{
+ if (elf_arc_howto_table[R_ARC_32].dst_mask == 0)
+ arc_elf_howto_init ();
+ return &elf_arc_howto_table[r_type];
+}
+
+/* Map BFD reloc types to ARC ELF reloc types. */
+
+struct arc_reloc_map
+{
+ bfd_reloc_code_real_type bfd_reloc_val;
+ unsigned char elf_reloc_val;
+};
+
+/* ARC ELF linker hash table. */
+struct elf_arc_link_hash_table
+{
+ struct elf_link_hash_table elf;
+};
+
+static struct bfd_hash_entry *
+elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry,
+ struct bfd_hash_table *table,
+ const char *string)
+{
+ struct elf_arc_link_hash_entry * ret =
+ (struct elf_arc_link_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (ret == NULL)
+ ret = (struct elf_arc_link_hash_entry *)
+ bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry));
+ if (ret == NULL)
+ return (struct bfd_hash_entry *) ret;
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct elf_arc_link_hash_entry *)
+ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+ table, string));
+ if (ret != NULL)
+ {
+ ret->got_ents = NULL;
+ }
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+/* Destroy an ARC ELF linker hash table. */
+static void
+elf_arc_link_hash_table_free (bfd *obfd)
+{
+ _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Create an ARC ELF linker hash table. */
+
+static struct bfd_link_hash_table *
+arc_elf_link_hash_table_create (bfd *abfd)
+{
+ struct elf_arc_link_hash_table *ret;
+ bfd_size_type amt = sizeof (struct elf_arc_link_hash_table);
+
+ ret = (struct elf_arc_link_hash_table *) bfd_zmalloc (amt);
+ if (ret == NULL)
+ return NULL;
+
+ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
+ elf_arc_link_hash_newfunc,
+ sizeof (struct elf_arc_link_hash_entry),
+ ARC_ELF_DATA))
+ {
+ free (ret);
+ return NULL;
+ }
+
+ ret->elf.root.hash_table_free = elf_arc_link_hash_table_free;
+
+ return &ret->elf.root;
+}
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ { BFD_RELOC_##TYPE, R_##TYPE },
+
+static const struct arc_reloc_map arc_reloc_map[] =
+ {
+#include "elf/arc-reloc.def"
+
+ {BFD_RELOC_NONE, R_ARC_NONE},
+ {BFD_RELOC_8, R_ARC_8},
+ {BFD_RELOC_16, R_ARC_16},
+ {BFD_RELOC_24, R_ARC_24},
+ {BFD_RELOC_32, R_ARC_32},
+ {BFD_RELOC_64, R_ARC_64},
+ };
+
+#undef ARC_RELOC_HOWTO
+
+typedef ATTRIBUTE_UNUSED bfd_vma (*replace_func) (unsigned, int ATTRIBUTE_UNUSED);
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ case TYPE: \
+ func = (void *) RELOC_FUNCTION; \
+ break;
+
+static replace_func
+get_replace_function (bfd *abfd, unsigned int r_type)
+{
+ void *func = NULL;
+
+ switch (r_type)
+ {
+#include "elf/arc-reloc.def"
+ }
+
+ if (func == replace_bits24 && bfd_big_endian (abfd))
+ func = replace_bits24_be;
+
+ return (replace_func) func;
+}
+#undef ARC_RELOC_HOWTO
+
+static reloc_howto_type *
+arc_elfNN_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
+ bfd_reloc_code_real_type code)
+{
+ unsigned int i;
+
+ for (i = ARRAY_SIZE (arc_reloc_map); i--;)
+ {
+ if (arc_reloc_map[i].bfd_reloc_val == code)
+ return arc_elf_howto (arc_reloc_map[i].elf_reloc_val);
+ }
+
+ return NULL;
+}
+
+/* Function to set the ELF flag bits. */
+static bfd_boolean
+arc_elf_set_private_flags (bfd *abfd, flagword flags)
+{
+ elf_elfheader (abfd)->e_flags = flags;
+ elf_flags_init (abfd) = TRUE;
+ return TRUE;
+}
+
+/* Print private flags. */
+static bfd_boolean
+arc_elf_print_private_bfd_data (bfd *abfd, void * ptr)
+{
+ FILE *file = (FILE *) ptr;
+ flagword flags;
+
+ BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+ /* Print normal ELF private data. */
+ _bfd_elf_print_private_bfd_data (abfd, ptr);
+
+ flags = elf_elfheader (abfd)->e_flags;
+ fprintf (file, _("private flags = 0x%lx:"), (unsigned long) flags);
+
+ switch (flags & EF_ARC_MACH_MSK)
+ {
+ case EF_ARC_CPU_ARCV2HS : fprintf (file, " -mcpu=ARCv2HS"); break;
+ case EF_ARC_CPU_ARCV2EM : fprintf (file, " -mcpu=ARCv2EM"); break;
+ case E_ARC_MACH_ARC600 : fprintf (file, " -mcpu=ARC600"); break;
+ case E_ARC_MACH_ARC601 : fprintf (file, " -mcpu=ARC601"); break;
+ case E_ARC_MACH_ARC700 : fprintf (file, " -mcpu=ARC700"); break;
+ default:
+ fprintf (file, "-mcpu=unknown");
+ break;
+ }
+
+ switch (flags & EF_ARC_OSABI_MSK)
+ {
+ case E_ARC_OSABI_ORIG : fprintf (file, " (ABI:legacy)"); break;
+ case E_ARC_OSABI_V2 : fprintf (file, " (ABI:v2)"); break;
+ case E_ARC_OSABI_V3 : fprintf (file, " (ABI:v3)"); break;
+ case E_ARC_OSABI_V4 : fprintf (file, " (ABI:v4)"); break;
+ default:
+ fprintf (file, " (ABI:unknown)");
+ break;
+ }
+
+ fputc ('\n', file);
+ return TRUE;
+}
+
+/* Copy backend specific data from one object module to another. */
+
+static bfd_boolean
+arc_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
+{
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return TRUE;
+
+ BFD_ASSERT (!elf_flags_init (obfd)
+ || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
+
+ elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
+ elf_flags_init (obfd) = TRUE;
+
+ /* Copy object attributes. */
+ _bfd_elf_copy_obj_attributes (ibfd, obfd);
+
+ return _bfd_elf_copy_private_bfd_data (ibfd, obfd);
+}
+
+static reloc_howto_type *
+bfd_elfNN_bfd_reloc_name_lookup (bfd * abfd ATTRIBUTE_UNUSED,
+ const char *r_name)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (elf_arc_howto_table); i++)
+ if (elf_arc_howto_table[i].name != NULL
+ && strcasecmp (elf_arc_howto_table[i].name, r_name) == 0)
+ return arc_elf_howto (i);
+
+ return NULL;
+}
+
+/* Set the howto pointer for an ARC ELF reloc. */
+
+static bfd_boolean
+arc_info_to_howto_rel (bfd * abfd,
+ arelent * cache_ptr,
+ Elf_Internal_Rela * dst)
+{
+ unsigned int r_type;
+
+ r_type = ELFNN_R_TYPE (dst->r_info);
+ if (r_type >= (unsigned int) R_ARC_max)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+ abfd, r_type);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+
+ cache_ptr->howto = arc_elf_howto (r_type);
+ return cache_ptr->howto != NULL;
+}
+
+/* Extract CPU features from an NTBS. */
+
+static unsigned
+arc_extract_features (const char *p)
+{
+ unsigned i, r = 0;
+
+ if (!p)
+ return 0;
+
+ for (i = 0; i < ARRAY_SIZE (FEATURE_LIST_NAME); i++)
+ {
+ char *t = strstr (p, FEATURE_LIST_NAME[i].attr);
+ unsigned l = strlen (FEATURE_LIST_NAME[i].attr);
+ if ((t != NULL)
+ && (t[l] == ','
+ || t[l] == '\0'))
+ r |= FEATURE_LIST_NAME[i].feature;
+ }
+
+ return r;
+}
+
+/* Concatenate two strings. s1 can be NULL but not
+ s2. */
+
+static char *
+arc_stralloc (char * s1, const char * s2)
+{
+ char *p;
+
+ /* Only s1 can be null. */
+ BFD_ASSERT (s2);
+
+ p = s1 ? concat (s1, ",", s2, NULL) : (char *)s2;
+
+ return p;
+}
+
+/* Merge ARC object attributes from IBFD into OBFD. Raise an error if
+ there are conflicting attributes. */
+
+static bfd_boolean
+arc_elf_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
+{
+ bfd *obfd = info->output_bfd;
+ obj_attribute *in_attr;
+ obj_attribute *out_attr;
+ int i;
+ bfd_boolean result = TRUE;
+ const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
+ char *tagname = NULL;
+
+ /* Skip the linker stubs file. This preserves previous behavior
+ of accepting unknown attributes in the first input file - but
+ is that a bug? */
+ if (ibfd->flags & BFD_LINKER_CREATED)
+ return TRUE;
+
+ /* Skip any input that hasn't attribute section.
+ This enables to link object files without attribute section with
+ any others. */
+ if (bfd_get_section_by_name (ibfd, sec_name) == NULL)
+ return TRUE;
+
+ if (!elf_known_obj_attributes_proc (obfd)[0].i)
+ {
+ /* This is the first object. Copy the attributes. */
+ _bfd_elf_copy_obj_attributes (ibfd, obfd);
+
+ out_attr = elf_known_obj_attributes_proc (obfd);
+
+ /* Use the Tag_null value to indicate the attributes have been
+ initialized. */
+ out_attr[0].i = 1;
+
+ return TRUE;
+ }
+
+ in_attr = elf_known_obj_attributes_proc (ibfd);
+ out_attr = elf_known_obj_attributes_proc (obfd);
+
+ for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
+ {
+ /* Merge this attribute with existing attributes. */
+ switch (i)
+ {
+ case Tag_ARC_PCS_config:
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ else if ((in_attr[i].i & 0xff) != 0
+ && ((out_attr[i].i & 0xff) != (in_attr[i].i & 0xff)))
+ {
+ const char *tagval[] = { "Absent", "Bare-metal/mwdt",
+ "Bare-metal/newlib", "Linux/uclibc",
+ "Linux/glibc" };
+ BFD_ASSERT ((in_attr[i].i & 0xff) < 5);
+ BFD_ASSERT ((out_attr[i].i & 0xff) < 5);
+ /* It's sometimes ok to mix different configs, so this is only
+ a warning. */
+ _bfd_error_handler
+ (_("warning: %pB: conflicting platform configuration "
+ "%s with %s"), ibfd,
+ tagval[in_attr[i].i & 0xff],
+ tagval[out_attr[i].i & 0xff]);
+ }
+ break;
+
+ case Tag_ARC_CPU_base:
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ else if (in_attr[i].i != 0 && out_attr[i].i != in_attr[i].i
+ && ((out_attr[i].i + in_attr[i].i) < 6))
+ {
+ const char *tagval[] = { "Absent", "ARC6xx", "ARC7xx",
+ "ARCEM", "ARCHS" };
+ BFD_ASSERT (in_attr[i].i < 5);
+ BFD_ASSERT (out_attr[i].i < 5);
+ /* We cannot mix code for different CPUs. */
+ _bfd_error_handler
+ (_("error: %pB: unable to merge CPU base attributes "
+ "%s with %s"),
+ obfd,
+ tagval[in_attr[i].i],
+ tagval[out_attr[i].i]);
+ result = FALSE;
+ break;
+ }
+ else
+ {
+ /* The CPUs may be different, check if we can still mix
+ the objects against the output choosen CPU. */
+ unsigned in_feature = 0;
+ unsigned out_feature = 0;
+ char *p1 = in_attr[Tag_ARC_ISA_config].s;
+ char *p2 = out_attr[Tag_ARC_ISA_config].s;
+ unsigned j;
+ unsigned cpu_out;
+ unsigned opcode_map[] = {0, ARC_OPCODE_ARC600, ARC_OPCODE_ARC700,
+ ARC_OPCODE_ARCv2EM, ARC_OPCODE_ARCv2HS};
+
+ BFD_ASSERT (in_attr[i].i < (sizeof (opcode_map)
+ / sizeof (unsigned)));
+ BFD_ASSERT (out_attr[i].i < (sizeof (opcode_map)
+ / sizeof (unsigned)));
+ cpu_out = opcode_map[out_attr[i].i];
+
+ in_feature = arc_extract_features (p1);
+ out_feature = arc_extract_features (p2);
+
+ /* First, check if a feature is compatible with the
+ output object chosen CPU. */
+ for (j = 0; j < ARRAY_SIZE (FEATURE_LIST_NAME); j++)
+ if (((in_feature | out_feature) & FEATURE_LIST_NAME[j].feature)
+ && (!(cpu_out & FEATURE_LIST_NAME[j].cpus)))
+ {
+ _bfd_error_handler
+ (_("error: %pB: unable to merge ISA extension attributes "
+ "%s"),
+ obfd, FEATURE_LIST_NAME[j].name);
+ result = FALSE;
+ break;
+ }
+ /* Second, if we have compatible features with the
+ chosen CPU, check if they are compatible among
+ them. */
+ for (j = 0; j < ARRAY_SIZE (CONFLICT_LIST); j++)
+ if (((in_feature | out_feature) & CONFLICT_LIST[j])
+ == CONFLICT_LIST[j])
+ {
+ unsigned k;
+ for (k = 0; k < ARRAY_SIZE (FEATURE_LIST_NAME); k++)
+ {
+ if (in_feature & FEATURE_LIST_NAME[k].feature
+ & CONFLICT_LIST[j])
+ p1 = (char *) FEATURE_LIST_NAME[k].name;
+ if (out_feature & FEATURE_LIST_NAME[k].feature
+ & CONFLICT_LIST[j])
+ p2 = (char *) FEATURE_LIST_NAME[k].name;
+ }
+ _bfd_error_handler
+ (_("error: %pB: conflicting ISA extension attributes "
+ "%s with %s"),
+ obfd, p1, p2);
+ result = FALSE;
+ break;
+ }
+ /* Everithing is alright. */
+ out_feature |= in_feature;
+ p1 = NULL;
+ for (j = 0; j < ARRAY_SIZE (FEATURE_LIST_NAME); j++)
+ if (out_feature & FEATURE_LIST_NAME[j].feature)
+ p1 = arc_stralloc (p1, FEATURE_LIST_NAME[j].attr);
+ if (p1)
+ out_attr[Tag_ARC_ISA_config].s =
+ _bfd_elf_attr_strdup (obfd, p1);
+ }
+ /* Fall through. */
+ case Tag_ARC_CPU_variation:
+ case Tag_ARC_ISA_mpy_option:
+ case Tag_ARC_ABI_osver:
+ /* Use the largest value specified. */
+ if (in_attr[i].i > out_attr[i].i)
+ out_attr[i].i = in_attr[i].i;
+ break;
+
+ /* The CPU name is given by the vendor, just choose an
+ existing one if missing or different. There are no fail
+ criteria if they different or both missing. */
+ case Tag_ARC_CPU_name:
+ if (!out_attr[i].s && in_attr[i].s)
+ out_attr[i].s = _bfd_elf_attr_strdup (obfd, in_attr[i].s);
+ break;
+
+ case Tag_ARC_ABI_rf16:
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ else if (out_attr[i].i != in_attr[i].i)
+ {
+ /* We cannot mix code with rf16 and without. */
+ _bfd_error_handler
+ (_("error: %pB: cannot mix rf16 with full register set %pB"),
+ obfd, ibfd);
+ result = FALSE;
+ }
+ break;
+
+ case Tag_ARC_ABI_pic:
+ tagname = "PIC";
+ /* fall through */
+ case Tag_ARC_ABI_sda:
+ if (!tagname)
+ tagname = "SDA";
+ /* fall through */
+ case Tag_ARC_ABI_tls:
+ {
+ const char *tagval[] = { "Absent", "MWDT", "GNU" };
+
+ if (!tagname)
+ tagname = "TLS";
+
+ BFD_ASSERT (in_attr[i].i < 3);
+ BFD_ASSERT (out_attr[i].i < 3);
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ else if (out_attr[i].i != 0 && in_attr[i].i != 0
+ && out_attr[i].i != in_attr[i].i)
+ {
+ _bfd_error_handler
+ (_("error: %pB: conflicting attributes %s: %s with %s"),
+ obfd, tagname,
+ tagval[in_attr[i].i],
+ tagval[out_attr[i].i]);
+ result = FALSE;
+ }
+ tagname = NULL;
+ break;
+ }
+
+ case Tag_ARC_ABI_double_size:
+ tagname = "Double size";
+ /* fall through */
+ case Tag_ARC_ABI_enumsize:
+ if (!tagname)
+ tagname = "Enum size";
+ /* fall through */
+ case Tag_ARC_ABI_exceptions:
+ if (!tagname)
+ tagname = "ABI exceptions";
+
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ else if (out_attr[i].i != 0 && in_attr[i].i != 0
+ && out_attr[i].i != in_attr[i].i)
+ {
+ _bfd_error_handler
+ (_("error: %pB: conflicting attributes %s"),
+ obfd, tagname);
+ result = FALSE;
+ }
+ break;
+
+ case Tag_ARC_ISA_apex:
+ break; /* Do nothing for APEX attributes. */
+
+ case Tag_ARC_ISA_config:
+ /* It is handled in Tag_ARC_CPU_base. */
+ break;
+
+ case Tag_ARC_ATR_version:
+ if (out_attr[i].i == 0)
+ out_attr[i].i = in_attr[i].i;
+ break;
+
+ default:
+ result
+ = result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i);
+ }
+
+ /* If out_attr was copied from in_attr then it won't have a type yet. */
+ if (in_attr[i].type && !out_attr[i].type)
+ out_attr[i].type = in_attr[i].type;
+ }
+
+ /* Merge Tag_compatibility attributes and any common GNU ones. */
+ if (!_bfd_elf_merge_object_attributes (ibfd, info))
+ return FALSE;
+
+ /* Check for any attributes not known on ARC. */
+ result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
+
+ return result;
+}
+
+/* Merge backend specific data from an object file to the output
+ object file when linking. */
+
+static bfd_boolean
+arc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
+{
+ bfd *obfd = info->output_bfd;
+ unsigned short mach_ibfd;
+ static unsigned short mach_obfd = EM_NONE;
+ flagword out_flags;
+ flagword in_flags;
+ asection *sec;
+
+ /* Check if we have the same endianess. */
+ if (! _bfd_generic_verify_endian_match (ibfd, info))
+ return FALSE;
+
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return TRUE;
+
+ /* Collect ELF flags. */
+ in_flags = elf_elfheader (ibfd)->e_flags & EF_ARC_MACH_MSK;
+ out_flags = elf_elfheader (obfd)->e_flags & EF_ARC_MACH_MSK;
+
+ if (!elf_flags_init (obfd)) /* First call, no flags set. */
+ {
+ elf_flags_init (obfd) = TRUE;
+ out_flags = in_flags;
+ }
+
+ if (!arc_elf_merge_attributes (ibfd, info))
+ return FALSE;
+
+ /* Check to see if the input BFD actually contains any sections. Do
+ not short-circuit dynamic objects; their section list may be
+ emptied by elf_link_add_object_symbols. */
+ if (!(ibfd->flags & DYNAMIC))
+ {
+ bfd_boolean null_input_bfd = TRUE;
+ bfd_boolean only_data_sections = TRUE;
+
+ for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+ {
+ if ((bfd_section_flags (sec)
+ & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+ == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+ only_data_sections = FALSE;
+
+ null_input_bfd = FALSE;
+ }
+
+ if (null_input_bfd || only_data_sections)
+ return TRUE;
+ }
+
+ /* Complain about various flag/architecture mismatches. */
+ mach_ibfd = elf_elfheader (ibfd)->e_machine;
+ if (mach_obfd == EM_NONE)
+ {
+ mach_obfd = mach_ibfd;
+ }
+ else
+ {
+ if (mach_ibfd != mach_obfd)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("error: attempting to link %pB "
+ "with a binary %pB of different architecture"),
+ ibfd, obfd);
+ return FALSE;
+ }
+ else if ((in_flags != out_flags)
+ /* If we have object attributes, then we already
+ checked the objects compatibility, skip it. */
+ && !bfd_elf_get_obj_attr_int (ibfd, OBJ_ATTR_PROC,
+ Tag_ARC_CPU_base))
+ {
+ if (in_flags && out_flags)
+ {
+ /* Warn if different flags. */
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB: uses different e_flags (%#x) fields than "
+ "previous modules (%#x)"),
+ ibfd, in_flags, out_flags);
+ return FALSE;
+ }
+ /* MWDT doesnt set the eflags hence make sure we choose the
+ eflags set by gcc. */
+ in_flags = in_flags > out_flags ? in_flags : out_flags;
+ }
+ else
+ {
+ /* Everything is correct; don't change the output flags. */
+ in_flags = out_flags;
+ }
+ }
+
+ /* Update the flags. */
+ elf_elfheader (obfd)->e_flags = in_flags;
+
+ if (bfd_get_mach (obfd) < bfd_get_mach (ibfd))
+ {
+ return bfd_set_arch_mach (obfd, bfd_arch_arc, bfd_get_mach (ibfd));
+ }
+
+ return TRUE;
+}
+
+/* Return a best guess for the machine number based on the attributes. */
+
+static unsigned int
+bfd_arc_get_mach_from_attributes (bfd * abfd)
+{
+ int arch = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, Tag_ARC_CPU_base);
+ unsigned e_machine = elf_elfheader (abfd)->e_machine;
+
+ switch (arch)
+ {
+ case TAG_CPU_ARC6xx:
+ return bfd_mach_arc_arc600;
+ case TAG_CPU_ARC7xx:
+ return bfd_mach_arc_arc700;
+ case TAG_CPU_ARCEM:
+ case TAG_CPU_ARCHS:
+ return bfd_mach_arc_arcv2;
+ default:
+ break;
+ }
+ return (e_machine == EM_ARC_COMPACT)
+ ? bfd_mach_arc_arc700 : bfd_mach_arc_arcv2;
+}
+
+/* Set the right machine number for an ARC ELF file. Make sure this
+ is initialised, or you'll have the potential of passing garbage---or
+ misleading values---into the call to bfd_default_set_arch_mach(). */
+
+static bfd_boolean
+arc_elf_object_p (bfd * abfd)
+{
+ unsigned int mach;
+ unsigned long arch = elf_elfheader (abfd)->e_flags & EF_ARC_MACH_MSK;
+ unsigned e_machine = elf_elfheader (abfd)->e_machine;
+
+#if ARCH_SIZE == 32
+ mach = bfd_mach_arc_arc700;
+#else
+ mach = bfd_mach_arcv3_64;
+#endif
+
+ switch (e_machine)
+ {
+ case EM_ARC_COMPACT:
+ case EM_ARC_COMPACT2:
+ switch (arch)
+ {
+ case E_ARC_MACH_ARC600:
+ mach = bfd_mach_arc_arc600;
+ break;
+ case E_ARC_MACH_ARC601:
+ mach = bfd_mach_arc_arc601;
+ break;
+ case E_ARC_MACH_ARC700:
+ mach = bfd_mach_arc_arc700;
+ break;
+ case EF_ARC_CPU_ARCV2HS:
+ case EF_ARC_CPU_ARCV2EM:
+ mach = bfd_mach_arc_arcv2;
+ break;
+ default:
+ mach = bfd_arc_get_mach_from_attributes (abfd);
+ break;
+ }
+ break;
+
+ case EM_ARC:
+ _bfd_error_handler
+ (_("error: the ARC4 architecture is no longer supported"));
+ return FALSE;
+
+ case EM_ARC_COMPACT3_64:
+ mach = bfd_mach_arcv3_64;
+ break;
+
+ case EM_ARC_COMPACT3:
+ mach = bfd_mach_arcv3_32;
+ break;
+
+ default:
+ _bfd_error_handler
+ (_("warning: unset or old architecture flags; "
+ "use default machine"));
+ }
+
+ return bfd_default_set_arch_mach (abfd, bfd_arch_arc, mach);
+}
+
+/* The final processing done just before writing out an ARC ELF object file.
+ This gets the ARC architecture right based on the machine number. */
+
+static bfd_boolean
+arc_elf_final_write_processing (bfd *abfd)
+{
+ unsigned long emf;
+ int osver = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
+ Tag_ARC_ABI_osver);
+ flagword e_flags = elf_elfheader (abfd)->e_flags & ~EF_ARC_OSABI_MSK;
+
+ switch (bfd_get_mach (abfd))
+ {
+ case bfd_mach_arc_arcv2:
+ emf = EM_ARC_COMPACT2;
+ break;
+ case bfd_mach_arcv3_64:
+ emf = EM_ARC_COMPACT3_64;
+ break;
+ case bfd_mach_arcv3_32:
+ emf = EM_ARC_COMPACT3;
+ break;
+ default:
+ emf = EM_ARC_COMPACT;
+ break;
+ }
+
+ elf_elfheader (abfd)->e_machine = emf;
+
+ /* Record whatever is the current syscall ABI version. */
+ if (osver)
+ e_flags |= ((osver & 0x0f) << 8);
+ else
+ e_flags |= E_ARC_OSABI_V3;
+
+ elf_elfheader (abfd)->e_flags |= e_flags;
+ return _bfd_elf_final_write_processing (abfd);
+}
+
+#ifdef ARC_ENABLE_DEBUG
+#define DEBUG_ARC_RELOC(A) debug_arc_reloc (A)
+
+static void
+debug_arc_reloc (struct arc_relocation_data reloc_data)
+{
+ ARC_DEBUG ("Reloc type=%s, should_relocate = %s\n",
+ reloc_data.howto->name,
+ reloc_data.should_relocate ? "true" : "false");
+ ARC_DEBUG (" offset = 0x%x, addend = 0x%x\n",
+ (unsigned int) reloc_data.reloc_offset,
+ (unsigned int) reloc_data.reloc_addend);
+ ARC_DEBUG (" Symbol:\n");
+ ARC_DEBUG (" value = 0x%08x\n",
+ (unsigned int) reloc_data.sym_value);
+ if (reloc_data.sym_section != NULL)
+ {
+ ARC_DEBUG (" Symbol Section:\n");
+ ARC_DEBUG (" section name = %s, output_offset 0x%08x",
+ reloc_data.sym_section->name,
+ (unsigned int) reloc_data.sym_section->output_offset);
+ if (reloc_data.sym_section->output_section != NULL)
+ ARC_DEBUG (", output_section->vma = 0x%08x",
+ ((unsigned int) reloc_data.sym_section->output_section->vma));
+ ARC_DEBUG ("\n");
+ if (reloc_data.sym_section->owner
+ && reloc_data.sym_section->owner->filename)
+ ARC_DEBUG (" file: %s\n", reloc_data.sym_section->owner->filename);
+ }
+ else
+ {
+ ARC_DEBUG (" symbol section is NULL\n");
+ }
+
+ ARC_DEBUG (" Input_section:\n");
+ if (reloc_data.input_section != NULL)
+ {
+ ARC_DEBUG (" section name = %s, output_offset 0x%08x, " \
+ "output_section->vma = 0x%08x\n",
+ reloc_data.input_section->name,
+ (unsigned int) reloc_data.input_section->output_offset,
+ (unsigned int) reloc_data.input_section->output_section->vma);
+ ARC_DEBUG (" changed_address = 0x%08x\n",
+ (unsigned int) (reloc_data.input_section->output_section->vma
+ + reloc_data.input_section->output_offset
+ + reloc_data.reloc_offset));
+ ARC_DEBUG (" file: %s\n", reloc_data.input_section->owner->filename);
+ }
+ else
+ {
+ ARC_DEBUG (" input section is NULL\n");
+ }
+}
+#else
+#define DEBUG_ARC_RELOC(A)
+#endif /* ARC_ENABLE_DEBUG */
+
+static bfd_vma
+middle_endian_convert (bfd_vma insn, bfd_boolean do_it)
+{
+ if (do_it)
+ {
+ insn
+ = ((insn & 0xffff0000) >> 16)
+ | ((insn & 0xffff) << 16);
+ }
+ return insn;
+}
+
+/* This function is called for relocations that are otherwise marked as NOT
+ requiring overflow checks. In here we perform non-standard checks of
+ the relocation value. */
+
+static inline bfd_reloc_status_type
+arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
+ bfd_signed_vma relocation,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+ switch (reloc_data.howto->type)
+ {
+ case R_ARC_NPS_CMEM16:
+ if (((relocation >> 16) & 0xffff) != NPS_CMEM_HIGH_VALUE)
+ {
+ if (reloc_data.reloc_addend == 0)
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB(%pA+%#" PRIx64 "): CMEM relocation to `%s' is invalid, "
+ "16 MSB should be %#x (value is %#" PRIx64 ")"),
+ reloc_data.input_section->owner,
+ reloc_data.input_section,
+ (uint64_t) reloc_data.reloc_offset,
+ reloc_data.symbol_name,
+ NPS_CMEM_HIGH_VALUE,
+ (uint64_t) relocation);
+ else
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB(%pA+%#" PRIx64 "): CMEM relocation to `%s+%#" PRIx64
+ "' is invalid, 16 MSB should be %#x (value is %#" PRIx64 ")"),
+ reloc_data.input_section->owner,
+ reloc_data.input_section,
+ (uint64_t) reloc_data.reloc_offset,
+ reloc_data.symbol_name,
+ (uint64_t) reloc_data.reloc_addend,
+ NPS_CMEM_HIGH_VALUE,
+ (uint64_t) relocation);
+ return bfd_reloc_overflow;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return bfd_reloc_ok;
+}
+
+#define ME(reloc) (reloc)
+
+#define IS_ME(FORMULA,BFD) ((strstr (FORMULA, "ME") != NULL) \
+ && (!bfd_big_endian (BFD)))
+
+#define S ((bfd_signed_vma) (reloc_data.sym_value \
+ + (reloc_data.sym_section->output_section != NULL ? \
+ (reloc_data.sym_section->output_offset \
+ + reloc_data.sym_section->output_section->vma) : 0)))
+#define L ((bfd_signed_vma) (reloc_data.sym_value \
+ + (reloc_data.sym_section->output_section != NULL ? \
+ (reloc_data.sym_section->output_offset \
+ + reloc_data.sym_section->output_section->vma) : 0)))
+#define A (reloc_data.reloc_addend)
+#define B (0)
+#define G (reloc_data.got_offset_value)
+#define GOT (reloc_data.got_symbol_vma)
+#define GOT_BEGIN (htab->sgot->output_section->vma)
+
+#define MES (0)
+/* P: relative offset to PCL The offset should be to the
+ current location aligned to 32 bits. */
+#define P ((bfd_signed_vma) ( \
+ ( \
+ (reloc_data.input_section->output_section != NULL ? \
+ reloc_data.input_section->output_section->vma : 0) \
+ + reloc_data.input_section->output_offset \
+ + (reloc_data.reloc_offset - (bitsize >= 32 ? 4 : 0))) \
+ & ~0x3))
+#define PDATA ((bfd_signed_vma) ( \
+ (reloc_data.input_section->output_section->vma \
+ + reloc_data.input_section->output_offset \
+ + (reloc_data.reloc_offset))))
+#define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
+ + reloc_data.sym_section->output_offset)
+#define FINAL_SECTSTART \
+ (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
+#define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
+#define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
+#define TLS_REL (bfd_signed_vma) \
+ ((elf_hash_table (info))->tls_sec->output_section->vma)
+#define TLS_TBSS (align_power(TCB_SIZE, \
+ reloc_data.sym_section->alignment_power))
+#define ICARRY insn
+#define DEREFP (insn)
+
+#define none (0)
+
+#ifdef ARC_ENABLE_DEBUG
+#define PRINT_DEBUG_RELOC_INFO_BEFORE(FORMULA, TYPE) \
+ do \
+ { \
+ asection *sym_section = reloc_data.sym_section; \
+ asection *input_section = reloc_data.input_section; \
+ ARC_DEBUG ("RELOC_TYPE = " TYPE "\n"); \
+ ARC_DEBUG ("FORMULA = " FORMULA "\n"); \
+ ARC_DEBUG ("S = %#lx\n", S); \
+ ARC_DEBUG ("A = %#lx\n", A); \
+ ARC_DEBUG ("L = %lx\n", L); \
+ if (sym_section->output_section != NULL) \
+ ARC_DEBUG ("symbol_section->vma = %#lx\n", \
+ sym_section->output_section->vma \
+ + sym_section->output_offset); \
+ else \
+ ARC_DEBUG ("symbol_section->vma = NULL\n"); \
+ if (input_section->output_section != NULL) \
+ ARC_DEBUG ("input_section->vma = %#lx\n", \
+ input_section->output_section->vma \
+ + input_section->output_offset); \
+ else \
+ ARC_DEBUG ("input_section->vma = NULL\n"); \
+ ARC_DEBUG ("PCL = %#lx\n", P); \
+ ARC_DEBUG ("P = %#lx\n", P); \
+ ARC_DEBUG ("G = %#lx\n", G); \
+ ARC_DEBUG ("SDA_OFFSET = %#lx\n", _SDA_BASE_); \
+ ARC_DEBUG ("SDA_SET = %d\n", reloc_data.sdata_begin_symbol_vma_set); \
+ ARC_DEBUG ("GOT_OFFSET = %#lx\n", GOT); \
+ ARC_DEBUG ("relocation = %#08lx\n", relocation); \
+ ARC_DEBUG ("before = %#08x\n", (unsigned) insn); \
+ ARC_DEBUG ("data = %08x (%u) (%d)\n", (unsigned) relocation, \
+ (unsigned) relocation, (int) relocation); \
+ } \
+ while (0)
+
+#define PRINT_DEBUG_RELOC_INFO_AFTER \
+ do \
+ { \
+ ARC_DEBUG ("after = 0x%08x\n", (unsigned int) insn); \
+ } \
+ while (0)
+
+#else
+
+#define PRINT_DEBUG_RELOC_INFO_BEFORE(...)
+#define PRINT_DEBUG_RELOC_INFO_AFTER
+
+#endif /* ARC_ENABLE_DEBUG */
+
+#define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
+ case R_##TYPE: \
+ { \
+ bfd_signed_vma bitsize ATTRIBUTE_UNUSED = BITSIZE; \
+ relocation = FORMULA ; \
+ PRINT_DEBUG_RELOC_INFO_BEFORE (#FORMULA, #TYPE); \
+ insn = middle_endian_convert (insn, IS_ME (#FORMULA, abfd)); \
+ insn = (* get_replace_function (abfd, TYPE)) (insn, relocation); \
+ insn = middle_endian_convert (insn, IS_ME (#FORMULA, abfd)); \
+ PRINT_DEBUG_RELOC_INFO_AFTER; \
+ } \
+ break;
+
+static bfd_reloc_status_type
+arc_do_relocation (bfd_byte * contents,
+ struct arc_relocation_data reloc_data,
+ struct bfd_link_info *info)
+{
+ bfd_signed_vma relocation = 0;
+ bfd_vma insn;
+ bfd_vma orig_insn ATTRIBUTE_UNUSED;
+ bfd * abfd = reloc_data.input_section->owner;
+ struct elf_link_hash_table *htab ATTRIBUTE_UNUSED = elf_hash_table (info);
+ bfd_reloc_status_type flag;
+
+ if (!reloc_data.should_relocate)
+ return bfd_reloc_ok;
+
+ switch (reloc_data.howto->size)
+ {
+ case 2:
+ insn = arc_bfd_get_32 (abfd,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ case 1:
+ insn = arc_bfd_get_16 (abfd,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ case 0:
+ insn = arc_bfd_get_8 (abfd,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ default:
+ insn = 0;
+ BFD_ASSERT (0);
+ break;
+ }
+
+ orig_insn = insn;
+
+ switch (reloc_data.howto->type)
+ {
+#include "elf/arc-reloc.def"
+
+ default:
+ BFD_ASSERT (0);
+ break;
+ }
+
+ /* Check for relocation overflow. */
+ if (reloc_data.howto->complain_on_overflow != complain_overflow_dont)
+ flag = bfd_check_overflow (reloc_data.howto->complain_on_overflow,
+ reloc_data.howto->bitsize,
+ reloc_data.howto->rightshift,
+ bfd_arch_bits_per_address (abfd),
+ relocation);
+ else
+ flag = arc_special_overflow_checks (reloc_data, relocation, info);
+
+ if (flag != bfd_reloc_ok)
+ {
+ ARC_DEBUG ("Relocation overflows !\n");
+ DEBUG_ARC_RELOC (reloc_data);
+ ARC_DEBUG ("Relocation value = signed -> %d, unsigned -> %u"
+ ", hex -> (0x%08x)\n",
+ (int) relocation, (unsigned) relocation, (int) relocation);
+
+ return flag;
+ }
+
+ /* Write updated instruction back to memory. */
+ switch (reloc_data.howto->size)
+ {
+ case 2:
+ arc_bfd_put_32 (abfd, insn,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ case 1:
+ arc_bfd_put_16 (abfd, insn,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ case 0:
+ arc_bfd_put_8 (abfd, insn,
+ contents + reloc_data.reloc_offset,
+ reloc_data.input_section);
+ break;
+ default:
+ ARC_DEBUG ("size = %d\n", reloc_data.howto->size);
+ BFD_ASSERT (0);
+ break;
+ }
+
+ return bfd_reloc_ok;
+}
+#undef S
+#undef A
+#undef B
+#undef G
+#undef GOT
+#undef L
+#undef MES
+#undef P
+#undef SECTSTAR
+#undef SECTSTART
+#undef JLI
+#undef _SDA_BASE_
+#undef ICARRY
+#undef none
+
+#undef ARC_RELOC_HOWTO
+
+
+/* Relocate an arc ELF section.
+ Function : elf_arc_relocate_section
+ Brief : Relocate an arc section, by handling all the relocations
+ appearing in that section.
+ Args : output_bfd : The bfd being written to.
+ info : Link information.
+ input_bfd : The input bfd.
+ input_section : The section being relocated.
+ contents : contents of the section being relocated.
+ relocs : List of relocations in the section.
+ local_syms : is a pointer to the swapped in local symbols.
+ local_section : is an array giving the section in the input file
+ corresponding to the st_shndx field of each
+ local symbol. */
+static bfd_boolean
+elf_arc_relocate_section (bfd * output_bfd,
+ struct bfd_link_info * info,
+ bfd * input_bfd,
+ asection * input_section,
+ bfd_byte * contents,
+ Elf_Internal_Rela * relocs,
+ Elf_Internal_Sym * local_syms,
+ asection ** local_sections)
+{
+ Elf_Internal_Shdr * symtab_hdr;
+ struct elf_link_hash_entry ** sym_hashes;
+ Elf_Internal_Rela * rel;
+ Elf_Internal_Rela * wrel;
+ Elf_Internal_Rela * relend;
+ struct elf_link_hash_table * htab = elf_hash_table (info);
+ const struct elf_backend_data *bed;
+
+ bed = get_elf_backend_data (output_bfd);
+ symtab_hdr = &((elf_tdata (input_bfd))->symtab_hdr);
+ sym_hashes = elf_sym_hashes (input_bfd);
+
+ rel = wrel = relocs;
+ relend = relocs + input_section->reloc_count;
+ for (; rel < relend; wrel++, rel++)
+ {
+ enum elf_arc_reloc_type r_type;
+ reloc_howto_type * howto;
+ unsigned long r_symndx;
+ struct elf_link_hash_entry * h;
+ Elf_Internal_Sym * sym;
+ asection * sec;
+ struct elf_link_hash_entry * h2;
+ const char * msg;
+ bfd_boolean unresolved_reloc = FALSE;
+ bfd_boolean resolved_to_zero;
+
+ struct arc_relocation_data reloc_data =
+ {
+ .reloc_offset = 0,
+ .reloc_addend = 0,
+ .got_offset_value = 0,
+ .sym_value = 0,
+ .sym_section = NULL,
+ .howto = NULL,
+ .input_section = NULL,
+ .sdata_begin_symbol_vma = 0,
+ .sdata_begin_symbol_vma_set = FALSE,
+ .got_symbol_vma = 0,
+ .should_relocate = FALSE
+ };
+
+ r_type = ELFNN_R_TYPE (rel->r_info);
+
+ if (r_type >= (int) R_ARC_max)
+ {
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+ howto = arc_elf_howto (r_type);
+
+ r_symndx = ELFNN_R_SYM (rel->r_info);
+
+ /* If we are generating another .o file and the symbol in not
+ local, skip this relocation. */
+ if (bfd_link_relocatable (info))
+ {
+ /* This is a relocateable link. We don't have to change
+ anything, unless the reloc is against a section symbol,
+ in which case we have to adjust according to where the
+ section symbol winds up in the output section. */
+
+ /* Checks if this is a local symbol and thus the reloc
+ might (will??) be against a section symbol. */
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+ if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ sec = local_sections[r_symndx];
+
+ /* For RELA relocs. Just adjust the addend
+ value in the relocation entry. */
+ rel->r_addend += sec->output_offset + sym->st_value;
+
+ ARC_DEBUG ("local symbols reloc (section=%d %s) seen in %s\n",
+ (int) r_symndx, local_sections[r_symndx]->name,
+ __PRETTY_FUNCTION__);
+ }
+ }
+ }
+
+ h2 = elf_link_hash_lookup (elf_hash_table (info), "__SDATA_BEGIN__",
+ FALSE, FALSE, TRUE);
+
+ if (!reloc_data.sdata_begin_symbol_vma_set
+ && h2 != NULL && h2->root.type != bfd_link_hash_undefined
+ && h2->root.u.def.section->output_section != NULL)
+ /* TODO: Verify this condition. */
+ {
+ reloc_data.sdata_begin_symbol_vma =
+ (h2->root.u.def.value
+ + h2->root.u.def.section->output_section->vma);
+ reloc_data.sdata_begin_symbol_vma_set = TRUE;
+ }
+
+ reloc_data.input_section = input_section;
+ reloc_data.howto = howto;
+ reloc_data.reloc_offset = rel->r_offset;
+ reloc_data.reloc_addend = rel->r_addend;
+
+ /* This is a final link. */
+ h = NULL;
+ sym = NULL;
+ sec = NULL;
+
+ if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
+ {
+ sym = local_syms + r_symndx;
+ sec = local_sections[r_symndx];
+ }
+ else
+ {
+ bfd_boolean warned, ignored;
+ bfd_vma relocation ATTRIBUTE_UNUSED;
+
+ RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+ r_symndx, symtab_hdr, sym_hashes,
+ h, sec, relocation,
+ unresolved_reloc, warned, ignored);
+
+ /* TODO: This code is repeated from below. We should
+ clean it and remove duplications.
+ Sec is used check for discarded sections.
+ Need to redesign code below. */
+
+ /* Get the symbol's entry in the symtab. */
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* If we have encountered a definition for this symbol. */
+ if (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ {
+ reloc_data.sym_value = h->root.u.def.value;
+ sec = h->root.u.def.section;
+ }
+ }
+
+ /* Clean relocs for symbols in discarded sections. */
+ if (sec != NULL && discarded_section (sec))
+ {
+ _bfd_clear_contents (howto, input_bfd, input_section,
+ contents, rel->r_offset);
+ rel->r_info = 0;
+ rel->r_addend = 0;
+
+ /* For ld -r, remove relocations in debug sections against
+ sections defined in discarded sections. Not done for
+ eh_frame editing code expects to be present. */
+ if (bfd_link_relocatable (info)
+ && (input_section->flags & SEC_DEBUGGING))
+ wrel--;
+
+ continue;
+ }
+
+ if (bfd_link_relocatable (info))
+ {
+ if (wrel != rel)
+ *wrel = *rel;
+ continue;
+ }
+
+ resolved_to_zero = (h != NULL && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
+
+ if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
+ {
+ reloc_data.sym_value = sym->st_value;
+ reloc_data.sym_section = sec;
+ reloc_data.symbol_name =
+ bfd_elf_string_from_elf_section (input_bfd,
+ symtab_hdr->sh_link,
+ sym->st_name);
+
+ /* Mergeable section handling. */
+ if ((sec->flags & SEC_MERGE)
+ && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ asection *msec;
+ msec = sec;
+ rel->r_addend = _bfd_elf_rel_local_sym (output_bfd, sym,
+ &msec, rel->r_addend);
+ rel->r_addend -= (sec->output_section->vma
+ + sec->output_offset
+ + sym->st_value);
+ rel->r_addend += msec->output_section->vma + msec->output_offset;
+
+ reloc_data.reloc_addend = rel->r_addend;
+ }
+
+ BFD_ASSERT (htab->sgot != NULL || !is_reloc_for_GOT (howto));
+ if (htab->sgot != NULL)
+ reloc_data.got_symbol_vma = htab->sgot->output_section->vma
+ + htab->sgot->output_offset;
+
+ reloc_data.should_relocate = TRUE;
+ }
+ else /* Global symbol. */
+ {
+ /* FIXME: We should use the RELOC_FOR_GLOBAL_SYMBOL macro
+ (defined in elf-bfd.h) here. */
+
+ /* Get the symbol's entry in the symtab. */
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ {
+ struct elf_arc_link_hash_entry *ah_old
+ = (struct elf_arc_link_hash_entry *) h;
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ struct elf_arc_link_hash_entry *ah
+ = (struct elf_arc_link_hash_entry *) h;
+
+ if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents)
+ ah->got_ents = ah_old->got_ents;
+ }
+
+ /* TODO: Need to validate what was the intention. */
+ /* BFD_ASSERT ((h->dynindx == -1) || (h->forced_local != 0)); */
+ reloc_data.symbol_name = h->root.root.string;
+
+ /* If we have encountered a definition for this symbol. */
+ if (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ {
+ reloc_data.sym_value = h->root.u.def.value;
+ reloc_data.sym_section = h->root.u.def.section;
+
+ reloc_data.should_relocate = TRUE;
+
+ if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
+ {
+ struct elf_arc_link_hash_entry *ah =
+ (struct elf_arc_link_hash_entry *) h;
+ /* TODO: Change it to use arc_do_relocation with
+ ARC_32 reloc. Try to use ADD_RELA macro. */
+ bfd_vma relocation =
+ reloc_data.sym_value + reloc_data.reloc_addend
+ + (reloc_data.sym_section->output_section != NULL ?
+ (reloc_data.sym_section->output_offset
+ + reloc_data.sym_section->output_section->vma)
+ : 0);
+
+ BFD_ASSERT (ah->got_ents);
+ bfd_vma got_offset = ah->got_ents->offset;
+ bfd_put_32 (output_bfd, relocation,
+ htab->sgot->contents + got_offset);
+ }
+ if (is_reloc_for_PLT (howto) && h->plt.offset != (bfd_vma) -1)
+ {
+ /* TODO: This is repeated up here. */
+ reloc_data.sym_value = h->plt.offset;
+ reloc_data.sym_section = htab->splt;
+ }
+ }
+ else if (h->root.type == bfd_link_hash_undefweak)
+ {
+ /* Is weak symbol and has no definition. */
+ if (is_reloc_for_GOT (howto))
+ {
+ reloc_data.sym_value = h->root.u.def.value;
+ reloc_data.sym_section = htab->sgot;
+ reloc_data.should_relocate = TRUE;
+ }
+ else if (is_reloc_for_PLT (howto)
+ && h->plt.offset != (bfd_vma) -1)
+ {
+ /* TODO: This is repeated up here. */
+ reloc_data.sym_value = h->plt.offset;
+ reloc_data.sym_section = htab->splt;
+ reloc_data.should_relocate = TRUE;
+ }
+ /* See pr22269. */
+ else if (!resolved_to_zero)
+ continue;
+ }
+ else
+ {
+ if (is_reloc_for_GOT (howto))
+ {
+ reloc_data.sym_value = h->root.u.def.value;
+ reloc_data.sym_section = htab->sgot;
+
+ reloc_data.should_relocate = TRUE;
+ }
+ else if (is_reloc_for_PLT (howto))
+ {
+ /* Fail if it is linking for PIE and the symbol is
+ undefined. */
+ if (bfd_link_executable (info))
+ (*info->callbacks->undefined_symbol)
+ (info, h->root.root.string, input_bfd, input_section,
+ rel->r_offset, TRUE);
+ reloc_data.sym_value = h->plt.offset;
+ reloc_data.sym_section = htab->splt;
+
+ reloc_data.should_relocate = TRUE;
+ }
+ else if (!bfd_link_pic (info) || bfd_link_executable (info))
+ (*info->callbacks->undefined_symbol)
+ (info, h->root.root.string, input_bfd, input_section,
+ rel->r_offset, TRUE);
+ }
+
+ BFD_ASSERT (htab->sgot != NULL || !is_reloc_for_GOT (howto));
+ if (htab->sgot != NULL)
+ reloc_data.got_symbol_vma = htab->sgot->output_section->vma
+ + htab->sgot->output_offset;
+ }
+
+ if ((is_reloc_for_GOT (howto)
+ || is_reloc_for_TLS (howto)))
+ {
+ reloc_data.should_relocate = TRUE;
+
+ struct got_entry **list
+ = get_got_entry_list_for_symbol (input_bfd, r_symndx, h);
+
+ reloc_data.got_offset_value
+ = relocate_fix_got_relocs_for_got_info (list,
+ tls_type_for_reloc (howto),
+ info,
+ output_bfd,
+ r_symndx,
+ local_syms,
+ local_sections,
+ h,
+ &reloc_data);
+
+ if (h == NULL)
+ {
+ create_got_dynrelocs_for_single_entry
+ (got_entry_for_type (list,
+ arc_got_entry_type_for_reloc (howto)),
+ output_bfd, info, NULL);
+ }
+ }
+
+
+#define IS_ARC_PCREL_TYPE(TYPE) \
+ ( (TYPE == R_ARC_PC32) \
+ || (TYPE == R_ARC_32_PCREL))
+
+ switch (r_type)
+ {
+ case R_ARC_64:
+ case R_ARC_32:
+ case R_ARC_32_ME:
+ case R_ARC_PC32:
+ case R_ARC_32_PCREL:
+ case R_ARC_HI32_ME:
+ case R_ARC_LO32_ME:
+ if (bfd_link_pic (info)
+ && !resolved_to_zero
+ && (input_section->flags & SEC_ALLOC) != 0
+ && (!IS_ARC_PCREL_TYPE (r_type)
+ || (h != NULL
+ && h->dynindx != -1
+ && (!SYMBOL_REFERENCES_LOCAL (info, h)))))
+ {
+ Elf_Internal_Rela outrel;
+ bfd_byte *loc;
+ bfd_boolean skip = FALSE;
+ bfd_boolean relocate = FALSE;
+ asection *sreloc = _bfd_elf_get_dynamic_reloc_section
+ (input_bfd, input_section,
+ /*RELA*/ TRUE);
+
+ BFD_ASSERT (sreloc != NULL);
+
+ outrel.r_offset = _bfd_elf_section_offset (output_bfd,
+ info,
+ input_section,
+ rel->r_offset);
+
+ if (outrel.r_offset == (bfd_vma) -1)
+ skip = TRUE;
+
+ outrel.r_addend = rel->r_addend;
+ outrel.r_offset += (input_section->output_section->vma
+ + input_section->output_offset);
+
+ if (skip)
+ {
+ memset (&outrel, 0, sizeof outrel);
+ relocate = FALSE;
+ }
+ else if (h != NULL
+ && h->dynindx != -1
+ && (IS_ARC_PCREL_TYPE (r_type)
+ || !(bfd_link_executable (info)
+ || SYMBOLIC_BIND (info, h))
+ || ! h->def_regular))
+ {
+ BFD_ASSERT (h != NULL);
+ if ((input_section->flags & SEC_ALLOC) != 0)
+ relocate = FALSE;
+ else
+ relocate = TRUE;
+
+ BFD_ASSERT (h->dynindx != -1);
+ outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+ }
+ else
+ {
+ /* Handle local symbols, they either do not have a
+ global hash table entry (h == NULL), or are
+ forced local due to a version script
+ (h->forced_local), or the third condition is
+ legacy, it appears to say something like, for
+ links where we are pre-binding the symbols, or
+ there's not an entry for this symbol in the
+ dynamic symbol table, and it's a regular symbol
+ not defined in a shared object, then treat the
+ symbol as local, resolve it now. */
+ relocate = TRUE;
+ /* outrel.r_addend = 0; */
+ outrel.r_info = ELFNN_R_INFO (0, R_ARC_RELATIVE);
+ }
+
+ BFD_ASSERT (sreloc->contents != 0);
+
+ loc = sreloc->contents;
+ loc += sreloc->reloc_count * sizeof (ElfNN_External_Rela);
+ sreloc->reloc_count += 1;
+
+ bed->s->swap_reloca_out (output_bfd, &outrel, loc);
+
+ if (!relocate)
+ continue;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (is_reloc_SDA_relative (howto)
+ && !reloc_data.sdata_begin_symbol_vma_set)
+ {
+ _bfd_error_handler
+ ("error: linker symbol __SDATA_BEGIN__ not found");
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+
+ DEBUG_ARC_RELOC (reloc_data);
+
+ /* Make sure we have with a dynamic linker. In case of GOT and PLT
+ the sym_section should point to .got or .plt respectively. */
+ if ((is_reloc_for_GOT (howto) || is_reloc_for_PLT (howto))
+ && reloc_data.sym_section == NULL)
+ {
+ _bfd_error_handler
+ (_("GOT and PLT relocations cannot be fixed with a non dynamic" \
+ " linker"));
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+
+ msg = NULL;
+ switch (arc_do_relocation (contents, reloc_data, info))
+ {
+ case bfd_reloc_ok:
+ continue; /* The reloc processing loop. */
+
+ case bfd_reloc_overflow:
+ (*info->callbacks->reloc_overflow)
+ (info, (h ? &h->root : NULL), reloc_data.symbol_name, howto->name,
+ (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
+ break;
+
+ case bfd_reloc_undefined:
+ (*info->callbacks->undefined_symbol)
+ (info, reloc_data.symbol_name, input_bfd, input_section,
+ rel->r_offset, TRUE);
+ break;
+
+ case bfd_reloc_other:
+ /* xgettext:c-format */
+ msg = _("%pB(%pA): warning: unaligned access to symbol '%s' in the" \
+ " small data area");
+ break;
+
+ case bfd_reloc_outofrange:
+ /* xgettext:c-format */
+ msg = _("%pB(%pA): internal error: out of range error");
+ break;
+
+ case bfd_reloc_notsupported:
+ /* xgettext:c-format */
+ msg = _("%pB(%pA): internal error: unsupported relocation error");
+ break;
+
+ case bfd_reloc_dangerous:
+ /* xgettext:c-format */
+ msg = _("%pB(%pA): internal error: dangerous relocation");
+ break;
+
+ default:
+ /* xgettext:c-format */
+ msg = _("%pB(%pA): internal error: unknown error");
+ break;
+ }
+
+ if (msg)
+ _bfd_error_handler (msg, input_bfd, input_section,
+ reloc_data.symbol_name);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#define elf_arc_hash_table(p) \
+ (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
+ == ARC_ELF_DATA ? ((struct elf_arc_link_hash_table *) ((p)->hash)) : NULL)
+
+static bfd_boolean
+elf_arc_check_relocs (bfd * abfd,
+ struct bfd_link_info * info,
+ asection * sec,
+ const Elf_Internal_Rela * relocs)
+{
+ Elf_Internal_Shdr * symtab_hdr;
+ struct elf_link_hash_entry ** sym_hashes;
+ const Elf_Internal_Rela * rel;
+ const Elf_Internal_Rela * rel_end;
+ bfd * dynobj;
+ asection * sreloc = NULL;
+ struct elf_link_hash_table * htab = elf_hash_table (info);
+
+ if (bfd_link_relocatable (info))
+ return TRUE;
+
+ if (htab->dynobj == NULL)
+ htab->dynobj = abfd;
+
+ dynobj = (elf_hash_table (info))->dynobj;
+ symtab_hdr = &((elf_tdata (abfd))->symtab_hdr);
+ sym_hashes = elf_sym_hashes (abfd);
+
+ rel_end = relocs + sec->reloc_count;
+ for (rel = relocs; rel < rel_end; rel++)
+ {
+ enum elf_arc_reloc_type r_type;
+ reloc_howto_type *howto;
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+
+ r_type = ELFNN_R_TYPE (rel->r_info);
+
+ if (r_type >= (int) R_ARC_max)
+ {
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+ howto = arc_elf_howto (r_type);
+
+ /* Load symbol information. */
+ r_symndx = ELFNN_R_SYM (rel->r_info);
+ if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
+ h = NULL;
+ else /* Global one. */
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ }
+
+
+ switch (r_type)
+ {
+ case R_ARC_8:
+ case R_ARC_16:
+ case R_ARC_32:
+ case R_ARC_64:
+ case R_ARC_32_ME:
+ case R_ARC_HI32_ME:
+ case R_ARC_LO32_ME:
+ /* During shared library creation, these relocs should not
+ appear in a shared library (as memory will be read only
+ and the dynamic linker can not resolve these. However
+ the error should not occur for e.g. debugging or
+ non-readonly sections. */
+ if (h != NULL
+ && (bfd_link_dll (info) && !bfd_link_pie (info))
+ && (sec->flags & SEC_ALLOC) != 0
+ && (sec->flags & SEC_READONLY) != 0
+ && ((sec->flags & SEC_CODE) != 0
+ || (sec->flags & SEC_DEBUGGING) != 0))
+ {
+ const char *name;
+ if (h)
+ name = h->root.root.string;
+ else
+ name = "UNKNOWN";
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB: relocation %s against `%s' can not be used"
+ " when making a shared object; recompile with -fPIC"),
+ abfd,
+ arc_elf_howto (r_type)->name,
+ name);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+
+ /* In some cases we are not setting the 'non_got_ref' flag,
+ even though the relocations don't require a GOT access.
+ We should extend the testing in this area to ensure that
+ no significant cases are being missed. */
+ if (h)
+ h->non_got_ref = 1;
+
+ /* We don't need to handle relocs into sections not going
+ into the "real" output. */
+ if ((sec->flags & SEC_ALLOC) == 0)
+ break;
+
+ /* No need to do anything if we're not creating a shared
+ object. */
+ if (!bfd_link_pic (info)
+ || (h != NULL
+ && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)))
+ break;
+
+ /* FALLTHROUGH */
+ case R_ARC_PC32:
+ case R_ARC_32_PCREL:
+ if (!bfd_link_pic (info))
+ break;
+
+ if (((r_type != R_ARC_PC32 && r_type != R_ARC_32_PCREL)
+ || (!SYMBOL_REFERENCES_LOCAL (info, h))))
+ {
+ if (sreloc == NULL)
+ {
+ if (info->dynamic
+ && ! htab->dynamic_sections_created
+ && ! _bfd_elf_link_create_dynamic_sections (abfd, info))
+ return FALSE;
+ sreloc = _bfd_elf_make_dynamic_reloc_section (sec, dynobj,
+ 2, abfd,
+ /*rela*/
+ TRUE);
+
+ if (sreloc == NULL)
+ return FALSE;
+ }
+ sreloc->size += sizeof (ElfNN_External_Rela);
+ }
+ default:
+ break;
+ }
+
+ if (is_reloc_for_PLT (howto))
+ {
+ if (h == NULL)
+ continue;
+ else
+ if (h->forced_local == 0)
+ h->needs_plt = 1;
+ }
+
+ /* Add info to the symbol got_entry_list. */
+ if (is_reloc_for_GOT (howto)
+ || is_reloc_for_TLS (howto))
+ {
+ if (bfd_link_dll (info) && !bfd_link_pie (info)
+ && (r_type == R_ARC_TLS_LE_32 || r_type == R_ARC_TLS_LE_S9))
+ {
+ const char *name;
+ if (h)
+ name = h->root.root.string;
+ else
+ /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
+ name = "UNKNOWN";
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB: relocation %s against `%s' can not be used"
+ " when making a shared object; recompile with -fPIC"),
+ abfd,
+ arc_elf_howto (r_type)->name,
+ name);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+ if (! _bfd_elf_create_got_section (dynobj, info))
+ return FALSE;
+
+ arc_fill_got_info_for_reloc
+ (arc_got_entry_type_for_reloc (howto),
+ get_got_entry_list_for_symbol (abfd, r_symndx, h),
+ info,
+ h);
+ }
+ }
+
+ return TRUE;
+}
+
+static struct plt_version_t *
+arc_get_plt_version (struct bfd_link_info *info)
+{
+ int i;
+
+ for (i = 0; i < 1; i++)
+ {
+ ARC_DEBUG ("%d: size1 = %d, size2 = %d\n", i,
+ (int) plt_versions[i].entry_size,
+ (int) plt_versions[i].elem_size);
+ }
+
+ if (bfd_get_mach (info->output_bfd) == bfd_mach_arcv3_64
+ || bfd_get_mach(info->output_bfd) == bfd_mach_arcv3_32)
+ {
+ return &(plt_versions[ELF_ARCV3_PIC]);
+// if (bfd_link_pic (info))
+// else
+// return &(plt_versions[ELF_ARCV2_ABS]);
+ }
+ if (bfd_get_mach (info->output_bfd) == bfd_mach_arc_arcv2)
+ {
+ if (bfd_link_pic (info))
+ return &(plt_versions[ELF_ARCV2_PIC]);
+ else
+ return &(plt_versions[ELF_ARCV2_ABS]);
+ }
+ else
+ {
+ if (bfd_link_pic (info))
+ return &(plt_versions[ELF_ARC_PIC]);
+ else
+ return &(plt_versions[ELF_ARC_ABS]);
+ }
+ BFD_ASSERT(0);
+ return NULL;
+}
+
+static bfd_vma
+add_symbol_to_plt (struct bfd_link_info *info)
+{
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+ bfd_vma ret;
+
+ struct plt_version_t *plt_data = arc_get_plt_version (info);
+
+ /* If this is the first .plt entry, make room for the special first
+ entry. */
+ if (htab->splt->size == 0)
+ htab->splt->size += plt_data->entry_size;
+
+ ret = htab->splt->size;
+
+ htab->splt->size += plt_data->elem_size;
+ ARC_DEBUG ("PLT_SIZE = %d\n", (int) htab->splt->size);
+
+ htab->sgotplt->size += GOT_ENTRY_SIZE;
+ htab->srelplt->size += sizeof (ElfNN_External_Rela);
+ return ret;
+}
+
+#define PLT_DO_RELOCS_FOR_ENTRY(ABFD, DS, RELOCS) \
+ plt_do_relocs_for_symbol (ABFD, DS, RELOCS, 0, 0)
+
+static void
+plt_do_relocs_for_symbol (bfd *abfd,
+ struct elf_link_hash_table *htab,
+ const struct plt_reloc *reloc,
+ bfd_vma plt_offset,
+ bfd_vma symbol_got_offset)
+{
+ while (SYM_ONLY (reloc->symbol) != LAST_RELOC)
+ {
+ bfd_vma relocation = 0;
+
+ switch (SYM_ONLY (reloc->symbol))
+ {
+ case SGOT:
+ relocation
+ = htab->sgotplt->output_section->vma
+ + htab->sgotplt->output_offset + symbol_got_offset;
+ break;
+ }
+ relocation += reloc->addend;
+
+ if (IS_RELATIVE (reloc->symbol))
+ {
+ bfd_vma reloc_offset = reloc->offset;
+ reloc_offset -= (IS_INSN_32 (reloc->symbol)) ? 4 : 0;
+ reloc_offset -= (IS_INSN_24 (reloc->symbol)) ? 2 : 0;
+
+ relocation -= htab->splt->output_section->vma
+ + htab->splt->output_offset
+ + plt_offset + reloc_offset;
+ }
+
+ /* TODO: being ME is not a property of the relocation but of the
+ section of which is applying the relocation. */
+ if (IS_MIDDLE_ENDIAN (reloc->symbol) && !bfd_big_endian (abfd))
+ {
+ relocation
+ = ((relocation & 0xffff0000) >> 16)
+ | ((relocation & 0xffff) << 16);
+ }
+
+ switch (reloc->size)
+ {
+ case 32:
+ bfd_put_32 (htab->splt->output_section->owner,
+ relocation,
+ htab->splt->contents + plt_offset + reloc->offset);
+ break;
+ }
+
+ reloc = &(reloc[1]); /* Jump to next relocation. */
+ }
+}
+
+static void
+relocate_plt_for_symbol (bfd *output_bfd,
+ struct bfd_link_info *info,
+ struct elf_link_hash_entry *h)
+{
+ struct plt_version_t *plt_data = arc_get_plt_version (info);
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+ const struct elf_backend_data *bed;
+
+ bfd_vma plt_index = (h->plt.offset - plt_data->entry_size)
+ / plt_data->elem_size;
+ bfd_vma got_offset = (plt_index + 3) * GOT_ENTRY_SIZE;
+ bed = get_elf_backend_data (output_bfd);
+
+ ARC_DEBUG ("arc_info: PLT_OFFSET = %#lx, PLT_ENTRY_VMA = %#lx, \
+GOT_ENTRY_OFFSET = %#lx, GOT_ENTRY_VMA = %#lx, for symbol %s\n",
+ (long) h->plt.offset,
+ (long) (htab->splt->output_section->vma
+ + htab->splt->output_offset
+ + h->plt.offset),
+ (long) got_offset,
+ (long) (htab->sgotplt->output_section->vma
+ + htab->sgotplt->output_offset
+ + got_offset),
+ h->root.root.string);
+
+ {
+ bfd_vma i = 0;
+ uint16_t *ptr = (uint16_t *) plt_data->elem;
+
+ for (i = 0; i < plt_data->elem_size/2; i++)
+ {
+ uint16_t data = ptr[i];
+ bfd_put_16 (output_bfd,
+ (bfd_vma) data,
+ htab->splt->contents + h->plt.offset + (i*2));
+ }
+ }
+
+ plt_do_relocs_for_symbol (output_bfd, htab,
+ plt_data->elem_relocs,
+ h->plt.offset,
+ got_offset);
+
+ /* Fill in the entry in the global offset table. */
+ bfd_put_32 (output_bfd,
+ (bfd_vma) (htab->splt->output_section->vma
+ + htab->splt->output_offset),
+ htab->sgotplt->contents + got_offset);
+
+ /* TODO: Fill in the entry in the .rela.plt section. */
+ {
+ Elf_Internal_Rela rel;
+ bfd_byte *loc;
+
+ rel.r_offset = (htab->sgotplt->output_section->vma
+ + htab->sgotplt->output_offset
+ + got_offset);
+ rel.r_addend = 0;
+
+ BFD_ASSERT (h->dynindx != -1);
+ rel.r_info = ELFNN_R_INFO (h->dynindx, R_ARC_JMP_SLOT);
+
+ loc = htab->srelplt->contents;
+ loc += plt_index * sizeof (ElfNN_External_Rela); /* relA */
+ bed->s->swap_reloca_out (output_bfd, &rel, loc);
+ }
+}
+
+static void
+relocate_plt_for_entry (bfd *abfd,
+ struct bfd_link_info *info)
+{
+ struct plt_version_t *plt_data = arc_get_plt_version (info);
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+
+ {
+ bfd_vma i = 0;
+ uint16_t *ptr = (uint16_t *) plt_data->entry;
+ for (i = 0; i < plt_data->entry_size/2; i++)
+ {
+ uint16_t data = ptr[i];
+ bfd_put_16 (abfd,
+ (bfd_vma) data,
+ htab->splt->contents + (i*2));
+ }
+ }
+ PLT_DO_RELOCS_FOR_ENTRY (abfd, htab, plt_data->entry_relocs);
+}
+
+/* Desc : Adjust a symbol defined by a dynamic object and referenced
+ by a regular object. The current definition is in some section of
+ the dynamic object, but we're not including those sections. We
+ have to change the definition to something the rest of the link can
+ understand. */
+
+static bfd_boolean
+elf_arc_adjust_dynamic_symbol (struct bfd_link_info *info,
+ struct elf_link_hash_entry *h)
+{
+ asection *s;
+ bfd *dynobj = (elf_hash_table (info))->dynobj;
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+
+ if (h->type == STT_FUNC
+ || h->type == STT_GNU_IFUNC
+ || h->needs_plt == 1)
+ {
+ if (!bfd_link_pic (info) && !h->def_dynamic && !h->ref_dynamic)
+ {
+ /* This case can occur if we saw a PLT32 reloc in an input
+ file, but the symbol was never referred to by a dynamic
+ object. In such a case, we don't actually need to build
+ a procedure linkage table, and we can just do a PC32
+ reloc instead. */
+ BFD_ASSERT (h->needs_plt);
+ return TRUE;
+ }
+
+ /* Make sure this symbol is output as a dynamic symbol. */
+ if (h->dynindx == -1 && !h->forced_local
+ && !bfd_elf_link_record_dynamic_symbol (info, h))
+ return FALSE;
+
+ if (bfd_link_pic (info)
+ || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
+ {
+ bfd_vma loc = add_symbol_to_plt (info);
+
+ if (bfd_link_executable (info) && !h->def_regular)
+ {
+ h->root.u.def.section = htab->splt;
+ h->root.u.def.value = loc;
+ }
+ h->plt.offset = loc;
+ }
+ else
+ {
+ h->plt.offset = (bfd_vma) -1;
+ h->needs_plt = 0;
+ }
+ return TRUE;
+ }
+
+ /* If this is a weak symbol, and there is a real definition, the
+ processor independent code will have arranged for us to see the
+ real definition first, and we can just use the same value. */
+ if (h->is_weakalias)
+ {
+ struct elf_link_hash_entry *def = weakdef (h);
+ BFD_ASSERT (def->root.type == bfd_link_hash_defined);
+ h->root.u.def.section = def->root.u.def.section;
+ h->root.u.def.value = def->root.u.def.value;
+ return TRUE;
+ }
+
+ /* This is a reference to a symbol defined by a dynamic object which
+ is not a function. */
+
+ /* If we are creating a shared library, we must presume that the
+ only references to the symbol are via the global offset table.
+ For such cases we need not do anything here; the relocations will
+ be handled correctly by relocate_section. */
+ if (!bfd_link_executable (info))
+ return TRUE;
+
+ /* If there are no non-GOT references, we do not need a copy
+ relocation. */
+ if (!h->non_got_ref)
+ return TRUE;
+
+ /* If -z nocopyreloc was given, we won't generate them either. */
+ if (info->nocopyreloc)
+ {
+ h->non_got_ref = 0;
+ return TRUE;
+ }
+
+ /* We must allocate the symbol in our .dynbss section, which will
+ become part of the .bss section of the executable. There will be
+ an entry for this symbol in the .dynsym section. The dynamic
+ object will contain position independent code, so all references
+ from the dynamic object to this symbol will go through the global
+ offset table. The dynamic linker will use the .dynsym entry to
+ determine the address it must put in the global offset table, so
+ both the dynamic object and the regular object will refer to the
+ same memory location for the variable. */
+
+ if (htab == NULL)
+ return FALSE;
+
+ /* We must generate a R_ARC_COPY reloc to tell the dynamic linker to
+ copy the initial value out of the dynamic object and into the
+ runtime process image. We need to remember the offset into the
+ .rela.bss section we are going to use. */
+ if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
+ {
+ struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
+
+ BFD_ASSERT (arc_htab->elf.srelbss != NULL);
+ arc_htab->elf.srelbss->size += sizeof (ElfNN_External_Rela);
+ h->needs_copy = 1;
+ }
+
+ /* TODO: Move this also to arc_hash_table. */
+ s = bfd_get_section_by_name (dynobj, ".dynbss");
+ BFD_ASSERT (s != NULL);
+
+ return _bfd_elf_adjust_dynamic_copy (info, h, s);
+}
+
+/* Function : elf_arc_finish_dynamic_symbol
+ Brief : Finish up dynamic symbol handling. We set the
+ contents of various dynamic sections here.
+ Args : output_bfd :
+ info :
+ h :
+ sym :
+ Returns : True/False as the return status. */
+
+static bfd_boolean
+elf_arc_finish_dynamic_symbol (bfd * output_bfd,
+ struct bfd_link_info *info,
+ struct elf_link_hash_entry *h,
+ Elf_Internal_Sym * sym)
+{
+ const struct elf_backend_data *bed;
+
+ bed = get_elf_backend_data (output_bfd);
+
+ if (h->plt.offset != (bfd_vma) -1)
+ {
+ relocate_plt_for_symbol (output_bfd, info, h);
+
+ if (!h->def_regular)
+ {
+ /* Mark the symbol as undefined, rather than as defined in
+ the .plt section. Leave the value alone. */
+ sym->st_shndx = SHN_UNDEF;
+ }
+ }
+
+
+ /* This function traverses list of GOT entries and
+ create respective dynamic relocs. */
+ /* TODO: Make function to get list and not access the list directly. */
+ /* TODO: Move function to relocate_section create this relocs eagerly. */
+ struct elf_arc_link_hash_entry *ah =
+ (struct elf_arc_link_hash_entry *) h;
+ create_got_dynrelocs_for_got_info (&ah->got_ents,
+ output_bfd,
+ info,
+ h);
+
+ if (h->needs_copy)
+ {
+ struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
+
+ if (arc_htab == NULL)
+ return FALSE;
+
+ if (h->dynindx == -1
+ || (h->root.type != bfd_link_hash_defined
+ && h->root.type != bfd_link_hash_defweak)
+ || arc_htab->elf.srelbss == NULL)
+ abort ();
+
+ bfd_vma rel_offset = (h->root.u.def.value
+ + h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset);
+
+ bfd_byte * loc = arc_htab->elf.srelbss->contents
+ + (arc_htab->elf.srelbss->reloc_count * sizeof (ElfNN_External_Rela));
+ arc_htab->elf.srelbss->reloc_count++;
+
+ Elf_Internal_Rela rel;
+ rel.r_addend = 0;
+ rel.r_offset = rel_offset;
+
+ BFD_ASSERT (h->dynindx != -1);
+ rel.r_info = ELFNN_R_INFO (h->dynindx, R_ARC_COPY);
+
+ bed->s->swap_reloca_out (output_bfd, &rel, loc);
+ }
+
+ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */
+ if (strcmp (h->root.root.string, "_DYNAMIC") == 0
+ || strcmp (h->root.root.string, "__DYNAMIC") == 0
+ || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+ sym->st_shndx = SHN_ABS;
+
+ return TRUE;
+}
+
+#define GET_SYMBOL_OR_SECTION(TAG, SYMBOL, SECTION) \
+ case TAG: \
+ if (SYMBOL != NULL) \
+ h = elf_link_hash_lookup (elf_hash_table (info), \
+ SYMBOL, FALSE, FALSE, TRUE); \
+ else if (SECTION != NULL) \
+ s = bfd_get_linker_section (dynobj, SECTION); \
+ break;
+
+
+struct obfd_info_group {
+ bfd *output_bfd;
+ struct bfd_link_info *info;
+};
+
+static bfd_boolean
+arc_create_forced_local_got_entries_for_tls (struct bfd_hash_entry *bh,
+ void *data)
+{
+ struct elf_arc_link_hash_entry * h =
+ (struct elf_arc_link_hash_entry *) bh;
+ struct obfd_info_group *tmp = (struct obfd_info_group *) data;
+
+ if (h->got_ents != NULL)
+ {
+ BFD_ASSERT (h);
+
+ struct got_entry *list = h->got_ents;
+
+ while (list != NULL)
+ {
+ create_got_dynrelocs_for_single_entry (list, tmp->output_bfd,
+ tmp->info,
+ (struct elf_link_hash_entry *) h);
+ list = list->next;
+ }
+ }
+
+ return TRUE;
+}
+
+
+/* Function : elf_arc_finish_dynamic_sections
+ Brief : Finish up the dynamic sections handling.
+ Args : output_bfd :
+ info :
+ h :
+ sym :
+ Returns : True/False as the return status. */
+
+static bfd_boolean
+elf_arc_finish_dynamic_sections (bfd * output_bfd,
+ struct bfd_link_info *info)
+{
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+ bfd *dynobj = (elf_hash_table (info))->dynobj;
+ asection *sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+ const struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
+
+ if (sdyn)
+ {
+ ElfNN_External_Dyn *dyncon, *dynconend;
+
+ dyncon = (ElfNN_External_Dyn *) sdyn->contents;
+ dynconend
+ = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->size);
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn internal_dyn;
+ bfd_boolean do_it = FALSE;
+
+ struct elf_link_hash_entry *h = NULL;
+ asection *s = NULL;
+
+ bed->s->swap_dyn_in (dynobj, dyncon, &internal_dyn);
+
+ switch (internal_dyn.d_tag)
+ {
+ GET_SYMBOL_OR_SECTION (DT_INIT, info->init_function, NULL)
+ GET_SYMBOL_OR_SECTION (DT_FINI, info->fini_function, NULL)
+ GET_SYMBOL_OR_SECTION (DT_PLTGOT, NULL, ".plt")
+ GET_SYMBOL_OR_SECTION (DT_JMPREL, NULL, ".rela.plt")
+ GET_SYMBOL_OR_SECTION (DT_PLTRELSZ, NULL, ".rela.plt")
+ GET_SYMBOL_OR_SECTION (DT_VERSYM, NULL, ".gnu.version")
+ GET_SYMBOL_OR_SECTION (DT_VERDEF, NULL, ".gnu.version_d")
+ GET_SYMBOL_OR_SECTION (DT_VERNEED, NULL, ".gnu.version_r")
+ default:
+ break;
+ }
+
+ /* In case the dynamic symbols should be updated with a symbol. */
+ if (h != NULL
+ && (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak))
+ {
+ asection *asec_ptr;
+
+ internal_dyn.d_un.d_val = h->root.u.def.value;
+ asec_ptr = h->root.u.def.section;
+ if (asec_ptr->output_section != NULL)
+ {
+ internal_dyn.d_un.d_val +=
+ (asec_ptr->output_section->vma
+ + asec_ptr->output_offset);
+ }
+ else
+ {
+ /* The symbol is imported from another shared
+ library and does not apply to this one. */
+ internal_dyn.d_un.d_val = 0;
+ }
+ do_it = TRUE;
+ }
+ else if (s != NULL) /* With a section information. */
+ {
+ switch (internal_dyn.d_tag)
+ {
+ case DT_PLTGOT:
+ case DT_JMPREL:
+ case DT_VERSYM:
+ case DT_VERDEF:
+ case DT_VERNEED:
+ internal_dyn.d_un.d_ptr = (s->output_section->vma
+ + s->output_offset);
+ do_it = TRUE;
+ break;
+
+ case DT_PLTRELSZ:
+ internal_dyn.d_un.d_val = s->size;
+ do_it = TRUE;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (do_it)
+ bed->s->swap_dyn_out (output_bfd, &internal_dyn, dyncon);
+ }
+
+ if (htab->splt->size > 0)
+ {
+ relocate_plt_for_entry (output_bfd, info);
+ }
+
+ /* TODO: Validate this. */
+ if (htab->srelplt->output_section != bfd_abs_section_ptr)
+ elf_section_data (htab->srelplt->output_section)
+ ->this_hdr.sh_entsize = GOT_ENTRY_SIZE * 3;
+ }
+
+ /* Fill in the first three entries in the global offset table. */
+ if (htab->sgot)
+ {
+ struct elf_link_hash_entry *h;
+ h = elf_link_hash_lookup (elf_hash_table (info), "_GLOBAL_OFFSET_TABLE_",
+ FALSE, FALSE, TRUE);
+
+ if (h != NULL && h->root.type != bfd_link_hash_undefined
+ && h->root.u.def.section != NULL)
+ {
+ asection *sec = h->root.u.def.section;
+
+ if (sdyn == NULL) {
+ write_in_got(output_bfd, (bfd_vma) 0,
+ sec->contents);
+ }
+ else {
+ write_in_got(output_bfd,
+ sdyn->output_section->vma + sdyn->output_offset,
+ sec->contents);
+ }
+ write_in_got(output_bfd, (bfd_vma) 0, sec->contents + (GOT_ENTRY_SIZE));
+ write_in_got(output_bfd, (bfd_vma) 0, sec->contents + (GOT_ENTRY_SIZE * 2));
+ }
+ }
+
+ struct obfd_info_group group;
+ group.output_bfd = output_bfd;
+ group.info = info;
+ bfd_hash_traverse (&info->hash->table,
+ arc_create_forced_local_got_entries_for_tls, &group);
+
+ return TRUE;
+}
+
+#define ADD_DYNAMIC_SYMBOL(NAME, TAG) \
+ h = elf_link_hash_lookup (elf_hash_table (info), \
+ NAME, FALSE, FALSE, FALSE); \
+ if ((h != NULL && (h->ref_regular || h->def_regular))) \
+ if (! _bfd_elf_add_dynamic_entry (info, TAG, 0)) \
+ return FALSE;
+
+/* Set the sizes of the dynamic sections. */
+static bfd_boolean
+elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+ struct bfd_link_info *info)
+{
+ bfd *dynobj;
+ asection *s;
+ bfd_boolean relocs_exist = FALSE;
+ bfd_boolean reltext_exist = FALSE;
+ struct elf_link_hash_table *htab = elf_hash_table (info);
+
+ dynobj = htab->dynobj;
+ BFD_ASSERT (dynobj != NULL);
+
+ if (htab->dynamic_sections_created)
+ {
+ struct elf_link_hash_entry *h;
+
+ /* Set the contents of the .interp section to the
+ interpreter. */
+ if (bfd_link_executable (info) && !info->nointerp)
+ {
+ s = bfd_get_section_by_name (dynobj, ".interp");
+ BFD_ASSERT (s != NULL);
+ s->size = sizeof (ELFNN_DYNAMIC_INTERPRETER);
+ s->contents = (unsigned char *) ELFNN_DYNAMIC_INTERPRETER;
+ }
+
+ /* Add some entries to the .dynamic section. We fill in some of
+ the values later, in elf_bfd_final_link, but we must add the
+ entries now so that we know the final size of the .dynamic
+ section. Checking if the .init section is present. We also
+ create DT_INIT and DT_FINI entries if the init_str has been
+ changed by the user. */
+ ADD_DYNAMIC_SYMBOL (info->init_function, DT_INIT);
+ ADD_DYNAMIC_SYMBOL (info->fini_function, DT_FINI);
+ }
+ else
+ {
+ /* We may have created entries in the .rela.got section.
+ However, if we are not creating the dynamic sections, we will
+ not actually use these entries. Reset the size of .rela.got,
+ which will cause it to get stripped from the output file
+ below. */
+ if (htab->srelgot != NULL)
+ htab->srelgot->size = 0;
+ }
+
+ for (s = dynobj->sections; s != NULL; s = s->next)
+ {
+ if ((s->flags & SEC_LINKER_CREATED) == 0)
+ continue;
+
+ if (s == htab->splt
+ || s == htab->sgot
+ || s == htab->sgotplt
+ || s == htab->sdynbss)
+ {
+ /* Strip this section if we don't need it. */
+ }
+ else if (strncmp (s->name, ".rela", 5) == 0)
+ {
+ if (s->size != 0 && s != htab->srelplt)
+ {
+ if (!reltext_exist)
+ {
+ const char *name = s->name + 5;
+ bfd *ibfd;
+ for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
+ if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour
+ && ibfd->flags & DYNAMIC)
+ {
+ asection *target = bfd_get_section_by_name (ibfd, name);
+ if (target != NULL
+ && elf_section_data (target)->sreloc == s
+ && ((target->output_section->flags
+ & (SEC_READONLY | SEC_ALLOC))
+ == (SEC_READONLY | SEC_ALLOC)))
+ {
+ reltext_exist = TRUE;
+ break;
+ }
+ }
+ }
+ relocs_exist = TRUE;
+ }
+
+ /* We use the reloc_count field as a counter if we need to
+ copy relocs into the output file. */
+ s->reloc_count = 0;
+ }
+ else
+ {
+ /* It's not one of our sections, so don't allocate space. */
+ continue;
+ }
+
+ if (s->size == 0)
+ {
+ s->flags |= SEC_EXCLUDE;
+ continue;
+ }
+
+ if ((s->flags & SEC_HAS_CONTENTS) == 0)
+ continue;
+
+ /* Allocate memory for the section contents. */
+ s->contents = bfd_zalloc (dynobj, s->size);
+ if (s->contents == NULL)
+ return FALSE;
+ }
+
+ if (htab->dynamic_sections_created)
+ {
+ /* TODO: Check if this is needed. */
+ if (!bfd_link_pic (info))
+ if (!_bfd_elf_add_dynamic_entry (info, DT_DEBUG, 0))
+ return FALSE;
+
+ if (htab->splt && (htab->splt->flags & SEC_EXCLUDE) == 0)
+ if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0)
+ || !_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
+ || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
+ || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
+ return FALSE;
+
+ if (relocs_exist)
+ if (!_bfd_elf_add_dynamic_entry (info, DT_RELA, 0)
+ || !_bfd_elf_add_dynamic_entry (info, DT_RELASZ, 0)
+ || !_bfd_elf_add_dynamic_entry (info, DT_RELAENT,
+ sizeof (ElfNN_External_Rela)))
+ return FALSE;
+
+ if (reltext_exist)
+ if (!_bfd_elf_add_dynamic_entry (info, DT_TEXTREL, 0))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/* Classify dynamic relocs such that -z combreloc can reorder and combine
+ them. */
+static enum elf_reloc_type_class
+arc_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ const asection *rel_sec ATTRIBUTE_UNUSED,
+ const Elf_Internal_Rela *rela)
+{
+ switch ((int) ELFNN_R_TYPE (rela->r_info))
+ {
+ case R_ARC_RELATIVE:
+ return reloc_class_relative;
+ case R_ARC_JMP_SLOT:
+ return reloc_class_plt;
+ case R_ARC_COPY:
+ return reloc_class_copy;
+ /* TODO: Needed in future to support ifunc. */
+ /*
+ case R_ARC_IRELATIVE:
+ return reloc_class_ifunc;
+ */
+ default:
+ return reloc_class_normal;
+ }
+}
+
+/* We use this so we can override certain functions
+ (though currently we don't). */
+
+const struct elf_size_info arc_elfNN_size_info =
+ {
+ sizeof (ElfNN_External_Ehdr),
+ sizeof (ElfNN_External_Phdr),
+ sizeof (ElfNN_External_Shdr),
+ sizeof (ElfNN_External_Rel),
+ sizeof (ElfNN_External_Rela),
+ sizeof (ElfNN_External_Sym),
+ sizeof (ElfNN_External_Dyn),
+ sizeof (Elf_External_Note),
+ 4,
+ 1,
+ ARCH_SIZE,
+ LOG_FILE_ALIGN,
+ ELFCLASSNN, EV_CURRENT,
+ bfd_elfNN_write_out_phdrs,
+ bfd_elfNN_write_shdrs_and_ehdr,
+ bfd_elfNN_checksum_contents,
+ bfd_elfNN_write_relocs,
+ bfd_elfNN_swap_symbol_in,
+ bfd_elfNN_swap_symbol_out,
+ bfd_elfNN_slurp_reloc_table,
+ bfd_elfNN_slurp_symbol_table,
+ bfd_elfNN_swap_dyn_in,
+ bfd_elfNN_swap_dyn_out,
+ bfd_elfNN_swap_reloc_in,
+ bfd_elfNN_swap_reloc_out,
+ bfd_elfNN_swap_reloca_in,
+ bfd_elfNN_swap_reloca_out
+ };
+
+/* GDB expects general purpose registers to be in section .reg. However Linux
+ kernel doesn't create this section and instead writes registers to NOTE
+ section. It is up to the binutils to create a pseudo-section .reg from the
+ contents of NOTE. Also BFD will read pid and signal number from NOTE. This
+ function relies on offsets inside elf_prstatus structure in Linux to be
+ stable. */
+
+static bfd_boolean
+elfNN_arc_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
+{
+ int offset;
+ size_t size;
+
+ switch (note->descsz)
+ {
+ default:
+ return FALSE;
+
+ case 236: /* sizeof (struct elf_prstatus) on Linux/arc. */
+ /* pr_cursig */
+ elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
+ /* pr_pid */
+ elf_tdata (abfd)->core->lwpid = bfd_get_32 (abfd, note->descdata + 24);
+ /* pr_regs */
+ offset = 72;
+ size = (40 * 4); /* There are 40 registers in user_regs_struct. */
+ break;
+ }
+ /* Make a ".reg/999" section. */
+ return _bfd_elfcore_make_pseudosection (abfd, ".reg", size,
+ note->descpos + offset);
+}
+
+/* Determine whether an object attribute tag takes an integer, a
+ string or both. */
+
+static int
+elfNN_arc_obj_attrs_arg_type (int tag)
+{
+ if (tag == Tag_ARC_CPU_name
+ || tag == Tag_ARC_ISA_config
+ || tag == Tag_ARC_ISA_apex)
+ return ATTR_TYPE_FLAG_STR_VAL;
+ else if (tag < (Tag_ARC_ISA_mpy_option + 1))
+ return ATTR_TYPE_FLAG_INT_VAL;
+ else
+ return (tag & 1) != 0 ? ATTR_TYPE_FLAG_STR_VAL : ATTR_TYPE_FLAG_INT_VAL;
+}
+
+/* Attribute numbers >=14 can be safely ignored. */
+
+static bfd_boolean
+elfNN_arc_obj_attrs_handle_unknown (bfd *abfd, int tag)
+{
+ if ((tag & 127) < (Tag_ARC_ISA_mpy_option + 1))
+ {
+ _bfd_error_handler
+ (_("%pB: unknown mandatory ARC object attribute %d"),
+ abfd, tag);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+ else
+ {
+ _bfd_error_handler
+ (_("warning: %pB: unknown ARC object attribute %d"),
+ abfd, tag);
+ return TRUE;
+ }
+}
+
+/* Handle an ARC specific section when reading an object file. This is
+ called when bfd_section_from_shdr finds a section with an unknown
+ type. */
+
+static bfd_boolean
+elfNN_arc_section_from_shdr (bfd *abfd,
+ Elf_Internal_Shdr * hdr,
+ const char *name,
+ int shindex)
+{
+ switch (hdr->sh_type)
+ {
+ case 0x0c: /* MWDT specific section, don't complain about it. */
+ case SHT_ARC_ATTRIBUTES:
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Delete a number of bytes from a given section while relaxing. */
+
+static bfd_boolean
+arc_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
+ asection *sec, bfd_vma addr, int count)
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ unsigned int sec_shndx;
+ bfd_byte *contents;
+ Elf_Internal_Rela *irel, *irelend;
+ bfd_vma toaddr;
+ Elf_Internal_Sym *isym;
+ Elf_Internal_Sym *isymend;
+ struct elf_link_hash_entry **sym_hashes;
+ struct elf_link_hash_entry **end_hashes;
+ struct elf_link_hash_entry **start_hashes;
+ unsigned int symcount;
+
+ sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
+
+ contents = elf_section_data (sec)->this_hdr.contents;
+
+ toaddr = sec->size;
+
+ irel = elf_section_data (sec)->relocs;
+ irelend = irel + sec->reloc_count;
+
+ /* Actually delete the bytes. */
+ memmove (contents + addr, contents + addr + count,
+ (size_t) (toaddr - addr - count));
+ sec->size -= count;
+
+ /* Adjust all the relocs. */
+ for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
+ /* Get the new reloc address. */
+ if ((irel->r_offset > addr && irel->r_offset < toaddr))
+ irel->r_offset -= count;
+
+ /* Adjust the local symbols defined in this section. */
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ isym = (Elf_Internal_Sym *) symtab_hdr->contents;
+ for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
+ {
+ if (isym->st_shndx == sec_shndx
+ && isym->st_value > addr
+ && isym->st_value <= toaddr)
+ {
+ /* Adjust the addend of SWITCH relocations in this section,
+ which reference this local symbol. */
+ isym->st_value -= count;
+ }
+ }
+
+ /* Now adjust the global symbols defined in this section. */
+ symcount = (symtab_hdr->sh_size / sizeof (ElfNN_External_Sym)
+ - symtab_hdr->sh_info);
+ sym_hashes = start_hashes = elf_sym_hashes (abfd);
+ end_hashes = sym_hashes + symcount;
+
+ for (; sym_hashes < end_hashes; sym_hashes++)
+ {
+ struct elf_link_hash_entry *sym_hash = *sym_hashes;
+
+ /* The '--wrap SYMBOL' option is causing a pain when the object file,
+ containing the definition of __wrap_SYMBOL, includes a direct
+ call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
+ the same symbol (which is __wrap_SYMBOL), but still exist as two
+ different symbols in 'sym_hashes', we don't want to adjust
+ the global symbol __wrap_SYMBOL twice.
+ This check is only relevant when symbols are being wrapped. */
+ if (link_info->wrap_hash != NULL)
+ {
+ struct elf_link_hash_entry **cur_sym_hashes;
+
+ /* Loop only over the symbols whom been already checked. */
+ for (cur_sym_hashes = start_hashes; cur_sym_hashes < sym_hashes;
+ cur_sym_hashes++)
+ /* If the current symbol is identical to 'sym_hash', that means
+ the symbol was already adjusted (or at least checked). */
+ if (*cur_sym_hashes == sym_hash)
+ break;
+
+ /* Don't adjust the symbol again. */
+ if (cur_sym_hashes < sym_hashes)
+ continue;
+ }
+
+ if ((sym_hash->root.type == bfd_link_hash_defined
+ || sym_hash->root.type == bfd_link_hash_defweak)
+ && sym_hash->root.u.def.section == sec)
+ {
+ /* As above, adjust the value if needed. */
+ if (sym_hash->root.u.def.value > addr
+ && sym_hash->root.u.def.value <= toaddr)
+ sym_hash->root.u.def.value -= count;
+
+ /* As above, adjust the size if needed. */
+ if (sym_hash->root.u.def.value <= addr
+ && sym_hash->root.u.def.value + sym_hash->size > addr
+ && sym_hash->root.u.def.value + sym_hash->size <= toaddr)
+ sym_hash->size -= count;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Check Tag_ARC_PCS_config if we can relax. */
+static bfd_boolean
+arc_can_relax_p (bfd *abfd)
+{
+ obj_attribute *attr = elf_known_obj_attributes_proc (abfd);
+
+ if (attr[Tag_ARC_PCS_config].i & 0x100)
+ return TRUE;
+ return FALSE;
+}
+
+/* Relaxation hook.
+
+ These are the current relaxing opportunities available:
+
+ * R_ARC_GOTPC32 => R_ARC_PCREL.
+ * R_ARC_S25W_PCREL => R_ARC_S13_PCREL.
+
+ This is a two step relaxation procedure, in the first round, we
+ relax all the above opportunities. In the second round, we deal
+ with function align by removing unnecessary NOP_S placed by the
+ assembler.
+
+ Inspired from CRX and RISCV backends. */
+
+static bfd_boolean
+arc_elf_relax_section (bfd *abfd, asection *sec,
+ struct bfd_link_info *link_info, bfd_boolean *again)
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ Elf_Internal_Rela *internal_relocs;
+ Elf_Internal_Rela *irel, *irelend;
+ bfd_byte *contents = NULL;
+ Elf_Internal_Sym *isymbuf = NULL;
+ bfd_boolean do_relax = FALSE;
+
+ /* Assume nothing changes. */
+ *again = FALSE;
+
+ /* Check if we can do size related relaxation. */
+ do_relax = arc_can_relax_p (abfd);
+
+ /* We don't have to do anything for a relocatable link, if this
+ section does not have relocs, or if this is not a code
+ section. */
+ if (bfd_link_relocatable (link_info)
+ || (sec->flags & SEC_RELOC) == 0
+ || sec->reloc_count == 0
+ || sec->sec_flg0
+ || (sec->flags & SEC_CODE) == 0)
+ return TRUE;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+
+ /* Get a copy of the native relocations. */
+ internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
+ link_info->keep_memory);
+ if (internal_relocs == NULL)
+ goto error_return;
+
+ /* Walk through them looking for relaxing opportunities. */
+ irelend = internal_relocs + sec->reloc_count;
+ for (irel = internal_relocs; irel < irelend; irel++)
+ {
+ asection *sym_sec;
+ struct elf_link_hash_entry *htop = NULL;
+ bfd_vma symval;
+
+ /* If this isn't something that can be relaxed, then ignore this
+ reloc. */
+ if (ELFNN_R_TYPE (irel->r_info) != (int) R_ARC_GOTPC32
+ && ELFNN_R_TYPE (irel->r_info) != (int) R_ARC_S25W_PCREL
+ && ELFNN_R_TYPE (irel->r_info) != (int) R_ARC_ALIGN)
+ continue;
+
+ /* Get the section contents if we haven't done so already. */
+ if (contents == NULL)
+ {
+ /* Get cached copy if it exists. */
+ if (elf_section_data (sec)->this_hdr.contents != NULL)
+ contents = elf_section_data (sec)->this_hdr.contents;
+ /* Go get them off disk. */
+ else if (!bfd_malloc_and_get_section (abfd, sec, &contents))
+ goto error_return;
+ }
+
+ /* Read this BFD's local symbols if we haven't done so already. */
+ if (isymbuf == NULL && symtab_hdr->sh_info != 0)
+ {
+ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
+ if (isymbuf == NULL)
+ isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
+ symtab_hdr->sh_info, 0,
+ NULL, NULL, NULL);
+ if (isymbuf == NULL)
+ goto error_return;
+ }
+
+ /* Get the value of the symbol referred to by the reloc. */
+ if (ELFNN_R_SYM (irel->r_info) < symtab_hdr->sh_info)
+ {
+ /* A local symbol. */
+ Elf_Internal_Sym *isym;
+
+ isym = isymbuf + ELFNN_R_SYM (irel->r_info);
+ sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
+ symval = isym->st_value;
+ /* If the reloc is absolute, it will not have
+ a symbol or section associated with it. */
+ if (sym_sec)
+ symval += sym_sec->output_section->vma
+ + sym_sec->output_offset;
+ }
+ else
+ {
+ /* An external symbol. */
+ unsigned int indx = ELFNN_R_SYM (irel->r_info) - symtab_hdr->sh_info;
+ htop = elf_sym_hashes (abfd)[indx];
+
+ BFD_ASSERT (htop != NULL);
+ if (htop->root.type != bfd_link_hash_defined
+ && htop->root.type != bfd_link_hash_defweak)
+ /* This appears to be a reference to an undefined
+ symbol. Just ignore it--it will be caught by the
+ regular reloc processing. */
+ continue;
+
+ symval = (htop->root.u.def.value
+ + htop->root.u.def.section->output_section->vma
+ + htop->root.u.def.section->output_offset);
+ sym_sec = htop->root.u.def.section;
+ }
+
+ if (ELFNN_R_TYPE (irel->r_info) == (int) R_ARC_GOTPC32
+ && SYMBOL_REFERENCES_LOCAL (link_info, htop)
+ && link_info->relax_pass == 0)
+ {
+ unsigned int code;
+
+ /* Get the opcode. */
+ code = bfd_get_32_me (abfd, contents + irel->r_offset - 4);
+
+ /* Note that we've changed the relocs, section contents, etc. */
+ elf_section_data (sec)->relocs = internal_relocs;
+ elf_section_data (sec)->this_hdr.contents = contents;
+ symtab_hdr->contents = (unsigned char *) isymbuf;
+
+ /* Fix the relocation's type. */
+ irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info), R_ARC_PC32);
+
+ /* ld rA,[pcl,symbol@tgot] -> add rA,pcl,symbol@pcl. */
+ /* 0010 0bbb aa11 0ZZX DBBB 1111 10AA AAAA.
+ 111 00 000 0111 xx xxxx*/
+ code &= ~0x27307F80;
+ BFD_ASSERT (code <= 62UL);
+ code |= 0x27007F80;
+
+ /* Write back the new instruction. */
+ bfd_put_32_me (abfd, code, contents + irel->r_offset - 4);
+
+ /* The size isn't changed, don't redo. */
+ }
+
+ /* Any of the next relax rules are changing the size, allow them
+ is assembler was informed. */
+ if (!do_relax)
+ continue;
+
+ if (ELFNN_R_TYPE (irel->r_info) == (int) R_ARC_S25W_PCREL
+ && link_info->relax_pass == 0)
+ {
+ unsigned int code;
+ bfd_vma value = symval + irel->r_addend;
+ bfd_vma dot, gap;
+
+ /* Get the address (PCL) of this instruction. */
+ dot = (sec->output_section->vma
+ + sec->output_offset + irel->r_offset) & ~0x03;
+
+ /* Compute the distance from this insn to the branch target. */
+ gap = value - dot;
+
+ /* Check if the gap falls in the range that can be
+ accomodated in 13bit signed range (32-bit aligned). */
+ if ((int) gap < -4094 || (int) gap > 4097 || ((int) gap & 0x3) != 0)
+ continue;
+
+ /* Get the opcode. */
+ code = bfd_get_32_me (abfd, contents + irel->r_offset);
+ /* bl @symb@pcl -> bl_s @symb@pcl. */
+ /* 0000 1sss ssss ss10 SSSS SSSS SSNR tttt. */
+ BFD_ASSERT ((code & 0xF8030000) == 0x08020000);
+
+ /* Check for delay slot bit. */
+ if (code & 0x20)
+ continue;
+
+ /* Note that we've changed the relocs, section contents, etc. */
+ elf_section_data (sec)->relocs = internal_relocs;
+ elf_section_data (sec)->this_hdr.contents = contents;
+ symtab_hdr->contents = (unsigned char *) isymbuf;
+
+ /* Fix the relocation's type. */
+ irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info),
+ R_ARC_S13_PCREL);
+
+ /* Write back bl_s instruction. */
+ bfd_put_16 (abfd, 0xF800, contents + irel->r_offset);
+ /* Delete two bytes of data. */
+ if (!arc_relax_delete_bytes (link_info, abfd, sec,
+ irel->r_offset + 2, 2))
+ goto error_return;
+
+ *again = TRUE;
+ }
+
+ if (ELFNN_R_TYPE (irel->r_info) == (int) R_ARC_ALIGN
+ && link_info->relax_pass == 1)
+ {
+ bfd_vma aligned_addr;
+ bfd_vma nop_bytes;
+ bfd_vma alignment = 4;
+
+ if (irel->r_addend == 2)
+ alignment = 2;
+ aligned_addr = ((irel->r_offset - 1) & ~(alignment - 1)) + alignment;
+ nop_bytes = aligned_addr - irel->r_offset;
+
+ /* Cannot remove more than we have left. */
+ BFD_ASSERT (irel->r_addend >= nop_bytes);
+ /* I should be always 16bit multiple quantum. */
+ BFD_ASSERT (nop_bytes == 0 || nop_bytes == 2);
+
+ /* Once we aligned we cannot relax anything else. */
+ sec->sec_flg0 = TRUE;
+
+ /* Note that we've changed the relocs, section contents, etc. */
+ elf_section_data (sec)->relocs = internal_relocs;
+ elf_section_data (sec)->this_hdr.contents = contents;
+ symtab_hdr->contents = (unsigned char *) isymbuf;
+
+ /* Delete the relocation's type. */
+ irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info),
+ R_ARC_NONE);
+
+ /* Add an NOP_S if needed. */
+ if (nop_bytes != 0)
+ bfd_put_16 (abfd, 0x78E0, contents + irel->r_offset);
+
+ /* Delete nop_bytes bytes of data. */
+ if (!arc_relax_delete_bytes (link_info, abfd, sec,
+ irel->r_offset + nop_bytes,
+ irel->r_addend - nop_bytes))
+ goto error_return;
+
+ *again = TRUE;
+ }
+ }
+
+ if (isymbuf != NULL
+ && symtab_hdr->contents != (unsigned char *) isymbuf)
+ {
+ if (!link_info->keep_memory)
+ free (isymbuf);
+ else
+ /* Cache the symbols for elf_link_input_bfd. */
+ symtab_hdr->contents = (unsigned char *) isymbuf;
+ }
+
+ if (contents != NULL
+ && elf_section_data (sec)->this_hdr.contents != contents)
+ {
+ if (!link_info->keep_memory)
+ free (contents);
+ else
+ /* Cache the section contents for elf_link_input_bfd. */
+ elf_section_data (sec)->this_hdr.contents = contents;
+ }
+
+ if (elf_section_data (sec)->relocs != internal_relocs)
+ free (internal_relocs);
+
+ return TRUE;
+
+ error_return:
+ if (symtab_hdr->contents != (unsigned char *) isymbuf)
+ free (isymbuf);
+ if (elf_section_data (sec)->this_hdr.contents != contents)
+ free (contents);
+ if (elf_section_data (sec)->relocs != internal_relocs)
+ free (internal_relocs);
+
+ return FALSE;
+}
+
+#define TARGET_LITTLE_SYM arc_elfNN_le_vec
+#define TARGET_LITTLE_NAME "elfNN-littlearc"
+#define TARGET_BIG_SYM arc_elfNN_be_vec
+#define TARGET_BIG_NAME "elfNN-bigarc"
+#define ELF_ARCH bfd_arch_arc
+#define ELF_TARGET_ID ARC_ELF_DATA
+
+#if ARCH_SIZE == 32
+# define ELF_MACHINE_CODE EM_ARC_COMPACT
+# define ELF_MACHINE_ALT1 EM_ARC_COMPACT2
+# define ELF_MACHINE_ALT2 EM_ARC_COMPACT3_64
+#else
+# define ELF_MACHINE_CODE EM_ARC_COMPACT3_64
+# define ELF_MACHINE_ALT1 EM_ARC_COMPACT2
+/* To be deprecated and instead used for ARCv3 32 bit machine. */
+# define ELF_MACHINE_ALT2 EM_ARC_COMPACT
+#endif
+
+#define ELF_MAXPAGESIZE 0x2000
+
+#define bfd_elfNN_bfd_link_hash_table_create arc_elf_link_hash_table_create
+
+#define bfd_elfNN_bfd_merge_private_bfd_data arc_elf_merge_private_bfd_data
+#define bfd_elfNN_bfd_reloc_type_lookup arc_elfNN_bfd_reloc_type_lookup
+#define bfd_elfNN_bfd_set_private_flags arc_elf_set_private_flags
+#define bfd_elfNN_bfd_print_private_bfd_data arc_elf_print_private_bfd_data
+#define bfd_elfNN_bfd_copy_private_bfd_data arc_elf_copy_private_bfd_data
+#define bfd_elfNN_bfd_relax_section arc_elf_relax_section
+
+#define elf_backend_size_info arc_elfNN_size_info
+
+#define elf_info_to_howto_rel arc_info_to_howto_rel
+#define elf_backend_object_p arc_elf_object_p
+#define elf_backend_final_write_processing arc_elf_final_write_processing
+
+#define elf_backend_relocate_section elf_arc_relocate_section
+#define elf_backend_check_relocs elf_arc_check_relocs
+#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
+
+#define elf_backend_reloc_type_class arc_reloc_type_class
+
+#define elf_backend_adjust_dynamic_symbol elf_arc_adjust_dynamic_symbol
+#define elf_backend_finish_dynamic_symbol elf_arc_finish_dynamic_symbol
+
+#define elf_backend_finish_dynamic_sections elf_arc_finish_dynamic_sections
+#define elf_backend_size_dynamic_sections elf_arc_size_dynamic_sections
+
+#define elf_backend_can_gc_sections 1
+#define elf_backend_want_got_plt 1
+#define elf_backend_plt_readonly 1
+#define elf_backend_rela_plts_and_copies_p 1
+#define elf_backend_want_plt_sym 0
+#define elf_backend_got_header_size (GOT_ENTRY_SIZE * 3)
+#define elf_backend_dtrel_excludes_plt 1
+
+#define elf_backend_may_use_rel_p 0
+#define elf_backend_may_use_rela_p 1
+#define elf_backend_default_use_rela_p 1
+
+#define elf_backend_grok_prstatus elfNN_arc_grok_prstatus
+
+#define elf_backend_default_execstack 0
+
+#undef elf_backend_obj_attrs_vendor
+#define elf_backend_obj_attrs_vendor "ARC"
+#undef elf_backend_obj_attrs_section
+#define elf_backend_obj_attrs_section ".ARC.attributes"
+#undef elf_backend_obj_attrs_arg_type
+#define elf_backend_obj_attrs_arg_type elfNN_arc_obj_attrs_arg_type
+#undef elf_backend_obj_attrs_section_type
+#define elf_backend_obj_attrs_section_type SHT_ARC_ATTRIBUTES
+#define elf_backend_obj_attrs_handle_unknown elfNN_arc_obj_attrs_handle_unknown
+
+#define elf_backend_section_from_shdr elfNN_arc_section_from_shdr
+
+#include "elfNN-target.h"
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index b97534fc9fe..66309455417 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -1834,6 +1834,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_ARC_16",
"BFD_RELOC_ARC_24",
"BFD_RELOC_ARC_32",
+ "BFD_RELOC_ARC_64",
"BFD_RELOC_ARC_N8",
"BFD_RELOC_ARC_N16",
"BFD_RELOC_ARC_N24",
@@ -1898,6 +1899,25 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_ARC_S21H_PCREL_PLT",
"BFD_RELOC_ARC_NPS_CMEM16",
"BFD_RELOC_ARC_JLI_SECTOFF",
+ "BFD_RELOC_ARC_S7H_PCREL",
+ "BFD_RELOC_ARC_S8H_PCREL",
+ "BFD_RELOC_ARC_S9H_PCREL",
+ "BFD_RELOC_ARC_S10H_PCREL",
+ "BFD_RELOC_ARC_S13H_PCREL",
+ "BFD_RELOC_ARC_ALIGN",
+ "BFD_RELOC_ARC_ADD8",
+ "BFD_RELOC_ARC_ADD16",
+ "BFD_RELOC_ARC_SUB8",
+ "BFD_RELOC_ARC_SUB16",
+ "BFD_RELOC_ARC_SUB32",
+ "BFD_RELOC_ARC_LO32",
+ "BFD_RELOC_ARC_HI32",
+ "BFD_RELOC_ARC_LO32_ME",
+ "BFD_RELOC_ARC_HI32_ME",
+ "BFD_RELOC_ARC_N64",
+ "BFD_RELOC_ARC_SDA_LDST3",
+ "BFD_RELOC_ARC_NLO32",
+ "BFD_RELOC_ARC_NLO32_ME",
"BFD_RELOC_BFIN_16_IMM",
"BFD_RELOC_BFIN_16_HIGH",
"BFD_RELOC_BFIN_4_PCREL",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 9aba84ca81e..c2dfd10e879 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -3588,6 +3588,8 @@ ENUMX
BFD_RELOC_ARC_24
ENUMX
BFD_RELOC_ARC_32
+ENUMX
+ BFD_RELOC_ARC_64
ENUMX
BFD_RELOC_ARC_N8
ENUMX
@@ -3716,6 +3718,44 @@ ENUMX
BFD_RELOC_ARC_NPS_CMEM16
ENUMX
BFD_RELOC_ARC_JLI_SECTOFF
+ENUMX
+ BFD_RELOC_ARC_S7H_PCREL
+ENUMX
+ BFD_RELOC_ARC_S8H_PCREL
+ENUMX
+ BFD_RELOC_ARC_S9H_PCREL
+ENUMX
+ BFD_RELOC_ARC_S10H_PCREL
+ENUMX
+ BFD_RELOC_ARC_S13H_PCREL
+ENUMX
+ BFD_RELOC_ARC_ALIGN
+ENUMX
+ BFD_RELOC_ARC_ADD8
+ENUMX
+ BFD_RELOC_ARC_ADD16
+ENUMX
+ BFD_RELOC_ARC_SUB8
+ENUMX
+ BFD_RELOC_ARC_SUB16
+ENUMX
+ BFD_RELOC_ARC_SUB32
+ENUMX
+ BFD_RELOC_ARC_LO32
+ENUMX
+ BFD_RELOC_ARC_HI32
+ENUMX
+ BFD_RELOC_ARC_LO32_ME
+ENUMX
+ BFD_RELOC_ARC_HI32_ME
+ENUMX
+ BFD_RELOC_ARC_N64
+ENUMX
+ BFD_RELOC_ARC_SDA_LDST3
+ENUMX
+ BFD_RELOC_ARC_NLO32
+ENUMX
+ BFD_RELOC_ARC_NLO32_ME
ENUMDOC
ARC relocs.
diff --git a/bfd/targets.c b/bfd/targets.c
index 0732c5e4292..77a6c225070 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -677,6 +677,7 @@ extern const bfd_target am33_elf32_linux_vec;
extern const bfd_target aout_vec;
extern const bfd_target arc_elf32_be_vec;
extern const bfd_target arc_elf32_le_vec;
+extern const bfd_target arc_elf64_le_vec;
extern const bfd_target arm_elf32_be_vec;
extern const bfd_target arm_elf32_le_vec;
extern const bfd_target arm_elf32_fdpic_be_vec;
@@ -983,6 +984,10 @@ static const bfd_target * const _bfd_target_vector[] =
&aarch64_elf64_le_vec,
&aarch64_elf64_le_cloudabi_vec,
&aarch64_mach_o_vec,
+
+ &arc_elf32_be_vec,
+ &arc_elf32_le_vec,
+ &arc_elf64_le_vec,
#endif
#ifdef BFD64
@@ -1001,9 +1006,6 @@ static const bfd_target * const _bfd_target_vector[] =
&aout_vec,
#endif
- &arc_elf32_be_vec,
- &arc_elf32_le_vec,
-
&arm_elf32_be_vec,
&arm_elf32_le_vec,
&arm_elf32_fdpic_be_vec,
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 6057515a89b..d6c0b13cba6 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -836,6 +836,8 @@ guess_is_rela (unsigned int e_machine)
case EM_ARC:
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
case EM_AVR:
case EM_AVR_OLD:
case EM_BLACKFIN:
@@ -1457,6 +1459,8 @@ dump_relocations (Filedata * filedata,
case EM_ARC:
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
rtype = elf_arc_reloc_type (type);
break;
@@ -2579,6 +2583,8 @@ get_machine_name (unsigned e_machine)
case EM_CYGNUS_FRV: return "Fujitsu FR-V";
case EM_S12Z: return "Freescale S12Z";
case EM_CSKY: return "C-SKY";
+ case EM_ARC_COMPACT3: return "ARCv3_32";
+ case EM_ARC_COMPACT3_64: return "ARCv3_64";
default:
snprintf (buff, sizeof (buff), _("<unknown>: 0x%x"), e_machine);
@@ -2623,6 +2629,10 @@ decode_ARC_machine_flags (unsigned e_flags, unsigned e_machine, char buf[])
strcat (buf, ", ARC700");
break;
+ case EF_ARC_CPU_ARC64:
+ strcat (buf, ", ARC 64");
+ break;
+
/* The only times we should end up here are (a) A corrupt ELF, (b) A
new ELF with new architecture being read by an old version of
readelf, or (c) An ELF built with non-GNU compiler that does not
@@ -3160,6 +3170,8 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine)
case EM_ARC_COMPACT2:
case EM_ARC_COMPACT:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
decode_ARC_machine_flags (e_flags, e_machine, buf);
break;
@@ -4362,6 +4374,8 @@ get_section_type_name (Filedata * filedata, unsigned int sh_type)
case EM_ARC:
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
result = get_arc_section_type_name (sh_type);
break;
case EM_MIPS:
@@ -12752,6 +12766,8 @@ is_32bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
return reloc_type == 1; /* R_ARC_32. */
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
return reloc_type == 4; /* R_ARC_32. */
case EM_ARM:
return reloc_type == 2; /* R_ARM_ABS32 */
@@ -12947,6 +12963,8 @@ is_32bit_pcrel_reloc (Filedata * filedata, unsigned int reloc_type)
return reloc_type == 10; /* R_ALPHA_SREL32. */
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
return reloc_type == 49; /* R_ARC_32_PCREL. */
case EM_ARM:
return reloc_type == 3; /* R_ARM_REL32 */
@@ -13011,6 +13029,8 @@ is_64bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
{
case EM_AARCH64:
return reloc_type == 257; /* R_AARCH64_ABS64. */
+ case EM_ARC_COMPACT3_64:
+ return reloc_type == 5; /* R_ARC_64. */
case EM_ALPHA:
return reloc_type == 2; /* R_ALPHA_REFQUAD. */
case EM_IA_64:
@@ -13112,6 +13132,8 @@ is_16bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
case EM_ARC:
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
return reloc_type == 2; /* R_ARC_16. */
case EM_ADAPTEVA_EPIPHANY:
return reloc_type == 5;
@@ -13364,6 +13386,8 @@ is_none_reloc (Filedata * filedata, unsigned int reloc_type)
case EM_ARC: /* R_ARC_NONE. */
case EM_ARC_COMPACT2: /* R_ARC_NONE. */
case EM_ARC_COMPACT: /* R_ARC_NONE. */
+ case EM_ARC_COMPACT3: /* R_ARC_NONE. */
+ case EM_ARC_COMPACT3_64: /* R_ARC_NONE. */
case EM_ARM: /* R_ARM_NONE. */
case EM_C166: /* R_XC16X_NONE. */
case EM_CRIS: /* R_CRIS_NONE. */
@@ -14983,27 +15007,31 @@ display_arc_attribute (unsigned char * p,
case Tag_ARC_PCS_config:
READ_ULEB (val, p, end);
printf (" Tag_ARC_PCS_config: ");
- switch (val)
+ switch (val & 0xff)
{
case 0:
- printf (_("Absent/Non standard\n"));
+ printf (_("Absent/Non standard"));
break;
case 1:
- printf (_("Bare metal/mwdt\n"));
+ printf (_("Bare metal/mwdt"));
break;
case 2:
- printf (_("Bare metal/newlib\n"));
+ printf (_("Bare metal/newlib"));
break;
case 3:
- printf (_("Linux/uclibc\n"));
+ printf (_("Linux/uclibc"));
break;
case 4:
- printf (_("Linux/glibc\n"));
+ printf (_("Linux/glibc"));
break;
default:
- printf (_("Unknown\n"));
+ printf (_("Unknown"));
break;
}
+ if (val & 0x100)
+ printf (_(" -linkrelax-\n"));
+ else
+ printf (_("\n"));
break;
case Tag_ARC_CPU_base:
@@ -20031,6 +20059,8 @@ process_arch_specific (Filedata * filedata)
case EM_ARC:
case EM_ARC_COMPACT:
case EM_ARC_COMPACT2:
+ case EM_ARC_COMPACT3:
+ case EM_ARC_COMPACT3_64:
return process_attributes (filedata, "ARC", SHT_ARC_ATTRIBUTES,
display_arc_attribute,
display_generic_attribute);
diff --git a/config.sub b/config.sub
index f02d43ad500..ba11553d56f 100755
--- a/config.sub
+++ b/config.sub
@@ -1163,7 +1163,7 @@ case $cpu-$vendor in
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
- | arc | arceb \
+ | arc | arceb | arc64 \
| arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
index f8d469cc2e1..7a2f5a4656d 100644
--- a/gas/config/tc-arc.c
+++ b/gas/config/tc-arc.c
@@ -48,6 +48,11 @@
#define LP_INSN(x) ((MAJOR_OPCODE (x) == 0x4) \
&& (SUB_OPCODE (x) == 0x28))
+
+#ifndef DEFAULT_ARCH
+#define DEFAULT_ARCH "arc"
+#endif /* DEFAULT_ARCH */
+
#ifndef TARGET_WITH_CPU
#define TARGET_WITH_CPU "arc700"
#endif /* TARGET_WITH_CPU */
@@ -121,6 +126,9 @@ enum arc_rlx_types
/* Generic assembler global variables which must be defined by all
targets. */
+/* Default architecture. */
+static const char default_arch[] = DEFAULT_ARCH;
+
/* Characters which always start a comment. */
const char comment_chars[] = "#;";
@@ -141,14 +149,18 @@ const char FLT_CHARS[] = "rRsSfFdD";
/* Byte order. */
extern int target_big_endian;
-const char *arc_target_format = DEFAULT_TARGET_FORMAT;
static int byte_order = DEFAULT_BYTE_ORDER;
/* Arc extension section. */
static segT arcext_section;
/* By default relaxation is disabled. */
-static int relaxation_state = 0;
+static bfd_boolean relaxation_state = FALSE;
+
+/* Status of the linker relaxation. It is a tristate variable: 0 is
+ non initialized/disabled, 1 is enabled, -1 forced disable (no PCS
+ attribute found). */
+static int do_linker_relax = 0;
extern int arc_get_mach (char *);
@@ -164,6 +176,7 @@ const pseudo_typeS md_pseudo_table[] =
{
/* Make sure that .word is 32 bits. */
{ "word", cons, 4 },
+ { "xword", cons, 8},
{ "align", s_align_bytes, 0 }, /* Defaulting is invalid (0). */
{ "lcomm", arc_lcomm, 0 },
@@ -199,6 +212,7 @@ enum options
OPTION_CD,
OPTION_RELAX,
OPTION_NPS400,
+ OPTION_LINKER_RELAX,
OPTION_SPFP,
OPTION_DPFP,
@@ -243,6 +257,7 @@ struct option md_longopts[] =
{ "mcode-density", no_argument, NULL, OPTION_CD },
{ "mrelax", no_argument, NULL, OPTION_RELAX },
{ "mnps400", no_argument, NULL, OPTION_NPS400 },
+ { "mlinker-relax", no_argument, NULL, OPTION_LINKER_RELAX },
/* Floating point options */
{ "mspfp", no_argument, NULL, OPTION_SPFP},
@@ -439,25 +454,29 @@ static struct hash_control *arc_aux_hash;
/* The hash table of address types. */
static struct hash_control *arc_addrtype_hash;
-#define ARC_CPU_TYPE_A6xx(NAME,EXTRA) \
- { #NAME, ARC_OPCODE_ARC600, bfd_mach_arc_arc600, \
+#define ARC_CPU_TYPE_A6xx(NAME,EXTRA) \
+ { #NAME, "arc", ARC_OPCODE_ARC600, bfd_mach_arc_arc600, \
E_ARC_MACH_ARC600, EXTRA}
-#define ARC_CPU_TYPE_A7xx(NAME,EXTRA) \
- { #NAME, ARC_OPCODE_ARC700, bfd_mach_arc_arc700, \
+#define ARC_CPU_TYPE_A7xx(NAME,EXTRA) \
+ { #NAME, "arc", ARC_OPCODE_ARC700, bfd_mach_arc_arc700, \
E_ARC_MACH_ARC700, EXTRA}
-#define ARC_CPU_TYPE_AV2EM(NAME,EXTRA) \
- { #NAME, ARC_OPCODE_ARCv2EM, bfd_mach_arc_arcv2, \
+#define ARC_CPU_TYPE_AV2EM(NAME,EXTRA) \
+ { #NAME, "arc", ARC_OPCODE_ARCv2EM, bfd_mach_arc_arcv2, \
EF_ARC_CPU_ARCV2EM, EXTRA}
-#define ARC_CPU_TYPE_AV2HS(NAME,EXTRA) \
- { #NAME, ARC_OPCODE_ARCv2HS, bfd_mach_arc_arcv2, \
+#define ARC_CPU_TYPE_AV2HS(NAME,EXTRA) \
+ { #NAME, "arc", ARC_OPCODE_ARCv2HS, bfd_mach_arc_arcv2, \
EF_ARC_CPU_ARCV2HS, EXTRA}
-#define ARC_CPU_TYPE_NONE \
- { 0, 0, 0, 0, 0 }
+#define ARC_CPU_TYPE_A64x(NAME,EXTRA) \
+ { #NAME, "arc64", ARC_OPCODE_ARC64, bfd_mach_arcv3_64, \
+ EF_ARC_CPU_ARC64, EXTRA}
+#define ARC_CPU_TYPE_NONE \
+ { 0, 0, 0, 0, 0, 0 }
/* A table of CPU names and opcode sets. */
static const struct cpu_type
{
const char *name;
+ const char *arch;
unsigned flags;
int mach;
unsigned eflags;
@@ -469,7 +488,7 @@ static const struct cpu_type
};
/* Information about the cpu/variant we're assembling for. */
-static struct cpu_type selected_cpu = { 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
+static struct cpu_type selected_cpu = { 0, 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
/* TRUE if current assembly code uses RF16 only registers. */
static bfd_boolean rf16_only = TRUE;
@@ -501,7 +520,9 @@ static unsigned cl_features = 0;
#define O_tpoff O_md9 /* @tpoff relocation. */
#define O_dtpoff9 O_md10 /* @dtpoff9 relocation. */
#define O_dtpoff O_md11 /* @dtpoff relocation. */
-#define O_last O_dtpoff
+#define O_u32 O_md12 /* @u32 modifier. */
+#define O_s32 O_md13 /* @u32 modifier. */
+#define O_last O_md13
/* Used to define a bracket as operand in tokens. */
#define O_bracket O_md32
@@ -554,6 +575,8 @@ static const struct arc_reloc_op_tag
DEF (tpoff, BFD_RELOC_ARC_TLS_LE_32, 1),
DEF (dtpoff9, BFD_RELOC_ARC_TLS_DTPOFF_S9, 0),
DEF (dtpoff, BFD_RELOC_ARC_TLS_DTPOFF, 1),
+ DEF (u32, BFD_RELOC_ARC_LO32_ME, 1),
+ DEF (s32, BFD_RELOC_ARC_32_ME, 1),
};
static const int arc_num_reloc_op
@@ -841,7 +864,7 @@ static void
arc_select_cpu (const char *arg, enum mach_selection_type sel)
{
int i;
- static struct cpu_type old_cpu = { 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
+ static struct cpu_type old_cpu = { 0, 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
/* We should only set a default if we've not made a selection from some
other source. */
@@ -893,7 +916,7 @@ arc_select_cpu (const char *arg, enum mach_selection_type sel)
if (mach_selection_mode != MACH_SELECTION_NONE
&& (old_cpu.mach != selected_cpu.mach))
{
- bfd_find_target (arc_target_format, stdoutput);
+ bfd_find_target (arc_target_format (), stdoutput);
if (! bfd_set_arch_mach (stdoutput, bfd_arch_arc, selected_cpu.mach))
as_warn (_("Could not set architecture and machine"));
}
@@ -1091,6 +1114,8 @@ debug_exp (expressionS *t)
case O_tpoff: namemd = "O_tpoff"; break;
case O_dtpoff9: namemd = "O_dtpoff9"; break;
case O_dtpoff: namemd = "O_dtpoff"; break;
+ case O_u32: namemd = "O_u32"; break;
+ case O_s32: namemd = "O_s32"; break;
}
pr_debug ("%s (%s, %s, %d, %s)", name,
@@ -1243,8 +1268,11 @@ tokenize_arguments (char *str,
++num_args;
break;
- case '{':
case '[':
+ /* Silence the error detection. */
+ saw_comma = TRUE;
+ /* fallthru */
+ case '{':
input_line_pointer++;
if (brk_lvl || num_args == ntok)
goto err;
@@ -1314,8 +1342,8 @@ tokenize_arguments (char *str,
debug_exp (tok);
if (tok->X_op == O_illegal
- || tok->X_op == O_absent
- || num_args == ntok)
+ || tok->X_op == O_absent
+ || num_args == ntok)
goto err;
saw_comma = FALSE;
@@ -1701,6 +1729,7 @@ parse_opcode_flags (const struct arc_opcode *opcode,
/* Found it. */
cl_matches++;
pflag->flgp = pf;
+ pflag->insert = cl_flags->insert;
lnflg--;
break;
}
@@ -1724,6 +1753,7 @@ parse_opcode_flags (const struct arc_opcode *opcode,
return FALSE;
cl_matches++;
pflag->flgp = flg_operand;
+ pflag->insert = cl_flags->insert;
lnflg--;
break; /* goto next flag class and parsed flag. */
}
@@ -1760,6 +1790,7 @@ find_opcode_match (const struct arc_opcode_hash_entry *entry,
expressionS bktok[MAX_INSN_ARGS];
int bkntok;
expressionS emptyE;
+ unsigned int tmp = 0;
arc_opcode_hash_entry_iterator_init (&iter);
memset (&emptyE, 0, sizeof (emptyE));
@@ -1880,6 +1911,24 @@ find_opcode_match (const struct arc_opcode_hash_entry *entry,
goto match_failed;
break;
+ case (ARC_OPERAND_LIMM | ARC_OPERAND_SIGNED):
+ /* Signed extended 32 bit, only available for ARC64. */
+ if (tok[tokidx].X_op == O_constant)
+ {
+ offsetT val = tok[tokidx].X_add_number;
+ const offsetT min = -(1LL << 31);
+ const offsetT max = (1LL << 31) - 1;
+
+ if (val > max || val < min)
+ goto match_failed;
+ break;
+ }
+ /* By default a symbol is zero extended. */
+ else if (tok[tokidx].X_op == O_symbol
+ && tok[tokidx].X_md == O_absent)
+ goto match_failed;
+
+ /* FALLTHRU */
case ARC_OPERAND_LIMM:
case ARC_OPERAND_SIGNED:
case ARC_OPERAND_UNSIGNED:
@@ -1912,8 +1961,8 @@ find_opcode_match (const struct arc_opcode_hash_entry *entry,
if (opcode->insn_class != AUXREG)
goto de_fault;
- p = S_GET_NAME (tok[tokidx].X_add_symbol);
+ p = S_GET_NAME (tok[tokidx].X_add_symbol);
/* For compatibility reasons, an aux register can
be spelled with upper or lower case
letters. */
@@ -2016,15 +2065,25 @@ find_opcode_match (const struct arc_opcode_hash_entry *entry,
/* Relocs requiring long immediate. FIXME! make it
generic and move it to a function. */
+ tmp = ARC_OPERAND_SIGNED;
switch (tok[tokidx].X_md)
{
- case O_gotoff:
+ /* All offsets needs to be mapped into a signed
+ limm. */
case O_gotpc:
- case O_pcl:
case O_tpoff:
- case O_dtpoff:
- case O_tlsgd:
case O_tlsie:
+ case O_tlsgd:
+ case O_pcl:
+ case O_s32:
+ tmp = 0; /* Fail if is not signed. */
+ /* Fall through. */
+ case O_u32:
+ if ((operand->flags & ARC_OPERAND_SIGNED) == tmp)
+ goto match_failed;
+ /* Fall through. */
+ case O_gotoff: /* Not generated by ARC64. */
+ case O_dtpoff: /* Not generated by ARC64. */
if (!(operand->flags & ARC_OPERAND_LIMM))
goto match_failed;
/* Fall through. */
@@ -2196,6 +2255,26 @@ find_pseudo_insn (const char *opname,
return pseudo_insn;
}
}
+
+ /* ARC64 pseudo instructions. */
+ if (strcmp (default_arch, "arc64") != 0)
+ return NULL;
+
+ for (i = 0; i < arc64_num_pseudo_insn; i++)
+ {
+ pseudo_insn = &arc64_pseudo_insns[i];
+ if (strcmp (pseudo_insn->mnemonic_p, opname) == 0)
+ {
+ op = pseudo_insn->operand;
+ for (j = 0; j < ntok; ++j)
+ if (!pseudo_operand_match (&tok[j], &op[j]))
+ break;
+
+ /* Found the right instruction. */
+ if (j == ntok)
+ return pseudo_insn;
+ }
+ }
return NULL;
}
@@ -2558,6 +2637,25 @@ declare_register_set (void)
}
}
+/* Helper use for declaration of fp refisters. */
+static void
+declare_fp_set (void)
+{
+ int i;
+ for (i = 0; i < 32; ++i)
+ {
+ char name[32];
+
+ sprintf (name, "f%d", i);
+ declare_register (name, i);
+ if ((i & 0x01) == 0)
+ {
+ sprintf (name, "f%df%d", i, i+1);
+ declare_register (name, i);
+ }
+ }
+}
+
/* Construct a symbol for an address type. */
static void
@@ -2574,6 +2672,17 @@ declare_addrtype (const char *name, int number)
name, err);
}
+/* Initialize the default cpu. */
+
+static void
+init_default_arch (void)
+{
+ if (strcmp (default_arch, "arc64") == 0)
+ arc_select_cpu ("arc64", MACH_SELECTION_FROM_DEFAULT);
+ else
+ arc_select_cpu (TARGET_WITH_CPU, MACH_SELECTION_FROM_DEFAULT);
+}
+
/* Port-specific assembler initialization. This function is called
once, at assembler startup time. */
@@ -2583,7 +2692,7 @@ md_begin (void)
const struct arc_opcode *opcode = arc_opcodes;
if (mach_selection_mode == MACH_SELECTION_NONE)
- arc_select_cpu (TARGET_WITH_CPU, MACH_SELECTION_FROM_DEFAULT);
+ init_default_arch ();
/* The endianness can be chosen "at the factory". */
target_big_endian = byte_order == BIG_ENDIAN;
@@ -2618,12 +2727,22 @@ md_begin (void)
as_fatal (_("Virtual memory exhausted"));
declare_register_set ();
- declare_register ("gp", 26);
+ if (selected_cpu.mach == bfd_mach_arcv3_64)
+ {
+ declare_register ("gp", 30);
+ declare_fp_set ();
+ }
+ else
+ declare_register ("gp", 26);
declare_register ("fp", 27);
declare_register ("sp", 28);
declare_register ("ilink", 29);
- declare_register ("ilink1", 29);
- declare_register ("ilink2", 30);
+ if (selected_cpu.mach == bfd_mach_arc_arc600
+ || selected_cpu.mach == bfd_mach_arc_arc700)
+ {
+ declare_register ("ilink1", 29);
+ declare_register ("ilink2", 30);
+ }
declare_register ("blink", 31);
/* XY memory registers. */
@@ -2710,6 +2829,8 @@ md_begin (void)
declare_addrtype ("csd", ARC_NPS400_ADDRTYPE_CSD);
declare_addrtype ("cxa", ARC_NPS400_ADDRTYPE_CXA);
declare_addrtype ("cxd", ARC_NPS400_ADDRTYPE_CXD);
+
+ linkrelax = (do_linker_relax == 1) ? 1 : 0;
}
/* Write a value out to the object file, using the appropriate
@@ -2788,6 +2909,11 @@ md_pcrel_from_section (fixS *fixP,
case BFD_RELOC_ARC_S13_PCREL:
case BFD_RELOC_ARC_S21W_PCREL:
case BFD_RELOC_ARC_S25W_PCREL:
+ case BFD_RELOC_ARC_S10H_PCREL:
+ case BFD_RELOC_ARC_S13H_PCREL:
+ case BFD_RELOC_ARC_S9H_PCREL:
+ case BFD_RELOC_ARC_S8H_PCREL:
+ case BFD_RELOC_ARC_S7H_PCREL:
base &= ~3;
break;
default:
@@ -2886,6 +3012,29 @@ insert_operand (unsigned long long insn,
return insn;
}
+/* Called by TARGET_FORMAT. */
+
+const char *
+arc_target_format (void)
+{
+
+ /* We don't get a chance to initialize anything before we're called,
+ so handle that now. */
+ if (mach_selection_mode == MACH_SELECTION_NONE)
+ init_default_arch ();
+
+ if (selected_cpu.name == NULL)
+ return DEFAULT_TARGET_FORMAT;
+
+ if (selected_cpu.mach == bfd_mach_arcv3_64)
+ return "elf64-littlearc";
+
+ if (byte_order == LITTLE_ENDIAN)
+ return "elf32-littlearc";
+
+ return "elf32-bigarc";
+}
+
/* Apply a fixup to the object code. At this point all symbol values
should be fully resolved, and we attempt to completely resolve the
reloc. If we can not do that, we determine the correct reloc code
@@ -2903,7 +3052,6 @@ md_apply_fix (fixS *fixP,
symbolS *fx_addsy, *fx_subsy;
offsetT fx_offset;
segT add_symbol_segment = absolute_section;
- segT sub_symbol_segment = absolute_section;
const struct arc_operand *operand = NULL;
extended_bfd_reloc_code_real_type reloc;
@@ -2922,34 +3070,9 @@ md_apply_fix (fixS *fixP,
add_symbol_segment = S_GET_SEGMENT (fx_addsy);
}
- if (fx_subsy
- && fixP->fx_r_type != BFD_RELOC_ARC_TLS_DTPOFF
- && fixP->fx_r_type != BFD_RELOC_ARC_TLS_DTPOFF_S9
- && fixP->fx_r_type != BFD_RELOC_ARC_TLS_GD_LD)
- {
- resolve_symbol_value (fx_subsy);
- sub_symbol_segment = S_GET_SEGMENT (fx_subsy);
-
- if (sub_symbol_segment == absolute_section)
- {
- /* The symbol is really a constant. */
- fx_offset -= S_GET_VALUE (fx_subsy);
- fx_subsy = NULL;
- }
- else
- {
- as_bad_where (fixP->fx_file, fixP->fx_line,
- _("can't resolve `%s' {%s section} - `%s' {%s section}"),
- fx_addsy ? S_GET_NAME (fx_addsy) : "0",
- segment_name (add_symbol_segment),
- S_GET_NAME (fx_subsy),
- segment_name (sub_symbol_segment));
- return;
- }
- }
-
if (fx_addsy
- && !S_IS_WEAK (fx_addsy))
+ && !S_IS_WEAK (fx_addsy)
+ && !fx_subsy)
{
if (add_symbol_segment == seg
&& fixP->fx_pcrel)
@@ -3119,6 +3242,11 @@ md_apply_fix (fixS *fixP,
case BFD_RELOC_ARC_S21H_PCREL:
case BFD_RELOC_ARC_S25H_PCREL:
case BFD_RELOC_ARC_S13_PCREL:
+ case BFD_RELOC_ARC_S10H_PCREL:
+ case BFD_RELOC_ARC_S13H_PCREL:
+ case BFD_RELOC_ARC_S9H_PCREL:
+ case BFD_RELOC_ARC_S8H_PCREL:
+ case BFD_RELOC_ARC_S7H_PCREL:
solve_plt:
operand = find_operand_for_reloc (reloc);
gas_assert (operand);
@@ -3454,12 +3582,10 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED)
}
case OPTION_EB:
- arc_target_format = "elf32-bigarc";
byte_order = BIG_ENDIAN;
break;
case OPTION_EL:
- arc_target_format = "elf32-littlearc";
byte_order = LITTLE_ENDIAN;
break;
@@ -3470,7 +3596,13 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED)
break;
case OPTION_RELAX:
- relaxation_state = 1;
+ relaxation_state = TRUE;
+ do_linker_relax = -1;
+ break;
+
+ case OPTION_LINKER_RELAX:
+ relaxation_state = FALSE;
+ do_linker_relax = (do_linker_relax == 0) ? 1 : do_linker_relax;
break;
case OPTION_NPS400:
@@ -3541,6 +3673,9 @@ arc_show_cpu_list (FILE *stream)
{
bfd_boolean last = (cpu_types[i + 1].name == NULL);
+ if (strcmp (default_arch, cpu_types[i].arch) != 0)
+ continue;
+
/* If displaying the new cpu name string, and the ', ' (for all
but the last one) will take us past a target width of 80
characters, then it's time for a new line. */
@@ -3555,8 +3690,8 @@ arc_show_cpu_list (FILE *stream)
}
}
-void
-md_show_usage (FILE *stream)
+static void
+md_show_usage32 (FILE *stream)
{
fprintf (stream, _("ARC-specific assembler options:\n"));
@@ -3617,6 +3752,26 @@ md_show_usage (FILE *stream)
" -mxy\n"));
}
+static void
+md_show_usage64 (FILE *stream)
+{
+ fprintf (stream, _("ARC64-specific assembler options:\n"));
+
+ fprintf (stream, " -mcpu=<cpu name>\t assemble for CPU <cpu name>,"
+ "one of:\n");
+ arc_show_cpu_list (stream);
+ fprintf (stream, "\n");
+}
+
+void
+md_show_usage (FILE *stream)
+{
+ if (strcmp (default_arch, "arc64") == 0)
+ md_show_usage64 (stream);
+ else
+ md_show_usage32 (stream);
+}
+
/* Find the proper relocation for the given opcode. */
static extended_bfd_reloc_code_real_type
@@ -3986,6 +4141,9 @@ assemble_insn (const struct arc_opcode *opcode,
case O_gotoff:
case O_gotpc:
needGOTSymbol = TRUE;
+ /* Fall through. */
+ case O_u32:
+ case O_s32:
reloc = ARC_RELOC_TABLE (t->X_md)->reloc;
break;
case O_pcl:
@@ -4141,8 +4299,22 @@ assemble_insn (const struct arc_opcode *opcode,
}
}
else
- image |= (flg_operand->code & ((1 << flg_operand->bits) - 1))
- << flg_operand->shift;
+ {
+ unsigned int flag_encoding;
+ flag_encoding = (flg_operand->code & ((1 << flg_operand->bits) - 1));
+
+ if (pflags[i].insert)
+ {
+ /* We can have a special flag which needs an insertion
+ function. */
+ const char *errmsg = NULL;
+ image = (*pflags[i].insert) (image, flag_encoding, &errmsg);
+ }
+ else
+ {
+ image |= flag_encoding << flg_operand->shift;
+ }
+ }
}
insn->relax = relax_insn_p (opcode, tok, ntok, pflags, nflg);
@@ -4171,26 +4343,64 @@ assemble_insn (const struct arc_opcode *opcode,
arc_last_insns[0].opcode->name);
}
+static void
+arc_make_nops (char *buf, bfd_vma bytes)
+{
+ bfd_vma i = 0;
+
+ /* ARC instructions cannot begin or end on odd addresses, so this case
+ means we are not within a valid instruction sequence. It is thus safe
+ to use a zero byte, even though that is not a valid instruction. */
+ if (bytes % 2 == 1)
+ buf[i++] = 0;
+
+ /* Use 2-byte NOP. */
+ for ( ; i < bytes; i += 2)
+ md_number_to_chars_midend (buf + i, NOP_OPCODE_S, 2);
+}
+
+/* Implement HANDLE_ALIGN. */
+
void
arc_handle_align (fragS* fragP)
{
- if ((fragP)->fr_type == rs_align_code)
+ char *dest = (fragP)->fr_literal + (fragP)->fr_fix;
+ valueT count = ((fragP)->fr_next->fr_address
+ - (fragP)->fr_address - (fragP)->fr_fix);
+ bfd_signed_vma size = count & ~0x01;
+ bfd_signed_vma excess = count & 0x01;
+ expressionS ex;
+
+ if (fragP->fr_type != rs_align_code)
+ return;
+
+ if (count <= 0)
+ return;
+
+ /* Insert zeros to get 2 byte alignment. */
+ if (excess && fragP->fr_type == rs_align_code)
{
- char *dest = (fragP)->fr_literal + (fragP)->fr_fix;
- valueT count = ((fragP)->fr_next->fr_address
- - (fragP)->fr_address - (fragP)->fr_fix);
+ arc_make_nops (dest, excess);
+ fragP->fr_fix += excess;
+ dest += excess;
+ }
- (fragP)->fr_var = 2;
+ /* Only emit this reloc when linker relaxation is required. */
+ if (linkrelax && size)
+ {
+ ex.X_op = O_constant;
+ ex.X_add_number = size;
+ fix_new_exp (fragP, fragP->fr_fix, 0, &ex, FALSE, BFD_RELOC_ARC_ALIGN);
+ }
+ else
+ {
+ if (size > MAX_MEM_FOR_RS_ALIGN_CODE)
+ size &= MAX_MEM_FOR_RS_ALIGN_CODE;
- if (count & 1)/* Padding in the gap till the next 2-byte
- boundary with 0s. */
- {
- (fragP)->fr_fix++;
- *dest++ = 0;
- }
- /* Writing nop_s. */
- md_number_to_chars (dest, NOP_OPCODE_S, 2);
+ /* Insert variable number of 2 bytes NOPs. */
+ arc_make_nops (dest, size);
}
+ fragP->fr_fix += size;
}
/* Here we decide which fixups can be adjusted to make them relative
@@ -4202,7 +4412,6 @@ arc_handle_align (fragS* fragP)
int
tc_arc_fix_adjustable (fixS *fixP)
{
-
/* Prevent all adjustments to global symbols. */
if (S_IS_EXTERNAL (fixP->fx_addsy))
return 0;
@@ -4224,7 +4433,7 @@ tc_arc_fix_adjustable (fixS *fixP)
break;
}
- return 1;
+ return !linkrelax;
}
/* Compute the reloc type of an expression EXP. */
@@ -4255,23 +4464,88 @@ arc_cons_fix_new (fragS *frag,
switch (size)
{
case 1:
- r_type = BFD_RELOC_8;
+ if (exp->X_op == O_subtract && exp->X_op_symbol != NULL && linkrelax)
+ {
+ if (S_IS_LOCAL (exp->X_add_symbol) && S_IS_LOCAL (exp->X_op_symbol))
+ {
+ expressionS exps;
+ memcpy (&exps, exp, sizeof (expressionS));
+ exps.X_op = O_symbol;
+ exps.X_add_symbol = exp->X_op_symbol;
+ exps.X_op_symbol = NULL;
+ exp->X_op_symbol = NULL;
+ exp->X_op = O_symbol;
+ fix_new_exp (frag, off, size, exp, 0, BFD_RELOC_ARC_ADD8);
+ fix_new_exp (frag, off, size, &exps, 0, BFD_RELOC_ARC_SUB8);
+ return;
+ }
+ else
+ as_bad_where (frag->fr_file, frag->fr_line,
+ _("Unknown substract operation. "
+ "Cannot generate reloc"));
+ }
+ else
+ r_type = BFD_RELOC_8;
break;
case 2:
- r_type = BFD_RELOC_16;
+ if (exp->X_op == O_subtract && exp->X_op_symbol != NULL && linkrelax)
+ {
+ if (S_IS_LOCAL (exp->X_add_symbol) && S_IS_LOCAL (exp->X_op_symbol))
+ {
+ expressionS exps;
+ memcpy (&exps, exp, sizeof (expressionS));
+ exps.X_op = O_symbol;
+ exps.X_add_symbol = exp->X_op_symbol;
+ exps.X_op_symbol = NULL;
+ exp->X_op_symbol = NULL;
+ exp->X_op = O_symbol;
+ fix_new_exp (frag, off, size, exp, 0, BFD_RELOC_ARC_ADD16);
+ fix_new_exp (frag, off, size, &exps, 0, BFD_RELOC_ARC_SUB16);
+ return;
+ }
+ else
+ as_bad_where (frag->fr_file, frag->fr_line,
+ _("Unknown substract operation. "
+ "Cannot generate reloc"));
+ }
+ else
+ r_type = BFD_RELOC_16;
break;
case 3:
+ gas_assert (!linkrelax);
r_type = BFD_RELOC_24;
break;
case 4:
- r_type = BFD_RELOC_32;
+ if (exp->X_op == O_subtract && exp->X_op_symbol != NULL && linkrelax)
+ {
+ if (S_IS_LOCAL (exp->X_add_symbol) && S_IS_LOCAL (exp->X_op_symbol))
+ {
+ expressionS exps;
+ memcpy (&exps, exp, sizeof (expressionS));
+ exps.X_op = O_symbol;
+ exps.X_add_symbol = exp->X_op_symbol;
+ exps.X_op_symbol = NULL;
+ exp->X_op_symbol = NULL;
+ exp->X_op = O_symbol;
+ fix_new_exp (frag, off, size, exp, 0, BFD_RELOC_32);
+ fix_new_exp (frag, off, size, &exps, 0, BFD_RELOC_ARC_SUB32);
+ return;
+ }
+ else
+ as_bad_where (frag->fr_file, frag->fr_line,
+ _("Unknown substract operation. "
+ "Cannot generate reloc"));
+ }
+ else
+ r_type = BFD_RELOC_32;
arc_check_reloc (exp, &r_type);
break;
case 8:
+ gas_assert (!linkrelax);
r_type = BFD_RELOC_64;
break;
@@ -4291,6 +4565,7 @@ check_zol (symbolS *s)
switch (selected_cpu.mach)
{
case bfd_mach_arc_arcv2:
+ case bfd_mach_arcv3_64:
if (selected_cpu.flags & ARC_OPCODE_ARCv2EM)
return;
@@ -5066,6 +5341,17 @@ arc_set_public_attributes (void)
"register file"));
bfd_elf_add_proc_attr_int (stdoutput, Tag_ARC_ABI_rf16, 0);
}
+
+ /* Tag_ARC_PCS_config. */
+ if (attributes_set_explicitly[Tag_ARC_PCS_config])
+ {
+ int val = bfd_elf_get_obj_attr_int (stdoutput, OBJ_ATTR_PROC,
+ Tag_ARC_PCS_config);
+ val |= (do_linker_relax == 1) ? 0x100 : 0x00;
+ bfd_elf_add_proc_attr_int (stdoutput, Tag_ARC_PCS_config, val);
+ }
+ else if (do_linker_relax == 1)
+ arc_set_attribute_int (Tag_ARC_PCS_config, 0x100);
}
/* Add the default contents for the .ARC.attributes section. */
@@ -5075,9 +5361,6 @@ arc_md_end (void)
{
arc_set_public_attributes ();
- if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, selected_cpu.mach))
- as_fatal (_("could not set architecture and machine"));
-
bfd_set_private_flags (stdoutput, selected_cpu.eflags);
}
@@ -5126,6 +5409,26 @@ int arc_convert_symbolic_attribute (const char *name)
return -1;
}
+/* Implements md_allow_local_substract. */
+
+bfd_boolean arc_allow_local_subtract (expressionS * left,
+ expressionS * right,
+ segT section)
+{
+ /* if we don't relax allow substraction. */
+ if (!linkrelax)
+ return TRUE;
+
+ /* if the symbols are not in a code section then they are OK. */
+ if ((section->flags & SEC_CODE) == 0)
+ return TRUE;
+
+ if (left->X_add_symbol == right->X_add_symbol)
+ return TRUE;
+
+ return FALSE;
+}
+
/* Local variables:
eval: (c-set-style "gnu")
indent-tabs-mode: t
diff --git a/gas/config/tc-arc.h b/gas/config/tc-arc.h
index 2aa61e0ef8b..6b1a85563af 100644
--- a/gas/config/tc-arc.h
+++ b/gas/config/tc-arc.h
@@ -48,28 +48,25 @@
#undef BIG_ENDIAN
#define BIG_ENDIAN 4321
-#ifdef TARGET_BYTES_BIG_ENDIAN
+#ifndef TARGET_BYTES_BIG_ENDIAN
+/* You should define this macro to be non-zero if the target is big
+ endian, and zero if the target is little endian. */
+#define TARGET_BYTES_BIG_ENDIAN 0
+#endif
+#if TARGET_BYTES_BIG_ENDIAN == 1
# define DEFAULT_TARGET_FORMAT "elf32-bigarc"
# define DEFAULT_BYTE_ORDER BIG_ENDIAN
-
#else
-/* You should define this macro to be non-zero if the target is big
- endian, and zero if the target is little endian. */
-# define TARGET_BYTES_BIG_ENDIAN 0
-
# define DEFAULT_TARGET_FORMAT "elf32-littlearc"
# define DEFAULT_BYTE_ORDER LITTLE_ENDIAN
#endif /* TARGET_BYTES_BIG_ENDIAN. */
-/* The endianness of the target format may change based on command
- line arguments. */
-extern const char *arc_target_format;
-
/* This macro is the BFD target name to use when creating the output
file. This will normally depend upon the `OBJ_FMT' macro. */
-#define TARGET_FORMAT arc_target_format
+#define TARGET_FORMAT arc_target_format()
+extern const char *arc_target_format (void);
/* `md_short_jump_size'
`md_long_jump_size'
@@ -103,9 +100,6 @@ extern const char *arc_target_format;
fixp->fx_frag->fr_address. */
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
-/* [ ] is index operator. */
-#define NEED_INDEX_OPERATOR
-
#define MAX_MEM_FOR_RS_ALIGN_CODE (1+2)
/* HANDLE_ALIGN called after all the assembly has been done,
@@ -125,6 +119,10 @@ extern const char *arc_target_format;
#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP, RELOC) \
arc_cons_fix_new ((FRAG), (OFF), (LEN), (EXP), (RELOC))
+/* We don't want to do any fixup when linker is relaxing. */
+#define TC_LINKRELAX_FIXUP(SEG) 1
+#define LINKER_RELAXING_SHRINKS_ONLY 1
+
/* We don't want gas to fixup the following program memory related
relocations. Check also that fx_addsy is not NULL, in order to
make sure that the fixup refers to some sort of label. */
@@ -134,26 +132,21 @@ extern const char *arc_target_format;
|| FIXP->fx_r_type == BFD_RELOC_ARC_S25W_PCREL_PLT \
|| FIXP->fx_r_type == BFD_RELOC_ARC_S25H_PCREL_PLT \
|| FIXP->fx_r_type == BFD_RELOC_ARC_S21W_PCREL_PLT \
- || FIXP->fx_r_type == BFD_RELOC_ARC_S21H_PCREL_PLT) \
- && FIXP->fx_addsy != NULL \
- && FIXP->fx_subsy == NULL) \
+ || FIXP->fx_r_type == BFD_RELOC_ARC_S21H_PCREL_PLT \
+ || (linkrelax \
+ && (FIXP->fx_r_type == BFD_RELOC_ARC_S7H_PCREL \
+ || FIXP->fx_r_type == BFD_RELOC_ARC_S8H_PCREL))) \
+ && (FIXP->fx_addsy != NULL) \
+ && (FIXP->fx_subsy == NULL)) \
{ \
symbol_mark_used_in_reloc (FIXP->fx_addsy); \
goto SKIP; \
}
-/* BFD_RELOC_ARC_TLS_GD_LD may use fx_subsy to store a label that is
- later turned into fx_offset. */
-#define TC_FORCE_RELOCATION_SUB_LOCAL(FIX, SEG) \
- ((FIX)->fx_r_type == BFD_RELOC_ARC_TLS_GD_LD)
-
-#define TC_VALIDATE_FIX_SUB(FIX, SEG) \
- ((md_register_arithmetic || (SEG) != reg_section) \
- && ((FIX)->fx_r_type == BFD_RELOC_GPREL32 \
- || (FIX)->fx_r_type == BFD_RELOC_GPREL16 \
- || (FIX)->fx_r_type == BFD_RELOC_ARC_TLS_DTPOFF \
- || (FIX)->fx_r_type == BFD_RELOC_ARC_TLS_DTPOFF_S9 \
- || TC_FORCE_RELOCATION_SUB_LOCAL (FIX, SEG)))
+/* The difference between same-section symbols may be affected by linker
+ relaxation, so do not resolve such expressions in the assembler. */
+#define md_allow_local_subtract(l,r,s) arc_allow_local_subtract(l, r, s)
+extern bfd_boolean arc_allow_local_subtract (expressionS *, expressionS *, segT);
/* We use this to mark the end-loop label. We use this mark for ZOL
validity checks. */
@@ -236,6 +229,11 @@ struct arc_flags
/* Pointer to arc flags. */
const struct arc_flag_operand *flgp;
+
+ /* Pointer to insert function. */
+ unsigned long long (*insert) (unsigned long long instruction,
+ long long int op,
+ const char **errmsg);
};
extern const relax_typeS md_relax_table[];
diff --git a/gas/configure b/gas/configure
index e59b58ef4ba..a9033957c99 100755
--- a/gas/configure
+++ b/gas/configure
@@ -13009,7 +13009,7 @@ $as_echo "#define NDS32_DEFAULT_ZOL_EXT 1" >>confdefs.h
$as_echo "$enable_zol_ext" >&6; }
;;
- aarch64 | i386 | s390 | sparc)
+ aarch64 | i386 | s390 | sparc | arc)
if test $this_target = $target ; then
cat >>confdefs.h <<_ACEOF
diff --git a/gas/configure.ac b/gas/configure.ac
index ae5d7003d35..183859183e1 100644
--- a/gas/configure.ac
+++ b/gas/configure.ac
@@ -569,7 +569,7 @@ changequote([,])dnl
AC_MSG_RESULT($enable_zol_ext)
;;
- aarch64 | i386 | s390 | sparc)
+ aarch64 | i386 | s390 | sparc | arc)
if test $this_target = $target ; then
AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
fi
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 337249597c5..49f3bf0d4c9 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -50,7 +50,8 @@ case ${cpu} in
aarch64_be) cpu_type=aarch64 endian=big arch=aarch64;;
alpha*) cpu_type=alpha ;;
am33_2.0) cpu_type=mn10300 endian=little ;;
- arc*eb) cpu_type=arc endian=big ;;
+ arceb) cpu_type=arc endian=big ;;
+ arc64*) cpu_type=arc arch=arc64 endian=little ;;
arm*be|arm*b) cpu_type=arm endian=big ;;
arm*) cpu_type=arm endian=little ;;
bfin*) cpu_type=bfin endian=little ;;
@@ -135,6 +136,7 @@ case ${generic_target} in
alpha-*-netbsd* | alpha-*-openbsd*) fmt=elf em=nbsd ;;
arc-*-elf*) fmt=elf ;;
+ arc64-*-*) fmt=elf ;;
arc*-*-linux*) fmt=elf bfd_gas=yes ;;
arm-*-phoenix*) fmt=elf ;;
diff --git a/gas/testsuite/gas/arc/arc.exp b/gas/testsuite/gas/arc/arc.exp
index 74f3166c545..5e7ac2242ae 100644
--- a/gas/testsuite/gas/arc/arc.exp
+++ b/gas/testsuite/gas/arc/arc.exp
@@ -14,6 +14,10 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+if { [istarget arc64-*-*] } {
+ return
+}
+
# ARC base instruction set
# ARC library extensions
diff --git a/gas/testsuite/gas/arc64/arc64.exp b/gas/testsuite/gas/arc64/arc64.exp
new file mode 100644
index 00000000000..5aa98e87c81
--- /dev/null
+++ b/gas/testsuite/gas/arc64/arc64.exp
@@ -0,0 +1,24 @@
+# Copyright (C) 2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+if { ![istarget arc64-*-*] } {
+ return
+}
+
+# ARC base instruction set
+
+# ARC library extensions
+run_dump_tests [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
diff --git a/gas/testsuite/gas/arc64/lddl.d b/gas/testsuite/gas/arc64/lddl.d
new file mode 100644
index 00000000000..f4f68def20e
--- /dev/null
+++ b/gas/testsuite/gas/arc64/lddl.d
@@ -0,0 +1,46 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format elf64-.*arc
+
+Disassembly of section .text:
+0x[0-9a-f]+ 21f2 0080 lddl r0r1,\[r1,r2\]
+0x[0-9a-f]+ 22f2 0f06 0000 0100 lddl r6r7,\[r2,256@s32\]
+0x[0-9a-f]+ 22f2 0f02 ffff feff lddl r2r3,\[r2,-257@s32\]
+0x[0-9a-f]+ 26f2 7144 8000 0000 lddl r4r5,\[0x80000000,r5\]
+0x[0-9a-f]+ 24f2 7144 ffff ff9c lddl r4r5,\[-100@s32,r5\]
+0x[0-9a-f]+ 1000 0682 lddl r2r3,\[r0\]
+0x[0-9a-f]+ 17ff 0686 lddl r6r7,\[r7,255\]
+0x[0-9a-f]+ 1700 8686 lddl r6r7,\[r7,-256\]
+0x[0-9a-f]+ 1400 7680 1337 1338 lddl r0r1,\[322376504@s32\]
+0x[0-9a-f]+ 1600 7682 8000 0000 lddl r2r3,\[0x80000000\]
+0x[0-9a-f]+ 1400 7682 8000 0000 lddl r2r3,\[-2147483648@s32\]
+0x[0-9a-f]+ 21f3 0080 lddl.aw r0r1,\[r1,r2\]
+0x[0-9a-f]+ 22f3 0f06 0000 0100 lddl.aw r6r7,\[r2,256@s32\]
+0x[0-9a-f]+ 22f3 0f02 ffff feff lddl.aw r2r3,\[r2,-257@s32\]
+0x[0-9a-f]+ 1000 06c2 lddl.aw r2r3,\[r0\]
+0x[0-9a-f]+ 17ff 06c6 lddl.aw r6r7,\[r7,255\]
+0x[0-9a-f]+ 1700 86c6 lddl.aw r6r7,\[r7,-256\]
+0x[0-9a-f]+ 21f3 0080 lddl.aw r0r1,\[r1,r2\]
+0x[0-9a-f]+ 22f3 0f06 0000 0100 lddl.aw r6r7,\[r2,256@s32\]
+0x[0-9a-f]+ 22f3 0f02 ffff feff lddl.aw r2r3,\[r2,-257@s32\]
+0x[0-9a-f]+ 1000 06c2 lddl.aw r2r3,\[r0\]
+0x[0-9a-f]+ 17ff 06c6 lddl.aw r6r7,\[r7,255\]
+0x[0-9a-f]+ 1700 86c6 lddl.aw r6r7,\[r7,-256\]
+0x[0-9a-f]+ 21f3 8080 lddl.ab r0r1,\[r1,r2\]
+0x[0-9a-f]+ 22f3 8f06 0000 0100 lddl.ab r6r7,\[r2,256@s32\]
+0x[0-9a-f]+ 22f3 8f02 ffff feff lddl.ab r2r3,\[r2,-257@s32\]
+0x[0-9a-f]+ 1000 0ec2 lddl.ab r2r3,\[r0\]
+0x[0-9a-f]+ 17ff 0ec6 lddl.ab r6r7,\[r7,255\]
+0x[0-9a-f]+ 1700 8ec6 lddl.ab r6r7,\[r7,-256\]
+0x[0-9a-f]+ 21f2 8080 lddl.as r0r1,\[r1,r2\]
+0x[0-9a-f]+ 22f2 8f06 0000 0100 lddl.as r6r7,\[r2,256@s32\]
+0x[0-9a-f]+ 22f2 8f02 ffff feff lddl.as r2r3,\[r2,-257@s32\]
+0x[0-9a-f]+ 26f2 f144 8000 0000 lddl.as r4r5,\[0x80000000,r5\]
+0x[0-9a-f]+ 24f2 f144 ffff ff9c lddl.as r4r5,\[-100@s32,r5\]
+0x[0-9a-f]+ 1000 0e82 lddl.as r2r3,\[r0\]
+0x[0-9a-f]+ 17ff 0e86 lddl.as r6r7,\[r7,255\]
+0x[0-9a-f]+ 1700 8e86 lddl.as r6r7,\[r7,-256\]
+0x[0-9a-f]+ 24f2 f144 ffff ff00 lddl.as r4r5,\[-256@s32,r5\]
+0x[0-9a-f]+ 1400 7e80 1337 1338 lddl.as r0r1,\[322376504@s32]
+0x[0-9a-f]+ 1600 7e82 8000 0000 lddl.as r2r3,\[0x80000000]
+0x[0-9a-f]+ 1400 7e82 8000 0000 lddl.as r2r3,\[-2147483648@s32]
diff --git a/gas/testsuite/gas/arc64/lddl.s b/gas/testsuite/gas/arc64/lddl.s
new file mode 100644
index 00000000000..b7412d57ca1
--- /dev/null
+++ b/gas/testsuite/gas/arc64/lddl.s
@@ -0,0 +1,54 @@
+# 128-bit loads
+
+ lddl r0, [r1,r2] ; lddl a, [b, c]
+ lddl r6, [r2,256] ; lddl a, [b, limm] (limm > s9)
+ lddl r2, [r2,-257] ; lddl a, [b, ximm]
+ lddl r4, [0x80000000,r5] ; lddl a, [limm, c]
+ lddl r4, [-100,r5] ; lddl a, [ximm, c]
+
+ lddl r2, [r0] ; lddl a, [b, s9=0]
+ lddl r6, [r7,255] ; lddl a, [b, s9] biggest s9
+ lddl r6, [r7,-256] ; lddl a, [b, s9] smallest s9
+ lddl r0, [0x13371338] ; lddl a, [limm,s9=0]
+ lddl r2, [0x80000000] ; lddl a, [limm,s9=0]
+ lddl r2, [-2147483648] ; lddl a, [ximm,s9=0]
+
+ ; Now, repetition of instructions above with suffices (*.a/aw/ab/as)
+
+ lddl.a r0, [r1,r2]
+ lddl.a r6, [r2,256]
+ lddl.a r2, [r2,-257]
+
+ lddl.a r2, [r0]
+ lddl.a r6, [r7,255]
+ lddl.a r6, [r7,-256]
+
+ lddl.aw r0, [r1,r2]
+ lddl.aw r6, [r2,256]
+ lddl.aw r2, [r2,-257]
+
+ lddl.aw r2, [r0]
+ lddl.aw r6, [r7,255]
+ lddl.aw r6, [r7,-256]
+
+ lddl.ab r0, [r1,r2]
+ lddl.ab r6, [r2,256]
+ lddl.ab r2, [r2,-257]
+
+ lddl.ab r2, [r0]
+ lddl.ab r6, [r7,255]
+ lddl.ab r6, [r7,-256]
+
+ lddl.as r0, [r1,r2]
+ lddl.as r6, [r2,256]
+ lddl.as r2, [r2,-257]
+ lddl.as r4, [0x80000000,r5]
+ lddl.as r4, [-100,r5]
+
+ lddl.as r2, [r0]
+ lddl.as r6, [r7,255]
+ lddl.as r6, [r7,-256]
+ lddl.as r4, [-256,r5]
+ lddl.as r0, [0x13371338]
+ lddl.as r2, [0x80000000]
+ lddl.as r2, [-2147483648]
diff --git a/gas/testsuite/gas/arc64/stdl.d b/gas/testsuite/gas/arc64/stdl.d
new file mode 100644
index 00000000000..90c39984c38
--- /dev/null
+++ b/gas/testsuite/gas/arc64/stdl.d
@@ -0,0 +1,32 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format elf64-.*arc
+
+Disassembly of section .text:
+0x[0-9a-f]+ 1900 0127 stdl r4r5,\[r1\]
+0x[0-9a-f]+ 19ff 0027 stdl r0r1,\[r1,255\]
+0x[0-9a-f]+ 1c00 80a7 stdl r2r3,\[r4,-256\]
+0x[0-9a-f]+ 1c00 7127 0000 1338 stdl r4r5,\[4920@s32\]
+0x[0-9a-f]+ 1e00 71a7 8000 0000 stdl r6r7,\[0x80000000\]
+0x[0-9a-f]+ 1c00 7227 ffff fc00 stdl r8r9,\[-1024@s32\]
+0x[0-9a-f]+ 1a00 8f27 1234 5678 stdl 305419896@s32,\[r2,-256\]
+0x[0-9a-f]+ 19ff 0f27 ffff 5bf0 stdl -42000@s32,\[r1,255\]
+0x[0-9a-f]+ 19ff 002f stdl.aw r0r1,\[r1,255\]
+0x[0-9a-f]+ 1c00 80af stdl.aw r2r3,\[r4,-256\]
+0x[0-9a-f]+ 1a00 8f2f 1234 5678 stdl.aw 305419896@s32,\[r2,-256\]
+0x[0-9a-f]+ 19ff 0f2f ffff 5bf0 stdl.aw -42000@s32,\[r1,255\]
+0x[0-9a-f]+ 19ff 002f stdl.aw r0r1,\[r1,255\]
+0x[0-9a-f]+ 1c00 80af stdl.aw r2r3,\[r4,-256\]
+0x[0-9a-f]+ 1a00 8f2f 1234 5678 stdl.aw 305419896@s32,\[r2,-256\]
+0x[0-9a-f]+ 19ff 0f2f ffff 5bf0 stdl.aw -42000@s32,\[r1,255\]
+0x[0-9a-f]+ 19ff 0037 stdl.ab r0r1,\[r1,255\]
+0x[0-9a-f]+ 1c00 80b7 stdl.ab r2r3,\[r4,-256\]
+0x[0-9a-f]+ 1a00 8f37 1234 5678 stdl.ab 305419896@s32,\[r2,-256\]
+0x[0-9a-f]+ 19ff 0f37 ffff 5bf0 stdl.ab -42000@s32,\[r1,255\]
+0x[0-9a-f]+ 19ff 003f stdl.as r0r1,\[r1,255\]
+0x[0-9a-f]+ 1c00 80bf stdl.as r2r3,\[r4,-256\]
+0x[0-9a-f]+ 1c00 713f 0000 1338 stdl.as r4r5,\[4920@s32\]
+0x[0-9a-f]+ 1e00 71bf 8000 0000 stdl.as r6r7,\[0x80000000\]
+0x[0-9a-f]+ 1c00 723f ffff fc00 stdl.as r8r9,\[-1024@s32\]
+0x[0-9a-f]+ 1a00 8f3f 1234 5678 stdl.as 305419896@s32,\[r2,-256\]
+0x[0-9a-f]+ 19ff 0f3f ffff 5bf0 stdl.as -42000@s32,\[r1,255\]
diff --git a/gas/testsuite/gas/arc64/stdl.s b/gas/testsuite/gas/arc64/stdl.s
new file mode 100644
index 00000000000..704b49857ac
--- /dev/null
+++ b/gas/testsuite/gas/arc64/stdl.s
@@ -0,0 +1,35 @@
+# 128-bit stores
+
+ stdl r4, [r1] ; stdl c, [b, s9=0]
+ stdl r0, [r1,255] ; stdl c, [b, s9] s9: biggest
+ stdl r2, [r4,-256] ; stdl c, [b, s9] s9: smallest
+ stdl r4, [0x1338] ; stdl c, [limm] limm: small positive
+ stdl r6, [0x80000000] ; stdl c, [limm] limm: positive
+ stdl r8, [-1024] ; stdl c, [ximm] ximm: negative
+ stdl 0x12345678, [r2, -256] ; stdl limm, [b, s9] limm: positive
+ stdl -42000, [r1, 255] ; stdl ximm, [b, s9] ximm: negative
+
+ ; Now, repetition of instructions above with suffices (*.a/aw/ab/as)
+
+ stdl.a r0, [r1,255]
+ stdl.a r2, [r4,-256]
+ stdl.a 0x12345678, [r2, -256]
+ stdl.a -42000, [r1, 255]
+
+ stdl.aw r0, [r1,255]
+ stdl.aw r2, [r4,-256]
+ stdl.aw 0x12345678, [r2, -256]
+ stdl.aw -42000, [r1, 255]
+
+ stdl.ab r0, [r1,255]
+ stdl.ab r2, [r4,-256]
+ stdl.ab 0x12345678, [r2, -256]
+ stdl.ab -42000, [r1, 255]
+
+ stdl.as r0, [r1,255]
+ stdl.as r2, [r4,-256]
+ stdl.as r4, [0x1338]
+ stdl.as r6, [0x80000000]
+ stdl.as r8, [-1024]
+ stdl.as 0x12345678, [r2, -256]
+ stdl.as -42000, [r1, 255]
diff --git a/gas/write.c b/gas/write.c
index 054f27987d5..171c5424ffb 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -2611,7 +2611,8 @@ relax_frag (segT segment, fragS *fragP, long stretch)
lowest order bits all 0s, return size of adjustment made. */
static relax_addressT
relax_align (relax_addressT address, /* Address now. */
- int alignment /* Alignment (binary). */)
+ int alignment, /* Alignment (binary). */
+ enum _relax_state fr_type)
{
relax_addressT mask;
relax_addressT new_address;
@@ -2619,7 +2620,7 @@ relax_align (relax_addressT address, /* Address now. */
mask = ~((relax_addressT) ~0 << alignment);
new_address = (address + mask) & (~mask);
#ifdef LINKER_RELAXING_SHRINKS_ONLY
- if (linkrelax)
+ if (linkrelax && fr_type == rs_align_code)
/* We must provide lots of padding, so the linker can discard it
when needed. The linker will not add extra space, ever. */
new_address += (1 << alignment);
@@ -2672,7 +2673,8 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass)
case rs_align_code:
case rs_align_test:
{
- addressT offset = relax_align (address, (int) fragP->fr_offset);
+ addressT offset = relax_align (address, (int) fragP->fr_offset,
+ fragP->fr_type);
if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
offset = 0;
@@ -2889,9 +2891,9 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass)
addressT oldoff, newoff;
oldoff = relax_align (was_address + fragP->fr_fix,
- (int) offset);
+ (int) offset, fragP->fr_type);
newoff = relax_align (address + fragP->fr_fix,
- (int) offset);
+ (int) offset, fragP->fr_type);
if (fragP->fr_subtype != 0)
{
diff --git a/include/elf/arc-cpu.def b/include/elf/arc-cpu.def
index 48bbd9a3430..585b653a0fc 100644
--- a/include/elf/arc-cpu.def
+++ b/include/elf/arc-cpu.def
@@ -19,6 +19,8 @@
02110-1301, USA. */
+ARC_CPU_TYPE_A64x (arc64, CD | DIV),
+
ARC_CPU_TYPE_A7xx (arc700, 0x00),
ARC_CPU_TYPE_A7xx (nps400, NPS400),
diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def
index 72776f94c38..c379cd4dea6 100644
--- a/include/elf/arc-reloc.def
+++ b/include/elf/arc-reloc.def
@@ -64,6 +64,13 @@ ARC_RELOC_HOWTO(ARC_32, 4, \
bitfield, \
( S + A ))
+ARC_RELOC_HOWTO(ARC_64, 5, \
+ 2, \
+ 64, \
+ replace_word64, \
+ bitfield, \
+ ( S + A ))
+
ARC_RELOC_HOWTO(ARC_N8, 8, \
0, \
8, \
@@ -90,7 +97,7 @@ ARC_RELOC_HOWTO(ARC_N32, 11, \
32, \
replace_word32, \
bitfield, \
- ( A - S ))
+ ( A - S))
ARC_RELOC_HOWTO(ARC_SDA, 12, \
2, \
@@ -201,14 +208,14 @@ ARC_RELOC_HOWTO(ARC_32_ME, 27, \
2, \
32, \
replace_limm, \
- signed, \
+ bitfield, \
( ME ( ( S + A ) ) ))
ARC_RELOC_HOWTO(ARC_32_ME_S, 105, \
2, \
32, \
replace_limms, \
- signed, \
+ bitfield, \
( ME ( ( S + A ) ) ))
ARC_RELOC_HOWTO(ARC_N32_ME, 28, \
@@ -511,3 +518,137 @@ ARC_RELOC_HOWTO(ARC_NPS_CMEM16, 78, \
replace_bits16, \
dont, \
( ME ( S + A )))
+
+ARC_RELOC_HOWTO(ARC_S9H_PCREL, 79, \
+ 2, \
+ 8, \
+ replace_disp8ls, \
+ signed, \
+ ( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ) )
+
+ARC_RELOC_HOWTO(ARC_S7H_PCREL, 80, \
+ 1, \
+ 6, \
+ replace_disp6s, \
+ signed, \
+ ( ( ( ( S + A ) - P ) >> 1 ) ) )
+
+ARC_RELOC_HOWTO(ARC_S8H_PCREL, 81, \
+ 1, \
+ 7, \
+ replace_disp7s, \
+ signed, \
+ ( ( ( ( S + A ) - P ) >> 1 ) ) )
+
+ARC_RELOC_HOWTO(ARC_S10H_PCREL, 82, \
+ 1, \
+ 9, \
+ replace_disp9s, \
+ signed, \
+ ( ( ( ( S + A ) - P ) >> 1 ) ) )
+
+ARC_RELOC_HOWTO(ARC_S13H_PCREL, 83, \
+ 2, \
+ 12, \
+ replace_disp12s, \
+ signed, \
+ ( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ) )
+
+ARC_RELOC_HOWTO(ARC_ALIGN, 84, \
+ 2, \
+ 0, \
+ replace_none, \
+ dont, \
+ 0 )
+
+ARC_RELOC_HOWTO(ARC_ADD8, 85, \
+ 0, \
+ 8, \
+ replace_bits8, \
+ dont, \
+ ( S + A ))
+
+ARC_RELOC_HOWTO(ARC_ADD16, 86, \
+ 1, \
+ 16, \
+ replace_bits16, \
+ dont, \
+ ( S + A ))
+
+ARC_RELOC_HOWTO(ARC_SUB8, 87, \
+ 0, \
+ 8, \
+ replace_bits8, \
+ dont, \
+ ( A - S + ICARRY ))
+
+ARC_RELOC_HOWTO(ARC_SUB16, 88, \
+ 1, \
+ 16, \
+ replace_bits16, \
+ dont, \
+ ( A - S + ICARRY ))
+
+ARC_RELOC_HOWTO(ARC_SUB32, 89, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( A - S + ICARRY))
+
+ARC_RELOC_HOWTO(ARC_LO32, 90, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( ( S + A ) & 4294967295 ))
+
+ARC_RELOC_HOWTO(ARC_HI32, 91, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( ( S + A ) >> 32 ))
+
+ARC_RELOC_HOWTO(ARC_LO32_ME, 92, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( ME ( ( ( S + A ) & 4294967295 ) ) ))
+
+ARC_RELOC_HOWTO(ARC_HI32_ME, 93, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( ME ( ( ( S + A ) >> 32 ) ) ))
+
+ARC_RELOC_HOWTO(ARC_N64, 94, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( DEREFP - ( S + A ) ))
+
+ARC_RELOC_HOWTO(ARC_SDA_LDST3, 95, \
+ 2, \
+ 9, \
+ replace_disp9ls, \
+ signed, \
+ ( ( ( S + A ) - _SDA_BASE_ ) >> 3 ))
+
+ARC_RELOC_HOWTO(ARC_NLO32, 96, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( DEREFP - ( ( S + A ) & 4294967295 ) ))
+
+ARC_RELOC_HOWTO(ARC_NLO32_ME, 97, \
+ 2, \
+ 32, \
+ replace_word32, \
+ dont, \
+ ( ME ( ( DEREFP - ( ( S + A ) & 4294967295 ) ) ) ))
+
diff --git a/include/elf/arc.h b/include/elf/arc.h
index a910c94ac20..4cfe7ad2060 100644
--- a/include/elf/arc.h
+++ b/include/elf/arc.h
@@ -50,6 +50,7 @@ END_RELOC_NUMBERS (R_ARC_max)
#define E_ARC_MACH_ARC700 0x00000003
#define EF_ARC_CPU_ARCV2EM 0x00000005
#define EF_ARC_CPU_ARCV2HS 0x00000006
+#define EF_ARC_CPU_ARC64 0x00000007
/* ARC Linux specific ABIs. */
#define E_ARC_OSABI_ORIG 0x00000000 /* MUST be 0 for back-compat. */
diff --git a/include/elf/common.h b/include/elf/common.h
index 4d94c4fd5b3..c03b3aa77ed 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -343,6 +343,9 @@
#define EM_NFP 250 /* Netronome Flow Processor. */
#define EM_CSKY 252 /* C-SKY processor family. */
+#define EM_ARC_COMPACT3_64 253 /* ARCv3 64 bit machine. */
+#define EM_ARC_COMPACT3 255 /* ARCv3 32 bit machine. */
+
/* If it is necessary to assign new unofficial EM_* values, please pick large
random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
with official or non-GNU unofficial values.
diff --git a/include/opcode/arc-attrs.h b/include/opcode/arc-attrs.h
index 5162db01113..bb86bb6a541 100644
--- a/include/opcode/arc-attrs.h
+++ b/include/opcode/arc-attrs.h
@@ -37,8 +37,8 @@ const struct feature_type
} FEATURE_LIST_NAME [] =
{
{ BTSCN, ARC_OPCODE_ARCALL, "BITSCAN", "bit-scan" },
- { CD, ARC_OPCODE_ARCV2, "CD", "code-density" },
- { DIV, ARC_OPCODE_ARCV2, "DIV_REM", "div/rem" },
+ { CD, ARC_OPCODE_ARCVx, "CD", "code-density" },
+ { DIV, ARC_OPCODE_ARCVx, "DIV_REM", "div/rem" },
{ DP, ARC_OPCODE_ARCv2HS, "FPUD", "double-precision FPU" },
{ DPA, ARC_OPCODE_ARCv2EM, "FPUDA", "double assist FP" },
{ DPX, ARC_OPCODE_ARCFPX, "DPFP", "double-precision FPX" },
diff --git a/include/opcode/arc-func.h b/include/opcode/arc-func.h
index d0e84d8251f..972f5d6b733 100644
--- a/include/opcode/arc-func.h
+++ b/include/opcode/arc-func.h
@@ -100,9 +100,22 @@ replace_word32 (unsigned insn, int value ATTRIBUTE_UNUSED)
return insn;
}
-
#endif /* REPLACE_word32 */
+/* mask = 1111111111111111111111111111111111111111111111111111111111111111. */
+#ifndef REPLACE_word64
+#define REPLACE_word64
+ATTRIBUTE_UNUSED static unsigned
+replace_word64 (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0xffffffffffffffff;
+ insn |= ((value >> 0) & 0xffffffff) << 0;
+
+ return insn;
+}
+#endif /* REPLACE_word64 */
+
+
/* mask = 0000000000000000000000000000000011111111111111111111111111111111. */
#ifndef REPLACE_limm
#define REPLACE_limm
@@ -292,3 +305,75 @@ replace_jli (unsigned insn, int value)
}
#endif /* REPLACE_jli */
+
+#ifndef REPLACE_disp8ls
+#define REPLACE_disp8ls
+/* mask = 0000 0000 1111 1110 2000 0000 0000 0000. */
+ATTRIBUTE_UNUSED static unsigned
+replace_disp8ls (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0xfe8000;
+ insn |= ((value >> 0) & 0x007f) << 17;
+ insn |= ((value >> 7) & 0x0001) << 15;
+
+ return insn;
+}
+#endif /* REPLACE_disp8ls */
+
+#ifndef REPLACE_disp9s
+#define REPLACE_disp9s
+/* mask = 0000000111111111
+ insn = 1111001sssssssss. */
+static unsigned
+replace_disp9s (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0x1ff;
+ insn |= ((value >> 0) & 0x01ff) << 0;
+
+ return insn;
+}
+#endif /* REPLACE_disp9s */
+
+#ifndef REPLACE_disp6s
+#define REPLACE_disp6s
+/* mask = 0000000000111111
+ insn = 1111011000ssssss. */
+ATTRIBUTE_UNUSED static unsigned
+replace_disp6s (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0x3f;
+ insn |= ((value >> 0) & 0x003f) << 0;
+
+ return insn;
+}
+
+#endif /* REPLACE_disp6s */
+
+#ifndef REPLACE_disp7s
+#define REPLACE_disp7s
+/* mask = 0000000001111111
+ insn = 11101bbb1sssssss. */
+ATTRIBUTE_UNUSED static unsigned
+replace_disp7s (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0x7f;
+ insn |= ((value >> 0) & 0x007f) << 0;
+
+ return insn;
+}
+#endif /* REPLACE_disp7s */
+
+#ifndef REPLACE_disp12s
+#define REPLACE_disp12s
+/* mask = 00000000000000000000111111222222
+ insn = 00100RRR101010000RRRssssssSSSSSS. */
+ATTRIBUTE_UNUSED static unsigned
+replace_disp12s (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0xfff;
+ insn |= ((value >> 0) & 0x003f) << 6;
+ insn |= ((value >> 6) & 0x003f) << 0;
+
+ return insn;
+}
+#endif /* REPLACE_disp12s */
diff --git a/include/opcode/arc.h b/include/opcode/arc.h
index 3a05cd89332..ec1e5a812b3 100644
--- a/include/opcode/arc.h
+++ b/include/opcode/arc.h
@@ -199,13 +199,17 @@ extern int arc_opcode_len (const struct arc_opcode *opcode);
#define ARC_OPCODE_ARC700 0x0002 /* ARC 700 specific insns. */
#define ARC_OPCODE_ARCv2EM 0x0004 /* ARCv2 EM specific insns. */
#define ARC_OPCODE_ARCv2HS 0x0008 /* ARCv2 HS specific insns. */
+#define ARC_OPCODE_ARC64 0x0010 /* ARC64 specific insns. */
/* CPU combi. */
#define ARC_OPCODE_ARCALL (ARC_OPCODE_ARC600 | ARC_OPCODE_ARC700 \
- | ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS)
+ | ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS \
+ | ARC_OPCODE_ARC64)
#define ARC_OPCODE_ARCFPX (ARC_OPCODE_ARC700 | ARC_OPCODE_ARCv2EM)
#define ARC_OPCODE_ARCV1 (ARC_OPCODE_ARC600 | ARC_OPCODE_ARC700)
#define ARC_OPCODE_ARCV2 (ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS)
+#define ARC_OPCODE_ARCVx \
+ (ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64)
#define ARC_OPCODE_ARCMPY6E (ARC_OPCODE_ARC700 | ARC_OPCODE_ARCV2)
/* The operands table is an array of struct arc_operand. */
@@ -326,6 +330,9 @@ extern const unsigned arc_NToperand;
/* Mark the colon position. */
#define ARC_OPERAND_COLON 0x4000
+/* Mark a floating point register. */
+#define ARC_OPERAND_FP 0x8000
+
/* Mask for selecting the type for typecheck purposes. */
#define ARC_OPERAND_TYPECHECK_MASK \
(ARC_OPERAND_IR \
@@ -370,6 +377,16 @@ struct arc_flag_class
/* List of valid flags (codes). */
unsigned flags[256];
+
+ /* Some special cases needs to use insert/extract functions for
+ flags as well. The function prototypes are identically like the
+ one used for insertion/extraction of an operand. The reason
+ beeing the ability of reusing these functions. */
+ unsigned long long (*insert) (unsigned long long instruction,
+ long long int op,
+ const char **errmsg);
+ long long int (*extract) (unsigned long long instruction,
+ bfd_boolean *invalid);
};
extern const struct arc_flag_class arc_flag_classes[];
@@ -442,6 +459,8 @@ struct arc_pseudo_insn
extern const struct arc_pseudo_insn arc_pseudo_insns[];
extern const unsigned arc_num_pseudo_insn;
+extern const struct arc_pseudo_insn arc64_pseudo_insns[];
+extern const unsigned arc64_num_pseudo_insn;
/* Structure for AUXILIARY registers. */
struct arc_aux_reg
@@ -479,8 +498,10 @@ extern const unsigned arc_num_relax_opcodes;
#define FIELDC(word) ((word & 0x3F) << 6)
#define FIELDF (0x01 << 15)
#define FIELDQ (0x1F)
+#define HARD_FIELDF (0x00)
-#define INSN3OP(MOP,SOP) (((MOP & 0x1F) << 27) | ((SOP & 0x3F) << 16))
+#define INSN3OP(MOP,SOP) \
+ (((MOP & 0x1F) << 27) | ((SOP & 0x3F) << 16) | HARD_FIELDF)
#define INSN2OPX(MOP,SOP1,SOP2) (INSN3OP (MOP,SOP1) | (SOP2 & 0x3F))
#define INSN2OP(MOP,SOP) (INSN2OPX (MOP,0x2F,SOP))
@@ -668,6 +689,105 @@ typedef enum
#define ARC_NUM_ADDRTYPES 16
+/*ARC64 floating point enums. */
+enum FP_SIZE {
+ P_HALF = 0,
+ P_SINGLE = 1,
+ P_DOUBLE = 2
+};
+
+enum TPOF {
+ TOPF_FMADD = 0,
+ TOPF_FMSUB = 1,
+ TOPF_FNMADD = 2,
+ TOPF_FNMSUB = 3,
+ TOPF_VFMADD = 4,
+ TOPF_VFMSUB = 5,
+ TOPF_VFNMADD = 6,
+ TOPF_VFNMSUB = 7,
+
+ TOPF_VFMADDS = 0xC,
+ TOPF_VFMSUBS = 0xD,
+ TOPF_VFNMADDS = 0xE,
+ TOPF_VFNMSUBS = 0xF
+};
+
+enum DPOF {
+ DOPF_FADD = 0,
+ DOPF_FSUB = 1,
+ DOPF_FMUL = 2,
+ DOPF_FDIV = 3,
+ DOPF_FCMP = 4,
+ DOPF_FCMPF = 5,
+ DOPF_FMIN = 6,
+ DOPF_FMAX = 7,
+ DOPF_FSGNJ = 8,
+ DOPF_FSGNJN = 10,
+ DOPF_FSGNJX = 11,
+
+ DOPF_VFADD = 0x10,
+ DOPF_VFSUB = 0x11,
+ DOPF_VFMUL = 0x12,
+ DOPF_VFDIV = 0x13,
+ DOPF_VFADDS = 0x14,
+ DOPF_VFSUBS = 0x15,
+ DOPF_VFMULS = 0x16,
+ DOPF_VFDIVS = 0x17
+};
+
+enum SOPF {
+ SOPF_FSQRT = 0,
+ SOPF_VFSQRT = 1,
+};
+
+enum COPF {
+ COPF_FMOV = 0,
+ COPF_VFMOV = 1,
+};
+
+enum CONVOPS {
+ FUINT2S = 0,
+ FS2UINT = 0,
+ FINT2S = 0,
+ FS2INT = 0,
+ FSRND = 0,
+ F2UINT_RZ = 0,
+ FSINT_RZ = 0,
+ FSRND_RZ = 0,
+ FMVI2S = 0,
+ FMVS2I = 0,
+ FS2H = 0,
+ FH2S = 0,
+ FS2H_RZ = 0,
+
+ FUINT2D = 1,
+ FS2UL = 1,
+ FINT2D = 1,
+ FS2L = 1,
+ FS2D = 1,
+ FS2UL_RZ = 1,
+ FS2L_RZ = 1,
+
+ FUL2S = 2,
+ FD2UINT = 2,
+ FL2S = 2,
+ FD2INT = 2,
+ FD2S = 2,
+ FD2UINT_RZ = 2,
+ FD2INT_RZ = 2,
+
+ FUL2D = 3,
+ FD2UL = 3,
+ FL2D = 3,
+ FD2L = 3,
+ FDRND = 3,
+ FD2UL_RZ = 3,
+ FD2L_RZ = 3,
+ FDRND_RZ = 3,
+ FMVL2D = 3,
+ FMVD2L = 3,
+};
+
#ifdef __cplusplus
}
#endif
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 1a88965f7ca..29c70aa440b 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -163,6 +163,7 @@ ALL_EMULATION_SOURCES = \
earcelf.c \
earclinux.c \
earclinux_nps.c \
+ earc64linux.c \
earm_wince_pe.c \
earmelf.c \
earmelf_fbsd.c \
@@ -425,6 +426,7 @@ ALL_64_EMULATION_SOURCES = \
eelf64_sparc.c \
eelf64_sparc_fbsd.c \
eelf64_sparc_sol2.c \
+ eelf64arc.c \
eelf64alpha.c \
eelf64alpha_fbsd.c \
eelf64alpha_nbsd.c \
@@ -649,6 +651,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earm_wince_pe.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fbsd.Pc@am__quote@
@@ -907,6 +910,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc_sol2.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64arc.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_nbsd.Pc@am__quote@
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 20c3bc6a091..7c040820e5c 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -646,6 +646,7 @@ ALL_EMULATION_SOURCES = \
earcelf.c \
earclinux.c \
earclinux_nps.c \
+ earc64linux.c \
earm_wince_pe.c \
earmelf.c \
earmelf_fbsd.c \
@@ -907,6 +908,7 @@ ALL_64_EMULATION_SOURCES = \
eelf64_sparc.c \
eelf64_sparc_fbsd.c \
eelf64_sparc_sol2.c \
+ eelf64arc.c \
eelf64alpha.c \
eelf64alpha_fbsd.c \
eelf64alpha_nbsd.c \
@@ -1194,6 +1196,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaixrs6.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealpha.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealphavms.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Po@am__quote@
@@ -1349,6 +1352,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_fbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_nbsd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64arc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64bmip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64bpf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64btsmip.Po@am__quote@
@@ -2244,6 +2248,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earm_wince_pe.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fbsd.Pc@am__quote@
@@ -2502,6 +2507,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64_sparc_sol2.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64arc.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64alpha_nbsd.Pc@am__quote@
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 87c7d9a4cad..37a2c9537f6 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -104,8 +104,16 @@ alpha*-*-*vms*) targ_emul=alphavms
;;
am33_2.0-*-linux*) targ_emul=elf32am33lin # mn10300 variant
;;
-arc*-*-elf*) targ_emul=arcelf
- targ_extra_emuls="arclinux arclinux_nps arcv2elf arcv2elfx"
+arc-*-elf* | arc[be]*-*-elf*) targ_emul=arcelf
+ targ_extra_emuls=elf64arc
+ targ_extra_emuls="${targ_extra_emuls} arclinux arclinux_nps arcv2elf arcv2elfx"
+ ;;
+arc64-*elf*) targ_emul=elf64arc
+ targ_extra_emuls=arcelf
+ targ_extra_emuls="${targ_extra_emuls} arclinux arclinux_nps arcv2elf arcv2elfx"
+ ;;
+arc64-*-linux*) targ_emul=arc64linux
+ targ_extra_emuls="${targ_extra_emuls} elf64arc"
;;
arc*-*-linux*) case "${with_cpu}" in
nps400) targ_emul=arclinux_nps
@@ -115,7 +123,7 @@ arc*-*-linux*) case "${with_cpu}" in
targ_extra_emuls=arclinux_nps
;;
esac
- targ_extra_emuls="${targ_extra_emuls} arcelf arcv2elf arcv2elfx"
+ targ_extra_emuls="${targ_extra_emuls} arcelf arcv2elf arcv2elfx elf64arc"
;;
arm*-*-cegcc*) targ_emul=arm_wince_pe
targ_extra_ofiles="deffilep.o pe-dll.o"
diff --git a/ld/emulparams/arc64linux.sh b/ld/emulparams/arc64linux.sh
new file mode 100644
index 00000000000..3ffa535304b
--- /dev/null
+++ b/ld/emulparams/arc64linux.sh
@@ -0,0 +1,22 @@
+ARCH=arc
+
+SCRIPT_NAME=elf
+ELFSIZE=64
+OUTPUT_FORMAT="elf64-littlearc"
+
+TEMPLATE_NAME=elf
+
+GENERATE_SHLIB_SCRIPT=yes
+GENERATE_PIE_SCRIPT=yes
+
+MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
+
+TEXT_START_ADDR=0x10000
+
+ENTRY=__start
+
+# To support RELRO security feature.
+NO_SMALL_DATA=yes
+SEPARATE_GOTPLT=4 #FIXME! what is the true value here?
+GENERATE_COMBRELOC_SCRIPT=yes
diff --git a/ld/emulparams/arcelf.sh b/ld/emulparams/arcelf.sh
index 625ec397790..06c7e1a79d1 100644
--- a/ld/emulparams/arcelf.sh
+++ b/ld/emulparams/arcelf.sh
@@ -21,3 +21,4 @@ OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
EMBEDDED=yes
GENERATE_SHLIB_SCRIPT=yes
+EXTRA_EM_FILE=arcelf
diff --git a/ld/emulparams/arcv2elf.sh b/ld/emulparams/arcv2elf.sh
index 4824f3540c8..4a21daec759 100644
--- a/ld/emulparams/arcv2elf.sh
+++ b/ld/emulparams/arcv2elf.sh
@@ -24,4 +24,4 @@ TEXT_START_ADDR=0x100
ENTRY=__start
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
JLI_START_TABLE='__JLI_TABLE__ = .;'
-OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
+EXTRA_EM_FILE=arcelf
diff --git a/ld/emulparams/arcv2elfx.sh b/ld/emulparams/arcv2elfx.sh
index ad134441255..3477e74a604 100644
--- a/ld/emulparams/arcv2elfx.sh
+++ b/ld/emulparams/arcv2elfx.sh
@@ -20,5 +20,5 @@ TEXT_START_ADDR=0x100
ENTRY=__start
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
JLI_START_TABLE='__JLI_TABLE__ = .;'
-OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
EMBEDDED=yes
+EXTRA_EM_FILE=arcelf
diff --git a/ld/emulparams/elf64arc.sh b/ld/emulparams/elf64arc.sh
new file mode 100644
index 00000000000..56cf1b2a117
--- /dev/null
+++ b/ld/emulparams/elf64arc.sh
@@ -0,0 +1,15 @@
+SCRIPT_NAME=elf
+ELFSIZE=64
+SCRIPT_NAME=elfarc
+TEMPLATE_NAME=elf
+OUTPUT_FORMAT="elf64-littlearc"
+
+TEXT_START_ADDR=0x00
+
+MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+ARCH=arc
+ENTRY=__start
+EMBEDDED=yes
+
+GENERATE_SHLIB_SCRIPT=yes
+EXTRA_EM_FILE=arcelf
diff --git a/ld/emultempl/arcelf.em b/ld/emultempl/arcelf.em
new file mode 100644
index 00000000000..035d25d3cf5
--- /dev/null
+++ b/ld/emultempl/arcelf.em
@@ -0,0 +1,40 @@
+# This shell script emits a C file. -*- C -*-
+# Copyright (C) 2019 Free Software Foundation, Inc.
+#
+# Copyright 2019 Synopsys Inc.
+#
+# This file is part of GLD, the Gnu Linker.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# This file is sourced from elf32.em, and defines extra arcelf
+# specific routines.
+#
+fragment <<EOF
+
+static void
+arcelf_before_allocation (void)
+{
+ /* Call main function; we're just extending it. */
+ gld${EMULATION_NAME}_before_allocation ();
+
+ /* ARC needs two step relaxation. */
+ link_info.relax_pass = 2;
+}
+
+EOF
+
+LDEMUL_BEFORE_ALLOCATION=arcelf_before_allocation
diff --git a/ld/testsuite/ld-arc/arc.exp b/ld/testsuite/ld-arc/arc.exp
index a8886ca1910..b7635feef7d 100644
--- a/ld/testsuite/ld-arc/arc.exp
+++ b/ld/testsuite/ld-arc/arc.exp
@@ -18,7 +18,8 @@
# MA 02110-1301, USA.
#
-if { ![istarget arc*-*-*] } {
+if { ![istarget arc*-*-*]
+ || [istarget arc64-*-*] } {
return
}
diff --git a/ld/testsuite/ld-arc/hiddso.d b/ld/testsuite/ld-arc/hiddso.d
new file mode 100644
index 00000000000..a336bac2331
--- /dev/null
+++ b/ld/testsuite/ld-arc/hiddso.d
@@ -0,0 +1,6 @@
+#source: hiddsoA.s
+#source: hiddsoB.s
+#ld: --shared -marclinux
+#readelf: -r
+
+There are no relocations in this file.
\ No newline at end of file
diff --git a/ld/testsuite/ld-arc/hiddsoA.s b/ld/testsuite/ld-arc/hiddsoA.s
new file mode 100644
index 00000000000..eafda4d051a
--- /dev/null
+++ b/ld/testsuite/ld-arc/hiddsoA.s
@@ -0,0 +1,3 @@
+ .hidden hidobj
+ .section .text
+ add r2,pcl,@hidobj@pcl
diff --git a/ld/testsuite/ld-arc/hiddsoB.s b/ld/testsuite/ld-arc/hiddsoB.s
new file mode 100644
index 00000000000..635c2405877
--- /dev/null
+++ b/ld/testsuite/ld-arc/hiddsoB.s
@@ -0,0 +1,6 @@
+ .data
+ .hidden hidobj
+ .global hidobj
+ .type hidobj,@object
+hidobj:
+ .zero 4
diff --git a/ld/testsuite/ld-arc/nps-1a.d b/ld/testsuite/ld-arc/nps-1a.d
index 4eae02472a3..687191dae1d 100644
--- a/ld/testsuite/ld-arc/nps-1a.d
+++ b/ld/testsuite/ld-arc/nps-1a.d
@@ -1,6 +1,6 @@
#source: nps-1.s
#as: -mcpu=arc700 -mnps400
-#ld: -defsym=foo=0x57f03000
+#ld: -defsym=foo=0x57f03000 -T sda-relocs.ld
#objdump: -d
.*: +file format .*arc.*
diff --git a/ld/testsuite/ld-arc/nps-1b.d b/ld/testsuite/ld-arc/nps-1b.d
index a4848b8b7d8..4845d6b100a 100644
--- a/ld/testsuite/ld-arc/nps-1b.d
+++ b/ld/testsuite/ld-arc/nps-1b.d
@@ -1,4 +1,4 @@
#source: nps-1.s
#as: -mcpu=arc700 -mnps400
-#ld: -defsym=foo=0x56f03000
+#ld: -defsym=foo=0x56f03000 -T sda-relocs.ld
#error_output: nps-1b.err
diff --git a/ld/testsuite/ld-arc/relax-call-1.d b/ld/testsuite/ld-arc/relax-call-1.d
new file mode 100644
index 00000000000..e08475b9dd9
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-1.d
@@ -0,0 +1,20 @@
+#source: relax-call-1.s
+#as: -mlinker-relax
+#ld: -q -A elf32-arclittle -relax
+#objdump: -dr
+
+[^:]+: file format elf.*arc
+
+
+Disassembly of section \.text:
+
+[01]+ <__start>:
+\s+[0-9]+: f801 bl_s 4 ;[0-9]+ <foo>
+ [0-9]+: R_ARC_S13_PCREL foo
+ [0-9]+: R_ARC_NONE \*ABS\*\+0x4
+\s+[0-9]+: f801 bl_s 4 ;[0-9]+ <foo>
+ [0-9]+: R_ARC_S13_PCREL foo
+
+[0-9]+ <foo>:
+\s+[0-9]+: 2000 0000 add r0,r0,r0
+ [0-9]+: R_ARC_NONE \*ABS\*\+0x6
diff --git a/ld/testsuite/ld-arc/relax-call-1.s b/ld/testsuite/ld-arc/relax-call-1.s
new file mode 100644
index 00000000000..6993ae46f26
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-1.s
@@ -0,0 +1,14 @@
+ .arc_attribute Tag_ARC_PCS_config, 2
+ .section .text
+ .align 4
+ .global __start
+ .type __start, @function
+__start:
+ bl @foo
+ bl_s @foo
+ .size __start, .-__start
+
+ .align 4
+foo:
+ add r0,r0,r0
+ .size foo, .-foo
diff --git a/ld/testsuite/ld-arc/relax-call-2.d b/ld/testsuite/ld-arc/relax-call-2.d
new file mode 100644
index 00000000000..5dfcf0d055b
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-2.d
@@ -0,0 +1,27 @@
+#source: relax-call-2.s
+#as: -mlinker-relax
+#ld: -q -A elf32-arclittle -relax
+#objdump: -dr
+
+[^:]+: file format elf.*arc
+
+
+Disassembly of section \.text:
+
+[0-9]+ <__start>:
+\s+[0-9a-f]+:\s+2000 0000\s+add.*
+\s+[0-9]+: R_ARC_NONE\s+\*ABS\*\+0x4
+\s+[0-9a-f]+:\s+f801\s+bl_s\s+4\s+;[0-9a-f]+ <foo>
+\s+[0-9]+: R_ARC_S13_PCREL\s+foo
+\s+[0-9a-f]+:\s+78e0\s.*
+\s+[0-9]+: R_ARC_NONE\s+\*ABS\*\+0x4
+
+[0-9]+ <foo>:
+\s+[0-9a-f]+:\s+2000 0000\s+add.*
+\s+[0-9a-f]+:\s+fffd\s+bl_s\s+-12\s+;[0-9a-f]+ <__start>
+\s+[0-9c]+: R_ARC_S13_PCREL\s+__start
+\s+[0-9a-f]+:\s+78e0\s.*
+\s+[0-9e]+: R_ARC_NONE\s+\*ABS\*\+0x6
+
+[0-9]+ <goo>:
+\s+[0-9a-f]+:\s+2000 0000\s+add.*
diff --git a/ld/testsuite/ld-arc/relax-call-2.s b/ld/testsuite/ld-arc/relax-call-2.s
new file mode 100644
index 00000000000..8f5204e2c5a
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-2.s
@@ -0,0 +1,23 @@
+ .section .text
+ .align 4
+ .global __start
+ .type __start, @function
+__start:
+ add r0,r0,r0
+ bl @foo
+ .size __start, .-__start
+
+ .align 4
+ .global foo
+ .type foo, @function
+foo:
+ add r0,r0,r0
+ bl_s @__start
+ .size foo, .-foo
+
+ .align 4
+ .global goo
+ .type goo, @function
+goo:
+ add r0,r0,r0
+ .size goo, .-goo
diff --git a/ld/testsuite/ld-arc/relax-call-3.d b/ld/testsuite/ld-arc/relax-call-3.d
new file mode 100644
index 00000000000..a1abcb0d848
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-3.d
@@ -0,0 +1,36 @@
+#source: relax-call-3.s
+#as: -mlinker-relax
+#ld: -q -A elf32-arclittle -relax
+#objdump: -dr
+
+[^:]+: file format elf.*arc
+
+
+Disassembly of section \.text:
+
+[0-9]+ <__start>:
+\s+[01]+: f803 bl_s 12 ;[0-9a-f]+ <foo>
+\s+[0-9]+: R_ARC_S13_PCREL foo
+\s+[0-9]+: R_ARC_NONE \*ABS\*\+0x4
+
+[0-9]+ <.L1>:
+\s+[0-9]+: 0002 0000.*
+\s+[0-9]+: R_ARC_32 \.L1
+\s+[0-9]+: R_ARC_SUB32 \.L0
+\s+[0-9]+: 0002 0002.*
+\s+[0-9]+: R_ARC_ADD16 \.L1
+\s+[0-9]+: R_ARC_SUB16 \.L0
+\s+[0-9]+: R_ARC_ADD8 \.L1
+\s+[0-9]+: R_ARC_SUB8 \.L0
+\s+[0-9a-f]+: 78e0\s+nop_s
+\s+[0-9a-f]+: R_ARC_NONE \*ABS\*\+0x4
+
+[0-9c]+ <foo>:
+\s+[0-9a-f]+: 2000 0000 add r0,r0,r0
+\s+[0-9a-f]+: fffc bl_s -16 ;[0-9a-f]+ <__start>
+\s+[0-9a-f]+: R_ARC_S13_PCREL __start
+\s+[0-9a-f]+: 78e0\s+nop_s
+\s+[0-9a-f]+: R_ARC_NONE \*ABS\*\+0x6
+
+[0-9a-f]+ <goo>:
+\s+[0-9a-f]+: 2000 0000 add r0,r0,r0
diff --git a/ld/testsuite/ld-arc/relax-call-3.s b/ld/testsuite/ld-arc/relax-call-3.s
new file mode 100644
index 00000000000..371949ba6e1
--- /dev/null
+++ b/ld/testsuite/ld-arc/relax-call-3.s
@@ -0,0 +1,27 @@
+ .section .text
+ .align 4
+ .global __start
+ .type __start, @function
+__start:
+.L0:
+ bl @foo
+.L1:
+ .word @.L1 - @.L0
+ .hword @.L1 - @.L0
+ .byte @.L1 - @.L0
+ .size __start, .-__start
+
+ .align 4
+ .global foo
+ .type foo, @function
+foo:
+ add r0,r0,r0
+ bl_s @__start
+ .size foo, .-foo
+
+ .align 4
+ .global goo
+ .type goo, @function
+goo:
+ add r0,r0,r0
+ .size goo, .-goo
diff --git a/ld/testsuite/ld-arc/relax-local-pic.d b/ld/testsuite/ld-arc/relax-local-pic.d
index 181a963223a..1cb2cbf057f 100644
--- a/ld/testsuite/ld-arc/relax-local-pic.d
+++ b/ld/testsuite/ld-arc/relax-local-pic.d
@@ -3,12 +3,12 @@
#ld: -q -A elf32-arclittle -relax
#objdump: -dr
-[^:]+: file format elf32-.*arc
+[^:]+: file format elf.*arc
Disassembly of section \.text:
[0-9a-f]+ <__start>:
\s+[0-9a-f]+: 2700 7f84 0000 [0-9a-f]+\s+add\s+r4,pcl,.*
- [0-9a-f]+: R_ARC_PC32 a_in_other_thread
+\s+[0-9a-f]+: R_ARC_PC32 a_in_other_thread
\s+[0-9a-f]+: 1c00 [0-9a-f\s]+ st\s+.*
diff --git a/ld/testsuite/ld-arc/weakhid.s b/ld/testsuite/ld-arc/weakhid.s
new file mode 100644
index 00000000000..a8c87da1a2d
--- /dev/null
+++ b/ld/testsuite/ld-arc/weakhid.s
@@ -0,0 +1,13 @@
+ .weak xweakobj
+ .weak xweakhidobj
+ .hidden xweakhidobj
+
+ .data
+ .global x
+ .type x,@object
+x:
+ .word xweakhidobj
+ .word xweakobj
+ .word xregobj
+.Lfe1:
+ .size x,.Lfe1-x
diff --git a/ld/testsuite/ld-arc/weakhiddso.d b/ld/testsuite/ld-arc/weakhiddso.d
new file mode 100644
index 00000000000..f52f27fc048
--- /dev/null
+++ b/ld/testsuite/ld-arc/weakhiddso.d
@@ -0,0 +1,29 @@
+#source: weakhid.s
+#ld: --shared -m arclinux -z nocombreloc --hash-style=sysv
+#objdump: -s -R -T
+
+# Check that .weak and .weak .hidden object references are handled
+# correctly when generating a DSO. Copied from CRIS port.
+
+.*: +file format .*arc.*
+
+DYNAMIC SYMBOL TABLE:
+0+2208 l d \.data 0+ \.data
+0+2208 g DO \.data 0+c x
+0+ D \*UND\* 0+ xregobj
+0+2214 g D \.data 0+ __bss_start
+0+ w D \*UND\* 0+ xweakobj
+0+2214 g D \.data 0+ _edata
+0+2214 g D \.data 0+ _end
+
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+0+2210 R_ARC_32 +xregobj
+0+ R_ARC_NONE +\*ABS\*
+
+Contents of section \.hash:
+#...
+Contents of section \.data:
+ 2208 00000000 00000000 00000000 .*
+#...
\ No newline at end of file
diff --git a/ld/testsuite/ld-arc64/arcv3_64-reloc-near-exe.dd b/ld/testsuite/ld-arc64/arcv3_64-reloc-near-exe.dd
new file mode 100644
index 00000000000..b40a5d77230
--- /dev/null
+++ b/ld/testsuite/ld-arc64/arcv3_64-reloc-near-exe.dd
@@ -0,0 +1,29 @@
+# an exemplary output
+#
+# test_static.exe: file format elf64-littlearc
+#
+#
+# Disassembly of section .text:
+#
+# 0000000000001000 <__start>:
+# 1000: 78e0 nop_s
+# 1002: 2731 ff0e 0000 7000 ldl r14,[pcl,28672@s32] ;8000 <.got>
+# 1006: R_ARC_GOTPC32 foo
+# 100a: 2731 ff0f 0000 7000 ldl r15,[pcl,28672@s32] ;8008 <.got+0x8>
+# 100e: R_ARC_GOTPC32 bar
+# 1012: 78e0 nop_s
+# 1014: 0000 0000 b 0 ;1014 <__start+0x14>
+
+[^:]+:\s+file format elf.*-.*arc
+
+
+Disassembly of section .text:
+
+^[0-9a-f]+.*:
+\s*[0-9a-f]+:\s+[0-9a-f\s]+nop_s
+\s*[0-9a-f]+:\s+[0-9a-f\s]+ldl\s+r14,.*
+\s*[0-9a-f]+:\s+R_ARC_GOTPC32\s+foo
+\s*[0-9a-f]+:\s+[0-9a-f\s]+ldl\s+r15,.*
+\s*[0-9a-f]+:\s+R_ARC_GOTPC32\s+bar
+\s*[0-9a-f]+:\s+[0-9a-f\s]+nop_s
+\s*[0-9a-f]+:.*
diff --git a/ld/testsuite/ld-arc64/arcv3_64-reloc-near-so.dd b/ld/testsuite/ld-arc64/arcv3_64-reloc-near-so.dd
new file mode 100644
index 00000000000..ee95fea7de0
--- /dev/null
+++ b/ld/testsuite/ld-arc64/arcv3_64-reloc-near-so.dd
@@ -0,0 +1,23 @@
+# an exemplary output
+#
+# test_dynamic.so: file format elf64-littlearc
+#
+#
+# Disassembly of section .got:
+#
+# 0000000000002440 <.got>:
+# 2440: 60 23 00 00 .word 0x00002360
+# ...
+# 2458: R_ARC_GLOB_DAT foo
+# 2460: R_ARC_GLOB_DAT bar
+
+[^:]+:\s+file format elf.*-.*arc
+
+
+Disassembly of section .got:
+
+^[0-9a-f]+.*:
+\s*[0-9a-f]+:.*
+\s*\.\.\.
+\s*[0-9a-f]+:\s+R_ARC_GLOB_DAT\s+foo
+\s*[0-9a-f]+:\s+R_ARC_GLOB_DAT\s+bar
diff --git a/ld/testsuite/ld-arc64/arcv3_64-reloc-near.s b/ld/testsuite/ld-arc64/arcv3_64-reloc-near.s
new file mode 100644
index 00000000000..1423f924414
--- /dev/null
+++ b/ld/testsuite/ld-arc64/arcv3_64-reloc-near.s
@@ -0,0 +1,11 @@
+ .comm foo,4
+ .comm bar,4
+
+ .text
+ .align 8
+
+ .global __start
+__start:
+ nop_s # messing with the alignment a bit
+ ldl r14, [pcl, @foo@gotpc]
+ ldl r15, [pcl, @bar@gotpc]
diff --git a/ld/testsuite/ld-arc64/arcv3_64.exp b/ld/testsuite/ld-arc64/arcv3_64.exp
new file mode 100644
index 00000000000..372dec01176
--- /dev/null
+++ b/ld/testsuite/ld-arc64/arcv3_64.exp
@@ -0,0 +1,36 @@
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+if { ![istarget arc64-*-*] } {
+ return
+}
+
+set arcv3_64_tests {
+ { "Near relocations (executable)"
+ "-q" "" "" {arcv3_64-reloc-near.s}
+ { { objdump { -Dr -j .text } arcv3_64-reloc-near-exe.dd } }
+ "arcv3_64-reloc.exe" }
+ { "Near relocations (shared object)"
+ "-shared -q" "" "" {arcv3_64-reloc-near.s}
+ { { objdump -DRj.got arcv3_64-reloc-near-so.dd } }
+ "arcv3_64-reloc-near.so" }
+}
+
+run_ld_link_tests $arcv3_64_tests
diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
index dc9e490ce8a..0c2923ce763 100644
--- a/opcodes/arc-dis.c
+++ b/opcodes/arc-dis.c
@@ -85,7 +85,7 @@ static const char * const regnames[64] =
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
- "r24", "r25", "gp", "fp", "sp", "ilink", "r30", "blink",
+ "r24", "r25", "r26", "fp", "sp", "ilink", "r30", "blink",
"r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",
"r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",
@@ -93,6 +93,14 @@ static const char * const regnames[64] =
"r56", "r57", "r58", "r59", "lp_count", "reserved", "LIMM", "pcl"
};
+static const char * const fpnames[32] =
+{
+ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
+ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
+ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
+ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
+};
+
static const char * const addrtypenames[ARC_NUM_ADDRTYPES] =
{
"bd", "jid", "lbd", "mbd", "sd", "sm", "xa", "xd",
@@ -126,7 +134,6 @@ static unsigned enforced_isa_mask = ARC_OPCODE_NONE;
static bfd_boolean print_hex = FALSE;
/* Macros section. */
-
#ifdef DEBUG
# define pr_debug(fmt, args...) fprintf (stderr, fmt, ##args)
#else
@@ -140,6 +147,12 @@ static bfd_boolean print_hex = FALSE;
#define BITS(word,s,e) (((word) >> (s)) & ((1ull << ((e) - (s)) << 1) - 1))
#define OPCODE_32BIT_INSN(word) (BITS ((word), 27, 31))
+#define REG_PCL 63
+#define REG_LIMM 62
+#define REG_LIMM_S 30
+#define REG_U32 62
+#define REG_S32 60
+
/* Functions implementation. */
/* Initialize private data. */
@@ -277,7 +290,7 @@ find_format_from_table (struct disassemble_info *info,
if (arc_opcode_len (opcode) != (int) insn_len)
continue;
- if ((insn & opcode->mask) != opcode->opcode)
+ if ((insn & opcode->mask) != (opcode->mask & opcode->opcode))
continue;
*has_limm = FALSE;
@@ -285,7 +298,7 @@ find_format_from_table (struct disassemble_info *info,
/* Possible candidate, check the operands. */
for (opidx = opcode->operands; *opidx; opidx++)
{
- int value, limmind;
+ int value, slimmind;
const struct arc_operand *operand = &arc_operands[*opidx];
if (operand->flags & ARC_OPERAND_FAKE)
@@ -296,19 +309,20 @@ find_format_from_table (struct disassemble_info *info,
else
value = (insn >> operand->shift) & ((1ull << operand->bits) - 1);
- /* Check for LIMM indicator. If it is there, then make sure
- we pick the right format. */
- limmind = (isa_mask & ARC_OPCODE_ARCV2) ? 0x1E : 0x3E;
+ /* Check for (short) LIMM indicator. If it is there, then
+ make sure we pick the right format. */
+ slimmind = (isa_mask & (ARC_OPCODE_ARCV2 | ARC_OPCODE_ARC64)) ?
+ REG_LIMM_S : REG_LIMM;
if (operand->flags & ARC_OPERAND_IR
&& !(operand->flags & ARC_OPERAND_LIMM))
- {
- if ((value == 0x3E && insn_len == 4)
- || (value == limmind && insn_len == 2))
- {
- invalid = TRUE;
- break;
- }
- }
+ if ((value == REG_LIMM && insn_len == 4)
+ || (value == slimmind && insn_len == 2)
+ || (isa_mask & ARC_OPCODE_ARC64
+ && (value == REG_S32) && (insn_len == 4)))
+ {
+ invalid = TRUE;
+ break;
+ }
if (operand->flags & ARC_OPERAND_LIMM
&& !(operand->flags & ARC_OPERAND_DUPLICATE))
@@ -338,11 +352,15 @@ find_format_from_table (struct disassemble_info *info,
for (flgopridx = cl_flags->flags; *flgopridx; ++flgopridx)
{
+ bfd_boolean tmp = FALSE;
const struct arc_flag_operand *flg_operand =
&arc_flag_operands[*flgopridx];
- value = (insn >> flg_operand->shift)
- & ((1 << flg_operand->bits) - 1);
+ if (cl_flags->extract)
+ value = (*cl_flags->extract)(insn, &tmp);
+ else
+ value = (insn >> flg_operand->shift)
+ & ((1 << flg_operand->bits) - 1);
if (value == flg_operand->code)
foundA = 1;
if (value)
@@ -539,8 +557,14 @@ print_flags (const struct arc_opcode *opcode,
if (!flg_operand->favail)
continue;
- value = (insn[0] >> flg_operand->shift)
- & ((1 << flg_operand->bits) - 1);
+ if (cl_flags->extract)
+ {
+ bfd_boolean tmp = FALSE;
+ value = (*cl_flags->extract)(insn[0], &tmp);
+ }
+ else
+ value = (insn[0] >> flg_operand->shift)
+ & ((1 << flg_operand->bits) - 1);
if (value == flg_operand->code)
{
/* FIXME!: print correctly nt/t flag. */
@@ -667,6 +691,11 @@ arc_insn_length (bfd_byte msb, bfd_byte lsb, struct disassemble_info *info)
return (major_opcode > 0xb) ? 2 : 4;
break;
+ case bfd_mach_arcv3_64:
+ if (major_opcode == 0x0b
+ || major_opcode == 0x1c)
+ return 4;
+ /* Fall through. */
case bfd_mach_arc_arcv2:
return (major_opcode > 0x7) ? 2 : 4;
break;
@@ -810,7 +839,9 @@ parse_option (const char *option)
{ #NAME, ARC_OPCODE_ARCv2EM, "ARC EM" }
#define ARC_CPU_TYPE_AV2HS(NAME,EXTRA) \
{ #NAME, ARC_OPCODE_ARCv2HS, "ARC HS" }
-#define ARC_CPU_TYPE_NONE \
+#define ARC_CPU_TYPE_A64x(NAME,EXTRA) \
+ { #NAME, ARC_OPCODE_ARC64, "ARC64" }
+#define ARC_CPU_TYPE_NONE \
{ 0, 0, 0 }
/* A table of CPU names and opcode sets. */
@@ -983,6 +1014,10 @@ print_insn_arc (bfd_vma memaddr,
isa_mask = ARC_OPCODE_ARC600;
break;
+ case bfd_mach_arcv3_64:
+ isa_mask = ARC_OPCODE_ARC64;
+ break;
+
case bfd_mach_arc_arcv2:
default:
isa_mask = ARC_OPCODE_ARCv2EM;
@@ -1264,19 +1299,32 @@ print_insn_arc (bfd_vma memaddr,
{
const char *rname;
- assert (value >=0 && value < 64);
+ assert (value >= 0 && value < 64);
rname = arcExtMap_coreRegName (value);
if (!rname)
- rname = regnames[value];
+ {
+ if (operand->flags & ARC_OPERAND_FP)
+ rname = fpnames[value & 0x1f];
+ else
+ rname = regnames[value];
+ }
(*info->fprintf_func) (info->stream, "%s", rname);
if (operand->flags & ARC_OPERAND_TRUNCATE)
{
- rname = arcExtMap_coreRegName (value + 1);
- if (!rname)
- rname = regnames[value + 1];
+ if ((value & 0x01) == 0)
+ {
+ rname = arcExtMap_coreRegName (value + 1);
+ if (operand->flags & ARC_OPERAND_FP)
+ rname = fpnames[(value + 1) & 0x1f];
+ else
+ rname = regnames[value + 1];
+ }
+ else
+ rname = _("\nWarning: illegal use of double register "
+ "pair.\n");
(*info->fprintf_func) (info->stream, "%s", rname);
}
- if (value == 63)
+ if (value == REG_PCL)
rpcl = TRUE;
else
rpcl = FALSE;
@@ -1289,7 +1337,10 @@ print_insn_arc (bfd_vma memaddr,
(*info->fprintf_func) (info->stream, "%s", rname);
else
{
- (*info->fprintf_func) (info->stream, "%#x", value);
+ if (operand->flags & ARC_OPERAND_SIGNED)
+ (*info->fprintf_func) (info->stream, "%d@s32", value);
+ else
+ (*info->fprintf_func) (info->stream, "%#x", value);
if (info->insn_type == dis_branch
|| info->insn_type == dis_jsr)
info->target = (bfd_vma) value;
@@ -1355,7 +1406,7 @@ print_insn_arc (bfd_vma memaddr,
= ARC_OPERAND_KIND_LIMM;
/* It is not important to have exactly the LIMM indicator
here. */
- arc_infop->operands[arc_infop->operands_count].value = 63;
+ arc_infop->operands[arc_infop->operands_count].value = REG_PCL;
}
else
{
diff --git a/opcodes/arc-ext-tbl.h b/opcodes/arc-ext-tbl.h
index 47f45e33ffc..585d19bb638 100644
--- a/opcodes/arc-ext-tbl.h
+++ b/opcodes/arc-ext-tbl.h
@@ -122,3 +122,18 @@ EXTINSN2OP ("dsp_fp_sqrt", ARC_OPCODE_ARCv2EM, FLOAT, QUARKSE2, 7, 45)
EXTINSN3OP ("dsp_fp_div", ARC_OPCODE_ARCv2EM, FLOAT, QUARKSE2, 7, 42)
EXTINSN3OP ("dsp_fp_cmp", ARC_OPCODE_ARCv2EM, FLOAT, QUARKSE1, 7, 43)
+
+#undef FLAGS_F
+#define FLAGS_F { 0 }
+
+#undef FLAGS_CCF
+#define FLAGS_CCF { C_CC }
+
+#undef FIELDF
+#define FIELDF 0x0
+
+#undef HARD_FIELDF
+#define HARD_FIELDF (0x01 << 15)
+
+EXTINSN3OP ("vpack2wl", ARC_OPCODE_ARC64, MOVE, NONE, 5, 0x38)
+EXTINSN3OP ("vpack2wm", ARC_OPCODE_ARC64, MOVE, NONE, 5, 0x39)
diff --git a/opcodes/arc-fxi.h b/opcodes/arc-fxi.h
index 31330cfedc3..0449f614a0f 100644
--- a/opcodes/arc-fxi.h
+++ b/opcodes/arc-fxi.h
@@ -1315,3 +1315,63 @@ extract_uimm6_axx_ (unsigned long long insn ATTRIBUTE_UNUSED,
return value;
}
#endif /* EXTRACT_UIMM6_AXX_ */
+
+/* mask = 0000022000011111. */
+#ifndef INSERT_UIMM9_A32_11_S
+#define INSERT_UIMM9_A32_11_S
+ATTRIBUTE_UNUSED static unsigned long long
+insert_uimm9_a32_11_s (unsigned long long insn ATTRIBUTE_UNUSED,
+ long long int value ATTRIBUTE_UNUSED,
+ const char **errmsg ATTRIBUTE_UNUSED)
+{
+ if (value & 0x03)
+ *errmsg = "Target address is not 32bit aligned.";
+
+ insn |= ((value >> 2) & 0x001f) << 0;
+ insn |= ((value >> 7) & 0x0003) << 9;
+ return insn;
+}
+#endif /* INSERT_UIMM9_A32_11_S */
+
+#ifndef EXTRACT_UIMM9_A32_11_S
+#define EXTRACT_UIMM9_A32_11_S
+ATTRIBUTE_UNUSED static long long int
+extract_uimm9_a32_11_s (unsigned long long insn ATTRIBUTE_UNUSED,
+ bfd_boolean *invalid ATTRIBUTE_UNUSED)
+{
+ unsigned value = 0;
+ value |= ((insn >> 0) & 0x001f) << 2;
+ value |= ((insn >> 9) & 0x0003) << 7;
+
+ return value;
+}
+#endif /* EXTRACT_UIMM9_A32_11_S */
+
+/* mask = 0000022222220111. */
+#ifndef INSERT_UIMM10_13_S
+#define INSERT_UIMM10_13_S
+ATTRIBUTE_UNUSED static unsigned long long
+insert_uimm10_13_s (unsigned long long insn ATTRIBUTE_UNUSED,
+ long long int value ATTRIBUTE_UNUSED,
+ const char **errmsg ATTRIBUTE_UNUSED)
+{
+ insn |= ((value >> 0) & 0x0007) << 0;
+ insn |= ((value >> 3) & 0x007f) << 4;
+
+ return insn;
+}
+#endif /* INSERT_UIMM10_13_S */
+
+#ifndef EXTRACT_UIMM10_13_S
+#define EXTRACT_UIMM10_13_S
+ATTRIBUTE_UNUSED static long long int
+extract_uimm10_13_s (unsigned long long insn ATTRIBUTE_UNUSED,
+ bfd_boolean *invalid ATTRIBUTE_UNUSED)
+{
+ unsigned value = 0;
+ value |= ((insn >> 0) & 0x0007) << 0;
+ value |= ((insn >> 4) & 0x007f) << 3;
+
+ return value;
+}
+#endif /* EXTRACT_UIMM10_13_S */
diff --git a/opcodes/arc-opc.c b/opcodes/arc-opc.c
index 675738aa6be..17b69425d84 100644
--- a/opcodes/arc-opc.c
+++ b/opcodes/arc-opc.c
@@ -53,6 +53,16 @@ insert_rb (unsigned long long insn,
return insn | ((value & 0x07) << 24) | (((value >> 3) & 0x07) << 12);
}
+/* Insert RB register into a push(d)l/pop(d)l instruction. */
+
+static unsigned long long
+insert_rbb (unsigned long long insn,
+ long long value,
+ const char ** errmsg ATTRIBUTE_UNUSED)
+{
+ return insn | ((value & 0x07) << 8) | (((value >> 3) & 0x07) << 1);
+}
+
/* Insert RB register with checks. */
static unsigned long long
@@ -66,6 +76,26 @@ insert_rb_chk (unsigned long long insn,
return insn | ((value & 0x07) << 24) | (((value >> 3) & 0x07) << 12);
}
+/* Insert a floating point register into fs2 slot. */
+
+static unsigned long long
+insert_fs2 (unsigned long long insn,
+ long long value,
+ const char ** errmsg ATTRIBUTE_UNUSED)
+{
+ return insn | ((value & 0x07) << 24) | (((value >> 3) & 0x03) << 12);
+}
+
+/* Insert address writeback mode for 128-bit loads. */
+
+static unsigned long long
+insert_qq (unsigned long long insn,
+ long long value,
+ const char ** errmsg ATTRIBUTE_UNUSED)
+{
+ return insn | ((value & 0x01) << 11) | ((value & 0x02) << (6-1));
+}
+
static long long
extract_rb (unsigned long long insn,
bfd_boolean * invalid)
@@ -79,6 +109,41 @@ extract_rb (unsigned long long insn,
return value;
}
+static long long
+extract_rbb (unsigned long long insn,
+ bfd_boolean * invalid)
+{
+ int value = (((insn >> 1) & 0x07) << 3) | ((insn >> 8) & 0x07);
+
+ if (value == 0x3e && invalid)
+ *invalid = TRUE; /* A limm operand, it should be extracted in a
+ different way. */
+
+ return value;
+}
+
+/* Extract the floating point register number from fs2 slot. */
+
+static long long
+extract_fs2 (unsigned long long insn,
+ bfd_boolean * invalid ATTRIBUTE_UNUSED)
+{
+ long long value;
+ value = (((insn >> 12) & 0x03) << 3) | ((insn >> 24) & 0x07);
+ return value;
+}
+
+/* Extract address writeback mode for 128-bit loads. */
+
+static long long
+extract_qq (unsigned long long insn,
+ bfd_boolean * invalid ATTRIBUTE_UNUSED)
+{
+ long long value;
+ value = ((insn & 0x800) >> 11) | ((insn & 0x40) >> (6-1));
+ return value;
+}
+
static unsigned long long
insert_rad (unsigned long long insn,
long long value,
@@ -276,7 +341,8 @@ insert_gp (unsigned long long insn,
long long value,
const char ** errmsg)
{
- if (value != 26)
+ if (value != 26
+ && value != 30)
*errmsg = _("register must be GP");
return insn;
}
@@ -1364,11 +1430,33 @@ const struct arc_flag_operand arc_flag_operands[] =
/* FLAG. */
#define F_FLAG (F_NO_T + 1)
{ "f", 1, 1, 15, 1 },
-#define F_FFAKE (F_FLAG + 1)
+#define F_FFAKE (F_FLAG + 1)
{ "f", 0, 0, 0, 1 },
+#define F_AQ (F_FFAKE + 1)
+ { "aq", 1, 1, 15, 1 },
+#define F_RL (F_AQ + 1)
+ { "rl", 1, 1, 15, 1 },
+
+ /* Atomic operations. */
+#define F_ATO_ADD (F_RL + 1)
+ { "add", 0, 3, 0, 1 },
+#define F_ATO_OR (F_ATO_ADD + 1)
+ { "or", 1, 3, 0, 1 },
+#define F_ATO_AND (F_ATO_OR + 1)
+ { "and", 2, 3, 0, 1 },
+#define F_ATO_XOR (F_ATO_AND + 1)
+ { "xor", 3, 3, 0, 1 },
+#define F_ATO_MINU (F_ATO_XOR + 1)
+ { "minu", 4, 3, 0, 1 },
+#define F_ATO_MAXU (F_ATO_MINU + 1)
+ { "maxu", 5, 3, 0, 1 },
+#define F_ATO_MIN (F_ATO_MAXU + 1)
+ { "min", 6, 3, 0, 1 },
+#define F_ATO_MAX (F_ATO_MIN + 1)
+ { "max", 7, 3, 0, 1 },
/* Delay slot. */
-#define F_ND (F_FFAKE + 1)
+#define F_ND (F_ATO_MAX + 1)
{ "nd", 0, 1, 5, 0 },
#define F_D (F_ND + 1)
{ "d", 1, 1, 5, 1 },
@@ -1428,9 +1516,26 @@ const struct arc_flag_operand arc_flag_operands[] =
{ "as", 3, 2, 22, 1 },
#define F_ASFAKE (F_AS22 + 1)
{ "as", 0, 0, 0, 1 },
+/* address writebacks for 128-bit loads.
+ ,---.---.----------.
+ | X | D | mnemonic |
+ |---+---+----------|
+ | 0 | 0 | none |
+ | 0 | 1 | as |
+ | 1 | 0 | a/aw |
+ | 1 | 1 | ab |
+ `---^---^----------' */
+#define F_AA128 (F_ASFAKE + 1)
+ { "a", 2, 2, 15, 0 },
+#define F_AA128W (F_AA128 + 1)
+ { "aw", 2, 2, 15, 1 },
+#define F_AA128B (F_AA128W + 1)
+ { "ab", 3, 2, 15, 1 },
+#define F_AA128S (F_AA128B + 1)
+ { "as", 1, 2, 15, 1 },
/* Cache bypass. */
-#define F_DI5 (F_ASFAKE + 1)
+#define F_DI5 (F_AA128S + 1)
{ "di", 1, 1, 5, 1 },
#define F_DI11 (F_DI5 + 1)
{ "di", 1, 1, 11, 1 },
@@ -1452,9 +1557,13 @@ const struct arc_flag_operand arc_flag_operands[] =
{ "h", 2, 2, 17, 1 },
#define F_SIZED (F_H17 + 1)
{ "dd", 8, 0, 0, 0 }, /* Fake. */
+#define F_SIZEL (F_SIZED + 1)
+ { "dl", 8, 0, 0, 0 }, /* Fake. */
+#define F_SIZEW (F_SIZEL + 1)
+ { "xx", 4, 0, 0, 0 }, /* Fake. */
/* Fake Flags. */
-#define F_NE (F_SIZED + 1)
+#define F_NE (F_SIZEW + 1)
{ "ne", 0, 0, 0, 1 },
/* ARC NPS400 Support: See comment near head of file. */
@@ -1582,52 +1691,58 @@ const unsigned arc_num_flag_operands = ARRAY_SIZE (arc_flag_operands);
const struct arc_flag_class arc_flag_classes[] =
{
#define C_EMPTY 0
- { F_CLASS_NONE, { F_NULL } },
+ { F_CLASS_NONE, { F_NULL }, 0, 0 },
#define C_CC_EQ (C_EMPTY + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_EQUAL, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_EQUAL, F_NULL}, 0, 0 },
#define C_CC_GE (C_CC_EQ + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_GE, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_GE, F_NULL}, 0, 0 },
#define C_CC_GT (C_CC_GE + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_GT, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_GT, F_NULL}, 0, 0},
#define C_CC_HI (C_CC_GT + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_HI, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_HI, F_NULL}, 0, 0},
#define C_CC_HS (C_CC_HI + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_NOTCARRY, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_NOTCARRY, F_NULL}, 0, 0},
#define C_CC_LE (C_CC_HS + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LE, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LE, F_NULL}, 0, 0},
#define C_CC_LO (C_CC_LE + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_CARRY, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_CARRY, F_NULL}, 0, 0},
#define C_CC_LS (C_CC_LO + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LS, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LS, F_NULL}, 0, 0},
#define C_CC_LT (C_CC_LS + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LT, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_LT, F_NULL}, 0, 0},
#define C_CC_NE (C_CC_LT + 1)
- {F_CLASS_IMPLICIT | F_CLASS_COND, {F_NOTEQUAL, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_COND, {F_NOTEQUAL, F_NULL}, 0, 0},
#define C_AA_AB (C_CC_NE + 1)
- {F_CLASS_IMPLICIT | F_CLASS_WB, {F_AB3, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_WB, {F_AB3, F_NULL}, 0, 0},
#define C_AA_AW (C_AA_AB + 1)
- {F_CLASS_IMPLICIT | F_CLASS_WB, {F_AW3, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_WB, {F_AW3, F_NULL}, 0, 0},
#define C_ZZ_D (C_AA_AW + 1)
- {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZED, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZED, F_NULL}, 0, 0},
+
+#define C_ZZ_L (C_ZZ_D + 1)
+ {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZEL, F_NULL}, 0, 0},
-#define C_ZZ_H (C_ZZ_D + 1)
- {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_H1, F_NULL} },
+#define C_ZZ_W (C_ZZ_L + 1)
+ {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZEW, F_NULL}, 0, 0},
+
+#define C_ZZ_H (C_ZZ_W + 1)
+ {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_H1, F_NULL}, 0, 0},
#define C_ZZ_B (C_ZZ_H + 1)
- {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZEB1, F_NULL} },
+ {F_CLASS_IMPLICIT | F_CLASS_ZZ, {F_SIZEB1, F_NULL}, 0, 0},
#define C_CC (C_ZZ_B + 1)
{ F_CLASS_OPTIONAL | F_CLASS_EXTEND | F_CLASS_COND,
@@ -1636,153 +1751,197 @@ const struct arc_flag_class arc_flag_classes[] =
F_CARRY, F_CARRYSET, F_LOWER, F_CARRYCLR,
F_NOTCARRY, F_HIGHER, F_OVERFLOWSET, F_OVERFLOW,
F_NOTOVERFLOW, F_OVERFLOWCLR, F_GT, F_GE, F_LT,
- F_LE, F_HI, F_LS, F_PNZ, F_NJ, F_NM, F_NO_T, F_NULL } },
+ F_LE, F_HI, F_LS, F_PNZ, F_NJ, F_NM, F_NO_T, F_NULL }, 0, 0},
#define C_AA_ADDR3 (C_CC + 1)
#define C_AA27 (C_CC + 1)
- { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A3, F_AW3, F_AB3, F_AS3, F_NULL } },
-#define C_AA_ADDR9 (C_AA_ADDR3 + 1)
-#define C_AA21 (C_AA_ADDR3 + 1)
- { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A9, F_AW9, F_AB9, F_AS9, F_NULL } },
-#define C_AA_ADDR22 (C_AA_ADDR9 + 1)
-#define C_AA8 (C_AA_ADDR9 + 1)
- { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A22, F_AW22, F_AB22, F_AS22, F_NULL } },
-
-#define C_F (C_AA_ADDR22 + 1)
- { F_CLASS_OPTIONAL, { F_FLAG, F_NULL } },
+ { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A3, F_AW3, F_AB3, F_AS3, F_NULL }, 0, 0},
+#define C_AS27 (C_AA_ADDR3 + 1)
+ { F_CLASS_OPTIONAL, { F_AS3, F_NULL }, 0, 0},
+#define C_AA_ADDR9 (C_AS27 + 1)
+#define C_AA21 (C_AS27 + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A9, F_AW9, F_AB9, F_AS9, F_NULL }, 0, 0},
+#define C_AAB21 (C_AA21 + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB, { F_A9, F_AW9, F_AB9, F_NULL }, 0, 0},
+#define C_AA_ADDR22 (C_AAB21 + 1)
+#define C_AA8 (C_AAB21 + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB,
+ { F_A22, F_AW22, F_AB22, F_AS22, F_NULL }, 0, 0},
+#define C_AAB8 (C_AA8 + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB,
+ { F_A22, F_AW22, F_AB22, F_NULL }, 0, 0},
+
+#define C_F (C_AAB8 + 1)
+ { F_CLASS_OPTIONAL, { F_FLAG, F_NULL }, 0, 0},
#define C_FHARD (C_F + 1)
- { F_CLASS_OPTIONAL, { F_FFAKE, F_NULL } },
+ { F_CLASS_OPTIONAL, { F_FFAKE, F_NULL }, 0, 0},
+#define C_AQ (C_FHARD + 1)
+ { F_CLASS_OPTIONAL, { F_AQ, F_RL, F_NULL }, 0, 0},
+
+#define C_ATOP (C_AQ + 1)
+ { F_CLASS_REQUIRED, {F_ATO_ADD, F_ATO_OR, F_ATO_AND, F_ATO_XOR, F_ATO_MINU,
+ F_ATO_MAXU, F_ATO_MIN, F_ATO_MAX, F_NULL}, 0, 0},
-#define C_T (C_FHARD + 1)
- { F_CLASS_OPTIONAL, { F_NT, F_T, F_NULL } },
+#define C_T (C_ATOP + 1)
+ { F_CLASS_OPTIONAL, { F_NT, F_T, F_NULL }, 0, 0},
#define C_D (C_T + 1)
- { F_CLASS_OPTIONAL, { F_ND, F_D, F_NULL } },
+ { F_CLASS_OPTIONAL, { F_ND, F_D, F_NULL }, 0, 0},
#define C_DNZ_D (C_D + 1)
- { F_CLASS_OPTIONAL, { F_DNZ_ND, F_DNZ_D, F_NULL } },
+ { F_CLASS_OPTIONAL, { F_DNZ_ND, F_DNZ_D, F_NULL }, 0, 0},
#define C_DHARD (C_DNZ_D + 1)
- { F_CLASS_OPTIONAL, { F_DFAKE, F_NULL } },
+ { F_CLASS_OPTIONAL, { F_DFAKE, F_NULL }, 0, 0},
#define C_DI20 (C_DHARD + 1)
- { F_CLASS_OPTIONAL, { F_DI11, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_DI11, F_NULL }, 0, 0},
#define C_DI14 (C_DI20 + 1)
- { F_CLASS_OPTIONAL, { F_DI14, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_DI14, F_NULL }, 0, 0},
#define C_DI16 (C_DI14 + 1)
- { F_CLASS_OPTIONAL, { F_DI15, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_DI15, F_NULL }, 0, 0},
#define C_DI26 (C_DI16 + 1)
- { F_CLASS_OPTIONAL, { F_DI5, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_DI5, F_NULL }, 0, 0},
#define C_X25 (C_DI26 + 1)
- { F_CLASS_OPTIONAL, { F_SIGN6, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_SIGN6, F_NULL }, 0, 0},
#define C_X15 (C_X25 + 1)
- { F_CLASS_OPTIONAL, { F_SIGN16, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_SIGN16, F_NULL }, 0, 0},
#define C_XHARD (C_X15 + 1)
#define C_X (C_X15 + 1)
- { F_CLASS_OPTIONAL, { F_SIGNX, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_SIGNX, F_NULL }, 0, 0},
#define C_ZZ13 (C_X + 1)
- { F_CLASS_OPTIONAL, { F_SIZEB17, F_SIZEW17, F_H17, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_SIZEB17, F_SIZEW17, F_H17, F_NULL}, 0, 0},
#define C_ZZ23 (C_ZZ13 + 1)
- { F_CLASS_OPTIONAL, { F_SIZEB7, F_SIZEW7, F_H7, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_SIZEB7, F_SIZEW7, F_H7, F_NULL}, 0, 0},
#define C_ZZ29 (C_ZZ23 + 1)
- { F_CLASS_OPTIONAL, { F_SIZEB1, F_SIZEW1, F_H1, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_SIZEB1, F_SIZEW1, F_H1, F_NULL}, 0, 0},
#define C_AS (C_ZZ29 + 1)
- { F_CLASS_OPTIONAL, { F_ASFAKE, F_NULL}},
+#define C_AAHARD13 (C_ZZ29 + 1)
+ { F_CLASS_OPTIONAL, { F_ASFAKE, F_NULL}, 0, 0},
#define C_NE (C_AS + 1)
- { F_CLASS_REQUIRED, { F_NE, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NE, F_NULL}, 0, 0},
/* ARC NPS400 Support: See comment near head of file. */
#define C_NPS_CL (C_NE + 1)
- { F_CLASS_REQUIRED, { F_NPS_CL, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_CL, F_NULL}, 0, 0},
#define C_NPS_NA (C_NPS_CL + 1)
- { F_CLASS_OPTIONAL, { F_NPS_NA, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_NA, F_NULL}, 0, 0},
#define C_NPS_SR (C_NPS_NA + 1)
- { F_CLASS_OPTIONAL, { F_NPS_SR, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_SR, F_NULL}, 0, 0},
#define C_NPS_M (C_NPS_SR + 1)
- { F_CLASS_OPTIONAL, { F_NPS_M, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_M, F_NULL}, 0, 0},
#define C_NPS_F (C_NPS_M + 1)
- { F_CLASS_OPTIONAL, { F_NPS_FLAG, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_FLAG, F_NULL}, 0, 0},
#define C_NPS_R (C_NPS_F + 1)
- { F_CLASS_OPTIONAL, { F_NPS_R, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_R, F_NULL}, 0, 0},
#define C_NPS_SCHD_RW (C_NPS_R + 1)
- { F_CLASS_REQUIRED, { F_NPS_RW, F_NPS_RD, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_RW, F_NPS_RD, F_NULL}, 0, 0},
#define C_NPS_SCHD_TRIG (C_NPS_SCHD_RW + 1)
- { F_CLASS_REQUIRED, { F_NPS_WFT, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_WFT, F_NULL}, 0, 0},
#define C_NPS_SCHD_IE (C_NPS_SCHD_TRIG + 1)
- { F_CLASS_OPTIONAL, { F_NPS_IE1, F_NPS_IE2, F_NPS_IE12, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_IE1, F_NPS_IE2, F_NPS_IE12, F_NULL}, 0, 0},
#define C_NPS_SYNC (C_NPS_SCHD_IE + 1)
- { F_CLASS_REQUIRED, { F_NPS_SYNC_RD, F_NPS_SYNC_WR, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_SYNC_RD, F_NPS_SYNC_WR, F_NULL}, 0, 0},
#define C_NPS_HWS_OFF (C_NPS_SYNC + 1)
- { F_CLASS_REQUIRED, { F_NPS_HWS_OFF, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_HWS_OFF, F_NULL}, 0, 0},
#define C_NPS_HWS_RESTORE (C_NPS_HWS_OFF + 1)
- { F_CLASS_REQUIRED, { F_NPS_HWS_RESTORE, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_HWS_RESTORE, F_NULL}, 0, 0},
#define C_NPS_SX (C_NPS_HWS_RESTORE + 1)
- { F_CLASS_OPTIONAL, { F_NPS_SX, F_NULL}},
+ { F_CLASS_OPTIONAL, { F_NPS_SX, F_NULL}, 0, 0},
#define C_NPS_AR_AL (C_NPS_SX + 1)
- { F_CLASS_REQUIRED, { F_NPS_AR, F_NPS_AL, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_AR, F_NPS_AL, F_NULL}, 0, 0},
#define C_NPS_S (C_NPS_AR_AL + 1)
- { F_CLASS_REQUIRED, { F_NPS_S, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_S, F_NULL}, 0, 0},
#define C_NPS_ZNCV (C_NPS_S + 1)
- { F_CLASS_REQUIRED, { F_NPS_ZNCV_RD, F_NPS_ZNCV_WR, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_ZNCV_RD, F_NPS_ZNCV_WR, F_NULL}, 0, 0},
#define C_NPS_P0 (C_NPS_ZNCV + 1)
- { F_CLASS_REQUIRED, { F_NPS_P0, F_NULL }},
+ { F_CLASS_REQUIRED, { F_NPS_P0, F_NULL }, 0, 0},
#define C_NPS_P1 (C_NPS_P0 + 1)
- { F_CLASS_REQUIRED, { F_NPS_P1, F_NULL }},
+ { F_CLASS_REQUIRED, { F_NPS_P1, F_NULL }, 0, 0},
#define C_NPS_P2 (C_NPS_P1 + 1)
- { F_CLASS_REQUIRED, { F_NPS_P2, F_NULL }},
+ { F_CLASS_REQUIRED, { F_NPS_P2, F_NULL }, 0, 0},
#define C_NPS_P3 (C_NPS_P2 + 1)
- { F_CLASS_REQUIRED, { F_NPS_P3, F_NULL }},
+ { F_CLASS_REQUIRED, { F_NPS_P3, F_NULL }, 0, 0},
#define C_NPS_LDBIT_DI (C_NPS_P3 + 1)
- { F_CLASS_REQUIRED, { F_NPS_LDBIT_DI, F_NULL }},
+ { F_CLASS_REQUIRED, { F_NPS_LDBIT_DI, F_NULL }, 0, 0},
#define C_NPS_LDBIT_CL1 (C_NPS_LDBIT_DI + 1)
- { F_CLASS_OPTIONAL, { F_NPS_LDBIT_CL1, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_NPS_LDBIT_CL1, F_NULL }, 0, 0},
#define C_NPS_LDBIT_CL2 (C_NPS_LDBIT_CL1 + 1)
- { F_CLASS_OPTIONAL, { F_NPS_LDBIT_CL2, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_NPS_LDBIT_CL2, F_NULL }, 0, 0},
#define C_NPS_LDBIT_X_1 (C_NPS_LDBIT_CL2 + 1)
- { F_CLASS_OPTIONAL, { F_NPS_LDBIT_X2_1, F_NPS_LDBIT_X4_1, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_NPS_LDBIT_X2_1, F_NPS_LDBIT_X4_1, F_NULL }, 0, 0},
#define C_NPS_LDBIT_X_2 (C_NPS_LDBIT_X_1 + 1)
- { F_CLASS_OPTIONAL, { F_NPS_LDBIT_X2_2, F_NPS_LDBIT_X4_2, F_NULL }},
+ { F_CLASS_OPTIONAL, { F_NPS_LDBIT_X2_2, F_NPS_LDBIT_X4_2, F_NULL }, 0, 0},
#define C_NPS_CORE (C_NPS_LDBIT_X_2 + 1)
- { F_CLASS_REQUIRED, { F_NPS_CORE, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_CORE, F_NULL}, 0, 0},
#define C_NPS_CLSR (C_NPS_CORE + 1)
- { F_CLASS_REQUIRED, { F_NPS_CLSR, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_CLSR, F_NULL}, 0, 0},
#define C_NPS_ALL (C_NPS_CLSR + 1)
- { F_CLASS_REQUIRED, { F_NPS_ALL, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_ALL, F_NULL}, 0, 0},
#define C_NPS_GIC (C_NPS_ALL + 1)
- { F_CLASS_REQUIRED, { F_NPS_GIC, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_GIC, F_NULL}, 0, 0},
#define C_NPS_RSPI_GIC (C_NPS_GIC + 1)
- { F_CLASS_REQUIRED, { F_NPS_RSPI_GIC, F_NULL}},
+ { F_CLASS_REQUIRED, { F_NPS_RSPI_GIC, F_NULL}, 0, 0},
+
+ /* Conditinal Flags used by floating point conditional move
+ instruction. */
+#define C_FPCC (C_NPS_RSPI_GIC + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_EXTEND | F_CLASS_COND,
+ { F_ALWAYS, F_RA, F_EQUAL, F_ZERO, F_NOTEQUAL,
+ F_NOTZERO, F_POZITIVE, F_PL, F_NEGATIVE, F_MINUS,
+ F_CARRY, F_CARRYSET, F_LOWER, F_CARRYCLR,
+ F_NOTCARRY, F_HIGHER, F_OVERFLOWSET, F_OVERFLOW,
+ F_NOTOVERFLOW, F_OVERFLOWCLR, F_GT, F_GE, F_LT,
+ F_LE, F_HI, F_LS, F_PNZ, F_NJ, F_NM, F_NO_T, F_NULL },
+ insert_fs2, extract_fs2},
+
+/* The address writeback for 128-bit loads. */
+#define C_AA_128 (C_FPCC + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB, { F_AA128, F_AA128W, F_AA128B, F_AA128S, F_NULL }, 0, 0},
+
+ /* The address scaling for 128-bit loads. */
+#define C_AS_128 (C_AA_128 + 1)
+ { F_CLASS_OPTIONAL, { F_AA128S, F_NULL }, 0, 0},
+
+/* The scattered version of address writeback for 128-bit loads. */
+#define C_AA_128S (C_AS_128 + 1)
+ { F_CLASS_OPTIONAL | F_CLASS_WB, { F_AA128, F_AA128W, F_AA128B, F_AA128S, F_NULL }, insert_qq, extract_qq},
+
+/* The scattered version of address sacling for 128-bit loads. */
+#define C_AS_128S (C_AA_128S + 1)
+ { F_CLASS_OPTIONAL, { F_AA128S, F_NULL }, insert_qq, extract_qq},
+
};
const unsigned char flags_none[] = { 0 };
@@ -1815,7 +1974,10 @@ const struct arc_operand arc_operands[] =
{ 6, 12, 0, ARC_OPERAND_IR, insert_rb, extract_rb },
#define RB_CHK (RB + 1)
{ 6, 12, 0, ARC_OPERAND_IR, insert_rb_chk, extract_rb },
-#define RC (RB_CHK + 1)
+#define RBB_S (RB_CHK + 1)
+ { 6, 12, 0, ARC_OPERAND_IR, insert_rbb, extract_rbb },
+#define RC (RBB_S + 1)
+#define RC_CHK (RBB_S + 1)
{ 6, 6, 0, ARC_OPERAND_IR, 0, 0 },
#define RBdup (RC + 1)
{ 6, 12, 0, ARC_OPERAND_IR | ARC_OPERAND_DUPLICATE, insert_rb, extract_rb },
@@ -1897,15 +2059,26 @@ const struct arc_operand arc_operands[] =
#define LIMM (ILINK2 + 1)
#define LIMM_S (ILINK2 + 1)
{ 32, 0, BFD_RELOC_ARC_32_ME, ARC_OPERAND_LIMM, insert_limm, 0 },
-#define LIMMdup (LIMM + 1)
+#define LO32 (LIMM + 1)
+ { 32, 0, BFD_RELOC_ARC_LO32_ME, ARC_OPERAND_LIMM, insert_limm, 0 },
+#define HI32 (LO32 + 1)
+ { 32, 0, BFD_RELOC_ARC_HI32_ME, ARC_OPERAND_LIMM, insert_limm, 0 },
+#define XIMM_S (HI32 + 1)
+#define XIMM (HI32 + 1)
+ { 32, 0, BFD_RELOC_ARC_LO32_ME, ARC_OPERAND_LIMM | ARC_OPERAND_SIGNED,
+ insert_limm, 0 },
+#define LIMMdup (XIMM + 1)
{ 32, 0, 0, ARC_OPERAND_LIMM | ARC_OPERAND_DUPLICATE, insert_limm, 0 },
+#define XIMMdup (LIMMdup + 1)
+ { 32, 0, 0, ARC_OPERAND_LIMM | ARC_OPERAND_DUPLICATE | ARC_OPERAND_SIGNED,
+ insert_limm, 0 },
/* Special operands. */
-#define ZA (LIMMdup + 1)
-#define ZB (LIMMdup + 1)
-#define ZA_S (LIMMdup + 1)
-#define ZB_S (LIMMdup + 1)
-#define ZC_S (LIMMdup + 1)
+#define ZA (XIMMdup + 1)
+#define ZB (XIMMdup + 1)
+#define ZA_S (XIMMdup + 1)
+#define ZB_S (XIMMdup + 1)
+#define ZC_S (XIMMdup + 1)
{ 0, 0, 0, ARC_OPERAND_UNSIGNED, insert_za, 0 },
#define RRANGE_EL (ZA + 1)
@@ -1975,8 +2148,13 @@ const struct arc_operand arc_operands[] =
| ARC_OPERAND_TRUNCATE | ARC_OPERAND_IGNORE | ARC_OPERAND_PCREL,
insert_uimm7_a32_11_s, extract_uimm7_a32_11_s},
+#define UIMM9_A32_11_S (UIMM7_A32_11R_S + 1)
+ {9, 0, 0, ARC_OPERAND_UNSIGNED | ARC_OPERAND_ALIGNED32
+ | ARC_OPERAND_TRUNCATE | ARC_OPERAND_IGNORE, insert_uimm9_a32_11_s,
+ extract_uimm9_a32_11_s},
+
/* UIMM7_9_S mask = 0000000001111111. */
-#define UIMM7_9_S (UIMM7_A32_11R_S + 1)
+#define UIMM7_9_S (UIMM9_A32_11_S + 1)
{7, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm7_9_s, extract_uimm7_9_s},
/* UIMM3_13_S mask = 0000000000000111. */
@@ -2003,7 +2181,7 @@ const struct arc_operand arc_operands[] =
/* SIMM9_A16_8 mask = 00000000111111102000000000000000. */
#define SIMM9_A16_8 (UIMM5_11_S + 1)
- {9, 0, -SIMM9_A16_8, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
+ {9, 0, BFD_RELOC_ARC_S9H_PCREL, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
| ARC_OPERAND_PCREL | ARC_OPERAND_TRUNCATE, insert_simm9_a16_8,
extract_simm9_a16_8},
@@ -2025,7 +2203,7 @@ const struct arc_operand arc_operands[] =
/* SIMM10_A16_7_S mask = 0000000111111111. */
#define SIMM10_A16_7_S (SIMM25_A16_5 + 1)
- {10, 0, -SIMM10_A16_7_S, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
+ {10, 0, BFD_RELOC_ARC_S10H_PCREL, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
| ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm10_a16_7_s,
extract_simm10_a16_7_s},
@@ -2035,7 +2213,7 @@ const struct arc_operand arc_operands[] =
/* SIMM7_A16_10_S mask = 0000000000111111. */
#define SIMM7_A16_10_S (SIMM10_A16_7_Sbis + 1)
- {7, 0, -SIMM7_A16_10_S, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
+ {7, 0, BFD_RELOC_ARC_S7H_PCREL, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
| ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm7_a16_10_s,
extract_simm7_a16_10_s},
@@ -2059,7 +2237,7 @@ const struct arc_operand arc_operands[] =
/* SIMM8_A16_9_S mask = 0000000001111111. */
#define SIMM8_A16_9_S (SIMM13_A32_5_S + 1)
- {8, 0, -SIMM8_A16_9_S, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
+ {8, 0, BFD_RELOC_ARC_S8H_PCREL, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
| ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm8_a16_9_s,
extract_simm8_a16_9_s},
@@ -2077,8 +2255,11 @@ const struct arc_operand arc_operands[] =
#define UIMM10_6_S (UIMM3_23 + 1)
{10, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm10_6_s, extract_uimm10_6_s},
+#define UIMM10_13_S (UIMM10_6_S+ 1)
+ {10, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm10_13_s, extract_uimm10_13_s},
+
/* UIMM6_11_S mask = 0000002200011110. */
-#define UIMM6_11_S (UIMM10_6_S + 1)
+#define UIMM6_11_S (UIMM10_13_S + 1)
{6, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm6_11_s, extract_uimm6_11_s},
/* SIMM9_8 mask = 00000000111111112000000000000000. */
@@ -2140,7 +2321,7 @@ const struct arc_operand arc_operands[] =
/* SIMM13_A16_20 mask = 00000000000000000000111111222222. */
#define SIMM13_A16_20 (UIMM7_A16_20 + 1)
- {13, 0, -SIMM13_A16_20, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
+ {13, 0, BFD_RELOC_ARC_S13H_PCREL, ARC_OPERAND_SIGNED | ARC_OPERAND_ALIGNED16
| ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm13_a16_20,
extract_simm13_a16_20},
@@ -2547,7 +2728,40 @@ const struct arc_operand arc_operands[] =
#define NPS_PROTO_SIZE (NPS_UIMM16_0_64 + 1)
{ 6, 16, 0, ARC_OPERAND_UNSIGNED | ARC_OPERAND_NCHK,
- insert_nps_proto_size, extract_nps_proto_size }
+ insert_nps_proto_size, extract_nps_proto_size },
+
+ /* ARC64's floating point registers. */
+#define FA (NPS_PROTO_SIZE + 1)
+ { 5, 6, 0, ARC_OPERAND_IR | ARC_OPERAND_FP, 0, 0 },
+#define FB (FA + 1)
+ { 5, 0, 0, ARC_OPERAND_IR | ARC_OPERAND_FP, 0, 0 },
+#define FC (FB + 1)
+ { 5, 0, 0, ARC_OPERAND_IR | ARC_OPERAND_FP, insert_fs2, extract_fs2 },
+#define FD (FC + 1)
+ { 5, 19, 0, ARC_OPERAND_IR | ARC_OPERAND_FP, 0, 0},
+
+ /* Double 128 registers, the same like above but only the odd ones
+ allowed. */
+#define FDA (FD + 1)
+ { 5, 6, 0, ARC_OPERAND_IR | ARC_OPERAND_FP | ARC_OPERAND_TRUNCATE, 0, 0 },
+#define FDB (FDA + 1)
+ { 5, 0, 0, ARC_OPERAND_IR | ARC_OPERAND_FP | ARC_OPERAND_TRUNCATE, 0, 0 },
+#define FDC (FDB + 1)
+ { 5, 0, 0, ARC_OPERAND_IR | ARC_OPERAND_FP | ARC_OPERAND_TRUNCATE,
+ insert_fs2, extract_fs2 },
+#define FDD (FDC + 1)
+ { 5, 19, 0, ARC_OPERAND_IR | ARC_OPERAND_FP | ARC_OPERAND_TRUNCATE, 0, 0},
+
+ /* 5bit integer registers used by fp instructions. */
+#define FRD (FDD + 1)
+ { 5, 6, 0, ARC_OPERAND_IR, 0, 0 },
+#define FRB (FRD + 1)
+ { 5, 0, 0, ARC_OPERAND_IR, insert_fs2, extract_fs2 },
+
+ /* 5bit unsigned immediate used by vfext and vfins. */
+#define UIMM5_FP (FRB + 1)
+ {5, 0, 0, ARC_OPERAND_UNSIGNED, insert_fs2, extract_fs2 }
+
};
const unsigned arc_num_operands = ARRAY_SIZE (arc_operands);
@@ -2628,9 +2842,13 @@ const unsigned char arg_32bit_limm[] = { LIMM };
nps extension instructions. */
const struct arc_opcode arc_opcodes[] =
{
+ /* ARC64 needs to be included first as there are new instructions
+ which can be interpreted as ARCv2 insns. */
+#include "arc64-tbl.h"
#include "arc-tbl.h"
#include "arc-nps400-tbl.h"
#include "arc-ext-tbl.h"
+#include "arc64-fp-tbl.h"
{ NULL, 0, 0, 0, 0, 0, { 0 }, { 0 } }
};
@@ -2781,6 +2999,20 @@ const struct arc_pseudo_insn arc_pseudo_insns[] =
const unsigned arc_num_pseudo_insn =
sizeof (arc_pseudo_insns) / sizeof (*arc_pseudo_insns);
+/* ARC64 pseudo instructions. */
+const struct arc_pseudo_insn arc64_pseudo_insns[] =
+{
+ { "pushl", "stl", ".aw", 5, { { RC, 0, 0, 0 }, { BRAKET, 1, 0, 1 },
+ { RB, 1, 28, 2 }, { SIMM9_8, 1, -8, 3 },
+ { BRAKETdup, 1, 0, 4} } },
+ { "popl", "ldl", ".ab", 5, { { RA, 0, 0, 0 }, { BRAKET, 1, 0, 1 },
+ { RB, 1, 28, 2 }, { SIMM9_8, 1, 8, 3 },
+ { BRAKETdup, 1, 0, 4} } },
+};
+
+const unsigned arc64_num_pseudo_insn =
+ sizeof (arc64_pseudo_insns) / sizeof (*arc64_pseudo_insns);
+
const struct arc_aux_reg arc_aux_regs[] =
{
#undef DEF
diff --git a/opcodes/arc64-fp-tbl.h b/opcodes/arc64-fp-tbl.h
new file mode 100644
index 00000000000..79673336862
--- /dev/null
+++ b/opcodes/arc64-fp-tbl.h
@@ -0,0 +1,479 @@
+/* ARC instruction defintions.
+ Copyright (C) 2021 Free Software Foundation, Inc.
+
+ Contributed by Claudiu Zissulescu (claziss@synopsys.com)
+
+ This file is part of libopcodes.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Flags. */
+#define FL_NONE { 0 }
+#define FL_CC { C_FPCC }
+
+/* Arguments. */
+#define ARG_NONE { 0 }
+#define ARG_64FP_3OP { FA, FB, FC, FD }
+#define ARG_128FP_3OP { FDA, FDB, FDC, FDD }
+#define ARG_64FP_2OP { FA, FB, FC }
+#define ARG_64FP_CMP { FB, FC }
+#define ARG_128FP_2OP { FDA, FDB, FDC }
+#define ARG_64FP_1OP { FA, FC }
+#define ARG_64FP_SOP { FA, FB }
+#define ARG_128FP_SOP { FDA, FDB }
+
+#define ARG_64FP_CVI2F { FA, FRB }
+#define ARG_64FP_CVF2I { FRD, FC }
+
+/* Macros to help generating floating point pattern instructions. */
+/* Define FP_TOP */
+#define FIELDS1(word) (word & 0x1F)
+#define FIELDS2(word) (((word & 0x07) << 24) | (((word >> 3) & 0x03) << 12))
+#define FIELDS3(word) ((word & 0x1F) << 19)
+#define FIELDD(word) ((word & 0x1F) << 6)
+#define FIELDTOP(word) (((word & 0x01) << 5) | ((word >> 1) & 0x07) << 16)
+#define FIELDP(word) ((word & 0x03) << 14)
+#define MASK_32BIT(VAL) (0xffffffff & (VAL))
+
+#define INSNFP3OP(TOPF, P) \
+ ((0x1C << 27) | FIELDTOP (TOPF) | FIELDP (P) | (1 << 11))
+#define MINSNFP3OP \
+ (MASK_32BIT (~(FIELDS1 (31) | FIELDS2 (31) | FIELDS3 (31) | FIELDD (31))))
+
+/* Define FP_DOP */
+#define FIELDDOP(ops) ((ops & 0x1f) << 16)
+
+#define INSNFP2OP(DOPF, P) \
+ ((0x1C << 27) | FIELDDOP (DOPF) | FIELDP (P) | (1 << 5))
+#define MINSNFP2OP \
+ (MASK_32BIT (~(FIELDS2 (31) | FIELDS1 (31) | FIELDD (31))))
+
+/* Define FP_CVF2F */
+/* 0x1c | fs2[2:0] | 0 1 1 0 - - | cvtf[1:0] | - - | fs2[4:3] | 0 | fd | 1 | u4 u3 1 0 u0 */
+#define FIELDCVTF(WORD) ((WORD & 0x03) << 16)
+#define FIELDU0(BIT) (BIT & 0x01)
+#define FIELDU1(BIT) (BIT & 0x02)
+#define FIELDU3(BIT) (BIT & 0x08)
+#define FIELDU4(BIT) (BIT & 0x10)
+
+#define FP_CVF2F_MACHINE(CVTF, BIT) \
+ ((0x1C << 27) | (0x03 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | (1 << 2) | FIELDU0(BIT) | FIELDU3(BIT) | FIELDU4(BIT))
+#define MFP_CVF2F (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FP_RND */
+#define FP_RND_MACHINE(CVTF, BIT) \
+((0x1C << 27) | (0x03 << 21) | FIELDCVTF (CVTF) | (1 << 5) | (0x03 << 1) \
+ | FIELDU3(BIT))
+#define MFP_RND (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FP_CVF2I */
+#define FP_CVF2I_MACHINE(CVTF, BIT) ((0x1C << 27) | (0x03 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | 1 | FIELDU3(BIT) | FIELDU1(BIT))
+#define MFP_CVF2I (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FMVVF2I */
+#define FM_VVF2I(CVTF, BIT) ((0x1C << 27) | (0x03 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | 1 << 4 | 1)
+#define MFM_VVF2I (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FP_SOP */
+#define FP_SOP_MACHINE(SOPF, P) \
+ ((0x1C << 27) | (0x02 << 21) | FIELDCVTF (SOPF) | FIELDP (P) | (1 << 5))
+#define MFP_SOP_MACHINE (MASK_32BIT (~(FIELDS1 (31) | FIELDD (31))))
+
+/* Define FP_COP */
+#define FP_COP_MACHINE(COPF, P) \
+ ((0x1C << 27) | (0x09 << 19) | FIELDCVTF (COPF) | FIELDP (P) | (1 << 5))
+#define MFP_COP_MACHINE \
+ (MASK_32BIT (~(FIELDS1 (31) | FIELDD (31) | FIELDS2(31))))
+
+/* Define FP_ZOP */
+#define INSNFPZOP(COPF) \
+ ((0x1C << 27) | (0x07 << 20) | FIELDCVTF (COPF) | (1 << 5))
+
+/* Define FP_VMVI */
+#define INSNFPVMVI(WMVF, P) \
+ ((0x1C << 27) | (0x05 << 20) | FIELDCVTF (WMVF) | FIELDP (P) | (1 << 5))
+#define MINSNFPCOP (MASK_32BIT (~(FIELDS1 (31) | FIELDD (31) | FIELDS2(31))))
+#define MINSNFPVMVIZ (MASK_32BIT (~(FIELDS1 (31) | FIELDD (31))))
+
+/* Define FP_VMVR */
+#define INSNFPVMVR(WMVF, P) \
+ ((0x1C << 27) | (0x01 << 23) | FIELDCVTF (WMVF) | FIELDP (P) | (1 << 5))
+#define MINSNFPVMVR (MASK_32BIT (~(FIELDS1 (31) | FIELDD (31) | FIELDS2(31))))
+
+/* Define FP_CVI2F */
+#define INSNFPCVI2F(CVTF, BIT) ((0x1C << 27) | (0x07 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | FIELDU3(BIT) | FIELDU1(BIT))
+#define MINSNFPCVI2F (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FMVI2F */
+#define INSNFMVI2F(CVTF, BIT) ((0x1C << 27) | (0x07 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | (1 << 4))
+#define MINSNFMVI2F (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FMVF2I */
+#define INSNFMVF2I(CVTF, BIT) ((0x1C << 27) | (0x03 << 21) | FIELDCVTF (CVTF) \
+ | (1 << 5) | (1 << 4) | (1))
+#define MINSNFMVF2I (MASK_32BIT (~(FIELDS2 (31) | FIELDD (31))))
+
+/* Define FP_LOAD */
+#define FP_LOAD_ENCODING(SIZE) (0x1C << 27 | ((SIZE & 0x03) << 1))
+#define MSK_FP_LOAD (MASK_32BIT (~(FIELDB (63) | FIELDD (31) | (0x03 << 3) \
+ | (0x1FF << 15))))
+
+#define FP_LSYM_ENCODING(SIZE) (0x1C << 27 | ((SIZE & 0x03) << 1) | FIELDB(62))
+#define MSK_FP_SYM (MASK_32BIT (~(FIELDD (31))))
+
+/* Define FP_STORE */
+#define FP_STORE_ENCODING(SIZE) ((0x1C << 27) | ((SIZE & 0x03) << 1) | (1))
+#define MSK_FP_STORE (MASK_32BIT (~(FIELDB (63) | FIELDD (31) | (0x03 << 3) \
+ | (0x1FF << 15))))
+#define FP_SSYM_ENCODING(SIZE) (0x1C << 27 | ((SIZE & 0x03) << 1) \
+ | FIELDB(62) | (1))
+
+/* FP Load/Store. */
+#define FP_LOAD(NAME,SIZE) \
+ { #NAME, FP_LOAD_ENCODING(SIZE), MSK_FP_LOAD, ARC_OPCODE_ARC64, LOAD, \
+ NONE, { FA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA27 } }, \
+ { #NAME, FP_LSYM_ENCODING(SIZE), MSK_FP_SYM, ARC_OPCODE_ARC64, LOAD, \
+ NONE, { FA, BRAKET, LIMM, BRAKETdup }, FL_NONE },
+
+#define FP_STORE(NAME,SIZE) \
+ { #NAME, FP_STORE_ENCODING(SIZE), MSK_FP_STORE, ARC_OPCODE_ARC64, STORE, \
+ NONE, { FA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA27 } }, \
+ { #NAME, FP_SSYM_ENCODING(SIZE), MSK_FP_SYM, ARC_OPCODE_ARC64, LOAD, \
+ NONE, { FA, BRAKET, LIMM, BRAKETdup }, FL_NONE },
+
+/* Macros used to generate conversion instructions. */
+#define FMVF2I_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, INSNFMVF2I (OPS, BIT), MINSNFMVF2I, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FMVF2I(NAME, OPS, BIT) \
+ FMVF2I_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_CVF2I)
+
+#define FMVI2F_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, INSNFMVI2F (OPS, BIT), MINSNFMVI2F, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FMVI2F(NAME, OPS, BIT) \
+ FMVI2F_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_CVI2F)
+
+#define FP_RND_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, FP_RND_MACHINE (OPS, BIT), MFP_RND, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FP_RND(NAME, OPS, BIT) \
+ FP_RND_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_1OP)
+
+#define FP_CVF2F_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, FP_CVF2F_MACHINE (OPS, BIT), MFP_CVF2F, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FP_CVF2F(NAME, OPS, BIT) \
+ FP_CVF2F_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_1OP)
+
+#define FP_CVF2I_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, FP_CVF2I_MACHINE (OPS, BIT), MFP_CVF2I, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FP_CVF2I(NAME, OPS, BIT) \
+ FP_CVF2I_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_CVF2I)
+
+#define FP_CVI2F_INSN(NAME, CPU, CLASS, SCLASS, OPS, BIT, ARG) \
+ { NAME, INSNFPCVI2F (OPS, BIT), MINSNFPCVI2F, CPU, CLASS, \
+ SCLASS, ARG, FL_NONE },
+
+#define FP_CVI2F(NAME, OPS, BIT) \
+ FP_CVI2F_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, OPS, \
+ BIT, ARG_64FP_CVI2F)
+
+/* Macro to generate 1 operand extension instruction. */
+#define FP_SOP_INSN(NAME, CPU, CLASS, SCLASS, OPS, PRC, ARG) \
+ { NAME, FP_SOP_MACHINE (OPS, PRC), MFP_SOP_MACHINE, CPU, CLASS, SCLASS, \
+ ARG, FL_NONE },
+
+#define FP_SOP(NAME, OPS, PRECISION) \
+ FP_SOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, SOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_64FP_SOP)
+
+#define FP_SOP_D(NAME, OPS, PRECISION) \
+ FP_SOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, SOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_128FP_SOP)
+
+/* Macro to generate 2 operand extension instruction. */
+#define FP_DOP_INSN(NAME, CPU, CLASS, SCLASS, OPS, PRC, ARG) \
+ { NAME, INSNFP2OP (OPS, PRC), MINSNFP2OP, CPU, CLASS, SCLASS, \
+ ARG, FL_NONE },
+
+#define FP_DOP(NAME, OPS, PRECISION) \
+ FP_DOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, DOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_64FP_2OP)
+
+#define FP_DOPC_INSN(NAME, CPU, CLASS, SCLASS, OPS, PRC, ARG) \
+ { NAME, INSNFP2OP (OPS, PRC) | FIELDD (0), MINSNFP2OP, CPU, \
+ CLASS, SCLASS, ARG, FL_NONE },
+
+#define FP_DOP_C(NAME, OPS, PRECISION) \
+ FP_DOPC_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, DOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_64FP_CMP)
+
+#define FP_DOP_D(NAME, OPS, PRECISION) \
+ FP_DOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, DOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_128FP_2OP)
+
+/* Macro to generate 3 operand generic instruction. */
+#define FP_TOP_INSN(NAME, CPU, CLASS, SCLASS, TOPF, P, ARG) \
+ { NAME, INSNFP3OP (TOPF, P), MINSNFP3OP, CPU, CLASS, SCLASS, \
+ ARG, FL_NONE },
+
+#define FP_TOP(NAME, OPS, PRECISION) \
+ FP_TOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, TOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_64FP_3OP)
+
+#define FP_TOP_D(NAME, OPS, PRECISION) \
+ FP_TOP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, TOPF_ ## OPS, \
+ P_ ## PRECISION, ARG_128FP_3OP)
+
+/* Conditional mov instructions. */
+#define FP_COP_INSN(NAME, CPU, CLASS, SCLASS, OPS, PRC, ARG) \
+ { NAME, FP_COP_MACHINE (OPS, PRC), MFP_COP_MACHINE, CPU, CLASS, SCLASS, \
+ ARG, FL_CC },
+
+#define FP_COP(NAME, OPS, PRECISION) \
+ FP_COP_INSN (#NAME, ARC_OPCODE_ARC64, FLOAT, NONE, COPF_ ## OPS, \
+ P_ ## PRECISION, ARG_64FP_SOP)
+
+#define FP_EXT(NAME, PRECISION) \
+ {#NAME, INSNFPVMVI (0x00, P_ ## PRECISION), MINSNFPCOP, \
+ ARC_OPCODE_ARC64, FLOAT, NONE, { FA, FB, BRAKET, UIMM5_FP, \
+ BRAKETdup }, FL_NONE }, \
+ {#NAME, INSNFPVMVR (0x00, P_ ## PRECISION), MINSNFPVMVR, \
+ ARC_OPCODE_ARC64, FLOAT, NONE, { FA, FB, BRAKET, FRB, BRAKETdup}, \
+ FL_NONE },
+
+#define FP_INS(NAME, PRECISION) \
+ {#NAME, INSNFPVMVI (0x01, P_ ## PRECISION), MINSNFPCOP, \
+ ARC_OPCODE_ARC64, FLOAT, NONE, { FA, BRAKET, UIMM5_FP, BRAKETdup, \
+ FB }, FL_NONE }, \
+ {#NAME, INSNFPVMVR (0x01, P_ ## PRECISION), MINSNFPVMVR, \
+ ARC_OPCODE_ARC64, FLOAT, NONE, { FA, BRAKET, FRB, BRAKETdup, \
+ FB }, FL_NONE },
+
+#define FP_REP(NAME, PRECISION) \
+ {#NAME, INSNFPVMVI (0x02, P_ ## PRECISION) | FIELDS2 (0x00), \
+ MINSNFPVMVIZ, ARC_OPCODE_ARC64, FLOAT, NONE, { FA, FB }, FL_NONE },
+
+FP_TOP (fhmadd , FMADD , HALF)
+FP_TOP (fhmsub , FMSUB , HALF)
+FP_TOP (fhnmadd, FNMADD, HALF)
+FP_TOP (fhnmsub, FNMSUB, HALF)
+
+FP_TOP (fsmadd , FMADD , SINGLE)
+FP_TOP (fsmsub , FMSUB , SINGLE)
+FP_TOP (fsnmadd, FNMADD, SINGLE)
+FP_TOP (fsnmsub, FNMSUB, SINGLE)
+
+FP_TOP (fdmadd , FMADD , DOUBLE)
+FP_TOP (fdmsub , FMSUB , DOUBLE)
+FP_TOP (fdnmadd, FNMADD, DOUBLE)
+FP_TOP (fdnmsub, FNMSUB, DOUBLE)
+
+
+/* Vectors*/
+FP_TOP (vfhmadd , VFMADD , HALF)
+FP_TOP (vfhmsub , VFMSUB , HALF)
+FP_TOP (vfhnmadd, VFNMADD, HALF)
+FP_TOP (vfhnmsub, VFNMSUB, HALF)
+FP_TOP (vfhmadds , VFMADDS , HALF)
+FP_TOP (vfhmsubs , VFMSUBS , HALF)
+FP_TOP (vfhnmadds, VFNMADDS, HALF)
+FP_TOP (vfhnmsubs, VFNMSUBS, HALF)
+
+FP_TOP (vfsmadd , VFMADD , SINGLE)
+FP_TOP (vfsmsub , VFMSUB , SINGLE)
+FP_TOP (vfsnmadd, VFNMADD, SINGLE)
+FP_TOP (vfsnmsub, VFNMSUB, SINGLE)
+FP_TOP (vfsmadds , VFMADDS , SINGLE)
+FP_TOP (vfsmsubs , VFMSUBS , SINGLE)
+FP_TOP (vfsnmadds, VFNMADDS, SINGLE)
+FP_TOP (vfsnmsubs, VFNMSUBS, SINGLE)
+
+FP_TOP_D (vfdmadd , VFMADD , DOUBLE)
+FP_TOP_D (vfdmsub , VFMSUB , DOUBLE)
+FP_TOP_D (vfdnmadd, VFNMADD, DOUBLE)
+FP_TOP_D (vfdnmsub, VFNMSUB, DOUBLE)
+FP_TOP_D (vfdmadds , VFMADDS , DOUBLE)
+FP_TOP_D (vfdmsubs , VFMSUBS , DOUBLE)
+FP_TOP_D (vfdnmadds, VFNMADDS, DOUBLE)
+FP_TOP_D (vfdnmsubs, VFNMSUBS, DOUBLE)
+
+/* 2OPS */
+FP_DOP (fhadd , FADD , HALF)
+FP_DOP (fhsub , FSUB , HALF)
+FP_DOP (fhmul , FMUL , HALF)
+FP_DOP (fhdiv , FDIV , HALF)
+FP_DOP (fhmin , FMIN , HALF)
+FP_DOP (fhmax , FMAX , HALF)
+FP_DOP (fhsgnj , FSGNJ , HALF)
+FP_DOP (fhsgnjn, FSGNJN, HALF)
+FP_DOP (fhsgnjx, FSGNJX, HALF)
+
+FP_DOP (fsadd , FADD , SINGLE)
+FP_DOP (fssub , FSUB , SINGLE)
+FP_DOP (fsmul , FMUL , SINGLE)
+FP_DOP (fsdiv , FDIV , SINGLE)
+FP_DOP (fsmin , FMIN , SINGLE)
+FP_DOP (fsmax , FMAX , SINGLE)
+FP_DOP (fssgnj , FSGNJ , SINGLE)
+FP_DOP (fssgnjn, FSGNJN, SINGLE)
+FP_DOP (fssgnjx, FSGNJX, SINGLE)
+
+FP_DOP (fdadd , FADD , DOUBLE)
+FP_DOP (fdsub , FSUB , DOUBLE)
+FP_DOP (fdmul , FMUL , DOUBLE)
+FP_DOP (fddiv , FDIV , DOUBLE)
+FP_DOP (fdmin , FMIN , DOUBLE)
+FP_DOP (fdmax , FMAX , DOUBLE)
+FP_DOP (fdsgnj , FSGNJ , DOUBLE)
+FP_DOP (fdsgnjn, FSGNJN, DOUBLE)
+FP_DOP (fdsgnjx, FSGNJX, DOUBLE)
+
+FP_DOP_C (fhcmp , FCMP , HALF)
+FP_DOP_C (fhcmpf, FCMPF, HALF)
+FP_DOP_C (fscmp , FCMP , SINGLE)
+FP_DOP_C (fscmpf, FCMPF, SINGLE)
+FP_DOP_C (fdcmp , FCMP , DOUBLE)
+FP_DOP_C (fdcmpf, FCMPF, DOUBLE)
+
+/* Vectors */
+FP_DOP (vfhadd , VFADD , HALF)
+FP_DOP (vfhsub , VFSUB , HALF)
+FP_DOP (vfhmul , VFMUL , HALF)
+FP_DOP (vfhdiv , VFDIV , HALF)
+FP_DOP (vfhadds, VFADDS, HALF)
+FP_DOP (vfhsubs, VFSUBS, HALF)
+FP_DOP (vfhmuls, VFMULS, HALF)
+FP_DOP (vfhdivs, VFDIVS, HALF)
+
+FP_DOP (vfsadd , VFADD , SINGLE)
+FP_DOP (vfssub , VFSUB , SINGLE)
+FP_DOP (vfsmul , VFMUL , SINGLE)
+FP_DOP (vfsdiv , VFDIV , SINGLE)
+FP_DOP (vfsadds, VFADDS, SINGLE)
+FP_DOP (vfssubs, VFSUBS, SINGLE)
+FP_DOP (vfsmuls, VFMULS, SINGLE)
+FP_DOP (vfsdivs, VFDIVS, SINGLE)
+
+FP_DOP_D (vfdadd , VFADD , DOUBLE)
+FP_DOP_D (vfdsub , VFSUB , DOUBLE)
+FP_DOP_D (vfdmul , VFMUL , DOUBLE)
+FP_DOP_D (vfddiv , VFDIV , DOUBLE)
+FP_DOP_D (vfdadds, VFADDS, DOUBLE)
+FP_DOP_D (vfdsubs, VFSUBS, DOUBLE)
+FP_DOP_D (vfdmuls, VFMULS, DOUBLE)
+FP_DOP_D (vfddivs, VFDIVS, DOUBLE)
+
+FP_SOP (fhsqrt, FSQRT, HALF)
+FP_SOP (fssqrt, FSQRT, SINGLE)
+FP_SOP (fdsqrt, FSQRT, DOUBLE)
+FP_SOP (vfhsqrt, VFSQRT, HALF)
+FP_SOP (vfssqrt, VFSQRT, SINGLE)
+FP_SOP_D (vfdsqrt, VFSQRT,DOUBLE)
+
+FP_COP (fhmov, FMOV, HALF)
+FP_COP (fsmov, FMOV, SINGLE)
+FP_COP (fdmov, FMOV, DOUBLE)
+FP_COP (vfhmov, VFMOV, HALF)
+FP_COP (vfsmov, VFMOV, SINGLE)
+FP_COP (vfdmov, VFMOV, DOUBLE)
+
+FP_CVI2F (fuint2s, FUINT2S, 0x00)
+FP_CVI2F (fuint2d, FUINT2D, 0x00)
+FP_CVI2F (ful2s, FUL2S, 0x00)
+FP_CVI2F (ful2d, FUL2D, 0x00)
+
+FP_CVF2I (fs2uint, FS2UINT, 0x01)
+FP_CVF2I (fs2ul, FS2UL, 0x01)
+FP_CVF2I (fd2uint, FD2UINT, 0x01)
+FP_CVF2I (fd2ul, FD2UL, 0x01)
+
+FP_CVI2F (fint2s, FINT2S, 0x02)
+FP_CVI2F (fint2d, FINT2D, 0x02)
+FP_CVI2F (fl2s, FL2S, 0x02)
+FP_CVI2F (fl2d, FL2D, 0x02)
+
+FP_CVF2I (fs2int, FS2INT, 0x03)
+FP_CVF2I (fs2l, FS2L, 0x03)
+FP_CVF2I (fd2int, FD2INT, 0x03)
+FP_CVF2I (fd2l, FD2L, 0x03)
+
+FP_CVF2F (fs2d, FS2D, 0x04)
+FP_CVF2F (fd2s, FD2S, 0x04)
+
+FP_RND (fsrnd, FSRND, 0x06)
+FP_RND (fdrnd, FDRND, 0x06)
+
+FP_CVF2I (fs2uint_rz, F2UINT_RZ, 0x09)
+FP_CVF2I (fs2ul_rz, FS2UL_RZ, 0x09)
+FP_CVF2I (fd2uint_rz, FD2UINT_RZ, 0x09)
+FP_CVF2I (fd2ul_rz, FD2UL_RZ, 0x09)
+
+FP_CVF2I (fs2int_rz, FSINT_RZ, 0x0B)
+FP_CVF2I (fs2l_rz, FS2L_RZ, 0x0B)
+FP_CVF2I (fd2int_rz, FD2INT_RZ, 0x0B)
+FP_CVF2I (fd2l_rz, FD2L_RZ, 0x0B)
+
+FP_RND (fsrnd_rz, FSRND_RZ, 0x0E)
+FP_RND (fdrnd_rz, FDRND_RZ, 0x0E)
+
+FMVI2F (fmvi2s, FMVI2S, 0x10)
+FMVI2F (fmvl2d, FMVL2D, 0x10)
+
+FMVF2I (fmvs2i, FMVS2I, 0x11)
+FMVF2I (fmvd2l, FMVD2L, 0x11)
+
+FP_CVF2F (fs2h, FS2H, 0x14)
+FP_CVF2F (fh2s, FH2S, 0x15)
+FP_CVF2F (fs2h_rz, FS2H_RZ, 0x1C)
+
+FP_LOAD (fld16, 0x02)
+FP_LOAD (fld32, 0x00)
+FP_LOAD (fld64, 0x01)
+FP_LOAD (fld128, 0x03)
+
+FP_STORE (fst16, 0x02)
+FP_STORE (fst32, 0x00)
+FP_STORE (fst64, 0x01)
+FP_STORE (fst128, 0x03)
+
+FP_EXT (vfhext, HALF)
+FP_EXT (vfsext, SINGLE)
+FP_EXT (vfdext, DOUBLE)
+
+FP_INS (vfhins, HALF)
+FP_INS (vfsins, SINGLE)
+FP_INS (vfdins, DOUBLE)
+
+FP_REP (vfhrep, HALF)
+FP_REP (vfsrep, SINGLE)
+FP_REP (vfdrep, DOUBLE)
diff --git a/opcodes/arc64-tbl.h b/opcodes/arc64-tbl.h
new file mode 100644
index 00000000000..fd7377988cd
--- /dev/null
+++ b/opcodes/arc64-tbl.h
@@ -0,0 +1,18828 @@
+
+/* abs<.f> b,c 00100bbb00101111FBBBCCCCCC001001. */
+{ "abs", 0x202F0009, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* abs<.f> 0,c 0010011000101111F111CCCCCC001001. */
+{ "abs", 0x262F7009, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* abs<.f> b,u6 00100bbb01101111FBBBuuuuuu001001. */
+{ "abs", 0x206F0009, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* abs<.f> 0,u6 0010011001101111F111uuuuuu001001. */
+{ "abs", 0x266F7009, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* abs<.f> b,limm 00100bbb00101111FBBB111110001001. */
+{ "abs", 0x202F0F89, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* abs<.f> 0,limm 0010011000101111F111111110001001. */
+{ "abs", 0x262F7F89, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* absl<.f> RB,RC 01011bbb00101111FBBBcccccc001001. */
+{ "absl", 0x582F0009, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* absl<.f> 0,RC 0101111000101111F111cccccc001001. */
+{ "absl", 0x5E2F7009, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* absl<.f> RB,u6 01011bbb01101111FBBBuuuuuu001001. */
+{ "absl", 0x586F0009, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* absl<.f> 0,u6 0101111001101111F111uuuuuu001001. */
+{ "absl", 0x5E6F7009, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* absl<.f> RB,ximm 01011bbb00101111FBBB111100001001. */
+{ "absl", 0x582F0F09, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* absl<.f> 0,ximm 0101111000101111F111111100001001. */
+{ "absl", 0x5E2F7F09, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* absl<.f> RB,limm 01011bbb00101111FBBB111110001001. */
+{ "absl", 0x582F0F89, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* absl<.f> 0,limm 0101111000101111F111111110001001. */
+{ "absl", 0x5E2F7F89, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* abss<.f> b,c 00101bbb00101111FBBBCCCCCC000101. */
+{ "abss", 0x282F0005, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* abss<.f> 0,c 0010111000101111F111CCCCCC000101. */
+{ "abss", 0x2E2F7005, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* abss<.f> b,u6 00101bbb01101111FBBBuuuuuu000101. */
+{ "abss", 0x286F0005, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* abss<.f> 0,u6 0010111001101111F111uuuuuu000101. */
+{ "abss", 0x2E6F7005, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* abss<.f> b,limm 00101bbb00101111FBBB111110000101. */
+{ "abss", 0x282F0F85, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* abss<.f> 0,limm 0010111000101111F111111110000101. */
+{ "abss", 0x2E2F7F85, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* abssh<.f> b,c 00101bbb00101111FBBBCCCCCC000100. */
+{ "abssh", 0x282F0004, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* abssh<.f> 0,c 0010111000101111F111CCCCCC000100. */
+{ "abssh", 0x2E2F7004, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* abssh<.f> b,u6 00101bbb01101111FBBBuuuuuu000100. */
+{ "abssh", 0x286F0004, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* abssh<.f> 0,u6 0010111001101111F111uuuuuu000100. */
+{ "abssh", 0x2E6F7004, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* abssh<.f> b,limm 00101bbb00101111FBBB111110000100. */
+{ "abssh", 0x282F0F84, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* abssh<.f> 0,limm 0010111000101111F111111110000100. */
+{ "abssh", 0x2E2F7F84, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* abs_s b,c 01111bbbccc10001. */
+{ "abs_s", 0x00007811, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* adc<.f> a,b,c 00100bbb00000001FBBBCCCCCCAAAAAA. */
+{ "adc", 0x20010000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* adc<.f> 0,b,c 00100bbb00000001FBBBCCCCCC111110. */
+{ "adc", 0x2001003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* adc<.f><.cc> b,b,c 00100bbb11000001FBBBCCCCCC0QQQQQ. */
+{ "adc", 0x20C10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* adc<.f> a,b,u6 00100bbb01000001FBBBuuuuuuAAAAAA. */
+{ "adc", 0x20410000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* adc<.f> 0,b,u6 00100bbb01000001FBBBuuuuuu111110. */
+{ "adc", 0x2041003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* adc<.f><.cc> b,b,u6 00100bbb11000001FBBBuuuuuu1QQQQQ. */
+{ "adc", 0x20C10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* adc<.f> b,b,s12 00100bbb10000001FBBBssssssSSSSSS. */
+{ "adc", 0x20810000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* adc<.f> a,limm,c 0010011000000001F111CCCCCCAAAAAA. */
+{ "adc", 0x26017000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* adc<.f> a,b,limm 00100bbb00000001FBBB111110AAAAAA. */
+{ "adc", 0x20010F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* adc<.f> 0,limm,c 0010011000000001F111CCCCCC111110. */
+{ "adc", 0x2601703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* adc<.f> 0,b,limm 00100bbb00000001FBBB111110111110. */
+{ "adc", 0x20010FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* adc<.f><.cc> b,b,limm 00100bbb11000001FBBB1111100QQQQQ. */
+{ "adc", 0x20C10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* adc<.f><.cc> 0,limm,c 0010011011000001F111CCCCCC0QQQQQ. */
+{ "adc", 0x26C17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* adc<.f> a,limm,u6 0010011001000001F111uuuuuuAAAAAA. */
+{ "adc", 0x26417000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adc<.f> 0,limm,u6 0010011001000001F111uuuuuu111110. */
+{ "adc", 0x2641703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adc<.f><.cc> 0,limm,u6 0010011011000001F111uuuuuu1QQQQQ. */
+{ "adc", 0x26C17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* adc<.f> 0,limm,s12 0010011010000001F111ssssssSSSSSS. */
+{ "adc", 0x26817000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* adc<.f> a,limm,limm 0010011000000001F111111110AAAAAA. */
+{ "adc", 0x26017F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* adc<.f> 0,limm,limm 0010011000000001F111111110111110. */
+{ "adc", 0x26017FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* adc<.f><.cc> 0,limm,limm 0010011011000001F1111111100QQQQQ. */
+{ "adc", 0x26C17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* adcl<.f> RA,RB,RC 01011bbb00000001FBBBccccccaaaaaa. */
+{ "adcl", 0x58010000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* adcl<.f> 0,RB,RC 01011bbb00000001FBBBcccccc111110. */
+{ "adcl", 0x5801003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* adcl<.f><.cc> RB,RB,RC 01011bbb11000001FBBBcccccc0QQQQQ. */
+{ "adcl", 0x58C10000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* adcl<.f> RA,RB,u6 01011bbb01000001FBBBuuuuuuaaaaaa. */
+{ "adcl", 0x58410000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* adcl<.f> 0,RB,u6 01011bbb01000001FBBBuuuuuu111110. */
+{ "adcl", 0x5841003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* adcl<.f><.cc> RB,RB,u6 01011bbb11000001FBBBuuuuuu1QQQQQ. */
+{ "adcl", 0x58C10020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* adcl<.f> RB,RB,s12 01011bbb10000001FBBBssssssSSSSSS. */
+{ "adcl", 0x58810000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* adcl<.f> RA,ximm,RC 0101110000000001F111ccccccaaaaaa. */
+{ "adcl", 0x5C017000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* adcl<.f> RA,RB,ximm 01011bbb00000001FBBB111100aaaaaa. */
+{ "adcl", 0x58010F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* adcl<.f> 0,ximm,RC 0101110000000001F111cccccc111110. */
+{ "adcl", 0x5C01703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* adcl<.f> 0,RB,ximm 01011bbb00000001FBBB111100111110. */
+{ "adcl", 0x58010F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* adcl<.f><.cc> 0,ximm,RC 0101110011000001F111cccccc0QQQQQ. */
+{ "adcl", 0x5CC17000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* adcl<.f><.cc> RB,RB,ximm 01011bbb11000001FBBB1111000QQQQQ. */
+{ "adcl", 0x58C10F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* adcl<.f> RA,ximm,u6 0101110001000001F111uuuuuuaaaaaa. */
+{ "adcl", 0x5C417000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* adcl<.f> 0,ximm,u6 0101110001000001F111uuuuuu111110. */
+{ "adcl", 0x5C41703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* adcl<.f><.cc> 0,ximm,u6 0101110011000001F111uuuuuu1QQQQQ. */
+{ "adcl", 0x5CC17020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* adcl<.f> RA,limm,RC 0101111000000001F111ccccccaaaaaa. */
+{ "adcl", 0x5E017000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* adcl<.f> RA,RB,limm 01011bbb00000001FBBB111110aaaaaa. */
+{ "adcl", 0x58010F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* adcl<.f> 0,limm,RC 0101111000000001F111cccccc111110. */
+{ "adcl", 0x5E01703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* adcl<.f> 0,RB,limm 01011bbb00000001FBBB111110111110. */
+{ "adcl", 0x58010FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* adcl<.f><.cc> 0,limm,RC 0101111011000001F111cccccc0QQQQQ. */
+{ "adcl", 0x5EC17000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* adcl<.f><.cc> RB,RB,limm 01011bbb11000001FBBB1111100QQQQQ. */
+{ "adcl", 0x58C10F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* adcl<.f> RA,limm,u6 0101111001000001F111uuuuuuaaaaaa. */
+{ "adcl", 0x5E417000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adcl<.f> 0,limm,u6 0101111001000001F111uuuuuu111110. */
+{ "adcl", 0x5E41703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adcl<.f><.cc> 0,limm,u6 0101111011000001F111uuuuuu1QQQQQ. */
+{ "adcl", 0x5EC17020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* adcl<.f> 0,ximm,s12 0101110010000001F111ssssssSSSSSS. */
+{ "adcl", 0x5C817000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* adcl<.f> 0,limm,s12 0101111010000001F111ssssssSSSSSS. */
+{ "adcl", 0x5E817000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* adcl<.f> RA,ximm,ximm 0101110000000001F111111100aaaaaa. */
+{ "adcl", 0x5C017F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* adcl<.f> 0,ximm,ximm 0101110000000001F111111100111110. */
+{ "adcl", 0x5C017F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* adcl<.f><.cc> 0,ximm,ximm 0101110011000001F1111111000QQQQQ. */
+{ "adcl", 0x5CC17F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* adcl<.f> RA,limm,limm 0101111000000001F111111110aaaaaa. */
+{ "adcl", 0x5E017F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* adcl<.f> 0,limm,limm 0101111000000001F111111110111110. */
+{ "adcl", 0x5E017FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* adcl<.f><.cc> 0,limm,limm 0101111011000001F1111111100QQQQQ. */
+{ "adcl", 0x5EC17F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* adcs<.f> a,b,c 00101bbb00100110FBBBCCCCCCAAAAAA. */
+{ "adcs", 0x28260000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* adcs<.f> 0,b,c 00101bbb00100110FBBBCCCCCC111110. */
+{ "adcs", 0x2826003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* adcs<.f><.cc> b,b,c 00101bbb11100110FBBBCCCCCC0QQQQQ. */
+{ "adcs", 0x28E60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* adcs<.f> a,b,u6 00101bbb01100110FBBBuuuuuuAAAAAA. */
+{ "adcs", 0x28660000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* adcs<.f> 0,b,u6 00101bbb01100110FBBBuuuuuu111110. */
+{ "adcs", 0x2866003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* adcs<.f><.cc> b,b,u6 00101bbb11100110FBBBuuuuuu1QQQQQ. */
+{ "adcs", 0x28E60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* adcs<.f> b,b,s12 00101bbb10100110FBBBssssssSSSSSS. */
+{ "adcs", 0x28A60000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* adcs<.f> a,limm,c 0010111000100110F111CCCCCCAAAAAA. */
+{ "adcs", 0x2E267000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* adcs<.f> a,b,limm 00101bbb00100110FBBB111110AAAAAA. */
+{ "adcs", 0x28260F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* adcs<.f> 0,limm,c 0010111001100110F111CCCCCC111110. */
+{ "adcs", 0x2E66703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* adcs<.f> 0,b,limm 00101bbb00100110FBBB111110111110. */
+{ "adcs", 0x28260FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* adcs<.f><.cc> b,b,limm 00101bbb11100110FBBB1111100QQQQQ. */
+{ "adcs", 0x28E60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* adcs<.f><.cc> 0,limm,c 0010111011100110F111CCCCCC0QQQQQ. */
+{ "adcs", 0x2EE67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* adcs<.f> a,limm,u6 0010111001100110F111uuuuuuAAAAAA. */
+{ "adcs", 0x2E667000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adcs<.f> 0,limm,u6 0010111001100110F111uuuuuu111110. */
+{ "adcs", 0x2E66703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adcs<.f><.cc> 0,limm,u6 0010111011100110F111uuuuuu1QQQQQ. */
+{ "adcs", 0x2EE67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* adcs<.f> 0,limm,s12 0010111010100110F111ssssssSSSSSS. */
+{ "adcs", 0x2EA67000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* adcs<.f> a,limm,limm 0010111000100110F111111110AAAAAA. */
+{ "adcs", 0x2E267F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* adcs<.f> 0,limm,limm 0010111000100110F111111110111110. */
+{ "adcs", 0x2E267FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* adcs<.f><.cc> 0,limm,limm 0010111011100110F1111111100QQQQQ. */
+{ "adcs", 0x2EE67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add<.f> a,b,c 00100bbb00000000FBBBCCCCCCAAAAAA. */
+{ "add", 0x20000000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add<.f> 0,b,c 00100bbb00000000FBBBCCCCCC111110. */
+{ "add", 0x2000003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add<.f><.cc> b,b,c 00100bbb11000000FBBBCCCCCC0QQQQQ. */
+{ "add", 0x20C00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add<.f> a,b,u6 00100bbb01000000FBBBuuuuuuAAAAAA. */
+{ "add", 0x20400000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add<.f> 0,b,u6 00100bbb01000000FBBBuuuuuu111110. */
+{ "add", 0x2040003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add<.f><.cc> b,b,u6 00100bbb11000000FBBBuuuuuu1QQQQQ. */
+{ "add", 0x20C00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add<.f> b,b,s12 00100bbb10000000FBBBssssssSSSSSS. */
+{ "add", 0x20800000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add<.f> a,limm,c 0010011000000000F111CCCCCCAAAAAA. */
+{ "add", 0x26007000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add<.f> a,b,limm 00100bbb00000000FBBB111110AAAAAA. */
+{ "add", 0x20000F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add<.f> 0,limm,c 0010011000000000F111CCCCCC111110. */
+{ "add", 0x2600703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add<.f> 0,b,limm 00100bbb00000000FBBB111110111110. */
+{ "add", 0x20000FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add<.f><.cc> b,b,limm 00100bbb11000000FBBB1111100QQQQQ. */
+{ "add", 0x20C00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add<.f><.cc> 0,limm,c 0010011011000000F111CCCCCC0QQQQQ. */
+{ "add", 0x26C07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add<.f> a,limm,u6 0010011001000000F111uuuuuuAAAAAA. */
+{ "add", 0x26407000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add<.f> 0,limm,u6 0010011001000000F111uuuuuu111110. */
+{ "add", 0x2640703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add<.f><.cc> 0,limm,u6 0010011011000000F111uuuuuu1QQQQQ. */
+{ "add", 0x26C07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add<.f> 0,limm,s12 0010011010000000F111ssssssSSSSSS. */
+{ "add", 0x26807000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add<.f> a,limm,limm 0010011000000000F111111110AAAAAA. */
+{ "add", 0x26007F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add<.f> 0,limm,limm 0010011000000000F111111110111110. */
+{ "add", 0x26007FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add<.f><.cc> 0,limm,limm 0010011011000000F1111111100QQQQQ. */
+{ "add", 0x26C07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add1<.f> a,b,c 00100bbb00010100FBBBCCCCCCAAAAAA. */
+{ "add1", 0x20140000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add1<.f> 0,b,c 00100bbb00010100FBBBCCCCCC111110. */
+{ "add1", 0x2014003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add1<.f><.cc> b,b,c 00100bbb11010100FBBBCCCCCC0QQQQQ. */
+{ "add1", 0x20D40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add1<.f> a,b,u6 00100bbb01010100FBBBuuuuuuAAAAAA. */
+{ "add1", 0x20540000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add1<.f> 0,b,u6 00100bbb01010100FBBBuuuuuu111110. */
+{ "add1", 0x2054003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add1<.f><.cc> b,b,u6 00100bbb11010100FBBBuuuuuu1QQQQQ. */
+{ "add1", 0x20D40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add1<.f> b,b,s12 00100bbb10010100FBBBssssssSSSSSS. */
+{ "add1", 0x20940000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add1<.f> a,limm,c 0010011000010100F111CCCCCCAAAAAA. */
+{ "add1", 0x26147000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add1<.f> a,b,limm 00100bbb00010100FBBB111110AAAAAA. */
+{ "add1", 0x20140F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add1<.f> 0,limm,c 0010011000010100F111CCCCCC111110. */
+{ "add1", 0x2614703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add1<.f> 0,b,limm 00100bbb00010100FBBB111110111110. */
+{ "add1", 0x20140FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add1<.f><.cc> b,b,limm 00100bbb11010100FBBB1111100QQQQQ. */
+{ "add1", 0x20D40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add1<.f><.cc> 0,limm,c 0010011011010100F111CCCCCC0QQQQQ. */
+{ "add1", 0x26D47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add1<.f> a,limm,u6 0010011001010100F111uuuuuuAAAAAA. */
+{ "add1", 0x26547000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add1<.f> 0,limm,u6 0010011001010100F111uuuuuu111110. */
+{ "add1", 0x2654703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add1<.f><.cc> 0,limm,u6 0010011011010100F111uuuuuu1QQQQQ. */
+{ "add1", 0x26D47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add1<.f> 0,limm,s12 0010011010010100F111ssssssSSSSSS. */
+{ "add1", 0x26947000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add1<.f> a,limm,limm 0010011000010100F111111110AAAAAA. */
+{ "add1", 0x26147F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add1<.f> 0,limm,limm 0010011000010100F111111110111110. */
+{ "add1", 0x26147FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add1<.f><.cc> 0,limm,limm 0010011011010100F1111111100QQQQQ. */
+{ "add1", 0x26D47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add1l<.f> RA,RB,RC 01011bbb00010100FBBBccccccaaaaaa. */
+{ "add1l", 0x58140000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add1l<.f> 0,RB,RC 01011bbb00010100FBBBcccccc111110. */
+{ "add1l", 0x5814003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add1l<.f><.cc> RB,RB,RC 01011bbb11010100FBBBcccccc0QQQQQ. */
+{ "add1l", 0x58D40000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add1l<.f> RA,RB,u6 01011bbb01010100FBBBuuuuuuaaaaaa. */
+{ "add1l", 0x58540000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add1l<.f> 0,RB,u6 01011bbb01010100FBBBuuuuuu111110. */
+{ "add1l", 0x5854003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add1l<.f><.cc> RB,RB,u6 01011bbb11010100FBBBuuuuuu1QQQQQ. */
+{ "add1l", 0x58D40020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add1l<.f> RB,RB,s12 01011bbb10010100FBBBssssssSSSSSS. */
+{ "add1l", 0x58940000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add1l<.f> RA,ximm,RC 0101110000010100F111ccccccaaaaaa. */
+{ "add1l", 0x5C147000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* add1l<.f> RA,RB,ximm 01011bbb00010100FBBB111100aaaaaa. */
+{ "add1l", 0x58140F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* add1l<.f> 0,ximm,RC 0101110000010100F111cccccc111110. */
+{ "add1l", 0x5C14703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* add1l<.f> 0,RB,ximm 01011bbb00010100FBBB111100111110. */
+{ "add1l", 0x58140F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* add1l<.f><.cc> 0,ximm,RC 0101110011010100F111cccccc0QQQQQ. */
+{ "add1l", 0x5CD47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* add1l<.f><.cc> RB,RB,ximm 01011bbb11010100FBBB1111000QQQQQ. */
+{ "add1l", 0x58D40F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* add1l<.f> RA,ximm,u6 0101110001010100F111uuuuuuaaaaaa. */
+{ "add1l", 0x5C547000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add1l<.f> 0,ximm,u6 0101110001010100F111uuuuuu111110. */
+{ "add1l", 0x5C54703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add1l<.f><.cc> 0,ximm,u6 0101110011010100F111uuuuuu1QQQQQ. */
+{ "add1l", 0x5CD47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add1l<.f> RA,limm,RC 0101111000010100F111ccccccaaaaaa. */
+{ "add1l", 0x5E147000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add1l<.f> RA,RB,limm 01011bbb00010100FBBB111110aaaaaa. */
+{ "add1l", 0x58140F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add1l<.f> 0,limm,RC 0101111000010100F111cccccc111110. */
+{ "add1l", 0x5E14703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add1l<.f> 0,RB,limm 01011bbb00010100FBBB111110111110. */
+{ "add1l", 0x58140FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add1l<.f><.cc> 0,limm,RC 0101111011010100F111cccccc0QQQQQ. */
+{ "add1l", 0x5ED47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add1l<.f><.cc> RB,RB,limm 01011bbb11010100FBBB1111100QQQQQ. */
+{ "add1l", 0x58D40F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add1l<.f> RA,limm,u6 0101111001010100F111uuuuuuaaaaaa. */
+{ "add1l", 0x5E547000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add1l<.f> 0,limm,u6 0101111001010100F111uuuuuu111110. */
+{ "add1l", 0x5E54703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add1l<.f><.cc> 0,limm,u6 0101111011010100F111uuuuuu1QQQQQ. */
+{ "add1l", 0x5ED47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add1l<.f> 0,ximm,s12 0101110010010100F111ssssssSSSSSS. */
+{ "add1l", 0x5C947000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* add1l<.f> 0,limm,s12 0101111010010100F111ssssssSSSSSS. */
+{ "add1l", 0x5E947000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add1l<.f> RA,ximm,ximm 0101110000010100F111111100aaaaaa. */
+{ "add1l", 0x5C147F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* add1l<.f> 0,ximm,ximm 0101110000010100F111111100111110. */
+{ "add1l", 0x5C147F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* add1l<.f><.cc> 0,ximm,ximm 0101110011010100F1111111000QQQQQ. */
+{ "add1l", 0x5CD47F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* add1l<.f> RA,limm,limm 0101111000010100F111111110aaaaaa. */
+{ "add1l", 0x5E147F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add1l<.f> 0,limm,limm 0101111000010100F111111110111110. */
+{ "add1l", 0x5E147FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add1l<.f><.cc> 0,limm,limm 0101111011010100F1111111100QQQQQ. */
+{ "add1l", 0x5ED47F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add1_s b,b,c 01111bbbccc10100. */
+{ "add1_s", 0x00007814, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* add2<.f> a,b,c 00100bbb00010101FBBBCCCCCCAAAAAA. */
+{ "add2", 0x20150000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add2<.f> 0,b,c 00100bbb00010101FBBBCCCCCC111110. */
+{ "add2", 0x2015003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add2<.f><.cc> b,b,c 00100bbb11010101FBBBCCCCCC0QQQQQ. */
+{ "add2", 0x20D50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add2<.f> a,b,u6 00100bbb01010101FBBBuuuuuuAAAAAA. */
+{ "add2", 0x20550000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add2<.f> 0,b,u6 00100bbb01010101FBBBuuuuuu111110. */
+{ "add2", 0x2055003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add2<.f><.cc> b,b,u6 00100bbb11010101FBBBuuuuuu1QQQQQ. */
+{ "add2", 0x20D50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add2<.f> b,b,s12 00100bbb10010101FBBBssssssSSSSSS. */
+{ "add2", 0x20950000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add2<.f> a,limm,c 0010011000010101F111CCCCCCAAAAAA. */
+{ "add2", 0x26157000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add2<.f> a,b,limm 00100bbb00010101FBBB111110AAAAAA. */
+{ "add2", 0x20150F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add2<.f> 0,limm,c 0010011000010101F111CCCCCC111110. */
+{ "add2", 0x2615703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add2<.f> 0,b,limm 00100bbb00010101FBBB111110111110. */
+{ "add2", 0x20150FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add2<.f><.cc> b,b,limm 00100bbb11010101FBBB1111100QQQQQ. */
+{ "add2", 0x20D50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add2<.f><.cc> 0,limm,c 0010011011010101F111CCCCCC0QQQQQ. */
+{ "add2", 0x26D57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add2<.f> a,limm,u6 0010011001010101F111uuuuuuAAAAAA. */
+{ "add2", 0x26557000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add2<.f> 0,limm,u6 0010011001010101F111uuuuuu111110. */
+{ "add2", 0x2655703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add2<.f><.cc> 0,limm,u6 0010011011010101F111uuuuuu1QQQQQ. */
+{ "add2", 0x26D57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add2<.f> 0,limm,s12 0010011010010101F111ssssssSSSSSS. */
+{ "add2", 0x26957000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add2<.f> a,limm,limm 0010011000010101F111111110AAAAAA. */
+{ "add2", 0x26157F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add2<.f> 0,limm,limm 0010011000010101F111111110111110. */
+{ "add2", 0x26157FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add2<.f><.cc> 0,limm,limm 0010011011010101F1111111100QQQQQ. */
+{ "add2", 0x26D57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add2l<.f> RA,RB,RC 01011bbb00010101FBBBccccccaaaaaa. */
+{ "add2l", 0x58150000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add2l<.f> 0,RB,RC 01011bbb00010101FBBBcccccc111110. */
+{ "add2l", 0x5815003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add2l<.f><.cc> RB,RB,RC 01011bbb11010101FBBBcccccc0QQQQQ. */
+{ "add2l", 0x58D50000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add2l<.f> RA,RB,u6 01011bbb01010101FBBBuuuuuuaaaaaa. */
+{ "add2l", 0x58550000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add2l<.f> 0,RB,u6 01011bbb01010101FBBBuuuuuu111110. */
+{ "add2l", 0x5855003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add2l<.f><.cc> RB,RB,u6 01011bbb11010101FBBBuuuuuu1QQQQQ. */
+{ "add2l", 0x58D50020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add2l<.f> RB,RB,s12 01011bbb10010101FBBBssssssSSSSSS. */
+{ "add2l", 0x58950000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add2l<.f> RA,ximm,RC 0101110000010101F111ccccccaaaaaa. */
+{ "add2l", 0x5C157000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* add2l<.f> RA,RB,ximm 01011bbb00010101FBBB111100aaaaaa. */
+{ "add2l", 0x58150F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* add2l<.f> 0,ximm,RC 0101110000010101F111cccccc111110. */
+{ "add2l", 0x5C15703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* add2l<.f> 0,RB,ximm 01011bbb00010101FBBB111100111110. */
+{ "add2l", 0x58150F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* add2l<.f><.cc> 0,ximm,RC 0101110011010101F111cccccc0QQQQQ. */
+{ "add2l", 0x5CD57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* add2l<.f><.cc> RB,RB,ximm 01011bbb11010101FBBB1111000QQQQQ. */
+{ "add2l", 0x58D50F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* add2l<.f> RA,ximm,u6 0101110001010101F111uuuuuuaaaaaa. */
+{ "add2l", 0x5C557000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add2l<.f> 0,ximm,u6 0101110001010101F111uuuuuu111110. */
+{ "add2l", 0x5C55703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add2l<.f><.cc> 0,ximm,u6 0101110011010101F111uuuuuu1QQQQQ. */
+{ "add2l", 0x5CD57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add2l<.f> RA,limm,RC 0101111000010101F111ccccccaaaaaa. */
+{ "add2l", 0x5E157000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add2l<.f> RA,RB,limm 01011bbb00010101FBBB111110aaaaaa. */
+{ "add2l", 0x58150F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add2l<.f> 0,limm,RC 0101111000010101F111cccccc111110. */
+{ "add2l", 0x5E15703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add2l<.f> 0,RB,limm 01011bbb00010101FBBB111110111110. */
+{ "add2l", 0x58150FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add2l<.f><.cc> 0,limm,RC 0101111011010101F111cccccc0QQQQQ. */
+{ "add2l", 0x5ED57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add2l<.f><.cc> RB,RB,limm 01011bbb11010101FBBB1111100QQQQQ. */
+{ "add2l", 0x58D50F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add2l<.f> RA,limm,u6 0101111001010101F111uuuuuuaaaaaa. */
+{ "add2l", 0x5E557000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add2l<.f> 0,limm,u6 0101111001010101F111uuuuuu111110. */
+{ "add2l", 0x5E55703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add2l<.f><.cc> 0,limm,u6 0101111011010101F111uuuuuu1QQQQQ. */
+{ "add2l", 0x5ED57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add2l<.f> 0,ximm,s12 0101110010010101F111ssssssSSSSSS. */
+{ "add2l", 0x5C957000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* add2l<.f> 0,limm,s12 0101111010010101F111ssssssSSSSSS. */
+{ "add2l", 0x5E957000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add2l<.f> RA,ximm,ximm 0101110000010101F111111100aaaaaa. */
+{ "add2l", 0x5C157F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* add2l<.f> 0,ximm,ximm 0101110000010101F111111100111110. */
+{ "add2l", 0x5C157F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* add2l<.f><.cc> 0,ximm,ximm 0101110011010101F1111111000QQQQQ. */
+{ "add2l", 0x5CD57F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* add2l<.f> RA,limm,limm 0101111000010101F111111110aaaaaa. */
+{ "add2l", 0x5E157F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add2l<.f> 0,limm,limm 0101111000010101F111111110111110. */
+{ "add2l", 0x5E157FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add2l<.f><.cc> 0,limm,limm 0101111011010101F1111111100QQQQQ. */
+{ "add2l", 0x5ED57F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add2_s b,b,c 01111bbbccc10101. */
+{ "add2_s", 0x00007815, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* add3<.f> a,b,c 00100bbb00010110FBBBCCCCCCAAAAAA. */
+{ "add3", 0x20160000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add3<.f> 0,b,c 00100bbb00010110FBBBCCCCCC111110. */
+{ "add3", 0x2016003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add3<.f><.cc> b,b,c 00100bbb11010110FBBBCCCCCC0QQQQQ. */
+{ "add3", 0x20D60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add3<.f> a,b,u6 00100bbb01010110FBBBuuuuuuAAAAAA. */
+{ "add3", 0x20560000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add3<.f> 0,b,u6 00100bbb01010110FBBBuuuuuu111110. */
+{ "add3", 0x2056003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add3<.f><.cc> b,b,u6 00100bbb11010110FBBBuuuuuu1QQQQQ. */
+{ "add3", 0x20D60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add3<.f> b,b,s12 00100bbb10010110FBBBssssssSSSSSS. */
+{ "add3", 0x20960000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add3<.f> a,limm,c 0010011000010110F111CCCCCCAAAAAA. */
+{ "add3", 0x26167000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add3<.f> a,b,limm 00100bbb00010110FBBB111110AAAAAA. */
+{ "add3", 0x20160F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add3<.f> 0,limm,c 0010011000010110F111CCCCCC111110. */
+{ "add3", 0x2616703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add3<.f> 0,b,limm 00100bbb00010110FBBB111110111110. */
+{ "add3", 0x20160FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add3<.f><.cc> b,b,limm 00100bbb11010110FBBB1111100QQQQQ. */
+{ "add3", 0x20D60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add3<.f><.cc> 0,limm,c 0010011011010110F111CCCCCC0QQQQQ. */
+{ "add3", 0x26D67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add3<.f> a,limm,u6 0010011001010110F111uuuuuuAAAAAA. */
+{ "add3", 0x26567000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add3<.f> 0,limm,u6 0010011001010110F111uuuuuu111110. */
+{ "add3", 0x2656703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add3<.f><.cc> 0,limm,u6 0010011011010110F111uuuuuu1QQQQQ. */
+{ "add3", 0x26D67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add3<.f> 0,limm,s12 0010011010010110F111ssssssSSSSSS. */
+{ "add3", 0x26967000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add3<.f> a,limm,limm 0010011000010110F111111110AAAAAA. */
+{ "add3", 0x26167F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add3<.f> 0,limm,limm 0010011000010110F111111110111110. */
+{ "add3", 0x26167FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add3<.f><.cc> 0,limm,limm 0010011011010110F1111111100QQQQQ. */
+{ "add3", 0x26D67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add3l<.f> RA,RB,RC 01011bbb00010110FBBBccccccaaaaaa. */
+{ "add3l", 0x58160000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* add3l<.f> 0,RB,RC 01011bbb00010110FBBBcccccc111110. */
+{ "add3l", 0x5816003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* add3l<.f><.cc> RB,RB,RC 01011bbb11010110FBBBcccccc0QQQQQ. */
+{ "add3l", 0x58D60000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* add3l<.f> RA,RB,u6 01011bbb01010110FBBBuuuuuuaaaaaa. */
+{ "add3l", 0x58560000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* add3l<.f> 0,RB,u6 01011bbb01010110FBBBuuuuuu111110. */
+{ "add3l", 0x5856003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* add3l<.f><.cc> RB,RB,u6 01011bbb11010110FBBBuuuuuu1QQQQQ. */
+{ "add3l", 0x58D60020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* add3l<.f> RB,RB,s12 01011bbb10010110FBBBssssssSSSSSS. */
+{ "add3l", 0x58960000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* add3l<.f> RA,ximm,RC 0101110000010110F111ccccccaaaaaa. */
+{ "add3l", 0x5C167000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* add3l<.f> RA,RB,ximm 01011bbb00010110FBBB111100aaaaaa. */
+{ "add3l", 0x58160F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* add3l<.f> 0,ximm,RC 0101110000010110F111cccccc111110. */
+{ "add3l", 0x5C16703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* add3l<.f> 0,RB,ximm 01011bbb00010110FBBB111100111110. */
+{ "add3l", 0x58160F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* add3l<.f><.cc> 0,ximm,RC 0101110011010110F111cccccc0QQQQQ. */
+{ "add3l", 0x5CD67000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* add3l<.f><.cc> RB,RB,ximm 01011bbb11010110FBBB1111000QQQQQ. */
+{ "add3l", 0x58D60F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* add3l<.f> RA,ximm,u6 0101110001010110F111uuuuuuaaaaaa. */
+{ "add3l", 0x5C567000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add3l<.f> 0,ximm,u6 0101110001010110F111uuuuuu111110. */
+{ "add3l", 0x5C56703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* add3l<.f><.cc> 0,ximm,u6 0101110011010110F111uuuuuu1QQQQQ. */
+{ "add3l", 0x5CD67020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add3l<.f> RA,limm,RC 0101111000010110F111ccccccaaaaaa. */
+{ "add3l", 0x5E167000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* add3l<.f> RA,RB,limm 01011bbb00010110FBBB111110aaaaaa. */
+{ "add3l", 0x58160F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* add3l<.f> 0,limm,RC 0101111000010110F111cccccc111110. */
+{ "add3l", 0x5E16703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* add3l<.f> 0,RB,limm 01011bbb00010110FBBB111110111110. */
+{ "add3l", 0x58160FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* add3l<.f><.cc> 0,limm,RC 0101111011010110F111cccccc0QQQQQ. */
+{ "add3l", 0x5ED67000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* add3l<.f><.cc> RB,RB,limm 01011bbb11010110FBBB1111100QQQQQ. */
+{ "add3l", 0x58D60F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* add3l<.f> RA,limm,u6 0101111001010110F111uuuuuuaaaaaa. */
+{ "add3l", 0x5E567000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add3l<.f> 0,limm,u6 0101111001010110F111uuuuuu111110. */
+{ "add3l", 0x5E56703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* add3l<.f><.cc> 0,limm,u6 0101111011010110F111uuuuuu1QQQQQ. */
+{ "add3l", 0x5ED67020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* add3l<.f> 0,ximm,s12 0101110010010110F111ssssssSSSSSS. */
+{ "add3l", 0x5C967000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* add3l<.f> 0,limm,s12 0101111010010110F111ssssssSSSSSS. */
+{ "add3l", 0x5E967000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* add3l<.f> RA,ximm,ximm 0101110000010110F111111100aaaaaa. */
+{ "add3l", 0x5C167F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* add3l<.f> 0,ximm,ximm 0101110000010110F111111100111110. */
+{ "add3l", 0x5C167F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* add3l<.f><.cc> 0,ximm,ximm 0101110011010110F1111111000QQQQQ. */
+{ "add3l", 0x5CD67F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* add3l<.f> RA,limm,limm 0101111000010110F111111110aaaaaa. */
+{ "add3l", 0x5E167F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* add3l<.f> 0,limm,limm 0101111000010110F111111110111110. */
+{ "add3l", 0x5E167FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* add3l<.f><.cc> 0,limm,limm 0101111011010110F1111111100QQQQQ. */
+{ "add3l", 0x5ED67F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add3_s b,b,c 01111bbbccc10110. */
+{ "add3_s", 0x00007816, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* addhl RA,RB,RC 01011bbb001011100BBBccccccaaaaaa. */
+{ "addhl", 0x582E0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { 0 }},
+
+/* addhl 0,RB,RC 01011bbb001011100BBBcccccc111110. */
+{ "addhl", 0x582E003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { 0 }},
+
+/* addhl<.cc> RB,RB,RC 01011bbb111011100BBBcccccc0QQQQQ. */
+{ "addhl", 0x58EE0000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_CC }},
+
+/* addhl RA,RB,u6 01011bbb011011100BBBuuuuuuaaaaaa. */
+{ "addhl", 0x586E0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { 0 }},
+
+/* addhl 0,RB,u6 01011bbb011011100BBBuuuuuu111110. */
+{ "addhl", 0x586E003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* addhl<.cc> RB,RB,u6 01011bbb111011100BBBuuuuuu1QQQQQ. */
+{ "addhl", 0x58EE0020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_CC }},
+
+/* addhl RB,RB,s12 01011bbb101011100BBBssssssSSSSSS. */
+{ "addhl", 0x58AE0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { 0 }},
+
+/* addhl RA,ximm,RC 01011100001011100111ccccccaaaaaa. */
+{ "addhl", 0x5C2E7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { 0 }},
+
+/* addhl RA,RB,ximm 01011bbb001011100BBB111100aaaaaa. */
+{ "addhl", 0x582E0F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { 0 }},
+
+/* addhl 0,ximm,RC 01011100001011100111cccccc111110. */
+{ "addhl", 0x5C2E703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { 0 }},
+
+/* addhl 0,RB,ximm 01011bbb001011100BBB111100111110. */
+{ "addhl", 0x582E0F3E, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { 0 }},
+
+/* addhl<.cc> 0,ximm,RC 01011100111011100111cccccc0QQQQQ. */
+{ "addhl", 0x5CEE7000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_CC }},
+
+/* addhl<.cc> RB,RB,ximm 01011bbb111011100BBB1111000QQQQQ. */
+{ "addhl", 0x58EE0F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_CC }},
+
+/* addhl RA,ximm,u6 01011100011011100111uuuuuuaaaaaa. */
+{ "addhl", 0x5C6E7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { 0 }},
+
+/* addhl 0,ximm,u6 01011100011011100111uuuuuu111110. */
+{ "addhl", 0x5C6E703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { 0 }},
+
+/* addhl<.cc> 0,ximm,u6 01011100111011100111uuuuuu1QQQQQ. */
+{ "addhl", 0x5CEE7020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_CC }},
+
+/* addhl RA,limm,RC 01011110001011100111ccccccaaaaaa. */
+{ "addhl", 0x5E2E7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { 0 }},
+
+/* addhl RA,RB,limm 01011bbb001011100BBB111110aaaaaa. */
+{ "addhl", 0x582E0F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { 0 }},
+
+/* addhl 0,limm,RC 01011110001011100111cccccc111110. */
+{ "addhl", 0x5E2E703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* addhl 0,RB,limm 01011bbb001011100BBB111110111110. */
+{ "addhl", 0x582E0FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* addhl<.cc> 0,limm,RC 01011110111011100111cccccc0QQQQQ. */
+{ "addhl", 0x5EEE7000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* addhl<.cc> RB,RB,limm 01011bbb111011100BBB1111100QQQQQ. */
+{ "addhl", 0x58EE0F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_CC }},
+
+/* addhl RA,limm,u6 01011110011011100111uuuuuuaaaaaa. */
+{ "addhl", 0x5E6E7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { 0 }},
+
+/* addhl 0,limm,u6 01011110011011100111uuuuuu111110. */
+{ "addhl", 0x5E6E703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* addhl<.cc> 0,limm,u6 01011110111011100111uuuuuu1QQQQQ. */
+{ "addhl", 0x5EEE7020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* addhl 0,ximm,s12 01011100101011100111ssssssSSSSSS. */
+{ "addhl", 0x5CAE7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { 0 }},
+
+/* addhl 0,limm,s12 01011110101011100111ssssssSSSSSS. */
+{ "addhl", 0x5EAE7000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* addhl RA,ximm,ximm 01011100001011100111111100aaaaaa. */
+{ "addhl", 0x5C2E7F00, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { 0 }},
+
+/* addhl 0,ximm,ximm 01011100001011100111111100111110. */
+{ "addhl", 0x5C2E7F3E, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { 0 }},
+
+/* addhl<.cc> 0,ximm,ximm 010111001110111001111111000QQQQQ. */
+{ "addhl", 0x5CEE7F00, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_CC }},
+
+/* addhl RA,limm,limm 01011110001011100111111110aaaaaa. */
+{ "addhl", 0x5E2E7F80, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { 0 }},
+
+/* addhl 0,limm,limm 01011110001011100111111110111110. */
+{ "addhl", 0x5E2E7FBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* addhl<.cc> 0,limm,limm 010111101110111001111111100QQQQQ. */
+{ "addhl", 0x5EEE7F80, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* addhl_s h,PCL,ximm 01110011hhh010HH. */
+{ "addhl_s", 0x00007308, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, PCL_S, XIMM_S }, { 0 }},
+
+/* addhl_s h,h,limm 01110001hhh010HH. */
+{ "addhl_s", 0x00007108, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, RH_Sdup, HI32 }, { 0 }},
+
+/* addl<.f> RA,RB,RC 01011bbb00000000FBBBccccccaaaaaa. */
+{ "addl", 0x58000000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* addl<.f> 0,RB,RC 01011bbb00000000FBBBcccccc111110. */
+{ "addl", 0x5800003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* addl<.f><.cc> RB,RB,RC 01011bbb11000000FBBBcccccc0QQQQQ. */
+{ "addl", 0x58C00000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* addl<.f> RA,RB,u6 01011bbb01000000FBBBuuuuuuaaaaaa. */
+{ "addl", 0x58400000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* addl<.f> 0,RB,u6 01011bbb01000000FBBBuuuuuu111110. */
+{ "addl", 0x5840003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* addl<.f><.cc> RB,RB,u6 01011bbb11000000FBBBuuuuuu1QQQQQ. */
+{ "addl", 0x58C00020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* addl<.f> RB,RB,s12 01011bbb10000000FBBBssssssSSSSSS. */
+{ "addl", 0x58800000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* addl<.f> RA,ximm,RC 0101110000000000F111ccccccaaaaaa. */
+{ "addl", 0x5C007000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* addl<.f> RA,RB,ximm 01011bbb00000000FBBB111100aaaaaa. */
+{ "addl", 0x58000F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* addl<.f> 0,ximm,RC 0101110000000000F111cccccc111110. */
+{ "addl", 0x5C00703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* addl<.f> 0,RB,ximm 01011bbb00000000FBBB111100111110. */
+{ "addl", 0x58000F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* addl<.f><.cc> 0,ximm,RC 0101110011000000F111cccccc0QQQQQ. */
+{ "addl", 0x5CC07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* addl<.f><.cc> RB,RB,ximm 01011bbb11000000FBBB1111000QQQQQ. */
+{ "addl", 0x58C00F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* addl<.f> RA,ximm,u6 0101110001000000F111uuuuuuaaaaaa. */
+{ "addl", 0x5C407000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* addl<.f> 0,ximm,u6 0101110001000000F111uuuuuu111110. */
+{ "addl", 0x5C40703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* addl<.f><.cc> 0,ximm,u6 0101110011000000F111uuuuuu1QQQQQ. */
+{ "addl", 0x5CC07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* addl<.f> RA,limm,RC 0101111000000000F111ccccccaaaaaa. */
+{ "addl", 0x5E007000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* addl<.f> RA,RB,limm 01011bbb00000000FBBB111110aaaaaa. */
+{ "addl", 0x58000F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* addl<.f> 0,limm,RC 0101111000000000F111cccccc111110. */
+{ "addl", 0x5E00703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* addl<.f> 0,RB,limm 01011bbb00000000FBBB111110111110. */
+{ "addl", 0x58000FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* addl<.f><.cc> 0,limm,RC 0101111011000000F111cccccc0QQQQQ. */
+{ "addl", 0x5EC07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* addl<.f><.cc> RB,RB,limm 01011bbb11000000FBBB1111100QQQQQ. */
+{ "addl", 0x58C00F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* addl<.f> RA,limm,u6 0101111001000000F111uuuuuuaaaaaa. */
+{ "addl", 0x5E407000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* addl<.f> 0,limm,u6 0101111001000000F111uuuuuu111110. */
+{ "addl", 0x5E40703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* addl<.f><.cc> 0,limm,u6 0101111011000000F111uuuuuu1QQQQQ. */
+{ "addl", 0x5EC07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* addl<.f> 0,ximm,s12 0101110010000000F111ssssssSSSSSS. */
+{ "addl", 0x5C807000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* addl<.f> 0,limm,s12 0101111010000000F111ssssssSSSSSS. */
+{ "addl", 0x5E807000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* addl<.f> RA,ximm,ximm 0101110000000000F111111100aaaaaa. */
+{ "addl", 0x5C007F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* addl<.f> 0,ximm,ximm 0101110000000000F111111100111110. */
+{ "addl", 0x5C007F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* addl<.f><.cc> 0,ximm,ximm 0101110011000000F1111111000QQQQQ. */
+{ "addl", 0x5CC07F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* addl<.f> RA,limm,limm 0101111000000000F111111110aaaaaa. */
+{ "addl", 0x5E007F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* addl<.f> 0,limm,limm 0101111000000000F111111110111110. */
+{ "addl", 0x5E007FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* addl<.f><.cc> 0,limm,limm 0101111011000000F1111111100QQQQQ. */
+{ "addl", 0x5EC07F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* addl_s SP,SP,u9 11000UU0101uuuuu. */
+{ "addl_s", 0x0000C0A0, 0x0000F9E0, ARC_OPCODE_ARC64, ARITH, NONE, { SP_S, SP_Sdup, UIMM9_A32_11_S }, { 0 }},
+
+/* addl_s b,b,c 01111bbbccc00001. */
+{ "addl_s", 0x00007801, 0x0000F81F, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* addl_s b,SP,u7 11000bbb100uuuuu. */
+{ "addl_s", 0x0000C080, 0x0000F8E0, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, SP_S, UIMM7_A32_11_S }, { 0 }},
+
+/* addl_s R0,GP,s11 1100111sssssssss. */
+{ "addl_s", 0x0000CE00, 0x0000FE00, ARC_OPCODE_ARC64, ARITH, NONE, { R0_S, GP_S, SIMM11_A32_7_S }, { 0 }},
+
+/* addl_s h,h,LO32 01110001hhh110HH. */
+{ "addl_s", 0x00007118, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, RH_Sdup, LO32 }, { 0 }},
+
+/* addl_s h,PCL,LO32 01110011hhh110HH. */
+{ "addl_s", 0x00007318, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, PCL_S, LO32 }, { 0 }},
+
+/* adds<.f> a,b,c 00101bbb00000110FBBBCCCCCCAAAAAA. */
+{ "adds", 0x28060000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* adds<.f> 0,b,c 00101bbb00000110FBBBCCCCCC111110. */
+{ "adds", 0x2806003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* adds<.f><.cc> b,b,c 00101bbb11000110FBBBCCCCCC0QQQQQ. */
+{ "adds", 0x28C60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* adds<.f> a,b,u6 00101bbb01000110FBBBuuuuuuAAAAAA. */
+{ "adds", 0x28460000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* adds<.f> 0,b,u6 00101bbb01000110FBBBuuuuuu111110. */
+{ "adds", 0x2846003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* adds<.f><.cc> b,b,u6 00101bbb11000110FBBBuuuuuu1QQQQQ. */
+{ "adds", 0x28C60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* adds<.f> b,b,s12 00101bbb10000110FBBBssssssSSSSSS. */
+{ "adds", 0x28860000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* adds<.f> a,limm,c 0010111000000110F111CCCCCCAAAAAA. */
+{ "adds", 0x2E067000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* adds<.f> a,b,limm 00101bbb00000110FBBB111110AAAAAA. */
+{ "adds", 0x28060F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* adds<.f> 0,limm,c 0010111000000110F111CCCCCC111110. */
+{ "adds", 0x2E06703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* adds<.f> 0,b,limm 00101bbb00000110FBBB111110111110. */
+{ "adds", 0x28060FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* adds<.f><.cc> b,b,limm 00101bbb11000110FBBB1111100QQQQQ. */
+{ "adds", 0x28C60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* adds<.f><.cc> 0,limm,c 0010111011000110F111CCCCCC0QQQQQ. */
+{ "adds", 0x2EC67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* adds<.f> a,limm,u6 0010111001000110F111uuuuuuAAAAAA. */
+{ "adds", 0x2E467000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adds<.f> 0,limm,u6 0010111001000110F111uuuuuu111110. */
+{ "adds", 0x2E46703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* adds<.f><.cc> 0,limm,u6 0010111011000110F111uuuuuu1QQQQQ. */
+{ "adds", 0x2EC67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* adds<.f> 0,limm,s12 0010111010000110F111ssssssSSSSSS. */
+{ "adds", 0x2E867000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* adds<.f> a,limm,limm 0010111000000110F111111110AAAAAA. */
+{ "adds", 0x2E067F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* adds<.f> 0,limm,limm 0010111000000110F111111110111110. */
+{ "adds", 0x2E067FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* adds<.f><.cc> 0,limm,limm 0010111011000110F1111111100QQQQQ. */
+{ "adds", 0x2EC67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* add_s a,b,c 01100bbbccc11aaa. */
+{ "add_s", 0x00006018, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA_S, RB_S, RC_S }, { 0 }},
+
+/* add_s b,b,h 01110bbbhhh000HH. */
+{ "add_s", 0x00007000, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RH_S }, { 0 }},
+
+/* add_s h,h,s3 01110ssshhh001HH. */
+{ "add_s", 0x00007004, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, RH_Sdup, SIMM3_5_S }, { 0 }},
+
+/* add_s c,b,u3 01101bbbccc00uuu. */
+{ "add_s", 0x00006800, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RC_S, RB_S, UIMM3_13_S }, { 0 }},
+
+/* add_s R0,b,u6 01001bbb0UUU1uuu. */
+{ "add_s", 0x00004808, 0x0000F888, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, CD2, { R0_S, RB_S, UIMM6_13_S }, { 0 }},
+
+/* add_s R1,b,u6 01001bbb1UUU1uuu. */
+{ "add_s", 0x00004888, 0x0000F888, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, CD2, { R1_S, RB_S, UIMM6_13_S }, { 0 }},
+
+/* add_s b,b,limm 01110bbb11000011. */
+{ "add_s", 0x000070C3, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, LIMM_S }, { 0 }},
+
+/* add_s 0,limm,s3 01110sss11000111. */
+{ "add_s", 0x000070C7, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA_S, LIMM_S, SIMM3_5_S }, { 0 }},
+
+/* aex b,c 00100bbb00100111RBBBCCCCCCRRRRRR. */
+{ "aex", 0x20270000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* aex<.cc> b,c 00100bbb11100111RBBBCCCCCC0QQQQQ. */
+{ "aex", 0x20E70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { C_CC }},
+
+/* aex b,u6 00100bbb01100111RBBBuuuuuuRRRRRR. */
+{ "aex", 0x20670000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* aex<.cc> b,u6 00100bbb11100111RBBBuuuuuu1QQQQQ. */
+{ "aex", 0x20E70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { C_CC }},
+
+/* aex b,s12 00100bbb10100111RBBBssssssSSSSSS. */
+{ "aex", 0x20A70000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* aex limm,c 0010011000100111R111CCCCCCRRRRRR. */
+{ "aex", 0x26277000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* aex b,limm 00100bbb00100111RBBB111110RRRRRR. */
+{ "aex", 0x20270F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* aex<.cc> limm,c 0010011011100111R111CCCCCC0QQQQQ. */
+{ "aex", 0x26E77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, RC, BRAKETdup }, { C_CC }},
+
+/* aex<.cc> b,limm 00100bbb11100111RBBB1111100QQQQQ. */
+{ "aex", 0x20E70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { C_CC }},
+
+/* aex limm,u6 0010011001100111R111uuuuuuRRRRRR. */
+{ "aex", 0x26677000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* aex<.cc> limm,u6 0010011011100111R111uuuuuu1QQQQQ. */
+{ "aex", 0x26E77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, UIMM6_20, BRAKETdup }, { C_CC }},
+
+/* aex limm,s12 0010011010100111R111ssssssSSSSSS. */
+{ "aex", 0x26A77000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* aex limm,limm 0010011000100111R111111110RRRRRR. */
+{ "aex", 0x26277F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, LIMMdup, BRAKETdup }, { 0 }},
+
+/* aex<.cc> limm,limm 0010011011100111R1111111100QQQQQ. */
+{ "aex", 0x26E77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, LIMMdup, BRAKETdup }, { C_CC }},
+
+/* aexl RB,RC 01011bbb001001110BBBccccccRRRRRR. */
+{ "aexl", 0x58270000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* aexl<.cc> RB,RC 01011bbb111001110BBBcccccc0QQQQQ. */
+{ "aexl", 0x58E70000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_CC }},
+
+/* aexl RB,u6 01011bbb011001110BBBuuuuuuRRRRRR. */
+{ "aexl", 0x58670000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* aexl<.cc> RB,u6 01011bbb111001110BBBuuuuuu1QQQQQ. */
+{ "aexl", 0x58E70020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, UIMM6_20, BRAKETdup }, { C_CC }},
+
+/* aexl RB,s12 01011bbb101001110BBBssssssSSSSSS. */
+{ "aexl", 0x58A70000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* aexl RB,ximm 01011bbb001001110BBB111100RRRRRR. */
+{ "aexl", 0x58270F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, XIMM, BRAKETdup }, { 0 }},
+
+/* aexl<.cc> RB,ximm 01011bbb111001110BBB1111000QQQQQ. */
+{ "aexl", 0x58E70F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, XIMM, BRAKETdup }, { C_CC }},
+
+/* aexl RB,limm 01011bbb001001110BBB111110RRRRRR. */
+{ "aexl", 0x58270F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* aexl<.cc> RB,limm 01011bbb111001110BBB1111100QQQQQ. */
+{ "aexl", 0x58E70F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, LIMM, BRAKETdup }, { C_CC }},
+
+/* and<.f> a,b,c 00100bbb00000100FBBBCCCCCCAAAAAA. */
+{ "and", 0x20040000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* and<.f> 0,b,c 00100bbb00000100FBBBCCCCCC111110. */
+{ "and", 0x2004003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* and<.f><.cc> b,b,c 00100bbb11000100FBBBCCCCCC0QQQQQ. */
+{ "and", 0x20C40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* and<.f> a,b,u6 00100bbb01000100FBBBuuuuuuAAAAAA. */
+{ "and", 0x20440000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* and<.f> 0,b,u6 00100bbb01000100FBBBuuuuuu111110. */
+{ "and", 0x2044003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* and<.f><.cc> b,b,u6 00100bbb11000100FBBBuuuuuu1QQQQQ. */
+{ "and", 0x20C40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* and<.f> b,b,s12 00100bbb10000100FBBBssssssSSSSSS. */
+{ "and", 0x20840000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* and<.f> a,limm,c 0010011000000100F111CCCCCCAAAAAA. */
+{ "and", 0x26047000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* and<.f> a,b,limm 00100bbb00000100FBBB111110AAAAAA. */
+{ "and", 0x20040F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* and<.f> 0,limm,c 0010011000000100F111CCCCCC111110. */
+{ "and", 0x2604703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* and<.f> 0,b,limm 00100bbb00000100FBBB111110111110. */
+{ "and", 0x20040FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* and<.f><.cc> b,b,limm 00100bbb11000100FBBB1111100QQQQQ. */
+{ "and", 0x20C40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* and<.f><.cc> 0,limm,c 0010011011000100F111CCCCCC0QQQQQ. */
+{ "and", 0x26C47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* and<.f> a,limm,u6 0010011001000100F111uuuuuuAAAAAA. */
+{ "and", 0x26447000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* and<.f> 0,limm,u6 0010011001000100F111uuuuuu111110. */
+{ "and", 0x2644703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* and<.f><.cc> 0,limm,u6 0010011011000100F111uuuuuu1QQQQQ. */
+{ "and", 0x26C47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* and<.f> 0,limm,s12 0010011010000100F111ssssssSSSSSS. */
+{ "and", 0x26847000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* and<.f> a,limm,limm 0010011000000100F111111110AAAAAA. */
+{ "and", 0x26047F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* and<.f> 0,limm,limm 0010011000000100F111111110111110. */
+{ "and", 0x26047FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* and<.f><.cc> 0,limm,limm 0010011011000100F1111111100QQQQQ. */
+{ "and", 0x26C47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* andl<.f> RA,RB,RC 01011bbb00000100FBBBccccccaaaaaa. */
+{ "andl", 0x58040000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* andl<.f> 0,RB,RC 01011bbb00000100FBBBcccccc111110. */
+{ "andl", 0x5804003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* andl<.f><.cc> RB,RB,RC 01011bbb11000100FBBBcccccc0QQQQQ. */
+{ "andl", 0x58C40000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* andl<.f> RA,RB,u6 01011bbb01000100FBBBuuuuuuaaaaaa. */
+{ "andl", 0x58440000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* andl<.f> 0,RB,u6 01011bbb01000100FBBBuuuuuu111110. */
+{ "andl", 0x5844003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* andl<.f><.cc> RB,RB,u6 01011bbb11000100FBBBuuuuuu1QQQQQ. */
+{ "andl", 0x58C40020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* andl<.f> RB,RB,s12 01011bbb10000100FBBBssssssSSSSSS. */
+{ "andl", 0x58840000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* andl<.f> RA,ximm,RC 0101110000000100F111ccccccaaaaaa. */
+{ "andl", 0x5C047000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* andl<.f> RA,RB,ximm 01011bbb00000100FBBB111100aaaaaa. */
+{ "andl", 0x58040F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* andl<.f> 0,ximm,RC 0101110000000100F111cccccc111110. */
+{ "andl", 0x5C04703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* andl<.f> 0,RB,ximm 01011bbb00000100FBBB111100111110. */
+{ "andl", 0x58040F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* andl<.f><.cc> 0,ximm,RC 0101110011000100F111cccccc0QQQQQ. */
+{ "andl", 0x5CC47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* andl<.f><.cc> RB,RB,ximm 01011bbb11000100FBBB1111000QQQQQ. */
+{ "andl", 0x58C40F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* andl<.f> RA,ximm,u6 0101110001000100F111uuuuuuaaaaaa. */
+{ "andl", 0x5C447000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* andl<.f> 0,ximm,u6 0101110001000100F111uuuuuu111110. */
+{ "andl", 0x5C44703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* andl<.f><.cc> 0,ximm,u6 0101110011000100F111uuuuuu1QQQQQ. */
+{ "andl", 0x5CC47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* andl<.f> RA,limm,RC 0101111000000100F111ccccccaaaaaa. */
+{ "andl", 0x5E047000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* andl<.f> RA,RB,limm 01011bbb00000100FBBB111110aaaaaa. */
+{ "andl", 0x58040F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* andl<.f> 0,limm,RC 0101111000000100F111cccccc111110. */
+{ "andl", 0x5E04703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* andl<.f> 0,RB,limm 01011bbb00000100FBBB111110111110. */
+{ "andl", 0x58040FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* andl<.f><.cc> 0,limm,RC 0101111011000100F111cccccc0QQQQQ. */
+{ "andl", 0x5EC47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* andl<.f><.cc> RB,RB,limm 01011bbb11000100FBBB1111100QQQQQ. */
+{ "andl", 0x58C40F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* andl<.f> RA,limm,u6 0101111001000100F111uuuuuuaaaaaa. */
+{ "andl", 0x5E447000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* andl<.f> 0,limm,u6 0101111001000100F111uuuuuu111110. */
+{ "andl", 0x5E44703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* andl<.f><.cc> 0,limm,u6 0101111011000100F111uuuuuu1QQQQQ. */
+{ "andl", 0x5EC47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* andl<.f> 0,ximm,s12 0101110010000100F111ssssssSSSSSS. */
+{ "andl", 0x5C847000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* andl<.f> 0,limm,s12 0101111010000100F111ssssssSSSSSS. */
+{ "andl", 0x5E847000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* andl<.f> RA,ximm,ximm 0101110000000100F111111100aaaaaa. */
+{ "andl", 0x5C047F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* andl<.f> 0,ximm,ximm 0101110000000100F111111100111110. */
+{ "andl", 0x5C047F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* andl<.f><.cc> 0,ximm,ximm 0101110011000100F1111111000QQQQQ. */
+{ "andl", 0x5CC47F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* andl<.f> RA,limm,limm 0101111000000100F111111110aaaaaa. */
+{ "andl", 0x5E047F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* andl<.f> 0,limm,limm 0101111000000100F111111110111110. */
+{ "andl", 0x5E047FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* andl<.f><.cc> 0,limm,limm 0101111011000100F1111111100QQQQQ. */
+{ "andl", 0x5EC47F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* andl_s b,b,c 01111bbbccc01000. */
+{ "andl_s", 0x00007808, 0x0000F81F, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* and_s b,b,c 01111bbbccc00100. */
+{ "and_s", 0x00007804, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* asl<.f> b,c 00100bbb00101111FBBBCCCCCC000000. */
+{ "asl", 0x202F0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* asl<.f> 0,c 0010011000101111F111CCCCCC000000. */
+{ "asl", 0x262F7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* asl<.f> a,b,c 00101bbb00000000FBBBCCCCCCAAAAAA. */
+{ "asl", 0x28000000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, RC }, { C_F }},
+
+/* asl<.f> 0,b,c 00101bbb00000000FBBBCCCCCC111110. */
+{ "asl", 0x2800003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, RC }, { C_F }},
+
+/* asl<.f><.cc> b,b,c 00101bbb11000000FBBBCCCCCC0QQQQQ. */
+{ "asl", 0x28C00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asl<.f> b,u6 00100bbb01101111FBBBuuuuuu000000. */
+{ "asl", 0x206F0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* asl<.f> 0,u6 0010011001101111F111uuuuuu000000. */
+{ "asl", 0x266F7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* asl<.f> a,b,u6 00101bbb01000000FBBBuuuuuuAAAAAA. */
+{ "asl", 0x28400000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asl<.f> 0,b,u6 00101bbb01000000FBBBuuuuuu111110. */
+{ "asl", 0x2840003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asl<.f><.cc> b,b,u6 00101bbb11000000FBBBuuuuuu1QQQQQ. */
+{ "asl", 0x28C00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asl<.f> b,b,s12 00101bbb10000000FBBBssssssSSSSSS. */
+{ "asl", 0x28800000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asl<.f> b,limm 00100bbb00101111FBBB111110000000. */
+{ "asl", 0x202F0F80, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* asl<.f> 0,limm 0010011000101111F111111110000000. */
+{ "asl", 0x262F7F80, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* asl<.f> a,limm,c 0010111000000000F111CCCCCCAAAAAA. */
+{ "asl", 0x2E007000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, RC }, { C_F }},
+
+/* asl<.f> a,b,limm 00101bbb00000000FBBB111110AAAAAA. */
+{ "asl", 0x28000F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, LIMM }, { C_F }},
+
+/* asl<.f> 0,limm,c 0010111000000000F111CCCCCC111110. */
+{ "asl", 0x2E00703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F }},
+
+/* asl<.f> 0,b,limm 00101bbb00000000FBBB111110111110. */
+{ "asl", 0x28000FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, LIMM }, { C_F }},
+
+/* asl<.f><.cc> b,b,limm 00101bbb11000000FBBB1111100QQQQQ. */
+{ "asl", 0x28C00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asl<.f><.cc> 0,limm,c 0010111011000000F111CCCCCC0QQQQQ. */
+{ "asl", 0x2EC07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asl<.f> a,limm,u6 0010111001000000F111uuuuuuAAAAAA. */
+{ "asl", 0x2E407000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asl<.f> 0,limm,u6 0010111001000000F111uuuuuu111110. */
+{ "asl", 0x2E40703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asl<.f><.cc> 0,limm,u6 0010111011000000F111uuuuuu1QQQQQ. */
+{ "asl", 0x2EC07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asl<.f> 0,limm,s12 0010111010000000F111ssssssSSSSSS. */
+{ "asl", 0x2E807000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asl<.f> a,limm,limm 0010111000000000F111111110AAAAAA. */
+{ "asl", 0x2E007F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asl<.f> 0,limm,limm 0010111000000000F111111110111110. */
+{ "asl", 0x2E007FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asl<.f><.cc> 0,limm,limm 0010111011000000F1111111100QQQQQ. */
+{ "asl", 0x2EC07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* aslacc c 00101000001011110000CCCCCC111111. */
+{ "aslacc", 0x282F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RC_CHK }, { 0 }},
+
+/* aslacc u6 00101000011011110000uuuuuu111111. */
+{ "aslacc", 0x286F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { UIMM6_20 }, { 0 }},
+
+/* asll<.f> RA,RB,RC 01011bbb00100000FBBBccccccaaaaaa. */
+{ "asll", 0x58200000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* asll<.f> 0,RB,RC 01011bbb00100000FBBBcccccc111110. */
+{ "asll", 0x5820003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* asll<.f><.cc> RB,RB,RC 01011bbb11100000FBBBcccccc0QQQQQ. */
+{ "asll", 0x58E00000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asll<.f> RB,RC 01011bbb00101111FBBBcccccc000000. */
+{ "asll", 0x582F0000, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* asll<.f> 0,RC 0101111000101111F111cccccc000000. */
+{ "asll", 0x5E2F7000, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* asll<.f> RA,RB,u6 01011bbb01100000FBBBuuuuuuaaaaaa. */
+{ "asll", 0x58600000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asll<.f> 0,RB,u6 01011bbb01100000FBBBuuuuuu111110. */
+{ "asll", 0x5860003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asll<.f><.cc> RB,RB,u6 01011bbb11100000FBBBuuuuuu1QQQQQ. */
+{ "asll", 0x58E00020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asll<.f> RB,u6 01011bbb01101111FBBBuuuuuu000000. */
+{ "asll", 0x586F0000, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* asll<.f> 0,u6 0101111001101111F111uuuuuu000000. */
+{ "asll", 0x5E6F7000, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* asll<.f> RB,RB,s12 01011bbb10100000FBBBssssssSSSSSS. */
+{ "asll", 0x58A00000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asll<.f> RA,ximm,RC 0101110000100000F111ccccccaaaaaa. */
+{ "asll", 0x5C207000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* asll<.f> RA,RB,ximm 01011bbb00100000FBBB111100aaaaaa. */
+{ "asll", 0x58200F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* asll<.f> 0,ximm,RC 0101110000100000F111cccccc111110. */
+{ "asll", 0x5C20703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* asll<.f> 0,RB,ximm 01011bbb00100000FBBB111100111110. */
+{ "asll", 0x58200F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* asll<.f><.cc> 0,ximm,RC 0101110011100000F111cccccc0QQQQQ. */
+{ "asll", 0x5CE07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* asll<.f><.cc> RB,RB,ximm 01011bbb11100000FBBB1111000QQQQQ. */
+{ "asll", 0x58E00F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* asll<.f> RB,ximm 01011bbb00101111FBBB111100000000. */
+{ "asll", 0x582F0F00, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* asll<.f> 0,ximm 0101111000101111F111111100000000. */
+{ "asll", 0x5E2F7F00, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* asll<.f> RA,ximm,u6 0101110001100000F111uuuuuuaaaaaa. */
+{ "asll", 0x5C607000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* asll<.f> 0,ximm,u6 0101110001100000F111uuuuuu111110. */
+{ "asll", 0x5C60703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* asll<.f><.cc> 0,ximm,u6 0101110011100000F111uuuuuu1QQQQQ. */
+{ "asll", 0x5CE07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asll<.f> RA,limm,RC 0101111000100000F111ccccccaaaaaa. */
+{ "asll", 0x5E207000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* asll<.f> RA,RB,limm 01011bbb00100000FBBB111110aaaaaa. */
+{ "asll", 0x58200F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* asll<.f> 0,limm,RC 0101111000100000F111cccccc111110. */
+{ "asll", 0x5E20703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* asll<.f> 0,RB,limm 01011bbb00100000FBBB111110111110. */
+{ "asll", 0x58200FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* asll<.f><.cc> 0,limm,RC 0101111011100000F111cccccc0QQQQQ. */
+{ "asll", 0x5EE07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asll<.f><.cc> RB,RB,limm 01011bbb11100000FBBB1111100QQQQQ. */
+{ "asll", 0x58E00F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asll<.f> RB,limm 01011bbb00101111FBBB111110000000. */
+{ "asll", 0x582F0F80, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* asll<.f> 0,limm 0101111000101111F111111110000000. */
+{ "asll", 0x5E2F7F80, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* asll<.f> RA,limm,u6 0101111001100000F111uuuuuuaaaaaa. */
+{ "asll", 0x5E607000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asll<.f> 0,limm,u6 0101111001100000F111uuuuuu111110. */
+{ "asll", 0x5E60703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asll<.f><.cc> 0,limm,u6 0101111011100000F111uuuuuu1QQQQQ. */
+{ "asll", 0x5EE07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asll<.f> 0,ximm,s12 0101110010100000F111ssssssSSSSSS. */
+{ "asll", 0x5CA07000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* asll<.f> 0,limm,s12 0101111010100000F111ssssssSSSSSS. */
+{ "asll", 0x5EA07000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asll<.f> RA,ximm,ximm 0101110000100000F111111100aaaaaa. */
+{ "asll", 0x5C207F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* asll<.f> 0,ximm,ximm 0101110000100000F111111100111110. */
+{ "asll", 0x5C207F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* asll<.f><.cc> 0,ximm,ximm 0101110011100000F1111111000QQQQQ. */
+{ "asll", 0x5CE07F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* asll<.f> RA,limm,limm 0101111000100000F111111110aaaaaa. */
+{ "asll", 0x5E207F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asll<.f> 0,limm,limm 0101111000100000F111111110111110. */
+{ "asll", 0x5E207FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asll<.f><.cc> 0,limm,limm 0101111011100000F1111111100QQQQQ. */
+{ "asll", 0x5EE07F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* asls<.f> a,b,c 00101bbb00001010FBBBCCCCCCAAAAAA. */
+{ "asls", 0x280A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* asls<.f> 0,b,c 00101bbb00001010FBBBCCCCCC111110. */
+{ "asls", 0x280A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* asls<.f><.cc> b,b,c 00101bbb11001010FBBBCCCCCC0QQQQQ. */
+{ "asls", 0x28CA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asls<.f> a,b,u6 00101bbb01001010FBBBuuuuuuAAAAAA. */
+{ "asls", 0x284A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asls<.f> 0,b,u6 00101bbb01001010FBBBuuuuuu111110. */
+{ "asls", 0x284A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asls<.f><.cc> b,b,u6 00101bbb11001010FBBBuuuuuu1QQQQQ. */
+{ "asls", 0x28CA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asls<.f> b,b,s12 00101bbb10001010FBBBssssssSSSSSS. */
+{ "asls", 0x288A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asls<.f> a,limm,c 0010111000001010F111CCCCCCAAAAAA. */
+{ "asls", 0x2E0A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* asls<.f> a,b,limm 00101bbb00001010FBBB111110AAAAAA. */
+{ "asls", 0x280A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* asls<.f> 0,limm,c 0010111000001010F111CCCCCC111110. */
+{ "asls", 0x2E0A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* asls<.f> 0,b,limm 00101bbb00001010FBBB111110111110. */
+{ "asls", 0x280A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* asls<.f><.cc> b,b,limm 00101bbb11001010FBBB1111100QQQQQ. */
+{ "asls", 0x28CA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asls<.f><.cc> 0,limm,c 0010111011001010F111CCCCCC0QQQQQ. */
+{ "asls", 0x2ECA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asls<.f> a,limm,u6 0010111001001010F111uuuuuuAAAAAA. */
+{ "asls", 0x2E4A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asls<.f> 0,limm,u6 0010111001001010F111uuuuuu111110. */
+{ "asls", 0x2E4A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asls<.f><.cc> 0,limm,u6 0010111011001010F111uuuuuu1QQQQQ. */
+{ "asls", 0x2ECA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asls<.f> 0,limm,s12 0010111010001010F111ssssssSSSSSS. */
+{ "asls", 0x2E8A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asls<.f> a,limm,limm 0010111000001010F111111110AAAAAA. */
+{ "asls", 0x2E0A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asls<.f> 0,limm,limm 0010111000001010F111111110111110. */
+{ "asls", 0x2E0A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asls<.f><.cc> 0,limm,limm 0010111011001010F1111111100QQQQQ. */
+{ "asls", 0x2ECA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* aslsacc c 00101001001011110000CCCCCC111111. */
+{ "aslsacc", 0x292F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RC_CHK }, { 0 }},
+
+/* aslsacc u6 00101001011011110000uuuuuu111111. */
+{ "aslsacc", 0x296F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { UIMM6_20 }, { 0 }},
+
+/* asl_s b,c 01111bbbccc11011. */
+{ "asl_s", 0x0000781B, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RC_S }, { 0 }},
+
+/* asl_s b,b,c 01111bbbccc11000. */
+{ "asl_s", 0x00007818, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* asl_s c,b,u3 01101bbbccc10uuu. */
+{ "asl_s", 0x00006810, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RC_S, RB_S, UIMM3_13_S }, { 0 }},
+
+/* asl_s b,b,u5 10111bbb000uuuuu. */
+{ "asl_s", 0x0000B800, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* asr<.f> b,c 00100bbb00101111FBBBCCCCCC000001. */
+{ "asr", 0x202F0001, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* asr<.f> 0,c 0010011000101111F111CCCCCC000001. */
+{ "asr", 0x262F7001, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* asr<.f> a,b,c 00101bbb00000010FBBBCCCCCCAAAAAA. */
+{ "asr", 0x28020000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, RC }, { C_F }},
+
+/* asr<.f> 0,b,c 00101bbb00000010FBBBCCCCCC111110. */
+{ "asr", 0x2802003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, RC }, { C_F }},
+
+/* asr<.f><.cc> b,b,c 00101bbb11000010FBBBCCCCCC0QQQQQ. */
+{ "asr", 0x28C20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asr<.f> b,u6 00100bbb01101111FBBBuuuuuu000001. */
+{ "asr", 0x206F0001, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* asr<.f> 0,u6 0010011001101111F111uuuuuu000001. */
+{ "asr", 0x266F7001, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* asr<.f> a,b,u6 00101bbb01000010FBBBuuuuuuAAAAAA. */
+{ "asr", 0x28420000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asr<.f> 0,b,u6 00101bbb01000010FBBBuuuuuu111110. */
+{ "asr", 0x2842003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asr<.f><.cc> b,b,u6 00101bbb11000010FBBBuuuuuu1QQQQQ. */
+{ "asr", 0x28C20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asr<.f> b,b,s12 00101bbb10000010FBBBssssssSSSSSS. */
+{ "asr", 0x28820000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asr<.f> b,limm 00100bbb00101111FBBB111110000001. */
+{ "asr", 0x202F0F81, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* asr<.f> 0,limm 0010011000101111F111111110000001. */
+{ "asr", 0x262F7F81, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* asr<.f> a,limm,c 0010111000000010F111CCCCCCAAAAAA. */
+{ "asr", 0x2E027000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, RC }, { C_F }},
+
+/* asr<.f> a,b,limm 00101bbb00000010FBBB111110AAAAAA. */
+{ "asr", 0x28020F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, LIMM }, { C_F }},
+
+/* asr<.f> 0,limm,c 0010111000000010F111CCCCCC111110. */
+{ "asr", 0x2E02703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F }},
+
+/* asr<.f> 0,b,limm 00101bbb00000010FBBB111110111110. */
+{ "asr", 0x28020FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, LIMM }, { C_F }},
+
+/* asr<.f><.cc> b,b,limm 00101bbb11000010FBBB1111100QQQQQ. */
+{ "asr", 0x28C20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asr<.f><.cc> 0,limm,c 0010111011000010F111CCCCCC0QQQQQ. */
+{ "asr", 0x2EC27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asr<.f> a,limm,u6 0010111001000010F111uuuuuuAAAAAA. */
+{ "asr", 0x2E427000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asr<.f> 0,limm,u6 0010111001000010F111uuuuuu111110. */
+{ "asr", 0x2E42703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asr<.f><.cc> 0,limm,u6 0010111011000010F111uuuuuu1QQQQQ. */
+{ "asr", 0x2EC27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asr<.f> 0,limm,s12 0010111010000010F111ssssssSSSSSS. */
+{ "asr", 0x2E827000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asr<.f> a,limm,limm 0010111000000010F111111110AAAAAA. */
+{ "asr", 0x2E027F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asr<.f> 0,limm,limm 0010111000000010F111111110111110. */
+{ "asr", 0x2E027FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asr<.f><.cc> 0,limm,limm 0010111011000010F1111111100QQQQQ. */
+{ "asr", 0x2EC27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* asr16<.f> b,c 00101bbb00101111FBBBCCCCCC001100. */
+{ "asr16", 0x282F000C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, RC }, { C_F }},
+
+/* asr16<.f> 0,c 0010111000101111F111CCCCCC001100. */
+{ "asr16", 0x2E2F700C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, RC }, { C_F }},
+
+/* asr16<.f> b,u6 00101bbb01101111FBBBuuuuuu001100. */
+{ "asr16", 0x286F000C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* asr16<.f> 0,u6 0010111001101111F111uuuuuu001100. */
+{ "asr16", 0x2E6F700C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* asr16<.f> b,limm 00101bbb00101111FBBB111110001100. */
+{ "asr16", 0x282F0F8C, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, LIMM }, { C_F }},
+
+/* asr16<.f> 0,limm 0010111000101111F111111110001100. */
+{ "asr16", 0x2E2F7F8C, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* asr8<.f> b,c 00101bbb00101111FBBBCCCCCC001101. */
+{ "asr8", 0x282F000D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, RC }, { C_F }},
+
+/* asr8<.f> 0,c 0010111000101111F111CCCCCC001101. */
+{ "asr8", 0x2E2F700D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, RC }, { C_F }},
+
+/* asr8<.f> b,u6 00101bbb01101111FBBBuuuuuu001101. */
+{ "asr8", 0x286F000D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* asr8<.f> 0,u6 0010111001101111F111uuuuuu001101. */
+{ "asr8", 0x2E6F700D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* asr8<.f> b,limm 00101bbb00101111FBBB111110001101. */
+{ "asr8", 0x282F0F8D, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, LIMM }, { C_F }},
+
+/* asr8<.f> 0,limm 0010111000101111F111111110001101. */
+{ "asr8", 0x2E2F7F8D, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* asrl<.f> RA,RB,RC 01011bbb00100010FBBBccccccaaaaaa. */
+{ "asrl", 0x58220000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* asrl<.f> 0,RB,RC 01011bbb00100010FBBBcccccc111110. */
+{ "asrl", 0x5822003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* asrl<.f><.cc> RB,RB,RC 01011bbb11100010FBBBcccccc0QQQQQ. */
+{ "asrl", 0x58E20000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asrl<.f> RB,RC 01011bbb00101111FBBBcccccc000001. */
+{ "asrl", 0x582F0001, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* asrl<.f> 0,RC 0101111000101111F111cccccc000001. */
+{ "asrl", 0x5E2F7001, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* asrl<.f> RA,RB,u6 01011bbb01100010FBBBuuuuuuaaaaaa. */
+{ "asrl", 0x58620000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asrl<.f> 0,RB,u6 01011bbb01100010FBBBuuuuuu111110. */
+{ "asrl", 0x5862003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asrl<.f><.cc> RB,RB,u6 01011bbb11100010FBBBuuuuuu1QQQQQ. */
+{ "asrl", 0x58E20020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrl<.f> RB,u6 01011bbb01101111FBBBuuuuuu000001. */
+{ "asrl", 0x586F0001, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* asrl<.f> 0,u6 0101111001101111F111uuuuuu000001. */
+{ "asrl", 0x5E6F7001, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* asrl<.f> RB,RB,s12 01011bbb10100010FBBBssssssSSSSSS. */
+{ "asrl", 0x58A20000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asrl<.f> RA,ximm,RC 0101110000100010F111ccccccaaaaaa. */
+{ "asrl", 0x5C227000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* asrl<.f> RA,RB,ximm 01011bbb00100010FBBB111100aaaaaa. */
+{ "asrl", 0x58220F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* asrl<.f> 0,ximm,RC 0101110000100010F111cccccc111110. */
+{ "asrl", 0x5C22703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* asrl<.f> 0,RB,ximm 01011bbb00100010FBBB111100111110. */
+{ "asrl", 0x58220F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* asrl<.f><.cc> 0,ximm,RC 0101110011100010F111cccccc0QQQQQ. */
+{ "asrl", 0x5CE27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* asrl<.f><.cc> RB,RB,ximm 01011bbb11100010FBBB1111000QQQQQ. */
+{ "asrl", 0x58E20F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* asrl<.f> RB,ximm 01011bbb00101111FBBB111100000001. */
+{ "asrl", 0x582F0F01, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* asrl<.f> 0,ximm 0101111000101111F111111100000001. */
+{ "asrl", 0x5E2F7F01, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* asrl<.f> RA,ximm,u6 0101110001100010F111uuuuuuaaaaaa. */
+{ "asrl", 0x5C627000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* asrl<.f> 0,ximm,u6 0101110001100010F111uuuuuu111110. */
+{ "asrl", 0x5C62703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* asrl<.f><.cc> 0,ximm,u6 0101110011100010F111uuuuuu1QQQQQ. */
+{ "asrl", 0x5CE27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrl<.f> RA,limm,RC 0101111000100010F111ccccccaaaaaa. */
+{ "asrl", 0x5E227000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* asrl<.f> RA,RB,limm 01011bbb00100010FBBB111110aaaaaa. */
+{ "asrl", 0x58220F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* asrl<.f> 0,limm,RC 0101111000100010F111cccccc111110. */
+{ "asrl", 0x5E22703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* asrl<.f> 0,RB,limm 01011bbb00100010FBBB111110111110. */
+{ "asrl", 0x58220FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* asrl<.f><.cc> 0,limm,RC 0101111011100010F111cccccc0QQQQQ. */
+{ "asrl", 0x5EE27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asrl<.f><.cc> RB,RB,limm 01011bbb11100010FBBB1111100QQQQQ. */
+{ "asrl", 0x58E20F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asrl<.f> RB,limm 01011bbb00101111FBBB111110000001. */
+{ "asrl", 0x582F0F81, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* asrl<.f> 0,limm 0101111000101111F111111110000001. */
+{ "asrl", 0x5E2F7F81, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* asrl<.f> RA,limm,u6 0101111001100010F111uuuuuuaaaaaa. */
+{ "asrl", 0x5E627000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrl<.f> 0,limm,u6 0101111001100010F111uuuuuu111110. */
+{ "asrl", 0x5E62703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrl<.f><.cc> 0,limm,u6 0101111011100010F111uuuuuu1QQQQQ. */
+{ "asrl", 0x5EE27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrl<.f> 0,ximm,s12 0101110010100010F111ssssssSSSSSS. */
+{ "asrl", 0x5CA27000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* asrl<.f> 0,limm,s12 0101111010100010F111ssssssSSSSSS. */
+{ "asrl", 0x5EA27000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asrl<.f> RA,ximm,ximm 0101110000100010F111111100aaaaaa. */
+{ "asrl", 0x5C227F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* asrl<.f> 0,ximm,ximm 0101110000100010F111111100111110. */
+{ "asrl", 0x5C227F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* asrl<.f><.cc> 0,ximm,ximm 0101110011100010F1111111000QQQQQ. */
+{ "asrl", 0x5CE27F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* asrl<.f> RA,limm,limm 0101111000100010F111111110aaaaaa. */
+{ "asrl", 0x5E227F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asrl<.f> 0,limm,limm 0101111000100010F111111110111110. */
+{ "asrl", 0x5E227FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asrl<.f><.cc> 0,limm,limm 0101111011100010F1111111100QQQQQ. */
+{ "asrl", 0x5EE27F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* asrs<.f> a,b,c 00101bbb00001011FBBBCCCCCCAAAAAA. */
+{ "asrs", 0x280B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* asrs<.f> 0,b,c 00101bbb00001011FBBBCCCCCC111110. */
+{ "asrs", 0x280B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* asrs<.f><.cc> b,b,c 00101bbb11001011FBBBCCCCCC0QQQQQ. */
+{ "asrs", 0x28CB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* asrs<.f> a,b,u6 00101bbb01001011FBBBuuuuuuAAAAAA. */
+{ "asrs", 0x284B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* asrs<.f> 0,b,u6 00101bbb01001011FBBBuuuuuu111110. */
+{ "asrs", 0x284B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asrs<.f><.cc> b,b,u6 00101bbb11001011FBBBuuuuuu1QQQQQ. */
+{ "asrs", 0x28CB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrs<.f> b,b,s12 00101bbb10001011FBBBssssssSSSSSS. */
+{ "asrs", 0x288B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* asrs<.f> a,limm,c 0010111000001011F111CCCCCCAAAAAA. */
+{ "asrs", 0x2E0B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* asrs<.f> a,b,limm 00101bbb00001011FBBB111110AAAAAA. */
+{ "asrs", 0x280B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* asrs<.f> 0,limm,c 0010111000001011F111CCCCCC111110. */
+{ "asrs", 0x2E0B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* asrs<.f> 0,b,limm 00101bbb00001011FBBB111110111110. */
+{ "asrs", 0x280B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* asrs<.f><.cc> b,b,limm 00101bbb11001011FBBB1111100QQQQQ. */
+{ "asrs", 0x28CB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asrs<.f><.cc> 0,limm,c 0010111011001011F111CCCCCC0QQQQQ. */
+{ "asrs", 0x2ECB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asrs<.f> a,limm,u6 0010111001001011F111uuuuuuAAAAAA. */
+{ "asrs", 0x2E4B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrs<.f> 0,limm,u6 0010111001001011F111uuuuuu111110. */
+{ "asrs", 0x2E4B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrs<.f><.cc> 0,limm,u6 0010111011001011F111uuuuuu1QQQQQ. */
+{ "asrs", 0x2ECB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrs<.f> 0,limm,s12 0010111010001011F111ssssssSSSSSS. */
+{ "asrs", 0x2E8B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asrs<.f> a,limm,limm 0010111000001011F111111110AAAAAA. */
+{ "asrs", 0x2E0B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* asrs<.f> 0,limm,limm 0010111000001011F111111110111110. */
+{ "asrs", 0x2E0B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asrs<.f><.cc> 0,limm,limm 0010111011001011F1111111100QQQQQ. */
+{ "asrs", 0x2ECB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* asrsr<.f> a,b,c 00101bbb00001100FBBBCCCCCCAAAAAA. */
+{ "asrsr", 0x280C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* asrsr<.f> 0,b,c 00101bbb00001100FBBBCCCCCC111110. */
+{ "asrsr", 0x280C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* asrsr<.f><.cc> b,b,c 00101bbb11001100FBBBCCCCCC0QQQQQ. */
+{ "asrsr", 0x28CC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* asrsr<.f> a,b,u6 00101bbb01001100FBBBuuuuuuAAAAAA. */
+{ "asrsr", 0x284C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* asrsr<.f> 0,b,u6 00101bbb01001100FBBBuuuuuu111110. */
+{ "asrsr", 0x284C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* asrsr<.f><.cc> b,b,u6 00101bbb11001100FBBBuuuuuu1QQQQQ. */
+{ "asrsr", 0x28CC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrsr<.f> b,b,s12 00101bbb10001100FBBBssssssSSSSSS. */
+{ "asrsr", 0x288C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* asrsr<.f> a,limm,c 0010111000001100F111CCCCCCAAAAAA. */
+{ "asrsr", 0x2E0C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* asrsr<.f> a,b,limm 00101bbb00001100FBBB111110AAAAAA. */
+{ "asrsr", 0x280C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* asrsr<.f> 0,limm,c 0010111000001100F111CCCCCC111110. */
+{ "asrsr", 0x2E0C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* asrsr<.f> 0,b,limm 00101bbb00001100FBBB111110111110. */
+{ "asrsr", 0x280C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* asrsr<.f><.cc> b,b,limm 00101bbb11001100FBBB1111100QQQQQ. */
+{ "asrsr", 0x28CC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* asrsr<.f><.cc> 0,limm,c 0010111011001100F111CCCCCC0QQQQQ. */
+{ "asrsr", 0x2ECC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* asrsr<.f> a,limm,u6 0010111001001100F111uuuuuuAAAAAA. */
+{ "asrsr", 0x2E4C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrsr<.f> 0,limm,u6 0010111001001100F111uuuuuu111110. */
+{ "asrsr", 0x2E4C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* asrsr<.f><.cc> 0,limm,u6 0010111011001100F111uuuuuu1QQQQQ. */
+{ "asrsr", 0x2ECC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* asrsr<.f> 0,limm,s12 0010111010001100F111ssssssSSSSSS. */
+{ "asrsr", 0x2E8C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* asrsr<.f> a,limm,limm 0010111000001100F111111110AAAAAA. */
+{ "asrsr", 0x2E0C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* asrsr<.f> 0,limm,limm 0010111000001100F111111110111110. */
+{ "asrsr", 0x2E0C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* asrsr<.f><.cc> 0,limm,limm 0010111011001100F1111111100QQQQQ. */
+{ "asrsr", 0x2ECC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* asr_s b,c 01111bbbccc11100. */
+{ "asr_s", 0x0000781C, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RC_S }, { 0 }},
+
+/* asr_s b,b,c 01111bbbccc11010. */
+{ "asr_s", 0x0000781A, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* asr_s c,b,u3 01101bbbccc11uuu. */
+{ "asr_s", 0x00006818, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RC_S, RB_S, UIMM3_13_S }, { 0 }},
+
+/* asr_s b,b,u5 10111bbb010uuuuu. */
+{ "asr_s", 0x0000B840, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* atld<.op><.aq> RB,RC 00100bbb00101111FBBBcccccc110OOO. */
+{ "atld", 0x202F0030, 0xF8FF0038, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_ATOP, C_AQ }},
+
+/* atldl_add<.aq> RB,RC 01011bbb00101111FBBBcccccc110000. */
+{ "atldl", 0x582F0030, 0xF8FF0038, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_ATOP, C_AQ }},
+
+/* b<.d> s25 00000ssssssssss1SSSSSSSSSSNRtttt. */
+{ "b", 0x00010000, 0xF8010000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM25_A16_5 }, { C_D }},
+
+/* b<.d><cc> s21 00000ssssssssss0SSSSSSSSSSNQQQQQ. */
+{ "b", 0x00000000, 0xF8010000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM21_A16_5 }, { C_CC, C_D }},
+
+/* bbit0<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN00110. */
+{ "bbit0", 0x08010006, 0xF801001F, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* bbit0<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10110. */
+{ "bbit0", 0x08010016, 0xF801001F, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* bbit0 b,limm,s9 00001bbbsssssss1SBBB111110000110. */
+{ "bbit0", 0x08010F86, 0xF8010FFF, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0 limm,c,s9 00001110sssssss1S111CCCCCC000110. */
+{ "bbit0", 0x0E017006, 0xFF01703F, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0 limm,u6,s9 00001110sssssss1S111uuuuuu010110. */
+{ "bbit0", 0x0E017016, 0xFF01703F, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0 limm,limm,s9 00001110sssssss1S111111110000110. */
+{ "bbit0", 0x0E017F86, 0xFF017FFF, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0l<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01110. */
+{ "bbit0l", 0x0801000E, 0xF801001F, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* bbit0l<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11110. */
+{ "bbit0l", 0x0801001E, 0xF801001F, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* bbit0l b,limm,s9 00001bbbsssssss1SBBB111110001110. */
+{ "bbit0l", 0x08010F8E, 0xF8010FFF, ARC_OPCODE_ARC64, BBIT0, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0l limm,c,s9 00001110sssssss1S111CCCCCC001110. */
+{ "bbit0l", 0x0E01700E, 0xFF01703F, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0l limm,u6,s9 00001110sssssss1S111uuuuuu011110. */
+{ "bbit0l", 0x0E01701E, 0xFF01703F, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* bbit0l limm,limm,s9 00001110sssssss1S111111110001110. */
+{ "bbit0l", 0x0E017F8E, 0xFF017FFF, ARC_OPCODE_ARC64, BBIT0, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN00111. */
+{ "bbit1", 0x08010007, 0xF801001F, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* bbit1<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10111. */
+{ "bbit1", 0x08010017, 0xF801001F, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* bbit1 b,limm,s9 00001bbbsssssss1SBBB111110000111. */
+{ "bbit1", 0x08010F87, 0xF8010FFF, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1 limm,c,s9 00001110sssssss1S111CCCCCC000111. */
+{ "bbit1", 0x0E017007, 0xFF01703F, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1 limm,u6,s9 00001110sssssss1S111uuuuuu010111. */
+{ "bbit1", 0x0E017017, 0xFF01703F, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1 limm,limm,s9 00001110sssssss1S111111110000111. */
+{ "bbit1", 0x0E017F87, 0xFF017FFF, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1l<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01111. */
+{ "bbit1l", 0x0801000F, 0xF801001F, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* bbit1l<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11111. */
+{ "bbit1l", 0x0801001F, 0xF801001F, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* bbit1l b,limm,s9 00001bbbsssssss1SBBB111110001111. */
+{ "bbit1l", 0x08010F8F, 0xF8010FFF, ARC_OPCODE_ARC64, BBIT1, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1l limm,c,s9 00001110sssssss1S111CCCCCC001111. */
+{ "bbit1l", 0x0E01700F, 0xFF01703F, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1l limm,u6,s9 00001110sssssss1S111uuuuuu011111. */
+{ "bbit1l", 0x0E01701F, 0xFF01703F, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* bbit1l limm,limm,s9 00001110sssssss1S111111110001111. */
+{ "bbit1l", 0x0E017F8F, 0xFF017FFF, ARC_OPCODE_ARC64, BBIT1, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { 0 }},
+
+/* bclr<.f> a,b,c 00100bbb00010000FBBBCCCCCCAAAAAA. */
+{ "bclr", 0x20100000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* bclr<.f> 0,b,c 00100bbb00010000FBBBCCCCCC111110. */
+{ "bclr", 0x2010003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bclr<.f><.cc> b,b,c 00100bbb11010000FBBBCCCCCC0QQQQQ. */
+{ "bclr", 0x20D00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bclr<.f> a,b,u6 00100bbb01010000FBBBuuuuuuAAAAAA. */
+{ "bclr", 0x20500000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bclr<.f> 0,b,u6 00100bbb01010000FBBBuuuuuu111110. */
+{ "bclr", 0x2050003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bclr<.f><.cc> b,b,u6 00100bbb11010000FBBBuuuuuu1QQQQQ. */
+{ "bclr", 0x20D00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bclr<.f> b,b,s12 00100bbb10010000FBBBssssssSSSSSS. */
+{ "bclr", 0x20900000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bclr<.f> a,limm,c 0010011000010000F111CCCCCCAAAAAA. */
+{ "bclr", 0x26107000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bclr<.f> a,b,limm 00100bbb00010000FBBB111110AAAAAA. */
+{ "bclr", 0x20100F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bclr<.f> 0,limm,c 0010011000010000F111CCCCCC111110. */
+{ "bclr", 0x2610703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bclr<.f> 0,b,limm 00100bbb00010000FBBB111110111110. */
+{ "bclr", 0x20100FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bclr<.f><.cc> b,b,limm 00100bbb11010000FBBB1111100QQQQQ. */
+{ "bclr", 0x20D00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bclr<.f><.cc> 0,limm,c 0010011011010000F111CCCCCC0QQQQQ. */
+{ "bclr", 0x26D07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bclr<.f> a,limm,u6 0010011001010000F111uuuuuuAAAAAA. */
+{ "bclr", 0x26507000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bclr<.f> 0,limm,u6 0010011001010000F111uuuuuu111110. */
+{ "bclr", 0x2650703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bclr<.f><.cc> 0,limm,u6 0010011011010000F111uuuuuu1QQQQQ. */
+{ "bclr", 0x26D07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bclr<.f> 0,limm,s12 0010011010010000F111ssssssSSSSSS. */
+{ "bclr", 0x26907000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bclr<.f> a,limm,limm 0010011000010000F111111110AAAAAA. */
+{ "bclr", 0x26107F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bclr<.f> 0,limm,limm 0010011000010000F111111110111110. */
+{ "bclr", 0x26107FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bclr<.f><.cc> 0,limm,limm 0010011011010000F1111111100QQQQQ. */
+{ "bclr", 0x26D07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,RB,RC 01011bbb00010000FBBBccccccaaaaaa. */
+{ "bclrl", 0x58100000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bclrl<.f> 0,RB,RC 01011bbb00010000FBBBcccccc111110. */
+{ "bclrl", 0x5810003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bclrl<.f><.cc> RB,RB,RC 01011bbb11010000FBBBcccccc0QQQQQ. */
+{ "bclrl", 0x58D00000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,RB,u6 01011bbb01010000FBBBuuuuuuaaaaaa. */
+{ "bclrl", 0x58500000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f> 0,RB,u6 01011bbb01010000FBBBuuuuuu111110. */
+{ "bclrl", 0x5850003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f><.cc> RB,RB,u6 01011bbb11010000FBBBuuuuuu1QQQQQ. */
+{ "bclrl", 0x58D00020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bclrl<.f> RB,RB,s12 01011bbb10010000FBBBssssssSSSSSS. */
+{ "bclrl", 0x58900000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bclrl<.f> RA,ximm,RC 0101110000010000F111ccccccaaaaaa. */
+{ "bclrl", 0x5C107000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bclrl<.f> RA,RB,ximm 01011bbb00010000FBBB111100aaaaaa. */
+{ "bclrl", 0x58100F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bclrl<.f> 0,ximm,RC 0101110000010000F111cccccc111110. */
+{ "bclrl", 0x5C10703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bclrl<.f> 0,RB,ximm 01011bbb00010000FBBB111100111110. */
+{ "bclrl", 0x58100F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bclrl<.f><.cc> 0,ximm,RC 0101110011010000F111cccccc0QQQQQ. */
+{ "bclrl", 0x5CD07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bclrl<.f><.cc> RB,RB,ximm 01011bbb11010000FBBB1111000QQQQQ. */
+{ "bclrl", 0x58D00F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,ximm,u6 0101110001010000F111uuuuuuaaaaaa. */
+{ "bclrl", 0x5C507000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f> 0,ximm,u6 0101110001010000F111uuuuuu111110. */
+{ "bclrl", 0x5C50703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f><.cc> 0,ximm,u6 0101110011010000F111uuuuuu1QQQQQ. */
+{ "bclrl", 0x5CD07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,limm,RC 0101111000010000F111ccccccaaaaaa. */
+{ "bclrl", 0x5E107000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bclrl<.f> RA,RB,limm 01011bbb00010000FBBB111110aaaaaa. */
+{ "bclrl", 0x58100F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bclrl<.f> 0,limm,RC 0101111000010000F111cccccc111110. */
+{ "bclrl", 0x5E10703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bclrl<.f> 0,RB,limm 01011bbb00010000FBBB111110111110. */
+{ "bclrl", 0x58100FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bclrl<.f><.cc> 0,limm,RC 0101111011010000F111cccccc0QQQQQ. */
+{ "bclrl", 0x5ED07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bclrl<.f><.cc> RB,RB,limm 01011bbb11010000FBBB1111100QQQQQ. */
+{ "bclrl", 0x58D00F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,limm,u6 0101111001010000F111uuuuuuaaaaaa. */
+{ "bclrl", 0x5E507000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f> 0,limm,u6 0101111001010000F111uuuuuu111110. */
+{ "bclrl", 0x5E50703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bclrl<.f><.cc> 0,limm,u6 0101111011010000F111uuuuuu1QQQQQ. */
+{ "bclrl", 0x5ED07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bclrl<.f> 0,ximm,s12 0101110010010000F111ssssssSSSSSS. */
+{ "bclrl", 0x5C907000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bclrl<.f> 0,limm,s12 0101111010010000F111ssssssSSSSSS. */
+{ "bclrl", 0x5E907000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bclrl<.f> RA,ximm,ximm 0101110000010000F111111100aaaaaa. */
+{ "bclrl", 0x5C107F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bclrl<.f> 0,ximm,ximm 0101110000010000F111111100111110. */
+{ "bclrl", 0x5C107F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bclrl<.f><.cc> 0,ximm,ximm 0101110011010000F1111111000QQQQQ. */
+{ "bclrl", 0x5CD07F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bclrl<.f> RA,limm,limm 0101111000010000F111111110aaaaaa. */
+{ "bclrl", 0x5E107F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bclrl<.f> 0,limm,limm 0101111000010000F111111110111110. */
+{ "bclrl", 0x5E107FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bclrl<.f><.cc> 0,limm,limm 0101111011010000F1111111100QQQQQ. */
+{ "bclrl", 0x5ED07F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bclr_s b,b,u5 10111bbb101uuuuu. */
+{ "bclr_s", 0x0000B8A0, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* beq_sCC_EQ s10 1111001sssssssss. */
+{ "beq_s", 0x0000F200, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM10_A16_7_S }, { C_CC_EQ }},
+
+/* bge_sCC_GE s7 1111011001ssssss. */
+{ "bge_s", 0x0000F640, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_GE }},
+
+/* bgt_sCC_GT s7 1111011000ssssss. */
+{ "bgt_s", 0x0000F600, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_GT }},
+
+/* bhi_sCC_HI s7 1111011100ssssss. */
+{ "bhi_s", 0x0000F700, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_HI }},
+
+/* bhs_sCC_HS s7 1111011101ssssss. */
+{ "bhs_s", 0x0000F740, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_HS }},
+
+/* bi c 00100RRR001001000RRRCCCCCCRRRRRR. */
+{ "bi", 0x20240000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BI, CD1, { BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* bi limm 00100RRR001001000RRR111110RRRRRR. */
+{ "bi", 0x20240F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BI, CD1, { BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* bic<.f> a,b,c 00100bbb00000110FBBBCCCCCCAAAAAA. */
+{ "bic", 0x20060000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bic<.f> 0,b,c 00100bbb00000110FBBBCCCCCC111110. */
+{ "bic", 0x2006003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bic<.f><.cc> b,b,c 00100bbb11000110FBBBCCCCCC0QQQQQ. */
+{ "bic", 0x20C60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bic<.f> a,b,u6 00100bbb01000110FBBBuuuuuuAAAAAA. */
+{ "bic", 0x20460000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bic<.f> 0,b,u6 00100bbb01000110FBBBuuuuuu111110. */
+{ "bic", 0x2046003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bic<.f><.cc> b,b,u6 00100bbb11000110FBBBuuuuuu1QQQQQ. */
+{ "bic", 0x20C60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bic<.f> b,b,s12 00100bbb10000110FBBBssssssSSSSSS. */
+{ "bic", 0x20860000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bic<.f> a,limm,c 0010011000000110F111CCCCCCAAAAAA. */
+{ "bic", 0x26067000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bic<.f> a,b,limm 00100bbb00000110FBBB111110AAAAAA. */
+{ "bic", 0x20060F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bic<.f> 0,limm,c 0010011000000110F111CCCCCC111110. */
+{ "bic", 0x2606703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bic<.f> 0,b,limm 00100bbb00000110FBBB111110111110. */
+{ "bic", 0x20060FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bic<.f><.cc> b,b,limm 00100bbb11000110FBBB1111100QQQQQ. */
+{ "bic", 0x20C60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bic<.f><.cc> 0,limm,c 0010011011000110F111CCCCCC0QQQQQ. */
+{ "bic", 0x26C67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bic<.f> a,limm,u6 0010011001000110F111uuuuuuAAAAAA. */
+{ "bic", 0x26467000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bic<.f> 0,limm,u6 0010011001000110F111uuuuuu111110. */
+{ "bic", 0x2646703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bic<.f><.cc> 0,limm,u6 0010011011000110F111uuuuuu1QQQQQ. */
+{ "bic", 0x26C67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bic<.f> 0,limm,s12 0010011010000110F111ssssssSSSSSS. */
+{ "bic", 0x26867000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bic<.f> a,limm,limm 0010011000000110F111111110AAAAAA. */
+{ "bic", 0x26067F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bic<.f> 0,limm,limm 0010011000000110F111111110111110. */
+{ "bic", 0x26067FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bic<.f><.cc> 0,limm,limm 0010011011000110F1111111100QQQQQ. */
+{ "bic", 0x26C67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bicl<.f> RA,RB,RC 01011bbb00000110FBBBccccccaaaaaa. */
+{ "bicl", 0x58060000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bicl<.f> 0,RB,RC 01011bbb00000110FBBBcccccc111110. */
+{ "bicl", 0x5806003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bicl<.f><.cc> RB,RB,RC 01011bbb11000110FBBBcccccc0QQQQQ. */
+{ "bicl", 0x58C60000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bicl<.f> RA,RB,u6 01011bbb01000110FBBBuuuuuuaaaaaa. */
+{ "bicl", 0x58460000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bicl<.f> 0,RB,u6 01011bbb01000110FBBBuuuuuu111110. */
+{ "bicl", 0x5846003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bicl<.f><.cc> RB,RB,u6 01011bbb11000110FBBBuuuuuu1QQQQQ. */
+{ "bicl", 0x58C60020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bicl<.f> RB,RB,s12 01011bbb10000110FBBBssssssSSSSSS. */
+{ "bicl", 0x58860000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bicl<.f> RA,ximm,RC 0101110000000110F111ccccccaaaaaa. */
+{ "bicl", 0x5C067000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bicl<.f> RA,RB,ximm 01011bbb00000110FBBB111100aaaaaa. */
+{ "bicl", 0x58060F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bicl<.f> 0,ximm,RC 0101110000000110F111cccccc111110. */
+{ "bicl", 0x5C06703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bicl<.f> 0,RB,ximm 01011bbb00000110FBBB111100111110. */
+{ "bicl", 0x58060F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bicl<.f><.cc> 0,ximm,RC 0101110011000110F111cccccc0QQQQQ. */
+{ "bicl", 0x5CC67000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bicl<.f><.cc> RB,RB,ximm 01011bbb11000110FBBB1111000QQQQQ. */
+{ "bicl", 0x58C60F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bicl<.f> RA,ximm,u6 0101110001000110F111uuuuuuaaaaaa. */
+{ "bicl", 0x5C467000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bicl<.f> 0,ximm,u6 0101110001000110F111uuuuuu111110. */
+{ "bicl", 0x5C46703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bicl<.f><.cc> 0,ximm,u6 0101110011000110F111uuuuuu1QQQQQ. */
+{ "bicl", 0x5CC67020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bicl<.f> RA,limm,RC 0101111000000110F111ccccccaaaaaa. */
+{ "bicl", 0x5E067000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bicl<.f> RA,RB,limm 01011bbb00000110FBBB111110aaaaaa. */
+{ "bicl", 0x58060F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bicl<.f> 0,limm,RC 0101111000000110F111cccccc111110. */
+{ "bicl", 0x5E06703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bicl<.f> 0,RB,limm 01011bbb00000110FBBB111110111110. */
+{ "bicl", 0x58060FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bicl<.f><.cc> 0,limm,RC 0101111011000110F111cccccc0QQQQQ. */
+{ "bicl", 0x5EC67000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bicl<.f><.cc> RB,RB,limm 01011bbb11000110FBBB1111100QQQQQ. */
+{ "bicl", 0x58C60F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bicl<.f> RA,limm,u6 0101111001000110F111uuuuuuaaaaaa. */
+{ "bicl", 0x5E467000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bicl<.f> 0,limm,u6 0101111001000110F111uuuuuu111110. */
+{ "bicl", 0x5E46703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bicl<.f><.cc> 0,limm,u6 0101111011000110F111uuuuuu1QQQQQ. */
+{ "bicl", 0x5EC67020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bicl<.f> 0,ximm,s12 0101110010000110F111ssssssSSSSSS. */
+{ "bicl", 0x5C867000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bicl<.f> 0,limm,s12 0101111010000110F111ssssssSSSSSS. */
+{ "bicl", 0x5E867000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bicl<.f> RA,ximm,ximm 0101110000000110F111111100aaaaaa. */
+{ "bicl", 0x5C067F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bicl<.f> 0,ximm,ximm 0101110000000110F111111100111110. */
+{ "bicl", 0x5C067F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bicl<.f><.cc> 0,ximm,ximm 0101110011000110F1111111000QQQQQ. */
+{ "bicl", 0x5CC67F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bicl<.f> RA,limm,limm 0101111000000110F111111110aaaaaa. */
+{ "bicl", 0x5E067F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bicl<.f> 0,limm,limm 0101111000000110F111111110111110. */
+{ "bicl", 0x5E067FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bicl<.f><.cc> 0,limm,limm 0101111011000110F1111111100QQQQQ. */
+{ "bicl", 0x5EC67F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bic_s b,b,c 01111bbbccc00110. */
+{ "bic_s", 0x00007806, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* bih c 00100RRR001001010RRRCCCCCCRRRRRR. */
+{ "bih", 0x20250000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BIH, CD1, { BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* bih limm 00100RRR001001010RRR111110RRRRRR. */
+{ "bih", 0x20250F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BIH, CD1, { BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* bl<.d> s25 00001sssssssss10SSSSSSSSSSNRtttt. */
+{ "bl", 0x08020000, 0xF8030000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM25_A32_5 }, { C_D }},
+
+/* bl<.d><.cc> s21 00001sssssssss00SSSSSSSSSSNQQQQQ. */
+{ "bl", 0x08000000, 0xF8030000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM21_A32_5 }, { C_CC, C_D }},
+
+/* ble_sCC_LE s7 1111011011ssssss. */
+{ "ble_s", 0x0000F6C0, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_LE }},
+
+/* blo_sCC_LO s7 1111011110ssssss. */
+{ "blo_s", 0x0000F780, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_LO }},
+
+/* bls_sCC_LS s7 1111011111ssssss. */
+{ "bls_s", 0x0000F7C0, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_LS }},
+
+/* blt_sCC_LT s7 1111011010ssssss. */
+{ "blt_s", 0x0000F680, 0x0000FFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM7_A16_10_S }, { C_CC_LT }},
+
+/* bl_s s13 11111sssssssssss. */
+{ "bl_s", 0x0000F800, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM13_A32_5_S }, { 0 }},
+
+/* bmsk<.f> a,b,c 00100bbb00010011FBBBCCCCCCAAAAAA. */
+{ "bmsk", 0x20130000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* bmsk<.f> 0,b,c 00100bbb00010011FBBBCCCCCC111110. */
+{ "bmsk", 0x2013003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bmsk<.f><.cc> b,b,c 00100bbb11010011FBBBCCCCCC0QQQQQ. */
+{ "bmsk", 0x20D30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bmsk<.f> a,b,u6 00100bbb01010011FBBBuuuuuuAAAAAA. */
+{ "bmsk", 0x20530000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bmsk<.f> 0,b,u6 00100bbb01010011FBBBuuuuuu111110. */
+{ "bmsk", 0x2053003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bmsk<.f><.cc> b,b,u6 00100bbb11010011FBBBuuuuuu1QQQQQ. */
+{ "bmsk", 0x20D30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmsk<.f> b,b,s12 00100bbb10010011FBBBssssssSSSSSS. */
+{ "bmsk", 0x20930000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bmsk<.f> a,limm,c 0010011000010011F111CCCCCCAAAAAA. */
+{ "bmsk", 0x26137000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bmsk<.f> a,b,limm 00100bbb00010011FBBB111110AAAAAA. */
+{ "bmsk", 0x20130F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bmsk<.f> 0,limm,c 0010011000010011F111CCCCCC111110. */
+{ "bmsk", 0x2613703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bmsk<.f> 0,b,limm 00100bbb00010011FBBB111110111110. */
+{ "bmsk", 0x20130FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bmsk<.f><.cc> b,b,limm 00100bbb11010011FBBB1111100QQQQQ. */
+{ "bmsk", 0x20D30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bmsk<.f><.cc> 0,limm,c 0010011011010011F111CCCCCC0QQQQQ. */
+{ "bmsk", 0x26D37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bmsk<.f> a,limm,u6 0010011001010011F111uuuuuuAAAAAA. */
+{ "bmsk", 0x26537000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmsk<.f> 0,limm,u6 0010011001010011F111uuuuuu111110. */
+{ "bmsk", 0x2653703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmsk<.f><.cc> 0,limm,u6 0010011011010011F111uuuuuu1QQQQQ. */
+{ "bmsk", 0x26D37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmsk<.f> 0,limm,s12 0010011010010011F111ssssssSSSSSS. */
+{ "bmsk", 0x26937000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bmsk<.f> a,limm,limm 0010011000010011F111111110AAAAAA. */
+{ "bmsk", 0x26137F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bmsk<.f> 0,limm,limm 0010011000010011F111111110111110. */
+{ "bmsk", 0x26137FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bmsk<.f><.cc> 0,limm,limm 0010011011010011F1111111100QQQQQ. */
+{ "bmsk", 0x26D37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,RB,RC 01011bbb00010011FBBBccccccaaaaaa. */
+{ "bmskl", 0x58130000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bmskl<.f> 0,RB,RC 01011bbb00010011FBBBcccccc111110. */
+{ "bmskl", 0x5813003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bmskl<.f><.cc> RB,RB,RC 01011bbb11010011FBBBcccccc0QQQQQ. */
+{ "bmskl", 0x58D30000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,RB,u6 01011bbb01010011FBBBuuuuuuaaaaaa. */
+{ "bmskl", 0x58530000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f> 0,RB,u6 01011bbb01010011FBBBuuuuuu111110. */
+{ "bmskl", 0x5853003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f><.cc> RB,RB,u6 01011bbb11010011FBBBuuuuuu1QQQQQ. */
+{ "bmskl", 0x58D30020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmskl<.f> RB,RB,s12 01011bbb10010011FBBBssssssSSSSSS. */
+{ "bmskl", 0x58930000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bmskl<.f> RA,ximm,RC 0101110000010011F111ccccccaaaaaa. */
+{ "bmskl", 0x5C137000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bmskl<.f> RA,RB,ximm 01011bbb00010011FBBB111100aaaaaa. */
+{ "bmskl", 0x58130F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bmskl<.f> 0,ximm,RC 0101110000010011F111cccccc111110. */
+{ "bmskl", 0x5C13703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bmskl<.f> 0,RB,ximm 01011bbb00010011FBBB111100111110. */
+{ "bmskl", 0x58130F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bmskl<.f><.cc> 0,ximm,RC 0101110011010011F111cccccc0QQQQQ. */
+{ "bmskl", 0x5CD37000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bmskl<.f><.cc> RB,RB,ximm 01011bbb11010011FBBB1111000QQQQQ. */
+{ "bmskl", 0x58D30F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,ximm,u6 0101110001010011F111uuuuuuaaaaaa. */
+{ "bmskl", 0x5C537000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f> 0,ximm,u6 0101110001010011F111uuuuuu111110. */
+{ "bmskl", 0x5C53703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f><.cc> 0,ximm,u6 0101110011010011F111uuuuuu1QQQQQ. */
+{ "bmskl", 0x5CD37020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,limm,RC 0101111000010011F111ccccccaaaaaa. */
+{ "bmskl", 0x5E137000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bmskl<.f> RA,RB,limm 01011bbb00010011FBBB111110aaaaaa. */
+{ "bmskl", 0x58130F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bmskl<.f> 0,limm,RC 0101111000010011F111cccccc111110. */
+{ "bmskl", 0x5E13703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bmskl<.f> 0,RB,limm 01011bbb00010011FBBB111110111110. */
+{ "bmskl", 0x58130FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bmskl<.f><.cc> 0,limm,RC 0101111011010011F111cccccc0QQQQQ. */
+{ "bmskl", 0x5ED37000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bmskl<.f><.cc> RB,RB,limm 01011bbb11010011FBBB1111100QQQQQ. */
+{ "bmskl", 0x58D30F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,limm,u6 0101111001010011F111uuuuuuaaaaaa. */
+{ "bmskl", 0x5E537000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f> 0,limm,u6 0101111001010011F111uuuuuu111110. */
+{ "bmskl", 0x5E53703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmskl<.f><.cc> 0,limm,u6 0101111011010011F111uuuuuu1QQQQQ. */
+{ "bmskl", 0x5ED37020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmskl<.f> 0,ximm,s12 0101110010010011F111ssssssSSSSSS. */
+{ "bmskl", 0x5C937000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bmskl<.f> 0,limm,s12 0101111010010011F111ssssssSSSSSS. */
+{ "bmskl", 0x5E937000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bmskl<.f> RA,ximm,ximm 0101110000010011F111111100aaaaaa. */
+{ "bmskl", 0x5C137F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bmskl<.f> 0,ximm,ximm 0101110000010011F111111100111110. */
+{ "bmskl", 0x5C137F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bmskl<.f><.cc> 0,ximm,ximm 0101110011010011F1111111000QQQQQ. */
+{ "bmskl", 0x5CD37F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bmskl<.f> RA,limm,limm 0101111000010011F111111110aaaaaa. */
+{ "bmskl", 0x5E137F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bmskl<.f> 0,limm,limm 0101111000010011F111111110111110. */
+{ "bmskl", 0x5E137FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bmskl<.f><.cc> 0,limm,limm 0101111011010011F1111111100QQQQQ. */
+{ "bmskl", 0x5ED37F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bmskn<.f> a,b,c 00100bbb00101100FBBBCCCCCCAAAAAA. */
+{ "bmskn", 0x202C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* bmskn<.f> 0,b,c 00100bbb00101100FBBBCCCCCC111110. */
+{ "bmskn", 0x202C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bmskn<.f><.cc> b,b,c 00100bbb11101100FBBBCCCCCC0QQQQQ. */
+{ "bmskn", 0x20EC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bmskn<.f> a,b,u6 00100bbb01101100FBBBuuuuuuAAAAAA. */
+{ "bmskn", 0x206C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bmskn<.f> 0,b,u6 00100bbb01101100FBBBuuuuuu111110. */
+{ "bmskn", 0x206C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bmskn<.f><.cc> b,b,u6 00100bbb11101100FBBBuuuuuu1QQQQQ. */
+{ "bmskn", 0x20EC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmskn<.f> b,b,s12 00100bbb10101100FBBBssssssSSSSSS. */
+{ "bmskn", 0x20AC0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bmskn<.f> a,limm,c 0010011000101100F111CCCCCCAAAAAA. */
+{ "bmskn", 0x262C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bmskn<.f> a,b,limm 00100bbb00101100FBBB111110AAAAAA. */
+{ "bmskn", 0x202C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bmskn<.f> 0,limm,c 0010011000101100F111CCCCCC111110. */
+{ "bmskn", 0x262C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bmskn<.f> 0,b,limm 00100bbb00101100FBBB111110111110. */
+{ "bmskn", 0x202C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bmskn<.f><.cc> b,b,limm 00100bbb11101100FBBB1111100QQQQQ. */
+{ "bmskn", 0x20EC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bmskn<.f><.cc> 0,limm,c 0010011011101100F111CCCCCC0QQQQQ. */
+{ "bmskn", 0x26EC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bmskn<.f> a,limm,u6 0010011001101100F111uuuuuuAAAAAA. */
+{ "bmskn", 0x266C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmskn<.f> 0,limm,u6 0010011001101100F111uuuuuu111110. */
+{ "bmskn", 0x266C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmskn<.f><.cc> 0,limm,u6 0010011011101100F111uuuuuu1QQQQQ. */
+{ "bmskn", 0x26EC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmskn<.f> 0,limm,s12 0010011010101100F111ssssssSSSSSS. */
+{ "bmskn", 0x26AC7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bmskn<.f> a,limm,limm 0010011000101100F111111110AAAAAA. */
+{ "bmskn", 0x262C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bmskn<.f> 0,limm,limm 0010011000101100F111111110111110. */
+{ "bmskn", 0x262C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bmskn<.f><.cc> 0,limm,limm 0010011011101100F1111111100QQQQQ. */
+{ "bmskn", 0x26EC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,RB,RC 01011bbb00101100FBBBccccccaaaaaa. */
+{ "bmsknl", 0x582C0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bmsknl<.f> 0,RB,RC 01011bbb00101100FBBBcccccc111110. */
+{ "bmsknl", 0x582C003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bmsknl<.f><.cc> RB,RB,RC 01011bbb11101100FBBBcccccc0QQQQQ. */
+{ "bmsknl", 0x58EC0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,RB,u6 01011bbb01101100FBBBuuuuuuaaaaaa. */
+{ "bmsknl", 0x586C0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f> 0,RB,u6 01011bbb01101100FBBBuuuuuu111110. */
+{ "bmsknl", 0x586C003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f><.cc> RB,RB,u6 01011bbb11101100FBBBuuuuuu1QQQQQ. */
+{ "bmsknl", 0x58EC0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmsknl<.f> RB,RB,s12 01011bbb10101100FBBBssssssSSSSSS. */
+{ "bmsknl", 0x58AC0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bmsknl<.f> RA,ximm,RC 0101110000101100F111ccccccaaaaaa. */
+{ "bmsknl", 0x5C2C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bmsknl<.f> RA,RB,ximm 01011bbb00101100FBBB111100aaaaaa. */
+{ "bmsknl", 0x582C0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bmsknl<.f> 0,ximm,RC 0101110000101100F111cccccc111110. */
+{ "bmsknl", 0x5C2C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bmsknl<.f> 0,RB,ximm 01011bbb00101100FBBB111100111110. */
+{ "bmsknl", 0x582C0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,ximm,RC 0101110011101100F111cccccc0QQQQQ. */
+{ "bmsknl", 0x5CEC7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bmsknl<.f><.cc> RB,RB,ximm 01011bbb11101100FBBB1111000QQQQQ. */
+{ "bmsknl", 0x58EC0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,ximm,u6 0101110001101100F111uuuuuuaaaaaa. */
+{ "bmsknl", 0x5C6C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f> 0,ximm,u6 0101110001101100F111uuuuuu111110. */
+{ "bmsknl", 0x5C6C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,ximm,u6 0101110011101100F111uuuuuu1QQQQQ. */
+{ "bmsknl", 0x5CEC7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,limm,RC 0101111000101100F111ccccccaaaaaa. */
+{ "bmsknl", 0x5E2C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bmsknl<.f> RA,RB,limm 01011bbb00101100FBBB111110aaaaaa. */
+{ "bmsknl", 0x582C0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bmsknl<.f> 0,limm,RC 0101111000101100F111cccccc111110. */
+{ "bmsknl", 0x5E2C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bmsknl<.f> 0,RB,limm 01011bbb00101100FBBB111110111110. */
+{ "bmsknl", 0x582C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,limm,RC 0101111011101100F111cccccc0QQQQQ. */
+{ "bmsknl", 0x5EEC7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bmsknl<.f><.cc> RB,RB,limm 01011bbb11101100FBBB1111100QQQQQ. */
+{ "bmsknl", 0x58EC0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,limm,u6 0101111001101100F111uuuuuuaaaaaa. */
+{ "bmsknl", 0x5E6C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f> 0,limm,u6 0101111001101100F111uuuuuu111110. */
+{ "bmsknl", 0x5E6C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,limm,u6 0101111011101100F111uuuuuu1QQQQQ. */
+{ "bmsknl", 0x5EEC7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bmsknl<.f> 0,ximm,s12 0101110010101100F111ssssssSSSSSS. */
+{ "bmsknl", 0x5CAC7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bmsknl<.f> 0,limm,s12 0101111010101100F111ssssssSSSSSS. */
+{ "bmsknl", 0x5EAC7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bmsknl<.f> RA,ximm,ximm 0101110000101100F111111100aaaaaa. */
+{ "bmsknl", 0x5C2C7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bmsknl<.f> 0,ximm,ximm 0101110000101100F111111100111110. */
+{ "bmsknl", 0x5C2C7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,ximm,ximm 0101110011101100F1111111000QQQQQ. */
+{ "bmsknl", 0x5CEC7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bmsknl<.f> RA,limm,limm 0101111000101100F111111110aaaaaa. */
+{ "bmsknl", 0x5E2C7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bmsknl<.f> 0,limm,limm 0101111000101100F111111110111110. */
+{ "bmsknl", 0x5E2C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bmsknl<.f><.cc> 0,limm,limm 0101111011101100F1111111100QQQQQ. */
+{ "bmsknl", 0x5EEC7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bmsk_s b,b,u5 10111bbb110uuuuu. */
+{ "bmsk_s", 0x0000B8C0, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* bne_sCC_NE s10 1111010sssssssss. */
+{ "bne_s", 0x0000F400, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, COND, { SIMM10_A16_7_S }, { C_CC_NE }},
+
+/* breq<.d>CC_EQ b,c,s9 00001bbbsssssss1SBBBCCCCCCN00000. */
+{ "breq", 0x08010000, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_EQ }},
+
+/* breq<.d>CC_EQ b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10000. */
+{ "breq", 0x08010010, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_EQ }},
+
+/* breqCC_EQ b,limm,s9 00001bbbsssssss1SBBB111110000000. */
+{ "breq", 0x08010F80, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_EQ }},
+
+/* breqCC_EQ limm,c,s9 00001110sssssss1S111CCCCCC000000. */
+{ "breq", 0x0E017000, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_EQ }},
+
+/* breqCC_EQ limm,u6,s9 00001110sssssss1S111uuuuuu010000. */
+{ "breq", 0x0E017010, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_EQ }},
+
+/* breqCC_EQ limm,limm,s9 00001110sssssss1S111111110000000. */
+{ "breq", 0x0E017F80, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_EQ }},
+
+/* breql<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01000. */
+{ "breql", 0x08010008, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* breql<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11000. */
+{ "breql", 0x08010018, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* breql b,limm,s9 00001bbbsssssss1SBBB111110001000. */
+{ "breql", 0x08010F88, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* breql limm,c,s9 00001110sssssss1S111CCCCCC001000. */
+{ "breql", 0x0E017008, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* breql limm,u6,s9 00001110sssssss1S111uuuuuu011000. */
+{ "breql", 0x0E017018, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* breql_s b,0,s8 11101bbb0sssssss. */
+{ "breql_s", 0x0000E800, 0x0000F880, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, ZB_S, SIMM8_A16_9_S }, { 0 }},
+
+/* brge<.d>CC_GE b,c,s9 00001bbbsssssss1SBBBCCCCCCN00011. */
+{ "brge", 0x08010003, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_GE }},
+
+/* brge<.d>CC_GE b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10011. */
+{ "brge", 0x08010013, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_GE }},
+
+/* brgeCC_GE b,limm,s9 00001bbbsssssss1SBBB111110000011. */
+{ "brge", 0x08010F83, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_GE }},
+
+/* brgeCC_GE limm,c,s9 00001110sssssss1S111CCCCCC000011. */
+{ "brge", 0x0E017003, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_GE }},
+
+/* brgeCC_GE limm,u6,s9 00001110sssssss1S111uuuuuu010011. */
+{ "brge", 0x0E017013, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_GE }},
+
+/* brgeCC_GE limm,limm,s9 00001110sssssss1S111111110000011. */
+{ "brge", 0x0E017F83, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_GE }},
+
+/* brgel<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01011. */
+{ "brgel", 0x0801000B, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* brgel<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11011. */
+{ "brgel", 0x0801001B, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* brgel b,limm,s9 00001bbbsssssss1SBBB111110001011. */
+{ "brgel", 0x08010F8B, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* brgel limm,c,s9 00001110sssssss1S111CCCCCC001011. */
+{ "brgel", 0x0E01700B, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* brgel limm,u6,s9 00001110sssssss1S111uuuuuu011011. */
+{ "brgel", 0x0E01701B, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* brhs<.d>CC_HS b,c,s9 00001bbbsssssss1SBBBCCCCCCN00101. */
+{ "brhs", 0x08010005, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_HS }},
+
+/* brhs<.d>CC_HS b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10101. */
+{ "brhs", 0x08010015, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_HS }},
+
+/* brhsCC_HS b,limm,s9 00001bbbsssssss1SBBB111110000101. */
+{ "brhs", 0x08010F85, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_HS }},
+
+/* brhsCC_HS limm,c,s9 00001110sssssss1S111CCCCCC000101. */
+{ "brhs", 0x0E017005, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_HS }},
+
+/* brhsCC_HS limm,u6,s9 00001110sssssss1S111uuuuuu010101. */
+{ "brhs", 0x0E017015, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_HS }},
+
+/* brhsCC_HS limm,limm,s9 00001110sssssss1S111111110000101. */
+{ "brhs", 0x0E017F85, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_HS }},
+
+/* brhsl<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01101. */
+{ "brhsl", 0x0801000D, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* brhsl<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11101. */
+{ "brhsl", 0x0801001D, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* brhsl b,limm,s9 00001bbbsssssss1SBBB111110001101. */
+{ "brhsl", 0x08010F8D, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* brhsl limm,c,s9 00001110sssssss1S111CCCCCC001101. */
+{ "brhsl", 0x0E01700D, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* brhsl limm,u6,s9 00001110sssssss1S111uuuuuu011101. */
+{ "brhsl", 0x0E01701D, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* brk 00100101011011110000000000111111. */
+{ "brk", 0x256F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* brk_s 0111111111111111. */
+{ "brk_s", 0x00007FFF, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* brlo<.d>CC_LO b,c,s9 00001bbbsssssss1SBBBCCCCCCN00100. */
+{ "brlo", 0x08010004, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_LO }},
+
+/* brlo<.d>CC_LO b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10100. */
+{ "brlo", 0x08010014, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_LO }},
+
+/* brloCC_LO b,limm,s9 00001bbbsssssss1SBBB111110000100. */
+{ "brlo", 0x08010F84, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_LO }},
+
+/* brloCC_LO limm,c,s9 00001110sssssss1S111CCCCCC000100. */
+{ "brlo", 0x0E017004, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_LO }},
+
+/* brloCC_LO limm,u6,s9 00001110sssssss1S111uuuuuu010100. */
+{ "brlo", 0x0E017014, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_LO }},
+
+/* brloCC_LO limm,limm,s9 00001110sssssss1S111111110000100. */
+{ "brlo", 0x0E017F84, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_LO }},
+
+/* brlol<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01100. */
+{ "brlol", 0x0801000C, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* brlol<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11100. */
+{ "brlol", 0x0801001C, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* brlol b,limm,s9 00001bbbsssssss1SBBB111110001100. */
+{ "brlol", 0x08010F8C, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* brlol limm,c,s9 00001110sssssss1S111CCCCCC001100. */
+{ "brlol", 0x0E01700C, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* brlol limm,u6,s9 00001110sssssss1S111uuuuuu011100. */
+{ "brlol", 0x0E01701C, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* brlt<.d>CC_LT b,c,s9 00001bbbsssssss1SBBBCCCCCCN00010. */
+{ "brlt", 0x08010002, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_LT }},
+
+/* brlt<.d>CC_LT b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10010. */
+{ "brlt", 0x08010012, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_LT }},
+
+/* brltCC_LT b,limm,s9 00001bbbsssssss1SBBB111110000010. */
+{ "brlt", 0x08010F82, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_LT }},
+
+/* brltCC_LT limm,c,s9 00001110sssssss1S111CCCCCC000010. */
+{ "brlt", 0x0E017002, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_LT }},
+
+/* brltCC_LT limm,u6,s9 00001110sssssss1S111uuuuuu010010. */
+{ "brlt", 0x0E017012, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_LT }},
+
+/* brltCC_LT limm,limm,s9 00001110sssssss1S111111110000010. */
+{ "brlt", 0x0E017F82, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_LT }},
+
+/* brltl<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01010. */
+{ "brltl", 0x0801000A, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* brltl<.d> b,u6,s9 00001bbbsssssss1SBBBuuuuuuN11010. */
+{ "brltl", 0x0801001A, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* brltl b,limm,s9 00001bbbsssssss1SBBB111110001010. */
+{ "brltl", 0x08010F8A, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* brltl limm,c,s9 00001110sssssss1S111CCCCCC001010. */
+{ "brltl", 0x0E01700A, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* brltl limm,u6,s9 00001110sssssss1S111uuuuuu011010. */
+{ "brltl", 0x0E01701A, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* brne<.d>CC_NE b,c,s9 00001bbbsssssss1SBBBCCCCCCN00001. */
+{ "brne", 0x08010001, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, RC, SIMM9_A16_8 }, { C_D, C_CC_NE }},
+
+/* brne<.d>CC_NE b,u6,s9 00001bbbsssssss1SBBBuuuuuuN10001. */
+{ "brne", 0x08010011, 0xF801001F, ARC_OPCODE_ARC64, BRCC, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D, C_CC_NE }},
+
+/* brneCC_NE b,limm,s9 00001bbbsssssss1SBBB111110000001. */
+{ "brne", 0x08010F81, 0xF8010FFF, ARC_OPCODE_ARC64, BRCC, NONE, { RB, LIMM, SIMM9_A16_8 }, { C_CC_NE }},
+
+/* brneCC_NE limm,c,s9 00001110sssssss1S111CCCCCC000001. */
+{ "brne", 0x0E017001, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, RC, SIMM9_A16_8 }, { C_CC_NE }},
+
+/* brneCC_NE limm,u6,s9 00001110sssssss1S111uuuuuu010001. */
+{ "brne", 0x0E017011, 0xFF01703F, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { C_CC_NE }},
+
+/* brneCC_NE limm,limm,s9 00001110sssssss1S111111110000001. */
+{ "brne", 0x0E017F81, 0xFF017FFF, ARC_OPCODE_ARC64, BRCC, NONE, { LIMM, LIMMdup, SIMM9_A16_8 }, { C_CC_NE }},
+
+/* brnel<.d> b,c,s9 00001bbbsssssss1SBBBCCCCCCN01001. */
+{ "brnel", 0x08010009, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC, SIMM9_A16_8 }, { C_D }},
+
+/* brnel<.d> b,u6,s9 00001bbbsssssss1SBBBUUUUUUN11001. */
+{ "brnel", 0x08010019, 0xF801001F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_8, SIMM9_A16_8 }, { C_D }},
+
+/* brnel b,limm,s9 00001bbbsssssss1SBBB111110001001. */
+{ "brnel", 0x08010F89, 0xF8010FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM, SIMM9_A16_8 }, { 0 }},
+
+/* brnel limm,c,s9 00001110sssssss1S111CCCCCC001001. */
+{ "brnel", 0x0E017009, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC, SIMM9_A16_8 }, { 0 }},
+
+/* brnel limm,u6,s9 00001110sssssss1S111uuuuuu011001. */
+{ "brnel", 0x0E017019, 0xFF01703F, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_8, SIMM9_A16_8 }, { 0 }},
+
+/* brnel_s b,0,s8 11101bbb1sssssss. */
+{ "brnel_s", 0x0000E880, 0x0000F880, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, ZB_S, SIMM8_A16_9_S }, { 0 }},
+
+/* bset<.f> a,b,c 00100bbb00001111FBBBCCCCCCAAAAAA. */
+{ "bset", 0x200F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* bset<.f> 0,b,c 00100bbb00001111FBBBCCCCCC111110. */
+{ "bset", 0x200F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bset<.f><.cc> b,b,c 00100bbb11001111FBBBCCCCCC0QQQQQ. */
+{ "bset", 0x20CF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bset<.f> a,b,u6 00100bbb01001111FBBBuuuuuuAAAAAA. */
+{ "bset", 0x204F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bset<.f> 0,b,u6 00100bbb01001111FBBBuuuuuu111110. */
+{ "bset", 0x204F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bset<.f><.cc> b,b,u6 00100bbb11001111FBBBuuuuuu1QQQQQ. */
+{ "bset", 0x20CF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bset<.f> b,b,s12 00100bbb10001111FBBBssssssSSSSSS. */
+{ "bset", 0x208F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bset<.f> a,limm,c 0010011000001111F111CCCCCCAAAAAA. */
+{ "bset", 0x260F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bset<.f> a,b,limm 00100bbb00001111FBBB111110AAAAAA. */
+{ "bset", 0x200F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bset<.f> 0,limm,c 0010011000001111F111CCCCCC111110. */
+{ "bset", 0x260F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bset<.f> 0,b,limm 00100bbb00001111FBBB111110111110. */
+{ "bset", 0x200F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bset<.f><.cc> b,b,limm 00100bbb11001111FBBB1111100QQQQQ. */
+{ "bset", 0x20CF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bset<.f><.cc> 0,limm,c 0010011011001111F111CCCCCC0QQQQQ. */
+{ "bset", 0x26CF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bset<.f> a,limm,u6 0010011001001111F111uuuuuuAAAAAA. */
+{ "bset", 0x264F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bset<.f> 0,limm,u6 0010011001001111F111uuuuuu111110. */
+{ "bset", 0x264F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bset<.f><.cc> 0,limm,u6 0010011011001111F111uuuuuu1QQQQQ. */
+{ "bset", 0x26CF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bset<.f> 0,limm,s12 0010011010001111F111ssssssSSSSSS. */
+{ "bset", 0x268F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bset<.f> a,limm,limm 0010011000001111F111111110AAAAAA. */
+{ "bset", 0x260F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bset<.f> 0,limm,limm 0010011000001111F111111110111110. */
+{ "bset", 0x260F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bset<.f><.cc> 0,limm,limm 0010011011001111F1111111100QQQQQ. */
+{ "bset", 0x26CF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,RB,RC 01011bbb00001111FBBBccccccaaaaaa. */
+{ "bsetl", 0x580F0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bsetl<.f> 0,RB,RC 01011bbb00001111FBBBcccccc111110. */
+{ "bsetl", 0x580F003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bsetl<.f><.cc> RB,RB,RC 01011bbb11001111FBBBcccccc0QQQQQ. */
+{ "bsetl", 0x58CF0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,RB,u6 01011bbb01001111FBBBuuuuuuaaaaaa. */
+{ "bsetl", 0x584F0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f> 0,RB,u6 01011bbb01001111FBBBuuuuuu111110. */
+{ "bsetl", 0x584F003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f><.cc> RB,RB,u6 01011bbb11001111FBBBuuuuuu1QQQQQ. */
+{ "bsetl", 0x58CF0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bsetl<.f> RB,RB,s12 01011bbb10001111FBBBssssssSSSSSS. */
+{ "bsetl", 0x588F0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bsetl<.f> RA,ximm,RC 0101110000001111F111ccccccaaaaaa. */
+{ "bsetl", 0x5C0F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bsetl<.f> RA,RB,ximm 01011bbb00001111FBBB111100aaaaaa. */
+{ "bsetl", 0x580F0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bsetl<.f> 0,ximm,RC 0101110000001111F111cccccc111110. */
+{ "bsetl", 0x5C0F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bsetl<.f> 0,RB,ximm 01011bbb00001111FBBB111100111110. */
+{ "bsetl", 0x580F0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bsetl<.f><.cc> 0,ximm,RC 0101110011001111F111cccccc0QQQQQ. */
+{ "bsetl", 0x5CCF7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bsetl<.f><.cc> RB,RB,ximm 01011bbb11001111FBBB1111000QQQQQ. */
+{ "bsetl", 0x58CF0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,ximm,u6 0101110001001111F111uuuuuuaaaaaa. */
+{ "bsetl", 0x5C4F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f> 0,ximm,u6 0101110001001111F111uuuuuu111110. */
+{ "bsetl", 0x5C4F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f><.cc> 0,ximm,u6 0101110011001111F111uuuuuu1QQQQQ. */
+{ "bsetl", 0x5CCF7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,limm,RC 0101111000001111F111ccccccaaaaaa. */
+{ "bsetl", 0x5E0F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bsetl<.f> RA,RB,limm 01011bbb00001111FBBB111110aaaaaa. */
+{ "bsetl", 0x580F0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bsetl<.f> 0,limm,RC 0101111000001111F111cccccc111110. */
+{ "bsetl", 0x5E0F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bsetl<.f> 0,RB,limm 01011bbb00001111FBBB111110111110. */
+{ "bsetl", 0x580F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bsetl<.f><.cc> 0,limm,RC 0101111011001111F111cccccc0QQQQQ. */
+{ "bsetl", 0x5ECF7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bsetl<.f><.cc> RB,RB,limm 01011bbb11001111FBBB1111100QQQQQ. */
+{ "bsetl", 0x58CF0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,limm,u6 0101111001001111F111uuuuuuaaaaaa. */
+{ "bsetl", 0x5E4F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f> 0,limm,u6 0101111001001111F111uuuuuu111110. */
+{ "bsetl", 0x5E4F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bsetl<.f><.cc> 0,limm,u6 0101111011001111F111uuuuuu1QQQQQ. */
+{ "bsetl", 0x5ECF7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bsetl<.f> 0,ximm,s12 0101110010001111F111ssssssSSSSSS. */
+{ "bsetl", 0x5C8F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bsetl<.f> 0,limm,s12 0101111010001111F111ssssssSSSSSS. */
+{ "bsetl", 0x5E8F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bsetl<.f> RA,ximm,ximm 0101110000001111F111111100aaaaaa. */
+{ "bsetl", 0x5C0F7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bsetl<.f> 0,ximm,ximm 0101110000001111F111111100111110. */
+{ "bsetl", 0x5C0F7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bsetl<.f><.cc> 0,ximm,ximm 0101110011001111F1111111000QQQQQ. */
+{ "bsetl", 0x5CCF7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bsetl<.f> RA,limm,limm 0101111000001111F111111110aaaaaa. */
+{ "bsetl", 0x5E0F7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bsetl<.f> 0,limm,limm 0101111000001111F111111110111110. */
+{ "bsetl", 0x5E0F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bsetl<.f><.cc> 0,limm,limm 0101111011001111F1111111100QQQQQ. */
+{ "bsetl", 0x5ECF7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bset_s b,b,u5 10111bbb100uuuuu. */
+{ "bset_s", 0x0000B880, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* btst b,c 00100bbb000100011BBBCCCCCCRRRRRR. */
+{ "btst", 0x20118000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { 0 }},
+
+/* btst<.cc> b,c 00100bbb110100011BBBCCCCCC0QQQQQ. */
+{ "btst", 0x20D18000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_CC }},
+
+/* btst b,u6 00100bbb010100011BBBuuuuuuRRRRRR. */
+{ "btst", 0x20518000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* btst<.cc> b,u6 00100bbb110100011BBBuuuuuu1QQQQQ. */
+{ "btst", 0x20D18020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* btst b,s12 00100bbb100100011BBBssssssSSSSSS. */
+{ "btst", 0x20918000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* btst limm,c 00100110000100011111CCCCCCRRRRRR. */
+{ "btst", 0x2611F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, RC }, { 0 }},
+
+/* btst b,limm 00100bbb000100011BBB111110RRRRRR. */
+{ "btst", 0x20118F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { 0 }},
+
+/* btst<.cc> b,limm 00100bbb110100011BBB1111100QQQQQ. */
+{ "btst", 0x20D18F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_CC }},
+
+/* btst<.cc> limm,c 00100110110100011111CCCCCC0QQQQQ. */
+{ "btst", 0x26D1F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, RC }, { C_CC }},
+
+/* btst limm,u6 00100110010100011111uuuuuuRRRRRR. */
+{ "btst", 0x2651F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, UIMM6_20 }, { 0 }},
+
+/* btst<.cc> limm,u6 00100110110100011111uuuuuu1QQQQQ. */
+{ "btst", 0x26D1F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, UIMM6_20 }, { C_CC }},
+
+/* btst limm,s12 00100110100100011111ssssssSSSSSS. */
+{ "btst", 0x2691F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, SIMM12_20 }, { 0 }},
+
+/* btst limm,limm 00100110000100011111111110RRRRRR. */
+{ "btst", 0x2611FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, LIMMdup }, { 0 }},
+
+/* btst<.cc> limm,limm 001001101101000111111111100QQQQQ. */
+{ "btst", 0x26D1FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, LIMMdup }, { C_CC }},
+
+/* btstl RB,RC 01011bbb000100011BBBccccccRRRRRR. */
+{ "btstl", 0x58118000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* btstl<.cc> RB,RC 01011bbb110100011BBBcccccc0QQQQQ. */
+{ "btstl", 0x58D18000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* btstl RB,u6 01011bbb010100011BBBuuuuuuRRRRRR. */
+{ "btstl", 0x58518000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* btstl<.cc> RB,u6 01011bbb110100011BBBuuuuuu1QQQQQ. */
+{ "btstl", 0x58D18020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* btstl RB,s12 01011bbb100100011BBBssssssSSSSSS. */
+{ "btstl", 0x58918000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* btstl ximm,RC 01011100000100011111ccccccRRRRRR. */
+{ "btstl", 0x5C11F000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { XIMM, RC }, { 0 }},
+
+/* btstl RB,ximm 01011bbb000100011BBB111100RRRRRR. */
+{ "btstl", 0x58118F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { 0 }},
+
+/* btstl<.cc> RB,ximm 01011bbb110100011BBB1111000QQQQQ. */
+{ "btstl", 0x58D18F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_CC }},
+
+/* btstl limm,RC 01011110000100011111ccccccRRRRRR. */
+{ "btstl", 0x5E11F000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { 0 }},
+
+/* btstl RB,limm 01011bbb000100011BBB111110RRRRRR. */
+{ "btstl", 0x58118F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* btstl<.cc> RB,limm 01011bbb110100011BBB1111100QQQQQ. */
+{ "btstl", 0x58D18F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* btst_s b,u5 10111bbb111uuuuu. */
+{ "btst_s", 0x0000B8E0, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, UIMM5_11_S }, { 0 }},
+
+/* bxor<.f> a,b,c 00100bbb00010010FBBBCCCCCCAAAAAA. */
+{ "bxor", 0x20120000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* bxor<.f> 0,b,c 00100bbb00010010FBBBCCCCCC111110. */
+{ "bxor", 0x2012003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bxor<.f><.cc> b,b,c 00100bbb11010010FBBBCCCCCC0QQQQQ. */
+{ "bxor", 0x20D20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bxor<.f> a,b,u6 00100bbb01010010FBBBuuuuuuAAAAAA. */
+{ "bxor", 0x20520000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bxor<.f> 0,b,u6 00100bbb01010010FBBBuuuuuu111110. */
+{ "bxor", 0x2052003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bxor<.f><.cc> b,b,u6 00100bbb11010010FBBBuuuuuu1QQQQQ. */
+{ "bxor", 0x20D20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bxor<.f> b,b,s12 00100bbb10010010FBBBssssssSSSSSS. */
+{ "bxor", 0x20920000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bxor<.f> a,limm,c 0010011000010010F111CCCCCCAAAAAA. */
+{ "bxor", 0x26127000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bxor<.f> a,b,limm 00100bbb00010010FBBB111110AAAAAA. */
+{ "bxor", 0x20120F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bxor<.f> 0,limm,c 0010011000010010F111CCCCCC111110. */
+{ "bxor", 0x2612703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bxor<.f> 0,b,limm 00100bbb00010010FBBB111110111110. */
+{ "bxor", 0x20120FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bxor<.f><.cc> b,b,limm 00100bbb11010010FBBB1111100QQQQQ. */
+{ "bxor", 0x20D20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bxor<.f><.cc> 0,limm,c 0010011011010010F111CCCCCC0QQQQQ. */
+{ "bxor", 0x26D27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bxor<.f> a,limm,u6 0010011001010010F111uuuuuuAAAAAA. */
+{ "bxor", 0x26527000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bxor<.f> 0,limm,u6 0010011001010010F111uuuuuu111110. */
+{ "bxor", 0x2652703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bxor<.f><.cc> 0,limm,u6 0010011011010010F111uuuuuu1QQQQQ. */
+{ "bxor", 0x26D27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bxor<.f> 0,limm,s12 0010011010010010F111ssssssSSSSSS. */
+{ "bxor", 0x26927000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bxor<.f> a,limm,limm 0010011000010010F111111110AAAAAA. */
+{ "bxor", 0x26127F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bxor<.f> 0,limm,limm 0010011000010010F111111110111110. */
+{ "bxor", 0x26127FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bxor<.f><.cc> 0,limm,limm 0010011011010010F1111111100QQQQQ. */
+{ "bxor", 0x26D27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,RB,RC 01011bbb00010010FBBBccccccaaaaaa. */
+{ "bxorl", 0x58120000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* bxorl<.f> 0,RB,RC 01011bbb00010010FBBBcccccc111110. */
+{ "bxorl", 0x5812003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* bxorl<.f><.cc> RB,RB,RC 01011bbb11010010FBBBcccccc0QQQQQ. */
+{ "bxorl", 0x58D20000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,RB,u6 01011bbb01010010FBBBuuuuuuaaaaaa. */
+{ "bxorl", 0x58520000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f> 0,RB,u6 01011bbb01010010FBBBuuuuuu111110. */
+{ "bxorl", 0x5852003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f><.cc> RB,RB,u6 01011bbb11010010FBBBuuuuuu1QQQQQ. */
+{ "bxorl", 0x58D20020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* bxorl<.f> RB,RB,s12 01011bbb10010010FBBBssssssSSSSSS. */
+{ "bxorl", 0x58920000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* bxorl<.f> RA,ximm,RC 0101110000010010F111ccccccaaaaaa. */
+{ "bxorl", 0x5C127000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* bxorl<.f> RA,RB,ximm 01011bbb00010010FBBB111100aaaaaa. */
+{ "bxorl", 0x58120F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* bxorl<.f> 0,ximm,RC 0101110000010010F111cccccc111110. */
+{ "bxorl", 0x5C12703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* bxorl<.f> 0,RB,ximm 01011bbb00010010FBBB111100111110. */
+{ "bxorl", 0x58120F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* bxorl<.f><.cc> 0,ximm,RC 0101110011010010F111cccccc0QQQQQ. */
+{ "bxorl", 0x5CD27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* bxorl<.f><.cc> RB,RB,ximm 01011bbb11010010FBBB1111000QQQQQ. */
+{ "bxorl", 0x58D20F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,ximm,u6 0101110001010010F111uuuuuuaaaaaa. */
+{ "bxorl", 0x5C527000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f> 0,ximm,u6 0101110001010010F111uuuuuu111110. */
+{ "bxorl", 0x5C52703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f><.cc> 0,ximm,u6 0101110011010010F111uuuuuu1QQQQQ. */
+{ "bxorl", 0x5CD27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,limm,RC 0101111000010010F111ccccccaaaaaa. */
+{ "bxorl", 0x5E127000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* bxorl<.f> RA,RB,limm 01011bbb00010010FBBB111110aaaaaa. */
+{ "bxorl", 0x58120F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* bxorl<.f> 0,limm,RC 0101111000010010F111cccccc111110. */
+{ "bxorl", 0x5E12703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* bxorl<.f> 0,RB,limm 01011bbb00010010FBBB111110111110. */
+{ "bxorl", 0x58120FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* bxorl<.f><.cc> 0,limm,RC 0101111011010010F111cccccc0QQQQQ. */
+{ "bxorl", 0x5ED27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* bxorl<.f><.cc> RB,RB,limm 01011bbb11010010FBBB1111100QQQQQ. */
+{ "bxorl", 0x58D20F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,limm,u6 0101111001010010F111uuuuuuaaaaaa. */
+{ "bxorl", 0x5E527000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f> 0,limm,u6 0101111001010010F111uuuuuu111110. */
+{ "bxorl", 0x5E52703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* bxorl<.f><.cc> 0,limm,u6 0101111011010010F111uuuuuu1QQQQQ. */
+{ "bxorl", 0x5ED27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* bxorl<.f> 0,ximm,s12 0101110010010010F111ssssssSSSSSS. */
+{ "bxorl", 0x5C927000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* bxorl<.f> 0,limm,s12 0101111010010010F111ssssssSSSSSS. */
+{ "bxorl", 0x5E927000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* bxorl<.f> RA,ximm,ximm 0101110000010010F111111100aaaaaa. */
+{ "bxorl", 0x5C127F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* bxorl<.f> 0,ximm,ximm 0101110000010010F111111100111110. */
+{ "bxorl", 0x5C127F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* bxorl<.f><.cc> 0,ximm,ximm 0101110011010010F1111111000QQQQQ. */
+{ "bxorl", 0x5CD27F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* bxorl<.f> RA,limm,limm 0101111000010010F111111110aaaaaa. */
+{ "bxorl", 0x5E127F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* bxorl<.f> 0,limm,limm 0101111000010010F111111110111110. */
+{ "bxorl", 0x5E127FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* bxorl<.f><.cc> 0,limm,limm 0101111011010010F1111111100QQQQQ. */
+{ "bxorl", 0x5ED27F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* b_s s10 1111000sssssssss. */
+{ "b_s", 0x0000F000, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { SIMM10_A16_7_S }, { 0 }},
+
+/* cbflyhf0r a,b,c 00110bbb000110111BBBCCCCCCAAAAAA. */
+{ "cbflyhf0r", 0x301B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cbflyhf0r 0,b,c 00110bbb000110111BBBCCCCCC111110. */
+{ "cbflyhf0r", 0x301B803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cbflyhf0r<.cc> b,b,c 00110bbb110110111BBBCCCCCC0QQQQQ. */
+{ "cbflyhf0r", 0x30DB8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cbflyhf0r a,b,u6 00110bbb010110111BBBuuuuuuAAAAAA. */
+{ "cbflyhf0r", 0x305B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cbflyhf0r 0,b,u6 00110bbb010110111BBBuuuuuu111110. */
+{ "cbflyhf0r", 0x305B803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cbflyhf0r<.cc> b,b,u6 00110bbb110110111BBBuuuuuu1QQQQQ. */
+{ "cbflyhf0r", 0x30DB8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cbflyhf0r b,b,s12 00110bbb100110111BBBssssssSSSSSS. */
+{ "cbflyhf0r", 0x309B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cbflyhf0r a,limm,c 00110110000110111111CCCCCCAAAAAA. */
+{ "cbflyhf0r", 0x361BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cbflyhf0r a,b,limm 00110bbb000110111BBB111110AAAAAA. */
+{ "cbflyhf0r", 0x301B8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cbflyhf0r 0,limm,c 00110110000110111111CCCCCC111110. */
+{ "cbflyhf0r", 0x361BF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cbflyhf0r 0,b,limm 00110bbb000110111BBB111110111110. */
+{ "cbflyhf0r", 0x301B8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cbflyhf0r<.cc> b,b,limm 00110bbb110110111BBB1111100QQQQQ. */
+{ "cbflyhf0r", 0x30DB8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cbflyhf0r<.cc> 0,limm,c 00110110110110111111CCCCCC0QQQQQ. */
+{ "cbflyhf0r", 0x36DBF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cbflyhf0r a,limm,u6 00110110010110111111uuuuuuAAAAAA. */
+{ "cbflyhf0r", 0x365BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cbflyhf0r 0,limm,u6 00110110010110111111uuuuuu111110. */
+{ "cbflyhf0r", 0x365BF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cbflyhf0r<.cc> 0,limm,u6 00110110110110111111uuuuuu1QQQQQ. */
+{ "cbflyhf0r", 0x36DBF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cbflyhf0r 0,limm,s12 00110110100110111111ssssssSSSSSS. */
+{ "cbflyhf0r", 0x369BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cbflyhf0r a,limm,limm 00110110000110111111111110AAAAAA. */
+{ "cbflyhf0r", 0x361BFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cbflyhf0r 0,limm,limm 00110110000110111111111110111110. */
+{ "cbflyhf0r", 0x361BFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cbflyhf0r<.cc> 0,limm,limm 001101101101101111111111100QQQQQ. */
+{ "cbflyhf0r", 0x36DBFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cbflyhf1r b,c 00110bbb001011110BBBCCCCCC111001. */
+{ "cbflyhf1r", 0x302F0039, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* cbflyhf1r 0,c 00110110001011110111CCCCCC011001. */
+{ "cbflyhf1r", 0x362F7019, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* cbflyhf1r b,u6 00110bbb011011110BBBuuuuuu011001. */
+{ "cbflyhf1r", 0x306F0019, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* cbflyhf1r 0,u6 00110110011011110111uuuuuu011001. */
+{ "cbflyhf1r", 0x366F7019, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* cbflyhf1r b,limm 00110bbb001011110BBB111110011001. */
+{ "cbflyhf1r", 0x302F0F99, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* cbflyhf1r 0,limm 00110110001011110111111110011001. */
+{ "cbflyhf1r", 0x362F7F99, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* clri c 00100111001011110000CCCCCC111111. */
+{ "clri", 0x272F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { 0 }},
+
+/* clri u6 00100111011011110000uuuuuu111111. */
+{ "clri", 0x276F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { 0 }},
+
+/* clri 00100111001011110000000000111111. */
+{ "clri", 0x276F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* cmacchfr a,b,c 00110bbb000010011BBBCCCCCCAAAAAA. */
+{ "cmacchfr", 0x30098000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmacchfr 0,b,c 00110bbb000010011BBBCCCCCC111110. */
+{ "cmacchfr", 0x3009803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmacchfr<.cc> b,b,c 00110bbb110010011BBBCCCCCC0QQQQQ. */
+{ "cmacchfr", 0x30C98000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmacchfr a,b,u6 00110bbb010010011BBBuuuuuuAAAAAA. */
+{ "cmacchfr", 0x30498000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmacchfr 0,b,u6 00110bbb010010011BBBuuuuuu111110. */
+{ "cmacchfr", 0x3049803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmacchfr<.cc> b,b,u6 00110bbb110010011BBBuuuuuu1QQQQQ. */
+{ "cmacchfr", 0x30C98020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmacchfr b,b,s12 00110bbb100010011BBBssssssSSSSSS. */
+{ "cmacchfr", 0x30898000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmacchfr a,limm,c 00110110000010011111CCCCCCAAAAAA. */
+{ "cmacchfr", 0x3609F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmacchfr a,b,limm 00110bbb000010011BBB111110AAAAAA. */
+{ "cmacchfr", 0x30098F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmacchfr 0,limm,c 00110110000010011111CCCCCC111110. */
+{ "cmacchfr", 0x3609F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmacchfr 0,b,limm 00110bbb000010011BBB111110111110. */
+{ "cmacchfr", 0x30098FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmacchfr<.cc> b,b,limm 00110bbb110010011BBB1111100QQQQQ. */
+{ "cmacchfr", 0x30C98F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmacchfr<.cc> 0,limm,c 00110110110010011111CCCCCC0QQQQQ. */
+{ "cmacchfr", 0x36C9F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmacchfr a,limm,u6 00110110010010011111uuuuuuAAAAAA. */
+{ "cmacchfr", 0x3649F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmacchfr 0,limm,u6 00110110010010011111uuuuuu111110. */
+{ "cmacchfr", 0x3649F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmacchfr<.cc> 0,limm,u6 00110110110010011111uuuuuu1QQQQQ. */
+{ "cmacchfr", 0x36C9F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmacchfr 0,limm,s12 00110110100010011111ssssssSSSSSS. */
+{ "cmacchfr", 0x3689F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmacchfr a,limm,limm 00110110000010011111111110AAAAAA. */
+{ "cmacchfr", 0x3609FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmacchfr 0,limm,limm 00110110000010011111111110111110. */
+{ "cmacchfr", 0x3609FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmacchfr<.cc> 0,limm,limm 001101101100100111111111100QQQQQ. */
+{ "cmacchfr", 0x36C9FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmacchnfr a,b,c 00110bbb000010001BBBCCCCCCAAAAAA. */
+{ "cmacchnfr", 0x30088000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmacchnfr 0,b,c 00110bbb000010001BBBCCCCCC111110. */
+{ "cmacchnfr", 0x3008803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmacchnfr<.cc> b,b,c 00110bbb110010001BBBCCCCCC0QQQQQ. */
+{ "cmacchnfr", 0x30C88000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmacchnfr a,b,u6 00110bbb010010001BBBuuuuuuAAAAAA. */
+{ "cmacchnfr", 0x30488000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmacchnfr 0,b,u6 00110bbb010010001BBBuuuuuu111110. */
+{ "cmacchnfr", 0x3048803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmacchnfr<.cc> b,b,u6 00110bbb110010001BBBuuuuuu1QQQQQ. */
+{ "cmacchnfr", 0x30C88020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmacchnfr b,b,s12 00110bbb100010001BBBssssssSSSSSS. */
+{ "cmacchnfr", 0x30888000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmacchnfr a,limm,c 00110110000010001111CCCCCCAAAAAA. */
+{ "cmacchnfr", 0x3608F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmacchnfr a,b,limm 00110bbb000010001BBB111110AAAAAA. */
+{ "cmacchnfr", 0x30088F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmacchnfr 0,limm,c 00110110000010001111CCCCCC111110. */
+{ "cmacchnfr", 0x3608F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmacchnfr 0,b,limm 00110bbb000010001BBB111110111110. */
+{ "cmacchnfr", 0x30088FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmacchnfr<.cc> b,b,limm 00110bbb110010001BBB1111100QQQQQ. */
+{ "cmacchnfr", 0x30C88F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmacchnfr<.cc> 0,limm,c 00110110110010001111CCCCCC0QQQQQ. */
+{ "cmacchnfr", 0x36C8F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmacchnfr a,limm,u6 00110110010010001111uuuuuuAAAAAA. */
+{ "cmacchnfr", 0x3648F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmacchnfr 0,limm,u6 00110110010010001111uuuuuu111110. */
+{ "cmacchnfr", 0x3648F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmacchnfr<.cc> 0,limm,u6 00110110110010001111uuuuuu1QQQQQ. */
+{ "cmacchnfr", 0x36C8F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmacchnfr 0,limm,s12 00110110100010001111ssssssSSSSSS. */
+{ "cmacchnfr", 0x3688F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmacchnfr a,limm,limm 00110110000010001111111110AAAAAA. */
+{ "cmacchnfr", 0x3608FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmacchnfr 0,limm,limm 00110110000010001111111110111110. */
+{ "cmacchnfr", 0x3608FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmacchnfr<.cc> 0,limm,limm 001101101100100011111111100QQQQQ. */
+{ "cmacchnfr", 0x36C8FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmachfr a,b,c 00110bbb000001111BBBCCCCCCAAAAAA. */
+{ "cmachfr", 0x30078000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmachfr 0,b,c 00110bbb000001111BBBCCCCCC111110. */
+{ "cmachfr", 0x3007803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmachfr<.cc> b,b,c 00110bbb110001111BBBCCCCCC0QQQQQ. */
+{ "cmachfr", 0x30C78000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmachfr a,b,u6 00110bbb010001111BBBuuuuuuAAAAAA. */
+{ "cmachfr", 0x30478000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmachfr 0,b,u6 00110bbb010001111BBBuuuuuu111110. */
+{ "cmachfr", 0x3047803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmachfr<.cc> b,b,u6 00110bbb110001111BBBuuuuuu1QQQQQ. */
+{ "cmachfr", 0x30C78020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmachfr b,b,s12 00110bbb100001111BBBssssssSSSSSS. */
+{ "cmachfr", 0x30878000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmachfr a,limm,c 00110110000001111111CCCCCCAAAAAA. */
+{ "cmachfr", 0x3607F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmachfr a,b,limm 00110bbb000001111BBB111110AAAAAA. */
+{ "cmachfr", 0x30078F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmachfr 0,limm,c 00110110000001111111CCCCCC111110. */
+{ "cmachfr", 0x3607F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmachfr 0,b,limm 00110bbb000001111BBB111110111110. */
+{ "cmachfr", 0x30078FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmachfr<.cc> b,b,limm 00110bbb110001111BBB1111100QQQQQ. */
+{ "cmachfr", 0x30C78F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmachfr<.cc> 0,limm,c 00110110110001111111CCCCCC0QQQQQ. */
+{ "cmachfr", 0x36C7F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmachfr a,limm,u6 00110110010001111111uuuuuuAAAAAA. */
+{ "cmachfr", 0x3647F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmachfr 0,limm,u6 00110110010001111111uuuuuu111110. */
+{ "cmachfr", 0x3647F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmachfr<.cc> 0,limm,u6 00110110110001111111uuuuuu1QQQQQ. */
+{ "cmachfr", 0x36C7F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmachfr 0,limm,s12 00110110100001111111ssssssSSSSSS. */
+{ "cmachfr", 0x3687F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmachfr a,limm,limm 00110110000001111111111110AAAAAA. */
+{ "cmachfr", 0x3607FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmachfr 0,limm,limm 00110110000001111111111110111110. */
+{ "cmachfr", 0x3607FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmachfr<.cc> 0,limm,limm 001101101100011111111111100QQQQQ. */
+{ "cmachfr", 0x36C7FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmachnfr a,b,c 00110bbb000001101BBBCCCCCCAAAAAA. */
+{ "cmachnfr", 0x30068000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmachnfr 0,b,c 00110bbb000001101BBBCCCCCC111110. */
+{ "cmachnfr", 0x3006803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmachnfr<.cc> b,b,c 00110bbb110001101BBBCCCCCC0QQQQQ. */
+{ "cmachnfr", 0x30C68000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmachnfr a,b,u6 00110bbb010001101BBBuuuuuuAAAAAA. */
+{ "cmachnfr", 0x30468000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmachnfr 0,b,u6 00110bbb010001101BBBuuuuuu111110. */
+{ "cmachnfr", 0x3046803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmachnfr<.cc> b,b,u6 00110bbb110001101BBBuuuuuu1QQQQQ. */
+{ "cmachnfr", 0x30C68020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmachnfr b,b,s12 00110bbb100001101BBBssssssSSSSSS. */
+{ "cmachnfr", 0x30868000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmachnfr a,limm,c 00110110000001101111CCCCCCAAAAAA. */
+{ "cmachnfr", 0x3606F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmachnfr a,b,limm 00110bbb000001101BBB111110AAAAAA. */
+{ "cmachnfr", 0x30068F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmachnfr 0,limm,c 00110110000001101111CCCCCC111110. */
+{ "cmachnfr", 0x3606F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmachnfr 0,b,limm 00110bbb000001101BBB111110111110. */
+{ "cmachnfr", 0x30068FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmachnfr<.cc> b,b,limm 00110bbb110001101BBB1111100QQQQQ. */
+{ "cmachnfr", 0x30C68F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmachnfr<.cc> 0,limm,c 00110110110001101111CCCCCC0QQQQQ. */
+{ "cmachnfr", 0x36C6F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmachnfr a,limm,u6 00110110010001101111uuuuuuAAAAAA. */
+{ "cmachnfr", 0x3646F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmachnfr 0,limm,u6 00110110010001101111uuuuuu111110. */
+{ "cmachnfr", 0x3646F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmachnfr<.cc> 0,limm,u6 00110110110001101111uuuuuu1QQQQQ. */
+{ "cmachnfr", 0x36C6F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmachnfr 0,limm,s12 00110110100001101111ssssssSSSSSS. */
+{ "cmachnfr", 0x3686F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmachnfr a,limm,limm 00110110000001101111111110AAAAAA. */
+{ "cmachnfr", 0x3606FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmachnfr 0,limm,limm 00110110000001101111111110111110. */
+{ "cmachnfr", 0x3606FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmachnfr<.cc> 0,limm,limm 001101101100011011111111100QQQQQ. */
+{ "cmachnfr", 0x36C6FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmp b,c 00100bbb000011001BBBCCCCCCRRRRRR. */
+{ "cmp", 0x200C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* cmp<.cc> b,c 00100bbb110011001BBBCCCCCC0QQQQQ. */
+{ "cmp", 0x20CC8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* cmp b,u6 00100bbb010011001BBBuuuuuuRRRRRR. */
+{ "cmp", 0x204C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* cmp<.cc> b,u6 00100bbb110011001BBBuuuuuu1QQQQQ. */
+{ "cmp", 0x20CC8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* cmp b,s12 00100bbb100011001BBBssssssSSSSSS. */
+{ "cmp", 0x208C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* cmp limm,c 00100110000011001111CCCCCCRRRRRR. */
+{ "cmp", 0x260CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { 0 }},
+
+/* cmp b,limm 00100bbb000011001BBB111110RRRRRR. */
+{ "cmp", 0x200C8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* cmp<.cc> b,limm 00100bbb110011001BBB1111100QQQQQ. */
+{ "cmp", 0x20CC8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* cmp<.cc> limm,c 00100110110011001111CCCCCC0QQQQQ. */
+{ "cmp", 0x26CCF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { C_CC }},
+
+/* cmp limm,u6 00100110010011001111uuuuuuRRRRRR. */
+{ "cmp", 0x264CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_20 }, { 0 }},
+
+/* cmp<.cc> limm,u6 00100110110011001111uuuuuu1QQQQQ. */
+{ "cmp", 0x26CCF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmp limm,s12 00100110100011001111ssssssSSSSSS. */
+{ "cmp", 0x268CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, SIMM12_20 }, { 0 }},
+
+/* cmp limm,limm 00100110000011001111111110RRRRRR. */
+{ "cmp", 0x260CFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, LIMMdup }, { 0 }},
+
+/* cmp<.cc> limm,limm 001001101100110011111111100QQQQQ. */
+{ "cmp", 0x26CCFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, LIMMdup }, { C_CC }},
+
+/* cmpl RB,RC 01011bbb000011001BBBccccccRRRRRR. */
+{ "cmpl", 0x580C8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* cmpl<.cc> RB,RC 01011bbb110011001BBBcccccc0QQQQQ. */
+{ "cmpl", 0x58CC8000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* cmpl RB,u6 01011bbb010011001BBBuuuuuuRRRRRR. */
+{ "cmpl", 0x584C8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* cmpl<.cc> RB,u6 01011bbb110011001BBBuuuuuu1QQQQQ. */
+{ "cmpl", 0x58CC8020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* cmpl RB,s12 01011bbb100011001BBBssssssSSSSSS. */
+{ "cmpl", 0x588C8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* cmpl ximm,RC 01011100000011001111ccccccRRRRRR. */
+{ "cmpl", 0x5C0CF000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { XIMM, RC }, { 0 }},
+
+/* cmpl RB,ximm 01011bbb000011001BBB111100RRRRRR. */
+{ "cmpl", 0x580C8F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { 0 }},
+
+/* cmpl<.cc> RB,ximm 01011bbb110011001BBB1111000QQQQQ. */
+{ "cmpl", 0x58CC8F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_CC }},
+
+/* cmpl limm,RC 01011110000011001111ccccccRRRRRR. */
+{ "cmpl", 0x5E0CF000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { 0 }},
+
+/* cmpl RB,limm 01011bbb000011001BBB111110RRRRRR. */
+{ "cmpl", 0x580C8F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* cmpl<.cc> RB,limm 01011bbb110011001BBB1111100QQQQQ. */
+{ "cmpl", 0x58CC8F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* cmpychfr a,b,c 00110bbb000001011BBBCCCCCCAAAAAA. */
+{ "cmpychfr", 0x30058000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmpychfr 0,b,c 00110bbb000001011BBBCCCCCC111110. */
+{ "cmpychfr", 0x3005803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmpychfr<.cc> b,b,c 00110bbb110001011BBBCCCCCC0QQQQQ. */
+{ "cmpychfr", 0x30C58000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmpychfr a,b,u6 00110bbb010001011BBBuuuuuuAAAAAA. */
+{ "cmpychfr", 0x30458000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmpychfr 0,b,u6 00110bbb010001011BBBuuuuuu111110. */
+{ "cmpychfr", 0x3045803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmpychfr<.cc> b,b,u6 00110bbb110001011BBBuuuuuu1QQQQQ. */
+{ "cmpychfr", 0x30C58020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmpychfr b,b,s12 00110bbb100001011BBBssssssSSSSSS. */
+{ "cmpychfr", 0x30858000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmpychfr a,limm,c 00110110000001011111CCCCCCAAAAAA. */
+{ "cmpychfr", 0x3605F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmpychfr a,b,limm 00110bbb000001011BBB111110AAAAAA. */
+{ "cmpychfr", 0x30058F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmpychfr 0,limm,c 00110110000001011111CCCCCC111110. */
+{ "cmpychfr", 0x3605F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmpychfr 0,b,limm 00110bbb000001011BBB111110111110. */
+{ "cmpychfr", 0x30058FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmpychfr<.cc> b,b,limm 00110bbb110001011BBB1111100QQQQQ. */
+{ "cmpychfr", 0x30C58F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmpychfr<.cc> 0,limm,c 00110110110001011111CCCCCC0QQQQQ. */
+{ "cmpychfr", 0x36C5F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmpychfr a,limm,u6 00110110010001011111uuuuuuAAAAAA. */
+{ "cmpychfr", 0x3645F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpychfr 0,limm,u6 00110110010001011111uuuuuu111110. */
+{ "cmpychfr", 0x3645F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpychfr<.cc> 0,limm,u6 00110110110001011111uuuuuu1QQQQQ. */
+{ "cmpychfr", 0x36C5F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmpychfr 0,limm,s12 00110110100001011111ssssssSSSSSS. */
+{ "cmpychfr", 0x3685F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmpychfr a,limm,limm 00110110000001011111111110AAAAAA. */
+{ "cmpychfr", 0x3605FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmpychfr 0,limm,limm 00110110000001011111111110111110. */
+{ "cmpychfr", 0x3605FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmpychfr<.cc> 0,limm,limm 001101101100010111111111100QQQQQ. */
+{ "cmpychfr", 0x36C5FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmpychnfr a,b,c 00110bbb000000101BBBCCCCCCAAAAAA. */
+{ "cmpychnfr", 0x30028000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmpychnfr 0,b,c 00110bbb000000001BBBCCCCCC111110. */
+{ "cmpychnfr", 0x3000803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmpychnfr<.cc> b,b,c 00110bbb110000001BBBCCCCCC0QQQQQ. */
+{ "cmpychnfr", 0x30C08000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmpychnfr a,b,u6 00110bbb010000001BBBuuuuuuAAAAAA. */
+{ "cmpychnfr", 0x30408000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmpychnfr 0,b,u6 00110bbb010000001BBBuuuuuu111110. */
+{ "cmpychnfr", 0x3040803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmpychnfr<.cc> b,b,u6 00110bbb110000001BBBuuuuuu1QQQQQ. */
+{ "cmpychnfr", 0x30C08020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmpychnfr b,b,s12 00110bbb100000001BBBssssssSSSSSS. */
+{ "cmpychnfr", 0x30808000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmpychnfr a,limm,c 00110110000000001111CCCCCCAAAAAA. */
+{ "cmpychnfr", 0x3600F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmpychnfr a,b,limm 00110bbb000000001BBB111110AAAAAA. */
+{ "cmpychnfr", 0x30008F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmpychnfr 0,limm,c 00110110000000001111CCCCCC111110. */
+{ "cmpychnfr", 0x3600F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmpychnfr 0,b,limm 00110bbb000000001BBB111110111110. */
+{ "cmpychnfr", 0x30008FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmpychnfr<.cc> b,b,limm 00110bbb110000001BBB1111100QQQQQ. */
+{ "cmpychnfr", 0x30C08F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmpychnfr<.cc> 0,limm,c 00110110110000001111CCCCCC0QQQQQ. */
+{ "cmpychnfr", 0x36C0F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmpychnfr a,limm,u6 00110110010000001111uuuuuuAAAAAA. */
+{ "cmpychnfr", 0x3640F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpychnfr 0,limm,u6 00110110010000001111uuuuuu111110. */
+{ "cmpychnfr", 0x3640F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpychnfr<.cc> 0,limm,u6 00110110110000001111uuuuuu1QQQQQ. */
+{ "cmpychnfr", 0x36C0F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmpychnfr 0,limm,s12 00110110100000001111ssssssSSSSSS. */
+{ "cmpychnfr", 0x3680F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmpychnfr a,limm,limm 00110110000000001111111110AAAAAA. */
+{ "cmpychnfr", 0x3600FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmpychnfr 0,limm,limm 00110110000000001111111110111110. */
+{ "cmpychnfr", 0x3600FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmpychnfr<.cc> 0,limm,limm 001101101100000011111111100QQQQQ. */
+{ "cmpychnfr", 0x36C0FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmpyhfmr a,b,c 00110bbb000110110BBBCCCCCCAAAAAA. */
+{ "cmpyhfmr", 0x301B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmpyhfmr 0,b,c 00110bbb000110110BBBCCCCCC111110. */
+{ "cmpyhfmr", 0x301B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmpyhfmr<.cc> b,b,c 00110bbb110110110BBBCCCCCC0QQQQQ. */
+{ "cmpyhfmr", 0x30DB0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmpyhfmr a,b,u6 00110bbb010110110BBBuuuuuuAAAAAA. */
+{ "cmpyhfmr", 0x305B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhfmr 0,b,u6 00110bbb010110110BBBuuuuuu111110. */
+{ "cmpyhfmr", 0x305B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhfmr<.cc> b,b,u6 00110bbb110110110BBBuuuuuu1QQQQQ. */
+{ "cmpyhfmr", 0x30DB0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmpyhfmr b,b,s12 00110bbb100110110BBBssssssSSSSSS. */
+{ "cmpyhfmr", 0x309B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmpyhfmr a,limm,c 00110110000110110111CCCCCCAAAAAA. */
+{ "cmpyhfmr", 0x361B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmpyhfmr a,b,limm 00110bbb000110110BBB111110AAAAAA. */
+{ "cmpyhfmr", 0x301B0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmpyhfmr 0,limm,c 00110110000110110111CCCCCC111110. */
+{ "cmpyhfmr", 0x361B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmpyhfmr 0,b,limm 00110bbb000110110BBB111110111110. */
+{ "cmpyhfmr", 0x301B0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmpyhfmr<.cc> b,b,limm 00110bbb110110110BBB1111100QQQQQ. */
+{ "cmpyhfmr", 0x30DB0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmpyhfmr<.cc> 0,limm,c 00110110110110110111CCCCCC0QQQQQ. */
+{ "cmpyhfmr", 0x36DB7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmpyhfmr a,limm,u6 00110110010110110111uuuuuuAAAAAA. */
+{ "cmpyhfmr", 0x365B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhfmr 0,limm,u6 00110110010110110111uuuuuu111110. */
+{ "cmpyhfmr", 0x365B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhfmr<.cc> 0,limm,u6 00110110110110110111uuuuuu1QQQQQ. */
+{ "cmpyhfmr", 0x36DB7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmpyhfmr 0,limm,s12 00110110100110110111ssssssSSSSSS. */
+{ "cmpyhfmr", 0x369B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmpyhfmr a,limm,limm 00110110000110110111111110AAAAAA. */
+{ "cmpyhfmr", 0x361B7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhfmr 0,limm,limm 00110110000110110111111110111110. */
+{ "cmpyhfmr", 0x361B7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhfmr<.cc> 0,limm,limm 001101101101101101111111100QQQQQ. */
+{ "cmpyhfmr", 0x36DB7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmpyhfr a,b,c 00110bbb000000011BBBCCCCCCAAAAAA. */
+{ "cmpyhfr", 0x30018000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmpyhfr 0,b,c 00110bbb000000011BBBCCCCCC111110. */
+{ "cmpyhfr", 0x3001803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmpyhfr<.cc> b,b,c 00110bbb110000011BBBCCCCCC0QQQQQ. */
+{ "cmpyhfr", 0x30C18000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmpyhfr a,b,u6 00110bbb010000011BBBuuuuuuAAAAAA. */
+{ "cmpyhfr", 0x30418000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhfr 0,b,u6 00110bbb010000011BBBuuuuuu111110. */
+{ "cmpyhfr", 0x3041803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhfr<.cc> b,b,u6 00110bbb110000011BBBuuuuuu1QQQQQ. */
+{ "cmpyhfr", 0x30C18020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmpyhfr b,b,s12 00110bbb100000011BBBssssssSSSSSS. */
+{ "cmpyhfr", 0x30818000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmpyhfr a,limm,c 00110110000000011111CCCCCCAAAAAA. */
+{ "cmpyhfr", 0x3601F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmpyhfr a,b,limm 00110bbb000000011BBB111110AAAAAA. */
+{ "cmpyhfr", 0x30018F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmpyhfr 0,limm,c 00110110000000011111CCCCCC111110. */
+{ "cmpyhfr", 0x3601F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmpyhfr 0,b,limm 00110bbb000000011BBB111110111110. */
+{ "cmpyhfr", 0x30018FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmpyhfr<.cc> b,b,limm 00110bbb110000011BBB1111100QQQQQ. */
+{ "cmpyhfr", 0x30C18F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmpyhfr<.cc> 0,limm,c 00110110110000011111CCCCCC0QQQQQ. */
+{ "cmpyhfr", 0x36C1F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmpyhfr a,limm,u6 00110110010000011111uuuuuuAAAAAA. */
+{ "cmpyhfr", 0x3641F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhfr 0,limm,u6 00110110010000011111uuuuuu111110. */
+{ "cmpyhfr", 0x3641F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhfr<.cc> 0,limm,u6 00110110110000011111uuuuuu1QQQQQ. */
+{ "cmpyhfr", 0x36C1F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmpyhfr 0,limm,s12 00110110100000011111ssssssSSSSSS. */
+{ "cmpyhfr", 0x3681F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmpyhfr a,limm,limm 00110110000000011111111110AAAAAA. */
+{ "cmpyhfr", 0x3601FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhfr 0,limm,limm 00110110000000011111111110111110. */
+{ "cmpyhfr", 0x3601FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhfr<.cc> 0,limm,limm 001101101100000111111111100QQQQQ. */
+{ "cmpyhfr", 0x36C1FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmpyhnfr a,b,c 00110bbb000000001BBBCCCCCCAAAAAA. */
+{ "cmpyhnfr", 0x30008000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* cmpyhnfr 0,b,c 00110bbb000000101BBBCCCCCC111110. */
+{ "cmpyhnfr", 0x3002803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* cmpyhnfr<.cc> b,b,c 00110bbb110000101BBBCCCCCC0QQQQQ. */
+{ "cmpyhnfr", 0x30C28000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* cmpyhnfr a,b,u6 00110bbb010000101BBBuuuuuuAAAAAA. */
+{ "cmpyhnfr", 0x30428000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhnfr 0,b,u6 00110bbb010000101BBBuuuuuu111110. */
+{ "cmpyhnfr", 0x3042803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* cmpyhnfr<.cc> b,b,u6 00110bbb110000101BBBuuuuuu1QQQQQ. */
+{ "cmpyhnfr", 0x30C28020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* cmpyhnfr b,b,s12 00110bbb100000101BBBssssssSSSSSS. */
+{ "cmpyhnfr", 0x30828000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* cmpyhnfr a,limm,c 00110110000000101111CCCCCCAAAAAA. */
+{ "cmpyhnfr", 0x3602F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* cmpyhnfr a,b,limm 00110bbb000000101BBB111110AAAAAA. */
+{ "cmpyhnfr", 0x30028F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* cmpyhnfr 0,limm,c 00110110000000101111CCCCCC111110. */
+{ "cmpyhnfr", 0x3602F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* cmpyhnfr 0,b,limm 00110bbb000000101BBB111110111110. */
+{ "cmpyhnfr", 0x30028FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* cmpyhnfr<.cc> b,b,limm 00110bbb110000101BBB1111100QQQQQ. */
+{ "cmpyhnfr", 0x30C28F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* cmpyhnfr<.cc> 0,limm,c 00110110110000101111CCCCCC0QQQQQ. */
+{ "cmpyhnfr", 0x36C2F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* cmpyhnfr a,limm,u6 00110110010000101111uuuuuuAAAAAA. */
+{ "cmpyhnfr", 0x3642F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhnfr 0,limm,u6 00110110010000101111uuuuuu111110. */
+{ "cmpyhnfr", 0x3642F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* cmpyhnfr<.cc> 0,limm,u6 00110110110000101111uuuuuu1QQQQQ. */
+{ "cmpyhnfr", 0x36C2F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* cmpyhnfr 0,limm,s12 00110110100000101111ssssssSSSSSS. */
+{ "cmpyhnfr", 0x3682F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* cmpyhnfr a,limm,limm 00110110000000101111111110AAAAAA. */
+{ "cmpyhnfr", 0x3602FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhnfr 0,limm,limm 00110110000000101111111110111110. */
+{ "cmpyhnfr", 0x3602FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* cmpyhnfr<.cc> 0,limm,limm 001101101100001011111111100QQQQQ. */
+{ "cmpyhnfr", 0x36C2FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* cmp_s b,h 01110bbbhhh100HH. */
+{ "cmp_s", 0x00007010, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RH_S }, { 0 }},
+
+/* cmp_s h,s3 01110ssshhh101HH. */
+{ "cmp_s", 0x00007014, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, SIMM3_5_S }, { 0 }},
+
+/* cmp_s b,limm 01110bbb11010011. */
+{ "cmp_s", 0x000070D3, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, LIMM_S }, { 0 }},
+
+/* cmp_s limm,s3 01110sss11010111. */
+{ "cmp_s", 0x000070D7, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM_S, SIMM3_5_S }, { 0 }},
+
+/* dbnz<.d> b,s13 00100bbb1000110N0BBBssssssSSSSSS. */
+{ "dbnz", 0x208C0000, 0xF8FE8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, BRANCH, NONE, { RB, SIMM13_A16_20 }, { C_DNZ_D }},
+
+/* div<.f> a,b,c 00101bbb00000100FBBBCCCCCCAAAAAA. */
+{ "div", 0x28040000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* div<.f> 0,b,c 00101bbb00000100FBBBCCCCCC111110. */
+{ "div", 0x2804003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, RC }, { C_F }},
+
+/* div<.f><.cc> b,b,c 00101bbb11000100FBBBCCCCCC0QQQQQ. */
+{ "div", 0x28C40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* div<.f> a,b,c 00101bbb00000100FBBBCCCCCCAAAAAA. */
+{ "div", 0x28040000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* div<.f> 0,b,c 00101bbb00000100FBBBCCCCCC111110. */
+{ "div", 0x2804003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, RC }, { C_F }},
+
+/* div<.f><.cc> b,b,c 00101bbb11000100FBBBCCCCCC0QQQQQ. */
+{ "div", 0x28C40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* div<.f> a,b,u6 00101bbb01000100FBBBuuuuuuAAAAAA. */
+{ "div", 0x28440000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* div<.f> 0,b,u6 00101bbb01000100FBBBuuuuuu111110. */
+{ "div", 0x2844003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* div<.f><.cc> b,b,u6 00101bbb11000100FBBBuuuuuu1QQQQQ. */
+{ "div", 0x28C40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* div<.f> a,b,u6 00101bbb01000100FBBBuuuuuuAAAAAA. */
+{ "div", 0x28440000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* div<.f> 0,b,u6 00101bbb01000100FBBBuuuuuu111110. */
+{ "div", 0x2844003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* div<.f><.cc> b,b,u6 00101bbb11000100FBBBuuuuuu1QQQQQ. */
+{ "div", 0x28C40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* div<.f> b,b,s12 00101bbb10000100FBBBssssssSSSSSS. */
+{ "div", 0x28840000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* div<.f> b,b,s12 00101bbb10000100FBBBssssssSSSSSS. */
+{ "div", 0x28840000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* div<.f> a,limm,c 0010111000000100F111CCCCCCAAAAAA. */
+{ "div", 0x2E047000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* div<.f> a,b,limm 00101bbb00000100FBBB111110AAAAAA. */
+{ "div", 0x28040F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* div<.f> 0,limm,c 0010111000000100F111CCCCCC111110. */
+{ "div", 0x2E04703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* div<.f> 0,b,limm 00101bbb00000100FBBB111110111110. */
+{ "div", 0x28040FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* div<.f><.cc> b,b,limm 00101bbb11000100FBBB1111100QQQQQ. */
+{ "div", 0x28C40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* div<.f><.cc> 0,limm,c 0010111011000100F111CCCCCC0QQQQQ. */
+{ "div", 0x2EC47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* div<.f> a,limm,c 0010111000000100F111CCCCCCAAAAAA. */
+{ "div", 0x2E047000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* div<.f> a,b,limm 00101bbb00000100FBBB111110AAAAAA. */
+{ "div", 0x28040F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* div<.f> 0,limm,c 0010111000000100F111CCCCCC111110. */
+{ "div", 0x2E04703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* div<.f> 0,b,limm 00101bbb00000100FBBB111110111110. */
+{ "div", 0x28040FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* div<.f><.cc> b,b,limm 00101bbb11000100FBBB1111100QQQQQ. */
+{ "div", 0x28C40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* div<.f><.cc> 0,limm,c 0010111011000100F111CCCCCC0QQQQQ. */
+{ "div", 0x2EC47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* div<.f> a,limm,u6 0010111001000100F111uuuuuuAAAAAA. */
+{ "div", 0x2E447000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* div<.f> 0,limm,u6 0010111001000100F111uuuuuu111110. */
+{ "div", 0x2E44703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* div<.f><.cc> 0,limm,u6 0010111011000100F111uuuuuu1QQQQQ. */
+{ "div", 0x2EC47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* div<.f> a,limm,u6 0010111001000100F111uuuuuuAAAAAA. */
+{ "div", 0x2E447000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* div<.f> 0,limm,u6 0010111001000100F111uuuuuu111110. */
+{ "div", 0x2E44703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* div<.f><.cc> 0,limm,u6 0010111011000100F111uuuuuu1QQQQQ. */
+{ "div", 0x2EC47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* div<.f> 0,limm,s12 0010111010000100F111ssssssSSSSSS. */
+{ "div", 0x2E847000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* div<.f> 0,limm,s12 0010111010000100F111ssssssSSSSSS. */
+{ "div", 0x2E847000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* div<.f> a,limm,limm 0010111000000100F111111110AAAAAA. */
+{ "div", 0x2E047F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* div<.f> 0,limm,limm 0010111000000100F111111110111110. */
+{ "div", 0x2E047FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* div<.f><.cc> 0,limm,limm 0010111011000100F1111111100QQQQQ. */
+{ "div", 0x2EC47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* div<.f> a,limm,limm 0010111000000100F111111110AAAAAA. */
+{ "div", 0x2E047F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* div<.f> 0,limm,limm 0010111000000100F111111110111110. */
+{ "div", 0x2E047FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* div<.f><.cc> 0,limm,limm 0010111011000100F1111111100QQQQQ. */
+{ "div", 0x2EC47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* divf<.f> a,b,c 00110bbb00010000FBBBCCCCCCAAAAAA. */
+{ "divf", 0x30100000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* divf<.f> 0,b,c 00110bbb00010000FBBBCCCCCC111110. */
+{ "divf", 0x3010003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* divf<.f><.cc> b,b,c 00110bbb11010000FBBBCCCCCC0QQQQQ. */
+{ "divf", 0x30D00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* divf<.f> a,b,u6 00110bbb01010000FBBBuuuuuuAAAAAA. */
+{ "divf", 0x30500000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* divf<.f> 0,b,u6 00110bbb01010000FBBBuuuuuu111110. */
+{ "divf", 0x3050003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* divf<.f><.cc> b,b,u6 00110bbb11010000FBBBuuuuuu1QQQQQ. */
+{ "divf", 0x30D00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* divf<.f> b,b,s12 00110bbb10010000FBBBssssssSSSSSS. */
+{ "divf", 0x30900000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* divf<.f> a,limm,c 0011011000010000F111CCCCCCAAAAAA. */
+{ "divf", 0x36107000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* divf<.f> a,b,limm 00110bbb00010000FBBB111110AAAAAA. */
+{ "divf", 0x30100F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* divf<.f> 0,limm,c 0011011000010000F111CCCCCC111110. */
+{ "divf", 0x3610703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* divf<.f> 0,b,limm 00110bbb00010000FBBB111110111110. */
+{ "divf", 0x30100FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* divf<.f><.cc> b,b,limm 00110bbb11010000FBBB1111100QQQQQ. */
+{ "divf", 0x30D00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* divf<.f><.cc> 0,limm,c 0011011011010000F111CCCCCC0QQQQQ. */
+{ "divf", 0x36D07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* divf<.f> a,limm,u6 0011011001010000F111uuuuuuAAAAAA. */
+{ "divf", 0x36507000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* divf<.f> 0,limm,u6 0011011001010000F111uuuuuu111110. */
+{ "divf", 0x3650703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divf<.f><.cc> 0,limm,u6 0011011011010000F111uuuuuu1QQQQQ. */
+{ "divf", 0x36D07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divf<.f> 0,limm,s12 0011011010010000F111ssssssSSSSSS. */
+{ "divf", 0x36907000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* divf<.f> a,limm,limm 0011011000010000F111111110AAAAAA. */
+{ "divf", 0x36107F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* divf<.f> 0,limm,limm 0011011000010000F111111110111110. */
+{ "divf", 0x36107FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* divf<.f><.cc> 0,limm,limm 0011011011010000F1111111100QQQQQ. */
+{ "divf", 0x36D07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* divl<.f> RA,RB,RC 01011bbb00100100FBBBccccccaaaaaa. */
+{ "divl", 0x58240000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* divl<.f> 0,RB,RC 01011bbb00100100FBBBcccccc111110. */
+{ "divl", 0x5824003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* divl<.f><.cc> RB,RB,RC 01011bbb11100100FBBBcccccc0QQQQQ. */
+{ "divl", 0x58E40000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* divl<.f> RA,RB,u6 01011bbb01100100FBBBuuuuuuaaaaaa. */
+{ "divl", 0x58640000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* divl<.f> 0,RB,u6 01011bbb01100100FBBBuuuuuu111110. */
+{ "divl", 0x5864003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* divl<.f><.cc> RB,RB,u6 01011bbb11100100FBBBuuuuuu1QQQQQ. */
+{ "divl", 0x58E40020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* divl<.f> RB,RB,s12 01011bbb10100100FBBBssssssSSSSSS. */
+{ "divl", 0x58A40000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* divl<.f> RA,ximm,RC 0101110000100100F111ccccccaaaaaa. */
+{ "divl", 0x5C247000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* divl<.f> RA,RB,ximm 01011bbb00100100FBBB111100aaaaaa. */
+{ "divl", 0x58240F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* divl<.f> 0,ximm,RC 0101110000100100F111cccccc111110. */
+{ "divl", 0x5C24703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* divl<.f> 0,RB,ximm 01011bbb00100100FBBB111100111110. */
+{ "divl", 0x58240F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* divl<.f><.cc> 0,ximm,RC 0101110011100100F111cccccc0QQQQQ. */
+{ "divl", 0x5CE47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* divl<.f><.cc> RB,RB,ximm 01011bbb11100100FBBB1111000QQQQQ. */
+{ "divl", 0x58E40F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* divl<.f> RA,ximm,u6 0101110001100100F111uuuuuuaaaaaa. */
+{ "divl", 0x5C647000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* divl<.f> 0,ximm,u6 0101110001100100F111uuuuuu111110. */
+{ "divl", 0x5C64703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* divl<.f><.cc> 0,ximm,u6 0101110011100100F111uuuuuu1QQQQQ. */
+{ "divl", 0x5CE47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divl<.f> RA,limm,RC 0101111000100100F111ccccccaaaaaa. */
+{ "divl", 0x5E247000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* divl<.f> RA,RB,limm 01011bbb00100100FBBB111110aaaaaa. */
+{ "divl", 0x58240F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* divl<.f> 0,limm,RC 0101111000100100F111cccccc111110. */
+{ "divl", 0x5E24703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* divl<.f> 0,RB,limm 01011bbb00100100FBBB111110111110. */
+{ "divl", 0x58240FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* divl<.f><.cc> 0,limm,RC 0101111011100100F111cccccc0QQQQQ. */
+{ "divl", 0x5EE47000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* divl<.f><.cc> RB,RB,limm 01011bbb11100100FBBB1111100QQQQQ. */
+{ "divl", 0x58E40F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* divl<.f> RA,limm,u6 0101111001100100F111uuuuuuaaaaaa. */
+{ "divl", 0x5E647000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divl<.f> 0,limm,u6 0101111001100100F111uuuuuu111110. */
+{ "divl", 0x5E64703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divl<.f><.cc> 0,limm,u6 0101111011100100F111uuuuuu1QQQQQ. */
+{ "divl", 0x5EE47020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divl<.f> 0,ximm,s12 0101110010100100F111ssssssSSSSSS. */
+{ "divl", 0x5CA47000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* divl<.f> 0,limm,s12 0101111010100100F111ssssssSSSSSS. */
+{ "divl", 0x5EA47000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* divl<.f> RA,ximm,ximm 0101110000100100F111111100aaaaaa. */
+{ "divl", 0x5C247F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* divl<.f> 0,ximm,ximm 0101110000100100F111111100111110. */
+{ "divl", 0x5C247F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* divl<.f><.cc> 0,ximm,ximm 0101110011100100F1111111000QQQQQ. */
+{ "divl", 0x5CE47F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* divl<.f> RA,limm,limm 0101111000100100F111111110aaaaaa. */
+{ "divl", 0x5E247F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* divl<.f> 0,limm,limm 0101111000100100F111111110111110. */
+{ "divl", 0x5E247FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* divl<.f><.cc> 0,limm,limm 0101111011100100F1111111100QQQQQ. */
+{ "divl", 0x5EE47F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* divu<.f> a,b,c 00101bbb00000101FBBBCCCCCCAAAAAA. */
+{ "divu", 0x28050000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* divu<.f> 0,b,c 00101bbb00000101FBBBCCCCCC111110. */
+{ "divu", 0x2805003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, RC }, { C_F }},
+
+/* divu<.f><.cc> b,b,c 00101bbb11000101FBBBCCCCCC0QQQQQ. */
+{ "divu", 0x28C50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* divu<.f> a,b,c 00101bbb00000101FBBBCCCCCCAAAAAA. */
+{ "divu", 0x28050000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* divu<.f> 0,b,c 00101bbb00000101FBBBCCCCCC111110. */
+{ "divu", 0x2805003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* divu<.f><.cc> b,b,c 00101bbb11000101FBBBCCCCCC0QQQQQ. */
+{ "divu", 0x28C50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* divu<.f> a,b,u6 00101bbb01000101FBBBuuuuuuAAAAAA. */
+{ "divu", 0x28450000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* divu<.f> 0,b,u6 00101bbb01000101FBBBuuuuuu111110. */
+{ "divu", 0x2845003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* divu<.f><.cc> b,b,u6 00101bbb11000101FBBBuuuuuu1QQQQQ. */
+{ "divu", 0x28C50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* divu<.f> a,b,u6 00101bbb01000101FBBBuuuuuuAAAAAA. */
+{ "divu", 0x28450000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* divu<.f> 0,b,u6 00101bbb01000101FBBBuuuuuu111110. */
+{ "divu", 0x2845003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* divu<.f><.cc> b,b,u6 00101bbb11000101FBBBuuuuuu1QQQQQ. */
+{ "divu", 0x28C50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* divu<.f> b,b,s12 00101bbb10000101FBBBssssssSSSSSS. */
+{ "divu", 0x28850000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* divu<.f> b,b,s12 00101bbb10000101FBBBssssssSSSSSS. */
+{ "divu", 0x28850000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* divu<.f> a,limm,c 0010111000000101F111CCCCCCAAAAAA. */
+{ "divu", 0x2E057000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* divu<.f> a,b,limm 00101bbb00000101FBBB111110AAAAAA. */
+{ "divu", 0x28050F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* divu<.f> 0,limm,c 0010111000000101F111CCCCCC111110. */
+{ "divu", 0x2E05703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* divu<.f> 0,b,limm 00101bbb00000101FBBB111110111110. */
+{ "divu", 0x28050FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* divu<.f><.cc> b,b,limm 00101bbb11000101FBBB1111100QQQQQ. */
+{ "divu", 0x28C50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* divu<.f><.cc> 0,limm,c 0010111011000101F111CCCCCC0QQQQQ. */
+{ "divu", 0x2EC57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* divu<.f> a,limm,c 0010111000000101F111CCCCCCAAAAAA. */
+{ "divu", 0x2E057000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* divu<.f> a,b,limm 00101bbb00000101FBBB111110AAAAAA. */
+{ "divu", 0x28050F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* divu<.f> 0,limm,c 0010111000000101F111CCCCCC111110. */
+{ "divu", 0x2E05703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* divu<.f> 0,b,limm 00101bbb00000101FBBB111110111110. */
+{ "divu", 0x28050FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* divu<.f><.cc> b,b,limm 00101bbb11000101FBBB1111100QQQQQ. */
+{ "divu", 0x28C50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* divu<.f><.cc> 0,limm,c 0010111011000101F111CCCCCC0QQQQQ. */
+{ "divu", 0x2EC57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* divu<.f> a,limm,u6 0010111001000101F111uuuuuuAAAAAA. */
+{ "divu", 0x2E457000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* divu<.f> 0,limm,u6 0010111001000101F111uuuuuu111110. */
+{ "divu", 0x2E45703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divu<.f><.cc> 0,limm,u6 0010111011000101F111uuuuuu1QQQQQ. */
+{ "divu", 0x2EC57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divu<.f> a,limm,u6 0010111001000101F111uuuuuuAAAAAA. */
+{ "divu", 0x2E457000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* divu<.f> 0,limm,u6 0010111001000101F111uuuuuu111110. */
+{ "divu", 0x2E45703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divu<.f><.cc> 0,limm,u6 0010111011000101F111uuuuuu1QQQQQ. */
+{ "divu", 0x2EC57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divu<.f> 0,limm,s12 0010111010000101F111ssssssSSSSSS. */
+{ "divu", 0x2E857000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* divu<.f> 0,limm,s12 0010111010000101F111ssssssSSSSSS. */
+{ "divu", 0x2E857000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* divu<.f> a,limm,limm 0010111000000101F111111110AAAAAA. */
+{ "divu", 0x2E057F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* divu<.f> 0,limm,limm 0010111000000101F111111110111110. */
+{ "divu", 0x2E057FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* divu<.f><.cc> 0,limm,limm 0010111011000101F1111111100QQQQQ. */
+{ "divu", 0x2EC57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* divu<.f> a,limm,limm 0010111000000101F111111110AAAAAA. */
+{ "divu", 0x2E057F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* divu<.f> 0,limm,limm 0010111000000101F111111110111110. */
+{ "divu", 0x2E057FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* divu<.f><.cc> 0,limm,limm 0010111011000101F1111111100QQQQQ. */
+{ "divu", 0x2EC57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* divul<.f> RA,RB,RC 01011bbb00100101FBBBccccccaaaaaa. */
+{ "divul", 0x58250000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* divul<.f> 0,RB,RC 01011bbb00100101FBBBcccccc111110. */
+{ "divul", 0x5825003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* divul<.f><.cc> RB,RB,RC 01011bbb11100101FBBBcccccc0QQQQQ. */
+{ "divul", 0x58E50000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* divul<.f> RA,RB,u6 01011bbb01100101FBBBuuuuuuaaaaaa. */
+{ "divul", 0x58650000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* divul<.f> 0,RB,u6 01011bbb01100101FBBBuuuuuu111110. */
+{ "divul", 0x5865003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* divul<.f><.cc> RB,RB,u6 01011bbb11100101FBBBuuuuuu1QQQQQ. */
+{ "divul", 0x58E50020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* divul<.f> RB,RB,s12 01011bbb10100101FBBBssssssSSSSSS. */
+{ "divul", 0x58A50000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* divul<.f> RA,ximm,RC 0101110000100101F111ccccccaaaaaa. */
+{ "divul", 0x5C257000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* divul<.f> RA,RB,ximm 01011bbb00100101FBBB111100aaaaaa. */
+{ "divul", 0x58250F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* divul<.f> 0,ximm,RC 0101110000100101F111cccccc111110. */
+{ "divul", 0x5C25703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* divul<.f> 0,RB,ximm 01011bbb00100101FBBB111100111110. */
+{ "divul", 0x58250F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* divul<.f><.cc> 0,ximm,RC 0101110011100101F111cccccc0QQQQQ. */
+{ "divul", 0x5CE57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* divul<.f><.cc> RB,RB,ximm 01011bbb11100101FBBB1111000QQQQQ. */
+{ "divul", 0x58E50F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* divul<.f> RA,ximm,u6 0101110001100101F111uuuuuuaaaaaa. */
+{ "divul", 0x5C657000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* divul<.f> 0,ximm,u6 0101110001100101F111uuuuuu111110. */
+{ "divul", 0x5C65703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* divul<.f><.cc> 0,ximm,u6 0101110011100101F111uuuuuu1QQQQQ. */
+{ "divul", 0x5CE57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divul<.f> RA,limm,RC 0101111000100101F111ccccccaaaaaa. */
+{ "divul", 0x5E257000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* divul<.f> RA,RB,limm 01011bbb00100101FBBB111110aaaaaa. */
+{ "divul", 0x58250F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* divul<.f> 0,limm,RC 0101111000100101F111cccccc111110. */
+{ "divul", 0x5E25703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* divul<.f> 0,RB,limm 01011bbb00100101FBBB111110111110. */
+{ "divul", 0x58250FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* divul<.f><.cc> 0,limm,RC 0101111011100101F111cccccc0QQQQQ. */
+{ "divul", 0x5EE57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* divul<.f><.cc> RB,RB,limm 01011bbb11100101FBBB1111100QQQQQ. */
+{ "divul", 0x58E50F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* divul<.f> RA,limm,u6 0101111001100101F111uuuuuuaaaaaa. */
+{ "divul", 0x5E657000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divul<.f> 0,limm,u6 0101111001100101F111uuuuuu111110. */
+{ "divul", 0x5E65703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* divul<.f><.cc> 0,limm,u6 0101111011100101F111uuuuuu1QQQQQ. */
+{ "divul", 0x5EE57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* divul<.f> 0,ximm,s12 0101110010100101F111ssssssSSSSSS. */
+{ "divul", 0x5CA57000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* divul<.f> 0,limm,s12 0101111010100101F111ssssssSSSSSS. */
+{ "divul", 0x5EA57000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* divul<.f> RA,ximm,ximm 0101110000100101F111111100aaaaaa. */
+{ "divul", 0x5C257F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* divul<.f> 0,ximm,ximm 0101110000100101F111111100111110. */
+{ "divul", 0x5C257F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* divul<.f><.cc> 0,ximm,ximm 0101110011100101F1111111000QQQQQ. */
+{ "divul", 0x5CE57F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* divul<.f> RA,limm,limm 0101111000100101F111111110aaaaaa. */
+{ "divul", 0x5E257F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* divul<.f> 0,limm,limm 0101111000100101F111111110111110. */
+{ "divul", 0x5E257FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* divul<.f><.cc> 0,limm,limm 0101111011100101F1111111100QQQQQ. */
+{ "divul", 0x5EE57F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmach<.f> a,b,c 00101bbb00010010FBBBCCCCCCAAAAAA. */
+{ "dmach", 0x28120000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmach<.f> 0,b,c 00101bbb00010010FBBBCCCCCC111110. */
+{ "dmach", 0x2812003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* dmach<.f><.cc> b,b,c 00101bbb11010010FBBBCCCCCC0QQQQQ. */
+{ "dmach", 0x28D20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmach<.f> a,b,u6 00101bbb01010010FBBBuuuuuuAAAAAA. */
+{ "dmach", 0x28520000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmach<.f> 0,b,u6 00101bbb01010010FBBBuuuuuu111110. */
+{ "dmach", 0x2852003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmach<.f><.cc> b,b,u6 00101bbb11010010FBBBuuuuuu1QQQQQ. */
+{ "dmach", 0x28D20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmach<.f> b,b,s12 00101bbb10010010FBBBssssssSSSSSS. */
+{ "dmach", 0x28920000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmach<.f> a,limm,c 0010111000010010F111CCCCCCAAAAAA. */
+{ "dmach", 0x2E127000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmach<.f> a,b,limm 00101bbb00010010FBBB111110AAAAAA. */
+{ "dmach", 0x28120F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmach<.f> 0,limm,c 0010111000010010F111CCCCCC111110. */
+{ "dmach", 0x2E12703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmach<.f> 0,b,limm 00101bbb00010010FBBB111110111110. */
+{ "dmach", 0x28120FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmach<.f><.cc> b,b,limm 00101bbb11010010FBBB1111100QQQQQ. */
+{ "dmach", 0x28D20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmach<.f><.cc> 0,limm,c 0010111011010010F111CCCCCC0QQQQQ. */
+{ "dmach", 0x2ED27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmach<.f> a,limm,u6 0010111001010010F111uuuuuuAAAAAA. */
+{ "dmach", 0x2E527000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmach<.f> 0,limm,u6 0010111001010010F111uuuuuu111110. */
+{ "dmach", 0x2E52703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmach<.f><.cc> 0,limm,u6 0010111011010010F111uuuuuu1QQQQQ. */
+{ "dmach", 0x2ED27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmach<.f> 0,limm,s12 0010111010010010F111ssssssSSSSSS. */
+{ "dmach", 0x2E927000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmach<.f> a,limm,limm 0010111000010010F111111110AAAAAA. */
+{ "dmach", 0x2E127F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmach<.f> 0,limm,limm 0010111000010010F111111110111110. */
+{ "dmach", 0x2E127FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmach<.f><.cc> 0,limm,limm 0010111011010010F1111111100QQQQQ. */
+{ "dmach", 0x2ED27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmachbl<.f> a,b,c 00110bbb00011000FBBBCCCCCCAAAAAA. */
+{ "dmachbl", 0x30180000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmachbl<.f> 0,b,c 00110bbb00011000FBBBCCCCCC111110. */
+{ "dmachbl", 0x3018003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmachbl<.f><.cc> b,b,c 00110bbb11011000FBBBCCCCCC0QQQQQ. */
+{ "dmachbl", 0x30D80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmachbl<.f> a,b,u6 00110bbb01011000FBBBuuuuuuAAAAAA. */
+{ "dmachbl", 0x30580000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmachbl<.f> 0,b,u6 00110bbb01011000FBBBuuuuuu111110. */
+{ "dmachbl", 0x3058003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmachbl<.f><.cc> b,b,u6 00110bbb11011000FBBBuuuuuu1QQQQQ. */
+{ "dmachbl", 0x30D80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachbl<.f> b,b,s12 00110bbb10011000FBBBssssssSSSSSS. */
+{ "dmachbl", 0x30980000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmachbl<.f> a,limm,c 0011011000011000F111CCCCCCAAAAAA. */
+{ "dmachbl", 0x36187000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmachbl<.f> a,b,limm 00110bbb00011000FBBB111110AAAAAA. */
+{ "dmachbl", 0x30180F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmachbl<.f> 0,limm,c 0011011000011000F111CCCCCC111110. */
+{ "dmachbl", 0x3618703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmachbl<.f> 0,b,limm 00110bbb00011000FBBB111110111110. */
+{ "dmachbl", 0x30180FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmachbl<.f><.cc> b,b,limm 00110bbb11011000FBBB1111100QQQQQ. */
+{ "dmachbl", 0x30D80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmachbl<.f><.cc> 0,limm,c 0011011011011000F111CCCCCC0QQQQQ. */
+{ "dmachbl", 0x36D87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmachbl<.f> a,limm,u6 0011011001011000F111uuuuuuAAAAAA. */
+{ "dmachbl", 0x36587000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachbl<.f> 0,limm,u6 0011011001011000F111uuuuuu111110. */
+{ "dmachbl", 0x3658703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachbl<.f><.cc> 0,limm,u6 0011011011011000F111uuuuuu1QQQQQ. */
+{ "dmachbl", 0x36D87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachbl<.f> 0,limm,s12 0011011010011000F111ssssssSSSSSS. */
+{ "dmachbl", 0x36987000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmachbl<.f> a,limm,limm 0011011000011000F111111110AAAAAA. */
+{ "dmachbl", 0x36187F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmachbl<.f> 0,limm,limm 0011011000011000F111111110111110. */
+{ "dmachbl", 0x36187FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmachbl<.f><.cc> 0,limm,limm 0011011011011000F1111111100QQQQQ. */
+{ "dmachbl", 0x36D87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmachbm<.f> a,b,c 00110bbb00011001FBBBCCCCCCAAAAAA. */
+{ "dmachbm", 0x30190000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmachbm<.f> 0,b,c 00110bbb00011001FBBBCCCCCC111110. */
+{ "dmachbm", 0x3019003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmachbm<.f><.cc> b,b,c 00110bbb11011001FBBBCCCCCC0QQQQQ. */
+{ "dmachbm", 0x30D90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmachbm<.f> a,b,u6 00110bbb01011001FBBBuuuuuuAAAAAA. */
+{ "dmachbm", 0x30590000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmachbm<.f> 0,b,u6 00110bbb01011001FBBBuuuuuu111110. */
+{ "dmachbm", 0x3059003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmachbm<.f><.cc> b,b,u6 00110bbb11011001FBBBuuuuuu1QQQQQ. */
+{ "dmachbm", 0x30D90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachbm<.f> b,b,s12 00110bbb10011001FBBBssssssSSSSSS. */
+{ "dmachbm", 0x30990000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmachbm<.f> a,limm,c 0011011000011001F111CCCCCCAAAAAA. */
+{ "dmachbm", 0x36197000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmachbm<.f> a,b,limm 00110bbb00011001FBBB111110AAAAAA. */
+{ "dmachbm", 0x30190F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmachbm<.f> 0,limm,c 0011011000011001F111CCCCCC111110. */
+{ "dmachbm", 0x3619703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmachbm<.f> 0,b,limm 00110bbb00011001FBBB111110111110. */
+{ "dmachbm", 0x30190FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmachbm<.f><.cc> b,b,limm 00110bbb11011001FBBB1111100QQQQQ. */
+{ "dmachbm", 0x30D90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmachbm<.f><.cc> 0,limm,c 0011011011011001F111CCCCCC0QQQQQ. */
+{ "dmachbm", 0x36D97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmachbm<.f> a,limm,u6 0011011001011001F111uuuuuuAAAAAA. */
+{ "dmachbm", 0x36597000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachbm<.f> 0,limm,u6 0011011001011001F111uuuuuu111110. */
+{ "dmachbm", 0x3659703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachbm<.f><.cc> 0,limm,u6 0011011011011001F111uuuuuu1QQQQQ. */
+{ "dmachbm", 0x36D97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachbm<.f> 0,limm,s12 0011011010011001F111ssssssSSSSSS. */
+{ "dmachbm", 0x36997000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmachbm<.f> a,limm,limm 0011011000011001F111111110AAAAAA. */
+{ "dmachbm", 0x36197F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmachbm<.f> 0,limm,limm 0011011000011001F111111110111110. */
+{ "dmachbm", 0x36197FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmachbm<.f><.cc> 0,limm,limm 0011011011011001F1111111100QQQQQ. */
+{ "dmachbm", 0x36D97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmachf<.f> a,b,c 00101bbb00101100FBBBCCCCCCAAAAAA. */
+{ "dmachf", 0x282C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmachf<.f> 0,b,c 00101bbb00101100FBBBCCCCCC111110. */
+{ "dmachf", 0x282C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmachf<.f><.cc> b,b,c 00101bbb11101100FBBBCCCCCC0QQQQQ. */
+{ "dmachf", 0x28EC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmachf<.f> a,b,u6 00101bbb01101100FBBBuuuuuuAAAAAA. */
+{ "dmachf", 0x286C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmachf<.f> 0,b,u6 00101bbb01101100FBBBuuuuuu111110. */
+{ "dmachf", 0x286C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmachf<.f><.cc> b,b,u6 00101bbb11101100FBBBuuuuuu1QQQQQ. */
+{ "dmachf", 0x28EC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachf<.f> b,b,s12 00101bbb10101100FBBBssssssSSSSSS. */
+{ "dmachf", 0x28AC0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmachf<.f> a,limm,c 0010111000101100F111CCCCCCAAAAAA. */
+{ "dmachf", 0x2E2C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmachf<.f> a,b,limm 00101bbb00101100FBBB111110AAAAAA. */
+{ "dmachf", 0x282C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmachf<.f> 0,limm,c 0010111001101100F111CCCCCC111110. */
+{ "dmachf", 0x2E6C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmachf<.f> 0,b,limm 00101bbb00101100FBBB111110111110. */
+{ "dmachf", 0x282C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmachf<.f><.cc> b,b,limm 00101bbb11101100FBBB1111100QQQQQ. */
+{ "dmachf", 0x28EC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmachf<.f><.cc> 0,limm,c 0010111011101100F111CCCCCC0QQQQQ. */
+{ "dmachf", 0x2EEC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmachf<.f> a,limm,u6 0010111001101100F111uuuuuuAAAAAA. */
+{ "dmachf", 0x2E6C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachf<.f> 0,limm,u6 0010111001101100F111uuuuuu111110. */
+{ "dmachf", 0x2E6C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachf<.f><.cc> 0,limm,u6 0010111011101100F111uuuuuu1QQQQQ. */
+{ "dmachf", 0x2EEC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachf<.f> 0,limm,s12 0010111010101100F111ssssssSSSSSS. */
+{ "dmachf", 0x2EAC7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmachf<.f> a,limm,limm 0010111000101100F111111110AAAAAA. */
+{ "dmachf", 0x2E2C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmachf<.f> 0,limm,limm 0010111000101100F111111110111110. */
+{ "dmachf", 0x2E2C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmachf<.f><.cc> 0,limm,limm 0010111011101100F1111111100QQQQQ. */
+{ "dmachf", 0x2EEC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmachfr<.f> a,b,c 00101bbb00101101FBBBCCCCCCAAAAAA. */
+{ "dmachfr", 0x282D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmachfr<.f> 0,b,c 00101bbb00101101FBBBCCCCCC111110. */
+{ "dmachfr", 0x282D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmachfr<.f><.cc> b,b,c 00101bbb11101101FBBBCCCCCC0QQQQQ. */
+{ "dmachfr", 0x28ED0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmachfr<.f> a,b,u6 00101bbb01101101FBBBuuuuuuAAAAAA. */
+{ "dmachfr", 0x286D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmachfr<.f> 0,b,u6 00101bbb01101101FBBBuuuuuu111110. */
+{ "dmachfr", 0x286D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmachfr<.f><.cc> b,b,u6 00101bbb11101101FBBBuuuuuu1QQQQQ. */
+{ "dmachfr", 0x28ED0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachfr<.f> b,b,s12 00101bbb10101101FBBBssssssSSSSSS. */
+{ "dmachfr", 0x28AD0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmachfr<.f> a,limm,c 0010111000101101F111CCCCCCAAAAAA. */
+{ "dmachfr", 0x2E2D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmachfr<.f> a,b,limm 00101bbb00101101FBBB111110AAAAAA. */
+{ "dmachfr", 0x282D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmachfr<.f> 0,limm,c 0010111001101101F111CCCCCC111110. */
+{ "dmachfr", 0x2E6D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmachfr<.f> 0,b,limm 00101bbb00101101FBBB111110111110. */
+{ "dmachfr", 0x282D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmachfr<.f><.cc> b,b,limm 00101bbb11101101FBBB1111100QQQQQ. */
+{ "dmachfr", 0x28ED0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmachfr<.f><.cc> 0,limm,c 0010111011101101F111CCCCCC0QQQQQ. */
+{ "dmachfr", 0x2EED7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmachfr<.f> a,limm,u6 0010111001101101F111uuuuuuAAAAAA. */
+{ "dmachfr", 0x2E6D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachfr<.f> 0,limm,u6 0010111001101101F111uuuuuu111110. */
+{ "dmachfr", 0x2E6D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachfr<.f><.cc> 0,limm,u6 0010111011101101F111uuuuuu1QQQQQ. */
+{ "dmachfr", 0x2EED7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachfr<.f> 0,limm,s12 0010111010101101F111ssssssSSSSSS. */
+{ "dmachfr", 0x2EAD7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmachfr<.f> a,limm,limm 0010111000101101F111111110AAAAAA. */
+{ "dmachfr", 0x2E2D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmachfr<.f> 0,limm,limm 0010111000101101F111111110111110. */
+{ "dmachfr", 0x2E2D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmachfr<.f><.cc> 0,limm,limm 0010111011101101F1111111100QQQQQ. */
+{ "dmachfr", 0x2EED7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmachu<.f> a,b,c 00101bbb00010011FBBBCCCCCCAAAAAA. */
+{ "dmachu", 0x28130000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmachu<.f> 0,b,c 00101bbb00010011FBBBCCCCCC111110. */
+{ "dmachu", 0x2813003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* dmachu<.f><.cc> b,b,c 00101bbb11010011FBBBCCCCCC0QQQQQ. */
+{ "dmachu", 0x28D30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmachu<.f> a,b,u6 00101bbb01010011FBBBuuuuuuAAAAAA. */
+{ "dmachu", 0x28530000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmachu<.f> 0,b,u6 00101bbb01010011FBBBuuuuuu111110. */
+{ "dmachu", 0x2853003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmachu<.f><.cc> b,b,u6 00101bbb11010011FBBBuuuuuu1QQQQQ. */
+{ "dmachu", 0x28D30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachu<.f> b,b,s12 00101bbb10010011FBBBssssssSSSSSS. */
+{ "dmachu", 0x28930000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmachu<.f> a,limm,c 0010111000010011F111CCCCCCAAAAAA. */
+{ "dmachu", 0x2E137000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmachu<.f> a,b,limm 00101bbb00010011FBBB111110AAAAAA. */
+{ "dmachu", 0x28130F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmachu<.f> 0,limm,c 0010111000010011F111CCCCCC111110. */
+{ "dmachu", 0x2E13703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmachu<.f> 0,b,limm 00101bbb00010011FBBB111110111110. */
+{ "dmachu", 0x28130FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmachu<.f><.cc> b,b,limm 00101bbb11010011FBBB1111100QQQQQ. */
+{ "dmachu", 0x28D30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmachu<.f><.cc> 0,limm,c 0010111011010011F111CCCCCC0QQQQQ. */
+{ "dmachu", 0x2ED37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmachu<.f> a,limm,u6 0010111001010011F111uuuuuuAAAAAA. */
+{ "dmachu", 0x2E537000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachu<.f> 0,limm,u6 0010111001010011F111uuuuuu111110. */
+{ "dmachu", 0x2E53703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmachu<.f><.cc> 0,limm,u6 0010111011010011F111uuuuuu1QQQQQ. */
+{ "dmachu", 0x2ED37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmachu<.f> 0,limm,s12 0010111010010011F111ssssssSSSSSS. */
+{ "dmachu", 0x2E937000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmachu<.f> a,limm,limm 0010111000010011F111111110AAAAAA. */
+{ "dmachu", 0x2E137F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmachu<.f> 0,limm,limm 0010111000010011F111111110111110. */
+{ "dmachu", 0x2E137FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmachu<.f><.cc> 0,limm,limm 0010111011010011F1111111100QQQQQ. */
+{ "dmachu", 0x2ED37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmacwh<.f> a,b,c 00101bbb00110110FBBBCCCCCCAAAAAA. */
+{ "dmacwh", 0x28360000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmacwh<.f> 0,b,c 00101bbb00110110FBBBCCCCCC111110. */
+{ "dmacwh", 0x2836003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmacwh<.f><.cc> b,b,c 00101bbb11110110FBBBCCCCCC0QQQQQ. */
+{ "dmacwh", 0x28F60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmacwh<.f> a,b,u6 00101bbb01110110FBBBuuuuuuAAAAAA. */
+{ "dmacwh", 0x28760000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwh<.f> 0,b,u6 00101bbb01110110FBBBuuuuuu111110. */
+{ "dmacwh", 0x2876003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwh<.f><.cc> b,b,u6 00101bbb11110110FBBBuuuuuu1QQQQQ. */
+{ "dmacwh", 0x28F60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwh<.f> b,b,s12 00101bbb10110110FBBBssssssSSSSSS. */
+{ "dmacwh", 0x28B60000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmacwh<.f> a,limm,c 0010111000110110F111CCCCCCAAAAAA. */
+{ "dmacwh", 0x2E367000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmacwh<.f> a,b,limm 00101bbb00110110FBBB111110AAAAAA. */
+{ "dmacwh", 0x28360F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmacwh<.f> 0,limm,c 0010111000110110F111CCCCCC111110. */
+{ "dmacwh", 0x2E36703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmacwh<.f> 0,b,limm 00101bbb00110110FBBB111110111110. */
+{ "dmacwh", 0x28360FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmacwh<.f><.cc> b,b,limm 00101bbb11110110FBBB1111100QQQQQ. */
+{ "dmacwh", 0x28F60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmacwh<.f><.cc> 0,limm,c 0010111011110110F111CCCCCC0QQQQQ. */
+{ "dmacwh", 0x2EF67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmacwh<.f> a,limm,u6 0010111001110110F111uuuuuuAAAAAA. */
+{ "dmacwh", 0x2E767000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwh<.f> 0,limm,u6 0010111001110110F111uuuuuu111110. */
+{ "dmacwh", 0x2E76703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwh<.f><.cc> 0,limm,u6 0010111011110110F111uuuuuu1QQQQQ. */
+{ "dmacwh", 0x2EF67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwh<.f> 0,limm,s12 0010111010110110F111ssssssSSSSSS. */
+{ "dmacwh", 0x2EB67000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmacwh<.f> a,limm,limm 0010111000110110F111111110AAAAAA. */
+{ "dmacwh", 0x2E367F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwh<.f> 0,limm,limm 0010111000110110F111111110111110. */
+{ "dmacwh", 0x2E367FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwh<.f><.cc> 0,limm,limm 0010111011110110F1111111100QQQQQ. */
+{ "dmacwh", 0x2EF67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmacwhf<.f> a,b,c 00110bbb00110111FBBBCCCCCCAAAAAA. */
+{ "dmacwhf", 0x30370000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmacwhf<.f> 0,b,c 00110bbb00110111FBBBCCCCCC111110. */
+{ "dmacwhf", 0x3037003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmacwhf<.f><.cc> b,b,c 00110bbb11110111FBBBCCCCCC0QQQQQ. */
+{ "dmacwhf", 0x30F70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmacwhf<.f> a,b,u6 00110bbb01110111FBBBuuuuuuAAAAAA. */
+{ "dmacwhf", 0x30770000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwhf<.f> 0,b,u6 00110bbb01110111FBBBuuuuuu111110. */
+{ "dmacwhf", 0x3077003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwhf<.f><.cc> b,b,u6 00110bbb11110111FBBBuuuuuu1QQQQQ. */
+{ "dmacwhf", 0x30F70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwhf<.f> b,b,s12 00110bbb10110111FBBBssssssSSSSSS. */
+{ "dmacwhf", 0x30B70000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmacwhf<.f> a,limm,c 0011011000110111F111CCCCCCAAAAAA. */
+{ "dmacwhf", 0x36377000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmacwhf<.f> a,b,limm 00110bbb00110111FBBB111110AAAAAA. */
+{ "dmacwhf", 0x30370F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmacwhf<.f> 0,limm,c 0011011000110111F111CCCCCC111110. */
+{ "dmacwhf", 0x3637703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmacwhf<.f> 0,b,limm 00110bbb00110111FBBB111110111110. */
+{ "dmacwhf", 0x30370FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmacwhf<.f><.cc> b,b,limm 00110bbb11110111FBBB1111100QQQQQ. */
+{ "dmacwhf", 0x30F70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmacwhf<.f><.cc> 0,limm,c 0011011011110111F111CCCCCC0QQQQQ. */
+{ "dmacwhf", 0x36F77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmacwhf<.f> a,limm,u6 0011011001110111F111uuuuuuAAAAAA. */
+{ "dmacwhf", 0x36777000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwhf<.f> 0,limm,u6 0011011001110111F111uuuuuu111110. */
+{ "dmacwhf", 0x3677703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwhf<.f><.cc> 0,limm,u6 0011011011110111F111uuuuuu1QQQQQ. */
+{ "dmacwhf", 0x36F77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwhf<.f> 0,limm,s12 0011011010110111F111ssssssSSSSSS. */
+{ "dmacwhf", 0x36B77000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmacwhf<.f> a,limm,limm 0011011000110111F111111110AAAAAA. */
+{ "dmacwhf", 0x36377F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwhf<.f> 0,limm,limm 0011011000110111F111111110111110. */
+{ "dmacwhf", 0x36377FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwhf<.f><.cc> 0,limm,limm 0011011011110111F1111111100QQQQQ. */
+{ "dmacwhf", 0x36F77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmacwhu<.f> a,b,c 00101bbb00110111FBBBCCCCCCAAAAAA. */
+{ "dmacwhu", 0x28370000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmacwhu<.f> 0,b,c 00101bbb00110111FBBBCCCCCC111110. */
+{ "dmacwhu", 0x2837003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmacwhu<.f><.cc> b,b,c 00101bbb11110111FBBBCCCCCC0QQQQQ. */
+{ "dmacwhu", 0x28F70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmacwhu<.f> a,b,u6 00101bbb01110111FBBBuuuuuuAAAAAA. */
+{ "dmacwhu", 0x28770000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwhu<.f> 0,b,u6 00101bbb01110111FBBBuuuuuu111110. */
+{ "dmacwhu", 0x2877003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmacwhu<.f><.cc> b,b,u6 00101bbb11110111FBBBuuuuuu1QQQQQ. */
+{ "dmacwhu", 0x28F70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwhu<.f> b,b,s12 00101bbb10110111FBBBssssssSSSSSS. */
+{ "dmacwhu", 0x28B70000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmacwhu<.f> a,limm,c 0010111000110111F111CCCCCCAAAAAA. */
+{ "dmacwhu", 0x2E377000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmacwhu<.f> a,b,limm 00101bbb00110111FBBB111110AAAAAA. */
+{ "dmacwhu", 0x28370F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmacwhu<.f> 0,limm,c 0010111000110111F111CCCCCC111110. */
+{ "dmacwhu", 0x2E37703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmacwhu<.f> 0,b,limm 00101bbb00110111FBBB111110111110. */
+{ "dmacwhu", 0x28370FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmacwhu<.f><.cc> b,b,limm 00101bbb11110111FBBB1111100QQQQQ. */
+{ "dmacwhu", 0x28F70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmacwhu<.f><.cc> 0,limm,c 0010111011110111F111CCCCCC0QQQQQ. */
+{ "dmacwhu", 0x2EF77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmacwhu<.f> a,limm,u6 0010111001110111F111uuuuuuAAAAAA. */
+{ "dmacwhu", 0x2E777000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwhu<.f> 0,limm,u6 0010111001110111F111uuuuuu111110. */
+{ "dmacwhu", 0x2E77703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmacwhu<.f><.cc> 0,limm,u6 0010111011110111F111uuuuuu1QQQQQ. */
+{ "dmacwhu", 0x2EF77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmacwhu<.f> 0,limm,s12 0010111010110111F111ssssssSSSSSS. */
+{ "dmacwhu", 0x2EB77000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmacwhu<.f> a,limm,limm 0010111000110111F111111110AAAAAA. */
+{ "dmacwhu", 0x2E377F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwhu<.f> 0,limm,limm 0010111000110111F111111110111110. */
+{ "dmacwhu", 0x2E377FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmacwhu<.f><.cc> 0,limm,limm 0010111011110111F1111111100QQQQQ. */
+{ "dmacwhu", 0x2EF77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmb 00100011011011110001RRR000111111. */
+{ "dmb", 0x236F103F, 0xFFFFF1FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* dmb u3 00100011011011110001RRRuuu111111. */
+{ "dmb", 0x236F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM3_23 }, { 0 }},
+
+/* dmpyh<.f> a,b,c 00101bbb00010000FBBBCCCCCCAAAAAA. */
+{ "dmpyh", 0x28100000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyh<.f> 0,b,c 00101bbb00010000FBBBCCCCCC111110. */
+{ "dmpyh", 0x2810003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* dmpyh<.f><.cc> b,b,c 00101bbb11010000FBBBCCCCCC0QQQQQ. */
+{ "dmpyh", 0x28D00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyh<.f> a,b,u6 00101bbb01010000FBBBuuuuuuAAAAAA. */
+{ "dmpyh", 0x28500000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyh<.f> 0,b,u6 00101bbb01010000FBBBuuuuuu111110. */
+{ "dmpyh", 0x2850003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyh<.f><.cc> b,b,u6 00101bbb11010000FBBBuuuuuu1QQQQQ. */
+{ "dmpyh", 0x28D00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyh<.f> b,b,s12 00101bbb10010000FBBBssssssSSSSSS. */
+{ "dmpyh", 0x28900000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyh<.f> a,limm,c 0010111000010000F111CCCCCCAAAAAA. */
+{ "dmpyh", 0x2E107000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyh<.f> a,b,limm 00101bbb00010000FBBB111110AAAAAA. */
+{ "dmpyh", 0x28100F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyh<.f> 0,limm,c 0010111000010000F111CCCCCC111110. */
+{ "dmpyh", 0x2E10703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyh<.f> 0,b,limm 00101bbb00010000FBBB111110111110. */
+{ "dmpyh", 0x28100FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyh<.f><.cc> b,b,limm 00101bbb11010000FBBB1111100QQQQQ. */
+{ "dmpyh", 0x28D00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyh<.f><.cc> 0,limm,c 0010111011010000F111CCCCCC0QQQQQ. */
+{ "dmpyh", 0x2ED07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyh<.f> a,limm,u6 0010111001010000F111uuuuuuAAAAAA. */
+{ "dmpyh", 0x2E507000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyh<.f> 0,limm,u6 0010111001010000F111uuuuuu111110. */
+{ "dmpyh", 0x2E50703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyh<.f><.cc> 0,limm,u6 0010111011010000F111uuuuuu1QQQQQ. */
+{ "dmpyh", 0x2ED07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyh<.f> 0,limm,s12 0010111010010000F111ssssssSSSSSS. */
+{ "dmpyh", 0x2E907000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyh<.f> a,limm,limm 0010111000010000F111111110AAAAAA. */
+{ "dmpyh", 0x2E107F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyh<.f> 0,limm,limm 0010111000010000F111111110111110. */
+{ "dmpyh", 0x2E107FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyh<.f><.cc> 0,limm,limm 0010111011010000F1111111100QQQQQ. */
+{ "dmpyh", 0x2ED07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhbl<.f> a,b,c 00110bbb00010110FBBBCCCCCCAAAAAA. */
+{ "dmpyhbl", 0x30160000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhbl<.f> 0,b,c 00110bbb00010110FBBBCCCCCC111110. */
+{ "dmpyhbl", 0x3016003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhbl<.f><.cc> b,b,c 00110bbb11010110FBBBCCCCCC0QQQQQ. */
+{ "dmpyhbl", 0x30D60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhbl<.f> a,b,u6 00110bbb01010110FBBBuuuuuuAAAAAA. */
+{ "dmpyhbl", 0x30560000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhbl<.f> 0,b,u6 00110bbb01010110FBBBuuuuuu111110. */
+{ "dmpyhbl", 0x3056003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhbl<.f><.cc> b,b,u6 00110bbb11010110FBBBuuuuuu1QQQQQ. */
+{ "dmpyhbl", 0x30D60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhbl<.f> b,b,s12 00110bbb10010110FBBBssssssSSSSSS. */
+{ "dmpyhbl", 0x30960000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhbl<.f> a,limm,c 0011011000010110F111CCCCCCAAAAAA. */
+{ "dmpyhbl", 0x36167000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhbl<.f> a,b,limm 00110bbb00010110FBBB111110AAAAAA. */
+{ "dmpyhbl", 0x30160F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhbl<.f> 0,limm,c 0011011000010110F111CCCCCC111110. */
+{ "dmpyhbl", 0x3616703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhbl<.f> 0,b,limm 00110bbb00010110FBBB111110111110. */
+{ "dmpyhbl", 0x30160FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhbl<.f><.cc> b,b,limm 00110bbb11010110FBBB1111100QQQQQ. */
+{ "dmpyhbl", 0x30D60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhbl<.f><.cc> 0,limm,c 0011011011010110F111CCCCCC0QQQQQ. */
+{ "dmpyhbl", 0x36D67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhbl<.f> a,limm,u6 0011011001010110F111uuuuuuAAAAAA. */
+{ "dmpyhbl", 0x36567000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhbl<.f> 0,limm,u6 0011011001010110F111uuuuuu111110. */
+{ "dmpyhbl", 0x3656703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhbl<.f><.cc> 0,limm,u6 0011011011010110F111uuuuuu1QQQQQ. */
+{ "dmpyhbl", 0x36D67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhbl<.f> 0,limm,s12 0011011010010110F111ssssssSSSSSS. */
+{ "dmpyhbl", 0x36967000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhbl<.f> a,limm,limm 0011011000010110F111111110AAAAAA. */
+{ "dmpyhbl", 0x36167F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhbl<.f> 0,limm,limm 0011011000010110F111111110111110. */
+{ "dmpyhbl", 0x36167FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhbl<.f><.cc> 0,limm,limm 0011011011010110F1111111100QQQQQ. */
+{ "dmpyhbl", 0x36D67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhbm<.f> a,b,c 00110bbb00010111FBBBCCCCCCAAAAAA. */
+{ "dmpyhbm", 0x30170000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhbm<.f> 0,b,c 00110bbb00010111FBBBCCCCCC111110. */
+{ "dmpyhbm", 0x3017003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhbm<.f><.cc> b,b,c 00110bbb11010111FBBBCCCCCC0QQQQQ. */
+{ "dmpyhbm", 0x30D70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhbm<.f> a,b,u6 00110bbb01010111FBBBuuuuuuAAAAAA. */
+{ "dmpyhbm", 0x30570000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhbm<.f> 0,b,u6 00110bbb01010111FBBBuuuuuu111110. */
+{ "dmpyhbm", 0x3057003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhbm<.f><.cc> b,b,u6 00110bbb11010111FBBBuuuuuu1QQQQQ. */
+{ "dmpyhbm", 0x30D70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhbm<.f> b,b,s12 00110bbb10010111FBBBssssssSSSSSS. */
+{ "dmpyhbm", 0x30970000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhbm<.f> a,limm,c 0011011000010111F111CCCCCCAAAAAA. */
+{ "dmpyhbm", 0x36177000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhbm<.f> a,b,limm 00110bbb00010111FBBB111110AAAAAA. */
+{ "dmpyhbm", 0x30170F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhbm<.f> 0,limm,c 0011011000010111F111CCCCCC111110. */
+{ "dmpyhbm", 0x3617703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhbm<.f> 0,b,limm 00110bbb00010111FBBB111110111110. */
+{ "dmpyhbm", 0x30170FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhbm<.f><.cc> b,b,limm 00110bbb11010111FBBB1111100QQQQQ. */
+{ "dmpyhbm", 0x30D70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhbm<.f><.cc> 0,limm,c 0011011011010111F111CCCCCC0QQQQQ. */
+{ "dmpyhbm", 0x36D77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhbm<.f> a,limm,u6 0011011001010111F111uuuuuuAAAAAA. */
+{ "dmpyhbm", 0x36577000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhbm<.f> 0,limm,u6 0011011001010111F111uuuuuu111110. */
+{ "dmpyhbm", 0x3657703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhbm<.f><.cc> 0,limm,u6 0011011011010111F111uuuuuu1QQQQQ. */
+{ "dmpyhbm", 0x36D77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhbm<.f> 0,limm,s12 0011011010010111F111ssssssSSSSSS. */
+{ "dmpyhbm", 0x36977000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhbm<.f> a,limm,limm 0011011000010111F111111110AAAAAA. */
+{ "dmpyhbm", 0x36177F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhbm<.f> 0,limm,limm 0011011000010111F111111110111110. */
+{ "dmpyhbm", 0x36177FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhbm<.f><.cc> 0,limm,limm 0011011011010111F1111111100QQQQQ. */
+{ "dmpyhbm", 0x36D77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhf<.f> a,b,c 00101bbb00101010FBBBCCCCCCAAAAAA. */
+{ "dmpyhf", 0x282A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhf<.f> 0,b,c 00101bbb00101010FBBBCCCCCC111110. */
+{ "dmpyhf", 0x282A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhf<.f><.cc> b,b,c 00101bbb11101010FBBBCCCCCC0QQQQQ. */
+{ "dmpyhf", 0x28EA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhf<.f> a,b,u6 00101bbb01101010FBBBuuuuuuAAAAAA. */
+{ "dmpyhf", 0x286A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhf<.f> 0,b,u6 00101bbb01101010FBBBuuuuuu111110. */
+{ "dmpyhf", 0x286A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhf<.f><.cc> b,b,u6 00101bbb11101010FBBBuuuuuu1QQQQQ. */
+{ "dmpyhf", 0x28EA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhf<.f> b,b,s12 00101bbb10101010FBBBssssssSSSSSS. */
+{ "dmpyhf", 0x28AA0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhf<.f> a,limm,c 0010111000101010F111CCCCCCAAAAAA. */
+{ "dmpyhf", 0x2E2A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhf<.f> a,b,limm 00101bbb00101010FBBB111110AAAAAA. */
+{ "dmpyhf", 0x282A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhf<.f> 0,limm,c 0010111001101010F111CCCCCC111110. */
+{ "dmpyhf", 0x2E6A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhf<.f> 0,b,limm 00101bbb00101010FBBB111110111110. */
+{ "dmpyhf", 0x282A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhf<.f><.cc> b,b,limm 00101bbb11101010FBBB1111100QQQQQ. */
+{ "dmpyhf", 0x28EA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhf<.f><.cc> 0,limm,c 0010111011101010F111CCCCCC0QQQQQ. */
+{ "dmpyhf", 0x2EEA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhf<.f> a,limm,u6 0010111001101010F111uuuuuuAAAAAA. */
+{ "dmpyhf", 0x2E6A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhf<.f> 0,limm,u6 0010111001101010F111uuuuuu111110. */
+{ "dmpyhf", 0x2E6A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhf<.f><.cc> 0,limm,u6 0010111011101010F111uuuuuu1QQQQQ. */
+{ "dmpyhf", 0x2EEA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhf<.f> 0,limm,s12 0010111010101010F111ssssssSSSSSS. */
+{ "dmpyhf", 0x2EAA7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhf<.f> a,limm,limm 0010111000101010F111111110AAAAAA. */
+{ "dmpyhf", 0x2E2A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhf<.f> 0,limm,limm 0010111000101010F111111110111110. */
+{ "dmpyhf", 0x2E2A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhf<.f><.cc> 0,limm,limm 0010111011101010F1111111100QQQQQ. */
+{ "dmpyhf", 0x2EEA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhfr<.f> a,b,c 00101bbb00101011FBBBCCCCCCAAAAAA. */
+{ "dmpyhfr", 0x282B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhfr<.f> 0,b,c 00101bbb00101011FBBBCCCCCC111110. */
+{ "dmpyhfr", 0x282B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhfr<.f><.cc> b,b,c 00101bbb11101011FBBBCCCCCC0QQQQQ. */
+{ "dmpyhfr", 0x28EB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhfr<.f> a,b,u6 00101bbb01101011FBBBuuuuuuAAAAAA. */
+{ "dmpyhfr", 0x286B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhfr<.f> 0,b,u6 00101bbb01101011FBBBuuuuuu111110. */
+{ "dmpyhfr", 0x286B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhfr<.f><.cc> b,b,u6 00101bbb11101011FBBBuuuuuu1QQQQQ. */
+{ "dmpyhfr", 0x28EB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhfr<.f> b,b,s12 00101bbb10101011FBBBssssssSSSSSS. */
+{ "dmpyhfr", 0x28AB0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhfr<.f> a,limm,c 0010111000101011F111CCCCCCAAAAAA. */
+{ "dmpyhfr", 0x2E2B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhfr<.f> a,b,limm 00101bbb00101011FBBB111110AAAAAA. */
+{ "dmpyhfr", 0x282B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhfr<.f> 0,limm,c 0010111001101011F111CCCCCC111110. */
+{ "dmpyhfr", 0x2E6B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhfr<.f> 0,b,limm 00101bbb00101011FBBB111110111110. */
+{ "dmpyhfr", 0x282B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhfr<.f><.cc> b,b,limm 00101bbb11101011FBBB1111100QQQQQ. */
+{ "dmpyhfr", 0x28EB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhfr<.f><.cc> 0,limm,c 0010111011101011F111CCCCCC0QQQQQ. */
+{ "dmpyhfr", 0x2EEB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhfr<.f> a,limm,u6 0010111001101011F111uuuuuuAAAAAA. */
+{ "dmpyhfr", 0x2E6B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhfr<.f> 0,limm,u6 0010111001101011F111uuuuuu111110. */
+{ "dmpyhfr", 0x2E6B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhfr<.f><.cc> 0,limm,u6 0010111011101011F111uuuuuu1QQQQQ. */
+{ "dmpyhfr", 0x2EEB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhfr<.f> 0,limm,s12 0010111010101011F111ssssssSSSSSS. */
+{ "dmpyhfr", 0x2EAB7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhfr<.f> a,limm,limm 0010111000101011F111111110AAAAAA. */
+{ "dmpyhfr", 0x2E2B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhfr<.f> 0,limm,limm 0010111000101011F111111110111110. */
+{ "dmpyhfr", 0x2E2B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhfr<.f><.cc> 0,limm,limm 0010111011101011F1111111100QQQQQ. */
+{ "dmpyhfr", 0x2EEB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhu<.f> a,b,c 00101bbb00010001FBBBCCCCCCAAAAAA. */
+{ "dmpyhu", 0x28110000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhu<.f> 0,b,c 00101bbb00010001FBBBCCCCCC111110. */
+{ "dmpyhu", 0x2811003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhu<.f><.cc> b,b,c 00101bbb11010001FBBBCCCCCC0QQQQQ. */
+{ "dmpyhu", 0x28D10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhu<.f> a,b,u6 00101bbb01010001FBBBuuuuuuAAAAAA. */
+{ "dmpyhu", 0x28510000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhu<.f> 0,b,u6 00101bbb01010001FBBBuuuuuu111110. */
+{ "dmpyhu", 0x2851003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhu<.f><.cc> b,b,u6 00101bbb11010001FBBBuuuuuu1QQQQQ. */
+{ "dmpyhu", 0x28D10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhu<.f> b,b,s12 00101bbb10010001FBBBssssssSSSSSS. */
+{ "dmpyhu", 0x28910000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhu<.f> a,limm,c 0010111000010001F111CCCCCCAAAAAA. */
+{ "dmpyhu", 0x2E117000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhu<.f> a,b,limm 00101bbb00010001FBBB111110AAAAAA. */
+{ "dmpyhu", 0x28110F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhu<.f> 0,limm,c 0010111000010001F111CCCCCC111110. */
+{ "dmpyhu", 0x2E11703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhu<.f> 0,b,limm 00101bbb00010001FBBB111110111110. */
+{ "dmpyhu", 0x28110FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhu<.f><.cc> b,b,limm 00101bbb11010001FBBB1111100QQQQQ. */
+{ "dmpyhu", 0x28D10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhu<.f><.cc> 0,limm,c 0010111011010001F111CCCCCC0QQQQQ. */
+{ "dmpyhu", 0x2ED17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhu<.f> a,limm,u6 0010111001010001F111uuuuuuAAAAAA. */
+{ "dmpyhu", 0x2E517000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhu<.f> 0,limm,u6 0010111001010001F111uuuuuu111110. */
+{ "dmpyhu", 0x2E51703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhu<.f><.cc> 0,limm,u6 0010111011010001F111uuuuuu1QQQQQ. */
+{ "dmpyhu", 0x2ED17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhu<.f> 0,limm,s12 0010111010010001F111ssssssSSSSSS. */
+{ "dmpyhu", 0x2E917000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhu<.f> a,limm,limm 0010111000010001F111111110AAAAAA. */
+{ "dmpyhu", 0x2E117F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhu<.f> 0,limm,limm 0010111000010001F111111110111110. */
+{ "dmpyhu", 0x2E117FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhu<.f><.cc> 0,limm,limm 0010111011010001F1111111100QQQQQ. */
+{ "dmpyhu", 0x2ED17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpyhwf<.f> a,b,c 00101bbb00101000FBBBCCCCCCAAAAAA. */
+{ "dmpyhwf", 0x28280000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpyhwf<.f> 0,b,c 00101bbb00101000FBBBCCCCCC111110. */
+{ "dmpyhwf", 0x2828003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* dmpyhwf<.f><.cc> b,b,c 00101bbb11101000FBBBCCCCCC0QQQQQ. */
+{ "dmpyhwf", 0x28E80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpyhwf<.f> a,b,u6 00101bbb01101000FBBBuuuuuuAAAAAA. */
+{ "dmpyhwf", 0x28680000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhwf<.f> 0,b,u6 00101bbb01101000FBBBuuuuuu111110. */
+{ "dmpyhwf", 0x2868003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpyhwf<.f><.cc> b,b,u6 00101bbb11101000FBBBuuuuuu1QQQQQ. */
+{ "dmpyhwf", 0x28E80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhwf<.f> b,b,s12 00101bbb10101000FBBBssssssSSSSSS. */
+{ "dmpyhwf", 0x28A80000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpyhwf<.f> a,limm,c 0010111000101000F111CCCCCCAAAAAA. */
+{ "dmpyhwf", 0x2E287000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpyhwf<.f> a,b,limm 00101bbb00101000FBBB111110AAAAAA. */
+{ "dmpyhwf", 0x28280F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpyhwf<.f> 0,limm,c 0010111001101000F111CCCCCC111110. */
+{ "dmpyhwf", 0x2E68703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpyhwf<.f> 0,b,limm 00101bbb00101000FBBB111110111110. */
+{ "dmpyhwf", 0x28280FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpyhwf<.f><.cc> b,b,limm 00101bbb11101000FBBB1111100QQQQQ. */
+{ "dmpyhwf", 0x28E80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpyhwf<.f><.cc> 0,limm,c 0010111011101000F111CCCCCC0QQQQQ. */
+{ "dmpyhwf", 0x2EE87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpyhwf<.f> a,limm,u6 0010111001101000F111uuuuuuAAAAAA. */
+{ "dmpyhwf", 0x2E687000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhwf<.f> 0,limm,u6 0010111001101000F111uuuuuu111110. */
+{ "dmpyhwf", 0x2E68703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpyhwf<.f><.cc> 0,limm,u6 0010111011101000F111uuuuuu1QQQQQ. */
+{ "dmpyhwf", 0x2EE87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpyhwf<.f> 0,limm,s12 0010111010101000F111ssssssSSSSSS. */
+{ "dmpyhwf", 0x2EA87000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpyhwf<.f> a,limm,limm 0010111000101000F111111110AAAAAA. */
+{ "dmpyhwf", 0x2E287F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhwf<.f> 0,limm,limm 0010111000101000F111111110111110. */
+{ "dmpyhwf", 0x2E287FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpyhwf<.f><.cc> 0,limm,limm 0010111011101000F1111111100QQQQQ. */
+{ "dmpyhwf", 0x2EE87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpywh<.f> a,b,c 00101bbb00110010FBBBCCCCCCAAAAAA. */
+{ "dmpywh", 0x28320000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpywh<.f> 0,b,c 00101bbb00110010FBBBCCCCCC111110. */
+{ "dmpywh", 0x2832003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmpywh<.f><.cc> b,b,c 00101bbb11110010FBBBCCCCCC0QQQQQ. */
+{ "dmpywh", 0x28F20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpywh<.f> a,b,u6 00101bbb01110010FBBBuuuuuuAAAAAA. */
+{ "dmpywh", 0x28720000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywh<.f> 0,b,u6 00101bbb01110010FBBBuuuuuu111110. */
+{ "dmpywh", 0x2872003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywh<.f><.cc> b,b,u6 00101bbb11110010FBBBuuuuuu1QQQQQ. */
+{ "dmpywh", 0x28F20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywh<.f> b,b,s12 00101bbb10110010FBBBssssssSSSSSS. */
+{ "dmpywh", 0x28B20000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpywh<.f> a,limm,c 0010111000110010F111CCCCCCAAAAAA. */
+{ "dmpywh", 0x2E327000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpywh<.f> a,b,limm 00101bbb00110010FBBB111110AAAAAA. */
+{ "dmpywh", 0x28320F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpywh<.f> 0,limm,c 0010111000110010F111CCCCCC111110. */
+{ "dmpywh", 0x2E32703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpywh<.f> 0,b,limm 00101bbb00110010FBBB111110111110. */
+{ "dmpywh", 0x28320FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpywh<.f><.cc> b,b,limm 00101bbb11110010FBBB1111100QQQQQ. */
+{ "dmpywh", 0x28F20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpywh<.f><.cc> 0,limm,c 0010111011110010F111CCCCCC0QQQQQ. */
+{ "dmpywh", 0x2EF27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpywh<.f> a,limm,u6 0010111001110010F111uuuuuuAAAAAA. */
+{ "dmpywh", 0x2E727000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywh<.f> 0,limm,u6 0010111001110010F111uuuuuu111110. */
+{ "dmpywh", 0x2E72703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywh<.f><.cc> 0,limm,u6 0010111011110010F111uuuuuu1QQQQQ. */
+{ "dmpywh", 0x2EF27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywh<.f> 0,limm,s12 0010111010110010F111ssssssSSSSSS. */
+{ "dmpywh", 0x2EB27000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpywh<.f> a,limm,limm 0010111000110010F111111110AAAAAA. */
+{ "dmpywh", 0x2E327F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywh<.f> 0,limm,limm 0010111000110010F111111110111110. */
+{ "dmpywh", 0x2E327FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywh<.f><.cc> 0,limm,limm 0010111011110010F1111111100QQQQQ. */
+{ "dmpywh", 0x2EF27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpywhf<.f> a,b,c 00110bbb00110011FBBBCCCCCCAAAAAA. */
+{ "dmpywhf", 0x30330000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpywhf<.f> 0,b,c 00110bbb00110011FBBBCCCCCC111110. */
+{ "dmpywhf", 0x3033003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmpywhf<.f><.cc> b,b,c 00110bbb11110011FBBBCCCCCC0QQQQQ. */
+{ "dmpywhf", 0x30F30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpywhf<.f> a,b,u6 00110bbb01110011FBBBuuuuuuAAAAAA. */
+{ "dmpywhf", 0x30730000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywhf<.f> 0,b,u6 00110bbb01110011FBBBuuuuuu111110. */
+{ "dmpywhf", 0x3073003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywhf<.f><.cc> b,b,u6 00110bbb11110011FBBBuuuuuu1QQQQQ. */
+{ "dmpywhf", 0x30F30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywhf<.f> b,b,s12 00110bbb10110011FBBBssssssSSSSSS. */
+{ "dmpywhf", 0x30B30000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpywhf<.f> a,limm,c 0011011000110011F111CCCCCCAAAAAA. */
+{ "dmpywhf", 0x36337000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpywhf<.f> a,b,limm 00110bbb00110011FBBB111110AAAAAA. */
+{ "dmpywhf", 0x30330F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpywhf<.f> 0,limm,c 0011011000110011F111CCCCCC111110. */
+{ "dmpywhf", 0x3633703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpywhf<.f> 0,b,limm 00110bbb00110011FBBB111110111110. */
+{ "dmpywhf", 0x30330FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpywhf<.f><.cc> b,b,limm 00110bbb11110011FBBB1111100QQQQQ. */
+{ "dmpywhf", 0x30F30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpywhf<.f><.cc> 0,limm,c 0011011011110011F111CCCCCC0QQQQQ. */
+{ "dmpywhf", 0x36F37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpywhf<.f> a,limm,u6 0011011001110011F111uuuuuuAAAAAA. */
+{ "dmpywhf", 0x36737000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywhf<.f> 0,limm,u6 0011011001110011F111uuuuuu111110. */
+{ "dmpywhf", 0x3673703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywhf<.f><.cc> 0,limm,u6 0011011011110011F111uuuuuu1QQQQQ. */
+{ "dmpywhf", 0x36F37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywhf<.f> 0,limm,s12 0011011010110011F111ssssssSSSSSS. */
+{ "dmpywhf", 0x36B37000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpywhf<.f> a,limm,limm 0011011000110011F111111110AAAAAA. */
+{ "dmpywhf", 0x36337F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywhf<.f> 0,limm,limm 0011011000110011F111111110111110. */
+{ "dmpywhf", 0x36337FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywhf<.f><.cc> 0,limm,limm 0011011011110011F1111111100QQQQQ. */
+{ "dmpywhf", 0x36F37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dmpywhu<.f> a,b,c 00101bbb00110011FBBBCCCCCCAAAAAA. */
+{ "dmpywhu", 0x28330000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* dmpywhu<.f> 0,b,c 00101bbb00110011FBBBCCCCCC111110. */
+{ "dmpywhu", 0x2833003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* dmpywhu<.f><.cc> b,b,c 00101bbb11110011FBBBCCCCCC0QQQQQ. */
+{ "dmpywhu", 0x28F30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* dmpywhu<.f> a,b,u6 00101bbb01110011FBBBuuuuuuAAAAAA. */
+{ "dmpywhu", 0x28730000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywhu<.f> 0,b,u6 00101bbb01110011FBBBuuuuuu111110. */
+{ "dmpywhu", 0x2873003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* dmpywhu<.f><.cc> b,b,u6 00101bbb11110011FBBBuuuuuu1QQQQQ. */
+{ "dmpywhu", 0x28F30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywhu<.f> b,b,s12 00101bbb10110011FBBBssssssSSSSSS. */
+{ "dmpywhu", 0x28B30000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* dmpywhu<.f> a,limm,c 0010111000110011F111CCCCCCAAAAAA. */
+{ "dmpywhu", 0x2E337000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* dmpywhu<.f> a,b,limm 00101bbb00110011FBBB111110AAAAAA. */
+{ "dmpywhu", 0x28330F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* dmpywhu<.f> 0,limm,c 0010111000110011F111CCCCCC111110. */
+{ "dmpywhu", 0x2E33703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* dmpywhu<.f> 0,b,limm 00101bbb00110011FBBB111110111110. */
+{ "dmpywhu", 0x28330FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* dmpywhu<.f><.cc> b,b,limm 00101bbb11110011FBBB1111100QQQQQ. */
+{ "dmpywhu", 0x28F30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* dmpywhu<.f><.cc> 0,limm,c 0010111011110011F111CCCCCC0QQQQQ. */
+{ "dmpywhu", 0x2EF37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* dmpywhu<.f> a,limm,u6 0010111001110011F111uuuuuuAAAAAA. */
+{ "dmpywhu", 0x2E737000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywhu<.f> 0,limm,u6 0010111001110011F111uuuuuu111110. */
+{ "dmpywhu", 0x2E73703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* dmpywhu<.f><.cc> 0,limm,u6 0010111011110011F111uuuuuu1QQQQQ. */
+{ "dmpywhu", 0x2EF37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* dmpywhu<.f> 0,limm,s12 0010111010110011F111ssssssSSSSSS. */
+{ "dmpywhu", 0x2EB37000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* dmpywhu<.f> a,limm,limm 0010111000110011F111111110AAAAAA. */
+{ "dmpywhu", 0x2E337F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywhu<.f> 0,limm,limm 0010111000110011F111111110111110. */
+{ "dmpywhu", 0x2E337FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* dmpywhu<.f><.cc> 0,limm,limm 0010111011110011F1111111100QQQQQ. */
+{ "dmpywhu", 0x2EF37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* dsync 00100010011011110001RRRRRR111111. */
+{ "dsync", 0x226F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* enter_s u6 110000UU111uuuu0. */
+{ "enter_s", 0x0000C0E0, 0x0000FCE1, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, ENTER, CD1, { BRAKET, RRANGE_EL, FP_EL, BLINK_EL, BRAKETdup }, { 0 }},
+{ "enter_s", 0x0000C0E0, 0x0000FCE1, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, ENTER, CD1, { BRAKET, R13_EL, FP_EL, BLINK_EL, BRAKETdup }, { 0 }},
+{ "enter_s", 0x0000C0E0, 0x0000FCE1, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ENTER, CD1, { UIMM6_11_S }, { 0 }},
+
+/* ex<.di> b,c 00100bbb00101111DBBBCCCCCC001100. */
+{ "ex", 0x202F000C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_DI16 }},
+
+/* ex<.di> b,u6 00100bbb01101111DBBBuuuuuu001100. */
+{ "ex", 0x206F000C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, UIMM6_20, BRAKETdup }, { C_DI16 }},
+
+/* ex<.di> b,limm 00100bbb00101111DBBB111110001100. */
+{ "ex", 0x202F0F8C, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, LIMM, BRAKETdup }, { C_DI16 }},
+
+/* ex<.di> limm,c 0010011000101111D111CCCCCC001100. */
+{ "ex", 0x262F700C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { LIMM, BRAKET, RC, BRAKETdup }, { C_DI16 }},
+
+/* ex<.di> limm,u6 0010011001101111D111uuuuuu001100. */
+{ "ex", 0x266F700C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { LIMM, BRAKET, UIMM6_20, BRAKETdup }, { C_DI16 }},
+
+/* ex<.di> limm,limm 0010011000101111D111111110001100. */
+{ "ex", 0x262F7F8C, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { LIMM, BRAKET, LIMMdup, BRAKETdup }, { C_DI16 }},
+
+/* exl<.aq> RB,RC 01011bbb00101111FBBBcccccc001100. */
+{ "exl", 0x582F000C, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_AQ }},
+
+/* extb<.f> b,c 00100bbb00101111FBBBCCCCCC000111. */
+{ "extb", 0x202F0007, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* extb<.f> 0,c 0010011000101111F111CCCCCC000111. */
+{ "extb", 0x262F7007, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* extb<.f> b,u6 00100bbb01101111FBBBuuuuuu000111. */
+{ "extb", 0x206F0007, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* extb<.f> 0,u6 0010011001101111F111uuuuuu000111. */
+{ "extb", 0x266F7007, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* extb<.f> b,limm 00100bbb00101111FBBB111110000111. */
+{ "extb", 0x202F0F87, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* extb<.f> 0,limm 0010011000101111F111111110000111. */
+{ "extb", 0x262F7F87, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* extb_s b,c 01111bbbccc01111. */
+{ "extb_s", 0x0000780F, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* exth<.f> b,c 00100bbb00101111FBBBCCCCCC001000. */
+{ "exth", 0x202F0008, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* exth<.f> 0,c 0010011000101111F111CCCCCC001000. */
+{ "exth", 0x262F7008, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* exth<.f> b,u6 00100bbb01101111FBBBuuuuuu001000. */
+{ "exth", 0x206F0008, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* exth<.f> 0,u6 0010011001101111F111uuuuuu001000. */
+{ "exth", 0x266F7008, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* exth<.f> b,limm 00100bbb00101111FBBB111110001000. */
+{ "exth", 0x202F0F88, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* exth<.f> 0,limm 0010011000101111F111111110001000. */
+{ "exth", 0x262F7F88, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* exth_s b,c 01111bbbccc10000. */
+{ "exth_s", 0x00007810, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* ffs<.f> b,c 00101bbb00101111FBBBCCCCCC010010. */
+{ "ffs", 0x282F0012, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, RC }, { C_F }},
+
+/* ffs<.f> 0,c 0010111000101111F111CCCCCC010010. */
+{ "ffs", 0x2E2F7012, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, RC }, { C_F }},
+
+/* ffs<.f> b,u6 00101bbb01101111FBBBuuuuuu010010. */
+{ "ffs", 0x286F0012, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, UIMM6_20 }, { C_F }},
+
+/* ffs<.f> 0,u6 0010111001101111F111uuuuuu010010. */
+{ "ffs", 0x2E6F7012, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, UIMM6_20 }, { C_F }},
+
+/* ffs<.f> b,limm 00101bbb00101111FBBB111110010010. */
+{ "ffs", 0x282F0F92, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, LIMM }, { C_F }},
+
+/* ffs<.f> 0,limm 0010111000101111F111111110010010. */
+{ "ffs", 0x2E2F7F92, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, LIMM }, { C_F }},
+
+/* ffsl<.f> RB,RC 01011bbb00101111FBBBcccccc010010. */
+{ "ffsl", 0x582F0012, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* ffsl<.f> 0,RC 0101111000101111F111cccccc010010. */
+{ "ffsl", 0x5E2F7012, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* ffsl<.f> RB,u6 01011bbb01101111FBBBuuuuuu010010. */
+{ "ffsl", 0x586F0012, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* ffsl<.f> 0,u6 0101111001101111F111uuuuuu010010. */
+{ "ffsl", 0x5E6F7012, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* ffsl<.f> RB,ximm 01011bbb00101111FBBB111100010010. */
+{ "ffsl", 0x582F0F12, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* ffsl<.f> 0,ximm 0101111000101111F111111100010010. */
+{ "ffsl", 0x5E2F7F12, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* ffsl<.f> RB,limm 01011bbb00101111FBBB111110010010. */
+{ "ffsl", 0x582F0F92, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* ffsl<.f> 0,limm 0101111000101111F111111110010010. */
+{ "ffsl", 0x5E2F7F92, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* flag c 00100RRR001010010RRRCCCCCCRRRRRR. */
+{ "flag", 0x20290000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { 0 }},
+
+/* flag<.cc> c 00100RRR111010010RRRCCCCCC0QQQQQ. */
+{ "flag", 0x20E90000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { C_CC }},
+
+/* flag u6 00100RRR011010010RRRuuuuuuRRRRRR. */
+{ "flag", 0x20690000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { 0 }},
+
+/* flag<.cc> u6 00100RRR111010010RRRuuuuuu1QQQQQ. */
+{ "flag", 0x20E90020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { C_CC }},
+
+/* flag s12 00100RRR101010010RRRssssssSSSSSS. */
+{ "flag", 0x20A90000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { SIMM12_20 }, { 0 }},
+
+/* flag limm 00100RRR001010010RRR111110RRRRRR. */
+{ "flag", 0x20290F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { LIMM }, { 0 }},
+
+/* flag<.cc> limm 00100RRR111010010RRR1111100QQQQQ. */
+{ "flag", 0x20E90F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { LIMM }, { C_CC }},
+
+/* flagacc c 00101100001011111000CCCCCC111111. */
+{ "flagacc", 0x2C2F803F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RC_CHK }, { 0 }},
+
+/* flagacc u6 00101100011011111000uuuuuu111111. */
+{ "flagacc", 0x2C6F803F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { UIMM6_20 }, { 0 }},
+
+/* fls<.f> b,c 00101bbb00101111FBBBCCCCCC010011. */
+{ "fls", 0x282F0013, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, RC }, { C_F }},
+
+/* fls<.f> 0,c 0010111000101111F111CCCCCC010011. */
+{ "fls", 0x2E2F7013, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, RC }, { C_F }},
+
+/* fls<.f> b,u6 00101bbb01101111FBBBuuuuuu010011. */
+{ "fls", 0x286F0013, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, UIMM6_20 }, { C_F }},
+
+/* fls<.f> 0,u6 0010111001101111F111uuuuuu010011. */
+{ "fls", 0x2E6F7013, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, UIMM6_20 }, { C_F }},
+
+/* fls<.f> b,limm 00101bbb00101111FBBB111110010011. */
+{ "fls", 0x282F0F93, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, LIMM }, { C_F }},
+
+/* fls<.f> 0,limm 0010111000101111F111111110010011. */
+{ "fls", 0x2E2F7F93, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, LIMM }, { C_F }},
+
+/* flsl<.f> RB,RC 01011bbb00101111FBBBcccccc010011. */
+{ "flsl", 0x582F0013, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* flsl<.f> 0,RC 0101111000101111F111cccccc010011. */
+{ "flsl", 0x5E2F7013, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* flsl<.f> RB,u6 01011bbb01101111FBBBuuuuuu010011. */
+{ "flsl", 0x586F0013, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* flsl<.f> 0,u6 0101111001101111F111uuuuuu010011. */
+{ "flsl", 0x5E6F7013, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* flsl<.f> RB,ximm 01011bbb00101111FBBB111100010011. */
+{ "flsl", 0x582F0F13, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* flsl<.f> 0,ximm 0101111000101111F111111100010011. */
+{ "flsl", 0x5E2F7F13, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* flsl<.f> RB,limm 01011bbb00101111FBBB111110010011. */
+{ "flsl", 0x582F0F93, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* flsl<.f> 0,limm 0101111000101111F111111110010011. */
+{ "flsl", 0x5E2F7F93, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* fmp_adds<.f> a,b,c 00111bbb00100010FBBBCCCCCCAAAAAA. */
+{ "fmp_adds", 0x38220000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, RC }, { C_F }},
+
+/* fmp_adds<.f> 0,b,c 00111bbb00100010FBBBCCCCCC111110. */
+{ "fmp_adds", 0x3822003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, RC }, { C_F }},
+
+/* fmp_adds<.f><.cc> b,b,c 00111bbb11100010FBBBCCCCCC0QQQQQ. */
+{ "fmp_adds", 0x38E20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* fmp_adds<.f> a,b,u6 00111bbb01100010FBBBuuuuuuAAAAAA. */
+{ "fmp_adds", 0x38620000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_adds<.f> 0,b,u6 00111bbb01100010FBBBuuuuuu111110. */
+{ "fmp_adds", 0x3862003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_adds<.f><.cc> b,b,u6 00111bbb11100010FBBBuuuuuu1QQQQQ. */
+{ "fmp_adds", 0x38E20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_adds<.f> b,b,s12 00111bbb10100010FBBBssssssSSSSSS. */
+{ "fmp_adds", 0x38A20000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* fmp_adds<.f> a,limm,c 0011111000100010F111CCCCCCAAAAAA. */
+{ "fmp_adds", 0x3E227000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, RC }, { C_F }},
+
+/* fmp_adds<.f> a,b,limm 00111bbb00100010FBBB111110AAAAAA. */
+{ "fmp_adds", 0x38220F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, LIMM }, { C_F }},
+
+/* fmp_adds<.f> 0,limm,c 0011111000100010F111CCCCCC111110. */
+{ "fmp_adds", 0x3E22703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F }},
+
+/* fmp_adds<.f> 0,b,limm 00111bbb00100010FBBB111110111110. */
+{ "fmp_adds", 0x38220FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, LIMM }, { C_F }},
+
+/* fmp_adds<.f><.cc> b,b,limm 00111bbb11100010FBBB1111100QQQQQ. */
+{ "fmp_adds", 0x38E20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* fmp_adds<.f><.cc> 0,limm,c 0011111011100010F111CCCCCC0QQQQQ. */
+{ "fmp_adds", 0x3EE27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* fmp_adds<.f> a,limm,u6 0011111001100010F111uuuuuuAAAAAA. */
+{ "fmp_adds", 0x3E627000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_adds<.f> 0,limm,u6 0011111001100010F111uuuuuu111110. */
+{ "fmp_adds", 0x3E62703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_adds<.f><.cc> 0,limm,u6 0011111011100010F111uuuuuu1QQQQQ. */
+{ "fmp_adds", 0x3EE27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_adds<.f> 0,limm,s12 0011111010100010F111ssssssSSSSSS. */
+{ "fmp_adds", 0x3EA27000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* fmp_adds<.f> a,limm,limm 0011111000100010F111111110AAAAAA. */
+{ "fmp_adds", 0x3E227F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_adds<.f> 0,limm,limm 0011111000100010F111111110111110. */
+{ "fmp_adds", 0x3E227FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_adds<.f><.cc> 0,limm,limm 0011111011100010F1111111100QQQQQ. */
+{ "fmp_adds", 0x3EE27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* fmp_atan<.f> b,c 00111bbb00101111FBBBCCCCCC100101. */
+{ "fmp_atan", 0x382F0025, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_atan<.f> 0,c 0011111000101111F111CCCCCC100101. */
+{ "fmp_atan", 0x3E2F7025, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_atan<.f> b,u6 00111bbb01101111FBBBuuuuuu100101. */
+{ "fmp_atan", 0x386F0025, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_atan<.f> 0,u6 0011111001101111F111uuuuuu100101. */
+{ "fmp_atan", 0x3E6F7025, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_atan<.f> b,limm 00111bbb00101111FBBB111110100101. */
+{ "fmp_atan", 0x382F0FA5, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_atan<.f> 0,limm 0011111000101111F111111110100101. */
+{ "fmp_atan", 0x3E2F7FA5, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_atan15<.f> b,c 00111bbb00101111FBBBCCCCCC101110. */
+{ "fmp_atan15", 0x382F002E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_atan15<.f> 0,c 0011111000101111F111CCCCCC101110. */
+{ "fmp_atan15", 0x3E2F702E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_atan15<.f> b,u6 00111bbb01101111FBBBuuuuuu101110. */
+{ "fmp_atan15", 0x386F002E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_atan15<.f> 0,u6 0011111001101111F111uuuuuu101110. */
+{ "fmp_atan15", 0x3E6F702E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_atan15<.f> b,limm 00111bbb00101111FBBB111110101110. */
+{ "fmp_atan15", 0x382F0FAE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_atan15<.f> 0,limm 0011111000101111F111111110101110. */
+{ "fmp_atan15", 0x3E2F7FAE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_cos<.f> b,c 00111bbb00101111FBBBCCCCCC011110. */
+{ "fmp_cos", 0x382F001E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_cos<.f> 0,c 0011111000101111F111CCCCCC011110. */
+{ "fmp_cos", 0x3E2F701E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_cos<.f> b,u6 00111bbb01101111FBBBuuuuuu011110. */
+{ "fmp_cos", 0x386F001E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_cos<.f> 0,u6 0011111001101111F111uuuuuu011110. */
+{ "fmp_cos", 0x3E6F701E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_cos<.f> b,limm 00111bbb00101111FBBB111110011110. */
+{ "fmp_cos", 0x382F0F9E, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_cos<.f> 0,limm 0011111000101111F111111110011110. */
+{ "fmp_cos", 0x3E2F7F9E, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_cos15<.f> b,c 00111bbb00101111FBBBCCCCCC101100. */
+{ "fmp_cos15", 0x382F002C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_cos15<.f> 0,c 0011111000101111F111CCCCCC101100. */
+{ "fmp_cos15", 0x3E2F702C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_cos15<.f> b,u6 00111bbb01101111FBBBuuuuuu101100. */
+{ "fmp_cos15", 0x386F002C, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_cos15<.f> 0,u6 0011111001101111F111uuuuuu101100. */
+{ "fmp_cos15", 0x3E6F702C, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_cos15<.f> b,limm 00111bbb00101111FBBB111110101100. */
+{ "fmp_cos15", 0x382F0FAC, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_cos15<.f> 0,limm 0011111000101111F111111110101100. */
+{ "fmp_cos15", 0x3E2F7FAC, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_divf<.f> a,b,c 00111bbb00100000FBBBCCCCCCAAAAAA. */
+{ "fmp_divf", 0x38200000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, RC }, { C_F }},
+
+/* fmp_divf<.f> 0,b,c 00111bbb00100000FBBBCCCCCC111110. */
+{ "fmp_divf", 0x3820003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, RC }, { C_F }},
+
+/* fmp_divf<.f><.cc> b,b,c 00111bbb11100000FBBBCCCCCC0QQQQQ. */
+{ "fmp_divf", 0x38E00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* fmp_divf<.f> a,b,u6 00111bbb01100000FBBBuuuuuuAAAAAA. */
+{ "fmp_divf", 0x38600000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_divf<.f> 0,b,u6 00111bbb01100000FBBBuuuuuu111110. */
+{ "fmp_divf", 0x3860003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_divf<.f><.cc> b,b,u6 00111bbb11100000FBBBuuuuuu1QQQQQ. */
+{ "fmp_divf", 0x38E00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_divf<.f> b,b,s12 00111bbb10100000FBBBssssssSSSSSS. */
+{ "fmp_divf", 0x38A00000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* fmp_divf<.f> a,limm,c 0011111000100000F111CCCCCCAAAAAA. */
+{ "fmp_divf", 0x3E207000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, RC }, { C_F }},
+
+/* fmp_divf<.f> a,b,limm 00111bbb00100000FBBB111110AAAAAA. */
+{ "fmp_divf", 0x38200F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, LIMM }, { C_F }},
+
+/* fmp_divf<.f> 0,limm,c 0011111000100000F111CCCCCC111110. */
+{ "fmp_divf", 0x3E20703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F }},
+
+/* fmp_divf<.f> 0,b,limm 00111bbb00100000FBBB111110111110. */
+{ "fmp_divf", 0x38200FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, LIMM }, { C_F }},
+
+/* fmp_divf<.f><.cc> b,b,limm 00111bbb11100000FBBB1111100QQQQQ. */
+{ "fmp_divf", 0x38E00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* fmp_divf<.f><.cc> 0,limm,c 0011111011100000F111CCCCCC0QQQQQ. */
+{ "fmp_divf", 0x3EE07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* fmp_divf<.f> a,limm,u6 0011111001100000F111uuuuuuAAAAAA. */
+{ "fmp_divf", 0x3E607000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_divf<.f> 0,limm,u6 0011111001100000F111uuuuuu111110. */
+{ "fmp_divf", 0x3E60703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_divf<.f><.cc> 0,limm,u6 0011111011100000F111uuuuuu1QQQQQ. */
+{ "fmp_divf", 0x3EE07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_divf<.f> 0,limm,s12 0011111010100000F111ssssssSSSSSS. */
+{ "fmp_divf", 0x3EA07000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* fmp_divf<.f> a,limm,limm 0011111000100000F111111110AAAAAA. */
+{ "fmp_divf", 0x3E207F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_divf<.f> 0,limm,limm 0011111000100000F111111110111110. */
+{ "fmp_divf", 0x3E207FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_divf<.f><.cc> 0,limm,limm 0011111011100000F1111111100QQQQQ. */
+{ "fmp_divf", 0x3EE07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* fmp_divf15<.f> a,b,c 00111bbb00100001FBBBCCCCCCAAAAAA. */
+{ "fmp_divf15", 0x38210000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, RC }, { C_F }},
+
+/* fmp_divf15<.f> 0,b,c 00111bbb00100001FBBBCCCCCC111110. */
+{ "fmp_divf15", 0x3821003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, RC }, { C_F }},
+
+/* fmp_divf15<.f><.cc> b,b,c 00111bbb11100001FBBBCCCCCC0QQQQQ. */
+{ "fmp_divf15", 0x38E10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* fmp_divf15<.f> a,b,u6 00111bbb01100001FBBBuuuuuuAAAAAA. */
+{ "fmp_divf15", 0x38610000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_divf15<.f> 0,b,u6 00111bbb01100001FBBBuuuuuu111110. */
+{ "fmp_divf15", 0x3861003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* fmp_divf15<.f><.cc> b,b,u6 00111bbb11100001FBBBuuuuuu1QQQQQ. */
+{ "fmp_divf15", 0x38E10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_divf15<.f> b,b,s12 00111bbb10100001FBBBssssssSSSSSS. */
+{ "fmp_divf15", 0x38A10000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* fmp_divf15<.f> a,limm,c 0011111000100001F111CCCCCCAAAAAA. */
+{ "fmp_divf15", 0x3E217000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, RC }, { C_F }},
+
+/* fmp_divf15<.f> a,b,limm 00111bbb00100001FBBB111110AAAAAA. */
+{ "fmp_divf15", 0x38210F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, RB, LIMM }, { C_F }},
+
+/* fmp_divf15<.f> 0,limm,c 0011111000100001F111CCCCCC111110. */
+{ "fmp_divf15", 0x3E21703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F }},
+
+/* fmp_divf15<.f> 0,b,limm 00111bbb00100001FBBB111110111110. */
+{ "fmp_divf15", 0x38210FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RB, LIMM }, { C_F }},
+
+/* fmp_divf15<.f><.cc> b,b,limm 00111bbb11100001FBBB1111100QQQQQ. */
+{ "fmp_divf15", 0x38E10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* fmp_divf15<.f><.cc> 0,limm,c 0011111011100001F111CCCCCC0QQQQQ. */
+{ "fmp_divf15", 0x3EE17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* fmp_divf15<.f> a,limm,u6 0011111001100001F111uuuuuuAAAAAA. */
+{ "fmp_divf15", 0x3E617000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_divf15<.f> 0,limm,u6 0011111001100001F111uuuuuu111110. */
+{ "fmp_divf15", 0x3E61703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* fmp_divf15<.f><.cc> 0,limm,u6 0011111011100001F111uuuuuu1QQQQQ. */
+{ "fmp_divf15", 0x3EE17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* fmp_divf15<.f> 0,limm,s12 0011111010100001F111ssssssSSSSSS. */
+{ "fmp_divf15", 0x3EA17000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* fmp_divf15<.f> a,limm,limm 0011111000100001F111111110AAAAAA. */
+{ "fmp_divf15", 0x3E217F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_divf15<.f> 0,limm,limm 0011111000100001F111111110111110. */
+{ "fmp_divf15", 0x3E217FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* fmp_divf15<.f><.cc> 0,limm,limm 0011111011100001F1111111100QQQQQ. */
+{ "fmp_divf15", 0x3EE17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* fmp_exp2<.f> b,c 00111bbb00101111FBBBCCCCCC100111. */
+{ "fmp_exp2", 0x382F0027, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_exp2<.f> 0,c 0011111000101111F111CCCCCC100111. */
+{ "fmp_exp2", 0x3E2F7027, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_exp2<.f> b,u6 00111bbb01101111FBBBuuuuuu100111. */
+{ "fmp_exp2", 0x386F0027, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_exp2<.f> 0,u6 0011111001101111F111uuuuuu100111. */
+{ "fmp_exp2", 0x3E6F7027, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_exp2<.f> b,limm 00111bbb00101111FBBB111110100111. */
+{ "fmp_exp2", 0x382F0FA7, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_exp2<.f> 0,limm 0011111000101111F111111110100111. */
+{ "fmp_exp2", 0x3E2F7FA7, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_exp215<.f> b,c 00111bbb00101111FBBBCCCCCC101111. */
+{ "fmp_exp215", 0x382F002F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_exp215<.f> 0,c 0011111000101111F111CCCCCC101111. */
+{ "fmp_exp215", 0x3E2F702F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_exp215<.f> b,u6 00111bbb01101111FBBBuuuuuu101111. */
+{ "fmp_exp215", 0x386F002F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_exp215<.f> 0,u6 0011111001101111F111uuuuuu101111. */
+{ "fmp_exp215", 0x3E6F702F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_exp215<.f> b,limm 00111bbb00101111FBBB111110101111. */
+{ "fmp_exp215", 0x382F0FAF, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_exp215<.f> 0,limm 0011111000101111F111111110101111. */
+{ "fmp_exp215", 0x3E2F7FAF, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_log2<.f> b,c 00111bbb00101111FBBBCCCCCC100110. */
+{ "fmp_log2", 0x382F0026, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_log2<.f> 0,c 0011111000101111F111CCCCCC100110. */
+{ "fmp_log2", 0x3E2F7026, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_log2<.f> b,u6 00111bbb01101111FBBBuuuuuu100110. */
+{ "fmp_log2", 0x386F0026, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_log2<.f> 0,u6 0011111001101111F111uuuuuu100110. */
+{ "fmp_log2", 0x3E6F7026, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_log2<.f> b,limm 00111bbb00101111FBBB111110100110. */
+{ "fmp_log2", 0x382F0FA6, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_log2<.f> 0,limm 0011111000101111F111111110100110. */
+{ "fmp_log2", 0x3E2F7FA6, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_log215<.f> b,c 00111bbb00101111FBBBCCCCCC110000. */
+{ "fmp_log215", 0x382F0030, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_log215<.f> 0,c 0011111000101111F111CCCCCC110000. */
+{ "fmp_log215", 0x3E2F7030, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_log215<.f> b,u6 00111bbb01101111FBBBuuuuuu110000. */
+{ "fmp_log215", 0x386F0030, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_log215<.f> 0,u6 0011111001101111F111uuuuuu110000. */
+{ "fmp_log215", 0x3E6F7030, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_log215<.f> b,limm 00111bbb00101111FBBB111110110000. */
+{ "fmp_log215", 0x382F0FB0, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_log215<.f> 0,limm 0011111000101111F111111110110000. */
+{ "fmp_log215", 0x3E2F7FB0, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_recip<.f> b,c 00111bbb00101111FBBBCCCCCC101010. */
+{ "fmp_recip", 0x382F002A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_recip<.f> 0,c 0011111000101111F111CCCCCC101010. */
+{ "fmp_recip", 0x3E2F702A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_recip<.f> b,u6 00111bbb01101111FBBBuuuuuu101010. */
+{ "fmp_recip", 0x386F002A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_recip<.f> 0,u6 0011111001101111F111uuuuuu101010. */
+{ "fmp_recip", 0x3E6F702A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_recip<.f> b,limm 00111bbb00101111FBBB111110101010. */
+{ "fmp_recip", 0x382F0FAA, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_recip<.f> 0,limm 0011111000101111F111111110101010. */
+{ "fmp_recip", 0x3E2F7FAA, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_recip15<.f> b,c 00111bbb00101111FBBBCCCCCC101011. */
+{ "fmp_recip15", 0x382F002B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_recip15<.f> 0,c 0011111000101111F111CCCCCC101011. */
+{ "fmp_recip15", 0x3E2F702B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_recip15<.f> b,u6 00111bbb01101111FBBBuuuuuu101011. */
+{ "fmp_recip15", 0x386F002B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_recip15<.f> 0,u6 0011111001101111F111uuuuuu101011. */
+{ "fmp_recip15", 0x3E6F702B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_recip15<.f> b,limm 00111bbb00101111FBBB111110101011. */
+{ "fmp_recip15", 0x382F0FAB, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_recip15<.f> 0,limm 0011111000101111F111111110101011. */
+{ "fmp_recip15", 0x3E2F7FAB, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_rndh<.f> b,c 00111bbb00101111FBBBCCCCCC101001. */
+{ "fmp_rndh", 0x382F0029, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_rndh<.f> 0,c 0011111000101111F111CCCCCC101001. */
+{ "fmp_rndh", 0x3E2F7029, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_rndh<.f> b,u6 00111bbb01101111FBBBuuuuuu101001. */
+{ "fmp_rndh", 0x386F0029, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_rndh<.f> 0,u6 0011111001101111F111uuuuuu101001. */
+{ "fmp_rndh", 0x3E6F7029, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_rndh<.f> b,limm 00111bbb00101111FBBB111110101001. */
+{ "fmp_rndh", 0x382F0FA9, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_rndh<.f> 0,limm 0011111000101111F111111110101001. */
+{ "fmp_rndh", 0x3E2F7FA9, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_sath<.f> b,c 00111bbb00101111FBBBCCCCCC101000. */
+{ "fmp_sath", 0x382F0028, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_sath<.f> 0,c 0011111000101111F111CCCCCC101000. */
+{ "fmp_sath", 0x3E2F7028, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_sath<.f> b,u6 00111bbb01101111FBBBuuuuuu101000. */
+{ "fmp_sath", 0x386F0028, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_sath<.f> 0,u6 0011111001101111F111uuuuuu101000. */
+{ "fmp_sath", 0x3E6F7028, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_sath<.f> b,limm 00111bbb00101111FBBB111110101000. */
+{ "fmp_sath", 0x382F0FA8, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_sath<.f> 0,limm 0011111000101111F111111110101000. */
+{ "fmp_sath", 0x3E2F7FA8, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_sin<.f> b,c 00111bbb00101111FBBBCCCCCC011111. */
+{ "fmp_sin", 0x382F001F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_sin<.f> 0,c 0011111000101111F111CCCCCC011111. */
+{ "fmp_sin", 0x3E2F701F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_sin<.f> b,u6 00111bbb01101111FBBBuuuuuu011111. */
+{ "fmp_sin", 0x386F001F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_sin<.f> 0,u6 0011111001101111F111uuuuuu011111. */
+{ "fmp_sin", 0x3E6F701F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_sin<.f> b,limm 00111bbb00101111FBBB111110011111. */
+{ "fmp_sin", 0x382F0F9F, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_sin<.f> 0,limm 0011111000101111F111111110011111. */
+{ "fmp_sin", 0x3E2F7F9F, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_sin15<.f> b,c 00111bbb00101111FBBBCCCCCC101101. */
+{ "fmp_sin15", 0x382F002D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_sin15<.f> 0,c 0011111000101111F111CCCCCC101101. */
+{ "fmp_sin15", 0x3E2F702D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_sin15<.f> b,u6 00111bbb01101111FBBBuuuuuu101101. */
+{ "fmp_sin15", 0x386F002D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_sin15<.f> 0,u6 0011111001101111F111uuuuuu101101. */
+{ "fmp_sin15", 0x3E6F702D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_sin15<.f> b,limm 00111bbb00101111FBBB111110101101. */
+{ "fmp_sin15", 0x382F0FAD, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_sin15<.f> 0,limm 0011111000101111F111111110101101. */
+{ "fmp_sin15", 0x3E2F7FAD, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_sqrtf<.f> b,c 00111bbb00101111FBBBCCCCCC100000. */
+{ "fmp_sqrtf", 0x382F0020, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_sqrtf<.f> 0,c 0011111000101111F111CCCCCC100000. */
+{ "fmp_sqrtf", 0x3E2F7020, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_sqrtf<.f> b,u6 00111bbb01101111FBBBuuuuuu100000. */
+{ "fmp_sqrtf", 0x386F0020, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_sqrtf<.f> 0,u6 0011111001101111F111uuuuuu100000. */
+{ "fmp_sqrtf", 0x3E6F7020, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_sqrtf<.f> b,limm 00111bbb00101111FBBB111110100000. */
+{ "fmp_sqrtf", 0x382F0FA0, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_sqrtf<.f> 0,limm 0011111000101111F111111110100000. */
+{ "fmp_sqrtf", 0x3E2F7FA0, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* fmp_sqrtf15<.f> b,c 00111bbb00101111FBBBCCCCCC100001. */
+{ "fmp_sqrtf15", 0x382F0021, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, RC }, { C_F }},
+
+/* fmp_sqrtf15<.f> 0,c 0011111000101111F111CCCCCC100001. */
+{ "fmp_sqrtf15", 0x3E2F7021, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, RC }, { C_F }},
+
+/* fmp_sqrtf15<.f> b,u6 00111bbb01101111FBBBuuuuuu100001. */
+{ "fmp_sqrtf15", 0x386F0021, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, UIMM6_20 }, { C_F }},
+
+/* fmp_sqrtf15<.f> 0,u6 0011111001101111F111uuuuuu100001. */
+{ "fmp_sqrtf15", 0x3E6F7021, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, UIMM6_20 }, { C_F }},
+
+/* fmp_sqrtf15<.f> b,limm 00111bbb00101111FBBB111110100001. */
+{ "fmp_sqrtf15", 0x382F0FA1, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { RB, LIMM }, { C_F }},
+
+/* fmp_sqrtf15<.f> 0,limm 0011111000101111F111111110100001. */
+{ "fmp_sqrtf15", 0x3E2F7FA1, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, FASTMATH, { ZA, LIMM }, { C_F }},
+
+/* getacc b,c 00101bbb001011110BBBCCCCCC011000. */
+{ "getacc", 0x282F0018, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* getacc 0,c 00101110001011110111CCCCCC011000. */
+{ "getacc", 0x2E2F7018, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* getacc b,u6 00101bbb011011110BBBuuuuuu011000. */
+{ "getacc", 0x286F0018, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* getacc 0,u6 00101110011011110111uuuuuu011000. */
+{ "getacc", 0x2E6F7018, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* getacc b,limm 00101bbb001011110BBB111110011000. */
+{ "getacc", 0x282F0F98, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* getacc 0,limm 00101110001011110111111110011000. */
+{ "getacc", 0x2E2F7F98, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* j c 00100RRR00100000RRRRCCCCCCRRRRRR. */
+{ "j", 0x20200000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* j BLINK 00100RRR00100000RRRR011111RRRRRR. */
+{ "j", 0x202007C0, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, BLINK, BRAKETdup }, { 0 }},
+
+/* jcc c 00100RRR11100000RRRRCCCCCC0QQQQQ. */
+{ "j", 0x20E00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, RC, BRAKETdup }, { C_CC }},
+
+/* jcc BLINK 00100RRR11100000RRRR0111110QQQQQ. */
+{ "j", 0x20E007C0, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, BLINK, BRAKETdup }, { C_CC }},
+
+/* j.D c 00100RRR00100001RRRRCCCCCCRRRRRR. */
+{ "j", 0x20210000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { C_DHARD }},
+
+/* j.D BLINK 00100RRR00100001RRRR011111RRRRRR. */
+{ "j", 0x202107C0, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, BLINK, BRAKETdup }, { C_DHARD }},
+
+/* j.Dcc c 00100RRR11100001RRRRCCCCCC0QQQQQ. */
+{ "j", 0x20E10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, RC, BRAKETdup }, { C_CC, C_DHARD }},
+
+/* j.Dcc BLINK 00100RRR11100001RRRR0111110QQQQQ. */
+{ "j", 0x20E107C0, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, BLINK, BRAKETdup }, { C_CC, C_DHARD }},
+
+/* j s12 00100RRR10100000RRRRssssssSSSSSS. */
+{ "j", 0x20A00000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { SIMM12_20 }, { 0 }},
+
+/* j.D s12 00100RRR10100001RRRRssssssSSSSSS. */
+{ "j", 0x20A10000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { SIMM12_20 }, { C_DHARD }},
+
+/* j u6 00100RRR01100000RRRRuuuuuuRRRRRR. */
+{ "j", 0x20600000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { 0 }},
+
+/* jcc u6 00100RRR11100000RRRRuuuuuu1QQQQQ. */
+{ "j", 0x20E00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { UIMM6_20 }, { C_CC }},
+
+/* j.D u6 00100RRR01100001RRRRuuuuuuRRRRRR. */
+{ "j", 0x20610000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { C_DHARD }},
+
+/* j.Dcc u6 00100RRR11100001RRRRuuuuuu1QQQQQ. */
+{ "j", 0x20E10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { UIMM6_20 }, { C_CC, C_DHARD }},
+
+/* j limm 00100RRR00100000RRRR111110RRRRRR. */
+{ "j", 0x20200F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { LIMM }, { 0 }},
+
+/* jcc limm 00100RRR11100000RRRR1111100QQQQQ. */
+{ "j", 0x20E00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { LIMM }, { C_CC }},
+
+/* jeq_sCC_EQ BLINK 0111110011100000. */
+{ "jeq_s", 0x00007CE0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, BLINK_S, BRAKETdup }, { C_CC_EQ }},
+
+/* jl c 00100RRR00100010RRRRCCCCCCRRRRRR. */
+{ "jl", 0x20220000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* jlcc c 00100RRR11100010RRRRCCCCCC0QQQQQ. */
+{ "jl", 0x20E20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { C_CC }},
+
+/* jl.D c 00100RRR00100011RRRRCCCCCCRRRRRR. */
+{ "jl", 0x20230000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { C_DHARD }},
+
+/* jl.Dcc c 00100RRR11100011RRRRCCCCCC0QQQQQ. */
+{ "jl", 0x20E30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RC, BRAKETdup }, { C_CC, C_DHARD }},
+
+/* jl s12 00100RRR10100010RRRRssssssSSSSSS. */
+{ "jl", 0x20A20000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { SIMM12_20 }, { 0 }},
+
+/* jl.D s12 00100RRR10100011RRRRssssssSSSSSS. */
+{ "jl", 0x20A30000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { SIMM12_20 }, { C_DHARD }},
+
+/* jl u6 00100RRR01100010RRRRuuuuuuRRRRRR. */
+{ "jl", 0x20620000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { 0 }},
+
+/* jlcc u6 00100RRR11100010RRRRuuuuuu1QQQQQ. */
+{ "jl", 0x20E20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { C_CC }},
+
+/* jl.D u6 00100RRR01100011RRRRuuuuuuRRRRRR. */
+{ "jl", 0x20630000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { C_DHARD }},
+
+/* jl.Dcc u6 00100RRR11100011RRRRuuuuuu1QQQQQ. */
+{ "jl", 0x20E30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { UIMM6_20 }, { C_CC, C_DHARD }},
+
+/* jl limm 00100RRR00100010RRRR111110RRRRRR. */
+{ "jl", 0x20220F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { LIMM }, { 0 }},
+
+/* jlcc limm 00100RRR11100010RRRR1111100QQQQQ. */
+{ "jl", 0x20E20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { LIMM }, { C_CC }},
+
+/* jli_s u10 01010UUUUUUU1uuu. */
+{ "jli_s", 0x00005008, 0x0000F808, ARC_OPCODE_ARC64, JLI, NONE, { UIMM10_13_S }, { 0 }},
+
+/* jl_s b 01111bbb01000000. */
+{ "jl_s", 0x00007840, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { 0 }},
+
+/* jl_s.D b 01111bbb01100000. */
+{ "jl_s", 0x00007860, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { C_DHARD }},
+
+/* jne_sCC_NE BLINK 0111110111100000. */
+{ "jne_s", 0x00007DE0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, COND, { BRAKET, BLINK_S, BRAKETdup }, { C_CC_NE }},
+
+/* j_s b 01111bbb00000000. */
+{ "j_s", 0x00007800, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { 0 }},
+
+/* j_s.D b 01111bbb00100000. */
+{ "j_s", 0x00007820, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { C_DHARD }},
+
+/* j_s BLINK 0111111011100000. */
+{ "j_s", 0x00007EE0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, BLINK_S, BRAKETdup }, { 0 }},
+
+/* j_s.D BLINK 0111111111100000. */
+{ "j_s", 0x00007FE0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, JUMP, NONE, { BRAKET, BLINK_S, BRAKETdup }, { C_DHARD }},
+
+/* kflag c 00100RRR001010011RRRCCCCCCRRRRRR. */
+{ "kflag", 0x20298000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { 0 }},
+
+/* kflag<.cc> c 00100RRR111010011RRRCCCCCC0QQQQQ. */
+{ "kflag", 0x20E98000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { C_CC }},
+
+/* kflag u6 00100RRR011010011RRRuuuuuuRRRRRR. */
+{ "kflag", 0x20698000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { 0 }},
+
+/* kflag<.cc> u6 00100RRR111010011RRRuuuuuu1QQQQQ. */
+{ "kflag", 0x20E98020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { C_CC }},
+
+/* kflag s12 00100RRR101010011RRRssssssSSSSSS. */
+{ "kflag", 0x20A98000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { SIMM12_20 }, { 0 }},
+
+/* kflag limm 00100RRR001010011RRR111110RRRRRR. */
+{ "kflag", 0x20298F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { LIMM }, { 0 }},
+
+/* kflag<.cc> limm 00100RRR111010011RRR1111100QQQQQ. */
+{ "kflag", 0x20E98F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { LIMM }, { C_CC }},
+
+/* ldZZ_W<.di><.aa> a,b 00010bbb000000000BBBDaa000AAAAAA. */
+{ "ld", 0x10000000, 0xF8FF81C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_W, C_DI20, C_AA21 }},
+
+/* ldZZ_W<.di><.aa> a,b,c 00100bbbaa110000DBBBCCCCCCAAAAAA. */
+{ "ld", 0x20300000, 0xF83F0000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.di><.aa> 0,b,c 00100bbbaa110000DBBBCCCCCC111110. */
+{ "ld", 0x2030003E, 0xF83F003F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.x><.aa> a,b 00010bbb000000000BBB0aa00XAAAAAA. */
+{ "ld", 0x10000000, 0xF8FF8980, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_W, C_AA21, C_X25 }},
+
+/* ldZZ_W<.x><.aa> a,b,c 00100bbbaa11000X0BBBCCCCCCAAAAAA. */
+{ "ld", 0x20300000, 0xF83E8000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.x><.aa> 0,b,c 00100bbbaa11000X0BBBCCCCCC111110. */
+{ "ld", 0x2030003E, 0xF83E803F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.di><.aa> a,b,s9 00010bbbssssssssSBBBDaa000AAAAAA. */
+{ "ld", 0x10000000, 0xF80001C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_DI20, C_AA21 }},
+
+/* ldZZ_W<.di><.aa> 0,b,s9 00010bbbssssssssSBBBDaa000111110. */
+{ "ld", 0x1000003E, 0xF80001FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_DI20, C_AA21 }},
+
+/* ldZZ_W<.x><.aa> a,b,s9 00010bbbssssssssSBBB0aa00XAAAAAA. */
+{ "ld", 0x10000000, 0xF8000980, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_AA21, C_X25 }},
+
+/* ldZZ_W<.x><.aa> 0,b,s9 00010bbbssssssssSBBB0aa00X111110. */
+{ "ld", 0x1000003E, 0xF80009BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_AA21, C_X25 }},
+
+/* ldZZ_W<.di> a,limm 00010110000000000111D00000AAAAAA. */
+{ "ld", 0x16007000, 0xFFFFF7C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_W, C_DI20 }},
+
+/* ldZZ_W<.di> 0,limm 00010110000000000111D00000111110. */
+{ "ld", 0x1600703E, 0xFFFFF7FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_W, C_DI20 }},
+
+/* ldZZ_W<.di><.aa> a,b,limm 00100bbbaa110000DBBB111110AAAAAA. */
+{ "ld", 0x20300F80, 0xF83F0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.di><.aa> a,limm,c 00100110aa110000D111CCCCCCAAAAAA. */
+{ "ld", 0x26307000, 0xFF3F7000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.di><.aa> 0,b,limm 00100bbbaa110000DBBB111110111110. */
+{ "ld", 0x20300FBE, 0xF83F0FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.di><.aa> 0,limm,c 00100110aa110000D111CCCCCC111110. */
+{ "ld", 0x2630703E, 0xFF3F703F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_W, C_DI16, C_AA8 }},
+
+/* ldZZ_W<.x> a,limm 0001011000000000011100000XAAAAAA. */
+{ "ld", 0x16007000, 0xFFFFFF80, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_W, C_X25 }},
+
+/* ldZZ_W<.x> 0,limm 0001011000000000011100000X111110. */
+{ "ld", 0x1600703E, 0xFFFFFFBF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_W, C_X25 }},
+
+/* ldZZ_W<.x><.aa> a,b,limm 00100bbbaa11000X0BBB111110AAAAAA. */
+{ "ld", 0x20300F80, 0xF83E8FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.x><.aa> a,b,ximm 00100bbbaa11000X0BBB111100AAAAAA. */
+{ "ld", 0x20300F00, 0xF83E8FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, XIMM, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.x><.aa> a,limm,c 00100110aa11000X0111CCCCCCAAAAAA. */
+{ "ld", 0x26307000, 0xFF3EF000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.x><.aa> 0,b,limm 00100bbbaa11000X0BBB111110111110. */
+{ "ld", 0x20300FBE, 0xF83E8FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldZZ_W<.di><.aa> a,limm,s9 00010110ssssssssS111Daa000AAAAAA. */
+{ "ld", 0x16007000, 0xFF0071C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_DI20, C_AA21 }},
+
+/* ldZZ_W<.di><.aa> 0,limm,s9 00010110ssssssssS111Daa000111110. */
+{ "ld", 0x1600703E, 0xFF0071FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_DI20, C_AA21 }},
+
+/* ldZZ_W<.x><.aa> a,limm,s9 00010110ssssssssS1110aa00XAAAAAA. */
+{ "ld", 0x16007000, 0xFF007980, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_AA21, C_X25 }},
+
+/* ldZZ_W<.x><.aa> 0,limm,s9 00010110ssssssssS1110aa00X111110. */
+{ "ld", 0x1600703E, 0xFF0079BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_W, C_AA21, C_X25 }},
+
+/* ld ZZ_W<.x><.aa> 0,limm,c 00100110aa11000X0111CCCCCC111110. */
+{ "ld ", 0x2630703E, 0xFF3EF03F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, LIMM, RC }, { C_ZZ_W, C_AA8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,b 00010bbb000000000BBBDaa01XAAAAAA. */
+{ "ldb", 0x10000080, 0xF8FF8180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,b,c 00100bbbaa11001XDBBBCCCCCCAAAAAA. */
+{ "ldb", 0x20320000, 0xF83E0000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> 0,b,c 00100bbbaa11001XDBBBCCCCCC111110. */
+{ "ldb", 0x2032003E, 0xF83E003F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,b,s9 00010bbbssssssssSBBBDaa01XAAAAAA. */
+{ "ldb", 0x10000080, 0xF8000180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+
+/* ldbZZ_B<.x><.di><.aa> 0,b,s9 00010bbbssssssssSBBBDaa01X111110. */
+{ "ldb", 0x100000BE, 0xF80001BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+
+/* ldbZZ_B<.x><.di> a,ximm 00010100000000000111D0001XAAAAAA. */
+{ "ldb", 0x14007080, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, XIMM, BRAKETdup }, { C_ZZ_B, C_DI20, C_X25 }},
+/* ldbZZ_B<.x><.di> a,limm 00010110000000000111D0001XAAAAAA. */
+{ "ldb", 0x16007080, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_B, C_DI20, C_X25 }},
+
+/* ldbZZ_B<.x><.di> 0,limm 00010110000000000111D0001X111110. */
+{ "ldb", 0x160070BE, 0xFFFFF7BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_B, C_DI20, C_X25 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,b,ximm 00100bbbaa11001XDBBB111100AAAAAA. */
+{ "ldb", 0x20320F00, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, XIMM, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+/* ldbZZ_B<.x><.di><.aa> a,b,limm 00100bbbaa11001XDBBB111110AAAAAA. */
+{ "ldb", 0x20320F80, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,ximm,c 00100100aa11001XD111CCCCCCAAAAAA. */
+{ "ldb", 0x24327000, 0xFF3E7000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, XIMM, RC, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+/* ldbZZ_B<.x><.di><.aa> a,limm,c 00100110aa11001XD111CCCCCCAAAAAA. */
+{ "ldb", 0x26327000, 0xFF3E7000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> 0,b,limm 00100bbbaa11001XDBBB111110111110. */
+{ "ldb", 0x20320FBE, 0xF83E0FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> 0,limm,c 00100110aa11001XD111CCCCCC111110. */
+{ "ldb", 0x2632703E, 0xFF3E703F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_B, C_DI16, C_AAB8, C_X15 }},
+
+/* ldbZZ_B<.x><.di><.aa> a,ximm,s9 00010100ssssssssS111Daa01XAAAAAA. */
+{ "ldb", 0x14007080, 0xFF007180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, XIMM, SIMM9_8, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+/* ldbZZ_B<.x><.di><.aa> a,limm,s9 00010110ssssssssS111Daa01XAAAAAA. */
+{ "ldb", 0x16007080, 0xFF007180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+
+/* ldbZZ_B<.x><.di><.aa> 0,limm,s9 00010110ssssssssS111Daa01X111110. */
+{ "ldb", 0x160070BE, 0xFF0071BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_B, C_DI20, C_AAB21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b 00010bbb000000000BBBDaa10XAAAAAA. */
+{ "ldh", 0x10000100, 0xF8FF8180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,c 00100bbbaa11010XDBBBCCCCCCAAAAAA. */
+{ "ldh", 0x20340000, 0xF83E0000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,c 00100bbbaa11010XDBBBCCCCCC111110. */
+{ "ldh", 0x2034003E, 0xF83E003F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,s9 00010bbbssssssssSBBBDaa10XAAAAAA. */
+{ "ldh", 0x10000100, 0xF8000180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,s9 00010bbbssssssssSBBBDaa10X111110. */
+{ "ldh", 0x1000013E, 0xF80001BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di> a,limm 00010110000000000111D0010XAAAAAA. */
+{ "ldh", 0x16007100, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_H, C_DI20, C_X25 }},
+
+/* ldhZZ_H<.x><.di> 0,limm 00010110000000000111D0010X111110. */
+{ "ldh", 0x1600713E, 0xFFFFF7BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_H, C_DI20, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,limm 00100bbbaa11010XDBBB111110AAAAAA. */
+{ "ldh", 0x20340F80, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,ximm 00100bbbaa11010XDBBB111100AAAAAA. */
+{ "ldh", 0x20340F00, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, XIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,limm,c 00100110aa11010XD111CCCCCCAAAAAA. */
+{ "ldh", 0x26347000, 0xFF3E7000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,limm 00100bbbaa11010XDBBB111110111110. */
+{ "ldh", 0x20340FBE, 0xF83E0FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,limm,c 00100110aa11010XD111CCCCCC111110. */
+{ "ldh", 0x2634703E, 0xFF3E703F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,limm,s9 00010110ssssssssS111Daa10XAAAAAA. */
+{ "ldh", 0x16007100, 0xFF007180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,limm,s9 00010110ssssssssS111Daa10X111110. */
+{ "ldh", 0x1600713E, 0xFF0071BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+
+/* ldhZZ_H<.x><.di><.aa> a,b 00010bbb000000000BBBDaa10XAAAAAA. */
+{ "ldw", 0x10000100, 0xF8FF8180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,c 00100bbbaa11010XDBBBCCCCCCAAAAAA. */
+{ "ldw", 0x20340000, 0xF83E0000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,c 00100bbbaa11010XDBBBCCCCCC111110. */
+{ "ldw", 0x2034003E, 0xF83E003F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,s9 00010bbbssssssssSBBBDaa10XAAAAAA. */
+{ "ldw", 0x10000100, 0xF8000180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,s9 00010bbbssssssssSBBBDaa10X111110. */
+{ "ldw", 0x1000013E, 0xF80001BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di> a,limm 00010110000000000111D0010XAAAAAA. */
+{ "ldw", 0x16007100, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_H, C_DI20, C_X25 }},
+
+/* ldhZZ_H<.x><.di> 0,limm 00010110000000000111D0010X111110. */
+{ "ldw", 0x1600713E, 0xFFFFF7BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_H, C_DI20, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,limm 00100bbbaa11010XDBBB111110AAAAAA. */
+{ "ldw", 0x20340F80, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,b,ximm 00100bbbaa11010XDBBB111100AAAAAA. */
+{ "ldw", 0x20340F00, 0xF83E0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, XIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,limm,c 00100110aa11010XD111CCCCCCAAAAAA. */
+{ "ldw", 0x26347000, 0xFF3E7000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,b,limm 00100bbbaa11010XDBBB111110111110. */
+{ "ldw", 0x20340FBE, 0xF83E0FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,limm,c 00100110aa11010XD111CCCCCC111110. */
+{ "ldw", 0x2634703E, 0xFF3E703F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_H, C_DI16, C_AA8, C_X15 }},
+
+/* ldhZZ_H<.x><.di><.aa> a,limm,s9 00010110ssssssssS111Daa10XAAAAAA. */
+{ "ldw", 0x16007100, 0xFF007180, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+/* ldhZZ_H<.x><.di><.aa> 0,limm,s9 00010110ssssssssS111Daa10X111110. */
+{ "ldw", 0x1600713E, 0xFF0071BF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_H, C_DI20, C_AA21, C_X25 }},
+
+
+/* lddl<.aa> a,b 00010bbb000000000BBBq1101QAAAAAA -> lddl a,[b,s9=0] */
+/* lddl<.aa> a,b,s9 00010bbbssssssssSBBBq1101QAAAAAA -> lddl a,[b,s9] */
+/* lddl<.as> a,ximm 00010100000000000111q1101QAAAAAA -> lddl a,[b=60,s9=0] */
+/* lddl<.as> a,limm 00010110000000000111q1101QAAAAAA -> lddl a,[b=62,s9=0] */
+{ "lddl", 0x10000680, 0xF8FF8780, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, RB, BRAKETdup }, { C_AA_128S }},
+{ "lddl", 0x10000680, 0xF8000780, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA_128S }},
+
+{ "lddl", 0x14007680, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, XIMM, BRAKETdup }, { C_AS_128S }},
+{ "lddl", 0x16007680, 0xFFFFF780, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, LIMM, BRAKETdup }, { C_AS_128S }},
+
+/* lddl<.aa> a,b,c 00100bbb1111001QQBBBCCCCCCAAAAAA -> lddl a,[b,c] */
+/* lddl<.aa> a,b,ximm 00100bbb1111001QQBBB111100AAAAAA -> lddl a,[b,c=60] */
+/* lddl<.aa> a,b,limm 00100bbb1111001QQBBB111110AAAAAA -> lddl a,[b,c=62] */
+/* lddl<.as> a,ximm,c 001001001111001QQ111CCCCCCAAAAAA -> lddl a,[b=60,c] */
+/* lddl<.as> a,limm,c 001001101111001QQ111CCCCCCAAAAAA -> lddl a,[b=62,c] */
+{ "lddl", 0x20F20000, 0xF8FE0000, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, RB, RC, BRAKETdup }, { C_AA_128 }},
+
+{ "lddl", 0x20F20F00, 0xF8FE0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, RB, XIMM, BRAKETdup }, { C_AA_128 }},
+{ "lddl", 0x20F20F80, 0xF8FE0FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, RB, LIMM, BRAKETdup }, { C_AA_128 }},
+
+{ "lddl", 0x24F27000, 0xFFFE7000, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, XIMM, RC, BRAKETdup }, { C_AS_128 }},
+{ "lddl", 0x26F27000, 0xFFFE7000, ARC_OPCODE_ARC64, LOAD, NONE, { RAD, BRAKET, LIMM, RC, BRAKETdup }, { C_AS_128 }},
+
+
+/* ldlZZ_L<.aa> a,b 00010bbb000000000BBB1aa001AAAAAA. */
+{ "ldl", 0x10000840, 0xF8FF89C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldlZZ_L<.aa> 0,b 00010bbb000000000BBB1aa001111110. */
+{ "ldl", 0x1000087E, 0xF8FF89FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldlZZ_L<.aa> a,b,c 00100bbbaa1100011BBBCCCCCCAAAAAA. */
+{ "ldl", 0x20318000, 0xF83F8000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L<.aa> 0,b,c 00100bbbaa1100011BBBCCCCCC111110. */
+{ "ldl", 0x2031803E, 0xF83F803F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, RC, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L<.aa> a,b,s9 00010bbbssssssssSBBB1aa001AAAAAA. */
+{ "ldl", 0x10000840, 0xF80009C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldlZZ_L<.aa> 0,b,s9 00010bbbssssssssSBBB1aa001111110. */
+{ "ldl", 0x1000087E, 0xF80009FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldlZZ_L 0,limm 00010110000000000111100001111110. */
+{ "ldl", 0x1600787E, 0xFFFFFFFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_ZZ_L }},
+
+/* ldlZZ_L a,limm 00010110000000000111100001AAAAAA. */
+{ "ldl", 0x16007840, 0xFFFFFFC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LIMM, BRAKETdup }, { C_ZZ_L }},
+
+/* ldlZZ_L<.aa> a,b,limm 00100bbbaa1100011BBB111110AAAAAA. */
+{ "ldl", 0x20318F80, 0xF83F8FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L<.aa> a,b,ximm 00100bbbaa1100011BBB111100AAAAAA. */
+{ "ldl", 0x20318F00, 0xF83F8FC0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, RB, XIMM, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L<.aa> 0,b,limm 00100bbbaa1100011BBB111110111110. */
+{ "ldl", 0x20318FBE, 0xF83F8FFF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, RB, LIMM, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L 0,limm,c 00100110001100011111CCCCCC111110. */
+{ "ldl", 0x2631F03E, 0xFFFFF03F, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, RC, BRAKETdup }, { C_ZZ_L }},
+
+/* ldlZZ_L a,limm,c 00100110aa1100011111CCCCCCAAAAAA. */
+{ "ldl", 0x2631F000, 0xFF3FF000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LO32, RC, BRAKETdup }, { C_ZZ_L, C_AA8 }},
+
+/* ldlZZ_L<.aa> a,ximm,c 00100100aa1100011111CCCCCCAAAAAA. */
+{ "ldl", 0x2431F000, 0xFF3FF000, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, XIMM, RC, BRAKETdup }, { C_ZZ_L , C_AA8 }},
+
+/* ldlZZ_L<.aa> a,limm,s9 00010110ssssssssS1111aa001AAAAAA. */
+{ "ldl", 0x16007840, 0xFF0079C0, ARC_OPCODE_ARC64, LOAD, NONE, { RA_CHK, BRAKET, LO32, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldlZZ_L<.aa> 0,limm,s9 00010110ssssssssS1111aa001111110. */
+{ "ldl", 0x1600787E, 0xFF0079FF, ARC_OPCODE_ARC64, LOAD, NONE, { ZA, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA21 }},
+
+/* ldb_sZZ_B a,b,c 01100bbbccc01aaa. */
+{ "ldb_s", 0x00006008, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RA_S, BRAKET, RB_S, RC_S, BRAKETdup }, { C_ZZ_B }},
+
+/* ldb_sZZ_B c,b,u5 10001bbbcccuuuuu. */
+{ "ldb_s", 0x00008800, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RC_S, BRAKET, RB_S, UIMM5_11_S, BRAKETdup }, { C_ZZ_B }},
+
+/* ldb_sZZ_B b,SP,u7 11000bbb001uuuuu. */
+{ "ldb_s", 0x0000C020, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RB_S, BRAKET, SP_S, UIMM7_A32_11_S, BRAKETdup }, { C_ZZ_B }},
+
+/* ldb_sZZ_B R0,GP,s9 1100101sssssssss. */
+{ "ldb_s", 0x0000CA00, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { R0_S, BRAKET, GP_S, SIMM9_7_S, BRAKETdup }, { C_ZZ_B }},
+
+/* ldh_sZZ_H a,b,c 01100bbbccc10aaa. */
+{ "ldh_s", 0x00006010, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RA_S, BRAKET, RB_S, RC_S, BRAKETdup }, { C_ZZ_H }},
+
+/* ldh_sZZ_H c,b,u6 10010bbbcccuuuuu. */
+{ "ldh_s", 0x00009000, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RC_S, BRAKET, RB_S, UIMM6_A16_11_S, BRAKETdup }, { C_ZZ_H }},
+
+/* ldh_sZZ_H.X c,b,u6 10011bbbcccuuuuu. */
+{ "ldh_s", 0x00009800, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RC_S, BRAKET, RB_S, UIMM6_A16_11_S, BRAKETdup }, { C_ZZ_H, C_XHARD }},
+
+/* ldh_sZZ_H R0,GP,s10 1100110sssssssss. */
+{ "ldh_s", 0x0000CC00, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { R0_S, BRAKET, GP_S, SIMM10_A16_7_Sbis, BRAKETdup }, { C_ZZ_H }},
+
+/* ld_s a,b,c 01100bbbccc00aaa. */
+{ "ld_s", 0x00006000, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RA_S, BRAKET, RB_S, RC_S, BRAKETdup }, { 0 }},
+
+/* ld_s.AS a,b,c 01001bbbccc00aaa. */
+{ "ld_s", 0x00004800, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, CD2, { RA_S, BRAKET, RB_S, RC_S, BRAKETdup }, { C_AS }},
+
+/* ld_s b,SP,u7 11000bbb000uuuuu. */
+{ "ld_s", 0x0000C000, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RB_S, BRAKET, SP_S, UIMM7_A32_11_S, BRAKETdup }, { 0 }},
+
+/* ld_s c,b,u7 10000bbbcccuuuuu. */
+{ "ld_s", 0x00008000, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RC_S, BRAKET, RB_S, UIMM7_A32_11_S, BRAKETdup }, { 0 }},
+
+/* ld_s b,PCL,u10 11010bbbuuuuuuuu. */
+{ "ld_s", 0x0000D000, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { RB_S, BRAKET, PCL_S, UIMM10_A32_8_S, BRAKETdup }, { 0 }},
+
+/* ld_s R0,GP,s11 1100100sssssssss. */
+{ "ld_s", 0x0000C800, 0x0000FE00, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, NONE, { R0_S, BRAKET, GP_S, SIMM11_A32_7_S, BRAKETdup }, { 0 }},
+
+/* ld_s R1,GP,s11 01010SSSSSS00sss. */
+{ "ld_s", 0x00005000, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOAD, CD2, { R1_S, BRAKET, GP_S, SIMM11_A32_13_S, BRAKETdup }, { 0 }},
+
+/* leave_s u7 11000UUU110uuuu0. */
+{ "leave_s", 0x0000C0C0, 0x0000F8E1, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, LEAVE, CD1, { BRAKET, RRANGE_EL, FP_EL, BLINK_EL, PCL_EL, BRAKETdup }, { 0 }},
+{ "leave_s", 0x0000C0C0, 0x0000F8E1, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, LEAVE, CD1, { BRAKET, R13_EL, FP_EL, BLINK_EL, PCL_EL, BRAKETdup }, { 0 }},
+{ "leave_s", 0x0000C0C0, 0x0000F8E1, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LEAVE, CD1, { UIMM7_11_S }, { 0 }},
+
+/* llock<.di> b,c 00100bbb00101111DBBBCCCCCC010000. */
+{ "llock", 0x202F0010, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_DI16 }},
+
+/* llock<.di> 0,c 0010011000101111D111CCCCCC010000. */
+{ "llock", 0x262F7010, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { ZA, BRAKET, RC, BRAKETdup }, { C_DI16 }},
+
+/* llock<.di> b,u6 00100bbb01101111DBBBuuuuuu010000. */
+{ "llock", 0x206F0010, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, UIMM6_20, BRAKETdup }, { C_DI16 }},
+
+/* llock<.di> 0,u6 0010011001101111D111uuuuuu010000. */
+{ "llock", 0x266F7010, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { ZA, BRAKET, UIMM6_20, BRAKETdup }, { C_DI16 }},
+
+/* llock<.di> b,limm 00100bbb00101111DBBB111110010000. */
+{ "llock", 0x202F0F90, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, LIMM, BRAKETdup }, { C_DI16 }},
+
+/* llock<.di> 0,limm 0010011000101111D111111110010000. */
+{ "llock", 0x262F7F90, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { C_DI16 }},
+
+/* llockl<.aq> RB,RC 01011bbb00101111FBBBcccccc010000. */
+{ "llockl", 0x582F0010, 0xF8FF003F, ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_AQ }},
+
+/* lr b,c 00100bbb00101010RBBBCCCCCCRRRRRR. */
+{ "lr", 0x202A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* lr 0,c 0010011000101010R111CCCCCCRRRRRR. */
+{ "lr", 0x262A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { ZA, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* lr b,u6 00100bbb01101010RBBBuuuuuu000000. */
+{ "lr", 0x206A0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* lr 0,u6 0010011001101010R111uuuuuu000000. */
+{ "lr", 0x266A7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { ZA, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* lr b,s12 00100bbb10101010RBBBssssssSSSSSS. */
+{ "lr", 0x20AA0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* lr 0,s12 0010011010101010R111ssssssSSSSSS. */
+{ "lr", 0x26AA7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { ZA, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* lr b,limm 00100bbb00101010RBBB111110RRRRRR. */
+{ "lr", 0x202A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* lr 0,limm 0010011000101010R111111110RRRRRR. */
+{ "lr", 0x262A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { ZA, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* lrl RB,RC 01011bbb001010100BBBccccccRRRRRR. */
+{ "lrl", 0x582A0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* lrl RB,u6 01011bbb011010100BBBuuuuuuRRRRRR. */
+{ "lrl", 0x586A0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* lrl RB,s12 01011bbb101010100BBBssssssSSSSSS. */
+{ "lrl", 0x58AA0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* lrl RB,ximm 01011bbb001010100BBB111100RRRRRR. */
+{ "lrl", 0x582A0F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, XIMM, BRAKETdup }, { 0 }},
+
+/* lrl RB,limm 01011bbb001010100BBB111110RRRRRR. */
+{ "lrl", 0x582A0F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* lsl16<.f> b,c 00101bbb00101111FBBBCCCCCC001010. */
+{ "lsl16", 0x282F000A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, RC }, { C_F }},
+
+/* lsl16<.f> 0,c 0010111000101111F111CCCCCC001010. */
+{ "lsl16", 0x2E2F700A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, RC }, { C_F }},
+
+/* lsl16<.f> b,u6 00101bbb01101111FBBBuuuuuu001010. */
+{ "lsl16", 0x286F000A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, UIMM6_20 }, { C_F }},
+
+/* lsl16<.f> 0,u6 0010111001101111F111uuuuuu001010. */
+{ "lsl16", 0x2E6F700A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, UIMM6_20 }, { C_F }},
+
+/* lsl16<.f> b,limm 00101bbb00101111FBBB111110001010. */
+{ "lsl16", 0x282F0F8A, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, LIMM }, { C_F }},
+
+/* lsl16<.f> 0,limm 0010111000101111F111111110001010. */
+{ "lsl16", 0x2E2F7F8A, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, LIMM }, { C_F }},
+
+/* lsl8<.f> b,c 00101bbb00101111FBBBCCCCCC001111. */
+{ "lsl8", 0x282F000F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, RC }, { C_F }},
+
+/* lsl8<.f> 0,c 0010111000101111F111CCCCCC001111. */
+{ "lsl8", 0x2E2F700F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, RC }, { C_F }},
+
+/* lsl8<.f> b,u6 00101bbb01101111FBBBuuuuuu001111. */
+{ "lsl8", 0x286F000F, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* lsl8<.f> 0,u6 0010111001101111F111uuuuuu001111. */
+{ "lsl8", 0x2E6F700F, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* lsl8<.f> b,limm 00101bbb00101111FBBB111110001111. */
+{ "lsl8", 0x282F0F8F, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, LIMM }, { C_F }},
+
+/* lsl8<.f> 0,limm 0010111000101111F111111110001111. */
+{ "lsl8", 0x2E2F7F8F, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* lsr<.f> b,c 00100bbb00101111FBBBCCCCCC000010. */
+{ "lsr", 0x202F0002, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* lsr<.f> 0,c 0010011000101111F111CCCCCC000010. */
+{ "lsr", 0x262F7002, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* lsr<.f> a,b,c 00101bbb00000001FBBBCCCCCCAAAAAA. */
+{ "lsr", 0x28010000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, RC }, { C_F }},
+
+/* lsr<.f> 0,b,c 00101bbb00000001FBBBCCCCCC111110. */
+{ "lsr", 0x2801003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, RC }, { C_F }},
+
+/* lsr<.f><.cc> b,b,c 00101bbb11000001FBBBCCCCCC0QQQQQ. */
+{ "lsr", 0x28C10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* lsr<.f> b,u6 00100bbb01101111FBBBuuuuuu000010. */
+{ "lsr", 0x206F0002, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* lsr<.f> 0,u6 0010011001101111F111uuuuuu000010. */
+{ "lsr", 0x266F7002, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* lsr<.f> a,b,u6 00101bbb01000001FBBBuuuuuuAAAAAA. */
+{ "lsr", 0x28410000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* lsr<.f> 0,b,u6 00101bbb01000001FBBBuuuuuu111110. */
+{ "lsr", 0x2841003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* lsr<.f><.cc> b,b,u6 00101bbb11000001FBBBuuuuuu1QQQQQ. */
+{ "lsr", 0x28C10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* lsr<.f> b,b,s12 00101bbb10000001FBBBssssssSSSSSS. */
+{ "lsr", 0x28810000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* lsr<.f> b,limm 00100bbb00101111FBBB111110000010. */
+{ "lsr", 0x202F0F82, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* lsr<.f> 0,limm 0010011000101111F111111110000010. */
+{ "lsr", 0x262F7F82, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* lsr<.f> a,limm,c 0010111000000001F111CCCCCCAAAAAA. */
+{ "lsr", 0x2E017000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, RC }, { C_F }},
+
+/* lsr<.f> a,b,limm 00101bbb00000001FBBB111110AAAAAA. */
+{ "lsr", 0x28010F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, LIMM }, { C_F }},
+
+/* lsr<.f> 0,limm,c 0010111000000001F111CCCCCC111110. */
+{ "lsr", 0x2E01703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F }},
+
+/* lsr<.f> 0,b,limm 00101bbb00000001FBBB111110111110. */
+{ "lsr", 0x28010FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, LIMM }, { C_F }},
+
+/* lsr<.f><.cc> b,b,limm 00101bbb11000001FBBB1111100QQQQQ. */
+{ "lsr", 0x28C10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* lsr<.f><.cc> 0,limm,c 0010111011000001F111CCCCCC0QQQQQ. */
+{ "lsr", 0x2EC17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* lsr<.f> a,limm,u6 0010111001000001F111uuuuuuAAAAAA. */
+{ "lsr", 0x2E417000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* lsr<.f> 0,limm,u6 0010111001000001F111uuuuuu111110. */
+{ "lsr", 0x2E41703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* lsr<.f><.cc> 0,limm,u6 0010111011000001F111uuuuuu1QQQQQ. */
+{ "lsr", 0x2EC17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* lsr<.f> 0,limm,s12 0010111010000001F111ssssssSSSSSS. */
+{ "lsr", 0x2E817000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* lsr<.f> a,limm,limm 0010111000000001F111111110AAAAAA. */
+{ "lsr", 0x2E017F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* lsr<.f> 0,limm,limm 0010111000000001F111111110111110. */
+{ "lsr", 0x2E017FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* lsr<.f><.cc> 0,limm,limm 0010111011000001F1111111100QQQQQ. */
+{ "lsr", 0x2EC17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* lsr16<.f> b,c 00101bbb00101111FBBBCCCCCC001011. */
+{ "lsr16", 0x282F000B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, RC }, { C_F }},
+
+/* lsr16<.f> 0,c 0010111000101111F111CCCCCC001011. */
+{ "lsr16", 0x2E2F700B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, RC }, { C_F }},
+
+/* lsr16<.f> b,u6 00101bbb01101111FBBBuuuuuu001011. */
+{ "lsr16", 0x286F000B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, UIMM6_20 }, { C_F }},
+
+/* lsr16<.f> 0,u6 0010111001101111F111uuuuuu001011. */
+{ "lsr16", 0x2E6F700B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, UIMM6_20 }, { C_F }},
+
+/* lsr16<.f> b,limm 00101bbb00101111FBBB111110001011. */
+{ "lsr16", 0x282F0F8B, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, LIMM }, { C_F }},
+
+/* lsr16<.f> 0,limm 0010111000101111F111111110001011. */
+{ "lsr16", 0x2E2F7F8B, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, LIMM }, { C_F }},
+
+/* lsr8<.f> b,c 00101bbb00101111FBBBCCCCCC001110. */
+{ "lsr8", 0x282F000E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, RC }, { C_F }},
+
+/* lsr8<.f> 0,c 0010111000101111F111CCCCCC001110. */
+{ "lsr8", 0x2E2F700E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, RC }, { C_F }},
+
+/* lsr8<.f> b,u6 00101bbb01101111FBBBuuuuuu001110. */
+{ "lsr8", 0x286F000E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* lsr8<.f> 0,u6 0010111001101111F111uuuuuu001110. */
+{ "lsr8", 0x2E6F700E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* lsr8<.f> b,limm 00101bbb00101111FBBB111110001110. */
+{ "lsr8", 0x282F0F8E, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { RB, LIMM }, { C_F }},
+
+/* lsr8<.f> 0,limm 0010111000101111F111111110001110. */
+{ "lsr8", 0x2E2F7F8E, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* lsrl<.f> RA,RB,RC 01011bbb00100001FBBBccccccaaaaaa. */
+{ "lsrl", 0x58210000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* lsrl<.f> 0,RB,RC 01011bbb00100001FBBBcccccc111110. */
+{ "lsrl", 0x5821003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* lsrl<.f><.cc> RB,RB,RC 01011bbb11100001FBBBcccccc0QQQQQ. */
+{ "lsrl", 0x58E10000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* lsrl<.f> RA,RB,u6 01011bbb01100001FBBBuuuuuuaaaaaa. */
+{ "lsrl", 0x58610000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f> 0,RB,u6 01011bbb01100001FBBBuuuuuu111110. */
+{ "lsrl", 0x5861003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f><.cc> RB,RB,u6 01011bbb11100001FBBBuuuuuu1QQQQQ. */
+{ "lsrl", 0x58E10020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* lsrl<.f> RB,RB,s12 01011bbb10100001FBBBssssssSSSSSS. */
+{ "lsrl", 0x58A10000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* lsrl<.f> RA,ximm,RC 0101110000100001F111ccccccaaaaaa. */
+{ "lsrl", 0x5C217000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* lsrl<.f> RA,RB,ximm 01011bbb00100001FBBB111100aaaaaa. */
+{ "lsrl", 0x58210F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* lsrl<.f> 0,ximm,RC 0101110000100001F111cccccc111110. */
+{ "lsrl", 0x5C21703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* lsrl<.f> 0,RB,ximm 01011bbb00100001FBBB111100111110. */
+{ "lsrl", 0x58210F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* lsrl<.f><.cc> 0,ximm,RC 0101110011100001F111cccccc0QQQQQ. */
+{ "lsrl", 0x5CE17000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* lsrl<.f><.cc> RB,RB,ximm 01011bbb11100001FBBB1111000QQQQQ. */
+{ "lsrl", 0x58E10F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* lsrl<.f> RA,ximm,u6 0101110001100001F111uuuuuuaaaaaa. */
+{ "lsrl", 0x5C617000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f> 0,ximm,u6 0101110001100001F111uuuuuu111110. */
+{ "lsrl", 0x5C61703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f><.cc> 0,ximm,u6 0101110011100001F111uuuuuu1QQQQQ. */
+{ "lsrl", 0x5CE17020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* lsrl<.f> RA,limm,RC 0101111000100001F111ccccccaaaaaa. */
+{ "lsrl", 0x5E217000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* lsrl<.f> RA,RB,limm 01011bbb00100001FBBB111110aaaaaa. */
+{ "lsrl", 0x58210F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* lsrl<.f> 0,limm,RC 0101111000100001F111cccccc111110. */
+{ "lsrl", 0x5E21703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* lsrl<.f> 0,RB,limm 01011bbb00100001FBBB111110111110. */
+{ "lsrl", 0x58210FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* lsrl<.f><.cc> 0,limm,RC 0101111011100001F111cccccc0QQQQQ. */
+{ "lsrl", 0x5EE17000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* lsrl<.f><.cc> RB,RB,limm 01011bbb11100001FBBB1111100QQQQQ. */
+{ "lsrl", 0x58E10F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* lsrl<.f> RA,limm,u6 0101111001100001F111uuuuuuaaaaaa. */
+{ "lsrl", 0x5E617000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f> 0,limm,u6 0101111001100001F111uuuuuu111110. */
+{ "lsrl", 0x5E61703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* lsrl<.f><.cc> 0,limm,u6 0101111011100001F111uuuuuu1QQQQQ. */
+{ "lsrl", 0x5EE17020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* lsrl<.f> 0,ximm,s12 0101110010100001F111ssssssSSSSSS. */
+{ "lsrl", 0x5CA17000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* lsrl<.f> 0,limm,s12 0101111010100001F111ssssssSSSSSS. */
+{ "lsrl", 0x5EA17000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* lsrl<.f> RA,ximm,ximm 0101110000100001F111111100aaaaaa. */
+{ "lsrl", 0x5C217F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* lsrl<.f> 0,ximm,ximm 0101110000100001F111111100111110. */
+{ "lsrl", 0x5C217F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* lsrl<.f><.cc> 0,ximm,ximm 0101110011100001F1111111000QQQQQ. */
+{ "lsrl", 0x5CE17F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* lsrl<.f> RA,limm,limm 0101111000100001F111111110aaaaaa. */
+{ "lsrl", 0x5E217F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* lsrl<.f> 0,limm,limm 0101111000100001F111111110111110. */
+{ "lsrl", 0x5E217FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* lsrl<.f><.cc> 0,limm,limm 0101111011100001F1111111100QQQQQ. */
+{ "lsrl", 0x5EE17F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* lsr_s b,c 01111bbbccc11101. */
+{ "lsr_s", 0x0000781D, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RC_S }, { 0 }},
+
+/* lsr_s b,b,c 01111bbbccc11001. */
+{ "lsr_s", 0x00007819, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* lsr_s b,b,u5 10111bbb001uuuuu. */
+{ "lsr_s", 0x0000B820, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* lstl<.f> RB,RC 01011bbb00101111FBBBcccccc000010. */
+{ "lstl", 0x582F0002, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* lstl<.f> 0,RC 0101111000101111F111cccccc000010. */
+{ "lstl", 0x5E2F7002, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* lstl<.f> RB,u6 01011bbb01101111FBBBuuuuuu000010. */
+{ "lstl", 0x586F0002, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* lstl<.f> 0,u6 0101111001101111F111uuuuuu000010. */
+{ "lstl", 0x5E6F7002, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* lstl<.f> RB,ximm 01011bbb00101111FBBB111100000010. */
+{ "lstl", 0x582F0F02, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* lstl<.f> 0,ximm 0101111000101111F111111100000010. */
+{ "lstl", 0x5E2F7F02, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* lstl<.f> RB,limm 01011bbb00101111FBBB111110000010. */
+{ "lstl", 0x582F0F82, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* lstl<.f> 0,limm 0101111000101111F111111110000010. */
+{ "lstl", 0x5E2F7F82, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* mac<.f> a,b,c 00101bbb00001110FBBBCCCCCCAAAAAA. */
+{ "mac", 0x280E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mac<.f> 0,b,c 00101bbb00001110FBBBCCCCCC111110. */
+{ "mac", 0x280E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* mac<.f><.cc> b,b,c 00101bbb11001110FBBBCCCCCC0QQQQQ. */
+{ "mac", 0x28CE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mac<.f> a,b,u6 00101bbb01001110FBBBuuuuuuAAAAAA. */
+{ "mac", 0x284E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mac<.f> 0,b,u6 00101bbb01001110FBBBuuuuuu111110. */
+{ "mac", 0x284E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mac<.f><.cc> b,b,u6 00101bbb11001110FBBBuuuuuu1QQQQQ. */
+{ "mac", 0x28CE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mac<.f> b,b,s12 00101bbb10001110FBBBssssssSSSSSS. */
+{ "mac", 0x288E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mac<.f> a,limm,c 0010111000001110F111CCCCCCAAAAAA. */
+{ "mac", 0x2E0E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mac<.f> a,b,limm 00101bbb00001110FBBB111110AAAAAA. */
+{ "mac", 0x280E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mac<.f> 0,limm,c 0010111000001110F111CCCCCC111110. */
+{ "mac", 0x2E0E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* mac<.f> 0,b,limm 00101bbb00001110FBBB111110111110. */
+{ "mac", 0x280E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* mac<.f><.cc> b,b,limm 00101bbb11001110FBBB1111100QQQQQ. */
+{ "mac", 0x28CE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mac<.f><.cc> 0,limm,c 0010111011001110F111CCCCCC0QQQQQ. */
+{ "mac", 0x2ECE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mac<.f> a,limm,u6 0010111001001110F111uuuuuuAAAAAA. */
+{ "mac", 0x2E4E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mac<.f> 0,limm,u6 0010111001001110F111uuuuuu111110. */
+{ "mac", 0x2E4E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mac<.f><.cc> 0,limm,u6 0010111011001110F111uuuuuu1QQQQQ. */
+{ "mac", 0x2ECE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mac<.f> 0,limm,s12 0010111010001110F111ssssssSSSSSS. */
+{ "mac", 0x2E8E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mac<.f> a,limm,limm 0010111000001110F111111110AAAAAA. */
+{ "mac", 0x2E0E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mac<.f> 0,limm,limm 0010111000001110F111111110111110. */
+{ "mac", 0x2E0E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mac<.f><.cc> 0,limm,limm 0010111011001110F1111111100QQQQQ. */
+{ "mac", 0x2ECE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macd<.f> a,b,c 00101bbb00011010FBBBCCCCCCAAAAAA. */
+{ "macd", 0x281A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { C_F }},
+
+/* macd<.f> 0,b,c 00101bbb00011010FBBBCCCCCC111110. */
+{ "macd", 0x281A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { C_F }},
+
+/* macd<.f><.cc> b,b,c 00101bbb11011010FBBBCCCCCC0QQQQQ. */
+{ "macd", 0x28DA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macd<.f> a,b,u6 00101bbb01011010FBBBuuuuuuAAAAAA. */
+{ "macd", 0x285A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macd<.f> 0,b,u6 00101bbb01011010FBBBuuuuuu111110. */
+{ "macd", 0x285A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macd<.f><.cc> b,b,u6 00101bbb11011010FBBBuuuuuu1QQQQQ. */
+{ "macd", 0x28DA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macd<.f> b,b,s12 00101bbb10011010FBBBssssssSSSSSS. */
+{ "macd", 0x289A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macd<.f> a,limm,c 0010111000011010F111CCCCCCAAAAAA. */
+{ "macd", 0x2E1A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macd<.f> a,b,limm 00101bbb00011010FBBB111110AAAAAA. */
+{ "macd", 0x281A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macd<.f> 0,limm,c 0010111000011010F111CCCCCC111110. */
+{ "macd", 0x2E1A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F }},
+
+/* macd<.f> 0,b,limm 00101bbb00011010FBBB111110111110. */
+{ "macd", 0x281A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { C_F }},
+
+/* macd<.f><.cc> b,b,limm 00101bbb11011010FBBB1111100QQQQQ. */
+{ "macd", 0x28DA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macd<.f><.cc> 0,limm,c 0010111011011010F111CCCCCC0QQQQQ. */
+{ "macd", 0x2EDA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macd<.f> a,limm,u6 0010111001011010F111uuuuuuAAAAAA. */
+{ "macd", 0x2E5A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macd<.f> 0,limm,u6 0010111001011010F111uuuuuu111110. */
+{ "macd", 0x2E5A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macd<.f><.cc> 0,limm,u6 0010111011011010F111uuuuuu1QQQQQ. */
+{ "macd", 0x2EDA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macd<.f> 0,limm,s12 0010111010011010F111ssssssSSSSSS. */
+{ "macd", 0x2E9A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macd<.f> a,limm,limm 0010111000011010F111111110AAAAAA. */
+{ "macd", 0x2E1A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macd<.f> 0,limm,limm 0010111000011010F111111110111110. */
+{ "macd", 0x2E1A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macd<.f><.cc> 0,limm,limm 0010111011011010F1111111100QQQQQ. */
+{ "macd", 0x2EDA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macdf<.f> a,b,c 00110bbb00010011FBBBCCCCCCAAAAAA. */
+{ "macdf", 0x30130000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macdf<.f> 0,b,c 00110bbb00010011FBBBCCCCCC111110. */
+{ "macdf", 0x3013003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macdf<.f><.cc> b,b,c 00110bbb11010011FBBBCCCCCC0QQQQQ. */
+{ "macdf", 0x30D30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macdf<.f> a,b,u6 00110bbb01010011FBBBuuuuuuAAAAAA. */
+{ "macdf", 0x30530000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macdf<.f> 0,b,u6 00110bbb01010011FBBBuuuuuu111110. */
+{ "macdf", 0x3053003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macdf<.f><.cc> b,b,u6 00110bbb11010011FBBBuuuuuu1QQQQQ. */
+{ "macdf", 0x30D30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macdf<.f> b,b,s12 00110bbb10010011FBBBssssssSSSSSS. */
+{ "macdf", 0x30930000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macdf<.f> a,limm,c 0011011000010011F111CCCCCCAAAAAA. */
+{ "macdf", 0x36137000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macdf<.f> a,b,limm 00110bbb00010011FBBB111110AAAAAA. */
+{ "macdf", 0x30130F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macdf<.f> 0,limm,c 0011011000010011F111CCCCCC111110. */
+{ "macdf", 0x3613703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macdf<.f> 0,b,limm 00110bbb00010011FBBB111110111110. */
+{ "macdf", 0x30130FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macdf<.f><.cc> b,b,limm 00110bbb11010011FBBB1111100QQQQQ. */
+{ "macdf", 0x30D30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macdf<.f><.cc> 0,limm,c 0011011011010011F111CCCCCC0QQQQQ. */
+{ "macdf", 0x36D37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macdf<.f> a,limm,u6 0011011001010011F111uuuuuuAAAAAA. */
+{ "macdf", 0x36537000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macdf<.f> 0,limm,u6 0011011001010011F111uuuuuu111110. */
+{ "macdf", 0x3653703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macdf<.f><.cc> 0,limm,u6 0011011011010011F111uuuuuu1QQQQQ. */
+{ "macdf", 0x36D37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macdf<.f> 0,limm,s12 0011011010010011F111ssssssSSSSSS. */
+{ "macdf", 0x36937000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macdf<.f> a,limm,limm 0011011000010011F111111110AAAAAA. */
+{ "macdf", 0x36137F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macdf<.f> 0,limm,limm 0011011000010011F111111110111110. */
+{ "macdf", 0x36137FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macdf<.f><.cc> 0,limm,limm 0011011011010011F1111111100QQQQQ. */
+{ "macdf", 0x36D37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macdu<.f> a,b,c 00101bbb00011011FBBBCCCCCCAAAAAA. */
+{ "macdu", 0x281B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { C_F }},
+
+/* macdu<.f> 0,b,c 00101bbb00011011FBBBCCCCCC111110. */
+{ "macdu", 0x281B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { C_F }},
+
+/* macdu<.f><.cc> b,b,c 00101bbb11011011FBBBCCCCCC0QQQQQ. */
+{ "macdu", 0x28DB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macdu<.f> a,b,u6 00101bbb01011011FBBBuuuuuuAAAAAA. */
+{ "macdu", 0x285B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macdu<.f> 0,b,u6 00101bbb01011011FBBBuuuuuu111110. */
+{ "macdu", 0x285B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macdu<.f><.cc> b,b,u6 00101bbb11011011FBBBuuuuuu1QQQQQ. */
+{ "macdu", 0x28DB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macdu<.f> b,b,s12 00101bbb10011011FBBBssssssSSSSSS. */
+{ "macdu", 0x289B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macdu<.f> a,limm,c 0010111000011011F111CCCCCCAAAAAA. */
+{ "macdu", 0x2E1B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macdu<.f> a,b,limm 00101bbb00011011FBBB111110AAAAAA. */
+{ "macdu", 0x281B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macdu<.f> 0,limm,c 0010111000011011F111CCCCCC111110. */
+{ "macdu", 0x2E1B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F }},
+
+/* macdu<.f> 0,b,limm 00101bbb00011011FBBB111110111110. */
+{ "macdu", 0x281B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { C_F }},
+
+/* macdu<.f><.cc> b,b,limm 00101bbb11011011FBBB1111100QQQQQ. */
+{ "macdu", 0x28DB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macdu<.f><.cc> 0,limm,c 0010111011011011F111CCCCCC0QQQQQ. */
+{ "macdu", 0x2EDB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macdu<.f> a,limm,u6 0010111001011011F111uuuuuuAAAAAA. */
+{ "macdu", 0x2E5B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macdu<.f> 0,limm,u6 0010111001011011F111uuuuuu111110. */
+{ "macdu", 0x2E5B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macdu<.f><.cc> 0,limm,u6 0010111011011011F111uuuuuu1QQQQQ. */
+{ "macdu", 0x2EDB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macdu<.f> 0,limm,s12 0010111010011011F111ssssssSSSSSS. */
+{ "macdu", 0x2E9B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macdu<.f> a,limm,limm 0010111000011011F111111110AAAAAA. */
+{ "macdu", 0x2E1B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macdu<.f> 0,limm,limm 0010111000011011F111111110111110. */
+{ "macdu", 0x2E1B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macdu<.f><.cc> 0,limm,limm 0010111011011011F1111111100QQQQQ. */
+{ "macdu", 0x2EDB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macf<.f> a,b,c 00110bbb00001100FBBBCCCCCCAAAAAA. */
+{ "macf", 0x300C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macf<.f> 0,b,c 00110bbb00001100FBBBCCCCCC111110. */
+{ "macf", 0x300C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macf<.f><.cc> b,b,c 00110bbb11001100FBBBCCCCCC0QQQQQ. */
+{ "macf", 0x30CC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macf<.f> a,b,u6 00110bbb01001100FBBBuuuuuuAAAAAA. */
+{ "macf", 0x304C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macf<.f> 0,b,u6 00110bbb01001100FBBBuuuuuu111110. */
+{ "macf", 0x304C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macf<.f><.cc> b,b,u6 00110bbb11001100FBBBuuuuuu1QQQQQ. */
+{ "macf", 0x30CC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macf<.f> b,b,s12 00110bbb10001100FBBBssssssSSSSSS. */
+{ "macf", 0x308C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macf<.f> a,limm,c 0011011000001100F111CCCCCCAAAAAA. */
+{ "macf", 0x360C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macf<.f> a,b,limm 00110bbb00001100FBBB111110AAAAAA. */
+{ "macf", 0x300C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macf<.f> 0,limm,c 0011011000001100F111CCCCCC111110. */
+{ "macf", 0x360C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macf<.f> 0,b,limm 00110bbb00001100FBBB111110111110. */
+{ "macf", 0x300C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macf<.f><.cc> b,b,limm 00110bbb11001100FBBB1111100QQQQQ. */
+{ "macf", 0x30CC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macf<.f><.cc> 0,limm,c 0011011011001100F111CCCCCC0QQQQQ. */
+{ "macf", 0x36CC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macf<.f> a,limm,u6 0011011001001100F111uuuuuuAAAAAA. */
+{ "macf", 0x364C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macf<.f> 0,limm,u6 0011011001001100F111uuuuuu111110. */
+{ "macf", 0x364C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macf<.f><.cc> 0,limm,u6 0011011011001100F111uuuuuu1QQQQQ. */
+{ "macf", 0x36CC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macf<.f> 0,limm,s12 0011011010001100F111ssssssSSSSSS. */
+{ "macf", 0x368C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macf<.f> a,limm,limm 0011011000001100F111111110AAAAAA. */
+{ "macf", 0x360C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macf<.f> 0,limm,limm 0011011000001100F111111110111110. */
+{ "macf", 0x360C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macf<.f><.cc> 0,limm,limm 0011011011001100F1111111100QQQQQ. */
+{ "macf", 0x36CC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macfr<.f> a,b,c 00110bbb00001101FBBBCCCCCCAAAAAA. */
+{ "macfr", 0x300D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macfr<.f> 0,b,c 00110bbb00001101FBBBCCCCCC111110. */
+{ "macfr", 0x300D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macfr<.f><.cc> b,b,c 00110bbb11001101FBBBCCCCCC0QQQQQ. */
+{ "macfr", 0x30CD0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macfr<.f> a,b,u6 00110bbb01001101FBBBuuuuuuAAAAAA. */
+{ "macfr", 0x304D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macfr<.f> 0,b,u6 00110bbb01001101FBBBuuuuuu111110. */
+{ "macfr", 0x304D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macfr<.f><.cc> b,b,u6 00110bbb11001101FBBBuuuuuu1QQQQQ. */
+{ "macfr", 0x30CD0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macfr<.f> b,b,s12 00110bbb10001101FBBBssssssSSSSSS. */
+{ "macfr", 0x308D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macfr<.f> a,limm,c 0011011000001101F111CCCCCCAAAAAA. */
+{ "macfr", 0x360D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macfr<.f> a,b,limm 00110bbb00001101FBBB111110AAAAAA. */
+{ "macfr", 0x300D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macfr<.f> 0,limm,c 0011011000001101F111CCCCCC111110. */
+{ "macfr", 0x360D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macfr<.f> 0,b,limm 00110bbb00001101FBBB111110111110. */
+{ "macfr", 0x300D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macfr<.f><.cc> b,b,limm 00110bbb11001101FBBB1111100QQQQQ. */
+{ "macfr", 0x30CD0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macfr<.f><.cc> 0,limm,c 0011011011001101F111CCCCCC0QQQQQ. */
+{ "macfr", 0x36CD7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macfr<.f> a,limm,u6 0011011001001101F111uuuuuuAAAAAA. */
+{ "macfr", 0x364D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macfr<.f> 0,limm,u6 0011011001001101F111uuuuuu111110. */
+{ "macfr", 0x364D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macfr<.f><.cc> 0,limm,u6 0011011011001101F111uuuuuu1QQQQQ. */
+{ "macfr", 0x36CD7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macfr<.f> 0,limm,s12 0011011010001101F111ssssssSSSSSS. */
+{ "macfr", 0x368D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macfr<.f> a,limm,limm 0011011000001101F111111110AAAAAA. */
+{ "macfr", 0x360D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macfr<.f> 0,limm,limm 0011011000001101F111111110111110. */
+{ "macfr", 0x360D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macfr<.f><.cc> 0,limm,limm 0011011011001101F1111111100QQQQQ. */
+{ "macfr", 0x36CD7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macu<.f> a,b,c 00101bbb00001111FBBBCCCCCCAAAAAA. */
+{ "macu", 0x280F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { C_F }},
+
+/* macu<.f> 0,b,c 00101bbb00001111FBBBCCCCCC111110. */
+{ "macu", 0x280F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { C_F }},
+
+/* macu<.f><.cc> b,b,c 00101bbb11001111FBBBCCCCCC0QQQQQ. */
+{ "macu", 0x28CF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macu<.f> a,b,u6 00101bbb01001111FBBBuuuuuuAAAAAA. */
+{ "macu", 0x284F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macu<.f> 0,b,u6 00101bbb01001111FBBBuuuuuu111110. */
+{ "macu", 0x284F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macu<.f><.cc> b,b,u6 00101bbb11001111FBBBuuuuuu1QQQQQ. */
+{ "macu", 0x28CF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macu<.f> b,b,s12 00101bbb10001111FBBBssssssSSSSSS. */
+{ "macu", 0x288F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macu<.f> a,limm,c 0010111000001111F111CCCCCCAAAAAA. */
+{ "macu", 0x2E0F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macu<.f> a,b,limm 00101bbb00001111FBBB111110AAAAAA. */
+{ "macu", 0x280F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macu<.f> 0,limm,c 0010111000001111F111CCCCCC111110. */
+{ "macu", 0x2E0F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F }},
+
+/* macu<.f> 0,b,limm 00101bbb00001111FBBB111110111110. */
+{ "macu", 0x280F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { C_F }},
+
+/* macu<.f><.cc> b,b,limm 00101bbb11001111FBBB1111100QQQQQ. */
+{ "macu", 0x28CF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macu<.f><.cc> 0,limm,c 0010111011001111F111CCCCCC0QQQQQ. */
+{ "macu", 0x2ECF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macu<.f> a,limm,u6 0010111001001111F111uuuuuuAAAAAA. */
+{ "macu", 0x2E4F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macu<.f> 0,limm,u6 0010111001001111F111uuuuuu111110. */
+{ "macu", 0x2E4F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macu<.f><.cc> 0,limm,u6 0010111011001111F111uuuuuu1QQQQQ. */
+{ "macu", 0x2ECF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macu<.f> 0,limm,s12 0010111010001111F111ssssssSSSSSS. */
+{ "macu", 0x2E8F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macu<.f> a,limm,limm 0010111000001111F111111110AAAAAA. */
+{ "macu", 0x2E0F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macu<.f> 0,limm,limm 0010111000001111F111111110111110. */
+{ "macu", 0x2E0F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macu<.f><.cc> 0,limm,limm 0010111011001111F1111111100QQQQQ. */
+{ "macu", 0x2ECF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhfl<.f> a,b,c 00110bbb00100110FBBBCCCCCCAAAAAA. */
+{ "macwhfl", 0x30260000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhfl<.f> 0,b,c 00110bbb00100110FBBBCCCCCC111110. */
+{ "macwhfl", 0x3026003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhfl<.f><.cc> b,b,c 00110bbb11100110FBBBCCCCCC0QQQQQ. */
+{ "macwhfl", 0x30E60000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhfl<.f> a,b,u6 00110bbb01100110FBBBuuuuuuAAAAAA. */
+{ "macwhfl", 0x30660000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfl<.f> 0,b,u6 00110bbb01100110FBBBuuuuuu111110. */
+{ "macwhfl", 0x3066003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfl<.f><.cc> b,b,u6 00110bbb11100110FBBBuuuuuu1QQQQQ. */
+{ "macwhfl", 0x30E60020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfl<.f> b,b,s12 00110bbb10100110FBBBssssssSSSSSS. */
+{ "macwhfl", 0x30A60000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhfl<.f> a,limm,c 0011011000100110F111CCCCCCAAAAAA. */
+{ "macwhfl", 0x36267000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhfl<.f> a,b,limm 00110bbb00100110FBBB111110AAAAAA. */
+{ "macwhfl", 0x30260F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhfl<.f> 0,limm,c 0011011001100110F111CCCCCC111110. */
+{ "macwhfl", 0x3666703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhfl<.f> 0,b,limm 00110bbb00100110FBBB111110111110. */
+{ "macwhfl", 0x30260FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhfl<.f><.cc> b,b,limm 00110bbb11100110FBBB1111100QQQQQ. */
+{ "macwhfl", 0x30E60F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhfl<.f><.cc> 0,limm,c 0011011011100110F111CCCCCC0QQQQQ. */
+{ "macwhfl", 0x36E67000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhfl<.f> a,limm,u6 0011011001100110F111uuuuuuAAAAAA. */
+{ "macwhfl", 0x36667000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfl<.f> 0,limm,u6 0011011001100110F111uuuuuu111110. */
+{ "macwhfl", 0x3666703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfl<.f><.cc> 0,limm,u6 0011011011100110F111uuuuuu1QQQQQ. */
+{ "macwhfl", 0x36E67020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfl<.f> 0,limm,s12 0011011010100110F111ssssssSSSSSS. */
+{ "macwhfl", 0x36A67000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhfl<.f> a,limm,limm 0011011000100110F111111110AAAAAA. */
+{ "macwhfl", 0x36267F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfl<.f> 0,limm,limm 0011011000100110F111111110111110. */
+{ "macwhfl", 0x36267FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfl<.f><.cc> 0,limm,limm 0011011011100110F1111111100QQQQQ. */
+{ "macwhfl", 0x36E67F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhflr<.f> a,b,c 00110bbb00100111FBBBCCCCCCAAAAAA. */
+{ "macwhflr", 0x30270000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhflr<.f> 0,b,c 00110bbb00100111FBBBCCCCCC111110. */
+{ "macwhflr", 0x3027003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhflr<.f><.cc> b,b,c 00110bbb11100111FBBBCCCCCC0QQQQQ. */
+{ "macwhflr", 0x30E70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhflr<.f> a,b,u6 00110bbb01100111FBBBuuuuuuAAAAAA. */
+{ "macwhflr", 0x30670000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhflr<.f> 0,b,u6 00110bbb01100111FBBBuuuuuu111110. */
+{ "macwhflr", 0x3067003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhflr<.f><.cc> b,b,u6 00110bbb11100111FBBBuuuuuu1QQQQQ. */
+{ "macwhflr", 0x30E70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhflr<.f> b,b,s12 00110bbb10100111FBBBssssssSSSSSS. */
+{ "macwhflr", 0x30A70000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhflr<.f> a,limm,c 0011011000100111F111CCCCCCAAAAAA. */
+{ "macwhflr", 0x36277000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhflr<.f> a,b,limm 00110bbb00100111FBBB111110AAAAAA. */
+{ "macwhflr", 0x30270F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhflr<.f> 0,limm,c 0011011001100111F111CCCCCC111110. */
+{ "macwhflr", 0x3667703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhflr<.f> 0,b,limm 00110bbb00100111FBBB111110111110. */
+{ "macwhflr", 0x30270FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhflr<.f><.cc> b,b,limm 00110bbb11100111FBBB1111100QQQQQ. */
+{ "macwhflr", 0x30E70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhflr<.f><.cc> 0,limm,c 0011011011100111F111CCCCCC0QQQQQ. */
+{ "macwhflr", 0x36E77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhflr<.f> a,limm,u6 0011011001100111F111uuuuuuAAAAAA. */
+{ "macwhflr", 0x36677000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhflr<.f> 0,limm,u6 0011011001100111F111uuuuuu111110. */
+{ "macwhflr", 0x3667703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhflr<.f><.cc> 0,limm,u6 0011011011100111F111uuuuuu1QQQQQ. */
+{ "macwhflr", 0x36E77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhflr<.f> 0,limm,s12 0011011010100111F111ssssssSSSSSS. */
+{ "macwhflr", 0x36A77000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhflr<.f> a,limm,limm 0011011000100111F111111110AAAAAA. */
+{ "macwhflr", 0x36277F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhflr<.f> 0,limm,limm 0011011000100111F111111110111110. */
+{ "macwhflr", 0x36277FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhflr<.f><.cc> 0,limm,limm 0011011011100111F1111111100QQQQQ. */
+{ "macwhflr", 0x36E77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhfm<.f> a,b,c 00110bbb00100010FBBBCCCCCCAAAAAA. */
+{ "macwhfm", 0x30220000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhfm<.f> 0,b,c 00110bbb00100010FBBBCCCCCC111110. */
+{ "macwhfm", 0x3022003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhfm<.f><.cc> b,b,c 00110bbb11100010FBBBCCCCCC0QQQQQ. */
+{ "macwhfm", 0x30E20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhfm<.f> a,b,u6 00110bbb01100010FBBBuuuuuuAAAAAA. */
+{ "macwhfm", 0x30620000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfm<.f> 0,b,u6 00110bbb01100010FBBBuuuuuu111110. */
+{ "macwhfm", 0x3062003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfm<.f><.cc> b,b,u6 00110bbb11100010FBBBuuuuuu1QQQQQ. */
+{ "macwhfm", 0x30E20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfm<.f> b,b,s12 00110bbb10100010FBBBssssssSSSSSS. */
+{ "macwhfm", 0x30A20000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhfm<.f> a,limm,c 0011011000100010F111CCCCCCAAAAAA. */
+{ "macwhfm", 0x36227000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhfm<.f> a,b,limm 00110bbb00100010FBBB111110AAAAAA. */
+{ "macwhfm", 0x30220F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhfm<.f> 0,limm,c 0011011001100010F111CCCCCC111110. */
+{ "macwhfm", 0x3662703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhfm<.f> 0,b,limm 00110bbb00100010FBBB111110111110. */
+{ "macwhfm", 0x30220FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhfm<.f><.cc> b,b,limm 00110bbb11100010FBBB1111100QQQQQ. */
+{ "macwhfm", 0x30E20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhfm<.f><.cc> 0,limm,c 0011011011100010F111CCCCCC0QQQQQ. */
+{ "macwhfm", 0x36E27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhfm<.f> a,limm,u6 0011011001100010F111uuuuuuAAAAAA. */
+{ "macwhfm", 0x36627000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfm<.f> 0,limm,u6 0011011001100010F111uuuuuu111110. */
+{ "macwhfm", 0x3662703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfm<.f><.cc> 0,limm,u6 0011011011100010F111uuuuuu1QQQQQ. */
+{ "macwhfm", 0x36E27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfm<.f> 0,limm,s12 0011011010100010F111ssssssSSSSSS. */
+{ "macwhfm", 0x36A27000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhfm<.f> a,limm,limm 0011011000100010F111111110AAAAAA. */
+{ "macwhfm", 0x36227F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfm<.f> 0,limm,limm 0011011000100010F111111110111110. */
+{ "macwhfm", 0x36227FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfm<.f><.cc> 0,limm,limm 0011011011100010F1111111100QQQQQ. */
+{ "macwhfm", 0x36E27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhfmr<.f> a,b,c 00110bbb00100011FBBBCCCCCCAAAAAA. */
+{ "macwhfmr", 0x30230000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhfmr<.f> 0,b,c 00110bbb00100011FBBBCCCCCC111110. */
+{ "macwhfmr", 0x3023003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhfmr<.f><.cc> b,b,c 00110bbb11100011FBBBCCCCCC0QQQQQ. */
+{ "macwhfmr", 0x30E30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhfmr<.f> a,b,u6 00110bbb01100011FBBBuuuuuuAAAAAA. */
+{ "macwhfmr", 0x30630000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfmr<.f> 0,b,u6 00110bbb01100011FBBBuuuuuu111110. */
+{ "macwhfmr", 0x3063003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhfmr<.f><.cc> b,b,u6 00110bbb11100011FBBBuuuuuu1QQQQQ. */
+{ "macwhfmr", 0x30E30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfmr<.f> b,b,s12 00110bbb10100011FBBBssssssSSSSSS. */
+{ "macwhfmr", 0x30A30000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhfmr<.f> a,limm,c 0011011000100011F111CCCCCCAAAAAA. */
+{ "macwhfmr", 0x36237000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhfmr<.f> a,b,limm 00110bbb00100011FBBB111110AAAAAA. */
+{ "macwhfmr", 0x30230F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhfmr<.f> 0,limm,c 0011011001100011F111CCCCCC111110. */
+{ "macwhfmr", 0x3663703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhfmr<.f> 0,b,limm 00110bbb00100011FBBB111110111110. */
+{ "macwhfmr", 0x30230FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhfmr<.f><.cc> b,b,limm 00110bbb11100011FBBB1111100QQQQQ. */
+{ "macwhfmr", 0x30E30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhfmr<.f><.cc> 0,limm,c 0011011011100011F111CCCCCC0QQQQQ. */
+{ "macwhfmr", 0x36E37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhfmr<.f> a,limm,u6 0011011001100011F111uuuuuuAAAAAA. */
+{ "macwhfmr", 0x36637000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfmr<.f> 0,limm,u6 0011011001100011F111uuuuuu111110. */
+{ "macwhfmr", 0x3663703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhfmr<.f><.cc> 0,limm,u6 0011011011100011F111uuuuuu1QQQQQ. */
+{ "macwhfmr", 0x36E37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhfmr<.f> 0,limm,s12 0011011010100011F111ssssssSSSSSS. */
+{ "macwhfmr", 0x36A37000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhfmr<.f> a,limm,limm 0011011000100011F111111110AAAAAA. */
+{ "macwhfmr", 0x36237F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfmr<.f> 0,limm,limm 0011011000100011F111111110111110. */
+{ "macwhfmr", 0x36237FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhfmr<.f><.cc> 0,limm,limm 0011011011100011F1111111100QQQQQ. */
+{ "macwhfmr", 0x36E37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhkl<.f> a,b,c 00110bbb00101000FBBBCCCCCCAAAAAA. */
+{ "macwhkl", 0x30280000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhkl<.f> 0,b,c 00110bbb00101000FBBBCCCCCC111110. */
+{ "macwhkl", 0x3028003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhkl<.f><.cc> b,b,c 00110bbb11101000FBBBCCCCCC0QQQQQ. */
+{ "macwhkl", 0x30E80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhkl<.f> a,b,u6 00110bbb01101000FBBBuuuuuuAAAAAA. */
+{ "macwhkl", 0x30680000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhkl<.f> 0,b,u6 00110bbb01101000FBBBuuuuuu111110. */
+{ "macwhkl", 0x3068003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhkl<.f><.cc> b,b,u6 00110bbb11101000FBBBuuuuuu1QQQQQ. */
+{ "macwhkl", 0x30E80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhkl<.f> b,b,s12 00110bbb10101000FBBBssssssSSSSSS. */
+{ "macwhkl", 0x30A80000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhkl<.f> a,limm,c 0011011000101000F111CCCCCCAAAAAA. */
+{ "macwhkl", 0x36287000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhkl<.f> a,b,limm 00110bbb00101000FBBB111110AAAAAA. */
+{ "macwhkl", 0x30280F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhkl<.f> 0,limm,c 0011011001101000F111CCCCCC111110. */
+{ "macwhkl", 0x3668703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhkl<.f> 0,b,limm 00110bbb00101000FBBB111110111110. */
+{ "macwhkl", 0x30280FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhkl<.f><.cc> b,b,limm 00110bbb11101000FBBB1111100QQQQQ. */
+{ "macwhkl", 0x30E80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhkl<.f><.cc> 0,limm,c 0011011011101000F111CCCCCC0QQQQQ. */
+{ "macwhkl", 0x36E87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhkl<.f> a,limm,u6 0011011001101000F111uuuuuuAAAAAA. */
+{ "macwhkl", 0x36687000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhkl<.f> 0,limm,u6 0011011001101000F111uuuuuu111110. */
+{ "macwhkl", 0x3668703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhkl<.f><.cc> 0,limm,u6 0011011011101000F111uuuuuu1QQQQQ. */
+{ "macwhkl", 0x36E87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhkl<.f> 0,limm,s12 0011011010101000F111ssssssSSSSSS. */
+{ "macwhkl", 0x36A87000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhkl<.f> a,limm,limm 0011011000101000F111111110AAAAAA. */
+{ "macwhkl", 0x36287F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhkl<.f> 0,limm,limm 0011011000101000F111111110111110. */
+{ "macwhkl", 0x36287FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhkl<.f><.cc> 0,limm,limm 0011011011101000F1111111100QQQQQ. */
+{ "macwhkl", 0x36E87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhkul<.f> a,b,c 00110bbb00101001FBBBCCCCCCAAAAAA. */
+{ "macwhkul", 0x30290000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhkul<.f> 0,b,c 00110bbb00101001FBBBCCCCCC111110. */
+{ "macwhkul", 0x3029003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhkul<.f><.cc> b,b,c 00110bbb11101001FBBBCCCCCC0QQQQQ. */
+{ "macwhkul", 0x30E90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhkul<.f> a,b,u6 00110bbb01101001FBBBuuuuuuAAAAAA. */
+{ "macwhkul", 0x30690000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhkul<.f> 0,b,u6 00110bbb01101001FBBBuuuuuu111110. */
+{ "macwhkul", 0x3069003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhkul<.f><.cc> b,b,u6 00110bbb11101001FBBBuuuuuu1QQQQQ. */
+{ "macwhkul", 0x30E90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhkul<.f> b,b,s12 00110bbb10101001FBBBssssssSSSSSS. */
+{ "macwhkul", 0x30A90000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhkul<.f> a,limm,c 0011011000101001F111CCCCCCAAAAAA. */
+{ "macwhkul", 0x36297000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhkul<.f> a,b,limm 00110bbb00101001FBBB111110AAAAAA. */
+{ "macwhkul", 0x30290F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhkul<.f> 0,limm,c 0011011001101001F111CCCCCC111110. */
+{ "macwhkul", 0x3669703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhkul<.f> 0,b,limm 00110bbb00101001FBBB111110111110. */
+{ "macwhkul", 0x30290FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhkul<.f><.cc> b,b,limm 00110bbb11101001FBBB1111100QQQQQ. */
+{ "macwhkul", 0x30E90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhkul<.f><.cc> 0,limm,c 0011011011101001F111CCCCCC0QQQQQ. */
+{ "macwhkul", 0x36E97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhkul<.f> a,limm,u6 0011011001101001F111uuuuuuAAAAAA. */
+{ "macwhkul", 0x36697000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhkul<.f> 0,limm,u6 0011011001101001F111uuuuuu111110. */
+{ "macwhkul", 0x3669703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhkul<.f><.cc> 0,limm,u6 0011011011101001F111uuuuuu1QQQQQ. */
+{ "macwhkul", 0x36E97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhkul<.f> 0,limm,s12 0011011010101001F111ssssssSSSSSS. */
+{ "macwhkul", 0x36A97000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhkul<.f> a,limm,limm 0011011000101001F111111110AAAAAA. */
+{ "macwhkul", 0x36297F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhkul<.f> 0,limm,limm 0011011000101001F111111110111110. */
+{ "macwhkul", 0x36297FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhkul<.f><.cc> 0,limm,limm 0011011011101001F1111111100QQQQQ. */
+{ "macwhkul", 0x36E97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhl<.f> a,b,c 00110bbb00011101FBBBCCCCCCAAAAAA. */
+{ "macwhl", 0x301D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhl<.f> 0,b,c 00110bbb00011101FBBBCCCCCC111110. */
+{ "macwhl", 0x301D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhl<.f><.cc> b,b,c 00110bbb11011101FBBBCCCCCC0QQQQQ. */
+{ "macwhl", 0x30DD0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhl<.f> a,b,u6 00110bbb01011101FBBBuuuuuuAAAAAA. */
+{ "macwhl", 0x305D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhl<.f> 0,b,u6 00110bbb01011101FBBBuuuuuu111110. */
+{ "macwhl", 0x305D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhl<.f><.cc> b,b,u6 00110bbb11011101FBBBuuuuuu1QQQQQ. */
+{ "macwhl", 0x30DD0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhl<.f> b,b,s12 00110bbb10011101FBBBssssssSSSSSS. */
+{ "macwhl", 0x309D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhl<.f> a,limm,c 0011011000011101F111CCCCCCAAAAAA. */
+{ "macwhl", 0x361D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhl<.f> a,b,limm 00110bbb00011101FBBB111110AAAAAA. */
+{ "macwhl", 0x301D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhl<.f> 0,limm,c 0011011000011101F111CCCCCC111110. */
+{ "macwhl", 0x361D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhl<.f> 0,b,limm 00110bbb00011101FBBB111110111110. */
+{ "macwhl", 0x301D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhl<.f><.cc> b,b,limm 00110bbb11011101FBBB1111100QQQQQ. */
+{ "macwhl", 0x30DD0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhl<.f><.cc> 0,limm,c 0011011011011101F111CCCCCC0QQQQQ. */
+{ "macwhl", 0x36DD7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhl<.f> a,limm,u6 0011011001011101F111uuuuuuAAAAAA. */
+{ "macwhl", 0x365D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhl<.f> 0,limm,u6 0011011001011101F111uuuuuu111110. */
+{ "macwhl", 0x365D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhl<.f><.cc> 0,limm,u6 0011011011011101F111uuuuuu1QQQQQ. */
+{ "macwhl", 0x36DD7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhl<.f> 0,limm,s12 0011011010011101F111ssssssSSSSSS. */
+{ "macwhl", 0x369D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhl<.f> a,limm,limm 0011011000011101F111111110AAAAAA. */
+{ "macwhl", 0x361D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhl<.f> 0,limm,limm 0011011000011101F111111110111110. */
+{ "macwhl", 0x361D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhl<.f><.cc> 0,limm,limm 0011011011011101F1111111100QQQQQ. */
+{ "macwhl", 0x36DD7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* macwhul<.f> a,b,c 00110bbb00011111FBBBCCCCCCAAAAAA. */
+{ "macwhul", 0x301F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* macwhul<.f> 0,b,c 00110bbb00011111FBBBCCCCCC111110. */
+{ "macwhul", 0x301F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* macwhul<.f><.cc> b,b,c 00110bbb11011111FBBBCCCCCC0QQQQQ. */
+{ "macwhul", 0x30DF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* macwhul<.f> a,b,u6 00110bbb01011111FBBBuuuuuuAAAAAA. */
+{ "macwhul", 0x305F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* macwhul<.f> 0,b,u6 00110bbb01011111FBBBuuuuuu111110. */
+{ "macwhul", 0x305F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* macwhul<.f><.cc> b,b,u6 00110bbb11011111FBBBuuuuuu1QQQQQ. */
+{ "macwhul", 0x30DF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhul<.f> b,b,s12 00110bbb10011111FBBBssssssSSSSSS. */
+{ "macwhul", 0x309F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* macwhul<.f> a,limm,c 0011011000011111F111CCCCCCAAAAAA. */
+{ "macwhul", 0x361F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* macwhul<.f> a,b,limm 00110bbb00011111FBBB111110AAAAAA. */
+{ "macwhul", 0x301F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* macwhul<.f> 0,limm,c 0011011000011111F111CCCCCC111110. */
+{ "macwhul", 0x361F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* macwhul<.f> 0,b,limm 00110bbb00011111FBBB111110111110. */
+{ "macwhul", 0x301F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* macwhul<.f><.cc> b,b,limm 00110bbb11011111FBBB1111100QQQQQ. */
+{ "macwhul", 0x30DF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* macwhul<.f><.cc> 0,limm,c 0011011011011111F111CCCCCC0QQQQQ. */
+{ "macwhul", 0x36DF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* macwhul<.f> a,limm,u6 0011011001011111F111uuuuuuAAAAAA. */
+{ "macwhul", 0x365F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhul<.f> 0,limm,u6 0011011001011111F111uuuuuu111110. */
+{ "macwhul", 0x365F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* macwhul<.f><.cc> 0,limm,u6 0011011011011111F111uuuuuu1QQQQQ. */
+{ "macwhul", 0x36DF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* macwhul<.f> 0,limm,s12 0011011010011111F111ssssssSSSSSS. */
+{ "macwhul", 0x369F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* macwhul<.f> a,limm,limm 0011011000011111F111111110AAAAAA. */
+{ "macwhul", 0x361F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* macwhul<.f> 0,limm,limm 0011011000011111F111111110111110. */
+{ "macwhul", 0x361F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* macwhul<.f><.cc> 0,limm,limm 0011011011011111F1111111100QQQQQ. */
+{ "macwhul", 0x36DF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* max<.f> a,b,c 00100bbb00001000FBBBCCCCCCAAAAAA. */
+{ "max", 0x20080000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* max<.f> 0,b,c 00100bbb00001000FBBBCCCCCC111110. */
+{ "max", 0x2008003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* max<.f><.cc> b,b,c 00100bbb11001000FBBBCCCCCC0QQQQQ. */
+{ "max", 0x20C80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* max<.f> a,b,u6 00100bbb01001000FBBBuuuuuuAAAAAA. */
+{ "max", 0x20480000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* max<.f> 0,b,u6 00100bbb01001000FBBBuuuuuu111110. */
+{ "max", 0x2048003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* max<.f><.cc> b,b,u6 00100bbb11001000FBBBuuuuuu1QQQQQ. */
+{ "max", 0x20C80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* max<.f> b,b,s12 00100bbb10001000FBBBssssssSSSSSS. */
+{ "max", 0x20880000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* max<.f> a,limm,c 0010011000001000F111CCCCCCAAAAAA. */
+{ "max", 0x26087000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* max<.f> a,b,limm 00100bbb00001000FBBB111110AAAAAA. */
+{ "max", 0x20080F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* max<.f> 0,limm,c 0010011000001000F111CCCCCC111110. */
+{ "max", 0x2608703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* max<.f> 0,b,limm 00100bbb00001000FBBB111110111110. */
+{ "max", 0x20080FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* max<.f><.cc> b,b,limm 00100bbb11001000FBBB1111100QQQQQ. */
+{ "max", 0x20C80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* max<.f><.cc> 0,limm,c 0010011011001000F111CCCCCC0QQQQQ. */
+{ "max", 0x26C87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* max<.f> a,limm,u6 0010011001001000F111uuuuuuAAAAAA. */
+{ "max", 0x26487000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* max<.f> 0,limm,u6 0010011001001000F111uuuuuu111110. */
+{ "max", 0x2648703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* max<.f><.cc> 0,limm,u6 0010011011001000F111uuuuuu1QQQQQ. */
+{ "max", 0x26C87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* max<.f> 0,limm,s12 0010011010001000F111ssssssSSSSSS. */
+{ "max", 0x26887000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* max<.f> a,limm,limm 0010011000001000F111111110AAAAAA. */
+{ "max", 0x26087F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* max<.f> 0,limm,limm 0010011000001000F111111110111110. */
+{ "max", 0x26087FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* max<.f><.cc> 0,limm,limm 0010011011001000F1111111100QQQQQ. */
+{ "max", 0x26C87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* maxl<.f> RA,RB,RC 01011bbb00001000FBBBccccccaaaaaa. */
+{ "maxl", 0x58080000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* maxl<.f> 0,RB,RC 01011bbb00001000FBBBcccccc111110. */
+{ "maxl", 0x5808003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* maxl<.f><.cc> RB,RB,RC 01011bbb11001000FBBBcccccc0QQQQQ. */
+{ "maxl", 0x58C80000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* maxl<.f> RA,RB,u6 01011bbb01001000FBBBuuuuuuaaaaaa. */
+{ "maxl", 0x58480000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* maxl<.f> 0,RB,u6 01011bbb01001000FBBBuuuuuu111110. */
+{ "maxl", 0x5848003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* maxl<.f><.cc> RB,RB,u6 01011bbb11001000FBBBuuuuuu1QQQQQ. */
+{ "maxl", 0x58C80020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* maxl<.f> RB,RB,s12 01011bbb10001000FBBBssssssSSSSSS. */
+{ "maxl", 0x58880000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* maxl<.f> RA,ximm,RC 0101110000001000F111ccccccaaaaaa. */
+{ "maxl", 0x5C087000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* maxl<.f> RA,RB,ximm 01011bbb00001000FBBB111100aaaaaa. */
+{ "maxl", 0x58080F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* maxl<.f> 0,ximm,RC 0101110000001000F111cccccc111110. */
+{ "maxl", 0x5C08703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* maxl<.f> 0,RB,ximm 01011bbb00001000FBBB111100111110. */
+{ "maxl", 0x58080F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* maxl<.f><.cc> 0,ximm,RC 0101110011001000F111cccccc0QQQQQ. */
+{ "maxl", 0x5CC87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* maxl<.f><.cc> RB,RB,ximm 01011bbb11001000FBBB1111000QQQQQ. */
+{ "maxl", 0x58C80F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* maxl<.f> RA,ximm,u6 0101110001001000F111uuuuuuaaaaaa. */
+{ "maxl", 0x5C487000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* maxl<.f> 0,ximm,u6 0101110001001000F111uuuuuu111110. */
+{ "maxl", 0x5C48703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* maxl<.f><.cc> 0,ximm,u6 0101110011001000F111uuuuuu1QQQQQ. */
+{ "maxl", 0x5CC87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* maxl<.f> RA,limm,RC 0101111000001000F111ccccccaaaaaa. */
+{ "maxl", 0x5E087000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* maxl<.f> RA,RB,limm 01011bbb00001000FBBB111110aaaaaa. */
+{ "maxl", 0x58080F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* maxl<.f> 0,limm,RC 0101111000001000F111cccccc111110. */
+{ "maxl", 0x5E08703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* maxl<.f> 0,RB,limm 01011bbb00001000FBBB111110111110. */
+{ "maxl", 0x58080FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* maxl<.f><.cc> 0,limm,RC 0101111011001000F111cccccc0QQQQQ. */
+{ "maxl", 0x5EC87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* maxl<.f><.cc> RB,RB,limm 01011bbb11001000FBBB1111100QQQQQ. */
+{ "maxl", 0x58C80F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* maxl<.f> RA,limm,u6 0101111001001000F111uuuuuuaaaaaa. */
+{ "maxl", 0x5E487000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* maxl<.f> 0,limm,u6 0101111001001000F111uuuuuu111110. */
+{ "maxl", 0x5E48703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* maxl<.f><.cc> 0,limm,u6 0101111011001000F111uuuuuu1QQQQQ. */
+{ "maxl", 0x5EC87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* maxl<.f> 0,ximm,s12 0101110010001000F111ssssssSSSSSS. */
+{ "maxl", 0x5C887000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* maxl<.f> 0,limm,s12 0101111010001000F111ssssssSSSSSS. */
+{ "maxl", 0x5E887000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* maxl<.f> RA,ximm,ximm 0101110000001000F111111100aaaaaa. */
+{ "maxl", 0x5C087F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* maxl<.f> 0,ximm,ximm 0101110000001000F111111100111110. */
+{ "maxl", 0x5C087F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* maxl<.f><.cc> 0,ximm,ximm 0101110011001000F1111111000QQQQQ. */
+{ "maxl", 0x5CC87F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* maxl<.f> RA,limm,limm 0101111000001000F111111110aaaaaa. */
+{ "maxl", 0x5E087F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* maxl<.f> 0,limm,limm 0101111000001000F111111110111110. */
+{ "maxl", 0x5E087FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* maxl<.f><.cc> 0,limm,limm 0101111011001000F1111111100QQQQQ. */
+{ "maxl", 0x5EC87F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* min<.f> a,b,c 00100bbb00001001FBBBCCCCCCAAAAAA. */
+{ "min", 0x20090000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* min<.f> 0,b,c 00100bbb00001001FBBBCCCCCC111110. */
+{ "min", 0x2009003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* min<.f><.cc> b,b,c 00100bbb11001001FBBBCCCCCC0QQQQQ. */
+{ "min", 0x20C90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* min<.f> a,b,u6 00100bbb01001001FBBBuuuuuuAAAAAA. */
+{ "min", 0x20490000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* min<.f> 0,b,u6 00100bbb01001001FBBBuuuuuu111110. */
+{ "min", 0x2049003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* min<.f><.cc> b,b,u6 00100bbb11001001FBBBuuuuuu1QQQQQ. */
+{ "min", 0x20C90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* min<.f> b,b,s12 00100bbb10001001FBBBssssssSSSSSS. */
+{ "min", 0x20890000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* min<.f> a,limm,c 0010011000001001F111CCCCCCAAAAAA. */
+{ "min", 0x26097000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* min<.f> a,b,limm 00100bbb00001001FBBB111110AAAAAA. */
+{ "min", 0x20090F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* min<.f> 0,limm,c 0010011000001001F111CCCCCC111110. */
+{ "min", 0x2609703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* min<.f> 0,b,limm 00100bbb00001001FBBB111110111110. */
+{ "min", 0x20090FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* min<.f><.cc> b,b,limm 00100bbb11001001FBBB1111100QQQQQ. */
+{ "min", 0x20C90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* min<.f><.cc> 0,limm,c 0010011011001001F111CCCCCC0QQQQQ. */
+{ "min", 0x26C97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* min<.f> a,limm,u6 0010011001001001F111uuuuuuAAAAAA. */
+{ "min", 0x26497000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* min<.f> 0,limm,u6 0010011001001001F111uuuuuu111110. */
+{ "min", 0x2649703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* min<.f><.cc> 0,limm,u6 0010011011001001F111uuuuuu1QQQQQ. */
+{ "min", 0x26C97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* min<.f> 0,limm,s12 0010011010001001F111ssssssSSSSSS. */
+{ "min", 0x26897000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* min<.f> a,limm,limm 0010011000001001F111111110AAAAAA. */
+{ "min", 0x26097F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* min<.f> 0,limm,limm 0010011000001001F111111110111110. */
+{ "min", 0x26097FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* min<.f><.cc> 0,limm,limm 0010011011001001F1111111100QQQQQ. */
+{ "min", 0x26C97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* minl<.f> RA,RB,RC 01011bbb00001001FBBBccccccaaaaaa. */
+{ "minl", 0x58090000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* minl<.f> 0,RB,RC 01011bbb00001001FBBBcccccc111110. */
+{ "minl", 0x5809003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* minl<.f><.cc> RB,RB,RC 01011bbb11001001FBBBcccccc0QQQQQ. */
+{ "minl", 0x58C90000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* minl<.f> RA,RB,u6 01011bbb01001001FBBBuuuuuuaaaaaa. */
+{ "minl", 0x58490000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* minl<.f> 0,RB,u6 01011bbb01001001FBBBuuuuuu111110. */
+{ "minl", 0x5849003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* minl<.f><.cc> RB,RB,u6 01011bbb11001001FBBBuuuuuu1QQQQQ. */
+{ "minl", 0x58C90020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* minl<.f> RB,RB,s12 01011bbb10001001FBBBssssssSSSSSS. */
+{ "minl", 0x58890000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* minl<.f> RA,ximm,RC 0101110000001001F111ccccccaaaaaa. */
+{ "minl", 0x5C097000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* minl<.f> RA,RB,ximm 01011bbb00001001FBBB111100aaaaaa. */
+{ "minl", 0x58090F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* minl<.f> 0,ximm,RC 0101110000001001F111cccccc111110. */
+{ "minl", 0x5C09703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* minl<.f> 0,RB,ximm 01011bbb00001001FBBB111100111110. */
+{ "minl", 0x58090F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* minl<.f><.cc> 0,ximm,RC 0101110011001001F111cccccc0QQQQQ. */
+{ "minl", 0x5CC97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* minl<.f><.cc> RB,RB,ximm 01011bbb11001001FBBB1111000QQQQQ. */
+{ "minl", 0x58C90F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* minl<.f> RA,ximm,u6 0101110001001001F111uuuuuuaaaaaa. */
+{ "minl", 0x5C497000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* minl<.f> 0,ximm,u6 0101110001001001F111uuuuuu111110. */
+{ "minl", 0x5C49703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* minl<.f><.cc> 0,ximm,u6 0101110011001001F111uuuuuu1QQQQQ. */
+{ "minl", 0x5CC97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* minl<.f> RA,limm,RC 0101111000001001F111ccccccaaaaaa. */
+{ "minl", 0x5E097000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* minl<.f> RA,RB,limm 01011bbb00001001FBBB111110aaaaaa. */
+{ "minl", 0x58090F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* minl<.f> 0,limm,RC 0101111000001001F111cccccc111110. */
+{ "minl", 0x5E09703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* minl<.f> 0,RB,limm 01011bbb00001001FBBB111110111110. */
+{ "minl", 0x58090FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* minl<.f><.cc> 0,limm,RC 0101111011001001F111cccccc0QQQQQ. */
+{ "minl", 0x5EC97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* minl<.f><.cc> RB,RB,limm 01011bbb11001001FBBB1111100QQQQQ. */
+{ "minl", 0x58C90F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* minl<.f> RA,limm,u6 0101111001001001F111uuuuuuaaaaaa. */
+{ "minl", 0x5E497000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* minl<.f> 0,limm,u6 0101111001001001F111uuuuuu111110. */
+{ "minl", 0x5E49703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* minl<.f><.cc> 0,limm,u6 0101111011001001F111uuuuuu1QQQQQ. */
+{ "minl", 0x5EC97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* minl<.f> 0,ximm,s12 0101110010001001F111ssssssSSSSSS. */
+{ "minl", 0x5C897000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* minl<.f> 0,limm,s12 0101111010001001F111ssssssSSSSSS. */
+{ "minl", 0x5E897000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* minl<.f> RA,ximm,ximm 0101110000001001F111111100aaaaaa. */
+{ "minl", 0x5C097F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* minl<.f> 0,ximm,ximm 0101110000001001F111111100111110. */
+{ "minl", 0x5C097F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* minl<.f><.cc> 0,ximm,ximm 0101110011001001F1111111000QQQQQ. */
+{ "minl", 0x5CC97F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* minl<.f> RA,limm,limm 0101111000001001F111111110aaaaaa. */
+{ "minl", 0x5E097F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* minl<.f> 0,limm,limm 0101111000001001F111111110111110. */
+{ "minl", 0x5E097FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* minl<.f><.cc> 0,limm,limm 0101111011001001F1111111100QQQQQ. */
+{ "minl", 0x5EC97F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* nop 00100110010010100111000000000000. */
+{ "nop", 0x264A7000, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* mov<.f> b,c 00100bbb00001010FBBBCCCCCCRRRRRR. */
+{ "mov", 0x200A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, RC }, { C_F }},
+
+/* mov<.f> 0,c 0010011000001010F111CCCCCCRRRRRR. */
+{ "mov", 0x260A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RC }, { C_F }},
+
+/* mov<.f><.cc> b,c 00100bbb11001010FBBBCCCCCC0QQQQQ. */
+{ "mov", 0x20CA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, RC }, { C_F, C_CC }},
+
+/* mov<.f><.cc> 0,c 0010011011001010F111CCCCCC0QQQQQ. */
+{ "mov", 0x26CA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RC }, { C_F, C_CC }},
+
+/* mov<.f> b,u6 00100bbb01001010FBBBuuuuuuRRRRRR. */
+{ "mov", 0x204A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* mov<.f> 0,u6 0010011001001010F111uuuuuuRRRRRR. */
+{ "mov", 0x264A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* mov<.f><.cc> b,u6 00100bbb11001010FBBBuuuuuu1QQQQQ. */
+{ "mov", 0x20CA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, UIMM6_20 }, { C_F, C_CC }},
+
+/* mov<.f><.cc> 0,u6 0010011011001010F111uuuuuu1QQQQQ. */
+{ "mov", 0x26CA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, UIMM6_20 }, { C_F, C_CC }},
+
+/* mov<.f> b,s12 00100bbb10001010FBBBssssssSSSSSS. */
+{ "mov", 0x208A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, SIMM12_20 }, { C_F }},
+
+/* mov<.f> 0,s12 0010011010001010F111ssssssSSSSSS. */
+{ "mov", 0x268A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, SIMM12_20 }, { C_F }},
+
+/* mov<.f> b,limm 00100bbb00001010FBBB111110RRRRRR. */
+{ "mov", 0x200A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, LIMM }, { C_F }},
+
+/* mov<.f> 0,limm 0010011000001010F111111110RRRRRR. */
+{ "mov", 0x260A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM }, { C_F }},
+
+/* mov<.f><.cc> b,limm 00100bbb11001010FBBB1111100QQQQQ. */
+{ "mov", 0x20CA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB, LIMM }, { C_F, C_CC }},
+
+/* mov<.f><.cc> 0,limm 0010011011001010F1111111100QQQQQ. */
+{ "mov", 0x26CA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM }, { C_F, C_CC }},
+
+/* movhl RB,RC 01011bbb000010110BBBccccccRRRRRR. */
+{ "movhl", 0x580B0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* movhl<.cc> RB,RC 01011bbb110010110BBBcccccc0QQQQQ. */
+{ "movhl", 0x58CB0000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* movhl RB,u6 01011bbb010010110BBBuuuuuuRRRRRR. */
+{ "movhl", 0x584B0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* movhl<.cc> RB,u6 01011bbb110010110BBBuuuuuu1QQQQQ. */
+{ "movhl", 0x58CB0020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* movhl RB,s12 01011bbb100010110BBBssssssSSSSSS. */
+{ "movhl", 0x588B0000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* movhl RB,limm 01011bbb000010110BBB111110RRRRRR. */
+{ "movhl", 0x580B0F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, HI32 }, { 0 }},
+
+/* movhl<.cc> RB,limm 01011bbb110010110BBB1111100QQQQQ. */
+{ "movhl", 0x58CB0F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, HI32 }, { C_CC }},
+
+/* movhl_s h,limm 01110000hhh010HH. */
+{ "movhl_s", 0x00007008, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, HI32 }, { 0 }},
+
+/* movl<.f> RB,RC 01011bbb00001010FBBBccccccRRRRRR. */
+{ "movl", 0x580A0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* movl<.f><.cc> RB,RC 01011bbb11001010FBBBcccccc0QQQQQ. */
+{ "movl", 0x58CA0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F, C_CC }},
+
+/* movl<.f> RB,u6 01011bbb01001010FBBBuuuuuuRRRRRR. */
+{ "movl", 0x584A0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* movl<.f><.cc> RB,u6 01011bbb11001010FBBBuuuuuu1QQQQQ. */
+{ "movl", 0x58CA0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F, C_CC }},
+
+/* movl<.f> RB,s12 01011bbb10001010FBBBssssssSSSSSS. */
+{ "movl", 0x588A0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { C_F }},
+
+/* movl<.f> RB,ximm 01011bbb00001010FBBB111100RRRRRR. */
+{ "movl", 0x580A0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* movl<.f><.cc> RB,ximm 01011bbb11001010FBBB1111000QQQQQ. */
+{ "movl", 0x58CA0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F, C_CC }},
+
+/* movl<.f> RB,limm 01011bbb00001010FBBB111110RRRRRR. */
+{ "movl", 0x580A0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* movl<.f><.cc> RB,limm 01011bbb11001010FBBB1111100QQQQQ. */
+{ "movl", 0x58CA0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F, C_CC }},
+
+/* movl_s g,h 01000ggghhhGG1HH. */
+{ "movl_s", 0x00004004, 0x0000F804, ARC_OPCODE_ARC64, ARITH, NONE, { G_S, RH_S }, { 0 }},
+
+/* movl_s b,u8 11011bbbuuuuuuuu. */
+{ "movl_s", 0x0000D800, 0x0000F800, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, UIMM8_8_S }, { 0 }},
+
+/* movl_s g,limm 01000ggg110GG111. */
+{ "movl_s", 0x000040C7, 0x0000F8E7, ARC_OPCODE_ARC64, MOVE, NONE, { G_S, LIMM_S }, { 0 }},
+
+/* mov_s.NE b,h 01110bbbhhh111HH. */
+{ "mov_s", 0x0000701C, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB_S, RH_S }, { C_NE, C_CC_NE}},
+
+/* mov_s g,h 01000ggghhhGG0HH. */
+{ "mov_s", 0x00004000, 0x0000F804, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { G_S, RH_S }, { 0 }},
+
+/* mov_s 0,h 01000110hhh110HH. */
+{ "mov_s", 0x00004618, 0x0000FF1C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA_S, RH_S }, { 0 }},
+
+/* mov_s h,s3 01110ssshhh011HH. */
+{ "mov_s", 0x0000700C, 0x0000F81C, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RH_S, SIMM3_5_S }, { 0 }},
+
+/* mov_s 0,s3 01110sss11001111. */
+{ "mov_s", 0x000070CF, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA_S, SIMM3_5_S }, { 0 }},
+
+/* mov_s b,u8 11011bbbuuuuuuuu. */
+{ "mov_s", 0x0000D800, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB_S, UIMM8_8_S }, { 0 }},
+
+/* mov_s.NE b,limm 01110bbb11011111. */
+{ "mov_s", 0x000070DF, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { RB_S, LIMM_S }, { C_NE, C_CC_NE}},
+
+/* mov_s g,limm 01000ggg110GG011. */
+{ "mov_s", 0x000040C3, 0x0000F8E7, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { G_S, LIMM_S }, { 0 }},
+
+/* mov_s 0,limm 0100011011011011. */
+{ "mov_s", 0x000046DB, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MOVE, NONE, { ZA_S, LIMM_S }, { 0 }},
+
+/* mpy<.f> a,b,c 00100bbb00011010FBBBCCCCCCAAAAAA. */
+{ "mpy", 0x201A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpy<.f> 0,b,c 00100bbb00011010FBBBCCCCCC111110. */
+{ "mpy", 0x201A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, RC }, { C_F }},
+
+/* mpy<.f><.cc> b,b,c 00100bbb11011010FBBBCCCCCC0QQQQQ. */
+{ "mpy", 0x20DA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpy<.f> a,b,u6 00100bbb01011010FBBBuuuuuuAAAAAA. */
+{ "mpy", 0x205A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpy<.f> 0,b,u6 00100bbb01011010FBBBuuuuuu111110. */
+{ "mpy", 0x205A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpy<.f><.cc> b,b,u6 00100bbb11011010FBBBuuuuuu1QQQQQ. */
+{ "mpy", 0x20DA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpy<.f> b,b,s12 00100bbb10011010FBBBssssssSSSSSS. */
+{ "mpy", 0x209A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpy<.f> a,limm,c 0010011000011010F111CCCCCCAAAAAA. */
+{ "mpy", 0x261A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpy<.f> a,b,limm 00100bbb00011010FBBB111110AAAAAA. */
+{ "mpy", 0x201A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpy<.f> 0,limm,c 0010011000011010F111CCCCCC111110. */
+{ "mpy", 0x261A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpy<.f> 0,b,limm 00100bbb00011010FBBB111110111110. */
+{ "mpy", 0x201A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpy<.f><.cc> b,b,limm 00100bbb11011010FBBB1111100QQQQQ. */
+{ "mpy", 0x20DA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpy<.f><.cc> 0,limm,c 0010011011011010F111CCCCCC0QQQQQ. */
+{ "mpy", 0x26DA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpy<.f> a,limm,u6 0010011001011010F111uuuuuuAAAAAA. */
+{ "mpy", 0x265A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpy<.f> 0,limm,u6 0010011001011010F111uuuuuu111110. */
+{ "mpy", 0x265A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpy<.f><.cc> 0,limm,u6 0010011011011010F111uuuuuu1QQQQQ. */
+{ "mpy", 0x26DA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpy<.f> 0,limm,s12 0010011010011010F111ssssssSSSSSS. */
+{ "mpy", 0x269A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpy<.f> a,limm,limm 0010011000011010F111111110AAAAAA. */
+{ "mpy", 0x261A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpy<.f> 0,limm,limm 0010011000011010F111111110111110. */
+{ "mpy", 0x261A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpy<.f><.cc> 0,limm,limm 0010011011011010F1111111100QQQQQ. */
+{ "mpy", 0x26DA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyd<.f> a,b,c 00101bbb00011000FBBBCCCCCCAAAAAA. */
+{ "mpyd", 0x28180000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyd<.f> 0,b,c 00101bbb00011000FBBBCCCCCC111110. */
+{ "mpyd", 0x2818003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { C_F }},
+
+/* mpyd<.f><.cc> b,b,c 00101bbb11011000FBBBCCCCCC0QQQQQ. */
+{ "mpyd", 0x28D80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyd<.f> a,b,u6 00101bbb01011000FBBBuuuuuuAAAAAA. */
+{ "mpyd", 0x28580000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyd<.f> 0,b,u6 00101bbb01011000FBBBuuuuuu111110. */
+{ "mpyd", 0x2858003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyd<.f><.cc> b,b,u6 00101bbb11011000FBBBuuuuuu1QQQQQ. */
+{ "mpyd", 0x28D80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyd<.f> b,b,s12 00101bbb10011000FBBBssssssSSSSSS. */
+{ "mpyd", 0x28980000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyd<.f> a,limm,c 0010111000011000F111CCCCCCAAAAAA. */
+{ "mpyd", 0x2E187000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyd<.f> a,b,limm 00101bbb00011000FBBB111110AAAAAA. */
+{ "mpyd", 0x28180F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyd<.f> 0,limm,c 0010111000011000F111CCCCCC111110. */
+{ "mpyd", 0x2E18703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyd<.f> 0,b,limm 00101bbb00011000FBBB111110111110. */
+{ "mpyd", 0x28180FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyd<.f><.cc> b,b,limm 00101bbb11011000FBBB1111100QQQQQ. */
+{ "mpyd", 0x28D80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyd<.f><.cc> 0,limm,c 0010111011011000F111CCCCCC0QQQQQ. */
+{ "mpyd", 0x2ED87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyd<.f> a,limm,u6 0010111001011000F111uuuuuuAAAAAA. */
+{ "mpyd", 0x2E587000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyd<.f> 0,limm,u6 0010111001011000F111uuuuuu111110. */
+{ "mpyd", 0x2E58703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyd<.f><.cc> 0,limm,u6 0010111011011000F111uuuuuu1QQQQQ. */
+{ "mpyd", 0x2ED87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyd<.f> 0,limm,s12 0010111010011000F111ssssssSSSSSS. */
+{ "mpyd", 0x2E987000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyd<.f> a,limm,limm 0010111000011000F111111110AAAAAA. */
+{ "mpyd", 0x2E187F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyd<.f> 0,limm,limm 0010111000011000F111111110111110. */
+{ "mpyd", 0x2E187FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyd<.f><.cc> 0,limm,limm 0010111011011000F1111111100QQQQQ. */
+{ "mpyd", 0x2ED87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpydf<.f> a,b,c 00110bbb00010010FBBBCCCCCCAAAAAA. */
+{ "mpydf", 0x30120000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpydf<.f> 0,b,c 00110bbb00010010FBBBCCCCCC111110. */
+{ "mpydf", 0x3012003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpydf<.f><.cc> b,b,c 00110bbb11010010FBBBCCCCCC0QQQQQ. */
+{ "mpydf", 0x30D20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpydf<.f> a,b,u6 00110bbb01010010FBBBuuuuuuAAAAAA. */
+{ "mpydf", 0x30520000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpydf<.f> 0,b,u6 00110bbb01010010FBBBuuuuuu111110. */
+{ "mpydf", 0x3052003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpydf<.f><.cc> b,b,u6 00110bbb11010010FBBBuuuuuu1QQQQQ. */
+{ "mpydf", 0x30D20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpydf<.f> b,b,s12 00110bbb10010010FBBBssssssSSSSSS. */
+{ "mpydf", 0x30920000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpydf<.f> a,limm,c 0011011000010010F111CCCCCCAAAAAA. */
+{ "mpydf", 0x36127000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpydf<.f> a,b,limm 00110bbb00010010FBBB111110AAAAAA. */
+{ "mpydf", 0x30120F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpydf<.f> 0,limm,c 0011011000010010F111CCCCCC111110. */
+{ "mpydf", 0x3612703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpydf<.f> 0,b,limm 00110bbb00010010FBBB111110111110. */
+{ "mpydf", 0x30120FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpydf<.f><.cc> b,b,limm 00110bbb11010010FBBB1111100QQQQQ. */
+{ "mpydf", 0x30D20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpydf<.f><.cc> 0,limm,c 0011011011010010F111CCCCCC0QQQQQ. */
+{ "mpydf", 0x36D27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpydf<.f> a,limm,u6 0011011001010010F111uuuuuuAAAAAA. */
+{ "mpydf", 0x36527000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpydf<.f> 0,limm,u6 0011011001010010F111uuuuuu111110. */
+{ "mpydf", 0x3652703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpydf<.f><.cc> 0,limm,u6 0011011011010010F111uuuuuu1QQQQQ. */
+{ "mpydf", 0x36D27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpydf<.f> 0,limm,s12 0011011010010010F111ssssssSSSSSS. */
+{ "mpydf", 0x36927000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpydf<.f> a,limm,limm 0011011000010010F111111110AAAAAA. */
+{ "mpydf", 0x36127F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpydf<.f> 0,limm,limm 0011011000010010F111111110111110. */
+{ "mpydf", 0x36127FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpydf<.f><.cc> 0,limm,limm 0011011011010010F1111111100QQQQQ. */
+{ "mpydf", 0x36D27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpydu<.f> a,b,c 00101bbb00011001FBBBCCCCCCAAAAAA. */
+{ "mpydu", 0x28190000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpydu<.f> 0,b,c 00101bbb00011001FBBBCCCCCC111110. */
+{ "mpydu", 0x2819003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { C_F }},
+
+/* mpydu<.f><.cc> b,b,c 00101bbb11011001FBBBCCCCCC0QQQQQ. */
+{ "mpydu", 0x28D90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpydu<.f> a,b,u6 00101bbb01011001FBBBuuuuuuAAAAAA. */
+{ "mpydu", 0x28590000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpydu<.f> 0,b,u6 00101bbb01011001FBBBuuuuuu111110. */
+{ "mpydu", 0x2859003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpydu<.f><.cc> b,b,u6 00101bbb11011001FBBBuuuuuu1QQQQQ. */
+{ "mpydu", 0x28D90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpydu<.f> b,b,s12 00101bbb10011001FBBBssssssSSSSSS. */
+{ "mpydu", 0x28990000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpydu<.f> a,limm,c 0010111000011001F111CCCCCCAAAAAA. */
+{ "mpydu", 0x2E197000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpydu<.f> a,b,limm 00101bbb00011001FBBB111110AAAAAA. */
+{ "mpydu", 0x28190F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpydu<.f> 0,limm,c 0010111000011001F111CCCCCC111110. */
+{ "mpydu", 0x2E19703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpydu<.f> 0,b,limm 00101bbb00011001FBBB111110111110. */
+{ "mpydu", 0x28190FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpydu<.f><.cc> b,b,limm 00101bbb11011001FBBB1111100QQQQQ. */
+{ "mpydu", 0x28D90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpydu<.f><.cc> 0,limm,c 0010111011011001F111CCCCCC0QQQQQ. */
+{ "mpydu", 0x2ED97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpydu<.f> a,limm,u6 0010111001011001F111uuuuuuAAAAAA. */
+{ "mpydu", 0x2E597000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpydu<.f> 0,limm,u6 0010111001011001F111uuuuuu111110. */
+{ "mpydu", 0x2E59703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpydu<.f><.cc> 0,limm,u6 0010111011011001F111uuuuuu1QQQQQ. */
+{ "mpydu", 0x2ED97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpydu<.f> 0,limm,s12 0010111010011001F111ssssssSSSSSS. */
+{ "mpydu", 0x2E997000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpydu<.f> a,limm,limm 0010111000011001F111111110AAAAAA. */
+{ "mpydu", 0x2E197F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpydu<.f> 0,limm,limm 0010111000011001F111111110111110. */
+{ "mpydu", 0x2E197FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpydu<.f><.cc> 0,limm,limm 0010111011011001F1111111100QQQQQ. */
+{ "mpydu", 0x2ED97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyf<.f> a,b,c 00110bbb00001010FBBBCCCCCCAAAAAA. */
+{ "mpyf", 0x300A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyf<.f> 0,b,c 00110bbb00001010FBBBCCCCCC111110. */
+{ "mpyf", 0x300A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpyf<.f><.cc> b,b,c 00110bbb11001010FBBBCCCCCC0QQQQQ. */
+{ "mpyf", 0x30CA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyf<.f> a,b,u6 00110bbb01001010FBBBuuuuuuAAAAAA. */
+{ "mpyf", 0x304A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyf<.f> 0,b,u6 00110bbb01001010FBBBuuuuuu111110. */
+{ "mpyf", 0x304A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyf<.f><.cc> b,b,u6 00110bbb11001010FBBBuuuuuu1QQQQQ. */
+{ "mpyf", 0x30CA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyf<.f> b,b,s12 00110bbb10001010FBBBssssssSSSSSS. */
+{ "mpyf", 0x308A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyf<.f> a,limm,c 0011011000001010F111CCCCCCAAAAAA. */
+{ "mpyf", 0x360A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyf<.f> a,b,limm 00110bbb00001010FBBB111110AAAAAA. */
+{ "mpyf", 0x300A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyf<.f> 0,limm,c 0011011000001010F111CCCCCC111110. */
+{ "mpyf", 0x360A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyf<.f> 0,b,limm 00110bbb00001010FBBB111110111110. */
+{ "mpyf", 0x300A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyf<.f><.cc> b,b,limm 00110bbb11001010FBBB1111100QQQQQ. */
+{ "mpyf", 0x30CA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyf<.f><.cc> 0,limm,c 0011011011001010F111CCCCCC0QQQQQ. */
+{ "mpyf", 0x36CA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyf<.f> a,limm,u6 0011011001001010F111uuuuuuAAAAAA. */
+{ "mpyf", 0x364A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyf<.f> 0,limm,u6 0011011001001010F111uuuuuu111110. */
+{ "mpyf", 0x364A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyf<.f><.cc> 0,limm,u6 0011011011001010F111uuuuuu1QQQQQ. */
+{ "mpyf", 0x36CA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyf<.f> 0,limm,s12 0011011010001010F111ssssssSSSSSS. */
+{ "mpyf", 0x368A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyf<.f> a,limm,limm 0011011000001010F111111110AAAAAA. */
+{ "mpyf", 0x360A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyf<.f> 0,limm,limm 0011011000001010F111111110111110. */
+{ "mpyf", 0x360A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyf<.f><.cc> 0,limm,limm 0011011011001010F1111111100QQQQQ. */
+{ "mpyf", 0x36CA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyfr<.f> a,b,c 00110bbb00001011FBBBCCCCCCAAAAAA. */
+{ "mpyfr", 0x300B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyfr<.f> 0,b,c 00110bbb00001011FBBBCCCCCC111110. */
+{ "mpyfr", 0x300B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpyfr<.f><.cc> b,b,c 00110bbb11001011FBBBCCCCCC0QQQQQ. */
+{ "mpyfr", 0x30CB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyfr<.f> a,b,u6 00110bbb01001011FBBBuuuuuuAAAAAA. */
+{ "mpyfr", 0x304B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyfr<.f> 0,b,u6 00110bbb01001011FBBBuuuuuu111110. */
+{ "mpyfr", 0x304B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyfr<.f><.cc> b,b,u6 00110bbb11001011FBBBuuuuuu1QQQQQ. */
+{ "mpyfr", 0x30CB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyfr<.f> b,b,s12 00110bbb10001011FBBBssssssSSSSSS. */
+{ "mpyfr", 0x308B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyfr<.f> a,limm,c 0011011000001011F111CCCCCCAAAAAA. */
+{ "mpyfr", 0x360B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyfr<.f> a,b,limm 00110bbb00001011FBBB111110AAAAAA. */
+{ "mpyfr", 0x300B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyfr<.f> 0,limm,c 0011011000001011F111CCCCCC111110. */
+{ "mpyfr", 0x360B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyfr<.f> 0,b,limm 00110bbb00001011FBBB111110111110. */
+{ "mpyfr", 0x300B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyfr<.f><.cc> b,b,limm 00110bbb11001011FBBB1111100QQQQQ. */
+{ "mpyfr", 0x30CB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyfr<.f><.cc> 0,limm,c 0011011011001011F111CCCCCC0QQQQQ. */
+{ "mpyfr", 0x36CB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyfr<.f> a,limm,u6 0011011001001011F111uuuuuuAAAAAA. */
+{ "mpyfr", 0x364B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyfr<.f> 0,limm,u6 0011011001001011F111uuuuuu111110. */
+{ "mpyfr", 0x364B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyfr<.f><.cc> 0,limm,u6 0011011011001011F111uuuuuu1QQQQQ. */
+{ "mpyfr", 0x36CB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyfr<.f> 0,limm,s12 0011011010001011F111ssssssSSSSSS. */
+{ "mpyfr", 0x368B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyfr<.f> a,limm,limm 0011011000001011F111111110AAAAAA. */
+{ "mpyfr", 0x360B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyfr<.f> 0,limm,limm 0011011000001011F111111110111110. */
+{ "mpyfr", 0x360B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyfr<.f><.cc> 0,limm,limm 0011011011001011F1111111100QQQQQ. */
+{ "mpyfr", 0x36CB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,RB,RC 01011bbb00110000FBBBccccccaaaaaa. */
+{ "mpyl", 0x58300000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* mpyl<.f> 0,RB,RC 01011bbb00110000FBBBcccccc111110. */
+{ "mpyl", 0x5830003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpyl<.f><.cc> RB,RB,RC 01011bbb11110000FBBBcccccc0QQQQQ. */
+{ "mpyl", 0x58F00000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,RB,u6 01011bbb01110000FBBBuuuuuuaaaaaa. */
+{ "mpyl", 0x58700000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f> 0,RB,u6 01011bbb01110000FBBBuuuuuu111110. */
+{ "mpyl", 0x5870003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f><.cc> RB,RB,u6 01011bbb11110000FBBBuuuuuu1QQQQQ. */
+{ "mpyl", 0x58F00020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyl<.f> RB,RB,s12 01011bbb10110000FBBBssssssSSSSSS. */
+{ "mpyl", 0x58B00000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyl<.f> RA,ximm,RC 0101110000110000F111ccccccaaaaaa. */
+{ "mpyl", 0x5C307000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* mpyl<.f> RA,RB,ximm 01011bbb00110000FBBB111100aaaaaa. */
+{ "mpyl", 0x58300F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* mpyl<.f> 0,ximm,RC 0101110000110000F111cccccc111110. */
+{ "mpyl", 0x5C30703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* mpyl<.f> 0,RB,ximm 01011bbb00110000FBBB111100111110. */
+{ "mpyl", 0x58300F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* mpyl<.f><.cc> 0,ximm,RC 0101110011110000F111cccccc0QQQQQ. */
+{ "mpyl", 0x5CF07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* mpyl<.f><.cc> RB,RB,ximm 01011bbb11110000FBBB1111000QQQQQ. */
+{ "mpyl", 0x58F00F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,ximm,u6 0101110001110000F111uuuuuuaaaaaa. */
+{ "mpyl", 0x5C707000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f> 0,ximm,u6 0101110001110000F111uuuuuu111110. */
+{ "mpyl", 0x5C70703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f><.cc> 0,ximm,u6 0101110011110000F111uuuuuu1QQQQQ. */
+{ "mpyl", 0x5CF07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,limm,RC 0101111000110000F111ccccccaaaaaa. */
+{ "mpyl", 0x5E307000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* mpyl<.f> RA,RB,limm 01011bbb00110000FBBB111110aaaaaa. */
+{ "mpyl", 0x58300F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* mpyl<.f> 0,limm,RC 0101111000110000F111cccccc111110. */
+{ "mpyl", 0x5E30703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyl<.f> 0,RB,limm 01011bbb00110000FBBB111110111110. */
+{ "mpyl", 0x58300FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyl<.f><.cc> 0,limm,RC 0101111011110000F111cccccc0QQQQQ. */
+{ "mpyl", 0x5EF07000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyl<.f><.cc> RB,RB,limm 01011bbb11110000FBBB1111100QQQQQ. */
+{ "mpyl", 0x58F00F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,limm,u6 0101111001110000F111uuuuuuaaaaaa. */
+{ "mpyl", 0x5E707000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f> 0,limm,u6 0101111001110000F111uuuuuu111110. */
+{ "mpyl", 0x5E70703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyl<.f><.cc> 0,limm,u6 0101111011110000F111uuuuuu1QQQQQ. */
+{ "mpyl", 0x5EF07020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyl<.f> 0,ximm,s12 0101110010110000F111ssssssSSSSSS. */
+{ "mpyl", 0x5CB07000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* mpyl<.f> 0,limm,s12 0101111010110000F111ssssssSSSSSS. */
+{ "mpyl", 0x5EB07000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyl<.f> RA,ximm,ximm 0101110000110000F111111100aaaaaa. */
+{ "mpyl", 0x5C307F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* mpyl<.f> 0,ximm,ximm 0101110000110000F111111100111110. */
+{ "mpyl", 0x5C307F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* mpyl<.f><.cc> 0,ximm,ximm 0101110011110000F1111111000QQQQQ. */
+{ "mpyl", 0x5CF07F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* mpyl<.f> RA,limm,limm 0101111000110000F111111110aaaaaa. */
+{ "mpyl", 0x5E307F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyl<.f> 0,limm,limm 0101111000110000F111111110111110. */
+{ "mpyl", 0x5E307FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyl<.f><.cc> 0,limm,limm 0101111011110000F1111111100QQQQQ. */
+{ "mpyl", 0x5EF07F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpym<.f> a,b,c 00100bbb00011011FBBBCCCCCCAAAAAA. */
+{ "mpym", 0x201B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpym<.f> 0,b,c 00100bbb00011011FBBBCCCCCC111110. */
+{ "mpym", 0x201B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, RC }, { C_F }},
+
+/* mpym<.f><.cc> b,b,c 00100bbb11011011FBBBCCCCCC0QQQQQ. */
+{ "mpym", 0x20DB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpym<.f> a,b,u6 00100bbb01011011FBBBuuuuuuAAAAAA. */
+{ "mpym", 0x205B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpym<.f> 0,b,u6 00100bbb01011011FBBBuuuuuu111110. */
+{ "mpym", 0x205B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpym<.f><.cc> b,b,u6 00100bbb11011011FBBBuuuuuu1QQQQQ. */
+{ "mpym", 0x20DB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpym<.f> b,b,s12 00100bbb10011011FBBBssssssSSSSSS. */
+{ "mpym", 0x209B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpym<.f> a,limm,c 0010011000011011F111CCCCCCAAAAAA. */
+{ "mpym", 0x261B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpym<.f> a,b,limm 00100bbb00011011FBBB111110AAAAAA. */
+{ "mpym", 0x201B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpym<.f> 0,limm,c 0010011000011011F111CCCCCC111110. */
+{ "mpym", 0x261B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpym<.f> 0,b,limm 00100bbb00011011FBBB111110111110. */
+{ "mpym", 0x201B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpym<.f><.cc> b,b,limm 00100bbb11011011FBBB1111100QQQQQ. */
+{ "mpym", 0x20DB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpym<.f><.cc> 0,limm,c 0010011011011011F111CCCCCC0QQQQQ. */
+{ "mpym", 0x26DB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpym<.f> a,limm,u6 0010011001011011F111uuuuuuAAAAAA. */
+{ "mpym", 0x265B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpym<.f> 0,limm,u6 0010011001011011F111uuuuuu111110. */
+{ "mpym", 0x265B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpym<.f><.cc> 0,limm,u6 0010011011011011F111uuuuuu1QQQQQ. */
+{ "mpym", 0x26DB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpym<.f> 0,limm,s12 0010011010011011F111ssssssSSSSSS. */
+{ "mpym", 0x269B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpym<.f> a,limm,limm 0010011000011011F111111110AAAAAA. */
+{ "mpym", 0x261B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpym<.f> 0,limm,limm 0010011000011011F111111110111110. */
+{ "mpym", 0x261B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpym<.f><.cc> 0,limm,limm 0010011011011011F1111111100QQQQQ. */
+{ "mpym", 0x26DB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyml RA,RB,RC 01011bbb001100010BBBccccccaaaaaa. */
+{ "mpyml", 0x58310000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { 0 }},
+
+/* mpyml 0,RB,RC 01011bbb001100010BBBcccccc111110. */
+{ "mpyml", 0x5831003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { 0 }},
+
+/* mpyml<.cc> RB,RB,RC 01011bbb111100010BBBcccccc0QQQQQ. */
+{ "mpyml", 0x58F10000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_CC }},
+
+/* mpyml RA,RB,u6 01011bbb011100010BBBuuuuuuaaaaaa. */
+{ "mpyml", 0x58710000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { 0 }},
+
+/* mpyml 0,RB,u6 01011bbb011100010BBBuuuuuu111110. */
+{ "mpyml", 0x5871003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* mpyml<.cc> RB,RB,u6 01011bbb111100010BBBuuuuuu1QQQQQ. */
+{ "mpyml", 0x58F10020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_CC }},
+
+/* mpyml RB,RB,s12 01011bbb101100010BBBssssssSSSSSS. */
+{ "mpyml", 0x58B10000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { 0 }},
+
+/* mpyml RA,ximm,RC 01011100001100010111ccccccaaaaaa. */
+{ "mpyml", 0x5C317000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { 0 }},
+
+/* mpyml RA,RB,ximm 01011bbb001100010BBB111100aaaaaa. */
+{ "mpyml", 0x58310F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { 0 }},
+
+/* mpyml 0,ximm,RC 01011100001100010111cccccc111110. */
+{ "mpyml", 0x5C31703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { 0 }},
+
+/* mpyml 0,RB,ximm 01011bbb001100010BBB111100111110. */
+{ "mpyml", 0x58310F3E, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { 0 }},
+
+/* mpyml<.cc> 0,ximm,RC 01011100111100010111cccccc0QQQQQ. */
+{ "mpyml", 0x5CF17000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_CC }},
+
+/* mpyml<.cc> RB,RB,ximm 01011bbb111100010BBB1111000QQQQQ. */
+{ "mpyml", 0x58F10F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_CC }},
+
+/* mpyml RA,ximm,u6 01011100011100010111uuuuuuaaaaaa. */
+{ "mpyml", 0x5C717000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpyml 0,ximm,u6 01011100011100010111uuuuuu111110. */
+{ "mpyml", 0x5C71703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpyml<.cc> 0,ximm,u6 01011100111100010111uuuuuu1QQQQQ. */
+{ "mpyml", 0x5CF17020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_CC }},
+
+/* mpyml RA,limm,RC 01011110001100010111ccccccaaaaaa. */
+{ "mpyml", 0x5E317000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { 0 }},
+
+/* mpyml RA,RB,limm 01011bbb001100010BBB111110aaaaaa. */
+{ "mpyml", 0x58310F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { 0 }},
+
+/* mpyml 0,limm,RC 01011110001100010111cccccc111110. */
+{ "mpyml", 0x5E31703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* mpyml 0,RB,limm 01011bbb001100010BBB111110111110. */
+{ "mpyml", 0x58310FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* mpyml<.cc> 0,limm,RC 01011110111100010111cccccc0QQQQQ. */
+{ "mpyml", 0x5EF17000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* mpyml<.cc> RB,RB,limm 01011bbb111100010BBB1111100QQQQQ. */
+{ "mpyml", 0x58F10F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_CC }},
+
+/* mpyml RA,limm,u6 01011110011100010111uuuuuuaaaaaa. */
+{ "mpyml", 0x5E717000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpyml 0,limm,u6 01011110011100010111uuuuuu111110. */
+{ "mpyml", 0x5E71703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpyml<.cc> 0,limm,u6 01011110111100010111uuuuuu1QQQQQ. */
+{ "mpyml", 0x5EF17020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* mpyml 0,ximm,s12 01011100101100010111ssssssSSSSSS. */
+{ "mpyml", 0x5CB17000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { 0 }},
+
+/* mpyml 0,limm,s12 01011110101100010111ssssssSSSSSS. */
+{ "mpyml", 0x5EB17000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* mpyml RA,ximm,ximm 01011100001100010111111100aaaaaa. */
+{ "mpyml", 0x5C317F00, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { 0 }},
+
+/* mpyml 0,ximm,ximm 01011100001100010111111100111110. */
+{ "mpyml", 0x5C317F3E, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { 0 }},
+
+/* mpyml<.cc> 0,ximm,ximm 010111001111000101111111000QQQQQ. */
+{ "mpyml", 0x5CF17F00, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_CC }},
+
+/* mpyml RA,limm,limm 01011110001100010111111110aaaaaa. */
+{ "mpyml", 0x5E317F80, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { 0 }},
+
+/* mpyml 0,limm,limm 01011110001100010111111110111110. */
+{ "mpyml", 0x5E317FBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* mpyml<.cc> 0,limm,limm 010111101111000101111111100QQQQQ. */
+{ "mpyml", 0x5EF17F80, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* mpymsul RA,RB,RC 01011bbb001100110BBBccccccaaaaaa. */
+{ "mpymsul", 0x58330000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { 0 }},
+
+/* mpymsul 0,RB,RC 01011bbb001100110BBBcccccc111110. */
+{ "mpymsul", 0x5833003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { 0 }},
+
+/* mpymsul<.cc> RB,RB,RC 01011bbb111100110BBBcccccc0QQQQQ. */
+{ "mpymsul", 0x58F30000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_CC }},
+
+/* mpymsul RA,RB,u6 01011bbb011100110BBBuuuuuuaaaaaa. */
+{ "mpymsul", 0x58730000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { 0 }},
+
+/* mpymsul 0,RB,u6 01011bbb011100110BBBuuuuuu111110. */
+{ "mpymsul", 0x5873003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* mpymsul<.cc> RB,RB,u6 01011bbb111100110BBBuuuuuu1QQQQQ. */
+{ "mpymsul", 0x58F30020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_CC }},
+
+/* mpymsul RB,RB,s12 01011bbb101100110BBBssssssSSSSSS. */
+{ "mpymsul", 0x58B30000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { 0 }},
+
+/* mpymsul RA,ximm,RC 01011100001100110111ccccccaaaaaa. */
+{ "mpymsul", 0x5C337000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { 0 }},
+
+/* mpymsul RA,RB,ximm 01011bbb001100110BBB111100aaaaaa. */
+{ "mpymsul", 0x58330F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { 0 }},
+
+/* mpymsul 0,ximm,RC 01011100001100110111cccccc111110. */
+{ "mpymsul", 0x5C33703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { 0 }},
+
+/* mpymsul 0,RB,ximm 01011bbb001100110BBB111100111110. */
+{ "mpymsul", 0x58330F3E, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { 0 }},
+
+/* mpymsul<.cc> 0,ximm,RC 01011100111100110111cccccc0QQQQQ. */
+{ "mpymsul", 0x5CF37000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_CC }},
+
+/* mpymsul<.cc> RB,RB,ximm 01011bbb111100110BBB1111000QQQQQ. */
+{ "mpymsul", 0x58F30F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_CC }},
+
+/* mpymsul RA,ximm,u6 01011100011100110111uuuuuuaaaaaa. */
+{ "mpymsul", 0x5C737000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpymsul 0,ximm,u6 01011100011100110111uuuuuu111110. */
+{ "mpymsul", 0x5C73703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpymsul<.cc> 0,ximm,u6 01011100111100110111uuuuuu1QQQQQ. */
+{ "mpymsul", 0x5CF37020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_CC }},
+
+/* mpymsul RA,limm,RC 01011110001100110111ccccccaaaaaa. */
+{ "mpymsul", 0x5E337000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { 0 }},
+
+/* mpymsul RA,RB,limm 01011bbb001100110BBB111110aaaaaa. */
+{ "mpymsul", 0x58330F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { 0 }},
+
+/* mpymsul 0,limm,RC 01011110001100110111cccccc111110. */
+{ "mpymsul", 0x5E33703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* mpymsul 0,RB,limm 01011bbb001100110BBB111110111110. */
+{ "mpymsul", 0x58330FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* mpymsul<.cc> 0,limm,RC 01011110111100110111cccccc0QQQQQ. */
+{ "mpymsul", 0x5EF37000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* mpymsul<.cc> RB,RB,limm 01011bbb111100110BBB1111100QQQQQ. */
+{ "mpymsul", 0x58F30F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_CC }},
+
+/* mpymsul RA,limm,u6 01011110011100110111uuuuuuaaaaaa. */
+{ "mpymsul", 0x5E737000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpymsul 0,limm,u6 01011110011100110111uuuuuu111110. */
+{ "mpymsul", 0x5E73703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpymsul<.cc> 0,limm,u6 01011110111100110111uuuuuu1QQQQQ. */
+{ "mpymsul", 0x5EF37020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* mpymsul 0,ximm,s12 01011100101100110111ssssssSSSSSS. */
+{ "mpymsul", 0x5CB37000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { 0 }},
+
+/* mpymsul 0,limm,s12 01011110101100110111ssssssSSSSSS. */
+{ "mpymsul", 0x5EB37000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* mpymsul RA,ximm,ximm 01011100001100110111111100aaaaaa. */
+{ "mpymsul", 0x5C337F00, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { 0 }},
+
+/* mpymsul 0,ximm,ximm 01011100001100110111111100111110. */
+{ "mpymsul", 0x5C337F3E, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { 0 }},
+
+/* mpymsul<.cc> 0,ximm,ximm 010111001111001101111111000QQQQQ. */
+{ "mpymsul", 0x5CF37F00, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_CC }},
+
+/* mpymsul RA,limm,limm 01011110001100110111111110aaaaaa. */
+{ "mpymsul", 0x5E337F80, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { 0 }},
+
+/* mpymsul 0,limm,limm 01011110001100110111111110111110. */
+{ "mpymsul", 0x5E337FBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* mpymsul<.cc> 0,limm,limm 010111101111001101111111100QQQQQ. */
+{ "mpymsul", 0x5EF37F80, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* mpymu<.f> a,b,c 00100bbb00011100FBBBCCCCCCAAAAAA. */
+{ "mpymu", 0x201C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpymu<.f> 0,b,c 00100bbb00011100FBBBCCCCCC111110. */
+{ "mpymu", 0x201C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, RC }, { C_F }},
+
+/* mpymu<.f><.cc> b,b,c 00100bbb11011100FBBBCCCCCC0QQQQQ. */
+{ "mpymu", 0x20DC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpymu<.f> a,b,u6 00100bbb01011100FBBBuuuuuuAAAAAA. */
+{ "mpymu", 0x205C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpymu<.f> 0,b,u6 00100bbb01011100FBBBuuuuuu111110. */
+{ "mpymu", 0x205C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpymu<.f><.cc> b,b,u6 00100bbb11011100FBBBuuuuuu1QQQQQ. */
+{ "mpymu", 0x20DC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpymu<.f> b,b,s12 00100bbb10011100FBBBssssssSSSSSS. */
+{ "mpymu", 0x209C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpymu<.f> a,limm,c 0010011000011100F111CCCCCCAAAAAA. */
+{ "mpymu", 0x261C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpymu<.f> a,b,limm 00100bbb00011100FBBB111110AAAAAA. */
+{ "mpymu", 0x201C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpymu<.f> 0,limm,c 0010011000011100F111CCCCCC111110. */
+{ "mpymu", 0x261C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpymu<.f> 0,b,limm 00100bbb00011100FBBB111110111110. */
+{ "mpymu", 0x201C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpymu<.f><.cc> b,b,limm 00100bbb11011100FBBB1111100QQQQQ. */
+{ "mpymu", 0x20DC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpymu<.f><.cc> 0,limm,c 0010011011011100F111CCCCCC0QQQQQ. */
+{ "mpymu", 0x26DC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpymu<.f> a,limm,u6 0010011001011100F111uuuuuuAAAAAA. */
+{ "mpymu", 0x265C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpymu<.f> 0,limm,u6 0010011001011100F111uuuuuu111110. */
+{ "mpymu", 0x265C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpymu<.f><.cc> 0,limm,u6 0010011011011100F111uuuuuu1QQQQQ. */
+{ "mpymu", 0x26DC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpymu<.f> 0,limm,s12 0010011010011100F111ssssssSSSSSS. */
+{ "mpymu", 0x269C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpymu<.f> a,limm,limm 0010011000011100F111111110AAAAAA. */
+{ "mpymu", 0x261C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpymu<.f> 0,limm,limm 0010011000011100F111111110111110. */
+{ "mpymu", 0x261C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpymu<.f><.cc> 0,limm,limm 0010011011011100F1111111100QQQQQ. */
+{ "mpymu", 0x26DC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpymul RA,RB,RC 01011bbb001100100BBBccccccaaaaaa. */
+{ "mpymul", 0x58320000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { 0 }},
+
+/* mpymul 0,RB,RC 01011bbb001100100BBBcccccc111110. */
+{ "mpymul", 0x5832003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { 0 }},
+
+/* mpymul<.cc> RB,RB,RC 01011bbb111100100BBBcccccc0QQQQQ. */
+{ "mpymul", 0x58F20000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_CC }},
+
+/* mpymul RA,RB,u6 01011bbb011100100BBBuuuuuuaaaaaa. */
+{ "mpymul", 0x58720000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { 0 }},
+
+/* mpymul 0,RB,u6 01011bbb011100100BBBuuuuuu111110. */
+{ "mpymul", 0x5872003E, 0xF8FF803F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* mpymul<.cc> RB,RB,u6 01011bbb111100100BBBuuuuuu1QQQQQ. */
+{ "mpymul", 0x58F20020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_CC }},
+
+/* mpymul RB,RB,s12 01011bbb101100100BBBssssssSSSSSS. */
+{ "mpymul", 0x58B20000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { 0 }},
+
+/* mpymul RA,ximm,RC 01011100001100100111ccccccaaaaaa. */
+{ "mpymul", 0x5C327000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { 0 }},
+
+/* mpymul RA,RB,ximm 01011bbb001100100BBB111100aaaaaa. */
+{ "mpymul", 0x58320F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { 0 }},
+
+/* mpymul 0,ximm,RC 01011100001100100111cccccc111110. */
+{ "mpymul", 0x5C32703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { 0 }},
+
+/* mpymul 0,RB,ximm 01011bbb001100100BBB111100111110. */
+{ "mpymul", 0x58320F3E, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { 0 }},
+
+/* mpymul<.cc> 0,ximm,RC 01011100111100100111cccccc0QQQQQ. */
+{ "mpymul", 0x5CF27000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_CC }},
+
+/* mpymul<.cc> RB,RB,ximm 01011bbb111100100BBB1111000QQQQQ. */
+{ "mpymul", 0x58F20F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_CC }},
+
+/* mpymul RA,ximm,u6 01011100011100100111uuuuuuaaaaaa. */
+{ "mpymul", 0x5C727000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpymul 0,ximm,u6 01011100011100100111uuuuuu111110. */
+{ "mpymul", 0x5C72703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { 0 }},
+
+/* mpymul<.cc> 0,ximm,u6 01011100111100100111uuuuuu1QQQQQ. */
+{ "mpymul", 0x5CF27020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_CC }},
+
+/* mpymul RA,limm,RC 01011110001100100111ccccccaaaaaa. */
+{ "mpymul", 0x5E327000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { 0 }},
+
+/* mpymul RA,RB,limm 01011bbb001100100BBB111110aaaaaa. */
+{ "mpymul", 0x58320F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { 0 }},
+
+/* mpymul 0,limm,RC 01011110001100100111cccccc111110. */
+{ "mpymul", 0x5E32703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* mpymul 0,RB,limm 01011bbb001100100BBB111110111110. */
+{ "mpymul", 0x58320FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* mpymul<.cc> 0,limm,RC 01011110111100100111cccccc0QQQQQ. */
+{ "mpymul", 0x5EF27000, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* mpymul<.cc> RB,RB,limm 01011bbb111100100BBB1111100QQQQQ. */
+{ "mpymul", 0x58F20F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_CC }},
+
+/* mpymul RA,limm,u6 01011110011100100111uuuuuuaaaaaa. */
+{ "mpymul", 0x5E727000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpymul 0,limm,u6 01011110011100100111uuuuuu111110. */
+{ "mpymul", 0x5E72703E, 0xFFFFF03F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* mpymul<.cc> 0,limm,u6 01011110111100100111uuuuuu1QQQQQ. */
+{ "mpymul", 0x5EF27020, 0xFFFFF020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* mpymul 0,ximm,s12 01011100101100100111ssssssSSSSSS. */
+{ "mpymul", 0x5CB27000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { 0 }},
+
+/* mpymul 0,limm,s12 01011110101100100111ssssssSSSSSS. */
+{ "mpymul", 0x5EB27000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* mpymul RA,ximm,ximm 01011100001100100111111100aaaaaa. */
+{ "mpymul", 0x5C327F00, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { 0 }},
+
+/* mpymul 0,ximm,ximm 01011100001100100111111100111110. */
+{ "mpymul", 0x5C327F3E, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { 0 }},
+
+/* mpymul<.cc> 0,ximm,ximm 010111001111001001111111000QQQQQ. */
+{ "mpymul", 0x5CF27F00, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_CC }},
+
+/* mpymul RA,limm,limm 01011110001100100111111110aaaaaa. */
+{ "mpymul", 0x5E327F80, 0xFFFFFFC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { 0 }},
+
+/* mpymul 0,limm,limm 01011110001100100111111110111110. */
+{ "mpymul", 0x5E327FBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* mpymul<.cc> 0,limm,limm 010111101111001001111111100QQQQQ. */
+{ "mpymul", 0x5EF27F80, 0xFFFFFFE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* mpyu<.f> a,b,c 00100bbb00011101FBBBCCCCCCAAAAAA. */
+{ "mpyu", 0x201D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyu<.f> 0,b,c 00100bbb00011101FBBBCCCCCC111110. */
+{ "mpyu", 0x201D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, RC }, { C_F }},
+
+/* mpyu<.f><.cc> b,b,c 00100bbb11011101FBBBCCCCCC0QQQQQ. */
+{ "mpyu", 0x20DD0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyu<.f> a,b,u6 00100bbb01011101FBBBuuuuuuAAAAAA. */
+{ "mpyu", 0x205D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyu<.f> 0,b,u6 00100bbb01011101FBBBuuuuuu111110. */
+{ "mpyu", 0x205D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyu<.f><.cc> b,b,u6 00100bbb11011101FBBBuuuuuu1QQQQQ. */
+{ "mpyu", 0x20DD0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyu<.f> b,b,s12 00100bbb10011101FBBBssssssSSSSSS. */
+{ "mpyu", 0x209D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyu<.f> a,limm,c 0010011000011101F111CCCCCCAAAAAA. */
+{ "mpyu", 0x261D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyu<.f> a,b,limm 00100bbb00011101FBBB111110AAAAAA. */
+{ "mpyu", 0x201D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyu<.f> 0,limm,c 0010011000011101F111CCCCCC111110. */
+{ "mpyu", 0x261D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyu<.f> 0,b,limm 00100bbb00011101FBBB111110111110. */
+{ "mpyu", 0x201D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyu<.f><.cc> b,b,limm 00100bbb11011101FBBB1111100QQQQQ. */
+{ "mpyu", 0x20DD0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyu<.f><.cc> 0,limm,c 0010011011011101F111CCCCCC0QQQQQ. */
+{ "mpyu", 0x26DD7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyu<.f> a,limm,u6 0010011001011101F111uuuuuuAAAAAA. */
+{ "mpyu", 0x265D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyu<.f> 0,limm,u6 0010011001011101F111uuuuuu111110. */
+{ "mpyu", 0x265D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyu<.f><.cc> 0,limm,u6 0010011011011101F111uuuuuu1QQQQQ. */
+{ "mpyu", 0x26DD7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyu<.f> 0,limm,s12 0010011010011101F111ssssssSSSSSS. */
+{ "mpyu", 0x269D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyu<.f> a,limm,limm 0010011000011101F111111110AAAAAA. */
+{ "mpyu", 0x261D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyu<.f> 0,limm,limm 0010011000011101F111111110111110. */
+{ "mpyu", 0x261D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyu<.f><.cc> 0,limm,limm 0010011011011101F1111111100QQQQQ. */
+{ "mpyu", 0x26DD7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyuw<.f> a,b,c 00100bbb00011111FBBBCCCCCCAAAAAA. */
+{ "mpyuw", 0x201F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyuw<.f> 0,b,c 00100bbb00011111FBBBCCCCCC111110. */
+{ "mpyuw", 0x201F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, RC }, { C_F }},
+
+/* mpyuw<.f><.cc> b,b,c 00100bbb11011111FBBBCCCCCC0QQQQQ. */
+{ "mpyuw", 0x20DF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyuw<.f> a,b,u6 00100bbb01011111FBBBuuuuuuAAAAAA. */
+{ "mpyuw", 0x205F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyuw<.f> 0,b,u6 00100bbb01011111FBBBuuuuuu111110. */
+{ "mpyuw", 0x205F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyuw<.f><.cc> b,b,u6 00100bbb11011111FBBBuuuuuu1QQQQQ. */
+{ "mpyuw", 0x20DF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyuw<.f> b,b,s12 00100bbb10011111FBBBssssssSSSSSS. */
+{ "mpyuw", 0x209F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyuw<.f> a,limm,c 0010011000011111F111CCCCCCAAAAAA. */
+{ "mpyuw", 0x261F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyuw<.f> a,b,limm 00100bbb00011111FBBB111110AAAAAA. */
+{ "mpyuw", 0x201F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyuw<.f> 0,limm,c 0010011000011111F111CCCCCC111110. */
+{ "mpyuw", 0x261F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyuw<.f> 0,b,limm 00100bbb00011111FBBB111110111110. */
+{ "mpyuw", 0x201F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyuw<.f><.cc> b,b,limm 00100bbb11011111FBBB1111100QQQQQ. */
+{ "mpyuw", 0x20DF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyuw<.f><.cc> 0,limm,c 0010011011011111F111CCCCCC0QQQQQ. */
+{ "mpyuw", 0x26DF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyuw<.f> a,limm,u6 0010011001011111F111uuuuuuAAAAAA. */
+{ "mpyuw", 0x265F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyuw<.f> 0,limm,u6 0010011001011111F111uuuuuu111110. */
+{ "mpyuw", 0x265F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyuw<.f><.cc> 0,limm,u6 0010011011011111F111uuuuuu1QQQQQ. */
+{ "mpyuw", 0x26DF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyuw<.f> 0,limm,s12 0010011010011111F111ssssssSSSSSS. */
+{ "mpyuw", 0x269F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyuw<.f> a,limm,limm 0010011000011111F111111110AAAAAA. */
+{ "mpyuw", 0x261F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyuw<.f> 0,limm,limm 0010011000011111F111111110111110. */
+{ "mpyuw", 0x261F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyuw<.f><.cc> 0,limm,limm 0010011011011111F1111111100QQQQQ. */
+{ "mpyuw", 0x26DF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyuw_s b,b,c 01111bbbccc01010. */
+{ "mpyuw_s", 0x0000780A, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* mpyw<.f> a,b,c 00100bbb00011110FBBBCCCCCCAAAAAA. */
+{ "mpyw", 0x201E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpyw<.f> 0,b,c 00100bbb00011110FBBBCCCCCC111110. */
+{ "mpyw", 0x201E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, RC }, { C_F }},
+
+/* mpyw<.f><.cc> b,b,c 00100bbb11011110FBBBCCCCCC0QQQQQ. */
+{ "mpyw", 0x20DE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpyw<.f> a,b,u6 00100bbb01011110FBBBuuuuuuAAAAAA. */
+{ "mpyw", 0x205E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpyw<.f> 0,b,u6 00100bbb01011110FBBBuuuuuu111110. */
+{ "mpyw", 0x205E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpyw<.f><.cc> b,b,u6 00100bbb11011110FBBBuuuuuu1QQQQQ. */
+{ "mpyw", 0x20DE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyw<.f> b,b,s12 00100bbb10011110FBBBssssssSSSSSS. */
+{ "mpyw", 0x209E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpyw<.f> a,limm,c 0010011000011110F111CCCCCCAAAAAA. */
+{ "mpyw", 0x261E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpyw<.f> a,b,limm 00100bbb00011110FBBB111110AAAAAA. */
+{ "mpyw", 0x201E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpyw<.f> 0,limm,c 0010011000011110F111CCCCCC111110. */
+{ "mpyw", 0x261E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, RC }, { C_F }},
+
+/* mpyw<.f> 0,b,limm 00100bbb00011110FBBB111110111110. */
+{ "mpyw", 0x201E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, RB, LIMM }, { C_F }},
+
+/* mpyw<.f><.cc> b,b,limm 00100bbb11011110FBBB1111100QQQQQ. */
+{ "mpyw", 0x20DE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpyw<.f><.cc> 0,limm,c 0010011011011110F111CCCCCC0QQQQQ. */
+{ "mpyw", 0x26DE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpyw<.f> a,limm,u6 0010011001011110F111uuuuuuAAAAAA. */
+{ "mpyw", 0x265E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyw<.f> 0,limm,u6 0010011001011110F111uuuuuu111110. */
+{ "mpyw", 0x265E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpyw<.f><.cc> 0,limm,u6 0010011011011110F111uuuuuu1QQQQQ. */
+{ "mpyw", 0x26DE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpyw<.f> 0,limm,s12 0010011010011110F111ssssssSSSSSS. */
+{ "mpyw", 0x269E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpyw<.f> a,limm,limm 0010011000011110F111111110AAAAAA. */
+{ "mpyw", 0x261E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpyw<.f> 0,limm,limm 0010011000011110F111111110111110. */
+{ "mpyw", 0x261E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpyw<.f><.cc> 0,limm,limm 0010011011011110F1111111100QQQQQ. */
+{ "mpyw", 0x26DE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhfl<.f> a,b,c 00110bbb00100100FBBBCCCCCCAAAAAA. */
+{ "mpywhfl", 0x30240000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhfl<.f> 0,b,c 00110bbb00100100FBBBCCCCCC111110. */
+{ "mpywhfl", 0x3024003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhfl<.f><.cc> b,b,c 00110bbb11100100FBBBCCCCCC0QQQQQ. */
+{ "mpywhfl", 0x30E40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhfl<.f> a,b,u6 00110bbb01100100FBBBuuuuuuAAAAAA. */
+{ "mpywhfl", 0x30640000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfl<.f> 0,b,u6 00110bbb01100100FBBBuuuuuu111110. */
+{ "mpywhfl", 0x3064003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfl<.f><.cc> b,b,u6 00110bbb11100100FBBBuuuuuu1QQQQQ. */
+{ "mpywhfl", 0x30E40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfl<.f> b,b,s12 00110bbb10100100FBBBssssssSSSSSS. */
+{ "mpywhfl", 0x30A40000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhfl<.f> a,limm,c 0011011000100100F111CCCCCCAAAAAA. */
+{ "mpywhfl", 0x36247000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhfl<.f> a,b,limm 00110bbb00100100FBBB111110AAAAAA. */
+{ "mpywhfl", 0x30240F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhfl<.f> 0,limm,c 0011011001100100F111CCCCCC111110. */
+{ "mpywhfl", 0x3664703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhfl<.f> 0,b,limm 00110bbb00100100FBBB111110111110. */
+{ "mpywhfl", 0x30240FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhfl<.f><.cc> b,b,limm 00110bbb11100100FBBB1111100QQQQQ. */
+{ "mpywhfl", 0x30E40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhfl<.f><.cc> 0,limm,c 0011011011100100F111CCCCCC0QQQQQ. */
+{ "mpywhfl", 0x36E47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhfl<.f> a,limm,u6 0011011001100100F111uuuuuuAAAAAA. */
+{ "mpywhfl", 0x36647000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfl<.f> 0,limm,u6 0011011001100100F111uuuuuu111110. */
+{ "mpywhfl", 0x3664703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfl<.f><.cc> 0,limm,u6 0011011011100100F111uuuuuu1QQQQQ. */
+{ "mpywhfl", 0x36E47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfl<.f> 0,limm,s12 0011011010100100F111ssssssSSSSSS. */
+{ "mpywhfl", 0x36A47000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhfl<.f> a,limm,limm 0011011000100100F111111110AAAAAA. */
+{ "mpywhfl", 0x36247F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfl<.f> 0,limm,limm 0011011000100100F111111110111110. */
+{ "mpywhfl", 0x36247FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfl<.f><.cc> 0,limm,limm 0011011011100100F1111111100QQQQQ. */
+{ "mpywhfl", 0x36E47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhflr<.f> a,b,c 00110bbb00100101FBBBCCCCCCAAAAAA. */
+{ "mpywhflr", 0x30250000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhflr<.f> 0,b,c 00110bbb00100101FBBBCCCCCC111110. */
+{ "mpywhflr", 0x3025003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhflr<.f><.cc> b,b,c 00110bbb11100101FBBBCCCCCC0QQQQQ. */
+{ "mpywhflr", 0x30E50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhflr<.f> a,b,u6 00110bbb01100101FBBBuuuuuuAAAAAA. */
+{ "mpywhflr", 0x30650000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhflr<.f> 0,b,u6 00110bbb01100101FBBBuuuuuu111110. */
+{ "mpywhflr", 0x3065003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhflr<.f><.cc> b,b,u6 00110bbb11100101FBBBuuuuuu1QQQQQ. */
+{ "mpywhflr", 0x30E50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhflr<.f> b,b,s12 00110bbb10100101FBBBssssssSSSSSS. */
+{ "mpywhflr", 0x30A50000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhflr<.f> a,limm,c 0011011000100101F111CCCCCCAAAAAA. */
+{ "mpywhflr", 0x36257000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhflr<.f> a,b,limm 00110bbb00100101FBBB111110AAAAAA. */
+{ "mpywhflr", 0x30250F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhflr<.f> 0,limm,c 0011011001100101F111CCCCCC111110. */
+{ "mpywhflr", 0x3665703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhflr<.f> 0,b,limm 00110bbb00100101FBBB111110111110. */
+{ "mpywhflr", 0x30250FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhflr<.f><.cc> b,b,limm 00110bbb11100101FBBB1111100QQQQQ. */
+{ "mpywhflr", 0x30E50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhflr<.f><.cc> 0,limm,c 0011011011100101F111CCCCCC0QQQQQ. */
+{ "mpywhflr", 0x36E57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhflr<.f> a,limm,u6 0011011001100101F111uuuuuuAAAAAA. */
+{ "mpywhflr", 0x36657000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhflr<.f> 0,limm,u6 0011011001100101F111uuuuuu111110. */
+{ "mpywhflr", 0x3665703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhflr<.f><.cc> 0,limm,u6 0011011011100101F111uuuuuu1QQQQQ. */
+{ "mpywhflr", 0x36E57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhflr<.f> 0,limm,s12 0011011010100101F111ssssssSSSSSS. */
+{ "mpywhflr", 0x36A57000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhflr<.f> a,limm,limm 0011011000100101F111111110AAAAAA. */
+{ "mpywhflr", 0x36257F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhflr<.f> 0,limm,limm 0011011000100101F111111110111110. */
+{ "mpywhflr", 0x36257FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhflr<.f><.cc> 0,limm,limm 0011011011100101F1111111100QQQQQ. */
+{ "mpywhflr", 0x36E57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhfm<.f> a,b,c 00110bbb00100000FBBBCCCCCCAAAAAA. */
+{ "mpywhfm", 0x30200000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhfm<.f> 0,b,c 00110bbb00100000FBBBCCCCCC111110. */
+{ "mpywhfm", 0x3020003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhfm<.f><.cc> b,b,c 00110bbb11100000FBBBCCCCCC0QQQQQ. */
+{ "mpywhfm", 0x30E00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhfm<.f> a,b,u6 00110bbb01100000FBBBuuuuuuAAAAAA. */
+{ "mpywhfm", 0x30600000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfm<.f> 0,b,u6 00110bbb01100000FBBBuuuuuu111110. */
+{ "mpywhfm", 0x3060003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfm<.f><.cc> b,b,u6 00110bbb11100000FBBBuuuuuu1QQQQQ. */
+{ "mpywhfm", 0x30E00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfm<.f> b,b,s12 00110bbb10100000FBBBssssssSSSSSS. */
+{ "mpywhfm", 0x30A00000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhfm<.f> a,limm,c 0011011000100000F111CCCCCCAAAAAA. */
+{ "mpywhfm", 0x36207000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhfm<.f> a,b,limm 00110bbb00100000FBBB111110AAAAAA. */
+{ "mpywhfm", 0x30200F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhfm<.f> 0,limm,c 0011011001100000F111CCCCCC111110. */
+{ "mpywhfm", 0x3660703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhfm<.f> 0,b,limm 00110bbb00100000FBBB111110111110. */
+{ "mpywhfm", 0x30200FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhfm<.f><.cc> b,b,limm 00110bbb11100000FBBB1111100QQQQQ. */
+{ "mpywhfm", 0x30E00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhfm<.f><.cc> 0,limm,c 0011011011100000F111CCCCCC0QQQQQ. */
+{ "mpywhfm", 0x36E07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhfm<.f> a,limm,u6 0011011001100000F111uuuuuuAAAAAA. */
+{ "mpywhfm", 0x36607000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfm<.f> 0,limm,u6 0011011001100000F111uuuuuu111110. */
+{ "mpywhfm", 0x3660703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfm<.f><.cc> 0,limm,u6 0011011011100000F111uuuuuu1QQQQQ. */
+{ "mpywhfm", 0x36E07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfm<.f> 0,limm,s12 0011011010100000F111ssssssSSSSSS. */
+{ "mpywhfm", 0x36A07000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhfm<.f> a,limm,limm 0011011000100000F111111110AAAAAA. */
+{ "mpywhfm", 0x36207F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfm<.f> 0,limm,limm 0011011000100000F111111110111110. */
+{ "mpywhfm", 0x36207FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfm<.f><.cc> 0,limm,limm 0011011011100000F1111111100QQQQQ. */
+{ "mpywhfm", 0x36E07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhfmr<.f> a,b,c 00110bbb00100001FBBBCCCCCCAAAAAA. */
+{ "mpywhfmr", 0x30210000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhfmr<.f> 0,b,c 00110bbb00100001FBBBCCCCCC111110. */
+{ "mpywhfmr", 0x3021003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhfmr<.f><.cc> b,b,c 00110bbb11100001FBBBCCCCCC0QQQQQ. */
+{ "mpywhfmr", 0x30E10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhfmr<.f> a,b,u6 00110bbb01100001FBBBuuuuuuAAAAAA. */
+{ "mpywhfmr", 0x30610000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfmr<.f> 0,b,u6 00110bbb01100001FBBBuuuuuu111110. */
+{ "mpywhfmr", 0x3061003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhfmr<.f><.cc> b,b,u6 00110bbb11100001FBBBuuuuuu1QQQQQ. */
+{ "mpywhfmr", 0x30E10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfmr<.f> b,b,s12 00110bbb10100001FBBBssssssSSSSSS. */
+{ "mpywhfmr", 0x30A10000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhfmr<.f> a,limm,c 0011011000100001F111CCCCCCAAAAAA. */
+{ "mpywhfmr", 0x36217000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhfmr<.f> a,b,limm 00110bbb00100001FBBB111110AAAAAA. */
+{ "mpywhfmr", 0x30210F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhfmr<.f> 0,limm,c 0011011001100001F111CCCCCC111110. */
+{ "mpywhfmr", 0x3661703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhfmr<.f> 0,b,limm 00110bbb00100001FBBB111110111110. */
+{ "mpywhfmr", 0x30210FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhfmr<.f><.cc> b,b,limm 00110bbb11100001FBBB1111100QQQQQ. */
+{ "mpywhfmr", 0x30E10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhfmr<.f><.cc> 0,limm,c 0011011011100001F111CCCCCC0QQQQQ. */
+{ "mpywhfmr", 0x36E17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhfmr<.f> a,limm,u6 0011011001100001F111uuuuuuAAAAAA. */
+{ "mpywhfmr", 0x36617000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfmr<.f> 0,limm,u6 0011011001100001F111uuuuuu111110. */
+{ "mpywhfmr", 0x3661703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhfmr<.f><.cc> 0,limm,u6 0011011011100001F111uuuuuu1QQQQQ. */
+{ "mpywhfmr", 0x36E17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhfmr<.f> 0,limm,s12 0011011010100001F111ssssssSSSSSS. */
+{ "mpywhfmr", 0x36A17000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhfmr<.f> a,limm,limm 0011011000100001F111111110AAAAAA. */
+{ "mpywhfmr", 0x36217F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfmr<.f> 0,limm,limm 0011011000100001F111111110111110. */
+{ "mpywhfmr", 0x36217FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhfmr<.f><.cc> 0,limm,limm 0011011011100001F1111111100QQQQQ. */
+{ "mpywhfmr", 0x36E17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhkl<.f> a,b,c 00110bbb00101010FBBBCCCCCCAAAAAA. */
+{ "mpywhkl", 0x302A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhkl<.f> 0,b,c 00110bbb00101010FBBBCCCCCC111110. */
+{ "mpywhkl", 0x302A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhkl<.f><.cc> b,b,c 00110bbb11101010FBBBCCCCCC0QQQQQ. */
+{ "mpywhkl", 0x30EA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhkl<.f> a,b,u6 00110bbb01101010FBBBuuuuuuAAAAAA. */
+{ "mpywhkl", 0x306A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhkl<.f> 0,b,u6 00110bbb01101010FBBBuuuuuu111110. */
+{ "mpywhkl", 0x306A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhkl<.f><.cc> b,b,u6 00110bbb11101010FBBBuuuuuu1QQQQQ. */
+{ "mpywhkl", 0x30EA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhkl<.f> b,b,s12 00110bbb10101010FBBBssssssSSSSSS. */
+{ "mpywhkl", 0x30AA0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhkl<.f> a,limm,c 0011011000101010F111CCCCCCAAAAAA. */
+{ "mpywhkl", 0x362A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhkl<.f> a,b,limm 00110bbb00101010FBBB111110AAAAAA. */
+{ "mpywhkl", 0x302A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhkl<.f> 0,limm,c 0011011001101010F111CCCCCC111110. */
+{ "mpywhkl", 0x366A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhkl<.f> 0,b,limm 00110bbb00101010FBBB111110111110. */
+{ "mpywhkl", 0x302A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhkl<.f><.cc> b,b,limm 00110bbb11101010FBBB1111100QQQQQ. */
+{ "mpywhkl", 0x30EA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhkl<.f><.cc> 0,limm,c 0011011011101010F111CCCCCC0QQQQQ. */
+{ "mpywhkl", 0x36EA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhkl<.f> a,limm,u6 0011011001101010F111uuuuuuAAAAAA. */
+{ "mpywhkl", 0x366A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhkl<.f> 0,limm,u6 0011011001101010F111uuuuuu111110. */
+{ "mpywhkl", 0x366A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhkl<.f><.cc> 0,limm,u6 0011011011101010F111uuuuuu1QQQQQ. */
+{ "mpywhkl", 0x36EA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhkl<.f> 0,limm,s12 0011011010101010F111ssssssSSSSSS. */
+{ "mpywhkl", 0x36AA7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhkl<.f> a,limm,limm 0011011000101010F111111110AAAAAA. */
+{ "mpywhkl", 0x362A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhkl<.f> 0,limm,limm 0011011000101010F111111110111110. */
+{ "mpywhkl", 0x362A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhkl<.f><.cc> 0,limm,limm 0011011011101010F1111111100QQQQQ. */
+{ "mpywhkl", 0x36EA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhkul<.f> a,b,c 00110bbb00101011FBBBCCCCCCAAAAAA. */
+{ "mpywhkul", 0x302B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhkul<.f> 0,b,c 00110bbb00101011FBBBCCCCCC111110. */
+{ "mpywhkul", 0x302B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhkul<.f><.cc> b,b,c 00110bbb11101011FBBBCCCCCC0QQQQQ. */
+{ "mpywhkul", 0x30EB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhkul<.f> a,b,u6 00110bbb01101011FBBBuuuuuuAAAAAA. */
+{ "mpywhkul", 0x306B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhkul<.f> 0,b,u6 00110bbb01101011FBBBuuuuuu111110. */
+{ "mpywhkul", 0x306B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhkul<.f><.cc> b,b,u6 00110bbb11101011FBBBuuuuuu1QQQQQ. */
+{ "mpywhkul", 0x30EB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhkul<.f> b,b,s12 00110bbb10101011FBBBssssssSSSSSS. */
+{ "mpywhkul", 0x30AB0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhkul<.f> a,limm,c 0011011000101011F111CCCCCCAAAAAA. */
+{ "mpywhkul", 0x362B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhkul<.f> a,b,limm 00110bbb00101011FBBB111110AAAAAA. */
+{ "mpywhkul", 0x302B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhkul<.f> 0,limm,c 0011011001101011F111CCCCCC111110. */
+{ "mpywhkul", 0x366B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhkul<.f> 0,b,limm 00110bbb00101011FBBB111110111110. */
+{ "mpywhkul", 0x302B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhkul<.f><.cc> b,b,limm 00110bbb11101011FBBB1111100QQQQQ. */
+{ "mpywhkul", 0x30EB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhkul<.f><.cc> 0,limm,c 0011011011101011F111CCCCCC0QQQQQ. */
+{ "mpywhkul", 0x36EB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhkul<.f> a,limm,u6 0011011001101011F111uuuuuuAAAAAA. */
+{ "mpywhkul", 0x366B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhkul<.f> 0,limm,u6 0011011001101011F111uuuuuu111110. */
+{ "mpywhkul", 0x366B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhkul<.f><.cc> 0,limm,u6 0011011011101011F111uuuuuu1QQQQQ. */
+{ "mpywhkul", 0x36EB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhkul<.f> 0,limm,s12 0011011010101011F111ssssssSSSSSS. */
+{ "mpywhkul", 0x36AB7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhkul<.f> a,limm,limm 0011011000101011F111111110AAAAAA. */
+{ "mpywhkul", 0x362B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhkul<.f> 0,limm,limm 0011011000101011F111111110111110. */
+{ "mpywhkul", 0x362B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhkul<.f><.cc> 0,limm,limm 0011011011101011F1111111100QQQQQ. */
+{ "mpywhkul", 0x36EB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhl<.f> a,b,c 00110bbb00011100FBBBCCCCCCAAAAAA. */
+{ "mpywhl", 0x301C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhl<.f> 0,b,c 00110bbb00011100FBBBCCCCCC111110. */
+{ "mpywhl", 0x301C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhl<.f><.cc> b,b,c 00110bbb11011100FBBBCCCCCC0QQQQQ. */
+{ "mpywhl", 0x30DC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhl<.f> a,b,u6 00110bbb01011100FBBBuuuuuuAAAAAA. */
+{ "mpywhl", 0x305C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhl<.f> 0,b,u6 00110bbb01011100FBBBuuuuuu111110. */
+{ "mpywhl", 0x305C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhl<.f><.cc> b,b,u6 00110bbb11011100FBBBuuuuuu1QQQQQ. */
+{ "mpywhl", 0x30DC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhl<.f> b,b,s12 00110bbb10011100FBBBssssssSSSSSS. */
+{ "mpywhl", 0x309C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhl<.f> a,limm,c 0011011000011100F111CCCCCCAAAAAA. */
+{ "mpywhl", 0x361C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhl<.f> a,b,limm 00110bbb00011100FBBB111110AAAAAA. */
+{ "mpywhl", 0x301C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhl<.f> 0,limm,c 0011011000011100F111CCCCCC111110. */
+{ "mpywhl", 0x361C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhl<.f> 0,b,limm 00110bbb00011100FBBB111110111110. */
+{ "mpywhl", 0x301C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhl<.f><.cc> b,b,limm 00110bbb11011100FBBB1111100QQQQQ. */
+{ "mpywhl", 0x30DC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhl<.f><.cc> 0,limm,c 0011011011011100F111CCCCCC0QQQQQ. */
+{ "mpywhl", 0x36DC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhl<.f> a,limm,u6 0011011001011100F111uuuuuuAAAAAA. */
+{ "mpywhl", 0x365C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhl<.f> 0,limm,u6 0011011001011100F111uuuuuu111110. */
+{ "mpywhl", 0x365C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhl<.f><.cc> 0,limm,u6 0011011011011100F111uuuuuu1QQQQQ. */
+{ "mpywhl", 0x36DC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhl<.f> 0,limm,s12 0011011010011100F111ssssssSSSSSS. */
+{ "mpywhl", 0x369C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhl<.f> a,limm,limm 0011011000011100F111111110AAAAAA. */
+{ "mpywhl", 0x361C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhl<.f> 0,limm,limm 0011011000011100F111111110111110. */
+{ "mpywhl", 0x361C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhl<.f><.cc> 0,limm,limm 0011011011011100F1111111100QQQQQ. */
+{ "mpywhl", 0x36DC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpywhul<.f> a,b,c 00110bbb00011110FBBBCCCCCCAAAAAA. */
+{ "mpywhul", 0x301E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* mpywhul<.f> 0,b,c 00110bbb00011110FBBBCCCCCC111110. */
+{ "mpywhul", 0x301E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* mpywhul<.f><.cc> b,b,c 00110bbb11011110FBBBCCCCCC0QQQQQ. */
+{ "mpywhul", 0x30DE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* mpywhul<.f> a,b,u6 00110bbb01011110FBBBuuuuuuAAAAAA. */
+{ "mpywhul", 0x305E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhul<.f> 0,b,u6 00110bbb01011110FBBBuuuuuu111110. */
+{ "mpywhul", 0x305E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* mpywhul<.f><.cc> b,b,u6 00110bbb11011110FBBBuuuuuu1QQQQQ. */
+{ "mpywhul", 0x30DE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhul<.f> b,b,s12 00110bbb10011110FBBBssssssSSSSSS. */
+{ "mpywhul", 0x309E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* mpywhul<.f> a,limm,c 0011011000011110F111CCCCCCAAAAAA. */
+{ "mpywhul", 0x361E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* mpywhul<.f> a,b,limm 00110bbb00011110FBBB111110AAAAAA. */
+{ "mpywhul", 0x301E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* mpywhul<.f> 0,limm,c 0011011000011110F111CCCCCC111110. */
+{ "mpywhul", 0x361E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* mpywhul<.f> 0,b,limm 00110bbb00011110FBBB111110111110. */
+{ "mpywhul", 0x301E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* mpywhul<.f><.cc> b,b,limm 00110bbb11011110FBBB1111100QQQQQ. */
+{ "mpywhul", 0x30DE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* mpywhul<.f><.cc> 0,limm,c 0011011011011110F111CCCCCC0QQQQQ. */
+{ "mpywhul", 0x36DE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* mpywhul<.f> a,limm,u6 0011011001011110F111uuuuuuAAAAAA. */
+{ "mpywhul", 0x365E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhul<.f> 0,limm,u6 0011011001011110F111uuuuuu111110. */
+{ "mpywhul", 0x365E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* mpywhul<.f><.cc> 0,limm,u6 0011011011011110F111uuuuuu1QQQQQ. */
+{ "mpywhul", 0x36DE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* mpywhul<.f> 0,limm,s12 0011011010011110F111ssssssSSSSSS. */
+{ "mpywhul", 0x369E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* mpywhul<.f> a,limm,limm 0011011000011110F111111110AAAAAA. */
+{ "mpywhul", 0x361E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhul<.f> 0,limm,limm 0011011000011110F111111110111110. */
+{ "mpywhul", 0x361E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* mpywhul<.f><.cc> 0,limm,limm 0011011011011110F1111111100QQQQQ. */
+{ "mpywhul", 0x36DE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* mpyw_s b,b,c 01111bbbccc01001. */
+{ "mpyw_s", 0x00007809, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY1E, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* mpy_s b,b,c 01111bbbccc01100. */
+{ "mpy_s", 0x0000780C, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY6E, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* msubdf<.f> a,b,c 00110bbb00010101FBBBCCCCCCAAAAAA. */
+{ "msubdf", 0x30150000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubdf<.f> 0,b,c 00110bbb00010101FBBBCCCCCC111110. */
+{ "msubdf", 0x3015003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubdf<.f><.cc> b,b,c 00110bbb11010101FBBBCCCCCC0QQQQQ. */
+{ "msubdf", 0x30D50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubdf<.f> a,b,u6 00110bbb01010101FBBBuuuuuuAAAAAA. */
+{ "msubdf", 0x30550000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubdf<.f> 0,b,u6 00110bbb01010101FBBBuuuuuu111110. */
+{ "msubdf", 0x3055003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubdf<.f><.cc> b,b,u6 00110bbb11010101FBBBuuuuuu1QQQQQ. */
+{ "msubdf", 0x30D50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubdf<.f> b,b,s12 00110bbb10010101FBBBssssssSSSSSS. */
+{ "msubdf", 0x30950000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubdf<.f> a,limm,c 0011011000010101F111CCCCCCAAAAAA. */
+{ "msubdf", 0x36157000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubdf<.f> a,b,limm 00110bbb00010101FBBB111110AAAAAA. */
+{ "msubdf", 0x30150F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubdf<.f> 0,limm,c 0011011000010101F111CCCCCC111110. */
+{ "msubdf", 0x3615703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubdf<.f> 0,b,limm 00110bbb00010101FBBB111110111110. */
+{ "msubdf", 0x30150FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubdf<.f><.cc> b,b,limm 00110bbb11010101FBBB1111100QQQQQ. */
+{ "msubdf", 0x30D50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubdf<.f><.cc> 0,limm,c 0011011011010101F111CCCCCC0QQQQQ. */
+{ "msubdf", 0x36D57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubdf<.f> a,limm,u6 0011011001010101F111uuuuuuAAAAAA. */
+{ "msubdf", 0x36557000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubdf<.f> 0,limm,u6 0011011001010101F111uuuuuu111110. */
+{ "msubdf", 0x3655703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubdf<.f><.cc> 0,limm,u6 0011011011010101F111uuuuuu1QQQQQ. */
+{ "msubdf", 0x36D57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubdf<.f> 0,limm,s12 0011011010010101F111ssssssSSSSSS. */
+{ "msubdf", 0x36957000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubdf<.f> a,limm,limm 0011011000010101F111111110AAAAAA. */
+{ "msubdf", 0x36157F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubdf<.f> 0,limm,limm 0011011000010101F111111110111110. */
+{ "msubdf", 0x36157FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubdf<.f><.cc> 0,limm,limm 0011011011010101F1111111100QQQQQ. */
+{ "msubdf", 0x36D57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubf<.f> a,b,c 00110bbb00001110FBBBCCCCCCAAAAAA. */
+{ "msubf", 0x300E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubf<.f> 0,b,c 00110bbb00001110FBBBCCCCCC111110. */
+{ "msubf", 0x300E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubf<.f><.cc> b,b,c 00110bbb11001110FBBBCCCCCC0QQQQQ. */
+{ "msubf", 0x30CE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubf<.f> a,b,u6 00110bbb01001110FBBBuuuuuuAAAAAA. */
+{ "msubf", 0x304E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubf<.f> 0,b,u6 00110bbb01001110FBBBuuuuuu111110. */
+{ "msubf", 0x304E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubf<.f><.cc> b,b,u6 00110bbb11001110FBBBuuuuuu1QQQQQ. */
+{ "msubf", 0x30CE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubf<.f> b,b,s12 00110bbb10001110FBBBssssssSSSSSS. */
+{ "msubf", 0x308E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubf<.f> a,limm,c 0011011000001110F111CCCCCCAAAAAA. */
+{ "msubf", 0x360E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubf<.f> a,b,limm 00110bbb00001110FBBB111110AAAAAA. */
+{ "msubf", 0x300E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubf<.f> 0,limm,c 0011011000001110F111CCCCCC111110. */
+{ "msubf", 0x360E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubf<.f> 0,b,limm 00110bbb00001110FBBB111110111110. */
+{ "msubf", 0x300E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubf<.f><.cc> b,b,limm 00110bbb11001110FBBB1111100QQQQQ. */
+{ "msubf", 0x30CE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubf<.f><.cc> 0,limm,c 0011011011001110F111CCCCCC0QQQQQ. */
+{ "msubf", 0x36CE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubf<.f> a,limm,u6 0011011001001110F111uuuuuuAAAAAA. */
+{ "msubf", 0x364E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubf<.f> 0,limm,u6 0011011001001110F111uuuuuu111110. */
+{ "msubf", 0x364E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubf<.f><.cc> 0,limm,u6 0011011011001110F111uuuuuu1QQQQQ. */
+{ "msubf", 0x36CE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubf<.f> 0,limm,s12 0011011010001110F111ssssssSSSSSS. */
+{ "msubf", 0x368E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubf<.f> a,limm,limm 0011011000001110F111111110AAAAAA. */
+{ "msubf", 0x360E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubf<.f> 0,limm,limm 0011011000001110F111111110111110. */
+{ "msubf", 0x360E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubf<.f><.cc> 0,limm,limm 0011011011001110F1111111100QQQQQ. */
+{ "msubf", 0x36CE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubfr<.f> a,b,c 00110bbb00001111FBBBCCCCCCAAAAAA. */
+{ "msubfr", 0x300F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubfr<.f> 0,b,c 00110bbb00001111FBBBCCCCCC111110. */
+{ "msubfr", 0x300F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubfr<.f><.cc> b,b,c 00110bbb11001111FBBBCCCCCC0QQQQQ. */
+{ "msubfr", 0x30CF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubfr<.f> a,b,u6 00110bbb01001111FBBBuuuuuuAAAAAA. */
+{ "msubfr", 0x304F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubfr<.f> 0,b,u6 00110bbb01001111FBBBuuuuuu111110. */
+{ "msubfr", 0x304F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubfr<.f><.cc> b,b,u6 00110bbb11001111FBBBuuuuuu1QQQQQ. */
+{ "msubfr", 0x30CF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubfr<.f> b,b,s12 00110bbb10001111FBBBssssssSSSSSS. */
+{ "msubfr", 0x308F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubfr<.f> a,limm,c 0011011000001111F111CCCCCCAAAAAA. */
+{ "msubfr", 0x360F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubfr<.f> a,b,limm 00110bbb00001111FBBB111110AAAAAA. */
+{ "msubfr", 0x300F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubfr<.f> 0,limm,c 0011011000001111F111CCCCCC111110. */
+{ "msubfr", 0x360F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubfr<.f> 0,b,limm 00110bbb00001111FBBB111110111110. */
+{ "msubfr", 0x300F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubfr<.f><.cc> b,b,limm 00110bbb11001111FBBB1111100QQQQQ. */
+{ "msubfr", 0x30CF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubfr<.f><.cc> 0,limm,c 0011011011001111F111CCCCCC0QQQQQ. */
+{ "msubfr", 0x36CF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubfr<.f> a,limm,u6 0011011001001111F111uuuuuuAAAAAA. */
+{ "msubfr", 0x364F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubfr<.f> 0,limm,u6 0011011001001111F111uuuuuu111110. */
+{ "msubfr", 0x364F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubfr<.f><.cc> 0,limm,u6 0011011011001111F111uuuuuu1QQQQQ. */
+{ "msubfr", 0x36CF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubfr<.f> 0,limm,s12 0011011010001111F111ssssssSSSSSS. */
+{ "msubfr", 0x368F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubfr<.f> a,limm,limm 0011011000001111F111111110AAAAAA. */
+{ "msubfr", 0x360F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubfr<.f> 0,limm,limm 0011011000001111F111111110111110. */
+{ "msubfr", 0x360F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubfr<.f><.cc> 0,limm,limm 0011011011001111F1111111100QQQQQ. */
+{ "msubfr", 0x36CF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubwhfl<.f> a,b,c 00110bbb00010100FBBBCCCCCCAAAAAA. */
+{ "msubwhfl", 0x30140000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubwhfl<.f> 0,b,c 00110bbb00010100FBBBCCCCCC111110. */
+{ "msubwhfl", 0x3014003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubwhfl<.f><.cc> b,b,c 00110bbb11010100FBBBCCCCCC0QQQQQ. */
+{ "msubwhfl", 0x30D40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubwhfl<.f> a,b,u6 00110bbb01010100FBBBuuuuuuAAAAAA. */
+{ "msubwhfl", 0x30540000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfl<.f> 0,b,u6 00110bbb01010100FBBBuuuuuu111110. */
+{ "msubwhfl", 0x3054003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfl<.f><.cc> b,b,u6 00110bbb11010100FBBBuuuuuu1QQQQQ. */
+{ "msubwhfl", 0x30D40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfl<.f> b,b,s12 00110bbb10010100FBBBssssssSSSSSS. */
+{ "msubwhfl", 0x30940000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubwhfl<.f> a,limm,c 0011011000010100F111CCCCCCAAAAAA. */
+{ "msubwhfl", 0x36147000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubwhfl<.f> a,b,limm 00110bbb00010100FBBB111110AAAAAA. */
+{ "msubwhfl", 0x30140F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubwhfl<.f> 0,limm,c 0011011000010100F111CCCCCC111110. */
+{ "msubwhfl", 0x3614703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubwhfl<.f> 0,b,limm 00110bbb00010100FBBB111110111110. */
+{ "msubwhfl", 0x30140FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubwhfl<.f><.cc> b,b,limm 00110bbb11010100FBBB1111100QQQQQ. */
+{ "msubwhfl", 0x30D40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubwhfl<.f><.cc> 0,limm,c 0011011011010100F111CCCCCC0QQQQQ. */
+{ "msubwhfl", 0x36D47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubwhfl<.f> a,limm,u6 0011011001010100F111uuuuuuAAAAAA. */
+{ "msubwhfl", 0x36547000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfl<.f> 0,limm,u6 0011011001010100F111uuuuuu111110. */
+{ "msubwhfl", 0x3654703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfl<.f><.cc> 0,limm,u6 0011011011010100F111uuuuuu1QQQQQ. */
+{ "msubwhfl", 0x36D47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfl<.f> 0,limm,s12 0011011010010100F111ssssssSSSSSS. */
+{ "msubwhfl", 0x36947000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubwhfl<.f> a,limm,limm 0011011000010100F111111110AAAAAA. */
+{ "msubwhfl", 0x36147F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfl<.f> 0,limm,limm 0011011000010100F111111110111110. */
+{ "msubwhfl", 0x36147FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfl<.f><.cc> 0,limm,limm 0011011011010100F1111111100QQQQQ. */
+{ "msubwhfl", 0x36D47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubwhflr<.f> a,b,c 00110bbb00011010FBBBCCCCCCAAAAAA. */
+{ "msubwhflr", 0x301A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubwhflr<.f> 0,b,c 00110bbb00011010FBBBCCCCCC111110. */
+{ "msubwhflr", 0x301A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubwhflr<.f><.cc> b,b,c 00110bbb11011010FBBBCCCCCC0QQQQQ. */
+{ "msubwhflr", 0x30DA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubwhflr<.f> a,b,u6 00110bbb01011010FBBBuuuuuuAAAAAA. */
+{ "msubwhflr", 0x305A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhflr<.f> 0,b,u6 00110bbb01011010FBBBuuuuuu111110. */
+{ "msubwhflr", 0x305A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhflr<.f><.cc> b,b,u6 00110bbb11011010FBBBuuuuuu1QQQQQ. */
+{ "msubwhflr", 0x30DA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhflr<.f> b,b,s12 00110bbb10011010FBBBssssssSSSSSS. */
+{ "msubwhflr", 0x309A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubwhflr<.f> a,limm,c 0011011000011010F111CCCCCCAAAAAA. */
+{ "msubwhflr", 0x361A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubwhflr<.f> a,b,limm 00110bbb00011010FBBB111110AAAAAA. */
+{ "msubwhflr", 0x301A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubwhflr<.f> 0,limm,c 0011011000011010F111CCCCCC111110. */
+{ "msubwhflr", 0x361A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubwhflr<.f> 0,b,limm 00110bbb00011010FBBB111110111110. */
+{ "msubwhflr", 0x301A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubwhflr<.f><.cc> b,b,limm 00110bbb11011010FBBB1111100QQQQQ. */
+{ "msubwhflr", 0x30DA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubwhflr<.f><.cc> 0,limm,c 0011011011011010F111CCCCCC0QQQQQ. */
+{ "msubwhflr", 0x36DA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubwhflr<.f> a,limm,u6 0011011001011010F111uuuuuuAAAAAA. */
+{ "msubwhflr", 0x365A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhflr<.f> 0,limm,u6 0011011001011010F111uuuuuu111110. */
+{ "msubwhflr", 0x365A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhflr<.f><.cc> 0,limm,u6 0011011011011010F111uuuuuu1QQQQQ. */
+{ "msubwhflr", 0x36DA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhflr<.f> 0,limm,s12 0011011010011010F111ssssssSSSSSS. */
+{ "msubwhflr", 0x369A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubwhflr<.f> a,limm,limm 0011011000011010F111111110AAAAAA. */
+{ "msubwhflr", 0x361A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhflr<.f> 0,limm,limm 0011011000011010F111111110111110. */
+{ "msubwhflr", 0x361A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhflr<.f><.cc> 0,limm,limm 0011011011011010F1111111100QQQQQ. */
+{ "msubwhflr", 0x36DA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubwhfm<.f> a,b,c 00110bbb00101100FBBBCCCCCCAAAAAA. */
+{ "msubwhfm", 0x302C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubwhfm<.f> 0,b,c 00110bbb00101100FBBBCCCCCC111110. */
+{ "msubwhfm", 0x302C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubwhfm<.f><.cc> b,b,c 00110bbb11101100FBBBCCCCCC0QQQQQ. */
+{ "msubwhfm", 0x30EC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubwhfm<.f> a,b,u6 00110bbb01101100FBBBuuuuuuAAAAAA. */
+{ "msubwhfm", 0x306C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfm<.f> 0,b,u6 00110bbb01101100FBBBuuuuuu111110. */
+{ "msubwhfm", 0x306C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfm<.f><.cc> b,b,u6 00110bbb11101100FBBBuuuuuu1QQQQQ. */
+{ "msubwhfm", 0x30EC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfm<.f> b,b,s12 00110bbb10101100FBBBssssssSSSSSS. */
+{ "msubwhfm", 0x30AC0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubwhfm<.f> a,limm,c 0011011000101100F111CCCCCCAAAAAA. */
+{ "msubwhfm", 0x362C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubwhfm<.f> a,b,limm 00110bbb00101100FBBB111110AAAAAA. */
+{ "msubwhfm", 0x302C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubwhfm<.f> 0,limm,c 0011011001101100F111CCCCCC111110. */
+{ "msubwhfm", 0x366C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubwhfm<.f> 0,b,limm 00110bbb00101100FBBB111110111110. */
+{ "msubwhfm", 0x302C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubwhfm<.f><.cc> b,b,limm 00110bbb11101100FBBB1111100QQQQQ. */
+{ "msubwhfm", 0x30EC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubwhfm<.f><.cc> 0,limm,c 0011011011101100F111CCCCCC0QQQQQ. */
+{ "msubwhfm", 0x36EC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubwhfm<.f> a,limm,u6 0011011001101100F111uuuuuuAAAAAA. */
+{ "msubwhfm", 0x366C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfm<.f> 0,limm,u6 0011011001101100F111uuuuuu111110. */
+{ "msubwhfm", 0x366C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfm<.f><.cc> 0,limm,u6 0011011011101100F111uuuuuu1QQQQQ. */
+{ "msubwhfm", 0x36EC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfm<.f> 0,limm,s12 0011011010101100F111ssssssSSSSSS. */
+{ "msubwhfm", 0x36AC7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubwhfm<.f> a,limm,limm 0011011000101100F111111110AAAAAA. */
+{ "msubwhfm", 0x362C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfm<.f> 0,limm,limm 0011011000101100F111111110111110. */
+{ "msubwhfm", 0x362C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfm<.f><.cc> 0,limm,limm 0011011011101100F1111111100QQQQQ. */
+{ "msubwhfm", 0x36EC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* msubwhfmr<.f> a,b,c 00110bbb00101101FBBBCCCCCCAAAAAA. */
+{ "msubwhfmr", 0x302D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { C_F }},
+
+/* msubwhfmr<.f> 0,b,c 00110bbb00101101FBBBCCCCCC111110. */
+{ "msubwhfmr", 0x302D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { C_F }},
+
+/* msubwhfmr<.f><.cc> b,b,c 00110bbb11101101FBBBCCCCCC0QQQQQ. */
+{ "msubwhfmr", 0x30ED0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* msubwhfmr<.f> a,b,u6 00110bbb01101101FBBBuuuuuuAAAAAA. */
+{ "msubwhfmr", 0x306D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfmr<.f> 0,b,u6 00110bbb01101101FBBBuuuuuu111110. */
+{ "msubwhfmr", 0x306D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* msubwhfmr<.f><.cc> b,b,u6 00110bbb11101101FBBBuuuuuu1QQQQQ. */
+{ "msubwhfmr", 0x30ED0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfmr<.f> b,b,s12 00110bbb10101101FBBBssssssSSSSSS. */
+{ "msubwhfmr", 0x30AD0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* msubwhfmr<.f> a,limm,c 0011011000101101F111CCCCCCAAAAAA. */
+{ "msubwhfmr", 0x362D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* msubwhfmr<.f> a,b,limm 00110bbb00101101FBBB111110AAAAAA. */
+{ "msubwhfmr", 0x302D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* msubwhfmr<.f> 0,limm,c 0011011001101101F111CCCCCC111110. */
+{ "msubwhfmr", 0x366D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* msubwhfmr<.f> 0,b,limm 00110bbb00101101FBBB111110111110. */
+{ "msubwhfmr", 0x302D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* msubwhfmr<.f><.cc> b,b,limm 00110bbb11101101FBBB1111100QQQQQ. */
+{ "msubwhfmr", 0x30ED0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* msubwhfmr<.f><.cc> 0,limm,c 0011011011101101F111CCCCCC0QQQQQ. */
+{ "msubwhfmr", 0x36ED7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* msubwhfmr<.f> a,limm,u6 0011011001101101F111uuuuuuAAAAAA. */
+{ "msubwhfmr", 0x366D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfmr<.f> 0,limm,u6 0011011001101101F111uuuuuu111110. */
+{ "msubwhfmr", 0x366D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* msubwhfmr<.f><.cc> 0,limm,u6 0011011011101101F111uuuuuu1QQQQQ. */
+{ "msubwhfmr", 0x36ED7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* msubwhfmr<.f> 0,limm,s12 0011011010101101F111ssssssSSSSSS. */
+{ "msubwhfmr", 0x36AD7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* msubwhfmr<.f> a,limm,limm 0011011000101101F111111110AAAAAA. */
+{ "msubwhfmr", 0x362D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfmr<.f> 0,limm,limm 0011011000101101F111111110111110. */
+{ "msubwhfmr", 0x362D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* msubwhfmr<.f><.cc> 0,limm,limm 0011011011101101F1111111100QQQQQ. */
+{ "msubwhfmr", 0x36ED7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* neg<.f> a,b 00100bbb01001110FBBB000000AAAAAA. */
+{ "neg", 0x204E0000, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB }, { C_F }},
+
+/* neg<.f><.cc> b,b 00100bbb11001110FBBB0000001QQQQQ. */
+{ "neg", 0x20CE0020, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup }, { C_F, C_CC }},
+
+/* neg<.f> a,limm 0010011001001110F111000000AAAAAA. */
+{ "neg", 0x264E7000, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM }, { C_F }},
+
+/* neg<.f><.cc> 0,limm 0010011011001110F1110000001QQQQQ. */
+{ "neg", 0x26CE7020, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F, C_CC }},
+
+/* negs<.f> b,c 00101bbb00101111FBBBCCCCCC000111. */
+{ "negs", 0x282F0007, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* negs<.f> 0,c 0010111000101111F111CCCCCC000111. */
+{ "negs", 0x2E2F7007, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* negs<.f> b,u6 00101bbb01101111FBBBuuuuuu000111. */
+{ "negs", 0x286F0007, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* negs<.f> 0,u6 0010111001101111F111uuuuuu000111. */
+{ "negs", 0x2E6F7007, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* negs<.f> b,limm 00101bbb00101111FBBB111110000111. */
+{ "negs", 0x282F0F87, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* negs<.f> 0,limm 0010111000101111F111111110000111. */
+{ "negs", 0x2E2F7F87, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* negsh<.f> b,c 00101bbb00101111FBBBCCCCCC000110. */
+{ "negsh", 0x282F0006, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* negsh<.f> 0,c 0010111000101111F111CCCCCC000110. */
+{ "negsh", 0x2E2F7006, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* negsh<.f> b,u6 00101bbb01101111FBBBuuuuuu000110. */
+{ "negsh", 0x286F0006, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* negsh<.f> 0,u6 0010111001101111F111uuuuuu000110. */
+{ "negsh", 0x2E6F7006, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* negsh<.f> b,limm 00101bbb00101111FBBB111110000110. */
+{ "negsh", 0x282F0F86, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* negsh<.f> 0,limm 0010111000101111F111111110000110. */
+{ "negsh", 0x2E2F7F86, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* neg_s b,c 01111bbbccc10011. */
+{ "neg_s", 0x00007813, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* nop_s 0111100011100000. */
+{ "nop_s", 0x000078E0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* norm<.f> b,c 00101bbb00101111FBBBCCCCCC000001. */
+{ "norm", 0x282F0001, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, RC }, { C_F }},
+
+/* norm<.f> 0,c 0010111000101111F111CCCCCC000001. */
+{ "norm", 0x2E2F7001, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, RC }, { C_F }},
+
+/* norm<.f> b,u6 00101bbb01101111FBBBuuuuuu000001. */
+{ "norm", 0x286F0001, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, UIMM6_20 }, { C_F }},
+
+/* norm<.f> 0,u6 0010111001101111F111uuuuuu000001. */
+{ "norm", 0x2E6F7001, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, UIMM6_20 }, { C_F }},
+
+/* norm<.f> b,limm 00101bbb00101111FBBB111110000001. */
+{ "norm", 0x282F0F81, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, LIMM }, { C_F }},
+
+/* norm<.f> 0,limm 0010111000101111F111111110000001. */
+{ "norm", 0x2E2F7F81, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, LIMM }, { C_F }},
+
+/* normacc b,c 00101bbb001011110BBBCCCCCC011001. */
+{ "normacc", 0x282F0019, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* normacc 0,c 00101110001011110111CCCCCC011001. */
+{ "normacc", 0x2E2F7019, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* normacc b,u6 00101bbb011011110BBBuuuuuu011001. */
+{ "normacc", 0x286F0019, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* normacc 0,u6 00101110011011110111uuuuuu011001. */
+{ "normacc", 0x2E6F7019, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* normacc b,limm 00101bbb001011110BBB111110011001. */
+{ "normacc", 0x282F0F99, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* normacc 0,limm 00101110001011110111111110011001. */
+{ "normacc", 0x2E2F7F99, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* normh<.f> b,c 00101bbb00101111FBBBCCCCCC001000. */
+{ "normh", 0x282F0008, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, RC }, { C_F }},
+
+/* normh<.f> 0,c 0010111000101111F111CCCCCC001000. */
+{ "normh", 0x2E2F7008, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, RC }, { C_F }},
+
+/* normh<.f> b,u6 00101bbb01101111FBBBuuuuuu001000. */
+{ "normh", 0x286F0008, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, UIMM6_20 }, { C_F }},
+
+/* normh<.f> 0,u6 0010111001101111F111uuuuuu001000. */
+{ "normh", 0x2E6F7008, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, UIMM6_20 }, { C_F }},
+
+/* normh<.f> b,limm 00101bbb00101111FBBB111110001000. */
+{ "normh", 0x282F0F88, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { RB, LIMM }, { C_F }},
+
+/* normh<.f> 0,limm 0010111000101111F111111110001000. */
+{ "normh", 0x2E2F7F88, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, BTSCN, { ZA, LIMM }, { C_F }},
+
+/* norml<.f> RB,RC 01011bbb00101111FBBBcccccc100001. */
+{ "norml", 0x582F0021, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* norml<.f> 0,RC 0101111000101111F111cccccc100001. */
+{ "norml", 0x5E2F7021, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* norml<.f> RB,u6 01011bbb01101111FBBBuuuuuu100001. */
+{ "norml", 0x586F0021, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* norml<.f> 0,u6 0101111001101111F111uuuuuu100001. */
+{ "norml", 0x5E6F7021, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* norml<.f> RB,ximm 01011bbb00101111FBBB111100100001. */
+{ "norml", 0x582F0F21, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* norml<.f> 0,ximm 0101111000101111F111111100100001. */
+{ "norml", 0x5E2F7F21, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* norml<.f> RB,limm 01011bbb00101111FBBB111110100001. */
+{ "norml", 0x582F0FA1, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* norml<.f> 0,limm 0101111000101111F111111110100001. */
+{ "norml", 0x5E2F7FA1, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* not<.f> b,c 00100bbb00101111FBBBCCCCCC001010. */
+{ "not", 0x202F000A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* not<.f> 0,c 0010011000101111F111CCCCCC001010. */
+{ "not", 0x262F700A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* not<.f> b,u6 00100bbb01101111FBBBuuuuuu001010. */
+{ "not", 0x206F000A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* not<.f> 0,u6 0010011001101111F111uuuuuu001010. */
+{ "not", 0x266F700A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* not<.f> b,limm 00100bbb00101111FBBB111110001010. */
+{ "not", 0x202F0F8A, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* not<.f> 0,limm 0010011000101111F111111110001010. */
+{ "not", 0x262F7F8A, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* notl<.f> RB,RC 01011bbb00101111FBBBcccccc001010. */
+{ "notl", 0x582F000A, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* notl<.f> 0,RC 0101111000101111F111cccccc001010. */
+{ "notl", 0x5E2F700A, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* notl<.f> RB,u6 01011bbb01101111FBBBuuuuuu001010. */
+{ "notl", 0x586F000A, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* notl<.f> 0,u6 0101111001101111F111uuuuuu001010. */
+{ "notl", 0x5E6F700A, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* notl<.f> RB,ximm 01011bbb00101111FBBB111100001010. */
+{ "notl", 0x582F0F0A, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* notl<.f> 0,ximm 0101111000101111F111111100001010. */
+{ "notl", 0x5E2F7F0A, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* notl<.f> RB,limm 01011bbb00101111FBBB111110001010. */
+{ "notl", 0x582F0F8A, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* notl<.f> 0,limm 0101111000101111F111111110001010. */
+{ "notl", 0x5E2F7F8A, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* not_s b,c 01111bbbccc10010. */
+{ "not_s", 0x00007812, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RC_S }, { 0 }},
+
+/* or<.f> a,b,c 00100bbb00000101FBBBCCCCCCAAAAAA. */
+{ "or", 0x20050000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* or<.f> 0,b,c 00100bbb00000101FBBBCCCCCC111110. */
+{ "or", 0x2005003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* or<.f><.cc> b,b,c 00100bbb11000101FBBBCCCCCC0QQQQQ. */
+{ "or", 0x20C50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* or<.f> a,b,u6 00100bbb01000101FBBBuuuuuuAAAAAA. */
+{ "or", 0x20450000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* or<.f> 0,b,u6 00100bbb01000101FBBBuuuuuu111110. */
+{ "or", 0x2045003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* or<.f><.cc> b,b,u6 00100bbb11000101FBBBuuuuuu1QQQQQ. */
+{ "or", 0x20C50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* or<.f> b,b,s12 00100bbb10000101FBBBssssssSSSSSS. */
+{ "or", 0x20850000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* or<.f> a,limm,c 0010011000000101F111CCCCCCAAAAAA. */
+{ "or", 0x26057000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* or<.f> a,b,limm 00100bbb00000101FBBB111110AAAAAA. */
+{ "or", 0x20050F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* or<.f> 0,limm,c 0010011000000101F111CCCCCC111110. */
+{ "or", 0x2605703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* or<.f> 0,b,limm 00100bbb00000101FBBB111110111110. */
+{ "or", 0x20050FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* or<.f><.cc> b,b,limm 00100bbb11000101FBBB1111100QQQQQ. */
+{ "or", 0x20C50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* or<.f><.cc> 0,limm,c 0010011011000101F111CCCCCC0QQQQQ. */
+{ "or", 0x26C57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* or<.f> a,limm,u6 0010011001000101F111uuuuuuAAAAAA. */
+{ "or", 0x26457000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* or<.f> 0,limm,u6 0010011001000101F111uuuuuu111110. */
+{ "or", 0x2645703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* or<.f><.cc> 0,limm,u6 0010011011000101F111uuuuuu1QQQQQ. */
+{ "or", 0x26C57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* or<.f> 0,limm,s12 0010011010000101F111ssssssSSSSSS. */
+{ "or", 0x26857000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* or<.f> a,limm,limm 0010011000000101F111111110AAAAAA. */
+{ "or", 0x26057F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* or<.f> 0,limm,limm 0010011000000101F111111110111110. */
+{ "or", 0x26057FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* or<.f><.cc> 0,limm,limm 0010011011000101F1111111100QQQQQ. */
+{ "or", 0x26C57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* orl<.f> RA,RB,RC 01011bbb00000101FBBBccccccaaaaaa. */
+{ "orl", 0x58050000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* orl<.f> 0,RB,RC 01011bbb00000101FBBBcccccc111110. */
+{ "orl", 0x5805003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* orl<.f><.cc> RB,RB,RC 01011bbb11000101FBBBcccccc0QQQQQ. */
+{ "orl", 0x58C50000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* orl<.f> RA,RB,u6 01011bbb01000101FBBBuuuuuuaaaaaa. */
+{ "orl", 0x58450000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* orl<.f> 0,RB,u6 01011bbb01000101FBBBuuuuuu111110. */
+{ "orl", 0x5845003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* orl<.f><.cc> RB,RB,u6 01011bbb11000101FBBBuuuuuu1QQQQQ. */
+{ "orl", 0x58C50020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* orl<.f> RB,RB,s12 01011bbb10000101FBBBssssssSSSSSS. */
+{ "orl", 0x58850000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* orl<.f> RA,ximm,RC 0101110000000101F111ccccccaaaaaa. */
+{ "orl", 0x5C057000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* orl<.f> RA,RB,ximm 01011bbb00000101FBBB111100aaaaaa. */
+{ "orl", 0x58050F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* orl<.f> 0,ximm,RC 0101110000000101F111cccccc111110. */
+{ "orl", 0x5C05703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* orl<.f> 0,RB,ximm 01011bbb00000101FBBB111100111110. */
+{ "orl", 0x58050F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* orl<.f><.cc> 0,ximm,RC 0101110011000101F111cccccc0QQQQQ. */
+{ "orl", 0x5CC57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* orl<.f><.cc> RB,RB,ximm 01011bbb11000101FBBB1111000QQQQQ. */
+{ "orl", 0x58C50F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* orl<.f> RA,ximm,u6 0101110001000101F111uuuuuuaaaaaa. */
+{ "orl", 0x5C457000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* orl<.f> 0,ximm,u6 0101110001000101F111uuuuuu111110. */
+{ "orl", 0x5C45703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* orl<.f><.cc> 0,ximm,u6 0101110011000101F111uuuuuu1QQQQQ. */
+{ "orl", 0x5CC57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* orl<.f> RA,limm,RC 0101111000000101F111ccccccaaaaaa. */
+{ "orl", 0x5E057000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* orl<.f> RA,RB,limm 01011bbb00000101FBBB111110aaaaaa. */
+{ "orl", 0x58050F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* orl<.f> 0,limm,RC 0101111000000101F111cccccc111110. */
+{ "orl", 0x5E05703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* orl<.f> 0,RB,limm 01011bbb00000101FBBB111110111110. */
+{ "orl", 0x58050FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* orl<.f><.cc> 0,limm,RC 0101111011000101F111cccccc0QQQQQ. */
+{ "orl", 0x5EC57000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* orl<.f><.cc> RB,RB,limm 01011bbb11000101FBBB1111100QQQQQ. */
+{ "orl", 0x58C50F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* orl<.f> RA,limm,u6 0101111001000101F111uuuuuuaaaaaa. */
+{ "orl", 0x5E457000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* orl<.f> 0,limm,u6 0101111001000101F111uuuuuu111110. */
+{ "orl", 0x5E45703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* orl<.f><.cc> 0,limm,u6 0101111011000101F111uuuuuu1QQQQQ. */
+{ "orl", 0x5EC57020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* orl<.f> 0,ximm,s12 0101110010000101F111ssssssSSSSSS. */
+{ "orl", 0x5C857000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* orl<.f> 0,limm,s12 0101111010000101F111ssssssSSSSSS. */
+{ "orl", 0x5E857000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* orl<.f> RA,ximm,ximm 0101110000000101F111111100aaaaaa. */
+{ "orl", 0x5C057F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* orl<.f> 0,ximm,ximm 0101110000000101F111111100111110. */
+{ "orl", 0x5C057F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* orl<.f><.cc> 0,ximm,ximm 0101110011000101F1111111000QQQQQ. */
+{ "orl", 0x5CC57F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* orl<.f> RA,limm,limm 0101111000000101F111111110aaaaaa. */
+{ "orl", 0x5E057F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* orl<.f> 0,limm,limm 0101111000000101F111111110111110. */
+{ "orl", 0x5E057FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* orl<.f><.cc> 0,limm,limm 0101111011000101F1111111100QQQQQ. */
+{ "orl", 0x5EC57F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* orl_s b,b,c 01111bbbccc10111. */
+{ "orl_s", 0x00007817, 0x0000F81F, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* orl_s h,h,ximm 01110000hhh110HH. */
+{ "orl_s", 0x00007018, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, RH_Sdup, LO32 }, { 0 }},
+
+/* orl_s h,PCL,ximm 01110010hhh110HH. */
+{ "orl_s", 0x00007218, 0x0000FF1C, ARC_OPCODE_ARC64, ARITH, NONE, { RH_S, PCL_S, LO32 }, { 0 }},
+
+/* or_s b,b,c 01111bbbccc00101. */
+{ "or_s", 0x00007805, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* popdl_s b 11000bbb1101BBB1. */
+{ "popdl_s", 0x0000C0D1, 0x0000F8F1, ARC_OPCODE_ARC64, ARITH, NONE, { RBB_S }, { 0 }},
+
+/* popl_s b 11000bbb1100BBB1. */
+{ "popl_s", 0x0000C0C1, 0x0000F8F1, ARC_OPCODE_ARC64, ARITH, NONE, { RBB_S }, { 0 }},
+
+/* prealloc<.aa> b,c 00100bbbaa1100010BBBCCCCCC111110. */
+{ "prealloc", 0x2031003E, 0xF83F803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, RC, BRAKETdup }, { C_AA8 }},
+
+/* prealloc<.aa> b,s9 00010bbbssssssssSBBB0aa001111110. */
+{ "prealloc", 0x1000007E, 0xF80009FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA21 }},
+
+/* prealloc<.aa> b,limm 00100bbbaa1100010BBB111110111110. */
+{ "prealloc", 0x20310FBE, 0xF83F8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, LIMM, BRAKETdup }, { C_AA8 }},
+
+/* prealloc limm,c 00100110RR1100010111CCCCCC111110. */
+{ "prealloc", 0x2631703E, 0xFF3FF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, RC, BRAKETdup }, { 0 }},
+
+/* prealloc limm 000101100000000001110RR001111110. */
+{ "prealloc", 0x1600707E, 0xFFFFF9FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* prealloc limm,s9 00010110ssssssssS1110RR001111110. */
+{ "prealloc", 0x1600707E, 0xFF0079FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, SIMM9_8, BRAKETdup }, { 0 }},
+
+/* prefetch<.aa> b,c 00100bbbaa1100000BBBCCCCCC111110. */
+{ "prefetch", 0x2030003E, 0xF83F803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, RC, BRAKETdup }, { C_AA8 }},
+
+/* prefetch<.aa> b,s9 00010bbbssssssssSBBB0aa000111110. */
+{ "prefetch", 0x1000003E, 0xF80009FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA21 }},
+
+/* prefetch<.aa> b,limm 00100bbbaa1100000BBB111110111110. */
+{ "prefetch", 0x20300FBE, 0xF83F8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, LIMM, BRAKETdup }, { C_AA8 }},
+
+/* prefetch limm,c 00100110RR1100000111CCCCCC111110. */
+{ "prefetch", 0x2630703E, 0xFF3FF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, RC, BRAKETdup }, { 0 }},
+
+/* prefetch limm 000101100000000001110RR000111110. */
+{ "prefetch", 0x1600703E, 0xFFFFF9FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* prefetch limm,s9 00010110ssssssssS1110RR000111110. */
+{ "prefetch", 0x1600703E, 0xFF0079FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, SIMM9_8, BRAKETdup }, { 0 }},
+
+/* prefetchw<.aa> b,c 00100bbbaa1100001BBBCCCCCC111110. */
+{ "prefetchw", 0x2030803E, 0xF83F803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, RC, BRAKETdup }, { C_AA8 }},
+
+/* prefetchw<.aa> b,s9 00010bbbssssssssSBBB1aa000111110. */
+{ "prefetchw", 0x1000083E, 0xF80009FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA21 }},
+
+/* prefetchw<.aa> b,limm 00100bbbaa1100001BBB111110111110. */
+{ "prefetchw", 0x20308FBE, 0xF83F8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, RB, LIMM, BRAKETdup }, { C_AA8 }},
+
+/* prefetchw limm,c 00100110RR1100001111CCCCCC111110. */
+{ "prefetchw", 0x2630F03E, 0xFF3FF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, RC, BRAKETdup }, { 0 }},
+
+/* prefetchw limm 000101100000000001111RR000111110. */
+{ "prefetchw", 0x1600783E, 0xFFFFF9FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* prefetchw limm,s9 00010110ssssssssS1111RR000111110. */
+{ "prefetchw", 0x1600783E, 0xFF0079FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { BRAKET, LIMM, SIMM9_8, BRAKETdup }, { 0 }},
+
+/* pushdl_s b 11000bbb1111BBB1. */
+{ "pushdl_s", 0x0000C0F1, 0x0000F8F1, ARC_OPCODE_ARC64, ARITH, NONE, { RBB_S }, { 0 }},
+
+/* pushl_s b 11000bbb1110BBB1. */
+{ "pushl_s", 0x0000C0E1, 0x0000F8F1, ARC_OPCODE_ARC64, ARITH, NONE, { RBB_S }, { 0 }},
+
+/* qmach<.f> a,b,c 00101bbb00110100FBBBCCCCCCAAAAAA. */
+{ "qmach", 0x28340000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmach<.f> 0,b,c 00101bbb00110100FBBBCCCCCC111110. */
+{ "qmach", 0x2834003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmach<.f><.cc> b,b,c 00101bbb11110100FBBBCCCCCC0QQQQQ. */
+{ "qmach", 0x28F40000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmach<.f> a,b,u6 00101bbb01110100FBBBuuuuuuAAAAAA. */
+{ "qmach", 0x28740000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmach<.f> 0,b,u6 00101bbb01110100FBBBuuuuuu111110. */
+{ "qmach", 0x2874003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmach<.f><.cc> b,b,u6 00101bbb11110100FBBBuuuuuu1QQQQQ. */
+{ "qmach", 0x28F40020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmach<.f> b,b,s12 00101bbb10110100FBBBssssssSSSSSS. */
+{ "qmach", 0x28B40000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmach<.f> a,limm,c 0010111000110100F111CCCCCCAAAAAA. */
+{ "qmach", 0x2E347000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmach<.f> a,b,limm 00101bbb00110100FBBB111110AAAAAA. */
+{ "qmach", 0x28340F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmach<.f> 0,limm,c 0010111000110100F111CCCCCC111110. */
+{ "qmach", 0x2E34703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmach<.f> 0,b,limm 00101bbb00110100FBBB111110111110. */
+{ "qmach", 0x28340FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmach<.f><.cc> b,b,limm 00101bbb11110100FBBB1111100QQQQQ. */
+{ "qmach", 0x28F40F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmach<.f><.cc> 0,limm,c 0010111011110100F111CCCCCC0QQQQQ. */
+{ "qmach", 0x2EF47000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmach<.f> a,limm,u6 0010111001110100F111uuuuuuAAAAAA. */
+{ "qmach", 0x2E747000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmach<.f> 0,limm,u6 0010111001110100F111uuuuuu111110. */
+{ "qmach", 0x2E74703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmach<.f><.cc> 0,limm,u6 0010111011110100F111uuuuuu1QQQQQ. */
+{ "qmach", 0x2EF47020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmach<.f> 0,limm,s12 0010111010110100F111ssssssSSSSSS. */
+{ "qmach", 0x2EB47000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmach<.f> a,limm,limm 0010111000110100F111111110AAAAAA. */
+{ "qmach", 0x2E347F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmach<.f> 0,limm,limm 0010111000110100F111111110111110. */
+{ "qmach", 0x2E347FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmach<.f><.cc> 0,limm,limm 0010111011110100F1111111100QQQQQ. */
+{ "qmach", 0x2EF47F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* qmachf<.f> a,b,c 00110bbb00110101FBBBCCCCCCAAAAAA. */
+{ "qmachf", 0x30350000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmachf<.f> 0,b,c 00110bbb00110101FBBBCCCCCC111110. */
+{ "qmachf", 0x3035003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmachf<.f><.cc> b,b,c 00110bbb11110101FBBBCCCCCC0QQQQQ. */
+{ "qmachf", 0x30F50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmachf<.f> a,b,u6 00110bbb01110101FBBBuuuuuuAAAAAA. */
+{ "qmachf", 0x30750000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmachf<.f> 0,b,u6 00110bbb01110101FBBBuuuuuu111110. */
+{ "qmachf", 0x3075003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmachf<.f><.cc> b,b,u6 00110bbb11110101FBBBuuuuuu1QQQQQ. */
+{ "qmachf", 0x30F50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmachf<.f> b,b,s12 00110bbb10110101FBBBssssssSSSSSS. */
+{ "qmachf", 0x30B50000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmachf<.f> a,limm,c 0011011000110101F111CCCCCCAAAAAA. */
+{ "qmachf", 0x36357000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmachf<.f> a,b,limm 00110bbb00110101FBBB111110AAAAAA. */
+{ "qmachf", 0x30350F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmachf<.f> 0,limm,c 0011011000110101F111CCCCCC111110. */
+{ "qmachf", 0x3635703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmachf<.f> 0,b,limm 00110bbb00110101FBBB111110111110. */
+{ "qmachf", 0x30350FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmachf<.f><.cc> b,b,limm 00110bbb11110101FBBB1111100QQQQQ. */
+{ "qmachf", 0x30F50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmachf<.f><.cc> 0,limm,c 0011011011110101F111CCCCCC0QQQQQ. */
+{ "qmachf", 0x36F57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmachf<.f> a,limm,u6 0011011001110101F111uuuuuuAAAAAA. */
+{ "qmachf", 0x36757000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmachf<.f> 0,limm,u6 0011011001110101F111uuuuuu111110. */
+{ "qmachf", 0x3675703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmachf<.f><.cc> 0,limm,u6 0011011011110101F111uuuuuu1QQQQQ. */
+{ "qmachf", 0x36F57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmachf<.f> 0,limm,s12 0011011010110101F111ssssssSSSSSS. */
+{ "qmachf", 0x36B57000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmachf<.f> a,limm,limm 0011011000110101F111111110AAAAAA. */
+{ "qmachf", 0x36357F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmachf<.f> 0,limm,limm 0011011000110101F111111110111110. */
+{ "qmachf", 0x36357FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmachf<.f><.cc> 0,limm,limm 0011011011110101F1111111100QQQQQ. */
+{ "qmachf", 0x36F57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* qmachu<.f> a,b,c 00101bbb00110101FBBBCCCCCCAAAAAA. */
+{ "qmachu", 0x28350000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmachu<.f> 0,b,c 00101bbb00110101FBBBCCCCCC111110. */
+{ "qmachu", 0x2835003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmachu<.f><.cc> b,b,c 00101bbb11110101FBBBCCCCCC0QQQQQ. */
+{ "qmachu", 0x28F50000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmachu<.f> a,b,u6 00101bbb01110101FBBBuuuuuuAAAAAA. */
+{ "qmachu", 0x28750000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmachu<.f> 0,b,u6 00101bbb01110101FBBBuuuuuu111110. */
+{ "qmachu", 0x2875003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmachu<.f><.cc> b,b,u6 00101bbb11110101FBBBuuuuuu1QQQQQ. */
+{ "qmachu", 0x28F50020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmachu<.f> b,b,s12 00101bbb10110101FBBBssssssSSSSSS. */
+{ "qmachu", 0x28B50000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmachu<.f> a,limm,c 0010111000110101F111CCCCCCAAAAAA. */
+{ "qmachu", 0x2E357000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmachu<.f> a,b,limm 00101bbb00110101FBBB111110AAAAAA. */
+{ "qmachu", 0x28350F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmachu<.f> 0,limm,c 0010111000110101F111CCCCCC111110. */
+{ "qmachu", 0x2E35703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmachu<.f> 0,b,limm 00101bbb00110101FBBB111110111110. */
+{ "qmachu", 0x28350FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmachu<.f><.cc> b,b,limm 00101bbb11110101FBBB1111100QQQQQ. */
+{ "qmachu", 0x28F50F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmachu<.f><.cc> 0,limm,c 0010111011110101F111CCCCCC0QQQQQ. */
+{ "qmachu", 0x2EF57000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmachu<.f> a,limm,u6 0010111001110101F111uuuuuuAAAAAA. */
+{ "qmachu", 0x2E757000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmachu<.f> 0,limm,u6 0010111001110101F111uuuuuu111110. */
+{ "qmachu", 0x2E75703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmachu<.f><.cc> 0,limm,u6 0010111011110101F111uuuuuu1QQQQQ. */
+{ "qmachu", 0x2EF57020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmachu<.f> 0,limm,s12 0010111010110101F111ssssssSSSSSS. */
+{ "qmachu", 0x2EB57000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmachu<.f> a,limm,limm 0010111000110101F111111110AAAAAA. */
+{ "qmachu", 0x2E357F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmachu<.f> 0,limm,limm 0010111000110101F111111110111110. */
+{ "qmachu", 0x2E357FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmachu<.f><.cc> 0,limm,limm 0010111011110101F1111111100QQQQQ. */
+{ "qmachu", 0x2EF57F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* qmpyh<.f> a,b,c 00101bbb00110000FBBBCCCCCCAAAAAA. */
+{ "qmpyh", 0x28300000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmpyh<.f> 0,b,c 00101bbb00110000FBBBCCCCCC111110. */
+{ "qmpyh", 0x2830003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmpyh<.f><.cc> b,b,c 00101bbb11110000FBBBCCCCCC0QQQQQ. */
+{ "qmpyh", 0x28F00000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmpyh<.f> a,b,u6 00101bbb01110000FBBBuuuuuuAAAAAA. */
+{ "qmpyh", 0x28700000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyh<.f> 0,b,u6 00101bbb01110000FBBBuuuuuu111110. */
+{ "qmpyh", 0x2870003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyh<.f><.cc> b,b,u6 00101bbb11110000FBBBuuuuuu1QQQQQ. */
+{ "qmpyh", 0x28F00020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyh<.f> b,b,s12 00101bbb10110000FBBBssssssSSSSSS. */
+{ "qmpyh", 0x28B00000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmpyh<.f> a,limm,c 0010111000110000F111CCCCCCAAAAAA. */
+{ "qmpyh", 0x2E307000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmpyh<.f> a,b,limm 00101bbb00110000FBBB111110AAAAAA. */
+{ "qmpyh", 0x28300F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmpyh<.f> 0,limm,c 0010111000110000F111CCCCCC111110. */
+{ "qmpyh", 0x2E30703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmpyh<.f> 0,b,limm 00101bbb00110000FBBB111110111110. */
+{ "qmpyh", 0x28300FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmpyh<.f><.cc> b,b,limm 00101bbb11110000FBBB1111100QQQQQ. */
+{ "qmpyh", 0x28F00F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmpyh<.f><.cc> 0,limm,c 0010111011110000F111CCCCCC0QQQQQ. */
+{ "qmpyh", 0x2EF07000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmpyh<.f> a,limm,u6 0010111001110000F111uuuuuuAAAAAA. */
+{ "qmpyh", 0x2E707000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyh<.f> 0,limm,u6 0010111001110000F111uuuuuu111110. */
+{ "qmpyh", 0x2E70703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyh<.f><.cc> 0,limm,u6 0010111011110000F111uuuuuu1QQQQQ. */
+{ "qmpyh", 0x2EF07020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyh<.f> 0,limm,s12 0010111010110000F111ssssssSSSSSS. */
+{ "qmpyh", 0x2EB07000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmpyh<.f> a,limm,limm 0010111000110000F111111110AAAAAA. */
+{ "qmpyh", 0x2E307F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyh<.f> 0,limm,limm 0010111000110000F111111110111110. */
+{ "qmpyh", 0x2E307FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyh<.f><.cc> 0,limm,limm 0010111011110000F1111111100QQQQQ. */
+{ "qmpyh", 0x2EF07F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* qmpyhf<.f> a,b,c 00110bbb00110001FBBBCCCCCCAAAAAA. */
+{ "qmpyhf", 0x30310000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmpyhf<.f> 0,b,c 00110bbb00110001FBBBCCCCCC111110. */
+{ "qmpyhf", 0x3031003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmpyhf<.f><.cc> b,b,c 00110bbb11110001FBBBCCCCCC0QQQQQ. */
+{ "qmpyhf", 0x30F10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmpyhf<.f> a,b,u6 00110bbb01110001FBBBuuuuuuAAAAAA. */
+{ "qmpyhf", 0x30710000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyhf<.f> 0,b,u6 00110bbb01110001FBBBuuuuuu111110. */
+{ "qmpyhf", 0x3071003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyhf<.f><.cc> b,b,u6 00110bbb11110001FBBBuuuuuu1QQQQQ. */
+{ "qmpyhf", 0x30F10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyhf<.f> b,b,s12 00110bbb10110001FBBBssssssSSSSSS. */
+{ "qmpyhf", 0x30B10000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmpyhf<.f> a,limm,c 0011011000110001F111CCCCCCAAAAAA. */
+{ "qmpyhf", 0x36317000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmpyhf<.f> a,b,limm 00110bbb00110001FBBB111110AAAAAA. */
+{ "qmpyhf", 0x30310F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmpyhf<.f> 0,limm,c 0011011000110001F111CCCCCC111110. */
+{ "qmpyhf", 0x3631703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmpyhf<.f> 0,b,limm 00110bbb00110001FBBB111110111110. */
+{ "qmpyhf", 0x30310FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmpyhf<.f><.cc> b,b,limm 00110bbb11110001FBBB1111100QQQQQ. */
+{ "qmpyhf", 0x30F10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmpyhf<.f><.cc> 0,limm,c 0011011011110001F111CCCCCC0QQQQQ. */
+{ "qmpyhf", 0x36F17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmpyhf<.f> a,limm,u6 0011011001110001F111uuuuuuAAAAAA. */
+{ "qmpyhf", 0x36717000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyhf<.f> 0,limm,u6 0011011001110001F111uuuuuu111110. */
+{ "qmpyhf", 0x3671703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyhf<.f><.cc> 0,limm,u6 0011011011110001F111uuuuuu1QQQQQ. */
+{ "qmpyhf", 0x36F17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyhf<.f> 0,limm,s12 0011011010110001F111ssssssSSSSSS. */
+{ "qmpyhf", 0x36B17000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmpyhf<.f> a,limm,limm 0011011000110001F111111110AAAAAA. */
+{ "qmpyhf", 0x36317F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyhf<.f> 0,limm,limm 0011011000110001F111111110111110. */
+{ "qmpyhf", 0x36317FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyhf<.f><.cc> 0,limm,limm 0011011011110001F1111111100QQQQQ. */
+{ "qmpyhf", 0x36F17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* qmpyhu<.f> a,b,c 00101bbb00110001FBBBCCCCCCAAAAAA. */
+{ "qmpyhu", 0x28310000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { C_F }},
+
+/* qmpyhu<.f> 0,b,c 00101bbb00110001FBBBCCCCCC111110. */
+{ "qmpyhu", 0x2831003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { C_F }},
+
+/* qmpyhu<.f><.cc> b,b,c 00101bbb11110001FBBBCCCCCC0QQQQQ. */
+{ "qmpyhu", 0x28F10000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* qmpyhu<.f> a,b,u6 00101bbb01110001FBBBuuuuuuAAAAAA. */
+{ "qmpyhu", 0x28710000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyhu<.f> 0,b,u6 00101bbb01110001FBBBuuuuuu111110. */
+{ "qmpyhu", 0x2871003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* qmpyhu<.f><.cc> b,b,u6 00101bbb11110001FBBBuuuuuu1QQQQQ. */
+{ "qmpyhu", 0x28F10020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyhu<.f> b,b,s12 00101bbb10110001FBBBssssssSSSSSS. */
+{ "qmpyhu", 0x28B10000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* qmpyhu<.f> a,limm,c 0010111000110001F111CCCCCCAAAAAA. */
+{ "qmpyhu", 0x2E317000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* qmpyhu<.f> a,b,limm 00101bbb00110001FBBB111110AAAAAA. */
+{ "qmpyhu", 0x28310F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* qmpyhu<.f> 0,limm,c 0010111000110001F111CCCCCC111110. */
+{ "qmpyhu", 0x2E31703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F }},
+
+/* qmpyhu<.f> 0,b,limm 00101bbb00110001FBBB111110111110. */
+{ "qmpyhu", 0x28310FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { C_F }},
+
+/* qmpyhu<.f><.cc> b,b,limm 00101bbb11110001FBBB1111100QQQQQ. */
+{ "qmpyhu", 0x28F10F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* qmpyhu<.f><.cc> 0,limm,c 0010111011110001F111CCCCCC0QQQQQ. */
+{ "qmpyhu", 0x2EF17000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* qmpyhu<.f> a,limm,u6 0010111001110001F111uuuuuuAAAAAA. */
+{ "qmpyhu", 0x2E717000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyhu<.f> 0,limm,u6 0010111001110001F111uuuuuu111110. */
+{ "qmpyhu", 0x2E71703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* qmpyhu<.f><.cc> 0,limm,u6 0010111011110001F111uuuuuu1QQQQQ. */
+{ "qmpyhu", 0x2EF17020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* qmpyhu<.f> 0,limm,s12 0010111010110001F111ssssssSSSSSS. */
+{ "qmpyhu", 0x2EB17000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* qmpyhu<.f> a,limm,limm 0010111000110001F111111110AAAAAA. */
+{ "qmpyhu", 0x2E317F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyhu<.f> 0,limm,limm 0010111000110001F111111110111110. */
+{ "qmpyhu", 0x2E317FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* qmpyhu<.f><.cc> 0,limm,limm 0010111011110001F1111111100QQQQQ. */
+{ "qmpyhu", 0x2EF17F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* rcmp b,c 00100bbb000011011BBBCCCCCCRRRRRR. */
+{ "rcmp", 0x200D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* rcmp<.cc> b,c 00100bbb110011011BBBCCCCCC0QQQQQ. */
+{ "rcmp", 0x20CD8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* rcmp b,u6 00100bbb010011011BBBuuuuuuRRRRRR. */
+{ "rcmp", 0x204D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* rcmp<.cc> b,u6 00100bbb110011011BBBuuuuuu1QQQQQ. */
+{ "rcmp", 0x20CD8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* rcmp b,s12 00100bbb100011011BBBssssssSSSSSS. */
+{ "rcmp", 0x208D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* rcmp limm,c 00100110000011011111CCCCCCRRRRRR. */
+{ "rcmp", 0x260DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { 0 }},
+
+/* rcmp b,limm 00100bbb000011011BBB111110RRRRRR. */
+{ "rcmp", 0x200D8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* rcmp<.cc> limm,c 00100110110011011111CCCCCC0QQQQQ. */
+{ "rcmp", 0x26CDF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { C_CC }},
+
+/* rcmp<.cc> b,limm 00100bbb110011011BBB1111100QQQQQ. */
+{ "rcmp", 0x20CD8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* rcmp limm,u6 00100110010011011111uuuuuuRRRRRR. */
+{ "rcmp", 0x264DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_20 }, { 0 }},
+
+/* rcmp<.cc> limm,u6 00100110110011011111uuuuuu1QQQQQ. */
+{ "rcmp", 0x26CDF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_20 }, { C_CC }},
+
+/* rcmp limm,s12 00100110100011011111ssssssSSSSSS. */
+{ "rcmp", 0x268DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, SIMM12_20 }, { 0 }},
+
+/* rcmp limm,limm 00100110000011011111111110RRRRRR. */
+{ "rcmp", 0x260DFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, LIMMdup }, { 0 }},
+
+/* rcmp<.cc> limm,limm 001001101100110111111111100QQQQQ. */
+{ "rcmp", 0x26CDFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, LIMMdup }, { C_CC }},
+
+/* rcmpl RB,RC 01011bbb000011011BBBccccccRRRRRR. */
+{ "rcmpl", 0x580D8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* rcmpl<.cc> RB,RC 01011bbb110011011BBBcccccc0QQQQQ. */
+{ "rcmpl", 0x58CD8000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* rcmpl RB,u6 01011bbb010011011BBBuuuuuuRRRRRR. */
+{ "rcmpl", 0x584D8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* rcmpl<.cc> RB,u6 01011bbb110011011BBBuuuuuu1QQQQQ. */
+{ "rcmpl", 0x58CD8020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* rcmpl RB,s12 01011bbb100011011BBBssssssSSSSSS. */
+{ "rcmpl", 0x588D8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* rcmpl ximm,RC 01011100000011011111ccccccRRRRRR. */
+{ "rcmpl", 0x5C0DF000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { XIMM, RC }, { 0 }},
+
+/* rcmpl RB,ximm 01011bbb000011011BBB111100RRRRRR. */
+{ "rcmpl", 0x580D8F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { 0 }},
+
+/* rcmpl<.cc> RB,ximm 01011bbb110011011BBB1111000QQQQQ. */
+{ "rcmpl", 0x58CD8F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_CC }},
+
+/* rcmpl limm,RC 01011110000011011111ccccccRRRRRR. */
+{ "rcmpl", 0x5E0DF000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, RC }, { 0 }},
+
+/* rcmpl RB,limm 01011bbb000011011BBB111110RRRRRR. */
+{ "rcmpl", 0x580D8F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* rcmpl<.cc> RB,limm 01011bbb110011011BBB1111100QQQQQ. */
+{ "rcmpl", 0x58CD8F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* rcmpl limm,u6 01011110010011011111uuuuuuRRRRRR. */
+{ "rcmpl", 0x5E4DF000, 0xFFFFF000, ARC_OPCODE_ARC64, ARITH, NONE, { LIMM, UIMM6_20 }, { 0 }},
+
+/* rem<.f> a,b,c 00101bbb00001000FBBBCCCCCCAAAAAA. */
+{ "rem", 0x28080000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* rem<.f> 0,b,c 00101bbb00001000FBBBCCCCCC111110. */
+{ "rem", 0x2808003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, RC }, { C_F }},
+
+/* rem<.f><.cc> b,b,c 00101bbb11001000FBBBCCCCCC0QQQQQ. */
+{ "rem", 0x28C80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* rem<.f> a,b,c 00101bbb00001000FBBBCCCCCCAAAAAA. */
+{ "rem", 0x28080000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* rem<.f> 0,b,c 00101bbb00001000FBBBCCCCCC111110. */
+{ "rem", 0x2808003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, RC }, { C_F }},
+
+/* rem<.f><.cc> b,b,c 00101bbb11001000FBBBCCCCCC0QQQQQ. */
+{ "rem", 0x28C80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* rem<.f> a,b,u6 00101bbb01001000FBBBuuuuuuAAAAAA. */
+{ "rem", 0x28480000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* rem<.f> 0,b,u6 00101bbb01001000FBBBuuuuuu111110. */
+{ "rem", 0x2848003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* rem<.f><.cc> b,b,u6 00101bbb11001000FBBBuuuuuu1QQQQQ. */
+{ "rem", 0x28C80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* rem<.f> a,b,u6 00101bbb01001000FBBBuuuuuuAAAAAA. */
+{ "rem", 0x28480000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* rem<.f> 0,b,u6 00101bbb01001000FBBBuuuuuu111110. */
+{ "rem", 0x2848003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* rem<.f><.cc> b,b,u6 00101bbb11001000FBBBuuuuuu1QQQQQ. */
+{ "rem", 0x28C80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* rem<.f> b,b,s12 00101bbb10001000FBBBssssssSSSSSS. */
+{ "rem", 0x28880000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* rem<.f> b,b,s12 00101bbb10001000FBBBssssssSSSSSS. */
+{ "rem", 0x28880000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* rem<.f> a,limm,c 0010111000001000F111CCCCCCAAAAAA. */
+{ "rem", 0x2E087000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* rem<.f> a,b,limm 00101bbb00001000FBBB111110AAAAAA. */
+{ "rem", 0x28080F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* rem<.f> 0,limm,c 0010111000001000F111CCCCCC111110. */
+{ "rem", 0x2E08703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* rem<.f> 0,b,limm 00101bbb00001000FBBB111110111110. */
+{ "rem", 0x28080FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* rem<.f><.cc> b,b,limm 00101bbb11001000FBBB1111100QQQQQ. */
+{ "rem", 0x28C80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* rem<.f><.cc> 0,limm,c 0010111011001000F111CCCCCC0QQQQQ. */
+{ "rem", 0x2EC87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* rem<.f> a,limm,c 0010111000001000F111CCCCCCAAAAAA. */
+{ "rem", 0x2E087000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* rem<.f> a,b,limm 00101bbb00001000FBBB111110AAAAAA. */
+{ "rem", 0x28080F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* rem<.f> 0,limm,c 0010111000001000F111CCCCCC111110. */
+{ "rem", 0x2E08703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* rem<.f> 0,b,limm 00101bbb00001000FBBB111110111110. */
+{ "rem", 0x28080FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* rem<.f><.cc> b,b,limm 00101bbb11001000FBBB1111100QQQQQ. */
+{ "rem", 0x28C80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* rem<.f><.cc> 0,limm,c 0010111011001000F111CCCCCC0QQQQQ. */
+{ "rem", 0x2EC87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* rem<.f> a,limm,u6 0010111001001000F111uuuuuuAAAAAA. */
+{ "rem", 0x2E487000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* rem<.f> 0,limm,u6 0010111001001000F111uuuuuu111110. */
+{ "rem", 0x2E48703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rem<.f><.cc> 0,limm,u6 0010111011001000F111uuuuuu1QQQQQ. */
+{ "rem", 0x2EC87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* rem<.f> a,limm,u6 0010111001001000F111uuuuuuAAAAAA. */
+{ "rem", 0x2E487000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* rem<.f> 0,limm,u6 0010111001001000F111uuuuuu111110. */
+{ "rem", 0x2E48703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rem<.f><.cc> 0,limm,u6 0010111011001000F111uuuuuu1QQQQQ. */
+{ "rem", 0x2EC87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* rem<.f> 0,limm,s12 0010111010001000F111ssssssSSSSSS. */
+{ "rem", 0x2E887000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* rem<.f> 0,limm,s12 0010111010001000F111ssssssSSSSSS. */
+{ "rem", 0x2E887000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* rem<.f> a,limm,limm 0010111000001000F111111110AAAAAA. */
+{ "rem", 0x2E087F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* rem<.f> 0,limm,limm 0010111000001000F111111110111110. */
+{ "rem", 0x2E087FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* rem<.f><.cc> 0,limm,limm 0010111011001000F1111111100QQQQQ. */
+{ "rem", 0x2EC87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* rem<.f> a,limm,limm 0010111000001000F111111110AAAAAA. */
+{ "rem", 0x2E087F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* rem<.f> 0,limm,limm 0010111000001000F111111110111110. */
+{ "rem", 0x2E087FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* rem<.f><.cc> 0,limm,limm 0010111011001000F1111111100QQQQQ. */
+{ "rem", 0x2EC87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* reml<.f> RA,RB,RC 01011bbb00101000FBBBccccccaaaaaa. */
+{ "reml", 0x58280000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* reml<.f> 0,RB,RC 01011bbb00101000FBBBcccccc111110. */
+{ "reml", 0x5828003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* reml<.f><.cc> RB,RB,RC 01011bbb11101000FBBBcccccc0QQQQQ. */
+{ "reml", 0x58E80000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* reml<.f> RA,RB,u6 01011bbb01101000FBBBuuuuuuaaaaaa. */
+{ "reml", 0x58680000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* reml<.f> 0,RB,u6 01011bbb01101000FBBBuuuuuu111110. */
+{ "reml", 0x5868003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* reml<.f><.cc> RB,RB,u6 01011bbb11101000FBBBuuuuuu1QQQQQ. */
+{ "reml", 0x58E80020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* reml<.f> RB,RB,s12 01011bbb10101000FBBBssssssSSSSSS. */
+{ "reml", 0x58A80000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* reml<.f> RA,ximm,RC 0101110000101000F111ccccccaaaaaa. */
+{ "reml", 0x5C287000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* reml<.f> RA,RB,ximm 01011bbb00101000FBBB111100aaaaaa. */
+{ "reml", 0x58280F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* reml<.f> 0,ximm,RC 0101110000101000F111cccccc111110. */
+{ "reml", 0x5C28703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* reml<.f> 0,RB,ximm 01011bbb00101000FBBB111100111110. */
+{ "reml", 0x58280F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* reml<.f><.cc> 0,ximm,RC 0101110011101000F111cccccc0QQQQQ. */
+{ "reml", 0x5CE87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* reml<.f><.cc> RB,RB,ximm 01011bbb11101000FBBB1111000QQQQQ. */
+{ "reml", 0x58E80F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* reml<.f> RA,ximm,u6 0101110001101000F111uuuuuuaaaaaa. */
+{ "reml", 0x5C687000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* reml<.f> 0,ximm,u6 0101110001101000F111uuuuuu111110. */
+{ "reml", 0x5C68703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* reml<.f><.cc> 0,ximm,u6 0101110011101000F111uuuuuu1QQQQQ. */
+{ "reml", 0x5CE87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* reml<.f> RA,limm,RC 0101111000101000F111ccccccaaaaaa. */
+{ "reml", 0x5E287000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* reml<.f> RA,RB,limm 01011bbb00101000FBBB111110aaaaaa. */
+{ "reml", 0x58280F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* reml<.f> 0,limm,RC 0101111000101000F111cccccc111110. */
+{ "reml", 0x5E28703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* reml<.f> 0,RB,limm 01011bbb00101000FBBB111110111110. */
+{ "reml", 0x58280FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* reml<.f><.cc> 0,limm,RC 0101111011101000F111cccccc0QQQQQ. */
+{ "reml", 0x5EE87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* reml<.f><.cc> RB,RB,limm 01011bbb11101000FBBB1111100QQQQQ. */
+{ "reml", 0x58E80F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* reml<.f> RA,limm,u6 0101111001101000F111uuuuuuaaaaaa. */
+{ "reml", 0x5E687000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* reml<.f> 0,limm,u6 0101111001101000F111uuuuuu111110. */
+{ "reml", 0x5E68703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* reml<.f><.cc> 0,limm,u6 0101111011101000F111uuuuuu1QQQQQ. */
+{ "reml", 0x5EE87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* reml<.f> 0,ximm,s12 0101110010101000F111ssssssSSSSSS. */
+{ "reml", 0x5CA87000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* reml<.f> 0,limm,s12 0101111010101000F111ssssssSSSSSS. */
+{ "reml", 0x5EA87000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* reml<.f> RA,ximm,ximm 0101110000101000F111111100aaaaaa. */
+{ "reml", 0x5C287F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* reml<.f> 0,ximm,ximm 0101110000101000F111111100111110. */
+{ "reml", 0x5C287F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* reml<.f><.cc> 0,ximm,ximm 0101110011101000F1111111000QQQQQ. */
+{ "reml", 0x5CE87F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* reml<.f> RA,limm,limm 0101111000101000F111111110aaaaaa. */
+{ "reml", 0x5E287F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* reml<.f> 0,limm,limm 0101111000101000F111111110111110. */
+{ "reml", 0x5E287FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* reml<.f><.cc> 0,limm,limm 0101111011101000F1111111100QQQQQ. */
+{ "reml", 0x5EE87F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* remu<.f> a,b,c 00101bbb00001001FBBBCCCCCCAAAAAA. */
+{ "remu", 0x28090000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* remu<.f> 0,b,c 00101bbb00001001FBBBCCCCCC111110. */
+{ "remu", 0x2809003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, RC }, { C_F }},
+
+/* remu<.f><.cc> b,b,c 00101bbb11001001FBBBCCCCCC0QQQQQ. */
+{ "remu", 0x28C90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* remu<.f> a,b,c 00101bbb00001001FBBBCCCCCCAAAAAA. */
+{ "remu", 0x28090000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, RC }, { C_F }},
+
+/* remu<.f> 0,b,c 00101bbb00001001FBBBCCCCCC111110. */
+{ "remu", 0x2809003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, RC }, { C_F }},
+
+/* remu<.f><.cc> b,b,c 00101bbb11001001FBBBCCCCCC0QQQQQ. */
+{ "remu", 0x28C90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, RC }, { C_F, C_CC }},
+
+/* remu<.f> a,b,u6 00101bbb01001001FBBBuuuuuuAAAAAA. */
+{ "remu", 0x28490000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* remu<.f> 0,b,u6 00101bbb01001001FBBBuuuuuu111110. */
+{ "remu", 0x2849003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* remu<.f><.cc> b,b,u6 00101bbb11001001FBBBuuuuuu1QQQQQ. */
+{ "remu", 0x28C90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* remu<.f> a,b,u6 00101bbb01001001FBBBuuuuuuAAAAAA. */
+{ "remu", 0x28490000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, UIMM6_20 }, { C_F }},
+
+/* remu<.f> 0,b,u6 00101bbb01001001FBBBuuuuuu111110. */
+{ "remu", 0x2849003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* remu<.f><.cc> b,b,u6 00101bbb11001001FBBBuuuuuu1QQQQQ. */
+{ "remu", 0x28C90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* remu<.f> b,b,s12 00101bbb10001001FBBBssssssSSSSSS. */
+{ "remu", 0x28890000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* remu<.f> b,b,s12 00101bbb10001001FBBBssssssSSSSSS. */
+{ "remu", 0x28890000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, SIMM12_20 }, { C_F }},
+
+/* remu<.f> a,limm,c 0010111000001001F111CCCCCCAAAAAA. */
+{ "remu", 0x2E097000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* remu<.f> a,b,limm 00101bbb00001001FBBB111110AAAAAA. */
+{ "remu", 0x28090F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* remu<.f> 0,limm,c 0010111000001001F111CCCCCC111110. */
+{ "remu", 0x2E09703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* remu<.f> 0,b,limm 00101bbb00001001FBBB111110111110. */
+{ "remu", 0x28090FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* remu<.f><.cc> b,b,limm 00101bbb11001001FBBB1111100QQQQQ. */
+{ "remu", 0x28C90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* remu<.f><.cc> 0,limm,c 0010111011001001F111CCCCCC0QQQQQ. */
+{ "remu", 0x2EC97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* remu<.f> a,limm,c 0010111000001001F111CCCCCCAAAAAA. */
+{ "remu", 0x2E097000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, RC }, { C_F }},
+
+/* remu<.f> a,b,limm 00101bbb00001001FBBB111110AAAAAA. */
+{ "remu", 0x28090F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, RB, LIMM }, { C_F }},
+
+/* remu<.f> 0,limm,c 0010111000001001F111CCCCCC111110. */
+{ "remu", 0x2E09703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F }},
+
+/* remu<.f> 0,b,limm 00101bbb00001001FBBB111110111110. */
+{ "remu", 0x28090FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, RB, LIMM }, { C_F }},
+
+/* remu<.f><.cc> b,b,limm 00101bbb11001001FBBB1111100QQQQQ. */
+{ "remu", 0x28C90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RB_CHK, RBdup, LIMM }, { C_F, C_CC }},
+
+/* remu<.f><.cc> 0,limm,c 0010111011001001F111CCCCCC0QQQQQ. */
+{ "remu", 0x2EC97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* remu<.f> a,limm,u6 0010111001001001F111uuuuuuAAAAAA. */
+{ "remu", 0x2E497000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* remu<.f> 0,limm,u6 0010111001001001F111uuuuuu111110. */
+{ "remu", 0x2E49703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* remu<.f><.cc> 0,limm,u6 0010111011001001F111uuuuuu1QQQQQ. */
+{ "remu", 0x2EC97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* remu<.f> a,limm,u6 0010111001001001F111uuuuuuAAAAAA. */
+{ "remu", 0x2E497000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, UIMM6_20 }, { C_F }},
+
+/* remu<.f> 0,limm,u6 0010111001001001F111uuuuuu111110. */
+{ "remu", 0x2E49703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* remu<.f><.cc> 0,limm,u6 0010111011001001F111uuuuuu1QQQQQ. */
+{ "remu", 0x2EC97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* remu<.f> 0,limm,s12 0010111010001001F111ssssssSSSSSS. */
+{ "remu", 0x2E897000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* remu<.f> 0,limm,s12 0010111010001001F111ssssssSSSSSS. */
+{ "remu", 0x2E897000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* remu<.f> a,limm,limm 0010111000001001F111111110AAAAAA. */
+{ "remu", 0x2E097F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* remu<.f> 0,limm,limm 0010111000001001F111111110111110. */
+{ "remu", 0x2E097FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* remu<.f><.cc> 0,limm,limm 0010111011001001F1111111100QQQQQ. */
+{ "remu", 0x2EC97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DIVREM, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* remu<.f> a,limm,limm 0010111000001001F111111110AAAAAA. */
+{ "remu", 0x2E097F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { RA_CHK, LIMM, LIMMdup }, { C_F }},
+
+/* remu<.f> 0,limm,limm 0010111000001001F111111110111110. */
+{ "remu", 0x2E097FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* remu<.f><.cc> 0,limm,limm 0010111011001001F1111111100QQQQQ. */
+{ "remu", 0x2EC97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, DIV, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* remul<.f> RA,RB,RC 01011bbb00101001FBBBccccccaaaaaa. */
+{ "remul", 0x58290000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* remul<.f> 0,RB,RC 01011bbb00101001FBBBcccccc111110. */
+{ "remul", 0x5829003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* remul<.f><.cc> RB,RB,RC 01011bbb11101001FBBBcccccc0QQQQQ. */
+{ "remul", 0x58E90000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* remul<.f> RA,RB,u6 01011bbb01101001FBBBuuuuuuaaaaaa. */
+{ "remul", 0x58690000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* remul<.f> 0,RB,u6 01011bbb01101001FBBBuuuuuu111110. */
+{ "remul", 0x5869003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* remul<.f><.cc> RB,RB,u6 01011bbb11101001FBBBuuuuuu1QQQQQ. */
+{ "remul", 0x58E90020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* remul<.f> RB,RB,s12 01011bbb10101001FBBBssssssSSSSSS. */
+{ "remul", 0x58A90000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* remul<.f> RA,ximm,RC 0101110000101001F111ccccccaaaaaa. */
+{ "remul", 0x5C297000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* remul<.f> RA,RB,ximm 01011bbb00101001FBBB111100aaaaaa. */
+{ "remul", 0x58290F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* remul<.f> 0,ximm,RC 0101110000101001F111cccccc111110. */
+{ "remul", 0x5C29703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* remul<.f> 0,RB,ximm 01011bbb00101001FBBB111100111110. */
+{ "remul", 0x58290F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* remul<.f><.cc> 0,ximm,RC 0101110011101001F111cccccc0QQQQQ. */
+{ "remul", 0x5CE97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* remul<.f><.cc> RB,RB,ximm 01011bbb11101001FBBB1111000QQQQQ. */
+{ "remul", 0x58E90F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* remul<.f> RA,ximm,u6 0101110001101001F111uuuuuuaaaaaa. */
+{ "remul", 0x5C697000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* remul<.f> 0,ximm,u6 0101110001101001F111uuuuuu111110. */
+{ "remul", 0x5C69703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* remul<.f><.cc> 0,ximm,u6 0101110011101001F111uuuuuu1QQQQQ. */
+{ "remul", 0x5CE97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* remul<.f> RA,limm,RC 0101111000101001F111ccccccaaaaaa. */
+{ "remul", 0x5E297000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* remul<.f> RA,RB,limm 01011bbb00101001FBBB111110aaaaaa. */
+{ "remul", 0x58290F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* remul<.f> 0,limm,RC 0101111000101001F111cccccc111110. */
+{ "remul", 0x5E29703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* remul<.f> 0,RB,limm 01011bbb00101001FBBB111110111110. */
+{ "remul", 0x58290FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* remul<.f><.cc> 0,limm,RC 0101111011101001F111cccccc0QQQQQ. */
+{ "remul", 0x5EE97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* remul<.f><.cc> RB,RB,limm 01011bbb11101001FBBB1111100QQQQQ. */
+{ "remul", 0x58E90F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* remul<.f> RA,limm,u6 0101111001101001F111uuuuuuaaaaaa. */
+{ "remul", 0x5E697000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* remul<.f> 0,limm,u6 0101111001101001F111uuuuuu111110. */
+{ "remul", 0x5E69703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* remul<.f><.cc> 0,limm,u6 0101111011101001F111uuuuuu1QQQQQ. */
+{ "remul", 0x5EE97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* remul<.f> 0,ximm,s12 0101110010101001F111ssssssSSSSSS. */
+{ "remul", 0x5CA97000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* remul<.f> 0,limm,s12 0101111010101001F111ssssssSSSSSS. */
+{ "remul", 0x5EA97000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* remul<.f> RA,ximm,ximm 0101110000101001F111111100aaaaaa. */
+{ "remul", 0x5C297F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* remul<.f> 0,ximm,ximm 0101110000101001F111111100111110. */
+{ "remul", 0x5C297F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* remul<.f><.cc> 0,ximm,ximm 0101110011101001F1111111000QQQQQ. */
+{ "remul", 0x5CE97F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* remul<.f> RA,limm,limm 0101111000101001F111111110aaaaaa. */
+{ "remul", 0x5E297F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* remul<.f> 0,limm,limm 0101111000101001F111111110111110. */
+{ "remul", 0x5E297FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* remul<.f><.cc> 0,limm,limm 0101111011101001F1111111100QQQQQ. */
+{ "remul", 0x5EE97F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* rlc<.f> b,c 00100bbb00101111FBBBCCCCCC001011. */
+{ "rlc", 0x202F000B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* rlc<.f> 0,c 0010011000101111F111CCCCCC001011. */
+{ "rlc", 0x262F700B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* rlc<.f> b,u6 00100bbb01101111FBBBuuuuuu001011. */
+{ "rlc", 0x206F000B, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* rlc<.f> 0,u6 0010011001101111F111uuuuuu001011. */
+{ "rlc", 0x266F700B, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* rlc<.f> b,limm 00100bbb00101111FBBB111110001011. */
+{ "rlc", 0x202F0F8B, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* rlc<.f> 0,limm 0010011000101111F111111110001011. */
+{ "rlc", 0x262F7F8B, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* rndh<.f> b,c 00101bbb00101111FBBBCCCCCC000011. */
+{ "rndh", 0x282F0003, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* rndh<.f> 0,c 0010111000101111F111CCCCCC000011. */
+{ "rndh", 0x2E2F7003, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* rndh<.f> b,u6 00101bbb01101111FBBBuuuuuu000011. */
+{ "rndh", 0x286F0003, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* rndh<.f> 0,u6 0010111001101111F111uuuuuu000011. */
+{ "rndh", 0x2E6F7003, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* rndh<.f> b,limm 00101bbb00101111FBBB111110000011. */
+{ "rndh", 0x282F0F83, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* rndh<.f> 0,limm 0010111000101111F111111110000011. */
+{ "rndh", 0x2E2F7F83, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* rol<.f> b,c 00100bbb00101111FBBBCCCCCC001101. */
+{ "rol", 0x202F000D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* rol<.f> 0,c 0010011000101111F111CCCCCC001101. */
+{ "rol", 0x262F700D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* rol<.f> b,u6 00100bbb01101111FBBBuuuuuu001101. */
+{ "rol", 0x206F000D, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* rol<.f> 0,u6 0010011001101111F111uuuuuu001101. */
+{ "rol", 0x266F700D, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* rol<.f> b,limm 00100bbb00101111FBBB111110001101. */
+{ "rol", 0x202F0F8D, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* rol<.f> 0,limm 0010011000101111F111111110001101. */
+{ "rol", 0x262F7F8D, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* rol8<.f> b,c 00101bbb00101111FBBBCCCCCC010000. */
+{ "rol8", 0x282F0010, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, RC }, { C_F }},
+
+/* rol8<.f> 0,c 0010111000101111F111CCCCCC010000. */
+{ "rol8", 0x2E2F7010, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, RC }, { C_F }},
+
+/* rol8<.f> b,u6 00101bbb01101111FBBBuuuuuu010000. */
+{ "rol8", 0x286F0010, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* rol8<.f> 0,u6 0010111001101111F111uuuuuu010000. */
+{ "rol8", 0x2E6F7010, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* rol8<.f> b,limm 00101bbb00101111FBBB111110010000. */
+{ "rol8", 0x282F0F90, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, LIMM }, { C_F }},
+
+/* rol8<.f> 0,limm 0010111000101111F111111110010000. */
+{ "rol8", 0x2E2F7F90, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* ror<.f> b,c 00100bbb00101111FBBBCCCCCC000011. */
+{ "ror", 0x202F0003, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* ror<.f> 0,c 0010011000101111F111CCCCCC000011. */
+{ "ror", 0x262F7003, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* ror<.f> a,b,c 00101bbb00000011FBBBCCCCCCAAAAAA. */
+{ "ror", 0x28030000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, RC }, { C_F }},
+
+/* ror<.f> 0,b,c 00101bbb00000011FBBBCCCCCC111110. */
+{ "ror", 0x2803003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, RC }, { C_F }},
+
+/* ror<.f><.cc> b,b,c 00101bbb11000011FBBBCCCCCC0QQQQQ. */
+{ "ror", 0x28C30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* ror<.f> b,u6 00100bbb01101111FBBBuuuuuu000011. */
+{ "ror", 0x206F0003, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* ror<.f> 0,u6 0010011001101111F111uuuuuu000011. */
+{ "ror", 0x266F7003, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* ror<.f> a,b,u6 00101bbb01000011FBBBuuuuuuAAAAAA. */
+{ "ror", 0x28430000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* ror<.f> 0,b,u6 00101bbb01000011FBBBuuuuuu111110. */
+{ "ror", 0x2843003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* ror<.f><.cc> b,b,u6 00101bbb11000011FBBBuuuuuu1QQQQQ. */
+{ "ror", 0x28C30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* ror<.f> b,b,s12 00101bbb10000011FBBBssssssSSSSSS. */
+{ "ror", 0x28830000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* ror<.f> b,limm 00100bbb00101111FBBB111110000011. */
+{ "ror", 0x202F0F83, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* ror<.f> 0,limm 0010011000101111F111111110000011. */
+{ "ror", 0x262F7F83, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* ror<.f> a,limm,c 0010111000000011F111CCCCCCAAAAAA. */
+{ "ror", 0x2E037000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, RC }, { C_F }},
+
+/* ror<.f> a,b,limm 00101bbb00000011FBBB111110AAAAAA. */
+{ "ror", 0x28030F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, RB, LIMM }, { C_F }},
+
+/* ror<.f> 0,limm,c 0010111000000011F111CCCCCC111110. */
+{ "ror", 0x2E03703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F }},
+
+/* ror<.f> 0,b,limm 00101bbb00000011FBBB111110111110. */
+{ "ror", 0x28030FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, RB, LIMM }, { C_F }},
+
+/* ror<.f><.cc> b,b,limm 00101bbb11000011FBBB1111100QQQQQ. */
+{ "ror", 0x28C30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* ror<.f><.cc> 0,limm,c 0010111011000011F111CCCCCC0QQQQQ. */
+{ "ror", 0x2EC37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* ror<.f> a,limm,u6 0010111001000011F111uuuuuuAAAAAA. */
+{ "ror", 0x2E437000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* ror<.f> 0,limm,u6 0010111001000011F111uuuuuu111110. */
+{ "ror", 0x2E43703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* ror<.f><.cc> 0,limm,u6 0010111011000011F111uuuuuu1QQQQQ. */
+{ "ror", 0x2EC37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* ror<.f> 0,limm,s12 0010111010000011F111ssssssSSSSSS. */
+{ "ror", 0x2E837000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* ror<.f> a,limm,limm 0010111000000011F111111110AAAAAA. */
+{ "ror", 0x2E037F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* ror<.f> 0,limm,limm 0010111000000011F111111110111110. */
+{ "ror", 0x2E037FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* ror<.f><.cc> 0,limm,limm 0010111011000011F1111111100QQQQQ. */
+{ "ror", 0x2EC37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT2, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* ror8<.f> b,c 00101bbb00101111FBBBCCCCCC010001. */
+{ "ror8", 0x282F0011, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, RC }, { C_F }},
+
+/* ror8<.f> 0,c 0010111000101111F111CCCCCC010001. */
+{ "ror8", 0x2E2F7011, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, RC }, { C_F }},
+
+/* ror8<.f> b,u6 00101bbb01101111FBBBuuuuuu010001. */
+{ "ror8", 0x286F0011, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, UIMM6_20 }, { C_F }},
+
+/* ror8<.f> 0,u6 0010111001101111F111uuuuuu010001. */
+{ "ror8", 0x2E6F7011, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, UIMM6_20 }, { C_F }},
+
+/* ror8<.f> b,limm 00101bbb00101111FBBB111110010001. */
+{ "ror8", 0x282F0F91, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { RB, LIMM }, { C_F }},
+
+/* ror8<.f> 0,limm 0010111000101111F111111110010001. */
+{ "ror8", 0x2E2F7F91, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, SHFT1, { ZA, LIMM }, { C_F }},
+
+/* rrc<.f> b,c 00100bbb00101111FBBBCCCCCC000100. */
+{ "rrc", 0x202F0004, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_F }},
+
+/* rrc<.f> 0,c 0010011000101111F111CCCCCC000100. */
+{ "rrc", 0x262F7004, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RC }, { C_F }},
+
+/* rrc<.f> b,u6 00100bbb01101111FBBBuuuuuu000100. */
+{ "rrc", 0x206F0004, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* rrc<.f> 0,u6 0010011001101111F111uuuuuu000100. */
+{ "rrc", 0x266F7004, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* rrc<.f> b,limm 00100bbb00101111FBBB111110000100. */
+{ "rrc", 0x202F0F84, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_F }},
+
+/* rrc<.f> 0,limm 0010011000101111F111111110000100. */
+{ "rrc", 0x262F7F84, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM }, { C_F }},
+
+/* rsub<.f> a,b,c 00100bbb00001110FBBBCCCCCCAAAAAA. */
+{ "rsub", 0x200E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* rsub<.f> 0,b,c 00100bbb00001110FBBBCCCCCC111110. */
+{ "rsub", 0x200E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* rsub<.f><.cc> b,b,c 00100bbb11001110FBBBCCCCCC0QQQQQ. */
+{ "rsub", 0x20CE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* rsub<.f> a,b,u6 00100bbb01001110FBBBuuuuuuAAAAAA. */
+{ "rsub", 0x204E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* rsub<.f> 0,b,u6 00100bbb01001110FBBBuuuuuu111110. */
+{ "rsub", 0x204E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* rsub<.f><.cc> b,b,u6 00100bbb11001110FBBBuuuuuu1QQQQQ. */
+{ "rsub", 0x20CE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* rsub<.f> b,b,s12 00100bbb10001110FBBBssssssSSSSSS. */
+{ "rsub", 0x208E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* rsub<.f> a,limm,c 0010011000001110F111CCCCCCAAAAAA. */
+{ "rsub", 0x260E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* rsub<.f> a,b,limm 00100bbb00001110FBBB111110AAAAAA. */
+{ "rsub", 0x200E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* rsub<.f> 0,limm,c 0010011000001110F111CCCCCC111110. */
+{ "rsub", 0x260E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* rsub<.f> 0,b,limm 00100bbb00001110FBBB111110111110. */
+{ "rsub", 0x200E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* rsub<.f><.cc> b,b,limm 00100bbb11001110FBBB1111100QQQQQ. */
+{ "rsub", 0x20CE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* rsub<.f><.cc> 0,limm,c 0010011011001110F111CCCCCC0QQQQQ. */
+{ "rsub", 0x26CE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* rsub<.f> a,limm,u6 0010011001001110F111uuuuuuAAAAAA. */
+{ "rsub", 0x264E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rsub<.f> 0,limm,u6 0010011001001110F111uuuuuu111110. */
+{ "rsub", 0x264E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rsub<.f><.cc> 0,limm,u6 0010011011001110F111uuuuuu1QQQQQ. */
+{ "rsub", 0x26CE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* rsub<.f> 0,limm,s12 0010011010001110F111ssssssSSSSSS. */
+{ "rsub", 0x268E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* rsub<.f> a,limm,limm 0010011000001110F111111110AAAAAA. */
+{ "rsub", 0x260E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* rsub<.f> 0,limm,limm 0010011000001110F111111110111110. */
+{ "rsub", 0x260E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* rsub<.f><.cc> 0,limm,limm 0010011011001110F1111111100QQQQQ. */
+{ "rsub", 0x26CE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,RB,RC 01011bbb00001110FBBBccccccaaaaaa. */
+{ "rsubl", 0x580E0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* rsubl<.f> 0,RB,RC 01011bbb00001110FBBBcccccc111110. */
+{ "rsubl", 0x580E003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* rsubl<.f><.cc> RB,RB,RC 01011bbb11001110FBBBcccccc0QQQQQ. */
+{ "rsubl", 0x58CE0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,RB,u6 01011bbb01001110FBBBuuuuuuaaaaaa. */
+{ "rsubl", 0x584E0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f> 0,RB,u6 01011bbb01001110FBBBuuuuuu111110. */
+{ "rsubl", 0x584E003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f><.cc> RB,RB,u6 01011bbb11001110FBBBuuuuuu1QQQQQ. */
+{ "rsubl", 0x58CE0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* rsubl<.f> RB,RB,s12 01011bbb10001110FBBBssssssSSSSSS. */
+{ "rsubl", 0x588E0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* rsubl<.f> RA,ximm,RC 0101110000001110F111ccccccaaaaaa. */
+{ "rsubl", 0x5C0E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* rsubl<.f> RA,RB,ximm 01011bbb00001110FBBB111100aaaaaa. */
+{ "rsubl", 0x580E0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* rsubl<.f> 0,ximm,RC 0101110000001110F111cccccc111110. */
+{ "rsubl", 0x5C0E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* rsubl<.f> 0,RB,ximm 01011bbb00001110FBBB111100111110. */
+{ "rsubl", 0x580E0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* rsubl<.f><.cc> 0,ximm,RC 0101110011001110F111cccccc0QQQQQ. */
+{ "rsubl", 0x5CCE7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* rsubl<.f><.cc> RB,RB,ximm 01011bbb11001110FBBB1111000QQQQQ. */
+{ "rsubl", 0x58CE0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,ximm,u6 0101110001001110F111uuuuuuaaaaaa. */
+{ "rsubl", 0x5C4E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f> 0,ximm,u6 0101110001001110F111uuuuuu111110. */
+{ "rsubl", 0x5C4E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f><.cc> 0,ximm,u6 0101110011001110F111uuuuuu1QQQQQ. */
+{ "rsubl", 0x5CCE7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,limm,RC 0101111000001110F111ccccccaaaaaa. */
+{ "rsubl", 0x5E0E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* rsubl<.f> RA,RB,limm 01011bbb00001110FBBB111110aaaaaa. */
+{ "rsubl", 0x580E0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* rsubl<.f> 0,limm,RC 0101111000001110F111cccccc111110. */
+{ "rsubl", 0x5E0E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* rsubl<.f> 0,RB,limm 01011bbb00001110FBBB111110111110. */
+{ "rsubl", 0x580E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* rsubl<.f><.cc> 0,limm,RC 0101111011001110F111cccccc0QQQQQ. */
+{ "rsubl", 0x5ECE7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* rsubl<.f><.cc> RB,RB,limm 01011bbb11001110FBBB1111100QQQQQ. */
+{ "rsubl", 0x58CE0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,limm,u6 0101111001001110F111uuuuuuaaaaaa. */
+{ "rsubl", 0x5E4E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f> 0,limm,u6 0101111001001110F111uuuuuu111110. */
+{ "rsubl", 0x5E4E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* rsubl<.f><.cc> 0,limm,u6 0101111011001110F111uuuuuu1QQQQQ. */
+{ "rsubl", 0x5ECE7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* rsubl<.f> 0,ximm,s12 0101110010001110F111ssssssSSSSSS. */
+{ "rsubl", 0x5C8E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* rsubl<.f> 0,limm,s12 0101111010001110F111ssssssSSSSSS. */
+{ "rsubl", 0x5E8E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* rsubl<.f> RA,ximm,ximm 0101110000001110F111111100aaaaaa. */
+{ "rsubl", 0x5C0E7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* rsubl<.f> 0,ximm,ximm 0101110000001110F111111100111110. */
+{ "rsubl", 0x5C0E7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* rsubl<.f><.cc> 0,ximm,ximm 0101110011001110F1111111000QQQQQ. */
+{ "rsubl", 0x5CCE7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* rsubl<.f> RA,limm,limm 0101111000001110F111111110aaaaaa. */
+{ "rsubl", 0x5E0E7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* rsubl<.f> 0,limm,limm 0101111000001110F111111110111110. */
+{ "rsubl", 0x5E0E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* rsubl<.f><.cc> 0,limm,limm 0101111011001110F1111111100QQQQQ. */
+{ "rsubl", 0x5ECE7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* rtie 00100100011011110000000000111111. */
+{ "rtie", 0x246F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* satf<.f> b,c 00101bbb00101111FBBBCCCCCC011010. */
+{ "satf", 0x282F001A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* satf<.f> 0,c 0010111000101111F111CCCCCC011010. */
+{ "satf", 0x2E2F701A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* satf<.f> b,u6 00101bbb01101111FBBBuuuuuu011010. */
+{ "satf", 0x286F001A, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* satf<.f> 0,u6 0010111001101111F111uuuuuu011010. */
+{ "satf", 0x2E6F701A, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* satf<.f> b,limm 00101bbb00101111FBBB111110011010. */
+{ "satf", 0x282F0F9A, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* satf<.f> 0,limm 0010111000101111F111111110011010. */
+{ "satf", 0x2E2F7F9A, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* sath<.f> b,c 00101bbb00101111FBBBCCCCCC000010. */
+{ "sath", 0x282F0002, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* sath<.f> 0,c 0010111000101111F111CCCCCC000010. */
+{ "sath", 0x2E2F7002, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* sath<.f> b,u6 00101bbb01101111FBBBuuuuuu000010. */
+{ "sath", 0x286F0002, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* sath<.f> 0,u6 0010111001101111F111uuuuuu000010. */
+{ "sath", 0x2E6F7002, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sath<.f> b,limm 00101bbb00101111FBBB111110000010. */
+{ "sath", 0x282F0F82, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* sath<.f> 0,limm 0010111000101111F111111110000010. */
+{ "sath", 0x2E2F7F82, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* sbc<.f> a,b,c 00100bbb00000011FBBBCCCCCCAAAAAA. */
+{ "sbc", 0x20030000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sbc<.f> 0,b,c 00100bbb00000011FBBBCCCCCC111110. */
+{ "sbc", 0x2003003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sbc<.f><.cc> b,b,c 00100bbb11000011FBBBCCCCCC0QQQQQ. */
+{ "sbc", 0x20C30000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sbc<.f> a,b,u6 00100bbb01000011FBBBuuuuuuAAAAAA. */
+{ "sbc", 0x20430000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sbc<.f> 0,b,u6 00100bbb01000011FBBBuuuuuu111110. */
+{ "sbc", 0x2043003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sbc<.f><.cc> b,b,u6 00100bbb11000011FBBBuuuuuu1QQQQQ. */
+{ "sbc", 0x20C30020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbc<.f> b,b,s12 00100bbb10000011FBBBssssssSSSSSS. */
+{ "sbc", 0x20830000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sbc<.f> a,limm,c 0010011000000011F111CCCCCCAAAAAA. */
+{ "sbc", 0x26037000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sbc<.f> a,b,limm 00100bbb00000011FBBB111110AAAAAA. */
+{ "sbc", 0x20030F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sbc<.f> 0,limm,c 0010011000000011F111CCCCCC111110. */
+{ "sbc", 0x2603703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sbc<.f> 0,b,limm 00100bbb00000011FBBB111110111110. */
+{ "sbc", 0x20030FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sbc<.f><.cc> b,b,limm 00100bbb11000011FBBB1111100QQQQQ. */
+{ "sbc", 0x20C30F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sbc<.f><.cc> 0,limm,c 0010011011000011F111CCCCCC0QQQQQ. */
+{ "sbc", 0x26C37000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sbc<.f> a,limm,u6 0010011001000011F111uuuuuuAAAAAA. */
+{ "sbc", 0x26437000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbc<.f> 0,limm,u6 0010011001000011F111uuuuuu111110. */
+{ "sbc", 0x2643703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbc<.f><.cc> 0,limm,u6 0010011011000011F111uuuuuu1QQQQQ. */
+{ "sbc", 0x26C37020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbc<.f> 0,limm,s12 0010011010000011F111ssssssSSSSSS. */
+{ "sbc", 0x26837000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sbc<.f> a,limm,limm 0010011000000011F111111110AAAAAA. */
+{ "sbc", 0x26037F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sbc<.f> 0,limm,limm 0010011000000011F111111110111110. */
+{ "sbc", 0x26037FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sbc<.f><.cc> 0,limm,limm 0010011011000011F1111111100QQQQQ. */
+{ "sbc", 0x26C37F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,RB,RC 01011bbb00000011FBBBccccccaaaaaa. */
+{ "sbcl", 0x58030000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sbcl<.f> 0,RB,RC 01011bbb00000011FBBBcccccc111110. */
+{ "sbcl", 0x5803003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sbcl<.f><.cc> RB,RB,RC 01011bbb11000011FBBBcccccc0QQQQQ. */
+{ "sbcl", 0x58C30000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,RB,u6 01011bbb01000011FBBBuuuuuuaaaaaa. */
+{ "sbcl", 0x58430000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f> 0,RB,u6 01011bbb01000011FBBBuuuuuu111110. */
+{ "sbcl", 0x5843003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f><.cc> RB,RB,u6 01011bbb11000011FBBBuuuuuu1QQQQQ. */
+{ "sbcl", 0x58C30020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbcl<.f> RB,RB,s12 01011bbb10000011FBBBssssssSSSSSS. */
+{ "sbcl", 0x58830000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sbcl<.f> RA,ximm,RC 0101110000000011F111ccccccaaaaaa. */
+{ "sbcl", 0x5C037000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* sbcl<.f> RA,RB,ximm 01011bbb00000011FBBB111100aaaaaa. */
+{ "sbcl", 0x58030F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* sbcl<.f> 0,ximm,RC 0101110000000011F111cccccc111110. */
+{ "sbcl", 0x5C03703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* sbcl<.f> 0,RB,ximm 01011bbb00000011FBBB111100111110. */
+{ "sbcl", 0x58030F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* sbcl<.f><.cc> 0,ximm,RC 0101110011000011F111cccccc0QQQQQ. */
+{ "sbcl", 0x5CC37000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* sbcl<.f><.cc> RB,RB,ximm 01011bbb11000011FBBB1111000QQQQQ. */
+{ "sbcl", 0x58C30F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,ximm,u6 0101110001000011F111uuuuuuaaaaaa. */
+{ "sbcl", 0x5C437000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f> 0,ximm,u6 0101110001000011F111uuuuuu111110. */
+{ "sbcl", 0x5C43703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f><.cc> 0,ximm,u6 0101110011000011F111uuuuuu1QQQQQ. */
+{ "sbcl", 0x5CC37020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,limm,RC 0101111000000011F111ccccccaaaaaa. */
+{ "sbcl", 0x5E037000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sbcl<.f> RA,RB,limm 01011bbb00000011FBBB111110aaaaaa. */
+{ "sbcl", 0x58030F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sbcl<.f> 0,limm,RC 0101111000000011F111cccccc111110. */
+{ "sbcl", 0x5E03703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sbcl<.f> 0,RB,limm 01011bbb00000011FBBB111110111110. */
+{ "sbcl", 0x58030FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sbcl<.f><.cc> 0,limm,RC 0101111011000011F111cccccc0QQQQQ. */
+{ "sbcl", 0x5EC37000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sbcl<.f><.cc> RB,RB,limm 01011bbb11000011FBBB1111100QQQQQ. */
+{ "sbcl", 0x58C30F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,limm,u6 0101111001000011F111uuuuuuaaaaaa. */
+{ "sbcl", 0x5E437000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f> 0,limm,u6 0101111001000011F111uuuuuu111110. */
+{ "sbcl", 0x5E43703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbcl<.f><.cc> 0,limm,u6 0101111011000011F111uuuuuu1QQQQQ. */
+{ "sbcl", 0x5EC37020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbcl<.f> 0,ximm,s12 0101110010000011F111ssssssSSSSSS. */
+{ "sbcl", 0x5C837000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* sbcl<.f> 0,limm,s12 0101111010000011F111ssssssSSSSSS. */
+{ "sbcl", 0x5E837000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sbcl<.f> RA,ximm,ximm 0101110000000011F111111100aaaaaa. */
+{ "sbcl", 0x5C037F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* sbcl<.f> 0,ximm,ximm 0101110000000011F111111100111110. */
+{ "sbcl", 0x5C037F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* sbcl<.f><.cc> 0,ximm,ximm 0101110011000011F1111111000QQQQQ. */
+{ "sbcl", 0x5CC37F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* sbcl<.f> RA,limm,limm 0101111000000011F111111110aaaaaa. */
+{ "sbcl", 0x5E037F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sbcl<.f> 0,limm,limm 0101111000000011F111111110111110. */
+{ "sbcl", 0x5E037FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sbcl<.f><.cc> 0,limm,limm 0101111011000011F1111111100QQQQQ. */
+{ "sbcl", 0x5EC37F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sbcs<.f> a,b,c 00101bbb00100111FBBBCCCCCCAAAAAA. */
+{ "sbcs", 0x28270000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sbcs<.f> 0,b,c 00101bbb00100111FBBBCCCCCC111110. */
+{ "sbcs", 0x2827003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sbcs<.f><.cc> b,b,c 00101bbb11100111FBBBCCCCCC0QQQQQ. */
+{ "sbcs", 0x28E70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sbcs<.f> a,b,u6 00101bbb01100111FBBBuuuuuuAAAAAA. */
+{ "sbcs", 0x28670000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sbcs<.f> 0,b,u6 00101bbb01100111FBBBuuuuuu111110. */
+{ "sbcs", 0x2867003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sbcs<.f><.cc> b,b,u6 00101bbb11100111FBBBuuuuuu1QQQQQ. */
+{ "sbcs", 0x28E70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbcs<.f> b,b,s12 00101bbb10100111FBBBssssssSSSSSS. */
+{ "sbcs", 0x28A70000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sbcs<.f> a,limm,c 0010111000100111F111CCCCCCAAAAAA. */
+{ "sbcs", 0x2E277000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sbcs<.f> a,b,limm 00101bbb00100111FBBB111110AAAAAA. */
+{ "sbcs", 0x28270F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sbcs<.f> 0,limm,c 0010111001100111F111CCCCCC111110. */
+{ "sbcs", 0x2E67703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sbcs<.f> 0,b,limm 00101bbb00100111FBBB111110111110. */
+{ "sbcs", 0x28270FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sbcs<.f><.cc> b,b,limm 00101bbb11100111FBBB1111100QQQQQ. */
+{ "sbcs", 0x28E70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sbcs<.f><.cc> 0,limm,c 0010111011100111F111CCCCCC0QQQQQ. */
+{ "sbcs", 0x2EE77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sbcs<.f> a,limm,u6 0010111001100111F111uuuuuuAAAAAA. */
+{ "sbcs", 0x2E677000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbcs<.f> 0,limm,u6 0010111001100111F111uuuuuu111110. */
+{ "sbcs", 0x2E67703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sbcs<.f><.cc> 0,limm,u6 0010111011100111F111uuuuuu1QQQQQ. */
+{ "sbcs", 0x2EE77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sbcs<.f> 0,limm,s12 0010111010100111F111ssssssSSSSSS. */
+{ "sbcs", 0x2EA77000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sbcs<.f> a,limm,limm 0010111000100111F111111110AAAAAA. */
+{ "sbcs", 0x2E277F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sbcs<.f> 0,limm,limm 0010111000100111F111111110111110. */
+{ "sbcs", 0x2E277FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sbcs<.f><.cc> 0,limm,limm 0010111011100111F1111111100QQQQQ. */
+{ "sbcs", 0x2EE77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* scond<.di> b,c 00100bbb00101111DBBBCCCCCC010001. */
+{ "scond", 0x202F0011, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_DI16 }},
+
+/* scond<.di> b,u6 00100bbb01101111DBBBuuuuuu010001. */
+{ "scond", 0x206F0011, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, UIMM6_20, BRAKETdup }, { C_DI16 }},
+
+/* scond<.di> b,limm 00100bbb00101111DBBB111110010001. */
+{ "scond", 0x202F0F91, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, LIMM, BRAKETdup }, { C_DI16 }},
+
+/* scondl<.aq> RB,RC 01011bbb00101111FBBBcccccc010001. */
+{ "scondl", 0x582F0011, 0xF8FF003F, ARC_OPCODE_ARC64, MEMORY, NONE, { RB, BRAKET, RC, BRAKETdup }, { C_AQ }},
+
+/* setacc a,b,c 00101bbb000011011BBBCCCCCCAAAAAA. */
+{ "setacc", 0x280D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* setacc 0,b,c 00101bbb000011011BBBCCCCCC111110. */
+{ "setacc", 0x280D803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* setacc<.cc> b,b,c 00101bbb110011011BBBCCCCCC0QQQQQ. */
+{ "setacc", 0x28CD8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* setacc a,b,u6 00101bbb010011011BBBuuuuuuAAAAAA. */
+{ "setacc", 0x284D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* setacc 0,b,u6 00101bbb010011011BBBuuuuuu111110. */
+{ "setacc", 0x284D803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* setacc<.cc> b,b,u6 00101bbb110011011BBBuuuuuu1QQQQQ. */
+{ "setacc", 0x28CD8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* setacc b,b,s12 00101bbb100011011BBBssssssSSSSSS. */
+{ "setacc", 0x288D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* setacc a,limm,c 00101110000011011111CCCCCCAAAAAA. */
+{ "setacc", 0x2E0DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* setacc a,b,limm 00101bbb000011011BBB111110AAAAAA. */
+{ "setacc", 0x280D8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* setacc 0,limm,c 00101110000011011111CCCCCC111110. */
+{ "setacc", 0x2E0DF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* setacc 0,b,limm 00101bbb000011011BBB111110111110. */
+{ "setacc", 0x280D8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* setacc<.cc> b,b,limm 00101bbb110011011BBB1111100QQQQQ. */
+{ "setacc", 0x28CD8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* setacc<.cc> 0,limm,c 00101110110011011111CCCCCC0QQQQQ. */
+{ "setacc", 0x2ECDF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* setacc a,limm,u6 00101110010011011111uuuuuuAAAAAA. */
+{ "setacc", 0x2E4DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* setacc 0,limm,u6 00101110010011011111uuuuuu111110. */
+{ "setacc", 0x2E4DF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* setacc<.cc> 0,limm,u6 00101110110011011111uuuuuu1QQQQQ. */
+{ "setacc", 0x2ECDF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* setacc 0,limm,s12 00101110100011011111ssssssSSSSSS. */
+{ "setacc", 0x2E8DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* setacc a,limm,limm 00101110000011011111111110AAAAAA. */
+{ "setacc", 0x2E0DFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* setacc 0,limm,limm 00101110000011011111111110111110. */
+{ "setacc", 0x2E0DFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* setacc<.cc> 0,limm,limm 001011101100110111111111100QQQQQ. */
+{ "setacc", 0x2ECDFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* seteq<.f> a,b,c 00100bbb00111000FBBBCCCCCCAAAAAA. */
+{ "seteq", 0x20380000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* seteq<.f> 0,b,c 00100bbb00111000FBBBCCCCCC111110. */
+{ "seteq", 0x2038003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* seteq<.f><.cc> b,b,c 00100bbb11111000FBBBCCCCCC0QQQQQ. */
+{ "seteq", 0x20F80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* seteq<.f> a,b,u6 00100bbb01111000FBBBuuuuuuAAAAAA. */
+{ "seteq", 0x20780000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* seteq<.f> 0,b,u6 00100bbb01111000FBBBuuuuuu111110. */
+{ "seteq", 0x2078003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* seteq<.f><.cc> b,b,u6 00100bbb11111000FBBBuuuuuu1QQQQQ. */
+{ "seteq", 0x20F80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* seteq<.f> b,b,s12 00100bbb10111000FBBBssssssSSSSSS. */
+{ "seteq", 0x20B80000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* seteq<.f> a,limm,c 0010011000111000F111CCCCCCAAAAAA. */
+{ "seteq", 0x26387000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* seteq<.f> a,b,limm 00100bbb00111000FBBB111110AAAAAA. */
+{ "seteq", 0x20380F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* seteq<.f> 0,limm,c 0010011000111000F111CCCCCC111110. */
+{ "seteq", 0x2638703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* seteq<.f> 0,b,limm 00100bbb00111000FBBB111110111110. */
+{ "seteq", 0x20380FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* seteq<.f><.cc> b,b,limm 00100bbb11111000FBBB1111100QQQQQ. */
+{ "seteq", 0x20F80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* seteq<.f><.cc> 0,limm,c 0010011011111000F111CCCCCC0QQQQQ. */
+{ "seteq", 0x26F87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* seteq<.f> a,limm,u6 0010011001111000F111uuuuuuAAAAAA. */
+{ "seteq", 0x26787000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seteq<.f> 0,limm,u6 0010011001111000F111uuuuuu111110. */
+{ "seteq", 0x2678703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seteq<.f><.cc> 0,limm,u6 0010011011111000F111uuuuuu1QQQQQ. */
+{ "seteq", 0x26F87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* seteq<.f> 0,limm,s12 0010011010111000F111ssssssSSSSSS. */
+{ "seteq", 0x26B87000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* seteq<.f> a,limm,limm 0010011000111000F111111110AAAAAA. */
+{ "seteq", 0x26387F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* seteq<.f> 0,limm,limm 0010011000111000F111111110111110. */
+{ "seteq", 0x26387FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* seteq<.f><.cc> 0,limm,limm 0010011011111000F1111111100QQQQQ. */
+{ "seteq", 0x26F87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* seteql<.f> RA,RB,RC 01011bbb00111000FBBBccccccaaaaaa. */
+{ "seteql", 0x58380000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* seteql<.f> 0,RB,RC 01011bbb00111000FBBBcccccc111110. */
+{ "seteql", 0x5838003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* seteql<.f><.cc> RB,RB,RC 01011bbb11111000FBBBcccccc0QQQQQ. */
+{ "seteql", 0x58F80000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* seteql<.f> RA,RB,u6 01011bbb01111000FBBBuuuuuuaaaaaa. */
+{ "seteql", 0x58780000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* seteql<.f> 0,RB,u6 01011bbb01111000FBBBuuuuuu111110. */
+{ "seteql", 0x5878003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* seteql<.f><.cc> RB,RB,u6 01011bbb11111000FBBBuuuuuu1QQQQQ. */
+{ "seteql", 0x58F80020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* seteql<.f> RB,RB,s12 01011bbb10111000FBBBssssssSSSSSS. */
+{ "seteql", 0x58B80000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* seteql<.f> RA,ximm,RC 0101110000111000F111ccccccaaaaaa. */
+{ "seteql", 0x5C387000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* seteql<.f> RA,RB,ximm 01011bbb00111000FBBB111100aaaaaa. */
+{ "seteql", 0x58380F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* seteql<.f> 0,ximm,RC 0101110000111000F111cccccc111110. */
+{ "seteql", 0x5C38703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* seteql<.f> 0,RB,ximm 01011bbb00111000FBBB111100111110. */
+{ "seteql", 0x58380F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* seteql<.f><.cc> 0,ximm,RC 0101110011111000F111cccccc0QQQQQ. */
+{ "seteql", 0x5CF87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* seteql<.f><.cc> RB,RB,ximm 01011bbb11111000FBBB1111000QQQQQ. */
+{ "seteql", 0x58F80F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* seteql<.f> RA,ximm,u6 0101110001111000F111uuuuuuaaaaaa. */
+{ "seteql", 0x5C787000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* seteql<.f> 0,ximm,u6 0101110001111000F111uuuuuu111110. */
+{ "seteql", 0x5C78703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* seteql<.f><.cc> 0,ximm,u6 0101110011111000F111uuuuuu1QQQQQ. */
+{ "seteql", 0x5CF87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* seteql<.f> RA,limm,RC 0101111000111000F111ccccccaaaaaa. */
+{ "seteql", 0x5E387000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* seteql<.f> RA,RB,limm 01011bbb00111000FBBB111110aaaaaa. */
+{ "seteql", 0x58380F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* seteql<.f> 0,limm,RC 0101111000111000F111cccccc111110. */
+{ "seteql", 0x5E38703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* seteql<.f> 0,RB,limm 01011bbb00111000FBBB111110111110. */
+{ "seteql", 0x58380FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* seteql<.f><.cc> 0,limm,RC 0101111011111000F111cccccc0QQQQQ. */
+{ "seteql", 0x5EF87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* seteql<.f><.cc> RB,RB,limm 01011bbb11111000FBBB1111100QQQQQ. */
+{ "seteql", 0x58F80F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* seteql<.f> RA,limm,u6 0101111001111000F111uuuuuuaaaaaa. */
+{ "seteql", 0x5E787000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seteql<.f> 0,limm,u6 0101111001111000F111uuuuuu111110. */
+{ "seteql", 0x5E78703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seteql<.f><.cc> 0,limm,u6 0101111011111000F111uuuuuu1QQQQQ. */
+{ "seteql", 0x5EF87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* seteql<.f> 0,ximm,s12 0101110010111000F111ssssssSSSSSS. */
+{ "seteql", 0x5CB87000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* seteql<.f> 0,limm,s12 0101111010111000F111ssssssSSSSSS. */
+{ "seteql", 0x5EB87000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* seteql<.f> RA,ximm,ximm 0101110000111000F111111100aaaaaa. */
+{ "seteql", 0x5C387F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* seteql<.f> 0,ximm,ximm 0101110000111000F111111100111110. */
+{ "seteql", 0x5C387F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* seteql<.f><.cc> 0,ximm,ximm 0101110011111000F1111111000QQQQQ. */
+{ "seteql", 0x5CF87F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* seteql<.f> RA,limm,limm 0101111000111000F111111110aaaaaa. */
+{ "seteql", 0x5E387F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* seteql<.f> 0,limm,limm 0101111000111000F111111110111110. */
+{ "seteql", 0x5E387FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* seteql<.f><.cc> 0,limm,limm 0101111011111000F1111111100QQQQQ. */
+{ "seteql", 0x5EF87F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setge<.f> a,b,c 00100bbb00111011FBBBCCCCCCAAAAAA. */
+{ "setge", 0x203B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setge<.f> 0,b,c 00100bbb00111011FBBBCCCCCC111110. */
+{ "setge", 0x203B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setge<.f><.cc> b,b,c 00100bbb11111011FBBBCCCCCC0QQQQQ. */
+{ "setge", 0x20FB0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setge<.f> a,b,u6 00100bbb01111011FBBBuuuuuuAAAAAA. */
+{ "setge", 0x207B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setge<.f> 0,b,u6 00100bbb01111011FBBBuuuuuu111110. */
+{ "setge", 0x207B003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setge<.f><.cc> b,b,u6 00100bbb11111011FBBBuuuuuu1QQQQQ. */
+{ "setge", 0x20FB0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setge<.f> b,b,s12 00100bbb10111011FBBBssssssSSSSSS. */
+{ "setge", 0x20BB0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setge<.f> a,limm,c 0010011000111011F111CCCCCCAAAAAA. */
+{ "setge", 0x263B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setge<.f> a,b,limm 00100bbb00111011FBBB111110AAAAAA. */
+{ "setge", 0x203B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setge<.f> 0,limm,c 0010011000111011F111CCCCCC111110. */
+{ "setge", 0x263B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setge<.f> 0,b,limm 00100bbb00111011FBBB111110111110. */
+{ "setge", 0x203B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setge<.f><.cc> b,b,limm 00100bbb11111011FBBB1111100QQQQQ. */
+{ "setge", 0x20FB0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setge<.f><.cc> 0,limm,c 0010011011111011F111CCCCCC0QQQQQ. */
+{ "setge", 0x26FB7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setge<.f> a,limm,u6 0010011001111011F111uuuuuuAAAAAA. */
+{ "setge", 0x267B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setge<.f> 0,limm,u6 0010011001111011F111uuuuuu111110. */
+{ "setge", 0x267B703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setge<.f><.cc> 0,limm,u6 0010011011111011F111uuuuuu1QQQQQ. */
+{ "setge", 0x26FB7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setge<.f> 0,limm,s12 0010011010111011F111ssssssSSSSSS. */
+{ "setge", 0x26BB7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setge<.f> a,limm,limm 0010011000111011F111111110AAAAAA. */
+{ "setge", 0x263B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setge<.f> 0,limm,limm 0010011000111011F111111110111110. */
+{ "setge", 0x263B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setge<.f><.cc> 0,limm,limm 0010011011111011F1111111100QQQQQ. */
+{ "setge", 0x26FB7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setgel<.f> RA,RB,RC 01011bbb00111011FBBBccccccaaaaaa. */
+{ "setgel", 0x583B0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setgel<.f> 0,RB,RC 01011bbb00111011FBBBcccccc111110. */
+{ "setgel", 0x583B003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setgel<.f><.cc> RB,RB,RC 01011bbb11111011FBBBcccccc0QQQQQ. */
+{ "setgel", 0x58FB0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setgel<.f> RA,RB,u6 01011bbb01111011FBBBuuuuuuaaaaaa. */
+{ "setgel", 0x587B0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setgel<.f> 0,RB,u6 01011bbb01111011FBBBuuuuuu111110. */
+{ "setgel", 0x587B003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setgel<.f><.cc> RB,RB,u6 01011bbb11111011FBBBuuuuuu1QQQQQ. */
+{ "setgel", 0x58FB0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgel<.f> RB,RB,s12 01011bbb10111011FBBBssssssSSSSSS. */
+{ "setgel", 0x58BB0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setgel<.f> RA,ximm,RC 0101110000111011F111ccccccaaaaaa. */
+{ "setgel", 0x5C3B7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setgel<.f> RA,RB,ximm 01011bbb00111011FBBB111100aaaaaa. */
+{ "setgel", 0x583B0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setgel<.f> 0,ximm,RC 0101110000111011F111cccccc111110. */
+{ "setgel", 0x5C3B703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setgel<.f> 0,RB,ximm 01011bbb00111011FBBB111100111110. */
+{ "setgel", 0x583B0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setgel<.f><.cc> 0,ximm,RC 0101110011111011F111cccccc0QQQQQ. */
+{ "setgel", 0x5CFB7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setgel<.f><.cc> RB,RB,ximm 01011bbb11111011FBBB1111000QQQQQ. */
+{ "setgel", 0x58FB0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setgel<.f> RA,ximm,u6 0101110001111011F111uuuuuuaaaaaa. */
+{ "setgel", 0x5C7B7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setgel<.f> 0,ximm,u6 0101110001111011F111uuuuuu111110. */
+{ "setgel", 0x5C7B703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setgel<.f><.cc> 0,ximm,u6 0101110011111011F111uuuuuu1QQQQQ. */
+{ "setgel", 0x5CFB7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgel<.f> RA,limm,RC 0101111000111011F111ccccccaaaaaa. */
+{ "setgel", 0x5E3B7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setgel<.f> RA,RB,limm 01011bbb00111011FBBB111110aaaaaa. */
+{ "setgel", 0x583B0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setgel<.f> 0,limm,RC 0101111000111011F111cccccc111110. */
+{ "setgel", 0x5E3B703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setgel<.f> 0,RB,limm 01011bbb00111011FBBB111110111110. */
+{ "setgel", 0x583B0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setgel<.f><.cc> 0,limm,RC 0101111011111011F111cccccc0QQQQQ. */
+{ "setgel", 0x5EFB7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setgel<.f><.cc> RB,RB,limm 01011bbb11111011FBBB1111100QQQQQ. */
+{ "setgel", 0x58FB0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setgel<.f> RA,limm,u6 0101111001111011F111uuuuuuaaaaaa. */
+{ "setgel", 0x5E7B7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgel<.f> 0,limm,u6 0101111001111011F111uuuuuu111110. */
+{ "setgel", 0x5E7B703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgel<.f><.cc> 0,limm,u6 0101111011111011F111uuuuuu1QQQQQ. */
+{ "setgel", 0x5EFB7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgel<.f> 0,ximm,s12 0101110010111011F111ssssssSSSSSS. */
+{ "setgel", 0x5CBB7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setgel<.f> 0,limm,s12 0101111010111011F111ssssssSSSSSS. */
+{ "setgel", 0x5EBB7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setgel<.f> RA,ximm,ximm 0101110000111011F111111100aaaaaa. */
+{ "setgel", 0x5C3B7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setgel<.f> 0,ximm,ximm 0101110000111011F111111100111110. */
+{ "setgel", 0x5C3B7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setgel<.f><.cc> 0,ximm,ximm 0101110011111011F1111111000QQQQQ. */
+{ "setgel", 0x5CFB7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setgel<.f> RA,limm,limm 0101111000111011F111111110aaaaaa. */
+{ "setgel", 0x5E3B7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setgel<.f> 0,limm,limm 0101111000111011F111111110111110. */
+{ "setgel", 0x5E3B7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setgel<.f><.cc> 0,limm,limm 0101111011111011F1111111100QQQQQ. */
+{ "setgel", 0x5EFB7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setgt<.f> a,b,c 00100bbb00111111FBBBCCCCCCAAAAAA. */
+{ "setgt", 0x203F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setgt<.f> 0,b,c 00100bbb00111111FBBBCCCCCC111110. */
+{ "setgt", 0x203F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setgt<.f><.cc> b,b,c 00100bbb11111111FBBBCCCCCC0QQQQQ. */
+{ "setgt", 0x20FF0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setgt<.f> a,b,u6 00100bbb01111111FBBBuuuuuuAAAAAA. */
+{ "setgt", 0x207F0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setgt<.f> 0,b,u6 00100bbb01111111FBBBuuuuuu111110. */
+{ "setgt", 0x207F003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setgt<.f><.cc> b,b,u6 00100bbb11111111FBBBuuuuuu1QQQQQ. */
+{ "setgt", 0x20FF0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgt<.f> b,b,s12 00100bbb10111111FBBBssssssSSSSSS. */
+{ "setgt", 0x20BF0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setgt<.f> a,limm,c 0010011000111111F111CCCCCCAAAAAA. */
+{ "setgt", 0x263F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setgt<.f> a,b,limm 00100bbb00111111FBBB111110AAAAAA. */
+{ "setgt", 0x203F0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setgt<.f> 0,limm,c 0010011000111111F111CCCCCC111110. */
+{ "setgt", 0x263F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setgt<.f> 0,b,limm 00100bbb00111111FBBB111110111110. */
+{ "setgt", 0x203F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setgt<.f><.cc> b,b,limm 00100bbb11111111FBBB1111100QQQQQ. */
+{ "setgt", 0x20FF0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setgt<.f><.cc> 0,limm,c 0010011011111111F111CCCCCC0QQQQQ. */
+{ "setgt", 0x26FF7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setgt<.f> a,limm,u6 0010011001111111F111uuuuuuAAAAAA. */
+{ "setgt", 0x267F7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgt<.f> 0,limm,u6 0010011001111111F111uuuuuu111110. */
+{ "setgt", 0x267F703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgt<.f><.cc> 0,limm,u6 0010011011111111F111uuuuuu1QQQQQ. */
+{ "setgt", 0x26FF7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgt<.f> 0,limm,s12 0010011010111111F111ssssssSSSSSS. */
+{ "setgt", 0x26BF7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setgt<.f> a,limm,limm 0010011000111111F111111110AAAAAA. */
+{ "setgt", 0x263F7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setgt<.f> 0,limm,limm 0010011000111111F111111110111110. */
+{ "setgt", 0x263F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setgt<.f><.cc> 0,limm,limm 0010011011111111F1111111100QQQQQ. */
+{ "setgt", 0x26FF7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,RB,RC 01011bbb00111111FBBBccccccaaaaaa. */
+{ "setgtl", 0x583F0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setgtl<.f> 0,RB,RC 01011bbb00111111FBBBcccccc111110. */
+{ "setgtl", 0x583F003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setgtl<.f><.cc> RB,RB,RC 01011bbb11111111FBBBcccccc0QQQQQ. */
+{ "setgtl", 0x58FF0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,RB,u6 01011bbb01111111FBBBuuuuuuaaaaaa. */
+{ "setgtl", 0x587F0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f> 0,RB,u6 01011bbb01111111FBBBuuuuuu111110. */
+{ "setgtl", 0x587F003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f><.cc> RB,RB,u6 01011bbb11111111FBBBuuuuuu1QQQQQ. */
+{ "setgtl", 0x58FF0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgtl<.f> RB,RB,s12 01011bbb10111111FBBBssssssSSSSSS. */
+{ "setgtl", 0x58BF0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setgtl<.f> RA,ximm,RC 0101110000111111F111ccccccaaaaaa. */
+{ "setgtl", 0x5C3F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setgtl<.f> RA,RB,ximm 01011bbb00111111FBBB111100aaaaaa. */
+{ "setgtl", 0x583F0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setgtl<.f> 0,ximm,RC 0101110000111111F111cccccc111110. */
+{ "setgtl", 0x5C3F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setgtl<.f> 0,RB,ximm 01011bbb00111111FBBB111100111110. */
+{ "setgtl", 0x583F0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setgtl<.f><.cc> 0,ximm,RC 0101110011111111F111cccccc0QQQQQ. */
+{ "setgtl", 0x5CFF7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setgtl<.f><.cc> RB,RB,ximm 01011bbb11111111FBBB1111000QQQQQ. */
+{ "setgtl", 0x58FF0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,ximm,u6 0101110001111111F111uuuuuuaaaaaa. */
+{ "setgtl", 0x5C7F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f> 0,ximm,u6 0101110001111111F111uuuuuu111110. */
+{ "setgtl", 0x5C7F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f><.cc> 0,ximm,u6 0101110011111111F111uuuuuu1QQQQQ. */
+{ "setgtl", 0x5CFF7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,limm,RC 0101111000111111F111ccccccaaaaaa. */
+{ "setgtl", 0x5E3F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setgtl<.f> RA,RB,limm 01011bbb00111111FBBB111110aaaaaa. */
+{ "setgtl", 0x583F0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setgtl<.f> 0,limm,RC 0101111000111111F111cccccc111110. */
+{ "setgtl", 0x5E3F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setgtl<.f> 0,RB,limm 01011bbb00111111FBBB111110111110. */
+{ "setgtl", 0x583F0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setgtl<.f><.cc> 0,limm,RC 0101111011111111F111cccccc0QQQQQ. */
+{ "setgtl", 0x5EFF7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setgtl<.f><.cc> RB,RB,limm 01011bbb11111111FBBB1111100QQQQQ. */
+{ "setgtl", 0x58FF0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,limm,u6 0101111001111111F111uuuuuuaaaaaa. */
+{ "setgtl", 0x5E7F7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f> 0,limm,u6 0101111001111111F111uuuuuu111110. */
+{ "setgtl", 0x5E7F703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setgtl<.f><.cc> 0,limm,u6 0101111011111111F111uuuuuu1QQQQQ. */
+{ "setgtl", 0x5EFF7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setgtl<.f> 0,ximm,s12 0101110010111111F111ssssssSSSSSS. */
+{ "setgtl", 0x5CBF7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setgtl<.f> 0,limm,s12 0101111010111111F111ssssssSSSSSS. */
+{ "setgtl", 0x5EBF7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setgtl<.f> RA,ximm,ximm 0101110000111111F111111100aaaaaa. */
+{ "setgtl", 0x5C3F7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setgtl<.f> 0,ximm,ximm 0101110000111111F111111100111110. */
+{ "setgtl", 0x5C3F7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setgtl<.f><.cc> 0,ximm,ximm 0101110011111111F1111111000QQQQQ. */
+{ "setgtl", 0x5CFF7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setgtl<.f> RA,limm,limm 0101111000111111F111111110aaaaaa. */
+{ "setgtl", 0x5E3F7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setgtl<.f> 0,limm,limm 0101111000111111F111111110111110. */
+{ "setgtl", 0x5E3F7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setgtl<.f><.cc> 0,limm,limm 0101111011111111F1111111100QQQQQ. */
+{ "setgtl", 0x5EFF7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* seths<.f> a,b,c 00100bbb00111101FBBBCCCCCCAAAAAA. */
+{ "seths", 0x203D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* seths<.f> 0,b,c 00100bbb00111101FBBBCCCCCC111110. */
+{ "seths", 0x203D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* seths<.f><.cc> b,b,c 00100bbb11111101FBBBCCCCCC0QQQQQ. */
+{ "seths", 0x20FD0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* seths<.f> a,b,u6 00100bbb01111101FBBBuuuuuuAAAAAA. */
+{ "seths", 0x207D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* seths<.f> 0,b,u6 00100bbb01111101FBBBuuuuuu111110. */
+{ "seths", 0x207D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* seths<.f><.cc> b,b,u6 00100bbb11111101FBBBuuuuuu1QQQQQ. */
+{ "seths", 0x20FD0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* seths<.f> b,b,s12 00100bbb10111101FBBBssssssSSSSSS. */
+{ "seths", 0x20BD0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* seths<.f> a,limm,c 0010011000111101F111CCCCCCAAAAAA. */
+{ "seths", 0x263D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* seths<.f> a,b,limm 00100bbb00111101FBBB111110AAAAAA. */
+{ "seths", 0x203D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* seths<.f> 0,limm,c 0010011000111101F111CCCCCC111110. */
+{ "seths", 0x263D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* seths<.f> 0,b,limm 00100bbb00111101FBBB111110111110. */
+{ "seths", 0x203D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* seths<.f><.cc> b,b,limm 00100bbb11111101FBBB1111100QQQQQ. */
+{ "seths", 0x20FD0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* seths<.f><.cc> 0,limm,c 0010011011111101F111CCCCCC0QQQQQ. */
+{ "seths", 0x26FD7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* seths<.f> a,limm,u6 0010011001111101F111uuuuuuAAAAAA. */
+{ "seths", 0x267D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seths<.f> 0,limm,u6 0010011001111101F111uuuuuu111110. */
+{ "seths", 0x267D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* seths<.f><.cc> 0,limm,u6 0010011011111101F111uuuuuu1QQQQQ. */
+{ "seths", 0x26FD7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* seths<.f> 0,limm,s12 0010011010111101F111ssssssSSSSSS. */
+{ "seths", 0x26BD7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* seths<.f> a,limm,limm 0010011000111101F111111110AAAAAA. */
+{ "seths", 0x263D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* seths<.f> 0,limm,limm 0010011000111101F111111110111110. */
+{ "seths", 0x263D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* seths<.f><.cc> 0,limm,limm 0010011011111101F1111111100QQQQQ. */
+{ "seths", 0x26FD7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,RB,RC 01011bbb00111101FBBBccccccaaaaaa. */
+{ "sethsl", 0x583D0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sethsl<.f> 0,RB,RC 01011bbb00111101FBBBcccccc111110. */
+{ "sethsl", 0x583D003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sethsl<.f><.cc> RB,RB,RC 01011bbb11111101FBBBcccccc0QQQQQ. */
+{ "sethsl", 0x58FD0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,RB,u6 01011bbb01111101FBBBuuuuuuaaaaaa. */
+{ "sethsl", 0x587D0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f> 0,RB,u6 01011bbb01111101FBBBuuuuuu111110. */
+{ "sethsl", 0x587D003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f><.cc> RB,RB,u6 01011bbb11111101FBBBuuuuuu1QQQQQ. */
+{ "sethsl", 0x58FD0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sethsl<.f> RB,RB,s12 01011bbb10111101FBBBssssssSSSSSS. */
+{ "sethsl", 0x58BD0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sethsl<.f> RA,ximm,RC 0101110000111101F111ccccccaaaaaa. */
+{ "sethsl", 0x5C3D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* sethsl<.f> RA,RB,ximm 01011bbb00111101FBBB111100aaaaaa. */
+{ "sethsl", 0x583D0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* sethsl<.f> 0,ximm,RC 0101110000111101F111cccccc111110. */
+{ "sethsl", 0x5C3D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* sethsl<.f> 0,RB,ximm 01011bbb00111101FBBB111100111110. */
+{ "sethsl", 0x583D0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* sethsl<.f><.cc> 0,ximm,RC 0101110011111101F111cccccc0QQQQQ. */
+{ "sethsl", 0x5CFD7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* sethsl<.f><.cc> RB,RB,ximm 01011bbb11111101FBBB1111000QQQQQ. */
+{ "sethsl", 0x58FD0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,ximm,u6 0101110001111101F111uuuuuuaaaaaa. */
+{ "sethsl", 0x5C7D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f> 0,ximm,u6 0101110001111101F111uuuuuu111110. */
+{ "sethsl", 0x5C7D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f><.cc> 0,ximm,u6 0101110011111101F111uuuuuu1QQQQQ. */
+{ "sethsl", 0x5CFD7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,limm,RC 0101111000111101F111ccccccaaaaaa. */
+{ "sethsl", 0x5E3D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sethsl<.f> RA,RB,limm 01011bbb00111101FBBB111110aaaaaa. */
+{ "sethsl", 0x583D0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sethsl<.f> 0,limm,RC 0101111000111101F111cccccc111110. */
+{ "sethsl", 0x5E3D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sethsl<.f> 0,RB,limm 01011bbb00111101FBBB111110111110. */
+{ "sethsl", 0x583D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sethsl<.f><.cc> 0,limm,RC 0101111011111101F111cccccc0QQQQQ. */
+{ "sethsl", 0x5EFD7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sethsl<.f><.cc> RB,RB,limm 01011bbb11111101FBBB1111100QQQQQ. */
+{ "sethsl", 0x58FD0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,limm,u6 0101111001111101F111uuuuuuaaaaaa. */
+{ "sethsl", 0x5E7D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f> 0,limm,u6 0101111001111101F111uuuuuu111110. */
+{ "sethsl", 0x5E7D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sethsl<.f><.cc> 0,limm,u6 0101111011111101F111uuuuuu1QQQQQ. */
+{ "sethsl", 0x5EFD7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sethsl<.f> 0,ximm,s12 0101110010111101F111ssssssSSSSSS. */
+{ "sethsl", 0x5CBD7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* sethsl<.f> 0,limm,s12 0101111010111101F111ssssssSSSSSS. */
+{ "sethsl", 0x5EBD7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sethsl<.f> RA,ximm,ximm 0101110000111101F111111100aaaaaa. */
+{ "sethsl", 0x5C3D7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* sethsl<.f> 0,ximm,ximm 0101110000111101F111111100111110. */
+{ "sethsl", 0x5C3D7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* sethsl<.f><.cc> 0,ximm,ximm 0101110011111101F1111111000QQQQQ. */
+{ "sethsl", 0x5CFD7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* sethsl<.f> RA,limm,limm 0101111000111101F111111110aaaaaa. */
+{ "sethsl", 0x5E3D7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sethsl<.f> 0,limm,limm 0101111000111101F111111110111110. */
+{ "sethsl", 0x5E3D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sethsl<.f><.cc> 0,limm,limm 0101111011111101F1111111100QQQQQ. */
+{ "sethsl", 0x5EFD7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* seti c 00100110001011110000CCCCCC111111. */
+{ "seti", 0x262F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { RC }, { 0 }},
+
+/* seti u6 00100110011011110000uuuuuu111111. */
+{ "seti", 0x266F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { UIMM6_20 }, { 0 }},
+
+/* seti limm 00100110001011110000111110111111. */
+{ "seti", 0x262F0FBF, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { LIMM }, { 0 }},
+
+/* seti 00100110011011110000000000111111. */
+{ "seti", 0x266F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* setle<.f> a,b,c 00100bbb00111110FBBBCCCCCCAAAAAA. */
+{ "setle", 0x203E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setle<.f> 0,b,c 00100bbb00111110FBBBCCCCCC111110. */
+{ "setle", 0x203E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setle<.f><.cc> b,b,c 00100bbb11111110FBBBCCCCCC0QQQQQ. */
+{ "setle", 0x20FE0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setle<.f> a,b,u6 00100bbb01111110FBBBuuuuuuAAAAAA. */
+{ "setle", 0x207E0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setle<.f> 0,b,u6 00100bbb01111110FBBBuuuuuu111110. */
+{ "setle", 0x207E003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setle<.f><.cc> b,b,u6 00100bbb11111110FBBBuuuuuu1QQQQQ. */
+{ "setle", 0x20FE0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setle<.f> b,b,s12 00100bbb10111110FBBBssssssSSSSSS. */
+{ "setle", 0x20BE0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setle<.f> a,limm,c 0010011000111110F111CCCCCCAAAAAA. */
+{ "setle", 0x263E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setle<.f> a,b,limm 00100bbb00111110FBBB111110AAAAAA. */
+{ "setle", 0x203E0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setle<.f> 0,limm,c 0010011000111110F111CCCCCC111110. */
+{ "setle", 0x263E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setle<.f> 0,b,limm 00100bbb00111110FBBB111110111110. */
+{ "setle", 0x203E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setle<.f><.cc> b,b,limm 00100bbb11111110FBBB1111100QQQQQ. */
+{ "setle", 0x20FE0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setle<.f><.cc> 0,limm,c 0010011011111110F111CCCCCC0QQQQQ. */
+{ "setle", 0x26FE7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setle<.f> a,limm,u6 0010011001111110F111uuuuuuAAAAAA. */
+{ "setle", 0x267E7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setle<.f> 0,limm,u6 0010011001111110F111uuuuuu111110. */
+{ "setle", 0x267E703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setle<.f><.cc> 0,limm,u6 0010011011111110F111uuuuuu1QQQQQ. */
+{ "setle", 0x26FE7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setle<.f> 0,limm,s12 0010011010111110F111ssssssSSSSSS. */
+{ "setle", 0x26BE7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setle<.f> a,limm,limm 0010011000111110F111111110AAAAAA. */
+{ "setle", 0x263E7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setle<.f> 0,limm,limm 0010011000111110F111111110111110. */
+{ "setle", 0x263E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setle<.f><.cc> 0,limm,limm 0010011011111110F1111111100QQQQQ. */
+{ "setle", 0x26FE7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setlel<.f> RA,RB,RC 01011bbb00111110FBBBccccccaaaaaa. */
+{ "setlel", 0x583E0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setlel<.f> 0,RB,RC 01011bbb00111110FBBBcccccc111110. */
+{ "setlel", 0x583E003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setlel<.f><.cc> RB,RB,RC 01011bbb11111110FBBBcccccc0QQQQQ. */
+{ "setlel", 0x58FE0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setlel<.f> RA,RB,u6 01011bbb01111110FBBBuuuuuuaaaaaa. */
+{ "setlel", 0x587E0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setlel<.f> 0,RB,u6 01011bbb01111110FBBBuuuuuu111110. */
+{ "setlel", 0x587E003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setlel<.f><.cc> RB,RB,u6 01011bbb11111110FBBBuuuuuu1QQQQQ. */
+{ "setlel", 0x58FE0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlel<.f> RB,RB,s12 01011bbb10111110FBBBssssssSSSSSS. */
+{ "setlel", 0x58BE0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setlel<.f> RA,ximm,RC 0101110000111110F111ccccccaaaaaa. */
+{ "setlel", 0x5C3E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setlel<.f> RA,RB,ximm 01011bbb00111110FBBB111100aaaaaa. */
+{ "setlel", 0x583E0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setlel<.f> 0,ximm,RC 0101110000111110F111cccccc111110. */
+{ "setlel", 0x5C3E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setlel<.f> 0,RB,ximm 01011bbb00111110FBBB111100111110. */
+{ "setlel", 0x583E0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setlel<.f><.cc> 0,ximm,RC 0101110011111110F111cccccc0QQQQQ. */
+{ "setlel", 0x5CFE7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setlel<.f><.cc> RB,RB,ximm 01011bbb11111110FBBB1111000QQQQQ. */
+{ "setlel", 0x58FE0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setlel<.f> RA,ximm,u6 0101110001111110F111uuuuuuaaaaaa. */
+{ "setlel", 0x5C7E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setlel<.f> 0,ximm,u6 0101110001111110F111uuuuuu111110. */
+{ "setlel", 0x5C7E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setlel<.f><.cc> 0,ximm,u6 0101110011111110F111uuuuuu1QQQQQ. */
+{ "setlel", 0x5CFE7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlel<.f> RA,limm,RC 0101111000111110F111ccccccaaaaaa. */
+{ "setlel", 0x5E3E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setlel<.f> RA,RB,limm 01011bbb00111110FBBB111110aaaaaa. */
+{ "setlel", 0x583E0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setlel<.f> 0,limm,RC 0101111000111110F111cccccc111110. */
+{ "setlel", 0x5E3E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setlel<.f> 0,RB,limm 01011bbb00111110FBBB111110111110. */
+{ "setlel", 0x583E0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setlel<.f><.cc> 0,limm,RC 0101111011111110F111cccccc0QQQQQ. */
+{ "setlel", 0x5EFE7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setlel<.f><.cc> RB,RB,limm 01011bbb11111110FBBB1111100QQQQQ. */
+{ "setlel", 0x58FE0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setlel<.f> RA,limm,u6 0101111001111110F111uuuuuuaaaaaa. */
+{ "setlel", 0x5E7E7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlel<.f> 0,limm,u6 0101111001111110F111uuuuuu111110. */
+{ "setlel", 0x5E7E703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlel<.f><.cc> 0,limm,u6 0101111011111110F111uuuuuu1QQQQQ. */
+{ "setlel", 0x5EFE7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlel<.f> 0,ximm,s12 0101110010111110F111ssssssSSSSSS. */
+{ "setlel", 0x5CBE7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setlel<.f> 0,limm,s12 0101111010111110F111ssssssSSSSSS. */
+{ "setlel", 0x5EBE7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setlel<.f> RA,ximm,ximm 0101110000111110F111111100aaaaaa. */
+{ "setlel", 0x5C3E7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setlel<.f> 0,ximm,ximm 0101110000111110F111111100111110. */
+{ "setlel", 0x5C3E7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setlel<.f><.cc> 0,ximm,ximm 0101110011111110F1111111000QQQQQ. */
+{ "setlel", 0x5CFE7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setlel<.f> RA,limm,limm 0101111000111110F111111110aaaaaa. */
+{ "setlel", 0x5E3E7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setlel<.f> 0,limm,limm 0101111000111110F111111110111110. */
+{ "setlel", 0x5E3E7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setlel<.f><.cc> 0,limm,limm 0101111011111110F1111111100QQQQQ. */
+{ "setlel", 0x5EFE7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setlo<.f> a,b,c 00100bbb00111100FBBBCCCCCCAAAAAA. */
+{ "setlo", 0x203C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setlo<.f> 0,b,c 00100bbb00111100FBBBCCCCCC111110. */
+{ "setlo", 0x203C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setlo<.f><.cc> b,b,c 00100bbb11111100FBBBCCCCCC0QQQQQ. */
+{ "setlo", 0x20FC0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setlo<.f> a,b,u6 00100bbb01111100FBBBuuuuuuAAAAAA. */
+{ "setlo", 0x207C0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setlo<.f> 0,b,u6 00100bbb01111100FBBBuuuuuu111110. */
+{ "setlo", 0x207C003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setlo<.f><.cc> b,b,u6 00100bbb11111100FBBBuuuuuu1QQQQQ. */
+{ "setlo", 0x20FC0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlo<.f> b,b,s12 00100bbb10111100FBBBssssssSSSSSS. */
+{ "setlo", 0x20BC0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setlo<.f> a,limm,c 0010011000111100F111CCCCCCAAAAAA. */
+{ "setlo", 0x263C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setlo<.f> a,b,limm 00100bbb00111100FBBB111110AAAAAA. */
+{ "setlo", 0x203C0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setlo<.f> 0,limm,c 0010011000111100F111CCCCCC111110. */
+{ "setlo", 0x263C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setlo<.f> 0,b,limm 00100bbb00111100FBBB111110111110. */
+{ "setlo", 0x203C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setlo<.f><.cc> b,b,limm 00100bbb11111100FBBB1111100QQQQQ. */
+{ "setlo", 0x20FC0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setlo<.f><.cc> 0,limm,c 0010011011111100F111CCCCCC0QQQQQ. */
+{ "setlo", 0x26FC7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setlo<.f> a,limm,u6 0010011001111100F111uuuuuuAAAAAA. */
+{ "setlo", 0x267C7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlo<.f> 0,limm,u6 0010011001111100F111uuuuuu111110. */
+{ "setlo", 0x267C703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlo<.f><.cc> 0,limm,u6 0010011011111100F111uuuuuu1QQQQQ. */
+{ "setlo", 0x26FC7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlo<.f> 0,limm,s12 0010011010111100F111ssssssSSSSSS. */
+{ "setlo", 0x26BC7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setlo<.f> a,limm,limm 0010011000111100F111111110AAAAAA. */
+{ "setlo", 0x263C7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setlo<.f> 0,limm,limm 0010011000111100F111111110111110. */
+{ "setlo", 0x263C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setlo<.f><.cc> 0,limm,limm 0010011011111100F1111111100QQQQQ. */
+{ "setlo", 0x26FC7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setlol<.f> RA,RB,RC 01011bbb00111100FBBBccccccaaaaaa. */
+{ "setlol", 0x583C0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setlol<.f> 0,RB,RC 01011bbb00111100FBBBcccccc111110. */
+{ "setlol", 0x583C003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setlol<.f><.cc> RB,RB,RC 01011bbb11111100FBBBcccccc0QQQQQ. */
+{ "setlol", 0x58FC0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setlol<.f> RA,RB,u6 01011bbb01111100FBBBuuuuuuaaaaaa. */
+{ "setlol", 0x587C0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setlol<.f> 0,RB,u6 01011bbb01111100FBBBuuuuuu111110. */
+{ "setlol", 0x587C003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setlol<.f><.cc> RB,RB,u6 01011bbb11111100FBBBuuuuuu1QQQQQ. */
+{ "setlol", 0x58FC0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlol<.f> RB,RB,s12 01011bbb10111100FBBBssssssSSSSSS. */
+{ "setlol", 0x58BC0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setlol<.f> RA,ximm,RC 0101110000111100F111ccccccaaaaaa. */
+{ "setlol", 0x5C3C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setlol<.f> RA,RB,ximm 01011bbb00111100FBBB111100aaaaaa. */
+{ "setlol", 0x583C0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setlol<.f> 0,ximm,RC 0101110000111100F111cccccc111110. */
+{ "setlol", 0x5C3C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setlol<.f> 0,RB,ximm 01011bbb00111100FBBB111100111110. */
+{ "setlol", 0x583C0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setlol<.f><.cc> 0,ximm,RC 0101110011111100F111cccccc0QQQQQ. */
+{ "setlol", 0x5CFC7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setlol<.f><.cc> RB,RB,ximm 01011bbb11111100FBBB1111000QQQQQ. */
+{ "setlol", 0x58FC0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setlol<.f> RA,ximm,u6 0101110001111100F111uuuuuuaaaaaa. */
+{ "setlol", 0x5C7C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setlol<.f> 0,ximm,u6 0101110001111100F111uuuuuu111110. */
+{ "setlol", 0x5C7C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setlol<.f><.cc> 0,ximm,u6 0101110011111100F111uuuuuu1QQQQQ. */
+{ "setlol", 0x5CFC7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlol<.f> RA,limm,RC 0101111000111100F111ccccccaaaaaa. */
+{ "setlol", 0x5E3C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setlol<.f> RA,RB,limm 01011bbb00111100FBBB111110aaaaaa. */
+{ "setlol", 0x583C0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setlol<.f> 0,limm,RC 0101111000111100F111cccccc111110. */
+{ "setlol", 0x5E3C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setlol<.f> 0,RB,limm 01011bbb00111100FBBB111110111110. */
+{ "setlol", 0x583C0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setlol<.f><.cc> 0,limm,RC 0101111011111100F111cccccc0QQQQQ. */
+{ "setlol", 0x5EFC7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setlol<.f><.cc> RB,RB,limm 01011bbb11111100FBBB1111100QQQQQ. */
+{ "setlol", 0x58FC0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setlol<.f> RA,limm,u6 0101111001111100F111uuuuuuaaaaaa. */
+{ "setlol", 0x5E7C7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlol<.f> 0,limm,u6 0101111001111100F111uuuuuu111110. */
+{ "setlol", 0x5E7C703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlol<.f><.cc> 0,limm,u6 0101111011111100F111uuuuuu1QQQQQ. */
+{ "setlol", 0x5EFC7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlol<.f> 0,ximm,s12 0101110010111100F111ssssssSSSSSS. */
+{ "setlol", 0x5CBC7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setlol<.f> 0,limm,s12 0101111010111100F111ssssssSSSSSS. */
+{ "setlol", 0x5EBC7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setlol<.f> RA,ximm,ximm 0101110000111100F111111100aaaaaa. */
+{ "setlol", 0x5C3C7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setlol<.f> 0,ximm,ximm 0101110000111100F111111100111110. */
+{ "setlol", 0x5C3C7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setlol<.f><.cc> 0,ximm,ximm 0101110011111100F1111111000QQQQQ. */
+{ "setlol", 0x5CFC7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setlol<.f> RA,limm,limm 0101111000111100F111111110aaaaaa. */
+{ "setlol", 0x5E3C7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setlol<.f> 0,limm,limm 0101111000111100F111111110111110. */
+{ "setlol", 0x5E3C7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setlol<.f><.cc> 0,limm,limm 0101111011111100F1111111100QQQQQ. */
+{ "setlol", 0x5EFC7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setlt<.f> a,b,c 00100bbb00111010FBBBCCCCCCAAAAAA. */
+{ "setlt", 0x203A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setlt<.f> 0,b,c 00100bbb00111010FBBBCCCCCC111110. */
+{ "setlt", 0x203A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setlt<.f><.cc> b,b,c 00100bbb11111010FBBBCCCCCC0QQQQQ. */
+{ "setlt", 0x20FA0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setlt<.f> a,b,u6 00100bbb01111010FBBBuuuuuuAAAAAA. */
+{ "setlt", 0x207A0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setlt<.f> 0,b,u6 00100bbb01111010FBBBuuuuuu111110. */
+{ "setlt", 0x207A003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setlt<.f><.cc> b,b,u6 00100bbb11111010FBBBuuuuuu1QQQQQ. */
+{ "setlt", 0x20FA0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlt<.f> b,b,s12 00100bbb10111010FBBBssssssSSSSSS. */
+{ "setlt", 0x20BA0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setlt<.f> a,limm,c 0010011000111010F111CCCCCCAAAAAA. */
+{ "setlt", 0x263A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setlt<.f> a,b,limm 00100bbb00111010FBBB111110AAAAAA. */
+{ "setlt", 0x203A0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setlt<.f> 0,limm,c 0010011000111010F111CCCCCC111110. */
+{ "setlt", 0x263A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setlt<.f> 0,b,limm 00100bbb00111010FBBB111110111110. */
+{ "setlt", 0x203A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setlt<.f><.cc> b,b,limm 00100bbb11111010FBBB1111100QQQQQ. */
+{ "setlt", 0x20FA0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setlt<.f><.cc> 0,limm,c 0010011011111010F111CCCCCC0QQQQQ. */
+{ "setlt", 0x26FA7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setlt<.f> a,limm,u6 0010011001111010F111uuuuuuAAAAAA. */
+{ "setlt", 0x267A7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlt<.f> 0,limm,u6 0010011001111010F111uuuuuu111110. */
+{ "setlt", 0x267A703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setlt<.f><.cc> 0,limm,u6 0010011011111010F111uuuuuu1QQQQQ. */
+{ "setlt", 0x26FA7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setlt<.f> 0,limm,s12 0010011010111010F111ssssssSSSSSS. */
+{ "setlt", 0x26BA7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setlt<.f> a,limm,limm 0010011000111010F111111110AAAAAA. */
+{ "setlt", 0x263A7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setlt<.f> 0,limm,limm 0010011000111010F111111110111110. */
+{ "setlt", 0x263A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setlt<.f><.cc> 0,limm,limm 0010011011111010F1111111100QQQQQ. */
+{ "setlt", 0x26FA7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setltl<.f> RA,RB,RC 01011bbb00111010FBBBccccccaaaaaa. */
+{ "setltl", 0x583A0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setltl<.f> 0,RB,RC 01011bbb00111010FBBBcccccc111110. */
+{ "setltl", 0x583A003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setltl<.f><.cc> RB,RB,RC 01011bbb11111010FBBBcccccc0QQQQQ. */
+{ "setltl", 0x58FA0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setltl<.f> RA,RB,u6 01011bbb01111010FBBBuuuuuuaaaaaa. */
+{ "setltl", 0x587A0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setltl<.f> 0,RB,u6 01011bbb01111010FBBBuuuuuu111110. */
+{ "setltl", 0x587A003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setltl<.f><.cc> RB,RB,u6 01011bbb11111010FBBBuuuuuu1QQQQQ. */
+{ "setltl", 0x58FA0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setltl<.f> RB,RB,s12 01011bbb10111010FBBBssssssSSSSSS. */
+{ "setltl", 0x58BA0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setltl<.f> RA,ximm,RC 0101110000111010F111ccccccaaaaaa. */
+{ "setltl", 0x5C3A7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setltl<.f> RA,RB,ximm 01011bbb00111010FBBB111100aaaaaa. */
+{ "setltl", 0x583A0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setltl<.f> 0,ximm,RC 0101110000111010F111cccccc111110. */
+{ "setltl", 0x5C3A703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setltl<.f> 0,RB,ximm 01011bbb00111010FBBB111100111110. */
+{ "setltl", 0x583A0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setltl<.f><.cc> 0,ximm,RC 0101110011111010F111cccccc0QQQQQ. */
+{ "setltl", 0x5CFA7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setltl<.f><.cc> RB,RB,ximm 01011bbb11111010FBBB1111000QQQQQ. */
+{ "setltl", 0x58FA0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setltl<.f> RA,ximm,u6 0101110001111010F111uuuuuuaaaaaa. */
+{ "setltl", 0x5C7A7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setltl<.f> 0,ximm,u6 0101110001111010F111uuuuuu111110. */
+{ "setltl", 0x5C7A703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setltl<.f><.cc> 0,ximm,u6 0101110011111010F111uuuuuu1QQQQQ. */
+{ "setltl", 0x5CFA7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setltl<.f> RA,limm,RC 0101111000111010F111ccccccaaaaaa. */
+{ "setltl", 0x5E3A7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setltl<.f> RA,RB,limm 01011bbb00111010FBBB111110aaaaaa. */
+{ "setltl", 0x583A0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setltl<.f> 0,limm,RC 0101111000111010F111cccccc111110. */
+{ "setltl", 0x5E3A703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setltl<.f> 0,RB,limm 01011bbb00111010FBBB111110111110. */
+{ "setltl", 0x583A0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setltl<.f><.cc> 0,limm,RC 0101111011111010F111cccccc0QQQQQ. */
+{ "setltl", 0x5EFA7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setltl<.f><.cc> RB,RB,limm 01011bbb11111010FBBB1111100QQQQQ. */
+{ "setltl", 0x58FA0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setltl<.f> RA,limm,u6 0101111001111010F111uuuuuuaaaaaa. */
+{ "setltl", 0x5E7A7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setltl<.f> 0,limm,u6 0101111001111010F111uuuuuu111110. */
+{ "setltl", 0x5E7A703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setltl<.f><.cc> 0,limm,u6 0101111011111010F111uuuuuu1QQQQQ. */
+{ "setltl", 0x5EFA7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setltl<.f> 0,ximm,s12 0101110010111010F111ssssssSSSSSS. */
+{ "setltl", 0x5CBA7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setltl<.f> 0,limm,s12 0101111010111010F111ssssssSSSSSS. */
+{ "setltl", 0x5EBA7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setltl<.f> RA,ximm,ximm 0101110000111010F111111100aaaaaa. */
+{ "setltl", 0x5C3A7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setltl<.f> 0,ximm,ximm 0101110000111010F111111100111110. */
+{ "setltl", 0x5C3A7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setltl<.f><.cc> 0,ximm,ximm 0101110011111010F1111111000QQQQQ. */
+{ "setltl", 0x5CFA7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setltl<.f> RA,limm,limm 0101111000111010F111111110aaaaaa. */
+{ "setltl", 0x5E3A7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setltl<.f> 0,limm,limm 0101111000111010F111111110111110. */
+{ "setltl", 0x5E3A7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setltl<.f><.cc> 0,limm,limm 0101111011111010F1111111100QQQQQ. */
+{ "setltl", 0x5EFA7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setne<.f> a,b,c 00100bbb00111001FBBBCCCCCCAAAAAA. */
+{ "setne", 0x20390000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, RC }, { C_F }},
+
+/* setne<.f> 0,b,c 00100bbb00111001FBBBCCCCCC111110. */
+{ "setne", 0x2039003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, RC }, { C_F }},
+
+/* setne<.f><.cc> b,b,c 00100bbb11111001FBBBCCCCCC0QQQQQ. */
+{ "setne", 0x20F90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setne<.f> a,b,u6 00100bbb01111001FBBBuuuuuuAAAAAA. */
+{ "setne", 0x20790000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setne<.f> 0,b,u6 00100bbb01111001FBBBuuuuuu111110. */
+{ "setne", 0x2079003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setne<.f><.cc> b,b,u6 00100bbb11111001FBBBuuuuuu1QQQQQ. */
+{ "setne", 0x20F90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setne<.f> b,b,s12 00100bbb10111001FBBBssssssSSSSSS. */
+{ "setne", 0x20B90000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setne<.f> a,limm,c 0010011000111001F111CCCCCCAAAAAA. */
+{ "setne", 0x26397000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, RC }, { C_F }},
+
+/* setne<.f> a,b,limm 00100bbb00111001FBBB111110AAAAAA. */
+{ "setne", 0x20390F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, RB, LIMM }, { C_F }},
+
+/* setne<.f> 0,limm,c 0010011000111001F111CCCCCC111110. */
+{ "setne", 0x2639703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F }},
+
+/* setne<.f> 0,b,limm 00100bbb00111001FBBB111110111110. */
+{ "setne", 0x20390FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, RB, LIMM }, { C_F }},
+
+/* setne<.f><.cc> b,b,limm 00100bbb11111001FBBB1111100QQQQQ. */
+{ "setne", 0x20F90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setne<.f><.cc> 0,limm,c 0010011011111001F111CCCCCC0QQQQQ. */
+{ "setne", 0x26F97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setne<.f> a,limm,u6 0010011001111001F111uuuuuuAAAAAA. */
+{ "setne", 0x26797000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setne<.f> 0,limm,u6 0010011001111001F111uuuuuu111110. */
+{ "setne", 0x2679703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setne<.f><.cc> 0,limm,u6 0010011011111001F111uuuuuu1QQQQQ. */
+{ "setne", 0x26F97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setne<.f> 0,limm,s12 0010011010111001F111ssssssSSSSSS. */
+{ "setne", 0x26B97000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setne<.f> a,limm,limm 0010011000111001F111111110AAAAAA. */
+{ "setne", 0x26397F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setne<.f> 0,limm,limm 0010011000111001F111111110111110. */
+{ "setne", 0x26397FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setne<.f><.cc> 0,limm,limm 0010011011111001F1111111100QQQQQ. */
+{ "setne", 0x26F97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, CD1, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* setnel<.f> RA,RB,RC 01011bbb00111001FBBBccccccaaaaaa. */
+{ "setnel", 0x58390000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* setnel<.f> 0,RB,RC 01011bbb00111001FBBBcccccc111110. */
+{ "setnel", 0x5839003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* setnel<.f><.cc> RB,RB,RC 01011bbb11111001FBBBcccccc0QQQQQ. */
+{ "setnel", 0x58F90000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* setnel<.f> RA,RB,u6 01011bbb01111001FBBBuuuuuuaaaaaa. */
+{ "setnel", 0x58790000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* setnel<.f> 0,RB,u6 01011bbb01111001FBBBuuuuuu111110. */
+{ "setnel", 0x5879003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* setnel<.f><.cc> RB,RB,u6 01011bbb11111001FBBBuuuuuu1QQQQQ. */
+{ "setnel", 0x58F90020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* setnel<.f> RB,RB,s12 01011bbb10111001FBBBssssssSSSSSS. */
+{ "setnel", 0x58B90000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* setnel<.f> RA,ximm,RC 0101110000111001F111ccccccaaaaaa. */
+{ "setnel", 0x5C397000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* setnel<.f> RA,RB,ximm 01011bbb00111001FBBB111100aaaaaa. */
+{ "setnel", 0x58390F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* setnel<.f> 0,ximm,RC 0101110000111001F111cccccc111110. */
+{ "setnel", 0x5C39703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* setnel<.f> 0,RB,ximm 01011bbb00111001FBBB111100111110. */
+{ "setnel", 0x58390F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* setnel<.f><.cc> 0,ximm,RC 0101110011111001F111cccccc0QQQQQ. */
+{ "setnel", 0x5CF97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* setnel<.f><.cc> RB,RB,ximm 01011bbb11111001FBBB1111000QQQQQ. */
+{ "setnel", 0x58F90F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* setnel<.f> RA,ximm,u6 0101110001111001F111uuuuuuaaaaaa. */
+{ "setnel", 0x5C797000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setnel<.f> 0,ximm,u6 0101110001111001F111uuuuuu111110. */
+{ "setnel", 0x5C79703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* setnel<.f><.cc> 0,ximm,u6 0101110011111001F111uuuuuu1QQQQQ. */
+{ "setnel", 0x5CF97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setnel<.f> RA,limm,RC 0101111000111001F111ccccccaaaaaa. */
+{ "setnel", 0x5E397000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* setnel<.f> RA,RB,limm 01011bbb00111001FBBB111110aaaaaa. */
+{ "setnel", 0x58390F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* setnel<.f> 0,limm,RC 0101111000111001F111cccccc111110. */
+{ "setnel", 0x5E39703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* setnel<.f> 0,RB,limm 01011bbb00111001FBBB111110111110. */
+{ "setnel", 0x58390FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* setnel<.f><.cc> 0,limm,RC 0101111011111001F111cccccc0QQQQQ. */
+{ "setnel", 0x5EF97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* setnel<.f><.cc> RB,RB,limm 01011bbb11111001FBBB1111100QQQQQ. */
+{ "setnel", 0x58F90F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* setnel<.f> RA,limm,u6 0101111001111001F111uuuuuuaaaaaa. */
+{ "setnel", 0x5E797000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setnel<.f> 0,limm,u6 0101111001111001F111uuuuuu111110. */
+{ "setnel", 0x5E79703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* setnel<.f><.cc> 0,limm,u6 0101111011111001F111uuuuuu1QQQQQ. */
+{ "setnel", 0x5EF97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* setnel<.f> 0,ximm,s12 0101110010111001F111ssssssSSSSSS. */
+{ "setnel", 0x5CB97000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* setnel<.f> 0,limm,s12 0101111010111001F111ssssssSSSSSS. */
+{ "setnel", 0x5EB97000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* setnel<.f> RA,ximm,ximm 0101110000111001F111111100aaaaaa. */
+{ "setnel", 0x5C397F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* setnel<.f> 0,ximm,ximm 0101110000111001F111111100111110. */
+{ "setnel", 0x5C397F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* setnel<.f><.cc> 0,ximm,ximm 0101110011111001F1111111000QQQQQ. */
+{ "setnel", 0x5CF97F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* setnel<.f> RA,limm,limm 0101111000111001F111111110aaaaaa. */
+{ "setnel", 0x5E397F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* setnel<.f> 0,limm,limm 0101111000111001F111111110111110. */
+{ "setnel", 0x5E397FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* setnel<.f><.cc> 0,limm,limm 0101111011111001F1111111100QQQQQ. */
+{ "setnel", 0x5EF97F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sexb<.f> b,c 00100bbb00101111FBBBCCCCCC000101. */
+{ "sexb", 0x202F0005, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* sexb<.f> 0,c 0010011000101111F111CCCCCC000101. */
+{ "sexb", 0x262F7005, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* sexb<.f> b,u6 00100bbb01101111FBBBuuuuuu000101. */
+{ "sexb", 0x206F0005, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* sexb<.f> 0,u6 0010011001101111F111uuuuuu000101. */
+{ "sexb", 0x266F7005, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sexb<.f> b,limm 00100bbb00101111FBBB111110000101. */
+{ "sexb", 0x202F0F85, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* sexb<.f> 0,limm 0010011000101111F111111110000101. */
+{ "sexb", 0x262F7F85, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* sexbl<.f> RB,RC 01011bbb00101111FBBBcccccc000101. */
+{ "sexbl", 0x582F0005, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* sexbl<.f> 0,RC 0101111000101111F111cccccc000101. */
+{ "sexbl", 0x5E2F7005, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* sexbl<.f> RB,u6 01011bbb01101111FBBBuuuuuu000101. */
+{ "sexbl", 0x586F0005, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* sexbl<.f> 0,u6 0101111001101111F111uuuuuu000101. */
+{ "sexbl", 0x5E6F7005, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sexbl<.f> RB,ximm 01011bbb00101111FBBB111100000101. */
+{ "sexbl", 0x582F0F05, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* sexbl<.f> 0,ximm 0101111000101111F111111100000101. */
+{ "sexbl", 0x5E2F7F05, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* sexbl<.f> RB,limm 01011bbb00101111FBBB111110000101. */
+{ "sexbl", 0x582F0F85, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* sexbl<.f> 0,limm 0101111000101111F111111110000101. */
+{ "sexbl", 0x5E2F7F85, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* sexb_s b,c 01111bbbccc01101. */
+{ "sexb_s", 0x0000780D, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* sexh<.f> b,c 00100bbb00101111FBBBCCCCCC000110. */
+{ "sexh", 0x202F0006, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* sexh<.f> 0,c 0010011000101111F111CCCCCC000110. */
+{ "sexh", 0x262F7006, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* sexh<.f> b,u6 00100bbb01101111FBBBuuuuuu000110. */
+{ "sexh", 0x206F0006, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* sexh<.f> 0,u6 0010011001101111F111uuuuuu000110. */
+{ "sexh", 0x266F7006, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sexh<.f> b,limm 00100bbb00101111FBBB111110000110. */
+{ "sexh", 0x202F0F86, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* sexh<.f> 0,limm 0010011000101111F111111110000110. */
+{ "sexh", 0x262F7F86, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* sexhl<.f> RB,RC 01011bbb00101111FBBBcccccc000110. */
+{ "sexhl", 0x582F0006, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* sexhl<.f> 0,RC 0101111000101111F111cccccc000110. */
+{ "sexhl", 0x5E2F7006, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* sexhl<.f> RB,u6 01011bbb01101111FBBBuuuuuu000110. */
+{ "sexhl", 0x586F0006, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* sexhl<.f> 0,u6 0101111001101111F111uuuuuu000110. */
+{ "sexhl", 0x5E6F7006, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sexhl<.f> RB,ximm 01011bbb00101111FBBB111100000110. */
+{ "sexhl", 0x582F0F06, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* sexhl<.f> 0,ximm 0101111000101111F111111100000110. */
+{ "sexhl", 0x5E2F7F06, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* sexhl<.f> RB,limm 01011bbb00101111FBBB111110000110. */
+{ "sexhl", 0x582F0F86, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* sexhl<.f> 0,limm 0101111000101111F111111110000110. */
+{ "sexhl", 0x5E2F7F86, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* sexh_s b,c 01111bbbccc01110. */
+{ "sexh_s", 0x0000780E, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RC_S }, { 0 }},
+
+/* sexwl<.f> RB,RC 01011bbb00101111FBBBcccccc000111. */
+{ "sexwl", 0x582F0007, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* sexwl<.f> 0,RC 0101111000101111F111cccccc000111. */
+{ "sexwl", 0x5E2F7007, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* sexwl<.f> RB,u6 01011bbb01101111FBBBuuuuuu000111. */
+{ "sexwl", 0x586F0007, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* sexwl<.f> 0,u6 0101111001101111F111uuuuuu000111. */
+{ "sexwl", 0x5E6F7007, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sexwl<.f> RB,ximm 01011bbb00101111FBBB111100000111. */
+{ "sexwl", 0x582F0F07, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* sexwl<.f> 0,ximm 0101111000101111F111111100000111. */
+{ "sexwl", 0x5E2F7F07, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* sexwl<.f> RB,limm 01011bbb00101111FBBB111110000111. */
+{ "sexwl", 0x582F0F87, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* sexwl<.f> 0,limm 0101111000101111F111111110000111. */
+{ "sexwl", 0x5E2F7F87, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* sleep c 00100001001011110000CCCCCC111111. */
+{ "sleep", 0x212F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { RC }, { 0 }},
+
+/* sleep u6 00100001011011110000uuuuuu111111. */
+{ "sleep", 0x216F003F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { UIMM6_20 }, { 0 }},
+
+/* sleep limm 00100001001011110000111110111111. */
+{ "sleep", 0x212F0FBF, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { LIMM }, { 0 }},
+
+/* sleep 00100001011011110000000000111111. */
+{ "sleep", 0x216F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* sqrt<.f> b,c 00101bbb00101111FBBBCCCCCC110000. */
+{ "sqrt", 0x282F0030, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* sqrt<.f> 0,c 0010111000101111F111CCCCCC110000. */
+{ "sqrt", 0x2E2F7030, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* sqrt<.f> b,u6 00101bbb01101111FBBBuuuuuu110000. */
+{ "sqrt", 0x286F0030, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* sqrt<.f> 0,u6 0010111001101111F111uuuuuu110000. */
+{ "sqrt", 0x2E6F7030, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sqrt<.f> b,limm 00101bbb00101111FBBB111110110000. */
+{ "sqrt", 0x282F0FB0, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* sqrt<.f> 0,limm 0010111000101111F111111110110000. */
+{ "sqrt", 0x2E2F7FB0, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* sqrtf<.f> b,c 00101bbb00101111FBBBCCCCCC110001. */
+{ "sqrtf", 0x282F0031, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { C_F }},
+
+/* sqrtf<.f> 0,c 0010111000101111F111CCCCCC110001. */
+{ "sqrtf", 0x2E2F7031, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { C_F }},
+
+/* sqrtf<.f> b,u6 00101bbb01101111FBBBuuuuuu110001. */
+{ "sqrtf", 0x286F0031, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { C_F }},
+
+/* sqrtf<.f> 0,u6 0010111001101111F111uuuuuu110001. */
+{ "sqrtf", 0x2E6F7031, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* sqrtf<.f> b,limm 00101bbb00101111FBBB111110110001. */
+{ "sqrtf", 0x282F0FB1, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { C_F }},
+
+/* sqrtf<.f> 0,limm 0010111000101111F111111110110001. */
+{ "sqrtf", 0x2E2F7FB1, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { C_F }},
+
+/* sr b,c 00100bbb00101011RBBBCCCCCCRRRRRR. */
+{ "sr", 0x202B0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* sr b,u6 00100bbb01101011RBBBuuuuuu000000. */
+{ "sr", 0x206B0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* sr b,s12 00100bbb10101011RBBBssssssSSSSSS. */
+{ "sr", 0x20AB0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* sr limm,c 0010011000101011R111CCCCCCRRRRRR. */
+{ "sr", 0x262B7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* sr b,limm 00100bbb00101011RBBB111110RRRRRR. */
+{ "sr", 0x202B0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* sr limm,u6 0010011001101011R111uuuuuu000000. */
+{ "sr", 0x266B7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* sr limm,s12 0010011010101011R111ssssssSSSSSS. */
+{ "sr", 0x26AB7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* sr limm,limm 0010011000101011R111111110RRRRRR. */
+{ "sr", 0x262B7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, AUXREG, NONE, { LIMM, BRAKET, LIMMdup, BRAKETdup }, { 0 }},
+
+/* srl RB,RC 01011bbb001010110BBBccccccRRRRRR. */
+{ "srl", 0x582B0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, RC, BRAKETdup }, { 0 }},
+
+/* srl RB,u6 01011bbb011010110BBBuuuuuuRRRRRR. */
+{ "srl", 0x586B0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, UIMM6_20, BRAKETdup }, { 0 }},
+
+/* srl RB,s12 01011bbb101010110BBBssssssSSSSSS. */
+{ "srl", 0x58AB0000, 0xF8FF8000, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, SIMM12_20, BRAKETdup }, { 0 }},
+
+/* srl RB,ximm 01011bbb001010110BBB111100RRRRRR. */
+{ "srl", 0x582B0F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, XIMM, BRAKETdup }, { 0 }},
+
+/* srl RB,limm 01011bbb001010110BBB111110RRRRRR. */
+{ "srl", 0x582B0F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, AUXREG, NONE, { RB_CHK, BRAKET, LIMM, BRAKETdup }, { 0 }},
+
+/* st<zz><.di><.aa> c,b 00011bbb000000000BBBCCCCCCDaaZZ0. */
+{ "st", 0x18000000, 0xF8FF8001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, RB, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di><.aa> w6,b 00011bbb000000000BBBwwwwwwDaaZZ1. */
+{ "st", 0x18000001, 0xF8FF8001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { W6, BRAKET, RB, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di><.aa> c,b,s9 00011bbbssssssssSBBBCCCCCCDaaZZ0. */
+{ "st", 0x18000000, 0xF8000001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di><.aa> w6,b,s9 00011bbbssssssssSBBBwwwwwwDaaZZ1. */
+{ "st", 0x18000001, 0xF8000001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { W6, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di> c,limm 00011110000000000111CCCCCCDRRZZ0. */
+{ "st", 0x1E007000, 0xFFFFF001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, LIMM, BRAKETdup }, { C_ZZ29, C_DI26 }},
+
+/* st<zz><.di> w6,limm 00011110000000000111wwwwwwDRRZZ1. */
+{ "st", 0x1E007001, 0xFFFFF001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { W6, BRAKET, LIMM, BRAKETdup }, { C_ZZ29, C_DI26 }},
+
+/* st<zz><.di><.aa> limm,b,s9 00011bbbssssssssSBBB111110DaaZZ0. */
+{ "st", 0x18000F80, 0xF8000FC1, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { LIMM, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di><.aa> w6,limm,s9 00011110ssssssssS111wwwwwwDaaZZ1. */
+{ "st", 0x1E007001, 0xFF007001, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { W6, BRAKET, LIMM, SIMM9_8, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* st<zz><.di><.aa> limm,limm,s9 00011110ssssssssS111111110DaaZZ0. */
+{ "st", 0x1E007F80, 0xFF007FC1, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { LIMM, BRAKET, LIMMdup, SIMM9_8, BRAKETdup }, { C_ZZ29, C_DI26, C_AA27 }},
+
+/* stb_sZZ_B c,b,u5 10101bbbcccuuuuu. */
+{ "stb_s", 0x0000A800, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC_S, BRAKET, RB_S, UIMM5_11_S, BRAKETdup }, { C_ZZ_B }},
+
+/* stb_sZZ_B b,SP,u7 11000bbb011uuuuu. */
+{ "stb_s", 0x0000C060, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RB_S, BRAKET, SP_S, UIMM7_A32_11_S, BRAKETdup }, { C_ZZ_B }},
+
+/* stdl<.aa> c,b 00011bbb000000000BBBCCCCCC1aa111 -> stdl c,[b,s9=0] */
+/* stdl<.aa> c,b,s9 00011bbbssssssssSBBBCCCCCC1aa111 -> stdl c,[b,s9] */
+/* stdl<.as> c,ximm 00011100000000000111CCCCCC1aa111 -> stdl c,[b=60,s9=0] */
+/* stdl<.as> c,limm 00011110000000000111CCCCCC1aa111 -> stdl c,[b=62,s9=0] */
+/* stdl<.aa> ximm,b,s9 00011bbbssssssssSBBB1111001aa111 -> stdl c=60,[b,s9] */
+/* stdl<.aa> limm,b,s9 00011bbbssssssssSBBB1111101aa111 -> stdl c=62,[b,s9] */
+{ "stdl", 0x18000027, 0xF8FF8027, ARC_OPCODE_ARC64, STORE, NONE, { RCD, BRAKET, RB, BRAKETdup }, { C_AA27 }},
+{ "stdl", 0x18000027, 0xF8000027, ARC_OPCODE_ARC64, STORE, NONE, { RCD, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA27 }},
+
+{ "stdl", 0x1C007027, 0xFFFFF027, ARC_OPCODE_ARC64, STORE, NONE, { RCD, BRAKET, XIMM, BRAKETdup }, { C_AS27 }},
+{ "stdl", 0x1E007027, 0xFFFFF027, ARC_OPCODE_ARC64, STORE, NONE, { RCD, BRAKET, LIMM, BRAKETdup }, { C_AS27 }},
+
+{ "stdl", 0x18000F27, 0xF8000FE7, ARC_OPCODE_ARC64, STORE, NONE, { XIMM, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA27 }},
+{ "stdl", 0x18000FA7, 0xF8000FE7, ARC_OPCODE_ARC64, STORE, NONE, { LIMM, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_AA27 }},
+
+/* sth_sZZ_H c,b,u6 10110bbbcccuuuuu. */
+{ "sth_s", 0x0000B000, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC_S, BRAKET, RB_S, UIMM6_A16_11_S, BRAKETdup }, { C_ZZ_H }},
+
+/* stlZZ_L<.aa> c,b 00011bbb000000000BBBCCCCCC0aa111. */
+{ "stl", 0x18000007, 0xF8FF8027, ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, RB, BRAKETdup }, { C_ZZ_L, C_AA27 }},
+
+/* stlZZ_L<.aa> c,b,s9 00011bbbssssssssSBBBCCCCCC0aa111. */
+{ "stl", 0x18000007, 0xF8000027, ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA27 }},
+
+/* stlZZ_L c,ximm 00011100000000000111CCCCCC000111. */
+{ "stl", 0x1C007007, 0xFFFFF03F, ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, XIMM, BRAKETdup }, { C_ZZ_L }},
+
+/* stlZZ_L c,limm 00011110000000000111CCCCCC000111. */
+{ "stl", 0x1E007007, 0xFFFFF03F, ARC_OPCODE_ARC64, STORE, NONE, { RC, BRAKET, LIMM, BRAKETdup }, { C_ZZ_L }},
+
+/* stlZZ_L<.aa> limm,b,s9 00011bbbssssssssSBBB1111100aa111. */
+{ "stl", 0x18000F87, 0xF8000FE7, ARC_OPCODE_ARC64, STORE, NONE, { LIMM, BRAKET, RB, SIMM9_8, BRAKETdup }, { C_ZZ_L, C_AA27 }},
+
+/* st_s b,SP,u7 11000bbb010uuuuu. */
+{ "st_s", 0x0000C040, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RB_S, BRAKET, SP_S, UIMM7_A32_11_S, BRAKETdup }, { 0 }},
+
+/* st_s c,b,u7 10100bbbcccuuuuu. */
+{ "st_s", 0x0000A000, 0x0000F800, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, NONE, { RC_S, BRAKET, RB_S, UIMM7_A32_11_S, BRAKETdup }, { 0 }},
+
+/* st_s R0,GP,s11 01010SSSSSS10sss. */
+{ "st_s", 0x00005010, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, STORE, CD2, { R0_S, BRAKET, GP_S, SIMM11_A32_13_S, BRAKETdup }, { 0 }},
+
+/* sub<.f> a,b,c 00100bbb00000010FBBBCCCCCCAAAAAA. */
+{ "sub", 0x20020000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub<.f> 0,b,c 00100bbb00000010FBBBCCCCCC111110. */
+{ "sub", 0x2002003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub<.f><.cc> b,b,c 00100bbb11000010FBBBCCCCCC0QQQQQ. */
+{ "sub", 0x20C20000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub<.f> a,b,u6 00100bbb01000010FBBBuuuuuuAAAAAA. */
+{ "sub", 0x20420000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub<.f> 0,b,u6 00100bbb01000010FBBBuuuuuu111110. */
+{ "sub", 0x2042003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub<.f><.cc> b,b,u6 00100bbb11000010FBBBuuuuuu1QQQQQ. */
+{ "sub", 0x20C20020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub<.f> b,b,s12 00100bbb10000010FBBBssssssSSSSSS. */
+{ "sub", 0x20820000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub<.f> a,limm,c 0010011000000010F111CCCCCCAAAAAA. */
+{ "sub", 0x26027000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub<.f> a,b,limm 00100bbb00000010FBBB111110AAAAAA. */
+{ "sub", 0x20020F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub<.f> 0,limm,c 0010011000000010F111CCCCCC111110. */
+{ "sub", 0x2602703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub<.f> 0,b,limm 00100bbb00000010FBBB111110111110. */
+{ "sub", 0x20020FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub<.f><.cc> b,b,limm 00100bbb11000010FBBB1111100QQQQQ. */
+{ "sub", 0x20C20F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub<.f><.cc> 0,limm,c 0010011011000010F111CCCCCC0QQQQQ. */
+{ "sub", 0x26C27000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub<.f> a,limm,u6 0010011001000010F111uuuuuuAAAAAA. */
+{ "sub", 0x26427000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub<.f> 0,limm,u6 0010011001000010F111uuuuuu111110. */
+{ "sub", 0x2642703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub<.f><.cc> 0,limm,u6 0010011011000010F111uuuuuu1QQQQQ. */
+{ "sub", 0x26C27020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub<.f> 0,limm,s12 0010011010000010F111ssssssSSSSSS. */
+{ "sub", 0x26827000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub<.f> a,limm,limm 0010011000000010F111111110AAAAAA. */
+{ "sub", 0x26027F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub<.f> 0,limm,limm 0010011000000010F111111110111110. */
+{ "sub", 0x26027FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub<.f><.cc> 0,limm,limm 0010011011000010F1111111100QQQQQ. */
+{ "sub", 0x26C27F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub1<.f> a,b,c 00100bbb00010111FBBBCCCCCCAAAAAA. */
+{ "sub1", 0x20170000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub1<.f> 0,b,c 00100bbb00010111FBBBCCCCCC111110. */
+{ "sub1", 0x2017003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub1<.f><.cc> b,b,c 00100bbb11010111FBBBCCCCCC0QQQQQ. */
+{ "sub1", 0x20D70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub1<.f> a,b,u6 00100bbb01010111FBBBuuuuuuAAAAAA. */
+{ "sub1", 0x20570000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub1<.f> 0,b,u6 00100bbb01010111FBBBuuuuuu111110. */
+{ "sub1", 0x2057003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub1<.f><.cc> b,b,u6 00100bbb11010111FBBBuuuuuu1QQQQQ. */
+{ "sub1", 0x20D70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub1<.f> b,b,s12 00100bbb10010111FBBBssssssSSSSSS. */
+{ "sub1", 0x20970000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub1<.f> a,limm,c 0010011000010111F111CCCCCCAAAAAA. */
+{ "sub1", 0x26177000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub1<.f> a,b,limm 00100bbb00010111FBBB111110AAAAAA. */
+{ "sub1", 0x20170F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub1<.f> 0,limm,c 0010011000010111F111CCCCCC111110. */
+{ "sub1", 0x2617703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub1<.f> 0,b,limm 00100bbb00010111FBBB111110111110. */
+{ "sub1", 0x20170FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub1<.f><.cc> b,b,limm 00100bbb11010111FBBB1111100QQQQQ. */
+{ "sub1", 0x20D70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub1<.f><.cc> 0,limm,c 0010011011010111F111CCCCCC0QQQQQ. */
+{ "sub1", 0x26D77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub1<.f> a,limm,u6 0010011001010111F111uuuuuuAAAAAA. */
+{ "sub1", 0x26577000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub1<.f> 0,limm,u6 0010011001010111F111uuuuuu111110. */
+{ "sub1", 0x2657703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub1<.f><.cc> 0,limm,u6 0010011011010111F111uuuuuu1QQQQQ. */
+{ "sub1", 0x26D77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub1<.f> 0,limm,s12 0010011010010111F111ssssssSSSSSS. */
+{ "sub1", 0x26977000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub1<.f> a,limm,limm 0010011000010111F111111110AAAAAA. */
+{ "sub1", 0x26177F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub1<.f> 0,limm,limm 0010011000010111F111111110111110. */
+{ "sub1", 0x26177FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub1<.f><.cc> 0,limm,limm 0010011011010111F1111111100QQQQQ. */
+{ "sub1", 0x26D77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,RB,RC 01011bbb00010111FBBBccccccaaaaaa. */
+{ "sub1l", 0x58170000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub1l<.f> 0,RB,RC 01011bbb00010111FBBBcccccc111110. */
+{ "sub1l", 0x5817003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub1l<.f><.cc> RB,RB,RC 01011bbb11010111FBBBcccccc0QQQQQ. */
+{ "sub1l", 0x58D70000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,RB,u6 01011bbb01010111FBBBuuuuuuaaaaaa. */
+{ "sub1l", 0x58570000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f> 0,RB,u6 01011bbb01010111FBBBuuuuuu111110. */
+{ "sub1l", 0x5857003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f><.cc> RB,RB,u6 01011bbb11010111FBBBuuuuuu1QQQQQ. */
+{ "sub1l", 0x58D70020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub1l<.f> RB,RB,s12 01011bbb10010111FBBBssssssSSSSSS. */
+{ "sub1l", 0x58970000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub1l<.f> RA,ximm,RC 0101110000010111F111ccccccaaaaaa. */
+{ "sub1l", 0x5C177000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* sub1l<.f> RA,RB,ximm 01011bbb00010111FBBB111100aaaaaa. */
+{ "sub1l", 0x58170F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* sub1l<.f> 0,ximm,RC 0101110000010111F111cccccc111110. */
+{ "sub1l", 0x5C17703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* sub1l<.f> 0,RB,ximm 01011bbb00010111FBBB111100111110. */
+{ "sub1l", 0x58170F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* sub1l<.f><.cc> 0,ximm,RC 0101110011010111F111cccccc0QQQQQ. */
+{ "sub1l", 0x5CD77000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* sub1l<.f><.cc> RB,RB,ximm 01011bbb11010111FBBB1111000QQQQQ. */
+{ "sub1l", 0x58D70F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,ximm,u6 0101110001010111F111uuuuuuaaaaaa. */
+{ "sub1l", 0x5C577000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f> 0,ximm,u6 0101110001010111F111uuuuuu111110. */
+{ "sub1l", 0x5C57703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f><.cc> 0,ximm,u6 0101110011010111F111uuuuuu1QQQQQ. */
+{ "sub1l", 0x5CD77020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,limm,RC 0101111000010111F111ccccccaaaaaa. */
+{ "sub1l", 0x5E177000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub1l<.f> RA,RB,limm 01011bbb00010111FBBB111110aaaaaa. */
+{ "sub1l", 0x58170F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub1l<.f> 0,limm,RC 0101111000010111F111cccccc111110. */
+{ "sub1l", 0x5E17703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub1l<.f> 0,RB,limm 01011bbb00010111FBBB111110111110. */
+{ "sub1l", 0x58170FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub1l<.f><.cc> 0,limm,RC 0101111011010111F111cccccc0QQQQQ. */
+{ "sub1l", 0x5ED77000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub1l<.f><.cc> RB,RB,limm 01011bbb11010111FBBB1111100QQQQQ. */
+{ "sub1l", 0x58D70F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,limm,u6 0101111001010111F111uuuuuuaaaaaa. */
+{ "sub1l", 0x5E577000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f> 0,limm,u6 0101111001010111F111uuuuuu111110. */
+{ "sub1l", 0x5E57703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub1l<.f><.cc> 0,limm,u6 0101111011010111F111uuuuuu1QQQQQ. */
+{ "sub1l", 0x5ED77020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub1l<.f> 0,ximm,s12 0101110010010111F111ssssssSSSSSS. */
+{ "sub1l", 0x5C977000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* sub1l<.f> 0,limm,s12 0101111010010111F111ssssssSSSSSS. */
+{ "sub1l", 0x5E977000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub1l<.f> RA,ximm,ximm 0101110000010111F111111100aaaaaa. */
+{ "sub1l", 0x5C177F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* sub1l<.f> 0,ximm,ximm 0101110000010111F111111100111110. */
+{ "sub1l", 0x5C177F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* sub1l<.f><.cc> 0,ximm,ximm 0101110011010111F1111111000QQQQQ. */
+{ "sub1l", 0x5CD77F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* sub1l<.f> RA,limm,limm 0101111000010111F111111110aaaaaa. */
+{ "sub1l", 0x5E177F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub1l<.f> 0,limm,limm 0101111000010111F111111110111110. */
+{ "sub1l", 0x5E177FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub1l<.f><.cc> 0,limm,limm 0101111011010111F1111111100QQQQQ. */
+{ "sub1l", 0x5ED77F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub2<.f> a,b,c 00100bbb00011000FBBBCCCCCCAAAAAA. */
+{ "sub2", 0x20180000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub2<.f> 0,b,c 00100bbb00011000FBBBCCCCCC111110. */
+{ "sub2", 0x2018003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub2<.f><.cc> b,b,c 00100bbb11011000FBBBCCCCCC0QQQQQ. */
+{ "sub2", 0x20D80000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub2<.f> a,b,u6 00100bbb01011000FBBBuuuuuuAAAAAA. */
+{ "sub2", 0x20580000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub2<.f> 0,b,u6 00100bbb01011000FBBBuuuuuu111110. */
+{ "sub2", 0x2058003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub2<.f><.cc> b,b,u6 00100bbb11011000FBBBuuuuuu1QQQQQ. */
+{ "sub2", 0x20D80020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub2<.f> b,b,s12 00100bbb10011000FBBBssssssSSSSSS. */
+{ "sub2", 0x20980000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub2<.f> a,limm,c 0010011000011000F111CCCCCCAAAAAA. */
+{ "sub2", 0x26187000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub2<.f> a,b,limm 00100bbb00011000FBBB111110AAAAAA. */
+{ "sub2", 0x20180F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub2<.f> 0,limm,c 0010011000011000F111CCCCCC111110. */
+{ "sub2", 0x2618703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub2<.f> 0,b,limm 00100bbb00011000FBBB111110111110. */
+{ "sub2", 0x20180FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub2<.f><.cc> b,b,limm 00100bbb11011000FBBB1111100QQQQQ. */
+{ "sub2", 0x20D80F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub2<.f><.cc> 0,limm,c 0010011011011000F111CCCCCC0QQQQQ. */
+{ "sub2", 0x26D87000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub2<.f> a,limm,u6 0010011001011000F111uuuuuuAAAAAA. */
+{ "sub2", 0x26587000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub2<.f> 0,limm,u6 0010011001011000F111uuuuuu111110. */
+{ "sub2", 0x2658703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub2<.f><.cc> 0,limm,u6 0010011011011000F111uuuuuu1QQQQQ. */
+{ "sub2", 0x26D87020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub2<.f> 0,limm,s12 0010011010011000F111ssssssSSSSSS. */
+{ "sub2", 0x26987000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub2<.f> a,limm,limm 0010011000011000F111111110AAAAAA. */
+{ "sub2", 0x26187F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub2<.f> 0,limm,limm 0010011000011000F111111110111110. */
+{ "sub2", 0x26187FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub2<.f><.cc> 0,limm,limm 0010011011011000F1111111100QQQQQ. */
+{ "sub2", 0x26D87F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,RB,RC 01011bbb00011000FBBBccccccaaaaaa. */
+{ "sub2l", 0x58180000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub2l<.f> 0,RB,RC 01011bbb00011000FBBBcccccc111110. */
+{ "sub2l", 0x5818003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub2l<.f><.cc> RB,RB,RC 01011bbb11011000FBBBcccccc0QQQQQ. */
+{ "sub2l", 0x58D80000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,RB,u6 01011bbb01011000FBBBuuuuuuaaaaaa. */
+{ "sub2l", 0x58580000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f> 0,RB,u6 01011bbb01011000FBBBuuuuuu111110. */
+{ "sub2l", 0x5858003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f><.cc> RB,RB,u6 01011bbb11011000FBBBuuuuuu1QQQQQ. */
+{ "sub2l", 0x58D80020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub2l<.f> RB,RB,s12 01011bbb10011000FBBBssssssSSSSSS. */
+{ "sub2l", 0x58980000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub2l<.f> RA,ximm,RC 0101110000011000F111ccccccaaaaaa. */
+{ "sub2l", 0x5C187000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* sub2l<.f> RA,RB,ximm 01011bbb00011000FBBB111100aaaaaa. */
+{ "sub2l", 0x58180F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* sub2l<.f> 0,ximm,RC 0101110000011000F111cccccc111110. */
+{ "sub2l", 0x5C18703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* sub2l<.f> 0,RB,ximm 01011bbb00011000FBBB111100111110. */
+{ "sub2l", 0x58180F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* sub2l<.f><.cc> 0,ximm,RC 0101110011011000F111cccccc0QQQQQ. */
+{ "sub2l", 0x5CD87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* sub2l<.f><.cc> RB,RB,ximm 01011bbb11011000FBBB1111000QQQQQ. */
+{ "sub2l", 0x58D80F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,ximm,u6 0101110001011000F111uuuuuuaaaaaa. */
+{ "sub2l", 0x5C587000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f> 0,ximm,u6 0101110001011000F111uuuuuu111110. */
+{ "sub2l", 0x5C58703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f><.cc> 0,ximm,u6 0101110011011000F111uuuuuu1QQQQQ. */
+{ "sub2l", 0x5CD87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,limm,RC 0101111000011000F111ccccccaaaaaa. */
+{ "sub2l", 0x5E187000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub2l<.f> RA,RB,limm 01011bbb00011000FBBB111110aaaaaa. */
+{ "sub2l", 0x58180F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub2l<.f> 0,limm,RC 0101111000011000F111cccccc111110. */
+{ "sub2l", 0x5E18703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub2l<.f> 0,RB,limm 01011bbb00011000FBBB111110111110. */
+{ "sub2l", 0x58180FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub2l<.f><.cc> 0,limm,RC 0101111011011000F111cccccc0QQQQQ. */
+{ "sub2l", 0x5ED87000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub2l<.f><.cc> RB,RB,limm 01011bbb11011000FBBB1111100QQQQQ. */
+{ "sub2l", 0x58D80F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,limm,u6 0101111001011000F111uuuuuuaaaaaa. */
+{ "sub2l", 0x5E587000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f> 0,limm,u6 0101111001011000F111uuuuuu111110. */
+{ "sub2l", 0x5E58703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub2l<.f><.cc> 0,limm,u6 0101111011011000F111uuuuuu1QQQQQ. */
+{ "sub2l", 0x5ED87020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub2l<.f> 0,ximm,s12 0101110010011000F111ssssssSSSSSS. */
+{ "sub2l", 0x5C987000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* sub2l<.f> 0,limm,s12 0101111010011000F111ssssssSSSSSS. */
+{ "sub2l", 0x5E987000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub2l<.f> RA,ximm,ximm 0101110000011000F111111100aaaaaa. */
+{ "sub2l", 0x5C187F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* sub2l<.f> 0,ximm,ximm 0101110000011000F111111100111110. */
+{ "sub2l", 0x5C187F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* sub2l<.f><.cc> 0,ximm,ximm 0101110011011000F1111111000QQQQQ. */
+{ "sub2l", 0x5CD87F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* sub2l<.f> RA,limm,limm 0101111000011000F111111110aaaaaa. */
+{ "sub2l", 0x5E187F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub2l<.f> 0,limm,limm 0101111000011000F111111110111110. */
+{ "sub2l", 0x5E187FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub2l<.f><.cc> 0,limm,limm 0101111011011000F1111111100QQQQQ. */
+{ "sub2l", 0x5ED87F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub3<.f> a,b,c 00100bbb00011001FBBBCCCCCCAAAAAA. */
+{ "sub3", 0x20190000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub3<.f> 0,b,c 00100bbb00011001FBBBCCCCCC111110. */
+{ "sub3", 0x2019003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub3<.f><.cc> b,b,c 00100bbb11011001FBBBCCCCCC0QQQQQ. */
+{ "sub3", 0x20D90000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub3<.f> a,b,u6 00100bbb01011001FBBBuuuuuuAAAAAA. */
+{ "sub3", 0x20590000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub3<.f> 0,b,u6 00100bbb01011001FBBBuuuuuu111110. */
+{ "sub3", 0x2059003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub3<.f><.cc> b,b,u6 00100bbb11011001FBBBuuuuuu1QQQQQ. */
+{ "sub3", 0x20D90020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub3<.f> b,b,s12 00100bbb10011001FBBBssssssSSSSSS. */
+{ "sub3", 0x20990000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub3<.f> a,limm,c 0010011000011001F111CCCCCCAAAAAA. */
+{ "sub3", 0x26197000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub3<.f> a,b,limm 00100bbb00011001FBBB111110AAAAAA. */
+{ "sub3", 0x20190F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub3<.f> 0,limm,c 0010011000011001F111CCCCCC111110. */
+{ "sub3", 0x2619703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub3<.f> 0,b,limm 00100bbb00011001FBBB111110111110. */
+{ "sub3", 0x20190FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub3<.f><.cc> b,b,limm 00100bbb11011001FBBB1111100QQQQQ. */
+{ "sub3", 0x20D90F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub3<.f><.cc> 0,limm,c 0010011011011001F111CCCCCC0QQQQQ. */
+{ "sub3", 0x26D97000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub3<.f> a,limm,u6 0010011001011001F111uuuuuuAAAAAA. */
+{ "sub3", 0x26597000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub3<.f> 0,limm,u6 0010011001011001F111uuuuuu111110. */
+{ "sub3", 0x2659703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub3<.f><.cc> 0,limm,u6 0010011011011001F111uuuuuu1QQQQQ. */
+{ "sub3", 0x26D97020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub3<.f> 0,limm,s12 0010011010011001F111ssssssSSSSSS. */
+{ "sub3", 0x26997000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub3<.f> a,limm,limm 0010011000011001F111111110AAAAAA. */
+{ "sub3", 0x26197F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub3<.f> 0,limm,limm 0010011000011001F111111110111110. */
+{ "sub3", 0x26197FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub3<.f><.cc> 0,limm,limm 0010011011011001F1111111100QQQQQ. */
+{ "sub3", 0x26D97F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,RB,RC 01011bbb00011001FBBBccccccaaaaaa. */
+{ "sub3l", 0x58190000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* sub3l<.f> 0,RB,RC 01011bbb00011001FBBBcccccc111110. */
+{ "sub3l", 0x5819003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* sub3l<.f><.cc> RB,RB,RC 01011bbb11011001FBBBcccccc0QQQQQ. */
+{ "sub3l", 0x58D90000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,RB,u6 01011bbb01011001FBBBuuuuuuaaaaaa. */
+{ "sub3l", 0x58590000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f> 0,RB,u6 01011bbb01011001FBBBuuuuuu111110. */
+{ "sub3l", 0x5859003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f><.cc> RB,RB,u6 01011bbb11011001FBBBuuuuuu1QQQQQ. */
+{ "sub3l", 0x58D90020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub3l<.f> RB,RB,s12 01011bbb10011001FBBBssssssSSSSSS. */
+{ "sub3l", 0x58990000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* sub3l<.f> RA,ximm,RC 0101110000011001F111ccccccaaaaaa. */
+{ "sub3l", 0x5C197000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* sub3l<.f> RA,RB,ximm 01011bbb00011001FBBB111100aaaaaa. */
+{ "sub3l", 0x58190F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* sub3l<.f> 0,ximm,RC 0101110000011001F111cccccc111110. */
+{ "sub3l", 0x5C19703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* sub3l<.f> 0,RB,ximm 01011bbb00011001FBBB111100111110. */
+{ "sub3l", 0x58190F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* sub3l<.f><.cc> 0,ximm,RC 0101110011011001F111cccccc0QQQQQ. */
+{ "sub3l", 0x5CD97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* sub3l<.f><.cc> RB,RB,ximm 01011bbb11011001FBBB1111000QQQQQ. */
+{ "sub3l", 0x58D90F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,ximm,u6 0101110001011001F111uuuuuuaaaaaa. */
+{ "sub3l", 0x5C597000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f> 0,ximm,u6 0101110001011001F111uuuuuu111110. */
+{ "sub3l", 0x5C59703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f><.cc> 0,ximm,u6 0101110011011001F111uuuuuu1QQQQQ. */
+{ "sub3l", 0x5CD97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,limm,RC 0101111000011001F111ccccccaaaaaa. */
+{ "sub3l", 0x5E197000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* sub3l<.f> RA,RB,limm 01011bbb00011001FBBB111110aaaaaa. */
+{ "sub3l", 0x58190F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* sub3l<.f> 0,limm,RC 0101111000011001F111cccccc111110. */
+{ "sub3l", 0x5E19703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* sub3l<.f> 0,RB,limm 01011bbb00011001FBBB111110111110. */
+{ "sub3l", 0x58190FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* sub3l<.f><.cc> 0,limm,RC 0101111011011001F111cccccc0QQQQQ. */
+{ "sub3l", 0x5ED97000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* sub3l<.f><.cc> RB,RB,limm 01011bbb11011001FBBB1111100QQQQQ. */
+{ "sub3l", 0x58D90F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,limm,u6 0101111001011001F111uuuuuuaaaaaa. */
+{ "sub3l", 0x5E597000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f> 0,limm,u6 0101111001011001F111uuuuuu111110. */
+{ "sub3l", 0x5E59703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* sub3l<.f><.cc> 0,limm,u6 0101111011011001F111uuuuuu1QQQQQ. */
+{ "sub3l", 0x5ED97020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* sub3l<.f> 0,ximm,s12 0101110010011001F111ssssssSSSSSS. */
+{ "sub3l", 0x5C997000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* sub3l<.f> 0,limm,s12 0101111010011001F111ssssssSSSSSS. */
+{ "sub3l", 0x5E997000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* sub3l<.f> RA,ximm,ximm 0101110000011001F111111100aaaaaa. */
+{ "sub3l", 0x5C197F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* sub3l<.f> 0,ximm,ximm 0101110000011001F111111100111110. */
+{ "sub3l", 0x5C197F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* sub3l<.f><.cc> 0,ximm,ximm 0101110011011001F1111111000QQQQQ. */
+{ "sub3l", 0x5CD97F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* sub3l<.f> RA,limm,limm 0101111000011001F111111110aaaaaa. */
+{ "sub3l", 0x5E197F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* sub3l<.f> 0,limm,limm 0101111000011001F111111110111110. */
+{ "sub3l", 0x5E197FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* sub3l<.f><.cc> 0,limm,limm 0101111011011001F1111111100QQQQQ. */
+{ "sub3l", 0x5ED97F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* subl<.f> RA,RB,RC 01011bbb00000010FBBBccccccaaaaaa. */
+{ "subl", 0x58020000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* subl<.f> 0,RB,RC 01011bbb00000010FBBBcccccc111110. */
+{ "subl", 0x5802003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* subl<.f><.cc> RB,RB,RC 01011bbb11000010FBBBcccccc0QQQQQ. */
+{ "subl", 0x58C20000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* subl<.f> RA,RB,u6 01011bbb01000010FBBBuuuuuuaaaaaa. */
+{ "subl", 0x58420000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* subl<.f> 0,RB,u6 01011bbb01000010FBBBuuuuuu111110. */
+{ "subl", 0x5842003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* subl<.f><.cc> RB,RB,u6 01011bbb11000010FBBBuuuuuu1QQQQQ. */
+{ "subl", 0x58C20020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* subl<.f> RB,RB,s12 01011bbb10000010FBBBssssssSSSSSS. */
+{ "subl", 0x58820000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* subl<.f> RA,ximm,RC 0101110000000010F111ccccccaaaaaa. */
+{ "subl", 0x5C027000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* subl<.f> RA,RB,ximm 01011bbb00000010FBBB111100aaaaaa. */
+{ "subl", 0x58020F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* subl<.f> 0,ximm,RC 0101110000000010F111cccccc111110. */
+{ "subl", 0x5C02703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* subl<.f> 0,RB,ximm 01011bbb00000010FBBB111100111110. */
+{ "subl", 0x58020F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* subl<.f><.cc> 0,ximm,RC 0101110011000010F111cccccc0QQQQQ. */
+{ "subl", 0x5CC27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* subl<.f><.cc> RB,RB,ximm 01011bbb11000010FBBB1111000QQQQQ. */
+{ "subl", 0x58C20F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* subl<.f> RA,ximm,u6 0101110001000010F111uuuuuuaaaaaa. */
+{ "subl", 0x5C427000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* subl<.f> 0,ximm,u6 0101110001000010F111uuuuuu111110. */
+{ "subl", 0x5C42703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* subl<.f><.cc> 0,ximm,u6 0101110011000010F111uuuuuu1QQQQQ. */
+{ "subl", 0x5CC27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* subl<.f> RA,limm,RC 0101111000000010F111ccccccaaaaaa. */
+{ "subl", 0x5E027000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* subl<.f> RA,RB,limm 01011bbb00000010FBBB111110aaaaaa. */
+{ "subl", 0x58020F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* subl<.f> 0,limm,RC 0101111000000010F111cccccc111110. */
+{ "subl", 0x5E02703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* subl<.f> 0,RB,limm 01011bbb00000010FBBB111110111110. */
+{ "subl", 0x58020FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* subl<.f><.cc> 0,limm,RC 0101111011000010F111cccccc0QQQQQ. */
+{ "subl", 0x5EC27000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* subl<.f><.cc> RB,RB,limm 01011bbb11000010FBBB1111100QQQQQ. */
+{ "subl", 0x58C20F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* subl<.f> RA,limm,u6 0101111001000010F111uuuuuuaaaaaa. */
+{ "subl", 0x5E427000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* subl<.f> 0,limm,u6 0101111001000010F111uuuuuu111110. */
+{ "subl", 0x5E42703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* subl<.f><.cc> 0,limm,u6 0101111011000010F111uuuuuu1QQQQQ. */
+{ "subl", 0x5EC27020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* subl<.f> 0,ximm,s12 0101110010000010F111ssssssSSSSSS. */
+{ "subl", 0x5C827000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* subl<.f> 0,limm,s12 0101111010000010F111ssssssSSSSSS. */
+{ "subl", 0x5E827000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* subl<.f> RA,ximm,ximm 0101110000000010F111111100aaaaaa. */
+{ "subl", 0x5C027F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* subl<.f> 0,ximm,ximm 0101110000000010F111111100111110. */
+{ "subl", 0x5C027F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* subl<.f><.cc> 0,ximm,ximm 0101110011000010F1111111000QQQQQ. */
+{ "subl", 0x5CC27F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* subl<.f> RA,limm,limm 0101111000000010F111111110aaaaaa. */
+{ "subl", 0x5E027F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* subl<.f> 0,limm,limm 0101111000000010F111111110111110. */
+{ "subl", 0x5E027FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* subl<.f><.cc> 0,limm,limm 0101111011000010F1111111100QQQQQ. */
+{ "subl", 0x5EC27F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* subl_s SP,SP,u9 11000UU1101uuuuu. */
+{ "subl_s", 0x0000C1A0, 0x0000F9E0, ARC_OPCODE_ARC64, ARITH, NONE, { SP_S, SP_Sdup, UIMM9_A32_11_S }, { 0 }},
+
+/* subl_s b,b,c 01111bbbccc00011. */
+{ "subl_s", 0x00007803, 0x0000F81F, ARC_OPCODE_ARC64, ARITH, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* subs<.f> a,b,c 00101bbb00000111FBBBCCCCCCAAAAAA. */
+{ "subs", 0x28070000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* subs<.f> 0,b,c 00101bbb00000111FBBBCCCCCC111110. */
+{ "subs", 0x2807003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* subs<.f><.cc> b,b,c 00101bbb11000111FBBBCCCCCC0QQQQQ. */
+{ "subs", 0x28C70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* subs<.f> a,b,u6 00101bbb01000111FBBBuuuuuuAAAAAA. */
+{ "subs", 0x28470000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* subs<.f> 0,b,u6 00101bbb01000111FBBBuuuuuu111110. */
+{ "subs", 0x2847003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* subs<.f><.cc> b,b,u6 00101bbb11000111FBBBuuuuuu1QQQQQ. */
+{ "subs", 0x28C70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* subs<.f> b,b,s12 00101bbb10000111FBBBssssssSSSSSS. */
+{ "subs", 0x28870000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* subs<.f> a,limm,c 0010111000000111F111CCCCCCAAAAAA. */
+{ "subs", 0x2E077000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* subs<.f> a,b,limm 00101bbb00000111FBBB111110AAAAAA. */
+{ "subs", 0x28070F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* subs<.f> 0,limm,c 0010111000000111F111CCCCCC111110. */
+{ "subs", 0x2E07703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* subs<.f> 0,b,limm 00101bbb00000111FBBB111110111110. */
+{ "subs", 0x28070FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* subs<.f> a,limm,c 0010111000000111F111CCCCCCAAAAAA. */
+{ "subs", 0x2E077000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* subs<.f><.cc> b,b,limm 00101bbb11000111FBBB1111100QQQQQ. */
+{ "subs", 0x28C70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* subs<.f><.cc> 0,limm,c 0010111011000111F111CCCCCC0QQQQQ. */
+{ "subs", 0x2EC77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* subs<.f> a,limm,u6 0010111001000111F111uuuuuuAAAAAA. */
+{ "subs", 0x2E477000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* subs<.f> 0,limm,u6 0010111001000111F111uuuuuu111110. */
+{ "subs", 0x2E47703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* subs<.f><.cc> 0,limm,u6 0010111011000111F111uuuuuu1QQQQQ. */
+{ "subs", 0x2EC77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* subs<.f> 0,limm,s12 0010111010000111F111ssssssSSSSSS. */
+{ "subs", 0x2E877000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* subs<.f> a,limm,limm 0010111000000111F111111110AAAAAA. */
+{ "subs", 0x2E077F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* subs<.f> 0,limm,limm 0010111000000111F111111110111110. */
+{ "subs", 0x2E077FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* subs<.f><.cc> 0,limm,limm 0010111011000111F1111111100QQQQQ. */
+{ "subs", 0x2EC77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* sub_s.NE b,b,b 01111bbb11000000. */
+{ "sub_s", 0x000078C0, 0x0000F8FF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB_S, RB_Sdup, RB_Sdup }, { C_NE }},
+
+/* sub_s b,b,c 01111bbbccc00010. */
+{ "sub_s", 0x00007802, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
+/* sub_s a,b,c 01001bbbccc10aaa. */
+{ "sub_s", 0x00004810, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, CD2, { RA_S, RB_S, RC_S }, { 0 }},
+
+/* sub_s c,b,u3 01101bbbccc01uuu. */
+{ "sub_s", 0x00006808, 0x0000F818, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RC_S, RB_S, UIMM3_13_S }, { 0 }},
+
+/* sub_s b,b,u5 10111bbb011uuuuu. */
+{ "sub_s", 0x0000B860, 0x0000F8E0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, SUB, NONE, { RB_S, RB_Sdup, UIMM5_11_S }, { 0 }},
+
+/* swap<.f> b,c 00101bbb00101111FBBBCCCCCC000000. */
+{ "swap", 0x282F0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, RC }, { C_F }},
+
+/* swap<.f> 0,c 0010111000101111F111CCCCCC000000. */
+{ "swap", 0x2E2F7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, RC }, { C_F }},
+
+/* swap<.f> b,u6 00101bbb01101111FBBBuuuuuu000000. */
+{ "swap", 0x286F0000, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, UIMM6_20 }, { C_F }},
+
+/* swap<.f> 0,u6 0010111001101111F111uuuuuu000000. */
+{ "swap", 0x2E6F7000, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, UIMM6_20 }, { C_F }},
+
+/* swap<.f> b,limm 00101bbb00101111FBBB111110000000. */
+{ "swap", 0x282F0F80, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, LIMM }, { C_F }},
+
+/* swap<.f> 0,limm 0010111000101111F111111110000000. */
+{ "swap", 0x2E2F7F80, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, LIMM }, { C_F }},
+
+/* swape<.f> b,c 00101bbb00101111FBBBCCCCCC001001. */
+{ "swape", 0x282F0009, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, RC }, { C_F }},
+
+/* swape<.f> 0,c 0010111000101111F111CCCCCC001001. */
+{ "swape", 0x2E2F7009, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, RC }, { C_F }},
+
+/* swape<.f> b,u6 00101bbb01101111FBBBuuuuuu001001. */
+{ "swape", 0x286F0009, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, UIMM6_20 }, { C_F }},
+
+/* swape<.f> 0,u6 0010111001101111F111uuuuuu001001. */
+{ "swape", 0x2E6F7009, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, UIMM6_20 }, { C_F }},
+
+/* swape<.f> b,limm 00101bbb00101111FBBB111110001001. */
+{ "swape", 0x282F0F89, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { RB, LIMM }, { C_F }},
+
+/* swape<.f> 0,limm 0010111000101111F111111110001001. */
+{ "swape", 0x2E2F7F89, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SWAP, { ZA, LIMM }, { C_F }},
+
+/* swapel<.f> RB,RC 01011bbb00101111FBBBcccccc101001. */
+{ "swapel", 0x582F0029, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* swapel<.f> 0,RC 0101111000101111F111cccccc101001. */
+{ "swapel", 0x5E2F7029, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* swapel<.f> RB,u6 01011bbb01101111FBBBuuuuuu101001. */
+{ "swapel", 0x586F0029, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* swapel<.f> 0,u6 0101111001101111F111uuuuuu101001. */
+{ "swapel", 0x5E6F7029, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* swapel<.f> RB,ximm 01011bbb00101111FBBB111100101001. */
+{ "swapel", 0x582F0F29, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* swapel<.f> 0,ximm 0101111000101111F111111100101001. */
+{ "swapel", 0x5E2F7F29, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* swapel<.f> RB,limm 01011bbb00101111FBBB111110101001. */
+{ "swapel", 0x582F0FA9, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* swapel<.f> 0,limm 0101111000101111F111111110101001. */
+{ "swapel", 0x5E2F7FA9, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* swapl<.f> RB,RC 01011bbb00101111FBBBcccccc100000. */
+{ "swapl", 0x582F0020, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_F }},
+
+/* swapl<.f> 0,RC 0101111000101111F111cccccc100000. */
+{ "swapl", 0x5E2F7020, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RC }, { C_F }},
+
+/* swapl<.f> RB,u6 01011bbb01101111FBBBuuuuuu100000. */
+{ "swapl", 0x586F0020, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_F }},
+
+/* swapl<.f> 0,u6 0101111001101111F111uuuuuu100000. */
+{ "swapl", 0x5E6F7020, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, UIMM6_20 }, { C_F }},
+
+/* swapl<.f> RB,ximm 01011bbb00101111FBBB111100100000. */
+{ "swapl", 0x582F0F20, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_F }},
+
+/* swapl<.f> 0,ximm 0101111000101111F111111100100000. */
+{ "swapl", 0x5E2F7F20, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM }, { C_F }},
+
+/* swapl<.f> RB,limm 01011bbb00101111FBBB111110100000. */
+{ "swapl", 0x582F0FA0, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_F }},
+
+/* swapl<.f> 0,limm 0101111000101111F111111110100000. */
+{ "swapl", 0x5E2F7FA0, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM }, { C_F }},
+
+/* swi 00100010011011110000000000111111. */
+{ "swi", 0x226F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* swi_s 0111101011100000. */
+{ "swi_s", 0x00007AE0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* swi_s u6 01111uuuuuu11111. */
+{ "swi_s", 0x0000781F, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { UIMM6_5_S }, { 0 }},
+
+/* sync 00100011011011110000000000111111. */
+{ "sync", 0x236F003F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, CONTROL, NONE, { 0 }, { 0 }},
+
+/* trap_s u6 01111uuuuuu11110. */
+{ "trap_s", 0x0000781E, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { UIMM6_5_S }, { 0 }},
+
+/* tst b,c 00100bbb000010111BBBCCCCCCRRRRRR. */
+{ "tst", 0x200B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { 0 }},
+
+/* tst<.cc> b,c 00100bbb110010111BBBCCCCCC0QQQQQ. */
+{ "tst", 0x20CB8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RC }, { C_CC }},
+
+/* tst b,u6 00100bbb010010111BBBuuuuuuRRRRRR. */
+{ "tst", 0x204B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* tst<.cc> b,u6 00100bbb110010111BBBuuuuuu1QQQQQ. */
+{ "tst", 0x20CB8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* tst b,s12 00100bbb100010111BBBssssssSSSSSS. */
+{ "tst", 0x208B8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* tst limm,c 00100110000010111111CCCCCCRRRRRR. */
+{ "tst", 0x260BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, RC }, { 0 }},
+
+/* tst b,limm 00100bbb000010111BBB111110RRRRRR. */
+{ "tst", 0x200B8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { 0 }},
+
+/* tst<.cc> b,limm 00100bbb110010111BBB1111100QQQQQ. */
+{ "tst", 0x20CB8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, LIMM }, { C_CC }},
+
+/* tst<.cc> limm,c 00100110110010111111CCCCCC0QQQQQ. */
+{ "tst", 0x26CBF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, RC }, { C_CC }},
+
+/* tst limm,u6 00100110010010111111uuuuuuRRRRRR. */
+{ "tst", 0x264BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, UIMM6_20 }, { 0 }},
+
+/* tst<.cc> limm,u6 00100110110010111111uuuuuu1QQQQQ. */
+{ "tst", 0x26CBF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, UIMM6_20 }, { C_CC }},
+
+/* tst limm,s12 00100110100010111111ssssssSSSSSS. */
+{ "tst", 0x268BF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, SIMM12_20 }, { 0 }},
+
+/* tst limm,limm 00100110000010111111111110RRRRRR. */
+{ "tst", 0x260BFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, LIMMdup }, { 0 }},
+
+/* tst<.cc> limm,limm 001001101100101111111111100QQQQQ. */
+{ "tst", 0x26CBFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { LIMM, LIMMdup }, { C_CC }},
+
+/* tstl RB,RC 01011bbb000010111BBBccccccRRRRRR. */
+{ "tstl", 0x580B8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { 0 }},
+
+/* tstl<.cc> RB,RC 01011bbb110010111BBBcccccc0QQQQQ. */
+{ "tstl", 0x58CB8000, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RC }, { C_CC }},
+
+/* tstl RB,u6 01011bbb010010111BBBuuuuuuRRRRRR. */
+{ "tstl", 0x584B8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { 0 }},
+
+/* tstl<.cc> RB,u6 01011bbb110010111BBBuuuuuu1QQQQQ. */
+{ "tstl", 0x58CB8020, 0xF8FF8020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, UIMM6_20 }, { C_CC }},
+
+/* tstl RB,s12 01011bbb100010111BBBssssssSSSSSS. */
+{ "tstl", 0x588B8000, 0xF8FF8000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, SIMM12_20 }, { 0 }},
+
+/* tstl RB,ximm 01011bbb000010111BBB111100RRRRRR. */
+{ "tstl", 0x580B8F00, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { 0 }},
+
+/* tstl<.cc> RB,ximm 01011bbb110010111BBB1111000QQQQQ. */
+{ "tstl", 0x58CB8F00, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, XIMM }, { C_CC }},
+
+/* tstl RB,limm 01011bbb000010111BBB111110RRRRRR. */
+{ "tstl", 0x580B8F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { 0 }},
+
+/* tstl<.cc> RB,limm 01011bbb110010111BBB1111100QQQQQ. */
+{ "tstl", 0x58CB8F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, LIMM }, { C_CC }},
+
+/* tst_s b,c 01111bbbccc01011. */
+{ "tst_s", 0x0000780B, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RC_S }, { 0 }},
+
+/* unimp_s 0111100111100000. */
+{ "unimp_s", 0x000079E0, 0x0000FFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* vabs2h b,c 00101bbb001011110BBBCCCCCC101000. */
+{ "vabs2h", 0x282F0028, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vabs2h 0,c 00101110001011110111CCCCCC101000. */
+{ "vabs2h", 0x2E2F7028, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vabs2h b,u6 00101bbb011011110BBBuuuuuu101000. */
+{ "vabs2h", 0x286F0028, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vabs2h 0,u6 00101110011011110111uuuuuu101000. */
+{ "vabs2h", 0x2E6F7028, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vabs2h b,limm 00101bbb001011110BBB111110101000. */
+{ "vabs2h", 0x282F0FA8, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vabs2h 0,limm 00101110001011110111111110101000. */
+{ "vabs2h", 0x2E2F7FA8, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vabss2h b,c 00101bbb001011110BBBCCCCCC101001. */
+{ "vabss2h", 0x282F0029, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vabss2h 0,c 00101110001011110111CCCCCC101001. */
+{ "vabss2h", 0x2E2F7029, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vabss2h b,u6 00101bbb011011110BBBuuuuuu101001. */
+{ "vabss2h", 0x286F0029, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vabss2h 0,u6 00101110011011110111uuuuuu101001. */
+{ "vabss2h", 0x2E6F7029, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vabss2h b,limm 00101bbb001011110BBB111110101001. */
+{ "vabss2h", 0x282F0FA9, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vabss2h 0,limm 00101110001011110111111110101001. */
+{ "vabss2h", 0x2E2F7FA9, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vadd2 a,b,c 00101bbb001111000BBBCCCCCCAAAAAA. */
+{ "vadd2", 0x283C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadd2 0,b,c 00101bbb001111000BBBCCCCCC111110. */
+{ "vadd2", 0x283C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vadd2<.cc> b,b,c 00101bbb111111000BBBCCCCCC0QQQQQ. */
+{ "vadd2", 0x28FC0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadd2 a,b,u6 00101bbb011111000BBBuuuuuuAAAAAA. */
+{ "vadd2", 0x287C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadd2 0,b,u6 00101bbb011111000BBBuuuuuu111110. */
+{ "vadd2", 0x287C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadd2<.cc> b,b,u6 00101bbb111111000BBBuuuuuu1QQQQQ. */
+{ "vadd2", 0x28FC0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadd2 b,b,s12 00101bbb101111000BBBssssssSSSSSS. */
+{ "vadd2", 0x28BC0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadd2 a,limm,c 00101110001111000111CCCCCCAAAAAA. */
+{ "vadd2", 0x2E3C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadd2 a,b,limm 00101bbb001111000BBB111110AAAAAA. */
+{ "vadd2", 0x283C0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadd2 0,limm,c 00101110001111000111CCCCCC111110. */
+{ "vadd2", 0x2E3C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vadd2 0,b,limm 00101bbb001111000BBB111110111110. */
+{ "vadd2", 0x283C0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vadd2<.cc> b,b,limm 00101bbb111111000BBB1111100QQQQQ. */
+{ "vadd2", 0x28FC0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadd2<.cc> 0,limm,c 00101110111111000111CCCCCC0QQQQQ. */
+{ "vadd2", 0x2EFC7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadd2 a,limm,u6 00101110011111000111uuuuuuAAAAAA. */
+{ "vadd2", 0x2E7C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd2 0,limm,u6 00101110011111000111uuuuuu111110. */
+{ "vadd2", 0x2E7C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd2<.cc> 0,limm,u6 00101110111111000111uuuuuu1QQQQQ. */
+{ "vadd2", 0x2EFC7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadd2 0,limm,s12 00101110101111000111ssssssSSSSSS. */
+{ "vadd2", 0x2EBC7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadd2 a,limm,limm 00101110001111000111111110AAAAAA. */
+{ "vadd2", 0x2E3C7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadd2 0,limm,limm 00101110001111000111111110111110. */
+{ "vadd2", 0x2E3C7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadd2<.cc> 0,limm,limm 001011101111110001111111100QQQQQ. */
+{ "vadd2", 0x2EFC7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadd2h a,b,c 00101bbb000101000BBBCCCCCCAAAAAA. */
+{ "vadd2h", 0x28140000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadd2h 0,b,c 00101bbb000101000BBBCCCCCC111110. */
+{ "vadd2h", 0x2814003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { 0 }},
+
+/* vadd2h<.cc> b,b,c 00101bbb110101000BBBCCCCCC0QQQQQ. */
+{ "vadd2h", 0x28D40000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadd2h a,b,u6 00101bbb010101000BBBuuuuuuAAAAAA. */
+{ "vadd2h", 0x28540000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadd2h 0,b,u6 00101bbb010101000BBBuuuuuu111110. */
+{ "vadd2h", 0x2854003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadd2h<.cc> b,b,u6 00101bbb110101000BBBuuuuuu1QQQQQ. */
+{ "vadd2h", 0x28D40020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadd2h b,b,s12 00101bbb100101000BBBssssssSSSSSS. */
+{ "vadd2h", 0x28940000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadd2h a,limm,c 00101110000101000111CCCCCCAAAAAA. */
+{ "vadd2h", 0x2E147000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadd2h a,b,limm 00101bbb000101000BBB111110AAAAAA. */
+{ "vadd2h", 0x28140F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadd2h 0,limm,c 00101110000101000111CCCCCC111110. */
+{ "vadd2h", 0x2E14703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { 0 }},
+
+/* vadd2h 0,b,limm 00101bbb000101000BBB111110111110. */
+{ "vadd2h", 0x28140FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { 0 }},
+
+/* vadd2h<.cc> b,b,limm 00101bbb110101000BBB1111100QQQQQ. */
+{ "vadd2h", 0x28D40F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadd2h<.cc> 0,limm,c 00101110110101000111CCCCCC0QQQQQ. */
+{ "vadd2h", 0x2ED47000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadd2h a,limm,u6 00101110010101000111uuuuuuAAAAAA. */
+{ "vadd2h", 0x2E547000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd2h 0,limm,u6 00101110010101000111uuuuuu111110. */
+{ "vadd2h", 0x2E54703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd2h<.cc> 0,limm,u6 00101110110101000111uuuuuu1QQQQQ. */
+{ "vadd2h", 0x2ED47020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadd2h 0,limm,s12 00101110100101000111ssssssSSSSSS. */
+{ "vadd2h", 0x2E947000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadd2h a,limm,limm 00101110000101000111111110AAAAAA. */
+{ "vadd2h", 0x2E147F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadd2h 0,limm,limm 00101110000101000111111110111110. */
+{ "vadd2h", 0x2E147FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadd2h<.cc> 0,limm,limm 001011101101010001111111100QQQQQ. */
+{ "vadd2h", 0x2ED47F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadd4b a,b,c 00101bbb001001000BBBCCCCCCAAAAAA. */
+{ "vadd4b", 0x28240000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadd4b 0,b,c 00101bbb001001000BBBCCCCCC111110. */
+{ "vadd4b", 0x2824003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vadd4b<.cc> b,b,c 00101bbb111001000BBBCCCCCC0QQQQQ. */
+{ "vadd4b", 0x28E40000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadd4b a,b,u6 00101bbb011001000BBBuuuuuuAAAAAA. */
+{ "vadd4b", 0x28640000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadd4b 0,b,u6 00101bbb011001000BBBuuuuuu111110. */
+{ "vadd4b", 0x2864003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadd4b<.cc> b,b,u6 00101bbb111001000BBBuuuuuu1QQQQQ. */
+{ "vadd4b", 0x28E40020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadd4b b,b,s12 00101bbb101001000BBBssssssSSSSSS. */
+{ "vadd4b", 0x28A40000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadd4b a,limm,c 00101110001001000111CCCCCCAAAAAA. */
+{ "vadd4b", 0x2E247000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadd4b a,b,limm 00101bbb001001000BBB111110AAAAAA. */
+{ "vadd4b", 0x28240F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadd4b 0,limm,c 00101110011001000111CCCCCC111110. */
+{ "vadd4b", 0x2E64703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vadd4b 0,b,limm 00101bbb001001000BBB111110111110. */
+{ "vadd4b", 0x28240FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vadd4b<.cc> b,b,limm 00101bbb111001000BBB1111100QQQQQ. */
+{ "vadd4b", 0x28E40F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadd4b<.cc> 0,limm,c 00101110111001000111CCCCCC0QQQQQ. */
+{ "vadd4b", 0x2EE47000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadd4b a,limm,u6 00101110011001000111uuuuuuAAAAAA. */
+{ "vadd4b", 0x2E647000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd4b 0,limm,u6 00101110011001000111uuuuuu111110. */
+{ "vadd4b", 0x2E64703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd4b<.cc> 0,limm,u6 00101110111001000111uuuuuu1QQQQQ. */
+{ "vadd4b", 0x2EE47020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadd4b 0,limm,s12 00101110101001000111ssssssSSSSSS. */
+{ "vadd4b", 0x2EA47000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadd4b a,limm,limm 00101110001001000111111110AAAAAA. */
+{ "vadd4b", 0x2E247F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadd4b 0,limm,limm 00101110001001000111111110111110. */
+{ "vadd4b", 0x2E247FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadd4b<.cc> 0,limm,limm 001011101110010001111111100QQQQQ. */
+{ "vadd4b", 0x2EE47F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadd4h a,b,c 00101bbb001110000BBBCCCCCCAAAAAA. */
+{ "vadd4h", 0x28380000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadd4h 0,b,c 00101bbb001110000BBBCCCCCC111110. */
+{ "vadd4h", 0x2838003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vadd4h<.cc> b,b,c 00101bbb111110000BBBCCCCCC0QQQQQ. */
+{ "vadd4h", 0x28F80000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadd4h a,b,u6 00101bbb011110000BBBuuuuuuAAAAAA. */
+{ "vadd4h", 0x28780000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadd4h 0,b,u6 00101bbb011110000BBBuuuuuu111110. */
+{ "vadd4h", 0x2878003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadd4h<.cc> b,b,u6 00101bbb111110000BBBuuuuuu1QQQQQ. */
+{ "vadd4h", 0x28F80020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadd4h b,b,s12 00101bbb101110000BBBssssssSSSSSS. */
+{ "vadd4h", 0x28B80000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadd4h a,limm,c 00101110001110000111CCCCCCAAAAAA. */
+{ "vadd4h", 0x2E387000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadd4h a,b,limm 00101bbb001110000BBB111110AAAAAA. */
+{ "vadd4h", 0x28380F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadd4h 0,limm,c 00101110001110000111CCCCCC111110. */
+{ "vadd4h", 0x2E38703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vadd4h 0,b,limm 00101bbb001110000BBB111110111110. */
+{ "vadd4h", 0x28380FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vadd4h<.cc> b,b,limm 00101bbb111110000BBB1111100QQQQQ. */
+{ "vadd4h", 0x28F80F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadd4h<.cc> 0,limm,c 00101110111110000111CCCCCC0QQQQQ. */
+{ "vadd4h", 0x2EF87000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadd4h a,limm,u6 00101110011110000111uuuuuuAAAAAA. */
+{ "vadd4h", 0x2E787000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd4h 0,limm,u6 00101110011110000111uuuuuu111110. */
+{ "vadd4h", 0x2E78703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadd4h<.cc> 0,limm,u6 00101110111110000111uuuuuu1QQQQQ. */
+{ "vadd4h", 0x2EF87020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadd4h 0,limm,s12 00101110101110000111ssssssSSSSSS. */
+{ "vadd4h", 0x2EB87000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadd4h a,limm,limm 00101110001110000111111110AAAAAA. */
+{ "vadd4h", 0x2E387F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadd4h 0,limm,limm 00101110001110000111111110111110. */
+{ "vadd4h", 0x2E387FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadd4h<.cc> 0,limm,limm 001011101111100001111111100QQQQQ. */
+{ "vadd4h", 0x2EF87F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadds2 a,b,c 00101bbb001111000BBBCCCCCCAAAAAA. */
+{ "vadds2", 0x283C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadds2 0,b,c 00101bbb001111000BBBCCCCCC111110. */
+{ "vadds2", 0x283C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vadds2<.cc> b,b,c 00101bbb111111000BBBCCCCCC0QQQQQ. */
+{ "vadds2", 0x28FC0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadds2 a,b,u6 00101bbb011111000BBBuuuuuuAAAAAA. */
+{ "vadds2", 0x287C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadds2 0,b,u6 00101bbb011111000BBBuuuuuu111110. */
+{ "vadds2", 0x287C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadds2<.cc> b,b,u6 00101bbb111111000BBBuuuuuu1QQQQQ. */
+{ "vadds2", 0x28FC0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadds2 b,b,s12 00101bbb101111000BBBssssssSSSSSS. */
+{ "vadds2", 0x28BC0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadds2 a,limm,c 00101110001111000111CCCCCCAAAAAA. */
+{ "vadds2", 0x2E3C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadds2 a,b,limm 00101bbb001111000BBB111110AAAAAA. */
+{ "vadds2", 0x283C0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadds2 0,limm,c 00101110001111000111CCCCCC111110. */
+{ "vadds2", 0x2E3C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vadds2 0,b,limm 00101bbb001111000BBB111110111110. */
+{ "vadds2", 0x283C0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vadds2<.cc> b,b,limm 00101bbb111111000BBB1111100QQQQQ. */
+{ "vadds2", 0x28FC0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadds2<.cc> 0,limm,c 00101110111111000111CCCCCC0QQQQQ. */
+{ "vadds2", 0x2EFC7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadds2 a,limm,u6 00101110011111000111uuuuuuAAAAAA. */
+{ "vadds2", 0x2E7C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds2 0,limm,u6 00101110011111000111uuuuuu111110. */
+{ "vadds2", 0x2E7C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds2<.cc> 0,limm,u6 00101110111111000111uuuuuu1QQQQQ. */
+{ "vadds2", 0x2EFC7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadds2 0,limm,s12 00101110101111000111ssssssSSSSSS. */
+{ "vadds2", 0x2EBC7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadds2 a,limm,limm 00101110001111000111111110AAAAAA. */
+{ "vadds2", 0x2E3C7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadds2 0,limm,limm 00101110001111000111111110111110. */
+{ "vadds2", 0x2E3C7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadds2<.cc> 0,limm,limm 001011101111110001111111100QQQQQ. */
+{ "vadds2", 0x2EFC7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadds2h a,b,c 00101bbb000101001BBBCCCCCCAAAAAA. */
+{ "vadds2h", 0x28148000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadds2h 0,b,c 00101bbb000101001BBBCCCCCC111110. */
+{ "vadds2h", 0x2814803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vadds2h<.cc> b,b,c 00101bbb110101001BBBCCCCCC0QQQQQ. */
+{ "vadds2h", 0x28D48000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadds2h a,b,u6 00101bbb010101001BBBuuuuuuAAAAAA. */
+{ "vadds2h", 0x28548000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadds2h 0,b,u6 00101bbb010101001BBBuuuuuu111110. */
+{ "vadds2h", 0x2854803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadds2h<.cc> b,b,u6 00101bbb110101001BBBuuuuuu1QQQQQ. */
+{ "vadds2h", 0x28D48020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadds2h b,b,s12 00101bbb100101001BBBssssssSSSSSS. */
+{ "vadds2h", 0x28948000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadds2h a,limm,c 00101110000101001111CCCCCCAAAAAA. */
+{ "vadds2h", 0x2E14F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadds2h a,b,limm 00101bbb000101001BBB111110AAAAAA. */
+{ "vadds2h", 0x28148F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadds2h 0,limm,c 00101110000101001111CCCCCC111110. */
+{ "vadds2h", 0x2E14F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vadds2h 0,b,limm 00101bbb000101001BBB111110111110. */
+{ "vadds2h", 0x28148FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vadds2h<.cc> b,b,limm 00101bbb110101001BBB1111100QQQQQ. */
+{ "vadds2h", 0x28D48F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadds2h<.cc> 0,limm,c 00101110110101001111CCCCCC0QQQQQ. */
+{ "vadds2h", 0x2ED4F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadds2h a,limm,u6 00101110010101001111uuuuuuAAAAAA. */
+{ "vadds2h", 0x2E54F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds2h 0,limm,u6 00101110010101001111uuuuuu111110. */
+{ "vadds2h", 0x2E54F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds2h<.cc> 0,limm,u6 00101110110101001111uuuuuu1QQQQQ. */
+{ "vadds2h", 0x2ED4F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadds2h 0,limm,s12 00101110100101001111ssssssSSSSSS. */
+{ "vadds2h", 0x2E94F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadds2h a,limm,limm 00101110000101001111111110AAAAAA. */
+{ "vadds2h", 0x2E14FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadds2h 0,limm,limm 00101110000101001111111110111110. */
+{ "vadds2h", 0x2E14FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadds2h<.cc> 0,limm,limm 001011101101010011111111100QQQQQ. */
+{ "vadds2h", 0x2ED4FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vadds4h a,b,c 00101bbb001110000BBBCCCCCCAAAAAA. */
+{ "vadds4h", 0x28380000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vadds4h 0,b,c 00101bbb001110000BBBCCCCCC111110. */
+{ "vadds4h", 0x2838003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vadds4h<.cc> b,b,c 00101bbb111110000BBBCCCCCC0QQQQQ. */
+{ "vadds4h", 0x28F80000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vadds4h a,b,u6 00101bbb011110000BBBuuuuuuAAAAAA. */
+{ "vadds4h", 0x28780000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vadds4h 0,b,u6 00101bbb011110000BBBuuuuuu111110. */
+{ "vadds4h", 0x2878003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vadds4h<.cc> b,b,u6 00101bbb111110000BBBuuuuuu1QQQQQ. */
+{ "vadds4h", 0x28F80020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vadds4h b,b,s12 00101bbb101110000BBBssssssSSSSSS. */
+{ "vadds4h", 0x28B80000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vadds4h a,limm,c 00101110001110000111CCCCCCAAAAAA. */
+{ "vadds4h", 0x2E387000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vadds4h a,b,limm 00101bbb001110000BBB111110AAAAAA. */
+{ "vadds4h", 0x28380F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vadds4h 0,limm,c 00101110001110000111CCCCCC111110. */
+{ "vadds4h", 0x2E38703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vadds4h 0,b,limm 00101bbb001110000BBB111110111110. */
+{ "vadds4h", 0x28380FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vadds4h<.cc> b,b,limm 00101bbb111110000BBB1111100QQQQQ. */
+{ "vadds4h", 0x28F80F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vadds4h<.cc> 0,limm,c 00101110111110000111CCCCCC0QQQQQ. */
+{ "vadds4h", 0x2EF87000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vadds4h a,limm,u6 00101110011110000111uuuuuuAAAAAA. */
+{ "vadds4h", 0x2E787000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds4h 0,limm,u6 00101110011110000111uuuuuu111110. */
+{ "vadds4h", 0x2E78703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vadds4h<.cc> 0,limm,u6 00101110111110000111uuuuuu1QQQQQ. */
+{ "vadds4h", 0x2EF87020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vadds4h 0,limm,s12 00101110101110000111ssssssSSSSSS. */
+{ "vadds4h", 0x2EB87000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vadds4h a,limm,limm 00101110001110000111111110AAAAAA. */
+{ "vadds4h", 0x2E387F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vadds4h 0,limm,limm 00101110001110000111111110111110. */
+{ "vadds4h", 0x2E387FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vadds4h<.cc> 0,limm,limm 001011101111100001111111100QQQQQ. */
+{ "vadds4h", 0x2EF87F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsub a,b,c 00101bbb001111100BBBCCCCCCAAAAAA. */
+{ "vaddsub", 0x283E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsub 0,b,c 00101bbb001111100BBBCCCCCC111110. */
+{ "vaddsub", 0x283E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vaddsub<.cc> b,b,c 00101bbb111111100BBBCCCCCC0QQQQQ. */
+{ "vaddsub", 0x28FE0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsub a,b,u6 00101bbb011111100BBBuuuuuuAAAAAA. */
+{ "vaddsub", 0x287E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub 0,b,u6 00101bbb011111100BBBuuuuuu111110. */
+{ "vaddsub", 0x287E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub<.cc> b,b,u6 00101bbb111111100BBBuuuuuu1QQQQQ. */
+{ "vaddsub", 0x28FE0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsub b,b,s12 00101bbb101111100BBBssssssSSSSSS. */
+{ "vaddsub", 0x28BE0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsub a,limm,c 00101110001111100111CCCCCCAAAAAA. */
+{ "vaddsub", 0x2E3E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsub a,b,limm 00101bbb001111100BBB111110AAAAAA. */
+{ "vaddsub", 0x283E0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsub 0,limm,c 00101110001111100111CCCCCC111110. */
+{ "vaddsub", 0x2E3E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsub 0,b,limm 00101bbb001111100BBB111110111110. */
+{ "vaddsub", 0x283E0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsub<.cc> b,b,limm 00101bbb111111100BBB1111100QQQQQ. */
+{ "vaddsub", 0x28FE0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsub<.cc> 0,limm,c 00101110111111100111CCCCCC0QQQQQ. */
+{ "vaddsub", 0x2EFE7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsub a,limm,u6 00101110011111100111uuuuuuAAAAAA. */
+{ "vaddsub", 0x2E7E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub 0,limm,u6 00101110011111100111uuuuuu111110. */
+{ "vaddsub", 0x2E7E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub<.cc> 0,limm,u6 00101110111111100111uuuuuu1QQQQQ. */
+{ "vaddsub", 0x2EFE7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsub 0,limm,s12 00101110101111100111ssssssSSSSSS. */
+{ "vaddsub", 0x2EBE7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsub a,limm,limm 00101110001111100111111110AAAAAA. */
+{ "vaddsub", 0x2E3E7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub 0,limm,limm 00101110001111100111111110111110. */
+{ "vaddsub", 0x2E3E7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub<.cc> 0,limm,limm 001011101111111001111111100QQQQQ. */
+{ "vaddsub", 0x2EFE7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsub2h a,b,c 00101bbb000101100BBBCCCCCCAAAAAA. */
+{ "vaddsub2h", 0x28160000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsub2h 0,b,c 00101bbb000101100BBBCCCCCC111110. */
+{ "vaddsub2h", 0x2816003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { 0 }},
+
+/* vaddsub2h<.cc> b,b,c 00101bbb110101100BBBCCCCCC0QQQQQ. */
+{ "vaddsub2h", 0x28D60000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsub2h a,b,u6 00101bbb010101100BBBuuuuuuAAAAAA. */
+{ "vaddsub2h", 0x28560000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub2h 0,b,u6 00101bbb010101100BBBuuuuuu111110. */
+{ "vaddsub2h", 0x2856003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub2h<.cc> b,b,u6 00101bbb110101100BBBuuuuuu1QQQQQ. */
+{ "vaddsub2h", 0x28D60020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsub2h b,b,s12 00101bbb100101100BBBssssssSSSSSS. */
+{ "vaddsub2h", 0x28960000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsub2h a,limm,c 00101110000101100111CCCCCCAAAAAA. */
+{ "vaddsub2h", 0x2E167000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsub2h a,b,limm 00101bbb000101100BBB111110AAAAAA. */
+{ "vaddsub2h", 0x28160F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsub2h 0,limm,c 00101110000101100111CCCCCC111110. */
+{ "vaddsub2h", 0x2E16703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsub2h 0,b,limm 00101bbb000101100BBB111110111110. */
+{ "vaddsub2h", 0x28160FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsub2h<.cc> b,b,limm 00101bbb110101100BBB1111100QQQQQ. */
+{ "vaddsub2h", 0x28D60F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsub2h<.cc> 0,limm,c 00101110110101100111CCCCCC0QQQQQ. */
+{ "vaddsub2h", 0x2ED67000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsub2h a,limm,u6 00101110010101100111uuuuuuAAAAAA. */
+{ "vaddsub2h", 0x2E567000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub2h 0,limm,u6 00101110010101100111uuuuuu111110. */
+{ "vaddsub2h", 0x2E56703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub2h<.cc> 0,limm,u6 00101110110101100111uuuuuu1QQQQQ. */
+{ "vaddsub2h", 0x2ED67020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsub2h 0,limm,s12 00101110100101100111ssssssSSSSSS. */
+{ "vaddsub2h", 0x2E967000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsub2h a,limm,limm 00101110000101100111111110AAAAAA. */
+{ "vaddsub2h", 0x2E167F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub2h 0,limm,limm 00101110000101100111111110111110. */
+{ "vaddsub2h", 0x2E167FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub2h<.cc> 0,limm,limm 001011101101011001111111100QQQQQ. */
+{ "vaddsub2h", 0x2ED67F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsub4h a,b,c 00101bbb001110100BBBCCCCCCAAAAAA. */
+{ "vaddsub4h", 0x283A0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsub4h 0,b,c 00101bbb001110100BBBCCCCCC111110. */
+{ "vaddsub4h", 0x283A003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vaddsub4h<.cc> b,b,c 00101bbb111110100BBBCCCCCC0QQQQQ. */
+{ "vaddsub4h", 0x28FA0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsub4h a,b,u6 00101bbb011110100BBBuuuuuuAAAAAA. */
+{ "vaddsub4h", 0x287A0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub4h 0,b,u6 00101bbb011110100BBBuuuuuu111110. */
+{ "vaddsub4h", 0x287A003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsub4h<.cc> b,b,u6 00101bbb111110100BBBuuuuuu1QQQQQ. */
+{ "vaddsub4h", 0x28FA0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsub4h b,b,s12 00101bbb101110100BBBssssssSSSSSS. */
+{ "vaddsub4h", 0x28BA0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsub4h a,limm,c 00101110001110100111CCCCCCAAAAAA. */
+{ "vaddsub4h", 0x2E3A7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsub4h a,b,limm 00101bbb001110100BBB111110AAAAAA. */
+{ "vaddsub4h", 0x283A0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsub4h 0,limm,c 00101110001110100111CCCCCC111110. */
+{ "vaddsub4h", 0x2E3A703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsub4h 0,b,limm 00101bbb001110100BBB111110111110. */
+{ "vaddsub4h", 0x283A0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsub4h<.cc> b,b,limm 00101bbb111110100BBB1111100QQQQQ. */
+{ "vaddsub4h", 0x28FA0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsub4h<.cc> 0,limm,c 00101110111110100111CCCCCC0QQQQQ. */
+{ "vaddsub4h", 0x2EFA7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsub4h a,limm,u6 00101110011110100111uuuuuuAAAAAA. */
+{ "vaddsub4h", 0x2E7A7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub4h 0,limm,u6 00101110011110100111uuuuuu111110. */
+{ "vaddsub4h", 0x2E7A703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsub4h<.cc> 0,limm,u6 00101110111110100111uuuuuu1QQQQQ. */
+{ "vaddsub4h", 0x2EFA7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsub4h 0,limm,s12 00101110101110100111ssssssSSSSSS. */
+{ "vaddsub4h", 0x2EBA7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsub4h a,limm,limm 00101110001110100111111110AAAAAA. */
+{ "vaddsub4h", 0x2E3A7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub4h 0,limm,limm 00101110001110100111111110111110. */
+{ "vaddsub4h", 0x2E3A7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsub4h<.cc> 0,limm,limm 001011101111101001111111100QQQQQ. */
+{ "vaddsub4h", 0x2EFA7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsubs a,b,c 00101bbb001111100BBBCCCCCCAAAAAA. */
+{ "vaddsubs", 0x283E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsubs 0,b,c 00101bbb001111100BBBCCCCCC111110. */
+{ "vaddsubs", 0x283E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vaddsubs<.cc> b,b,c 00101bbb111111100BBBCCCCCC0QQQQQ. */
+{ "vaddsubs", 0x28FE0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsubs a,b,u6 00101bbb011111100BBBuuuuuuAAAAAA. */
+{ "vaddsubs", 0x287E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs 0,b,u6 00101bbb011111100BBBuuuuuu111110. */
+{ "vaddsubs", 0x287E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs<.cc> b,b,u6 00101bbb111111100BBBuuuuuu1QQQQQ. */
+{ "vaddsubs", 0x28FE0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs b,b,s12 00101bbb101111100BBBssssssSSSSSS. */
+{ "vaddsubs", 0x28BE0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsubs a,limm,c 00101110001111100111CCCCCCAAAAAA. */
+{ "vaddsubs", 0x2E3E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsubs a,b,limm 00101bbb001111100BBB111110AAAAAA. */
+{ "vaddsubs", 0x283E0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsubs 0,limm,c 00101110001111100111CCCCCC111110. */
+{ "vaddsubs", 0x2E3E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsubs 0,b,limm 00101bbb001111100BBB111110111110. */
+{ "vaddsubs", 0x283E0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsubs<.cc> b,b,limm 00101bbb111111100BBB1111100QQQQQ. */
+{ "vaddsubs", 0x28FE0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsubs<.cc> 0,limm,c 00101110111111100111CCCCCC0QQQQQ. */
+{ "vaddsubs", 0x2EFE7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsubs a,limm,u6 00101110011111100111uuuuuuAAAAAA. */
+{ "vaddsubs", 0x2E7E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs 0,limm,u6 00101110011111100111uuuuuu111110. */
+{ "vaddsubs", 0x2E7E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs<.cc> 0,limm,u6 00101110111111100111uuuuuu1QQQQQ. */
+{ "vaddsubs", 0x2EFE7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs 0,limm,s12 00101110101111100111ssssssSSSSSS. */
+{ "vaddsubs", 0x2EBE7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsubs a,limm,limm 00101110001111100111111110AAAAAA. */
+{ "vaddsubs", 0x2E3E7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs 0,limm,limm 00101110001111100111111110111110. */
+{ "vaddsubs", 0x2E3E7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs<.cc> 0,limm,limm 001011101111111001111111100QQQQQ. */
+{ "vaddsubs", 0x2EFE7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsubs2h a,b,c 00101bbb000101101BBBCCCCCCAAAAAA. */
+{ "vaddsubs2h", 0x28168000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsubs2h 0,b,c 00101bbb000101101BBBCCCCCC111110. */
+{ "vaddsubs2h", 0x2816803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vaddsubs2h<.cc> b,b,c 00101bbb110101101BBBCCCCCC0QQQQQ. */
+{ "vaddsubs2h", 0x28D68000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsubs2h a,b,u6 00101bbb010101101BBBuuuuuuAAAAAA. */
+{ "vaddsubs2h", 0x28568000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs2h 0,b,u6 00101bbb010101101BBBuuuuuu111110. */
+{ "vaddsubs2h", 0x2856803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs2h<.cc> b,b,u6 00101bbb110101101BBBuuuuuu1QQQQQ. */
+{ "vaddsubs2h", 0x28D68020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs2h b,b,s12 00101bbb100101101BBBssssssSSSSSS. */
+{ "vaddsubs2h", 0x28968000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsubs2h a,limm,c 00101110000101101111CCCCCCAAAAAA. */
+{ "vaddsubs2h", 0x2E16F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsubs2h a,b,limm 00101bbb000101101BBB111110AAAAAA. */
+{ "vaddsubs2h", 0x28168F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsubs2h 0,limm,c 00101110000101101111CCCCCC111110. */
+{ "vaddsubs2h", 0x2E16F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsubs2h 0,b,limm 00101bbb000101101BBB111110111110. */
+{ "vaddsubs2h", 0x28168FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsubs2h<.cc> b,b,limm 00101bbb110101101BBB1111100QQQQQ. */
+{ "vaddsubs2h", 0x28D68F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsubs2h<.cc> 0,limm,c 00101110110101101111CCCCCC0QQQQQ. */
+{ "vaddsubs2h", 0x2ED6F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsubs2h a,limm,u6 00101110010101101111uuuuuuAAAAAA. */
+{ "vaddsubs2h", 0x2E56F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs2h 0,limm,u6 00101110010101101111uuuuuu111110. */
+{ "vaddsubs2h", 0x2E56F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs2h<.cc> 0,limm,u6 00101110110101101111uuuuuu1QQQQQ. */
+{ "vaddsubs2h", 0x2ED6F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs2h 0,limm,s12 00101110100101101111ssssssSSSSSS. */
+{ "vaddsubs2h", 0x2E96F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsubs2h a,limm,limm 00101110000101101111111110AAAAAA. */
+{ "vaddsubs2h", 0x2E16FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs2h 0,limm,limm 00101110000101101111111110111110. */
+{ "vaddsubs2h", 0x2E16FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs2h<.cc> 0,limm,limm 001011101101011011111111100QQQQQ. */
+{ "vaddsubs2h", 0x2ED6FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vaddsubs4h a,b,c 00101bbb001110100BBBCCCCCCAAAAAA. */
+{ "vaddsubs4h", 0x283A0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vaddsubs4h 0,b,c 00101bbb001110100BBBCCCCCC111110. */
+{ "vaddsubs4h", 0x283A003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vaddsubs4h<.cc> b,b,c 00101bbb111110100BBBCCCCCC0QQQQQ. */
+{ "vaddsubs4h", 0x28FA0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vaddsubs4h a,b,u6 00101bbb011110100BBBuuuuuuAAAAAA. */
+{ "vaddsubs4h", 0x287A0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs4h 0,b,u6 00101bbb011110100BBBuuuuuu111110. */
+{ "vaddsubs4h", 0x287A003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vaddsubs4h<.cc> b,b,u6 00101bbb111110100BBBuuuuuu1QQQQQ. */
+{ "vaddsubs4h", 0x28FA0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs4h b,b,s12 00101bbb101110100BBBssssssSSSSSS. */
+{ "vaddsubs4h", 0x28BA0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vaddsubs4h a,limm,c 00101110001110100111CCCCCCAAAAAA. */
+{ "vaddsubs4h", 0x2E3A7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vaddsubs4h a,b,limm 00101bbb001110100BBB111110AAAAAA. */
+{ "vaddsubs4h", 0x283A0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vaddsubs4h 0,limm,c 00101110001110100111CCCCCC111110. */
+{ "vaddsubs4h", 0x2E3A703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vaddsubs4h 0,b,limm 00101bbb001110100BBB111110111110. */
+{ "vaddsubs4h", 0x283A0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vaddsubs4h<.cc> b,b,limm 00101bbb111110100BBB1111100QQQQQ. */
+{ "vaddsubs4h", 0x28FA0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vaddsubs4h<.cc> 0,limm,c 00101110111110100111CCCCCC0QQQQQ. */
+{ "vaddsubs4h", 0x2EFA7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vaddsubs4h a,limm,u6 00101110011110100111uuuuuuAAAAAA. */
+{ "vaddsubs4h", 0x2E7A7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs4h 0,limm,u6 00101110011110100111uuuuuu111110. */
+{ "vaddsubs4h", 0x2E7A703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vaddsubs4h<.cc> 0,limm,u6 00101110111110100111uuuuuu1QQQQQ. */
+{ "vaddsubs4h", 0x2EFA7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vaddsubs4h 0,limm,s12 00101110101110100111ssssssSSSSSS. */
+{ "vaddsubs4h", 0x2EBA7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vaddsubs4h a,limm,limm 00101110001110100111111110AAAAAA. */
+{ "vaddsubs4h", 0x2E3A7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs4h 0,limm,limm 00101110001110100111111110111110. */
+{ "vaddsubs4h", 0x2E3A7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vaddsubs4h<.cc> 0,limm,limm 001011101111101001111111100QQQQQ. */
+{ "vaddsubs4h", 0x2EFA7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* valgn2h a,b,c 00101bbb000011010BBBCCCCCCAAAAAA. */
+{ "valgn2h", 0x280D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* valgn2h 0,b,c 00101bbb000011010BBBCCCCCC111110. */
+{ "valgn2h", 0x280D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* valgn2h<.cc> b,b,c 00101bbb110011010BBBCCCCCC0QQQQQ. */
+{ "valgn2h", 0x28CD0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* valgn2h a,b,u6 00101bbb010011010BBBuuuuuuAAAAAA. */
+{ "valgn2h", 0x284D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* valgn2h 0,b,u6 00101bbb010011010BBBuuuuuu111110. */
+{ "valgn2h", 0x284D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* valgn2h<.cc> b,b,u6 00101bbb110011010BBBuuuuuu1QQQQQ. */
+{ "valgn2h", 0x28CD0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* valgn2h b,b,s12 00101bbb100011010BBBssssssSSSSSS. */
+{ "valgn2h", 0x288D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* valgn2h a,limm,c 00101110000011010111CCCCCCAAAAAA. */
+{ "valgn2h", 0x2E0D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* valgn2h a,b,limm 00101bbb000011010BBB111110AAAAAA. */
+{ "valgn2h", 0x280D0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* valgn2h 0,limm,c 00101110000011010111CCCCCC111110. */
+{ "valgn2h", 0x2E0D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* valgn2h 0,b,limm 00101bbb000011010BBB111110111110. */
+{ "valgn2h", 0x280D0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* valgn2h<.cc> b,b,limm 00101bbb110011010BBB1111100QQQQQ. */
+{ "valgn2h", 0x28CD0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* valgn2h<.cc> 0,limm,c 00101110110011010111CCCCCC0QQQQQ. */
+{ "valgn2h", 0x2ECD7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* valgn2h a,limm,u6 00101110010011010111uuuuuuAAAAAA. */
+{ "valgn2h", 0x2E4D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* valgn2h 0,limm,u6 00101110010011010111uuuuuu111110. */
+{ "valgn2h", 0x2E4D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* valgn2h<.cc> 0,limm,u6 00101110110011010111uuuuuu1QQQQQ. */
+{ "valgn2h", 0x2ECD7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* valgn2h 0,limm,s12 00101110100011010111ssssssSSSSSS. */
+{ "valgn2h", 0x2E8D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* valgn2h a,limm,limm 00101110000011010111111110AAAAAA. */
+{ "valgn2h", 0x2E0D7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* valgn2h 0,limm,limm 00101110000011010111111110111110. */
+{ "valgn2h", 0x2E0D7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* valgn2h<.cc> 0,limm,limm 001011101100110101111111100QQQQQ. */
+{ "valgn2h", 0x2ECD7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vasl2h a,b,c 00101bbb001000010BBBCCCCCCAAAAAA. */
+{ "vasl2h", 0x28210000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vasl2h 0,b,c 00101bbb001000010BBBCCCCCC111110. */
+{ "vasl2h", 0x2821003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vasl2h<.cc> b,b,c 00101bbb111000010BBBCCCCCC0QQQQQ. */
+{ "vasl2h", 0x28E10000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vasl2h a,b,u6 00101bbb011000010BBBuuuuuuAAAAAA. */
+{ "vasl2h", 0x28610000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vasl2h 0,b,u6 00101bbb011000010BBBuuuuuu111110. */
+{ "vasl2h", 0x2861003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vasl2h<.cc> b,b,u6 00101bbb111000010BBBuuuuuu1QQQQQ. */
+{ "vasl2h", 0x28E10020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vasl2h b,b,s12 00101bbb101000010BBBssssssSSSSSS. */
+{ "vasl2h", 0x28A10000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vasl2h a,limm,c 00101110001000010111CCCCCCAAAAAA. */
+{ "vasl2h", 0x2E217000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vasl2h a,b,limm 00101bbb001000010BBB111110AAAAAA. */
+{ "vasl2h", 0x28210F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vasl2h 0,limm,c 00101110011000010111CCCCCC111110. */
+{ "vasl2h", 0x2E61703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vasl2h 0,b,limm 00101bbb001000010BBB111110111110. */
+{ "vasl2h", 0x28210FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vasl2h<.cc> b,b,limm 00101bbb111000010BBB1111100QQQQQ. */
+{ "vasl2h", 0x28E10F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vasl2h<.cc> 0,limm,c 00101110111000010111CCCCCC0QQQQQ. */
+{ "vasl2h", 0x2EE17000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vasl2h a,limm,u6 00101110011000010111uuuuuuAAAAAA. */
+{ "vasl2h", 0x2E617000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasl2h 0,limm,u6 00101110011000010111uuuuuu111110. */
+{ "vasl2h", 0x2E61703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasl2h<.cc> 0,limm,u6 00101110111000010111uuuuuu1QQQQQ. */
+{ "vasl2h", 0x2EE17020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vasl2h 0,limm,s12 00101110101000010111ssssssSSSSSS. */
+{ "vasl2h", 0x2EA17000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vasl2h a,limm,limm 00101110001000010111111110AAAAAA. */
+{ "vasl2h", 0x2E217F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vasl2h 0,limm,limm 00101110001000010111111110111110. */
+{ "vasl2h", 0x2E217FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vasl2h<.cc> 0,limm,limm 001011101110000101111111100QQQQQ. */
+{ "vasl2h", 0x2EE17F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vasls2h a,b,c 00101bbb001000011BBBCCCCCCAAAAAA. */
+{ "vasls2h", 0x28218000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vasls2h 0,b,c 00101bbb001000010BBBCCCCCC111110. */
+{ "vasls2h", 0x2821003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vasls2h<.cc> b,b,c 00101bbb111000011BBBCCCCCC0QQQQQ. */
+{ "vasls2h", 0x28E18000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vasls2h a,b,u6 00101bbb011000011BBBuuuuuuAAAAAA. */
+{ "vasls2h", 0x28618000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vasls2h 0,b,u6 00101bbb011000010BBBuuuuuu111110. */
+{ "vasls2h", 0x2861003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vasls2h<.cc> b,b,u6 00101bbb111000011BBBuuuuuu1QQQQQ. */
+{ "vasls2h", 0x28E18020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vasls2h b,b,s12 00101bbb101000011BBBssssssSSSSSS. */
+{ "vasls2h", 0x28A18000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vasls2h a,limm,c 00101110001000010111CCCCCCAAAAAA. */
+{ "vasls2h", 0x2E217000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vasls2h a,b,limm 00101bbb001000010BBB111110AAAAAA. */
+{ "vasls2h", 0x28210F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vasls2h 0,limm,c 00101110011000010111CCCCCC111110. */
+{ "vasls2h", 0x2E61703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vasls2h 0,b,limm 00101bbb001000010BBB111110111110. */
+{ "vasls2h", 0x28210FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vasls2h<.cc> b,b,limm 00101bbb111000010BBB1111100QQQQQ. */
+{ "vasls2h", 0x28E10F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vasls2h<.cc> 0,limm,c 00101110111000010111CCCCCC0QQQQQ. */
+{ "vasls2h", 0x2EE17000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vasls2h a,limm,u6 00101110011000010111uuuuuuAAAAAA. */
+{ "vasls2h", 0x2E617000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasls2h 0,limm,u6 00101110011000010111uuuuuu111110. */
+{ "vasls2h", 0x2E61703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasls2h<.cc> 0,limm,u6 00101110111000010111uuuuuu1QQQQQ. */
+{ "vasls2h", 0x2EE17020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vasls2h 0,limm,s12 00101110101000010111ssssssSSSSSS. */
+{ "vasls2h", 0x2EA17000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vasls2h a,limm,limm 00101110001000010111111110AAAAAA. */
+{ "vasls2h", 0x2E217F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vasls2h 0,limm,limm 00101110001000010111111110111110. */
+{ "vasls2h", 0x2E217FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vasls2h<.cc> 0,limm,limm 001011101110000101111111100QQQQQ. */
+{ "vasls2h", 0x2EE17F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vasr2h a,b,c 00101bbb001000100BBBCCCCCCAAAAAA. */
+{ "vasr2h", 0x28220000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vasr2h 0,b,c 00101bbb001000100BBBCCCCCC111110. */
+{ "vasr2h", 0x2822003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vasr2h<.cc> b,b,c 00101bbb111000100BBBCCCCCC0QQQQQ. */
+{ "vasr2h", 0x28E20000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vasr2h a,b,u6 00101bbb011000100BBBuuuuuuAAAAAA. */
+{ "vasr2h", 0x28620000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vasr2h 0,b,u6 00101bbb011000100BBBuuuuuu111110. */
+{ "vasr2h", 0x2862003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vasr2h<.cc> b,b,u6 00101bbb111000100BBBuuuuuu1QQQQQ. */
+{ "vasr2h", 0x28E20020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vasr2h b,b,s12 00101bbb101000100BBBssssssSSSSSS. */
+{ "vasr2h", 0x28A20000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vasr2h a,limm,c 00101110001000100111CCCCCCAAAAAA. */
+{ "vasr2h", 0x2E227000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vasr2h a,b,limm 00101bbb001000100BBB111110AAAAAA. */
+{ "vasr2h", 0x28220F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vasr2h 0,limm,c 00101110011000100111CCCCCC111110. */
+{ "vasr2h", 0x2E62703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vasr2h 0,b,limm 00101bbb001000100BBB111110111110. */
+{ "vasr2h", 0x28220FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vasr2h<.cc> b,b,limm 00101bbb111000100BBB1111100QQQQQ. */
+{ "vasr2h", 0x28E20F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vasr2h<.cc> 0,limm,c 00101110111000100111CCCCCC0QQQQQ. */
+{ "vasr2h", 0x2EE27000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vasr2h a,limm,u6 00101110011000100111uuuuuuAAAAAA. */
+{ "vasr2h", 0x2E627000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasr2h 0,limm,u6 00101110011000100111uuuuuu111110. */
+{ "vasr2h", 0x2E62703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasr2h<.cc> 0,limm,u6 00101110111000100111uuuuuu1QQQQQ. */
+{ "vasr2h", 0x2EE27020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vasr2h 0,limm,s12 00101110101000100111ssssssSSSSSS. */
+{ "vasr2h", 0x2EA27000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vasr2h a,limm,limm 00101110001000100111111110AAAAAA. */
+{ "vasr2h", 0x2E227F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vasr2h 0,limm,limm 00101110001000100111111110111110. */
+{ "vasr2h", 0x2E227FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vasr2h<.cc> 0,limm,limm 001011101110001001111111100QQQQQ. */
+{ "vasr2h", 0x2EE27F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vasrs2h a,b,c 00101bbb001000101BBBCCCCCCAAAAAA. */
+{ "vasrs2h", 0x28228000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vasrs2h 0,b,c 00101bbb001000101BBBCCCCCC111110. */
+{ "vasrs2h", 0x2822803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vasrs2h<.cc> b,b,c 00101bbb111000101BBBCCCCCC0QQQQQ. */
+{ "vasrs2h", 0x28E28000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vasrs2h a,b,u6 00101bbb011000101BBBuuuuuuAAAAAA. */
+{ "vasrs2h", 0x28628000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vasrs2h 0,b,u6 00101bbb011000101BBBuuuuuu111110. */
+{ "vasrs2h", 0x2862803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vasrs2h<.cc> b,b,u6 00101bbb111000101BBBuuuuuu1QQQQQ. */
+{ "vasrs2h", 0x28E28020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vasrs2h b,b,s12 00101bbb101000101BBBssssssSSSSSS. */
+{ "vasrs2h", 0x28A28000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vasrs2h a,limm,c 00101110001000101111CCCCCCAAAAAA. */
+{ "vasrs2h", 0x2E22F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vasrs2h a,b,limm 00101bbb001000101BBB111110AAAAAA. */
+{ "vasrs2h", 0x28228F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vasrs2h 0,limm,c 00101110011000101111CCCCCC111110. */
+{ "vasrs2h", 0x2E62F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vasrs2h 0,b,limm 00101bbb001000101BBB111110111110. */
+{ "vasrs2h", 0x28228FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vasrs2h<.cc> b,b,limm 00101bbb111000101BBB1111100QQQQQ. */
+{ "vasrs2h", 0x28E28F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vasrs2h<.cc> 0,limm,c 00101110111000101111CCCCCC0QQQQQ. */
+{ "vasrs2h", 0x2EE2F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vasrs2h a,limm,u6 00101110011000101111uuuuuuAAAAAA. */
+{ "vasrs2h", 0x2E62F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasrs2h 0,limm,u6 00101110011000101111uuuuuu111110. */
+{ "vasrs2h", 0x2E62F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasrs2h<.cc> 0,limm,u6 00101110111000101111uuuuuu1QQQQQ. */
+{ "vasrs2h", 0x2EE2F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vasrs2h 0,limm,s12 00101110101000101111ssssssSSSSSS. */
+{ "vasrs2h", 0x2EA2F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vasrs2h a,limm,limm 00101110001000101111111110AAAAAA. */
+{ "vasrs2h", 0x2E22FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vasrs2h 0,limm,limm 00101110001000101111111110111110. */
+{ "vasrs2h", 0x2E22FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vasrs2h<.cc> 0,limm,limm 001011101110001011111111100QQQQQ. */
+{ "vasrs2h", 0x2EE2FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vasrsr2h a,b,c 00101bbb001000111BBBCCCCCCAAAAAA. */
+{ "vasrsr2h", 0x28238000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vasrsr2h 0,b,c 00101bbb001000111BBBCCCCCC111110. */
+{ "vasrsr2h", 0x2823803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vasrsr2h<.cc> b,b,c 00101bbb111000111BBBCCCCCC0QQQQQ. */
+{ "vasrsr2h", 0x28E38000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vasrsr2h a,b,u6 00101bbb011000111BBBuuuuuuAAAAAA. */
+{ "vasrsr2h", 0x28638000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vasrsr2h 0,b,u6 00101bbb011000111BBBuuuuuu111110. */
+{ "vasrsr2h", 0x2863803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vasrsr2h<.cc> b,b,u6 00101bbb111000111BBBuuuuuu1QQQQQ. */
+{ "vasrsr2h", 0x28E38020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vasrsr2h b,b,s12 00101bbb101000111BBBssssssSSSSSS. */
+{ "vasrsr2h", 0x28A38000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vasrsr2h a,limm,c 00101110001000111111CCCCCCAAAAAA. */
+{ "vasrsr2h", 0x2E23F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vasrsr2h a,b,limm 00101bbb001000111BBB111110AAAAAA. */
+{ "vasrsr2h", 0x28238F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vasrsr2h 0,limm,c 00101110011000111111CCCCCC111110. */
+{ "vasrsr2h", 0x2E63F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vasrsr2h 0,b,limm 00101bbb001000111BBB111110111110. */
+{ "vasrsr2h", 0x28238FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vasrsr2h<.cc> b,b,limm 00101bbb111000111BBB1111100QQQQQ. */
+{ "vasrsr2h", 0x28E38F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vasrsr2h<.cc> 0,limm,c 00101110111000111111CCCCCC0QQQQQ. */
+{ "vasrsr2h", 0x2EE3F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vasrsr2h a,limm,u6 00101110011000111111uuuuuuAAAAAA. */
+{ "vasrsr2h", 0x2E63F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasrsr2h 0,limm,u6 00101110011000111111uuuuuu111110. */
+{ "vasrsr2h", 0x2E63F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vasrsr2h<.cc> 0,limm,u6 00101110111000111111uuuuuu1QQQQQ. */
+{ "vasrsr2h", 0x2EE3F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vasrsr2h 0,limm,s12 00101110101000111111ssssssSSSSSS. */
+{ "vasrsr2h", 0x2EA3F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vasrsr2h a,limm,limm 00101110001000111111111110AAAAAA. */
+{ "vasrsr2h", 0x2E23FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vasrsr2h 0,limm,limm 00101110001000111111111110111110. */
+{ "vasrsr2h", 0x2E23FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vasrsr2h<.cc> 0,limm,limm 001011101110001111111111100QQQQQ. */
+{ "vasrsr2h", 0x2EE3FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vext2bhl b,c 00101bbb001011110BBBCCCCCC100100. */
+{ "vext2bhl", 0x282F0024, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vext2bhl 0,c 00101110001011110111CCCCCC100100. */
+{ "vext2bhl", 0x2E2F7024, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vext2bhl b,u6 00101bbb011011110BBBuuuuuu100100. */
+{ "vext2bhl", 0x286F0024, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vext2bhl 0,u6 00101110011011110111uuuuuu100100. */
+{ "vext2bhl", 0x2E6F7024, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vext2bhl b,limm 00101bbb001011110BBB111110100100. */
+{ "vext2bhl", 0x282F0FA4, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vext2bhl 0,limm 00101110001011110111111110100100. */
+{ "vext2bhl", 0x2E2F7FA4, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vext2bhlf b,c 00101bbb001011110BBBCCCCCC100000. */
+{ "vext2bhlf", 0x282F0020, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vext2bhlf 0,c 00101110001011110111CCCCCC100000. */
+{ "vext2bhlf", 0x2E2F7020, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vext2bhlf b,u6 00101bbb011011110BBBuuuuuu100000. */
+{ "vext2bhlf", 0x286F0020, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vext2bhlf 0,u6 00101110011011110111uuuuuu100000. */
+{ "vext2bhlf", 0x2E6F7020, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vext2bhlf b,limm 00101bbb001011110BBB111110100000. */
+{ "vext2bhlf", 0x282F0FA0, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vext2bhlf 0,limm 00101110001011110111111110100000. */
+{ "vext2bhlf", 0x2E2F7FA0, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vext2bhm b,c 00101bbb001011110BBBCCCCCC100101. */
+{ "vext2bhm", 0x282F0025, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vext2bhm 0,c 00101110001011110111CCCCCC100101. */
+{ "vext2bhm", 0x2E2F7025, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vext2bhm b,u6 00101bbb011011110BBBuuuuuu100101. */
+{ "vext2bhm", 0x286F0025, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vext2bhm 0,u6 00101110011011110111uuuuuu100101. */
+{ "vext2bhm", 0x2E6F7025, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vext2bhm b,limm 00101bbb001011110BBB111110100101. */
+{ "vext2bhm", 0x282F0FA5, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vext2bhm 0,limm 00101110001011110111111110100101. */
+{ "vext2bhm", 0x2E2F7FA5, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vext2bhmf b,c 00101bbb001011110BBBCCCCCC100001. */
+{ "vext2bhmf", 0x282F0021, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vext2bhmf 0,c 00101110001011110111CCCCCC100001. */
+{ "vext2bhmf", 0x2E2F7021, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vext2bhmf b,u6 00101bbb011011110BBBuuuuuu100001. */
+{ "vext2bhmf", 0x286F0021, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vext2bhmf 0,u6 00101110011011110111uuuuuu100001. */
+{ "vext2bhmf", 0x2E6F7021, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vext2bhmf b,limm 00101bbb001011110BBB111110100001. */
+{ "vext2bhmf", 0x282F0FA1, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vext2bhmf 0,limm 00101110001011110111111110100001. */
+{ "vext2bhmf", 0x2E2F7FA1, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vlsr2h a,b,c 00101bbb001000110BBBCCCCCCAAAAAA. */
+{ "vlsr2h", 0x28230000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vlsr2h 0,b,c 00101bbb001000110BBBCCCCCC111110. */
+{ "vlsr2h", 0x2823003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vlsr2h<.cc> b,b,c 00101bbb111000110BBBCCCCCC0QQQQQ. */
+{ "vlsr2h", 0x28E30000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vlsr2h a,b,u6 00101bbb011000110BBBuuuuuuAAAAAA. */
+{ "vlsr2h", 0x28630000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vlsr2h 0,b,u6 00101bbb011000110BBBuuuuuu111110. */
+{ "vlsr2h", 0x2863003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vlsr2h<.cc> b,b,u6 00101bbb111000110BBBuuuuuu1QQQQQ. */
+{ "vlsr2h", 0x28E30020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vlsr2h b,b,s12 00101bbb101000110BBBssssssSSSSSS. */
+{ "vlsr2h", 0x28A30000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vlsr2h a,limm,c 00101110001000110111CCCCCCAAAAAA. */
+{ "vlsr2h", 0x2E237000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vlsr2h a,b,limm 00101bbb001000110BBB111110AAAAAA. */
+{ "vlsr2h", 0x28230F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vlsr2h 0,limm,c 00101110011000110111CCCCCC111110. */
+{ "vlsr2h", 0x2E63703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vlsr2h 0,b,limm 00101bbb001000110BBB111110111110. */
+{ "vlsr2h", 0x28230FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vlsr2h<.cc> b,b,limm 00101bbb111000110BBB1111100QQQQQ. */
+{ "vlsr2h", 0x28E30F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vlsr2h<.cc> 0,limm,c 00101110111000110111CCCCCC0QQQQQ. */
+{ "vlsr2h", 0x2EE37000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vlsr2h a,limm,u6 00101110011000110111uuuuuuAAAAAA. */
+{ "vlsr2h", 0x2E637000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vlsr2h 0,limm,u6 00101110011000110111uuuuuu111110. */
+{ "vlsr2h", 0x2E63703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vlsr2h<.cc> 0,limm,u6 00101110111000110111uuuuuu1QQQQQ. */
+{ "vlsr2h", 0x2EE37020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vlsr2h 0,limm,s12 00101110101000110111ssssssSSSSSS. */
+{ "vlsr2h", 0x2EA37000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vlsr2h a,limm,limm 00101110001000110111111110AAAAAA. */
+{ "vlsr2h", 0x2E237F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vlsr2h 0,limm,limm 00101110001000110111111110111110. */
+{ "vlsr2h", 0x2E237FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vlsr2h<.cc> 0,limm,limm 001011101110001101111111100QQQQQ. */
+{ "vlsr2h", 0x2EE37F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmac2h a,b,c 00101bbb000111100BBBCCCCCCAAAAAA. */
+{ "vmac2h", 0x281E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmac2h 0,b,c 00101bbb000111100BBBCCCCCC111110. */
+{ "vmac2h", 0x281E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmac2h<.cc> b,b,c 00101bbb110111100BBBCCCCCC0QQQQQ. */
+{ "vmac2h", 0x28DE0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmac2h a,b,u6 00101bbb010111100BBBuuuuuuAAAAAA. */
+{ "vmac2h", 0x285E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2h 0,b,u6 00101bbb010111100BBBuuuuuu111110. */
+{ "vmac2h", 0x285E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2h<.cc> b,b,u6 00101bbb110111100BBBuuuuuu1QQQQQ. */
+{ "vmac2h", 0x28DE0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmac2h b,b,s12 00101bbb100111100BBBssssssSSSSSS. */
+{ "vmac2h", 0x289E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmac2h a,limm,c 00101110000111100111CCCCCCAAAAAA. */
+{ "vmac2h", 0x2E1E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmac2h a,b,limm 00101bbb000111100BBB111110AAAAAA. */
+{ "vmac2h", 0x281E0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmac2h 0,limm,c 00101110000111100111CCCCCC111110. */
+{ "vmac2h", 0x2E1E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmac2h 0,b,limm 00101bbb000111100BBB111110111110. */
+{ "vmac2h", 0x281E0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmac2h<.cc> b,b,limm 00101bbb110111100BBB1111100QQQQQ. */
+{ "vmac2h", 0x28DE0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmac2h<.cc> 0,limm,c 00101110110111100111CCCCCC0QQQQQ. */
+{ "vmac2h", 0x2EDE7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmac2h a,limm,u6 00101110010111100111uuuuuuAAAAAA. */
+{ "vmac2h", 0x2E5E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2h 0,limm,u6 00101110010111100111uuuuuu111110. */
+{ "vmac2h", 0x2E5E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2h<.cc> 0,limm,u6 00101110110111100111uuuuuu1QQQQQ. */
+{ "vmac2h", 0x2EDE7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmac2h 0,limm,s12 00101110100111100111ssssssSSSSSS. */
+{ "vmac2h", 0x2E9E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmac2h a,limm,limm 00101110000111100111111110AAAAAA. */
+{ "vmac2h", 0x2E1E7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2h 0,limm,limm 00101110000111100111111110111110. */
+{ "vmac2h", 0x2E1E7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2h<.cc> 0,limm,limm 001011101101111001111111100QQQQQ. */
+{ "vmac2h", 0x2EDE7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmac2hf a,b,c 00101bbb000111101BBBCCCCCCAAAAAA. */
+{ "vmac2hf", 0x281E8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmac2hf 0,b,c 00101bbb000111101BBBCCCCCC111110. */
+{ "vmac2hf", 0x281E803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmac2hf<.cc> b,b,c 00101bbb110111101BBBCCCCCC0QQQQQ. */
+{ "vmac2hf", 0x28DE8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmac2hf a,b,u6 00101bbb010111101BBBuuuuuuAAAAAA. */
+{ "vmac2hf", 0x285E8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hf 0,b,u6 00101bbb010111101BBBuuuuuu111110. */
+{ "vmac2hf", 0x285E803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hf<.cc> b,b,u6 00101bbb110111101BBBuuuuuu1QQQQQ. */
+{ "vmac2hf", 0x28DE8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmac2hf b,b,s12 00101bbb100111101BBBssssssSSSSSS. */
+{ "vmac2hf", 0x289E8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmac2hf a,limm,c 00101110000111101111CCCCCCAAAAAA. */
+{ "vmac2hf", 0x2E1EF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmac2hf a,b,limm 00101bbb000111101BBB111110AAAAAA. */
+{ "vmac2hf", 0x281E8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmac2hf 0,limm,c 00101110000111101111CCCCCC111110. */
+{ "vmac2hf", 0x2E1EF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmac2hf 0,b,limm 00101bbb000111101BBB111110111110. */
+{ "vmac2hf", 0x281E8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmac2hf<.cc> b,b,limm 00101bbb110111101BBB1111100QQQQQ. */
+{ "vmac2hf", 0x28DE8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmac2hf<.cc> 0,limm,c 00101110110111101111CCCCCC0QQQQQ. */
+{ "vmac2hf", 0x2EDEF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmac2hf a,limm,u6 00101110010111101111uuuuuuAAAAAA. */
+{ "vmac2hf", 0x2E5EF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hf 0,limm,u6 00101110010111101111uuuuuu111110. */
+{ "vmac2hf", 0x2E5EF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hf<.cc> 0,limm,u6 00101110110111101111uuuuuu1QQQQQ. */
+{ "vmac2hf", 0x2EDEF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmac2hf 0,limm,s12 00101110100111101111ssssssSSSSSS. */
+{ "vmac2hf", 0x2E9EF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmac2hf a,limm,limm 00101110000111101111111110AAAAAA. */
+{ "vmac2hf", 0x2E1EFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hf 0,limm,limm 00101110000111101111111110111110. */
+{ "vmac2hf", 0x2E1EFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hf<.cc> 0,limm,limm 001011101101111011111111100QQQQQ. */
+{ "vmac2hf", 0x2EDEFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmac2hfr a,b,c 00101bbb000111111BBBCCCCCCAAAAAA. */
+{ "vmac2hfr", 0x281F8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmac2hfr 0,b,c 00101bbb000111111BBBCCCCCC111110. */
+{ "vmac2hfr", 0x281F803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmac2hfr<.cc> b,b,c 00101bbb110111111BBBCCCCCC0QQQQQ. */
+{ "vmac2hfr", 0x28DF8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmac2hfr a,b,u6 00101bbb010111111BBBuuuuuuAAAAAA. */
+{ "vmac2hfr", 0x285F8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hfr 0,b,u6 00101bbb010111111BBBuuuuuu111110. */
+{ "vmac2hfr", 0x285F803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hfr<.cc> b,b,u6 00101bbb110111111BBBuuuuuu1QQQQQ. */
+{ "vmac2hfr", 0x28DF8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmac2hfr b,b,s12 00101bbb100111111BBBssssssSSSSSS. */
+{ "vmac2hfr", 0x289F8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmac2hfr a,limm,c 00101110000111111111CCCCCCAAAAAA. */
+{ "vmac2hfr", 0x2E1FF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmac2hfr a,b,limm 00101bbb000111111BBB111110AAAAAA. */
+{ "vmac2hfr", 0x281F8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmac2hfr 0,limm,c 00101110000111111111CCCCCC111110. */
+{ "vmac2hfr", 0x2E1FF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmac2hfr 0,b,limm 00101bbb000111111BBB111110111110. */
+{ "vmac2hfr", 0x281F8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmac2hfr<.cc> b,b,limm 00101bbb110111111BBB1111100QQQQQ. */
+{ "vmac2hfr", 0x28DF8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmac2hfr<.cc> 0,limm,c 00101110110111111111CCCCCC0QQQQQ. */
+{ "vmac2hfr", 0x2EDFF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmac2hfr a,limm,u6 00101110010111111111uuuuuuAAAAAA. */
+{ "vmac2hfr", 0x2E5FF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hfr 0,limm,u6 00101110010111111111uuuuuu111110. */
+{ "vmac2hfr", 0x2E5FF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hfr<.cc> 0,limm,u6 00101110110111111111uuuuuu1QQQQQ. */
+{ "vmac2hfr", 0x2EDFF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmac2hfr 0,limm,s12 00101110100111111111ssssssSSSSSS. */
+{ "vmac2hfr", 0x2E9FF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmac2hfr a,limm,limm 00101110000111111111111110AAAAAA. */
+{ "vmac2hfr", 0x2E1FFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hfr 0,limm,limm 00101110000111111111111110111110. */
+{ "vmac2hfr", 0x2E1FFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hfr<.cc> 0,limm,limm 001011101101111111111111100QQQQQ. */
+{ "vmac2hfr", 0x2EDFFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmac2hnfr a,b,c 00110bbb000100010BBBCCCCCCAAAAAA. */
+{ "vmac2hnfr", 0x30110000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmac2hnfr 0,b,c 00110bbb000100010BBBCCCCCC111110. */
+{ "vmac2hnfr", 0x3011003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmac2hnfr<.cc> b,b,c 00110bbb110100010BBBCCCCCC0QQQQQ. */
+{ "vmac2hnfr", 0x30D10000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmac2hnfr a,b,u6 00110bbb010100010BBBuuuuuuAAAAAA. */
+{ "vmac2hnfr", 0x30510000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hnfr 0,b,u6 00110bbb010100010BBBuuuuuu111110. */
+{ "vmac2hnfr", 0x3051003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hnfr<.cc> b,b,u6 00110bbb110100010BBBuuuuuu1QQQQQ. */
+{ "vmac2hnfr", 0x30D10020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmac2hnfr b,b,s12 00110bbb100100010BBBssssssSSSSSS. */
+{ "vmac2hnfr", 0x30910000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmac2hnfr a,limm,c 00110110000100010111CCCCCCAAAAAA. */
+{ "vmac2hnfr", 0x36117000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmac2hnfr a,b,limm 00110bbb000100010BBB111110AAAAAA. */
+{ "vmac2hnfr", 0x30110F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmac2hnfr 0,limm,c 00110110000100010111CCCCCC111110. */
+{ "vmac2hnfr", 0x3611703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmac2hnfr 0,b,limm 00110bbb000100010BBB111110111110. */
+{ "vmac2hnfr", 0x30110FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmac2hnfr<.cc> b,b,limm 00110bbb110100010BBB1111100QQQQQ. */
+{ "vmac2hnfr", 0x30D10F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmac2hnfr<.cc> 0,limm,c 00110110110100010111CCCCCC0QQQQQ. */
+{ "vmac2hnfr", 0x36D17000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmac2hnfr a,limm,u6 00110110010100010111uuuuuuAAAAAA. */
+{ "vmac2hnfr", 0x36517000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hnfr 0,limm,u6 00110110010100010111uuuuuu111110. */
+{ "vmac2hnfr", 0x3651703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hnfr<.cc> 0,limm,u6 00110110110100010111uuuuuu1QQQQQ. */
+{ "vmac2hnfr", 0x36D17020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmac2hnfr 0,limm,s12 00110110100100010111ssssssSSSSSS. */
+{ "vmac2hnfr", 0x36917000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmac2hnfr a,limm,limm 00110110000100010111111110AAAAAA. */
+{ "vmac2hnfr", 0x36117F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hnfr 0,limm,limm 00110110000100010111111110111110. */
+{ "vmac2hnfr", 0x36117FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hnfr<.cc> 0,limm,limm 001101101101000101111111100QQQQQ. */
+{ "vmac2hnfr", 0x36D17F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmac2hu a,b,c 00101bbb000111110BBBCCCCCCAAAAAA. */
+{ "vmac2hu", 0x281F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmac2hu 0,b,c 00101bbb000111110BBBCCCCCC111110. */
+{ "vmac2hu", 0x281F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmac2hu<.cc> b,b,c 00101bbb110111110BBBCCCCCC0QQQQQ. */
+{ "vmac2hu", 0x28DF0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmac2hu a,b,u6 00101bbb010111110BBBuuuuuuAAAAAA. */
+{ "vmac2hu", 0x285F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hu 0,b,u6 00101bbb010111110BBBuuuuuu111110. */
+{ "vmac2hu", 0x285F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmac2hu<.cc> b,b,u6 00101bbb110111110BBBuuuuuu1QQQQQ. */
+{ "vmac2hu", 0x28DF0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmac2hu b,b,s12 00101bbb100111110BBBssssssSSSSSS. */
+{ "vmac2hu", 0x289F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmac2hu a,limm,c 00101110000111110111CCCCCCAAAAAA. */
+{ "vmac2hu", 0x2E1F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmac2hu a,b,limm 00101bbb000111110BBB111110AAAAAA. */
+{ "vmac2hu", 0x281F0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmac2hu 0,limm,c 00101110000111110111CCCCCC111110. */
+{ "vmac2hu", 0x2E1F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmac2hu 0,b,limm 00101bbb000111110BBB111110111110. */
+{ "vmac2hu", 0x281F0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmac2hu<.cc> b,b,limm 00101bbb110111110BBB1111100QQQQQ. */
+{ "vmac2hu", 0x28DF0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmac2hu<.cc> 0,limm,c 00101110110111110111CCCCCC0QQQQQ. */
+{ "vmac2hu", 0x2EDF7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmac2hu a,limm,u6 00101110010111110111uuuuuuAAAAAA. */
+{ "vmac2hu", 0x2E5F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hu 0,limm,u6 00101110010111110111uuuuuu111110. */
+{ "vmac2hu", 0x2E5F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmac2hu<.cc> 0,limm,u6 00101110110111110111uuuuuu1QQQQQ. */
+{ "vmac2hu", 0x2EDF7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmac2hu 0,limm,s12 00101110100111110111ssssssSSSSSS. */
+{ "vmac2hu", 0x2E9F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmac2hu a,limm,limm 00101110000111110111111110AAAAAA. */
+{ "vmac2hu", 0x2E1F7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hu 0,limm,limm 00101110000111110111111110111110. */
+{ "vmac2hu", 0x2E1F7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmac2hu<.cc> 0,limm,limm 001011101101111101111111100QQQQQ. */
+{ "vmac2hu", 0x2EDF7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmax2h a,b,c 00101bbb001001001BBBCCCCCCAAAAAA. */
+{ "vmax2h", 0x28248000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmax2h 0,b,c 00101bbb001001001BBBCCCCCC111110. */
+{ "vmax2h", 0x2824803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmax2h<.cc> b,b,c 00101bbb111001001BBBCCCCCC0QQQQQ. */
+{ "vmax2h", 0x28E48000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmax2h a,b,u6 00101bbb011001001BBBuuuuuuAAAAAA. */
+{ "vmax2h", 0x28648000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmax2h 0,b,u6 00101bbb011001001BBBuuuuuu111110. */
+{ "vmax2h", 0x2864803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmax2h<.cc> b,b,u6 00101bbb111001001BBBuuuuuu1QQQQQ. */
+{ "vmax2h", 0x28E48020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmax2h b,b,s12 00101bbb101001001BBBssssssSSSSSS. */
+{ "vmax2h", 0x28A48000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmax2h a,limm,c 00101110001001001111CCCCCCAAAAAA. */
+{ "vmax2h", 0x2E24F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmax2h a,b,limm 00101bbb001001001BBB111110AAAAAA. */
+{ "vmax2h", 0x28248F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmax2h 0,limm,c 00101110011001001111CCCCCC111110. */
+{ "vmax2h", 0x2E64F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmax2h 0,b,limm 00101bbb001001001BBB111110111110. */
+{ "vmax2h", 0x28248FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmax2h<.cc> b,b,limm 00101bbb111001001BBB1111100QQQQQ. */
+{ "vmax2h", 0x28E48F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmax2h<.cc> 0,limm,c 00101110111001001111CCCCCC0QQQQQ. */
+{ "vmax2h", 0x2EE4F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmax2h a,limm,u6 00101110011001001111uuuuuuAAAAAA. */
+{ "vmax2h", 0x2E64F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmax2h 0,limm,u6 00101110011001001111uuuuuu111110. */
+{ "vmax2h", 0x2E64F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmax2h<.cc> 0,limm,u6 00101110111001001111uuuuuu1QQQQQ. */
+{ "vmax2h", 0x2EE4F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmax2h 0,limm,s12 00101110101001001111ssssssSSSSSS. */
+{ "vmax2h", 0x2EA4F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmax2h a,limm,limm 00101110001001001111111110AAAAAA. */
+{ "vmax2h", 0x2E24FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmax2h 0,limm,limm 00101110001001001111111110111110. */
+{ "vmax2h", 0x2E24FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmax2h<.cc> 0,limm,limm 001011101110010011111111100QQQQQ. */
+{ "vmax2h", 0x2EE4FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmin2h a,b,c 00101bbb001001011BBBCCCCCCAAAAAA. */
+{ "vmin2h", 0x28258000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmin2h 0,b,c 00101bbb001001011BBBCCCCCC111110. */
+{ "vmin2h", 0x2825803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmin2h<.cc> b,b,c 00101bbb111001011BBBCCCCCC0QQQQQ. */
+{ "vmin2h", 0x28E58000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmin2h a,b,u6 00101bbb011001011BBBuuuuuuAAAAAA. */
+{ "vmin2h", 0x28658000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmin2h 0,b,u6 00101bbb011001011BBBuuuuuu111110. */
+{ "vmin2h", 0x2865803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmin2h<.cc> b,b,u6 00101bbb111001011BBBuuuuuu1QQQQQ. */
+{ "vmin2h", 0x28E58020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmin2h b,b,s12 00101bbb101001011BBBssssssSSSSSS. */
+{ "vmin2h", 0x28A58000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmin2h a,limm,c 00101110001001011111CCCCCCAAAAAA. */
+{ "vmin2h", 0x2E25F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmin2h a,b,limm 00101bbb001001011BBB111110AAAAAA. */
+{ "vmin2h", 0x28258F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmin2h 0,limm,c 00101110011001011111CCCCCC111110. */
+{ "vmin2h", 0x2E65F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmin2h 0,b,limm 00101bbb001001011BBB111110111110. */
+{ "vmin2h", 0x28258FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmin2h<.cc> b,b,limm 00101bbb111001011BBB1111100QQQQQ. */
+{ "vmin2h", 0x28E58F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmin2h<.cc> 0,limm,c 00101110111001011111CCCCCC0QQQQQ. */
+{ "vmin2h", 0x2EE5F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmin2h a,limm,u6 00101110011001011111uuuuuuAAAAAA. */
+{ "vmin2h", 0x2E65F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmin2h 0,limm,u6 00101110011001011111uuuuuu111110. */
+{ "vmin2h", 0x2E65F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmin2h<.cc> 0,limm,u6 00101110111001011111uuuuuu1QQQQQ. */
+{ "vmin2h", 0x2EE5F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmin2h 0,limm,s12 00101110101001011111ssssssSSSSSS. */
+{ "vmin2h", 0x2EA5F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmin2h a,limm,limm 00101110001001011111111110AAAAAA. */
+{ "vmin2h", 0x2E25FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmin2h 0,limm,limm 00101110001001011111111110111110. */
+{ "vmin2h", 0x2E25FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmin2h<.cc> 0,limm,limm 001011101110010111111111100QQQQQ. */
+{ "vmin2h", 0x2EE5FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2h a,b,c 00101bbb000111000BBBCCCCCCAAAAAA. */
+{ "vmpy2h", 0x281C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2h 0,b,c 00101bbb000111000BBBCCCCCC111110. */
+{ "vmpy2h", 0x281C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2h<.cc> b,b,c 00101bbb110111000BBBCCCCCC0QQQQQ. */
+{ "vmpy2h", 0x28DC0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2h a,b,c 00101bbb000111000BBBCCCCCCAAAAAA. */
+{ "vmpy2h", 0x281C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2h 0,b,c 00101bbb000111000BBBCCCCCC111110. */
+{ "vmpy2h", 0x281C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2h<.cc> b,b,c 00101bbb110111000BBBCCCCCC0QQQQQ. */
+{ "vmpy2h", 0x28DC0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2h a,b,u6 00101bbb010111000BBBuuuuuuAAAAAA. */
+{ "vmpy2h", 0x285C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2h 0,b,u6 00101bbb010111000BBBuuuuuu111110. */
+{ "vmpy2h", 0x285C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2h<.cc> b,b,u6 00101bbb110111000BBBuuuuuu1QQQQQ. */
+{ "vmpy2h", 0x28DC0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2h a,b,u6 00101bbb010111000BBBuuuuuuAAAAAA. */
+{ "vmpy2h", 0x285C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2h 0,b,u6 00101bbb010111000BBBuuuuuu111110. */
+{ "vmpy2h", 0x285C003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2h<.cc> b,b,u6 00101bbb110111000BBBuuuuuu1QQQQQ. */
+{ "vmpy2h", 0x28DC0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2h b,b,s12 00101bbb100111000BBBssssssSSSSSS. */
+{ "vmpy2h", 0x289C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2h b,b,s12 00101bbb100111000BBBssssssSSSSSS. */
+{ "vmpy2h", 0x289C0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2h a,limm,c 00101110000111000111CCCCCCAAAAAA. */
+{ "vmpy2h", 0x2E1C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2h a,b,limm 00101bbb000111000BBB111110AAAAAA. */
+{ "vmpy2h", 0x281C0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2h 0,limm,c 00101110000111000111CCCCCC111110. */
+{ "vmpy2h", 0x2E1C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2h 0,b,limm 00101bbb000111000BBB111110111110. */
+{ "vmpy2h", 0x281C0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2h<.cc> b,b,limm 00101bbb110111000BBB1111100QQQQQ. */
+{ "vmpy2h", 0x28DC0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2h<.cc> 0,limm,c 00101110110111000111CCCCCC0QQQQQ. */
+{ "vmpy2h", 0x2EDC7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2h a,limm,c 00101110000111000111CCCCCCAAAAAA. */
+{ "vmpy2h", 0x2E1C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2h a,b,limm 00101bbb000111000BBB111110AAAAAA. */
+{ "vmpy2h", 0x281C0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2h 0,limm,c 00101110000111000111CCCCCC111110. */
+{ "vmpy2h", 0x2E1C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2h 0,b,limm 00101bbb000111000BBB111110111110. */
+{ "vmpy2h", 0x281C0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2h<.cc> b,b,limm 00101bbb110111000BBB1111100QQQQQ. */
+{ "vmpy2h", 0x28DC0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2h<.cc> 0,limm,c 00101110110111000111CCCCCC0QQQQQ. */
+{ "vmpy2h", 0x2EDC7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2h a,limm,u6 00101110010111000111uuuuuuAAAAAA. */
+{ "vmpy2h", 0x2E5C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2h 0,limm,u6 00101110010111000111uuuuuu111110. */
+{ "vmpy2h", 0x2E5C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2h<.cc> 0,limm,u6 00101110110111000111uuuuuu1QQQQQ. */
+{ "vmpy2h", 0x2EDC7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2h a,limm,u6 00101110010111000111uuuuuuAAAAAA. */
+{ "vmpy2h", 0x2E5C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2h 0,limm,u6 00101110010111000111uuuuuu111110. */
+{ "vmpy2h", 0x2E5C703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2h<.cc> 0,limm,u6 00101110110111000111uuuuuu1QQQQQ. */
+{ "vmpy2h", 0x2EDC7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2h 0,limm,s12 00101110100111000111ssssssSSSSSS. */
+{ "vmpy2h", 0x2E9C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2h 0,limm,s12 00101110100111000111ssssssSSSSSS. */
+{ "vmpy2h", 0x2E9C7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2h a,limm,limm 00101110000111000111111110AAAAAA. */
+{ "vmpy2h", 0x2E1C7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2h 0,limm,limm 00101110000111000111111110111110. */
+{ "vmpy2h", 0x2E1C7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2h<.cc> 0,limm,limm 001011101101110001111111100QQQQQ. */
+{ "vmpy2h", 0x2EDC7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2h a,limm,limm 00101110000111000111111110AAAAAA. */
+{ "vmpy2h", 0x2E1C7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2h 0,limm,limm 00101110000111000111111110111110. */
+{ "vmpy2h", 0x2E1C7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2h<.cc> 0,limm,limm 001011101101110001111111100QQQQQ. */
+{ "vmpy2h", 0x2EDC7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2hf a,b,c 00101bbb000111001BBBCCCCCCAAAAAA. */
+{ "vmpy2hf", 0x281C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2hf 0,b,c 00101bbb000111001BBBCCCCCC111110. */
+{ "vmpy2hf", 0x281C803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2hf<.cc> b,b,c 00101bbb110111001BBBCCCCCC0QQQQQ. */
+{ "vmpy2hf", 0x28DC8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2hf a,b,u6 00101bbb010111001BBBuuuuuuAAAAAA. */
+{ "vmpy2hf", 0x285C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hf 0,b,u6 00101bbb010111001BBBuuuuuu111110. */
+{ "vmpy2hf", 0x285C803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hf<.cc> b,b,u6 00101bbb110111001BBBuuuuuu1QQQQQ. */
+{ "vmpy2hf", 0x28DC8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hf b,b,s12 00101bbb100111001BBBssssssSSSSSS. */
+{ "vmpy2hf", 0x289C8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2hf a,limm,c 00101110000111001111CCCCCCAAAAAA. */
+{ "vmpy2hf", 0x2E1CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2hf a,b,limm 00101bbb000111001BBB111110AAAAAA. */
+{ "vmpy2hf", 0x281C8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2hf 0,limm,c 00101110000111001111CCCCCC111110. */
+{ "vmpy2hf", 0x2E1CF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2hf 0,b,limm 00101bbb000111001BBB111110111110. */
+{ "vmpy2hf", 0x281C8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2hf<.cc> b,b,limm 00101bbb110111001BBB1111100QQQQQ. */
+{ "vmpy2hf", 0x28DC8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2hf<.cc> 0,limm,c 00101110110111001111CCCCCC0QQQQQ. */
+{ "vmpy2hf", 0x2EDCF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2hf a,limm,u6 00101110010111001111uuuuuuAAAAAA. */
+{ "vmpy2hf", 0x2E5CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hf 0,limm,u6 00101110010111001111uuuuuu111110. */
+{ "vmpy2hf", 0x2E5CF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hf<.cc> 0,limm,u6 00101110110111001111uuuuuu1QQQQQ. */
+{ "vmpy2hf", 0x2EDCF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hf 0,limm,s12 00101110100111001111ssssssSSSSSS. */
+{ "vmpy2hf", 0x2E9CF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2hf a,limm,limm 00101110000111001111111110AAAAAA. */
+{ "vmpy2hf", 0x2E1CFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hf 0,limm,limm 00101110000111001111111110111110. */
+{ "vmpy2hf", 0x2E1CFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hf<.cc> 0,limm,limm 001011101101110011111111100QQQQQ. */
+{ "vmpy2hf", 0x2EDCFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2hfr a,b,c 00101bbb000111011BBBCCCCCCAAAAAA. */
+{ "vmpy2hfr", 0x281D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2hfr 0,b,c 00101bbb000111011BBBCCCCCC111110. */
+{ "vmpy2hfr", 0x281D803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2hfr<.cc> b,b,c 00101bbb110111011BBBCCCCCC0QQQQQ. */
+{ "vmpy2hfr", 0x28DD8000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2hfr a,b,u6 00101bbb010111011BBBuuuuuuAAAAAA. */
+{ "vmpy2hfr", 0x285D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hfr 0,b,u6 00101bbb010111011BBBuuuuuu111110. */
+{ "vmpy2hfr", 0x285D803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hfr<.cc> b,b,u6 00101bbb110111011BBBuuuuuu1QQQQQ. */
+{ "vmpy2hfr", 0x28DD8020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hfr b,b,s12 00101bbb100111011BBBssssssSSSSSS. */
+{ "vmpy2hfr", 0x289D8000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2hfr a,limm,c 00101110000111011111CCCCCCAAAAAA. */
+{ "vmpy2hfr", 0x2E1DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2hfr a,b,limm 00101bbb000111011BBB111110AAAAAA. */
+{ "vmpy2hfr", 0x281D8F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2hfr 0,limm,c 00101110000111011111CCCCCC111110. */
+{ "vmpy2hfr", 0x2E1DF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2hfr 0,b,limm 00101bbb000111011BBB111110111110. */
+{ "vmpy2hfr", 0x281D8FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2hfr<.cc> b,b,limm 00101bbb110111011BBB1111100QQQQQ. */
+{ "vmpy2hfr", 0x28DD8F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2hfr<.cc> 0,limm,c 00101110110111011111CCCCCC0QQQQQ. */
+{ "vmpy2hfr", 0x2EDDF000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2hfr a,limm,u6 00101110010111011111uuuuuuAAAAAA. */
+{ "vmpy2hfr", 0x2E5DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hfr 0,limm,u6 00101110010111011111uuuuuu111110. */
+{ "vmpy2hfr", 0x2E5DF03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hfr<.cc> 0,limm,u6 00101110110111011111uuuuuu1QQQQQ. */
+{ "vmpy2hfr", 0x2EDDF020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hfr 0,limm,s12 00101110100111011111ssssssSSSSSS. */
+{ "vmpy2hfr", 0x2E9DF000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2hfr a,limm,limm 00101110000111011111111110AAAAAA. */
+{ "vmpy2hfr", 0x2E1DFF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hfr 0,limm,limm 00101110000111011111111110111110. */
+{ "vmpy2hfr", 0x2E1DFFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hfr<.cc> 0,limm,limm 001011101101110111111111100QQQQQ. */
+{ "vmpy2hfr", 0x2EDDFF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2hu a,b,c 00101bbb000111010BBBCCCCCCAAAAAA. */
+{ "vmpy2hu", 0x281D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2hu 0,b,c 00101bbb000111010BBBCCCCCC111110. */
+{ "vmpy2hu", 0x281D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,c 00101bbb110111010BBBCCCCCC0QQQQQ. */
+{ "vmpy2hu", 0x28DD0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2hu a,b,c 00101bbb000111010BBBCCCCCCAAAAAA. */
+{ "vmpy2hu", 0x281D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2hu 0,b,c 00101bbb000111010BBBCCCCCC111110. */
+{ "vmpy2hu", 0x281D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,c 00101bbb110111010BBBCCCCCC0QQQQQ. */
+{ "vmpy2hu", 0x28DD0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2hu a,b,u6 00101bbb010111010BBBuuuuuuAAAAAA. */
+{ "vmpy2hu", 0x285D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu 0,b,u6 00101bbb010111010BBBuuuuuu111110. */
+{ "vmpy2hu", 0x285D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,u6 00101bbb110111010BBBuuuuuu1QQQQQ. */
+{ "vmpy2hu", 0x28DD0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hu a,b,u6 00101bbb010111010BBBuuuuuuAAAAAA. */
+{ "vmpy2hu", 0x285D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu 0,b,u6 00101bbb010111010BBBuuuuuu111110. */
+{ "vmpy2hu", 0x285D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,u6 00101bbb110111010BBBuuuuuu1QQQQQ. */
+{ "vmpy2hu", 0x28DD0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hu b,b,s12 00101bbb100111010BBBssssssSSSSSS. */
+{ "vmpy2hu", 0x289D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2hu b,b,s12 00101bbb100111010BBBssssssSSSSSS. */
+{ "vmpy2hu", 0x289D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2hu a,limm,c 00101110000111010111CCCCCCAAAAAA. */
+{ "vmpy2hu", 0x2E1D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2hu a,b,limm 00101bbb000111010BBB111110AAAAAA. */
+{ "vmpy2hu", 0x281D0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2hu 0,limm,c 00101110000111010111CCCCCC111110. */
+{ "vmpy2hu", 0x2E1D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2hu 0,b,limm 00101bbb000111010BBB111110111110. */
+{ "vmpy2hu", 0x281D0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,limm 00101bbb110111010BBB1111100QQQQQ. */
+{ "vmpy2hu", 0x28DD0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2hu<.cc> 0,limm,c 00101110110111010111CCCCCC0QQQQQ. */
+{ "vmpy2hu", 0x2EDD7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2hu a,limm,c 00101110000111010111CCCCCCAAAAAA. */
+{ "vmpy2hu", 0x2E1D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2hu a,b,limm 00101bbb000111010BBB111110AAAAAA. */
+{ "vmpy2hu", 0x281D0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2hu 0,limm,c 00101110000111010111CCCCCC111110. */
+{ "vmpy2hu", 0x2E1D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2hu 0,b,limm 00101bbb000111010BBB111110111110. */
+{ "vmpy2hu", 0x281D0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2hu<.cc> b,b,limm 00101bbb110111010BBB1111100QQQQQ. */
+{ "vmpy2hu", 0x28DD0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2hu<.cc> 0,limm,c 00101110110111010111CCCCCC0QQQQQ. */
+{ "vmpy2hu", 0x2EDD7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2hu a,limm,u6 00101110010111010111uuuuuuAAAAAA. */
+{ "vmpy2hu", 0x2E5D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu 0,limm,u6 00101110010111010111uuuuuu111110. */
+{ "vmpy2hu", 0x2E5D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu<.cc> 0,limm,u6 00101110110111010111uuuuuu1QQQQQ. */
+{ "vmpy2hu", 0x2EDD7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hu a,limm,u6 00101110010111010111uuuuuuAAAAAA. */
+{ "vmpy2hu", 0x2E5D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu 0,limm,u6 00101110010111010111uuuuuu111110. */
+{ "vmpy2hu", 0x2E5D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hu<.cc> 0,limm,u6 00101110110111010111uuuuuu1QQQQQ. */
+{ "vmpy2hu", 0x2EDD7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hu 0,limm,s12 00101110100111010111ssssssSSSSSS. */
+{ "vmpy2hu", 0x2E9D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2hu 0,limm,s12 00101110100111010111ssssssSSSSSS. */
+{ "vmpy2hu", 0x2E9D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2hu a,limm,limm 00101110000111010111111110AAAAAA. */
+{ "vmpy2hu", 0x2E1D7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hu 0,limm,limm 00101110000111010111111110111110. */
+{ "vmpy2hu", 0x2E1D7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hu<.cc> 0,limm,limm 001011101101110101111111100QQQQQ. */
+{ "vmpy2hu", 0x2EDD7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2hu a,limm,limm 00101110000111010111111110AAAAAA. */
+{ "vmpy2hu", 0x2E1D7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hu 0,limm,limm 00101110000111010111111110111110. */
+{ "vmpy2hu", 0x2E1D7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hu<.cc> 0,limm,limm 001011101101110101111111100QQQQQ. */
+{ "vmpy2hu", 0x2EDD7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY8E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmpy2hwf a,b,c 00101bbb001000000BBBCCCCCCAAAAAA. */
+{ "vmpy2hwf", 0x28200000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmpy2hwf 0,b,c 00101bbb001000000BBBCCCCCC111110. */
+{ "vmpy2hwf", 0x2820003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmpy2hwf<.cc> b,b,c 00101bbb111000000BBBCCCCCC0QQQQQ. */
+{ "vmpy2hwf", 0x28E00000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmpy2hwf a,b,u6 00101bbb011000000BBBuuuuuuAAAAAA. */
+{ "vmpy2hwf", 0x28600000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hwf 0,b,u6 00101bbb011000000BBBuuuuuu111110. */
+{ "vmpy2hwf", 0x2860003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmpy2hwf<.cc> b,b,u6 00101bbb111000000BBBuuuuuu1QQQQQ. */
+{ "vmpy2hwf", 0x28E00020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hwf b,b,s12 00101bbb101000000BBBssssssSSSSSS. */
+{ "vmpy2hwf", 0x28A00000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmpy2hwf a,limm,c 00101110001000000111CCCCCCAAAAAA. */
+{ "vmpy2hwf", 0x2E207000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmpy2hwf a,b,limm 00101bbb001000000BBB111110AAAAAA. */
+{ "vmpy2hwf", 0x28200F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmpy2hwf 0,limm,c 00101110011000000111CCCCCC111110. */
+{ "vmpy2hwf", 0x2E60703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmpy2hwf 0,b,limm 00101bbb001000000BBB111110111110. */
+{ "vmpy2hwf", 0x28200FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmpy2hwf<.cc> b,b,limm 00101bbb111000000BBB1111100QQQQQ. */
+{ "vmpy2hwf", 0x28E00F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmpy2hwf<.cc> 0,limm,c 00101110111000000111CCCCCC0QQQQQ. */
+{ "vmpy2hwf", 0x2EE07000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmpy2hwf a,limm,u6 00101110011000000111uuuuuuAAAAAA. */
+{ "vmpy2hwf", 0x2E607000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hwf 0,limm,u6 00101110011000000111uuuuuu111110. */
+{ "vmpy2hwf", 0x2E60703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmpy2hwf<.cc> 0,limm,u6 00101110111000000111uuuuuu1QQQQQ. */
+{ "vmpy2hwf", 0x2EE07020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmpy2hwf 0,limm,s12 00101110101000000111ssssssSSSSSS. */
+{ "vmpy2hwf", 0x2EA07000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmpy2hwf a,limm,limm 00101110001000000111111110AAAAAA. */
+{ "vmpy2hwf", 0x2E207F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hwf 0,limm,limm 00101110001000000111111110111110. */
+{ "vmpy2hwf", 0x2E207FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmpy2hwf<.cc> 0,limm,limm 001011101110000001111111100QQQQQ. */
+{ "vmpy2hwf", 0x2EE07F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmsub2hf a,b,c 00110bbb000001000BBBCCCCCCAAAAAA. */
+{ "vmsub2hf", 0x30040000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmsub2hf 0,b,c 00110bbb000001000BBBCCCCCC111110. */
+{ "vmsub2hf", 0x3004003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmsub2hf<.cc> b,b,c 00110bbb110001000BBBCCCCCC0QQQQQ. */
+{ "vmsub2hf", 0x30C40000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmsub2hf a,b,u6 00110bbb010001000BBBuuuuuuAAAAAA. */
+{ "vmsub2hf", 0x30440000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hf 0,b,u6 00110bbb010001000BBBuuuuuu111110. */
+{ "vmsub2hf", 0x3044003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hf<.cc> b,b,u6 00110bbb110001000BBBuuuuuu1QQQQQ. */
+{ "vmsub2hf", 0x30C40020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hf b,b,s12 00110bbb100001000BBBssssssSSSSSS. */
+{ "vmsub2hf", 0x30840000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmsub2hf a,limm,c 00110110000001000111CCCCCCAAAAAA. */
+{ "vmsub2hf", 0x36047000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmsub2hf a,b,limm 00110bbb000001000BBB111110AAAAAA. */
+{ "vmsub2hf", 0x30040F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmsub2hf 0,limm,c 00110110000001000111CCCCCC111110. */
+{ "vmsub2hf", 0x3604703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmsub2hf 0,b,limm 00110bbb000001000BBB111110111110. */
+{ "vmsub2hf", 0x30040FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmsub2hf<.cc> b,b,limm 00110bbb110001000BBB1111100QQQQQ. */
+{ "vmsub2hf", 0x30C40F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmsub2hf<.cc> 0,limm,c 00110110110001000111CCCCCC0QQQQQ. */
+{ "vmsub2hf", 0x36C47000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmsub2hf a,limm,u6 00110110010001000111uuuuuuAAAAAA. */
+{ "vmsub2hf", 0x36447000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hf 0,limm,u6 00110110010001000111uuuuuu111110. */
+{ "vmsub2hf", 0x3644703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hf<.cc> 0,limm,u6 00110110110001000111uuuuuu1QQQQQ. */
+{ "vmsub2hf", 0x36C47020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hf 0,limm,s12 00110110100001000111ssssssSSSSSS. */
+{ "vmsub2hf", 0x36847000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmsub2hf a,limm,limm 00110110000001000111111110AAAAAA. */
+{ "vmsub2hf", 0x36047F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hf 0,limm,limm 00110110000001000111111110111110. */
+{ "vmsub2hf", 0x36047FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hf<.cc> 0,limm,limm 001101101100010001111111100QQQQQ. */
+{ "vmsub2hf", 0x36C47F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmsub2hfr a,b,c 00110bbb000000110BBBCCCCCCAAAAAA. */
+{ "vmsub2hfr", 0x30030000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmsub2hfr 0,b,c 00110bbb000000110BBBCCCCCC111110. */
+{ "vmsub2hfr", 0x3003003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmsub2hfr<.cc> b,b,c 00110bbb110000110BBBCCCCCC0QQQQQ. */
+{ "vmsub2hfr", 0x30C30000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmsub2hfr a,b,u6 00110bbb010000110BBBuuuuuuAAAAAA. */
+{ "vmsub2hfr", 0x30430000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hfr 0,b,u6 00110bbb010000110BBBuuuuuu111110. */
+{ "vmsub2hfr", 0x3043003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hfr<.cc> b,b,u6 00110bbb110000110BBBuuuuuu1QQQQQ. */
+{ "vmsub2hfr", 0x30C30020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hfr b,b,s12 00110bbb100000110BBBssssssSSSSSS. */
+{ "vmsub2hfr", 0x30830000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmsub2hfr a,limm,c 00110110000000110111CCCCCCAAAAAA. */
+{ "vmsub2hfr", 0x36037000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmsub2hfr a,b,limm 00110bbb000000110BBB111110AAAAAA. */
+{ "vmsub2hfr", 0x30030F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmsub2hfr 0,limm,c 00110110000000110111CCCCCC111110. */
+{ "vmsub2hfr", 0x3603703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmsub2hfr 0,b,limm 00110bbb000000110BBB111110111110. */
+{ "vmsub2hfr", 0x30030FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmsub2hfr<.cc> b,b,limm 00110bbb110000110BBB1111100QQQQQ. */
+{ "vmsub2hfr", 0x30C30F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmsub2hfr<.cc> 0,limm,c 00110110110000110111CCCCCC0QQQQQ. */
+{ "vmsub2hfr", 0x36C37000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmsub2hfr a,limm,u6 00110110010000110111uuuuuuAAAAAA. */
+{ "vmsub2hfr", 0x36437000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hfr 0,limm,u6 00110110010000110111uuuuuu111110. */
+{ "vmsub2hfr", 0x3643703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hfr<.cc> 0,limm,u6 00110110110000110111uuuuuu1QQQQQ. */
+{ "vmsub2hfr", 0x36C37020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hfr 0,limm,s12 00110110100000110111ssssssSSSSSS. */
+{ "vmsub2hfr", 0x36837000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmsub2hfr a,limm,limm 00110110000000110111111110AAAAAA. */
+{ "vmsub2hfr", 0x36037F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hfr 0,limm,limm 00110110000000110111111110111110. */
+{ "vmsub2hfr", 0x36037FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hfr<.cc> 0,limm,limm 001101101100001101111111100QQQQQ. */
+{ "vmsub2hfr", 0x36C37F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vmsub2hnfr a,b,c 00110bbb000100011BBBCCCCCCAAAAAA. */
+{ "vmsub2hnfr", 0x30118000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vmsub2hnfr 0,b,c 00110bbb000100011BBBCCCCCC111110. */
+{ "vmsub2hnfr", 0x3011803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vmsub2hnfr<.cc> b,b,c 00110bbb110100011BBBCCCCCC0QQQQQ. */
+{ "vmsub2hnfr", 0x30D18000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vmsub2hnfr a,b,u6 00110bbb010100011BBBuuuuuuAAAAAA. */
+{ "vmsub2hnfr", 0x30518000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hnfr 0,b,u6 00110bbb010100011BBBuuuuuu111110. */
+{ "vmsub2hnfr", 0x3051803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vmsub2hnfr<.cc> b,b,u6 00110bbb110100011BBBuuuuuu1QQQQQ. */
+{ "vmsub2hnfr", 0x30D18020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hnfr b,b,s12 00110bbb100100011BBBssssssSSSSSS. */
+{ "vmsub2hnfr", 0x30918000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vmsub2hnfr a,limm,c 00110110000100011111CCCCCCAAAAAA. */
+{ "vmsub2hnfr", 0x3611F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vmsub2hnfr a,b,limm 00110bbb000100011BBB111110AAAAAA. */
+{ "vmsub2hnfr", 0x30118F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vmsub2hnfr 0,limm,c 00110110000100011111CCCCCC111110. */
+{ "vmsub2hnfr", 0x3611F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vmsub2hnfr 0,b,limm 00110bbb000100011BBB111110111110. */
+{ "vmsub2hnfr", 0x30118FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vmsub2hnfr<.cc> b,b,limm 00110bbb110100011BBB1111100QQQQQ. */
+{ "vmsub2hnfr", 0x30D18F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vmsub2hnfr<.cc> 0,limm,c 00110110110100011111CCCCCC0QQQQQ. */
+{ "vmsub2hnfr", 0x36D1F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vmsub2hnfr a,limm,u6 00110110010100011111uuuuuuAAAAAA. */
+{ "vmsub2hnfr", 0x3651F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hnfr 0,limm,u6 00110110010100011111uuuuuu111110. */
+{ "vmsub2hnfr", 0x3651F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vmsub2hnfr<.cc> 0,limm,u6 00110110110100011111uuuuuu1QQQQQ. */
+{ "vmsub2hnfr", 0x36D1F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vmsub2hnfr 0,limm,s12 00110110100100011111ssssssSSSSSS. */
+{ "vmsub2hnfr", 0x3691F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vmsub2hnfr a,limm,limm 00110110000100011111111110AAAAAA. */
+{ "vmsub2hnfr", 0x3611FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hnfr 0,limm,limm 00110110000100011111111110111110. */
+{ "vmsub2hnfr", 0x3611FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vmsub2hnfr<.cc> 0,limm,limm 001101101101000111111111100QQQQQ. */
+{ "vmsub2hnfr", 0x36D1FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vneg2h b,c 00101bbb001011110BBBCCCCCC101010. */
+{ "vneg2h", 0x282F002A, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vneg2h 0,c 00101110001011110111CCCCCC101010. */
+{ "vneg2h", 0x2E2F702A, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vneg2h b,u6 00101bbb011011110BBBuuuuuu101010. */
+{ "vneg2h", 0x286F002A, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vneg2h 0,u6 00101110011011110111uuuuuu101010. */
+{ "vneg2h", 0x2E6F702A, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vneg2h b,limm 00101bbb001011110BBB111110101010. */
+{ "vneg2h", 0x282F0FAA, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vneg2h 0,limm 00101110001011110111111110101010. */
+{ "vneg2h", 0x2E2F7FAA, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vnegs2h b,c 00101bbb001011110BBBCCCCCC101011. */
+{ "vnegs2h", 0x282F002B, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vnegs2h 0,c 00101110001011110111CCCCCC101011. */
+{ "vnegs2h", 0x2E2F702B, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vnegs2h b,u6 00101bbb011011110BBBuuuuuu101011. */
+{ "vnegs2h", 0x286F002B, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vnegs2h 0,u6 00101110011011110111uuuuuu101011. */
+{ "vnegs2h", 0x2E6F702B, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vnegs2h b,limm 00101bbb001011110BBB111110101011. */
+{ "vnegs2h", 0x282F0FAB, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vnegs2h 0,limm 00101110001011110111111110101011. */
+{ "vnegs2h", 0x2E2F7FAB, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vnorm2h b,c 00101bbb001011110BBBCCCCCC101100. */
+{ "vnorm2h", 0x282F002C, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vnorm2h 0,c 00101110001011110111CCCCCC101100. */
+{ "vnorm2h", 0x2E2F702C, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vnorm2h b,u6 00101bbb011011110BBBuuuuuu101100. */
+{ "vnorm2h", 0x286F002C, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vnorm2h 0,u6 00101110011011110111uuuuuu101100. */
+{ "vnorm2h", 0x2E6F702C, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vnorm2h b,limm 00101bbb001011110BBB111110101100. */
+{ "vnorm2h", 0x282F0FAC, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vnorm2h 0,limm 00101110001011110111111110101100. */
+{ "vnorm2h", 0x2E2F7FAC, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vpack2hbl b,c 00101bbb001011110BBBCCCCCC011100. */
+{ "vpack2hbl", 0x282F001C, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vpack2hbl 0,c 00101110001011110111CCCCCC011100. */
+{ "vpack2hbl", 0x2E2F701C, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vpack2hbl b,u6 00101bbb011011110BBBuuuuuu011100. */
+{ "vpack2hbl", 0x286F001C, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vpack2hbl 0,u6 00101110011011110111uuuuuu011100. */
+{ "vpack2hbl", 0x2E6F701C, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vpack2hbl b,limm 00101bbb001011110BBB111110011100. */
+{ "vpack2hbl", 0x282F0F9C, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vpack2hbl 0,limm 00101110001011110111111110011100. */
+{ "vpack2hbl", 0x2E2F7F9C, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vpack2hblf b,c 00101bbb001011110BBBCCCCCC011110. */
+{ "vpack2hblf", 0x282F001E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vpack2hblf 0,c 00101110001011110111CCCCCC011110. */
+{ "vpack2hblf", 0x2E2F701E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vpack2hblf b,u6 00101bbb011011110BBBuuuuuu011110. */
+{ "vpack2hblf", 0x286F001E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vpack2hblf 0,u6 00101110011011110111uuuuuu011110. */
+{ "vpack2hblf", 0x2E6F701E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vpack2hblf b,limm 00101bbb001011110BBB111110011110. */
+{ "vpack2hblf", 0x282F0F9E, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vpack2hblf 0,limm 00101110001011110111111110011110. */
+{ "vpack2hblf", 0x2E2F7F9E, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vpack2hbm b,c 00101bbb001011110BBBCCCCCC011101. */
+{ "vpack2hbm", 0x282F001D, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vpack2hbm 0,c 00101110001011110111CCCCCC011101. */
+{ "vpack2hbm", 0x2E2F701D, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vpack2hbm b,u6 00101bbb011011110BBBuuuuuu011101. */
+{ "vpack2hbm", 0x286F001D, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vpack2hbm 0,u6 00101110011011110111uuuuuu011101. */
+{ "vpack2hbm", 0x2E6F701D, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vpack2hbm b,limm 00101bbb001011110BBB111110011101. */
+{ "vpack2hbm", 0x282F0F9D, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vpack2hbm 0,limm 00101110001011110111111110011101. */
+{ "vpack2hbm", 0x2E2F7F9D, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vpack2hbmf b,c 00101bbb001011110BBBCCCCCC011111. */
+{ "vpack2hbmf", 0x282F001F, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vpack2hbmf 0,c 00101110001011110111CCCCCC011111. */
+{ "vpack2hbmf", 0x2E2F701F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vpack2hbmf b,u6 00101bbb011011110BBBuuuuuu011111. */
+{ "vpack2hbmf", 0x286F001F, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vpack2hbmf 0,u6 00101110011011110111uuuuuu011111. */
+{ "vpack2hbmf", 0x2E6F701F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vpack2hbmf b,limm 00101bbb001011110BBB111110011111. */
+{ "vpack2hbmf", 0x282F0F9F, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vpack2hbmf 0,limm 00101110001011110111111110011111. */
+{ "vpack2hbmf", 0x2E2F7F9F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vpack4hl a,b,c 00101bbb001010010BBBCCCCCCAAAAAA. */
+{ "vpack4hl", 0x28290000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vpack4hl 0,b,c 00101bbb001010010BBBCCCCCC111110. */
+{ "vpack4hl", 0x2829003E, 0xF8FF803F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vpack4hl<.cc> b,b,c 00101bbb111010010BBBCCCCCC0QQQQQ. */
+{ "vpack4hl", 0x28E90000, 0xF8FF8020, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vpack4hl a,b,u6 00101bbb011010010BBBuuuuuuAAAAAA. */
+{ "vpack4hl", 0x28690000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vpack4hl 0,b,u6 00101bbb011010010BBBuuuuuu111110. */
+{ "vpack4hl", 0x2869003E, 0xF8FF803F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vpack4hl<.cc> b,b,u6 00101bbb111010010BBBuuuuuu1QQQQQ. */
+{ "vpack4hl", 0x28E90020, 0xF8FF8020, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vpack4hl b,b,s12 00101bbb101010010BBBssssssSSSSSS. */
+{ "vpack4hl", 0x28A90000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vpack4hl a,limm,c 00101110001010010111CCCCCCAAAAAA. */
+{ "vpack4hl", 0x2E297000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vpack4hl a,b,limm 00101bbb001010010BBB111110AAAAAA. */
+{ "vpack4hl", 0x28290F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vpack4hl 0,limm,c 00101110011010010111CCCCCC111110. */
+{ "vpack4hl", 0x2E69703E, 0xFFFFF03F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vpack4hl 0,b,limm 00101bbb001010010BBB111110111110. */
+{ "vpack4hl", 0x28290FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vpack4hl<.cc> b,b,limm 00101bbb111010010BBB1111100QQQQQ. */
+{ "vpack4hl", 0x28E90F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vpack4hl<.cc> 0,limm,c 00101110111010010111CCCCCC0QQQQQ. */
+{ "vpack4hl", 0x2EE97000, 0xFFFFF020, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vpack4hl a,limm,u6 00101110011010010111uuuuuuAAAAAA. */
+{ "vpack4hl", 0x2E697000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vpack4hl 0,limm,u6 00101110011010010111uuuuuu111110. */
+{ "vpack4hl", 0x2E69703E, 0xFFFFF03F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vpack4hl<.cc> 0,limm,u6 00101110111010010111uuuuuu1QQQQQ. */
+{ "vpack4hl", 0x2EE97020, 0xFFFFF020, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vpack4hl 0,limm,s12 00101110101010010111ssssssSSSSSS. */
+{ "vpack4hl", 0x2EA97000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vpack4hl a,limm,limm 00101110001010010111111110AAAAAA. */
+{ "vpack4hl", 0x2E297F80, 0xFFFFFFC0, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vpack4hl 0,limm,limm 00101110001010010111111110111110. */
+{ "vpack4hl", 0x2E297FBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vpack4hl<.cc> 0,limm,limm 001011101110100101111111100QQQQQ. */
+{ "vpack4hl", 0x2EE97F80, 0xFFFFFFE0, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vpack4hm a,b,c 00101bbb001010011BBBCCCCCCAAAAAA. */
+{ "vpack4hm", 0x28298000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vpack4hm 0,b,c 00101bbb001010011BBBCCCCCC111110. */
+{ "vpack4hm", 0x2829803E, 0xF8FF803F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vpack4hm<.cc> b,b,c 00101bbb111010011BBBCCCCCC0QQQQQ. */
+{ "vpack4hm", 0x28E98000, 0xF8FF8020, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vpack4hm a,b,u6 00101bbb011010011BBBuuuuuuAAAAAA. */
+{ "vpack4hm", 0x28698000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vpack4hm 0,b,u6 00101bbb011010011BBBuuuuuu111110. */
+{ "vpack4hm", 0x2869803E, 0xF8FF803F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vpack4hm<.cc> b,b,u6 00101bbb111010011BBBuuuuuu1QQQQQ. */
+{ "vpack4hm", 0x28E98020, 0xF8FF8020, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vpack4hm b,b,s12 00101bbb101010011BBBssssssSSSSSS. */
+{ "vpack4hm", 0x28A98000, 0xF8FF8000, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vpack4hm a,limm,c 00101110001010011111CCCCCCAAAAAA. */
+{ "vpack4hm", 0x2E29F000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vpack4hm a,b,limm 00101bbb001010011BBB111110AAAAAA. */
+{ "vpack4hm", 0x28298F80, 0xF8FF8FC0, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vpack4hm 0,limm,c 00101110011010011111CCCCCC111110. */
+{ "vpack4hm", 0x2E69F03E, 0xFFFFF03F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vpack4hm 0,b,limm 00101bbb001010011BBB111110111110. */
+{ "vpack4hm", 0x28298FBE, 0xF8FF8FFF, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vpack4hm<.cc> b,b,limm 00101bbb111010011BBB1111100QQQQQ. */
+{ "vpack4hm", 0x28E98F80, 0xF8FF8FE0, ARC_OPCODE_ARC64, MOVE, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vpack4hm<.cc> 0,limm,c 00101110111010011111CCCCCC0QQQQQ. */
+{ "vpack4hm", 0x2EE9F000, 0xFFFFF020, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vpack4hm a,limm,u6 00101110011010011111uuuuuuAAAAAA. */
+{ "vpack4hm", 0x2E69F000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vpack4hm 0,limm,u6 00101110011010011111uuuuuu111110. */
+{ "vpack4hm", 0x2E69F03E, 0xFFFFF03F, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vpack4hm<.cc> 0,limm,u6 00101110111010011111uuuuuu1QQQQQ. */
+{ "vpack4hm", 0x2EE9F020, 0xFFFFF020, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vpack4hm 0,limm,s12 00101110101010011111ssssssSSSSSS. */
+{ "vpack4hm", 0x2EA9F000, 0xFFFFF000, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vpack4hm a,limm,limm 00101110001010011111111110AAAAAA. */
+{ "vpack4hm", 0x2E29FF80, 0xFFFFFFC0, ARC_OPCODE_ARC64, MOVE, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vpack4hm 0,limm,limm 00101110001010011111111110111110. */
+{ "vpack4hm", 0x2E29FFBE, 0xFFFFFFFF, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vpack4hm<.cc> 0,limm,limm 001011101110100111111111100QQQQQ. */
+{ "vpack4hm", 0x2EE9FF80, 0xFFFFFFE0, ARC_OPCODE_ARC64, MOVE, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vperm a,b,c 00101bbb001011100BBBCCCCCCAAAAAA. */
+{ "vperm", 0x282E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vperm 0,b,c 00101bbb001011100BBBCCCCCC111110. */
+{ "vperm", 0x282E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vperm<.cc> b,b,c 00101bbb111011100BBBCCCCCC0QQQQQ. */
+{ "vperm", 0x28EE0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vperm a,b,u6 00101bbb011011100BBBuuuuuuAAAAAA. */
+{ "vperm", 0x286E0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vperm 0,b,u6 00101bbb011011100BBBuuuuuu111110. */
+{ "vperm", 0x286E003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vperm<.cc> b,b,u6 00101bbb111011100BBBuuuuuu1QQQQQ. */
+{ "vperm", 0x28EE0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vperm b,b,s12 00101bbb101011100BBBssssssSSSSSS. */
+{ "vperm", 0x28AE0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vperm a,limm,c 00101110001011100111CCCCCCAAAAAA. */
+{ "vperm", 0x2E2E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vperm a,b,limm 00101bbb001011100BBB111110AAAAAA. */
+{ "vperm", 0x282E0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vperm 0,limm,c 00101110011011100111CCCCCC111110. */
+{ "vperm", 0x2E6E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vperm 0,b,limm 00101bbb001011100BBB111110111110. */
+{ "vperm", 0x282E0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vperm<.cc> b,b,limm 00101bbb111011100BBB1111100QQQQQ. */
+{ "vperm", 0x28EE0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vperm<.cc> 0,limm,c 00101110111011100111CCCCCC0QQQQQ. */
+{ "vperm", 0x2EEE7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vperm a,limm,u6 00101110011011100111uuuuuuAAAAAA. */
+{ "vperm", 0x2E6E7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vperm 0,limm,u6 00101110011011100111uuuuuu111110. */
+{ "vperm", 0x2E6E703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vperm<.cc> 0,limm,u6 00101110111011100111uuuuuu1QQQQQ. */
+{ "vperm", 0x2EEE7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vperm 0,limm,s12 00101110101011100111ssssssSSSSSS. */
+{ "vperm", 0x2EAE7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vperm a,limm,limm 00101110001011100111111110AAAAAA. */
+{ "vperm", 0x2E2E7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vperm 0,limm,limm 00101110001011100111111110111110. */
+{ "vperm", 0x2E2E7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vperm<.cc> 0,limm,limm 001011101110111001111111100QQQQQ. */
+{ "vperm", 0x2EEE7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vrep2hl b,c 00101bbb001011110BBBCCCCCC100010. */
+{ "vrep2hl", 0x282F0022, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vrep2hl 0,c 00101110001011110111CCCCCC100010. */
+{ "vrep2hl", 0x2E2F7022, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vrep2hl b,u6 00101bbb011011110BBBuuuuuu100010. */
+{ "vrep2hl", 0x286F0022, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vrep2hl 0,u6 00101110011011110111uuuuuu100010. */
+{ "vrep2hl", 0x2E6F7022, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vrep2hl b,limm 00101bbb001011110BBB111110100010. */
+{ "vrep2hl", 0x282F0FA2, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vrep2hl 0,limm 00101110001011110111111110100010. */
+{ "vrep2hl", 0x2E2F7FA2, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vrep2hm b,c 00101bbb001011110BBBCCCCCC100011. */
+{ "vrep2hm", 0x282F0023, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vrep2hm 0,c 00101110001011110111CCCCCC100011. */
+{ "vrep2hm", 0x2E2F7023, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vrep2hm b,u6 00101bbb011011110BBBuuuuuu100011. */
+{ "vrep2hm", 0x286F0023, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vrep2hm 0,u6 00101110011011110111uuuuuu100011. */
+{ "vrep2hm", 0x2E6F7023, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vrep2hm b,limm 00101bbb001011110BBB111110100011. */
+{ "vrep2hm", 0x282F0FA3, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vrep2hm 0,limm 00101110001011110111111110100011. */
+{ "vrep2hm", 0x2E2F7FA3, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vsext2bhl b,c 00101bbb001011110BBBCCCCCC100110. */
+{ "vsext2bhl", 0x282F0026, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vsext2bhl 0,c 00101110001011110111CCCCCC100110. */
+{ "vsext2bhl", 0x2E2F7026, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vsext2bhl b,u6 00101bbb011011110BBBuuuuuu100110. */
+{ "vsext2bhl", 0x286F0026, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vsext2bhl 0,u6 00101110011011110111uuuuuu100110. */
+{ "vsext2bhl", 0x2E6F7026, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vsext2bhl b,limm 00101bbb001011110BBB111110100110. */
+{ "vsext2bhl", 0x282F0FA6, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vsext2bhl 0,limm 00101110001011110111111110100110. */
+{ "vsext2bhl", 0x2E2F7FA6, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vsext2bhm b,c 00101bbb001011110BBBCCCCCC100111. */
+{ "vsext2bhm", 0x282F0027, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RC }, { 0 }},
+
+/* vsext2bhm 0,c 00101110001011110111CCCCCC100111. */
+{ "vsext2bhm", 0x2E2F7027, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RC }, { 0 }},
+
+/* vsext2bhm b,u6 00101bbb011011110BBBuuuuuu100111. */
+{ "vsext2bhm", 0x286F0027, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, UIMM6_20 }, { 0 }},
+
+/* vsext2bhm 0,u6 00101110011011110111uuuuuu100111. */
+{ "vsext2bhm", 0x2E6F7027, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, UIMM6_20 }, { 0 }},
+
+/* vsext2bhm b,limm 00101bbb001011110BBB111110100111. */
+{ "vsext2bhm", 0x282F0FA7, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, LIMM }, { 0 }},
+
+/* vsext2bhm 0,limm 00101110001011110111111110100111. */
+{ "vsext2bhm", 0x2E2F7FA7, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM }, { 0 }},
+
+/* vsub2 a,b,c 00101bbb001111010BBBCCCCCCAAAAAA. */
+{ "vsub2", 0x283D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsub2 0,b,c 00101bbb001111010BBBCCCCCC111110. */
+{ "vsub2", 0x283D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsub2<.cc> b,b,c 00101bbb111111010BBBCCCCCC0QQQQQ. */
+{ "vsub2", 0x28FD0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsub2 a,b,u6 00101bbb011111010BBBuuuuuuAAAAAA. */
+{ "vsub2", 0x287D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsub2 0,b,u6 00101bbb011111010BBBuuuuuu111110. */
+{ "vsub2", 0x287D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsub2<.cc> b,b,u6 00101bbb111111010BBBuuuuuu1QQQQQ. */
+{ "vsub2", 0x28FD0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsub2 b,b,s12 00101bbb101111010BBBssssssSSSSSS. */
+{ "vsub2", 0x28BD0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsub2 a,limm,c 00101110001111010111CCCCCCAAAAAA. */
+{ "vsub2", 0x2E3D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsub2 a,b,limm 00101bbb001111010BBB111110AAAAAA. */
+{ "vsub2", 0x283D0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsub2 0,limm,c 00101110001111010111CCCCCC111110. */
+{ "vsub2", 0x2E3D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsub2 0,b,limm 00101bbb001111010BBB111110111110. */
+{ "vsub2", 0x283D0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsub2<.cc> b,b,limm 00101bbb111111010BBB1111100QQQQQ. */
+{ "vsub2", 0x28FD0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsub2<.cc> 0,limm,c 00101110111111010111CCCCCC0QQQQQ. */
+{ "vsub2", 0x2EFD7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsub2 a,limm,u6 00101110011111010111uuuuuuAAAAAA. */
+{ "vsub2", 0x2E7D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub2 0,limm,u6 00101110011111010111uuuuuu111110. */
+{ "vsub2", 0x2E7D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub2<.cc> 0,limm,u6 00101110111111010111uuuuuu1QQQQQ. */
+{ "vsub2", 0x2EFD7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsub2 0,limm,s12 00101110101111010111ssssssSSSSSS. */
+{ "vsub2", 0x2EBD7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsub2 a,limm,limm 00101110001111010111111110AAAAAA. */
+{ "vsub2", 0x2E3D7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsub2 0,limm,limm 00101110001111010111111110111110. */
+{ "vsub2", 0x2E3D7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsub2<.cc> 0,limm,limm 001011101111110101111111100QQQQQ. */
+{ "vsub2", 0x2EFD7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsub2h a,b,c 00101bbb000101010BBBCCCCCCAAAAAA. */
+{ "vsub2h", 0x28150000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsub2h 0,b,c 00101bbb000101010BBBCCCCCC111110. */
+{ "vsub2h", 0x2815003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { 0 }},
+
+/* vsub2h<.cc> b,b,c 00101bbb110101010BBBCCCCCC0QQQQQ. */
+{ "vsub2h", 0x28D50000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsub2h a,b,u6 00101bbb010101010BBBuuuuuuAAAAAA. */
+{ "vsub2h", 0x28550000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsub2h 0,b,u6 00101bbb010101010BBBuuuuuu111110. */
+{ "vsub2h", 0x2855003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsub2h<.cc> b,b,u6 00101bbb110101010BBBuuuuuu1QQQQQ. */
+{ "vsub2h", 0x28D50020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsub2h b,b,s12 00101bbb100101010BBBssssssSSSSSS. */
+{ "vsub2h", 0x28950000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsub2h a,limm,c 00101110000101010111CCCCCCAAAAAA. */
+{ "vsub2h", 0x2E157000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsub2h a,b,limm 00101bbb000101010BBB111110AAAAAA. */
+{ "vsub2h", 0x28150F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsub2h 0,limm,c 00101110000101010111CCCCCC111110. */
+{ "vsub2h", 0x2E15703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsub2h 0,b,limm 00101bbb000101010BBB111110111110. */
+{ "vsub2h", 0x28150FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsub2h<.cc> b,b,limm 00101bbb110101010BBB1111100QQQQQ. */
+{ "vsub2h", 0x28D50F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsub2h<.cc> 0,limm,c 00101110110101010111CCCCCC0QQQQQ. */
+{ "vsub2h", 0x2ED57000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsub2h a,limm,u6 00101110010101010111uuuuuuAAAAAA. */
+{ "vsub2h", 0x2E557000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub2h 0,limm,u6 00101110010101010111uuuuuu111110. */
+{ "vsub2h", 0x2E55703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub2h<.cc> 0,limm,u6 00101110110101010111uuuuuu1QQQQQ. */
+{ "vsub2h", 0x2ED57020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsub2h 0,limm,s12 00101110100101010111ssssssSSSSSS. */
+{ "vsub2h", 0x2E957000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsub2h a,limm,limm 00101110000101010111111110AAAAAA. */
+{ "vsub2h", 0x2E157F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsub2h 0,limm,limm 00101110000101010111111110111110. */
+{ "vsub2h", 0x2E157FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsub2h<.cc> 0,limm,limm 001011101101010101111111100QQQQQ. */
+{ "vsub2h", 0x2ED57F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsub4b a,b,c 00101bbb001001010BBBCCCCCCAAAAAA. */
+{ "vsub4b", 0x28250000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsub4b 0,b,c 00101bbb001001010BBBCCCCCC111110. */
+{ "vsub4b", 0x2825003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vsub4b<.cc> b,b,c 00101bbb111001010BBBCCCCCC0QQQQQ. */
+{ "vsub4b", 0x28E50000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsub4b a,b,u6 00101bbb011001010BBBuuuuuuAAAAAA. */
+{ "vsub4b", 0x28650000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsub4b 0,b,u6 00101bbb011001010BBBuuuuuu111110. */
+{ "vsub4b", 0x2865003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsub4b<.cc> b,b,u6 00101bbb111001010BBBuuuuuu1QQQQQ. */
+{ "vsub4b", 0x28E50020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsub4b b,b,s12 00101bbb101001010BBBssssssSSSSSS. */
+{ "vsub4b", 0x28A50000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsub4b a,limm,c 00101110001001010111CCCCCCAAAAAA. */
+{ "vsub4b", 0x2E257000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsub4b a,b,limm 00101bbb001001010BBB111110AAAAAA. */
+{ "vsub4b", 0x28250F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsub4b 0,limm,c 00101110011001010111CCCCCC111110. */
+{ "vsub4b", 0x2E65703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vsub4b 0,b,limm 00101bbb001001010BBB111110111110. */
+{ "vsub4b", 0x28250FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vsub4b<.cc> b,b,limm 00101bbb111001010BBB1111100QQQQQ. */
+{ "vsub4b", 0x28E50F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsub4b<.cc> 0,limm,c 00101110111001010111CCCCCC0QQQQQ. */
+{ "vsub4b", 0x2EE57000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsub4b a,limm,u6 00101110011001010111uuuuuuAAAAAA. */
+{ "vsub4b", 0x2E657000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub4b 0,limm,u6 00101110011001010111uuuuuu111110. */
+{ "vsub4b", 0x2E65703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub4b<.cc> 0,limm,u6 00101110111001010111uuuuuu1QQQQQ. */
+{ "vsub4b", 0x2EE57020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsub4b 0,limm,s12 00101110101001010111ssssssSSSSSS. */
+{ "vsub4b", 0x2EA57000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsub4b a,limm,limm 00101110001001010111111110AAAAAA. */
+{ "vsub4b", 0x2E257F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsub4b 0,limm,limm 00101110001001010111111110111110. */
+{ "vsub4b", 0x2E257FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsub4b<.cc> 0,limm,limm 001011101110010101111111100QQQQQ. */
+{ "vsub4b", 0x2EE57F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsub4h a,b,c 00101bbb001110010BBBCCCCCCAAAAAA. */
+{ "vsub4h", 0x28390000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsub4h 0,b,c 00101bbb001110010BBBCCCCCC111110. */
+{ "vsub4h", 0x2839003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsub4h<.cc> b,b,c 00101bbb111110010BBBCCCCCC0QQQQQ. */
+{ "vsub4h", 0x28F90000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsub4h a,b,u6 00101bbb011110010BBBuuuuuuAAAAAA. */
+{ "vsub4h", 0x28790000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsub4h 0,b,u6 00101bbb011110010BBBuuuuuu111110. */
+{ "vsub4h", 0x2879003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsub4h<.cc> b,b,u6 00101bbb111110010BBBuuuuuu1QQQQQ. */
+{ "vsub4h", 0x28F90020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsub4h b,b,s12 00101bbb101110010BBBssssssSSSSSS. */
+{ "vsub4h", 0x28B90000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsub4h a,limm,c 00101110001110010111CCCCCCAAAAAA. */
+{ "vsub4h", 0x2E397000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsub4h a,b,limm 00101bbb001110010BBB111110AAAAAA. */
+{ "vsub4h", 0x28390F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsub4h 0,limm,c 00101110001110010111CCCCCC111110. */
+{ "vsub4h", 0x2E39703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsub4h 0,b,limm 00101bbb001110010BBB111110111110. */
+{ "vsub4h", 0x28390FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsub4h<.cc> b,b,limm 00101bbb111110010BBB1111100QQQQQ. */
+{ "vsub4h", 0x28F90F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsub4h<.cc> 0,limm,c 00101110111110010111CCCCCC0QQQQQ. */
+{ "vsub4h", 0x2EF97000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsub4h a,limm,u6 00101110011110010111uuuuuuAAAAAA. */
+{ "vsub4h", 0x2E797000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub4h 0,limm,u6 00101110011110010111uuuuuu111110. */
+{ "vsub4h", 0x2E79703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsub4h<.cc> 0,limm,u6 00101110111110010111uuuuuu1QQQQQ. */
+{ "vsub4h", 0x2EF97020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsub4h 0,limm,s12 00101110101110010111ssssssSSSSSS. */
+{ "vsub4h", 0x2EB97000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsub4h a,limm,limm 00101110001110010111111110AAAAAA. */
+{ "vsub4h", 0x2E397F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsub4h 0,limm,limm 00101110001110010111111110111110. */
+{ "vsub4h", 0x2E397FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsub4h<.cc> 0,limm,limm 001011101111100101111111100QQQQQ. */
+{ "vsub4h", 0x2EF97F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadd a,b,c 00101bbb001111110BBBCCCCCCAAAAAA. */
+{ "vsubadd", 0x283F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadd 0,b,c 00101bbb001111110BBBCCCCCC111110. */
+{ "vsubadd", 0x283F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubadd<.cc> b,b,c 00101bbb111111110BBBCCCCCC0QQQQQ. */
+{ "vsubadd", 0x28FF0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadd a,b,u6 00101bbb011111110BBBuuuuuuAAAAAA. */
+{ "vsubadd", 0x287F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd 0,b,u6 00101bbb011111110BBBuuuuuu111110. */
+{ "vsubadd", 0x287F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd<.cc> b,b,u6 00101bbb111111110BBBuuuuuu1QQQQQ. */
+{ "vsubadd", 0x28FF0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadd b,b,s12 00101bbb101111110BBBssssssSSSSSS. */
+{ "vsubadd", 0x28BF0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadd a,limm,c 00101110001111110111CCCCCCAAAAAA. */
+{ "vsubadd", 0x2E3F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadd a,b,limm 00101bbb001111110BBB111110AAAAAA. */
+{ "vsubadd", 0x283F0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadd 0,limm,c 00101110001111110111CCCCCC111110. */
+{ "vsubadd", 0x2E3F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadd 0,b,limm 00101bbb001111110BBB111110111110. */
+{ "vsubadd", 0x283F0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadd<.cc> b,b,limm 00101bbb111111110BBB1111100QQQQQ. */
+{ "vsubadd", 0x28FF0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadd<.cc> 0,limm,c 00101110111111110111CCCCCC0QQQQQ. */
+{ "vsubadd", 0x2EFF7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadd a,limm,u6 00101110011111110111uuuuuuAAAAAA. */
+{ "vsubadd", 0x2E7F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd 0,limm,u6 00101110011111110111uuuuuu111110. */
+{ "vsubadd", 0x2E7F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd<.cc> 0,limm,u6 00101110111111110111uuuuuu1QQQQQ. */
+{ "vsubadd", 0x2EFF7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadd 0,limm,s12 00101110101111110111ssssssSSSSSS. */
+{ "vsubadd", 0x2EBF7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadd a,limm,limm 00101110001111110111111110AAAAAA. */
+{ "vsubadd", 0x2E3F7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd 0,limm,limm 00101110001111110111111110111110. */
+{ "vsubadd", 0x2E3F7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd<.cc> 0,limm,limm 001011101111111101111111100QQQQQ. */
+{ "vsubadd", 0x2EFF7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadd2h a,b,c 00101bbb000101110BBBCCCCCCAAAAAA. */
+{ "vsubadd2h", 0x28170000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadd2h 0,b,c 00101bbb000101110BBBCCCCCC111110. */
+{ "vsubadd2h", 0x2817003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, RC }, { 0 }},
+
+/* vsubadd2h<.cc> b,b,c 00101bbb110101110BBBCCCCCC0QQQQQ. */
+{ "vsubadd2h", 0x28D70000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadd2h a,b,u6 00101bbb010101110BBBuuuuuuAAAAAA. */
+{ "vsubadd2h", 0x28570000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd2h 0,b,u6 00101bbb010101110BBBuuuuuu111110. */
+{ "vsubadd2h", 0x2857003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd2h<.cc> b,b,u6 00101bbb110101110BBBuuuuuu1QQQQQ. */
+{ "vsubadd2h", 0x28D70020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadd2h b,b,s12 00101bbb100101110BBBssssssSSSSSS. */
+{ "vsubadd2h", 0x28970000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadd2h a,limm,c 00101110000101110111CCCCCCAAAAAA. */
+{ "vsubadd2h", 0x2E177000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadd2h a,b,limm 00101bbb000101110BBB111110AAAAAA. */
+{ "vsubadd2h", 0x28170F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadd2h 0,limm,c 00101110000101110111CCCCCC111110. */
+{ "vsubadd2h", 0x2E17703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadd2h 0,b,limm 00101bbb000101110BBB111110111110. */
+{ "vsubadd2h", 0x28170FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadd2h<.cc> b,b,limm 00101bbb110101110BBB1111100QQQQQ. */
+{ "vsubadd2h", 0x28D70F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadd2h<.cc> 0,limm,c 00101110110101110111CCCCCC0QQQQQ. */
+{ "vsubadd2h", 0x2ED77000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadd2h a,limm,u6 00101110010101110111uuuuuuAAAAAA. */
+{ "vsubadd2h", 0x2E577000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd2h 0,limm,u6 00101110010101110111uuuuuu111110. */
+{ "vsubadd2h", 0x2E57703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd2h<.cc> 0,limm,u6 00101110110101110111uuuuuu1QQQQQ. */
+{ "vsubadd2h", 0x2ED77020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadd2h 0,limm,s12 00101110100101110111ssssssSSSSSS. */
+{ "vsubadd2h", 0x2E977000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadd2h a,limm,limm 00101110000101110111111110AAAAAA. */
+{ "vsubadd2h", 0x2E177F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd2h 0,limm,limm 00101110000101110111111110111110. */
+{ "vsubadd2h", 0x2E177FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd2h<.cc> 0,limm,limm 001011101101011101111111100QQQQQ. */
+{ "vsubadd2h", 0x2ED77F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY7E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadd4h a,b,c 00101bbb001110110BBBCCCCCCAAAAAA. */
+{ "vsubadd4h", 0x283B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadd4h 0,b,c 00101bbb001110110BBBCCCCCC111110. */
+{ "vsubadd4h", 0x283B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubadd4h<.cc> b,b,c 00101bbb111110110BBBCCCCCC0QQQQQ. */
+{ "vsubadd4h", 0x28FB0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadd4h a,b,u6 00101bbb011110110BBBuuuuuuAAAAAA. */
+{ "vsubadd4h", 0x287B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd4h 0,b,u6 00101bbb011110110BBBuuuuuu111110. */
+{ "vsubadd4h", 0x287B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadd4h<.cc> b,b,u6 00101bbb111110110BBBuuuuuu1QQQQQ. */
+{ "vsubadd4h", 0x28FB0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadd4h b,b,s12 00101bbb101110110BBBssssssSSSSSS. */
+{ "vsubadd4h", 0x28BB0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadd4h a,limm,c 00101110001110110111CCCCCCAAAAAA. */
+{ "vsubadd4h", 0x2E3B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadd4h a,b,limm 00101bbb001110110BBB111110AAAAAA. */
+{ "vsubadd4h", 0x283B0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadd4h 0,limm,c 00101110001110110111CCCCCC111110. */
+{ "vsubadd4h", 0x2E3B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadd4h 0,b,limm 00101bbb001110110BBB111110111110. */
+{ "vsubadd4h", 0x283B0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadd4h<.cc> b,b,limm 00101bbb111110110BBB1111100QQQQQ. */
+{ "vsubadd4h", 0x28FB0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadd4h<.cc> 0,limm,c 00101110111110110111CCCCCC0QQQQQ. */
+{ "vsubadd4h", 0x2EFB7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadd4h a,limm,u6 00101110011110110111uuuuuuAAAAAA. */
+{ "vsubadd4h", 0x2E7B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd4h 0,limm,u6 00101110011110110111uuuuuu111110. */
+{ "vsubadd4h", 0x2E7B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadd4h<.cc> 0,limm,u6 00101110111110110111uuuuuu1QQQQQ. */
+{ "vsubadd4h", 0x2EFB7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadd4h 0,limm,s12 00101110101110110111ssssssSSSSSS. */
+{ "vsubadd4h", 0x2EBB7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadd4h a,limm,limm 00101110001110110111111110AAAAAA. */
+{ "vsubadd4h", 0x2E3B7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd4h 0,limm,limm 00101110001110110111111110111110. */
+{ "vsubadd4h", 0x2E3B7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadd4h<.cc> 0,limm,limm 001011101111101101111111100QQQQQ. */
+{ "vsubadd4h", 0x2EFB7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadds a,b,c 00101bbb001111110BBBCCCCCCAAAAAA. */
+{ "vsubadds", 0x283F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadds 0,b,c 00101bbb001111110BBBCCCCCC111110. */
+{ "vsubadds", 0x283F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubadds<.cc> b,b,c 00101bbb111111110BBBCCCCCC0QQQQQ. */
+{ "vsubadds", 0x28FF0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadds a,b,u6 00101bbb011111110BBBuuuuuuAAAAAA. */
+{ "vsubadds", 0x287F0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds 0,b,u6 00101bbb011111110BBBuuuuuu111110. */
+{ "vsubadds", 0x287F003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds<.cc> b,b,u6 00101bbb111111110BBBuuuuuu1QQQQQ. */
+{ "vsubadds", 0x28FF0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadds b,b,s12 00101bbb101111110BBBssssssSSSSSS. */
+{ "vsubadds", 0x28BF0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadds a,limm,c 00101110001111110111CCCCCCAAAAAA. */
+{ "vsubadds", 0x2E3F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadds a,b,limm 00101bbb001111110BBB111110AAAAAA. */
+{ "vsubadds", 0x283F0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadds 0,limm,c 00101110001111110111CCCCCC111110. */
+{ "vsubadds", 0x2E3F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadds 0,b,limm 00101bbb001111110BBB111110111110. */
+{ "vsubadds", 0x283F0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadds<.cc> b,b,limm 00101bbb111111110BBB1111100QQQQQ. */
+{ "vsubadds", 0x28FF0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadds<.cc> 0,limm,c 00101110111111110111CCCCCC0QQQQQ. */
+{ "vsubadds", 0x2EFF7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadds a,limm,u6 00101110011111110111uuuuuuAAAAAA. */
+{ "vsubadds", 0x2E7F7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds 0,limm,u6 00101110011111110111uuuuuu111110. */
+{ "vsubadds", 0x2E7F703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds<.cc> 0,limm,u6 00101110111111110111uuuuuu1QQQQQ. */
+{ "vsubadds", 0x2EFF7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadds 0,limm,s12 00101110101111110111ssssssSSSSSS. */
+{ "vsubadds", 0x2EBF7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadds a,limm,limm 00101110001111110111111110AAAAAA. */
+{ "vsubadds", 0x2E3F7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds 0,limm,limm 00101110001111110111111110111110. */
+{ "vsubadds", 0x2E3F7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds<.cc> 0,limm,limm 001011101111111101111111100QQQQQ. */
+{ "vsubadds", 0x2EFF7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadds2h a,b,c 00101bbb000101111BBBCCCCCCAAAAAA. */
+{ "vsubadds2h", 0x28178000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadds2h 0,b,c 00101bbb000101111BBBCCCCCC111110. */
+{ "vsubadds2h", 0x2817803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vsubadds2h<.cc> b,b,c 00101bbb110101111BBBCCCCCC0QQQQQ. */
+{ "vsubadds2h", 0x28D78000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadds2h a,b,u6 00101bbb010101111BBBuuuuuuAAAAAA. */
+{ "vsubadds2h", 0x28578000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds2h 0,b,u6 00101bbb010101111BBBuuuuuu111110. */
+{ "vsubadds2h", 0x2857803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds2h<.cc> b,b,u6 00101bbb110101111BBBuuuuuu1QQQQQ. */
+{ "vsubadds2h", 0x28D78020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadds2h b,b,s12 00101bbb100101111BBBssssssSSSSSS. */
+{ "vsubadds2h", 0x28978000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadds2h a,limm,c 00101110000101111111CCCCCCAAAAAA. */
+{ "vsubadds2h", 0x2E17F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadds2h a,b,limm 00101bbb000101111BBB111110AAAAAA. */
+{ "vsubadds2h", 0x28178F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadds2h 0,limm,c 00101110000101111111CCCCCC111110. */
+{ "vsubadds2h", 0x2E17F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadds2h 0,b,limm 00101bbb000101111BBB111110111110. */
+{ "vsubadds2h", 0x28178FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadds2h<.cc> b,b,limm 00101bbb110101111BBB1111100QQQQQ. */
+{ "vsubadds2h", 0x28D78F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadds2h<.cc> 0,limm,c 00101110110101111111CCCCCC0QQQQQ. */
+{ "vsubadds2h", 0x2ED7F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadds2h a,limm,u6 00101110010101111111uuuuuuAAAAAA. */
+{ "vsubadds2h", 0x2E57F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds2h 0,limm,u6 00101110010101111111uuuuuu111110. */
+{ "vsubadds2h", 0x2E57F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds2h<.cc> 0,limm,u6 00101110110101111111uuuuuu1QQQQQ. */
+{ "vsubadds2h", 0x2ED7F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadds2h 0,limm,s12 00101110100101111111ssssssSSSSSS. */
+{ "vsubadds2h", 0x2E97F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadds2h a,limm,limm 00101110000101111111111110AAAAAA. */
+{ "vsubadds2h", 0x2E17FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds2h 0,limm,limm 00101110000101111111111110111110. */
+{ "vsubadds2h", 0x2E17FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds2h<.cc> 0,limm,limm 001011101101011111111111100QQQQQ. */
+{ "vsubadds2h", 0x2ED7FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubadds4h a,b,c 00101bbb001110110BBBCCCCCCAAAAAA. */
+{ "vsubadds4h", 0x283B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubadds4h 0,b,c 00101bbb001110110BBBCCCCCC111110. */
+{ "vsubadds4h", 0x283B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubadds4h<.cc> b,b,c 00101bbb111110110BBBCCCCCC0QQQQQ. */
+{ "vsubadds4h", 0x28FB0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubadds4h a,b,u6 00101bbb011110110BBBuuuuuuAAAAAA. */
+{ "vsubadds4h", 0x287B0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds4h 0,b,u6 00101bbb011110110BBBuuuuuu111110. */
+{ "vsubadds4h", 0x287B003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubadds4h<.cc> b,b,u6 00101bbb111110110BBBuuuuuu1QQQQQ. */
+{ "vsubadds4h", 0x28FB0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubadds4h b,b,s12 00101bbb101110110BBBssssssSSSSSS. */
+{ "vsubadds4h", 0x28BB0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubadds4h a,limm,c 00101110001110110111CCCCCCAAAAAA. */
+{ "vsubadds4h", 0x2E3B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubadds4h a,b,limm 00101bbb001110110BBB111110AAAAAA. */
+{ "vsubadds4h", 0x283B0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubadds4h 0,limm,c 00101110001110110111CCCCCC111110. */
+{ "vsubadds4h", 0x2E3B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubadds4h 0,b,limm 00101bbb001110110BBB111110111110. */
+{ "vsubadds4h", 0x283B0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubadds4h<.cc> b,b,limm 00101bbb111110110BBB1111100QQQQQ. */
+{ "vsubadds4h", 0x28FB0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubadds4h<.cc> 0,limm,c 00101110111110110111CCCCCC0QQQQQ. */
+{ "vsubadds4h", 0x2EFB7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubadds4h a,limm,u6 00101110011110110111uuuuuuAAAAAA. */
+{ "vsubadds4h", 0x2E7B7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds4h 0,limm,u6 00101110011110110111uuuuuu111110. */
+{ "vsubadds4h", 0x2E7B703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubadds4h<.cc> 0,limm,u6 00101110111110110111uuuuuu1QQQQQ. */
+{ "vsubadds4h", 0x2EFB7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubadds4h 0,limm,s12 00101110101110110111ssssssSSSSSS. */
+{ "vsubadds4h", 0x2EBB7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubadds4h a,limm,limm 00101110001110110111111110AAAAAA. */
+{ "vsubadds4h", 0x2E3B7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds4h 0,limm,limm 00101110001110110111111110111110. */
+{ "vsubadds4h", 0x2E3B7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubadds4h<.cc> 0,limm,limm 001011101111101101111111100QQQQQ. */
+{ "vsubadds4h", 0x2EFB7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubs2 a,b,c 00101bbb001111010BBBCCCCCCAAAAAA. */
+{ "vsubs2", 0x283D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubs2 0,b,c 00101bbb001111010BBBCCCCCC111110. */
+{ "vsubs2", 0x283D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubs2<.cc> b,b,c 00101bbb111111010BBBCCCCCC0QQQQQ. */
+{ "vsubs2", 0x28FD0000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubs2 a,b,u6 00101bbb011111010BBBuuuuuuAAAAAA. */
+{ "vsubs2", 0x287D0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs2 0,b,u6 00101bbb011111010BBBuuuuuu111110. */
+{ "vsubs2", 0x287D003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs2<.cc> b,b,u6 00101bbb111111010BBBuuuuuu1QQQQQ. */
+{ "vsubs2", 0x28FD0020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubs2 b,b,s12 00101bbb101111010BBBssssssSSSSSS. */
+{ "vsubs2", 0x28BD0000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubs2 a,limm,c 00101110001111010111CCCCCCAAAAAA. */
+{ "vsubs2", 0x2E3D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubs2 a,b,limm 00101bbb001111010BBB111110AAAAAA. */
+{ "vsubs2", 0x283D0F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubs2 0,limm,c 00101110001111010111CCCCCC111110. */
+{ "vsubs2", 0x2E3D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubs2 0,b,limm 00101bbb001111010BBB111110111110. */
+{ "vsubs2", 0x283D0FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubs2<.cc> b,b,limm 00101bbb111111010BBB1111100QQQQQ. */
+{ "vsubs2", 0x28FD0F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubs2<.cc> 0,limm,c 00101110111111010111CCCCCC0QQQQQ. */
+{ "vsubs2", 0x2EFD7000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubs2 a,limm,u6 00101110011111010111uuuuuuAAAAAA. */
+{ "vsubs2", 0x2E7D7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs2 0,limm,u6 00101110011111010111uuuuuu111110. */
+{ "vsubs2", 0x2E7D703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs2<.cc> 0,limm,u6 00101110111111010111uuuuuu1QQQQQ. */
+{ "vsubs2", 0x2EFD7020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubs2 0,limm,s12 00101110101111010111ssssssSSSSSS. */
+{ "vsubs2", 0x2EBD7000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubs2 a,limm,limm 00101110001111010111111110AAAAAA. */
+{ "vsubs2", 0x2E3D7F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs2 0,limm,limm 00101110001111010111111110111110. */
+{ "vsubs2", 0x2E3D7FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs2<.cc> 0,limm,limm 001011101111110101111111100QQQQQ. */
+{ "vsubs2", 0x2EFD7F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubs2h a,b,c 00101bbb000101011BBBCCCCCCAAAAAA. */
+{ "vsubs2h", 0x28158000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubs2h 0,b,c 00101bbb000101011BBBCCCCCC111110. */
+{ "vsubs2h", 0x2815803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, RC }, { 0 }},
+
+/* vsubs2h<.cc> b,b,c 00101bbb110101011BBBCCCCCC0QQQQQ. */
+{ "vsubs2h", 0x28D58000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubs2h a,b,u6 00101bbb010101011BBBuuuuuuAAAAAA. */
+{ "vsubs2h", 0x28558000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs2h 0,b,u6 00101bbb010101011BBBuuuuuu111110. */
+{ "vsubs2h", 0x2855803E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs2h<.cc> b,b,u6 00101bbb110101011BBBuuuuuu1QQQQQ. */
+{ "vsubs2h", 0x28D58020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubs2h b,b,s12 00101bbb100101011BBBssssssSSSSSS. */
+{ "vsubs2h", 0x28958000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubs2h a,limm,c 00101110000101011111CCCCCCAAAAAA. */
+{ "vsubs2h", 0x2E15F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubs2h a,b,limm 00101bbb000101011BBB111110AAAAAA. */
+{ "vsubs2h", 0x28158F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubs2h 0,limm,c 00101110000101011111CCCCCC111110. */
+{ "vsubs2h", 0x2E15F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubs2h 0,b,limm 00101bbb000101011BBB111110111110. */
+{ "vsubs2h", 0x28158FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubs2h<.cc> b,b,limm 00101bbb110101011BBB1111100QQQQQ. */
+{ "vsubs2h", 0x28D58F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubs2h<.cc> 0,limm,c 00101110110101011111CCCCCC0QQQQQ. */
+{ "vsubs2h", 0x2ED5F000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubs2h a,limm,u6 00101110010101011111uuuuuuAAAAAA. */
+{ "vsubs2h", 0x2E55F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs2h 0,limm,u6 00101110010101011111uuuuuu111110. */
+{ "vsubs2h", 0x2E55F03E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs2h<.cc> 0,limm,u6 00101110110101011111uuuuuu1QQQQQ. */
+{ "vsubs2h", 0x2ED5F020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubs2h 0,limm,s12 00101110100101011111ssssssSSSSSS. */
+{ "vsubs2h", 0x2E95F000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubs2h a,limm,limm 00101110000101011111111110AAAAAA. */
+{ "vsubs2h", 0x2E15FF80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs2h 0,limm,limm 00101110000101011111111110111110. */
+{ "vsubs2h", 0x2E15FFBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs2h<.cc> 0,limm,limm 001011101101010111111111100QQQQQ. */
+{ "vsubs2h", 0x2ED5FF80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, DSP, NONE, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* vsubs4h a,b,c 00101bbb001110010BBBCCCCCCAAAAAA. */
+{ "vsubs4h", 0x28390000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, RC }, { 0 }},
+
+/* vsubs4h 0,b,c 00101bbb001110010BBBCCCCCC111110. */
+{ "vsubs4h", 0x2839003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, RC }, { 0 }},
+
+/* vsubs4h<.cc> b,b,c 00101bbb111110010BBBCCCCCC0QQQQQ. */
+{ "vsubs4h", 0x28F90000, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, RC }, { C_CC }},
+
+/* vsubs4h a,b,u6 00101bbb011110010BBBuuuuuuAAAAAA. */
+{ "vsubs4h", 0x28790000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs4h 0,b,u6 00101bbb011110010BBBuuuuuu111110. */
+{ "vsubs4h", 0x2879003E, 0xF8FF803F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, UIMM6_20 }, { 0 }},
+
+/* vsubs4h<.cc> b,b,u6 00101bbb111110010BBBuuuuuu1QQQQQ. */
+{ "vsubs4h", 0x28F90020, 0xF8FF8020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, UIMM6_20 }, { C_CC }},
+
+/* vsubs4h b,b,s12 00101bbb101110010BBBssssssSSSSSS. */
+{ "vsubs4h", 0x28B90000, 0xF8FF8000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, SIMM12_20 }, { 0 }},
+
+/* vsubs4h a,limm,c 00101110001110010111CCCCCCAAAAAA. */
+{ "vsubs4h", 0x2E397000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, RC }, { 0 }},
+
+/* vsubs4h a,b,limm 00101bbb001110010BBB111110AAAAAA. */
+{ "vsubs4h", 0x28390F80, 0xF8FF8FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, RB, LIMM }, { 0 }},
+
+/* vsubs4h 0,limm,c 00101110001110010111CCCCCC111110. */
+{ "vsubs4h", 0x2E39703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { 0 }},
+
+/* vsubs4h 0,b,limm 00101bbb001110010BBB111110111110. */
+{ "vsubs4h", 0x28390FBE, 0xF8FF8FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, RB, LIMM }, { 0 }},
+
+/* vsubs4h<.cc> b,b,limm 00101bbb111110010BBB1111100QQQQQ. */
+{ "vsubs4h", 0x28F90F80, 0xF8FF8FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RB_CHK, RBdup, LIMM }, { C_CC }},
+
+/* vsubs4h<.cc> 0,limm,c 00101110111110010111CCCCCC0QQQQQ. */
+{ "vsubs4h", 0x2EF97000, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, RC }, { C_CC }},
+
+/* vsubs4h a,limm,u6 00101110011110010111uuuuuuAAAAAA. */
+{ "vsubs4h", 0x2E797000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs4h 0,limm,u6 00101110011110010111uuuuuu111110. */
+{ "vsubs4h", 0x2E79703E, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { 0 }},
+
+/* vsubs4h<.cc> 0,limm,u6 00101110111110010111uuuuuu1QQQQQ. */
+{ "vsubs4h", 0x2EF97020, 0xFFFFF020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, UIMM6_20 }, { C_CC }},
+
+/* vsubs4h 0,limm,s12 00101110101110010111ssssssSSSSSS. */
+{ "vsubs4h", 0x2EB97000, 0xFFFFF000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, SIMM12_20 }, { 0 }},
+
+/* vsubs4h a,limm,limm 00101110001110010111111110AAAAAA. */
+{ "vsubs4h", 0x2E397F80, 0xFFFFFFC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { RA_CHK, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs4h 0,limm,limm 00101110001110010111111110111110. */
+{ "vsubs4h", 0x2E397FBE, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { 0 }},
+
+/* vsubs4h<.cc> 0,limm,limm 001011101111100101111111100QQQQQ. */
+{ "vsubs4h", 0x2EF97F80, 0xFFFFFFE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, MPY, MPY9E, { ZA, LIMM, LIMMdup }, { C_CC }},
+
+/* wevt c 00100000001011110001CCCCCC111111. */
+{ "wevt", 0x202F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { RC }, { 0 }},
+
+/* wevt 00100000011011110001000000111111. */
+{ "wevt", 0x206F103F, 0xFFFFFFFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { 0 }, { 0 }},
+
+/* wevt u6 00100000011011110001uuuuuu111111. */
+{ "wevt", 0x206F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { UIMM6_20 }, { 0 }},
+
+/* wlfc c 00100001001011110001CCCCCC111111. */
+{ "wlfc", 0x212F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { RC }, { 0 }},
+
+/* wlfc u6 00100001011011110001uuuuuu111111. */
+{ "wlfc", 0x216F103F, 0xFFFFF03F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, KERNEL, NONE, { UIMM6_20 }, { 0 }},
+
+/* xbfu<.f> a,b,c 00100bbb00101101FBBBCCCCCCAAAAAA. */
+{ "xbfu", 0x202D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, RB, RC }, { C_F }},
+
+/* xbfu<.f> 0,b,c 00100bbb00101101FBBBCCCCCC111110. */
+{ "xbfu", 0x202D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, RB, RC }, { C_F }},
+
+/* xbfu<.f><.cc> b,b,c 00100bbb11101101FBBBCCCCCC0QQQQQ. */
+{ "xbfu", 0x20ED0000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* xbfu<.f> a,b,u6 00100bbb01101101FBBBuuuuuuAAAAAA. */
+{ "xbfu", 0x206D0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* xbfu<.f> 0,b,u6 00100bbb01101101FBBBuuuuuu111110. */
+{ "xbfu", 0x206D003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* xbfu<.f><.cc> b,b,u6 00100bbb11101101FBBBuuuuuu1QQQQQ. */
+{ "xbfu", 0x20ED0020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* xbfu<.f> b,b,s12 00100bbb10101101FBBBssssssSSSSSS. */
+{ "xbfu", 0x20AD0000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* xbfu<.f> a,limm,c 0010011000101101F111CCCCCCAAAAAA. */
+{ "xbfu", 0x262D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, LIMM, RC }, { C_F }},
+
+/* xbfu<.f> a,b,limm 00100bbb00101101FBBB111110AAAAAA. */
+{ "xbfu", 0x202D0F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, RB, LIMM }, { C_F }},
+
+/* xbfu<.f> 0,limm,c 0010011000101101F111CCCCCC111110. */
+{ "xbfu", 0x262D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, RC }, { C_F }},
+
+/* xbfu<.f> 0,b,limm 00100bbb00101101FBBB111110111110. */
+{ "xbfu", 0x202D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, RB, LIMM }, { C_F }},
+
+/* xbfu<.f><.cc> b,b,limm 00100bbb11101101FBBB1111100QQQQQ. */
+{ "xbfu", 0x20ED0F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* xbfu<.f><.cc> 0,limm,c 0010011011101101F111CCCCCC0QQQQQ. */
+{ "xbfu", 0x26ED7000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* xbfu<.f> a,limm,u6 0010011001101101F111uuuuuuAAAAAA. */
+{ "xbfu", 0x266D7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xbfu<.f> 0,limm,u6 0010011001101101F111uuuuuu111110. */
+{ "xbfu", 0x266D703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xbfu<.f><.cc> 0,limm,u6 0010011011101101F111uuuuuu1QQQQQ. */
+{ "xbfu", 0x26ED7020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xbfu<.f> 0,limm,s12 0010011010101101F111ssssssSSSSSS. */
+{ "xbfu", 0x26AD7000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* xbfu<.f> a,limm,limm 0010011000101101F111111110AAAAAA. */
+{ "xbfu", 0x262D7F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* xbfu<.f> 0,limm,limm 0010011000101101F111111110111110. */
+{ "xbfu", 0x262D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* xbfu<.f><.cc> 0,limm,limm 0010011011101101F1111111100QQQQQ. */
+{ "xbfu", 0x26ED7F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, ARITH, SHFT2, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* xbful<.f> RA,RB,RC 01011bbb00101101FBBBccccccaaaaaa. */
+{ "xbful", 0x582D0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* xbful<.f> 0,RB,RC 01011bbb00101101FBBBcccccc111110. */
+{ "xbful", 0x582D003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* xbful<.f><.cc> RB,RB,RC 01011bbb11101101FBBBcccccc0QQQQQ. */
+{ "xbful", 0x58ED0000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* xbful<.f> RA,RB,u6 01011bbb01101101FBBBuuuuuuaaaaaa. */
+{ "xbful", 0x586D0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* xbful<.f> 0,RB,u6 01011bbb01101101FBBBuuuuuu111110. */
+{ "xbful", 0x586D003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* xbful<.f><.cc> RB,RB,u6 01011bbb11101101FBBBuuuuuu1QQQQQ. */
+{ "xbful", 0x58ED0020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* xbful<.f> RB,RB,s12 01011bbb10101101FBBBssssssSSSSSS. */
+{ "xbful", 0x58AD0000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* xbful<.f> RA,ximm,RC 0101110000101101F111ccccccaaaaaa. */
+{ "xbful", 0x5C2D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* xbful<.f> RA,RB,ximm 01011bbb00101101FBBB111100aaaaaa. */
+{ "xbful", 0x582D0F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* xbful<.f> 0,ximm,RC 0101110000101101F111cccccc111110. */
+{ "xbful", 0x5C2D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* xbful<.f> 0,RB,ximm 01011bbb00101101FBBB111100111110. */
+{ "xbful", 0x582D0F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* xbful<.f><.cc> 0,ximm,RC 0101110011101101F111cccccc0QQQQQ. */
+{ "xbful", 0x5CED7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* xbful<.f><.cc> RB,RB,ximm 01011bbb11101101FBBB1111000QQQQQ. */
+{ "xbful", 0x58ED0F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* xbful<.f> RA,ximm,u6 0101110001101101F111uuuuuuaaaaaa. */
+{ "xbful", 0x5C6D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* xbful<.f> 0,ximm,u6 0101110001101101F111uuuuuu111110. */
+{ "xbful", 0x5C6D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* xbful<.f><.cc> 0,ximm,u6 0101110011101101F111uuuuuu1QQQQQ. */
+{ "xbful", 0x5CED7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xbful<.f> RA,limm,RC 0101111000101101F111ccccccaaaaaa. */
+{ "xbful", 0x5E2D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* xbful<.f> RA,RB,limm 01011bbb00101101FBBB111110aaaaaa. */
+{ "xbful", 0x582D0F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* xbful<.f> 0,limm,RC 0101111000101101F111cccccc111110. */
+{ "xbful", 0x5E2D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* xbful<.f> 0,RB,limm 01011bbb00101101FBBB111110111110. */
+{ "xbful", 0x582D0FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* xbful<.f><.cc> 0,limm,RC 0101111011101101F111cccccc0QQQQQ. */
+{ "xbful", 0x5EED7000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* xbful<.f><.cc> RB,RB,limm 01011bbb11101101FBBB1111100QQQQQ. */
+{ "xbful", 0x58ED0F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* xbful<.f> RA,limm,u6 0101111001101101F111uuuuuuaaaaaa. */
+{ "xbful", 0x5E6D7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xbful<.f> 0,limm,u6 0101111001101101F111uuuuuu111110. */
+{ "xbful", 0x5E6D703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xbful<.f><.cc> 0,limm,u6 0101111011101101F111uuuuuu1QQQQQ. */
+{ "xbful", 0x5EED7020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xbful<.f> 0,ximm,s12 0101110010101101F111ssssssSSSSSS. */
+{ "xbful", 0x5CAD7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* xbful<.f> 0,limm,s12 0101111010101101F111ssssssSSSSSS. */
+{ "xbful", 0x5EAD7000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* xbful<.f> RA,ximm,ximm 0101110000101101F111111100aaaaaa. */
+{ "xbful", 0x5C2D7F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* xbful<.f> 0,ximm,ximm 0101110000101101F111111100111110. */
+{ "xbful", 0x5C2D7F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* xbful<.f><.cc> 0,ximm,ximm 0101110011101101F1111111000QQQQQ. */
+{ "xbful", 0x5CED7F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* xbful<.f> RA,limm,limm 0101111000101101F111111110aaaaaa. */
+{ "xbful", 0x5E2D7F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* xbful<.f> 0,limm,limm 0101111000101101F111111110111110. */
+{ "xbful", 0x5E2D7FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* xbful<.f><.cc> 0,limm,limm 0101111011101101F1111111100QQQQQ. */
+{ "xbful", 0x5EED7F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* xor<.f> a,b,c 00100bbb00000111FBBBCCCCCCAAAAAA. */
+{ "xor", 0x20070000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, RC }, { C_F }},
+
+/* xor<.f> 0,b,c 00100bbb00000111FBBBCCCCCC111110. */
+{ "xor", 0x2007003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, RC }, { C_F }},
+
+/* xor<.f><.cc> b,b,c 00100bbb11000111FBBBCCCCCC0QQQQQ. */
+{ "xor", 0x20C70000, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* xor<.f> a,b,u6 00100bbb01000111FBBBuuuuuuAAAAAA. */
+{ "xor", 0x20470000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* xor<.f> 0,b,u6 00100bbb01000111FBBBuuuuuu111110. */
+{ "xor", 0x2047003E, 0xF8FF003F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* xor<.f><.cc> b,b,u6 00100bbb11000111FBBBuuuuuu1QQQQQ. */
+{ "xor", 0x20C70020, 0xF8FF0020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* xor<.f> b,b,s12 00100bbb10000111FBBBssssssSSSSSS. */
+{ "xor", 0x20870000, 0xF8FF0000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* xor<.f> a,limm,c 0010011000000111F111CCCCCCAAAAAA. */
+{ "xor", 0x26077000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* xor<.f> a,b,limm 00100bbb00000111FBBB111110AAAAAA. */
+{ "xor", 0x20070F80, 0xF8FF0FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* xor<.f> 0,limm,c 0010011000000111F111CCCCCC111110. */
+{ "xor", 0x2607703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* xor<.f> 0,b,limm 00100bbb00000111FBBB111110111110. */
+{ "xor", 0x20070FBE, 0xF8FF0FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* xor<.f><.cc> 0,limm,c 0010011011000111F111CCCCCC0QQQQQ. */
+{ "xor", 0x26C77000, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* xor<.f><.cc> b,b,limm 00100bbb11000111FBBB1111100QQQQQ. */
+{ "xor", 0x20C70F80, 0xF8FF0FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* xor<.f> a,limm,u6 0010011001000111F111uuuuuuAAAAAA. */
+{ "xor", 0x26477000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xor<.f> 0,limm,u6 0010011001000111F111uuuuuu111110. */
+{ "xor", 0x2647703E, 0xFFFF703F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xor<.f><.cc> 0,limm,u6 0010011011000111F111uuuuuu1QQQQQ. */
+{ "xor", 0x26C77020, 0xFFFF7020, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xor<.f> 0,limm,s12 0010011010000111F111ssssssSSSSSS. */
+{ "xor", 0x26877000, 0xFFFF7000, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* xor<.f> a,limm,limm 0010011000000111F111111110AAAAAA. */
+{ "xor", 0x26077F80, 0xFFFF7FC0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* xor<.f> 0,limm,limm 0010011000000111F111111110111110. */
+{ "xor", 0x26077FBE, 0xFFFF7FFF, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* xor<.f><.cc> 0,limm,limm 0010011011000111F1111111100QQQQQ. */
+{ "xor", 0x26C77F80, 0xFFFF7FE0, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* xorl<.f> RA,RB,RC 01011bbb00000111FBBBccccccaaaaaa. */
+{ "xorl", 0x58070000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, RC }, { C_F }},
+
+/* xorl<.f> 0,RB,RC 01011bbb00000111FBBBcccccc111110. */
+{ "xorl", 0x5807003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, RC }, { C_F }},
+
+/* xorl<.f><.cc> RB,RB,RC 01011bbb11000111FBBBcccccc0QQQQQ. */
+{ "xorl", 0x58C70000, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, RC }, { C_F, C_CC }},
+
+/* xorl<.f> RA,RB,u6 01011bbb01000111FBBBuuuuuuaaaaaa. */
+{ "xorl", 0x58470000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, UIMM6_20 }, { C_F }},
+
+/* xorl<.f> 0,RB,u6 01011bbb01000111FBBBuuuuuu111110. */
+{ "xorl", 0x5847003E, 0xF8FF003F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, UIMM6_20 }, { C_F }},
+
+/* xorl<.f><.cc> RB,RB,u6 01011bbb11000111FBBBuuuuuu1QQQQQ. */
+{ "xorl", 0x58C70020, 0xF8FF0020, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, UIMM6_20 }, { C_F, C_CC }},
+
+/* xorl<.f> RB,RB,s12 01011bbb10000111FBBBssssssSSSSSS. */
+{ "xorl", 0x58870000, 0xF8FF0000, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, SIMM12_20 }, { C_F }},
+
+/* xorl<.f> RA,ximm,RC 0101110000000111F111ccccccaaaaaa. */
+{ "xorl", 0x5C077000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, RC }, { C_F }},
+
+/* xorl<.f> RA,RB,ximm 01011bbb00000111FBBB111100aaaaaa. */
+{ "xorl", 0x58070F00, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, XIMM }, { C_F }},
+
+/* xorl<.f> 0,ximm,RC 0101110000000111F111cccccc111110. */
+{ "xorl", 0x5C07703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F }},
+
+/* xorl<.f> 0,RB,ximm 01011bbb00000111FBBB111100111110. */
+{ "xorl", 0x58070F3E, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, XIMM }, { C_F }},
+
+/* xorl<.f><.cc> 0,ximm,RC 0101110011000111F111cccccc0QQQQQ. */
+{ "xorl", 0x5CC77000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, RC }, { C_F, C_CC }},
+
+/* xorl<.f><.cc> RB,RB,ximm 01011bbb11000111FBBB1111000QQQQQ. */
+{ "xorl", 0x58C70F00, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, XIMM }, { C_F, C_CC }},
+
+/* xorl<.f> RA,ximm,u6 0101110001000111F111uuuuuuaaaaaa. */
+{ "xorl", 0x5C477000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, UIMM6_20 }, { C_F }},
+
+/* xorl<.f> 0,ximm,u6 0101110001000111F111uuuuuu111110. */
+{ "xorl", 0x5C47703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F }},
+
+/* xorl<.f><.cc> 0,ximm,u6 0101110011000111F111uuuuuu1QQQQQ. */
+{ "xorl", 0x5CC77020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xorl<.f> RA,limm,RC 0101111000000111F111ccccccaaaaaa. */
+{ "xorl", 0x5E077000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, RC }, { C_F }},
+
+/* xorl<.f> RA,RB,limm 01011bbb00000111FBBB111110aaaaaa. */
+{ "xorl", 0x58070F80, 0xF8FF0FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, RB, LIMM }, { C_F }},
+
+/* xorl<.f> 0,limm,RC 0101111000000111F111cccccc111110. */
+{ "xorl", 0x5E07703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F }},
+
+/* xorl<.f> 0,RB,limm 01011bbb00000111FBBB111110111110. */
+{ "xorl", 0x58070FBE, 0xF8FF0FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, RB, LIMM }, { C_F }},
+
+/* xorl<.f><.cc> 0,limm,RC 0101111011000111F111cccccc0QQQQQ. */
+{ "xorl", 0x5EC77000, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, RC }, { C_F, C_CC }},
+
+/* xorl<.f><.cc> RB,RB,limm 01011bbb11000111FBBB1111100QQQQQ. */
+{ "xorl", 0x58C70F80, 0xF8FF0FE0, ARC_OPCODE_ARC64, ARITH, NONE, { RB, RBdup, LIMM }, { C_F, C_CC }},
+
+/* xorl<.f> RA,limm,u6 0101111001000111F111uuuuuuaaaaaa. */
+{ "xorl", 0x5E477000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xorl<.f> 0,limm,u6 0101111001000111F111uuuuuu111110. */
+{ "xorl", 0x5E47703E, 0xFFFF703F, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F }},
+
+/* xorl<.f><.cc> 0,limm,u6 0101111011000111F111uuuuuu1QQQQQ. */
+{ "xorl", 0x5EC77020, 0xFFFF7020, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, UIMM6_20 }, { C_F, C_CC }},
+
+/* xorl<.f> 0,ximm,s12 0101110010000111F111ssssssSSSSSS. */
+{ "xorl", 0x5C877000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, SIMM12_20 }, { C_F }},
+
+/* xorl<.f> 0,limm,s12 0101111010000111F111ssssssSSSSSS. */
+{ "xorl", 0x5E877000, 0xFFFF7000, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, SIMM12_20 }, { C_F }},
+
+/* xorl<.f> RA,ximm,ximm 0101110000000111F111111100aaaaaa. */
+{ "xorl", 0x5C077F00, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, XIMM, XIMMdup }, { C_F }},
+
+/* xorl<.f> 0,ximm,ximm 0101110000000111F111111100111110. */
+{ "xorl", 0x5C077F3E, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F }},
+
+/* xorl<.f><.cc> 0,ximm,ximm 0101110011000111F1111111000QQQQQ. */
+{ "xorl", 0x5CC77F00, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, XIMM, XIMMdup }, { C_F, C_CC }},
+
+/* xorl<.f> RA,limm,limm 0101111000000111F111111110aaaaaa. */
+{ "xorl", 0x5E077F80, 0xFFFF7FC0, ARC_OPCODE_ARC64, ARITH, NONE, { RA, LIMM, LIMMdup }, { C_F }},
+
+/* xorl<.f> 0,limm,limm 0101111000000111F111111110111110. */
+{ "xorl", 0x5E077FBE, 0xFFFF7FFF, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F }},
+
+/* xorl<.f><.cc> 0,limm,limm 0101111011000111F1111111100QQQQQ. */
+{ "xorl", 0x5EC77F80, 0xFFFF7FE0, ARC_OPCODE_ARC64, ARITH, NONE, { ZA, LIMM, LIMMdup }, { C_F, C_CC }},
+
+/* xor_s b,b,c 01111bbbccc00111. */
+{ "xor_s", 0x00007807, 0x0000F81F, ARC_OPCODE_ARCv2HS | ARC_OPCODE_ARC64, LOGICAL, NONE, { RB_S, RB_Sdup, RC_S }, { 0 }},
+
--
2.31.1