@c Copyright 2000, 2001 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.

@ifset GENERIC
@page
@node ARC-Dependent
@chapter ARC Dependent Features
@end ifset

@ifclear GENERIC
@node Machine Dependencies
@chapter ARC Dependent Features
@end ifclear

@set ARC_CORE_DEFAULT 6

@cindex ARC support
@menu
* ARC Options::              Options
* ARC Syntax::               Syntax
* ARC Floating Point::       Floating Point
* ARC Directives::           ARC Machine Directives
* ARC Opcodes::              Opcodes
@end menu


@node ARC Options
@section Options
@cindex ARC options (none)
@cindex options for ARC (none)

@table @code

@cindex @code{-marc[5|6|7|8]} command line option, ARC
@item -marc[5|6|7|8]
This option selects the core processor variant. Using
@code{-marc} is the same as @code{-marc@value{ARC_CORE_DEFAULT}}, which
is also the default.

@table @code

@cindex @code{arc5} arc5, ARC
@item arc5
Base instruction set.

@cindex @code{arc6} arc6, ARC
@item arc6
Jump-and-link (jl) instruction. No requirement of an instruction between
setting flags and conditional jump. For example:

@smallexample
  mov.f r0,r1
  beq   foo
@end smallexample

@cindex @code{arc7} arc7, ARC
@item arc7
Break (brk) and sleep (sleep) instructions.

@cindex @code{arc8} arc8, ARC
@item arc8
Software interrupt (swi) instruction.

@end table

Note: the @code{.option} directive can to be used to select a core
variant from within assembly code.

@cindex @code{-EB} command line option, ARC
@item -EB
This option specifies that the output generated by the assembler should
be marked as being encoded for a big-endian processor.

@cindex @code{-EL} command line option, ARC
@item -EL
This option specifies that the output generated by the assembler should
be marked as being encoded for a little-endian processor - this is the
default.

@end table


@node ARC Syntax
@section Syntax
@menu
* ARC-Chars::                Special Characters
* ARC-Regs::                 Register Names
@end menu

@node ARC-Chars
@subsection Special Characters

@cindex ARC special characters
@cindex special characters, ARC
*TODO*

@node ARC-Regs
@subsection Register Names

@cindex ARC register names
@cindex register names, ARC
*TODO*


@node ARC Floating Point
@section Floating Point

@cindex floating point, ARC (@sc{ieee})
@cindex ARC floating point (@sc{ieee})
The ARC core does not currently 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 machine directives, ARC
@cindex ARC machine directives
The ARC version of @code{@value{AS}} supports the following additional
machine directives:

@table @code

@cindex @code{2byte} directive, ARC
@item .2byte @var{expressions}
*TODO*

@cindex @code{3byte} directive, ARC
@item .3byte @var{expressions}
*TODO*

@cindex @code{4byte} directive, ARC
@item .4byte @var{expressions}
*TODO*

@cindex @code{extAuxRegister} directive, ARC
@item .extAuxRegister @var{name},@var{address},@var{mode}
*TODO*

@smallexample
  .extAuxRegister mulhi,0x12,w
@end smallexample

@cindex @code{extCondCode} directive, ARC
@item .extCondCode @var{suffix},@var{value}
*TODO*

@smallexample
  .extCondCode is_busy,0x14
@end smallexample

@cindex @code{extCoreRegister} directive, ARC
@item .extCoreRegister @var{name},@var{regnum},@var{mode},@var{shortcut}
*TODO*

@smallexample
  .extCoreRegister mlo,57,r,can_shortcut
@end smallexample

@cindex @code{extInstruction} directive, ARC
@item .extInstruction @var{name},@var{opcode},@var{subopcode},@var{suffixclass},@var{syntaxclass}
*TODO*

@smallexample
  .extInstruction mul64,0x14,0x0,SUFFIX_COND,SYNTAX_3OP|OP1_MUST_BE_IMM
@end smallexample

@cindex @code{half} directive, ARC
@item .half @var{expressions}
*TODO*

@cindex @code{long} directive, ARC
@item .long @var{expressions}
*TODO*

@cindex @code{option} directive, ARC
@item .option @var{arc|arc5|arc6|arc7|arc8}
The @code{.option} directive must be followed by the desired core
version. Again @code{arc} is an alias for
@code{arc@value{ARC_CORE_DEFAULT}}.

Note: the @code{.option} directive overrides the command line option
@code{-marc}; a warning is emitted when the version is not consistent
between the two - even for the implicit default core version
(arc@value{ARC_CORE_DEFAULT}).

@cindex @code{short} directive, ARC
@item .short @var{expressions}
*TODO*

@cindex @code{word} directive, ARC
@item .word @var{expressions}
*TODO*

@end table


@node ARC Opcodes
@section Opcodes

@cindex ARC opcodes
@cindex opcodes for ARC

For information on the ARC instruction set, see @cite{ARC Programmers
Reference Manual}, ARC Cores Ltd.