aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog28
-rw-r--r--gas/as.h4
-rw-r--r--gas/config/obj-elf.h8
-rw-r--r--gas/config/tc-arc.c1258
-rw-r--r--gas/config/tc-arc.h23
-rw-r--r--gas/doc/Makefile.am1
-rw-r--r--gas/doc/Makefile.in1
-rw-r--r--gas/doc/as.texinfo93
-rw-r--r--gas/po/gas.pot1309
-rw-r--r--gas/struc-symbol.h10
-rw-r--r--gas/testsuite/ChangeLog50
-rw-r--r--gas/testsuite/gas/arc/adc.d85
-rw-r--r--gas/testsuite/gas/arc/adc.s68
-rw-r--r--gas/testsuite/gas/arc/add.d85
-rw-r--r--gas/testsuite/gas/arc/add.s68
-rw-r--r--gas/testsuite/gas/arc/and.d85
-rw-r--r--gas/testsuite/gas/arc/and.s68
-rw-r--r--gas/testsuite/gas/arc/arc.exp151
-rw-r--r--gas/testsuite/gas/arc/asl.d68
-rw-r--r--gas/testsuite/gas/arc/asl.s58
-rw-r--r--gas/testsuite/gas/arc/asr.d51
-rw-r--r--gas/testsuite/gas/arc/asr.s38
-rw-r--r--gas/testsuite/gas/arc/b.d76
-rw-r--r--gas/testsuite/gas/arc/b.s40
-rw-r--r--gas/testsuite/gas/arc/bic.d85
-rw-r--r--gas/testsuite/gas/arc/bic.s68
-rw-r--r--gas/testsuite/gas/arc/bl.d76
-rw-r--r--gas/testsuite/gas/arc/bl.s40
-rw-r--r--gas/testsuite/gas/arc/brk.d11
-rw-r--r--gas/testsuite/gas/arc/brk.s7
-rw-r--r--gas/testsuite/gas/arc/extb.d51
-rw-r--r--gas/testsuite/gas/arc/extb.s38
-rw-r--r--gas/testsuite/gas/arc/extw.d51
-rw-r--r--gas/testsuite/gas/arc/extw.s38
-rw-r--r--gas/testsuite/gas/arc/flag.d59
-rw-r--r--gas/testsuite/gas/arc/j.d194
-rw-r--r--gas/testsuite/gas/arc/j.s9
-rw-r--r--gas/testsuite/gas/arc/jl.d25
-rw-r--r--gas/testsuite/gas/arc/jl.s9
-rw-r--r--gas/testsuite/gas/arc/ld.d35
-rw-r--r--gas/testsuite/gas/arc/ld.s29
-rw-r--r--gas/testsuite/gas/arc/ld2.d21
-rw-r--r--gas/testsuite/gas/arc/ld2.s13
-rw-r--r--gas/testsuite/gas/arc/lp.d76
-rw-r--r--gas/testsuite/gas/arc/lp.s40
-rw-r--r--gas/testsuite/gas/arc/lsr.d51
-rw-r--r--gas/testsuite/gas/arc/lsr.s38
-rw-r--r--gas/testsuite/gas/arc/mov.d68
-rw-r--r--gas/testsuite/gas/arc/mov.s58
-rw-r--r--gas/testsuite/gas/arc/nop.d9
-rw-r--r--gas/testsuite/gas/arc/nop.s3
-rw-r--r--gas/testsuite/gas/arc/or.d85
-rw-r--r--gas/testsuite/gas/arc/or.s68
-rw-r--r--gas/testsuite/gas/arc/rlc.d68
-rw-r--r--gas/testsuite/gas/arc/rlc.s58
-rw-r--r--gas/testsuite/gas/arc/ror.d51
-rw-r--r--gas/testsuite/gas/arc/ror.s38
-rw-r--r--gas/testsuite/gas/arc/rrc.d51
-rw-r--r--gas/testsuite/gas/arc/rrc.s38
-rw-r--r--gas/testsuite/gas/arc/sbc.d85
-rw-r--r--gas/testsuite/gas/arc/sbc.s68
-rw-r--r--gas/testsuite/gas/arc/sexb.d51
-rw-r--r--gas/testsuite/gas/arc/sexb.s38
-rw-r--r--gas/testsuite/gas/arc/sexw.d51
-rw-r--r--gas/testsuite/gas/arc/sexw.s38
-rw-r--r--gas/testsuite/gas/arc/sleep.d11
-rw-r--r--gas/testsuite/gas/arc/sleep.s6
-rw-r--r--gas/testsuite/gas/arc/st.d44
-rw-r--r--gas/testsuite/gas/arc/st.s35
-rw-r--r--gas/testsuite/gas/arc/sub.d85
-rw-r--r--gas/testsuite/gas/arc/sub.s68
-rw-r--r--gas/testsuite/gas/arc/swi.d11
-rw-r--r--gas/testsuite/gas/arc/swi.s6
-rw-r--r--gas/testsuite/gas/arc/warn.exp5
-rw-r--r--gas/testsuite/gas/arc/warn.s7
-rw-r--r--gas/testsuite/gas/arc/xor.d85
-rw-r--r--gas/testsuite/gas/arc/xor.s68
-rw-r--r--gas/testsuite/gas/ieee-fp/x930509a.exp2
-rw-r--r--gas/testsuite/gas/vtable/vtable.exp5
79 files changed, 4738 insertions, 1416 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 96df47a..f3b8069 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,31 @@
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * as.h (TC_ARC): Ensure struc-symbol.h included.
+ * as.c (dwarf2dbg.h): Include to remove implicit declaration
+ warnings.
+ * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define.
+ (TARGET_SYMBOL_FIELDS) added.
+
+ * doc/Makefile.am (CPU_DOCS): Added c-arc.texi.
+ * doc/c-arc.texi: New file.
+ Some sections to be expanded.
+ * doc/as.texinfo: Update command-line options.
+ Removed outdated text for ARC dependant features, instead include
+ text from above file.
+
+ * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag.
+ (TARGET_SYMBOL_FIELDS): Alias to previous definition.
+ (targ-cpu.h) header.
+ * config/tc-arc.h:
+ * config/tc-arc.c: New updated configuration for
+ ARC, including selection of core variants, and extensibility of
+ instructions, registers etc. through directives.
+
+ * config/tc-arc.c (arc_extinst): Minor corrections for
+ error messages.
+ (arc_common) Likewise. Make alignment argument optional for local
+ symbols also, with default of zero.
+
2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/tc-m68hc11.c (md_estimate_size_before_relax): Fix
diff --git a/gas/as.h b/gas/as.h
index fe64988..a98acfe 100644
--- a/gas/as.h
+++ b/gas/as.h
@@ -622,6 +622,10 @@ void eh_frame_convert_frag PARAMS ((fragS *));
/* this one starts the chain of target dependant headers */
#include "targ-env.h"
+#ifdef TC_ARC
+#include "struc-symbol.h"
+#endif
+
#include "write.h"
#include "frags.h"
#include "hash.h"
diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h
index ce93be5..43daf64 100644
--- a/gas/config/obj-elf.h
+++ b/gas/config/obj-elf.h
@@ -85,6 +85,14 @@ struct elf_obj_sy
#define OBJ_SYMFIELD_TYPE struct elf_obj_sy
+/* Symbol fields used by the ELF back end. */
+#define ELF_TARGET_SYMBOL_FIELDS int local:1;
+
+/* Don't change this; change ELF_TARGET_SYMBOL_FIELDS instead. */
+#define TARGET_SYMBOL_FIELDS ELF_TARGET_SYMBOL_FIELDS
+
+/* #include "targ-cpu.h" */
+
#ifndef FALSE
#define FALSE 0
#define TRUE !FALSE
diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
index 819be45..754829f 100644
--- a/gas/config/tc-arc.c
+++ b/gas/config/tc-arc.c
@@ -1,6 +1,5 @@
/* tc-arc.c -- Assembler for the ARC
- Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc.
Contributed by Doug Evans (dje@cygnus.com).
This file is part of GAS, the GNU Assembler.
@@ -16,38 +15,83 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with GAS; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ along with GAS; see the file COPYING. If not, write to
+ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <ctype.h>
+#include "libiberty.h"
#include "as.h"
#include "subsegs.h"
#include "opcode/arc.h"
+#include "../opcodes/arc-ext.h"
#include "elf/arc.h"
extern int arc_get_mach PARAMS ((char *));
+extern int arc_operand_type PARAMS ((int));
+extern int arc_insn_not_jl PARAMS ((arc_insn));
+extern int arc_limm_fixup_adjust PARAMS ((arc_insn));
+extern int arc_get_noshortcut_flag PARAMS ((void));
+extern int arc_set_ext_seg PARAMS ((void));
+extern void arc_code_symbol PARAMS((expressionS *));
static arc_insn arc_insert_operand PARAMS ((arc_insn,
const struct arc_operand *, int,
const struct arc_operand_value *,
offsetT, char *, unsigned int));
static void arc_common PARAMS ((int));
-static void arc_cpu PARAMS ((int));
-/*static void arc_rename PARAMS ((int));*/
+static void arc_extinst PARAMS ((int));
+static void arc_extoper PARAMS ((int));
+static void arc_option PARAMS ((int));
static int get_arc_exp_reloc_type PARAMS ((int, int, expressionS *,
expressionS *));
+const struct suffix_classes {
+ char *name;
+ int len;
+} suffixclass[] = {
+ { "SUFFIX_COND|SUFFIX_FLAG",23 },
+ { "SUFFIX_FLAG", 11 },
+ { "SUFFIX_COND", 11 },
+ { "SUFFIX_NONE", 11 }
+};
+
+#define MAXSUFFIXCLASS (sizeof(suffixclass) / sizeof(struct suffix_classes))
+
+const struct syntax_classes {
+ char *name;
+ int len;
+ int class;
+} syntaxclass[] = {
+ { "SYNTAX_3OP|OP1_MUST_BE_IMM", 26, SYNTAX_3OP|OP1_MUST_BE_IMM|SYNTAX_VALID },
+ { "OP1_MUST_BE_IMM|SYNTAX_3OP", 26, OP1_MUST_BE_IMM|SYNTAX_3OP|SYNTAX_VALID },
+ { "SYNTAX_2OP|OP1_IMM_IMPLIED", 26, SYNTAX_2OP|OP1_IMM_IMPLIED|SYNTAX_VALID },
+ { "OP1_IMM_IMPLIED|SYNTAX_2OP", 26, OP1_IMM_IMPLIED|SYNTAX_2OP|SYNTAX_VALID },
+ { "SYNTAX_3OP", 10, SYNTAX_3OP|SYNTAX_VALID },
+ { "SYNTAX_2OP", 10, SYNTAX_2OP|SYNTAX_VALID }
+};
+
+#define MAXSYNTAXCLASS (sizeof(syntaxclass) / sizeof(struct syntax_classes))
+
const pseudo_typeS md_pseudo_table[] =
{
- { "align", s_align_bytes, 0 }, /* Defaulting is invalid (0) */
+ { "align", s_align_bytes, 0 }, /* Defaulting is invalid (0) */
+ { "comm", arc_common, 0 },
{ "common", arc_common, 0 },
-/*{ "hword", cons, 2 }, - already exists */
+ { "lcomm", arc_common, 1 },
+ { "lcommon", arc_common, 1 },
+ { "2byte", cons, 2 },
+ { "half", cons, 2 },
+ { "short", cons, 2 },
+ { "3byte", cons, 3 },
+ { "4byte", cons, 4 },
{ "word", cons, 4 },
-/*{ "xword", cons, 8 },*/
- { "cpu", arc_cpu, 0 },
-/*{ "rename", arc_rename, 0 },*/
+ { "option", arc_option, 0 },
+ { "block", s_space, 0 },
+ { "extcondcode", arc_extoper, 0 },
+ { "extcoreregister", arc_extoper, 1 },
+ { "extauxregister", arc_extoper, 2 },
+ { "extinstruction", arc_extinst, 0 },
{ NULL, 0, 0 },
};
@@ -60,9 +104,9 @@ const char comment_chars[] = "#;";
.line and .file directives will appear in the pre-processed output */
/* Note that input_file.c hand checks for '#' at the beginning of the
first line of the input file. This is because the compiler outputs
- #NO_APP at the beginning of its output. */
+ #NO_APP at the beginning of its output. */
/* Also note that comments started like this one will always
- work if '/' isn't otherwise defined. */
+ work if '/' isn't otherwise defined. */
const char line_comment_chars[] = "#";
const char line_separator_chars[] = "";
@@ -80,8 +124,10 @@ extern int target_big_endian;
const char *arc_target_format = DEFAULT_TARGET_FORMAT;
static int byte_order = DEFAULT_BYTE_ORDER;
-/* One of bfd_mach_arc_xxx. */
-static int arc_mach_type = bfd_mach_arc_base;
+static segT arcext_section;
+
+/* One of bfd_mach_arc_n. */
+static int arc_mach_type = bfd_mach_arc_5;
/* Non-zero if the cpu type has been explicitly specified. */
static int mach_type_specified_p = 0;
@@ -99,10 +145,25 @@ struct option md_longopts[] =
{"EB", no_argument, NULL, OPTION_EB},
#define OPTION_EL (OPTION_MD_BASE + 1)
{"EL", no_argument, NULL, OPTION_EL},
+#define OPTION_ARC5 (OPTION_MD_BASE + 2)
+ {"marc5", no_argument, NULL, OPTION_ARC5},
+#define OPTION_ARC6 (OPTION_MD_BASE + 3)
+ {"marc6", no_argument, NULL, OPTION_ARC6},
+#define OPTION_ARC7 (OPTION_MD_BASE + 4)
+ {"marc7", no_argument, NULL, OPTION_ARC7},
+#define OPTION_ARC8 (OPTION_MD_BASE + 5)
+ {"marc8", no_argument, NULL, OPTION_ARC8},
+#define OPTION_ARC (OPTION_MD_BASE + 6)
+ {"marc", no_argument, NULL, OPTION_ARC},
{ NULL, no_argument, NULL, 0 }
};
size_t md_longopts_size = sizeof (md_longopts);
+#define IS_SYMBOL_OPERAND(o) \
+ ((o) == 'b' || (o) == 'c' || (o) == 's' || (o) == 'o' || (o) == 'O')
+
+struct arc_operand_value *get_ext_suffix(char *s);
+
/*
* md_parse_option
*
@@ -116,7 +177,20 @@ md_parse_option (c, arg)
char *arg ATTRIBUTE_UNUSED;
{
switch (c)
- {
+ {
+ case OPTION_ARC:
+ case OPTION_ARC5:
+ arc_mach_type = bfd_mach_arc_5;
+ break;
+ case OPTION_ARC6:
+ arc_mach_type = bfd_mach_arc_6;
+ break;
+ case OPTION_ARC7:
+ arc_mach_type = bfd_mach_arc_7;
+ break;
+ case OPTION_ARC8:
+ arc_mach_type = bfd_mach_arc_8;
+ break;
case OPTION_EB:
byte_order = BIG_ENDIAN;
arc_target_format = "elf32-bigarc";
@@ -127,7 +201,7 @@ md_parse_option (c, arg)
break;
default:
return 0;
- }
+ }
return 1;
}
@@ -135,10 +209,11 @@ void
md_show_usage (stream)
FILE *stream;
{
- fprintf (stream, _("\
-ARC options:\n\
--EB generate big endian output\n\
--EL generate little endian output\n"));
+ fprintf (stream, "\
+ARC Options:\n\
+ -marc[5|6|7|8] select processor variant (default arc%d)\n\
+ -EB assemble code for a big endian cpu\n\
+ -EL assemble code for a little endian cpu\n", arc_mach_type + 5);
}
/* This function is called once, at assembler startup time. It should
@@ -153,12 +228,12 @@ md_begin ()
target_big_endian = byte_order == BIG_ENDIAN;
if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, arc_mach_type))
- as_warn (_("could not set architecture and machine"));
+ as_warn ("could not set architecture and machine");
- /* Assume the base cpu. This call is necessary because we need to
+ /* This call is necessary because we need to
initialize `arc_operand_map' which may be needed before we see the
first insn. */
- arc_opcode_init_tables (arc_get_opcode_mach (bfd_mach_arc_base,
+ arc_opcode_init_tables (arc_get_opcode_mach (arc_mach_type,
target_big_endian));
}
@@ -173,10 +248,10 @@ init_opcode_tables (mach)
char *last;
if ((arc_suffix_hash = hash_new ()) == NULL)
- as_fatal (_("virtual memory exhausted"));
+ as_fatal ("virtual memory exhausted");
if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, mach))
- as_warn (_("could not set architecture and machine"));
+ as_warn ("could not set architecture and machine");
/* This initializes a few things in arc-opc.c that we need.
This must be called before the various arc_xxx_supported fns. */
@@ -187,8 +262,6 @@ init_opcode_tables (mach)
last = "";
for (i = 0; i < arc_suffixes_count; i++)
{
- if (! arc_opval_supported (&arc_suffixes[i]))
- continue;
if (strcmp (arc_suffixes[i].name, last) != 0)
hash_insert (arc_suffix_hash, arc_suffixes[i].name, (PTR) (arc_suffixes + i));
last = arc_suffixes[i].name;
@@ -197,18 +270,22 @@ init_opcode_tables (mach)
/* Since registers don't have a prefix, we put them in the symbol table so
they can't be used as symbols. This also simplifies argument parsing as
we can let gas parse registers for us. The recorded register number is
- the index in `arc_reg_names'. */
+ the address of the register's entry in arc_reg_names.
+
+ If the register name is already in the table, then the existing
+ definition is assumed to be from an .ExtCoreRegister pseudo-op. */
+
for (i = 0; i < arc_reg_names_count; i++)
{
- if (! arc_opval_supported (&arc_reg_names[i]))
+ if (symbol_find(arc_reg_names[i].name))
continue;
/* Use symbol_create here instead of symbol_new so we don't try to
output registers into the object file's symbol table. */
symbol_table_insert (symbol_create (arc_reg_names[i].name, reg_section,
- i, &zero_address_frag));
+ (int) &arc_reg_names[i], &zero_address_frag));
}
- /* Tell `s_cpu' it's too late. */
+ /* Tell `.option' it's too late. */
cpu_tables_init_p = 1;
}
@@ -252,7 +329,7 @@ arc_insert_operand (insn, operand, mods, reg, val, file, line)
if (test < (offsetT) min || test > (offsetT) max)
{
const char *err =
- _("operand out of range (%s not between %ld and %ld)");
+ "operand out of range (%s not between %ld and %ld)";
char buf[100];
sprint_value (buf, test);
@@ -301,7 +378,10 @@ md_assemble (str)
char *str;
{
const struct arc_opcode *opcode;
+ const struct arc_opcode *std_opcode;
+ struct arc_opcode *ext_opcode;
char *start;
+ const char *last_errmsg = 0;
arc_insn insn;
static int init_tables_p = 0;
@@ -320,19 +400,26 @@ md_assemble (str)
/* The instructions are stored in lists hashed by the first letter (though
we needn't care how they're hashed). Get the first in the list. */
- opcode = arc_opcode_lookup_asm (str);
+ ext_opcode = arc_ext_opcodes;
+ std_opcode = arc_opcode_lookup_asm (str);
/* Keep looking until we find a match. */
start = str;
- for ( ; opcode != NULL; opcode = ARC_OPCODE_NEXT_ASM (opcode))
+ for (opcode = (ext_opcode ? ext_opcode : std_opcode) ;
+ opcode != NULL;
+ opcode = (ARC_OPCODE_NEXT_ASM (opcode)
+ ? ARC_OPCODE_NEXT_ASM (opcode)
+ : (ext_opcode ? ext_opcode = NULL, std_opcode : NULL)))
{
int past_opcode_p, fc, num_suffixes;
+ int fix_up_at = 0;
char *syn;
struct arc_fixup fixups[MAX_FIXUPS];
/* Used as a sanity check. If we need a limm reloc, make sure we ask
for an extra 4 bytes from frag_more. */
int limm_reloc_p;
+ int ext_suffix_p;
const struct arc_operand_value *insn_suffixes[MAX_SUFFIXES];
/* Is this opcode supported by the selected cpu? */
@@ -347,6 +434,7 @@ md_assemble (str)
past_opcode_p = 0;
num_suffixes = 0;
limm_reloc_p = 0;
+ ext_suffix_p = 0;
/* We don't check for (*str != '\0') here because we want to parse
any trailing fake arguments in the syntax string. */
@@ -387,7 +475,7 @@ md_assemble (str)
}
operand = arc_operands + arc_operand_map[(int) *syn];
if (operand->fmt == 0)
- as_fatal (_("unknown syntax format character `%c'"), *syn);
+ as_fatal ("unknown syntax format character `%c'", *syn);
if (operand->flags & ARC_OPERAND_FAKE)
{
@@ -395,9 +483,25 @@ md_assemble (str)
if (operand->insert)
{
insn = (*operand->insert) (insn, operand, mods, NULL, 0, &errmsg);
- /* If we get an error, go on to try the next insn. */
- if (errmsg)
- break;
+ if (errmsg != (const char *) NULL)
+ {
+ last_errmsg = errmsg;
+ if (operand->flags & ARC_OPERAND_ERROR)
+ {
+ as_bad (errmsg);
+ return;
+ }
+ else if (operand->flags & ARC_OPERAND_WARN)
+ as_warn (errmsg);
+ break;
+ }
+ if(limm_reloc_p
+ && (operand->flags && operand->flags & ARC_OPERAND_LIMM)
+ && (operand->flags &
+ (ARC_OPERAND_ABSOLUTE_BRANCH | ARC_OPERAND_ADDRESS)))
+ {
+ fixups[fix_up_at].opindex = arc_operand_map[operand->fmt];
+ }
}
++syn;
}
@@ -407,7 +511,8 @@ md_assemble (str)
int found;
char c;
char *s,*t;
- const struct arc_operand_value *suf,*suffix,*suffix_end;
+ const struct arc_operand_value *suf,*suffix_end;
+ const struct arc_operand_value *suffix = NULL;
if (!(operand->flags & ARC_OPERAND_SUFFIX))
abort ();
@@ -440,17 +545,20 @@ md_assemble (str)
}
/* Pick the suffix out and look it up via the hash table. */
- for (t = s; *t && isalpha (*t); ++t)
+ for (t = s; *t && isalnum (*t); ++t)
continue;
c = *t;
*t = '\0';
- suf = hash_find (arc_suffix_hash, s);
- *t = c;
+ if ((suf = get_ext_suffix(s)))
+ ext_suffix_p = 1;
+ else
+ suf = hash_find (arc_suffix_hash, s);
if (!suf)
{
/* This can happen in "blle foo" and we're currently using
the template "b%q%.n %j". The "bl" insn occurs later in
the table so "lle" isn't an illegal suffix. */
+ *t = c;
break;
}
@@ -460,33 +568,51 @@ md_assemble (str)
together. If it's not the right type, don't increment `str'
so we try the next one in the series. */
found = 0;
- suffix_end = arc_suffixes + arc_suffixes_count;
- for (suffix = suf;
- suffix < suffix_end && strcmp (suffix->name, suf->name) == 0;
- ++suffix)
- {
- if (arc_operands[suffix->type].fmt == *syn)
- {
- /* Insert the suffix's value into the insn. */
- if (operand->insert)
- insn = (*operand->insert) (insn, operand,
- mods, NULL, suffix->value,
- NULL);
- else
- insn |= suffix->value << operand->shift;
-
- str = t;
- found = 1;
- break;
- }
- }
+ if (ext_suffix_p && arc_operands[suf->type].fmt == *syn)
+ {
+ /* Insert the suffix's value into the insn. */
+ *t = c;
+ if (operand->insert)
+ insn = (*operand->insert) (insn, operand,
+ mods, NULL, suf->value,
+ NULL);
+ else
+ insn |= suf->value << operand->shift;
+
+ str = t;
+ found = 1;
+ }
+ else
+ {
+ *t = c;
+ suffix_end = arc_suffixes + arc_suffixes_count;
+ for (suffix = suf;
+ suffix < suffix_end && strcmp (suffix->name, suf->name) == 0;
+ ++suffix)
+ {
+ if (arc_operands[suffix->type].fmt == *syn)
+ {
+ /* Insert the suffix's value into the insn. */
+ if (operand->insert)
+ insn = (*operand->insert) (insn, operand,
+ mods, NULL, suffix->value,
+ NULL);
+ else
+ insn |= suffix->value << operand->shift;
+
+ str = t;
+ found = 1;
+ break;
+ }
+ }
+ }
++syn;
if (!found)
; /* Wrong type. Just go on to try next insn entry. */
else
{
if (num_suffixes == MAX_SUFFIXES)
- as_bad (_("too many suffixes"));
+ as_bad ("too many suffixes");
else
insn_suffixes[num_suffixes++] = suffix;
}
@@ -507,20 +633,6 @@ md_assemble (str)
any trailing fake arguments in the syntax string. */
if (*str == '\0')
break;
-#if 0
- /* Is this a syntax character? Eg: is there a '[' present when
- there shouldn't be? */
- if (!isalnum (*str)
- /* '.' as in ".LLC0" */
- && *str != '.'
- /* '_' as in "_print" */
- && *str != '_'
- /* '-' as in "[fp,-4]" */
- && *str != '-'
- /* '%' as in "%ia(_func)" */
- && *str != '%')
- break;
-#endif
/* Parse the operand. */
hold = input_line_pointer;
@@ -530,37 +642,48 @@ md_assemble (str)
input_line_pointer = hold;
if (exp.X_op == O_illegal)
- as_bad (_("illegal operand"));
+ as_bad ("illegal operand");
else if (exp.X_op == O_absent)
- as_bad (_("missing operand"));
+ as_bad ("missing operand");
else if (exp.X_op == O_constant)
{
value = exp.X_add_number;
}
else if (exp.X_op == O_register)
{
- reg = arc_reg_names + exp.X_add_number;
+ reg = (struct arc_operand_value *) exp.X_add_number;
}
- else
+#define IS_REG_DEST_OPERAND(o) ((o) == 'a')
+ else if (IS_REG_DEST_OPERAND (*syn))
+ as_bad("symbol as destination register");
+ else
{
+ if(!strncmp(str,"@h30",4))
+ {
+ arc_code_symbol(&exp);
+ str += 4;
+ }
/* We need to generate a fixup for this expression. */
if (fc >= MAX_FIXUPS)
- as_fatal (_("too many fixups"));
+ as_fatal ("too many fixups");
fixups[fc].exp = exp;
-
+ /* We don't support shimm relocs. break here to force
+ the assembler to output a limm */
+#define IS_REG_SHIMM_OFFSET(o) ((o) == 'd')
+ if(IS_REG_SHIMM_OFFSET(*syn))
+ break;
/* If this is a register constant (IE: one whose
register value gets stored as 61-63) then this
- must be a limm. We don't support shimm relocs. */
+ must be a limm. */
/* ??? This bit could use some cleaning up.
Referencing the format chars like this goes
against style. */
-#define IS_REG_OPERAND(o) ((o) == 'a' || (o) == 'b' || (o) == 'c')
- if (IS_REG_OPERAND (*syn))
+ if (IS_SYMBOL_OPERAND (*syn))
{
const char *junk;
-
- fixups[fc].opindex = arc_operand_map['L'];
limm_reloc_p = 1;
+ /* save this, we don't yet know what reloc to use */
+ fix_up_at = fc;
/* Tell insert_reg we need a limm. This is
needed because the value at this point is
zero, a shimm. */
@@ -580,18 +703,18 @@ md_assemble (str)
const char *errmsg = NULL;
insn = (*operand->insert) (insn, operand, mods,
reg, (long) value, &errmsg);
-#if 0
- if (errmsg != (const char *) NULL)
- as_warn (errmsg);
-#endif
- /* FIXME: We want to try shimm insns for limm ones. But if
- the constant won't fit, we must go on to try the next
- possibility. Where do we issue warnings for constants
- that are too big then? At present, we'll flag the insn
- as unrecognizable! Maybe have the "bad instruction"
- error message include our `errmsg'? */
- if (errmsg != (const char *) NULL)
- break;
+ if (errmsg != (const char *) NULL)
+ {
+ last_errmsg = errmsg;
+ if (operand->flags & ARC_OPERAND_ERROR)
+ {
+ as_bad (errmsg);
+ return;
+ }
+ else if (operand->flags & ARC_OPERAND_WARN)
+ as_warn (errmsg);
+ break;
+ }
}
else
insn |= (value & ((1 << operand->bits) - 1)) << operand->shift;
@@ -617,7 +740,7 @@ md_assemble (str)
++str;
if (*str != '\0')
- as_bad (_("junk at end of line: `%s'"), str);
+ as_bad ("junk at end of line: `%s'", str);
/* Is there a limm value? */
limm_p = arc_opcode_limm_p (&limm);
@@ -656,18 +779,22 @@ md_assemble (str)
be legal, but let's warn the user anyway. Ditto for 8 byte
jumps with delay slots. */
if (in_delay_slot_p && limm_p)
- as_warn (_("8 byte instruction in delay slot"));
- if (delay_slot_type != ARC_DELAY_NONE && limm_p)
- as_warn (_("8 byte jump instruction with delay slot"));
+ as_warn ("8 byte instruction in delay slot");
+ if (delay_slot_type != ARC_DELAY_NONE
+ && limm_p && arc_insn_not_jl(insn)) /* except for jl addr */
+ as_warn ("8 byte jump instruction with delay slot");
in_delay_slot_p = (delay_slot_type != ARC_DELAY_NONE) && !limm_p;
/* Warn when a conditional branch immediately follows a set of
the condition codes. Note that this needn't be done if the
insn that sets the condition codes uses a limm. */
if (cond_branch_p && conditional != 0 /* 0 = "always" */
- && prev_insn_needs_cc_nop_p)
- as_warn (_("conditional branch follows set of flags"));
- prev_insn_needs_cc_nop_p = cc_set_p && !limm_p;
+ && prev_insn_needs_cc_nop_p && arc_mach_type == bfd_mach_arc_5)
+ as_warn ("conditional branch follows set of flags");
+ prev_insn_needs_cc_nop_p =
+ /* FIXME: ??? not required:
+ (delay_slot_type != ARC_DELAY_NONE) && */
+ cc_set_p && !limm_p;
}
/* Write out the instruction.
@@ -711,9 +838,14 @@ md_assemble (str)
if (arc_operands[fixups[i].opindex].flags & ARC_OPERAND_LIMM)
{
+ /* modify the fixup addend as required by the cpu */
+ fixups[i].exp.X_add_number += arc_limm_fixup_adjust(insn);
op_type = fixups[i].opindex;
/* FIXME: can we add this data to the operand table? */
- if (op_type == arc_operand_map['L'])
+ if (op_type == arc_operand_map['L']
+ || op_type == arc_operand_map['s']
+ || op_type == arc_operand_map['o']
+ || op_type == arc_operand_map['O'])
reloc_type = BFD_RELOC_32;
else if (op_type == arc_operand_map['J'])
reloc_type = BFD_RELOC_ARC_B26;
@@ -745,246 +877,673 @@ md_assemble (str)
/* Try the next entry. */
}
- as_bad (_("bad instruction `%s'"), start);
+ if(NULL == last_errmsg)
+ as_bad ("bad instruction `%s'", start);
+ else
+ as_bad (last_errmsg);
}
+
-/* ??? This was copied from tc-sparc.c, I think. Is it necessary? */
static void
-arc_common (ignore)
- int ignore ATTRIBUTE_UNUSED;
+arc_extoper (opertype)
+ int opertype;
{
char *name;
+ char *mode;
char c;
char *p;
- int temp;
- unsigned int size;
+ int imode = 0;
+ int number;
+ struct arc_ext_operand_value *ext_oper;
symbolS *symbolP;
+ segT old_sec;
+ int old_subsec;
+
name = input_line_pointer;
c = get_symbol_end ();
+ name = xstrdup(name);
+ if (NULL == name)
+ {
+ ignore_rest_of_line();
+ return;
+ }
+
+ p = name;
+ while (*p)
+ {
+ if (isupper(*p))
+ *p = tolower(*p);
+ p++;
+ }
+
/* just after name is now '\0' */
p = input_line_pointer;
*p = c;
SKIP_WHITESPACE ();
+
if (*input_line_pointer != ',')
{
- as_bad (_("expected comma after symbol-name"));
+ as_bad ("expected comma after operand name");
ignore_rest_of_line ();
+ free(name);
return;
}
+
input_line_pointer++; /* skip ',' */
- if ((temp = get_absolute_expression ()) < 0)
+ number = get_absolute_expression ();
+
+ if(number < 0)
+ {
+ as_bad ("negative operand number %d",number);
+ ignore_rest_of_line();
+ free(name);
+ return;
+ }
+
+ if (opertype)
+ {
+ SKIP_WHITESPACE();
+
+ if (*input_line_pointer != ',')
+ {
+ as_bad ("expected comma after register-number");
+ ignore_rest_of_line ();
+ free(name);
+ return;
+ }
+
+ input_line_pointer++; /* skip ',' */
+ mode = input_line_pointer;
+
+ if (!strncmp(mode, "r|w",3))
+ {
+ imode = 0;
+ input_line_pointer += 3;
+ }
+ else
+ {
+ if (!strncmp(mode,"r",1))
+ {
+ imode = ARC_REGISTER_READONLY;
+ input_line_pointer += 1;
+ }
+ else
+ {
+ if (strncmp(mode,"w",1))
+ {
+ as_bad ("invalid mode");
+ ignore_rest_of_line();
+ free(name);
+ return;
+ }
+ else
+ {
+ imode = ARC_REGISTER_WRITEONLY;
+ input_line_pointer += 1;
+ }
+ }
+ }
+ SKIP_WHITESPACE();
+ if (1 == opertype)
+ {
+ if (*input_line_pointer != ',')
+ {
+ as_bad ("expected comma after register-mode");
+ ignore_rest_of_line ();
+ free(name);
+ return;
+ }
+
+ input_line_pointer++; /* skip ',' */
+
+ if(!strncmp(input_line_pointer,"cannot_shortcut",15))
+ {
+ imode |= arc_get_noshortcut_flag();
+ input_line_pointer += 15;
+ }
+ else
+ {
+ if(strncmp(input_line_pointer,"can_shortcut",12))
+ {
+ as_bad ("shortcut designator invalid");
+ ignore_rest_of_line();
+ free(name);
+ return;
+ }
+ else
+ {
+ input_line_pointer += 12;
+ }
+ }
+ }
+ }
+
+ if ((opertype == 1) && number > 60)
+ {
+ as_bad("core register value (%d) too large", number);
+ ignore_rest_of_line();
+ free(name);
+ return;
+ }
+
+ if ((opertype == 0) && number > 31)
+ {
+ as_bad("condition code value (%d) too large", number);
+ ignore_rest_of_line();
+ free(name);
+ return;
+ }
+
+ ext_oper = (struct arc_ext_operand_value *) \
+ xmalloc(sizeof(struct arc_ext_operand_value));
+
+ if(opertype)
+ {
+ /* if the symbol already exists, point it at the new definition */
+ if ((symbolP = symbol_find (name)))
+ {
+ if (S_GET_SEGMENT(symbolP) == reg_section)
+ S_SET_VALUE(symbolP,(int)&ext_oper->operand);
+ else
+ {
+ as_bad("attempt to override symbol: %s",name);
+ ignore_rest_of_line();
+ free(name);
+ free(ext_oper);
+ return;
+ }
+ }
+ else
+ {
+ /* If its not there, add it */
+ symbol_table_insert (symbol_create (name, reg_section,
+ (int) &ext_oper->operand, &zero_address_frag));
+ }
+ }
+
+ ext_oper->operand.name = name;
+ ext_oper->operand.value = number;
+ ext_oper->operand.type = arc_operand_type(opertype);
+ ext_oper->operand.flags = imode;
+
+ ext_oper->next = arc_ext_operands;
+ arc_ext_operands = ext_oper;
+
+/* ok, now that we know what this operand is, put a description
+ in the arc extension section of the output file */
+
+ old_sec = now_seg;
+ old_subsec = now_subseg;
+
+ arc_set_ext_seg();
+
+ switch (opertype)
+ {
+ case 0:
+ p = frag_more(1);
+ *p = 3 + strlen(name) + 1;
+ p = frag_more(1);
+ *p = EXT_COND_CODE;
+ p = frag_more(1);
+ *p = number;
+ p = frag_more(strlen(name) + 1);
+ strcpy(p,name);
+ break;
+ case 1:
+ p = frag_more(1);
+ *p = 3 + strlen(name) + 1;
+ p = frag_more(1);
+ *p = EXT_CORE_REGISTER;
+ p = frag_more(1);
+ *p = number;
+ p = frag_more(strlen(name) + 1);
+ strcpy(p,name);
+ break;
+ case 2:
+ p = frag_more(1);
+ *p = 6 + strlen(name) + 1;
+ p = frag_more(1);
+ *p = EXT_AUX_REGISTER;
+ p = frag_more(1);
+ *p = number >> 24 & 0xff;
+ p = frag_more(1);
+ *p = number >> 16 & 0xff;
+ p = frag_more(1);
+ *p = number >> 8 & 0xff;
+ p = frag_more(1);
+ *p = number & 0xff;
+ p = frag_more(strlen(name) + 1);
+ strcpy(p,name);
+ break;
+ default:
+ as_bad("invalid opertype");
+ ignore_rest_of_line();
+ free(name);
+ return;
+ break;
+ }
+
+ subseg_set (old_sec, old_subsec);
+
+/* enter all registers into the symbol table */
+
+ demand_empty_rest_of_line();
+}
+
+static void
+arc_extinst (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ unsigned char syntax[129];
+ char *name;
+ char *p;
+ char c;
+ int suffixcode = -1;
+ int opcode,subopcode;
+ int i;
+ int class = 0;
+ int name_len;
+ struct arc_opcode *ext_op;
+
+ segT old_sec;
+ int old_subsec;
+
+ name = input_line_pointer;
+ c = get_symbol_end ();
+ name = xstrdup(name);
+ if (NULL == name)
+ {
+ ignore_rest_of_line();
+ return;
+ }
+ strcpy(syntax,name);
+ name_len = strlen(name);
+
+ /* just after name is now '\0' */
+ p = input_line_pointer;
+ *p = c;
+
+ SKIP_WHITESPACE ();
+
+ if (*input_line_pointer != ',')
{
- as_bad (_(".COMMon length (%d.) <0! Ignored."), temp);
+ as_bad ("expected comma after operand name");
ignore_rest_of_line ();
return;
}
- size = temp;
- *p = 0;
- symbolP = symbol_find_or_make (name);
- *p = c;
- if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
+
+ input_line_pointer++; /* skip ',' */
+ opcode = get_absolute_expression ();
+
+ SKIP_WHITESPACE ();
+
+ if (*input_line_pointer != ',')
{
- as_bad (_("ignoring attempt to re-define symbol"));
+ as_bad ("expected comma after opcode");
ignore_rest_of_line ();
return;
}
- if (S_GET_VALUE (symbolP) != 0)
+
+ input_line_pointer++; /* skip ',' */
+ subopcode = get_absolute_expression ();
+
+ if(subopcode < 0)
{
- if (S_GET_VALUE (symbolP) != size)
- {
- as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."),
- S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
- }
+ as_bad ("negative subopcode %d",subopcode);
+ ignore_rest_of_line();
+ return;
}
- assert (symbol_get_frag (symbolP) == &zero_address_frag);
+
+ if(subopcode)
+ {
+ if(3 != opcode)
+ {
+ as_bad ("subcode value found when opcode not equal 0x03");
+ ignore_rest_of_line();
+ return;
+ }
+ else
+ {
+ if (subopcode < 0x09 || subopcode == 0x3f)
+ {
+ as_bad ("invalid subopcode %d", subopcode);
+ ignore_rest_of_line();
+ return;
+ }
+ }
+ }
+
+ SKIP_WHITESPACE ();
+
if (*input_line_pointer != ',')
{
- as_bad (_("expected comma after common length"));
+ as_bad ("expected comma after subopcode");
ignore_rest_of_line ();
return;
}
- input_line_pointer++;
+
+ input_line_pointer++; /* skip ',' */
+
+ for(i = 0; i < (int) MAXSUFFIXCLASS; i++)
+ {
+ if(!strncmp(suffixclass[i].name,input_line_pointer, suffixclass[i].len))
+ {
+ suffixcode = i;
+ input_line_pointer += suffixclass[i].len;
+ break;
+ }
+ }
+
+ if(-1 == suffixcode)
+ {
+ as_bad ("invalid suffix class");
+ ignore_rest_of_line ();
+ return;
+ }
+
SKIP_WHITESPACE ();
- if (*input_line_pointer != '"')
+
+ if (*input_line_pointer != ',')
{
- temp = get_absolute_expression ();
- if (temp < 0)
- {
- temp = 0;
- as_warn (_("Common alignment negative; 0 assumed"));
- }
- if (S_IS_LOCAL(symbolP))
- {
- segT old_sec;
- int old_subsec;
- char *p;
- int align;
-
- old_sec = now_seg;
- old_subsec = now_subseg;
- align = temp;
- record_alignment (bss_section, align);
- subseg_set (bss_section, 0);
- if (align)
- frag_align (align, 0, 0);
- if (S_GET_SEGMENT (symbolP) == bss_section)
- symbol_get_frag (symbolP)->fr_symbol = 0;
- symbol_set_frag (symbolP, frag_now);
- p = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
- (offsetT) size, (char *) 0);
- *p = 0;
- S_SET_SEGMENT (symbolP, bss_section);
- S_CLEAR_EXTERNAL (symbolP);
- subseg_set (old_sec, old_subsec);
- }
- else
- {
- allocate_common:
- S_SET_VALUE (symbolP, (valueT) size);
- S_SET_ALIGN (symbolP, temp);
- S_SET_EXTERNAL (symbolP);
- S_SET_SEGMENT (symbolP, bfd_com_section_ptr);
- }
+ as_bad ("expected comma after suffix class");
+ ignore_rest_of_line ();
+ return;
}
- else
+
+ input_line_pointer++; /* skip ',' */
+
+ for(i = 0; i < (int) MAXSYNTAXCLASS; i++)
{
- input_line_pointer++;
- /* ??? Some say data, some say bss. */
- if (strncmp (input_line_pointer, ".bss\"", 5)
- && strncmp (input_line_pointer, ".data\"", 6))
- {
- input_line_pointer--;
- goto bad_common_segment;
- }
- while (*input_line_pointer++ != '"')
- ;
- goto allocate_common;
+ if(!strncmp(syntaxclass[i].name,input_line_pointer, syntaxclass[i].len))
+ {
+ class = syntaxclass[i].class;
+ input_line_pointer += syntaxclass[i].len;
+ break;
+ }
}
- demand_empty_rest_of_line ();
- return;
- {
- bad_common_segment:
- p = input_line_pointer;
- while (*p && *p != '\n')
- p++;
- c = *p;
- *p = '\0';
- as_bad (_("bad .common segment %s"), input_line_pointer + 1);
- *p = c;
- input_line_pointer = p;
+ if(0 == (SYNTAX_VALID & class))
+ {
+ as_bad ("invalid syntax class");
+ ignore_rest_of_line ();
+ return;
+ }
+
+ if ((0x3 == opcode) & (class & SYNTAX_3OP))
+ {
+ as_bad ("opcode 0x3 and SYNTAX_3OP invalid");
+ ignore_rest_of_line ();
+ return;
+ }
+
+ switch (suffixcode)
+ {
+ case 0:
+ strcat(syntax,"%.q%.f ");
+ break;
+ case 1:
+ strcat(syntax,"%.f ");
+ break;
+ case 2:
+ strcat(syntax,"%.q ");
+ break;
+ case 3:
+ strcat(syntax," ");
+ break;
+ default:
+ as_bad("unknown suffix class");
+ ignore_rest_of_line();
+ return;
+ break;
+ };
+
+ strcat(syntax,((opcode == 0x3) ? "%a,%b" : ((class & SYNTAX_3OP) ? "%a,%b,%c" : "%b,%c")));
+ if(suffixcode < 2)
+ strcat(syntax,"%F");
+ strcat(syntax,"%S%L");
+
+ ext_op = (struct arc_opcode *) xmalloc(sizeof(struct arc_opcode));
+ if(NULL == ext_op)
+ {
ignore_rest_of_line ();
return;
- }
+ }
+
+ ext_op->syntax = xstrdup(syntax);
+ if (NULL == ext_op->syntax)
+ {
+ ignore_rest_of_line ();
+ return;
+ }
+
+ ext_op->mask = I(-1) | ((0x3 == opcode) ? C(-1) : 0 );
+ ext_op->value = I(opcode) | ((0x3 == opcode) ? C(subopcode) : 0 );
+ ext_op->flags = class;
+ ext_op->next_asm = arc_ext_opcodes;
+ ext_op->next_dis = arc_ext_opcodes;
+ arc_ext_opcodes = ext_op;
+
+/* ok, now that we know what this inst is, put a description in
+ the arc extension section of the output file */
+
+ old_sec = now_seg;
+ old_subsec = now_subseg;
+
+ arc_set_ext_seg();
+
+ p = frag_more(1);
+ *p = 5 + name_len +1;
+ p = frag_more(1);
+ *p = EXT_INSTRUCTION;
+ p = frag_more(1);
+ *p = opcode;
+ p = frag_more(1);
+ *p = subopcode;
+ p = frag_more(1);
+ *p = (class & (OP1_MUST_BE_IMM | OP1_IMM_IMPLIED) ? IGNORE_FIRST_OPD : 0);
+ p = frag_more(name_len);
+ strncpy(p,syntax,name_len);
+ p = frag_more(1);
+ *p = '\0';
+
+ subseg_set (old_sec, old_subsec);
+
+ demand_empty_rest_of_line();
}
-/* Select the cpu we're assembling for. */
+int
+arc_set_ext_seg()
+{
+ if (!arcext_section)
+ {
+ arcext_section = subseg_new (".arcextmap", 0);
+ bfd_set_section_flags (stdoutput, arcext_section,
+ SEC_READONLY | SEC_HAS_CONTENTS);
+ }
+ else
+ subseg_set (arcext_section, 0);
+ return 1;
+}
static void
-arc_cpu (ignore)
- int ignore ATTRIBUTE_UNUSED;
+arc_common (localScope)
+ int localScope;
{
- int mach;
+ char *name;
char c;
- char *cpu;
+ char *p;
+ int align, size;
+ symbolS *symbolP;
- /* If an instruction has already been seen, it's too late. */
- if (cpu_tables_init_p)
+ name = input_line_pointer;
+ c = get_symbol_end ();
+ /* just after name is now '\0' */
+ p = input_line_pointer;
+ *p = c;
+ SKIP_WHITESPACE ();
+
+ if (*input_line_pointer != ',')
{
- as_bad (_(".cpu command must appear before any instructions"));
+ as_bad ("expected comma after symbol name");
ignore_rest_of_line ();
return;
}
- cpu = input_line_pointer;
- c = get_symbol_end ();
- mach = arc_get_mach (cpu);
- *input_line_pointer = c;
- if (mach == -1)
- goto bad_cpu;
+ input_line_pointer++; /* skip ',' */
+ size = get_absolute_expression ();
- demand_empty_rest_of_line ();
+ if (size < 0)
+ {
+ as_bad ("negative symbol length");
+ ignore_rest_of_line ();
+ return;
+ }
- /* The cpu may have been selected on the command line.
- The choices must match. */
- /* ??? This was a command line option early on. It's gone now, but
- leave this in. */
- if (mach_type_specified_p && mach != arc_mach_type)
- as_bad (_(".cpu conflicts with previous value"));
+ *p = 0;
+ symbolP = symbol_find_or_make (name);
+ *p = c;
+
+ if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
+ {
+ as_bad ("ignoring attempt to re-define symbol");
+ ignore_rest_of_line ();
+ return;
+ }
+ if ( ((int) S_GET_VALUE (symbolP) != 0) \
+ && ((int) S_GET_VALUE (symbolP) != size) )
+ {
+ as_warn ("length of symbol \"%s\" already %ld, ignoring %d",
+ S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
+ }
+ assert (symbolP->sy_frag == &zero_address_frag);
+
+
+ /* Now parse the alignment field. This field is optional for
+ local and global symbols. Default alignment is zero. */
+ if (*input_line_pointer == ',')
+ {
+ input_line_pointer++;
+ align = get_absolute_expression ();
+ if (align < 0)
+ {
+ align = 0;
+ as_warn ("assuming symbol alignment of zero");
+ }
+ }
else
+ align = 0;
+
+ if (localScope != 0)
{
- arc_mach_type = mach;
- mach_type_specified_p = 1;
- if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, mach))
- as_warn (_("could not set architecture and machine"));
+ segT old_sec;
+ int old_subsec;
+ char *pfrag;
+
+ old_sec = now_seg;
+ old_subsec = now_subseg;
+ record_alignment (bss_section, align);
+ subseg_set (bss_section, 0); /* ??? subseg_set (bss_section, 1); ??? */
+
+ if (align)
+ frag_align (align, 0, 0); /* do alignment */
+
+ /* detach from old frag */
+ if (S_GET_SEGMENT (symbolP) == bss_section)
+ symbolP->sy_frag->fr_symbol = NULL;
+
+ symbolP->sy_frag = frag_now;
+ pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
+ (offsetT) size, (char *) 0);
+ *pfrag = 0;
+
+ S_SET_SIZE (symbolP, size);
+ S_SET_SEGMENT (symbolP, bss_section);
+ S_CLEAR_EXTERNAL (symbolP);
+ symbolP->local = 1;
+ subseg_set (old_sec, old_subsec);
+ }
+ else
+ {
+ S_SET_VALUE (symbolP, (valueT) size);
+ S_SET_ALIGN (symbolP, align);
+ S_SET_EXTERNAL (symbolP);
+ S_SET_SEGMENT (symbolP, bfd_com_section_ptr);
}
- return;
- bad_cpu:
- as_bad (_("bad .cpu op"));
- ignore_rest_of_line ();
+ symbolP->bsym->flags |= BSF_OBJECT;
+
+ demand_empty_rest_of_line ();
+ return;
}
-#if 0
-/* The .rename pseudo-op. This is used by gcc to implement
- -mmangle-cpu-libgcc. */
+
+
+/* Select the cpu we're assembling for. */
static void
-arc_rename (ignore)
- int ignore;
+arc_option (ignore)
+ int ignore ATTRIBUTE_UNUSED;
{
- char *name,*new;
+ int mach;
char c;
- symbolS *sym;
- int len;
+ char *cpu;
- name = input_line_pointer;
+ cpu = input_line_pointer;
c = get_symbol_end ();
- sym = symbol_find_or_make (name);
+ mach = arc_get_mach (cpu);
*input_line_pointer = c;
- if (*input_line_pointer != ',')
+ /* If an instruction has already been seen, it's too late. */
+ if (cpu_tables_init_p)
{
- as_bad (_("missing rename string"));
+ as_bad ("\".option\" directive must appear before any instructions");
ignore_rest_of_line ();
return;
}
- ++input_line_pointer;
- SKIP_WHITESPACE ();
- name = input_line_pointer;
- c = get_symbol_end ();
- if (*name == '\0')
+ if (mach == -1)
+ goto bad_cpu;
+
+ if (mach_type_specified_p && mach != arc_mach_type)
{
- *input_line_pointer = c;
- as_bad (_("invalid symbol to rename to"));
+ as_bad ("\".option\" directive conflicts with initial definition");
ignore_rest_of_line ();
return;
}
- new = (char *) xmalloc (strlen (name) + 1);
- strcpy (new, name);
- *input_line_pointer = c;
- symbol_get_tc (sym)->real_name = new;
-
+ else
+ {
+ /* The cpu may have been selected on the command line. */
+ if (mach != arc_mach_type)
+ as_warn ("\".option\" directive overrides command-line (default) value");
+ arc_mach_type = mach;
+ if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, mach))
+ as_fatal ("could not set architecture and machine");
+ mach_type_specified_p = 1;
+ }
demand_empty_rest_of_line ();
+ return;
+
+ bad_cpu:
+ as_bad ("invalid identifier for \".option\"");
+ ignore_rest_of_line ();
}
-#endif
+
/* Turn a string in input_line_pointer into a floating point constant of type
type, and store the appropriate bytes in *litP. The number of LITTLENUMS
emitted is stored in *sizeP.
An error message is returned, or NULL on OK. */
-/* Equal to MAX_PRECISION in atof-ieee.c */
+/* Equal to MAX_PRECISION in atof-ieee.c */
#define MAX_LITTLENUMS 6
char *
md_atof (type, litP, sizeP)
- char type;
- char *litP;
- int *sizeP;
+ char type;
+ char *litP;
+ int *sizeP;
{
int prec;
LITTLENUM_TYPE words[MAX_LITTLENUMS];
@@ -1006,7 +1565,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
- return _("bad call to md_atof");
+ return "bad call to md_atof";
}
t = atof_ieee (input_line_pointer, type, words);
@@ -1037,7 +1596,7 @@ md_number_to_chars (buf, val, n)
number_to_chars_littleendian (buf, val, n);
}
-/* Round up a section size to the appropriate boundary. */
+/* Round up a section size to the appropriate boundary. */
valueT
md_section_align (segment, size)
@@ -1056,7 +1615,8 @@ md_estimate_size_before_relax (fragp, seg)
fragS *fragp ATTRIBUTE_UNUSED;
asection *seg ATTRIBUTE_UNUSED;
{
- abort ();
+ as_fatal (_("md_estimate_size_before_relax\n"));
+ return 1;
}
/* Convert a machine dependent frag. We never generate these. */
@@ -1067,7 +1627,41 @@ md_convert_frag (abfd, sec, fragp)
asection *sec ATTRIBUTE_UNUSED;
fragS *fragp ATTRIBUTE_UNUSED;
{
- abort ();
+ as_fatal (_("md_convert_frag\n"));
+}
+
+void
+arc_code_symbol(expressionP)
+ expressionS *expressionP;
+{
+ if (expressionP->X_op == O_symbol && expressionP->X_add_number == 0
+ /* I think this test is unnecessary but just as a sanity check... */
+ && expressionP->X_op_symbol == NULL)
+ {
+ expressionS two;
+ expressionP->X_op = O_right_shift;
+ two.X_op = O_constant;
+ two.X_add_symbol = two.X_op_symbol = NULL;
+ two.X_add_number = 2;
+ expressionP->X_op_symbol = make_expr_symbol (&two);
+ }
+ /* allow %st(sym1-sym2) */
+ else if (expressionP->X_op == O_subtract && expressionP->X_add_symbol != NULL
+ && expressionP->X_op_symbol != NULL && expressionP->X_add_number == 0)
+ {
+ expressionS two;
+ expressionP->X_add_symbol = make_expr_symbol (expressionP);
+ expressionP->X_op = O_right_shift;
+ two.X_op = O_constant;
+ two.X_add_symbol = two.X_op_symbol = NULL;
+ two.X_add_number = 2;
+ expressionP->X_op_symbol = make_expr_symbol (&two);
+ }
+ else
+ {
+ as_bad ("expression too complex code symbol");
+ return;
+ }
}
/* Parse an operand that is machine-specific.
@@ -1078,58 +1672,56 @@ md_convert_frag (abfd, sec, fragp)
??? We can't create new expression types so we map the %-op's onto the
existing syntax. This means that the user could use the chosen syntax
- to achieve the same effect. Perhaps put a special cookie in X_add_number
- to mark the expression as special. */
+ to achieve the same effect. */
-void
+void
md_operand (expressionP)
expressionS *expressionP;
{
char *p = input_line_pointer;
- if (*p == '%' && strncmp (p, "%st(", 4) == 0)
- {
+ if (*p == '%')
+ if(strncmp (p, "%st(", 4) == 0)
+ {
input_line_pointer += 4;
expression (expressionP);
if (*input_line_pointer != ')')
{
- as_bad (_("missing ')' in %-op"));
+ as_bad ("missing ')' in %%-op");
return;
}
++input_line_pointer;
- if (expressionP->X_op == O_symbol
- && expressionP->X_add_number == 0
- /* I think this test is unnecessary but just as a sanity check... */
- && expressionP->X_op_symbol == NULL)
- {
- expressionS two;
-
- expressionP->X_op = O_right_shift;
- two.X_op = O_constant;
- two.X_add_symbol = two.X_op_symbol = NULL;
- two.X_add_number = 2;
- expressionP->X_op_symbol = make_expr_symbol (&two);
- }
- /* allow %st(sym1-sym2) */
- else if (expressionP->X_op == O_subtract
- && expressionP->X_add_symbol != NULL
- && expressionP->X_op_symbol != NULL
- && expressionP->X_add_number == 0)
- {
- expressionS two;
-
- expressionP->X_add_symbol = make_expr_symbol (expressionP);
- expressionP->X_op = O_right_shift;
- two.X_op = O_constant;
- two.X_add_symbol = two.X_op_symbol = NULL;
- two.X_add_number = 2;
- expressionP->X_op_symbol = make_expr_symbol (&two);
- }
- else
- {
- as_bad (_("expression too complex for %%st"));
- return;
- }
+ arc_code_symbol(expressionP);
+ }
+ else
+ { /* it could be a register */
+ int i,l;
+ struct arc_ext_operand_value *ext_oper = arc_ext_operands;
+ p++;
+
+ while (ext_oper)
+ {
+ l = strlen(ext_oper->operand.name);
+ if(!strncmp(p,ext_oper->operand.name,l) && !isalnum(*(p + l)))
+ {
+ input_line_pointer += l + 1;
+ expressionP->X_op = O_register;
+ expressionP->X_add_number = (int) &ext_oper->operand;
+ return;
+ }
+ ext_oper = ext_oper->next;
+ }
+ for (i = 0; i < arc_reg_names_count; i++)
+ {
+ l = strlen(arc_reg_names[i].name);
+ if(!strncmp(p,arc_reg_names[i].name,l) && !isalnum(*(p + l)))
+ {
+ input_line_pointer += l + 1;
+ expressionP->X_op = O_register;
+ expressionP->X_add_number = (int) &arc_reg_names[i];
+ break;
+ }
+ }
}
}
@@ -1153,10 +1745,24 @@ md_undefined_symbol (name)
void
arc_parse_cons_expression (exp, nbytes)
- expressionS *exp;
- int nbytes ATTRIBUTE_UNUSED;
+ expressionS *exp;
+ unsigned int nbytes ATTRIBUTE_UNUSED;
{
+ char *p = input_line_pointer;
+ int code_symbol_fix = 0;
+
+ for (;! is_end_of_line[(unsigned char) *p]; p++)
+ if (*p == '@' && !strncmp(p,"@h30",4))
+ {
+ code_symbol_fix = 1;
+ strcpy(p,"; ");
+ }
expr (0, exp);
+ if (code_symbol_fix)
+ {
+ arc_code_symbol(exp);
+ input_line_pointer = p;
+ }
}
/* Record a fixup for a cons expression. */
@@ -1191,7 +1797,7 @@ arc_cons_fix_new (frag, where, nbytes, exp)
/* The location from which a PC relative jump should be calculated,
given a PC relative reloc. */
-long
+long
md_pcrel_from (fixP)
fixS *fixP;
{
@@ -1241,13 +1847,13 @@ get_arc_exp_reloc_type (data_p, default_type, exp, expnew)
if (exp->X_op == O_right_shift
&& exp->X_op_symbol != NULL
- && symbol_constant_p (exp->X_op_symbol)
- && S_GET_VALUE (exp->X_op_symbol) == 2
+ && exp->X_op_symbol->sy_value.X_op == O_constant
+ && exp->X_op_symbol->sy_value.X_add_number == 2
&& exp->X_add_number == 0)
{
if (exp->X_add_symbol != NULL
- && (symbol_constant_p (exp->X_add_symbol)
- || symbol_equated_p (exp->X_add_symbol)))
+ && (exp->X_add_symbol->sy_value.X_op == O_constant
+ || exp->X_add_symbol->sy_value.X_op == O_symbol))
{
*expnew = *exp;
expnew->X_op = O_symbol;
@@ -1255,10 +1861,9 @@ get_arc_exp_reloc_type (data_p, default_type, exp, expnew)
return data_p ? BFD_RELOC_ARC_B26 : arc_operand_map['J'];
}
else if (exp->X_add_symbol != NULL
- && (symbol_get_value_expression (exp->X_add_symbol)->X_op
- == O_subtract))
+ && exp->X_add_symbol->sy_value.X_op == O_subtract)
{
- *expnew = *symbol_get_value_expression (exp->X_add_symbol);
+ *expnew = exp->X_add_symbol->sy_value;
return data_p ? BFD_RELOC_ARC_B26 : arc_operand_map['J'];
}
}
@@ -1322,7 +1927,7 @@ md_apply_fix3 (fixP, valueP, seg)
{
/* We can't actually support subtracting a symbol. */
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("expression too complex"));
+ "expression too complex");
}
}
}
@@ -1371,14 +1976,14 @@ md_apply_fix3 (fixP, valueP, seg)
&& operand->shift == 7);
fixP->fx_r_type = BFD_RELOC_ARC_B22_PCREL;
}
- else if (0 && operand->fmt == 'J')
+ else if (operand->fmt == 'J')
{
assert ((operand->flags & ARC_OPERAND_ABSOLUTE_BRANCH) != 0
&& operand->bits == 24
&& operand->shift == 32);
fixP->fx_r_type = BFD_RELOC_ARC_B26;
}
- else if (0 && operand->fmt == 'L')
+ else if (operand->fmt == 'L')
{
assert ((operand->flags & ARC_OPERAND_LIMM) != 0
&& operand->bits == 32
@@ -1388,7 +1993,7 @@ md_apply_fix3 (fixP, valueP, seg)
else
{
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("unresolved expression that must be resolved"));
+ "unresolved expression that must be resolved");
fixP->fx_done = 1;
return 1;
}
@@ -1446,38 +2051,23 @@ tc_gen_reloc (section, fixP)
reloc = (arelent *) xmalloc (sizeof (arelent));
- reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
- *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy);
+ reloc->sym_ptr_ptr = &fixP->fx_addsy->bsym;
reloc->address = fixP->fx_frag->fr_address + fixP->fx_where;
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type);
if (reloc->howto == (reloc_howto_type *) NULL)
{
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("internal error: can't export reloc type %d (`%s')"),
+ "internal error: can't export reloc type %d (`%s')",
fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type));
return NULL;
}
assert (!fixP->fx_pcrel == !reloc->howto->pc_relative);
- reloc->addend = fixP->fx_addnumber;
+/* set addend to account for PC being advanced one insn before the target
+ address is computed, drop fx_addnumber as it is handled elsewhere mlm */
- return reloc;
-}
-
-/* Frobbers. */
-
-#if 0
-/* Set the real name if the .rename pseudo-op was used.
- Return 1 if the symbol should not be included in the symbol table. */
+ reloc->addend = ( fixP->fx_pcrel ? -4 : 0 );
-int
-arc_frob_symbol (sym)
- symbolS *sym;
-{
- if (symbol_get_tc (sym)->real_name != (char *) NULL)
- S_SET_NAME (sym, symbol_get_tc (sym)->real_name);
-
- return 0;
+ return reloc;
}
-#endif
diff --git a/gas/config/tc-arc.h b/gas/config/tc-arc.h
index 091c723..d8da4ec 100644
--- a/gas/config/tc-arc.h
+++ b/gas/config/tc-arc.h
@@ -1,5 +1,5 @@
/* tc-arc.h - Macros and type defines for the ARC.
- Copyright (C) 1994, 1995, 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
Contributed by Doug Evans (dje@cygnus.com).
This file is part of GAS, the GNU Assembler.
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ 02111-1307, USA. */
#define TC_ARC 1
@@ -27,6 +27,9 @@
#define TARGET_ARCH bfd_arch_arc
+#define DIFF_EXPR_OK
+#define REGISTER_PREFIX '%'
+
#ifdef LITTLE_ENDIAN
#undef LITTLE_ENDIAN
#endif
@@ -36,6 +39,7 @@
#endif
#define LITTLE_ENDIAN 1234
+
#define BIG_ENDIAN 4321
/* The endianness of the target format may change based on command
@@ -62,18 +66,3 @@ arc_parse_cons_expression (EXP, NBYTES)
extern void arc_cons_fix_new ();
#define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP) \
arc_cons_fix_new (FRAG, WHERE, NBYTES, EXP)
-
-#if 0
-/* Extra stuff that we need to keep track of for each symbol. */
-struct arc_tc_sy
-{
- /* The real name, if the symbol was renamed. */
- char *real_name;
-};
-
-#define TC_SYMFIELD_TYPE struct arc_tc_sy
-
-/* Finish up the symbol. */
-extern int arc_frob_symbol PARAMS ((symbolS *));
-#define tc_frob_symbol(sym, punt) punt = arc_frob_symbol (sym)
-#endif
diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am
index ac10774..60761a4 100644
--- a/gas/doc/Makefile.am
+++ b/gas/doc/Makefile.am
@@ -17,6 +17,7 @@ asconfig.texi: $(CONFIG).texi
CPU_DOCS = \
c-a29k.texi \
+ c-arc.texi \
c-arm.texi \
c-d10v.texi \
c-h8300.texi \
diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in
index 987ff4d..5f9b258 100644
--- a/gas/doc/Makefile.in
+++ b/gas/doc/Makefile.in
@@ -127,6 +127,7 @@ info_TEXINFOS = as.texinfo gasp.texi
CPU_DOCS = \
c-a29k.texi \
+ c-arc.texi \
c-arm.texi \
c-d10v.texi \
c-h8300.texi \
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index bc0928a..1a706e9 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -208,7 +208,8 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details,
@c am29k has no machine-dependent assembler options
@end ifset
@ifset ARC
- [ -mbig-endian | -mlittle-endian ]
+ [ -marc[5|6|7|8] ]
+ [ -EB | -EL ]
@end ifset
@ifset ARM
[ -m[arm]1 | -m[arm]2 | -m[arm]250 | -m[arm]3 | -m[arm]6 | -m[arm]60 |
@@ -416,17 +417,10 @@ The following options are available when @value{AS} is configured for
an ARC processor.
@table @code
-
-@cindex ARC endianness
-@cindex endianness, ARC
-@cindex big endian output, ARC
-@item -mbig-endian
-Generate ``big endian'' format output.
-
-@cindex little endian output, ARC
-@item -mlittle-endian
-Generate ``little endian'' format output.
-
+@item -marc[5|6|7|8]
+This option selects the core processor variant.
+@item -EB | -EL
+Select either big-endian (-EB) or little-endian (-EL) output.
@end table
@end ifset
@@ -5302,80 +5296,7 @@ subject, see the hardware manufacturer's manual.
@c in both conditional blocks.
@ifset ARC
-@ifset GENERIC
-@page
-@node ARC-Dependent
-@chapter ARC Dependent Features
-@end ifset
-@ifclear GENERIC
-@node Machine Dependencies
-@chapter ARC Dependent Features
-@end ifclear
-
-@cindex ARC support
-@menu
-* ARC-Opts:: Options
-* ARC-Float:: Floating Point
-* ARC-Directives:: Sparc Machine Directives
-@end menu
-
-@node ARC-Opts
-@section Options
-
-@cindex options for ARC
-@cindex ARC options
-@cindex architectures, ARC
-@cindex ARC architectures
-The ARC chip family includes several successive levels (or other
-variants) of chip, using the same core instruction set, but including
-a few additional instructions at each level.
-
-By default, @code{@value{AS}} assumes the core instruction set (ARC
-base). The @code{.cpu} pseudo-op is intended to be used to select
-the variant.
-
-@table @code
-@cindex @code{-mbig-endian} option (ARC)
-@cindex @code{-mlittle-endian} option (ARC)
-@cindex ARC big-endian output
-@cindex ARC little-endian output
-@cindex big-endian output, ARC
-@cindex little-endian output, ARC
-@item -mbig-endian
-@itemx -mlittle-endian
-Any @sc{arc} configuration of @code{@value{AS}} can select big-endian or
-little-endian output at run time (unlike most other @sc{gnu} development
-tools, which must be configured for one or the other). Use
-@samp{-mbig-endian} to select big-endian output, and @samp{-mlittle-endian}
-for little-endian.
-@end table
-
-@node ARC-Float
-@section Floating Point
-
-@cindex floating point, ARC (@sc{ieee})
-@cindex ARC floating point (@sc{ieee})
-The ARC cpu family currently does not have hardware floating point
-support. Software floating point support is provided by @code{GCC}
-and uses @sc{ieee} floating-point numbers.
-
-@node ARC-Directives
-@section ARC Machine Directives
-
-@cindex ARC machine directives
-@cindex machine directives, ARC
-The ARC version of @code{@value{AS}} supports the following additional
-machine directives:
-
-@table @code
-@item .cpu
-@cindex @code{cpu} directive, SPARC
-This must be followed by the desired cpu.
-The ARC is intended to be customizable, @code{.cpu} is used to
-select the desired variant [though currently there are none].
-
-@end table
-
+@include c-arc.texi
@end ifset
@ifset A29K
diff --git a/gas/po/gas.pot b/gas/po/gas.pot
index 423ad9f..4428b64 100644
--- a/gas/po/gas.pot
+++ b/gas/po/gas.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-12-04 16:54-0800\n"
+"POT-Creation-Date: 2001-01-11 12:04-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -439,11 +439,11 @@ msgstr ""
msgid "Symbol `%s' can not be both weak and common"
msgstr ""
-#: config/obj-aout.c:255 config/obj-coff.c:1981
+#: config/obj-aout.c:255 config/obj-coff.c:1982
msgid "unresolved relocation"
msgstr ""
-#: config/obj-aout.c:257 config/obj-coff.c:1983
+#: config/obj-aout.c:257 config/obj-coff.c:1984
#, c-format
msgid "bad relocation: symbol `%s' not in symbol table"
msgstr ""
@@ -453,7 +453,7 @@ msgstr ""
msgid "%s: bad type for weak symbol"
msgstr ""
-#: config/obj-aout.c:458 config/obj-coff.c:2911 write.c:1849
+#: config/obj-aout.c:458 config/obj-coff.c:2913 write.c:1868
#, c-format
msgid "%s: global symbols not supported in common sections"
msgstr ""
@@ -482,7 +482,7 @@ msgstr ""
msgid "Line numbers must be positive integers\n"
msgstr ""
-#: config/obj-coff.c:484 config/obj-coff.c:2326
+#: config/obj-coff.c:484 config/obj-coff.c:2328
msgid ".ln pseudo-op inside .def/.endef: ignored."
msgstr ""
@@ -494,11 +494,11 @@ msgstr ""
msgid ".loc pseudo-op inside .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:622 config/obj-coff.c:2383
+#: config/obj-coff.c:622 config/obj-coff.c:2385
msgid ".def pseudo-op used inside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:668 config/obj-coff.c:2435
+#: config/obj-coff.c:668 config/obj-coff.c:2437
msgid ".endef pseudo-op used outside of .def/.endef: ignored."
msgstr ""
@@ -507,49 +507,49 @@ msgstr ""
msgid "`%s' symbol without preceding function"
msgstr ""
-#: config/obj-coff.c:793 config/obj-coff.c:2510
+#: config/obj-coff.c:793 config/obj-coff.c:2512
#, c-format
msgid "unexpected storage class %d"
msgstr ""
-#: config/obj-coff.c:906 config/obj-coff.c:2617
+#: config/obj-coff.c:906 config/obj-coff.c:2619
msgid ".dim pseudo-op used outside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:926 config/obj-coff.c:2637
+#: config/obj-coff.c:926 config/obj-coff.c:2639
msgid "badly formed .dim directive ignored"
msgstr ""
-#: config/obj-coff.c:977 config/obj-coff.c:2700
+#: config/obj-coff.c:977 config/obj-coff.c:2702
msgid ".size pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:993 config/obj-coff.c:2716
+#: config/obj-coff.c:993 config/obj-coff.c:2718
msgid ".scl pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1011 config/obj-coff.c:2734
+#: config/obj-coff.c:1011 config/obj-coff.c:2736
msgid ".tag pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1030 config/obj-coff.c:2752
+#: config/obj-coff.c:1030 config/obj-coff.c:2754
#, c-format
msgid "tag not found for .tag %s"
msgstr ""
-#: config/obj-coff.c:1045 config/obj-coff.c:2767
+#: config/obj-coff.c:1045 config/obj-coff.c:2769
msgid ".type pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1067 config/obj-coff.c:2789
+#: config/obj-coff.c:1067 config/obj-coff.c:2791
msgid ".val pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1207 config/obj-coff.c:2984
+#: config/obj-coff.c:1207 config/obj-coff.c:2986
msgid "mismatched .eb"
msgstr ""
-#: config/obj-coff.c:1225 config/obj-coff.c:3024
+#: config/obj-coff.c:1225 config/obj-coff.c:3026
msgid "C_EFCN symbol out of scope"
msgstr ""
@@ -561,12 +561,12 @@ msgstr ""
msgid "unsupported section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1452 config/obj-coff.c:3721 config/tc-ppc.c:3918
+#: config/obj-coff.c:1452 config/obj-coff.c:3726 config/tc-ppc.c:3925
#, c-format
msgid "unknown section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1482 config/tc-ppc.c:3936 read.c:2524
+#: config/obj-coff.c:1482 config/tc-ppc.c:3943 read.c:2512
#, c-format
msgid "error setting flags for \"%s\": %s"
msgstr ""
@@ -585,63 +585,63 @@ msgstr ""
msgid "Out of step\n"
msgstr ""
-#: config/obj-coff.c:2242
+#: config/obj-coff.c:2244
msgid "bfd_coff_swap_scnhdr_out failed"
msgstr ""
-#: config/obj-coff.c:2467
+#: config/obj-coff.c:2469
msgid "`.bf' symbol without preceding function\n"
msgstr ""
-#: config/obj-coff.c:3420 config/obj-ieee.c:507 output-file.c:52
+#: config/obj-coff.c:3422 config/obj-ieee.c:507 output-file.c:52
#: output-file.c:119
#, c-format
msgid "FATAL: Can't create %s"
msgstr ""
-#: config/obj-coff.c:3595
+#: config/obj-coff.c:3600
#, c-format
msgid "Can't close %s: %s"
msgstr ""
-#: config/obj-coff.c:3629
+#: config/obj-coff.c:3634
#, c-format
msgid "Too many new sections; can't add \"%s\""
msgstr ""
-#: config/obj-coff.c:4036 config/tc-m88k.c:1257 config/tc-sparc.c:3531
+#: config/obj-coff.c:4041 config/tc-m88k.c:1257 config/tc-sparc.c:3531
msgid "Expected comma after name"
msgstr ""
-#: config/obj-coff.c:4042 read.c:1968
+#: config/obj-coff.c:4047 read.c:1956
msgid "Missing size expression"
msgstr ""
-#: config/obj-coff.c:4048
+#: config/obj-coff.c:4053
#, c-format
msgid "lcomm length (%d.) <0! Ignored."
msgstr ""
-#: config/obj-coff.c:4076 read.c:2202
+#: config/obj-coff.c:4081 read.c:2190
#, c-format
msgid "Symbol %s already defined"
msgstr ""
-#: config/obj-coff.c:4170 config/tc-i960.c:3215
+#: config/obj-coff.c:4176 config/tc-i960.c:3215
#, c-format
msgid "No 'bal' entry point for leafproc %s"
msgstr ""
-#: config/obj-coff.c:4249 write.c:2554
+#: config/obj-coff.c:4255 write.c:2575
#, c-format
msgid "Negative of non-absolute symbol %s"
msgstr ""
-#: config/obj-coff.c:4270 write.c:2568
+#: config/obj-coff.c:4276 write.c:2589
msgid "callj to difference of 2 symbols"
msgstr ""
-#: config/obj-coff.c:4316
+#: config/obj-coff.c:4322
#, c-format
msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
msgstr ""
@@ -649,16 +649,16 @@ msgstr ""
#. This is a COBR instruction. They have only a 13-bit
#. displacement and are only to be used for local branches:
#. flag as error, don't generate relocation.
-#: config/obj-coff.c:4405 config/tc-i960.c:3235 write.c:2712
+#: config/obj-coff.c:4411 config/tc-i960.c:3235 write.c:2733
msgid "can't use COBR format with external label"
msgstr ""
-#: config/obj-coff.c:4484
+#: config/obj-coff.c:4490
#, c-format
msgid "Value of %ld too large for field of %d bytes at 0x%lx"
msgstr ""
-#: config/obj-coff.c:4498 write.c:2802
+#: config/obj-coff.c:4504 write.c:2823
#, c-format
msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
msgstr ""
@@ -675,33 +675,31 @@ msgstr ""
msgid "Expected comma after symbol-name"
msgstr ""
-#: config/obj-elf.c:315 config/tc-arc.c:779 config/tc-sparc.c:3684
+#: config/obj-elf.c:315 config/tc-sparc.c:3684
#, c-format
msgid ".COMMon length (%d.) <0! Ignored."
msgstr ""
-#: config/obj-elf.c:325 config/tc-alpha.c:4327 config/tc-sparc.c:3694
+#: config/obj-elf.c:325 config/tc-alpha.c:4335 config/tc-sparc.c:3694
#: config/tc-v850.c:282
msgid "Ignoring attempt to re-define symbol"
msgstr ""
-#: config/obj-elf.c:333 config/tc-arc.c:797 config/tc-sparc.c:3702
-#: config/tc-v850.c:292
+#: config/obj-elf.c:333 config/tc-sparc.c:3702 config/tc-v850.c:292
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %d."
msgstr ""
-#: config/obj-elf.c:356 config/tc-arc.c:816 config/tc-v850.c:319
+#: config/obj-elf.c:356 config/tc-v850.c:319
msgid "Common alignment negative; 0 assumed"
msgstr ""
-#: config/obj-elf.c:375 config/tc-m32r.c:1296 config/tc-ppc.c:1515
+#: config/obj-elf.c:375 config/tc-m32r.c:1286 config/tc-ppc.c:1518
#: config/tc-v850.c:382
msgid "Common alignment not a power of 2"
msgstr ""
-#: config/obj-elf.c:438 config/tc-arc.c:875 config/tc-sparc.c:3826
-#: config/tc-v850.c:564
+#: config/obj-elf.c:438 config/tc-sparc.c:3826 config/tc-v850.c:564
#, c-format
msgid "bad .common segment %s"
msgstr ""
@@ -979,17 +977,16 @@ msgid "Unknown segment type"
msgstr ""
#. Probably a memory allocation problem? Give up now.
-#: config/tc-a29k.c:330 config/tc-hppa.c:1412 config/tc-mips.c:1028
-#: config/tc-mips.c:1070 config/tc-sparc.c:846
+#: config/tc-a29k.c:330 config/tc-hppa.c:1412 config/tc-mips.c:1030
+#: config/tc-mips.c:1072 config/tc-sparc.c:846
msgid "Broken assembler. No assembly attempted."
msgstr ""
-#: config/tc-a29k.c:375 config/tc-arc.c:535 config/tc-avr.c:1124
-#: config/tc-d10v.c:532 config/tc-d30v.c:552 config/tc-h8300.c:296
-#: config/tc-h8500.c:294 config/tc-mcore.c:655 config/tc-mn10200.c:954
-#: config/tc-mn10300.c:1335 config/tc-ppc.c:1971 config/tc-sh.c:838
-#: config/tc-tic80.c:282 config/tc-v850.c:2076 config/tc-w65.c:248
-#: config/tc-z8k.c:336
+#: config/tc-a29k.c:375 config/tc-avr.c:1124 config/tc-d10v.c:532
+#: config/tc-d30v.c:552 config/tc-h8300.c:296 config/tc-h8500.c:294
+#: config/tc-mcore.c:655 config/tc-mn10200.c:954 config/tc-mn10300.c:1335
+#: config/tc-ppc.c:1974 config/tc-sh.c:838 config/tc-tic80.c:282
+#: config/tc-v850.c:2076 config/tc-w65.c:248 config/tc-z8k.c:336
msgid "missing operand"
msgstr ""
@@ -1090,405 +1087,287 @@ msgid ""
"-H\t\t\tshow new symbol after hash truncation\n"
msgstr ""
-#: config/tc-alpha.c:1301
+#: config/tc-alpha.c:1305
#, c-format
msgid "unhandled relocation type %s"
msgstr ""
-#: config/tc-alpha.c:1314
+#: config/tc-alpha.c:1318
msgid "non-absolute expression in constant field"
msgstr ""
-#: config/tc-alpha.c:1328
+#: config/tc-alpha.c:1332
#, c-format
msgid "type %d reloc done?\n"
msgstr ""
-#: config/tc-alpha.c:1379 config/tc-alpha.c:1386 config/tc-mips.c:7353
+#: config/tc-alpha.c:1383 config/tc-alpha.c:1390 config/tc-mips.c:7356
msgid "Used $at without \".set noat\""
msgstr ""
-#: config/tc-alpha.c:1564
+#: config/tc-alpha.c:1572
#, c-format
msgid "cannot represent `%s' relocation in object file"
msgstr ""
-#: config/tc-alpha.c:1571
+#: config/tc-alpha.c:1579
#, c-format
msgid "internal error? cannot generate `%s' relocation"
msgstr ""
-#: config/tc-alpha.c:1625
+#: config/tc-alpha.c:1633
#, c-format
msgid "frame reg expected, using $%d."
msgstr ""
-#: config/tc-alpha.c:1750
+#: config/tc-alpha.c:1758
#, c-format
msgid "No !literal!%d was found"
msgstr ""
#. only support one relocation op per insn
-#: config/tc-alpha.c:1938
+#: config/tc-alpha.c:1946
msgid "More than one relocation op per insn"
msgstr ""
-#: config/tc-alpha.c:1955
+#: config/tc-alpha.c:1963
msgid "No relocation operand"
msgstr ""
-#: config/tc-alpha.c:1961
+#: config/tc-alpha.c:1969
#, c-format
msgid "No !sequence-number after !%s"
msgstr ""
-#: config/tc-alpha.c:1974
+#: config/tc-alpha.c:1982
#, c-format
msgid "Unknown relocation operand: !%s"
msgstr ""
-#: config/tc-alpha.c:1987
+#: config/tc-alpha.c:1995
#, c-format
msgid "Bad sequence number: !%s!%s"
msgstr ""
-#: config/tc-alpha.c:2338
+#: config/tc-alpha.c:2346
#, c-format
msgid "operand out of range (%s not between %d and %d)"
msgstr ""
-#: config/tc-alpha.c:2437 config/tc-arc.c:548 config/tc-d10v.c:621
-#: config/tc-d30v.c:640 config/tc-mn10200.c:1009 config/tc-mn10300.c:1406
-#: config/tc-ppc.c:1937 config/tc-ppc.c:2045 config/tc-ppc.c:2057
-#: config/tc-v850.c:1856 config/tc-v850.c:1879 config/tc-v850.c:2099
+#: config/tc-alpha.c:2445 config/tc-d10v.c:621 config/tc-d30v.c:640
+#: config/tc-mn10200.c:1009 config/tc-mn10300.c:1406 config/tc-ppc.c:1940
+#: config/tc-ppc.c:2048 config/tc-ppc.c:2060 config/tc-v850.c:1856
+#: config/tc-v850.c:1879 config/tc-v850.c:2099
msgid "too many fixups"
msgstr ""
-#: config/tc-alpha.c:2652 config/tc-alpha.c:2721
+#: config/tc-alpha.c:2660 config/tc-alpha.c:2729
#, c-format
msgid "inappropriate arguments for opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:2654 config/tc-alpha.c:2723
+#: config/tc-alpha.c:2662 config/tc-alpha.c:2731
#, c-format
msgid "opcode `%s' not supported for target %s"
msgstr ""
-#: config/tc-alpha.c:2658 config/tc-alpha.c:2726 config/tc-avr.c:1090
+#: config/tc-alpha.c:2666 config/tc-alpha.c:2734 config/tc-avr.c:1090
#, c-format
msgid "unknown opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:2698 config/tc-alpha.c:2765 config/tc-alpha.c:3276
-#: config/tc-alpha.c:3336 config/tc-alpha.c:3388 config/tc-alpha.c:3463
-#: config/tc-alpha.c:3548 config/tc-alpha.c:3674 config/tc-alpha.c:3851
-#: config/tc-alpha.c:3908 config/tc-alpha.c:4018 config/tc-alpha.c:4125
-#: config/tc-alpha.c:4202
+#: config/tc-alpha.c:2706 config/tc-alpha.c:2773 config/tc-alpha.c:3284
+#: config/tc-alpha.c:3344 config/tc-alpha.c:3396 config/tc-alpha.c:3471
+#: config/tc-alpha.c:3556 config/tc-alpha.c:3682 config/tc-alpha.c:3859
+#: config/tc-alpha.c:3916 config/tc-alpha.c:4026 config/tc-alpha.c:4133
+#: config/tc-alpha.c:4210
#, c-format
msgid "Cannot use !%s!%d with %s"
msgstr ""
-#: config/tc-alpha.c:2786
+#: config/tc-alpha.c:2794
msgid "can not resolve expression"
msgstr ""
-#: config/tc-alpha.c:2928 config/tc-alpha.c:3120
+#: config/tc-alpha.c:2936 config/tc-alpha.c:3128
msgid "overflow in literal (.lita) table"
msgstr ""
-#: config/tc-alpha.c:2935 config/tc-alpha.c:2958 config/tc-alpha.c:3133
-#: config/tc-alpha.c:3477 config/tc-alpha.c:3555 config/tc-alpha.c:3603
-#: config/tc-alpha.c:3703 config/tc-alpha.c:3928 config/tc-alpha.c:4040
+#: config/tc-alpha.c:2943 config/tc-alpha.c:2966 config/tc-alpha.c:3141
+#: config/tc-alpha.c:3485 config/tc-alpha.c:3563 config/tc-alpha.c:3611
+#: config/tc-alpha.c:3711 config/tc-alpha.c:3936 config/tc-alpha.c:4048
msgid "macro requires $at register while noat in effect"
msgstr ""
-#: config/tc-alpha.c:2937 config/tc-alpha.c:2960 config/tc-alpha.c:3135
+#: config/tc-alpha.c:2945 config/tc-alpha.c:2968 config/tc-alpha.c:3143
msgid "macro requires $at while $at in use"
msgstr ""
-#: config/tc-alpha.c:3082 expr.c:83 read.c:3176
+#: config/tc-alpha.c:3090 expr.c:83 read.c:3164
msgid "bignum invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:3084 expr.c:85 read.c:3178 read.c:3511 read.c:4409
+#: config/tc-alpha.c:3092 expr.c:85 read.c:3166 read.c:3499 read.c:4397
msgid "floating point number invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:3089
+#: config/tc-alpha.c:3097
msgid "can't handle expression"
msgstr ""
-#: config/tc-alpha.c:3126
+#: config/tc-alpha.c:3134
msgid "overflow in literal (.lit8) table"
msgstr ""
-#: config/tc-alpha.c:3298
+#: config/tc-alpha.c:3306
#, c-format
msgid "bad instruction format for lda !%s!%ld"
msgstr ""
-#: config/tc-alpha.c:4298 config/tc-ppc.c:1464 config/tc-ppc.c:3682
-#: read.c:1381
+#: config/tc-alpha.c:4306 config/tc-ppc.c:1467 config/tc-ppc.c:3689
+#: read.c:1369
#, c-format
msgid ".COMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-alpha.c:4336 config/tc-alpha.c:4345 config/tc-ppc.c:3719
-#: read.c:1405
+#: config/tc-alpha.c:4344 config/tc-alpha.c:4353 config/tc-ppc.c:3726
+#: read.c:1393
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-alpha.c:4447 ecoff.c:3087
+#: config/tc-alpha.c:4455 ecoff.c:3087
msgid ".ent directive has no name"
msgstr ""
-#: config/tc-alpha.c:4455
+#: config/tc-alpha.c:4463
msgid "nested .ent directives"
msgstr ""
-#: config/tc-alpha.c:4491 ecoff.c:3035
+#: config/tc-alpha.c:4499 ecoff.c:3035
msgid ".end directive has no name"
msgstr ""
-#: config/tc-alpha.c:4500
+#: config/tc-alpha.c:4508
msgid ".end directive names different symbol than .ent"
msgstr ""
-#: config/tc-alpha.c:4577
+#: config/tc-alpha.c:4585
#, c-format
msgid "Invalid argument %d to .prologue."
msgstr ""
-#: config/tc-alpha.c:4669
+#: config/tc-alpha.c:4677
msgid "ECOFF debugging is disabled."
msgstr ""
-#: config/tc-alpha.c:4690
+#: config/tc-alpha.c:4698
msgid "Unknown section directive"
msgstr ""
-#: config/tc-alpha.c:4726
+#: config/tc-alpha.c:4734
msgid ".ent directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4753
+#: config/tc-alpha.c:4761
msgid "Bad .frame directive 1./2. param"
msgstr ""
-#: config/tc-alpha.c:4765
+#: config/tc-alpha.c:4773
msgid "Bad .frame directive 3./4. param"
msgstr ""
-#: config/tc-alpha.c:4790
+#: config/tc-alpha.c:4798
msgid ".pdesc directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4798
+#: config/tc-alpha.c:4806
msgid ".pdesc has no matching .ent"
msgstr ""
-#: config/tc-alpha.c:4809
+#: config/tc-alpha.c:4817
msgid ".pdesc directive has no entry symbol"
msgstr ""
-#: config/tc-alpha.c:4822
+#: config/tc-alpha.c:4830
msgid "No comma after .pdesc <entryname>"
msgstr ""
-#: config/tc-alpha.c:4845
+#: config/tc-alpha.c:4853
msgid "unknown procedure kind"
msgstr ""
-#: config/tc-alpha.c:4939
+#: config/tc-alpha.c:4947
msgid ".name directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4947
+#: config/tc-alpha.c:4955
msgid ".name directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4981
+#: config/tc-alpha.c:4989
msgid "No symbol after .linkage"
msgstr ""
-#: config/tc-alpha.c:5009
+#: config/tc-alpha.c:5017
msgid "No symbol after .code_address"
msgstr ""
-#: config/tc-alpha.c:5042 ecoff.c:3253
+#: config/tc-alpha.c:5050 ecoff.c:3253
msgid "Bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:5063 ecoff.c:3183
+#: config/tc-alpha.c:5071 ecoff.c:3183
msgid "Bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:5233 config/tc-arm.c:1593 read.c:2162 read.c:2749
+#: config/tc-alpha.c:5241 config/tc-arm.c:1593 read.c:2150 read.c:2737
#: stabs.c:464
#, c-format
msgid "Expected comma after name \"%s\""
msgstr ""
#. *symbol_get_obj (symbolP) = (signed char) temp;
-#: config/tc-alpha.c:5244
+#: config/tc-alpha.c:5252
#, c-format
msgid "unhandled: .proc %s,%d"
msgstr ""
-#: config/tc-alpha.c:5279
+#: config/tc-alpha.c:5287
#, c-format
msgid "Tried to .set unrecognized mode `%s'"
msgstr ""
#. not fatal, but it might not work in the end
-#: config/tc-alpha.c:5296
+#: config/tc-alpha.c:5304
msgid "File overrides no-base-register option."
msgstr ""
-#: config/tc-alpha.c:5313
+#: config/tc-alpha.c:5321
#, c-format
msgid "Bad base register, using $%d."
msgstr ""
-#: config/tc-alpha.c:5335
+#: config/tc-alpha.c:5343
#, c-format
msgid "Alignment too large: %d. assumed"
msgstr ""
-#: config/tc-alpha.c:5339 config/tc-d30v.c:2219
+#: config/tc-alpha.c:5347 config/tc-d30v.c:2219
msgid "Alignment negative: 0 assumed"
msgstr ""
-#: config/tc-alpha.c:5654
+#: config/tc-alpha.c:5662
#, c-format
msgid "Chose GP value of %lx\n"
msgstr ""
-#: config/tc-arc.c:138
-msgid ""
-"ARC options:\n"
-"-EB\t\t\tgenerate big endian output\n"
-"-EL\t\t\tgenerate little endian output\n"
-msgstr ""
-
-#: config/tc-arc.c:156 config/tc-arc.c:179 config/tc-arc.c:921
-#: config/tc-hppa.c:1372 config/tc-hppa.c:6839 config/tc-hppa.c:6845
-#: config/tc-hppa.c:6851 config/tc-hppa.c:6857 config/tc-mn10300.c:924
-#: config/tc-mn10300.c:2133
-msgid "could not set architecture and machine"
-msgstr ""
-
-#: config/tc-arc.c:176
-msgid "virtual memory exhausted"
-msgstr ""
-
-#: config/tc-arc.c:255 config/tc-mn10200.c:1374 config/tc-mn10300.c:2045
-#: config/tc-ppc.c:1221 config/tc-v850.c:1656
-#, c-format
-msgid "operand out of range (%s not between %ld and %ld)"
-msgstr ""
-
-#: config/tc-arc.c:390
-#, c-format
-msgid "unknown syntax format character `%c'"
-msgstr ""
-
-#: config/tc-arc.c:489
-msgid "too many suffixes"
-msgstr ""
-
-#: config/tc-arc.c:533 config/tc-d10v.c:530 config/tc-d30v.c:550
-#: config/tc-mn10200.c:951 config/tc-mn10300.c:1332 config/tc-ppc.c:1969
-#: config/tc-tic80.c:278 config/tc-v850.c:2073
-msgid "illegal operand"
-msgstr ""
-
-#: config/tc-arc.c:620 config/tc-mn10200.c:1050 config/tc-mn10300.c:1476
-#: config/tc-ppc.c:2094 config/tc-v850.c:2152
-#, c-format
-msgid "junk at end of line: `%s'"
-msgstr ""
-
-#: config/tc-arc.c:659
-msgid "8 byte instruction in delay slot"
-msgstr ""
-
-#: config/tc-arc.c:661
-msgid "8 byte jump instruction with delay slot"
-msgstr ""
-
-#: config/tc-arc.c:669
-msgid "conditional branch follows set of flags"
-msgstr ""
-
-#: config/tc-arc.c:748 config/tc-arm.c:7860
-#, c-format
-msgid "bad instruction `%s'"
-msgstr ""
-
-#: config/tc-arc.c:772
-msgid "expected comma after symbol-name"
-msgstr ""
-
-#: config/tc-arc.c:789
-msgid "ignoring attempt to re-define symbol"
-msgstr ""
-
-#: config/tc-arc.c:804
-msgid "expected comma after common length"
-msgstr ""
-
-#: config/tc-arc.c:896
-msgid ".cpu command must appear before any instructions"
-msgstr ""
-
-#: config/tc-arc.c:915
-msgid ".cpu conflicts with previous value"
-msgstr ""
-
-#: config/tc-arc.c:926
-msgid "bad .cpu op"
-msgstr ""
-
-#: config/tc-arc.c:950 config/tc-ppc.c:2742
-msgid "missing rename string"
-msgstr ""
-
-#: config/tc-arc.c:962
-msgid "invalid symbol to rename to"
-msgstr ""
-
-#: config/tc-arc.c:1009 config/tc-avr.c:372 config/tc-d10v.c:313
-#: config/tc-d30v.c:366 config/tc-mips.c:8785 config/tc-mn10200.c:375
-#: config/tc-pj.c:356 config/tc-ppc.c:4511 config/tc-sh.c:2058
-#: config/tc-v850.c:1291
-msgid "bad call to md_atof"
-msgstr ""
-
-#: config/tc-arc.c:1096
-#, c-format
-msgid "missing ')' in %-op"
-msgstr ""
-
-#: config/tc-arc.c:1130
-msgid "expression too complex for %%st"
-msgstr ""
-
-#: config/tc-arc.c:1325 config/tc-arm.c:4569 config/tc-avr.c:852
-#: config/tc-cris.c:2733 config/tc-d10v.c:1558 config/tc-d30v.c:1865
-#: config/tc-mips.c:3227 config/tc-mips.c:4159 config/tc-mips.c:4944
-#: config/tc-mips.c:5490 config/tc-ppc.c:4847 config/tc-v850.c:2385
-msgid "expression too complex"
+#: config/tc-arc.c:1618 config/tc-arm.c:7532
+msgid "md_estimate_size_before_relax\n"
msgstr ""
-#: config/tc-arc.c:1391 config/tc-ppc.c:4949 config/tc-v850.c:2431
-msgid "unresolved expression that must be resolved"
-msgstr ""
-
-#: config/tc-arc.c:1456 config/tc-sparc.c:3380
-#, c-format
-msgid "internal error: can't export reloc type %d (`%s')"
+#: config/tc-arc.c:1630
+msgid "md_convert_frag\n"
msgstr ""
#: config/tc-arm.c:1156
@@ -1519,16 +1398,16 @@ msgstr ""
msgid "Invalid syntax for .req directive."
msgstr ""
-#: config/tc-arm.c:1506 config/tc-mips.c:9909 read.c:2047
+#: config/tc-arm.c:1506 config/tc-mips.c:9916 read.c:2035
#, c-format
msgid "Alignment too large: %d. assumed."
msgstr ""
-#: config/tc-arm.c:1509 read.c:2052
+#: config/tc-arm.c:1509 read.c:2040
msgid "Alignment negative. 0 assumed."
msgstr ""
-#: config/tc-arm.c:1643 config/tc-m32r.c:427 read.c:2807 read.c:4869
+#: config/tc-arm.c:1643 config/tc-m32r.c:417 read.c:2795 read.c:4857
#, c-format
msgid "symbol `%s' already defined"
msgstr ""
@@ -1801,6 +1680,13 @@ msgstr ""
msgid "invalid register mask"
msgstr ""
+#: config/tc-arm.c:4569 config/tc-avr.c:852 config/tc-cris.c:2733
+#: config/tc-d10v.c:1560 config/tc-d30v.c:1865 config/tc-mips.c:3230
+#: config/tc-mips.c:4162 config/tc-mips.c:4947 config/tc-mips.c:5493
+#: config/tc-ppc.c:4854 config/tc-v850.c:2385
+msgid "expression too complex"
+msgstr ""
+
#: config/tc-arm.c:4608
msgid "r15 not allowed as base register"
msgstr ""
@@ -1978,7 +1864,7 @@ msgstr ""
msgid "out of range branch"
msgstr ""
-#: config/tc-arm.c:7095 config/tc-arm.c:7111 config/tc-mips.c:9736
+#: config/tc-arm.c:7095 config/tc-arm.c:7111 config/tc-mips.c:9743
msgid "Branch out of range"
msgstr ""
@@ -2061,15 +1947,11 @@ msgstr ""
msgid "Cannot represent %s relocation in this object file format"
msgstr ""
-#: config/tc-arm.c:7514 config/tc-mips.c:11255 config/tc-sh.c:3177
+#: config/tc-arm.c:7514 config/tc-mips.c:11261 config/tc-sh.c:3177
#, c-format
msgid "Can not represent %s relocation in this object file format"
msgstr ""
-#: config/tc-arm.c:7532
-msgid "md_estimate_size_before_relax\n"
-msgstr ""
-
#: config/tc-arm.c:7611
#, c-format
msgid "No operator -- statement `%s'\n"
@@ -2118,6 +2000,11 @@ msgstr ""
msgid "ignoring incomplete .req pseuso op"
msgstr ""
+#: config/tc-arm.c:7860
+#, c-format
+msgid "bad instruction `%s'"
+msgstr ""
+
#: config/tc-arm.c:8035
#, c-format
msgid "Unrecognised APCS switch -m%s"
@@ -2214,6 +2101,12 @@ msgstr ""
msgid "redefinition of mcu type `%s' to `%s'"
msgstr ""
+#: config/tc-avr.c:372 config/tc-d10v.c:313 config/tc-d30v.c:366
+#: config/tc-mips.c:8789 config/tc-mn10200.c:375 config/tc-pj.c:356
+#: config/tc-ppc.c:4518 config/tc-sh.c:2058 config/tc-v850.c:1291
+msgid "bad call to md_atof"
+msgstr ""
+
#: config/tc-avr.c:435
msgid "constant value required"
msgstr ""
@@ -2294,7 +2187,7 @@ msgstr ""
msgid "operand out of range: %ld"
msgstr ""
-#: config/tc-avr.c:1008 config/tc-d10v.c:1629 config/tc-d30v.c:1990
+#: config/tc-avr.c:1008 config/tc-d10v.c:1631 config/tc-d30v.c:1990
#, c-format
msgid "line %d: unknown relocation type: 0x%x"
msgstr ""
@@ -2303,14 +2196,14 @@ msgstr ""
msgid "only constant expression allowed"
msgstr ""
-#: config/tc-avr.c:1060 config/tc-d10v.c:1493 config/tc-d30v.c:1807
-#: config/tc-mn10200.c:1254 config/tc-mn10300.c:1810 config/tc-ppc.c:5154
+#: config/tc-avr.c:1060 config/tc-d10v.c:1495 config/tc-d30v.c:1807
+#: config/tc-mn10200.c:1254 config/tc-mn10300.c:1810 config/tc-ppc.c:5161
#: config/tc-v850.c:2301
#, c-format
msgid "reloc %d not supported by object file format"
msgstr ""
-#: config/tc-avr.c:1084 config/tc-d10v.c:1100 config/tc-d10v.c:1114
+#: config/tc-avr.c:1084 config/tc-d10v.c:1102 config/tc-d10v.c:1116
#: config/tc-h8300.c:1239 config/tc-h8500.c:1098 config/tc-mcore.c:988
#: config/tc-pj.c:265 config/tc-sh.c:1640 config/tc-z8k.c:1195
msgid "can't find opcode "
@@ -2521,6 +2414,12 @@ msgid ""
" instructions together.\n"
msgstr ""
+#: config/tc-d10v.c:530 config/tc-d30v.c:550 config/tc-mn10200.c:951
+#: config/tc-mn10300.c:1332 config/tc-ppc.c:1972 config/tc-tic80.c:278
+#: config/tc-v850.c:2073
+msgid "illegal operand"
+msgstr ""
+
#: config/tc-d10v.c:573 config/tc-d10v.c:655 config/tc-d30v.c:656
#, c-format
msgid "operand out of range: %d"
@@ -2573,32 +2472,32 @@ msgstr ""
msgid "unknown execution type passed to write_2_short()"
msgstr ""
-#: config/tc-d10v.c:1128 config/tc-d10v.c:1149 config/tc-d30v.c:1411
+#: config/tc-d10v.c:1130 config/tc-d10v.c:1151 config/tc-d30v.c:1411
msgid "Unable to mix instructions as specified"
msgstr ""
-#: config/tc-d10v.c:1196 config/tc-d30v.c:1548
+#: config/tc-d10v.c:1198 config/tc-d30v.c:1548
#, c-format
msgid "unknown opcode: %s"
msgstr ""
-#: config/tc-d10v.c:1278 config/tc-d10v.c:1449 config/tc-tic80.c:535
+#: config/tc-d10v.c:1280 config/tc-d10v.c:1451 config/tc-tic80.c:535
msgid "bad opcode or operands"
msgstr ""
-#: config/tc-d10v.c:1351 config/tc-m68k.c:4286
+#: config/tc-d10v.c:1353 config/tc-m68k.c:4286
msgid "value out of range"
msgstr ""
-#: config/tc-d10v.c:1424
+#: config/tc-d10v.c:1426
msgid "illegal operand - register name found where none expected"
msgstr ""
-#: config/tc-d10v.c:1460 config/tc-tic80.c:546
+#: config/tc-d10v.c:1462 config/tc-tic80.c:546
msgid "Register number must be EVEN"
msgstr ""
-#: config/tc-d10v.c:1609
+#: config/tc-d10v.c:1611
#, c-format
msgid "line %d: rep or repi must include at least 4 instructions"
msgstr ""
@@ -2754,11 +2653,11 @@ msgstr ""
msgid "Instruction %s not allowed in a delay slot."
msgstr ""
-#: config/tc-fr30.c:380 config/tc-m32r.c:1565
+#: config/tc-fr30.c:380 config/tc-m32r.c:1555
msgid "Addend to unresolved symbol not on word boundary."
msgstr ""
-#: config/tc-fr30.c:538 config/tc-i960.c:772 config/tc-m32r.c:1874
+#: config/tc-fr30.c:538 config/tc-i960.c:772 config/tc-m32r.c:1864
msgid "Bad call to md_atof()"
msgstr ""
@@ -2834,7 +2733,7 @@ msgstr ""
msgid "invalid operands"
msgstr ""
-#: config/tc-h8300.c:1250 config/tc-h8500.c:1104 config/tc-mips.c:7981
+#: config/tc-h8300.c:1250 config/tc-h8500.c:1104 config/tc-mips.c:7984
#: config/tc-sh.c:1877 config/tc-w65.c:740 config/tc-z8k.c:1205
msgid "unknown opcode"
msgstr ""
@@ -2939,6 +2838,12 @@ msgstr ""
msgid "Invalid field selector. Assuming F%%."
msgstr ""
+#: config/tc-hppa.c:1372 config/tc-hppa.c:6839 config/tc-hppa.c:6845
+#: config/tc-hppa.c:6851 config/tc-hppa.c:6857 config/tc-mn10300.c:924
+#: config/tc-mn10300.c:2133
+msgid "could not set architecture and machine"
+msgstr ""
+
#: config/tc-hppa.c:1378
msgid "-R option not supported on this target."
msgstr ""
@@ -3183,7 +3088,7 @@ msgstr ""
msgid ".REG expression must be a register"
msgstr ""
-#: config/tc-hppa.c:6442 read.c:4740
+#: config/tc-hppa.c:6442 read.c:4728
msgid "bad or irreducible absolute expression; zero assumed"
msgstr ""
@@ -3332,304 +3237,344 @@ msgstr ""
msgid "No memory for symbol name."
msgstr ""
-#: config/tc-i386.c:517
+#: config/tc-i386.c:581
#, c-format
msgid "%s shortened to %s"
msgstr ""
-#: config/tc-i386.c:569
+#: config/tc-i386.c:636
msgid "same type of prefix used twice"
msgstr ""
-#: config/tc-i386.c:612
+#: config/tc-i386.c:654
+msgid "64bit mode not supported on this CPU."
+msgstr ""
+
+#: config/tc-i386.c:658
+msgid "32bit mode not supported on this CPU."
+msgstr ""
+
+#: config/tc-i386.c:691
msgid "bad argument to syntax directive."
msgstr ""
-#: config/tc-i386.c:655
+#: config/tc-i386.c:734
#, c-format
msgid "no such architecture: `%s'"
msgstr ""
-#: config/tc-i386.c:660
+#: config/tc-i386.c:739
msgid "missing cpu architecture"
msgstr ""
-#: config/tc-i386.c:733 config/tc-m68k.c:3802
+#: config/tc-i386.c:812 config/tc-i386.c:835 config/tc-m68k.c:3802
#, c-format
msgid "Internal Error: Can't hash %s: %s"
msgstr ""
-#: config/tc-i386.c:961
-msgid "Unknown"
+#: config/tc-i386.c:1088
+msgid "There are no unsigned pc-relative relocations"
msgstr ""
-#: config/tc-i386.c:1010 config/tc-i386.c:4060
+#: config/tc-i386.c:1095 config/tc-i386.c:4622
#, c-format
msgid "can not do %d byte pc-relative relocation"
msgstr ""
-#: config/tc-i386.c:1020 config/tc-i386.c:4074
+#: config/tc-i386.c:1112
#, c-format
-msgid "can not do %d byte relocation"
+msgid "can not do %s %d byte relocation"
msgstr ""
-#: config/tc-i386.c:1122 config/tc-i386.c:1204
+#: config/tc-i386.c:1221 config/tc-i386.c:1314
#, c-format
msgid "no such instruction: `%s'"
msgstr ""
-#: config/tc-i386.c:1131
+#: config/tc-i386.c:1230
#, c-format
msgid "invalid character %s in mnemonic"
msgstr ""
-#: config/tc-i386.c:1138
+#: config/tc-i386.c:1237
msgid "expecting prefix; got nothing"
msgstr ""
-#: config/tc-i386.c:1140
+#: config/tc-i386.c:1239
msgid "expecting mnemonic; got nothing"
msgstr ""
-#: config/tc-i386.c:1158
+#: config/tc-i386.c:1257
#, c-format
msgid "redundant %s prefix"
msgstr ""
-#: config/tc-i386.c:1214
+#: config/tc-i386.c:1325
#, c-format
msgid "`%s' is not supported on `%s'"
msgstr ""
-#: config/tc-i386.c:1219
+#: config/tc-i386.c:1330
msgid "use .code16 to ensure correct addressing mode"
msgstr ""
-#: config/tc-i386.c:1227
+#: config/tc-i386.c:1338
#, c-format
msgid "expecting string instruction after `%s'"
msgstr ""
-#: config/tc-i386.c:1248
+#: config/tc-i386.c:1359
#, c-format
msgid "invalid character %s before operand %d"
msgstr ""
-#: config/tc-i386.c:1262
+#: config/tc-i386.c:1373
#, c-format
msgid "unbalanced parenthesis in operand %d."
msgstr ""
-#: config/tc-i386.c:1265
+#: config/tc-i386.c:1376
#, c-format
msgid "unbalanced brackets in operand %d."
msgstr ""
-#: config/tc-i386.c:1274
+#: config/tc-i386.c:1385
#, c-format
msgid "invalid character %s in operand %d"
msgstr ""
-#: config/tc-i386.c:1301
+#: config/tc-i386.c:1412
#, c-format
msgid "spurious operands; (%d operands/instruction max)"
msgstr ""
-#: config/tc-i386.c:1324
+#: config/tc-i386.c:1435
msgid "expecting operand after ','; got nothing"
msgstr ""
-#: config/tc-i386.c:1329
+#: config/tc-i386.c:1440
msgid "expecting operand before ','; got nothing"
msgstr ""
#. We found no match.
-#: config/tc-i386.c:1607
+#: config/tc-i386.c:1782
#, c-format
msgid "suffix or operands invalid for `%s'"
msgstr ""
-#: config/tc-i386.c:1618
+#: config/tc-i386.c:1793
#, c-format
msgid "indirect %s without `*'"
msgstr ""
#. Warn them that a data or address size prefix doesn't
#. affect assembly of the next line of code.
-#: config/tc-i386.c:1626
+#: config/tc-i386.c:1801
#, c-format
msgid "stand-alone `%s' prefix"
msgstr ""
-#: config/tc-i386.c:1662 config/tc-i386.c:1677
+#: config/tc-i386.c:1837 config/tc-i386.c:1852
msgid "`%s' operand %d must use `%%es' segment"
msgstr ""
-#: config/tc-i386.c:1745 config/tc-i386.c:1788 config/tc-i386.c:1816
+#: config/tc-i386.c:1867
+msgid "Extended register `%%%s' available only in 64bit mode."
+msgstr ""
+
+#. Prohibit these changes in the 64bit mode, since
+#. the lowering is more complicated.
+#: config/tc-i386.c:1938 config/tc-i386.c:1989 config/tc-i386.c:2004
+#: config/tc-i386.c:2032 config/tc-i386.c:2060
+msgid "Incorrect register `%%%s' used with`%c' suffix"
+msgstr ""
+
+#: config/tc-i386.c:1944 config/tc-i386.c:1994 config/tc-i386.c:2065
msgid "using `%%%s' instead of `%%%s' due to `%c' suffix"
msgstr ""
-#: config/tc-i386.c:1758 config/tc-i386.c:1776 config/tc-i386.c:1804
+#: config/tc-i386.c:1957 config/tc-i386.c:1975 config/tc-i386.c:2019
+#: config/tc-i386.c:2046
msgid "`%%%s' not allowed with `%s%c'"
msgstr ""
-#: config/tc-i386.c:1852 config/tc-i386.c:1872
+#: config/tc-i386.c:2106
msgid "no instruction mnemonic suffix given; can't determine immediate size"
msgstr ""
-#: config/tc-i386.c:1897
+#: config/tc-i386.c:2132
+#, c-format
+msgid ""
+"no instruction mnemonic suffix given; can't determine immediate size %x %c"
+msgstr ""
+
+#: config/tc-i386.c:2157
msgid ""
"no instruction mnemonic suffix given and no register operands; can't size "
"instruction"
msgstr ""
+#: config/tc-i386.c:2205
+msgid "64bit operations available only in 64bit modes."
+msgstr ""
+
#. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:1999
+#: config/tc-i386.c:2273
msgid "translating to `%s %%%s,%%%s'"
msgstr ""
#. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:2006
+#: config/tc-i386.c:2280
msgid "translating to `%s %%%s'"
msgstr ""
-#: config/tc-i386.c:2222
+#: config/tc-i386.c:2551
msgid "you can't `pop %%cs'"
msgstr ""
#. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:2253
+#: config/tc-i386.c:2584
#, c-format
msgid "translating to `%sp'"
msgstr ""
-#: config/tc-i386.c:2302 config/tc-i386.c:2365 config/tc-i386.c:2407
+#: config/tc-i386.c:2627
+msgid ""
+"Can't encode registers '%%%s' in the instruction requiring REX prefix.\n"
+msgstr ""
+
+#: config/tc-i386.c:2679 config/tc-i386.c:2751 config/tc-i386.c:2798
msgid "skipping prefixes on this instruction"
msgstr ""
-#: config/tc-i386.c:2423
+#: config/tc-i386.c:2819
msgid "16-bit jump out of range"
msgstr ""
-#: config/tc-i386.c:2432
+#: config/tc-i386.c:2828
#, c-format
msgid "can't handle non absolute segment in `%s'"
msgstr ""
-#: config/tc-i386.c:2650
+#: config/tc-i386.c:3085
msgid "only 1 or 2 immediate operands are allowed"
msgstr ""
-#: config/tc-i386.c:2680 config/tc-i386.c:2899
+#: config/tc-i386.c:3115 config/tc-i386.c:3353
msgid "GOT relocations not supported in 16 bit mode"
msgstr ""
-#: config/tc-i386.c:2701 config/tc-i386.c:2920
+#: config/tc-i386.c:3152 config/tc-i386.c:3389
msgid "bad reloc specifier in expression"
msgstr ""
-#: config/tc-i386.c:2719 config/tc-i386.c:2954
+#: config/tc-i386.c:3170 config/tc-i386.c:3424
#, c-format
msgid "ignoring junk `%s' after expression"
msgstr ""
#. Missing or bad expr becomes absolute 0.
-#: config/tc-i386.c:2726
+#: config/tc-i386.c:3177
#, c-format
msgid "missing or invalid immediate expression `%s' taken as 0"
msgstr ""
-#: config/tc-i386.c:2754 config/tc-i386.c:2984
+#: config/tc-i386.c:3208 config/tc-i386.c:3454
#, c-format
msgid "unimplemented segment %s in operand"
msgstr ""
-#: config/tc-i386.c:2756 config/tc-i386.c:2986
+#: config/tc-i386.c:3210 config/tc-i386.c:3456
#, c-format
msgid "unimplemented segment type %d in operand"
msgstr ""
-#: config/tc-i386.c:2800 config/tc-i386.c:4755
+#: config/tc-i386.c:3252 config/tc-i386.c:5392
#, c-format
msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
msgstr ""
-#: config/tc-i386.c:2806
+#: config/tc-i386.c:3258
#, c-format
msgid "scale factor of %d without an index register"
msgstr ""
#. Missing or bad expr becomes absolute 0.
-#: config/tc-i386.c:2965
+#: config/tc-i386.c:3435
#, c-format
msgid "missing or invalid displacement expression `%s' taken as 0"
msgstr ""
-#: config/tc-i386.c:3043
+#: config/tc-i386.c:3541
#, c-format
msgid "`%s' is not a valid base/index expression"
msgstr ""
-#: config/tc-i386.c:3047
+#: config/tc-i386.c:3545
#, c-format
msgid "`%s' is not a valid %s bit base/index expression"
msgstr ""
-#: config/tc-i386.c:3122
+#: config/tc-i386.c:3620
#, c-format
msgid "bad memory operand `%s'"
msgstr ""
-#: config/tc-i386.c:3137
+#: config/tc-i386.c:3635
#, c-format
msgid "junk `%s' after register"
msgstr ""
-#: config/tc-i386.c:3146 config/tc-i386.c:3261 config/tc-i386.c:3297
+#: config/tc-i386.c:3644 config/tc-i386.c:3759 config/tc-i386.c:3795
#, c-format
msgid "bad register name `%s'"
msgstr ""
-#: config/tc-i386.c:3154
+#: config/tc-i386.c:3652
msgid "immediate operand illegal with absolute jump"
msgstr ""
-#: config/tc-i386.c:3176
+#: config/tc-i386.c:3674
#, c-format
msgid "too many memory references for `%s'"
msgstr ""
-#: config/tc-i386.c:3254
+#: config/tc-i386.c:3752
#, c-format
msgid "expecting `,' or `)' after index register in `%s'"
msgstr ""
-#: config/tc-i386.c:3276
+#: config/tc-i386.c:3774
#, c-format
msgid "expecting `)' after scale factor in `%s'"
msgstr ""
-#: config/tc-i386.c:3283
+#: config/tc-i386.c:3781
#, c-format
msgid "expecting index register or scale factor after `,'; got '%c'"
msgstr ""
-#: config/tc-i386.c:3290
+#: config/tc-i386.c:3788
#, c-format
msgid "expecting `,' or `)' after base register in `%s'"
msgstr ""
#. It's not a memory operand; argh!
-#: config/tc-i386.c:3331
+#: config/tc-i386.c:3829
#, c-format
msgid "invalid char %s beginning operand %d `%s'"
msgstr ""
-#: config/tc-i386.c:3753
+#: config/tc-i386.c:4267
msgid "Bad call to md_atof ()"
msgstr ""
-#: config/tc-i386.c:3903
+#: config/tc-i386.c:4431 config/tc-sparc.c:548
+#, c-format
+msgid "No compiled in support for %d bit object file format"
+msgstr ""
+
+#: config/tc-i386.c:4449
msgid ""
" -Q ignored\n"
" -V print assembler version number\n"
@@ -3638,58 +3583,67 @@ msgid ""
" -s ignored\n"
msgstr ""
-#: config/tc-i386.c:3910
+#: config/tc-i386.c:4456
msgid " -q quieten some warnings\n"
msgstr ""
-#: config/tc-i386.c:3960
+#: config/tc-i386.c:4475
+msgid "Unknown architecture"
+msgstr ""
+
+#: config/tc-i386.c:4515
msgid "GOT already in symbol table"
msgstr ""
-#: config/tc-i386.c:4109
+#: config/tc-i386.c:4636
+#, c-format
+msgid "can not do %d byte relocation"
+msgstr ""
+
+#: config/tc-i386.c:4697
#, c-format
msgid "cannot represent relocation type %s"
msgstr ""
-#: config/tc-i386.c:4403
+#: config/tc-i386.c:4994
#, c-format
msgid "too many memory references for '%s'"
msgstr ""
-#: config/tc-i386.c:4561
+#: config/tc-i386.c:5157
#, c-format
msgid "Unknown operand modifier `%s'\n"
msgstr ""
-#: config/tc-i386.c:4727
+#: config/tc-i386.c:5364
#, c-format
msgid "`%s' is not a valid segment register"
msgstr ""
-#: config/tc-i386.c:4737 config/tc-i386.c:4859
+#: config/tc-i386.c:5374 config/tc-i386.c:5495
msgid "Register scaling only allowed in memory operands."
msgstr ""
-#: config/tc-i386.c:4768
+#: config/tc-i386.c:5405
msgid "Too many register references in memory operand.\n"
msgstr ""
-#: config/tc-i386.c:4838
+#: config/tc-i386.c:5474
#, c-format
msgid "Syntax error. Expecting a constant. Got `%s'.\n"
msgstr ""
-#: config/tc-i386.c:4908
+#: config/tc-i386.c:5544
#, c-format
msgid "Unrecognized token '%s'"
msgstr ""
-#: config/tc-i386.c:4925
+#: config/tc-i386.c:5561
#, c-format
msgid "Unexpected token `%s'\n"
msgstr ""
-#: config/tc-i386.c:5069
+#: config/tc-i386.c:5705
#, c-format
msgid "Unrecognized token `%s'\n"
msgstr ""
@@ -3698,7 +3652,7 @@ msgstr ""
msgid "Unknown temporary pseudo register"
msgstr ""
-#: config/tc-i860.c:181 config/tc-mips.c:1025
+#: config/tc-i860.c:181 config/tc-mips.c:1027
#, c-format
msgid "internal error: can't hash `%s': %s\n"
msgstr ""
@@ -4055,7 +4009,7 @@ msgid ""
" -xdebug\t\t debug dependency violation checker\n"
msgstr ""
-#: config/tc-ia64.c:6147 config/tc-mips.c:1012
+#: config/tc-ia64.c:6147 config/tc-mips.c:1014
msgid "Could not set architecture and machine"
msgstr ""
@@ -4161,87 +4115,87 @@ msgstr ""
msgid " -cpu-desc provide runtime cpu description file\n"
msgstr ""
-#: config/tc-m32r.c:698
+#: config/tc-m32r.c:688
msgid "Instructions write to the same destination register."
msgstr ""
-#: config/tc-m32r.c:706
+#: config/tc-m32r.c:696
msgid "Instructions do not use parallel execution pipelines."
msgstr ""
-#: config/tc-m32r.c:713
+#: config/tc-m32r.c:703
msgid "Instructions share the same execution pipeline"
msgstr ""
-#: config/tc-m32r.c:783 config/tc-m32r.c:880
+#: config/tc-m32r.c:773 config/tc-m32r.c:870
#, c-format
msgid "not a 16 bit instruction '%s'"
msgstr ""
-#: config/tc-m32r.c:790 config/tc-m32r.c:887 config/tc-m32r.c:1043
+#: config/tc-m32r.c:780 config/tc-m32r.c:877 config/tc-m32r.c:1033
#, c-format
msgid "unknown instruction '%s'"
msgstr ""
-#: config/tc-m32r.c:799 config/tc-m32r.c:894 config/tc-m32r.c:1050
+#: config/tc-m32r.c:789 config/tc-m32r.c:884 config/tc-m32r.c:1040
#, c-format
msgid "instruction '%s' is for the M32RX only"
msgstr ""
-#: config/tc-m32r.c:808 config/tc-m32r.c:903
+#: config/tc-m32r.c:798 config/tc-m32r.c:893
#, c-format
msgid "instruction '%s' cannot be executed in parallel."
msgstr ""
-#: config/tc-m32r.c:864 config/tc-m32r.c:928 config/tc-m32r.c:1100
+#: config/tc-m32r.c:854 config/tc-m32r.c:918 config/tc-m32r.c:1090
msgid "internal error: lookup/get operands failed"
msgstr ""
-#: config/tc-m32r.c:913
+#: config/tc-m32r.c:903
#, c-format
msgid "'%s': only the NOP instruction can be issued in parallel on the m32r"
msgstr ""
-#: config/tc-m32r.c:942
+#: config/tc-m32r.c:932
#, c-format
msgid ""
"%s: output of 1st instruction is the same as an input to 2nd instruction - "
"is this intentional ?"
msgstr ""
-#: config/tc-m32r.c:946
+#: config/tc-m32r.c:936
#, c-format
msgid ""
"%s: output of 2nd instruction is the same as an input to 1st instruction - "
"is this intentional ?"
msgstr ""
-#: config/tc-m32r.c:1260 config/tc-ppc.c:1456 config/tc-ppc.c:3674 read.c:1370
+#: config/tc-m32r.c:1250 config/tc-ppc.c:1459 config/tc-ppc.c:3681 read.c:1358
msgid "Expected comma after symbol-name: rest of line ignored."
msgstr ""
-#: config/tc-m32r.c:1270
+#: config/tc-m32r.c:1260
#, c-format
msgid ".SCOMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-m32r.c:1284 config/tc-ppc.c:1478 config/tc-ppc.c:2385
-#: config/tc-ppc.c:3698
+#: config/tc-m32r.c:1274 config/tc-ppc.c:1481 config/tc-ppc.c:2392
+#: config/tc-ppc.c:3705
msgid "ignoring bad alignment"
msgstr ""
-#: config/tc-m32r.c:1311 config/tc-ppc.c:1489 config/tc-ppc.c:3710 read.c:1394
-#: read.c:2120
+#: config/tc-m32r.c:1301 config/tc-ppc.c:1492 config/tc-ppc.c:3717 read.c:1382
+#: read.c:2108
#, c-format
msgid "Ignoring attempt to re-define symbol `%s'."
msgstr ""
-#: config/tc-m32r.c:1320
+#: config/tc-m32r.c:1310
#, c-format
msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-m32r.c:1796
+#: config/tc-m32r.c:1786
msgid "Unmatched high/shigh reloc"
msgstr ""
@@ -4526,34 +4480,34 @@ msgstr ""
msgid "Relocation %d is not supported by object file format."
msgstr ""
-#: config/tc-m68hc11.c:2560
+#: config/tc-m68hc11.c:2571
msgid "bra or bsr with undefined symbol."
msgstr ""
-#: config/tc-m68hc11.c:2668
+#: config/tc-m68hc11.c:2683
#, c-format
msgid "Subtype %d is not recognized."
msgstr ""
-#: config/tc-m68hc11.c:2705
+#: config/tc-m68hc11.c:2720
msgid "Expression too complex."
msgstr ""
-#: config/tc-m68hc11.c:2734
+#: config/tc-m68hc11.c:2749
msgid "Value out of 16-bit range."
msgstr ""
-#: config/tc-m68hc11.c:2757
+#: config/tc-m68hc11.c:2772
#, c-format
msgid "Value %ld too large for 8-bit PC-relative branch."
msgstr ""
-#: config/tc-m68hc11.c:2764
+#: config/tc-m68hc11.c:2779
#, c-format
msgid "Auto increment/decrement offset '%ld' is out of range."
msgstr ""
-#: config/tc-m68hc11.c:2775
+#: config/tc-m68hc11.c:2790
#, c-format
msgid "Line %d: unknown relocation type: 0x%x."
msgstr ""
@@ -4582,7 +4536,7 @@ msgstr ""
msgid "Can not do %d byte pic relocation"
msgstr ""
-#: config/tc-m68k.c:919 config/tc-mips.c:11236
+#: config/tc-m68k.c:919 config/tc-mips.c:11242
#, c-format
msgid "Cannot make %s relocation PC relative"
msgstr ""
@@ -4993,7 +4947,7 @@ msgstr ""
msgid "Relaxation should never occur"
msgstr ""
-#: config/tc-m88k.c:1264 config/tc-sparc.c:3540 read.c:1974
+#: config/tc-m88k.c:1264 config/tc-sparc.c:3540 read.c:1962
#, c-format
msgid "BSS length (%d.) <0! Ignored."
msgstr ""
@@ -5225,327 +5179,327 @@ msgstr ""
msgid "Cannot represent relocation type %s"
msgstr ""
-#: config/tc-mips.c:641
+#: config/tc-mips.c:642
#, c-format
msgid "internal Error, line %d, %s"
msgstr ""
-#: config/tc-mips.c:643
+#: config/tc-mips.c:644
msgid "MIPS internal Error"
msgstr ""
-#: config/tc-mips.c:925
+#: config/tc-mips.c:927
msgid "-G not supported in this configuration."
msgstr ""
-#: config/tc-mips.c:994
+#: config/tc-mips.c:996
msgid "trap exception not supported at ISA 1"
msgstr ""
-#: config/tc-mips.c:1051
+#: config/tc-mips.c:1053
#, c-format
msgid "internal: can't hash `%s': %s"
msgstr ""
-#: config/tc-mips.c:1059
+#: config/tc-mips.c:1061
#, c-format
msgid "internal error: bad mips16 opcode: %s %s\n"
msgstr ""
-#: config/tc-mips.c:1227
+#: config/tc-mips.c:1229
#, c-format
msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
msgstr ""
-#: config/tc-mips.c:1781 config/tc-mips.c:11368
+#: config/tc-mips.c:1782 config/tc-mips.c:11374
msgid "extended instruction in delay slot"
msgstr ""
-#: config/tc-mips.c:1803 config/tc-mips.c:1810
+#: config/tc-mips.c:1804 config/tc-mips.c:1811
#, c-format
msgid "jump to misaligned address (0x%lx)"
msgstr ""
-#: config/tc-mips.c:2459 config/tc-mips.c:2813
+#: config/tc-mips.c:2460 config/tc-mips.c:2814
msgid "Macro instruction expanded into multiple instructions"
msgstr ""
-#: config/tc-mips.c:2866
+#: config/tc-mips.c:2867
msgid "unsupported large constant"
msgstr ""
-#: config/tc-mips.c:2868
+#: config/tc-mips.c:2869
#, c-format
msgid "Instruction %s requires absolute expression"
msgstr ""
-#: config/tc-mips.c:3014
+#: config/tc-mips.c:3015
msgid "Number larger than 32 bits"
msgstr ""
-#: config/tc-mips.c:3035
+#: config/tc-mips.c:3036
msgid "Number larger than 64 bits"
msgstr ""
-#: config/tc-mips.c:3301 config/tc-mips.c:3373 config/tc-mips.c:5052
-#: config/tc-mips.c:5103 config/tc-mips.c:5639 config/tc-mips.c:5702
+#: config/tc-mips.c:3304 config/tc-mips.c:3376 config/tc-mips.c:5055
+#: config/tc-mips.c:5106 config/tc-mips.c:5642 config/tc-mips.c:5705
msgid "PIC code offset overflow (max 16 signed bits)"
msgstr ""
-#: config/tc-mips.c:3612
+#: config/tc-mips.c:3615
#, c-format
msgid "Branch %s is always false (nop)"
msgstr ""
-#: config/tc-mips.c:3617
+#: config/tc-mips.c:3620
#, c-format
msgid "Branch likely %s is always false"
msgstr ""
-#: config/tc-mips.c:3624 config/tc-mips.c:3698 config/tc-mips.c:3801
-#: config/tc-mips.c:3856 config/tc-mips.c:6739 config/tc-mips.c:6748
-#: config/tc-mips.c:6756 config/tc-mips.c:6865
+#: config/tc-mips.c:3627 config/tc-mips.c:3701 config/tc-mips.c:3804
+#: config/tc-mips.c:3859 config/tc-mips.c:6742 config/tc-mips.c:6751
+#: config/tc-mips.c:6759 config/tc-mips.c:6868
msgid "Unsupported large constant"
msgstr ""
#. result is always true
-#: config/tc-mips.c:3660
+#: config/tc-mips.c:3663
#, c-format
msgid "Branch %s is always true"
msgstr ""
-#: config/tc-mips.c:3932 config/tc-mips.c:4039
+#: config/tc-mips.c:3935 config/tc-mips.c:4042
msgid "Divide by zero."
msgstr ""
-#: config/tc-mips.c:4623
+#: config/tc-mips.c:4626
msgid "MIPS PIC call to register other than $25"
msgstr ""
-#: config/tc-mips.c:4628 config/tc-mips.c:4740
+#: config/tc-mips.c:4631 config/tc-mips.c:4743
msgid "No .cprestore pseudo-op used in PIC code"
msgstr ""
-#: config/tc-mips.c:4813 config/tc-mips.c:4902 config/tc-mips.c:5390
-#: config/tc-mips.c:5431 config/tc-mips.c:5449 config/tc-mips.c:6078
+#: config/tc-mips.c:4816 config/tc-mips.c:4905 config/tc-mips.c:5393
+#: config/tc-mips.c:5434 config/tc-mips.c:5452 config/tc-mips.c:6081
msgid "opcode not supported on this processor"
msgstr ""
-#: config/tc-mips.c:5909 config/tc-mips.c:6633
+#: config/tc-mips.c:5912 config/tc-mips.c:6636
msgid "Macro used $at after \".set noat\""
msgstr ""
-#: config/tc-mips.c:6049 config/tc-mips.c:6067
+#: config/tc-mips.c:6052 config/tc-mips.c:6070
msgid "rotate count too large"
msgstr ""
-#: config/tc-mips.c:6118
+#: config/tc-mips.c:6121
#, c-format
msgid "Instruction %s: result is always false"
msgstr ""
-#: config/tc-mips.c:6287
+#: config/tc-mips.c:6290
#, c-format
msgid "Instruction %s: result is always true"
msgstr ""
-#: config/tc-mips.c:6426 config/tc-mips.c:6453 config/tc-mips.c:6525
-#: config/tc-mips.c:6550
+#: config/tc-mips.c:6429 config/tc-mips.c:6456 config/tc-mips.c:6528
+#: config/tc-mips.c:6553
msgid "operand overflow"
msgstr ""
#. FIXME: Check if this is one of the itbl macros, since they
#. are added dynamically.
-#: config/tc-mips.c:6629
+#: config/tc-mips.c:6632
#, c-format
msgid "Macro %s not implemented yet"
msgstr ""
-#: config/tc-mips.c:6899
+#: config/tc-mips.c:6902
#, c-format
msgid "internal: bad mips opcode (mask error): %s %s"
msgstr ""
-#: config/tc-mips.c:6955
+#: config/tc-mips.c:6958
#, c-format
msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s"
msgstr ""
-#: config/tc-mips.c:6962
+#: config/tc-mips.c:6965
#, c-format
msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s"
msgstr ""
-#: config/tc-mips.c:7070
+#: config/tc-mips.c:7073
#, c-format
msgid "opcode not supported on this processor: %s (%s)"
msgstr ""
-#: config/tc-mips.c:7141
+#: config/tc-mips.c:7144
#, c-format
msgid "Improper shift amount (%ld)"
msgstr ""
-#: config/tc-mips.c:7167 config/tc-mips.c:8321 config/tc-mips.c:8436
+#: config/tc-mips.c:7170 config/tc-mips.c:8324 config/tc-mips.c:8439
#, c-format
msgid "Invalid value for `%s' (%lu)"
msgstr ""
-#: config/tc-mips.c:7185
+#: config/tc-mips.c:7188
#, c-format
msgid "Illegal break code (%ld)"
msgstr ""
-#: config/tc-mips.c:7199
+#: config/tc-mips.c:7202
#, c-format
msgid "Illegal lower break code (%ld)"
msgstr ""
-#: config/tc-mips.c:7212
+#: config/tc-mips.c:7215
#, c-format
msgid "Illegal 20-bit code (%ld)"
msgstr ""
-#: config/tc-mips.c:7224
+#: config/tc-mips.c:7227
#, c-format
msgid "Coproccesor code > 25 bits (%ld)"
msgstr ""
-#: config/tc-mips.c:7237
+#: config/tc-mips.c:7240
#, c-format
msgid "Illegal 19-bit code (%ld)"
msgstr ""
-#: config/tc-mips.c:7249
+#: config/tc-mips.c:7252
#, c-format
msgid "Invalidate performance regster (%ld)"
msgstr ""
-#: config/tc-mips.c:7286
+#: config/tc-mips.c:7289
#, c-format
msgid "Invalid register number (%d)"
msgstr ""
-#: config/tc-mips.c:7450
+#: config/tc-mips.c:7453
#, c-format
msgid "Invalid float register number (%d)"
msgstr ""
-#: config/tc-mips.c:7460
+#: config/tc-mips.c:7463
#, c-format
msgid "Float register should be even, was %d"
msgstr ""
-#: config/tc-mips.c:7511
+#: config/tc-mips.c:7514
msgid "absolute expression required"
msgstr ""
-#: config/tc-mips.c:7572
+#: config/tc-mips.c:7575
#, c-format
msgid "Bad floating point constant: %s"
msgstr ""
-#: config/tc-mips.c:7694
+#: config/tc-mips.c:7697
msgid "Can't use floating point insn in this section"
msgstr ""
-#: config/tc-mips.c:7748
+#: config/tc-mips.c:7751
msgid "16 bit expression not in range 0..65535"
msgstr ""
-#: config/tc-mips.c:7785
+#: config/tc-mips.c:7788
msgid "16 bit expression not in range -32768..32767"
msgstr ""
-#: config/tc-mips.c:7856
+#: config/tc-mips.c:7859
msgid "lui expression not in range 0..65535"
msgstr ""
-#: config/tc-mips.c:7880
+#: config/tc-mips.c:7883
#, c-format
msgid "invalid condition code register $fcc%d"
msgstr ""
-#: config/tc-mips.c:7905
+#: config/tc-mips.c:7908
msgid "invalid coprocessor sub-selection value (0-7)"
msgstr ""
-#: config/tc-mips.c:7910
+#: config/tc-mips.c:7913
#, c-format
msgid "bad char = '%c'\n"
msgstr ""
-#: config/tc-mips.c:7923 config/tc-mips.c:8461
+#: config/tc-mips.c:7926 config/tc-mips.c:8464
msgid "illegal operands"
msgstr ""
-#: config/tc-mips.c:7990
+#: config/tc-mips.c:7993
msgid "unrecognized opcode"
msgstr ""
-#: config/tc-mips.c:8099
+#: config/tc-mips.c:8102
#, c-format
msgid "invalid register number (%d)"
msgstr ""
-#: config/tc-mips.c:8180
+#: config/tc-mips.c:8183
msgid "used $at without \".set noat\""
msgstr ""
-#: config/tc-mips.c:8355
+#: config/tc-mips.c:8358
msgid "can't parse register list"
msgstr ""
-#: config/tc-mips.c:8389 config/tc-mips.c:8419
+#: config/tc-mips.c:8392 config/tc-mips.c:8422
msgid "invalid register list"
msgstr ""
-#: config/tc-mips.c:8586
+#: config/tc-mips.c:8590
msgid "extended operand requested but not required"
msgstr ""
-#: config/tc-mips.c:8588
+#: config/tc-mips.c:8592
msgid "invalid unextended operand value"
msgstr ""
-#: config/tc-mips.c:8616
+#: config/tc-mips.c:8620
msgid "operand value out of range for instruction"
msgstr ""
-#: config/tc-mips.c:9001
+#: config/tc-mips.c:9005
#, c-format
msgid "invalid architecture -mcpu=%s"
msgstr ""
-#: config/tc-mips.c:9050
+#: config/tc-mips.c:9054
msgid "-G may not be used with embedded PIC code"
msgstr ""
-#: config/tc-mips.c:9062
+#: config/tc-mips.c:9066
msgid "-call_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:9068 config/tc-mips.c:10151 config/tc-mips.c:10325
+#: config/tc-mips.c:9072 config/tc-mips.c:10158 config/tc-mips.c:10332
msgid "-G may not be used with SVR4 PIC code"
msgstr ""
-#: config/tc-mips.c:9077
+#: config/tc-mips.c:9081
msgid "-non_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:9093
+#: config/tc-mips.c:9097
msgid "-G is not supported for this configuration"
msgstr ""
-#: config/tc-mips.c:9098
+#: config/tc-mips.c:9102
msgid "-G may not be used with SVR4 or embedded PIC code"
msgstr ""
-#: config/tc-mips.c:9122
+#: config/tc-mips.c:9126
msgid "No compiled in support for 64 bit object file format"
msgstr ""
-#: config/tc-mips.c:9210
+#: config/tc-mips.c:9218
msgid ""
"MIPS options:\n"
"-membedded-pic\t\tgenerate embedded position independent code\n"
@@ -5556,7 +5510,7 @@ msgid ""
"\t\t\timplicitly with the gp register [default 8]\n"
msgstr ""
-#: config/tc-mips.c:9218
+#: config/tc-mips.c:9226
msgid ""
"-mips1\t\t\tgenerate MIPS ISA I instructions\n"
"-mips2\t\t\tgenerate MIPS ISA II instructions\n"
@@ -5568,20 +5522,20 @@ msgid ""
"-mcpu=CPU\t\tgenerate code for CPU, where CPU is one of:\n"
msgstr ""
-#: config/tc-mips.c:9249
+#: config/tc-mips.c:9257
msgid ""
"-mCPU\t\t\tequivalent to -mcpu=CPU.\n"
"-no-mCPU\t\tdon't generate code specific to CPU.\n"
"\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n"
msgstr ""
-#: config/tc-mips.c:9262
+#: config/tc-mips.c:9270
msgid ""
"-mips16\t\t\tgenerate mips16 instructions\n"
"-no-mips16\t\tdo not generate mips16 instructions\n"
msgstr ""
-#: config/tc-mips.c:9265
+#: config/tc-mips.c:9273
msgid ""
"-O0\t\t\tremove unneeded NOPs, do not swap branches\n"
"-O\t\t\tremove unneeded NOPs and swap branches\n"
@@ -5590,7 +5544,7 @@ msgid ""
"--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
msgstr ""
-#: config/tc-mips.c:9272
+#: config/tc-mips.c:9280
msgid ""
"-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
"-non_shared\t\tdo not generate position independent code\n"
@@ -5599,170 +5553,170 @@ msgid ""
"-64\t\t\tcreate 64 bit object file\n"
msgstr ""
-#: config/tc-mips.c:9329
+#: config/tc-mips.c:9337
#, c-format
msgid "Unsupported reloc size %d"
msgstr ""
-#: config/tc-mips.c:9432
+#: config/tc-mips.c:9440
msgid "Unmatched %%hi reloc"
msgstr ""
-#: config/tc-mips.c:9556
+#: config/tc-mips.c:9563
msgid "Invalid PC relative reloc"
msgstr ""
-#: config/tc-mips.c:9666 config/tc-sparc.c:3101 config/tc-sparc.c:3108
+#: config/tc-mips.c:9673 config/tc-sparc.c:3101 config/tc-sparc.c:3108
#: config/tc-sparc.c:3115 config/tc-sparc.c:3122 config/tc-sparc.c:3129
#: config/tc-sparc.c:3138 config/tc-sparc.c:3149 config/tc-sparc.c:3175
-#: config/tc-sparc.c:3203 write.c:984 write.c:1048
+#: config/tc-sparc.c:3203 write.c:992 write.c:1056
msgid "relocation overflow"
msgstr ""
-#: config/tc-mips.c:9682
+#: config/tc-mips.c:9689
#, c-format
msgid "Branch to odd address (%lx)"
msgstr ""
-#: config/tc-mips.c:9846
+#: config/tc-mips.c:9853
#, c-format
msgid "%08lx UNDEFINED\n"
msgstr ""
-#: config/tc-mips.c:9912
+#: config/tc-mips.c:9919
msgid "Alignment negative: 0 assumed."
msgstr ""
-#: config/tc-mips.c:10000
+#: config/tc-mips.c:10007
msgid "No read only data section in this object file format"
msgstr ""
-#: config/tc-mips.c:10023
+#: config/tc-mips.c:10030
msgid "Global pointers not supported; recompile -G 0"
msgstr ""
-#: config/tc-mips.c:10109
+#: config/tc-mips.c:10116
#, c-format
msgid "%s: no such section"
msgstr ""
-#: config/tc-mips.c:10146
+#: config/tc-mips.c:10153
#, c-format
msgid ".option pic%d not supported"
msgstr ""
-#: config/tc-mips.c:10157
+#: config/tc-mips.c:10164
#, c-format
msgid "Unrecognized option \"%s\""
msgstr ""
-#: config/tc-mips.c:10220
+#: config/tc-mips.c:10227
msgid "`noreorder' must be set before `nomacro'"
msgstr ""
-#: config/tc-mips.c:10262
+#: config/tc-mips.c:10269
msgid "unknown ISA level"
msgstr ""
-#: config/tc-mips.c:10284
+#: config/tc-mips.c:10291
msgid ".set pop with no .set push"
msgstr ""
-#: config/tc-mips.c:10308
+#: config/tc-mips.c:10315
#, c-format
msgid "Tried to set unrecognized symbol: %s\n"
msgstr ""
-#: config/tc-mips.c:10358
+#: config/tc-mips.c:10365
msgid ".cpload not in noreorder section"
msgstr ""
-#: config/tc-mips.c:10440
+#: config/tc-mips.c:10447
msgid "Unsupported use of .gpword"
msgstr ""
-#: config/tc-mips.c:10577
+#: config/tc-mips.c:10584
msgid "expected `$'"
msgstr ""
-#: config/tc-mips.c:10585
+#: config/tc-mips.c:10592
msgid "Bad register number"
msgstr ""
-#: config/tc-mips.c:10601
+#: config/tc-mips.c:10608
msgid "Unrecognized register name"
msgstr ""
-#: config/tc-mips.c:10800
+#: config/tc-mips.c:10807
msgid "unsupported PC relative reference to different section"
msgstr ""
-#: config/tc-mips.c:10909
+#: config/tc-mips.c:10916
msgid "unsupported relocation"
msgstr ""
-#: config/tc-mips.c:11014
+#: config/tc-mips.c:11020
msgid "AT used after \".set noat\" or macro used after \".set nomacro\""
msgstr ""
-#: config/tc-mips.c:11077
+#: config/tc-mips.c:11083
msgid "Double check fx_r_type in tc-mips.c:tc_gen_reloc"
msgstr ""
-#: config/tc-mips.c:11589
+#: config/tc-mips.c:11596
msgid "missing `.end' at end of assembly"
msgstr ""
-#: config/tc-mips.c:11604
+#: config/tc-mips.c:11611
msgid "Expected simple number."
msgstr ""
-#: config/tc-mips.c:11630
+#: config/tc-mips.c:11637
#, c-format
msgid " *input_line_pointer == '%c' 0x%02x\n"
msgstr ""
-#: config/tc-mips.c:11632
+#: config/tc-mips.c:11639
msgid "Invalid number"
msgstr ""
-#: config/tc-mips.c:11686
+#: config/tc-mips.c:11693
msgid ".end not in text section"
msgstr ""
-#: config/tc-mips.c:11690
+#: config/tc-mips.c:11697
msgid ".end directive without a preceding .ent directive."
msgstr ""
-#: config/tc-mips.c:11699
+#: config/tc-mips.c:11706
msgid ".end symbol does not match .ent symbol."
msgstr ""
-#: config/tc-mips.c:11702
+#: config/tc-mips.c:11709
msgid ".end directive missing or unknown symbol"
msgstr ""
-#: config/tc-mips.c:11777
+#: config/tc-mips.c:11784
msgid ".ent or .aent not in text section."
msgstr ""
-#: config/tc-mips.c:11780
+#: config/tc-mips.c:11787
msgid "missing `.end'"
msgstr ""
-#: config/tc-mips.c:11813 ecoff.c:3205
+#: config/tc-mips.c:11820 ecoff.c:3205
msgid ".frame outside of .ent"
msgstr ""
-#: config/tc-mips.c:11824 ecoff.c:3216
+#: config/tc-mips.c:11831 ecoff.c:3216
msgid "Bad .frame directive"
msgstr ""
-#: config/tc-mips.c:11854
+#: config/tc-mips.c:11861
msgid ".mask/.fmask outside of .ent"
msgstr ""
-#: config/tc-mips.c:11861
+#: config/tc-mips.c:11868
msgid "Bad .mask/.fmask directive"
msgstr ""
@@ -5772,12 +5726,24 @@ msgid ""
"none yet\n"
msgstr ""
-#: config/tc-mn10200.c:807 config/tc-mn10300.c:953 config/tc-ppc.c:1733
+#: config/tc-mn10200.c:807 config/tc-mn10300.c:953 config/tc-ppc.c:1736
#: config/tc-v850.c:1728
#, c-format
msgid "Unrecognized opcode: `%s'"
msgstr ""
+#: config/tc-mn10200.c:1050 config/tc-mn10300.c:1476 config/tc-ppc.c:2097
+#: config/tc-v850.c:2152
+#, c-format
+msgid "junk at end of line: `%s'"
+msgstr ""
+
+#: config/tc-mn10200.c:1374 config/tc-mn10300.c:2045 config/tc-ppc.c:1224
+#: config/tc-v850.c:1656
+#, c-format
+msgid "operand out of range (%s not between %ld and %ld)"
+msgstr ""
+
#: config/tc-mn10300.c:542
msgid ""
"MN10300 options:\n"
@@ -5980,12 +5946,12 @@ msgid ""
"-big\t\t\tgenerate big endian code\n"
msgstr ""
-#: config/tc-pj.c:458 config/tc-sh.c:2869 config/tc-sh.c:2876
-#: config/tc-sh.c:2883 config/tc-sh.c:2890
+#: config/tc-pj.c:458 config/tc-sh.c:2899 config/tc-sh.c:2906
+#: config/tc-sh.c:2913 config/tc-sh.c:2920
msgid "pcrel too far"
msgstr ""
-#: config/tc-pj.c:526 config/tc-sh.c:2981
+#: config/tc-pj.c:526 config/tc-sh.c:3011
msgid "offset out of range"
msgstr ""
@@ -5997,12 +5963,12 @@ msgstr ""
msgid "estimate size\n"
msgstr ""
-#: config/tc-ppc.c:923
+#: config/tc-ppc.c:926
#, c-format
msgid "invalid switch -m%s"
msgstr ""
-#: config/tc-ppc.c:960
+#: config/tc-ppc.c:963
msgid ""
"PowerPC options:\n"
"-u\t\t\tignored\n"
@@ -6019,7 +5985,7 @@ msgid ""
"-mno-regnames\t\tDo not allow symbolic names for registers\n"
msgstr ""
-#: config/tc-ppc.c:975
+#: config/tc-ppc.c:978
msgid ""
"-mrelocatable\t\tsupport for GCC's -mrelocatble option\n"
"-mrelocatable-lib\tsupport for GCC's -mrelocatble-lib option\n"
@@ -6033,202 +5999,210 @@ msgid ""
"-Qy, -Qn\t\tignored\n"
msgstr ""
-#: config/tc-ppc.c:1010
+#: config/tc-ppc.c:1013
#, c-format
msgid "Unknown default cpu = %s, os = %s"
msgstr ""
-#: config/tc-ppc.c:1035
+#: config/tc-ppc.c:1038
msgid "Neither Power nor PowerPC opcodes were selected."
msgstr ""
-#: config/tc-ppc.c:1114
+#: config/tc-ppc.c:1117
#, c-format
msgid "Internal assembler error for instruction %s"
msgstr ""
-#: config/tc-ppc.c:1133
+#: config/tc-ppc.c:1136
#, c-format
msgid "Internal assembler error for macro %s"
msgstr ""
-#: config/tc-ppc.c:1343
+#: config/tc-ppc.c:1346
msgid "identifier+constant@got means identifier@got+constant"
msgstr ""
-#: config/tc-ppc.c:1397 config/tc-sh.c:341 config/tc-sh.c:369
+#: config/tc-ppc.c:1400 config/tc-sh.c:341 config/tc-sh.c:369
#, c-format
msgid "%s relocations do not fit in %d bytes\n"
msgstr ""
-#: config/tc-ppc.c:1497
+#: config/tc-ppc.c:1500
#, c-format
msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-ppc.c:1579
+#: config/tc-ppc.c:1582
msgid "Relocation cannot be done when using -mrelocatable"
msgstr ""
-#: config/tc-ppc.c:1660
+#: config/tc-ppc.c:1663
#, c-format
msgid "syntax error: invalid toc specifier `%s'"
msgstr ""
-#: config/tc-ppc.c:1674
+#: config/tc-ppc.c:1677
#, c-format
msgid "syntax error: expected `]', found `%c'"
msgstr ""
-#: config/tc-ppc.c:1909
+#: config/tc-ppc.c:1912
msgid "[tocv] symbol is not a toc symbol"
msgstr ""
-#: config/tc-ppc.c:1920
+#: config/tc-ppc.c:1923
msgid "Unimplemented toc32 expression modifier"
msgstr ""
-#: config/tc-ppc.c:1925
+#: config/tc-ppc.c:1928
msgid "Unimplemented toc64 expression modifier"
msgstr ""
-#: config/tc-ppc.c:1929
+#: config/tc-ppc.c:1932
#, c-format
msgid "Unexpected return value [%d] from parse_toc_entry!\n"
msgstr ""
-#: config/tc-ppc.c:2082
+#: config/tc-ppc.c:2085
#, c-format
msgid "syntax error; found `%c' but expected `%c'"
msgstr ""
-#: config/tc-ppc.c:2190
+#: config/tc-ppc.c:2197
msgid "wrong number of operands"
msgstr ""
-#: config/tc-ppc.c:2246
+#: config/tc-ppc.c:2253
msgid "Bad .section directive: want a,w,x,e in string"
msgstr ""
-#: config/tc-ppc.c:2360
+#: config/tc-ppc.c:2367
msgid "missing size"
msgstr ""
-#: config/tc-ppc.c:2369
+#: config/tc-ppc.c:2376
msgid "negative size"
msgstr ""
-#: config/tc-ppc.c:2410
+#: config/tc-ppc.c:2417
msgid "missing real symbol name"
msgstr ""
-#: config/tc-ppc.c:2431
+#: config/tc-ppc.c:2438
msgid "attempt to redefine symbol"
msgstr ""
-#: config/tc-ppc.c:2665
+#: config/tc-ppc.c:2672
msgid "The XCOFF file format does not support arbitrary sections"
msgstr ""
-#: config/tc-ppc.c:2773 config/tc-ppc.c:3298 read.c:3004
+#: config/tc-ppc.c:2749
+msgid "missing rename string"
+msgstr ""
+
+#: config/tc-ppc.c:2780 config/tc-ppc.c:3305 read.c:2992
msgid "missing value"
msgstr ""
-#: config/tc-ppc.c:2791
+#: config/tc-ppc.c:2798
msgid "illegal .stabx expression; zero assumed"
msgstr ""
-#: config/tc-ppc.c:2823
+#: config/tc-ppc.c:2830
msgid "missing class"
msgstr ""
-#: config/tc-ppc.c:2832
+#: config/tc-ppc.c:2839
msgid "missing type"
msgstr ""
-#: config/tc-ppc.c:2893
+#: config/tc-ppc.c:2900
msgid "missing symbol name"
msgstr ""
-#: config/tc-ppc.c:3069
+#: config/tc-ppc.c:3076
msgid "nested .bs blocks"
msgstr ""
-#: config/tc-ppc.c:3102
+#: config/tc-ppc.c:3109
msgid ".es without preceding .bs"
msgstr ""
-#: config/tc-ppc.c:3290
+#: config/tc-ppc.c:3297
msgid "non-constant byte count"
msgstr ""
-#: config/tc-ppc.c:3335
+#: config/tc-ppc.c:3342
msgid ".tc not in .toc section"
msgstr ""
-#: config/tc-ppc.c:3354
+#: config/tc-ppc.c:3361
msgid ".tc with no label"
msgstr ""
-#: config/tc-ppc.c:3429
+#: config/tc-ppc.c:3436
msgid "No previous section to return to. Directive ignored."
msgstr ""
#. Section Contents
#. unknown
-#: config/tc-ppc.c:3848
+#: config/tc-ppc.c:3855
msgid "Unsupported section attribute -- 'a'"
msgstr ""
-#: config/tc-ppc.c:4038
+#: config/tc-ppc.c:4045
msgid "bad symbol suffix"
msgstr ""
-#: config/tc-ppc.c:4131
+#: config/tc-ppc.c:4138
msgid "Unrecognized symbol suffix"
msgstr ""
-#: config/tc-ppc.c:4213
+#: config/tc-ppc.c:4220
msgid "two .function pseudo-ops with no intervening .ef"
msgstr ""
-#: config/tc-ppc.c:4226
+#: config/tc-ppc.c:4233
msgid ".ef with no preceding .function"
msgstr ""
-#: config/tc-ppc.c:4354
+#: config/tc-ppc.c:4361
#, c-format
msgid "warning: symbol %s has no csect"
msgstr ""
-#: config/tc-ppc.c:4655
+#: config/tc-ppc.c:4662
msgid "symbol in .toc does not match any .tc"
msgstr ""
-#: config/tc-ppc.c:4952
+#: config/tc-ppc.c:4956 config/tc-v850.c:2431
+msgid "unresolved expression that must be resolved"
+msgstr ""
+
+#: config/tc-ppc.c:4959
msgid "unsupported relocation type"
msgstr ""
-#: config/tc-ppc.c:5014
+#: config/tc-ppc.c:5021
#, c-format
msgid "cannot emit PC relative %s relocation against %s"
msgstr ""
-#: config/tc-ppc.c:5019
+#: config/tc-ppc.c:5026
#, c-format
msgid "cannot emit PC relative %s relocation"
msgstr ""
-#: config/tc-ppc.c:5081
+#: config/tc-ppc.c:5088
msgid "must branch to an address a multiple of 4"
msgstr ""
-#: config/tc-ppc.c:5085
+#: config/tc-ppc.c:5092
#, c-format
msgid "@local or @plt branch destination is too far away, %ld bytes"
msgstr ""
-#: config/tc-ppc.c:5109
+#: config/tc-ppc.c:5116
#, c-format
msgid "Gas failure, reloc value %d\n"
msgstr ""
@@ -6389,12 +6363,12 @@ msgstr ""
msgid "overflow in branch to %s; converted into longer instruction sequence"
msgstr ""
-#: config/tc-sh.c:2581 config/tc-sh.c:2609 config/tc-sparc.c:4084
-#: config/tc-sparc.c:4103
+#: config/tc-sh.c:2581 config/tc-sh.c:2629 config/tc-sparc.c:4084
+#: config/tc-sparc.c:4109
msgid "misaligned data"
msgstr ""
-#: config/tc-sh.c:2973
+#: config/tc-sh.c:3003
msgid "misaligned offset"
msgstr ""
@@ -6416,11 +6390,6 @@ msgstr ""
msgid "invalid architecture -A%s"
msgstr ""
-#: config/tc-sparc.c:548
-#, c-format
-msgid "No compiled in support for %d bit object file format"
-msgstr ""
-
#: config/tc-sparc.c:585
msgid "Unrecognized option following -K"
msgstr ""
@@ -6679,6 +6648,11 @@ msgstr ""
msgid "bad or unhandled relocation type: 0x%02x"
msgstr ""
+#: config/tc-sparc.c:3380
+#, c-format
+msgid "internal error: can't export reloc type %d (`%s')"
+msgstr ""
+
#: config/tc-sparc.c:3552
msgid "bad .reserve segment -- expected BSS segment"
msgstr ""
@@ -6717,11 +6691,11 @@ msgstr ""
msgid "Register symbol %s already defined."
msgstr ""
-#: config/tc-sparc.h:53
+#: config/tc-sparc.h:54
msgid "sparc convert_frag\n"
msgstr ""
-#: config/tc-sparc.h:55
+#: config/tc-sparc.h:56
msgid "estimate_size_before_relax called"
msgstr ""
@@ -7925,15 +7899,20 @@ msgstr ""
msgid "Can't close `%s'"
msgstr ""
-#: dwarf2dbg.c:338 dwarf2dbg.c:372
+#: dwarf2dbg.c:345 dwarf2dbg.c:379
msgid "File number less than zero"
msgstr ""
-#: dwarf2dbg.c:378
+#: dwarf2dbg.c:385
#, c-format
msgid "Unassigned file number %ld"
msgstr ""
+#: dwarf2dbg.c:1255 dwarf2dbg.c:1263 dwarf2dbg.c:1271 dwarf2dbg.c:1284
+#: dwarf2dbg.c:1291
+msgid "dwarf2 is not supported for this object file format"
+msgstr ""
+
#: ecoff.c:1555
#, c-format
msgid "String too big (%lu bytes)"
@@ -8182,7 +8161,7 @@ msgstr ""
msgid "Missing '%c' assumed"
msgstr ""
-#: expr.c:1024 read.c:3881
+#: expr.c:1024 read.c:3869
msgid "EBCDIC constants are not supported"
msgstr ""
@@ -8223,7 +8202,7 @@ msgstr ""
msgid "right operand is a float; integer 0 assumed"
msgstr ""
-#: expr.c:1793 symbols.c:1086
+#: expr.c:1793 symbols.c:1089
msgid "division by zero"
msgstr ""
@@ -8620,21 +8599,21 @@ msgstr ""
msgid "Error:"
msgstr ""
-#: listing.c:1124
+#: listing.c:1125
#, c-format
msgid "can't open list file: %s"
msgstr ""
-#: listing.c:1148
+#: listing.c:1149
#, c-format
msgid "error closing list file: %s"
msgstr ""
-#: listing.c:1227
+#: listing.c:1228
msgid "strange paper height, set to no form"
msgstr ""
-#: listing.c:1293
+#: listing.c:1294
msgid "New line in title"
msgstr ""
@@ -8741,302 +8720,302 @@ msgstr ""
msgid "Can't continue"
msgstr ""
-#: read.c:452
+#: read.c:445
#, c-format
msgid "error constructing %s pseudo-op table: %s"
msgstr ""
-#: read.c:809
+#: read.c:802
#, c-format
msgid "Unknown pseudo-op: `%s'"
msgstr ""
-#: read.c:941
+#: read.c:934
#, c-format
msgid "label \"%d$\" redefined"
msgstr ""
-#: read.c:1159
+#: read.c:1152
msgid ".abort detected. Abandoning ship."
msgstr ""
-#: read.c:1250 read.c:2039
+#: read.c:1238 read.c:2027
msgid "Alignment not a power of 2"
msgstr ""
-#: read.c:1259
+#: read.c:1247
#, c-format
msgid "Alignment too large: %u assumed"
msgstr ""
-#: read.c:1291
+#: read.c:1279
msgid "expected fill pattern missing"
msgstr ""
-#: read.c:1495
+#: read.c:1483
#, c-format
msgid "attempt to re-define symbol `%s'"
msgstr ""
#. Some of the back ends can't deal with non-positive line numbers.
#. Besides, it's silly.
-#: read.c:1619
+#: read.c:1607
#, c-format
msgid "Line numbers must be positive; line number %d rejected."
msgstr ""
-#: read.c:1647
+#: read.c:1635
msgid "start address not supported"
msgstr ""
-#: read.c:1657
+#: read.c:1645
msgid ".err encountered"
msgstr ""
-#: read.c:1676 read.c:1678
+#: read.c:1664 read.c:1666
#, c-format
msgid ".fail %ld encountered"
msgstr ""
-#: read.c:1715
+#: read.c:1703
#, c-format
msgid ".fill size clamped to %d."
msgstr ""
-#: read.c:1720
+#: read.c:1708
msgid "Size negative: .fill ignored."
msgstr ""
-#: read.c:1726
+#: read.c:1714
msgid "Repeat < 0, .fill ignored"
msgstr ""
-#: read.c:1886
+#: read.c:1874
#, c-format
msgid "unrecognized .linkonce type `%s'"
msgstr ""
-#: read.c:1899 read.c:1925
+#: read.c:1887 read.c:1913
msgid ".linkonce is not supported for this object file format"
msgstr ""
-#: read.c:1921
+#: read.c:1909
#, c-format
msgid "bfd_set_section_flags: %s"
msgstr ""
-#: read.c:1990
+#: read.c:1978
#, c-format
msgid "error setting flags for \".sbss\": %s"
msgstr ""
-#: read.c:2013
+#: read.c:2001
msgid "Expected comma after size"
msgstr ""
-#: read.c:2023
+#: read.c:2011
msgid "Missing alignment"
msgstr ""
-#: read.c:2174
+#: read.c:2162
msgid "bad expression"
msgstr ""
-#: read.c:2311
+#: read.c:2299
#, c-format
msgid "attempt to redefine pseudo-op `%s' ignored"
msgstr ""
-#: read.c:2377
+#: read.c:2365
#, c-format
msgid "invalid segment \"%s\"; segment \"%s\" assumed"
msgstr ""
-#: read.c:2383
+#: read.c:2371
msgid "ignoring fill value in absolute section"
msgstr ""
-#: read.c:2386
+#: read.c:2374
msgid "only constant offsets supported in absolute section"
msgstr ""
-#: read.c:2418
+#: read.c:2406
msgid "MRI style ORG pseudo-op not supported"
msgstr ""
-#: read.c:2507
+#: read.c:2495
msgid "unrecognized section type"
msgstr ""
-#: read.c:2575
+#: read.c:2563
#, c-format
msgid "unrecognized section type `%s'"
msgstr ""
-#: read.c:2589
+#: read.c:2577
msgid "absolute sections are not supported"
msgstr ""
-#: read.c:2604
+#: read.c:2592
#, c-format
msgid "unrecognized section command `%s'"
msgstr ""
-#: read.c:2692
+#: read.c:2680
#, c-format
msgid "%s without %s"
msgstr ""
-#: read.c:2893
+#: read.c:2881
msgid "Unsupported variable size or fill value"
msgstr ""
-#: read.c:2918
+#: read.c:2906
msgid ".space repeat count is zero, ignored"
msgstr ""
-#: read.c:2920
+#: read.c:2908
msgid ".space repeat count is negative, ignored"
msgstr ""
-#: read.c:2949
+#: read.c:2937
msgid "space allocation too complex in absolute section"
msgstr ""
-#: read.c:2955
+#: read.c:2943
msgid "space allocation too complex in common section"
msgstr ""
-#: read.c:3043 read.c:4126
+#: read.c:3031 read.c:4114
#, c-format
msgid "Bad floating literal: %s"
msgstr ""
-#: read.c:3116
+#: read.c:3104
#, c-format
msgid "Rest of line ignored. First ignored character is `%c'."
msgstr ""
-#: read.c:3119
+#: read.c:3107
#, c-format
msgid "Rest of line ignored. First ignored character valued 0x%x."
msgstr ""
-#: read.c:3170
+#: read.c:3158
msgid "illegal expression; zero assumed"
msgstr ""
-#: read.c:3172
+#: read.c:3160
msgid "missing expression; zero assumed"
msgstr ""
-#: read.c:3343
+#: read.c:3331
msgid "rva without symbol"
msgstr ""
-#: read.c:3467
+#: read.c:3455
msgid "attempt to store value in absolute section"
msgstr ""
-#: read.c:3505 read.c:4403
+#: read.c:3493 read.c:4391
msgid "zero assumed for missing expression"
msgstr ""
-#: read.c:3517 read.c:4415
+#: read.c:3505 read.c:4403
msgid "register value used as expression"
msgstr ""
#. Leading bits contain both 0s & 1s.
-#: read.c:3607
+#: read.c:3595
#, c-format
msgid "Value 0x%lx truncated to 0x%lx."
msgstr ""
-#: read.c:3623
+#: read.c:3611
#, c-format
msgid "Bignum truncated to %d bytes"
msgstr ""
-#: read.c:3700
+#: read.c:3688
#, c-format
msgid "unsupported BFD relocation size %u"
msgstr ""
-#: read.c:3790
+#: read.c:3778
msgid "using a bit field width of zero"
msgstr ""
-#: read.c:3798
+#: read.c:3786
#, c-format
msgid "field width \"%s\" too complex for a bitfield"
msgstr ""
-#: read.c:3806
+#: read.c:3794
#, c-format
msgid "field width %lu too big to fit in %d bytes: truncated to %d bits"
msgstr ""
-#: read.c:3828
+#: read.c:3816
#, c-format
msgid "field value \"%s\" too complex for a bitfield"
msgstr ""
-#: read.c:3954
+#: read.c:3942
msgid "Unresolvable or nonpositive repeat count; using 1"
msgstr ""
-#: read.c:4005
+#: read.c:3993
#, c-format
msgid "Unknown floating type type '%c'"
msgstr ""
-#: read.c:4027
+#: read.c:4015
msgid "Floating point constant too large"
msgstr ""
-#: read.c:4148
+#: read.c:4136
msgid "unresolvable or nonpositive repeat count; using 1"
msgstr ""
-#: read.c:4546
+#: read.c:4534
msgid "Expected <nn>"
msgstr ""
#. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:4579 read.c:4665
+#: read.c:4567 read.c:4653
msgid "Unterminated string: Newline inserted."
msgstr ""
-#: read.c:4673
+#: read.c:4661
msgid "Bad escaped character in string, '?' assumed"
msgstr ""
-#: read.c:4699
+#: read.c:4687
msgid "expected address expression; zero assumed"
msgstr ""
-#: read.c:4719
+#: read.c:4707
#, c-format
msgid "symbol \"%s\" undefined; zero assumed"
msgstr ""
-#: read.c:4722
+#: read.c:4710
msgid "some symbol undefined; zero assumed"
msgstr ""
-#: read.c:4775
+#: read.c:4763
msgid "This string may not contain '\\0'"
msgstr ""
-#: read.c:4812
+#: read.c:4800
msgid "Missing string"
msgstr ""
-#: read.c:5034
+#: read.c:5022
msgid "missing .func"
msgstr ""
-#: read.c:5051
+#: read.c:5039
msgid ".endfunc missing for previous .func"
msgstr ""
@@ -9058,151 +9037,151 @@ msgstr ""
msgid "Attempt to switch to nonexistent segment \"%s\""
msgstr ""
-#: symbols.c:354 symbols.c:453
+#: symbols.c:357 symbols.c:456
#, c-format
msgid "Symbol %s already defined."
msgstr ""
-#: symbols.c:439
+#: symbols.c:442
#, c-format
msgid "Symbol \"%s\" is already defined as \"%s\"/%s%ld."
msgstr ""
-#: symbols.c:516 symbols.c:523
+#: symbols.c:519 symbols.c:526
#, c-format
msgid "Inserting \"%s\" into symbol table failed: %s"
msgstr ""
-#: symbols.c:869
+#: symbols.c:872
#, c-format
msgid "Symbol definition loop encountered at %s"
msgstr ""
-#: symbols.c:1047 symbols.c:1051
+#: symbols.c:1050 symbols.c:1054
#, c-format
msgid "undefined symbol %s in operation"
msgstr ""
-#: symbols.c:1056
+#: symbols.c:1059
msgid "invalid section for operation"
msgstr ""
-#: symbols.c:1061 symbols.c:1065
+#: symbols.c:1064 symbols.c:1068
#, c-format
msgid "undefined symbol %s in operation setting %s"
msgstr ""
-#: symbols.c:1070
+#: symbols.c:1073
#, c-format
msgid "invalid section for operation setting %s"
msgstr ""
-#: symbols.c:1088
+#: symbols.c:1091
#, c-format
msgid "division by zero when setting %s"
msgstr ""
-#: symbols.c:1160 write.c:1926
+#: symbols.c:1163 write.c:1945
#, c-format
msgid "can't resolve value for symbol \"%s\""
msgstr ""
-#: symbols.c:1527
+#: symbols.c:1533
#, c-format
msgid "\"%d\" (instance number %d of a %s label)"
msgstr ""
-#: symbols.c:1577
+#: symbols.c:1589
#, c-format
msgid "Attempt to get value of unresolved symbol %s"
msgstr ""
-#: write.c:178
+#: write.c:172
#, c-format
msgid "field fx_size too small to hold %d"
msgstr ""
-#: write.c:315
+#: write.c:309
msgid "rva not supported"
msgstr ""
-#: write.c:509
+#: write.c:517
#, c-format
msgid "attempt to .org/.space backwards? (%ld)"
msgstr ""
-#: write.c:987
+#: write.c:995
msgid "relocation out of range"
msgstr ""
-#: write.c:990
+#: write.c:998
#, c-format
msgid "%s:%u: bad return from bfd_install_relocation: %x"
msgstr ""
-#: write.c:1035
+#: write.c:1043
msgid "internal error: fixup not contained within frag"
msgstr ""
-#: write.c:1051
+#: write.c:1059
#, c-format
msgid "%s:%u: bad return from bfd_install_relocation"
msgstr ""
-#: write.c:1138 write.c:1162
+#: write.c:1146 write.c:1170
#, c-format
msgid "FATAL: Can't write %s"
msgstr ""
-#: write.c:1194
+#: write.c:1202
msgid "Cannot write to output file."
msgstr ""
-#: write.c:1432
+#: write.c:1451
#, c-format
msgid "%d error%s, %d warning%s, generating bad object file.\n"
msgstr ""
-#: write.c:1439
+#: write.c:1458
#, c-format
msgid "%d error%s, %d warning%s, no object file generated.\n"
msgstr ""
-#: write.c:1863
+#: write.c:1882
#, c-format
msgid "local label %s is not defined"
msgstr ""
-#: write.c:2167
+#: write.c:2187
#, c-format
msgid "alignment padding (%lu bytes) not a multiple of %ld"
msgstr ""
-#: write.c:2277
+#: write.c:2297
#, c-format
msgid ".word %s-%s+%s didn't fit"
msgstr ""
-#: write.c:2357
+#: write.c:2378
msgid "attempt to .org backwards ignored"
msgstr ""
-#: write.c:2381
+#: write.c:2402
msgid ".space specifies non-absolute value"
msgstr ""
-#: write.c:2385
+#: write.c:2406
msgid ".space or .fill with negative value, ignored"
msgstr ""
-#: write.c:2636
+#: write.c:2657
#, c-format
msgid ""
"Subtraction of two symbols in different sections \"%s\" {%s section} - "
"\"%s\" {%s section} at file address %s."
msgstr ""
-#: write.c:2790
+#: write.c:2811
#, c-format
msgid "Value of %s too large for field of %d bytes at %s"
msgstr ""
diff --git a/gas/struc-symbol.h b/gas/struc-symbol.h
index 1560f9a..485ba5a 100644
--- a/gas/struc-symbol.h
+++ b/gas/struc-symbol.h
@@ -22,6 +22,12 @@
#ifndef __struc_symbol_h__
#define __struc_symbol_h__
+#ifdef BFD_ASSEMBLER
+/* The BFD code wants to walk the list in both directions. */
+#undef SYMBOLS_NEED_BACKPOINTERS
+#define SYMBOLS_NEED_BACKPOINTERS
+#endif
+
/* The information we keep for a symbol. Note that the symbol table
holds pointers both to this and to local_symbol structures. See
below. */
@@ -89,6 +95,10 @@ struct symbol
#ifdef TC_SYMFIELD_TYPE
TC_SYMFIELD_TYPE sy_tc;
#endif
+
+#ifdef TARGET_SYMBOL_FIELDS
+ TARGET_SYMBOL_FIELDS
+#endif
};
#ifdef BFD_ASSEMBLER
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 1c6cd51..4f1ddd8 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,53 @@
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * gas/arc/alias.*: Removed.
+ * gas/arc/branch.*: Likewise.
+ * gas/arc/insn3.*: Likewise.
+ * gas/arc/math.*: Likewise.
+ * gas/arc/sshift.*: Likewise.
+ * gas/arc/arc.exp: Simplified test process for base case
+ instruction set by adding run_dump_test cases for all base
+ instructions.
+ * gas/arc/adc.s, gas/arc/adc.d: New test cases and dump.
+ * gas/arc/add.s, gas/arc/add.d: Likewise.
+ * gas/arc/and.s, gas/arc/and.d: Likewise.
+ * gas/arc/asl.s, gas/arc/asl.d: Likewise.
+ * gas/arc/asr.s, gas/arc/asr.d: Likewise.
+ * gas/arc/b.s, gas/arc/b.d: Likewise.
+ * gas/arc/bic.s, gas/arc/bic.d: Likewise.
+ * gas/arc/bl.s, gas/arc/bl.d: Likewise.
+ * gas/arc/brk.s, gas/arc/brk.d: Likewise.
+ * gas/arc/extb.s, gas/arc/extb.d: Likewise.
+ * gas/arc/extw.s, gas/arc/extw.d: Likewise.
+ * gas/arc/flag.s, gas/arc/flag.d: Likewise.
+ * gas/arc/j.s, gas/arc/j.d: Likewise.
+ * gas/arc/jl.s, gas/arc/jl.d: Likewise.
+ * gas/arc/ld.s, gas/arc/ld.d: Likewise.
+ * gas/arc/ld2.s, gas/arc/ld2.d: Likewise.
+ * gas/arc/lp.s, gas/arc/lp.d: Likewise.
+ * gas/arc/lsr.s, gas/arc/lsr.d: Likewise.
+ * gas/arc/mov.s, gas/arc/mov.d: Likewise.
+ * gas/arc/nop.s, gas/arc/nop.d: Likewise.
+ * gas/arc/or.s, gas/arc/or.d: Likewise.
+ * gas/arc/rlc.s, gas/arc/rlc.d: Likewise.
+ * gas/arc/ror.s, gas/arc/ror.d: Likewise.
+ * gas/arc/rrc.s, gas/arc/rrc.d: Likewise.
+ * gas/arc/sbc.s, gas/arc/sbc.d: Likewise.
+ * gas/arc/sexb.s, gas/arc/sexb.d: Likewise.
+ * gas/arc/sexw.s, gas/arc/sexw.d: Likewise.
+ * gas/arc/sleep.s, gas/arc/sleep.d: Likewise.
+ * gas/arc/add.s, gas/arc/add.d: Likewise.
+ * gas/arc/st.s, gas/arc/st.d: Likewise.
+ * gas/arc/sub.s, gas/arc/sub.d: Likewise.
+ * gas/arc/swi.s, gas/arc/swi.d: Likewise.
+ * gas/arc/xor.s, gas/arc/xor.d: Likewise.
+ * gas/arc/warn.s: Removed warning test case for setting of flags
+ followed by conditional branch, an arc5 only feature.
+
+ * gas/ieee-fp/x930509a.exp: Skip test if target also arc*-*-*.
+
+ * gas/vtable/vtable.exp: Skip tests if target also arc*-*-*.
+
2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* gas/m68hc11/opers12.s: Add more tests for index post byte.
diff --git a/gas/testsuite/gas/arc/adc.d b/gas/testsuite/gas/arc/adc.d
new file mode 100644
index 0000000..7cb8523
--- /dev/null
+++ b/gas/testsuite/gas/arc/adc.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 48 48008400 adc r0,r1,r2
+ 4: 00 b8 4d 4b 4b4db800 adc gp,fp,sp
+ 8: 00 3e af 4b 4baf3e00 adc ilink1,ilink2,blink
+ c: 00 f8 1d 4f 4f1df800 adc r56,r59,lp_count
+ 10: 00 fe 00 48 4800fe00 adc r0,r1,0
+ 14: 00 84 1f 48 481f8400 adc r0,0,r2
+ 18: 00 84 e0 4f 4fe08400 adc 0,r1,r2
+ 1c: ff ff 00 48 4800ffff adc r0,r1,-1
+ 20: ff 85 1f 48 481f85ff adc r0,-1,r2
+ 24: 00 84 e0 4f 4fe08400 adc 0,r1,r2
+ 28: ff fe 00 48 4800feff adc r0,r1,255
+ 2c: ff 84 1f 48 481f84ff adc r0,255,r2
+ 30: 00 84 e0 4f 4fe08400 adc 0,r1,r2
+ 34: 00 ff 00 48 4800ff00 adc r0,r1,-256
+ 38: 00 85 1f 48 481f8500 adc r0,-256,r2
+ 3c: 00 84 e0 4f 4fe08400 adc 0,r1,r2
+ 40: 00 fc 00 48 4800fc00 adc r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 48 481f0400 adc r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 48 481ffcff adc r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 48 481f7eff adc r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 48 4800fc00 adc r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 48 48008400 adc r0,r1,r2
+ 6c: 00 0a 62 48 48620a00 adc r3,r4,r5
+ 70: 01 90 c3 48 48c39001 adc.z r6,r7,r8
+ 74: 01 16 25 49 49251601 adc.z r9,r10,r11
+ 78: 02 9c 86 49 49869c02 adc.nz r12,r13,r14
+ 7c: 02 22 e8 49 49e82202 adc.nz r15,r16,r17
+ 80: 03 a8 49 4a 4a49a803 adc.p r18,r19,r20
+ 84: 03 2e ab 4a 4aab2e03 adc.p r21,r22,r23
+ 88: 04 b4 0c 4b 4b0cb404 adc.n r24,r25,gp
+ 8c: 04 3a 6e 4b 4b6e3a04 adc.n fp,sp,ilink1
+ 90: 05 c0 cf 4b 4bcfc005 adc.c ilink2,blink,r32
+ 94: 05 46 31 4c 4c314605 adc.c r33,r34,r35
+ 98: 05 cc 92 4c 4c92cc05 adc.c r36,r37,r38
+ 9c: 06 52 f4 4c 4cf45206 adc.nc r39,r40,r41
+ a0: 06 d8 55 4d 4d55d806 adc.nc r42,r43,r44
+ a4: 06 5e b7 4d 4db75e06 adc.nc r45,r46,r47
+ a8: 07 e4 18 4e 4e18e407 adc.v r48,r49,r50
+ ac: 07 6a 1a 4f 4f1a6a07 adc.v r56,r52,r53
+ b0: 08 f0 1b 4f 4f1bf008 adc.nv r56,r55,r56
+ b4: 08 76 1d 4f 4f1d7608 adc.nv r56,r58,r59
+ b8: 09 00 9e 4f 4f9e0009 adc.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 48 48007c0a adc.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 48 483f020b adc.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 48 487f060d adc.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 4f 4fdf080e adc.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 4f 4fc2fc0f adc.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 48 48008500 adc.f r0,r1,r2
+ e8: 01 fa 00 48 4800fa01 adc.f r0,r1,1
+ ec: 01 84 1e 48 481e8401 adc.f r0,1,r2
+ f0: 00 85 e0 4f 4fe08500 adc.f 0,r1,r2
+ f4: 00 fd 00 48 4800fd00 adc.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 48 481f0500 adc.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 48 48008501 adc.z.f r0,r1,r2
+ 108: 02 fd 00 48 4800fd02 adc.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 48 481f050b adc.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 4f 4fc08509 adc.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 48 4800fd0c adc.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 48 481f050a adc.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/adc.s b/gas/testsuite/gas/arc/adc.s
new file mode 100644
index 0000000..162f6b8
--- /dev/null
+++ b/gas/testsuite/gas/arc/adc.s
@@ -0,0 +1,68 @@
+# adc test
+
+ adc r0,r1,r2
+ adc r26,fp,sp
+ adc ilink1,ilink2,blink
+ adc r56,r59,lp_count
+
+ adc r0,r1,0
+ adc r0,0,r2
+ adc 0,r1,r2
+ adc r0,r1,-1
+ adc r0,-1,r2
+ adc -1,r1,r2
+ adc r0,r1,255
+ adc r0,255,r2
+ adc 255,r1,r2
+ adc r0,r1,-256
+ adc r0,-256,r2
+ adc -256,r1,r2
+
+ adc r0,r1,256
+ adc r0,-257,r2
+
+ adc r0,255,256
+ adc r0,256,255
+
+ adc r0,r1,foo
+
+ adc.al r0,r1,r2
+ adc.ra r3,r4,r5
+ adc.eq r6,r7,r8
+ adc.z r9,r10,r11
+ adc.ne r12,r13,r14
+ adc.nz r15,r16,r17
+ adc.pl r18,r19,r20
+ adc.p r21,r22,r23
+ adc.mi r24,r25,r26
+ adc.n r27,r28,r29
+ adc.cs r30,r31,r32
+ adc.c r33,r34,r35
+ adc.lo r36,r37,r38
+ adc.cc r39,r40,r41
+ adc.nc r42,r43,r44
+ adc.hs r45,r46,r47
+ adc.vs r48,r49,r50
+ adc.v r56,r52,r53
+ adc.vc r56,r55,r56
+ adc.nv r56,r58,r59
+ adc.gt r60,r60,r0
+ adc.ge r0,r0,0
+ adc.lt r1,1,r1
+ adc.hi r3,3,r3
+ adc.ls 4,4,r4
+ adc.pnz 5,r5,5
+
+ adc.f r0,r1,r2
+ adc.f r0,r1,1
+ adc.f r0,1,r2
+ adc.f 0,r1,r2
+ adc.f r0,r1,512
+ adc.f r0,512,r2
+
+ adc.eq.f r0,r1,r2
+ adc.ne.f r0,r1,0
+ adc.lt.f r0,0,r2
+ adc.gt.f 0,r1,r2
+ adc.le.f r0,r1,512
+ adc.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/add.d b/gas/testsuite/gas/arc/add.d
new file mode 100644
index 0000000..864bc4d
--- /dev/null
+++ b/gas/testsuite/gas/arc/add.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 40 40008400 add r0,r1,r2
+ 4: 00 b8 4d 43 434db800 add gp,fp,sp
+ 8: 00 3e af 43 43af3e00 add ilink1,ilink2,blink
+ c: 00 f8 1d 47 471df800 add r56,r59,lp_count
+ 10: 00 fe 00 40 4000fe00 add r0,r1,0
+ 14: 00 84 1f 40 401f8400 add r0,0,r2
+ 18: 00 84 e0 47 47e08400 add 0,r1,r2
+ 1c: ff ff 00 40 4000ffff add r0,r1,-1
+ 20: ff 85 1f 40 401f85ff add r0,-1,r2
+ 24: 00 84 e0 47 47e08400 add 0,r1,r2
+ 28: ff fe 00 40 4000feff add r0,r1,255
+ 2c: ff 84 1f 40 401f84ff add r0,255,r2
+ 30: 00 84 e0 47 47e08400 add 0,r1,r2
+ 34: 00 ff 00 40 4000ff00 add r0,r1,-256
+ 38: 00 85 1f 40 401f8500 add r0,-256,r2
+ 3c: 00 84 e0 47 47e08400 add 0,r1,r2
+ 40: 00 fc 00 40 4000fc00 add r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 40 401f0400 add r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 40 401ffcff add r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 40 401f7eff add r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 40 4000fc00 add r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 40 40008400 add r0,r1,r2
+ 6c: 00 0a 62 40 40620a00 add r3,r4,r5
+ 70: 01 90 c3 40 40c39001 add.z r6,r7,r8
+ 74: 01 16 25 41 41251601 add.z r9,r10,r11
+ 78: 02 9c 86 41 41869c02 add.nz r12,r13,r14
+ 7c: 02 22 e8 41 41e82202 add.nz r15,r16,r17
+ 80: 03 a8 49 42 4249a803 add.p r18,r19,r20
+ 84: 03 2e ab 42 42ab2e03 add.p r21,r22,r23
+ 88: 04 b4 0c 43 430cb404 add.n r24,r25,gp
+ 8c: 04 3a 6e 43 436e3a04 add.n fp,sp,ilink1
+ 90: 05 c0 cf 43 43cfc005 add.c ilink2,blink,r32
+ 94: 05 46 31 44 44314605 add.c r33,r34,r35
+ 98: 05 cc 92 44 4492cc05 add.c r36,r37,r38
+ 9c: 06 52 f4 44 44f45206 add.nc r39,r40,r41
+ a0: 06 d8 55 45 4555d806 add.nc r42,r43,r44
+ a4: 06 5e b7 45 45b75e06 add.nc r45,r46,r47
+ a8: 07 e4 18 46 4618e407 add.v r48,r49,r50
+ ac: 07 6a 1a 47 471a6a07 add.v r56,r52,r53
+ b0: 08 f0 1b 47 471bf008 add.nv r56,r55,r56
+ b4: 08 76 1d 47 471d7608 add.nv r56,r58,r59
+ b8: 09 00 9e 47 479e0009 add.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 40 40007c0a add.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 40 403f020b add.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 40 407f060d add.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 47 47df080e add.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 47 47c2fc0f add.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 40 40008500 add.f r0,r1,r2
+ e8: 01 fa 00 40 4000fa01 add.f r0,r1,1
+ ec: 01 84 1e 40 401e8401 add.f r0,1,r2
+ f0: 00 85 e0 47 47e08500 add.f 0,r1,r2
+ f4: 00 fd 00 40 4000fd00 add.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 40 401f0500 add.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 40 40008501 add.z.f r0,r1,r2
+ 108: 02 fd 00 40 4000fd02 add.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 40 401f050b add.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 47 47c08509 add.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 40 4000fd0c add.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 40 401f050a add.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/add.s b/gas/testsuite/gas/arc/add.s
new file mode 100644
index 0000000..8e74971
--- /dev/null
+++ b/gas/testsuite/gas/arc/add.s
@@ -0,0 +1,68 @@
+# add test
+
+ add r0,r1,r2
+ add r26,fp,sp
+ add ilink1,ilink2,blink
+ add r56,r59,lp_count
+
+ add r0,r1,0
+ add r0,0,r2
+ add 0,r1,r2
+ add r0,r1,-1
+ add r0,-1,r2
+ add -1,r1,r2
+ add r0,r1,255
+ add r0,255,r2
+ add 255,r1,r2
+ add r0,r1,-256
+ add r0,-256,r2
+ add -256,r1,r2
+
+ add r0,r1,256
+ add r0,-257,r2
+
+ add r0,255,256
+ add r0,256,255
+
+ add r0,r1,foo
+
+ add.al r0,r1,r2
+ add.ra r3,r4,r5
+ add.eq r6,r7,r8
+ add.z r9,r10,r11
+ add.ne r12,r13,r14
+ add.nz r15,r16,r17
+ add.pl r18,r19,r20
+ add.p r21,r22,r23
+ add.mi r24,r25,r26
+ add.n r27,r28,r29
+ add.cs r30,r31,r32
+ add.c r33,r34,r35
+ add.lo r36,r37,r38
+ add.cc r39,r40,r41
+ add.nc r42,r43,r44
+ add.hs r45,r46,r47
+ add.vs r48,r49,r50
+ add.v r56,r52,r53
+ add.vc r56,r55,r56
+ add.nv r56,r58,r59
+ add.gt r60,r60,r0
+ add.ge r0,r0,0
+ add.lt r1,1,r1
+ add.hi r3,3,r3
+ add.ls 4,4,r4
+ add.pnz 5,r5,5
+
+ add.f r0,r1,r2
+ add.f r0,r1,1
+ add.f r0,1,r2
+ add.f 0,r1,r2
+ add.f r0,r1,512
+ add.f r0,512,r2
+
+ add.eq.f r0,r1,r2
+ add.ne.f r0,r1,0
+ add.lt.f r0,0,r2
+ add.gt.f 0,r1,r2
+ add.le.f r0,r1,512
+ add.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/and.d b/gas/testsuite/gas/arc/and.d
new file mode 100644
index 0000000..5fca082
--- /dev/null
+++ b/gas/testsuite/gas/arc/and.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 60 60008400 and r0,r1,r2
+ 4: 00 b8 4d 63 634db800 and gp,fp,sp
+ 8: 00 3e af 63 63af3e00 and ilink1,ilink2,blink
+ c: 00 f8 1d 67 671df800 and r56,r59,lp_count
+ 10: 00 fe 00 60 6000fe00 and r0,r1,0
+ 14: 00 84 1f 60 601f8400 and r0,0,r2
+ 18: 00 84 e0 67 67e08400 and 0,r1,r2
+ 1c: ff ff 00 60 6000ffff and r0,r1,-1
+ 20: ff 85 1f 60 601f85ff and r0,-1,r2
+ 24: 00 84 e0 67 67e08400 and 0,r1,r2
+ 28: ff fe 00 60 6000feff and r0,r1,255
+ 2c: ff 84 1f 60 601f84ff and r0,255,r2
+ 30: 00 84 e0 67 67e08400 and 0,r1,r2
+ 34: 00 ff 00 60 6000ff00 and r0,r1,-256
+ 38: 00 85 1f 60 601f8500 and r0,-256,r2
+ 3c: 00 84 e0 67 67e08400 and 0,r1,r2
+ 40: 00 fc 00 60 6000fc00 and r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 60 601f0400 and r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 60 601ffcff and r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 60 601f7eff and r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 60 6000fc00 and r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 60 60008400 and r0,r1,r2
+ 6c: 00 0a 62 60 60620a00 and r3,r4,r5
+ 70: 01 90 c3 60 60c39001 and.z r6,r7,r8
+ 74: 01 16 25 61 61251601 and.z r9,r10,r11
+ 78: 02 9c 86 61 61869c02 and.nz r12,r13,r14
+ 7c: 02 22 e8 61 61e82202 and.nz r15,r16,r17
+ 80: 03 a8 49 62 6249a803 and.p r18,r19,r20
+ 84: 03 2e ab 62 62ab2e03 and.p r21,r22,r23
+ 88: 04 b4 0c 63 630cb404 and.n r24,r25,gp
+ 8c: 04 3a 6e 63 636e3a04 and.n fp,sp,ilink1
+ 90: 05 c0 cf 63 63cfc005 and.c ilink2,blink,r32
+ 94: 05 46 31 64 64314605 and.c r33,r34,r35
+ 98: 05 cc 92 64 6492cc05 and.c r36,r37,r38
+ 9c: 06 52 f4 64 64f45206 and.nc r39,r40,r41
+ a0: 06 d8 55 65 6555d806 and.nc r42,r43,r44
+ a4: 06 5e b7 65 65b75e06 and.nc r45,r46,r47
+ a8: 07 e4 18 66 6618e407 and.v r48,r49,r50
+ ac: 07 6a 1a 67 671a6a07 and.v r56,r52,r53
+ b0: 08 f0 1b 67 671bf008 and.nv r56,r55,r56
+ b4: 08 76 1d 67 671d7608 and.nv r56,r58,r59
+ b8: 09 00 9e 67 679e0009 and.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 60 60007c0a and.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 60 603f020b and.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 60 607f060d and.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 67 67df080e and.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 67 67c2fc0f and.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 60 60008500 and.f r0,r1,r2
+ e8: 01 fa 00 60 6000fa01 and.f r0,r1,1
+ ec: 01 84 1e 60 601e8401 and.f r0,1,r2
+ f0: 00 85 e0 67 67e08500 and.f 0,r1,r2
+ f4: 00 fd 00 60 6000fd00 and.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 60 601f0500 and.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 60 60008501 and.z.f r0,r1,r2
+ 108: 02 fd 00 60 6000fd02 and.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 60 601f050b and.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 67 67c08509 and.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 60 6000fd0c and.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 60 601f050a and.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/and.s b/gas/testsuite/gas/arc/and.s
new file mode 100644
index 0000000..ddd7865
--- /dev/null
+++ b/gas/testsuite/gas/arc/and.s
@@ -0,0 +1,68 @@
+# and test
+
+ and r0,r1,r2
+ and r26,fp,sp
+ and ilink1,ilink2,blink
+ and r56,r59,lp_count
+
+ and r0,r1,0
+ and r0,0,r2
+ and 0,r1,r2
+ and r0,r1,-1
+ and r0,-1,r2
+ and -1,r1,r2
+ and r0,r1,255
+ and r0,255,r2
+ and 255,r1,r2
+ and r0,r1,-256
+ and r0,-256,r2
+ and -256,r1,r2
+
+ and r0,r1,256
+ and r0,-257,r2
+
+ and r0,255,256
+ and r0,256,255
+
+ and r0,r1,foo
+
+ and.al r0,r1,r2
+ and.ra r3,r4,r5
+ and.eq r6,r7,r8
+ and.z r9,r10,r11
+ and.ne r12,r13,r14
+ and.nz r15,r16,r17
+ and.pl r18,r19,r20
+ and.p r21,r22,r23
+ and.mi r24,r25,r26
+ and.n r27,r28,r29
+ and.cs r30,r31,r32
+ and.c r33,r34,r35
+ and.lo r36,r37,r38
+ and.cc r39,r40,r41
+ and.nc r42,r43,r44
+ and.hs r45,r46,r47
+ and.vs r48,r49,r50
+ and.v r56,r52,r53
+ and.vc r56,r55,r56
+ and.nv r56,r58,r59
+ and.gt r60,r60,r0
+ and.ge r0,r0,0
+ and.lt r1,1,r1
+ and.hi r3,3,r3
+ and.ls 4,4,r4
+ and.pnz 5,r5,5
+
+ and.f r0,r1,r2
+ and.f r0,r1,1
+ and.f r0,1,r2
+ and.f 0,r1,r2
+ and.f r0,r1,512
+ and.f r0,512,r2
+
+ and.eq.f r0,r1,r2
+ and.ne.f r0,r1,0
+ and.lt.f r0,0,r2
+ and.gt.f 0,r1,r2
+ and.le.f r0,r1,512
+ and.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/arc.exp b/gas/testsuite/gas/arc/arc.exp
index b098453..2e115f9 100644
--- a/gas/testsuite/gas/arc/arc.exp
+++ b/gas/testsuite/gas/arc/arc.exp
@@ -1,114 +1,45 @@
-# ARC gas testsuite
-
-# Test an insn from a template .s/.d.
-# The best way to create the .d file is to run the tests without it, let
-# dejagnu crash, run as.new on the just built .s file, run objdump -dr on
-# the result of that, copy the result into the .d file, and edit in the
-# necessary patterns (@OC@, etc.). Sounds complicated but it's easy. The
-# catch is that we assume a working assembler is used to build it. That's
-# obviously not entirely kosher, but once the .d file is created one can
-# verify it's contents over time.
-#
-# Template patterns:
-# @OC@ - placeholder for the opcode
-# @IC+?@ - place holder for the insn code
-# @I3+??@ - place holder for the operation code of code 3 insns.
-
-proc test_template_insn { cpu tmpl opcode icode } {
- global srcdir subdir objdir
-
- # Change @OC@ in the template file to $opcode
-
- set in_fd [open $srcdir/$subdir/$tmpl.s r]
- set out_fd [open $objdir/$opcode.s w]
- # FIXME: check return codes
-
- puts $out_fd "\t.cpu $cpu\n"
- while { [gets $in_fd line] >= 0 } {
- regsub "@OC@" $line $opcode line
- puts $out_fd $line
- }
-
- close $in_fd
- close $out_fd
-
- # Create output template.
-
- set in_fd [open $srcdir/$subdir/$tmpl.d r]
- set out_fd [open $objdir/$opcode.d w]
- # FIXME: check return codes
-
- while { [gets $in_fd line] >= 0 } {
- regsub "@OC@" $line $opcode line
- #send_user "$line\n"
- if [string match "*@IC+?@*" $line] {
- # Insert the opcode. It occupies the top 5 bits.
- regexp "^(.*)@IC\\+(.)@(.*)$" $line junk leftpart n rightpart
- set n [expr ($icode << 3) + $n]
- set n [format "%02x" $n]
- puts $out_fd "$leftpart$n$rightpart"
- } elseif [string match "*@I3+??@*" $line] {
- # Insert insn 3 code (register C field)
- # b15=8/0, b8=1/0 (their respective hex values in the objdump)
- regexp "^(.*)@I3\\+(.)(.)@(.*)$" $line junk leftpart b15 b8 rightpart
- set n [expr ($icode << 1) + ($b15 << 4) + ($b8 << 0)]
- set n [format "%02x" $n]
- puts $out_fd "$leftpart$n$rightpart"
- } else {
- puts $out_fd $line
- }
- }
-
- close $in_fd
- close $out_fd
-
- # Finally, run the test.
-
- run_dump_test $objdir/$opcode
-
- # "make clean" won't delete these, so for now we must.
- catch "exec rm -f $objdir/$opcode.s $objdir/$opcode.d"
+# ARC base instruction set (to arc8)
+if [istarget arc*-*-*] then {
+ run_dump_test ld
+ run_dump_test ld2
+ run_dump_test st
+
+ # Specially encoded/single operand instructions
+ run_dump_test flag
+ run_dump_test brk
+ run_dump_test sleep
+ run_dump_test swi
+ run_dump_test asr
+ run_dump_test lsr
+ run_dump_test ror
+ run_dump_test rrc
+ run_dump_test sexb
+ run_dump_test sexw
+ run_dump_test extb
+ run_dump_test extw
+
+ run_dump_test b
+ run_dump_test bl
+ run_dump_test lp
+ run_dump_test j
+ run_dump_test jl
+ run_dump_test add
+ run_dump_test asl
+ # FIXME: ??? `lsl' gets dumped as `asl'
+ # run_dump_test lsl
+ run_dump_test adc
+ run_dump_test rlc
+ run_dump_test sub
+ run_dump_test sbc
+ run_dump_test and
+ run_dump_test mov
+ run_dump_test or
+ run_dump_test bic
+ run_dump_test xor
+ run_dump_test nop
}
-# Run the tests.
-
+# ARC library extensions
if [istarget arc*-*-*] then {
-
- test_template_insn base math adc 9
- test_template_insn base math add 8
- test_template_insn base math and 12
- test_template_insn base math bic 14
- test_template_insn base math or 13
- test_template_insn base math sbc 11
- test_template_insn base math sub 10
- test_template_insn base math xor 15
-
- test_template_insn base alias mov 12
- test_template_insn base alias rlc 9
- test_template_insn base alias asl 8
-# `lsl' gets dumped as `asl' so this must be tested elsewhere.
-# test_template_insn base alias lsl 8
-
- test_template_insn base sshift asr 1
- test_template_insn base sshift lsr 2
- test_template_insn base sshift ror 3
- test_template_insn base sshift rrc 4
-
- test_template_insn base branch b 4
- test_template_insn base branch bl 5
- test_template_insn base branch lp 6
-
- run_dump_test "j"
-
- test_template_insn base insn3 sexb 5
- test_template_insn base insn3 sexw 6
- test_template_insn base insn3 extb 7
- test_template_insn base insn3 extw 8
-
- run_dump_test "flag"
-# run_dump_test "nop"
-
- run_dump_test "ld"
- run_dump_test "st"
-
+ # *TODO*
}
diff --git a/gas/testsuite/gas/arc/asl.d b/gas/testsuite/gas/arc/asl.d
new file mode 100644
index 0000000..89aea0e
--- /dev/null
+++ b/gas/testsuite/gas/arc/asl.d
@@ -0,0 +1,68 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 82 00 40 40008200 asl r0,r1
+ 4: 00 38 6e 43 436e3800 asl fp,sp
+ 8: 00 fe 1f 40 401ffe00 asl r0,0
+ c: ff ff 3f 40 403fffff asl r1,-1
+ 10: 00 04 e1 47 47e10400 asl 0,r2
+ 14: 00 86 e1 47 47e18600 asl 0,r3
+ 18: ff fe 9f 40 409ffeff asl r4,255
+ 1c: 00 8a e2 47 47e28a00 asl 0,r5
+ 20: 00 ff df 40 40dfff00 asl r6,-256
+ 24: 00 8e e3 47 47e38e00 asl 0,r7
+ 28: 00 7c 1f 41 411f7c00 asl r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 7c 3f 41 413f7c00 asl r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 7c 7f 41 417f7c00 asl r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 7c ff 47 47ff7c00 asl 0,0x100
+ 44: 00 01 00 00
+ 48: 00 7c 1f 40 401f7c00 asl r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 00 82 00 40 40008200 asl r0,r1
+ 54: 00 08 62 40 40620800 asl r3,r4
+ 58: 01 8e c3 40 40c38e01 asl.z r6,r7
+ 5c: 01 14 25 41 41251401 asl.z r9,r10
+ 60: 02 9a 86 41 41869a02 asl.nz r12,r13
+ 64: 02 20 e8 41 41e82002 asl.nz r15,r16
+ 68: 03 a6 49 42 4249a603 asl.p r18,r19
+ 6c: 03 2c ab 42 42ab2c03 asl.p r21,r22
+ 70: 04 b2 0c 43 430cb204 asl.n r24,r25
+ 74: 04 38 6e 43 436e3804 asl.n fp,sp
+ 78: 05 be cf 43 43cfbe05 asl.c ilink2,blink
+ 7c: 05 44 31 44 44314405 asl.c r33,r34
+ 80: 05 ca 92 44 4492ca05 asl.c r36,r37
+ 84: 06 50 f4 44 44f45006 asl.nc r39,r40
+ 88: 06 d6 55 45 4555d606 asl.nc r42,r43
+ 8c: 06 5c b7 45 45b75c06 asl.nc r45,r46
+ 90: 07 e2 18 46 4618e207 asl.v r48,r49
+ 94: 07 64 39 46 46396407 asl.v r49,r50
+ 98: 08 ee 3b 46 463bee08 asl.nv r49,r55
+ 9c: 08 74 3d 46 463d7408 asl.nv r49,r58
+ a0: 09 78 9e 47 479e7809 asl.gt lp_count,lp_count
+ a4: 0a 7c 1f 40 401f7c0a asl.ge r0,0
+ a8: 00 00 00 00
+ ac: 0c 7c df 47 47df7c0c asl.le 0,2
+ b0: 02 00 00 00
+ b4: 0d 86 61 40 4061860d asl.hi r3,r3
+ b8: 0e 08 82 40 4082080e asl.ls r4,r4
+ bc: 0f 8a a2 40 40a28a0f asl.pnz r5,r5
+ c0: 00 83 00 40 40008300 asl.f r0,r1
+ c4: 01 fa 5e 40 405efa01 asl.f r2,1
+ c8: 00 87 e1 47 47e18700 asl.f 0,r3
+ cc: 00 09 e2 47 47e20900 asl.f 0,r4
+ d0: 00 7d bf 40 40bf7d00 asl.f r5,0x200
+ d4: 00 02 00 00
+ d8: 00 7d df 47 47df7d00 asl.f 0,0x200
+ dc: 00 02 00 00
+ e0: 01 83 00 40 40008301 asl.z.f r0,r1
+ e4: 02 7d 3f 40 403f7d02 asl.nz.f r1,0
+ e8: 00 00 00 00
diff --git a/gas/testsuite/gas/arc/asl.s b/gas/testsuite/gas/arc/asl.s
new file mode 100644
index 0000000..f931458
--- /dev/null
+++ b/gas/testsuite/gas/arc/asl.s
@@ -0,0 +1,58 @@
+# asl test
+
+ asl r0,r1
+ asl fp,sp
+
+ asl r0,0
+ asl r1,-1
+ asl 0,r2
+ asl -1,r3
+ asl r4,255
+ asl 255,r5
+ asl r6,-256
+ asl -256,r7
+
+ asl r8,256
+ asl r9,-257
+ asl r11,0x42424242
+
+ asl 255,256
+
+ asl r0,foo
+
+ asl.al r0,r1
+ asl.ra r3,r4
+ asl.eq r6,r7
+ asl.z r9,r10
+ asl.ne r12,r13
+ asl.nz r15,r16
+ asl.pl r18,r19
+ asl.p r21,r22
+ asl.mi r24,r25
+ asl.n r27,r28
+ asl.cs r30,r31
+ asl.c r33,r34
+ asl.lo r36,r37
+ asl.cc r39,r40
+ asl.nc r42,r43
+ asl.hs r45,r46
+ asl.vs r48,r49
+ asl.v r49,r50
+ asl.vc r49,r55
+ asl.nv r49,r58
+ asl.gt r60,r60
+ asl.ge r0,0
+ asl.le 2,2
+ asl.hi r3,r3
+ asl.ls r4,r4
+ asl.pnz r5,r5
+
+ asl.f r0,r1
+ asl.f r2,1
+ asl.f 1,r3
+ asl.f 0,r4
+ asl.f r5,512
+ asl.f 512,512
+
+ asl.eq.f r0,r1
+ asl.ne.f r1,0
diff --git a/gas/testsuite/gas/arc/asr.d b/gas/testsuite/gas/arc/asr.d
new file mode 100644
index 0000000..bb4c96e
--- /dev/null
+++ b/gas/testsuite/gas/arc/asr.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 82 00 18 18008200 asr r0,r1
+ 4: 00 02 6e 1b 1b6e0200 asr fp,sp
+ 8: 00 82 1f 18 181f8200 asr r0,0
+ c: ff 83 3f 18 183f83ff asr r1,-1
+ 10: 00 02 e1 1f 1fe10200 asr 0,r2
+ 14: 00 82 e1 1f 1fe18200 asr 0,r3
+ 18: ff 82 9f 18 189f82ff asr r4,255
+ 1c: 00 82 e2 1f 1fe28200 asr 0,r5
+ 20: 00 83 df 18 18df8300 asr r6,-256
+ 24: 00 82 e3 1f 1fe38200 asr 0,r7
+ 28: 00 02 1f 19 191f0200 asr r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 02 3f 19 193f0200 asr r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 02 7f 19 197f0200 asr r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 02 ff 1f 1fff0200 asr 0,0x100
+ 44: 00 01 00 00
+ 48: 00 02 1f 18 181f0200 asr r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 82 45 19 19458201 asr.z r10,r11
+ 54: 02 82 86 19 19868202 asr.nz r12,r13
+ 58: 0b 02 df 19 19df020b asr.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 02 ff 19 19ff0209 asr.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 83 00 18 18008300 asr.f r0,r1
+ 6c: 01 82 5e 18 185e8201 asr.f r2,1
+ 70: 00 03 e2 1f 1fe20300 asr.f 0,r4
+ 74: 00 03 bf 18 18bf0300 asr.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 03 df 1f 1fdf0300 asr.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 83 00 18 18008301 asr.z.f r0,r1
+ 88: 02 03 3f 18 183f0302 asr.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 03 c1 1f 1fc1030b asr.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 03 1f 18 181f030c asr.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 03 df 1f 1fdf0304 asr.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/asr.s b/gas/testsuite/gas/arc/asr.s
new file mode 100644
index 0000000..9998b34
--- /dev/null
+++ b/gas/testsuite/gas/arc/asr.s
@@ -0,0 +1,38 @@
+# asr test
+
+ asr r0,r1
+ asr fp,sp
+
+ asr r0,0
+ asr r1,-1
+ asr 0,r2
+ asr -1,r3
+ asr r4,255
+ asr 255,r5
+ asr r6,-256
+ asr -256,r7
+
+ asr r8,256
+ asr r9,-257
+ asr r11,0x42424242
+
+ asr 255,256
+
+ asr r0,foo
+
+ asr.eq r10,r11
+ asr.ne r12,r13
+ asr.lt r14,0
+ asr.gt r15,512
+
+ asr.f r0,r1
+ asr.f r2,1
+ asr.f 0,r4
+ asr.f r5,512
+ asr.f 512,512
+
+ asr.eq.f r0,r1
+ asr.ne.f r1,0
+ asr.lt.f 0,r2
+ asr.le.f r0,512
+ asr.n.f 512,512
diff --git a/gas/testsuite/gas/arc/b.d b/gas/testsuite/gas/arc/b.d
new file mode 100644
index 0000000..8c2eb01
--- /dev/null
+++ b/gas/testsuite/gas/arc/b.d
@@ -0,0 +1,76 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <text_label>:
+ 0: 80 ff ff 27 27ffff80 b 0 <text_label>
+
+ 4: 00 ff ff 27 27ffff00 b 0 <text_label>
+
+ 8: 80 fe ff 27 27fffe80 b 0 <text_label>
+
+ c: 01 fe ff 27 27fffe01 bz 0 <text_label>
+
+ 10: 81 fd ff 27 27fffd81 bz 0 <text_label>
+
+ 14: 02 fd ff 27 27fffd02 bnz 0 <text_label>
+
+ 18: 82 fc ff 27 27fffc82 bnz 0 <text_label>
+
+ 1c: 03 fc ff 27 27fffc03 bp 0 <text_label>
+
+ 20: 83 fb ff 27 27fffb83 bp 0 <text_label>
+
+ 24: 04 fb ff 27 27fffb04 bn 0 <text_label>
+
+ 28: 84 fa ff 27 27fffa84 bn 0 <text_label>
+
+ 2c: 05 fa ff 27 27fffa05 bc 0 <text_label>
+
+ 30: 85 f9 ff 27 27fff985 bc 0 <text_label>
+
+ 34: 05 f9 ff 27 27fff905 bc 0 <text_label>
+
+ 38: 86 f8 ff 27 27fff886 bnc 0 <text_label>
+
+ 3c: 06 f8 ff 27 27fff806 bnc 0 <text_label>
+
+ 40: 86 f7 ff 27 27fff786 bnc 0 <text_label>
+
+ 44: 07 f7 ff 27 27fff707 bv 0 <text_label>
+
+ 48: 87 f6 ff 27 27fff687 bv 0 <text_label>
+
+ 4c: 08 f6 ff 27 27fff608 bnv 0 <text_label>
+
+ 50: 88 f5 ff 27 27fff588 bnv 0 <text_label>
+
+ 54: 09 f5 ff 27 27fff509 bgt 0 <text_label>
+
+ 58: 8a f4 ff 27 27fff48a bge 0 <text_label>
+
+ 5c: 0b f4 ff 27 27fff40b blt 0 <text_label>
+
+ 60: 8c f3 ff 27 27fff38c ble 0 <text_label>
+
+ 64: 0d f3 ff 27 27fff30d bhi 0 <text_label>
+
+ 68: 8e f2 ff 27 27fff28e bls 0 <text_label>
+
+ 6c: 0f f2 ff 27 27fff20f bpnz 0 <text_label>
+
+ 70: a0 f1 ff 27 27fff1a0 b.d 0 <text_label>
+
+ 74: 00 f1 ff 27 27fff100 b 0 <text_label>
+
+ 78: c0 f0 ff 27 27fff0c0 b.jd 0 <text_label>
+
+ 7c: 21 f0 ff 27 27fff021 bz.d 0 <text_label>
+
+ 80: 82 ef ff 27 27ffef82 bnz 0 <text_label>
+
+ 84: 46 ef ff 27 27ffef46 bnc.jd 0 <text_label>
+
diff --git a/gas/testsuite/gas/arc/b.s b/gas/testsuite/gas/arc/b.s
new file mode 100644
index 0000000..a215fe4
--- /dev/null
+++ b/gas/testsuite/gas/arc/b.s
@@ -0,0 +1,40 @@
+# b test
+
+text_label:
+
+ b text_label
+ bal text_label
+ bra text_label
+ beq text_label
+ bz text_label
+ bne text_label
+ bnz text_label
+ bpl text_label
+ bp text_label
+ bmi text_label
+ bn text_label
+ bcs text_label
+ bc text_label
+ blo text_label
+ bcc text_label
+ bnc text_label
+ bhs text_label
+ bvs text_label
+ bv text_label
+ bvc text_label
+ bnv text_label
+ bgt text_label
+ bge text_label
+ blt text_label
+ ble text_label
+ bhi text_label
+ bls text_label
+ bpnz text_label
+
+ b.d text_label
+ b.nd text_label
+ b.jd text_label
+
+ beq.d text_label
+ bne.nd text_label
+ bcc.jd text_label
diff --git a/gas/testsuite/gas/arc/bic.d b/gas/testsuite/gas/arc/bic.d
new file mode 100644
index 0000000..5b2a233
--- /dev/null
+++ b/gas/testsuite/gas/arc/bic.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 70 70008400 bic r0,r1,r2
+ 4: 00 b8 4d 73 734db800 bic gp,fp,sp
+ 8: 00 3e af 73 73af3e00 bic ilink1,ilink2,blink
+ c: 00 f8 1d 77 771df800 bic r56,r59,lp_count
+ 10: 00 fe 00 70 7000fe00 bic r0,r1,0
+ 14: 00 84 1f 70 701f8400 bic r0,0,r2
+ 18: 00 84 e0 77 77e08400 bic 0,r1,r2
+ 1c: ff ff 00 70 7000ffff bic r0,r1,-1
+ 20: ff 85 1f 70 701f85ff bic r0,-1,r2
+ 24: 00 84 e0 77 77e08400 bic 0,r1,r2
+ 28: ff fe 00 70 7000feff bic r0,r1,255
+ 2c: ff 84 1f 70 701f84ff bic r0,255,r2
+ 30: 00 84 e0 77 77e08400 bic 0,r1,r2
+ 34: 00 ff 00 70 7000ff00 bic r0,r1,-256
+ 38: 00 85 1f 70 701f8500 bic r0,-256,r2
+ 3c: 00 84 e0 77 77e08400 bic 0,r1,r2
+ 40: 00 fc 00 70 7000fc00 bic r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 70 701f0400 bic r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 70 701ffcff bic r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 70 701f7eff bic r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 70 7000fc00 bic r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 70 70008400 bic r0,r1,r2
+ 6c: 00 0a 62 70 70620a00 bic r3,r4,r5
+ 70: 01 90 c3 70 70c39001 bic.z r6,r7,r8
+ 74: 01 16 25 71 71251601 bic.z r9,r10,r11
+ 78: 02 9c 86 71 71869c02 bic.nz r12,r13,r14
+ 7c: 02 22 e8 71 71e82202 bic.nz r15,r16,r17
+ 80: 03 a8 49 72 7249a803 bic.p r18,r19,r20
+ 84: 03 2e ab 72 72ab2e03 bic.p r21,r22,r23
+ 88: 04 b4 0c 73 730cb404 bic.n r24,r25,gp
+ 8c: 04 3a 6e 73 736e3a04 bic.n fp,sp,ilink1
+ 90: 05 c0 cf 73 73cfc005 bic.c ilink2,blink,r32
+ 94: 05 46 31 74 74314605 bic.c r33,r34,r35
+ 98: 05 cc 92 74 7492cc05 bic.c r36,r37,r38
+ 9c: 06 52 f4 74 74f45206 bic.nc r39,r40,r41
+ a0: 06 d8 55 75 7555d806 bic.nc r42,r43,r44
+ a4: 06 5e b7 75 75b75e06 bic.nc r45,r46,r47
+ a8: 07 e4 18 76 7618e407 bic.v r48,r49,r50
+ ac: 07 6a 1a 77 771a6a07 bic.v r56,r52,r53
+ b0: 08 f0 1b 77 771bf008 bic.nv r56,r55,r56
+ b4: 08 76 1d 77 771d7608 bic.nv r56,r58,r59
+ b8: 09 00 9e 77 779e0009 bic.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 70 70007c0a bic.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 70 703f020b bic.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 70 707f060d bic.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 77 77df080e bic.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 77 77c2fc0f bic.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 70 70008500 bic.f r0,r1,r2
+ e8: 01 fa 00 70 7000fa01 bic.f r0,r1,1
+ ec: 01 84 1e 70 701e8401 bic.f r0,1,r2
+ f0: 00 85 e0 77 77e08500 bic.f 0,r1,r2
+ f4: 00 fd 00 70 7000fd00 bic.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 70 701f0500 bic.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 70 70008501 bic.z.f r0,r1,r2
+ 108: 02 fd 00 70 7000fd02 bic.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 70 701f050b bic.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 77 77c08509 bic.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 70 7000fd0c bic.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 70 701f050a bic.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/bic.s b/gas/testsuite/gas/arc/bic.s
new file mode 100644
index 0000000..fc5eb19
--- /dev/null
+++ b/gas/testsuite/gas/arc/bic.s
@@ -0,0 +1,68 @@
+# bic test
+
+ bic r0,r1,r2
+ bic r26,fp,sp
+ bic ilink1,ilink2,blink
+ bic r56,r59,lp_count
+
+ bic r0,r1,0
+ bic r0,0,r2
+ bic 0,r1,r2
+ bic r0,r1,-1
+ bic r0,-1,r2
+ bic -1,r1,r2
+ bic r0,r1,255
+ bic r0,255,r2
+ bic 255,r1,r2
+ bic r0,r1,-256
+ bic r0,-256,r2
+ bic -256,r1,r2
+
+ bic r0,r1,256
+ bic r0,-257,r2
+
+ bic r0,255,256
+ bic r0,256,255
+
+ bic r0,r1,foo
+
+ bic.al r0,r1,r2
+ bic.ra r3,r4,r5
+ bic.eq r6,r7,r8
+ bic.z r9,r10,r11
+ bic.ne r12,r13,r14
+ bic.nz r15,r16,r17
+ bic.pl r18,r19,r20
+ bic.p r21,r22,r23
+ bic.mi r24,r25,r26
+ bic.n r27,r28,r29
+ bic.cs r30,r31,r32
+ bic.c r33,r34,r35
+ bic.lo r36,r37,r38
+ bic.cc r39,r40,r41
+ bic.nc r42,r43,r44
+ bic.hs r45,r46,r47
+ bic.vs r48,r49,r50
+ bic.v r56,r52,r53
+ bic.vc r56,r55,r56
+ bic.nv r56,r58,r59
+ bic.gt r60,r60,r0
+ bic.ge r0,r0,0
+ bic.lt r1,1,r1
+ bic.hi r3,3,r3
+ bic.ls 4,4,r4
+ bic.pnz 5,r5,5
+
+ bic.f r0,r1,r2
+ bic.f r0,r1,1
+ bic.f r0,1,r2
+ bic.f 0,r1,r2
+ bic.f r0,r1,512
+ bic.f r0,512,r2
+
+ bic.eq.f r0,r1,r2
+ bic.ne.f r0,r1,0
+ bic.lt.f r0,0,r2
+ bic.gt.f 0,r1,r2
+ bic.le.f r0,r1,512
+ bic.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/bl.d b/gas/testsuite/gas/arc/bl.d
new file mode 100644
index 0000000..0cc19db
--- /dev/null
+++ b/gas/testsuite/gas/arc/bl.d
@@ -0,0 +1,76 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <text_label>:
+ 0: 80 ff ff 2f 2fffff80 bl 0 <text_label>
+
+ 4: 00 ff ff 2f 2fffff00 bl 0 <text_label>
+
+ 8: 80 fe ff 2f 2ffffe80 bl 0 <text_label>
+
+ c: 01 fe ff 2f 2ffffe01 blz 0 <text_label>
+
+ 10: 81 fd ff 2f 2ffffd81 blz 0 <text_label>
+
+ 14: 02 fd ff 2f 2ffffd02 blnz 0 <text_label>
+
+ 18: 82 fc ff 2f 2ffffc82 blnz 0 <text_label>
+
+ 1c: 03 fc ff 2f 2ffffc03 blp 0 <text_label>
+
+ 20: 83 fb ff 2f 2ffffb83 blp 0 <text_label>
+
+ 24: 04 fb ff 2f 2ffffb04 bln 0 <text_label>
+
+ 28: 84 fa ff 2f 2ffffa84 bln 0 <text_label>
+
+ 2c: 05 fa ff 2f 2ffffa05 blc 0 <text_label>
+
+ 30: 85 f9 ff 2f 2ffff985 blc 0 <text_label>
+
+ 34: 05 f9 ff 2f 2ffff905 blc 0 <text_label>
+
+ 38: 86 f8 ff 2f 2ffff886 blnc 0 <text_label>
+
+ 3c: 06 f8 ff 2f 2ffff806 blnc 0 <text_label>
+
+ 40: 86 f7 ff 2f 2ffff786 blnc 0 <text_label>
+
+ 44: 07 f7 ff 2f 2ffff707 blv 0 <text_label>
+
+ 48: 87 f6 ff 2f 2ffff687 blv 0 <text_label>
+
+ 4c: 08 f6 ff 2f 2ffff608 blnv 0 <text_label>
+
+ 50: 88 f5 ff 2f 2ffff588 blnv 0 <text_label>
+
+ 54: 09 f5 ff 2f 2ffff509 blgt 0 <text_label>
+
+ 58: 8a f4 ff 2f 2ffff48a blge 0 <text_label>
+
+ 5c: 0b f4 ff 2f 2ffff40b bllt 0 <text_label>
+
+ 60: 8c f3 ff 2f 2ffff38c blle 0 <text_label>
+
+ 64: 0d f3 ff 2f 2ffff30d blhi 0 <text_label>
+
+ 68: 8e f2 ff 2f 2ffff28e blls 0 <text_label>
+
+ 6c: 0f f2 ff 2f 2ffff20f blpnz 0 <text_label>
+
+ 70: a0 f1 ff 2f 2ffff1a0 bl.d 0 <text_label>
+
+ 74: 00 f1 ff 2f 2ffff100 bl 0 <text_label>
+
+ 78: c0 f0 ff 2f 2ffff0c0 bl.jd 0 <text_label>
+
+ 7c: 21 f0 ff 2f 2ffff021 blz.d 0 <text_label>
+
+ 80: 82 ef ff 2f 2fffef82 blnz 0 <text_label>
+
+ 84: 46 ef ff 2f 2fffef46 blnc.jd 0 <text_label>
+
diff --git a/gas/testsuite/gas/arc/bl.s b/gas/testsuite/gas/arc/bl.s
new file mode 100644
index 0000000..8181f39
--- /dev/null
+++ b/gas/testsuite/gas/arc/bl.s
@@ -0,0 +1,40 @@
+# bl test
+
+text_label:
+
+ bl text_label
+ blal text_label
+ blra text_label
+ bleq text_label
+ blz text_label
+ blne text_label
+ blnz text_label
+ blpl text_label
+ blp text_label
+ blmi text_label
+ bln text_label
+ blcs text_label
+ blc text_label
+ bllo text_label
+ blcc text_label
+ blnc text_label
+ blhs text_label
+ blvs text_label
+ blv text_label
+ blvc text_label
+ blnv text_label
+ blgt text_label
+ blge text_label
+ bllt text_label
+ blle text_label
+ blhi text_label
+ blls text_label
+ blpnz text_label
+
+ bl.d text_label
+ bl.nd text_label
+ bl.jd text_label
+
+ bleq.d text_label
+ blne.nd text_label
+ blcc.jd text_label
diff --git a/gas/testsuite/gas/arc/brk.d b/gas/testsuite/gas/arc/brk.d
new file mode 100644
index 0000000..70f9e4f
--- /dev/null
+++ b/gas/testsuite/gas/arc/brk.d
@@ -0,0 +1,11 @@
+#as: -EL -marc7
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <main>:
+ 0: 00 84 00 40 40008400 add r0,r1,r2
+ 4: 00 fe ff 1f 1ffffe00 brk
+ 8: 00 0a 62 50 50620a00 sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/brk.s b/gas/testsuite/gas/arc/brk.s
new file mode 100644
index 0000000..00b0761
--- /dev/null
+++ b/gas/testsuite/gas/arc/brk.s
@@ -0,0 +1,7 @@
+# brk test
+
+main:
+
+ add r0,r1,r2
+ brk
+ sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/extb.d b/gas/testsuite/gas/arc/extb.d
new file mode 100644
index 0000000..1ceca8a
--- /dev/null
+++ b/gas/testsuite/gas/arc/extb.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 8e 00 18 18008e00 extb r0,r1
+ 4: 00 0e 6e 1b 1b6e0e00 extb fp,sp
+ 8: 00 8e 1f 18 181f8e00 extb r0,0
+ c: ff 8f 3f 18 183f8fff extb r1,-1
+ 10: 00 0e e1 1f 1fe10e00 extb 0,r2
+ 14: 00 8e e1 1f 1fe18e00 extb 0,r3
+ 18: ff 8e 9f 18 189f8eff extb r4,255
+ 1c: 00 8e e2 1f 1fe28e00 extb 0,r5
+ 20: 00 8f df 18 18df8f00 extb r6,-256
+ 24: 00 8e e3 1f 1fe38e00 extb 0,r7
+ 28: 00 0e 1f 19 191f0e00 extb r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 0e 3f 19 193f0e00 extb r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 0e 7f 19 197f0e00 extb r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 0e ff 1f 1fff0e00 extb 0,0x100
+ 44: 00 01 00 00
+ 48: 00 0e 1f 18 181f0e00 extb r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 8e 45 19 19458e01 extb.z r10,r11
+ 54: 02 8e 86 19 19868e02 extb.nz r12,r13
+ 58: 0b 0e df 19 19df0e0b extb.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 0e ff 19 19ff0e09 extb.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 8f 00 18 18008f00 extb.f r0,r1
+ 6c: 01 8e 5e 18 185e8e01 extb.f r2,1
+ 70: 00 0f e2 1f 1fe20f00 extb.f 0,r4
+ 74: 00 0f bf 18 18bf0f00 extb.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 0f df 1f 1fdf0f00 extb.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 8f 00 18 18008f01 extb.z.f r0,r1
+ 88: 02 0f 3f 18 183f0f02 extb.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 0f c1 1f 1fc10f0b extb.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 0f 1f 18 181f0f0c extb.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 0f df 1f 1fdf0f04 extb.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/extb.s b/gas/testsuite/gas/arc/extb.s
new file mode 100644
index 0000000..e872975
--- /dev/null
+++ b/gas/testsuite/gas/arc/extb.s
@@ -0,0 +1,38 @@
+# extb test
+
+ extb r0,r1
+ extb fp,sp
+
+ extb r0,0
+ extb r1,-1
+ extb 0,r2
+ extb -1,r3
+ extb r4,255
+ extb 255,r5
+ extb r6,-256
+ extb -256,r7
+
+ extb r8,256
+ extb r9,-257
+ extb r11,0x42424242
+
+ extb 255,256
+
+ extb r0,foo
+
+ extb.eq r10,r11
+ extb.ne r12,r13
+ extb.lt r14,0
+ extb.gt r15,512
+
+ extb.f r0,r1
+ extb.f r2,1
+ extb.f 0,r4
+ extb.f r5,512
+ extb.f 512,512
+
+ extb.eq.f r0,r1
+ extb.ne.f r1,0
+ extb.lt.f 0,r2
+ extb.le.f r0,512
+ extb.n.f 512,512
diff --git a/gas/testsuite/gas/arc/extw.d b/gas/testsuite/gas/arc/extw.d
new file mode 100644
index 0000000..500f2fa
--- /dev/null
+++ b/gas/testsuite/gas/arc/extw.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 90 00 18 18009000 extw r0,r1
+ 4: 00 10 6e 1b 1b6e1000 extw fp,sp
+ 8: 00 90 1f 18 181f9000 extw r0,0
+ c: ff 91 3f 18 183f91ff extw r1,-1
+ 10: 00 10 e1 1f 1fe11000 extw 0,r2
+ 14: 00 90 e1 1f 1fe19000 extw 0,r3
+ 18: ff 90 9f 18 189f90ff extw r4,255
+ 1c: 00 90 e2 1f 1fe29000 extw 0,r5
+ 20: 00 91 df 18 18df9100 extw r6,-256
+ 24: 00 90 e3 1f 1fe39000 extw 0,r7
+ 28: 00 10 1f 19 191f1000 extw r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 10 3f 19 193f1000 extw r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 10 7f 19 197f1000 extw r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 10 ff 1f 1fff1000 extw 0,0x100
+ 44: 00 01 00 00
+ 48: 00 10 1f 18 181f1000 extw r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 90 45 19 19459001 extw.z r10,r11
+ 54: 02 90 86 19 19869002 extw.nz r12,r13
+ 58: 0b 10 df 19 19df100b extw.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 10 ff 19 19ff1009 extw.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 91 00 18 18009100 extw.f r0,r1
+ 6c: 01 90 5e 18 185e9001 extw.f r2,1
+ 70: 00 11 e2 1f 1fe21100 extw.f 0,r4
+ 74: 00 11 bf 18 18bf1100 extw.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 11 df 1f 1fdf1100 extw.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 91 00 18 18009101 extw.z.f r0,r1
+ 88: 02 11 3f 18 183f1102 extw.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 11 c1 1f 1fc1110b extw.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 11 1f 18 181f110c extw.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 11 df 1f 1fdf1104 extw.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/extw.s b/gas/testsuite/gas/arc/extw.s
new file mode 100644
index 0000000..060a8e3
--- /dev/null
+++ b/gas/testsuite/gas/arc/extw.s
@@ -0,0 +1,38 @@
+# extw test
+
+ extw r0,r1
+ extw fp,sp
+
+ extw r0,0
+ extw r1,-1
+ extw 0,r2
+ extw -1,r3
+ extw r4,255
+ extw 255,r5
+ extw r6,-256
+ extw -256,r7
+
+ extw r8,256
+ extw r9,-257
+ extw r11,0x42424242
+
+ extw 255,256
+
+ extw r0,foo
+
+ extw.eq r10,r11
+ extw.ne r12,r13
+ extw.lt r14,0
+ extw.gt r15,512
+
+ extw.f r0,r1
+ extw.f r2,1
+ extw.f 0,r4
+ extw.f r5,512
+ extw.f 512,512
+
+ extw.eq.f r0,r1
+ extw.ne.f r1,0
+ extw.lt.f 0,r2
+ extw.le.f r0,512
+ extw.n.f 512,512
diff --git a/gas/testsuite/gas/arc/flag.d b/gas/testsuite/gas/arc/flag.d
index 68f36d3..55c59de 100644
--- a/gas/testsuite/gas/arc/flag.d
+++ b/gas/testsuite/gas/arc/flag.d
@@ -1,29 +1,38 @@
-#objdump: -dr
-#name: flag
-
-# Test the flag macro.
+#as: -EL
+#objdump: -dr -EL
.*: +file format elf32-.*arc
-No symbols in "a.out".
Disassembly of section .text:
-00000000 1fa00000 flag r0
-00000004 1fbf8001 flag 1
-00000008 1fbf8002 flag 2
-0000000c 1fbf8004 flag 4
-00000010 1fbf8008 flag 8
-00000014 1fbf8010 flag 16
-00000018 1fbf8020 flag 32
-0000001c 1fbf8040 flag 64
-00000020 1fbf8080 flag 128
-00000024 1fbf0000 flag -2147483647
-0000002c 1fa0000b flag.lt r0
-00000030 1fbf0009 flag.gt 1
-00000038 1fbf0009 flag.gt 2
-00000040 1fbf0009 flag.gt 4
-00000048 1fbf0009 flag.gt 8
-00000050 1fbf0009 flag.gt 16
-00000058 1fbf0009 flag.gt 32
-00000060 1fbf0009 flag.gt 64
-00000068 1fbf0009 flag.gt 128
-00000070 1fbf000a flag.ge -2147483647
+
+00000000 <.text>:
+ 0: 00 00 a0 1f 1fa00000 flag r0
+ 4: 01 80 bf 1f 1fbf8001 flag 1
+ 8: 02 80 bf 1f 1fbf8002 flag 2
+ c: 04 80 bf 1f 1fbf8004 flag 4
+ 10: 08 80 bf 1f 1fbf8008 flag 8
+ 14: 10 80 bf 1f 1fbf8010 flag 16
+ 18: 20 80 bf 1f 1fbf8020 flag 32
+ 1c: 40 80 bf 1f 1fbf8040 flag 64
+ 20: 80 80 bf 1f 1fbf8080 flag 128
+ 24: 00 00 bf 1f 1fbf0000 flag 0x8000_0001
+ 28: 01 00 00 80
+ 2c: 0b 00 a0 1f 1fa0000b flag.lt r0
+ 30: 09 00 bf 1f 1fbf0009 flag.gt 1
+ 34: 01 00 00 00
+ 38: 09 00 bf 1f 1fbf0009 flag.gt 2
+ 3c: 02 00 00 00
+ 40: 09 00 bf 1f 1fbf0009 flag.gt 4
+ 44: 04 00 00 00
+ 48: 09 00 bf 1f 1fbf0009 flag.gt 8
+ 4c: 08 00 00 00
+ 50: 09 00 bf 1f 1fbf0009 flag.gt 16
+ 54: 10 00 00 00
+ 58: 09 00 bf 1f 1fbf0009 flag.gt 32
+ 5c: 20 00 00 00
+ 60: 09 00 bf 1f 1fbf0009 flag.gt 64
+ 64: 40 00 00 00
+ 68: 09 00 bf 1f 1fbf0009 flag.gt 128
+ 6c: 80 00 00 00
+ 70: 0a 00 bf 1f 1fbf000a flag.ge 0x8000_0001
+ 74: 01 00 00 80
diff --git a/gas/testsuite/gas/arc/j.d b/gas/testsuite/gas/arc/j.d
index af103f0..87e8004 100644
--- a/gas/testsuite/gas/arc/j.d
+++ b/gas/testsuite/gas/arc/j.d
@@ -1,75 +1,127 @@
-#objdump: -dr
-#name: j
-
-# Test the j insn.
+#as: -EL
+#objdump: -dr -EL
.*: +file format elf32-.*arc
Disassembly of section .text:
-00000000 <text_label> 38000000 j r0
-00000004 <text_label\+4> 38000020 j.d r0
-00000008 <text_label\+8> 38000040 j.jd r0
-0000000c <text_label\+c> 38000000 j r0
-00000010 <text_label\+10> 38008000 j r1
-00000014 <text_label\+14> 38008020 j.d r1
-00000018 <text_label\+18> 38008040 j.jd r1
-0000001c <text_label\+1c> 38008000 j r1
-00000020 <text_label\+20> 381f0000 j 0
- RELOC: 00000024 R_ARC_32 .text
-00000028 <text_label\+28> 381f0000 j 0
- RELOC: 0000002c R_ARC_32 .text
-00000030 <text_label\+30> 381f0000 j 0
- RELOC: 00000034 R_ARC_32 .text
-00000038 <text_label\+38> 381f0001 jeq 0
- RELOC: 0000003c R_ARC_32 .text
-00000040 <text_label\+40> 381f0001 jeq 0
- RELOC: 00000044 R_ARC_32 .text
-00000048 <text_label\+48> 381f0002 jne 0
- RELOC: 0000004c R_ARC_32 .text
-00000050 <text_label\+50> 381f0002 jne 0
- RELOC: 00000054 R_ARC_32 .text
-00000058 <text_label\+58> 381f0003 jp 0
- RELOC: 0000005c R_ARC_32 .text
-00000060 <text_label\+60> 381f0003 jp 0
- RELOC: 00000064 R_ARC_32 .text
-00000068 <text_label\+68> 381f0004 jn 0
- RELOC: 0000006c R_ARC_32 .text
-00000070 <text_label\+70> 381f0004 jn 0
- RELOC: 00000074 R_ARC_32 .text
-00000078 <text_label\+78> 381f0005 jc 0
- RELOC: 0000007c R_ARC_32 .text
-00000080 <text_label\+80> 381f0005 jc 0
- RELOC: 00000084 R_ARC_32 .text
-00000088 <text_label\+88> 381f0005 jc 0
- RELOC: 0000008c R_ARC_32 .text
-00000090 <text_label\+90> 381f0006 jnc 0
- RELOC: 00000094 R_ARC_32 .text
-00000098 <text_label\+98> 381f0006 jnc 0
- RELOC: 0000009c R_ARC_32 .text
-000000a0 <text_label\+a0> 381f0006 jnc 0
- RELOC: 000000a4 R_ARC_32 .text
-000000a8 <text_label\+a8> 381f0007 jv 0
- RELOC: 000000ac R_ARC_32 .text
-000000b0 <text_label\+b0> 381f0007 jv 0
- RELOC: 000000b4 R_ARC_32 .text
-000000b8 <text_label\+b8> 381f0008 jnv 0
- RELOC: 000000bc R_ARC_32 .text
-000000c0 <text_label\+c0> 381f0008 jnv 0
- RELOC: 000000c4 R_ARC_32 .text
-000000c8 <text_label\+c8> 381f0009 jgt 0
- RELOC: 000000cc R_ARC_32 .text
-000000d0 <text_label\+d0> 381f000a jge 0
- RELOC: 000000d4 R_ARC_32 .text
-000000d8 <text_label\+d8> 381f000b jlt 0
- RELOC: 000000dc R_ARC_32 .text
-000000e0 <text_label\+e0> 381f000c jle 0
- RELOC: 000000e4 R_ARC_32 .text
-000000e8 <text_label\+e8> 381f000d jhi 0
- RELOC: 000000ec R_ARC_32 .text
-000000f0 <text_label\+f0> 381f000e jls 0
- RELOC: 000000f4 R_ARC_32 .text
-000000f8 <text_label\+f8> 381f000f jpnz 0
- RELOC: 000000fc R_ARC_32 .text
-00000100 <text_label\+100> 381f0000 j 0
- RELOC: 00000104 R_ARC_32 external_text_label
-00000108 <text_label\+108> 381f0000 j 0
+
+00000000 <text_label>:
+ 0: 00 00 1f 38 381f0000 j 0 <text_label>
+
+ 4: 00 00 00 00
+ 4: R_ARC_B26 .text
+ 8: 00 00 1f 38 381f0000 j 0 <text_label>
+
+ c: 00 00 00 00
+ c: R_ARC_B26 .text
+ 10: 00 00 1f 38 381f0000 j 0 <text_label>
+
+ 14: 00 00 00 00
+ 14: R_ARC_B26 .text
+ 18: 01 00 1f 38 381f0001 jz 0 <text_label>
+
+ 1c: 00 00 00 00
+ 1c: R_ARC_B26 .text
+ 20: 01 00 1f 38 381f0001 jz 0 <text_label>
+
+ 24: 00 00 00 00
+ 24: R_ARC_B26 .text
+ 28: 02 00 1f 38 381f0002 jnz 0 <text_label>
+
+ 2c: 00 00 00 00
+ 2c: R_ARC_B26 .text
+ 30: 02 00 1f 38 381f0002 jnz 0 <text_label>
+
+ 34: 00 00 00 00
+ 34: R_ARC_B26 .text
+ 38: 03 00 1f 38 381f0003 jp 0 <text_label>
+
+ 3c: 00 00 00 00
+ 3c: R_ARC_B26 .text
+ 40: 03 00 1f 38 381f0003 jp 0 <text_label>
+
+ 44: 00 00 00 00
+ 44: R_ARC_B26 .text
+ 48: 04 00 1f 38 381f0004 jn 0 <text_label>
+
+ 4c: 00 00 00 00
+ 4c: R_ARC_B26 .text
+ 50: 04 00 1f 38 381f0004 jn 0 <text_label>
+
+ 54: 00 00 00 00
+ 54: R_ARC_B26 .text
+ 58: 05 00 1f 38 381f0005 jc 0 <text_label>
+
+ 5c: 00 00 00 00
+ 5c: R_ARC_B26 .text
+ 60: 05 00 1f 38 381f0005 jc 0 <text_label>
+
+ 64: 00 00 00 00
+ 64: R_ARC_B26 .text
+ 68: 05 00 1f 38 381f0005 jc 0 <text_label>
+
+ 6c: 00 00 00 00
+ 6c: R_ARC_B26 .text
+ 70: 06 00 1f 38 381f0006 jnc 0 <text_label>
+
+ 74: 00 00 00 00
+ 74: R_ARC_B26 .text
+ 78: 06 00 1f 38 381f0006 jnc 0 <text_label>
+
+ 7c: 00 00 00 00
+ 7c: R_ARC_B26 .text
+ 80: 06 00 1f 38 381f0006 jnc 0 <text_label>
+
+ 84: 00 00 00 00
+ 84: R_ARC_B26 .text
+ 88: 07 00 1f 38 381f0007 jv 0 <text_label>
+
+ 8c: 00 00 00 00
+ 8c: R_ARC_B26 .text
+ 90: 07 00 1f 38 381f0007 jv 0 <text_label>
+
+ 94: 00 00 00 00
+ 94: R_ARC_B26 .text
+ 98: 08 00 1f 38 381f0008 jnv 0 <text_label>
+
+ 9c: 00 00 00 00
+ 9c: R_ARC_B26 .text
+ a0: 08 00 1f 38 381f0008 jnv 0 <text_label>
+
+ a4: 00 00 00 00
+ a4: R_ARC_B26 .text
+ a8: 09 00 1f 38 381f0009 jgt 0 <text_label>
+
+ ac: 00 00 00 00
+ ac: R_ARC_B26 .text
+ b0: 0a 00 1f 38 381f000a jge 0 <text_label>
+
+ b4: 00 00 00 00
+ b4: R_ARC_B26 .text
+ b8: 0b 00 1f 38 381f000b jlt 0 <text_label>
+
+ bc: 00 00 00 00
+ bc: R_ARC_B26 .text
+ c0: 0c 00 1f 38 381f000c jle 0 <text_label>
+
+ c4: 00 00 00 00
+ c4: R_ARC_B26 .text
+ c8: 0d 00 1f 38 381f000d jhi 0 <text_label>
+
+ cc: 00 00 00 00
+ cc: R_ARC_B26 .text
+ d0: 0e 00 1f 38 381f000e jls 0 <text_label>
+
+ d4: 00 00 00 00
+ d4: R_ARC_B26 .text
+ d8: 0f 00 1f 38 381f000f jpnz 0 <text_label>
+
+ dc: 00 00 00 00
+ dc: R_ARC_B26 .text
+ e0: 00 00 1f 38 381f0000 j 0 <text_label>
+
+ e4: 00 00 00 00
+ e4: R_ARC_B26 external_text_label
+ e8: 00 00 1f 38 381f0000 j 0 <text_label>
+
+ ec: 00 00 00 00
diff --git a/gas/testsuite/gas/arc/j.s b/gas/testsuite/gas/arc/j.s
index 0161af2..64abbf5 100644
--- a/gas/testsuite/gas/arc/j.s
+++ b/gas/testsuite/gas/arc/j.s
@@ -1,15 +1,6 @@
# j test
text_label:
- j r0
- j.d r0
- j.jd r0
- j.nd r0
-
- j.f [r1]
- j.d.f [r1]
- j.jd.f [r1]
- j.nd.f [r1]
j text_label
jal text_label
diff --git a/gas/testsuite/gas/arc/jl.d b/gas/testsuite/gas/arc/jl.d
new file mode 100644
index 0000000..3701f9a
--- /dev/null
+++ b/gas/testsuite/gas/arc/jl.d
@@ -0,0 +1,25 @@
+#as: -EL -marc6
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <text_label>:
+ 0: 40 02 1f 38 381f0240 jl 0 <text_label>
+
+ 4: 00 00 00 00
+ 4: R_ARC_B26 .text
+ 8: 40 03 1f 38 381f0340 jl.f 0 <text_label>
+
+ c: 00 00 00 00
+ c: R_ARC_B26 .text
+ 10: 02 82 00 38 38008202 jlnz \[r1\]
+ 14: 40 02 1f 38 381f0240 jl 0 <text_label>
+
+ 18: 00 00 00 00
+ 18: R_ARC_B26 .text
+ 1c: 40 03 1f 38 381f0340 jl.f 0 <text_label>
+
+ 20: 00 00 00 00
+ 20: R_ARC_B26 .text
diff --git a/gas/testsuite/gas/arc/jl.s b/gas/testsuite/gas/arc/jl.s
new file mode 100644
index 0000000..74a9e20
--- /dev/null
+++ b/gas/testsuite/gas/arc/jl.s
@@ -0,0 +1,9 @@
+# jl test
+
+text_label:
+
+ jl text_label
+ jl.f text_label
+ jlnz.nd [r1]
+ jlal text_label
+ jlal.f text_label
diff --git a/gas/testsuite/gas/arc/ld.d b/gas/testsuite/gas/arc/ld.d
index d6dd0a1..b989f8b 100644
--- a/gas/testsuite/gas/arc/ld.d
+++ b/gas/testsuite/gas/arc/ld.d
@@ -1,30 +1,13 @@
-#objdump: -dr
-#name: ld/lr
-
-# Test the ld/lr insn.
+#as: -EL
+#objdump: -dr -EL
.*: +file format elf32-.*arc
Disassembly of section .text:
-00000000 08008000 ld r0,\[r1\]
-00000004 00418800 ld r2,\[r3,r4\]
-00000008 08a30001 ld r5,\[r6,1\]
-0000000c 08e401ff ld r7,\[r8,-1\]
-00000010 092500ff ld r9,\[r10,255\]
-00000014 09660100 ld r11,\[r12,-256\]
-00000018 01a77c00 ld r13,\[r14,256\]
-00000020 01e87c00 ld r15,\[r16,-257\]
-00000028 023f3800 ld r17,\[305419896,sp\]
-00000030 0a7f0000 ld r19,\[0\]
- RELOC: 00000034 R_ARC_32 foo
-00000038 0a9f0000 ld r20,\[4\]
- RELOC: 0000003c R_ARC_32 foo
-00000040 081f8400 ldb r0,\[0\]
-00000044 081f8800 ldw r0,\[0\]
-00000048 081f8200 ld.x r0,\[0\]
-0000004c 081f9000 ld.a r0,\[0\]
-00000050 081fc000 ld.di r0,\[0\]
-00000054 08005600 ldb.x.a.di r0,\[r0\]
-00000058 0800a000 lr r0,\[r1\]
-0000005c 085fa000 lr r2,\[status\]
-00000060 087f2000 lr r3,\[305419896\]
+
+00000000 <.text>:
+ 0: 00 84 00 00 00008400 ld r0,\[r1,r2\]
+ 4: 02 84 00 00 00008402 ldb r0,\[r1,r2\]
+ 8: 08 88 21 00 00218808 ld.a r1,\[r3,r4\]
+ c: 05 06 21 00 00210605 ldw.x r1,\[r2,r3\]
+ 10: 0d 88 41 00 0041880d ldw.x.a r2,\[r3,r4\]
diff --git a/gas/testsuite/gas/arc/ld.s b/gas/testsuite/gas/arc/ld.s
index aa26719..36edf9c 100644
--- a/gas/testsuite/gas/arc/ld.s
+++ b/gas/testsuite/gas/arc/ld.s
@@ -1,24 +1,7 @@
-# ld/lr test
+# ld test
- ld r0,[r1]
- ld r2,[r3,r4]
- ld r5,[r6,1]
- ld r7,[r8,-1]
- ld r9,[r10,255]
- ld r11,[r12,-256]
- ld r13,[r14,256]
- ld r15,[r16,-257]
- ld r17,[0x12345678,r28]
- ld r19,[foo]
- ld r20,[foo+4]
-
- ldb r0,[0]
- ldw r0,[0]
- ld.x r0,[0]
- ld.a r0,[0]
- ld.di r0,[0]
- ldb.x.a.di r0,[r0]
-
- lr r0,[r1]
- lr r2,[status]
- lr r3,[0x12345678]
+ ld r0,[r1,r2]
+ ldb r0,[r1,r2]
+ ld.a r1,[r3,r4]
+ ldw.x r1,[r2,r3]
+ ldw.x.a r2,[r3,r4]
diff --git a/gas/testsuite/gas/arc/ld2.d b/gas/testsuite/gas/arc/ld2.d
new file mode 100644
index 0000000..1f1df97
--- /dev/null
+++ b/gas/testsuite/gas/arc/ld2.d
@@ -0,0 +1,21 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 80 00 08 08008000 ld r0,\[r1\]
+ 4: 01 00 a3 08 08a30001 ld r5,\[r6,1\]
+ 8: 00 00 7f 0a 0a7f0000 ld r19,\[0\]
+ c: 00 00 00 00
+ c: R_ARC_32 foo
+ 10: 0a 10 81 08 0881100a ld.a r4,\[r2,10\]
+ 14: 00 00 3f 08 083f0000 ld r1,\[0x384\]
+ 18: 84 03 00 00
+ 1c: 0f 84 41 08 0841840f ldb r2,\[r3,15\]
+ 20: fe 09 62 08 086209fe ldw r3,\[r4,-2\]
+ 24: 00 20 21 08 08212000 lr r1,\[r2\]
+ 28: 14 a0 3f 08 083fa014 lr r1,\[0x14\]
+ 2c: 00 a0 1f 08 081fa000 lr r0,\[status\]
diff --git a/gas/testsuite/gas/arc/ld2.s b/gas/testsuite/gas/arc/ld2.s
new file mode 100644
index 0000000..c18556a
--- /dev/null
+++ b/gas/testsuite/gas/arc/ld2.s
@@ -0,0 +1,13 @@
+# ld/lr test
+
+ ld r0,[r1]
+ ld r5,[r6,1]
+ ld r19,[foo]
+ ld.a r4,[r2,10]
+ ld r1,[900]
+ ldb r2,[r3,15]
+ ldw r3,[r4,-2]
+
+ lr r1,[r2]
+ lr r1,[20]
+ lr r0,[status]
diff --git a/gas/testsuite/gas/arc/lp.d b/gas/testsuite/gas/arc/lp.d
new file mode 100644
index 0000000..3b1827c
--- /dev/null
+++ b/gas/testsuite/gas/arc/lp.d
@@ -0,0 +1,76 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <text_label>:
+ 0: 80 ff ff 37 37ffff80 lp 0 <text_label>
+
+ 4: 00 ff ff 37 37ffff00 lp 0 <text_label>
+
+ 8: 80 fe ff 37 37fffe80 lp 0 <text_label>
+
+ c: 01 fe ff 37 37fffe01 lpz 0 <text_label>
+
+ 10: 81 fd ff 37 37fffd81 lpz 0 <text_label>
+
+ 14: 02 fd ff 37 37fffd02 lpnz 0 <text_label>
+
+ 18: 82 fc ff 37 37fffc82 lpnz 0 <text_label>
+
+ 1c: 03 fc ff 37 37fffc03 lpp 0 <text_label>
+
+ 20: 83 fb ff 37 37fffb83 lpp 0 <text_label>
+
+ 24: 04 fb ff 37 37fffb04 lpn 0 <text_label>
+
+ 28: 84 fa ff 37 37fffa84 lpn 0 <text_label>
+
+ 2c: 05 fa ff 37 37fffa05 lpc 0 <text_label>
+
+ 30: 85 f9 ff 37 37fff985 lpc 0 <text_label>
+
+ 34: 05 f9 ff 37 37fff905 lpc 0 <text_label>
+
+ 38: 86 f8 ff 37 37fff886 lpnc 0 <text_label>
+
+ 3c: 06 f8 ff 37 37fff806 lpnc 0 <text_label>
+
+ 40: 86 f7 ff 37 37fff786 lpnc 0 <text_label>
+
+ 44: 07 f7 ff 37 37fff707 lpv 0 <text_label>
+
+ 48: 87 f6 ff 37 37fff687 lpv 0 <text_label>
+
+ 4c: 08 f6 ff 37 37fff608 lpnv 0 <text_label>
+
+ 50: 88 f5 ff 37 37fff588 lpnv 0 <text_label>
+
+ 54: 09 f5 ff 37 37fff509 lpgt 0 <text_label>
+
+ 58: 8a f4 ff 37 37fff48a lpge 0 <text_label>
+
+ 5c: 0b f4 ff 37 37fff40b lplt 0 <text_label>
+
+ 60: 8c f3 ff 37 37fff38c lple 0 <text_label>
+
+ 64: 0d f3 ff 37 37fff30d lphi 0 <text_label>
+
+ 68: 8e f2 ff 37 37fff28e lpls 0 <text_label>
+
+ 6c: 0f f2 ff 37 37fff20f lppnz 0 <text_label>
+
+ 70: a0 f1 ff 37 37fff1a0 lp.d 0 <text_label>
+
+ 74: 00 f1 ff 37 37fff100 lp 0 <text_label>
+
+ 78: c0 f0 ff 37 37fff0c0 lp.jd 0 <text_label>
+
+ 7c: 21 f0 ff 37 37fff021 lpz.d 0 <text_label>
+
+ 80: 82 ef ff 37 37ffef82 lpnz 0 <text_label>
+
+ 84: 46 ef ff 37 37ffef46 lpnc.jd 0 <text_label>
+
diff --git a/gas/testsuite/gas/arc/lp.s b/gas/testsuite/gas/arc/lp.s
new file mode 100644
index 0000000..1913976
--- /dev/null
+++ b/gas/testsuite/gas/arc/lp.s
@@ -0,0 +1,40 @@
+# lp test
+
+text_label:
+
+ lp text_label
+ lpal text_label
+ lpra text_label
+ lpeq text_label
+ lpz text_label
+ lpne text_label
+ lpnz text_label
+ lppl text_label
+ lpp text_label
+ lpmi text_label
+ lpn text_label
+ lpcs text_label
+ lpc text_label
+ lplo text_label
+ lpcc text_label
+ lpnc text_label
+ lphs text_label
+ lpvs text_label
+ lpv text_label
+ lpvc text_label
+ lpnv text_label
+ lpgt text_label
+ lpge text_label
+ lplt text_label
+ lple text_label
+ lphi text_label
+ lpls text_label
+ lppnz text_label
+
+ lp.d text_label
+ lp.nd text_label
+ lp.jd text_label
+
+ lpeq.d text_label
+ lpne.nd text_label
+ lpcc.jd text_label
diff --git a/gas/testsuite/gas/arc/lsr.d b/gas/testsuite/gas/arc/lsr.d
new file mode 100644
index 0000000..27247a2
--- /dev/null
+++ b/gas/testsuite/gas/arc/lsr.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 18 18008400 lsr r0,r1
+ 4: 00 04 6e 1b 1b6e0400 lsr fp,sp
+ 8: 00 84 1f 18 181f8400 lsr r0,0
+ c: ff 85 3f 18 183f85ff lsr r1,-1
+ 10: 00 04 e1 1f 1fe10400 lsr 0,r2
+ 14: 00 84 e1 1f 1fe18400 lsr 0,r3
+ 18: ff 84 9f 18 189f84ff lsr r4,255
+ 1c: 00 84 e2 1f 1fe28400 lsr 0,r5
+ 20: 00 85 df 18 18df8500 lsr r6,-256
+ 24: 00 84 e3 1f 1fe38400 lsr 0,r7
+ 28: 00 04 1f 19 191f0400 lsr r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 04 3f 19 193f0400 lsr r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 04 7f 19 197f0400 lsr r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 04 ff 1f 1fff0400 lsr 0,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 18 181f0400 lsr r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 84 45 19 19458401 lsr.z r10,r11
+ 54: 02 84 86 19 19868402 lsr.nz r12,r13
+ 58: 0b 04 df 19 19df040b lsr.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 04 ff 19 19ff0409 lsr.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 85 00 18 18008500 lsr.f r0,r1
+ 6c: 01 84 5e 18 185e8401 lsr.f r2,1
+ 70: 00 05 e2 1f 1fe20500 lsr.f 0,r4
+ 74: 00 05 bf 18 18bf0500 lsr.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 05 df 1f 1fdf0500 lsr.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 85 00 18 18008501 lsr.z.f r0,r1
+ 88: 02 05 3f 18 183f0502 lsr.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 05 c1 1f 1fc1050b lsr.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 05 1f 18 181f050c lsr.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 05 df 1f 1fdf0504 lsr.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/lsr.s b/gas/testsuite/gas/arc/lsr.s
new file mode 100644
index 0000000..3f539d8
--- /dev/null
+++ b/gas/testsuite/gas/arc/lsr.s
@@ -0,0 +1,38 @@
+# lsr test
+
+ lsr r0,r1
+ lsr fp,sp
+
+ lsr r0,0
+ lsr r1,-1
+ lsr 0,r2
+ lsr -1,r3
+ lsr r4,255
+ lsr 255,r5
+ lsr r6,-256
+ lsr -256,r7
+
+ lsr r8,256
+ lsr r9,-257
+ lsr r11,0x42424242
+
+ lsr 255,256
+
+ lsr r0,foo
+
+ lsr.eq r10,r11
+ lsr.ne r12,r13
+ lsr.lt r14,0
+ lsr.gt r15,512
+
+ lsr.f r0,r1
+ lsr.f r2,1
+ lsr.f 0,r4
+ lsr.f r5,512
+ lsr.f 512,512
+
+ lsr.eq.f r0,r1
+ lsr.ne.f r1,0
+ lsr.lt.f 0,r2
+ lsr.le.f r0,512
+ lsr.n.f 512,512
diff --git a/gas/testsuite/gas/arc/mov.d b/gas/testsuite/gas/arc/mov.d
new file mode 100644
index 0000000..cff11d7
--- /dev/null
+++ b/gas/testsuite/gas/arc/mov.d
@@ -0,0 +1,68 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 82 00 60 60008200 mov r0,r1
+ 4: 00 38 6e 63 636e3800 mov fp,sp
+ 8: 00 fe 1f 60 601ffe00 mov r0,0
+ c: ff ff 3f 60 603fffff mov r1,-1
+ 10: 00 04 e1 67 67e10400 mov 0,r2
+ 14: 00 86 e1 67 67e18600 mov 0,r3
+ 18: ff fe 9f 60 609ffeff mov r4,255
+ 1c: 00 8a e2 67 67e28a00 mov 0,r5
+ 20: 00 ff df 60 60dfff00 mov r6,-256
+ 24: 00 8e e3 67 67e38e00 mov 0,r7
+ 28: 00 7c 1f 61 611f7c00 mov r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 7c 3f 61 613f7c00 mov r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 7c 7f 61 617f7c00 mov r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 7c ff 67 67ff7c00 mov 0,0x100
+ 44: 00 01 00 00
+ 48: 00 7c 1f 60 601f7c00 mov r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 00 82 00 60 60008200 mov r0,r1
+ 54: 00 08 62 60 60620800 mov r3,r4
+ 58: 01 8e c3 60 60c38e01 mov.z r6,r7
+ 5c: 01 14 25 61 61251401 mov.z r9,r10
+ 60: 02 9a 86 61 61869a02 mov.nz r12,r13
+ 64: 02 20 e8 61 61e82002 mov.nz r15,r16
+ 68: 03 a6 49 62 6249a603 mov.p r18,r19
+ 6c: 03 2c ab 62 62ab2c03 mov.p r21,r22
+ 70: 04 b2 0c 63 630cb204 mov.n r24,r25
+ 74: 04 38 6e 63 636e3804 mov.n fp,sp
+ 78: 05 be cf 63 63cfbe05 mov.c ilink2,blink
+ 7c: 05 44 31 64 64314405 mov.c r33,r34
+ 80: 05 ca 92 64 6492ca05 mov.c r36,r37
+ 84: 06 50 f4 64 64f45006 mov.nc r39,r40
+ 88: 06 d6 55 65 6555d606 mov.nc r42,r43
+ 8c: 06 5c b7 65 65b75c06 mov.nc r45,r46
+ 90: 07 e2 18 66 6618e207 mov.v r48,r49
+ 94: 07 64 39 66 66396407 mov.v r49,r50
+ 98: 08 ee 3b 66 663bee08 mov.nv r49,r55
+ 9c: 08 74 3d 66 663d7408 mov.nv r49,r58
+ a0: 09 78 9e 67 679e7809 mov.gt lp_count,lp_count
+ a4: 0a 7c 1f 60 601f7c0a mov.ge r0,0
+ a8: 00 00 00 00
+ ac: 0c 7c df 67 67df7c0c mov.le 0,2
+ b0: 02 00 00 00
+ b4: 0d 86 61 60 6061860d mov.hi r3,r3
+ b8: 0e 08 82 60 6082080e mov.ls r4,r4
+ bc: 0f 8a a2 60 60a28a0f mov.pnz r5,r5
+ c0: 00 83 00 60 60008300 mov.f r0,r1
+ c4: 01 fa 5e 60 605efa01 mov.f r2,1
+ c8: 00 87 e1 67 67e18700 mov.f 0,r3
+ cc: 00 09 e2 67 67e20900 mov.f 0,r4
+ d0: 00 7d bf 60 60bf7d00 mov.f r5,0x200
+ d4: 00 02 00 00
+ d8: 00 7d df 67 67df7d00 mov.f 0,0x200
+ dc: 00 02 00 00
+ e0: 01 83 00 60 60008301 mov.z.f r0,r1
+ e4: 02 7d 3f 60 603f7d02 mov.nz.f r1,0
+ e8: 00 00 00 00
diff --git a/gas/testsuite/gas/arc/mov.s b/gas/testsuite/gas/arc/mov.s
new file mode 100644
index 0000000..fdee0b7
--- /dev/null
+++ b/gas/testsuite/gas/arc/mov.s
@@ -0,0 +1,58 @@
+# mov test
+
+ mov r0,r1
+ mov fp,sp
+
+ mov r0,0
+ mov r1,-1
+ mov 0,r2
+ mov -1,r3
+ mov r4,255
+ mov 255,r5
+ mov r6,-256
+ mov -256,r7
+
+ mov r8,256
+ mov r9,-257
+ mov r11,0x42424242
+
+ mov 255,256
+
+ mov r0,foo
+
+ mov.al r0,r1
+ mov.ra r3,r4
+ mov.eq r6,r7
+ mov.z r9,r10
+ mov.ne r12,r13
+ mov.nz r15,r16
+ mov.pl r18,r19
+ mov.p r21,r22
+ mov.mi r24,r25
+ mov.n r27,r28
+ mov.cs r30,r31
+ mov.c r33,r34
+ mov.lo r36,r37
+ mov.cc r39,r40
+ mov.nc r42,r43
+ mov.hs r45,r46
+ mov.vs r48,r49
+ mov.v r49,r50
+ mov.vc r49,r55
+ mov.nv r49,r58
+ mov.gt r60,r60
+ mov.ge r0,0
+ mov.le 2,2
+ mov.hi r3,r3
+ mov.ls r4,r4
+ mov.pnz r5,r5
+
+ mov.f r0,r1
+ mov.f r2,1
+ mov.f 1,r3
+ mov.f 0,r4
+ mov.f r5,512
+ mov.f 512,512
+
+ mov.eq.f r0,r1
+ mov.ne.f r1,0
diff --git a/gas/testsuite/gas/arc/nop.d b/gas/testsuite/gas/arc/nop.d
new file mode 100644
index 0000000..1a714cd
--- /dev/null
+++ b/gas/testsuite/gas/arc/nop.d
@@ -0,0 +1,9 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: ff ff ff 7f 7fffffff nop
diff --git a/gas/testsuite/gas/arc/nop.s b/gas/testsuite/gas/arc/nop.s
new file mode 100644
index 0000000..02b2681
--- /dev/null
+++ b/gas/testsuite/gas/arc/nop.s
@@ -0,0 +1,3 @@
+# nop test
+
+ nop
diff --git a/gas/testsuite/gas/arc/or.d b/gas/testsuite/gas/arc/or.d
new file mode 100644
index 0000000..11e6f3c
--- /dev/null
+++ b/gas/testsuite/gas/arc/or.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 68 68008400 or r0,r1,r2
+ 4: 00 b8 4d 6b 6b4db800 or gp,fp,sp
+ 8: 00 3e af 6b 6baf3e00 or ilink1,ilink2,blink
+ c: 00 f8 1d 6f 6f1df800 or r56,r59,lp_count
+ 10: 00 fe 00 68 6800fe00 or r0,r1,0
+ 14: 00 84 1f 68 681f8400 or r0,0,r2
+ 18: 00 84 e0 6f 6fe08400 or 0,r1,r2
+ 1c: ff ff 00 68 6800ffff or r0,r1,-1
+ 20: ff 85 1f 68 681f85ff or r0,-1,r2
+ 24: 00 84 e0 6f 6fe08400 or 0,r1,r2
+ 28: ff fe 00 68 6800feff or r0,r1,255
+ 2c: ff 84 1f 68 681f84ff or r0,255,r2
+ 30: 00 84 e0 6f 6fe08400 or 0,r1,r2
+ 34: 00 ff 00 68 6800ff00 or r0,r1,-256
+ 38: 00 85 1f 68 681f8500 or r0,-256,r2
+ 3c: 00 84 e0 6f 6fe08400 or 0,r1,r2
+ 40: 00 fc 00 68 6800fc00 or r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 68 681f0400 or r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 68 681ffcff or r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 68 681f7eff or r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 68 6800fc00 or r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 68 68008400 or r0,r1,r2
+ 6c: 00 0a 62 68 68620a00 or r3,r4,r5
+ 70: 01 90 c3 68 68c39001 or.z r6,r7,r8
+ 74: 01 16 25 69 69251601 or.z r9,r10,r11
+ 78: 02 9c 86 69 69869c02 or.nz r12,r13,r14
+ 7c: 02 22 e8 69 69e82202 or.nz r15,r16,r17
+ 80: 03 a8 49 6a 6a49a803 or.p r18,r19,r20
+ 84: 03 2e ab 6a 6aab2e03 or.p r21,r22,r23
+ 88: 04 b4 0c 6b 6b0cb404 or.n r24,r25,gp
+ 8c: 04 3a 6e 6b 6b6e3a04 or.n fp,sp,ilink1
+ 90: 05 c0 cf 6b 6bcfc005 or.c ilink2,blink,r32
+ 94: 05 46 31 6c 6c314605 or.c r33,r34,r35
+ 98: 05 cc 92 6c 6c92cc05 or.c r36,r37,r38
+ 9c: 06 52 f4 6c 6cf45206 or.nc r39,r40,r41
+ a0: 06 d8 55 6d 6d55d806 or.nc r42,r43,r44
+ a4: 06 5e b7 6d 6db75e06 or.nc r45,r46,r47
+ a8: 07 e4 18 6e 6e18e407 or.v r48,r49,r50
+ ac: 07 6a 1a 6f 6f1a6a07 or.v r56,r52,r53
+ b0: 08 f0 1b 6f 6f1bf008 or.nv r56,r55,r56
+ b4: 08 76 1d 6f 6f1d7608 or.nv r56,r58,r59
+ b8: 09 00 9e 6f 6f9e0009 or.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 68 68007c0a or.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 68 683f020b or.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 68 687f060d or.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 6f 6fdf080e or.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 6f 6fc2fc0f or.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 68 68008500 or.f r0,r1,r2
+ e8: 01 fa 00 68 6800fa01 or.f r0,r1,1
+ ec: 01 84 1e 68 681e8401 or.f r0,1,r2
+ f0: 00 85 e0 6f 6fe08500 or.f 0,r1,r2
+ f4: 00 fd 00 68 6800fd00 or.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 68 681f0500 or.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 68 68008501 or.z.f r0,r1,r2
+ 108: 02 fd 00 68 6800fd02 or.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 68 681f050b or.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 6f 6fc08509 or.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 68 6800fd0c or.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 68 681f050a or.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/or.s b/gas/testsuite/gas/arc/or.s
new file mode 100644
index 0000000..e363352
--- /dev/null
+++ b/gas/testsuite/gas/arc/or.s
@@ -0,0 +1,68 @@
+# or test
+
+ or r0,r1,r2
+ or r26,fp,sp
+ or ilink1,ilink2,blink
+ or r56,r59,lp_count
+
+ or r0,r1,0
+ or r0,0,r2
+ or 0,r1,r2
+ or r0,r1,-1
+ or r0,-1,r2
+ or -1,r1,r2
+ or r0,r1,255
+ or r0,255,r2
+ or 255,r1,r2
+ or r0,r1,-256
+ or r0,-256,r2
+ or -256,r1,r2
+
+ or r0,r1,256
+ or r0,-257,r2
+
+ or r0,255,256
+ or r0,256,255
+
+ or r0,r1,foo
+
+ or.al r0,r1,r2
+ or.ra r3,r4,r5
+ or.eq r6,r7,r8
+ or.z r9,r10,r11
+ or.ne r12,r13,r14
+ or.nz r15,r16,r17
+ or.pl r18,r19,r20
+ or.p r21,r22,r23
+ or.mi r24,r25,r26
+ or.n r27,r28,r29
+ or.cs r30,r31,r32
+ or.c r33,r34,r35
+ or.lo r36,r37,r38
+ or.cc r39,r40,r41
+ or.nc r42,r43,r44
+ or.hs r45,r46,r47
+ or.vs r48,r49,r50
+ or.v r56,r52,r53
+ or.vc r56,r55,r56
+ or.nv r56,r58,r59
+ or.gt r60,r60,r0
+ or.ge r0,r0,0
+ or.lt r1,1,r1
+ or.hi r3,3,r3
+ or.ls 4,4,r4
+ or.pnz 5,r5,5
+
+ or.f r0,r1,r2
+ or.f r0,r1,1
+ or.f r0,1,r2
+ or.f 0,r1,r2
+ or.f r0,r1,512
+ or.f r0,512,r2
+
+ or.eq.f r0,r1,r2
+ or.ne.f r0,r1,0
+ or.lt.f r0,0,r2
+ or.gt.f 0,r1,r2
+ or.le.f r0,r1,512
+ or.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/rlc.d b/gas/testsuite/gas/arc/rlc.d
new file mode 100644
index 0000000..e83ddc4
--- /dev/null
+++ b/gas/testsuite/gas/arc/rlc.d
@@ -0,0 +1,68 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 82 00 48 48008200 rlc r0,r1
+ 4: 00 38 6e 4b 4b6e3800 rlc fp,sp
+ 8: 00 fe 1f 48 481ffe00 rlc r0,0
+ c: ff ff 3f 48 483fffff rlc r1,-1
+ 10: 00 04 e1 4f 4fe10400 rlc 0,r2
+ 14: 00 86 e1 4f 4fe18600 rlc 0,r3
+ 18: ff fe 9f 48 489ffeff rlc r4,255
+ 1c: 00 8a e2 4f 4fe28a00 rlc 0,r5
+ 20: 00 ff df 48 48dfff00 rlc r6,-256
+ 24: 00 8e e3 4f 4fe38e00 rlc 0,r7
+ 28: 00 7c 1f 49 491f7c00 rlc r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 7c 3f 49 493f7c00 rlc r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 7c 7f 49 497f7c00 rlc r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 7c ff 4f 4fff7c00 rlc 0,0x100
+ 44: 00 01 00 00
+ 48: 00 7c 1f 48 481f7c00 rlc r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 00 82 00 48 48008200 rlc r0,r1
+ 54: 00 08 62 48 48620800 rlc r3,r4
+ 58: 01 8e c3 48 48c38e01 rlc.z r6,r7
+ 5c: 01 14 25 49 49251401 rlc.z r9,r10
+ 60: 02 9a 86 49 49869a02 rlc.nz r12,r13
+ 64: 02 20 e8 49 49e82002 rlc.nz r15,r16
+ 68: 03 a6 49 4a 4a49a603 rlc.p r18,r19
+ 6c: 03 2c ab 4a 4aab2c03 rlc.p r21,r22
+ 70: 04 b2 0c 4b 4b0cb204 rlc.n r24,r25
+ 74: 04 38 6e 4b 4b6e3804 rlc.n fp,sp
+ 78: 05 be cf 4b 4bcfbe05 rlc.c ilink2,blink
+ 7c: 05 44 31 4c 4c314405 rlc.c r33,r34
+ 80: 05 ca 92 4c 4c92ca05 rlc.c r36,r37
+ 84: 06 50 f4 4c 4cf45006 rlc.nc r39,r40
+ 88: 06 d6 55 4d 4d55d606 rlc.nc r42,r43
+ 8c: 06 5c b7 4d 4db75c06 rlc.nc r45,r46
+ 90: 07 e2 18 4e 4e18e207 rlc.v r48,r49
+ 94: 07 64 39 4e 4e396407 rlc.v r49,r50
+ 98: 08 ee 3b 4e 4e3bee08 rlc.nv r49,r55
+ 9c: 08 74 3d 4e 4e3d7408 rlc.nv r49,r58
+ a0: 09 78 9e 4f 4f9e7809 rlc.gt lp_count,lp_count
+ a4: 0a 7c 1f 48 481f7c0a rlc.ge r0,0
+ a8: 00 00 00 00
+ ac: 0c 7c df 4f 4fdf7c0c rlc.le 0,2
+ b0: 02 00 00 00
+ b4: 0d 86 61 48 4861860d rlc.hi r3,r3
+ b8: 0e 08 82 48 4882080e rlc.ls r4,r4
+ bc: 0f 8a a2 48 48a28a0f rlc.pnz r5,r5
+ c0: 00 83 00 48 48008300 rlc.f r0,r1
+ c4: 01 fa 5e 48 485efa01 rlc.f r2,1
+ c8: 00 87 e1 4f 4fe18700 rlc.f 0,r3
+ cc: 00 09 e2 4f 4fe20900 rlc.f 0,r4
+ d0: 00 7d bf 48 48bf7d00 rlc.f r5,0x200
+ d4: 00 02 00 00
+ d8: 00 7d df 4f 4fdf7d00 rlc.f 0,0x200
+ dc: 00 02 00 00
+ e0: 01 83 00 48 48008301 rlc.z.f r0,r1
+ e4: 02 7d 3f 48 483f7d02 rlc.nz.f r1,0
+ e8: 00 00 00 00
diff --git a/gas/testsuite/gas/arc/rlc.s b/gas/testsuite/gas/arc/rlc.s
new file mode 100644
index 0000000..3e5d093
--- /dev/null
+++ b/gas/testsuite/gas/arc/rlc.s
@@ -0,0 +1,58 @@
+# rlc test
+
+ rlc r0,r1
+ rlc fp,sp
+
+ rlc r0,0
+ rlc r1,-1
+ rlc 0,r2
+ rlc -1,r3
+ rlc r4,255
+ rlc 255,r5
+ rlc r6,-256
+ rlc -256,r7
+
+ rlc r8,256
+ rlc r9,-257
+ rlc r11,0x42424242
+
+ rlc 255,256
+
+ rlc r0,foo
+
+ rlc.al r0,r1
+ rlc.ra r3,r4
+ rlc.eq r6,r7
+ rlc.z r9,r10
+ rlc.ne r12,r13
+ rlc.nz r15,r16
+ rlc.pl r18,r19
+ rlc.p r21,r22
+ rlc.mi r24,r25
+ rlc.n r27,r28
+ rlc.cs r30,r31
+ rlc.c r33,r34
+ rlc.lo r36,r37
+ rlc.cc r39,r40
+ rlc.nc r42,r43
+ rlc.hs r45,r46
+ rlc.vs r48,r49
+ rlc.v r49,r50
+ rlc.vc r49,r55
+ rlc.nv r49,r58
+ rlc.gt r60,r60
+ rlc.ge r0,0
+ rlc.le 2,2
+ rlc.hi r3,r3
+ rlc.ls r4,r4
+ rlc.pnz r5,r5
+
+ rlc.f r0,r1
+ rlc.f r2,1
+ rlc.f 1,r3
+ rlc.f 0,r4
+ rlc.f r5,512
+ rlc.f 512,512
+
+ rlc.eq.f r0,r1
+ rlc.ne.f r1,0
diff --git a/gas/testsuite/gas/arc/ror.d b/gas/testsuite/gas/arc/ror.d
new file mode 100644
index 0000000..691736b
--- /dev/null
+++ b/gas/testsuite/gas/arc/ror.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 86 00 18 18008600 ror r0,r1
+ 4: 00 06 6e 1b 1b6e0600 ror fp,sp
+ 8: 00 86 1f 18 181f8600 ror r0,0
+ c: ff 87 3f 18 183f87ff ror r1,-1
+ 10: 00 06 e1 1f 1fe10600 ror 0,r2
+ 14: 00 86 e1 1f 1fe18600 ror 0,r3
+ 18: ff 86 9f 18 189f86ff ror r4,255
+ 1c: 00 86 e2 1f 1fe28600 ror 0,r5
+ 20: 00 87 df 18 18df8700 ror r6,-256
+ 24: 00 86 e3 1f 1fe38600 ror 0,r7
+ 28: 00 06 1f 19 191f0600 ror r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 06 3f 19 193f0600 ror r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 06 7f 19 197f0600 ror r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 06 ff 1f 1fff0600 ror 0,0x100
+ 44: 00 01 00 00
+ 48: 00 06 1f 18 181f0600 ror r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 86 45 19 19458601 ror.z r10,r11
+ 54: 02 86 86 19 19868602 ror.nz r12,r13
+ 58: 0b 06 df 19 19df060b ror.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 06 ff 19 19ff0609 ror.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 87 00 18 18008700 ror.f r0,r1
+ 6c: 01 86 5e 18 185e8601 ror.f r2,1
+ 70: 00 07 e2 1f 1fe20700 ror.f 0,r4
+ 74: 00 07 bf 18 18bf0700 ror.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 07 df 1f 1fdf0700 ror.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 87 00 18 18008701 ror.z.f r0,r1
+ 88: 02 07 3f 18 183f0702 ror.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 07 c1 1f 1fc1070b ror.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 07 1f 18 181f070c ror.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 07 df 1f 1fdf0704 ror.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/ror.s b/gas/testsuite/gas/arc/ror.s
new file mode 100644
index 0000000..de23351
--- /dev/null
+++ b/gas/testsuite/gas/arc/ror.s
@@ -0,0 +1,38 @@
+# ror test
+
+ ror r0,r1
+ ror fp,sp
+
+ ror r0,0
+ ror r1,-1
+ ror 0,r2
+ ror -1,r3
+ ror r4,255
+ ror 255,r5
+ ror r6,-256
+ ror -256,r7
+
+ ror r8,256
+ ror r9,-257
+ ror r11,0x42424242
+
+ ror 255,256
+
+ ror r0,foo
+
+ ror.eq r10,r11
+ ror.ne r12,r13
+ ror.lt r14,0
+ ror.gt r15,512
+
+ ror.f r0,r1
+ ror.f r2,1
+ ror.f 0,r4
+ ror.f r5,512
+ ror.f 512,512
+
+ ror.eq.f r0,r1
+ ror.ne.f r1,0
+ ror.lt.f 0,r2
+ ror.le.f r0,512
+ ror.n.f 512,512
diff --git a/gas/testsuite/gas/arc/rrc.d b/gas/testsuite/gas/arc/rrc.d
new file mode 100644
index 0000000..9c702cb
--- /dev/null
+++ b/gas/testsuite/gas/arc/rrc.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 88 00 18 18008800 rrc r0,r1
+ 4: 00 08 6e 1b 1b6e0800 rrc fp,sp
+ 8: 00 88 1f 18 181f8800 rrc r0,0
+ c: ff 89 3f 18 183f89ff rrc r1,-1
+ 10: 00 08 e1 1f 1fe10800 rrc 0,r2
+ 14: 00 88 e1 1f 1fe18800 rrc 0,r3
+ 18: ff 88 9f 18 189f88ff rrc r4,255
+ 1c: 00 88 e2 1f 1fe28800 rrc 0,r5
+ 20: 00 89 df 18 18df8900 rrc r6,-256
+ 24: 00 88 e3 1f 1fe38800 rrc 0,r7
+ 28: 00 08 1f 19 191f0800 rrc r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 08 3f 19 193f0800 rrc r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 08 7f 19 197f0800 rrc r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 08 ff 1f 1fff0800 rrc 0,0x100
+ 44: 00 01 00 00
+ 48: 00 08 1f 18 181f0800 rrc r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 88 45 19 19458801 rrc.z r10,r11
+ 54: 02 88 86 19 19868802 rrc.nz r12,r13
+ 58: 0b 08 df 19 19df080b rrc.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 08 ff 19 19ff0809 rrc.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 89 00 18 18008900 rrc.f r0,r1
+ 6c: 01 88 5e 18 185e8801 rrc.f r2,1
+ 70: 00 09 e2 1f 1fe20900 rrc.f 0,r4
+ 74: 00 09 bf 18 18bf0900 rrc.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 09 df 1f 1fdf0900 rrc.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 89 00 18 18008901 rrc.z.f r0,r1
+ 88: 02 09 3f 18 183f0902 rrc.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 09 c1 1f 1fc1090b rrc.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 09 1f 18 181f090c rrc.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 09 df 1f 1fdf0904 rrc.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/rrc.s b/gas/testsuite/gas/arc/rrc.s
new file mode 100644
index 0000000..c0e1780
--- /dev/null
+++ b/gas/testsuite/gas/arc/rrc.s
@@ -0,0 +1,38 @@
+# rrc test
+
+ rrc r0,r1
+ rrc fp,sp
+
+ rrc r0,0
+ rrc r1,-1
+ rrc 0,r2
+ rrc -1,r3
+ rrc r4,255
+ rrc 255,r5
+ rrc r6,-256
+ rrc -256,r7
+
+ rrc r8,256
+ rrc r9,-257
+ rrc r11,0x42424242
+
+ rrc 255,256
+
+ rrc r0,foo
+
+ rrc.eq r10,r11
+ rrc.ne r12,r13
+ rrc.lt r14,0
+ rrc.gt r15,512
+
+ rrc.f r0,r1
+ rrc.f r2,1
+ rrc.f 0,r4
+ rrc.f r5,512
+ rrc.f 512,512
+
+ rrc.eq.f r0,r1
+ rrc.ne.f r1,0
+ rrc.lt.f 0,r2
+ rrc.le.f r0,512
+ rrc.n.f 512,512
diff --git a/gas/testsuite/gas/arc/sbc.d b/gas/testsuite/gas/arc/sbc.d
new file mode 100644
index 0000000..7fa0490
--- /dev/null
+++ b/gas/testsuite/gas/arc/sbc.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 58 58008400 sbc r0,r1,r2
+ 4: 00 b8 4d 5b 5b4db800 sbc gp,fp,sp
+ 8: 00 3e af 5b 5baf3e00 sbc ilink1,ilink2,blink
+ c: 00 f8 1d 5f 5f1df800 sbc r56,r59,lp_count
+ 10: 00 fe 00 58 5800fe00 sbc r0,r1,0
+ 14: 00 84 1f 58 581f8400 sbc r0,0,r2
+ 18: 00 84 e0 5f 5fe08400 sbc 0,r1,r2
+ 1c: ff ff 00 58 5800ffff sbc r0,r1,-1
+ 20: ff 85 1f 58 581f85ff sbc r0,-1,r2
+ 24: 00 84 e0 5f 5fe08400 sbc 0,r1,r2
+ 28: ff fe 00 58 5800feff sbc r0,r1,255
+ 2c: ff 84 1f 58 581f84ff sbc r0,255,r2
+ 30: 00 84 e0 5f 5fe08400 sbc 0,r1,r2
+ 34: 00 ff 00 58 5800ff00 sbc r0,r1,-256
+ 38: 00 85 1f 58 581f8500 sbc r0,-256,r2
+ 3c: 00 84 e0 5f 5fe08400 sbc 0,r1,r2
+ 40: 00 fc 00 58 5800fc00 sbc r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 58 581f0400 sbc r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 58 581ffcff sbc r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 58 581f7eff sbc r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 58 5800fc00 sbc r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 58 58008400 sbc r0,r1,r2
+ 6c: 00 0a 62 58 58620a00 sbc r3,r4,r5
+ 70: 01 90 c3 58 58c39001 sbc.z r6,r7,r8
+ 74: 01 16 25 59 59251601 sbc.z r9,r10,r11
+ 78: 02 9c 86 59 59869c02 sbc.nz r12,r13,r14
+ 7c: 02 22 e8 59 59e82202 sbc.nz r15,r16,r17
+ 80: 03 a8 49 5a 5a49a803 sbc.p r18,r19,r20
+ 84: 03 2e ab 5a 5aab2e03 sbc.p r21,r22,r23
+ 88: 04 b4 0c 5b 5b0cb404 sbc.n r24,r25,gp
+ 8c: 04 3a 6e 5b 5b6e3a04 sbc.n fp,sp,ilink1
+ 90: 05 c0 cf 5b 5bcfc005 sbc.c ilink2,blink,r32
+ 94: 05 46 31 5c 5c314605 sbc.c r33,r34,r35
+ 98: 05 cc 92 5c 5c92cc05 sbc.c r36,r37,r38
+ 9c: 06 52 f4 5c 5cf45206 sbc.nc r39,r40,r41
+ a0: 06 d8 55 5d 5d55d806 sbc.nc r42,r43,r44
+ a4: 06 5e b7 5d 5db75e06 sbc.nc r45,r46,r47
+ a8: 07 e4 18 5e 5e18e407 sbc.v r48,r49,r50
+ ac: 07 6a 1a 5f 5f1a6a07 sbc.v r56,r52,r53
+ b0: 08 f0 1b 5f 5f1bf008 sbc.nv r56,r55,r56
+ b4: 08 76 1d 5f 5f1d7608 sbc.nv r56,r58,r59
+ b8: 09 00 9e 5f 5f9e0009 sbc.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 58 58007c0a sbc.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 58 583f020b sbc.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 58 587f060d sbc.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 5f 5fdf080e sbc.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 5f 5fc2fc0f sbc.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 58 58008500 sbc.f r0,r1,r2
+ e8: 01 fa 00 58 5800fa01 sbc.f r0,r1,1
+ ec: 01 84 1e 58 581e8401 sbc.f r0,1,r2
+ f0: 00 85 e0 5f 5fe08500 sbc.f 0,r1,r2
+ f4: 00 fd 00 58 5800fd00 sbc.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 58 581f0500 sbc.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 58 58008501 sbc.z.f r0,r1,r2
+ 108: 02 fd 00 58 5800fd02 sbc.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 58 581f050b sbc.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 5f 5fc08509 sbc.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 58 5800fd0c sbc.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 58 581f050a sbc.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/sbc.s b/gas/testsuite/gas/arc/sbc.s
new file mode 100644
index 0000000..8eb9646
--- /dev/null
+++ b/gas/testsuite/gas/arc/sbc.s
@@ -0,0 +1,68 @@
+# sbc test
+
+ sbc r0,r1,r2
+ sbc r26,fp,sp
+ sbc ilink1,ilink2,blink
+ sbc r56,r59,lp_count
+
+ sbc r0,r1,0
+ sbc r0,0,r2
+ sbc 0,r1,r2
+ sbc r0,r1,-1
+ sbc r0,-1,r2
+ sbc -1,r1,r2
+ sbc r0,r1,255
+ sbc r0,255,r2
+ sbc 255,r1,r2
+ sbc r0,r1,-256
+ sbc r0,-256,r2
+ sbc -256,r1,r2
+
+ sbc r0,r1,256
+ sbc r0,-257,r2
+
+ sbc r0,255,256
+ sbc r0,256,255
+
+ sbc r0,r1,foo
+
+ sbc.al r0,r1,r2
+ sbc.ra r3,r4,r5
+ sbc.eq r6,r7,r8
+ sbc.z r9,r10,r11
+ sbc.ne r12,r13,r14
+ sbc.nz r15,r16,r17
+ sbc.pl r18,r19,r20
+ sbc.p r21,r22,r23
+ sbc.mi r24,r25,r26
+ sbc.n r27,r28,r29
+ sbc.cs r30,r31,r32
+ sbc.c r33,r34,r35
+ sbc.lo r36,r37,r38
+ sbc.cc r39,r40,r41
+ sbc.nc r42,r43,r44
+ sbc.hs r45,r46,r47
+ sbc.vs r48,r49,r50
+ sbc.v r56,r52,r53
+ sbc.vc r56,r55,r56
+ sbc.nv r56,r58,r59
+ sbc.gt r60,r60,r0
+ sbc.ge r0,r0,0
+ sbc.lt r1,1,r1
+ sbc.hi r3,3,r3
+ sbc.ls 4,4,r4
+ sbc.pnz 5,r5,5
+
+ sbc.f r0,r1,r2
+ sbc.f r0,r1,1
+ sbc.f r0,1,r2
+ sbc.f 0,r1,r2
+ sbc.f r0,r1,512
+ sbc.f r0,512,r2
+
+ sbc.eq.f r0,r1,r2
+ sbc.ne.f r0,r1,0
+ sbc.lt.f r0,0,r2
+ sbc.gt.f 0,r1,r2
+ sbc.le.f r0,r1,512
+ sbc.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/sexb.d b/gas/testsuite/gas/arc/sexb.d
new file mode 100644
index 0000000..96d35d6
--- /dev/null
+++ b/gas/testsuite/gas/arc/sexb.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 8a 00 18 18008a00 sexb r0,r1
+ 4: 00 0a 6e 1b 1b6e0a00 sexb fp,sp
+ 8: 00 8a 1f 18 181f8a00 sexb r0,0
+ c: ff 8b 3f 18 183f8bff sexb r1,-1
+ 10: 00 0a e1 1f 1fe10a00 sexb 0,r2
+ 14: 00 8a e1 1f 1fe18a00 sexb 0,r3
+ 18: ff 8a 9f 18 189f8aff sexb r4,255
+ 1c: 00 8a e2 1f 1fe28a00 sexb 0,r5
+ 20: 00 8b df 18 18df8b00 sexb r6,-256
+ 24: 00 8a e3 1f 1fe38a00 sexb 0,r7
+ 28: 00 0a 1f 19 191f0a00 sexb r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 0a 3f 19 193f0a00 sexb r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 0a 7f 19 197f0a00 sexb r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 0a ff 1f 1fff0a00 sexb 0,0x100
+ 44: 00 01 00 00
+ 48: 00 0a 1f 18 181f0a00 sexb r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 8a 45 19 19458a01 sexb.z r10,r11
+ 54: 02 8a 86 19 19868a02 sexb.nz r12,r13
+ 58: 0b 0a df 19 19df0a0b sexb.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 0a ff 19 19ff0a09 sexb.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 8b 00 18 18008b00 sexb.f r0,r1
+ 6c: 01 8a 5e 18 185e8a01 sexb.f r2,1
+ 70: 00 0b e2 1f 1fe20b00 sexb.f 0,r4
+ 74: 00 0b bf 18 18bf0b00 sexb.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 0b df 1f 1fdf0b00 sexb.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 8b 00 18 18008b01 sexb.z.f r0,r1
+ 88: 02 0b 3f 18 183f0b02 sexb.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 0b c1 1f 1fc10b0b sexb.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 0b 1f 18 181f0b0c sexb.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 0b df 1f 1fdf0b04 sexb.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/sexb.s b/gas/testsuite/gas/arc/sexb.s
new file mode 100644
index 0000000..a2afc3b
--- /dev/null
+++ b/gas/testsuite/gas/arc/sexb.s
@@ -0,0 +1,38 @@
+# sexb test
+
+ sexb r0,r1
+ sexb fp,sp
+
+ sexb r0,0
+ sexb r1,-1
+ sexb 0,r2
+ sexb -1,r3
+ sexb r4,255
+ sexb 255,r5
+ sexb r6,-256
+ sexb -256,r7
+
+ sexb r8,256
+ sexb r9,-257
+ sexb r11,0x42424242
+
+ sexb 255,256
+
+ sexb r0,foo
+
+ sexb.eq r10,r11
+ sexb.ne r12,r13
+ sexb.lt r14,0
+ sexb.gt r15,512
+
+ sexb.f r0,r1
+ sexb.f r2,1
+ sexb.f 0,r4
+ sexb.f r5,512
+ sexb.f 512,512
+
+ sexb.eq.f r0,r1
+ sexb.ne.f r1,0
+ sexb.lt.f 0,r2
+ sexb.le.f r0,512
+ sexb.n.f 512,512
diff --git a/gas/testsuite/gas/arc/sexw.d b/gas/testsuite/gas/arc/sexw.d
new file mode 100644
index 0000000..7b6a612
--- /dev/null
+++ b/gas/testsuite/gas/arc/sexw.d
@@ -0,0 +1,51 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 8c 00 18 18008c00 sexw r0,r1
+ 4: 00 0c 6e 1b 1b6e0c00 sexw fp,sp
+ 8: 00 8c 1f 18 181f8c00 sexw r0,0
+ c: ff 8d 3f 18 183f8dff sexw r1,-1
+ 10: 00 0c e1 1f 1fe10c00 sexw 0,r2
+ 14: 00 8c e1 1f 1fe18c00 sexw 0,r3
+ 18: ff 8c 9f 18 189f8cff sexw r4,255
+ 1c: 00 8c e2 1f 1fe28c00 sexw 0,r5
+ 20: 00 8d df 18 18df8d00 sexw r6,-256
+ 24: 00 8c e3 1f 1fe38c00 sexw 0,r7
+ 28: 00 0c 1f 19 191f0c00 sexw r8,0x100
+ 2c: 00 01 00 00
+ 30: 00 0c 3f 19 193f0c00 sexw r9,0xffff_feff
+ 34: ff fe ff ff
+ 38: 00 0c 7f 19 197f0c00 sexw r11,0x4242_4242
+ 3c: 42 42 42 42
+ 40: 00 0c ff 1f 1fff0c00 sexw 0,0x100
+ 44: 00 01 00 00
+ 48: 00 0c 1f 18 181f0c00 sexw r0,0
+ 4c: 00 00 00 00
+ 4c: R_ARC_32 foo
+ 50: 01 8c 45 19 19458c01 sexw.z r10,r11
+ 54: 02 8c 86 19 19868c02 sexw.nz r12,r13
+ 58: 0b 0c df 19 19df0c0b sexw.lt r14,0
+ 5c: 00 00 00 00
+ 60: 09 0c ff 19 19ff0c09 sexw.gt r15,0x200
+ 64: 00 02 00 00
+ 68: 00 8d 00 18 18008d00 sexw.f r0,r1
+ 6c: 01 8c 5e 18 185e8c01 sexw.f r2,1
+ 70: 00 0d e2 1f 1fe20d00 sexw.f 0,r4
+ 74: 00 0d bf 18 18bf0d00 sexw.f r5,0x200
+ 78: 00 02 00 00
+ 7c: 00 0d df 1f 1fdf0d00 sexw.f 0,0x200
+ 80: 00 02 00 00
+ 84: 01 8d 00 18 18008d01 sexw.z.f r0,r1
+ 88: 02 0d 3f 18 183f0d02 sexw.nz.f r1,0
+ 8c: 00 00 00 00
+ 90: 0b 0d c1 1f 1fc10d0b sexw.lt.f 0,r2
+ 94: 00 00 00 00 00000000
+ 98: 0c 0d 1f 18 181f0d0c sexw.le.f r0,0x200
+ 9c: 00 02 00 00
+ a0: 04 0d df 1f 1fdf0d04 sexw.n.f 0,0x200
+ a4: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/sexw.s b/gas/testsuite/gas/arc/sexw.s
new file mode 100644
index 0000000..6d05dab
--- /dev/null
+++ b/gas/testsuite/gas/arc/sexw.s
@@ -0,0 +1,38 @@
+# sexw test
+
+ sexw r0,r1
+ sexw fp,sp
+
+ sexw r0,0
+ sexw r1,-1
+ sexw 0,r2
+ sexw -1,r3
+ sexw r4,255
+ sexw 255,r5
+ sexw r6,-256
+ sexw -256,r7
+
+ sexw r8,256
+ sexw r9,-257
+ sexw r11,0x42424242
+
+ sexw 255,256
+
+ sexw r0,foo
+
+ sexw.eq r10,r11
+ sexw.ne r12,r13
+ sexw.lt r14,0
+ sexw.gt r15,512
+
+ sexw.f r0,r1
+ sexw.f r2,1
+ sexw.f 0,r4
+ sexw.f r5,512
+ sexw.f 512,512
+
+ sexw.eq.f r0,r1
+ sexw.ne.f r1,0
+ sexw.lt.f 0,r2
+ sexw.le.f r0,512
+ sexw.n.f 512,512
diff --git a/gas/testsuite/gas/arc/sleep.d b/gas/testsuite/gas/arc/sleep.d
new file mode 100644
index 0000000..b6262f6
--- /dev/null
+++ b/gas/testsuite/gas/arc/sleep.d
@@ -0,0 +1,11 @@
+#as: -EL -marc7
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <main>:
+ 0: 00 84 00 40 40008400 add r0,r1,r2
+ 4: 01 fe ff 1f 1ffffe01 sleep
+ 8: 00 0a 62 50 50620a00 sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/sleep.s b/gas/testsuite/gas/arc/sleep.s
new file mode 100644
index 0000000..c5797fe
--- /dev/null
+++ b/gas/testsuite/gas/arc/sleep.s
@@ -0,0 +1,6 @@
+# sleep test
+
+main:
+ add r0,r1,r2
+ sleep
+ sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/st.d b/gas/testsuite/gas/arc/st.d
index cca99a8..0ed6b80 100644
--- a/gas/testsuite/gas/arc/st.d
+++ b/gas/testsuite/gas/arc/st.d
@@ -1,25 +1,27 @@
-#objdump: -dr
-#name: st/sr
-
-# Test the st/sr insn.
+#as: -EL
+#objdump: -dr -EL
.*: +file format elf32-.*arc
Disassembly of section .text:
-00000000 10008000 st r0,\[r1\]
-00000004 10030a01 st r5,\[r6,1\]
-00000008 10040fff st r7,\[r8,-1\]
-0000000c 100512ff st r9,\[r10,255\]
-00000010 10061700 st r11,\[r12,-256\]
-00000014 101f2600 st r19,\[0\]
- RELOC: 00000018 R_ARC_32 foo
-0000001c 101f2800 st r20,\[4\]
- RELOC: 00000020 R_ARC_32 foo
-00000024 105f0000 stb r0,\[0\]
-0000002c 109f0000 stw r0,\[0\]
-00000034 111f0000 st.a r0,\[0\]
-0000003c 141f0000 st.di r0,\[0\]
-00000044 15400000 stb.a.di r0,\[r0\]
-00000048 12008000 sr r0,\[r1\]
-0000004c 121f8400 sr r2,\[status\]
-00000050 121f0600 sr r3,\[305419896\]
+
+00000000 <.text>:
+ 0: 00 02 01 10 10010200 st r1,\[r2\]
+ 4: 0e 02 01 10 1001020e st r1,\[r2,14\]
+ 8: 00 02 41 10 10410200 stb r1,\[r2\]
+ c: 0e 82 01 11 1101820e st.a r1,\[r3,14\]
+ 10: 02 02 81 11 11810202 stw.a r1,\[r2,2\]
+ 14: 00 02 1f 10 101f0200 st r1,\[0x384\]
+ 18: 84 03 00 00
+ 1c: 00 7e 41 10 10417e00 stb 0,\[r2\]
+ 20: f8 7f 01 10 10017ff8 st -8,\[r2,-8\]
+ 24: 50 7e 1f 10 101f7e50 st 80,\[0x2ee\]
+ 28: 9e 02 00 00
+ 2c: 00 04 1f 10 101f0400 st r2,\[0\]
+ 30: 00 00 00 00
+ 30: R_ARC_32 foo
+ 34: 02 02 01 14 14010202 st.di r1,\[r2,2\]
+ 38: 03 02 01 15 15010203 st.a.di r1,\[r2,3\]
+ 3c: 04 02 81 15 15810204 stw.a.di r1,\[r2,4\]
+ 40: 00 02 01 12 12010200 sr r1,\[r2\]
+ 44: 0e 82 1f 12 121f820e sr r1,\[0xe\]
diff --git a/gas/testsuite/gas/arc/st.s b/gas/testsuite/gas/arc/st.s
index 10af198..2754d27 100644
--- a/gas/testsuite/gas/arc/st.s
+++ b/gas/testsuite/gas/arc/st.s
@@ -1,19 +1,18 @@
-# st/sr test
-
- st r0,[r1]
- st r5,[r6,1]
- st r7,[r8,-1]
- st r9,[r10,255]
- st r11,[r12,-256]
- st r19,[foo]
- st r20,[foo+4]
-
- stb r0,[0]
- stw r0,[0]
- st.a r0,[0]
- st.di r0,[0]
- stb.a.di r0,[r0]
+# st test
- sr r0,[r1]
- sr r2,[status]
- sr r3,[0x12345678]
+ st r1,[r2]
+ st r1,[r2,14]
+ stb r1,[r2]
+ st.a r1,[r3,14]
+ stw.a r1,[r2,2]
+ st r1,[900]
+ stb 0,[r2]
+ st -8,[r2,-8]
+ st 80,[750]
+ st r2,[foo]
+ st.di r1,[r2,2]
+ st.a.di r1,[r2,3]
+ stw.a.di r1,[r2,4]
+
+ sr r1,[r2]
+ sr r1,[14]
diff --git a/gas/testsuite/gas/arc/sub.d b/gas/testsuite/gas/arc/sub.d
new file mode 100644
index 0000000..e1c333d0
--- /dev/null
+++ b/gas/testsuite/gas/arc/sub.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 50 50008400 sub r0,r1,r2
+ 4: 00 b8 4d 53 534db800 sub gp,fp,sp
+ 8: 00 3e af 53 53af3e00 sub ilink1,ilink2,blink
+ c: 00 f8 1d 57 571df800 sub r56,r59,lp_count
+ 10: 00 fe 00 50 5000fe00 sub r0,r1,0
+ 14: 00 84 1f 50 501f8400 sub r0,0,r2
+ 18: 00 84 e0 57 57e08400 sub 0,r1,r2
+ 1c: ff ff 00 50 5000ffff sub r0,r1,-1
+ 20: ff 85 1f 50 501f85ff sub r0,-1,r2
+ 24: 00 84 e0 57 57e08400 sub 0,r1,r2
+ 28: ff fe 00 50 5000feff sub r0,r1,255
+ 2c: ff 84 1f 50 501f84ff sub r0,255,r2
+ 30: 00 84 e0 57 57e08400 sub 0,r1,r2
+ 34: 00 ff 00 50 5000ff00 sub r0,r1,-256
+ 38: 00 85 1f 50 501f8500 sub r0,-256,r2
+ 3c: 00 84 e0 57 57e08400 sub 0,r1,r2
+ 40: 00 fc 00 50 5000fc00 sub r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 50 501f0400 sub r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 50 501ffcff sub r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 50 501f7eff sub r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 50 5000fc00 sub r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 50 50008400 sub r0,r1,r2
+ 6c: 00 0a 62 50 50620a00 sub r3,r4,r5
+ 70: 01 90 c3 50 50c39001 sub.z r6,r7,r8
+ 74: 01 16 25 51 51251601 sub.z r9,r10,r11
+ 78: 02 9c 86 51 51869c02 sub.nz r12,r13,r14
+ 7c: 02 22 e8 51 51e82202 sub.nz r15,r16,r17
+ 80: 03 a8 49 52 5249a803 sub.p r18,r19,r20
+ 84: 03 2e ab 52 52ab2e03 sub.p r21,r22,r23
+ 88: 04 b4 0c 53 530cb404 sub.n r24,r25,gp
+ 8c: 04 3a 6e 53 536e3a04 sub.n fp,sp,ilink1
+ 90: 05 c0 cf 53 53cfc005 sub.c ilink2,blink,r32
+ 94: 05 46 31 54 54314605 sub.c r33,r34,r35
+ 98: 05 cc 92 54 5492cc05 sub.c r36,r37,r38
+ 9c: 06 52 f4 54 54f45206 sub.nc r39,r40,r41
+ a0: 06 d8 55 55 5555d806 sub.nc r42,r43,r44
+ a4: 06 5e b7 55 55b75e06 sub.nc r45,r46,r47
+ a8: 07 e4 18 56 5618e407 sub.v r48,r49,r50
+ ac: 07 6a 1a 57 571a6a07 sub.v r56,r52,r53
+ b0: 08 f0 1b 57 571bf008 sub.nv r56,r55,r56
+ b4: 08 76 1d 57 571d7608 sub.nv r56,r58,r59
+ b8: 09 00 9e 57 579e0009 sub.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 50 50007c0a sub.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 50 503f020b sub.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 50 507f060d sub.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 57 57df080e sub.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 57 57c2fc0f sub.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 50 50008500 sub.f r0,r1,r2
+ e8: 01 fa 00 50 5000fa01 sub.f r0,r1,1
+ ec: 01 84 1e 50 501e8401 sub.f r0,1,r2
+ f0: 00 85 e0 57 57e08500 sub.f 0,r1,r2
+ f4: 00 fd 00 50 5000fd00 sub.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 50 501f0500 sub.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 50 50008501 sub.z.f r0,r1,r2
+ 108: 02 fd 00 50 5000fd02 sub.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 50 501f050b sub.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 57 57c08509 sub.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 50 5000fd0c sub.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 50 501f050a sub.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/sub.s b/gas/testsuite/gas/arc/sub.s
new file mode 100644
index 0000000..6dd5009
--- /dev/null
+++ b/gas/testsuite/gas/arc/sub.s
@@ -0,0 +1,68 @@
+# sub test
+
+ sub r0,r1,r2
+ sub r26,fp,sp
+ sub ilink1,ilink2,blink
+ sub r56,r59,lp_count
+
+ sub r0,r1,0
+ sub r0,0,r2
+ sub 0,r1,r2
+ sub r0,r1,-1
+ sub r0,-1,r2
+ sub -1,r1,r2
+ sub r0,r1,255
+ sub r0,255,r2
+ sub 255,r1,r2
+ sub r0,r1,-256
+ sub r0,-256,r2
+ sub -256,r1,r2
+
+ sub r0,r1,256
+ sub r0,-257,r2
+
+ sub r0,255,256
+ sub r0,256,255
+
+ sub r0,r1,foo
+
+ sub.al r0,r1,r2
+ sub.ra r3,r4,r5
+ sub.eq r6,r7,r8
+ sub.z r9,r10,r11
+ sub.ne r12,r13,r14
+ sub.nz r15,r16,r17
+ sub.pl r18,r19,r20
+ sub.p r21,r22,r23
+ sub.mi r24,r25,r26
+ sub.n r27,r28,r29
+ sub.cs r30,r31,r32
+ sub.c r33,r34,r35
+ sub.lo r36,r37,r38
+ sub.cc r39,r40,r41
+ sub.nc r42,r43,r44
+ sub.hs r45,r46,r47
+ sub.vs r48,r49,r50
+ sub.v r56,r52,r53
+ sub.vc r56,r55,r56
+ sub.nv r56,r58,r59
+ sub.gt r60,r60,r0
+ sub.ge r0,r0,0
+ sub.lt r1,1,r1
+ sub.hi r3,3,r3
+ sub.ls 4,4,r4
+ sub.pnz 5,r5,5
+
+ sub.f r0,r1,r2
+ sub.f r0,r1,1
+ sub.f r0,1,r2
+ sub.f 0,r1,r2
+ sub.f r0,r1,512
+ sub.f r0,512,r2
+
+ sub.eq.f r0,r1,r2
+ sub.ne.f r0,r1,0
+ sub.lt.f r0,0,r2
+ sub.gt.f 0,r1,r2
+ sub.le.f r0,r1,512
+ sub.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/arc/swi.d b/gas/testsuite/gas/arc/swi.d
new file mode 100644
index 0000000..58654ec
--- /dev/null
+++ b/gas/testsuite/gas/arc/swi.d
@@ -0,0 +1,11 @@
+#as: -EL -marc8
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <main>:
+ 0: 00 84 00 40 40008400 add r0,r1,r2
+ 4: 02 fe ff 1f 1ffffe02 swi
+ 8: 00 0a 62 50 50620a00 sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/swi.s b/gas/testsuite/gas/arc/swi.s
new file mode 100644
index 0000000..ce0d7fe
--- /dev/null
+++ b/gas/testsuite/gas/arc/swi.s
@@ -0,0 +1,6 @@
+# swi test
+
+main:
+ add r0,r1,r2
+ swi
+ sub r3,r4,r5
diff --git a/gas/testsuite/gas/arc/warn.exp b/gas/testsuite/gas/arc/warn.exp
index 79ff126..e544ea5 100644
--- a/gas/testsuite/gas/arc/warn.exp
+++ b/gas/testsuite/gas/arc/warn.exp
@@ -1,13 +1,8 @@
# Test assembler warnings.
if [istarget arc*-*-*] {
-
load_lib gas-dg.exp
-
dg-init
-
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/warn*.s]] "" ""
-
dg-finish
-
}
diff --git a/gas/testsuite/gas/arc/warn.s b/gas/testsuite/gas/arc/warn.s
index 6fcb437..060a74e 100644
--- a/gas/testsuite/gas/arc/warn.s
+++ b/gas/testsuite/gas/arc/warn.s
@@ -3,12 +3,9 @@
; { dg-do assemble { target arc-*-* } }
b.d foo
- mov r0,256 ; { dg-warning "8 byte instruction in delay slot" "8 byte insn in delay slot" }
+ mov r0,256 ; { dg-warning "8 byte instruction in delay slot" "8 byte instruction in delay slot" }
- j.d foo ; { dg-warning "8 byte jump instruction with delay slot" "8 byte jump with delay slot" }
+ j.d foo ; { dg-warning "8 byte jump instruction with delay slot" "8 byte jump instruction with delay slot" }
mov r0,r1
- sub.f 0,r0,r2
- beq foo ; { dg-warning "conditional branch follows set of flags" "cc set/branch nop test" }
-
foo:
diff --git a/gas/testsuite/gas/arc/xor.d b/gas/testsuite/gas/arc/xor.d
new file mode 100644
index 0000000..46fdedd
--- /dev/null
+++ b/gas/testsuite/gas/arc/xor.d
@@ -0,0 +1,85 @@
+#as: -EL
+#objdump: -dr -EL
+
+.*: +file format elf32-.*arc
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 00 84 00 78 78008400 xor r0,r1,r2
+ 4: 00 b8 4d 7b 7b4db800 xor gp,fp,sp
+ 8: 00 3e af 7b 7baf3e00 xor ilink1,ilink2,blink
+ c: 00 f8 1d 7f 7f1df800 xor r56,r59,lp_count
+ 10: 00 fe 00 78 7800fe00 xor r0,r1,0
+ 14: 00 84 1f 78 781f8400 xor r0,0,r2
+ 18: 00 84 e0 7f 7fe08400 xor 0,r1,r2
+ 1c: ff ff 00 78 7800ffff xor r0,r1,-1
+ 20: ff 85 1f 78 781f85ff xor r0,-1,r2
+ 24: 00 84 e0 7f 7fe08400 xor 0,r1,r2
+ 28: ff fe 00 78 7800feff xor r0,r1,255
+ 2c: ff 84 1f 78 781f84ff xor r0,255,r2
+ 30: 00 84 e0 7f 7fe08400 xor 0,r1,r2
+ 34: 00 ff 00 78 7800ff00 xor r0,r1,-256
+ 38: 00 85 1f 78 781f8500 xor r0,-256,r2
+ 3c: 00 84 e0 7f 7fe08400 xor 0,r1,r2
+ 40: 00 fc 00 78 7800fc00 xor r0,r1,0x100
+ 44: 00 01 00 00
+ 48: 00 04 1f 78 781f0400 xor r0,0xffff_feff,r2
+ 4c: ff fe ff ff
+ 50: ff fc 1f 78 781ffcff xor r0,255,0x100
+ 54: 00 01 00 00
+ 58: ff 7e 1f 78 781f7eff xor r0,0x100,255
+ 5c: 00 01 00 00
+ 60: 00 fc 00 78 7800fc00 xor r0,r1,0
+ 64: 00 00 00 00
+ 64: R_ARC_32 foo
+ 68: 00 84 00 78 78008400 xor r0,r1,r2
+ 6c: 00 0a 62 78 78620a00 xor r3,r4,r5
+ 70: 01 90 c3 78 78c39001 xor.z r6,r7,r8
+ 74: 01 16 25 79 79251601 xor.z r9,r10,r11
+ 78: 02 9c 86 79 79869c02 xor.nz r12,r13,r14
+ 7c: 02 22 e8 79 79e82202 xor.nz r15,r16,r17
+ 80: 03 a8 49 7a 7a49a803 xor.p r18,r19,r20
+ 84: 03 2e ab 7a 7aab2e03 xor.p r21,r22,r23
+ 88: 04 b4 0c 7b 7b0cb404 xor.n r24,r25,gp
+ 8c: 04 3a 6e 7b 7b6e3a04 xor.n fp,sp,ilink1
+ 90: 05 c0 cf 7b 7bcfc005 xor.c ilink2,blink,r32
+ 94: 05 46 31 7c 7c314605 xor.c r33,r34,r35
+ 98: 05 cc 92 7c 7c92cc05 xor.c r36,r37,r38
+ 9c: 06 52 f4 7c 7cf45206 xor.nc r39,r40,r41
+ a0: 06 d8 55 7d 7d55d806 xor.nc r42,r43,r44
+ a4: 06 5e b7 7d 7db75e06 xor.nc r45,r46,r47
+ a8: 07 e4 18 7e 7e18e407 xor.v r48,r49,r50
+ ac: 07 6a 1a 7f 7f1a6a07 xor.v r56,r52,r53
+ b0: 08 f0 1b 7f 7f1bf008 xor.nv r56,r55,r56
+ b4: 08 76 1d 7f 7f1d7608 xor.nv r56,r58,r59
+ b8: 09 00 9e 7f 7f9e0009 xor.gt lp_count,lp_count,r0
+ bc: 0a 7c 00 78 78007c0a xor.ge r0,r0,0
+ c0: 00 00 00 00
+ c4: 0b 02 3f 78 783f020b xor.lt r1,1,r1
+ c8: 01 00 00 00
+ cc: 0d 06 7f 78 787f060d xor.hi r3,3,r3
+ d0: 03 00 00 00
+ d4: 0e 08 df 7f 7fdf080e xor.ls 0,4,r4
+ d8: 04 00 00 00
+ dc: 0f fc c2 7f 7fc2fc0f xor.pnz 0,r5,5
+ e0: 05 00 00 00
+ e4: 00 85 00 78 78008500 xor.f r0,r1,r2
+ e8: 01 fa 00 78 7800fa01 xor.f r0,r1,1
+ ec: 01 84 1e 78 781e8401 xor.f r0,1,r2
+ f0: 00 85 e0 7f 7fe08500 xor.f 0,r1,r2
+ f4: 00 fd 00 78 7800fd00 xor.f r0,r1,0x200
+ f8: 00 02 00 00
+ fc: 00 05 1f 78 781f0500 xor.f r0,0x200,r2
+ 100: 00 02 00 00
+ 104: 01 85 00 78 78008501 xor.z.f r0,r1,r2
+ 108: 02 fd 00 78 7800fd02 xor.nz.f r0,r1,0
+ 10c: 00 00 00 00
+ 110: 0b 05 1f 78 781f050b xor.lt.f r0,0,r2
+ 114: 00 00 00 00
+ 118: 09 85 c0 7f 7fc08509 xor.gt.f 0,r1,r2
+ 11c: 00 00 00 00 00000000
+ 120: 0c fd 00 78 7800fd0c xor.le.f r0,r1,0x200
+ 124: 00 02 00 00
+ 128: 0a 05 1f 78 781f050a xor.ge.f r0,0x200,r2
+ 12c: 00 02 00 00
diff --git a/gas/testsuite/gas/arc/xor.s b/gas/testsuite/gas/arc/xor.s
new file mode 100644
index 0000000..090107a
--- /dev/null
+++ b/gas/testsuite/gas/arc/xor.s
@@ -0,0 +1,68 @@
+# xor test
+
+ xor r0,r1,r2
+ xor r26,fp,sp
+ xor ilink1,ilink2,blink
+ xor r56,r59,lp_count
+
+ xor r0,r1,0
+ xor r0,0,r2
+ xor 0,r1,r2
+ xor r0,r1,-1
+ xor r0,-1,r2
+ xor -1,r1,r2
+ xor r0,r1,255
+ xor r0,255,r2
+ xor 255,r1,r2
+ xor r0,r1,-256
+ xor r0,-256,r2
+ xor -256,r1,r2
+
+ xor r0,r1,256
+ xor r0,-257,r2
+
+ xor r0,255,256
+ xor r0,256,255
+
+ xor r0,r1,foo
+
+ xor.al r0,r1,r2
+ xor.ra r3,r4,r5
+ xor.eq r6,r7,r8
+ xor.z r9,r10,r11
+ xor.ne r12,r13,r14
+ xor.nz r15,r16,r17
+ xor.pl r18,r19,r20
+ xor.p r21,r22,r23
+ xor.mi r24,r25,r26
+ xor.n r27,r28,r29
+ xor.cs r30,r31,r32
+ xor.c r33,r34,r35
+ xor.lo r36,r37,r38
+ xor.cc r39,r40,r41
+ xor.nc r42,r43,r44
+ xor.hs r45,r46,r47
+ xor.vs r48,r49,r50
+ xor.v r56,r52,r53
+ xor.vc r56,r55,r56
+ xor.nv r56,r58,r59
+ xor.gt r60,r60,r0
+ xor.ge r0,r0,0
+ xor.lt r1,1,r1
+ xor.hi r3,3,r3
+ xor.ls 4,4,r4
+ xor.pnz 5,r5,5
+
+ xor.f r0,r1,r2
+ xor.f r0,r1,1
+ xor.f r0,1,r2
+ xor.f 0,r1,r2
+ xor.f r0,r1,512
+ xor.f r0,512,r2
+
+ xor.eq.f r0,r1,r2
+ xor.ne.f r0,r1,0
+ xor.lt.f r0,0,r2
+ xor.gt.f 0,r1,r2
+ xor.le.f r0,r1,512
+ xor.ge.f r0,512,r2
diff --git a/gas/testsuite/gas/ieee-fp/x930509a.exp b/gas/testsuite/gas/ieee-fp/x930509a.exp
index 88a2e13..4218c87 100644
--- a/gas/testsuite/gas/ieee-fp/x930509a.exp
+++ b/gas/testsuite/gas/ieee-fp/x930509a.exp
@@ -23,6 +23,6 @@ proc dotest {} {
# float encoding is tested in c54x-specific tests.
# No floating point support in assembly code for CRIS.
if { ![istarget vax*-*-*] && ![istarget *c54x*-*-*]
- && ![istarget cris-*-*] } then {
+ && ![istarget cris-*-*] && ![istarget arc*-*-*] } then {
dotest
}
diff --git a/gas/testsuite/gas/vtable/vtable.exp b/gas/testsuite/gas/vtable/vtable.exp
index 80a533c..f2235de 100644
--- a/gas/testsuite/gas/vtable/vtable.exp
+++ b/gas/testsuite/gas/vtable/vtable.exp
@@ -29,6 +29,11 @@ if { ( [istarget "*-*-elf*"] || [istarget "*-*-linux*"])
return
}
+ # not yet supported by ARC
+ if {[istarget "arc*-*-*"]} {
+ return
+ }
+
run_dump_test "inherit0"
run_list_test "inherit1" "-al"