@c Copyright (C) 2023-2025 Free Software Foundation, Inc.
@c Contributed by Kalray SA.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@c man end

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

Labels followed by `::' are extern symbols.

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

@cindex KVX support
@menu
* KVX Options::         Options
* KVX Directives::      KVX Machine Directives
@end menu

@node KVX Options
@section Options
@cindex KVX Options
@cindex options for KVX

@c man begin OPTIONS
@table @gcctabopt

@cindex @samp{--dump-insn} option, KVX
@item --dump-insn
Dump the full list of instructions.

@cindex @samp{-march} option, KVX
@item -march=
The assembler supports the following architectures: kv3-1, kv3-2.

@cindex @samp{--check-resources} option, KVX
@item --check-resources
Check that each bundle does not use more resources than available.  This is the
default.

@cindex @samp{--no-check-resources} option, KVX
@item --no-check-resources
Do not check that each bundle does not use more resources than available.

@cindex @samp{--generate-illegal-code} option, KVX
@item --generate-illegal-code
For debugging purposes only.  In order to properly work, the bundle is sorted
with respect to the issues it uses.  If this option is turned on the assembler
will not sort the bundle instructions and illegal bundles might be formed unless
they were properly sorted by hand.

@cindex @samp{--dump-table} option, KVX
@item --dump-table
Dump the table of opcodes.

@cindex @samp{--mpic} option, KVX
@cindex @samp{--mPIC} option, KVX
@item --mpic | --mPIC
Generate position independent code.

@cindex @samp{--mnopic} option, KVX
@item --mnopic
Generate position dependent code.

@cindex @samp{-m32} option, KVX
@item -m32
Generate 32-bits code.

@cindex @samp{--all-sfr} option, KVX
@item --all-sfr
This switch enables the register class "system register".  This register
class is used when performing system validation and allows the full class of
system registers to be used even on instructions that are only valid with some
specific system registers.

@cindex @samp{--diagnostics} option, KVX
@item --diagnostics
Print multi-line errors.  This is the default.

@cindex @samp{--no-diagnostics} option, KVX
@item --no-diagnostics
Print succinct diagnostics on one line.

@end table
@c man end

@node KVX Directives
@section KVX Machine Directives

@cindex machine directives, AArch64
@cindex AArch64 machine directives
@table @code

@cindex @code{.align} directive, KVX
@item .align ALIGNMENT
Pad with NOPs until the next boundary with the required ALIGNMENT.

@cindex @code{.dword} directive, KVX
@item .dword
Declare a double-word-sized (8 bytes) constant.

@cindex @code{.endp} directive, KVX
@item .endp [PROC]
This directive marks the end of the procedure PROC.  The name of the procedure
is always ignored (it is only here as a visual indicator).

@smallexample
.proc NAME
...
.endp NAME
@end smallexample

is equivalent to the more traditional

@smallexample
.type NAME, @@function
...
.size NAME,.-NAME
@end smallexample

@cindex @code{.file} directive, KVX
@item .file
This directive is only supported when producing ELF files.
@pxref{File,,@code{.file}} for details.

@cindex @code{.loc} directive, KVX
@item .loc FILENO LINENO
This directive is only supported when producing ELF files.
@pxref{Line,,@code{.line}} for details.

@cindex @code{.proc} directive, KVX
@item .proc PROC
This directive marks the start of procedure, the name of the procedure PROC is
mandatory and all @code{.proc} directive should be matched by exactly one
@code{.endp} directive.

@cindex @code{.word} directive, KVX
@item .word
Declare a word-sized (4 bytes) constant.

@end table
