Add support for 64-bit ARM architecture: AArch64

This commit is contained in:
Nick Clifton 2012-08-13 14:52:54 +00:00
parent f47f77df4e
commit a06ea96464
307 changed files with 68333 additions and 39 deletions

View File

@ -1,3 +1,47 @@
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* Makefile.am: Add AArch64 files.
* Makefile.in: Regenerate.
* archures.c (bfd_aarch64_arch): New declaration.
(bfd_archures_list): Use bfd_archures_list.
* bfd-in.h (bfd_elf64_aarch64_init_maps): New declaration.
(bfd_aarch64_process_before_allocation): New declaration.
(bfd_elf64_aarch64_process_before_allocation): New declaration.
(bfd_elf64_aarch64_set_options): New declaration.
(bfd_elf64_aarch64_add_glue_sections_to_bfd): New declaration.
(BFD_AARCH64_SPECIAL_SYM_TYPE_MAP): New definition.
(BFD_AARCH64_SPECIAL_SYM_TYPE_TAG): New definition.
(BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER): New definition.
(BFD_AARCH64_SPECIAL_SYM_TYPE_ANY): New definition.
(bfd_is_aarch64_special_symbol_name): New declaration.
(bfd_aarch64_merge_machines): New declaration.
(bfd_aarch64_update_notes): New declaration.
(int bfd_aarch64_get_mach_from_notes): New declaration.
(elf64_aarch64_setup_section_lists): New declaration.
(elf64_aarch64_next_input_section): New declaration.
(elf64_aarch64_size_stubs): New declaration.
(elf64_aarch64_build_stubs): New declaration.
* config.bfd: Add AArch64.
* configure.in: Add AArch64.
* configure: Regenerate.
* cpu-aarch64.c: New file.
* elf-bfd.h: Add AArch64.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf64-aarch64.c: New file.
* reloc.c: Add AArch64 relocations.
* targets.c: Add AArch64.
* po/SRC-POTFILES.in: Regenerate.
2012-08-13 Maciej W. Rozycki <macro@codesourcery.com>
* elfxx-mips.c (mips_elf_calculate_relocation): Fix the handling

View File

@ -71,6 +71,7 @@ BFD64_LIBS_CFILES = archive64.c
# This list is alphabetized to make it easier to keep in sync
# with the decls and initializer in archures.c.
ALL_MACHINES = \
cpu-aarch64.lo \
cpu-alpha.lo \
cpu-arc.lo \
cpu-arm.lo \
@ -151,6 +152,7 @@ ALL_MACHINES = \
cpu-z8k.lo
ALL_MACHINES_CFILES = \
cpu-aarch64.c \
cpu-alpha.c \
cpu-arc.c \
cpu-arm.c \
@ -613,6 +615,7 @@ BFD32_BACKENDS_CFILES = \
# elf32-ia64.c requires a 64-bit bfd_vma, and hence can not be put in
# BFD32_BACKENDS.
BFD64_BACKENDS = \
elf64-aarch64.lo \
aix5ppc-core.lo \
aout64.lo \
coff-alpha.lo \
@ -651,6 +654,7 @@ BFD64_BACKENDS = \
vms-alpha.lo
BFD64_BACKENDS_CFILES = \
elf64-aarch64.c \
aix5ppc-core.c \
aout64.c \
coff-alpha.c \

View File

@ -370,6 +370,7 @@ BFD64_LIBS_CFILES = archive64.c
# This list is alphabetized to make it easier to keep in sync
# with the decls and initializer in archures.c.
ALL_MACHINES = \
cpu-aarch64.lo \
cpu-alpha.lo \
cpu-arc.lo \
cpu-arm.lo \
@ -450,6 +451,7 @@ ALL_MACHINES = \
cpu-z8k.lo
ALL_MACHINES_CFILES = \
cpu-aarch64.c \
cpu-alpha.c \
cpu-arc.c \
cpu-arm.c \
@ -914,6 +916,7 @@ BFD32_BACKENDS_CFILES = \
# elf32-ia64.c requires a 64-bit bfd_vma, and hence can not be put in
# BFD32_BACKENDS.
BFD64_BACKENDS = \
elf64-aarch64.lo \
aix5ppc-core.lo \
aout64.lo \
coff-alpha.lo \
@ -952,6 +955,7 @@ BFD64_BACKENDS = \
vms-alpha.lo
BFD64_BACKENDS_CFILES = \
elf64-aarch64.c \
aix5ppc-core.c \
aout64.c \
coff-alpha.c \
@ -1270,6 +1274,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cofflink.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compress.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/corefile.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-aarch64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-alpha.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arm.Plo@am__quote@
@ -1427,6 +1432,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xstormy16.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xtensa.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-aarch64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-alpha.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-gen.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-hppa.Plo@am__quote@

View File

@ -461,6 +461,8 @@ DESCRIPTION
.#define bfd_mach_tilepro 1
.#define bfd_mach_tilegx 1
.#define bfd_mach_tilegx32 2
. bfd_arch_aarch64, {* AArch64 *}
.#define bfd_mach_aarch64 0
. bfd_arch_last
. };
*/
@ -505,6 +507,7 @@ DESCRIPTION
.
*/
extern const bfd_arch_info_type bfd_aarch64_arch;
extern const bfd_arch_info_type bfd_alpha_arch;
extern const bfd_arch_info_type bfd_arc_arch;
extern const bfd_arch_info_type bfd_arm_arch;
@ -590,6 +593,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
#ifdef SELECT_ARCHITECTURES
SELECT_ARCHITECTURES,
#else
&bfd_aarch64_arch,
&bfd_alpha_arch,
&bfd_arc_arch,
&bfd_arm_arch,

View File

@ -928,6 +928,32 @@ extern unsigned int _bfd_elf_ppc_at_tls_transform
extern unsigned int _bfd_elf_ppc_at_tprel_transform
(unsigned int, unsigned int);
extern void bfd_elf64_aarch64_init_maps
(bfd *);
void bfd_elf64_aarch64_set_options
(bfd *, struct bfd_link_info *, int, int, int);
/* ELF AArch64 mapping symbol support. */
#define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP (1 << 0)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG (1 << 1)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER (1 << 2)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY (~0)
extern bfd_boolean bfd_is_aarch64_special_symbol_name
(const char * name, int type);
/* AArch64 stub generation support. Called from the linker. */
extern int elf64_aarch64_setup_section_lists
(bfd *, struct bfd_link_info *);
extern void elf64_aarch64_next_input_section
(struct bfd_link_info *, struct bfd_section *);
extern bfd_boolean elf64_aarch64_size_stubs
(bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
struct bfd_section * (*) (const char *, struct bfd_section *),
void (*) (void));
extern bfd_boolean elf64_aarch64_build_stubs
(struct bfd_link_info *);
/* TI COFF load page support. */
extern void bfd_ticoff_set_section_load_page
(struct bfd_section *, int);

View File

@ -935,6 +935,32 @@ extern unsigned int _bfd_elf_ppc_at_tls_transform
extern unsigned int _bfd_elf_ppc_at_tprel_transform
(unsigned int, unsigned int);
extern void bfd_elf64_aarch64_init_maps
(bfd *);
void bfd_elf64_aarch64_set_options
(bfd *, struct bfd_link_info *, int, int, int);
/* ELF AArch64 mapping symbol support. */
#define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP (1 << 0)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG (1 << 1)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER (1 << 2)
#define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY (~0)
extern bfd_boolean bfd_is_aarch64_special_symbol_name
(const char * name, int type);
/* AArch64 stub generation support. Called from the linker. */
extern int elf64_aarch64_setup_section_lists
(bfd *, struct bfd_link_info *);
extern void elf64_aarch64_next_input_section
(struct bfd_link_info *, struct bfd_section *);
extern bfd_boolean elf64_aarch64_size_stubs
(bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
struct bfd_section * (*) (const char *, struct bfd_section *),
void (*) (void));
extern bfd_boolean elf64_aarch64_build_stubs
(struct bfd_link_info *);
/* TI COFF load page support. */
extern void bfd_ticoff_set_section_load_page
(struct bfd_section *, int);
@ -2164,6 +2190,8 @@ enum bfd_architecture
#define bfd_mach_tilepro 1
#define bfd_mach_tilegx 1
#define bfd_mach_tilegx32 2
bfd_arch_aarch64, /* AArch64 */
#define bfd_mach_aarch64 0
bfd_arch_last
};
@ -5040,6 +5068,220 @@ value in a word. The relocation is relative offset from */
the dynamic object into the runtime process image. */
BFD_RELOC_MICROBLAZE_COPY,
/* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_ADD_LO12,
/* Get to the page base of the global offset table entry for a symbol as
part of an ADRP instruction using a 21 bit PC relative value.Used in
conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. */
BFD_RELOC_AARCH64_ADR_GOT_PAGE,
/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
offset, giving a 4KB aligned page base address. */
BFD_RELOC_AARCH64_ADR_HI21_PCREL,
/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
offset, giving a 4KB aligned page base address, but with no overflow
checking. */
BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
/* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. */
BFD_RELOC_AARCH64_ADR_LO21_PCREL,
/* AArch64 19 bit pc-relative conditional branch and compare & branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 21 bit signed byte offset. */
BFD_RELOC_AARCH64_BRANCH19,
/* AArch64 26 bit pc-relative unconditional branch and link.
The lowest two bits must be zero and are not stored in the instruction,
giving a 28 bit signed byte offset. */
BFD_RELOC_AARCH64_CALL26,
/* AArch64 pseudo relocation code to be used internally by the AArch64
assembler and not (currently) written to any object files. */
BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
/* AArch64 26 bit pc-relative unconditional branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 28 bit signed byte offset. */
BFD_RELOC_AARCH64_JUMP26,
/* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
offset. The lowest two bits must be zero and are not stored in the
instruction, giving a 21 bit signed byte offset. */
BFD_RELOC_AARCH64_LD_LO19_PCREL,
/* Unsigned 12 bit byte offset for 64 bit load/store from the page of
the GOT entry for this symbol. Used in conjunction with
BFD_RELOC_AARCH64_ADR_GOTPAGE. */
BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
/* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST_LO12,
/* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST8_LO12,
/* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST16_LO12,
/* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST32_LO12,
/* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST64_LO12,
/* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST128_LO12,
/* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
of an unsigned address/value. */
BFD_RELOC_AARCH64_MOVW_G0,
/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign. */
BFD_RELOC_AARCH64_MOVW_G0_S,
/* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
an address/value. No overflow checking. */
BFD_RELOC_AARCH64_MOVW_G0_NC,
/* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
of an unsigned address/value. */
BFD_RELOC_AARCH64_MOVW_G1,
/* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
of an address/value. No overflow checking. */
BFD_RELOC_AARCH64_MOVW_G1_NC,
/* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign. */
BFD_RELOC_AARCH64_MOVW_G1_S,
/* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
of an unsigned address/value. */
BFD_RELOC_AARCH64_MOVW_G2,
/* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
of an address/value. No overflow checking. */
BFD_RELOC_AARCH64_MOVW_G2_NC,
/* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign. */
BFD_RELOC_AARCH64_MOVW_G2_S,
/* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
of a signed or unsigned address/value. */
BFD_RELOC_AARCH64_MOVW_G3,
/* AArch64 TLS relocation. */
BFD_RELOC_AARCH64_TLSDESC,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_ADD,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_CALL,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_LDR,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
/* AArch64 TLS DESC relocation. */
BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
/* Unsigned 12 bit byte offset to global offset table entry for a symbols
tls_index structure. Used in conjunction with
BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. */
BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
/* Get to the page base of the global offset table entry for a symbols
tls_index structure as part of an adrp instruction using a 21 bit PC
relative value. Used in conjunction with
BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. */
BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
/* AArch64 TLS relocation. */
BFD_RELOC_AARCH64_TLS_DTPMOD64,
/* AArch64 TLS relocation. */
BFD_RELOC_AARCH64_TLS_DTPREL64,
/* AArch64 TLS relocation. */
BFD_RELOC_AARCH64_TLS_TPREL64,
/* AArch64 14 bit pc-relative test bit and branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 16 bit signed byte offset. */
BFD_RELOC_AARCH64_TSTBR14,
/* Tilera TILEPro Relocations. */
BFD_RELOC_TILEPRO_COPY,
BFD_RELOC_TILEPRO_GLOB_DAT,

View File

@ -69,6 +69,7 @@ esac
targ_cpu=`echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
case "${targ_cpu}" in
aarch64*) targ_archs="bfd_aarch64_arch bfd_arm_arch";;
alpha*) targ_archs=bfd_alpha_arch ;;
am34*|am33_2.0*) targ_archs=bfd_mn10300_arch ;;
arm*) targ_archs=bfd_arm_arch ;;
@ -143,6 +144,26 @@ case "${targ}" in
# START OF targmatch.h
#ifdef BFD64
aarch64-*-elf)
targ_defvec=bfd_elf64_littleaarch64_vec
targ_selvecs="bfd_elf64_bigaarch64_vec bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
want64=true
;;
aarch64_be-*-elf)
targ_defvec=bfd_elf64_bigaarch64_vec
targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
want64=true
;;
aarch64-*-linux*)
targ_defvec=bfd_elf64_littleaarch64_vec
targ_selvecs="bfd_elf64_bigaarch64_vec bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
want64=true
;;
aarch64_be-*-linux*)
targ_defvec=bfd_elf64_bigaarch64_vec
targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
want64=true
;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
targ_defvec=bfd_elf64_alpha_freebsd_vec
targ_selvecs="bfd_elf64_alpha_vec ecoffalpha_little_vec"

2
bfd/configure vendored
View File

@ -15342,6 +15342,7 @@ do
bfd_elf32_xtensa_be_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
@ -15350,6 +15351,7 @@ do
bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;;
bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;

View File

@ -832,6 +832,7 @@ do
bfd_elf32_xtensa_be_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
@ -840,6 +841,7 @@ do
bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;;
bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;

121
bfd/cpu-aarch64.c Normal file
View File

@ -0,0 +1,121 @@
/* BFD support for AArch64.
Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
#include "sysdep.h"
#include "bfd.h"
#include "libbfd.h"
#include "libiberty.h"
/* This routine is provided two arch_infos and works out which Aarch64
machine which would be compatible with both and returns a pointer
to its info structure. */
static const bfd_arch_info_type *
compatible (const bfd_arch_info_type * a, const bfd_arch_info_type * b)
{
/* If a & b are for different architecture we can do nothing. */
if (a->arch != b->arch)
return NULL;
/* If a & b are for the same machine then all is well. */
if (a->mach == b->mach)
return a;
/* Otherwise if either a or b is the 'default' machine
then it can be polymorphed into the other. */
if (a->the_default)
return b;
if (b->the_default)
return a;
/* So far all newer cores are
supersets of previous cores. */
if (a->mach < b->mach)
return b;
else if (a->mach > b->mach)
return a;
/* Never reached! */
return NULL;
}
static struct
{
unsigned int mach;
char *name;
}
processors[] =
{
/* These two are example CPUs supported in GCC, once we have real
CPUs they will be removed. */
{ bfd_mach_aarch64, "example-1" },
{ bfd_mach_aarch64, "example-2" }
};
static bfd_boolean
scan (const struct bfd_arch_info *info, const char *string)
{
int i;
/* First test for an exact match. */
if (strcasecmp (string, info->printable_name) == 0)
return TRUE;
/* Next check for a processor name instead of an Architecture name. */
for (i = sizeof (processors) / sizeof (processors[0]); i--;)
{
if (strcasecmp (string, processors[i].name) == 0)
break;
}
if (i != -1 && info->mach == processors[i].mach)
return TRUE;
/* Finally check for the default architecture. */
if (strcasecmp (string, "aarch64") == 0)
return info->the_default;
return FALSE;
}
#define N(NUMBER, PRINT, DEFAULT, NEXT) \
{ 64, 64, 8, bfd_arch_aarch64, NUMBER, \
"aarch64", PRINT, 4, DEFAULT, compatible, scan, \
bfd_arch_default_fill, NEXT }
const bfd_arch_info_type bfd_aarch64_arch =
N (0, "aarch64", TRUE, NULL);
bfd_boolean
bfd_is_aarch64_special_symbol_name (const char *name, int type)
{
if (!name || name[0] != '$')
return FALSE;
if (name[1] == 'x' || name[1] == 'd')
type &= BFD_AARCH64_SPECIAL_SYM_TYPE_MAP;
else if (name[1] == 'm' || name[1] == 'f' || name[1] == 'p')
type &= BFD_AARCH64_SPECIAL_SYM_TYPE_TAG;
else
return FALSE;
return (type != 0 && (name[2] == 0 || name[2] == '.'));
}

View File

@ -43,7 +43,8 @@ subdir = doc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(bfd_TEXINFOS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
am__aclocal_m4_deps = $(top_srcdir)/../bfd/bfd.m4 \
$(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/../config/gettext-sister.m4 \
$(top_srcdir)/../config/largefile.m4 \
@ -56,7 +57,6 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/stdint.m4 $(top_srcdir)/../libtool.m4 \
$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
$(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \

View File

@ -402,7 +402,8 @@ struct eh_frame_hdr_info
one line. */
enum elf_target_id
{
ALPHA_ELF_DATA = 1,
AARCH64_ELF_DATA = 1,
ALPHA_ELF_DATA,
ARM_ELF_DATA,
AVR_ELF_DATA,
BFIN_ELF_DATA,

7016
bfd/elf64-aarch64.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2420,6 +2420,63 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_MICROBLAZE_64_GOTOFF",
"BFD_RELOC_MICROBLAZE_32_GOTOFF",
"BFD_RELOC_MICROBLAZE_COPY",
"BFD_RELOC_AARCH64_ADD_LO12",
"BFD_RELOC_AARCH64_ADR_GOT_PAGE",
"BFD_RELOC_AARCH64_ADR_HI21_PCREL",
"BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL",
"BFD_RELOC_AARCH64_ADR_LO21_PCREL",
"BFD_RELOC_AARCH64_BRANCH19",
"BFD_RELOC_AARCH64_CALL26",
"BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP",
"BFD_RELOC_AARCH64_JUMP26",
"BFD_RELOC_AARCH64_LD_LO19_PCREL",
"BFD_RELOC_AARCH64_LD64_GOT_LO12_NC",
"BFD_RELOC_AARCH64_LDST_LO12",
"BFD_RELOC_AARCH64_LDST8_LO12",
"BFD_RELOC_AARCH64_LDST16_LO12",
"BFD_RELOC_AARCH64_LDST32_LO12",
"BFD_RELOC_AARCH64_LDST64_LO12",
"BFD_RELOC_AARCH64_LDST128_LO12",
"BFD_RELOC_AARCH64_MOVW_G0",
"BFD_RELOC_AARCH64_MOVW_G0_S",
"BFD_RELOC_AARCH64_MOVW_G0_NC",
"BFD_RELOC_AARCH64_MOVW_G1",
"BFD_RELOC_AARCH64_MOVW_G1_NC",
"BFD_RELOC_AARCH64_MOVW_G1_S",
"BFD_RELOC_AARCH64_MOVW_G2",
"BFD_RELOC_AARCH64_MOVW_G2_NC",
"BFD_RELOC_AARCH64_MOVW_G2_S",
"BFD_RELOC_AARCH64_MOVW_G3",
"BFD_RELOC_AARCH64_TLSDESC",
"BFD_RELOC_AARCH64_TLSDESC_ADD",
"BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC",
"BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE",
"BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21",
"BFD_RELOC_AARCH64_TLSDESC_CALL",
"BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC",
"BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19",
"BFD_RELOC_AARCH64_TLSDESC_LDR",
"BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC",
"BFD_RELOC_AARCH64_TLSDESC_OFF_G1",
"BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC",
"BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21",
"BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21",
"BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19",
"BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC",
"BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC",
"BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1",
"BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12",
"BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12",
"BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC",
"BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0",
"BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC",
"BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1",
"BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC",
"BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2",
"BFD_RELOC_AARCH64_TLS_DTPMOD64",
"BFD_RELOC_AARCH64_TLS_DTPREL64",
"BFD_RELOC_AARCH64_TLS_TPREL64",
"BFD_RELOC_AARCH64_TSTBR14",
"BFD_RELOC_TILEPRO_COPY",
"BFD_RELOC_TILEPRO_GLOB_DAT",
"BFD_RELOC_TILEPRO_JMP_SLOT",

View File

@ -5883,6 +5883,278 @@ ENUMDOC
This is used to tell the dynamic linker to copy the value out of
the dynamic object into the runtime process image.
ENUM
BFD_RELOC_AARCH64_ADD_LO12
ENUMDOC
AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_ADR_GOT_PAGE
ENUMDOC
Get to the page base of the global offset table entry for a symbol as
part of an ADRP instruction using a 21 bit PC relative value.Used in
conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
ENUM
BFD_RELOC_AARCH64_ADR_HI21_PCREL
ENUMDOC
AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
offset, giving a 4KB aligned page base address.
ENUM
BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
ENUMDOC
AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
offset, giving a 4KB aligned page base address, but with no overflow
checking.
ENUM
BFD_RELOC_AARCH64_ADR_LO21_PCREL
ENUMDOC
AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
ENUM
BFD_RELOC_AARCH64_BRANCH19
ENUMDOC
AArch64 19 bit pc-relative conditional branch and compare & branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 21 bit signed byte offset.
ENUM
BFD_RELOC_AARCH64_CALL26
ENUMDOC
AArch64 26 bit pc-relative unconditional branch and link.
The lowest two bits must be zero and are not stored in the instruction,
giving a 28 bit signed byte offset.
ENUM
BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
ENUMDOC
AArch64 pseudo relocation code to be used internally by the AArch64
assembler and not (currently) written to any object files.
ENUM
BFD_RELOC_AARCH64_JUMP26
ENUMDOC
AArch64 26 bit pc-relative unconditional branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 28 bit signed byte offset.
ENUM
BFD_RELOC_AARCH64_LD_LO19_PCREL
ENUMDOC
AArch64 Load Literal instruction, holding a 19 bit pc-relative word
offset. The lowest two bits must be zero and are not stored in the
instruction, giving a 21 bit signed byte offset.
ENUM
BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
ENUMDOC
Unsigned 12 bit byte offset for 64 bit load/store from the page of
the GOT entry for this symbol. Used in conjunction with
BFD_RELOC_AARCH64_ADR_GOTPAGE.
ENUM
BFD_RELOC_AARCH64_LDST_LO12
ENUMDOC
AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_LDST8_LO12
ENUMDOC
AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_LDST16_LO12
ENUMDOC
AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_LDST32_LO12
ENUMDOC
AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_LDST64_LO12
ENUMDOC
AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_LDST128_LO12
ENUMDOC
AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
ENUM
BFD_RELOC_AARCH64_MOVW_G0
ENUMDOC
AArch64 MOV[NZK] instruction with most significant bits 0 to 15
of an unsigned address/value.
ENUM
BFD_RELOC_AARCH64_MOVW_G0_S
ENUMDOC
AArch64 MOV[NZ] instruction with most significant bits 0 to 15
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign.
ENUM
BFD_RELOC_AARCH64_MOVW_G0_NC
ENUMDOC
AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
an address/value. No overflow checking.
ENUM
BFD_RELOC_AARCH64_MOVW_G1
ENUMDOC
AArch64 MOV[NZK] instruction with most significant bits 16 to 31
of an unsigned address/value.
ENUM
BFD_RELOC_AARCH64_MOVW_G1_NC
ENUMDOC
AArch64 MOV[NZK] instruction with less significant bits 16 to 31
of an address/value. No overflow checking.
ENUM
BFD_RELOC_AARCH64_MOVW_G1_S
ENUMDOC
AArch64 MOV[NZ] instruction with most significant bits 16 to 31
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign.
ENUM
BFD_RELOC_AARCH64_MOVW_G2
ENUMDOC
AArch64 MOV[NZK] instruction with most significant bits 32 to 47
of an unsigned address/value.
ENUM
BFD_RELOC_AARCH64_MOVW_G2_NC
ENUMDOC
AArch64 MOV[NZK] instruction with less significant bits 32 to 47
of an address/value. No overflow checking.
ENUM
BFD_RELOC_AARCH64_MOVW_G2_S
ENUMDOC
AArch64 MOV[NZ] instruction with most significant bits 32 to 47
of a signed value. Changes instruction to MOVZ or MOVN depending on the
value's sign.
ENUM
BFD_RELOC_AARCH64_MOVW_G3
ENUMDOC
AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
of a signed or unsigned address/value.
ENUM
BFD_RELOC_AARCH64_TLSDESC
ENUMDOC
AArch64 TLS relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_ADD
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_CALL
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_LDR
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSDESC_OFF_G1
ENUMDOC
AArch64 TLS DESC relocation.
ENUM
BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
ENUMDOC
Unsigned 12 bit byte offset to global offset table entry for a symbols
tls_index structure. Used in conjunction with
BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
ENUM
BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
ENUMDOC
Get to the page base of the global offset table entry for a symbols
tls_index structure as part of an adrp instruction using a 21 bit PC
relative value. Used in conjunction with
BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
ENUM
BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
ENUMDOC
AArch64 TLS INITIAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
ENUMDOC
AArch64 TLS INITIAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
ENUMDOC
AArch64 TLS INITIAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
ENUMDOC
AArch64 TLS INITIAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
ENUMDOC
AArch64 TLS INITIAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
ENUMDOC
AArch64 TLS LOCAL EXEC relocation.
ENUM
BFD_RELOC_AARCH64_TLS_DTPMOD64
ENUMDOC
AArch64 TLS relocation.
ENUM
BFD_RELOC_AARCH64_TLS_DTPREL64
ENUMDOC
AArch64 TLS relocation.
ENUM
BFD_RELOC_AARCH64_TLS_TPREL64
ENUMDOC
AArch64 TLS relocation.
ENUM
BFD_RELOC_AARCH64_TSTBR14
ENUMDOC
AArch64 14 bit pc-relative test bit and branch.
The lowest two bits must be zero and are not stored in the instruction,
giving a 16 bit signed byte offset.
ENUM
BFD_RELOC_TILEPRO_COPY
ENUMX
@ -6043,7 +6315,6 @@ ENUMX
BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
ENUMDOC
Tilera TILEPro Relocations.
ENUM
BFD_RELOC_TILEGX_HW0
ENUMX
@ -6236,7 +6507,6 @@ ENUMX
BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
ENUMDOC
Tilera TILE-Gx Relocations.
ENUM
BFD_RELOC_EPIPHANY_SIMM8
ENUMDOC

View File

@ -730,6 +730,7 @@ extern const bfd_target bfd_elf64_alpha_freebsd_vec;
extern const bfd_target bfd_elf64_alpha_vec;
extern const bfd_target bfd_elf64_big_generic_vec;
extern const bfd_target bfd_elf64_bigmips_vec;
extern const bfd_target bfd_elf64_bigaarch64_vec;
extern const bfd_target bfd_elf64_hppa_linux_vec;
extern const bfd_target bfd_elf64_hppa_vec;
extern const bfd_target bfd_elf64_ia64_big_vec;
@ -738,6 +739,7 @@ extern const bfd_target bfd_elf64_ia64_little_vec;
extern const bfd_target bfd_elf64_ia64_vms_vec;
extern const bfd_target bfd_elf64_little_generic_vec;
extern const bfd_target bfd_elf64_littlemips_vec;
extern const bfd_target bfd_elf64_littleaarch64_vec;
extern const bfd_target bfd_elf64_mmix_vec;
extern const bfd_target bfd_elf64_powerpc_vec;
extern const bfd_target bfd_elf64_powerpcle_vec;
@ -1105,6 +1107,7 @@ static const bfd_target * const _bfd_target_vector[] =
&bfd_elf64_alpha_vec,
&bfd_elf64_big_generic_vec,
&bfd_elf64_bigmips_vec,
&bfd_elf64_bigaarch64_vec,
&bfd_elf64_hppa_linux_vec,
&bfd_elf64_hppa_vec,
&bfd_elf64_ia64_big_vec,
@ -1113,6 +1116,7 @@ static const bfd_target * const _bfd_target_vector[] =
&bfd_elf64_ia64_vms_vec,
&bfd_elf64_little_generic_vec,
&bfd_elf64_littlemips_vec,
&bfd_elf64_littleaarch64_vec,
&bfd_elf64_mmix_vec,
&bfd_elf64_powerpc_vec,
&bfd_elf64_powerpcle_vec,

View File

@ -1,3 +1,26 @@
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* readelf.c (guess_is_rela): Handle EM_AARCH64.
(get_machine_name): Likewise.
(get_aarch64_segment_type): New function.
(get_segment_type): Handle EM_AARCH64 by calling the new function.
(get_aarch64_section_type_name): New function.
(get_section_type_name): Handle EM_AARCH64 by calling the new function.
(is_32bit_abs_reloc): Handle EM_AARCH64.
(is_32bit_pcrel_reloc): Likewise.
(is_64bit_abs_reloc): Likewise.
(is_64bit_pcrel_reloc): Likewise.
(is_none_reloc): Likewise.
2012-08-09 Nick Clifton <nickc@redhat.com>
* po/vi.po: Updated Vietnamese translation.

View File

@ -57,6 +57,7 @@ maintainer. The first maintainer is free to devolve that
responsibility among the other maintainers.
ALPHA Richard Henderson <rth@redhat.com>
AARCH64 Richard Earnshaw <rearnsha@arm.com>
ARM Nick Clifton <nickc@redhat.com>
ARM Richard Earnshaw <rearnsha@arm.com>
ARM Paul Brook <paul@codesourcery.com>

View File

@ -39,7 +39,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
$(top_srcdir)/../config/zlib.m4 \
$(top_srcdir)/../bfd/warning.m4 \
$(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/../config/gettext-sister.m4 \
$(top_srcdir)/../config/iconv.m4 \

View File

@ -91,6 +91,7 @@
#define RELOC_MACROS_GEN_FUNC
#include "elf/aarch64.h"
#include "elf/alpha.h"
#include "elf/arc.h"
#include "elf/arm.h"
@ -551,6 +552,7 @@ guess_is_rela (unsigned int e_machine)
/* Targets that use RELA relocations. */
case EM_68K:
case EM_860:
case EM_AARCH64:
case EM_ADAPTEVA_EPIPHANY:
case EM_ALPHA:
case EM_ALTERA_NIOS2:
@ -983,6 +985,10 @@ dump_relocations (FILE * file,
rtype = NULL;
break;
case EM_AARCH64:
rtype = elf_aarch64_reloc_type (type);
break;
case EM_M32R:
case EM_CYGNUS_M32R:
rtype = elf_m32r_reloc_type (type);
@ -1830,6 +1836,7 @@ get_machine_name (unsigned e_machine)
switch (e_machine)
{
case EM_NONE: return _("None");
case EM_AARCH64: return "AArch64";
case EM_M32: return "WE32100";
case EM_SPARC: return "Sparc";
case EM_SPU: return "SPU";
@ -2694,6 +2701,20 @@ get_osabi_name (unsigned int osabi)
}
}
static const char *
get_aarch64_segment_type (unsigned long type)
{
switch (type)
{
case PT_AARCH64_ARCHEXT:
return "AARCH64_ARCHEXT";
default:
break;
}
return NULL;
}
static const char *
get_arm_segment_type (unsigned long type)
{
@ -2816,6 +2837,9 @@ get_segment_type (unsigned long p_type)
switch (elf_header.e_machine)
{
case EM_AARCH64:
result = get_aarch64_segment_type (p_type);
break;
case EM_ARM:
result = get_arm_segment_type (p_type);
break;
@ -2976,6 +3000,19 @@ get_x86_64_section_type_name (unsigned int sh_type)
return NULL;
}
static const char *
get_aarch64_section_type_name (unsigned int sh_type)
{
switch (sh_type)
{
case SHT_AARCH64_ATTRIBUTES:
return "AARCH64_ATTRIBUTES";
default:
break;
}
return NULL;
}
static const char *
get_arm_section_type_name (unsigned int sh_type)
{
@ -3075,6 +3112,9 @@ get_section_type_name (unsigned int sh_type)
case EM_K1OM:
result = get_x86_64_section_type_name (sh_type);
break;
case EM_AARCH64:
result = get_aarch64_section_type_name (sh_type);
break;
case EM_ARM:
result = get_arm_section_type_name (sh_type);
break;
@ -9770,6 +9810,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
return reloc_type == 1; /* R_860_32. */
case EM_960:
return reloc_type == 2; /* R_960_32. */
case EM_AARCH64:
return reloc_type == 258; /* R_AARCH64_ABS32 */
case EM_ALPHA:
return reloc_type == 1; /* R_ALPHA_REFLONG. */
case EM_ARC:
@ -9924,6 +9966,8 @@ is_32bit_pcrel_reloc (unsigned int reloc_type)
return reloc_type == 2; /* R_386_PC32. */
case EM_68K:
return reloc_type == 4; /* R_68K_PC32. */
case EM_AARCH64:
return reloc_type == 261; /* R_AARCH64_PREL32 */
case EM_ADAPTEVA_EPIPHANY:
return reloc_type == 6;
case EM_ALPHA:
@ -9978,6 +10022,8 @@ is_64bit_abs_reloc (unsigned int reloc_type)
{
switch (elf_header.e_machine)
{
case EM_AARCH64:
return reloc_type == 257; /* R_AARCH64_ABS64. */
case EM_ALPHA:
return reloc_type == 2; /* R_ALPHA_REFQUAD. */
case EM_IA_64:
@ -10014,6 +10060,8 @@ is_64bit_pcrel_reloc (unsigned int reloc_type)
{
switch (elf_header.e_machine)
{
case EM_AARCH64:
return reloc_type == 260; /* R_AARCH64_PREL64. */
case EM_ALPHA:
return reloc_type == 11; /* R_ALPHA_SREL64. */
case EM_IA_64:
@ -10143,6 +10191,8 @@ is_none_reloc (unsigned int reloc_type)
case EM_XC16X:
case EM_C166: /* R_XC16X_NONE. */
return reloc_type == 0;
case EM_AARCH64:
return reloc_type == 0 || reloc_type == 256;
case EM_XTENSA_OLD:
case EM_XTENSA:
return (reloc_type == 0 /* R_XTENSA_NONE. */

View File

@ -1,3 +1,16 @@
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* objdump.exp: Add AArch64.
2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14420

View File

@ -36,7 +36,7 @@ send_user "Version [binutil_version $OBJDUMP]"
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -i"]
set cpus_expected [list]
lappend cpus_expected alpha arc arm cris
lappend cpus_expected aarch64 alpha arc arm cris
lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022
lappend cpus_expected m16c m32c m32r m68hc11 m68hc12 m68k m88k MCore MicroBlaze
lappend cpus_expected mips mn10200 mn10300 ms1 msp ns32k pj powerpc pyramid

View File

@ -1,3 +1,27 @@
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* Makefile.am: Add AArch64.
* Makefile.in: Regenerate.
* config/tc-aarch64.c: New file.
* config/tc-aarch64.h: New file.
* configure.tgt: Add AArch64.
* doc/Makefile.am: Add AArch64.
* doc/Makefile.in: Regenerate.
* doc/all.texi: Add AArch64.
* doc/as.texinfo: Add AArch64.
* doc/c-aarch64.texi: New file.
* po/POTFILES.in: Regenerate.
* NEWS: Mention the new support.
2012-08-13 Maciej W. Rozycki <macro@codesourcery.com>
* config/tc-mips.c (NO_ISA_COP, COP_INSN): Remove macros.

View File

@ -107,6 +107,7 @@ HFILES = \
# CPU files in config.
TARGET_CPU_CFILES = \
config/tc-aarch64.c \
config/tc-alpha.c \
config/tc-arc.c \
config/tc-arm.c \
@ -176,6 +177,7 @@ TARGET_CPU_CFILES = \
config/xtensa-relax.c
TARGET_CPU_HFILES = \
config/tc-aarch64.h \
config/tc-alpha.h \
config/tc-arc.h \
config/tc-arm.h \

View File

@ -375,6 +375,7 @@ HFILES = \
# CPU files in config.
TARGET_CPU_CFILES = \
config/tc-aarch64.c \
config/tc-alpha.c \
config/tc-arc.c \
config/tc-arm.c \
@ -444,6 +445,7 @@ TARGET_CPU_CFILES = \
config/xtensa-relax.c
TARGET_CPU_HFILES = \
config/tc-aarch64.h \
config/tc-alpha.h \
config/tc-arc.h \
config/tc-arm.h \
@ -793,6 +795,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stabs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subsegs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbols.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-aarch64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-alpha.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-arc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-arm.Po@am__quote@
@ -884,6 +887,20 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
tc-aarch64.o: config/tc-aarch64.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-aarch64.o -MD -MP -MF $(DEPDIR)/tc-aarch64.Tpo -c -o tc-aarch64.o `test -f 'config/tc-aarch64.c' || echo '$(srcdir)/'`config/tc-aarch64.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-aarch64.Tpo $(DEPDIR)/tc-aarch64.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-aarch64.c' object='tc-aarch64.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-aarch64.o `test -f 'config/tc-aarch64.c' || echo '$(srcdir)/'`config/tc-aarch64.c
tc-aarch64.obj: config/tc-aarch64.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-aarch64.obj -MD -MP -MF $(DEPDIR)/tc-aarch64.Tpo -c -o tc-aarch64.obj `if test -f 'config/tc-aarch64.c'; then $(CYGPATH_W) 'config/tc-aarch64.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-aarch64.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-aarch64.Tpo $(DEPDIR)/tc-aarch64.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-aarch64.c' object='tc-aarch64.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-aarch64.obj `if test -f 'config/tc-aarch64.c'; then $(CYGPATH_W) 'config/tc-aarch64.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-aarch64.c'; fi`
tc-alpha.o: config/tc-alpha.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-alpha.o -MD -MP -MF $(DEPDIR)/tc-alpha.Tpo -c -o tc-alpha.o `test -f 'config/tc-alpha.c' || echo '$(srcdir)/'`config/tc-alpha.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-alpha.Tpo $(DEPDIR)/tc-alpha.Po

View File

@ -1,5 +1,7 @@
-*- text -*-
* Add support for the 64-bit ARM architecture: AArch64.
Changes in 2.23:
* Add support for S12X processor.

7349
gas/config/tc-aarch64.c Normal file

File diff suppressed because it is too large Load Diff

231
gas/config/tc-aarch64.h Normal file
View File

@ -0,0 +1,231 @@
/* tc-aarch64.h -- Header file for tc-aarch64.c.
Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
#ifndef TC_AARCH64
#define TC_AARCH64 1
#include "opcode/aarch64.h"
#ifndef TARGET_BYTES_BIG_ENDIAN
#define TARGET_BYTES_BIG_ENDIAN 0
#endif
#define WORKING_DOT_WORD
#define TARGET_ARCH bfd_arch_aarch64
#define DIFF_EXPR_OK
/* Permit // comments. */
#define DOUBLESLASH_LINE_COMMENTS
#ifdef LITTLE_ENDIAN
#undef LITTLE_ENDIAN
#endif
#ifdef BIG_ENDIAN
#undef BIG_ENDIAN
#endif
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN 4321
#define SWAP_32(n) \
((((n) & 0xff) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) \
| (((n) >> 24) & 0xff))
struct fix;
struct aarch64_fix
{
struct aarch64_inst *inst;
enum aarch64_opnd opnd;
};
#if defined OBJ_ELF
# define AARCH64_BI_ENDIAN
# define TARGET_FORMAT elf64_aarch64_target_format ()
#endif
#define TC_FORCE_RELOCATION(FIX) aarch64_force_relocation (FIX)
/* Currently there is no machine specific frags generated. */
#define md_convert_frag(b,s,f) as_fatal ("aarch64 convert_frag called\n")
#define md_cleanup() aarch64_cleanup ()
#define md_start_line_hook() aarch64_start_line_hook ()
#define tc_frob_label(S) aarch64_frob_label (S)
/* We also need to mark assembler created symbols: */
#define tc_frob_fake_label(S) aarch64_frob_label (S)
#define TC_FIX_TYPE struct aarch64_fix
#define TC_INIT_FIX_DATA(FIX) { (FIX)->tc_fix_data.inst = NULL; \
(FIX)->tc_fix_data.opnd = AARCH64_OPND_NIL; }
#define TC_SYMFIELD_TYPE unsigned int
#define AARCH64_GET_FLAG(s) (*symbol_get_tc (s))
void aarch64_copy_symbol_attributes (symbolS *, symbolS *);
#ifndef TC_COPY_SYMBOL_ATTRIBUTES
#define TC_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \
(aarch64_copy_symbol_attributes (DEST, SRC))
#endif
#define TC_START_LABEL(C,S,STR) ((C) == ':' \
|| ((C) == '/' && aarch64_data_in_code ()))
#define tc_canonicalize_symbol_name(str) aarch64_canonicalize_symbol_name (str);
#define obj_adjust_symtab() aarch64_adjust_symtab ()
#define LISTING_HEADER "AARCH64 GAS "
#define LOCAL_LABEL(name) (name[0] == '.' && name[1] == 'L')
#define LOCAL_LABELS_FB 1
/* This expression evaluates to true if the relocation is for a local
object for which we still want to do the relocation at runtime.
False if we are willing to perform this relocation while building
the .o file. GOTOFF does not need to be checked here because it is
not pcrel. I am not sure if some of the others are ever used with
pcrel, but it is easier to be safe than sorry. */
#define TC_FORCE_RELOCATION_LOCAL(FIX) \
(!(FIX)->fx_pcrel \
|| (FIX)->fx_r_type == BFD_RELOC_64 \
|| (FIX)->fx_r_type == BFD_RELOC_32 \
|| TC_FORCE_RELOCATION (FIX))
#define TC_CONS_FIX_NEW cons_fix_new_aarch64
/* Max code alignment is 32 bytes */
#define MAX_MEM_FOR_RS_ALIGN_CODE 31
/* For frags in code sections we need to record whether they contain
code or data. */
struct aarch64_frag_type
{
int recorded;
#ifdef OBJ_ELF
/* If there is a mapping symbol at offset 0 in this frag,
it will be saved in FIRST_MAP. If there are any mapping
symbols in this frag, the last one will be saved in
LAST_MAP. */
symbolS *first_map, *last_map;
#endif
};
#define TC_FRAG_TYPE struct aarch64_frag_type
/* NOTE: max_chars is a local variable from frag_var / frag_variant. */
#define TC_FRAG_INIT(fragp) aarch64_init_frag (fragp, max_chars)
#define HANDLE_ALIGN(fragp) aarch64_handle_align (fragp)
#define md_do_align(N, FILL, LEN, MAX, LABEL) \
if (FILL == NULL && (N) != 0 && ! need_pass_2 && subseg_text_p (now_seg)) \
{ \
aarch64_frag_align_code (N, MAX); \
goto LABEL; \
}
#define DWARF2_LINE_MIN_INSN_LENGTH 2
/* The lr register is r30. */
#define DWARF2_DEFAULT_RETURN_COLUMN 30
/* Registers are generally saved at negative offsets to the CFA. */
#define DWARF2_CIE_DATA_ALIGNMENT (-4)
#ifdef OBJ_ELF
# define obj_frob_symbol(sym, punt) aarch64elf_frob_symbol ((sym), & (punt))
# define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
# define TC_SEGMENT_INFO_TYPE struct aarch64_segment_info_type
/* This is not really an alignment operation, but it's something we
need to do at the same time: whenever we are figuring out the
alignment for data, we should check whether a $d symbol is
necessary. */
# define md_cons_align(nbytes) mapping_state (MAP_DATA)
enum mstate
{
MAP_UNDEFINED = 0, /* Must be zero, for seginfo in new sections. */
MAP_DATA,
MAP_INSN,
};
void mapping_state (enum mstate);
struct aarch64_segment_info_type
{
enum mstate mapstate;
unsigned int marked_pr_dependency;
};
/* We want .cfi_* pseudo-ops for generating unwind info. */
#define TARGET_USE_CFIPOP 1
/* CFI hooks. */
#define tc_regname_to_dw2regnum tc_aarch64_regname_to_dw2regnum
#define tc_cfi_frame_initial_instructions tc_aarch64_frame_initial_instructions
#else /* Not OBJ_ELF. */
#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
#endif
#if defined OBJ_ELF || defined OBJ_COFF
# define EXTERN_FORCE_RELOC 1
# define tc_fix_adjustable(FIX) 1
/* Values passed to md_apply_fix don't include the symbol value. */
# define MD_APPLY_SYM_VALUE(FIX) 0
#endif
#define MD_PCREL_FROM_SECTION(F,S) md_pcrel_from_section(F,S)
extern long md_pcrel_from_section (struct fix *, segT);
extern void aarch64_frag_align_code (int, int);
extern const char * elf64_aarch64_target_format (void);
extern int aarch64_force_relocation (struct fix *);
extern void aarch64_cleanup (void);
extern void aarch64_start_line_hook (void);
extern void aarch64_frob_label (symbolS *);
extern int aarch64_data_in_code (void);
extern char * aarch64_canonicalize_symbol_name (char *);
extern void aarch64_adjust_symtab (void);
extern void aarch64elf_frob_symbol (symbolS *, int *);
extern void cons_fix_new_aarch64 (fragS *, int, int, expressionS *);
extern void aarch64_init_frag (struct frag *, int);
extern void aarch64_handle_align (struct frag *);
extern int tc_aarch64_regname_to_dw2regnum (char *regname);
extern void tc_aarch64_frame_initial_instructions (void);
#ifdef TE_PE
#define O_secrel O_md1
#define TC_DWARF2_EMIT_OFFSET tc_pe_dwarf2_emit_offset
void tc_pe_dwarf2_emit_offset (symbolS *, unsigned int);
#endif /* TE_PE */
#endif /* TC_AARCH64 */

View File

@ -29,6 +29,8 @@ eval `echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
# endian and arch.
# Note: This table is alpha-sorted, please try to keep it that way.
case ${cpu} in
aarch64) cpu_type=aarch64 endian=little ;;
aarch64_be) cpu_type=aarch64 endian=big ;;
alpha*) cpu_type=alpha ;;
am33_2.0) cpu_type=mn10300 endian=little ;;
arm*be|arm*b) cpu_type=arm endian=big ;;
@ -96,6 +98,9 @@ esac
generic_target=${cpu_type}-$vendor-$os
# Note: This table is alpha-sorted, please try to keep it that way.
case ${generic_target} in
aarch64*-*-elf) fmt=elf;;
aarch64*-*-linux*) fmt=elf em=linux ;;
alpha-*-*vms*) fmt=evax ;;
alpha-*-osf*) fmt=ecoff ;;
alpha-*-linuxecoff*) fmt=ecoff ;;
@ -446,7 +451,7 @@ case ${generic_target} in
esac
case ${cpu_type} in
alpha | arm | i386 | ia64 | microblaze | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
aarch64 | alpha | arm | i386 | ia64 | microblaze | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
bfd_gas=yes
;;
esac

View File

@ -29,6 +29,7 @@ asconfig.texi: $(CONFIG).texi
chmod u+w ./asconfig.texi
CPU_DOCS = \
c-aarch64.texi \
c-alpha.texi \
c-arc.texi \
c-arm.texi \

View File

@ -38,7 +38,9 @@ subdir = doc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(as_TEXINFOS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
$(top_srcdir)/../config/zlib.m4 \
$(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/../config/gettext-sister.m4 \
$(top_srcdir)/../config/largefile.m4 \
@ -49,9 +51,9 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/plugins.m4 \
$(top_srcdir)/../config/po.m4 \
$(top_srcdir)/../config/progtest.m4 \
$(top_srcdir)/../bfd/acinclude.m4 \
$(top_srcdir)/../config/zlib.m4 \
$(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@ -118,7 +120,6 @@ CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
@ -154,7 +155,6 @@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
@ -191,7 +191,6 @@ abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
@ -271,6 +270,7 @@ TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
-I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
CPU_DOCS = \
c-aarch64.texi \
c-alpha.texi \
c-arc.texi \
c-arm.texi \

View File

@ -26,6 +26,7 @@
@c CPUs of interest
@c ================
@set AARCH64
@set ALPHA
@set ARC
@set ARM

View File

@ -249,6 +249,11 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
@c
@c Target dependent options are listed below. Keep the list sorted.
@c Add an empty line for separation.
@ifset AARCH64
@emph{Target AArch64 options:}
[@b{-EB}|@b{-EL}]
@end ifset
@ifset ALPHA
@emph{Target Alpha options:}
@ -733,6 +738,25 @@ Standard input, or source files to assemble.
@end table
@c man end
@ifset AARCH64
@ifclear man
@xref{AArch64 Options}, for the options available when @value{AS} is configured
for the 64-bit mode of the ARM Architecture (AArch64).
@end ifclear
@ifset man
@c man begin OPTIONS
The following options are available when @value{AS} is configured for the
64-bit mode of the ARM Architecture (AArch64).
@c man end
@c man begin INCLUDE
@include c-aarch64.texi
@c ended inside the included file
@end ifset
@end ifset
@ifset ALPHA
@ifclear man
@ -6914,6 +6938,9 @@ include details on any machine's instruction set. For details on that
subject, see the hardware manufacturer's manual.
@menu
@ifset AARCH64
* AArch64-Dependent:: AArch64 Dependent Features
@end ifset
@ifset ALPHA
* Alpha-Dependent:: Alpha Dependent Features
@end ifset
@ -7072,6 +7099,10 @@ subject, see the hardware manufacturer's manual.
@c node and sectioning commands; hence the repetition of @chapter BLAH
@c in both conditional blocks.
@ifset AARCH64
@include c-aarch64.texi
@end ifset
@ifset ALPHA
@include c-alpha.texi
@end ifset

275
gas/doc/c-aarch64.texi Normal file
View File

@ -0,0 +1,275 @@
@c Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
@c Contributed by ARM Ltd.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@c man end
@ifset GENERIC
@page
@node AArch64-Dependent
@chapter AArch64 Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter AArch64 Dependent Features
@end ifclear
@cindex AArch64 support
@cindex Thumb support
@menu
* AArch64 Options:: Options
* AArch64 Syntax:: Syntax
* AArch64 Floating Point:: Floating Point
* AArch64 Directives:: AArch64 Machine Directives
* AArch64 Opcodes:: Opcodes
* AArch64 Mapping Symbols:: Mapping Symbols
@end menu
@node AArch64 Options
@section Options
@cindex AArch64 options (none)
@cindex options for AArch64 (none)
@c man begin OPTIONS
@table @gcctabopt
@cindex @code{-EB} command line option, AArch64
@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, AArch64
@item -EL
This option specifies that the output generated by the assembler should
be marked as being encoded for a little-endian processor.
@end table
@c man end
@node AArch64 Syntax
@section Syntax
@menu
* AArch64-Chars:: Special Characters
* AArch64-Regs:: Register Names
* AArch64-Relocations:: Relocations
@end menu
@node AArch64-Chars
@subsection Special Characters
@cindex line comment character, AArch64
@cindex AArch64 line comment character
The presence of a @samp{//} on a line indicates the start of a comment
that extends to the end of the current line. If a @samp{#} appears as
the first character of a line, the whole line is treated as a comment.
@cindex line separator, AArch64
@cindex statement separator, AArch64
@cindex AArch64 line separator
The @samp{;} character can be used instead of a newline to separate
statements.
@cindex immediate character, AArch64
@cindex AArch64 immediate character
The @samp{#} can be optionally used to indicate immediate operands.
@node AArch64-Regs
@subsection Register Names
@cindex AArch64 register names
@cindex register names, AArch64
Please refer to the section @samp{4.4 Register Names} of
@samp{ARMv8 Instruction Set Overview}, which is available at
@uref{http://infocenter.arm.com}.
@node AArch64-Relocations
@subsection Relocations
@cindex relocations, AArch64
@cindex AArch64 relocations
@cindex MOVN, MOVZ and MOVK group relocations, AArch64
Relocations for @samp{MOVZ} and @samp{MOVK} instructions can be generated
by prefixing the label with @samp{#:abs_g2:} etc.
For example to load the 48-bit absolute address of @var{foo} into x0:
@smallexample
movz x0, #:abs_g2:foo // bits 32-47, overflow check
movk x0, #:abs_g1_nc:foo // bits 16-31, no overflow check
movk x0, #:abs_g0_nc:foo // bits 0-15, no overflow check
@end smallexample
@cindex ADRP, ADD, LDR/STR group relocations, AArch64
Relocations for @samp{ADRP}, and @samp{ADD}, @samp{LDR} or @samp{STR}
instructions can be generated by prefixing the label with
@samp{#:pg_hi21:} and @samp{#:lo12:} respectively.
For example to use 33-bit (+/-4GB) pc-relative addressing to
load the address of @var{foo} into x0:
@smallexample
adrp x0, #:pg_hi21:foo
add x0, x0, #:lo12:foo
@end smallexample
Or to load the value of @var{foo} into x0:
@smallexample
adrp x0, #:pg_hi21:foo
ldr x0, [x0, #:lo12:foo]
@end smallexample
Note that @samp{#:pg_hi21:} is optional.
@smallexample
adrp x0, foo
@end smallexample
is equivalent to
@smallexample
adrp x0, #:pg_hi21:foo
@end smallexample
@node AArch64 Floating Point
@section Floating Point
@cindex floating point, AArch64 (@sc{ieee})
@cindex AArch64 floating point (@sc{ieee})
The AArch64 architecture uses @sc{ieee} floating-point numbers.
@node AArch64 Directives
@section AArch64 Machine Directives
@cindex machine directives, AArch64
@cindex AArch64 machine directives
@table @code
@c AAAAAAAAAAAAAAAAAAAAAAAAA
@c BBBBBBBBBBBBBBBBBBBBBBBBBB
@cindex @code{.bss} directive, AArch64
@item .bss
This directive switches to the @code{.bss} section.
@c CCCCCCCCCCCCCCCCCCCCCCCCCC
@c DDDDDDDDDDDDDDDDDDDDDDDDDD
@c EEEEEEEEEEEEEEEEEEEEEEEEEE
@c FFFFFFFFFFFFFFFFFFFFFFFFFF
@c GGGGGGGGGGGGGGGGGGGGGGGGGG
@c HHHHHHHHHHHHHHHHHHHHHHHHHH
@c IIIIIIIIIIIIIIIIIIIIIIIIII
@c JJJJJJJJJJJJJJJJJJJJJJJJJJ
@c KKKKKKKKKKKKKKKKKKKKKKKKKK
@c LLLLLLLLLLLLLLLLLLLLLLLLLL
@cindex @code{.ltorg} directive, AArch64
@item .ltorg
This directive causes the current contents of the literal pool to be
dumped into the current section (which is assumed to be the .text
section) at the current location (aligned to a word boundary).
@code{GAS} maintains a separate literal pool for each section and each
sub-section. The @code{.ltorg} directive will only affect the literal
pool of the current section and sub-section. At the end of assembly
all remaining, un-empty literal pools will automatically be dumped.
Note - older versions of @code{GAS} would dump the current literal
pool any time a section change occurred. This is no longer done, since
it prevents accurate control of the placement of literal pools.
@c MMMMMMMMMMMMMMMMMMMMMMMMMM
@c NNNNNNNNNNNNNNNNNNNNNNNNNN
@c OOOOOOOOOOOOOOOOOOOOOOOOOO
@c PPPPPPPPPPPPPPPPPPPPPPPPPP
@cindex @code{.pool} directive, AArch64
@item .pool
This is a synonym for .ltorg.
@c QQQQQQQQQQQQQQQQQQQQQQQQQQ
@c RRRRRRRRRRRRRRRRRRRRRRRRRR
@cindex @code{.req} directive, AArch64
@item @var{name} .req @var{register name}
This creates an alias for @var{register name} called @var{name}. For
example:
@smallexample
foo .req w0
@end smallexample
@c SSSSSSSSSSSSSSSSSSSSSSSSSS
@c TTTTTTTTTTTTTTTTTTTTTTTTTT
@c UUUUUUUUUUUUUUUUUUUUUUUUUU
@cindex @code{.unreq} directive, AArch64
@item .unreq @var{alias-name}
This undefines a register alias which was previously defined using the
@code{req} directive. For example:
@smallexample
foo .req w0
.unreq foo
@end smallexample
An error occurs if the name is undefined. Note - this pseudo op can
be used to delete builtin in register name aliases (eg 'w0'). This
should only be done if it is really necessary.
@c VVVVVVVVVVVVVVVVVVVVVVVVVV
@c WWWWWWWWWWWWWWWWWWWWWWWWWW
@c XXXXXXXXXXXXXXXXXXXXXXXXXX
@c YYYYYYYYYYYYYYYYYYYYYYYYYY
@c ZZZZZZZZZZZZZZZZZZZZZZZZZZ
@end table
@node AArch64 Opcodes
@section Opcodes
@cindex AArch64 opcodes
@cindex opcodes for AArch64
@code{@value{AS}} implements all the standard AArch64 opcodes. It also
implements several pseudo opcodes, including several synthetic load
instructions.
@table @code
@cindex @code{LDR reg,=<expr>} pseudo op, AArch64
@item LDR =
@smallexample
ldr <register> , =<expression>
@end smallexample
The constant expression will be placed into the nearest literal pool (if it not
already there) and a PC-relative LDR instruction will be generated.
@end table
For more information on the AArch64 instruction set and assembly language
notation, see @samp{ARMv8 Instruction Set Overview} available at
@uref{http://infocenter.arm.com}.
@node AArch64 Mapping Symbols
@section Mapping Symbols
The AArch64 ELF specification requires that special symbols be inserted
into object files to mark certain features:
@table @code
@cindex @code{$x}
@item $x
At the start of a region of code containing AArch64 instructions.
@cindex @code{$d}
@item $d
At the start of a region of data.
@end table

View File

@ -1,3 +1,127 @@
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* gas/aarch64: New directory.
* gas/aarch64/aarch64.exp: New file.
* gas/aarch64/addsub.d: New file.
* gas/aarch64/addsub.s: New file.
* gas/aarch64/advsimd-across.d: New file.
* gas/aarch64/advsimd-across.s: New file.
* gas/aarch64/advsimd-misc.d: New file.
* gas/aarch64/advsimd-misc.s: New file.
* gas/aarch64/advsisd-copy.d: New file.
* gas/aarch64/advsisd-copy.s: New file.
* gas/aarch64/advsisd-misc.d: New file.
* gas/aarch64/advsisd-misc.s: New file.
* gas/aarch64/alias.d: New file.
* gas/aarch64/alias.s: New file.
* gas/aarch64/bitfield-alias.d: New file.
* gas/aarch64/bitfield-alias.s: New file.
* gas/aarch64/bitfield-bfm.d: New file.
* gas/aarch64/bitfield-bfm.s: New file.
* gas/aarch64/bitfield-dump: New file.
* gas/aarch64/bitfield-no-aliases.d: New file.
* gas/aarch64/crypto.d: New file.
* gas/aarch64/crypto.s: New file.
* gas/aarch64/diagnostic.d: New file.
* gas/aarch64/diagnostic.l: New file.
* gas/aarch64/diagnostic.s: New file.
* gas/aarch64/floatdp2.d: New file.
* gas/aarch64/floatdp2.s: New file.
* gas/aarch64/fp_cvt_int.d: New file.
* gas/aarch64/fp_cvt_int.s: New file.
* gas/aarch64/illegal-2.d: New file.
* gas/aarch64/illegal-2.l: New file.
* gas/aarch64/illegal-2.s: New file.
* gas/aarch64/illegal.d: New file.
* gas/aarch64/illegal.l: New file.
* gas/aarch64/illegal.s: New file.
* gas/aarch64/inst-directive.d: New file.
* gas/aarch64/inst-directive.s: New file.
* gas/aarch64/int-insns.d: New file.
* gas/aarch64/int-insns.s: New file.
* gas/aarch64/ldst-exclusive.d: New file.
* gas/aarch64/ldst-exclusive.s: New file.
* gas/aarch64/ldst-reg-imm-post-ind.d: New file.
* gas/aarch64/ldst-reg-imm-post-ind.s: New file.
* gas/aarch64/ldst-reg-imm-pre-ind.d: New file.
* gas/aarch64/ldst-reg-imm-pre-ind.s: New file.
* gas/aarch64/ldst-reg-pair.d: New file.
* gas/aarch64/ldst-reg-pair.s: New file.
* gas/aarch64/ldst-reg-reg-offset.d: New file.
* gas/aarch64/ldst-reg-reg-offset.s: New file.
* gas/aarch64/ldst-reg-uns-imm.d: New file.
* gas/aarch64/ldst-reg-uns-imm.s: New file.
* gas/aarch64/ldst-reg-unscaled-imm.d: New file.
* gas/aarch64/ldst-reg-unscaled-imm.s: New file.
* gas/aarch64/legacy_reg_names.d: New file.
* gas/aarch64/legacy_reg_names.l: New file.
* gas/aarch64/legacy_reg_names.s: New file.
* gas/aarch64/mapmisc.d: New file.
* gas/aarch64/mapmisc.dat: New file.
* gas/aarch64/mapmisc.s: New file.
* gas/aarch64/mapping.d: New file.
* gas/aarch64/mapping.s: New file.
* gas/aarch64/mapping2.d: New file.
* gas/aarch64/mapping2.s: New file.
* gas/aarch64/mapping3.d: New file.
* gas/aarch64/mapping3.s: New file.
* gas/aarch64/mapping4.d: New file.
* gas/aarch64/mapping4.s: New file.
* gas/aarch64/mov-no-aliases.d: New file.
* gas/aarch64/mov.d: New file.
* gas/aarch64/mov.s: New file.
* gas/aarch64/movi.d: New file.
* gas/aarch64/movi.s: New file.
* gas/aarch64/msr.d: New file.
* gas/aarch64/msr.s: New file.
* gas/aarch64/neon-fp-cvt-int.d: New file.
* gas/aarch64/neon-fp-cvt-int.s: New file.
* gas/aarch64/neon-frint.d: New file.
* gas/aarch64/neon-frint.s: New file.
* gas/aarch64/neon-ins.d: New file.
* gas/aarch64/neon-ins.s: New file.
* gas/aarch64/neon-not.d: New file.
* gas/aarch64/neon-not.s: New file.
* gas/aarch64/neon-vfp-reglist-post.d: New file.
* gas/aarch64/neon-vfp-reglist-post.s: New file.
* gas/aarch64/neon-vfp-reglist.d: New file.
* gas/aarch64/neon-vfp-reglist.s: New file.
* gas/aarch64/no-aliases.d: New file.
* gas/aarch64/optional.d: New file.
* gas/aarch64/optional.s: New file.
* gas/aarch64/programmer-friendly.d: New file.
* gas/aarch64/programmer-friendly.s: New file.
* gas/aarch64/reloc-data.d: New file.
* gas/aarch64/reloc-data.s: New file.
* gas/aarch64/reloc-insn.d: New file.
* gas/aarch64/reloc-insn.s: New file.
* gas/aarch64/shifted.d: New file.
* gas/aarch64/shifted.s: New file.
* gas/aarch64/symbol.d: New file.
* gas/aarch64/symbol.s: New file.
* gas/aarch64/sysreg-1.d: New file.
* gas/aarch64/sysreg-1.s: New file.
* gas/aarch64/sysreg.d: New file.
* gas/aarch64/sysreg.s: New file.
* gas/aarch64/system.d: New file.
* gas/aarch64/system.s: New file.
* gas/aarch64/tlbi_op.d: New file.
* gas/aarch64/tlbi_op.s: New file.
* gas/aarch64/tls.d: New file.
* gas/aarch64/tls.s: New file.
* gas/aarch64/verbose-error.d: New file.
* gas/aarch64/verbose-error.l: New file.
* gas/aarch64/verbose-error.s: New file.
2012-08-11 Saravanan Ekanathan <saravanan.ekanathan@amd.com>
PR gas/14423

View File

@ -0,0 +1,7 @@
#
# Some AArch64 tests
#
if {[istarget aarch64*-*-*]} {
run_dump_tests [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,224 @@
/* addsub.s Test file for AArch64 add-subtract instructions.
Copyright 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
// TODO: also cover the addsub_imm instructions.
/*
* Adjust Rm
*/
.macro adjust_rm op, rd, rn, rm_r, rm_n, extend, amount
// for 64-bit instruction, Rm is Xm when <extend> is explicitely
// or implicitly UXTX, SXTX or LSL; otherwise it Wm.
.ifc \rm_r, X
.ifnc \extend, UXTX
.ifnc \extend, SXTX
.ifnc \extend, LSL
.ifb \amount
\op \rd, \rn, W\()\rm_n, \extend
.else
\op \rd, \rn, W\()\rm_n, \extend #\amount
.endif
.exitm
.endif
.endif
.endif
.endif
.ifb \amount
\op \rd, \rn, \rm_r\()\rm_n, \extend
.else
\op \rd, \rn, \rm_r\()\rm_n, \extend #\amount
.endif
.endm
/*
* Emitting addsub_ext instruction
*/
.macro do_addsub_ext type, op, Rn, reg, extend, amount
.ifc \type, 0
// normal add/adds/sub/subs
.ifb \extend
\op \reg\()16, \Rn, \reg\()1
.else
.ifb \amount
adjust_rm \op, \reg\()16, \Rn, \reg, 1, \extend
.else
adjust_rm \op, \reg\()16, \Rn, \reg, 1, \extend, \amount
.endif
.endif
.else
.ifc \type, 1
// adds/subs with ZR as Rd
.ifb \extend
\op \reg\()ZR, \Rn, \reg\()1
.else
.ifb \amount
adjust_rm \op, \reg\()ZR, \Rn, \reg, 1, \extend
.else
adjust_rm \op, \reg\()ZR, \Rn, \reg, 1, \extend, \amount
.endif
.endif
.else
// cmn/cmp
.ifb \extend
\op \Rn, \reg\()1
.else
.ifb \amount
\op \Rn, \reg\()1, \extend
.else
\op \Rn, \reg\()1, \extend #\amount
.endif
.endif
.endif
.endif
.endm
/*
* Optional extension and optional shift amount
*/
.macro do_extend type, op, Rn, reg
// <extend> absent
// note that when SP is not used, the GAS will encode it as addsub_shift
do_addsub_ext \type, \op, \Rn, \reg
// optional absent <amount>
.irp extend, UXTB, UXTH, UXTW, UXTX, SXTB, SXTH, SXTW, SXTX
.irp amount, , 0, 1, 2, 3, 4
do_addsub_ext \type, \op, \Rn, \reg, \extend, \amount
.endr
.endr
// when <extend> is LSL, <amount> cannot be absent
// note that when SP is not used, the GAS will encode it as addsub_shift
.irp amount, 0, 1, 2, 3, 4
do_addsub_ext \type, \op, \Rn, \reg, LSL, \amount
.endr
.endm
/*
* Leaf macro emitting addsub_shift instruction
*/
.macro do_addsub_shift type, op, R, reg, shift, amount
.ifc \type, 0
// normal add/adds/sub/subs
.ifb \shift
\op \reg\()16, \R, \reg\()1
.else
\op \reg\()16, \R, \reg\()1, \shift #\amount
.endif
.else
.ifc \type, 1
// adds/subs with ZR as Rd
.ifb \shift
\op \reg\()ZR, \R, \reg\()1
.else
\op \reg\()ZR, \R, \reg\()1, \shift #\amount
.endif
.else
.ifc \type, 2
// cmn/cmp/neg/negs
.ifb \shift
\op \R, \reg\()1
.else
\op \R, \reg\()1, \shift #\amount
.endif
.else
// sub/subs with ZR as Rn
.ifb \shift
\op \R, \reg\()ZR, \reg\()1
.else
\op \R, \reg\()ZR, \reg\()1, \shift #\amount
.endif
.endif
.endif
.endif
.endm
/*
* Optional shift and optional shift amount
*/
.macro do_shift type, op, R, reg
// <shift> absent
do_addsub_shift \type, \op, \R, \reg
// optional absent <amount>
.irp shift, LSL, LSR, ASR
.irp amount, 0, 1, 2, 3, 4, 5, 16, 31
// amount cannot be absent when shift is present.
do_addsub_shift \type, \op, \R, \reg, \shift, \amount
.endr
.ifc \reg, X
do_addsub_shift \type, \op, \R, \reg, \shift, 63
.endif
.endr
.endm
func:
/*
* Add-subtract (extended register)
*/
.irp op, ADD, ADDS, SUB, SUBS
do_extend 0, \op, W7, W
do_extend 0, \op, WSP, W
do_extend 0, \op, X7, X
do_extend 0, \op, SP, X
.endr
.irp op, ADDS, SUBS
do_extend 1, \op, W7, W
do_extend 1, \op, WSP, W
do_extend 1, \op, X7, X
do_extend 1, \op, SP, X
.endr
.irp op, CMN, CMP
do_extend 2, \op, W7, W
do_extend 2, \op, WSP, W
do_extend 2, \op, X7, X
do_extend 2, \op, SP, X
.endr
/*
* Add-subtract (shift register)
*/
.irp op, ADD, ADDS, SUB, SUBS
do_shift 0, \op, W7, W
do_shift 0, \op, X7, X
.endr
.irp op, ADDS, SUBS
do_shift 1, \op, W7, W
do_shift 1, \op, X7, X
.endr
.irp op, CMN, CMP
do_shift 2, \op, W7, W
do_shift 2, \op, X7, X
.endr
.irp op, SUB, SUBS
do_shift 3, \op, W7, W
do_shift 3, \op, X7, X
.endr
.irp op, NEG, NEGS
do_shift 2, \op, W7, W
do_shift 2, \op, X7, X
.endr

View File

@ -0,0 +1,46 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 0e303be7 saddlv h7, v31.8b
4: 4e303be7 saddlv h7, v31.16b
8: 0e703be7 saddlv s7, v31.4h
c: 4e703be7 saddlv s7, v31.8h
10: 4eb03be7 saddlv d7, v31.4s
14: 2e303be7 uaddlv h7, v31.8b
18: 6e303be7 uaddlv h7, v31.16b
1c: 2e703be7 uaddlv s7, v31.4h
20: 6e703be7 uaddlv s7, v31.8h
24: 6eb03be7 uaddlv d7, v31.4s
28: 0e30abe7 smaxv b7, v31.8b
2c: 4e30abe7 smaxv b7, v31.16b
30: 0e70abe7 smaxv h7, v31.4h
34: 4e70abe7 smaxv h7, v31.8h
38: 4eb0abe7 smaxv s7, v31.4s
3c: 2e30abe7 umaxv b7, v31.8b
40: 6e30abe7 umaxv b7, v31.16b
44: 2e70abe7 umaxv h7, v31.4h
48: 6e70abe7 umaxv h7, v31.8h
4c: 6eb0abe7 umaxv s7, v31.4s
50: 0e31abe7 sminv b7, v31.8b
54: 4e31abe7 sminv b7, v31.16b
58: 0e71abe7 sminv h7, v31.4h
5c: 4e71abe7 sminv h7, v31.8h
60: 4eb1abe7 sminv s7, v31.4s
64: 2e31abe7 uminv b7, v31.8b
68: 6e31abe7 uminv b7, v31.16b
6c: 2e71abe7 uminv h7, v31.4h
70: 6e71abe7 uminv h7, v31.8h
74: 6eb1abe7 uminv s7, v31.4s
78: 0e31bbe7 addv b7, v31.8b
7c: 4e31bbe7 addv b7, v31.16b
80: 0e71bbe7 addv h7, v31.4h
84: 4e71bbe7 addv h7, v31.8h
88: 4eb1bbe7 addv s7, v31.4s
8c: 6e30cbe7 fmaxnmv s7, v31.4s
90: 6eb0cbe7 fminnmv s7, v31.4s
94: 6e30fbe7 fmaxv s7, v31.4s
98: 6eb0fbe7 fminv s7, v31.4s

View File

@ -0,0 +1,46 @@
/* advsimd-across.s Test file for AArch64 Advanced-SIMD across
instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro asimdall op, V, T
\op \V\()7, v31.\()\T
.endm
.text
.irp op, saddlv, uaddlv
asimdall \op, h, 8b
asimdall \op, h, 16b
asimdall \op, s, 4h
asimdall \op, s, 8h
asimdall \op, d, 4s
.endr
.irp op, smaxv, umaxv, sminv, uminv, addv
asimdall \op, b, 8b
asimdall \op, b, 16b
asimdall \op, h, 4h
asimdall \op, h, 8h
asimdall \op, s, 4s
.endr
.irp op, fmaxnmv, fminnmv, fmaxv, fminv
asimdall \op, s, 4s
.endr

View File

@ -0,0 +1,35 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 0e20bbe0 abs v0.8b, v31.8b
4: 4e20bbe0 abs v0.16b, v31.16b
8: 0e60bbe0 abs v0.4h, v31.4h
c: 4e60bbe0 abs v0.8h, v31.8h
10: 0ea0bbe0 abs v0.2s, v31.2s
14: 4ea0bbe0 abs v0.4s, v31.4s
18: 4ee0bbe0 abs v0.2d, v31.2d
1c: 2e20bbe0 neg v0.8b, v31.8b
20: 6e20bbe0 neg v0.16b, v31.16b
24: 2e60bbe0 neg v0.4h, v31.4h
28: 6e60bbe0 neg v0.8h, v31.8h
2c: 2ea0bbe0 neg v0.2s, v31.2s
30: 6ea0bbe0 neg v0.4s, v31.4s
34: 6ee0bbe0 neg v0.2d, v31.2d
38: 0e207be0 sqabs v0.8b, v31.8b
3c: 4e207be0 sqabs v0.16b, v31.16b
40: 0e607be0 sqabs v0.4h, v31.4h
44: 4e607be0 sqabs v0.8h, v31.8h
48: 0ea07be0 sqabs v0.2s, v31.2s
4c: 4ea07be0 sqabs v0.4s, v31.4s
50: 4ee07be0 sqabs v0.2d, v31.2d
54: 2e207be0 sqneg v0.8b, v31.8b
58: 6e207be0 sqneg v0.16b, v31.16b
5c: 2e607be0 sqneg v0.4h, v31.4h
60: 6e607be0 sqneg v0.8h, v31.8h
64: 2ea07be0 sqneg v0.2s, v31.2s
68: 6ea07be0 sqneg v0.4s, v31.4s
6c: 6ee07be0 sqneg v0.2d, v31.2d

View File

@ -0,0 +1,32 @@
/* advsimd-abs.s Test file for AArch64 Advanced-SIMD Integer absolute
instruction.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro asimdabs op, T
\op v0.\()\T, v31.\()\T
.endm
.text
.irp op, abs, neg, sqabs, sqneg
.irp type, 8b, 16b, 4h, 8h, 2s, 4s, 2d
asimdabs \op \type
.endr
.endr

View File

@ -0,0 +1,67 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 5e0104ff mov b31, v7.b\[0\]
4: 5e0304ff mov b31, v7.b\[1\]
8: 5e0504ff mov b31, v7.b\[2\]
c: 5e0704ff mov b31, v7.b\[3\]
10: 5e0904ff mov b31, v7.b\[4\]
14: 5e0b04ff mov b31, v7.b\[5\]
18: 5e0d04ff mov b31, v7.b\[6\]
1c: 5e0f04ff mov b31, v7.b\[7\]
20: 5e1104ff mov b31, v7.b\[8\]
24: 5e1304ff mov b31, v7.b\[9\]
28: 5e1504ff mov b31, v7.b\[10\]
2c: 5e1704ff mov b31, v7.b\[11\]
30: 5e1904ff mov b31, v7.b\[12\]
34: 5e1b04ff mov b31, v7.b\[13\]
38: 5e1d04ff mov b31, v7.b\[14\]
3c: 5e1f04ff mov b31, v7.b\[15\]
40: 5e0204ff mov h31, v7.h\[0\]
44: 5e0604ff mov h31, v7.h\[1\]
48: 5e0a04ff mov h31, v7.h\[2\]
4c: 5e0e04ff mov h31, v7.h\[3\]
50: 5e1204ff mov h31, v7.h\[4\]
54: 5e1604ff mov h31, v7.h\[5\]
58: 5e1a04ff mov h31, v7.h\[6\]
5c: 5e1e04ff mov h31, v7.h\[7\]
60: 5e0404ff mov s31, v7.s\[0\]
64: 5e0c04ff mov s31, v7.s\[1\]
68: 5e1404ff mov s31, v7.s\[2\]
6c: 5e1c04ff mov s31, v7.s\[3\]
70: 5e0804ff mov d31, v7.d\[0\]
74: 5e1804ff mov d31, v7.d\[1\]
78: 5e0104ff mov b31, v7.b\[0\]
7c: 5e0304ff mov b31, v7.b\[1\]
80: 5e0504ff mov b31, v7.b\[2\]
84: 5e0704ff mov b31, v7.b\[3\]
88: 5e0904ff mov b31, v7.b\[4\]
8c: 5e0b04ff mov b31, v7.b\[5\]
90: 5e0d04ff mov b31, v7.b\[6\]
94: 5e0f04ff mov b31, v7.b\[7\]
98: 5e1104ff mov b31, v7.b\[8\]
9c: 5e1304ff mov b31, v7.b\[9\]
a0: 5e1504ff mov b31, v7.b\[10\]
a4: 5e1704ff mov b31, v7.b\[11\]
a8: 5e1904ff mov b31, v7.b\[12\]
ac: 5e1b04ff mov b31, v7.b\[13\]
b0: 5e1d04ff mov b31, v7.b\[14\]
b4: 5e1f04ff mov b31, v7.b\[15\]
b8: 5e0204ff mov h31, v7.h\[0\]
bc: 5e0604ff mov h31, v7.h\[1\]
c0: 5e0a04ff mov h31, v7.h\[2\]
c4: 5e0e04ff mov h31, v7.h\[3\]
c8: 5e1204ff mov h31, v7.h\[4\]
cc: 5e1604ff mov h31, v7.h\[5\]
d0: 5e1a04ff mov h31, v7.h\[6\]
d4: 5e1e04ff mov h31, v7.h\[7\]
d8: 5e0404ff mov s31, v7.s\[0\]
dc: 5e0c04ff mov s31, v7.s\[1\]
e0: 5e1404ff mov s31, v7.s\[2\]
e4: 5e1c04ff mov s31, v7.s\[3\]
e8: 5e0804ff mov d31, v7.d\[0\]
ec: 5e1804ff mov d31, v7.d\[1\]

View File

@ -0,0 +1,39 @@
/* advsisd-copy.s Test file for AArch64 Advanced-SISD copy instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro element2scalar op, type, index
\op \type\()31, V7.\type[\index]
.endm
.macro iterate op, type, from, to
element2scalar \op, \type, \from
.if \to-\from
iterate \op, \type, "(\from+1)", \to
.endif
.endm
.text
.irp op, dup, mov
iterate \op, b, 0, 15
iterate \op, h, 0, 7
iterate \op, s, 0, 3
iterate \op, d, 0, 1
.endr

View File

@ -0,0 +1,17 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 5ee0bbe0 abs d0, d31
4: 7ee0bbe0 neg d0, d31
8: 5e207be0 sqabs b0, b31
c: 7e207be0 sqneg b0, b31
10: 5e607be0 sqabs h0, h31
14: 7e607be0 sqneg h0, h31
18: 5ea07be0 sqabs s0, s31
1c: 7ea07be0 sqneg s0, s31
20: 5ee07be0 sqabs d0, d31
24: 7ee07be0 sqneg d0, d31

View File

@ -0,0 +1,36 @@
/* advsimd-abs.s Test file for AArch64 AdvSISD Scalar Misc
instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro asisd op T
\op \T\()0, \T\()31
.endm
.text
.irp op, abs, neg
asisd \op d
.endr
.irp type, b, h, s, d
.irp op, sqabs, sqneg
asisd \op \type
.endr
.endr

View File

@ -0,0 +1,74 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 13823c20 extr w0, w1, w2, #15
4: 93c23c20 extr x0, x1, x2, #15
8: 13831c60 ror w0, w3, #7
c: 93c51ca0 ror x0, x5, #7
10: 138748e6 ror w6, w7, #18
14: 93c7a0e6 ror x6, x7, #40
18: 1b020c20 madd w0, w1, w2, w3
1c: 1b027c20 mul w0, w1, w2
20: 1b027c20 mul w0, w1, w2
24: 9b028c20 msub x0, x1, x2, x3
28: 9b02fc20 mneg x0, x1, x2
2c: 9b02fc20 mneg x0, x1, x2
30: 9b220c20 smaddl x0, w1, w2, x3
34: 9b227c20 smull x0, w1, w2
38: 9b227c20 smull x0, w1, w2
3c: 9b228c20 smsubl x0, w1, w2, x3
40: 9b22fc20 smnegl x0, w1, w2
44: 9b22fc20 smnegl x0, w1, w2
48: 9ba20c20 umaddl x0, w1, w2, x3
4c: 9ba27c20 umull x0, w1, w2
50: 9ba27c20 umull x0, w1, w2
54: 9ba28c20 umsubl x0, w1, w2, x3
58: 9ba2fc20 umnegl x0, w1, w2
5c: 9ba2fc20 umnegl x0, w1, w2
60: 1a9f0420 csinc w0, w1, wzr, eq
64: 1a810420 cinc w0, w1, ne
68: 1a810420 cinc w0, w1, ne
6c: 1a9f37e0 cset w0, cs
70: 1a9f37e0 cset w0, cs
74: da9f2020 csinv x0, x1, xzr, cs
78: da812020 cinv x0, x1, cc
7c: da812020 cinv x0, x1, cc
80: da9f43e0 csetm x0, pl
84: da9f43e0 csetm x0, pl
88: da9eb7e0 csneg x0, xzr, x30, lt
8c: da9eb7c0 cneg x0, x30, ge
90: da9eb7c0 cneg x0, x30, ge
94: ea020020 ands x0, x1, x2
98: ea02003f tst x1, x2
9c: ea02003f tst x1, x2
a0: 6ac27c3f tst w1, w2, ror #31
a4: 6ac27c3f tst w1, w2, ror #31
a8: aa220020 orn x0, x1, x2
ac: aa22003f orn xzr, x1, x2
b0: aa2203e0 mvn x0, x2
b4: aa2203e0 mvn x0, x2
b8: 2aa23c3f orn wzr, w1, w2, asr #15
bc: 2aa23fe0 mvn w0, w2, asr #15
c0: 2aa23fe0 mvn w0, w2, asr #15
c4: 0ea11c20 mov v0.8b, v1.8b
c8: 0ea21c20 orr v0.8b, v1.8b, v2.8b
cc: 0ea11c20 mov v0.8b, v1.8b
d0: aa1103e3 mov x3, x17
d4: aa110003 orr x3, x0, x17
d8: aa1103e3 mov x3, x17
dc: 92628421 and x1, x1, #0xffffffffc0000000
e0: 927ef800 and x0, x0, #0xfffffffffffffffd
e4: 121e7800 and w0, w0, #0xfffffffd
e8: 721d1f1f tst w24, #0x7f8
ec: 721d1f00 ands w0, w24, #0x7f8
f0: 721d1f1f tst w24, #0x7f8
f4: 7100807f cmp w3, #0x20
f8: 710083e3 subs w3, wsp, #0x20
fc: 7100807f cmp w3, #0x20
100: b13ffdff cmn x15, #0xfff
104: f13fffef subs x15, sp, #0xfff
108: b13ffdff cmn x15, #0xfff

View File

@ -0,0 +1,101 @@
/* alias.s Test file for AArch64 instructions aliases or disassembly
preference. It is also used to test the -Mno-aliases option in
the disassemler.
Copyright 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.text
extr w0, w1, w2, #15
extr x0, x1, x2, #15
extr w0, w3, w3, #7
extr x0, x5, x5, #7
ror w6, w7, #18
ror x6, x7, #40
madd w0, w1, w2, w3
madd w0, w1, w2, wzr
mul w0, w1, w2
msub x0, x1, x2, x3
msub x0, x1, x2, xzr
mneg x0, x1, x2
smaddl x0, w1, w2, x3
smaddl x0, w1, w2, xzr
smull x0, w1, w2
smsubl x0, w1, w2, x3
smsubl x0, w1, w2, xzr
smnegl x0, w1, w2
umaddl x0, w1, w2, x3
umaddl x0, w1, w2, xzr
umull x0, w1, w2
umsubl x0, w1, w2, x3
umsubl x0, w1, w2, xzr
umnegl x0, w1, w2
csinc w0, w1, wzr, eq
csinc w0, w1, w1, eq
cinc w0, w1, ne
csinc w0, wzr, wzr, lo
cset w0, cs
csinv x0, x1, xzr, hs
csinv x0, x1, x1, hs
cinv x0, x1, cc
csinv x0, xzr, xzr, mi
csetm x0, pl
csneg x0, xzr, x30, lt
csneg x0, x30, x30, lt
cneg x0, x30, ge
ands x0, x1, x2
ands xzr, x1, x2
tst x1, x2
ands wzr, w1, w2, ror #31
tst w1, w2, ror #31
orn x0, x1, x2
orn xzr, x1, x2
orn x0, xzr, x2
mvn x0, x2
orn wzr, w1, w2, asr #15
orn w0, wzr, w2, asr #15
mvn w0, w2, asr #15
mov v0.8b, v1.8b
orr v0.8b, v1.8b, v2.8b
orr v0.8b, v1.8b, v1.8b
mov x3, x17
orr x3, x0, x17
orr x3, xzr, x17
bic x1, x1, #(1<<30)-1
bic x0, x0, #2
bic w0, w0, #2
ands wzr, w24, #0x7f8
ands w0, w24, #0x7f8
tst w24, #0x7f8
subs wzr, w3, #0x20
subs w3, wsp, #0x20
cmp w3, #0x20
adds xzr, x15, #0xfff
subs x15, sp, #0xfff
cmn x15, #0xfff

View File

@ -0,0 +1,2 @@
#objdump: -dr
#dump: bitfield-dump

View File

@ -0,0 +1,112 @@
/* bitfield-alias.s Test file for AArch64 bitfield instructions
alias mnemonics.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* This file tests the GAS's ability in assembling the alias mnemonics
of sbfm, bfm and ubfm. Disassembler should prefer to use alias
mnemonics to display {[u|s]}bfm instructions.
bitfield-bfm.s and bitfield-alias.s will be assembled into idential
binary, which is why the two tests share the same dump match
file 'bitfield-dump'.
This assembly file is also used for the bitfield-no-aliases test. */
// <op> <Wd>, <Wn>
.macro bf_32r op
\op wzr, w7
.endm
// <op> <Xd>, <Wn>
.macro bf_64x op
\op xzr, w7
.endm
// <op> <Wd>, <Wn>, #<shift>
.macro bf_32s op, shift
\op wzr, w7, \shift
.endm
// <op> <Xd>, <Xn>, #<shift>
.macro bf_64s op, shift
\op xzr, x7, \shift
.endm
// <op> <Wd>, <Wn>, #<lsb>, #<width>
.macro bf_32 op, lsb, width
\op wzr, w7, #\lsb, #\width
.endm
// <op> <Xd>, <Xn>, #<lsb>, #<width>
.macro bf_64 op, lsb, width
\op xzr, x7, #\lsb, #\width
.endm
.text
/*
* extend
*/
bf_32r sxtb
bf_64x sxtb
bf_32r sxth
bf_64x sxth
bf_64x sxtw
bf_32r uxtb
bf_64x uxtb
bf_32r uxth
bf_64x uxth
bf_32r uxtw
bf_64x uxtw
/*
* shift
*/
.irp op, asr, lsr, lsl
.irp shift, 0, 16, 31
bf_32s \op, \shift
.endr
.irp shift, 0, 31, 63
bf_64s \op, \shift
.endr
.endr
/*
* Insert & Extract
*/
.irp op, sbfiz, sbfx, bfi, bfxil, ubfiz, ubfx
bf_32 \op, 0, 1
bf_32 \op, 0, 16
bf_32 \op, 0, 32
bf_32 \op, 16, 1
bf_32 \op, 16, 8
bf_32 \op, 16, 16
bf_32 \op, 31, 1
bf_64 \op, 0, 1
bf_64 \op, 0, 32
bf_64 \op, 0, 64
bf_64 \op, 32, 1
bf_64 \op, 32, 16
bf_64 \op, 32, 32
bf_64 \op, 63, 1
.endr

View File

@ -0,0 +1,2 @@
#objdump: -dr
#dump: bitfield-dump

View File

@ -0,0 +1,154 @@
/* bitfield-bfm.s Test file for AArch64 bitfield instructions
sbfm, bfm and ubfm mnemonics.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* This file tests the GAS's ability in assembling sbfm, bfm and ubfm
instructions. Disassembler should use alias mnemonics to display
{[u|s]}bfm instructions. bitfield-bfm.s and bitfield-alias.s will be
assembled into idential binary, which is why the two tests share the
same dump match file 'bitfield-dump'. */
// <op> <Wd>, <Wn>
.macro bf_32r op
\op wzr, w7
.endm
// <op> <Xd>, <Wn>
.macro bf_64x op
\op xzr, w7
.endm
// <op> <Wd>, <Wn>, #<shift>
.macro bf_32s op, shift
\op wzr, w7, \shift
.endm
// <op> <Xd>, <Xn>, #<shift>
.macro bf_64s op, shift
\op xzr, x7, \shift
.endm
.macro op_bfm signed, reg, immr, imms
\signed\()bfm \reg\()zr, \reg\()7, #\immr, #\imms // e.g. sbfm xzr, x7, #0, #15
.endm
.macro ext2bfm signed, reg, imms
op_bfm signed=\signed, reg=\reg, immr=0, imms=\imms
.endm
// shift right -> bfm
.macro sr2bfm signed, reg, shift, imms
op_bfm signed=\signed, reg=\reg, immr=\shift, imms=\imms
.endm
// shift left -> bfm
.macro sl2bfm signed, reg, shift
.ifc \reg, w
op_bfm signed=\signed, reg=\reg, immr="((32-\shift)&31)", imms="(31-\shift)"
.else
op_bfm signed=\signed, reg=\reg, immr="((64-\shift)&63)", imms="(63-\shift)"
.endif
.endm
// bitfield insert -> bfm
.macro ins2bfm signed, reg, lsb, width
.ifc \reg, w
op_bfm signed=\signed, reg=\reg, immr="((32-\lsb)&31)", imms="(\width-1)"
.else
op_bfm signed=\signed, reg=\reg, immr="((64-\lsb)&63)", imms="(\width-1)"
.endif
.endm
// bitfield extract -> bfm
.macro x2bfm signed, reg, lsb, width
op_bfm signed=\signed, reg=\reg, immr=\lsb, imms="(\lsb+\width-1)"
.endm
.text
/*
* aliasing extend
*/
ext2bfm s, w, 7 // sxtb wzr, w7
ext2bfm s, x, 7 // sxtb xzr, x7
ext2bfm s, w, 15 // sxth wzr, w7
ext2bfm s, x, 15 // sxth xzr, x7
ext2bfm s, x, 31 // sxtw xzr, x7
ext2bfm u, w, 7 // uxtb wzr, w7
ext2bfm u, w, 7 // uxtb xzr, w7
ext2bfm u, w, 15 // uxth wzr, w7
ext2bfm u, w, 15 // uxth xzr, w7
orr wzr, wzr, w7 // uxtw wzr, w7
orr wzr, wzr, w7 // uxtw wzr, w7
/*
* aliasing shift
*/
.irp shift 0, 16, 31 // asr wzr, w7, #\shift
sr2bfm s, w, \shift, 31
.endr
.irp shift 0, 31, 63 // asr xzr, x7, #\shift
sr2bfm s, x, \shift, 63
.endr
.irp shift 0, 16, 31 // lsr wzr, w7, #\shift
sr2bfm u, w, \shift, 31
.endr
.irp shift 0, 31, 63 // lsr xzr, x7, #\shift
sr2bfm u, x, \shift, 63
.endr
.irp shift 0, 16, 31 // lsl wzr, w7, #\shift
sl2bfm u, w, \shift
.endr
.irp shift 0, 31, 63 // lsl xzr, x7, #\shift
sl2bfm u, x, \shift
.endr
/*
* aliasing insert and extract
*/
.irp signed, s, , u
.irp whichm, ins2bfm, x2bfm
\whichm \signed, w, 0, 1
\whichm \signed, w, 0, 16
\whichm \signed, w, 0, 32
\whichm \signed, w, 16, 1
\whichm \signed, w, 16, 8
\whichm \signed, w, 16, 16
\whichm \signed, w, 31, 1
\whichm \signed, x, 0, 1
\whichm \signed, x, 0, 32
\whichm \signed, x, 0, 64
\whichm \signed, x, 32, 1
\whichm \signed, x, 32, 16
\whichm \signed, x, 32, 32
\whichm \signed, x, 63, 1
.endr
.endr

View File

@ -0,0 +1,118 @@
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 13001cff sxtb wzr, w7
4: 93401cff sxtb xzr, w7
8: 13003cff sxth wzr, w7
c: 93403cff sxth xzr, w7
10: 93407cff sxtw xzr, w7
14: 53001cff uxtb wzr, w7
18: 53001cff uxtb wzr, w7
1c: 53003cff uxth wzr, w7
20: 53003cff uxth wzr, w7
24: 2a0703ff mov wzr, w7
28: 2a0703ff mov wzr, w7
2c: 13007cff asr wzr, w7, #0
30: 13107cff asr wzr, w7, #16
34: 131f7cff asr wzr, w7, #31
38: 9340fcff asr xzr, x7, #0
3c: 935ffcff asr xzr, x7, #31
40: 937ffcff asr xzr, x7, #63
44: 53007cff lsr wzr, w7, #0
48: 53107cff lsr wzr, w7, #16
4c: 531f7cff lsr wzr, w7, #31
50: d340fcff lsr xzr, x7, #0
54: d35ffcff lsr xzr, x7, #31
58: d37ffcff lsr xzr, x7, #63
5c: 53007cff lsr wzr, w7, #0
60: 53103cff lsl wzr, w7, #16
64: 530100ff lsl wzr, w7, #31
68: d340fcff lsr xzr, x7, #0
6c: d36180ff lsl xzr, x7, #31
70: d34100ff lsl xzr, x7, #63
74: 130000ff sbfx wzr, w7, #0, #1
78: 13003cff sxth wzr, w7
7c: 13007cff asr wzr, w7, #0
80: 131000ff sbfiz wzr, w7, #16, #1
84: 13101cff sbfiz wzr, w7, #16, #8
88: 13103cff sbfiz wzr, w7, #16, #16
8c: 130100ff sbfiz wzr, w7, #31, #1
90: 934000ff sbfx xzr, x7, #0, #1
94: 93407cff sxtw xzr, w7
98: 9340fcff asr xzr, x7, #0
9c: 936000ff sbfiz xzr, x7, #32, #1
a0: 93603cff sbfiz xzr, x7, #32, #16
a4: 93607cff sbfiz xzr, x7, #32, #32
a8: 934100ff sbfiz xzr, x7, #63, #1
ac: 130000ff sbfx wzr, w7, #0, #1
b0: 13003cff sxth wzr, w7
b4: 13007cff asr wzr, w7, #0
b8: 131040ff sbfx wzr, w7, #16, #1
bc: 13105cff sbfx wzr, w7, #16, #8
c0: 13107cff asr wzr, w7, #16
c4: 131f7cff asr wzr, w7, #31
c8: 934000ff sbfx xzr, x7, #0, #1
cc: 93407cff sxtw xzr, w7
d0: 9340fcff asr xzr, x7, #0
d4: 936080ff sbfx xzr, x7, #32, #1
d8: 9360bcff sbfx xzr, x7, #32, #16
dc: 9360fcff asr xzr, x7, #32
e0: 937ffcff asr xzr, x7, #63
e4: 330000ff bfxil wzr, w7, #0, #1
e8: 33003cff bfxil wzr, w7, #0, #16
ec: 33007cff bfxil wzr, w7, #0, #32
f0: 331000ff bfi wzr, w7, #16, #1
f4: 33101cff bfi wzr, w7, #16, #8
f8: 33103cff bfi wzr, w7, #16, #16
fc: 330100ff bfi wzr, w7, #31, #1
100: b34000ff bfxil xzr, x7, #0, #1
104: b3407cff bfxil xzr, x7, #0, #32
108: b340fcff bfxil xzr, x7, #0, #64
10c: b36000ff bfi xzr, x7, #32, #1
110: b3603cff bfi xzr, x7, #32, #16
114: b3607cff bfi xzr, x7, #32, #32
118: b34100ff bfi xzr, x7, #63, #1
11c: 330000ff bfxil wzr, w7, #0, #1
120: 33003cff bfxil wzr, w7, #0, #16
124: 33007cff bfxil wzr, w7, #0, #32
128: 331040ff bfxil wzr, w7, #16, #1
12c: 33105cff bfxil wzr, w7, #16, #8
130: 33107cff bfxil wzr, w7, #16, #16
134: 331f7cff bfxil wzr, w7, #31, #1
138: b34000ff bfxil xzr, x7, #0, #1
13c: b3407cff bfxil xzr, x7, #0, #32
140: b340fcff bfxil xzr, x7, #0, #64
144: b36080ff bfxil xzr, x7, #32, #1
148: b360bcff bfxil xzr, x7, #32, #16
14c: b360fcff bfxil xzr, x7, #32, #32
150: b37ffcff bfxil xzr, x7, #63, #1
154: 530000ff ubfx wzr, w7, #0, #1
158: 53003cff uxth wzr, w7
15c: 53007cff lsr wzr, w7, #0
160: 531000ff ubfiz wzr, w7, #16, #1
164: 53101cff ubfiz wzr, w7, #16, #8
168: 53103cff lsl wzr, w7, #16
16c: 530100ff lsl wzr, w7, #31
170: d34000ff ubfx xzr, x7, #0, #1
174: d3407cff ubfx xzr, x7, #0, #32
178: d340fcff lsr xzr, x7, #0
17c: d36000ff ubfiz xzr, x7, #32, #1
180: d3603cff ubfiz xzr, x7, #32, #16
184: d3607cff lsl xzr, x7, #32
188: d34100ff lsl xzr, x7, #63
18c: 530000ff ubfx wzr, w7, #0, #1
190: 53003cff uxth wzr, w7
194: 53007cff lsr wzr, w7, #0
198: 531040ff ubfx wzr, w7, #16, #1
19c: 53105cff ubfx wzr, w7, #16, #8
1a0: 53107cff lsr wzr, w7, #16
1a4: 531f7cff lsr wzr, w7, #31
1a8: d34000ff ubfx xzr, x7, #0, #1
1ac: d3407cff ubfx xzr, x7, #0, #32
1b0: d340fcff lsr xzr, x7, #0
1b4: d36080ff ubfx xzr, x7, #32, #1
1b8: d360bcff ubfx xzr, x7, #32, #16
1bc: d360fcff lsr xzr, x7, #32
1c0: d37ffcff lsr xzr, x7, #63

View File

@ -0,0 +1,121 @@
#source: bitfield-alias.s
#objdump: -dr -Mno-aliases
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 13001cff sbfm wzr, w7, #0, #7
4: 93401cff sbfm xzr, x7, #0, #7
8: 13003cff sbfm wzr, w7, #0, #15
c: 93403cff sbfm xzr, x7, #0, #15
10: 93407cff sbfm xzr, x7, #0, #31
14: 53001cff ubfm wzr, w7, #0, #7
18: 53001cff ubfm wzr, w7, #0, #7
1c: 53003cff ubfm wzr, w7, #0, #15
20: 53003cff ubfm wzr, w7, #0, #15
24: 2a0703ff orr wzr, wzr, w7
28: 2a0703ff orr wzr, wzr, w7
2c: 13007cff sbfm wzr, w7, #0, #31
30: 13107cff sbfm wzr, w7, #16, #31
34: 131f7cff sbfm wzr, w7, #31, #31
38: 9340fcff sbfm xzr, x7, #0, #63
3c: 935ffcff sbfm xzr, x7, #31, #63
40: 937ffcff sbfm xzr, x7, #63, #63
44: 53007cff ubfm wzr, w7, #0, #31
48: 53107cff ubfm wzr, w7, #16, #31
4c: 531f7cff ubfm wzr, w7, #31, #31
50: d340fcff ubfm xzr, x7, #0, #63
54: d35ffcff ubfm xzr, x7, #31, #63
58: d37ffcff ubfm xzr, x7, #63, #63
5c: 53007cff ubfm wzr, w7, #0, #31
60: 53103cff ubfm wzr, w7, #16, #15
64: 530100ff ubfm wzr, w7, #1, #0
68: d340fcff ubfm xzr, x7, #0, #63
6c: d36180ff ubfm xzr, x7, #33, #32
70: d34100ff ubfm xzr, x7, #1, #0
74: 130000ff sbfm wzr, w7, #0, #0
78: 13003cff sbfm wzr, w7, #0, #15
7c: 13007cff sbfm wzr, w7, #0, #31
80: 131000ff sbfm wzr, w7, #16, #0
84: 13101cff sbfm wzr, w7, #16, #7
88: 13103cff sbfm wzr, w7, #16, #15
8c: 130100ff sbfm wzr, w7, #1, #0
90: 934000ff sbfm xzr, x7, #0, #0
94: 93407cff sbfm xzr, x7, #0, #31
98: 9340fcff sbfm xzr, x7, #0, #63
9c: 936000ff sbfm xzr, x7, #32, #0
a0: 93603cff sbfm xzr, x7, #32, #15
a4: 93607cff sbfm xzr, x7, #32, #31
a8: 934100ff sbfm xzr, x7, #1, #0
ac: 130000ff sbfm wzr, w7, #0, #0
b0: 13003cff sbfm wzr, w7, #0, #15
b4: 13007cff sbfm wzr, w7, #0, #31
b8: 131040ff sbfm wzr, w7, #16, #16
bc: 13105cff sbfm wzr, w7, #16, #23
c0: 13107cff sbfm wzr, w7, #16, #31
c4: 131f7cff sbfm wzr, w7, #31, #31
c8: 934000ff sbfm xzr, x7, #0, #0
cc: 93407cff sbfm xzr, x7, #0, #31
d0: 9340fcff sbfm xzr, x7, #0, #63
d4: 936080ff sbfm xzr, x7, #32, #32
d8: 9360bcff sbfm xzr, x7, #32, #47
dc: 9360fcff sbfm xzr, x7, #32, #63
e0: 937ffcff sbfm xzr, x7, #63, #63
e4: 330000ff bfm wzr, w7, #0, #0
e8: 33003cff bfm wzr, w7, #0, #15
ec: 33007cff bfm wzr, w7, #0, #31
f0: 331000ff bfm wzr, w7, #16, #0
f4: 33101cff bfm wzr, w7, #16, #7
f8: 33103cff bfm wzr, w7, #16, #15
fc: 330100ff bfm wzr, w7, #1, #0
100: b34000ff bfm xzr, x7, #0, #0
104: b3407cff bfm xzr, x7, #0, #31
108: b340fcff bfm xzr, x7, #0, #63
10c: b36000ff bfm xzr, x7, #32, #0
110: b3603cff bfm xzr, x7, #32, #15
114: b3607cff bfm xzr, x7, #32, #31
118: b34100ff bfm xzr, x7, #1, #0
11c: 330000ff bfm wzr, w7, #0, #0
120: 33003cff bfm wzr, w7, #0, #15
124: 33007cff bfm wzr, w7, #0, #31
128: 331040ff bfm wzr, w7, #16, #16
12c: 33105cff bfm wzr, w7, #16, #23
130: 33107cff bfm wzr, w7, #16, #31
134: 331f7cff bfm wzr, w7, #31, #31
138: b34000ff bfm xzr, x7, #0, #0
13c: b3407cff bfm xzr, x7, #0, #31
140: b340fcff bfm xzr, x7, #0, #63
144: b36080ff bfm xzr, x7, #32, #32
148: b360bcff bfm xzr, x7, #32, #47
14c: b360fcff bfm xzr, x7, #32, #63
150: b37ffcff bfm xzr, x7, #63, #63
154: 530000ff ubfm wzr, w7, #0, #0
158: 53003cff ubfm wzr, w7, #0, #15
15c: 53007cff ubfm wzr, w7, #0, #31
160: 531000ff ubfm wzr, w7, #16, #0
164: 53101cff ubfm wzr, w7, #16, #7
168: 53103cff ubfm wzr, w7, #16, #15
16c: 530100ff ubfm wzr, w7, #1, #0
170: d34000ff ubfm xzr, x7, #0, #0
174: d3407cff ubfm xzr, x7, #0, #31
178: d340fcff ubfm xzr, x7, #0, #63
17c: d36000ff ubfm xzr, x7, #32, #0
180: d3603cff ubfm xzr, x7, #32, #15
184: d3607cff ubfm xzr, x7, #32, #31
188: d34100ff ubfm xzr, x7, #1, #0
18c: 530000ff ubfm wzr, w7, #0, #0
190: 53003cff ubfm wzr, w7, #0, #15
194: 53007cff ubfm wzr, w7, #0, #31
198: 531040ff ubfm wzr, w7, #16, #16
19c: 53105cff ubfm wzr, w7, #16, #23
1a0: 53107cff ubfm wzr, w7, #16, #31
1a4: 531f7cff ubfm wzr, w7, #31, #31
1a8: d34000ff ubfm xzr, x7, #0, #0
1ac: d3407cff ubfm xzr, x7, #0, #31
1b0: d340fcff ubfm xzr, x7, #0, #63
1b4: d36080ff ubfm xzr, x7, #32, #32
1b8: d360bcff ubfm xzr, x7, #32, #47
1bc: d360fcff ubfm xzr, x7, #32, #63
1c0: d37ffcff ubfm xzr, x7, #63, #63

View File

@ -0,0 +1,26 @@
#objdump: -dr
#as: -march=armv8+crypto
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 4e284be7 aese v7.16b, v31.16b
4: 4e285be7 aesd v7.16b, v31.16b
8: 4e286be7 aesmc v7.16b, v31.16b
c: 4e287be7 aesimc v7.16b, v31.16b
10: 5e280be7 sha1h s7, s31
14: 5e281be7 sha1su1 v7.4s, v31.4s
18: 5e282be7 sha256su0 v7.4s, v31.4s
1c: 5e1f01e7 sha1c q7, s15, v31.4s
20: 5e1f11e7 sha1p q7, s15, v31.4s
24: 5e1f21e7 sha1m q7, s15, v31.4s
28: 5e1f31e7 sha1su0 v7.4s, v15.4s, v31.4s
2c: 5e1f41e7 sha256h q7, q15, v31.4s
30: 5e1f51e7 sha256h2 q7, q15, v31.4s
34: 5e1f61e7 sha256su1 v7.4s, v15.4s, v31.4s
38: 0e3fe1e7 pmull v7.8h, v15.8b, v31.8b
3c: 0effe1e7 pmull v7.1q, v15.1d, v31.1d
40: 4e3fe1e7 pmull2 v7.8h, v15.16b, v31.16b
44: 4effe1e7 pmull2 v7.1q, v15.2d, v31.2d

View File

@ -0,0 +1,44 @@
/* crypto.s Test file for AArch64 Advanced-SIMD Crypto instructions.
Copyright 2012 Free Software Foundation, Inc. Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.text
aese v7.16b, v31.16b
aesd v7.16b, v31.16b
aesmc v7.16b, v31.16b
aesimc v7.16b, v31.16b
sha1h s7, s31
sha1su1 v7.4s, v31.4s
sha256su0 v7.4s, v31.4s
sha1c q7, s15, v31.4s
sha1p q7, s15, v31.4s
sha1m q7, s15, v31.4s
sha1su0 v7.4s, v15.4s, v31.4s
sha256h q7, q15, v31.4s
sha256h2 q7, q15, v31.4s
sha256su1 v7.4s, v15.4s, v31.4s
pmull v7.8h, v15.8b, v31.8b
pmull v7.1q, v15.1d, v31.1d
pmull2 v7.8h, v15.16b, v31.16b
pmull2 v7.1q, v15.2d, v31.2d

View File

@ -0,0 +1,3 @@
#name: Diagnostics Quality
#source: diagnostic.s
#error-output: diagnostic.l

View File

@ -0,0 +1,87 @@
[^:]*: Assembler messages:
[^:]*:4: Error: unexpected comma after the mnemonic name `fmul' -- `fmul, s0,s1,s2'
[^:]*:5: Error: unexpected comma after the mnemonic name `fmul' -- `fmul ,s0,s1,s2'
[^:]*:6: Error: unexpected comma after the mnemonic name `fmul' -- `fmul ,s0,s1,s2'
[^:]*:7: Error: unknown mnemonic `b\.random' -- `b\.random label1'
[^:]*:8: Error: unknown mnemonic `fmull' -- `fmull s0'
[^:]*:9: Error: unknown mnemonic `aaaaaaaaaaaaaaaaaaaaaaaaaaaa\.\.\.' -- `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
[^:]*:10: Error: unexpected comma before the omitted optional operand at operand 5 -- `sys 1,c1,c3,3,'
[^:]*:11: Error: immediate value out of range 0 to 7 at operand 4 -- `ext v0.8b,v1.8b,v2.8b,8'
[^:]*:12: Error: immediate value out of range 0 to 15 at operand 4 -- `ext v0.16b,v1.16b,v2.16b,20'
[^:]*:13: Error: immediate value out of range 0 to 65535 at operand 1 -- `svc -1'
[^:]*:14: Error: immediate value out of range 0 to 65535 at operand 1 -- `svc 65536'
[^:]*:15: Error: immediate value out of range 0 to 31 at operand 2 -- `ccmp w0,32,10,le'
[^:]*:16: Error: immediate value out of range 0 to 31 at operand 2 -- `ccmp x0,-1,10,le'
[^:]*:17: Error: extraneous register at operand 2 -- `tlbi alle3is,x0'
[^:]*:18: Error: missing register at operand 2 -- `tlbi vaale1is'
[^:]*:19: Error: unexpected characters following instruction at operand 1 -- `tlbi vaale1is x0'
[^:]*:20: Error: immediate value out of range 0 to 1 at operand 1 -- `msr spsel,3'
[^:]*:21: Error: immediate value out of range 1 to 64 at operand 3 -- `fcvtzu x15,d31,#66'
[^:]*:22: Error: immediate value out of range 1 to 32 at operand 3 -- `scvtf s0,w0,33'
[^:]*:23: Error: immediate value out of range 1 to 32 at operand 3 -- `scvtf s0,w0,0'
[^:]*:24: Error: register number out of range 0 to 15 at operand 3 -- `smlal v0.4s,v31.4h,v16.h\[1\]'
[^:]*:25: Error: register element index out of range 0 to 7 at operand 3 -- `smlal v0.4s,v31.4h,v15.h\[8\]'
[^:]*:26: Error: extend operator expected at operand 3 -- `add sp,x0,x7,lsr#2'
[^:]*:27: Error: shift amount out of range 0 to 4 at operand 3 -- `add x0,x0,x7,uxtx#5'
[^:]*:28: Error: 'ROR' operator not allowed at operand 3 -- `add x0,xzr,x7,ror#5'
[^:]*:29: Error: shift amount out of range 0 to 31 at operand 3 -- `add w0,wzr,w7,asr#32'
[^:]*:30: Error: invalid post-increment amount at operand 2 -- `st2 \{v0.4s,v1.4s\},\[sp\],#24'
[^:]*:31: Error: invalid shift amount at operand 2 -- `ldr q0,\[x0,w0,uxtw#5\]'
[^:]*:32: Error: invalid number of registers in the list; 2 registers are expected at operand 1 -- `st2 \{v0.4s,v1.4s,v2.4s,v3.4s\},\[sp\],#64'
[^:]*:33: Error: shift amount expected to be 0 or 12 at operand 3 -- `adds x1,sp,2134,lsl#4'
[^:]*:34: Error: shift amount should be a multiple of 16 at operand 2 -- `movz w0,2134,lsl#8'
[^:]*:35: Error: shift amount out of range 0 to 16 at operand 2 -- `movz w0,2134,lsl#32'
[^:]*:36: Error: shift amount should be a multiple of 16 at operand 2 -- `movz x0,2134,lsl#47'
[^:]*:37: Error: immediate value out of range 1 to 17 at operand 4 -- `sbfiz w0,w7,15,18'
[^:]*:38: Error: immediate value out of range 1 to 32 at operand 4 -- `sbfiz w0,w7,15,0'
[^:]*:39: Error: invalid shift amount at operand 3 -- `shll v1.4s,v2.4h,#15'
[^:]*:40: Error: invalid shift amount at operand 3 -- `shll v1.4s,v2.4h,#32'
[^:]*:41: Error: immediate value out of range 0 to 31 at operand 3 -- `shl v1.2s,v2.2s,32'
[^:]*:42: Error: immediate value out of range 1 to 8 at operand 3 -- `sqshrn2 v2.16b,v3.8h,#17'
[^:]*:43: Error: immediate value out of range 0 to 255 at operand 2 -- `movi v1.4h,256'
[^:]*:44: Error: immediate value out of range 0 to 255 at operand 2 -- `movi v1.4h,-1'
[^:]*:45: Error: invalid shift operator at operand 2 -- `movi v1.4h,255,msl#8'
[^:]*:46: Error: invalid value for immediate at operand 2 -- `movi d0,256'
[^:]*:47: Error: immediate value should be a multiple of 8 at operand 2 -- `movi v1.4h,255,lsl#7'
[^:]*:48: Error: immediate value out of range 0 to 8 at operand 2 -- `movi v1.4h,255,lsl#16'
[^:]*:49: Error: shift amount expected to be 0 or 16 at operand 2 -- `movi v2.2s,255,msl#0'
[^:]*:50: Error: shift amount expected to be 0 or 16 at operand 2 -- `movi v2.2s,255,msl#15'
[^:]*:51: Error: invalid floating-point constant at operand 2 -- `fmov v1.2s,1.01'
[^:]*:52: Error: invalid floating-point constant at operand 2 -- `fmov v1.2d,1.01'
[^:]*:53: Error: invalid floating-point constant at operand 2 -- `fmov s3,1.01'
[^:]*:54: Error: invalid floating-point constant at operand 2 -- `fmov d3,1.01'
[^:]*:55: Error: immediate zero expected at operand 2 -- `fcmp d0,#1.0'
[^:]*:56: Error: operand 2 should be a floating-point register -- `fcmp d0,x0'
[^:]*:57: Error: immediate zero expected at operand 3 -- `cmgt v0.4s,v2.4s,#1'
[^:]*:58: Error: unexpected characters following instruction at operand 2 -- `fmov d3,1.00,lsl#3'
[^:]*:59: Error: writeback value should be an immediate constant at operand 2 -- `st2 {v0.4s,v1.4s},\[sp\],sp'
[^:]*:60: Error: writeback value should be an immediate constant at operand 2 -- `st2 {v0.4s,v1.4s},\[sp\],zr'
[^:]*:61: Error: invalid shift for the register offset addressing mode at operand 2 -- `ldr q0,\[x0,w0,lsr#4\]'
[^:]*:62: Error: only 'LSL' shift is permitted at operand 3 -- `adds x1,sp,2134,uxtw#12'
[^:]*:63: Error: shift amount out of range 0 to 63 at operand 2 -- `movz x0,2134,lsl#64'
[^:]*:64: Error: operand 1 should be an integer register -- `adds sp,sp,2134,lsl#12'
[^:]*:65: Error: the optional immediate offset can only be 0 at operand 2 -- `ldxrb w2,\[x0,#1\]'
[^:]*:66: Error: invalid addressing mode at operand 2 -- `ldrb w0,x1,x2,sxtx'
[^:]*:67: Error: invalid shift amount at operand 2 -- `prfm PLDL3KEEP,\[x9,x15,sxtx#2\]'
[^:]*:68: Error: C0 - C15 expected at operand 3 -- `sysl x7,#1,C16,C30,#1'
[^:]*:69: Error: operand 4 should be a 4-bit opcode field named for historical reasons C0 - C15 -- `sysl x7,#1,C15,C77,#1'
[^:]*:70: Error: extending shift is not permitted at operand 3 -- `add x0,xzr,x7,uxtx#5'
[^:]*:71: Error: bad expression at operand 2 -- `mov x0,##5'
[^:]*:72: Error: unknown mnemonic `bad' -- `bad expression'
[^:]*:73: Error: unknown mnemonic `mockup' -- `mockup-op'
[^:]*:74: Error: comma expected between operands at operand 2 -- `orr x0. x0,#0xff,lsl#1'
[^:]*:75: Error: the specified relocation type is not allowed for MOVK at operand 2 -- `movk x1,#:abs_g1_s:s12'
[^:]*:76: Error: can't mix relocation modifier with explicit shift at operand 2 -- `movz x1,#:abs_g1_s:s12,lsl#16'
[^:]*:77: Error: register offset not allowed in pre-indexed addressing mode at operand 2 -- `prfm pldl3strm,\[sp,w0,sxtw#3\]!'
[^:]*:78: Error: immediate value out of range 0 to 31 at operand 1 -- `prfm 0x2f,LABEL1'
[^:]*:79: Error: immediate value out of range 0 to 15 at operand 1 -- `dmb #16'
[^:]*:80: Error: immediate value out of range 0 to 31 at operand 2 -- `tbz w0,#40,0x17c'
[^:]*:81: Error: invalid number of registers in the list; 2 registers are expected at operand 1 -- `st2 \{v4.2d,v5.2d,v6.2d\},\[x3\]'
[^:]*:82: Error: invalid register list at operand 1 -- `ld2 \{v1.4h,v0.4h\},\[x1\]'
[^:]*:83: Error: the specified option is not accepted in ISB at operand 1 -- `isb osh'
[^:]*:84: Error: invalid address at operand 2 -- `st2 \{v4.2d,v5.2d,v6.2d\},\\\[x3\\\]'
[^:]*:85: Error: immediate value should be a multiple of 4 at operand 3 -- `ldnp w7,w15,\[x3,#3\]'
[^:]*:86: Error: unexpected address writeback at operand 3 -- `stnp x7,x15,\[x3,#32\]!'
[^:]*:87: Error: immediate offset out of range -256 to 252 at operand 3 -- `ldnp w7,w15,\[x3,#256\]'
[^:]*:88: Error: shift is not permitted at operand 2 -- `movi v1.2d,4294967295,lsl#0'
[^:]*:89: Error: shift amount non-zero at operand 2 -- `movi v1.8b,97,lsl#8'

View File

@ -0,0 +1,89 @@
// diagnostic.s Test file for diagnostic quality.
.text
fmul, s0, s1, s2
fmul , s0, s1, s2
fmul , s0, s1, s2
b.random label1
fmull s0
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sys 1,c1,c3,3,
ext v0.8b, v1.8b, v2.8b, 8
ext v0.16b, v1.16b, v2.16b, 20
svc -1
svc 65536
ccmp w0, 32, 10, le
ccmp x0, -1, 10, le
tlbi alle3is, x0
tlbi vaale1is
tlbi vaale1is x0
msr spsel, 3
fcvtzu x15, d31, #66
scvtf s0, w0, 33
scvtf s0, w0, 0
smlal v0.4s, v31.4h, v16.h[1]
smlal v0.4s, v31.4h, v15.h[8]
add sp, x0, x7, lsr #2
add x0, x0, x7, uxtx #5
add x0, xzr, x7, ror #5
add w0, wzr, w7, asr #32
st2 {v0.4s, v1.4s}, [sp], #24
ldr q0, [x0, w0, uxtw #5]
st2 {v0.4s, v1.4s, v2.4s, v3.4s}, [sp], #64
adds x1, sp, 2134, lsl #4
movz w0, 2134, lsl #8
movz w0, 2134, lsl #32
movz x0, 2134, lsl #47
sbfiz w0, w7, 15, 18
sbfiz w0, w7, 15, 0
shll v1.4s, v2.4h, #15
shll v1.4s, v2.4h, #32
shl v1.2s, v2.2s, 32
sqshrn2 v2.16b, v3.8h, #17
movi v1.4h, 256
movi v1.4h, -1
movi v1.4h, 255, msl #8
movi d0, 256
movi v1.4h, 255, lsl #7
movi v1.4h, 255, lsl #16
movi v2.2s, 255, msl #0
movi v2.2s, 255, msl #15
fmov v1.2s, 1.01
fmov v1.2d, 1.01
fmov s3, 1.01
fmov d3, 1.01
fcmp d0, #1.0
fcmp d0, x0
cmgt v0.4s, v2.4s, #1
fmov d3, 1.00, lsl #3
st2 {v0.4s, v1.4s}, [sp], sp
st2 {v0.4s, v1.4s}, [sp], zr
ldr q0, [x0, w0, lsr #4]
adds x1, sp, 2134, uxtw #12
movz x0, 2134, lsl #64
adds sp, sp, 2134, lsl #12
ldxrb w2, [x0, #1]
ldrb w0, x1, x2, sxtx
prfm PLDL3KEEP, [x9, x15, sxtx #2]
sysl x7, #1, C16, C30, #1
sysl x7, #1, C15, C77, #1
add x0, xzr, x7, uxtx #5
mov x0, ##5
bad expression
mockup-op
orr x0. x0, #0xff, lsl #1
movk x1, #:abs_g1_s:s12
movz x1, #:abs_g1_s:s12, lsl #16
prfm pldl3strm, [sp, w0, sxtw #3]!
prfm 0x2f, LABEL1
dmb #16
tbz w0, #40, 0x17c
st2 {v4.2d, v5.2d, v6.2d}, [x3]
ld2 {v1.4h, v0.4h}, [x1]
isb osh
st2 {v4.2d, v5.2d, v6.2d}, \[x3\]
ldnp w7, w15, [x3, #3]
stnp x7, x15, [x3, #32]!
ldnp w7, w15, [x3, #256]
movi v1.2d, 4294967295, lsl #0
movi v1.8b, 97, lsl #8

View File

@ -0,0 +1,25 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 1e2f08e0 fmul s0, s7, s15
4: 1e2f18e0 fdiv s0, s7, s15
8: 1e2f28e0 fadd s0, s7, s15
c: 1e2f38e0 fsub s0, s7, s15
10: 1e2f48e0 fmax s0, s7, s15
14: 1e2f58e0 fmin s0, s7, s15
18: 1e2f68e0 fmaxnm s0, s7, s15
1c: 1e2f78e0 fminnm s0, s7, s15
20: 1e2f88e0 fnmul s0, s7, s15
24: 1e6f08e0 fmul d0, d7, d15
28: 1e6f18e0 fdiv d0, d7, d15
2c: 1e6f28e0 fadd d0, d7, d15
30: 1e6f38e0 fsub d0, d7, d15
34: 1e6f48e0 fmax d0, d7, d15
38: 1e6f58e0 fmin d0, d7, d15
3c: 1e6f68e0 fmaxnm d0, d7, d15
40: 1e6f78e0 fminnm d0, d7, d15
44: 1e6f88e0 fnmul d0, d7, d15

View File

@ -0,0 +1,32 @@
/* floatdp2.s Test file for AArch64 Floating-point data-processing
(2 source) instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro floatdp2 op, type
\op \type\()0, \type\()7, \type\()15
.endm
.text
.irp type, S, D
.irp op, FMUL, FDIV, FADD, FSUB, FMAX, FMIN, FMAXNM, FMINNM, FNMUL
floatdp2 \op, \type
.endr
.endr

View File

@ -0,0 +1,829 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 1e2000e7 fcvtns w7, s7
4: 9e2000e7 fcvtns x7, s7
8: 1e2100e7 fcvtnu w7, s7
c: 9e2100e7 fcvtnu x7, s7
10: 1e2800e7 fcvtps w7, s7
14: 9e2800e7 fcvtps x7, s7
18: 1e2900e7 fcvtpu w7, s7
1c: 9e2900e7 fcvtpu x7, s7
20: 1e3000e7 fcvtms w7, s7
24: 9e3000e7 fcvtms x7, s7
28: 1e3100e7 fcvtmu w7, s7
2c: 9e3100e7 fcvtmu x7, s7
30: 1e3800e7 fcvtzs w7, s7
34: 9e3800e7 fcvtzs x7, s7
38: 1e3900e7 fcvtzu w7, s7
3c: 9e3900e7 fcvtzu x7, s7
40: 1e2200e7 scvtf s7, w7
44: 9e2200e7 scvtf s7, x7
48: 1e2300e7 ucvtf s7, w7
4c: 9e2300e7 ucvtf s7, x7
50: 1e2400e7 fcvtas w7, s7
54: 9e2400e7 fcvtas x7, s7
58: 1e2500e7 fcvtau w7, s7
5c: 9e2500e7 fcvtau x7, s7
60: 1e2600e7 fmov w7, s7
64: 1e2700e7 fmov s7, w7
68: 1e6000e7 fcvtns w7, d7
6c: 9e6000e7 fcvtns x7, d7
70: 1e6100e7 fcvtnu w7, d7
74: 9e6100e7 fcvtnu x7, d7
78: 1e6800e7 fcvtps w7, d7
7c: 9e6800e7 fcvtps x7, d7
80: 1e6900e7 fcvtpu w7, d7
84: 9e6900e7 fcvtpu x7, d7
88: 1e7000e7 fcvtms w7, d7
8c: 9e7000e7 fcvtms x7, d7
90: 1e7100e7 fcvtmu w7, d7
94: 9e7100e7 fcvtmu x7, d7
98: 1e7800e7 fcvtzs w7, d7
9c: 9e7800e7 fcvtzs x7, d7
a0: 1e7900e7 fcvtzu w7, d7
a4: 9e7900e7 fcvtzu x7, d7
a8: 1e6200e7 scvtf d7, w7
ac: 9e6200e7 scvtf d7, x7
b0: 1e6300e7 ucvtf d7, w7
b4: 9e6300e7 ucvtf d7, x7
b8: 1e6400e7 fcvtas w7, d7
bc: 9e6400e7 fcvtas x7, d7
c0: 1e6500e7 fcvtau w7, d7
c4: 9e6500e7 fcvtau x7, d7
c8: 1e2600e7 fmov w7, s7
cc: 1e2700e7 fmov s7, w7
d0: 1e18fce7 fcvtzs w7, s7, #1
d4: 9e18fce7 fcvtzs x7, s7, #1
d8: 1e19fce7 fcvtzu w7, s7, #1
dc: 9e19fce7 fcvtzu x7, s7, #1
e0: 1e02fce7 scvtf s7, w7, #1
e4: 9e02fce7 scvtf s7, x7, #1
e8: 1e03fce7 ucvtf s7, w7, #1
ec: 9e03fce7 ucvtf s7, x7, #1
f0: 1e58fce7 fcvtzs w7, d7, #1
f4: 9e58fce7 fcvtzs x7, d7, #1
f8: 1e59fce7 fcvtzu w7, d7, #1
fc: 9e59fce7 fcvtzu x7, d7, #1
100: 1e42fce7 scvtf d7, w7, #1
104: 9e42fce7 scvtf d7, x7, #1
108: 1e43fce7 ucvtf d7, w7, #1
10c: 9e43fce7 ucvtf d7, x7, #1
110: 1e18f8e7 fcvtzs w7, s7, #2
114: 9e18f8e7 fcvtzs x7, s7, #2
118: 1e19f8e7 fcvtzu w7, s7, #2
11c: 9e19f8e7 fcvtzu x7, s7, #2
120: 1e02f8e7 scvtf s7, w7, #2
124: 9e02f8e7 scvtf s7, x7, #2
128: 1e03f8e7 ucvtf s7, w7, #2
12c: 9e03f8e7 ucvtf s7, x7, #2
130: 1e58f8e7 fcvtzs w7, d7, #2
134: 9e58f8e7 fcvtzs x7, d7, #2
138: 1e59f8e7 fcvtzu w7, d7, #2
13c: 9e59f8e7 fcvtzu x7, d7, #2
140: 1e42f8e7 scvtf d7, w7, #2
144: 9e42f8e7 scvtf d7, x7, #2
148: 1e43f8e7 ucvtf d7, w7, #2
14c: 9e43f8e7 ucvtf d7, x7, #2
150: 1e18f4e7 fcvtzs w7, s7, #3
154: 9e18f4e7 fcvtzs x7, s7, #3
158: 1e19f4e7 fcvtzu w7, s7, #3
15c: 9e19f4e7 fcvtzu x7, s7, #3
160: 1e02f4e7 scvtf s7, w7, #3
164: 9e02f4e7 scvtf s7, x7, #3
168: 1e03f4e7 ucvtf s7, w7, #3
16c: 9e03f4e7 ucvtf s7, x7, #3
170: 1e58f4e7 fcvtzs w7, d7, #3
174: 9e58f4e7 fcvtzs x7, d7, #3
178: 1e59f4e7 fcvtzu w7, d7, #3
17c: 9e59f4e7 fcvtzu x7, d7, #3
180: 1e42f4e7 scvtf d7, w7, #3
184: 9e42f4e7 scvtf d7, x7, #3
188: 1e43f4e7 ucvtf d7, w7, #3
18c: 9e43f4e7 ucvtf d7, x7, #3
190: 1e18f0e7 fcvtzs w7, s7, #4
194: 9e18f0e7 fcvtzs x7, s7, #4
198: 1e19f0e7 fcvtzu w7, s7, #4
19c: 9e19f0e7 fcvtzu x7, s7, #4
1a0: 1e02f0e7 scvtf s7, w7, #4
1a4: 9e02f0e7 scvtf s7, x7, #4
1a8: 1e03f0e7 ucvtf s7, w7, #4
1ac: 9e03f0e7 ucvtf s7, x7, #4
1b0: 1e58f0e7 fcvtzs w7, d7, #4
1b4: 9e58f0e7 fcvtzs x7, d7, #4
1b8: 1e59f0e7 fcvtzu w7, d7, #4
1bc: 9e59f0e7 fcvtzu x7, d7, #4
1c0: 1e42f0e7 scvtf d7, w7, #4
1c4: 9e42f0e7 scvtf d7, x7, #4
1c8: 1e43f0e7 ucvtf d7, w7, #4
1cc: 9e43f0e7 ucvtf d7, x7, #4
1d0: 1e18ece7 fcvtzs w7, s7, #5
1d4: 9e18ece7 fcvtzs x7, s7, #5
1d8: 1e19ece7 fcvtzu w7, s7, #5
1dc: 9e19ece7 fcvtzu x7, s7, #5
1e0: 1e02ece7 scvtf s7, w7, #5
1e4: 9e02ece7 scvtf s7, x7, #5
1e8: 1e03ece7 ucvtf s7, w7, #5
1ec: 9e03ece7 ucvtf s7, x7, #5
1f0: 1e58ece7 fcvtzs w7, d7, #5
1f4: 9e58ece7 fcvtzs x7, d7, #5
1f8: 1e59ece7 fcvtzu w7, d7, #5
1fc: 9e59ece7 fcvtzu x7, d7, #5
200: 1e42ece7 scvtf d7, w7, #5
204: 9e42ece7 scvtf d7, x7, #5
208: 1e43ece7 ucvtf d7, w7, #5
20c: 9e43ece7 ucvtf d7, x7, #5
210: 1e18e8e7 fcvtzs w7, s7, #6
214: 9e18e8e7 fcvtzs x7, s7, #6
218: 1e19e8e7 fcvtzu w7, s7, #6
21c: 9e19e8e7 fcvtzu x7, s7, #6
220: 1e02e8e7 scvtf s7, w7, #6
224: 9e02e8e7 scvtf s7, x7, #6
228: 1e03e8e7 ucvtf s7, w7, #6
22c: 9e03e8e7 ucvtf s7, x7, #6
230: 1e58e8e7 fcvtzs w7, d7, #6
234: 9e58e8e7 fcvtzs x7, d7, #6
238: 1e59e8e7 fcvtzu w7, d7, #6
23c: 9e59e8e7 fcvtzu x7, d7, #6
240: 1e42e8e7 scvtf d7, w7, #6
244: 9e42e8e7 scvtf d7, x7, #6
248: 1e43e8e7 ucvtf d7, w7, #6
24c: 9e43e8e7 ucvtf d7, x7, #6
250: 1e18e4e7 fcvtzs w7, s7, #7
254: 9e18e4e7 fcvtzs x7, s7, #7
258: 1e19e4e7 fcvtzu w7, s7, #7
25c: 9e19e4e7 fcvtzu x7, s7, #7
260: 1e02e4e7 scvtf s7, w7, #7
264: 9e02e4e7 scvtf s7, x7, #7
268: 1e03e4e7 ucvtf s7, w7, #7
26c: 9e03e4e7 ucvtf s7, x7, #7
270: 1e58e4e7 fcvtzs w7, d7, #7
274: 9e58e4e7 fcvtzs x7, d7, #7
278: 1e59e4e7 fcvtzu w7, d7, #7
27c: 9e59e4e7 fcvtzu x7, d7, #7
280: 1e42e4e7 scvtf d7, w7, #7
284: 9e42e4e7 scvtf d7, x7, #7
288: 1e43e4e7 ucvtf d7, w7, #7
28c: 9e43e4e7 ucvtf d7, x7, #7
290: 1e18e0e7 fcvtzs w7, s7, #8
294: 9e18e0e7 fcvtzs x7, s7, #8
298: 1e19e0e7 fcvtzu w7, s7, #8
29c: 9e19e0e7 fcvtzu x7, s7, #8
2a0: 1e02e0e7 scvtf s7, w7, #8
2a4: 9e02e0e7 scvtf s7, x7, #8
2a8: 1e03e0e7 ucvtf s7, w7, #8
2ac: 9e03e0e7 ucvtf s7, x7, #8
2b0: 1e58e0e7 fcvtzs w7, d7, #8
2b4: 9e58e0e7 fcvtzs x7, d7, #8
2b8: 1e59e0e7 fcvtzu w7, d7, #8
2bc: 9e59e0e7 fcvtzu x7, d7, #8
2c0: 1e42e0e7 scvtf d7, w7, #8
2c4: 9e42e0e7 scvtf d7, x7, #8
2c8: 1e43e0e7 ucvtf d7, w7, #8
2cc: 9e43e0e7 ucvtf d7, x7, #8
2d0: 1e18dce7 fcvtzs w7, s7, #9
2d4: 9e18dce7 fcvtzs x7, s7, #9
2d8: 1e19dce7 fcvtzu w7, s7, #9
2dc: 9e19dce7 fcvtzu x7, s7, #9
2e0: 1e02dce7 scvtf s7, w7, #9
2e4: 9e02dce7 scvtf s7, x7, #9
2e8: 1e03dce7 ucvtf s7, w7, #9
2ec: 9e03dce7 ucvtf s7, x7, #9
2f0: 1e58dce7 fcvtzs w7, d7, #9
2f4: 9e58dce7 fcvtzs x7, d7, #9
2f8: 1e59dce7 fcvtzu w7, d7, #9
2fc: 9e59dce7 fcvtzu x7, d7, #9
300: 1e42dce7 scvtf d7, w7, #9
304: 9e42dce7 scvtf d7, x7, #9
308: 1e43dce7 ucvtf d7, w7, #9
30c: 9e43dce7 ucvtf d7, x7, #9
310: 1e18d8e7 fcvtzs w7, s7, #10
314: 9e18d8e7 fcvtzs x7, s7, #10
318: 1e19d8e7 fcvtzu w7, s7, #10
31c: 9e19d8e7 fcvtzu x7, s7, #10
320: 1e02d8e7 scvtf s7, w7, #10
324: 9e02d8e7 scvtf s7, x7, #10
328: 1e03d8e7 ucvtf s7, w7, #10
32c: 9e03d8e7 ucvtf s7, x7, #10
330: 1e58d8e7 fcvtzs w7, d7, #10
334: 9e58d8e7 fcvtzs x7, d7, #10
338: 1e59d8e7 fcvtzu w7, d7, #10
33c: 9e59d8e7 fcvtzu x7, d7, #10
340: 1e42d8e7 scvtf d7, w7, #10
344: 9e42d8e7 scvtf d7, x7, #10
348: 1e43d8e7 ucvtf d7, w7, #10
34c: 9e43d8e7 ucvtf d7, x7, #10
350: 1e18d4e7 fcvtzs w7, s7, #11
354: 9e18d4e7 fcvtzs x7, s7, #11
358: 1e19d4e7 fcvtzu w7, s7, #11
35c: 9e19d4e7 fcvtzu x7, s7, #11
360: 1e02d4e7 scvtf s7, w7, #11
364: 9e02d4e7 scvtf s7, x7, #11
368: 1e03d4e7 ucvtf s7, w7, #11
36c: 9e03d4e7 ucvtf s7, x7, #11
370: 1e58d4e7 fcvtzs w7, d7, #11
374: 9e58d4e7 fcvtzs x7, d7, #11
378: 1e59d4e7 fcvtzu w7, d7, #11
37c: 9e59d4e7 fcvtzu x7, d7, #11
380: 1e42d4e7 scvtf d7, w7, #11
384: 9e42d4e7 scvtf d7, x7, #11
388: 1e43d4e7 ucvtf d7, w7, #11
38c: 9e43d4e7 ucvtf d7, x7, #11
390: 1e18d0e7 fcvtzs w7, s7, #12
394: 9e18d0e7 fcvtzs x7, s7, #12
398: 1e19d0e7 fcvtzu w7, s7, #12
39c: 9e19d0e7 fcvtzu x7, s7, #12
3a0: 1e02d0e7 scvtf s7, w7, #12
3a4: 9e02d0e7 scvtf s7, x7, #12
3a8: 1e03d0e7 ucvtf s7, w7, #12
3ac: 9e03d0e7 ucvtf s7, x7, #12
3b0: 1e58d0e7 fcvtzs w7, d7, #12
3b4: 9e58d0e7 fcvtzs x7, d7, #12
3b8: 1e59d0e7 fcvtzu w7, d7, #12
3bc: 9e59d0e7 fcvtzu x7, d7, #12
3c0: 1e42d0e7 scvtf d7, w7, #12
3c4: 9e42d0e7 scvtf d7, x7, #12
3c8: 1e43d0e7 ucvtf d7, w7, #12
3cc: 9e43d0e7 ucvtf d7, x7, #12
3d0: 1e18cce7 fcvtzs w7, s7, #13
3d4: 9e18cce7 fcvtzs x7, s7, #13
3d8: 1e19cce7 fcvtzu w7, s7, #13
3dc: 9e19cce7 fcvtzu x7, s7, #13
3e0: 1e02cce7 scvtf s7, w7, #13
3e4: 9e02cce7 scvtf s7, x7, #13
3e8: 1e03cce7 ucvtf s7, w7, #13
3ec: 9e03cce7 ucvtf s7, x7, #13
3f0: 1e58cce7 fcvtzs w7, d7, #13
3f4: 9e58cce7 fcvtzs x7, d7, #13
3f8: 1e59cce7 fcvtzu w7, d7, #13
3fc: 9e59cce7 fcvtzu x7, d7, #13
400: 1e42cce7 scvtf d7, w7, #13
404: 9e42cce7 scvtf d7, x7, #13
408: 1e43cce7 ucvtf d7, w7, #13
40c: 9e43cce7 ucvtf d7, x7, #13
410: 1e18c8e7 fcvtzs w7, s7, #14
414: 9e18c8e7 fcvtzs x7, s7, #14
418: 1e19c8e7 fcvtzu w7, s7, #14
41c: 9e19c8e7 fcvtzu x7, s7, #14
420: 1e02c8e7 scvtf s7, w7, #14
424: 9e02c8e7 scvtf s7, x7, #14
428: 1e03c8e7 ucvtf s7, w7, #14
42c: 9e03c8e7 ucvtf s7, x7, #14
430: 1e58c8e7 fcvtzs w7, d7, #14
434: 9e58c8e7 fcvtzs x7, d7, #14
438: 1e59c8e7 fcvtzu w7, d7, #14
43c: 9e59c8e7 fcvtzu x7, d7, #14
440: 1e42c8e7 scvtf d7, w7, #14
444: 9e42c8e7 scvtf d7, x7, #14
448: 1e43c8e7 ucvtf d7, w7, #14
44c: 9e43c8e7 ucvtf d7, x7, #14
450: 1e18c4e7 fcvtzs w7, s7, #15
454: 9e18c4e7 fcvtzs x7, s7, #15
458: 1e19c4e7 fcvtzu w7, s7, #15
45c: 9e19c4e7 fcvtzu x7, s7, #15
460: 1e02c4e7 scvtf s7, w7, #15
464: 9e02c4e7 scvtf s7, x7, #15
468: 1e03c4e7 ucvtf s7, w7, #15
46c: 9e03c4e7 ucvtf s7, x7, #15
470: 1e58c4e7 fcvtzs w7, d7, #15
474: 9e58c4e7 fcvtzs x7, d7, #15
478: 1e59c4e7 fcvtzu w7, d7, #15
47c: 9e59c4e7 fcvtzu x7, d7, #15
480: 1e42c4e7 scvtf d7, w7, #15
484: 9e42c4e7 scvtf d7, x7, #15
488: 1e43c4e7 ucvtf d7, w7, #15
48c: 9e43c4e7 ucvtf d7, x7, #15
490: 1e18c0e7 fcvtzs w7, s7, #16
494: 9e18c0e7 fcvtzs x7, s7, #16
498: 1e19c0e7 fcvtzu w7, s7, #16
49c: 9e19c0e7 fcvtzu x7, s7, #16
4a0: 1e02c0e7 scvtf s7, w7, #16
4a4: 9e02c0e7 scvtf s7, x7, #16
4a8: 1e03c0e7 ucvtf s7, w7, #16
4ac: 9e03c0e7 ucvtf s7, x7, #16
4b0: 1e58c0e7 fcvtzs w7, d7, #16
4b4: 9e58c0e7 fcvtzs x7, d7, #16
4b8: 1e59c0e7 fcvtzu w7, d7, #16
4bc: 9e59c0e7 fcvtzu x7, d7, #16
4c0: 1e42c0e7 scvtf d7, w7, #16
4c4: 9e42c0e7 scvtf d7, x7, #16
4c8: 1e43c0e7 ucvtf d7, w7, #16
4cc: 9e43c0e7 ucvtf d7, x7, #16
4d0: 1e18bce7 fcvtzs w7, s7, #17
4d4: 9e18bce7 fcvtzs x7, s7, #17
4d8: 1e19bce7 fcvtzu w7, s7, #17
4dc: 9e19bce7 fcvtzu x7, s7, #17
4e0: 1e02bce7 scvtf s7, w7, #17
4e4: 9e02bce7 scvtf s7, x7, #17
4e8: 1e03bce7 ucvtf s7, w7, #17
4ec: 9e03bce7 ucvtf s7, x7, #17
4f0: 1e58bce7 fcvtzs w7, d7, #17
4f4: 9e58bce7 fcvtzs x7, d7, #17
4f8: 1e59bce7 fcvtzu w7, d7, #17
4fc: 9e59bce7 fcvtzu x7, d7, #17
500: 1e42bce7 scvtf d7, w7, #17
504: 9e42bce7 scvtf d7, x7, #17
508: 1e43bce7 ucvtf d7, w7, #17
50c: 9e43bce7 ucvtf d7, x7, #17
510: 1e18b8e7 fcvtzs w7, s7, #18
514: 9e18b8e7 fcvtzs x7, s7, #18
518: 1e19b8e7 fcvtzu w7, s7, #18
51c: 9e19b8e7 fcvtzu x7, s7, #18
520: 1e02b8e7 scvtf s7, w7, #18
524: 9e02b8e7 scvtf s7, x7, #18
528: 1e03b8e7 ucvtf s7, w7, #18
52c: 9e03b8e7 ucvtf s7, x7, #18
530: 1e58b8e7 fcvtzs w7, d7, #18
534: 9e58b8e7 fcvtzs x7, d7, #18
538: 1e59b8e7 fcvtzu w7, d7, #18
53c: 9e59b8e7 fcvtzu x7, d7, #18
540: 1e42b8e7 scvtf d7, w7, #18
544: 9e42b8e7 scvtf d7, x7, #18
548: 1e43b8e7 ucvtf d7, w7, #18
54c: 9e43b8e7 ucvtf d7, x7, #18
550: 1e18b4e7 fcvtzs w7, s7, #19
554: 9e18b4e7 fcvtzs x7, s7, #19
558: 1e19b4e7 fcvtzu w7, s7, #19
55c: 9e19b4e7 fcvtzu x7, s7, #19
560: 1e02b4e7 scvtf s7, w7, #19
564: 9e02b4e7 scvtf s7, x7, #19
568: 1e03b4e7 ucvtf s7, w7, #19
56c: 9e03b4e7 ucvtf s7, x7, #19
570: 1e58b4e7 fcvtzs w7, d7, #19
574: 9e58b4e7 fcvtzs x7, d7, #19
578: 1e59b4e7 fcvtzu w7, d7, #19
57c: 9e59b4e7 fcvtzu x7, d7, #19
580: 1e42b4e7 scvtf d7, w7, #19
584: 9e42b4e7 scvtf d7, x7, #19
588: 1e43b4e7 ucvtf d7, w7, #19
58c: 9e43b4e7 ucvtf d7, x7, #19
590: 1e18b0e7 fcvtzs w7, s7, #20
594: 9e18b0e7 fcvtzs x7, s7, #20
598: 1e19b0e7 fcvtzu w7, s7, #20
59c: 9e19b0e7 fcvtzu x7, s7, #20
5a0: 1e02b0e7 scvtf s7, w7, #20
5a4: 9e02b0e7 scvtf s7, x7, #20
5a8: 1e03b0e7 ucvtf s7, w7, #20
5ac: 9e03b0e7 ucvtf s7, x7, #20
5b0: 1e58b0e7 fcvtzs w7, d7, #20
5b4: 9e58b0e7 fcvtzs x7, d7, #20
5b8: 1e59b0e7 fcvtzu w7, d7, #20
5bc: 9e59b0e7 fcvtzu x7, d7, #20
5c0: 1e42b0e7 scvtf d7, w7, #20
5c4: 9e42b0e7 scvtf d7, x7, #20
5c8: 1e43b0e7 ucvtf d7, w7, #20
5cc: 9e43b0e7 ucvtf d7, x7, #20
5d0: 1e18ace7 fcvtzs w7, s7, #21
5d4: 9e18ace7 fcvtzs x7, s7, #21
5d8: 1e19ace7 fcvtzu w7, s7, #21
5dc: 9e19ace7 fcvtzu x7, s7, #21
5e0: 1e02ace7 scvtf s7, w7, #21
5e4: 9e02ace7 scvtf s7, x7, #21
5e8: 1e03ace7 ucvtf s7, w7, #21
5ec: 9e03ace7 ucvtf s7, x7, #21
5f0: 1e58ace7 fcvtzs w7, d7, #21
5f4: 9e58ace7 fcvtzs x7, d7, #21
5f8: 1e59ace7 fcvtzu w7, d7, #21
5fc: 9e59ace7 fcvtzu x7, d7, #21
600: 1e42ace7 scvtf d7, w7, #21
604: 9e42ace7 scvtf d7, x7, #21
608: 1e43ace7 ucvtf d7, w7, #21
60c: 9e43ace7 ucvtf d7, x7, #21
610: 1e18a8e7 fcvtzs w7, s7, #22
614: 9e18a8e7 fcvtzs x7, s7, #22
618: 1e19a8e7 fcvtzu w7, s7, #22
61c: 9e19a8e7 fcvtzu x7, s7, #22
620: 1e02a8e7 scvtf s7, w7, #22
624: 9e02a8e7 scvtf s7, x7, #22
628: 1e03a8e7 ucvtf s7, w7, #22
62c: 9e03a8e7 ucvtf s7, x7, #22
630: 1e58a8e7 fcvtzs w7, d7, #22
634: 9e58a8e7 fcvtzs x7, d7, #22
638: 1e59a8e7 fcvtzu w7, d7, #22
63c: 9e59a8e7 fcvtzu x7, d7, #22
640: 1e42a8e7 scvtf d7, w7, #22
644: 9e42a8e7 scvtf d7, x7, #22
648: 1e43a8e7 ucvtf d7, w7, #22
64c: 9e43a8e7 ucvtf d7, x7, #22
650: 1e18a4e7 fcvtzs w7, s7, #23
654: 9e18a4e7 fcvtzs x7, s7, #23
658: 1e19a4e7 fcvtzu w7, s7, #23
65c: 9e19a4e7 fcvtzu x7, s7, #23
660: 1e02a4e7 scvtf s7, w7, #23
664: 9e02a4e7 scvtf s7, x7, #23
668: 1e03a4e7 ucvtf s7, w7, #23
66c: 9e03a4e7 ucvtf s7, x7, #23
670: 1e58a4e7 fcvtzs w7, d7, #23
674: 9e58a4e7 fcvtzs x7, d7, #23
678: 1e59a4e7 fcvtzu w7, d7, #23
67c: 9e59a4e7 fcvtzu x7, d7, #23
680: 1e42a4e7 scvtf d7, w7, #23
684: 9e42a4e7 scvtf d7, x7, #23
688: 1e43a4e7 ucvtf d7, w7, #23
68c: 9e43a4e7 ucvtf d7, x7, #23
690: 1e18a0e7 fcvtzs w7, s7, #24
694: 9e18a0e7 fcvtzs x7, s7, #24
698: 1e19a0e7 fcvtzu w7, s7, #24
69c: 9e19a0e7 fcvtzu x7, s7, #24
6a0: 1e02a0e7 scvtf s7, w7, #24
6a4: 9e02a0e7 scvtf s7, x7, #24
6a8: 1e03a0e7 ucvtf s7, w7, #24
6ac: 9e03a0e7 ucvtf s7, x7, #24
6b0: 1e58a0e7 fcvtzs w7, d7, #24
6b4: 9e58a0e7 fcvtzs x7, d7, #24
6b8: 1e59a0e7 fcvtzu w7, d7, #24
6bc: 9e59a0e7 fcvtzu x7, d7, #24
6c0: 1e42a0e7 scvtf d7, w7, #24
6c4: 9e42a0e7 scvtf d7, x7, #24
6c8: 1e43a0e7 ucvtf d7, w7, #24
6cc: 9e43a0e7 ucvtf d7, x7, #24
6d0: 1e189ce7 fcvtzs w7, s7, #25
6d4: 9e189ce7 fcvtzs x7, s7, #25
6d8: 1e199ce7 fcvtzu w7, s7, #25
6dc: 9e199ce7 fcvtzu x7, s7, #25
6e0: 1e029ce7 scvtf s7, w7, #25
6e4: 9e029ce7 scvtf s7, x7, #25
6e8: 1e039ce7 ucvtf s7, w7, #25
6ec: 9e039ce7 ucvtf s7, x7, #25
6f0: 1e589ce7 fcvtzs w7, d7, #25
6f4: 9e589ce7 fcvtzs x7, d7, #25
6f8: 1e599ce7 fcvtzu w7, d7, #25
6fc: 9e599ce7 fcvtzu x7, d7, #25
700: 1e429ce7 scvtf d7, w7, #25
704: 9e429ce7 scvtf d7, x7, #25
708: 1e439ce7 ucvtf d7, w7, #25
70c: 9e439ce7 ucvtf d7, x7, #25
710: 1e1898e7 fcvtzs w7, s7, #26
714: 9e1898e7 fcvtzs x7, s7, #26
718: 1e1998e7 fcvtzu w7, s7, #26
71c: 9e1998e7 fcvtzu x7, s7, #26
720: 1e0298e7 scvtf s7, w7, #26
724: 9e0298e7 scvtf s7, x7, #26
728: 1e0398e7 ucvtf s7, w7, #26
72c: 9e0398e7 ucvtf s7, x7, #26
730: 1e5898e7 fcvtzs w7, d7, #26
734: 9e5898e7 fcvtzs x7, d7, #26
738: 1e5998e7 fcvtzu w7, d7, #26
73c: 9e5998e7 fcvtzu x7, d7, #26
740: 1e4298e7 scvtf d7, w7, #26
744: 9e4298e7 scvtf d7, x7, #26
748: 1e4398e7 ucvtf d7, w7, #26
74c: 9e4398e7 ucvtf d7, x7, #26
750: 1e1894e7 fcvtzs w7, s7, #27
754: 9e1894e7 fcvtzs x7, s7, #27
758: 1e1994e7 fcvtzu w7, s7, #27
75c: 9e1994e7 fcvtzu x7, s7, #27
760: 1e0294e7 scvtf s7, w7, #27
764: 9e0294e7 scvtf s7, x7, #27
768: 1e0394e7 ucvtf s7, w7, #27
76c: 9e0394e7 ucvtf s7, x7, #27
770: 1e5894e7 fcvtzs w7, d7, #27
774: 9e5894e7 fcvtzs x7, d7, #27
778: 1e5994e7 fcvtzu w7, d7, #27
77c: 9e5994e7 fcvtzu x7, d7, #27
780: 1e4294e7 scvtf d7, w7, #27
784: 9e4294e7 scvtf d7, x7, #27
788: 1e4394e7 ucvtf d7, w7, #27
78c: 9e4394e7 ucvtf d7, x7, #27
790: 1e1890e7 fcvtzs w7, s7, #28
794: 9e1890e7 fcvtzs x7, s7, #28
798: 1e1990e7 fcvtzu w7, s7, #28
79c: 9e1990e7 fcvtzu x7, s7, #28
7a0: 1e0290e7 scvtf s7, w7, #28
7a4: 9e0290e7 scvtf s7, x7, #28
7a8: 1e0390e7 ucvtf s7, w7, #28
7ac: 9e0390e7 ucvtf s7, x7, #28
7b0: 1e5890e7 fcvtzs w7, d7, #28
7b4: 9e5890e7 fcvtzs x7, d7, #28
7b8: 1e5990e7 fcvtzu w7, d7, #28
7bc: 9e5990e7 fcvtzu x7, d7, #28
7c0: 1e4290e7 scvtf d7, w7, #28
7c4: 9e4290e7 scvtf d7, x7, #28
7c8: 1e4390e7 ucvtf d7, w7, #28
7cc: 9e4390e7 ucvtf d7, x7, #28
7d0: 1e188ce7 fcvtzs w7, s7, #29
7d4: 9e188ce7 fcvtzs x7, s7, #29
7d8: 1e198ce7 fcvtzu w7, s7, #29
7dc: 9e198ce7 fcvtzu x7, s7, #29
7e0: 1e028ce7 scvtf s7, w7, #29
7e4: 9e028ce7 scvtf s7, x7, #29
7e8: 1e038ce7 ucvtf s7, w7, #29
7ec: 9e038ce7 ucvtf s7, x7, #29
7f0: 1e588ce7 fcvtzs w7, d7, #29
7f4: 9e588ce7 fcvtzs x7, d7, #29
7f8: 1e598ce7 fcvtzu w7, d7, #29
7fc: 9e598ce7 fcvtzu x7, d7, #29
800: 1e428ce7 scvtf d7, w7, #29
804: 9e428ce7 scvtf d7, x7, #29
808: 1e438ce7 ucvtf d7, w7, #29
80c: 9e438ce7 ucvtf d7, x7, #29
810: 1e1888e7 fcvtzs w7, s7, #30
814: 9e1888e7 fcvtzs x7, s7, #30
818: 1e1988e7 fcvtzu w7, s7, #30
81c: 9e1988e7 fcvtzu x7, s7, #30
820: 1e0288e7 scvtf s7, w7, #30
824: 9e0288e7 scvtf s7, x7, #30
828: 1e0388e7 ucvtf s7, w7, #30
82c: 9e0388e7 ucvtf s7, x7, #30
830: 1e5888e7 fcvtzs w7, d7, #30
834: 9e5888e7 fcvtzs x7, d7, #30
838: 1e5988e7 fcvtzu w7, d7, #30
83c: 9e5988e7 fcvtzu x7, d7, #30
840: 1e4288e7 scvtf d7, w7, #30
844: 9e4288e7 scvtf d7, x7, #30
848: 1e4388e7 ucvtf d7, w7, #30
84c: 9e4388e7 ucvtf d7, x7, #30
850: 1e1884e7 fcvtzs w7, s7, #31
854: 9e1884e7 fcvtzs x7, s7, #31
858: 1e1984e7 fcvtzu w7, s7, #31
85c: 9e1984e7 fcvtzu x7, s7, #31
860: 1e0284e7 scvtf s7, w7, #31
864: 9e0284e7 scvtf s7, x7, #31
868: 1e0384e7 ucvtf s7, w7, #31
86c: 9e0384e7 ucvtf s7, x7, #31
870: 1e5884e7 fcvtzs w7, d7, #31
874: 9e5884e7 fcvtzs x7, d7, #31
878: 1e5984e7 fcvtzu w7, d7, #31
87c: 9e5984e7 fcvtzu x7, d7, #31
880: 1e4284e7 scvtf d7, w7, #31
884: 9e4284e7 scvtf d7, x7, #31
888: 1e4384e7 ucvtf d7, w7, #31
88c: 9e4384e7 ucvtf d7, x7, #31
890: 1e1880e7 fcvtzs w7, s7, #32
894: 9e1880e7 fcvtzs x7, s7, #32
898: 1e1980e7 fcvtzu w7, s7, #32
89c: 9e1980e7 fcvtzu x7, s7, #32
8a0: 1e0280e7 scvtf s7, w7, #32
8a4: 9e0280e7 scvtf s7, x7, #32
8a8: 1e0380e7 ucvtf s7, w7, #32
8ac: 9e0380e7 ucvtf s7, x7, #32
8b0: 1e5880e7 fcvtzs w7, d7, #32
8b4: 9e5880e7 fcvtzs x7, d7, #32
8b8: 1e5980e7 fcvtzu w7, d7, #32
8bc: 9e5980e7 fcvtzu x7, d7, #32
8c0: 1e4280e7 scvtf d7, w7, #32
8c4: 9e4280e7 scvtf d7, x7, #32
8c8: 1e4380e7 ucvtf d7, w7, #32
8cc: 9e4380e7 ucvtf d7, x7, #32
8d0: 9e187ce7 fcvtzs x7, s7, #33
8d4: 9e197ce7 fcvtzu x7, s7, #33
8d8: 9e027ce7 scvtf s7, x7, #33
8dc: 9e037ce7 ucvtf s7, x7, #33
8e0: 9e587ce7 fcvtzs x7, d7, #33
8e4: 9e597ce7 fcvtzu x7, d7, #33
8e8: 9e427ce7 scvtf d7, x7, #33
8ec: 9e437ce7 ucvtf d7, x7, #33
8f0: 9e1878e7 fcvtzs x7, s7, #34
8f4: 9e1978e7 fcvtzu x7, s7, #34
8f8: 9e0278e7 scvtf s7, x7, #34
8fc: 9e0378e7 ucvtf s7, x7, #34
900: 9e5878e7 fcvtzs x7, d7, #34
904: 9e5978e7 fcvtzu x7, d7, #34
908: 9e4278e7 scvtf d7, x7, #34
90c: 9e4378e7 ucvtf d7, x7, #34
910: 9e1874e7 fcvtzs x7, s7, #35
914: 9e1974e7 fcvtzu x7, s7, #35
918: 9e0274e7 scvtf s7, x7, #35
91c: 9e0374e7 ucvtf s7, x7, #35
920: 9e5874e7 fcvtzs x7, d7, #35
924: 9e5974e7 fcvtzu x7, d7, #35
928: 9e4274e7 scvtf d7, x7, #35
92c: 9e4374e7 ucvtf d7, x7, #35
930: 9e1870e7 fcvtzs x7, s7, #36
934: 9e1970e7 fcvtzu x7, s7, #36
938: 9e0270e7 scvtf s7, x7, #36
93c: 9e0370e7 ucvtf s7, x7, #36
940: 9e5870e7 fcvtzs x7, d7, #36
944: 9e5970e7 fcvtzu x7, d7, #36
948: 9e4270e7 scvtf d7, x7, #36
94c: 9e4370e7 ucvtf d7, x7, #36
950: 9e186ce7 fcvtzs x7, s7, #37
954: 9e196ce7 fcvtzu x7, s7, #37
958: 9e026ce7 scvtf s7, x7, #37
95c: 9e036ce7 ucvtf s7, x7, #37
960: 9e586ce7 fcvtzs x7, d7, #37
964: 9e596ce7 fcvtzu x7, d7, #37
968: 9e426ce7 scvtf d7, x7, #37
96c: 9e436ce7 ucvtf d7, x7, #37
970: 9e1868e7 fcvtzs x7, s7, #38
974: 9e1968e7 fcvtzu x7, s7, #38
978: 9e0268e7 scvtf s7, x7, #38
97c: 9e0368e7 ucvtf s7, x7, #38
980: 9e5868e7 fcvtzs x7, d7, #38
984: 9e5968e7 fcvtzu x7, d7, #38
988: 9e4268e7 scvtf d7, x7, #38
98c: 9e4368e7 ucvtf d7, x7, #38
990: 9e1864e7 fcvtzs x7, s7, #39
994: 9e1964e7 fcvtzu x7, s7, #39
998: 9e0264e7 scvtf s7, x7, #39
99c: 9e0364e7 ucvtf s7, x7, #39
9a0: 9e5864e7 fcvtzs x7, d7, #39
9a4: 9e5964e7 fcvtzu x7, d7, #39
9a8: 9e4264e7 scvtf d7, x7, #39
9ac: 9e4364e7 ucvtf d7, x7, #39
9b0: 9e1860e7 fcvtzs x7, s7, #40
9b4: 9e1960e7 fcvtzu x7, s7, #40
9b8: 9e0260e7 scvtf s7, x7, #40
9bc: 9e0360e7 ucvtf s7, x7, #40
9c0: 9e5860e7 fcvtzs x7, d7, #40
9c4: 9e5960e7 fcvtzu x7, d7, #40
9c8: 9e4260e7 scvtf d7, x7, #40
9cc: 9e4360e7 ucvtf d7, x7, #40
9d0: 9e185ce7 fcvtzs x7, s7, #41
9d4: 9e195ce7 fcvtzu x7, s7, #41
9d8: 9e025ce7 scvtf s7, x7, #41
9dc: 9e035ce7 ucvtf s7, x7, #41
9e0: 9e585ce7 fcvtzs x7, d7, #41
9e4: 9e595ce7 fcvtzu x7, d7, #41
9e8: 9e425ce7 scvtf d7, x7, #41
9ec: 9e435ce7 ucvtf d7, x7, #41
9f0: 9e1858e7 fcvtzs x7, s7, #42
9f4: 9e1958e7 fcvtzu x7, s7, #42
9f8: 9e0258e7 scvtf s7, x7, #42
9fc: 9e0358e7 ucvtf s7, x7, #42
a00: 9e5858e7 fcvtzs x7, d7, #42
a04: 9e5958e7 fcvtzu x7, d7, #42
a08: 9e4258e7 scvtf d7, x7, #42
a0c: 9e4358e7 ucvtf d7, x7, #42
a10: 9e1854e7 fcvtzs x7, s7, #43
a14: 9e1954e7 fcvtzu x7, s7, #43
a18: 9e0254e7 scvtf s7, x7, #43
a1c: 9e0354e7 ucvtf s7, x7, #43
a20: 9e5854e7 fcvtzs x7, d7, #43
a24: 9e5954e7 fcvtzu x7, d7, #43
a28: 9e4254e7 scvtf d7, x7, #43
a2c: 9e4354e7 ucvtf d7, x7, #43
a30: 9e1850e7 fcvtzs x7, s7, #44
a34: 9e1950e7 fcvtzu x7, s7, #44
a38: 9e0250e7 scvtf s7, x7, #44
a3c: 9e0350e7 ucvtf s7, x7, #44
a40: 9e5850e7 fcvtzs x7, d7, #44
a44: 9e5950e7 fcvtzu x7, d7, #44
a48: 9e4250e7 scvtf d7, x7, #44
a4c: 9e4350e7 ucvtf d7, x7, #44
a50: 9e184ce7 fcvtzs x7, s7, #45
a54: 9e194ce7 fcvtzu x7, s7, #45
a58: 9e024ce7 scvtf s7, x7, #45
a5c: 9e034ce7 ucvtf s7, x7, #45
a60: 9e584ce7 fcvtzs x7, d7, #45
a64: 9e594ce7 fcvtzu x7, d7, #45
a68: 9e424ce7 scvtf d7, x7, #45
a6c: 9e434ce7 ucvtf d7, x7, #45
a70: 9e1848e7 fcvtzs x7, s7, #46
a74: 9e1948e7 fcvtzu x7, s7, #46
a78: 9e0248e7 scvtf s7, x7, #46
a7c: 9e0348e7 ucvtf s7, x7, #46
a80: 9e5848e7 fcvtzs x7, d7, #46
a84: 9e5948e7 fcvtzu x7, d7, #46
a88: 9e4248e7 scvtf d7, x7, #46
a8c: 9e4348e7 ucvtf d7, x7, #46
a90: 9e1844e7 fcvtzs x7, s7, #47
a94: 9e1944e7 fcvtzu x7, s7, #47
a98: 9e0244e7 scvtf s7, x7, #47
a9c: 9e0344e7 ucvtf s7, x7, #47
aa0: 9e5844e7 fcvtzs x7, d7, #47
aa4: 9e5944e7 fcvtzu x7, d7, #47
aa8: 9e4244e7 scvtf d7, x7, #47
aac: 9e4344e7 ucvtf d7, x7, #47
ab0: 9e1840e7 fcvtzs x7, s7, #48
ab4: 9e1940e7 fcvtzu x7, s7, #48
ab8: 9e0240e7 scvtf s7, x7, #48
abc: 9e0340e7 ucvtf s7, x7, #48
ac0: 9e5840e7 fcvtzs x7, d7, #48
ac4: 9e5940e7 fcvtzu x7, d7, #48
ac8: 9e4240e7 scvtf d7, x7, #48
acc: 9e4340e7 ucvtf d7, x7, #48
ad0: 9e183ce7 fcvtzs x7, s7, #49
ad4: 9e193ce7 fcvtzu x7, s7, #49
ad8: 9e023ce7 scvtf s7, x7, #49
adc: 9e033ce7 ucvtf s7, x7, #49
ae0: 9e583ce7 fcvtzs x7, d7, #49
ae4: 9e593ce7 fcvtzu x7, d7, #49
ae8: 9e423ce7 scvtf d7, x7, #49
aec: 9e433ce7 ucvtf d7, x7, #49
af0: 9e1838e7 fcvtzs x7, s7, #50
af4: 9e1938e7 fcvtzu x7, s7, #50
af8: 9e0238e7 scvtf s7, x7, #50
afc: 9e0338e7 ucvtf s7, x7, #50
b00: 9e5838e7 fcvtzs x7, d7, #50
b04: 9e5938e7 fcvtzu x7, d7, #50
b08: 9e4238e7 scvtf d7, x7, #50
b0c: 9e4338e7 ucvtf d7, x7, #50
b10: 9e1834e7 fcvtzs x7, s7, #51
b14: 9e1934e7 fcvtzu x7, s7, #51
b18: 9e0234e7 scvtf s7, x7, #51
b1c: 9e0334e7 ucvtf s7, x7, #51
b20: 9e5834e7 fcvtzs x7, d7, #51
b24: 9e5934e7 fcvtzu x7, d7, #51
b28: 9e4234e7 scvtf d7, x7, #51
b2c: 9e4334e7 ucvtf d7, x7, #51
b30: 9e1830e7 fcvtzs x7, s7, #52
b34: 9e1930e7 fcvtzu x7, s7, #52
b38: 9e0230e7 scvtf s7, x7, #52
b3c: 9e0330e7 ucvtf s7, x7, #52
b40: 9e5830e7 fcvtzs x7, d7, #52
b44: 9e5930e7 fcvtzu x7, d7, #52
b48: 9e4230e7 scvtf d7, x7, #52
b4c: 9e4330e7 ucvtf d7, x7, #52
b50: 9e182ce7 fcvtzs x7, s7, #53
b54: 9e192ce7 fcvtzu x7, s7, #53
b58: 9e022ce7 scvtf s7, x7, #53
b5c: 9e032ce7 ucvtf s7, x7, #53
b60: 9e582ce7 fcvtzs x7, d7, #53
b64: 9e592ce7 fcvtzu x7, d7, #53
b68: 9e422ce7 scvtf d7, x7, #53
b6c: 9e432ce7 ucvtf d7, x7, #53
b70: 9e1828e7 fcvtzs x7, s7, #54
b74: 9e1928e7 fcvtzu x7, s7, #54
b78: 9e0228e7 scvtf s7, x7, #54
b7c: 9e0328e7 ucvtf s7, x7, #54
b80: 9e5828e7 fcvtzs x7, d7, #54
b84: 9e5928e7 fcvtzu x7, d7, #54
b88: 9e4228e7 scvtf d7, x7, #54
b8c: 9e4328e7 ucvtf d7, x7, #54
b90: 9e1824e7 fcvtzs x7, s7, #55
b94: 9e1924e7 fcvtzu x7, s7, #55
b98: 9e0224e7 scvtf s7, x7, #55
b9c: 9e0324e7 ucvtf s7, x7, #55
ba0: 9e5824e7 fcvtzs x7, d7, #55
ba4: 9e5924e7 fcvtzu x7, d7, #55
ba8: 9e4224e7 scvtf d7, x7, #55
bac: 9e4324e7 ucvtf d7, x7, #55
bb0: 9e1820e7 fcvtzs x7, s7, #56
bb4: 9e1920e7 fcvtzu x7, s7, #56
bb8: 9e0220e7 scvtf s7, x7, #56
bbc: 9e0320e7 ucvtf s7, x7, #56
bc0: 9e5820e7 fcvtzs x7, d7, #56
bc4: 9e5920e7 fcvtzu x7, d7, #56
bc8: 9e4220e7 scvtf d7, x7, #56
bcc: 9e4320e7 ucvtf d7, x7, #56
bd0: 9e181ce7 fcvtzs x7, s7, #57
bd4: 9e191ce7 fcvtzu x7, s7, #57
bd8: 9e021ce7 scvtf s7, x7, #57
bdc: 9e031ce7 ucvtf s7, x7, #57
be0: 9e581ce7 fcvtzs x7, d7, #57
be4: 9e591ce7 fcvtzu x7, d7, #57
be8: 9e421ce7 scvtf d7, x7, #57
bec: 9e431ce7 ucvtf d7, x7, #57
bf0: 9e1818e7 fcvtzs x7, s7, #58
bf4: 9e1918e7 fcvtzu x7, s7, #58
bf8: 9e0218e7 scvtf s7, x7, #58
bfc: 9e0318e7 ucvtf s7, x7, #58
c00: 9e5818e7 fcvtzs x7, d7, #58
c04: 9e5918e7 fcvtzu x7, d7, #58
c08: 9e4218e7 scvtf d7, x7, #58
c0c: 9e4318e7 ucvtf d7, x7, #58
c10: 9e1814e7 fcvtzs x7, s7, #59
c14: 9e1914e7 fcvtzu x7, s7, #59
c18: 9e0214e7 scvtf s7, x7, #59
c1c: 9e0314e7 ucvtf s7, x7, #59
c20: 9e5814e7 fcvtzs x7, d7, #59
c24: 9e5914e7 fcvtzu x7, d7, #59
c28: 9e4214e7 scvtf d7, x7, #59
c2c: 9e4314e7 ucvtf d7, x7, #59
c30: 9e1810e7 fcvtzs x7, s7, #60
c34: 9e1910e7 fcvtzu x7, s7, #60
c38: 9e0210e7 scvtf s7, x7, #60
c3c: 9e0310e7 ucvtf s7, x7, #60
c40: 9e5810e7 fcvtzs x7, d7, #60
c44: 9e5910e7 fcvtzu x7, d7, #60
c48: 9e4210e7 scvtf d7, x7, #60
c4c: 9e4310e7 ucvtf d7, x7, #60
c50: 9e180ce7 fcvtzs x7, s7, #61
c54: 9e190ce7 fcvtzu x7, s7, #61
c58: 9e020ce7 scvtf s7, x7, #61
c5c: 9e030ce7 ucvtf s7, x7, #61
c60: 9e580ce7 fcvtzs x7, d7, #61
c64: 9e590ce7 fcvtzu x7, d7, #61
c68: 9e420ce7 scvtf d7, x7, #61
c6c: 9e430ce7 ucvtf d7, x7, #61
c70: 9e1808e7 fcvtzs x7, s7, #62
c74: 9e1908e7 fcvtzu x7, s7, #62
c78: 9e0208e7 scvtf s7, x7, #62
c7c: 9e0308e7 ucvtf s7, x7, #62
c80: 9e5808e7 fcvtzs x7, d7, #62
c84: 9e5908e7 fcvtzu x7, d7, #62
c88: 9e4208e7 scvtf d7, x7, #62
c8c: 9e4308e7 ucvtf d7, x7, #62
c90: 9e1804e7 fcvtzs x7, s7, #63
c94: 9e1904e7 fcvtzu x7, s7, #63
c98: 9e0204e7 scvtf s7, x7, #63
c9c: 9e0304e7 ucvtf s7, x7, #63
ca0: 9e5804e7 fcvtzs x7, d7, #63
ca4: 9e5904e7 fcvtzu x7, d7, #63
ca8: 9e4204e7 scvtf d7, x7, #63
cac: 9e4304e7 ucvtf d7, x7, #63
cb0: 9e1800e7 fcvtzs x7, s7, #64
cb4: 9e1900e7 fcvtzu x7, s7, #64
cb8: 9e0200e7 scvtf s7, x7, #64
cbc: 9e0300e7 ucvtf s7, x7, #64
cc0: 9e5800e7 fcvtzs x7, d7, #64
cc4: 9e5900e7 fcvtzu x7, d7, #64
cc8: 9e4200e7 scvtf d7, x7, #64
ccc: 9e4300e7 ucvtf d7, x7, #64
cd0: 9eae00e7 fmov x7, v7.d\[1\]
cd4: 9eaf00e7 fmov v7.d\[1\], x7

View File

@ -0,0 +1,117 @@
/* fp_cvt_ins.s Test file for AArch64 floating-point<->fixed-point
conversion and floating-point<->integer conversion instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
// SCVTF & UCVTF
.macro do_cvtf fbits, reg
.ifc \fbits, 0
// Floating-point<->integer conversions
SCVTF \reg\()7, W7
SCVTF \reg\()7, X7
UCVTF \reg\()7, W7
UCVTF \reg\()7, X7
.else
// Floating-point<->fixed-point conversions
.ifle \fbits-32
SCVTF \reg\()7, W7, #\fbits
.endif
SCVTF \reg\()7, X7, #\fbits
.ifle \fbits-32
UCVTF \reg\()7, W7, #\fbits
.endif
UCVTF \reg\()7, X7, #\fbits
.endif
.endm
// FMOV
.macro do_fmov type
.ifc \type, S
// 32-bit
FMOV W7, S7
FMOV S7, W7
.elseif \type == D
// 64-bit
FMOV X7, D7
FMOV D7, X7
.else
// 64-bit with V reg element
FMOV X7, V7.D[1]
FMOV V7.D[1], X7
.endif
.endm
.macro do_fcvt suffix, fbits, reg
.ifc \fbits, 0
// Floating-point<->integer conversions
FCVT\suffix W7, \reg\()7
FCVT\suffix X7, \reg\()7
.else
// Floating-point<->fixed-point conversions
.ifle \fbits-32
FCVT\suffix W7, \reg\()7, #\fbits
.endif
FCVT\suffix X7, \reg\()7, #\fbits
.endif
.endm
.macro fcvts_with_fbits fbits
.ifc \fbits, 0
// fp <-> integer
.irp reg, S, D
// single-precision and double precision
do_fcvt NS, \fbits, \reg
do_fcvt NU, \fbits, \reg
do_fcvt PS, \fbits, \reg
do_fcvt PU, \fbits, \reg
do_fcvt MS, \fbits, \reg
do_fcvt MU, \fbits, \reg
do_fcvt ZS, \fbits, \reg
do_fcvt ZU, \fbits, \reg
do_cvtf \fbits, \reg
do_fcvt AS, \fbits, \reg
do_fcvt AU, \fbits, \reg
do_fmov S
.endr
.else
// fp <-> fixed-point
// After ISA 2.06, only FCVTZ[US] and [US]CVTF are available
.irp reg, S, D
// single-precision and double precision
do_fcvt ZS, \fbits, \reg
do_fcvt ZU, \fbits, \reg
do_cvtf \fbits, \reg
.endr
.endif
.endm
.macro fcvts_with_fbits_wrapper from=0, to=64
fcvts_with_fbits \from
.if \to-\from
fcvts_with_fbits_wrapper "(\from+1)", \to
.endif
.endm
func:
// Generate fcvt instructions without fbits and
// with fbits from 1 to 64, also generate [us]cvtf
// and fmov.
fcvts_with_fbits_wrapper from=0, to=64
do_fmov V

View File

@ -0,0 +1,4 @@
#name: Illegal Instructions - 2
#as:
#source: illegal-2.s
#error-output: illegal-2.l

View File

@ -0,0 +1,8 @@
[^:]*: Assembler messages:
[^:]*:10: Error: .*$
[^:]*:13: Error: .*$
[^:]*:14: Error: .*$
[^:]*:15: Error: .*$
[^:]*:16: Error: .*$
[^:]*:19: Error: .*$
[^:]*:20: Error: .*$

View File

@ -0,0 +1,22 @@
// illegal-2.s Test file for AArch64 instructions that should be rejected
// by the assembler. This test is a complement to the illegal.s test.
// md_apply_fix will not run if there is any error occurred in an earlier
// stage, which means errors should be reported by md_apply_fix will not
// be issued. This test hosts instructions that will only incur error
// report from md_apply_fix.
.text
mov x0, #deliberately_undefined_symbol
// immediate out of range
add wsp, w0, #0xfff0, LSL #12
add wsp, w0, #0xfff0, LSL #0
add wsp, w0, u16, LSL #12
add wsp, w0, u16, LSL #0
// immediate cannot be moved by a single instruction
mov wzr, #0x0f0f0f0f
mov wsp, #0x33030000
.set u16, 0xfff0

View File

@ -0,0 +1,4 @@
#name: Illegal Instructions
#as:
#source: illegal.s
#error-output: illegal.l

View File

@ -0,0 +1,549 @@
[^:]*: Assembler messages:
[^:]*:24: Error: .*`urecpe v0.1d,v7.1d'
[^:]*:25: Error: .*`urecpe v0.2d,v7.2d'
[^:]*:26: Error: .*`ursqrte v0.1d,v7.1d'
[^:]*:27: Error: .*`ursqrte v0.2d,v7.2d'
[^:]*:30: Error: .*`saddlv b7,v31.8b'
[^:]*:31: Error: .*`saddlv d7,v31.2s'
[^:]*:32: Error: .*`saddlv q7,v31.2d'
[^:]*:33: Error: .*`smaxv s7,v31.2s'
[^:]*:34: Error: .*`sminv d7,v31.2d'
[^:]*:35: Error: .*`fmaxv h7,v31.8h'
[^:]*:36: Error: .*`fmaxv h7,v31.4h'
[^:]*:37: Error: .*`fminv d7,v31.2d'
[^:]*:39: Error: .*`abs b0,b31'
[^:]*:40: Error: .*`neg b0,b31'
[^:]*:41: Error: .*`abs h0,h31'
[^:]*:42: Error: .*`neg h0,h31'
[^:]*:43: Error: .*`abs s0,s31'
[^:]*:44: Error: .*`neg s0,s31'
[^:]*:46: Error: .*`fcvt s0,s0'
[^:]*:48: Error: .*`bfm w0,w1,8,43'
[^:]*:49: Error: .*`ubfm w0,x1,8,31'
[^:]*:51: Error: .*`aese v1.8b,v2.8b'
[^:]*:52: Error: .*`sha1h s7,d31'
[^:]*:53: Error: .*`sha1h q7,d31'
[^:]*:54: Error: .*`sha1su1 v7.4s,v7.2s'
[^:]*:55: Error: .*`sha256su0 v7.2d,v7.2d'
[^:]*:56: Error: .*`sha1c q7,q3,v7.4s'
[^:]*:57: Error: .*`sha1p s7,q8,v9.4s'
[^:]*:58: Error: .*`sha1m v8.4s,v7.4s,q8'
[^:]*:59: Error: .*`sha1su0 v0.2d,v1.2d,v2.2d'
[^:]*:60: Error: .*`sha256h q7,s2,v8.4s'
[^:]*:62: Error: .*`pmull v7.8b,v15.8b,v31.8b'
[^:]*:63: Error: .*`pmull v7.1q,v15.1q,v31.1d'
[^:]*:64: Error: .*`pmull2 v7.8h,v15.8b,v31.8b'
[^:]*:65: Error: .*`pmull2 v7.1q,v15.2d,v31.1q'
[^:]*:67: Error: .*`ld2 {v1.4h,v0.4h},\[x1\]'
[^:]*:68: Error: .*`strb x0,\[sp,x1,lsl#0\]'
[^:]*:69: Error: .*`strb w7,\[x30,x0,lsl\]'
[^:]*:70: Error: .*`strb w7,\[x30,x0,lsl#1\]'
[^:]*:71: Error: .*`ldtr x7,\[x15,266\]'
[^:]*:72: Error: .*`sttr x7,\[x15,#1\]!'
[^:]*:73: Error: .*`stxrb x2,w1,\[sp\]'
[^:]*:74: Error: .*`stxp w2,x3,w4,\[x0\]'
[^:]*:75: Error: .*`ldxp w3,x4,\[x30\]'
[^:]*:77: Error: .*`st2 {v4.2d,v5.2d},\[x3,#3\]'
[^:]*:78: Error: .*`st2 {v4.2d,v5.2d,v6.2d},\[x3\]'
[^:]*:79: Error: .*`st1 {v4.2d,v6.2d,v8.2d},\[x3\]'
[^:]*:80: Error: .*`st3 {v4.2d,v6.2d},\[x3\]'
[^:]*:81: Error: .*`st4 {v4.2d,v6.2d},\[x3\]'
[^:]*:82: Error: .*`st2 {v4.2d,v6.2d,v8.2d,v10.2d},\[x3\]'
[^:]*:83: Error: .*`st2 {v4.2d,v6.2d,v8.2d,v10.2d},\[x3\],48'
[^:]*:85: Error: .*`ext v0.8b,v1.8b,v2.8b,8'
[^:]*:86: Error: .*`ext v0.16b,v1.16b,v2.16b,20'
[^:]*:88: Error: .*`tbz w0,#40,0x17c'
[^:]*:90: Error: .*`svc'
[^:]*:92: Error: .*`fmov v1.D\[0\],x0'
[^:]*:93: Error: .*`fmov v2.S\[2\],x0'
[^:]*:94: Error: .*`fmov v2.S\[1\],x0'
[^:]*:95: Error: .*`fmov v2.D\[1\],w0'
[^:]*:97: Error: .*`smaddl w0,w1,w2,x3'
[^:]*:98: Error: .*`smaddl x0,x1,w2,x3'
[^:]*:99: Error: .*`smaddl x0,w1,x2,x3'
[^:]*:100: Error: .*`smaddl x0,w1,w2,w3'
[^:]*:102: Error: .*`ld1 {v1.s,v2.s}\[1\],\[x3\]'
[^:]*:103: Error: .*`st1 {v2.s,v3.s}\[1\],\[x4\]'
[^:]*:104: Error: .*`ld2 {v1.s,v2.s,v3.s}\[1\],\[x3\]'
[^:]*:105: Error: .*`st2 {v2.s,v2.s,v3.s}\[1\],\[x4\]'
[^:]*:106: Error: .*`ld3 {v1.s,v2.s,v3.s,v4.s}\[1\],\[x3\]'
[^:]*:107: Error: .*`st3 {v2.s,v3.s,v4.s,v5.s}\[1\],\[x4\]'
[^:]*:108: Error: .*`ld4 {v1.s}\[1\],\[x3\]'
[^:]*:109: Error: .*`st4 {v2.s}\[1\],\[x4\]'
[^:]*:111: Error: .*`ld2 {v1.b,v3.b}\[1\],\[x3\]'
[^:]*:112: Error: .*`st2 {v2.b,v4.b}\[1\],\[x4\]'
[^:]*:113: Error: .*`ld3 {v1.b,v3.b,v5.b}\[1\],\[x3\]'
[^:]*:114: Error: .*`st3 {v2.b,v4.b,v6.b}\[1\],\[x4\]'
[^:]*:115: Error: .*`ld4 {v1.b,v3.b,v5.b,v7.b}\[1\],\[x3\]'
[^:]*:116: Error: .*`st4 {v2.b,v4.b,v6.b,v8.b}\[1\],\[x4\]'
[^:]*:118: Error: .*`ld1 {v1.q}\[1\],\[x3\]'
[^:]*:120: Error: .*`ld1r {v1.4s,v3.4s},\[x3\]'
[^:]*:121: Error: .*`ld1r {v1.4s,v2.4s,v3.4s},\[x3\]'
[^:]*:122: Error: .*`ld2r {v1.4s,v2.4s,v3.4s},\[x3\]'
[^:]*:123: Error: .*`ld3r {v1.4s,v2.4s,v3.4s,v4.4s},\[x3\]'
[^:]*:124: Error: .*`ld4r {v1.4s},\[x3\]'
[^:]*:126: Error: .*`ld1r {v1.4s,v3.4s},\[x3\],x4'
[^:]*:127: Error: .*`ld1r {v1.4s,v2.4s,v3.4s},\[x3\],x4'
[^:]*:128: Error: .*`ld2r {v1.4s,v2.4s,v3.4s},\[x3\],x4'
[^:]*:129: Error: .*`ld3r {v1.4s,v2.4s,v3.4s,v4.4s},\[x3\],x4'
[^:]*:130: Error: .*`ld4r {v1.4s},\[x3\],x4'
[^:]*:132: Error: .*`ld1r {v1.4s},\[x3\],#1'
[^:]*:133: Error: .*`ld1r {v1.4s,v2.4s},\[x3\],#8'
[^:]*:134: Error: .*`ld2r {v1.4s,v2.4s},\[x3\],#4'
[^:]*:135: Error: .*`ld3r {v1.4s,v2.4s,v3.4s},\[x3\],#16'
[^:]*:136: Error: .*`ld4r {v1.4s,v2.4s,v3.4s,v4.4s},\[x3\],#32'
[^:]*:138: Error: .*`addp s1,v2.2s'
[^:]*:139: Error: .*`addp s1,v2.2d'
[^:]*:140: Error: .*`addp d1,v2.2s'
[^:]*:141: Error: .*`fmaxp s1,v2.4s'
[^:]*:143: Error: .*`add s1,s2,s3'
[^:]*:144: Error: .*`cmhi d1,d2,s3'
[^:]*:146: Error: .*`shll v0.8h,v1.8b,16'
[^:]*:147: Error: .*`shll2 v0.2d,v1.4s,16'
[^:]*:149: Error: .*`dup s1,v2.d\[1\]'
[^:]*:150: Error: .*`dup s1,v2.s\[4\]'
[^:]*:151: Error: .*`mov s1,v2.h\[1\]'
[^:]*:153: Error: .*`clrex #16'
[^:]*:155: Error: .*`msr daif,w5'
[^:]*:156: Error: .*`mrs w15,midr_el1'
[^:]*:157: Error: .*`mrs x0,dummy'
[^:]*:159: Error: .*`sshr v0.4s,v1.4s,#0'
[^:]*:160: Error: .*`sshr v0.4s,v1.4s,#33'
[^:]*:161: Error: .*`sshr v0.4h,v1.4h,#20'
[^:]*:163: Error: .*`shl v0.4s,v1.4s,#32'
[^:]*:164: Error: .*`fcvtzs v0.4h,v1.4h,#2'
[^:]*:165: Error: .*`uqshrn v0.2s,v1.2d,33'
[^:]*:166: Error: .*`uqrshrn v0.2s,v1.2s,32'
[^:]*:167: Error: .*`sshll v8.8h,v2.8b,#8'
[^:]*:169: Error: .*`sysl x7,#10,C15,C7,#11'
[^:]*:170: Error: .*`sysl w7,#1,C15,C7,#1'
[^:]*:172: Error: .*`dsb dummy'
[^:]*:173: Error: .*`dmb #16'
[^:]*:174: Error: .*`isb osh'
[^:]*:176: Error: .*`prfm 0x2f,LABEL1'
[^:]*:177: Error: .*`prfm pldl3strm,\[sp,#8\]!'
[^:]*:178: Error: .*`prfm pldl3strm,\[sp\],#8'
[^:]*:179: Error: .*`prfm pldl3strm,\[sp,w0,sxtw#3\]!'
[^:]*:180: Error: .*`prfm pldl3strm,=0x100'
[^:]*:182: Error: .*`sttr x0,LABEL1'
[^:]*:183: Error: .*`sttr x0,\[sp,#16\]!'
[^:]*:184: Error: .*`sttr x0,\[sp\],#16'
[^:]*:185: Error: .*`sttr x0,\[sp,x1\]'
[^:]*:187: Error: .*`ldur x0,LABEL1'
[^:]*:188: Error: .*`ldur x0,\[sp,#16\]!'
[^:]*:189: Error: .*`ldur x0,\[sp\],#16'
[^:]*:190: Error: .*`ldur x0,\[sp,x1\]'
[^:]*:192: Error: .*`ldr b0,=0x100'
[^:]*:193: Error: .*`ldr h0,LABEL1'
[^:]*:195: Error: .*`ic ivau'
[^:]*:196: Error: .*`ic ivau,w0'
[^:]*:197: Error: .*`ic ialluis,xzr'
[^:]*:198: Error: .*`ic ialluis,x0'
[^:]*:199: Error: .*`sys #0,c0,c0,0,w0'
[^:]*:200: Error: .*`msr spsel,#16'
[^:]*:201: Error: .*`msr cptr_el2,#15'
[^:]*:203: Error: .*`movz x1,#:abs_g2:u48,lsl#16'
[^:]*:204: Error: .*`movz x1,0xddee,lsl#8'
[^:]*:205: Error: .*`movz w1,#:abs_g2:u48'
[^:]*:206: Error: .*`movz w1,#:abs_g3:u48'
[^:]*:207: Error: .*`movk x1,#:abs_g1_s:s12'
[^:]*:209: Error: .*`movi v0.4s,#256'
[^:]*:210: Error: .*`movi v0.2d,#0xabcdef'
[^:]*:212: Error: .*`bic v0.4s,#255,msl#8'
[^:]*:213: Error: .*`bic v0.4s,#512'
[^:]*:214: Error: .*`bic v0.4s,#1,lsl#31'
[^:]*:217: Error: .*`orr v0.4s,#255,msl#8'
[^:]*:218: Error: .*`orr v0.4s,#512'
[^:]*:220: Error: .*`movi v0.4s,#127,lsl#4'
[^:]*:221: Error: .*`movi v0.4s,#127,msl#24'
[^:]*:224: Error: .*`mvni v0.4s,#127,lsl#4'
[^:]*:225: Error: .*`mvni v0.4s,#127,msl#24'
[^:]*:228: Error: .*`fmov v0.2s,#3.1415926'
[^:]*:229: Error: .*`fmov v0.4s,#3.1415926'
[^:]*:230: Error: .*`fmov v0.2d,#3.1415926'
[^:]*:231: Error: .*`fmov x0,#1.0'
[^:]*:232: Error: .*`fmov w0,w1'
[^:]*:234: Error: .*`msr #5,#0'
[^:]*:235: Error: .*`msr SPSel,#2'
[^:]*:237: Error: .*`tbl v0.16b,{v1.16b,v3.16b,v5.16b},v2.16b'
[^:]*:238: Error: .*`tbx v0.8b,{v1.16b,v3.16b,v5.16b,v7.16b},v2.8b'
[^:]*:264: Error: .*`ld2 {v0.8b,v2.8b},\[x0\],#16'
[^:]*:264: Error: .*`ld2 {v0.8b,v1.8b,v2.8b,v3.8b},\[x0\],#32'
[^:]*:264: Error: .*`ld2 {v0.8b,v2.8b},\[x0\],x7'
[^:]*:264: Error: .*`ld2 {v0.8b,v1.8b,v2.8b,v3.8b},\[x0\],x7'
[^:]*:264: Error: .*`ld2 {v0.4h,v2.4h},\[x0\],#16'
[^:]*:264: Error: .*`ld2 {v0.4h,v1.4h,v2.4h,v3.4h},\[x0\],#32'
[^:]*:264: Error: .*`ld2 {v0.4h,v2.4h},\[x0\],x7'
[^:]*:264: Error: .*`ld2 {v0.4h,v1.4h,v2.4h,v3.4h},\[x0\],x7'
[^:]*:264: Error: .*`ld2 {v0.2s,v2.2s},\[x0\],#16'
[^:]*:264: Error: .*`ld2 {v0.2s,v1.2s,v2.2s,v3.2s},\[x0\],#32'
[^:]*:264: Error: .*`ld2 {v0.2s,v2.2s},\[x0\],x7'
[^:]*:264: Error: .*`ld2 {v0.2s,v1.2s,v2.2s,v3.2s},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.8b,v2.8b},\[x0\],#16'
[^:]*:264: Error: .*`st2 {v0.8b,v1.8b,v2.8b,v3.8b},\[x0\],#32'
[^:]*:264: Error: .*`st2 {v0.8b,v2.8b},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.8b,v1.8b,v2.8b,v3.8b},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.4h,v2.4h},\[x0\],#16'
[^:]*:264: Error: .*`st2 {v0.4h,v1.4h,v2.4h,v3.4h},\[x0\],#32'
[^:]*:264: Error: .*`st2 {v0.4h,v2.4h},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.4h,v1.4h,v2.4h,v3.4h},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.2s,v2.2s},\[x0\],#16'
[^:]*:264: Error: .*`st2 {v0.2s,v1.2s,v2.2s,v3.2s},\[x0\],#32'
[^:]*:264: Error: .*`st2 {v0.2s,v2.2s},\[x0\],x7'
[^:]*:264: Error: .*`st2 {v0.2s,v1.2s,v2.2s,v3.2s},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.16b,v2.16b},\[x0\],#32'
[^:]*:270: Error: .*`ld2 {v0.16b,v1.16b,v2.16b,v3.16b},\[x0\],#64'
[^:]*:270: Error: .*`ld2 {v0.16b,v2.16b},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.16b,v1.16b,v2.16b,v3.16b},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.8h,v2.8h},\[x0\],#32'
[^:]*:270: Error: .*`ld2 {v0.8h,v1.8h,v2.8h,v3.8h},\[x0\],#64'
[^:]*:270: Error: .*`ld2 {v0.8h,v2.8h},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.8h,v1.8h,v2.8h,v3.8h},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.4s,v2.4s},\[x0\],#32'
[^:]*:270: Error: .*`ld2 {v0.4s,v1.4s,v2.4s,v3.4s},\[x0\],#64'
[^:]*:270: Error: .*`ld2 {v0.4s,v2.4s},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.4s,v1.4s,v2.4s,v3.4s},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.2d,v2.2d},\[x0\],#32'
[^:]*:270: Error: .*`ld2 {v0.2d,v1.2d,v2.2d,v3.2d},\[x0\],#64'
[^:]*:270: Error: .*`ld2 {v0.2d,v2.2d},\[x0\],x7'
[^:]*:270: Error: .*`ld2 {v0.2d,v1.2d,v2.2d,v3.2d},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.16b,v2.16b},\[x0\],#32'
[^:]*:270: Error: .*`st2 {v0.16b,v1.16b,v2.16b,v3.16b},\[x0\],#64'
[^:]*:270: Error: .*`st2 {v0.16b,v2.16b},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.16b,v1.16b,v2.16b,v3.16b},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.8h,v2.8h},\[x0\],#32'
[^:]*:270: Error: .*`st2 {v0.8h,v1.8h,v2.8h,v3.8h},\[x0\],#64'
[^:]*:270: Error: .*`st2 {v0.8h,v2.8h},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.8h,v1.8h,v2.8h,v3.8h},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.4s,v2.4s},\[x0\],#32'
[^:]*:270: Error: .*`st2 {v0.4s,v1.4s,v2.4s,v3.4s},\[x0\],#64'
[^:]*:270: Error: .*`st2 {v0.4s,v2.4s},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.4s,v1.4s,v2.4s,v3.4s},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.2d,v2.2d},\[x0\],#32'
[^:]*:270: Error: .*`st2 {v0.2d,v1.2d,v2.2d,v3.2d},\[x0\],#64'
[^:]*:270: Error: .*`st2 {v0.2d,v2.2d},\[x0\],x7'
[^:]*:270: Error: .*`st2 {v0.2d,v1.2d,v2.2d,v3.2d},\[x0\],x7'
[^:]*:290: Error: .*`ld3 {v0.8b,v2.8b,v4.8b},\[x0\],#24'
[^:]*:290: Error: .*`ld4 {v0.8b,v2.8b,v4.8b,v6.8b},\[x0\],#32'
[^:]*:290: Error: .*`ld3 {v0.8b,v2.8b,v4.8b},\[x0\],x7'
[^:]*:290: Error: .*`ld4 {v0.8b,v2.8b,v4.8b,v6.8b},\[x0\],x7'
[^:]*:290: Error: .*`ld3 {v0.4h,v2.4h,v4.4h},\[x0\],#24'
[^:]*:290: Error: .*`ld4 {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],#32'
[^:]*:290: Error: .*`ld3 {v0.4h,v2.4h,v4.4h},\[x0\],x7'
[^:]*:290: Error: .*`ld4 {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],x7'
[^:]*:290: Error: .*`ld3 {v0.2s,v2.2s,v4.2s},\[x0\],#24'
[^:]*:290: Error: .*`ld4 {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],#32'
[^:]*:290: Error: .*`ld3 {v0.2s,v2.2s,v4.2s},\[x0\],x7'
[^:]*:290: Error: .*`ld4 {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],x7'
[^:]*:290: Error: .*`st3 {v0.8b,v2.8b,v4.8b},\[x0\],#24'
[^:]*:290: Error: .*`st4 {v0.8b,v2.8b,v4.8b,v6.8b},\[x0\],#32'
[^:]*:290: Error: .*`st3 {v0.8b,v2.8b,v4.8b},\[x0\],x7'
[^:]*:290: Error: .*`st4 {v0.8b,v2.8b,v4.8b,v6.8b},\[x0\],x7'
[^:]*:290: Error: .*`st3 {v0.4h,v2.4h,v4.4h},\[x0\],#24'
[^:]*:290: Error: .*`st4 {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],#32'
[^:]*:290: Error: .*`st3 {v0.4h,v2.4h,v4.4h},\[x0\],x7'
[^:]*:290: Error: .*`st4 {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],x7'
[^:]*:290: Error: .*`st3 {v0.2s,v2.2s,v4.2s},\[x0\],#24'
[^:]*:290: Error: .*`st4 {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],#32'
[^:]*:290: Error: .*`st3 {v0.2s,v2.2s,v4.2s},\[x0\],x7'
[^:]*:290: Error: .*`st4 {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],x7'
[^:]*:296: Error: .*`ld3 {v0.16b,v2.16b,v4.16b},\[x0\],#48'
[^:]*:296: Error: .*`ld4 {v0.16b,v2.16b,v4.16b,v6.16b},\[x0\],#64'
[^:]*:296: Error: .*`ld3 {v0.16b,v2.16b,v4.16b},\[x0\],x7'
[^:]*:296: Error: .*`ld4 {v0.16b,v2.16b,v4.16b,v6.16b},\[x0\],x7'
[^:]*:296: Error: .*`ld3 {v0.8h,v2.8h,v4.8h},\[x0\],#48'
[^:]*:296: Error: .*`ld4 {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],#64'
[^:]*:296: Error: .*`ld3 {v0.8h,v2.8h,v4.8h},\[x0\],x7'
[^:]*:296: Error: .*`ld4 {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],x7'
[^:]*:296: Error: .*`ld3 {v0.4s,v2.4s,v4.4s},\[x0\],#48'
[^:]*:296: Error: .*`ld4 {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],#64'
[^:]*:296: Error: .*`ld3 {v0.4s,v2.4s,v4.4s},\[x0\],x7'
[^:]*:296: Error: .*`ld4 {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],x7'
[^:]*:296: Error: .*`ld3 {v0.2d,v2.2d,v4.2d},\[x0\],#48'
[^:]*:296: Error: .*`ld4 {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],#64'
[^:]*:296: Error: .*`ld3 {v0.2d,v2.2d,v4.2d},\[x0\],x7'
[^:]*:296: Error: .*`ld4 {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],x7'
[^:]*:296: Error: .*`st3 {v0.16b,v2.16b,v4.16b},\[x0\],#48'
[^:]*:296: Error: .*`st4 {v0.16b,v2.16b,v4.16b,v6.16b},\[x0\],#64'
[^:]*:296: Error: .*`st3 {v0.16b,v2.16b,v4.16b},\[x0\],x7'
[^:]*:296: Error: .*`st4 {v0.16b,v2.16b,v4.16b,v6.16b},\[x0\],x7'
[^:]*:296: Error: .*`st3 {v0.8h,v2.8h,v4.8h},\[x0\],#48'
[^:]*:296: Error: .*`st4 {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],#64'
[^:]*:296: Error: .*`st3 {v0.8h,v2.8h,v4.8h},\[x0\],x7'
[^:]*:296: Error: .*`st4 {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],x7'
[^:]*:296: Error: .*`st3 {v0.4s,v2.4s,v4.4s},\[x0\],#48'
[^:]*:296: Error: .*`st4 {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],#64'
[^:]*:296: Error: .*`st3 {v0.4s,v2.4s,v4.4s},\[x0\],x7'
[^:]*:296: Error: .*`st4 {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],x7'
[^:]*:296: Error: .*`st3 {v0.2d,v2.2d,v4.2d},\[x0\],#48'
[^:]*:296: Error: .*`st4 {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],#64'
[^:]*:296: Error: .*`st3 {v0.2d,v2.2d,v4.2d},\[x0\],x7'
[^:]*:296: Error: .*`st4 {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],x7'
[^:]*:300: Error: .*`ld1r {v0.8b,v1.8b},\[x0\],#1'
[^:]*:301: Error: .*`ld1r {v0.16b,v1.16b},\[x0\],#1'
[^:]*:302: Error: .*`ld1r {v0.4h,v1.4h},\[x0\],#2'
[^:]*:303: Error: .*`ld1r {v0.8h,v1.8h},\[x0\],#2'
[^:]*:304: Error: .*`ld1r {v0.2s,v1.2s},\[x0\],#4'
[^:]*:305: Error: .*`ld1r {v0.4s,v1.4s},\[x0\],#4'
[^:]*:306: Error: .*`ld1r {v0.1d,v1.1d},\[x0\],#8'
[^:]*:307: Error: .*`ld1r {v0.2d,v1.2d},\[x0\],#8'
[^:]*:322: Error: .*`ld2 {v0.h,v2.h}\[1\],\[x0\],#4'
[^:]*:322: Error: .*`ld3 {v0.h,v2.h,v4.h}\[1\],\[x0\],#6'
[^:]*:322: Error: .*`ld4 {v0.h,v2.h,v4.h,v6.h}\[1\],\[x0\],#8'
[^:]*:322: Error: .*`ld2r {v0.4h,v2.4h},\[x0\],#4'
[^:]*:322: Error: .*`ld3r {v0.4h,v2.4h,v4.4h},\[x0\],#6'
[^:]*:322: Error: .*`ld4r {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],#8'
[^:]*:322: Error: .*`ld2r {v0.8h,v2.8h},\[x0\],#4'
[^:]*:322: Error: .*`ld3r {v0.8h,v2.8h,v4.8h},\[x0\],#6'
[^:]*:322: Error: .*`ld4r {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],#8'
[^:]*:322: Error: .*`st2 {v0.h,v2.h}\[1\],\[x0\],#4'
[^:]*:322: Error: .*`st3 {v0.h,v2.h,v4.h}\[1\],\[x0\],#6'
[^:]*:322: Error: .*`st4 {v0.h,v2.h,v4.h,v6.h}\[1\],\[x0\],#8'
[^:]*:337: Error: .*`ld2 {v0.s,v2.s}\[1\],\[x0\],#8'
[^:]*:337: Error: .*`ld3 {v0.s,v2.s,v4.s}\[1\],\[x0\],#12'
[^:]*:337: Error: .*`ld4 {v0.s,v2.s,v4.s,v6.s}\[1\],\[x0\],#16'
[^:]*:337: Error: .*`ld2r {v0.2s,v2.2s},\[x0\],#8'
[^:]*:337: Error: .*`ld3r {v0.2s,v2.2s,v4.2s},\[x0\],#12'
[^:]*:337: Error: .*`ld4r {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],#16'
[^:]*:337: Error: .*`ld2r {v0.4s,v2.4s},\[x0\],#8'
[^:]*:337: Error: .*`ld3r {v0.4s,v2.4s,v4.4s},\[x0\],#12'
[^:]*:337: Error: .*`ld4r {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],#16'
[^:]*:337: Error: .*`st2 {v0.s,v2.s}\[1\],\[x0\],#8'
[^:]*:337: Error: .*`st3 {v0.s,v2.s,v4.s}\[1\],\[x0\],#12'
[^:]*:337: Error: .*`st4 {v0.s,v2.s,v4.s,v6.s}\[1\],\[x0\],#16'
[^:]*:352: Error: .*`ld2 {v0.d,v2.d}\[1\],\[x0\],#16'
[^:]*:352: Error: .*`ld3 {v0.d,v2.d,v4.d}\[1\],\[x0\],#24'
[^:]*:352: Error: .*`ld4 {v0.d,v2.d,v4.d,v6.d}\[1\],\[x0\],#32'
[^:]*:352: Error: .*`ld2r {v0.1d,v2.1d},\[x0\],#16'
[^:]*:352: Error: .*`ld3r {v0.1d,v2.1d,v4.1d},\[x0\],#24'
[^:]*:352: Error: .*`ld4r {v0.1d,v2.1d,v4.1d,v6.1d},\[x0\],#32'
[^:]*:352: Error: .*`ld2r {v0.2d,v2.2d},\[x0\],#16'
[^:]*:352: Error: .*`ld3r {v0.2d,v2.2d,v4.2d},\[x0\],#24'
[^:]*:352: Error: .*`ld4r {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],#32'
[^:]*:352: Error: .*`st2 {v0.d,v2.d}\[1\],\[x0\],#16'
[^:]*:352: Error: .*`st3 {v0.d,v2.d,v4.d}\[1\],\[x0\],#24'
[^:]*:352: Error: .*`st4 {v0.d,v2.d,v4.d,v6.d}\[1\],\[x0\],#32'
[^:]*:356: Error: .*`ld1r {v0.8b,v1.8b},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.16b,v1.16b},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.4h,v1.4h},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.8h,v1.8h},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.2s,v1.2s},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.4s,v1.4s},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.1d,v1.1d},\[x0\],x7'
[^:]*:356: Error: .*`ld1r {v0.2d,v1.2d},\[x0\],x7'
[^:]*:373: Error: .*`ld2 {v0.b,v2.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld3 {v0.b,v2.b,v4.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld4 {v0.b,v2.b,v4.b,v6.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld2 {v0.h,v2.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld3 {v0.h,v2.h,v4.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld4 {v0.h,v2.h,v4.h,v6.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld2 {v0.s,v2.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld3 {v0.s,v2.s,v4.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld4 {v0.s,v2.s,v4.s,v6.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld2 {v0.d,v2.d}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld3 {v0.d,v2.d,v4.d}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld4 {v0.d,v2.d,v4.d,v6.d}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.8b,v2.8b},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.8b,v2.8b,v4.8b},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.8b,v2.8b,v4.8b,v6.8b},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.16b,v2.16b},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.16b,v2.16b,v4.16b},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.16b,v2.16b,v4.16b,v6.16b},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.4h,v2.4h},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.4h,v2.4h,v4.4h},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.4h,v2.4h,v4.4h,v6.4h},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.8h,v2.8h},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.8h,v2.8h,v4.8h},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.8h,v2.8h,v4.8h,v6.8h},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.2s,v2.2s},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.2s,v2.2s,v4.2s},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.2s,v2.2s,v4.2s,v6.2s},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.4s,v2.4s},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.4s,v2.4s,v4.4s},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.4s,v2.4s,v4.4s,v6.4s},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.1d,v2.1d},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.1d,v2.1d,v4.1d},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.1d,v2.1d,v4.1d,v6.1d},\[x0\],x7'
[^:]*:373: Error: .*`ld2r {v0.2d,v2.2d},\[x0\],x7'
[^:]*:373: Error: .*`ld3r {v0.2d,v2.2d,v4.2d},\[x0\],x7'
[^:]*:373: Error: .*`ld4r {v0.2d,v2.2d,v4.2d,v6.2d},\[x0\],x7'
[^:]*:373: Error: .*`st2 {v0.b,v2.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st3 {v0.b,v2.b,v4.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st4 {v0.b,v2.b,v4.b,v6.b}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st2 {v0.h,v2.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st3 {v0.h,v2.h,v4.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st4 {v0.h,v2.h,v4.h,v6.h}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st2 {v0.s,v2.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st3 {v0.s,v2.s,v4.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st4 {v0.s,v2.s,v4.s,v6.s}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st2 {v0.d,v2.d}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st3 {v0.d,v2.d,v4.d}\[1\],\[x0\],x7'
[^:]*:373: Error: .*`st4 {v0.d,v2.d,v4.d,v6.d}\[1\],\[x0\],x7'
[^:]*:396: Error: .*`ld2 {v0.8B,v2.8B},\[x0\]'
[^:]*:396: Error: .*`ld3 {v0.8B,v2.8B,v4.8B},\[x0\]'
[^:]*:396: Error: .*`ld4 {v0.8B,v2.8B,v4.8B,v6.8B},\[x0\]'
[^:]*:397: Error: .*`st2 {v0.8B,v2.8B},\[x0\]'
[^:]*:397: Error: .*`st3 {v0.8B,v2.8B,v4.8B},\[x0\]'
[^:]*:397: Error: .*`st4 {v0.8B,v2.8B,v4.8B,v6.8B},\[x0\]'
[^:]*:399: Error: .*`ld2 {v0.16B,v2.16B},\[x0\]'
[^:]*:399: Error: .*`ld3 {v0.16B,v2.16B,v4.16B},\[x0\]'
[^:]*:399: Error: .*`ld4 {v0.16B,v2.16B,v4.16B,v6.16B},\[x0\]'
[^:]*:400: Error: .*`st2 {v0.16B,v2.16B},\[x0\]'
[^:]*:400: Error: .*`st3 {v0.16B,v2.16B,v4.16B},\[x0\]'
[^:]*:400: Error: .*`st4 {v0.16B,v2.16B,v4.16B,v6.16B},\[x0\]'
[^:]*:402: Error: .*`ld2 {v0.4H,v2.4H},\[x0\]'
[^:]*:402: Error: .*`ld3 {v0.4H,v2.4H,v4.4H},\[x0\]'
[^:]*:402: Error: .*`ld4 {v0.4H,v2.4H,v4.4H,v6.4H},\[x0\]'
[^:]*:403: Error: .*`st2 {v0.4H,v2.4H},\[x0\]'
[^:]*:403: Error: .*`st3 {v0.4H,v2.4H,v4.4H},\[x0\]'
[^:]*:403: Error: .*`st4 {v0.4H,v2.4H,v4.4H,v6.4H},\[x0\]'
[^:]*:405: Error: .*`ld2 {v0.8H,v2.8H},\[x0\]'
[^:]*:405: Error: .*`ld3 {v0.8H,v2.8H,v4.8H},\[x0\]'
[^:]*:405: Error: .*`ld4 {v0.8H,v2.8H,v4.8H,v6.8H},\[x0\]'
[^:]*:406: Error: .*`st2 {v0.8H,v2.8H},\[x0\]'
[^:]*:406: Error: .*`st3 {v0.8H,v2.8H,v4.8H},\[x0\]'
[^:]*:406: Error: .*`st4 {v0.8H,v2.8H,v4.8H,v6.8H},\[x0\]'
[^:]*:408: Error: .*`ld2 {v0.2S,v2.2S},\[x0\]'
[^:]*:408: Error: .*`ld3 {v0.2S,v2.2S,v4.2S},\[x0\]'
[^:]*:408: Error: .*`ld4 {v0.2S,v2.2S,v4.2S,v6.2S},\[x0\]'
[^:]*:409: Error: .*`st2 {v0.2S,v2.2S},\[x0\]'
[^:]*:409: Error: .*`st3 {v0.2S,v2.2S,v4.2S},\[x0\]'
[^:]*:409: Error: .*`st4 {v0.2S,v2.2S,v4.2S,v6.2S},\[x0\]'
[^:]*:411: Error: .*`ld2 {v0.4S,v2.4S},\[x0\]'
[^:]*:411: Error: .*`ld3 {v0.4S,v2.4S,v4.4S},\[x0\]'
[^:]*:411: Error: .*`ld4 {v0.4S,v2.4S,v4.4S,v6.4S},\[x0\]'
[^:]*:412: Error: .*`st2 {v0.4S,v2.4S},\[x0\]'
[^:]*:412: Error: .*`st3 {v0.4S,v2.4S,v4.4S},\[x0\]'
[^:]*:412: Error: .*`st4 {v0.4S,v2.4S,v4.4S,v6.4S},\[x0\]'
[^:]*:414: Error: .*`ld2 {v0.2D,v2.2D},\[x0\]'
[^:]*:414: Error: .*`ld3 {v0.2D,v2.2D,v4.2D},\[x0\]'
[^:]*:414: Error: .*`ld4 {v0.2D,v2.2D,v4.2D,v6.2D},\[x0\]'
[^:]*:415: Error: .*`st2 {v0.2D,v2.2D},\[x0\]'
[^:]*:415: Error: .*`st3 {v0.2D,v2.2D,v4.2D},\[x0\]'
[^:]*:415: Error: .*`st4 {v0.2D,v2.2D,v4.2D,v6.2D},\[x0\]'
[^:]*:423: Error: .*`ld2 {v0.H,v2.H}\[1\],\[x0\]'
[^:]*:423: Error: .*`ld3 {v0.H,v2.H,v4.H}\[1\],\[x0\]'
[^:]*:423: Error: .*`ld4 {v0.H,v2.H,v4.H,v6.H}\[1\],\[x0\]'
[^:]*:424: Error: .*`st2 {v0.H,v2.H}\[1\],\[x0\]'
[^:]*:424: Error: .*`st3 {v0.H,v2.H,v4.H}\[1\],\[x0\]'
[^:]*:424: Error: .*`st4 {v0.H,v2.H,v4.H,v6.H}\[1\],\[x0\]'
[^:]*:426: Error: .*`ld2 {v0.H,v2.H}\[1\],\[x0\]'
[^:]*:426: Error: .*`ld3 {v0.H,v2.H,v4.H}\[1\],\[x0\]'
[^:]*:426: Error: .*`ld4 {v0.H,v2.H,v4.H,v6.H}\[1\],\[x0\]'
[^:]*:427: Error: .*`st2 {v0.H,v2.H}\[1\],\[x0\]'
[^:]*:427: Error: .*`st3 {v0.H,v2.H,v4.H}\[1\],\[x0\]'
[^:]*:427: Error: .*`st4 {v0.H,v2.H,v4.H,v6.H}\[1\],\[x0\]'
[^:]*:429: Error: .*`ld2 {v0.S,v2.S}\[1\],\[x0\]'
[^:]*:429: Error: .*`ld3 {v0.S,v2.S,v4.S}\[1\],\[x0\]'
[^:]*:429: Error: .*`ld4 {v0.S,v2.S,v4.S,v6.S}\[1\],\[x0\]'
[^:]*:430: Error: .*`st2 {v0.S,v2.S}\[1\],\[x0\]'
[^:]*:430: Error: .*`st3 {v0.S,v2.S,v4.S}\[1\],\[x0\]'
[^:]*:430: Error: .*`st4 {v0.S,v2.S,v4.S,v6.S}\[1\],\[x0\]'
[^:]*:432: Error: .*`ld2 {v0.S,v2.S}\[1\],\[x0\]'
[^:]*:432: Error: .*`ld3 {v0.S,v2.S,v4.S}\[1\],\[x0\]'
[^:]*:432: Error: .*`ld4 {v0.S,v2.S,v4.S,v6.S}\[1\],\[x0\]'
[^:]*:433: Error: .*`st2 {v0.S,v2.S}\[1\],\[x0\]'
[^:]*:433: Error: .*`st3 {v0.S,v2.S,v4.S}\[1\],\[x0\]'
[^:]*:433: Error: .*`st4 {v0.S,v2.S,v4.S,v6.S}\[1\],\[x0\]'
[^:]*:435: Error: .*`ld2 {v0.D,v2.D}\[1\],\[x0\]'
[^:]*:435: Error: .*`ld3 {v0.D,v2.D,v4.D}\[1\],\[x0\]'
[^:]*:435: Error: .*`ld4 {v0.D,v2.D,v4.D,v6.D}\[1\],\[x0\]'
[^:]*:436: Error: .*`st2 {v0.D,v2.D}\[1\],\[x0\]'
[^:]*:436: Error: .*`st3 {v0.D,v2.D,v4.D}\[1\],\[x0\]'
[^:]*:436: Error: .*`st4 {v0.D,v2.D,v4.D,v6.D}\[1\],\[x0\]'
[^:]*:438: Error: .*`ld1r {v0.8B,v1.8B},\[x0\]'
[^:]*:438: Error: .*`ld2r {v0.8B,v2.8B},\[x0\]'
[^:]*:438: Error: .*`ld3r {v0.8B,v2.8B,v4.8B},\[x0\]'
[^:]*:438: Error: .*`ld4r {v0.8B,v2.8B,v4.8B,v6.8B},\[x0\]'
[^:]*:440: Error: .*`ld1r {v0.16B,v1.16B},\[x0\]'
[^:]*:440: Error: .*`ld2r {v0.16B,v2.16B},\[x0\]'
[^:]*:440: Error: .*`ld3r {v0.16B,v2.16B,v4.16B},\[x0\]'
[^:]*:440: Error: .*`ld4r {v0.16B,v2.16B,v4.16B,v6.16B},\[x0\]'
[^:]*:442: Error: .*`ld1r {v0.4H,v1.4H},\[x0\]'
[^:]*:442: Error: .*`ld2r {v0.4H,v2.4H},\[x0\]'
[^:]*:442: Error: .*`ld3r {v0.4H,v2.4H,v4.4H},\[x0\]'
[^:]*:442: Error: .*`ld4r {v0.4H,v2.4H,v4.4H,v6.4H},\[x0\]'
[^:]*:444: Error: .*`ld1r {v0.8H,v1.8H},\[x0\]'
[^:]*:444: Error: .*`ld2r {v0.8H,v2.8H},\[x0\]'
[^:]*:444: Error: .*`ld3r {v0.8H,v2.8H,v4.8H},\[x0\]'
[^:]*:444: Error: .*`ld4r {v0.8H,v2.8H,v4.8H,v6.8H},\[x0\]'
[^:]*:446: Error: .*`ld1r {v0.2S,v1.2S},\[x0\]'
[^:]*:446: Error: .*`ld2r {v0.2S,v2.2S},\[x0\]'
[^:]*:446: Error: .*`ld3r {v0.2S,v2.2S,v4.2S},\[x0\]'
[^:]*:446: Error: .*`ld4r {v0.2S,v2.2S,v4.2S,v6.2S},\[x0\]'
[^:]*:448: Error: .*`ld1r {v0.4S,v1.4S},\[x0\]'
[^:]*:448: Error: .*`ld2r {v0.4S,v2.4S},\[x0\]'
[^:]*:448: Error: .*`ld3r {v0.4S,v2.4S,v4.4S},\[x0\]'
[^:]*:448: Error: .*`ld4r {v0.4S,v2.4S,v4.4S,v6.4S},\[x0\]'
[^:]*:450: Error: .*`ld1r {v0.1D,v1.1D},\[x0\]'
[^:]*:450: Error: .*`ld2r {v0.1D,v2.1D},\[x0\]'
[^:]*:450: Error: .*`ld3r {v0.1D,v2.1D,v4.1D},\[x0\]'
[^:]*:450: Error: .*`ld4r {v0.1D,v2.1D,v4.1D,v6.1D},\[x0\]'
[^:]*:452: Error: .*`ld1r {v0.2D,v1.2D},\[x0\]'
[^:]*:452: Error: .*`ld2r {v0.2D,v2.2D},\[x0\]'
[^:]*:452: Error: .*`ld3r {v0.2D,v2.2D,v4.2D},\[x0\]'
[^:]*:452: Error: .*`ld4r {v0.2D,v2.2D,v4.2D,v6.2D},\[x0\]'
[^:]*:454: Error: .*`pmull v0.1q,v1.1d,v2.1d'
[^:]*:455: Error: .*`pmull2 v0.1q,v1.2d,v2.2d'
[^:]*:463: Error: .*`scvtf d0,w1,33'
[^:]*:463: Error: .*`scvtf s0,w0,33'
[^:]*:463: Error: .*`scvtf d0,x1,65'
[^:]*:463: Error: .*`scvtf s0,x1,65'
[^:]*:463: Error: .*`ucvtf d0,w1,33'
[^:]*:463: Error: .*`ucvtf s0,w0,33'
[^:]*:463: Error: .*`ucvtf d0,x1,65'
[^:]*:463: Error: .*`ucvtf s0,x1,65'
[^:]*:469: Error: .*`fcvtzs w1,d0,33'
[^:]*:469: Error: .*`fcvtzs w0,s0,33'
[^:]*:469: Error: .*`fcvtzs x1,d0,65'
[^:]*:469: Error: .*`fcvtzs x1,s0,65'
[^:]*:469: Error: .*`fcvtzu w1,d0,33'
[^:]*:469: Error: .*`fcvtzu w0,s0,33'
[^:]*:469: Error: .*`fcvtzu x1,d0,65'
[^:]*:469: Error: .*`fcvtzu x1,s0,65'
[^:]*:472: Error: .*
[^:]*:475: Error: .*`ldrh w0,\[x1,x2,lsr#1\]'
[^:]*:477: Error: .*`add w0,w1,w2,ror#1'
[^:]*:478: Error: .*`sub w0,w1,w2,asr#32'
[^:]*:479: Error: .*`eor w0,w1,w2,ror#32'
[^:]*:481: Error: .*`add x0,x1,#20,LSL#16'
[^:]*:482: Error: .*`add x0,x1,#20,UXTX#12'
[^:]*:483: Error: .*`add x0,x1,#20,LSR'
[^:]*:484: Error: .*`add x0,x1,#20,LSL'
[^:]*:486: Error: .*`ldnp h7,h15,\[x0,#2\]'
[^:]*:487: Error: .*`ldnp b15,b31,\[x0\],#4'
[^:]*:488: Error: .*`ldnp h0,h1,\[x0,#6\]!'
[^:]*:490: Error: .*`uqrshrn h0,s1,#63'
[^:]*:491: Error: .*`sqshl b7,b15,#8'
[^:]*:493: Error: .*`bfxil w7,w15,#15,#30'
[^:]*:494: Error: .*`bfi x3,x7,#31,#48'
[^:]*:496: Error: .*`str x1,page_table_count'
[^:]*:498: Error: .*`prfm PLDL3KEEP,\[x9,x15,sxtx#2\]'
[^:]*:500: Error: .*`mrs x5,S1_0_C13_C8_0'
[^:]*:501: Error: .*`msr S3_1_C13_C15_1,x7'
[^:]*:502: Error: .*`msr S3_1_C11_C15_-1,x7'
[^:]*:503: Error: .*`msr S3_1_11_15_1,x7'
[^:]*:506: Error: .*`movi w1,#15'
[^:]*:509: Error: .*`uxtb x7,x15'
[^:]*:510: Error: .*`uxth x7,x15'
[^:]*:511: Error: .*`uxtw x7,x15'
[^:]*:512: Error: .*`sxtb w15,xzr'
[^:]*:513: Error: .*`sxth w15,xzr'
[^:]*:514: Error: .*`sxtw w15,xzr'
[^:]*:516: Error: .*`mov w0,v0.b\[0\]'
[^:]*:517: Error: .*`mov w0,v0.h\[0\]'
[^:]*:518: Error: .*`mov w0,v0.d\[0\]'
[^:]*:519: Error: .*`mov x0,v0.b\[0\]'
[^:]*:520: Error: .*`mov x0,v0.h\[0\]'
[^:]*:521: Error: .*`mov x0,v0.s\[0\]'
[^:]*:523: Error: .*`uabdl2 v20\.4S,v12\.8H,v29\.8'
[^:]*:525: Error: .*`movi d1,0xffff,lsl#16'
[^:]*:527: Error: .*`st3 {v18.D-v20.D}\[0\],\[x28\],x'
[^:]*:528: Error: .*`st1 {v7.B}\[2\],\[x4\],x'
[^:]*:529: Error: .*`st1 {v22.1D-v25.1D},\[x10\],x'
[^:]*:531: Error: .*`ldr w0,\[x0\]!'
[^:]*:532: Error: .*`ldr w0,\[x0\],\{127\}'
[^:]*:534: Error: .*`orr x0,x0,#0xff,lsl#1'
[^:]*:535: Error: .*`orr x0. x0,#0xff,lsl#1'
[^:]*:536: Error: .*`orr x0,x0,#0xff lsl#1'
[^:]*:538: Error: .*`mov x0,##5'

View File

@ -0,0 +1,538 @@
/* illegal.s Test file for AArch64 instructions that should be rejected
by the assembler.
Copyright 2011, 2012 Free Software Foundation, Inc. Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.text
// For urecpe and ursqrte, only 2s and 4s are accepted qualifiers.
urecpe v0.1d, v7.1d
urecpe v0.2d, v7.2d
ursqrte v0.1d, v7.1d
ursqrte v0.2d, v7.2d
// For AdvSIMD (across) instructions, there are restraints on the register type and qualifiers.
saddlv b7, v31.8b
saddlv d7, v31.2s
saddlv q7, v31.2d
smaxv s7, v31.2s
sminv d7, v31.2d
fmaxv h7, v31.8h
fmaxv h7, v31.4h
fminv d7, v31.2d
abs b0, b31
neg b0, b31
abs h0, h31
neg h0, h31
abs s0, s31
neg s0, s31
fcvt s0, s0
bfm w0, w1, 8, 43
ubfm w0, x1, 8, 31
aese v1.8b, v2.8b
sha1h s7, d31
sha1h q7, d31
sha1su1 v7.4s, v7.2s
sha256su0 v7.2d, v7.2d
sha1c q7, q3, v7.4s
sha1p s7, q8, v9.4s
sha1m v8.4s, v7.4s, q8
sha1su0 v0.2d, v1.2d, v2.2d
sha256h q7, s2, v8.4s
pmull v7.8b, v15.8b, v31.8b
pmull v7.1q, v15.1q, v31.1d
pmull2 v7.8h, v15.8b, v31.8b
pmull2 v7.1q, v15.2d, v31.1q
ld2 {v1.4h, v0.4h}, [x1]
strb x0, [sp, x1, lsl #0]
strb w7, [x30, x0, lsl]
strb w7, [x30, x0, lsl #1]
ldtr x7, [x15, 266]
sttr x7, [x15, #1]!
stxrb x2, w1, [sp]
stxp w2, x3, w4, [x0]
ldxp w3, x4, [x30]
st2 {v4.2d, v5.2d}, [x3, #3]
st2 {v4.2d, v5.2d, v6.2d}, [x3]
st1 {v4.2d, v6.2d, v8.2d}, [x3]
st3 {v4.2d, v6.2d}, [x3]
st4 {v4.2d, v6.2d}, [x3]
st2 {v4.2d, v6.2d, v8.2d, v10.2d}, [x3]
st2 {v4.2d, v6.2d, v8.2d, v10.2d}, [x3], 48
ext v0.8b, v1.8b, v2.8b, 8
ext v0.16b, v1.16b, v2.16b, 20
tbz w0, #40, 0x17c
svc
fmov v1.D[0], x0
fmov v2.S[2], x0
fmov v2.S[1], x0
fmov v2.D[1], w0
smaddl w0, w1, w2, x3
smaddl x0, x1, w2, x3
smaddl x0, w1, x2, x3
smaddl x0, w1, w2, w3
ld1 {v1.s, v2.s}[1], [x3]
st1 {v2.s, v3.s}[1], [x4]
ld2 {v1.s, v2.s, v3.s}[1], [x3]
st2 {v2.s, v2.s, v3.s}[1], [x4]
ld3 {v1.s, v2.s, v3.s, v4.s}[1], [x3]
st3 {v2.s, v3.s, v4.s, v5.s}[1], [x4]
ld4 {v1.s}[1], [x3]
st4 {v2.s}[1], [x4]
ld2 {v1.b, v3.b}[1], [x3]
st2 {v2.b, v4.b}[1], [x4]
ld3 {v1.b, v3.b, v5.b}[1], [x3]
st3 {v2.b, v4.b, v6.b}[1], [x4]
ld4 {v1.b, v3.b, v5.b, v7.b}[1], [x3]
st4 {v2.b, v4.b, v6.b, v8.b}[1], [x4]
ld1 {v1.q}[1], [x3]
ld1r {v1.4s, v3.4s}, [x3]
ld1r {v1.4s, v2.4s, v3.4s}, [x3]
ld2r {v1.4s, v2.4s, v3.4s}, [x3]
ld3r {v1.4s, v2.4s, v3.4s, v4.4s}, [x3]
ld4r {v1.4s}, [x3]
ld1r {v1.4s, v3.4s}, [x3], x4
ld1r {v1.4s, v2.4s, v3.4s}, [x3], x4
ld2r {v1.4s, v2.4s, v3.4s}, [x3], x4
ld3r {v1.4s, v2.4s, v3.4s, v4.4s}, [x3], x4
ld4r {v1.4s}, [x3], x4
ld1r {v1.4s}, [x3], #1
ld1r {v1.4s, v2.4s}, [x3], #8
ld2r {v1.4s, v2.4s}, [x3], #4
ld3r {v1.4s, v2.4s, v3.4s}, [x3], #16
ld4r {v1.4s, v2.4s, v3.4s, v4.4s}, [x3], #32
addp s1, v2.2s
addp s1, v2.2d
addp d1, v2.2s
fmaxp s1, v2.4s
add s1, s2, s3
cmhi d1, d2, s3
shll v0.8h, v1.8b, 16
shll2 v0.2d, v1.4s, 16
dup s1, v2.d[1]
dup s1, v2.s[4]
mov s1, v2.h[1]
clrex #16
msr daif, w5
mrs w15, midr_el1
mrs x0, dummy
sshr v0.4s, v1.4s, #0
sshr v0.4s, v1.4s, #33
sshr v0.4h, v1.4h, #20
shl v0.4s, v1.4s, #32
fcvtzs v0.4h, v1.4h, #2
uqshrn v0.2s, v1.2d, 33
uqrshrn v0.2s, v1.2s, 32
sshll v8.8h, v2.8b, #8
sysl x7, #10, C15, C7, #11
sysl w7, #1, C15, C7, #1
dsb dummy
dmb #16
isb osh
prfm 0x2f, LABEL1
prfm pldl3strm, [sp, #8]!
prfm pldl3strm, [sp], #8
prfm pldl3strm, [sp, w0, sxtw #3]!
prfm pldl3strm, =0x100
sttr x0, LABEL1
sttr x0, [sp, #16]!
sttr x0, [sp], #16
sttr x0, [sp, x1]
ldur x0, LABEL1
ldur x0, [sp, #16]!
ldur x0, [sp], #16
ldur x0, [sp, x1]
ldr b0, =0x100
ldr h0, LABEL1
ic ivau
ic ivau, w0
ic ialluis, xzr
ic ialluis, x0
sys #0, c0, c0, 0, w0
msr spsel, #16
msr cptr_el2, #15
movz x1,#:abs_g2:u48, lsl #16
movz x1, 0xddee, lsl #8
movz w1,#:abs_g2:u48
movz w1,#:abs_g3:u48
movk x1,#:abs_g1_s:s12
movi v0.4s, #256
movi v0.2d, #0xabcdef
bic v0.4s, #255, msl #8
bic v0.4s, #512
bic v0.4s, #1, lsl #31
// bic v0.4h, #1, lsl #16
orr v0.4s, #255, msl #8
orr v0.4s, #512
movi v0.4s, #127, lsl #4
movi v0.4s, #127, msl #24
// movi v0.4h, #127, lsl #16
mvni v0.4s, #127, lsl #4
mvni v0.4s, #127, msl #24
// mvni v0.4h, #127, lsl #16
fmov v0.2s, #3.1415926
fmov v0.4s, #3.1415926
fmov v0.2d, #3.1415926
fmov x0, #1.0
fmov w0, w1
msr #5, #0
msr SPSel, #2
tbl v0.16b, {v1.16b, v3.16b, v5.16b}, v2.16b
tbx v0.8b, {v1.16b, v3.16b, v5.16b, v7.16b}, v2.8b
// Alternating register list forms are no longer available A64 ISA
.macro ldst2_reg_list_post_imm_reg_64 inst type postreg
\inst\()2 {v0.\type, v2.\type}, [x0], #16
\inst\()2 {v0.\type, v1.\type, v2.\type, v3.\type}, [x0], #32
.ifnb \postreg
\inst\()2 {v0.\type, v2.\type}, [x0], \postreg
\inst\()2 {v0.\type, v1.\type, v2.\type, v3.\type}, [x0], \postreg
.endif
.endm
.macro ldst2_reg_list_post_imm_reg_128 inst type postreg
\inst\()2 {v0.\type, v2.\type}, [x0], #32
\inst\()2 {v0.\type, v1.\type, v2.\type, v3.\type}, [x0], #64
.ifnb \postreg
\inst\()2 {v0.\type, v2.\type}, [x0], \postreg
\inst\()2 {v0.\type, v1.\type, v2.\type, v3.\type}, [x0], \postreg
.endif
.endm
.irp instr ld,st
.irp bits_64 8b, 4h, 2s
ldst2_reg_list_post_imm_reg_64 \instr \bits_64 x7
.endr
.endr
.irp instr ld,st
.irp bits_128 16b, 8h, 4s, 2d
ldst2_reg_list_post_imm_reg_128 \instr \bits_128 x7
.endr
.endr
.macro ldst34_reg_list_post_imm_reg_64 inst type postreg
\inst\()3 {v0.\type, v2.\type, v4.\type}, [x0], #24
\inst\()4 {v0.\type, v2.\type, v4.\type, v6.\type}, [x0], #32
\inst\()3 {v0.\type, v2.\type, v4.\type}, [x0], \postreg
\inst\()4 {v0.\type, v2.\type, v4.\type, v6.\type}, [x0], \postreg
.endm
.macro ldst34_reg_list_post_imm_reg_128 inst type postreg
\inst\()3 {v0.\type, v2.\type, v4.\type}, [x0], #48
\inst\()4 {v0.\type, v2.\type, v4.\type, v6.\type}, [x0], #64
\inst\()3 {v0.\type, v2.\type, v4.\type}, [x0], \postreg
\inst\()4 {v0.\type, v2.\type, v4.\type, v6.\type}, [x0], \postreg
.endm
.irp instr ld,st
.irp bits_64 8b, 4h, 2s
ldst34_reg_list_post_imm_reg_64 \instr \bits_64 x7
.endr
.endr
.irp instr ld,st
.irp bits_128 16b, 8h, 4s, 2d
ldst34_reg_list_post_imm_reg_128 \instr \bits_128 x7
.endr
.endr
// LD1R expects one register only.
ld1r {v0.8b, v1.8b}, [x0], #1
ld1r {v0.16b, v1.16b}, [x0], #1
ld1r {v0.4h, v1.4h}, [x0], #2
ld1r {v0.8h, v1.8h}, [x0], #2
ld1r {v0.2s, v1.2s}, [x0], #4
ld1r {v0.4s, v1.4s}, [x0], #4
ld1r {v0.1d, v1.1d}, [x0], #8
ld1r {v0.2d, v1.2d}, [x0], #8
.macro ldstn_index_rep_H_altreg_imm inst index type rep
\inst\()2\rep {v0.\type, v2.\type}\index, [x0], #4
\inst\()3\rep {v0.\type, v2.\type, v4.\type}\index, [x0], #6
\inst\()4\rep {v0.\type, v2.\type, v4.\type, v6.\type}\index, [x0], #8
.endm
.irp instr, ld, st
ldstn_index_rep_H_altreg_imm \instr index="[1]" type=h rep=""
.ifnc \instr, st
.irp types 4h, 8h
ldstn_index_rep_H_altreg_imm \instr index="" type=\types rep="r"
.endr
.endif
.endr
.macro ldstn_index_rep_S_altreg_imm inst index type rep
\inst\()2\rep {v0.\type, v2.\type}\index, [x0], #8
\inst\()3\rep {v0.\type, v2.\type, v4.\type}\index, [x0], #12
\inst\()4\rep {v0.\type, v2.\type, v4.\type, v6.\type}\index, [x0], #16
.endm
.irp instr, ld, st
ldstn_index_rep_S_altreg_imm \instr index="[1]" type=s rep=""
.ifnc \instr, st
.irp types 2s, 4s
ldstn_index_rep_S_altreg_imm \instr index="" type=\types rep="r"
.endr
.endif
.endr
.macro ldstn_index_rep_D_altreg_imm inst index type rep
\inst\()2\rep {v0.\type, v2.\type}\index, [x0], #16
\inst\()3\rep {v0.\type, v2.\type, v4.\type}\index, [x0], #24
\inst\()4\rep {v0.\type, v2.\type, v4.\type, v6.\type}\index, [x0], #32
.endm
.irp instr, ld, st
ldstn_index_rep_D_altreg_imm \instr index="[1]" type=d rep=""
.ifnc \instr, st
.irp types 1d, 2d
ldstn_index_rep_D_altreg_imm \instr index="" type=\types rep="r"
.endr
.endif
.endr
.irp type 8b, 16b, 4h, 8h, 2s, 4s, 1d, 2d
ld1r {v0.\type, v1.\type}, [x0], x7
.endr
.macro ldstn_index_rep_reg_altreg inst index type rep postreg
\inst\()2\rep {v0.\type, v2.\type}\index, [x0], \postreg
\inst\()3\rep {v0.\type, v2.\type, v4.\type}\index, [x0], \postreg
\inst\()4\rep {v0.\type, v2.\type, v4.\type, v6.\type}\index, [x0], \postreg
.endm
.irp instr, ld, st
.irp itypes b,h,s,d
ldstn_index_rep_reg_altreg \instr index="[1]" type=\itypes rep="" postreg=x7
.endr
.ifnc \instr, st
.irp types 8b, 16b, 4h, 8h, 2s, 4s, 1d, 2d
ldstn_index_rep_reg_altreg \instr index="" type=\types rep="r" postreg=x7
.endr
.endif
.endr
.macro ldnstn_reg_list type inst index rep
.ifb \index
.ifnb \rep
\inst\()1\rep {v0.\type, v1.\type}\index, [x0]
.endif
.endif
.ifnc \type, B
\inst\()2\rep {v0.\type, v2.\type}\index, [x0]
.endif
.ifnc \type, B
\inst\()3\rep {v0.\type, v2.\type, v4.\type}\index, [x0]
.endif
.ifnc \type, B
\inst\()4\rep {v0.\type, v2.\type, v4.\type, v6.\type}\index, [x0]
.endif
.endm
ldnstn_reg_list type="8B", inst="ld" index="" rep=""
ldnstn_reg_list type="8B", inst="st" index="" rep=""
ldnstn_reg_list type="16B", inst="ld" index="" rep=""
ldnstn_reg_list type="16B", inst="st" index="" rep=""
ldnstn_reg_list type="4H", inst="ld" index="" rep=""
ldnstn_reg_list type="4H", inst="st" index="" rep=""
ldnstn_reg_list type="8H", inst="ld" index="" rep=""
ldnstn_reg_list type="8H", inst="st" index="" rep=""
ldnstn_reg_list type="2S", inst="ld" index="" rep=""
ldnstn_reg_list type="2S", inst="st" index="" rep=""
ldnstn_reg_list type="4S", inst="ld" index="" rep=""
ldnstn_reg_list type="4S", inst="st" index="" rep=""
ldnstn_reg_list type="2D", inst="ld" index="" rep=""
ldnstn_reg_list type="2D", inst="st" index="" rep=""
ldnstn_reg_list type="B", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="B", inst="st" index="[1]" rep=""
ldnstn_reg_list type="B", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="B", inst="st" index="[1]" rep=""
ldnstn_reg_list type="H", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="H", inst="st" index="[1]" rep=""
ldnstn_reg_list type="H", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="H", inst="st" index="[1]" rep=""
ldnstn_reg_list type="S", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="S", inst="st" index="[1]" rep=""
ldnstn_reg_list type="S", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="S", inst="st" index="[1]" rep=""
ldnstn_reg_list type="D", inst="ld" index="[1]" rep=""
ldnstn_reg_list type="D", inst="st" index="[1]" rep=""
ldnstn_reg_list type="8B", inst="ld" index="" rep="r"
ldnstn_reg_list type="16B", inst="ld" index="" rep="r"
ldnstn_reg_list type="4H", inst="ld" index="" rep="r"
ldnstn_reg_list type="8H", inst="ld" index="" rep="r"
ldnstn_reg_list type="2S", inst="ld" index="" rep="r"
ldnstn_reg_list type="4S", inst="ld" index="" rep="r"
ldnstn_reg_list type="1D", inst="ld" index="" rep="r"
ldnstn_reg_list type="2D", inst="ld" index="" rep="r"
pmull v0.1q, v1.1d, v2.1d
pmull2 v0.1q, v1.2d, v2.2d
// #<fbits> out of range
.irp instr, scvtf, ucvtf
\instr d0, w1, 33
\instr s0, w0, 33
\instr d0, x1, 65
\instr s0, x1, 65
.endr
.irp instr, fcvtzs, fcvtzu
\instr w1, d0, 33
\instr w0, s0, 33
\instr x1, d0, 65
\instr x1, s0, 65
.endr
// Invalid instruction.
mockup-op
ldrh w0, [x1, x2, lsr #1]
add w0, w1, w2, ror #1
sub w0, w1, w2, asr #32
eor w0, w1, w2, ror #32
add x0, x1, #20, LSL #16
add x0, x1, #20, UXTX #12
add x0, x1, #20, LSR
add x0, x1, #20, LSL
ldnp h7, h15, [x0, #2]
ldnp b15, b31, [x0], #4
ldnp h0, h1, [x0, #6]!
uqrshrn h0, s1, #63
sqshl b7, b15, #8
bfxil w7, w15, #15, #30
bfi x3, x7, #31, #48
str x1,page_table_count
prfm PLDL3KEEP, [x9, x15, sxtx #2]
mrs x5, S1_0_C13_C8_0
msr S3_1_C13_C15_1, x7
msr S3_1_C11_C15_-1, x7
msr S3_1_11_15_1, x7
// MOVI (alias of ORR immediate) is no longer supported.
movi w1, #15
.set u48, 0xaabbccddeeff
uxtb x7, x15
uxth x7, x15
uxtw x7, x15
sxtb w15, xzr
sxth w15, xzr
sxtw w15, xzr
mov w0, v0.b[0]
mov w0, v0.h[0]
mov w0, v0.d[0]
mov x0, v0.b[0]
mov x0, v0.h[0]
mov x0, v0.s[0]
uabdl2 v20.4S, v12.8H, v29.8
movi d1, 0xffff, lsl #16
ST3 {v18.D-v20.D}[0],[x28],x
ST1 {v7.B}[2],[x4],x
ST1 {v22.1D-v25.1D},[x10],x
ldr w0, [x0]!
ldr w0, [x0], {127}
orr x0, x0, #0xff, lsl #1
orr x0. x0, #0xff, lsl #1
orr x0, x0, #0xff lsl #1
mov x0, ##5

View File

@ -0,0 +1,8 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3619194c tbz w12, #3, 2328 <\.text\+0x2328>

View File

@ -0,0 +1,5 @@
// inst-directive.s Test file for AArch64 .inst directive.
// This test file is also useful in testing the disassembler.
.text
.inst 0x3619194c

View File

@ -0,0 +1,80 @@
#objdump: -dr
#as: -march=armv8
.*: file format .*
Disassembly of section .text:
0000000000000000 <.*>:
0: 9ac32041 lsl x1, x2, x3
4: d340fc41 lsr x1, x2, #0
8: d37ff841 lsl x1, x2, #1
c: 93c30441 extr x1, x2, x3, #1
10: 93c3fc41 extr x1, x2, x3, #63
14: 93c30041 extr x1, x2, x3, #0
18: 13837c41 extr w1, w2, w3, #31
1c: 9a9f17e1 cset x1, eq
20: da9f13e1 csetm x1, eq
24: 71000021 subs w1, w1, #0x0
28: 7100003f cmp w1, #0x0
2c: 4b0203e1 neg w1, w2
30: 51000041 sub w1, w2, #0x0
34: f100003f cmp x1, #0x0
38: f1000021 subs x1, x1, #0x0
3c: 32000fe1 orr w1, wzr, #0xf
40: aa0203e1 mov x1, x2
44: 18000061 ldr w1, 50 <sp>
48: 18000621 ldr w1, 10c <sp\+0xbc>
4c: 58000621 ldr x1, 110 <sp\+0xc0>
0000000000000050 <sp>:
50: 12345678 .word 0x12345678
54: d65f03c0 ret
58: d65f03c0 ret
5c: d65f0040 ret x2
60: 8b22603f add sp, x1, x2
64: 91401ca5 add x5, x5, #0x7, lsl #12
68: 8b430441 add x1, x2, x3, lsr #1
6c: 91001ca5 add x5, x5, #0x7
70: 71000421 subs w1, w1, #0x1
74: d2800c82 movz x2, #0x64
78: d2800c82 movz x2, #0x64
7c: d2800c82 movz x2, #0x64
80: d2a00c82 movz x2, #0x64, lsl #16
84: d2a00c82 movz x2, #0x64, lsl #16
88: d2c00c82 movz x2, #0x64, lsl #32
8c: d2c00c82 movz x2, #0x64, lsl #32
90: d2e00c82 movz x2, #0x64, lsl #48
94: d2e00c82 movz x2, #0x64, lsl #48
98: 52800c81 movz w1, #0x64
9c: 52800c81 movz w1, #0x64
a0: 52a00c81 movz w1, #0x64, lsl #16
a4: 8a030041 and x1, x2, x3
a8: 0a0f015e and w30, w10, w15
ac: 12000041 and w1, w2, #0x1
b0: 8a430441 and x1, x2, x3, lsr #1
b4: 32000021 orr w1, w1, #0x1
b8: 32000021 orr w1, w1, #0x1
bc: b2400021 orr x1, x1, #0x1
c0: 92400c41 and x1, x2, #0xf
c4: 12000c41 and w1, w2, #0xf
c8: 92610041 and x1, x2, #0x80000000
cc: 12010041 and w1, w2, #0x80000000
d0: 925d0041 and x1, x2, #0x800000000
d4: 92400c85 and x5, x4, #0xf
d8: 0a230041 bic w1, w2, w3
dc: 8a230041 bic x1, x2, x3
e0: 54000001 b.ne e0 <sp\+0x90>
e4: 17ffffff b e0 <sp\+0x90>
e8: 14000001 b ec <sp\+0x9c>
ec: 54ffffa0 b.eq e0 <sp\+0x90>
f0: 54000001 b.ne f0 <sp\+0xa0>
f4: 17ffffff b f0 <sp\+0xa0>
f8: 14000001 b fc <sp\+0xac>
fc: 54ffffa0 b.eq f0 <sp\+0xa0>
100: d61f0040 br x2
104: 54ffffc2 b.cs fc <sp\+0xac>
108: 54ffffa3 b.cc fc <sp\+0xac>
...
10c: R_AARCH64_ABS32 .text\+0x50
110: R_AARCH64_ABS64 .text\+0x50

View File

@ -0,0 +1,151 @@
// Test file for AArch64 GAS -- basic integer instructions
func:
lsl x1, x2, x3
lsl x1, x2, #0
lsl x1, x2, #1
extr x1, x2, x3, #1
extr x1, x2, x3, #63
extr x1, x2, x3, #0
extr w1, w2, w3, #31
CSET x1, eq
CSETM x1, eq
subs w1,w1,#0
cmp w1,#0
neg w1,w2
sub w1,w2,#0
cmp x1,#0
subs x1,x1,#0
orr w1,wzr,#15
mov x1,x2
ldr w1, sp
ldr w1, =sp
ldr x1, =sp
sp: .word 0x12345678
ret x30
ret
ret x2
add sp,x1,x2
add x5,x5,#0x7, lsl #12
add x1,x2,x3, lsr #1
add x5,x5,#0x7
subs w1,w1,#1
movz x2,#0x64
movz x2,#0x64, lsl #0
movz x2,#:abs_g0:0x64
movz x2,#0x64, lsl #16
movz x2,#:abs_g1:(0x64 << 16)
movz x2,#0x64, lsl #32
movz x2,#:abs_g2:(0x64 << 32)
movz x2,#0x64, lsl #48
movz x2,#:abs_g3:(0x64 << 48)
movz w1,#0x64
movz w1,#0x64, lsl #0
movz w1,#0x64, lsl #16
and x1,x2,x3
and w30,w10,w15
and w1,w2,#1
and x1,x2,x3, lsr #1
orr w1,w1,#1
orr w1,w1,#1
orr x1,x1,#1
and x1,x2,#0xf
and w1,w2,#0xf
and x1,x2,#0x80000000
and w1,w2,#0x80000000
and x1,x2,#0x800000000
// 00010010000101000000010100000011
// 1 2 1 4 0 5 0 3
and x5,x4,#0xf
bic w1,w2,w3
bic x1,x2,x3
1: b.ne 1b
b 1b
b 2f
2: b.eq 1b
3: bne 3b
b 3b
b 4f
4: beq 3b
br x2
bcs 4b
bcc 4b
.if 0
lsl x1, #0, #1
ext x1, x2, x3, #64
ext w1, w2, w3, #63
ext w1, w2, w3, #32
mov w1,#10
neg w1,#1
ldm {x1},[sp]
ldm {x1-x2},[sp]
ldm {x1,x2,x3,x4},sp
ldm {x1-x3},[x1,w2]
subs #0,#1
add x5,x5,#0x7, lsl #1
add x5,x5,#0x7, lsr #1
movz x0,#0x64, lsl #1
movz x0,#0x64, lsl #2
movz x0,#0x64, lsl #3
movz x0,#0x64, lsl #4
movz x0,#0x64, lsl #64
movz w1,#0x64, lsl #32
movz w1,#0x64, lsl #48
orr #0,w1
and sp,x1,x2
and x1,sp,x2
and x1,x2,sp
and w1,#0,x2
and x1,#0,w2
and x1,x2,w3
and x1,w2,x3
and x1,w2,w3
and w1,x2,x3
and w1,x2,w3
and w1,w2,x3
and w1,w2,w3
and x1,x2,#0
and w1,w2,#0x800000000
bic x1,x2,#1
br w2
br sp
.endif
.equ sh,2

View File

@ -0,0 +1,103 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 080f7ce1 stxrb w15, w1, \[x7\]
4: 080f7ce1 stxrb w15, w1, \[x7\]
8: 080f7ce1 stxrb w15, w1, \[x7\]
c: 480f7ce1 stxrh w15, w1, \[x7\]
10: 480f7ce1 stxrh w15, w1, \[x7\]
14: 480f7ce1 stxrh w15, w1, \[x7\]
18: 880f7ce1 stxr w15, w1, \[x7\]
1c: 880f7ce1 stxr w15, w1, \[x7\]
20: 880f7ce1 stxr w15, w1, \[x7\]
24: c80f7ce1 stxr w15, x1, \[x7\]
28: c80f7ce1 stxr w15, x1, \[x7\]
2c: c80f7ce1 stxr w15, x1, \[x7\]
30: 085f7ce1 ldxrb w1, \[x7\]
34: 085f7ce1 ldxrb w1, \[x7\]
38: 085f7ce1 ldxrb w1, \[x7\]
3c: 485f7ce1 ldxrh w1, \[x7\]
40: 485f7ce1 ldxrh w1, \[x7\]
44: 485f7ce1 ldxrh w1, \[x7\]
48: 885f7ce1 ldxr w1, \[x7\]
4c: 885f7ce1 ldxr w1, \[x7\]
50: 885f7ce1 ldxr w1, \[x7\]
54: c85f7ce1 ldxr x1, \[x7\]
58: c85f7ce1 ldxr x1, \[x7\]
5c: c85f7ce1 ldxr x1, \[x7\]
60: 882f08e1 stxp w15, w1, w2, \[x7\]
64: 882f08e1 stxp w15, w1, w2, \[x7\]
68: 882f08e1 stxp w15, w1, w2, \[x7\]
6c: c82f08e1 stxp w15, x1, x2, \[x7\]
70: c82f08e1 stxp w15, x1, x2, \[x7\]
74: c82f08e1 stxp w15, x1, x2, \[x7\]
78: 887f08e1 ldxp w1, w2, \[x7\]
7c: 887f08e1 ldxp w1, w2, \[x7\]
80: 887f08e1 ldxp w1, w2, \[x7\]
84: c87f08e1 ldxp x1, x2, \[x7\]
88: c87f08e1 ldxp x1, x2, \[x7\]
8c: c87f08e1 ldxp x1, x2, \[x7\]
90: 080ffce1 stlxrb w15, w1, \[x7\]
94: 080ffce1 stlxrb w15, w1, \[x7\]
98: 080ffce1 stlxrb w15, w1, \[x7\]
9c: 480ffce1 stlxrh w15, w1, \[x7\]
a0: 480ffce1 stlxrh w15, w1, \[x7\]
a4: 480ffce1 stlxrh w15, w1, \[x7\]
a8: 880ffce1 stlxr w15, w1, \[x7\]
ac: 880ffce1 stlxr w15, w1, \[x7\]
b0: 880ffce1 stlxr w15, w1, \[x7\]
b4: c80ffce1 stlxr w15, x1, \[x7\]
b8: c80ffce1 stlxr w15, x1, \[x7\]
bc: c80ffce1 stlxr w15, x1, \[x7\]
c0: 085ffce1 ldaxrb w1, \[x7\]
c4: 085ffce1 ldaxrb w1, \[x7\]
c8: 085ffce1 ldaxrb w1, \[x7\]
cc: 485ffce1 ldaxrh w1, \[x7\]
d0: 485ffce1 ldaxrh w1, \[x7\]
d4: 485ffce1 ldaxrh w1, \[x7\]
d8: 885ffce1 ldaxr w1, \[x7\]
dc: 885ffce1 ldaxr w1, \[x7\]
e0: 885ffce1 ldaxr w1, \[x7\]
e4: c85ffce1 ldaxr x1, \[x7\]
e8: c85ffce1 ldaxr x1, \[x7\]
ec: c85ffce1 ldaxr x1, \[x7\]
f0: 882f88e1 stlxp w15, w1, w2, \[x7\]
f4: 882f88e1 stlxp w15, w1, w2, \[x7\]
f8: 882f88e1 stlxp w15, w1, w2, \[x7\]
fc: c82f88e1 stlxp w15, x1, x2, \[x7\]
100: c82f88e1 stlxp w15, x1, x2, \[x7\]
104: c82f88e1 stlxp w15, x1, x2, \[x7\]
108: 887f88e1 ldaxp w1, w2, \[x7\]
10c: 887f88e1 ldaxp w1, w2, \[x7\]
110: 887f88e1 ldaxp w1, w2, \[x7\]
114: c87f88e1 ldaxp x1, x2, \[x7\]
118: c87f88e1 ldaxp x1, x2, \[x7\]
11c: c87f88e1 ldaxp x1, x2, \[x7\]
120: 089ffce1 stlrb w1, \[x7\]
124: 089ffce1 stlrb w1, \[x7\]
128: 089ffce1 stlrb w1, \[x7\]
12c: 489ffce1 stlrh w1, \[x7\]
130: 489ffce1 stlrh w1, \[x7\]
134: 489ffce1 stlrh w1, \[x7\]
138: 889ffce1 stlr w1, \[x7\]
13c: 889ffce1 stlr w1, \[x7\]
140: 889ffce1 stlr w1, \[x7\]
144: c89ffce1 stlr x1, \[x7\]
148: c89ffce1 stlr x1, \[x7\]
14c: c89ffce1 stlr x1, \[x7\]
150: 08dffce1 ldarb w1, \[x7\]
154: 08dffce1 ldarb w1, \[x7\]
158: 08dffce1 ldarb w1, \[x7\]
15c: 48dffce1 ldarh w1, \[x7\]
160: 48dffce1 ldarh w1, \[x7\]
164: 48dffce1 ldarh w1, \[x7\]
168: 88dffce1 ldar w1, \[x7\]
16c: 88dffce1 ldar w1, \[x7\]
170: 88dffce1 ldar w1, \[x7\]
174: c8dffce1 ldar x1, \[x7\]
178: c8dffce1 ldar x1, \[x7\]
17c: c8dffce1 ldar x1, \[x7\]

View File

@ -0,0 +1,139 @@
/* ldst-exclusive.s Test file for AArch64 load-store exclusive
instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* <mnemonic> <Wt>, [<Xn|SP>]{,#0}] */
.macro LR32 op
\op w1, [x7]
\op w1, [x7, #0]
\op w1, [x7, 0]
.endm
/* <mnemonic> <Xt>, [<Xn|SP>]{,#0}] */
.macro LR64 op
\op x1, [x7]
\op x1, [x7, #0]
\op x1, [x7, 0]
.endm
/* <mnemonic> <Ws>, <Wt>, [<Xn|SP>]{,#0}] */
.macro SR32 op
\op w15, w1, [x7]
\op w15, w1, [x7, #0]
\op w15, w1, [x7, 0]
.endm
/* <mnemonic> <Ws>, <Xt>, [<Xn|SP>]{,#0}] */
.macro SR64 op
\op w15, x1, [x7]
\op w15, x1, [x7, #0]
\op w15, x1, [x7, 0]
.endm
/* <mnemonic> <Wt1>, <Wt2>, [<Xn|SP>]{,#0}] */
.macro LP32 op
\op w1, w2, [x7]
\op w1, w2, [x7, #0]
\op w1, w2, [x7, 0]
.endm
/* <mnemonic> <Xt1>, <Xt2>, [<Xn|SP>]{,#0}] */
.macro LP64 op
\op x1, x2, [x7]
\op x1, x2, [x7, #0]
\op x1, x2, [x7, 0]
.endm
/* <mnemonic> <Ws>, <Wt1>, <Wt2>, [<Xn|SP>]{,#0}] */
.macro SP32 op
\op w15, w1, w2, [x7]
\op w15, w1, w2, [x7, #0]
\op w15, w1, w2, [x7, 0]
.endm
/* <mnemonic> <Ws>, <Xt1>, <Xt2>, [<Xn|SP>]{,#0}] */
.macro SP64 op
\op w15, x1, x2, [x7]
\op w15, x1, x2, [x7, #0]
\op w15, x1, x2, [x7, 0]
.endm
/* <mnemonic> <Wt>, [<Xn|SP>]{,#0}] */
.macro SL32 op
\op w1, [x7]
\op w1, [x7, #0]
\op w1, [x7, 0]
.endm
/* <mnemonic> <Xt>, [<Xn|SP>]{,#0}] */
.macro SL64 op
\op x1, [x7]
\op x1, [x7, #0]
\op x1, [x7, 0]
.endm
func:
.irp op, stxrb, stxrh, stxr
SR32 \op
.endr
SR64 stxr
.irp op, ldxrb, ldxrh, ldxr
LR32 \op
.endr
LR64 ldxr
SP32 stxp
SP64 stxp
LP32 ldxp
LP64 ldxp
.irp op, stlxrb, stlxrh, stlxr
SR32 \op
.endr
SR64 stlxr
.irp op, ldaxrb, ldaxrh, ldaxr
LR32 \op
.endr
LR64 ldaxr
SP32 stlxp
SP64 stlxp
LP32 ldaxp
LP64 ldaxp
.irp op, stlrb, stlrh, stlr
SL32 \op
.endr
SL64 stlr
.irp op, ldarb, ldarh, ldar
LR32 \op
.endr
LR64 ldar

View File

@ -0,0 +1,214 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3c1007e7 str b7, \[sp\],#-256
4: 3c1557e7 str b7, \[sp\],#-171
8: 3c0007e7 str b7, \[sp\],#0
c: 3c0027e7 str b7, \[sp\],#2
10: 3c0047e7 str b7, \[sp\],#4
14: 3c0087e7 str b7, \[sp\],#8
18: 3c0107e7 str b7, \[sp\],#16
1c: 3c0557e7 str b7, \[sp\],#85
20: 3c0ff7e7 str b7, \[sp\],#255
24: 7c1007e7 str h7, \[sp\],#-256
28: 7c1557e7 str h7, \[sp\],#-171
2c: 7c0007e7 str h7, \[sp\],#0
30: 7c0027e7 str h7, \[sp\],#2
34: 7c0047e7 str h7, \[sp\],#4
38: 7c0087e7 str h7, \[sp\],#8
3c: 7c0107e7 str h7, \[sp\],#16
40: 7c0557e7 str h7, \[sp\],#85
44: 7c0ff7e7 str h7, \[sp\],#255
48: bc1007e7 str s7, \[sp\],#-256
4c: bc1557e7 str s7, \[sp\],#-171
50: bc0007e7 str s7, \[sp\],#0
54: bc0027e7 str s7, \[sp\],#2
58: bc0047e7 str s7, \[sp\],#4
5c: bc0087e7 str s7, \[sp\],#8
60: bc0107e7 str s7, \[sp\],#16
64: bc0557e7 str s7, \[sp\],#85
68: bc0ff7e7 str s7, \[sp\],#255
6c: fc1007e7 str d7, \[sp\],#-256
70: fc1557e7 str d7, \[sp\],#-171
74: fc0007e7 str d7, \[sp\],#0
78: fc0027e7 str d7, \[sp\],#2
7c: fc0047e7 str d7, \[sp\],#4
80: fc0087e7 str d7, \[sp\],#8
84: fc0107e7 str d7, \[sp\],#16
88: fc0557e7 str d7, \[sp\],#85
8c: fc0ff7e7 str d7, \[sp\],#255
90: 3c9007e7 str q7, \[sp\],#-256
94: 3c9557e7 str q7, \[sp\],#-171
98: 3c8007e7 str q7, \[sp\],#0
9c: 3c8027e7 str q7, \[sp\],#2
a0: 3c8047e7 str q7, \[sp\],#4
a4: 3c8087e7 str q7, \[sp\],#8
a8: 3c8107e7 str q7, \[sp\],#16
ac: 3c8557e7 str q7, \[sp\],#85
b0: 3c8ff7e7 str q7, \[sp\],#255
b4: 3c5007e7 ldr b7, \[sp\],#-256
b8: 3c5557e7 ldr b7, \[sp\],#-171
bc: 3c4007e7 ldr b7, \[sp\],#0
c0: 3c4027e7 ldr b7, \[sp\],#2
c4: 3c4047e7 ldr b7, \[sp\],#4
c8: 3c4087e7 ldr b7, \[sp\],#8
cc: 3c4107e7 ldr b7, \[sp\],#16
d0: 3c4557e7 ldr b7, \[sp\],#85
d4: 3c4ff7e7 ldr b7, \[sp\],#255
d8: 7c5007e7 ldr h7, \[sp\],#-256
dc: 7c5557e7 ldr h7, \[sp\],#-171
e0: 7c4007e7 ldr h7, \[sp\],#0
e4: 7c4027e7 ldr h7, \[sp\],#2
e8: 7c4047e7 ldr h7, \[sp\],#4
ec: 7c4087e7 ldr h7, \[sp\],#8
f0: 7c4107e7 ldr h7, \[sp\],#16
f4: 7c4557e7 ldr h7, \[sp\],#85
f8: 7c4ff7e7 ldr h7, \[sp\],#255
fc: bc5007e7 ldr s7, \[sp\],#-256
100: bc5557e7 ldr s7, \[sp\],#-171
104: bc4007e7 ldr s7, \[sp\],#0
108: bc4027e7 ldr s7, \[sp\],#2
10c: bc4047e7 ldr s7, \[sp\],#4
110: bc4087e7 ldr s7, \[sp\],#8
114: bc4107e7 ldr s7, \[sp\],#16
118: bc4557e7 ldr s7, \[sp\],#85
11c: bc4ff7e7 ldr s7, \[sp\],#255
120: fc5007e7 ldr d7, \[sp\],#-256
124: fc5557e7 ldr d7, \[sp\],#-171
128: fc4007e7 ldr d7, \[sp\],#0
12c: fc4027e7 ldr d7, \[sp\],#2
130: fc4047e7 ldr d7, \[sp\],#4
134: fc4087e7 ldr d7, \[sp\],#8
138: fc4107e7 ldr d7, \[sp\],#16
13c: fc4557e7 ldr d7, \[sp\],#85
140: fc4ff7e7 ldr d7, \[sp\],#255
144: 3cd007e7 ldr q7, \[sp\],#-256
148: 3cd557e7 ldr q7, \[sp\],#-171
14c: 3cc007e7 ldr q7, \[sp\],#0
150: 3cc027e7 ldr q7, \[sp\],#2
154: 3cc047e7 ldr q7, \[sp\],#4
158: 3cc087e7 ldr q7, \[sp\],#8
15c: 3cc107e7 ldr q7, \[sp\],#16
160: 3cc557e7 ldr q7, \[sp\],#85
164: 3ccff7e7 ldr q7, \[sp\],#255
168: 381007e7 strb w7, \[sp\],#-256
16c: 381557e7 strb w7, \[sp\],#-171
170: 380007e7 strb w7, \[sp\],#0
174: 380027e7 strb w7, \[sp\],#2
178: 380047e7 strb w7, \[sp\],#4
17c: 380087e7 strb w7, \[sp\],#8
180: 380107e7 strb w7, \[sp\],#16
184: 380557e7 strb w7, \[sp\],#85
188: 380ff7e7 strb w7, \[sp\],#255
18c: 781007e7 strh w7, \[sp\],#-256
190: 781557e7 strh w7, \[sp\],#-171
194: 780007e7 strh w7, \[sp\],#0
198: 780027e7 strh w7, \[sp\],#2
19c: 780047e7 strh w7, \[sp\],#4
1a0: 780087e7 strh w7, \[sp\],#8
1a4: 780107e7 strh w7, \[sp\],#16
1a8: 780557e7 strh w7, \[sp\],#85
1ac: 780ff7e7 strh w7, \[sp\],#255
1b0: b81007e7 str w7, \[sp\],#-256
1b4: b81557e7 str w7, \[sp\],#-171
1b8: b80007e7 str w7, \[sp\],#0
1bc: b80027e7 str w7, \[sp\],#2
1c0: b80047e7 str w7, \[sp\],#4
1c4: b80087e7 str w7, \[sp\],#8
1c8: b80107e7 str w7, \[sp\],#16
1cc: b80557e7 str w7, \[sp\],#85
1d0: b80ff7e7 str w7, \[sp\],#255
1d4: f81007e7 str x7, \[sp\],#-256
1d8: f81557e7 str x7, \[sp\],#-171
1dc: f80007e7 str x7, \[sp\],#0
1e0: f80027e7 str x7, \[sp\],#2
1e4: f80047e7 str x7, \[sp\],#4
1e8: f80087e7 str x7, \[sp\],#8
1ec: f80107e7 str x7, \[sp\],#16
1f0: f80557e7 str x7, \[sp\],#85
1f4: f80ff7e7 str x7, \[sp\],#255
1f8: 385007e7 ldrb w7, \[sp\],#-256
1fc: 385557e7 ldrb w7, \[sp\],#-171
200: 384007e7 ldrb w7, \[sp\],#0
204: 384027e7 ldrb w7, \[sp\],#2
208: 384047e7 ldrb w7, \[sp\],#4
20c: 384087e7 ldrb w7, \[sp\],#8
210: 384107e7 ldrb w7, \[sp\],#16
214: 384557e7 ldrb w7, \[sp\],#85
218: 384ff7e7 ldrb w7, \[sp\],#255
21c: 785007e7 ldrh w7, \[sp\],#-256
220: 785557e7 ldrh w7, \[sp\],#-171
224: 784007e7 ldrh w7, \[sp\],#0
228: 784027e7 ldrh w7, \[sp\],#2
22c: 784047e7 ldrh w7, \[sp\],#4
230: 784087e7 ldrh w7, \[sp\],#8
234: 784107e7 ldrh w7, \[sp\],#16
238: 784557e7 ldrh w7, \[sp\],#85
23c: 784ff7e7 ldrh w7, \[sp\],#255
240: b85007e7 ldr w7, \[sp\],#-256
244: b85557e7 ldr w7, \[sp\],#-171
248: b84007e7 ldr w7, \[sp\],#0
24c: b84027e7 ldr w7, \[sp\],#2
250: b84047e7 ldr w7, \[sp\],#4
254: b84087e7 ldr w7, \[sp\],#8
258: b84107e7 ldr w7, \[sp\],#16
25c: b84557e7 ldr w7, \[sp\],#85
260: b84ff7e7 ldr w7, \[sp\],#255
264: f85007e7 ldr x7, \[sp\],#-256
268: f85557e7 ldr x7, \[sp\],#-171
26c: f84007e7 ldr x7, \[sp\],#0
270: f84027e7 ldr x7, \[sp\],#2
274: f84047e7 ldr x7, \[sp\],#4
278: f84087e7 ldr x7, \[sp\],#8
27c: f84107e7 ldr x7, \[sp\],#16
280: f84557e7 ldr x7, \[sp\],#85
284: f84ff7e7 ldr x7, \[sp\],#255
288: 389007e7 ldrsb x7, \[sp\],#-256
28c: 389557e7 ldrsb x7, \[sp\],#-171
290: 388007e7 ldrsb x7, \[sp\],#0
294: 388027e7 ldrsb x7, \[sp\],#2
298: 388047e7 ldrsb x7, \[sp\],#4
29c: 388087e7 ldrsb x7, \[sp\],#8
2a0: 388107e7 ldrsb x7, \[sp\],#16
2a4: 388557e7 ldrsb x7, \[sp\],#85
2a8: 388ff7e7 ldrsb x7, \[sp\],#255
2ac: 789007e7 ldrsh x7, \[sp\],#-256
2b0: 789557e7 ldrsh x7, \[sp\],#-171
2b4: 788007e7 ldrsh x7, \[sp\],#0
2b8: 788027e7 ldrsh x7, \[sp\],#2
2bc: 788047e7 ldrsh x7, \[sp\],#4
2c0: 788087e7 ldrsh x7, \[sp\],#8
2c4: 788107e7 ldrsh x7, \[sp\],#16
2c8: 788557e7 ldrsh x7, \[sp\],#85
2cc: 788ff7e7 ldrsh x7, \[sp\],#255
2d0: b89007e7 ldrsw x7, \[sp\],#-256
2d4: b89557e7 ldrsw x7, \[sp\],#-171
2d8: b88007e7 ldrsw x7, \[sp\],#0
2dc: b88027e7 ldrsw x7, \[sp\],#2
2e0: b88047e7 ldrsw x7, \[sp\],#4
2e4: b88087e7 ldrsw x7, \[sp\],#8
2e8: b88107e7 ldrsw x7, \[sp\],#16
2ec: b88557e7 ldrsw x7, \[sp\],#85
2f0: b88ff7e7 ldrsw x7, \[sp\],#255
2f4: 38d007e7 ldrsb w7, \[sp\],#-256
2f8: 38d557e7 ldrsb w7, \[sp\],#-171
2fc: 38c007e7 ldrsb w7, \[sp\],#0
300: 38c027e7 ldrsb w7, \[sp\],#2
304: 38c047e7 ldrsb w7, \[sp\],#4
308: 38c087e7 ldrsb w7, \[sp\],#8
30c: 38c107e7 ldrsb w7, \[sp\],#16
310: 38c557e7 ldrsb w7, \[sp\],#85
314: 38cff7e7 ldrsb w7, \[sp\],#255
318: 78d007e7 ldrsh w7, \[sp\],#-256
31c: 78d557e7 ldrsh w7, \[sp\],#-171
320: 78c007e7 ldrsh w7, \[sp\],#0
324: 78c027e7 ldrsh w7, \[sp\],#2
328: 78c047e7 ldrsh w7, \[sp\],#4
32c: 78c087e7 ldrsh w7, \[sp\],#8
330: 78c107e7 ldrsh w7, \[sp\],#16
334: 78c557e7 ldrsh w7, \[sp\],#85
338: 78cff7e7 ldrsh w7, \[sp\],#255

View File

@ -0,0 +1,62 @@
/* ldst-reg-imm-post-ind.s Test file for AArch64
load-store reg. (imm.post-ind.) instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro op2 op, reg, simm
\op \reg\()7, [sp], #\simm
.endm
// load to or store from core register
.macro ld_or_st op, suffix, reg
.irp simm, -256, -171, 0, 2, 4, 8, 16, 85, 255
op2 \op\suffix, \reg, \simm
.endr
.endm
// load to or store from FP/SIMD register
.macro ld_or_st_v op
.irp reg, b, h, s, d, q
.irp simm, -256, -171, 0, 2, 4, 8, 16, 85, 255
op2 \op, \reg, \simm
.endr
.endr
.endm
func:
// load to or store from FP/SIMD register
ld_or_st_v str
ld_or_st_v ldr
// load to or store from core register
// op, suffix, reg
ld_or_st str, b, w
ld_or_st str, h, w
ld_or_st str, , w
ld_or_st str, , x
ld_or_st ldr, b, w
ld_or_st ldr, h, w
ld_or_st ldr, , w
ld_or_st ldr, , x
ld_or_st ldr, sb, x
ld_or_st ldr, sh, x
ld_or_st ldr, sw, x
ld_or_st ldr, sb, w
ld_or_st ldr, sh, w

View File

@ -0,0 +1,214 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3c100fe7 str b7, \[sp,#-256\]!
4: 3c155fe7 str b7, \[sp,#-171\]!
8: 3c000fe7 str b7, \[sp,#0\]!
c: 3c002fe7 str b7, \[sp,#2\]!
10: 3c004fe7 str b7, \[sp,#4\]!
14: 3c008fe7 str b7, \[sp,#8\]!
18: 3c010fe7 str b7, \[sp,#16\]!
1c: 3c055fe7 str b7, \[sp,#85\]!
20: 3c0fffe7 str b7, \[sp,#255\]!
24: 7c100fe7 str h7, \[sp,#-256\]!
28: 7c155fe7 str h7, \[sp,#-171\]!
2c: 7c000fe7 str h7, \[sp,#0\]!
30: 7c002fe7 str h7, \[sp,#2\]!
34: 7c004fe7 str h7, \[sp,#4\]!
38: 7c008fe7 str h7, \[sp,#8\]!
3c: 7c010fe7 str h7, \[sp,#16\]!
40: 7c055fe7 str h7, \[sp,#85\]!
44: 7c0fffe7 str h7, \[sp,#255\]!
48: bc100fe7 str s7, \[sp,#-256\]!
4c: bc155fe7 str s7, \[sp,#-171\]!
50: bc000fe7 str s7, \[sp,#0\]!
54: bc002fe7 str s7, \[sp,#2\]!
58: bc004fe7 str s7, \[sp,#4\]!
5c: bc008fe7 str s7, \[sp,#8\]!
60: bc010fe7 str s7, \[sp,#16\]!
64: bc055fe7 str s7, \[sp,#85\]!
68: bc0fffe7 str s7, \[sp,#255\]!
6c: fc100fe7 str d7, \[sp,#-256\]!
70: fc155fe7 str d7, \[sp,#-171\]!
74: fc000fe7 str d7, \[sp,#0\]!
78: fc002fe7 str d7, \[sp,#2\]!
7c: fc004fe7 str d7, \[sp,#4\]!
80: fc008fe7 str d7, \[sp,#8\]!
84: fc010fe7 str d7, \[sp,#16\]!
88: fc055fe7 str d7, \[sp,#85\]!
8c: fc0fffe7 str d7, \[sp,#255\]!
90: 3c900fe7 str q7, \[sp,#-256\]!
94: 3c955fe7 str q7, \[sp,#-171\]!
98: 3c800fe7 str q7, \[sp,#0\]!
9c: 3c802fe7 str q7, \[sp,#2\]!
a0: 3c804fe7 str q7, \[sp,#4\]!
a4: 3c808fe7 str q7, \[sp,#8\]!
a8: 3c810fe7 str q7, \[sp,#16\]!
ac: 3c855fe7 str q7, \[sp,#85\]!
b0: 3c8fffe7 str q7, \[sp,#255\]!
b4: 3c500fe7 ldr b7, \[sp,#-256\]!
b8: 3c555fe7 ldr b7, \[sp,#-171\]!
bc: 3c400fe7 ldr b7, \[sp,#0\]!
c0: 3c402fe7 ldr b7, \[sp,#2\]!
c4: 3c404fe7 ldr b7, \[sp,#4\]!
c8: 3c408fe7 ldr b7, \[sp,#8\]!
cc: 3c410fe7 ldr b7, \[sp,#16\]!
d0: 3c455fe7 ldr b7, \[sp,#85\]!
d4: 3c4fffe7 ldr b7, \[sp,#255\]!
d8: 7c500fe7 ldr h7, \[sp,#-256\]!
dc: 7c555fe7 ldr h7, \[sp,#-171\]!
e0: 7c400fe7 ldr h7, \[sp,#0\]!
e4: 7c402fe7 ldr h7, \[sp,#2\]!
e8: 7c404fe7 ldr h7, \[sp,#4\]!
ec: 7c408fe7 ldr h7, \[sp,#8\]!
f0: 7c410fe7 ldr h7, \[sp,#16\]!
f4: 7c455fe7 ldr h7, \[sp,#85\]!
f8: 7c4fffe7 ldr h7, \[sp,#255\]!
fc: bc500fe7 ldr s7, \[sp,#-256\]!
100: bc555fe7 ldr s7, \[sp,#-171\]!
104: bc400fe7 ldr s7, \[sp,#0\]!
108: bc402fe7 ldr s7, \[sp,#2\]!
10c: bc404fe7 ldr s7, \[sp,#4\]!
110: bc408fe7 ldr s7, \[sp,#8\]!
114: bc410fe7 ldr s7, \[sp,#16\]!
118: bc455fe7 ldr s7, \[sp,#85\]!
11c: bc4fffe7 ldr s7, \[sp,#255\]!
120: fc500fe7 ldr d7, \[sp,#-256\]!
124: fc555fe7 ldr d7, \[sp,#-171\]!
128: fc400fe7 ldr d7, \[sp,#0\]!
12c: fc402fe7 ldr d7, \[sp,#2\]!
130: fc404fe7 ldr d7, \[sp,#4\]!
134: fc408fe7 ldr d7, \[sp,#8\]!
138: fc410fe7 ldr d7, \[sp,#16\]!
13c: fc455fe7 ldr d7, \[sp,#85\]!
140: fc4fffe7 ldr d7, \[sp,#255\]!
144: 3cd00fe7 ldr q7, \[sp,#-256\]!
148: 3cd55fe7 ldr q7, \[sp,#-171\]!
14c: 3cc00fe7 ldr q7, \[sp,#0\]!
150: 3cc02fe7 ldr q7, \[sp,#2\]!
154: 3cc04fe7 ldr q7, \[sp,#4\]!
158: 3cc08fe7 ldr q7, \[sp,#8\]!
15c: 3cc10fe7 ldr q7, \[sp,#16\]!
160: 3cc55fe7 ldr q7, \[sp,#85\]!
164: 3ccfffe7 ldr q7, \[sp,#255\]!
168: 38100fe7 strb w7, \[sp,#-256\]!
16c: 38155fe7 strb w7, \[sp,#-171\]!
170: 38000fe7 strb w7, \[sp,#0\]!
174: 38002fe7 strb w7, \[sp,#2\]!
178: 38004fe7 strb w7, \[sp,#4\]!
17c: 38008fe7 strb w7, \[sp,#8\]!
180: 38010fe7 strb w7, \[sp,#16\]!
184: 38055fe7 strb w7, \[sp,#85\]!
188: 380fffe7 strb w7, \[sp,#255\]!
18c: 78100fe7 strh w7, \[sp,#-256\]!
190: 78155fe7 strh w7, \[sp,#-171\]!
194: 78000fe7 strh w7, \[sp,#0\]!
198: 78002fe7 strh w7, \[sp,#2\]!
19c: 78004fe7 strh w7, \[sp,#4\]!
1a0: 78008fe7 strh w7, \[sp,#8\]!
1a4: 78010fe7 strh w7, \[sp,#16\]!
1a8: 78055fe7 strh w7, \[sp,#85\]!
1ac: 780fffe7 strh w7, \[sp,#255\]!
1b0: b8100fe7 str w7, \[sp,#-256\]!
1b4: b8155fe7 str w7, \[sp,#-171\]!
1b8: b8000fe7 str w7, \[sp,#0\]!
1bc: b8002fe7 str w7, \[sp,#2\]!
1c0: b8004fe7 str w7, \[sp,#4\]!
1c4: b8008fe7 str w7, \[sp,#8\]!
1c8: b8010fe7 str w7, \[sp,#16\]!
1cc: b8055fe7 str w7, \[sp,#85\]!
1d0: b80fffe7 str w7, \[sp,#255\]!
1d4: f8100fe7 str x7, \[sp,#-256\]!
1d8: f8155fe7 str x7, \[sp,#-171\]!
1dc: f8000fe7 str x7, \[sp,#0\]!
1e0: f8002fe7 str x7, \[sp,#2\]!
1e4: f8004fe7 str x7, \[sp,#4\]!
1e8: f8008fe7 str x7, \[sp,#8\]!
1ec: f8010fe7 str x7, \[sp,#16\]!
1f0: f8055fe7 str x7, \[sp,#85\]!
1f4: f80fffe7 str x7, \[sp,#255\]!
1f8: 38500fe7 ldrb w7, \[sp,#-256\]!
1fc: 38555fe7 ldrb w7, \[sp,#-171\]!
200: 38400fe7 ldrb w7, \[sp,#0\]!
204: 38402fe7 ldrb w7, \[sp,#2\]!
208: 38404fe7 ldrb w7, \[sp,#4\]!
20c: 38408fe7 ldrb w7, \[sp,#8\]!
210: 38410fe7 ldrb w7, \[sp,#16\]!
214: 38455fe7 ldrb w7, \[sp,#85\]!
218: 384fffe7 ldrb w7, \[sp,#255\]!
21c: 78500fe7 ldrh w7, \[sp,#-256\]!
220: 78555fe7 ldrh w7, \[sp,#-171\]!
224: 78400fe7 ldrh w7, \[sp,#0\]!
228: 78402fe7 ldrh w7, \[sp,#2\]!
22c: 78404fe7 ldrh w7, \[sp,#4\]!
230: 78408fe7 ldrh w7, \[sp,#8\]!
234: 78410fe7 ldrh w7, \[sp,#16\]!
238: 78455fe7 ldrh w7, \[sp,#85\]!
23c: 784fffe7 ldrh w7, \[sp,#255\]!
240: b8500fe7 ldr w7, \[sp,#-256\]!
244: b8555fe7 ldr w7, \[sp,#-171\]!
248: b8400fe7 ldr w7, \[sp,#0\]!
24c: b8402fe7 ldr w7, \[sp,#2\]!
250: b8404fe7 ldr w7, \[sp,#4\]!
254: b8408fe7 ldr w7, \[sp,#8\]!
258: b8410fe7 ldr w7, \[sp,#16\]!
25c: b8455fe7 ldr w7, \[sp,#85\]!
260: b84fffe7 ldr w7, \[sp,#255\]!
264: f8500fe7 ldr x7, \[sp,#-256\]!
268: f8555fe7 ldr x7, \[sp,#-171\]!
26c: f8400fe7 ldr x7, \[sp,#0\]!
270: f8402fe7 ldr x7, \[sp,#2\]!
274: f8404fe7 ldr x7, \[sp,#4\]!
278: f8408fe7 ldr x7, \[sp,#8\]!
27c: f8410fe7 ldr x7, \[sp,#16\]!
280: f8455fe7 ldr x7, \[sp,#85\]!
284: f84fffe7 ldr x7, \[sp,#255\]!
288: 38900fe7 ldrsb x7, \[sp,#-256\]!
28c: 38955fe7 ldrsb x7, \[sp,#-171\]!
290: 38800fe7 ldrsb x7, \[sp,#0\]!
294: 38802fe7 ldrsb x7, \[sp,#2\]!
298: 38804fe7 ldrsb x7, \[sp,#4\]!
29c: 38808fe7 ldrsb x7, \[sp,#8\]!
2a0: 38810fe7 ldrsb x7, \[sp,#16\]!
2a4: 38855fe7 ldrsb x7, \[sp,#85\]!
2a8: 388fffe7 ldrsb x7, \[sp,#255\]!
2ac: 78900fe7 ldrsh x7, \[sp,#-256\]!
2b0: 78955fe7 ldrsh x7, \[sp,#-171\]!
2b4: 78800fe7 ldrsh x7, \[sp,#0\]!
2b8: 78802fe7 ldrsh x7, \[sp,#2\]!
2bc: 78804fe7 ldrsh x7, \[sp,#4\]!
2c0: 78808fe7 ldrsh x7, \[sp,#8\]!
2c4: 78810fe7 ldrsh x7, \[sp,#16\]!
2c8: 78855fe7 ldrsh x7, \[sp,#85\]!
2cc: 788fffe7 ldrsh x7, \[sp,#255\]!
2d0: b8900fe7 ldrsw x7, \[sp,#-256\]!
2d4: b8955fe7 ldrsw x7, \[sp,#-171\]!
2d8: b8800fe7 ldrsw x7, \[sp,#0\]!
2dc: b8802fe7 ldrsw x7, \[sp,#2\]!
2e0: b8804fe7 ldrsw x7, \[sp,#4\]!
2e4: b8808fe7 ldrsw x7, \[sp,#8\]!
2e8: b8810fe7 ldrsw x7, \[sp,#16\]!
2ec: b8855fe7 ldrsw x7, \[sp,#85\]!
2f0: b88fffe7 ldrsw x7, \[sp,#255\]!
2f4: 38d00fe7 ldrsb w7, \[sp,#-256\]!
2f8: 38d55fe7 ldrsb w7, \[sp,#-171\]!
2fc: 38c00fe7 ldrsb w7, \[sp,#0\]!
300: 38c02fe7 ldrsb w7, \[sp,#2\]!
304: 38c04fe7 ldrsb w7, \[sp,#4\]!
308: 38c08fe7 ldrsb w7, \[sp,#8\]!
30c: 38c10fe7 ldrsb w7, \[sp,#16\]!
310: 38c55fe7 ldrsb w7, \[sp,#85\]!
314: 38cfffe7 ldrsb w7, \[sp,#255\]!
318: 78d00fe7 ldrsh w7, \[sp,#-256\]!
31c: 78d55fe7 ldrsh w7, \[sp,#-171\]!
320: 78c00fe7 ldrsh w7, \[sp,#0\]!
324: 78c02fe7 ldrsh w7, \[sp,#2\]!
328: 78c04fe7 ldrsh w7, \[sp,#4\]!
32c: 78c08fe7 ldrsh w7, \[sp,#8\]!
330: 78c10fe7 ldrsh w7, \[sp,#16\]!
334: 78c55fe7 ldrsh w7, \[sp,#85\]!
338: 78cfffe7 ldrsh w7, \[sp,#255\]!

View File

@ -0,0 +1,62 @@
/* ldst-reg-imm-pre-ind.s Test file for AArch64
load-store reg. (imm.pre-ind.) instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.macro op2 op, reg, simm
\op \reg\()7, [sp, #\simm]!
.endm
// load to or store from core register
.macro ld_or_st op, suffix, reg
.irp simm, -256, -171, 0, 2, 4, 8, 16, 85, 255
op2 \op\suffix, \reg, \simm
.endr
.endm
// load to or store from FP/SIMD register
.macro ld_or_st_v op
.irp reg, b, h, s, d, q
.irp simm, -256, -171, 0, 2, 4, 8, 16, 85, 255
op2 \op, \reg, \simm
.endr
.endr
.endm
func:
// load to or store from FP/SIMD register
ld_or_st_v str
ld_or_st_v ldr
// load to or store from core register
// op, suffix, reg
ld_or_st str, b, w
ld_or_st str, h, w
ld_or_st str, , w
ld_or_st str, , x
ld_or_st ldr, b, w
ld_or_st ldr, h, w
ld_or_st ldr, , w
ld_or_st ldr, , x
ld_or_st ldr, sb, x
ld_or_st ldr, sh, x
ld_or_st ldr, sw, x
ld_or_st ldr, sb, w
ld_or_st ldr, sh, w

View File

@ -0,0 +1,265 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 29203fe7 stp w7, w15, \[sp,#-256\]
4: 2930bfe7 stp w7, w15, \[sp,#-124\]
8: 293fbfe7 stp w7, w15, \[sp,#-4\]
c: 29003fe7 stp w7, w15, \[sp\]
10: 2907bfe7 stp w7, w15, \[sp,#60\]
14: 291fbfe7 stp w7, w15, \[sp,#252\]
18: 29603fe7 ldp w7, w15, \[sp,#-256\]
1c: 2970bfe7 ldp w7, w15, \[sp,#-124\]
20: 297fbfe7 ldp w7, w15, \[sp,#-4\]
24: 29403fe7 ldp w7, w15, \[sp\]
28: 2947bfe7 ldp w7, w15, \[sp,#60\]
2c: 295fbfe7 ldp w7, w15, \[sp,#252\]
30: 69603fe7 ldpsw x7, x15, \[sp,#-256\]
34: 6970bfe7 ldpsw x7, x15, \[sp,#-124\]
38: 697fbfe7 ldpsw x7, x15, \[sp,#-4\]
3c: 69403fe7 ldpsw x7, x15, \[sp\]
40: 6947bfe7 ldpsw x7, x15, \[sp,#60\]
44: 695fbfe7 ldpsw x7, x15, \[sp,#252\]
48: a9203fe7 stp x7, x15, \[sp,#-512\]
4c: a930bfe7 stp x7, x15, \[sp,#-248\]
50: a93fbfe7 stp x7, x15, \[sp,#-8\]
54: a9003fe7 stp x7, x15, \[sp\]
58: a907bfe7 stp x7, x15, \[sp,#120\]
5c: a91fbfe7 stp x7, x15, \[sp,#504\]
60: a9603fe7 ldp x7, x15, \[sp,#-512\]
64: a970bfe7 ldp x7, x15, \[sp,#-248\]
68: a97fbfe7 ldp x7, x15, \[sp,#-8\]
6c: a9403fe7 ldp x7, x15, \[sp\]
70: a947bfe7 ldp x7, x15, \[sp,#120\]
74: a95fbfe7 ldp x7, x15, \[sp,#504\]
78: 2d203fe7 stp s7, s15, \[sp,#-256\]
7c: 2d30bfe7 stp s7, s15, \[sp,#-124\]
80: 2d3fbfe7 stp s7, s15, \[sp,#-4\]
84: 2d003fe7 stp s7, s15, \[sp\]
88: 2d07bfe7 stp s7, s15, \[sp,#60\]
8c: 2d1fbfe7 stp s7, s15, \[sp,#252\]
90: 2d603fe7 ldp s7, s15, \[sp,#-256\]
94: 2d70bfe7 ldp s7, s15, \[sp,#-124\]
98: 2d7fbfe7 ldp s7, s15, \[sp,#-4\]
9c: 2d403fe7 ldp s7, s15, \[sp\]
a0: 2d47bfe7 ldp s7, s15, \[sp,#60\]
a4: 2d5fbfe7 ldp s7, s15, \[sp,#252\]
a8: 6d203fe7 stp d7, d15, \[sp,#-512\]
ac: 6d30bfe7 stp d7, d15, \[sp,#-248\]
b0: 6d3fbfe7 stp d7, d15, \[sp,#-8\]
b4: 6d003fe7 stp d7, d15, \[sp\]
b8: 6d07bfe7 stp d7, d15, \[sp,#120\]
bc: 6d1fbfe7 stp d7, d15, \[sp,#504\]
c0: 6d603fe7 ldp d7, d15, \[sp,#-512\]
c4: 6d70bfe7 ldp d7, d15, \[sp,#-248\]
c8: 6d7fbfe7 ldp d7, d15, \[sp,#-8\]
cc: 6d403fe7 ldp d7, d15, \[sp\]
d0: 6d47bfe7 ldp d7, d15, \[sp,#120\]
d4: 6d5fbfe7 ldp d7, d15, \[sp,#504\]
d8: ad203fe7 stp q7, q15, \[sp,#-1024\]
dc: ad30bfe7 stp q7, q15, \[sp,#-496\]
e0: ad3fbfe7 stp q7, q15, \[sp,#-16\]
e4: ad003fe7 stp q7, q15, \[sp\]
e8: ad07bfe7 stp q7, q15, \[sp,#240\]
ec: ad1fbfe7 stp q7, q15, \[sp,#1008\]
f0: ad603fe7 ldp q7, q15, \[sp,#-1024\]
f4: ad70bfe7 ldp q7, q15, \[sp,#-496\]
f8: ad7fbfe7 ldp q7, q15, \[sp,#-16\]
fc: ad403fe7 ldp q7, q15, \[sp\]
100: ad47bfe7 ldp q7, q15, \[sp,#240\]
104: ad5fbfe7 ldp q7, q15, \[sp,#1008\]
108: 28a03fe7 stp w7, w15, \[sp\],#-256
10c: 28b0bfe7 stp w7, w15, \[sp\],#-124
110: 28bfbfe7 stp w7, w15, \[sp\],#-4
114: 28803fe7 stp w7, w15, \[sp\],#0
118: 2887bfe7 stp w7, w15, \[sp\],#60
11c: 289fbfe7 stp w7, w15, \[sp\],#252
120: 28e03fe7 ldp w7, w15, \[sp\],#-256
124: 28f0bfe7 ldp w7, w15, \[sp\],#-124
128: 28ffbfe7 ldp w7, w15, \[sp\],#-4
12c: 28c03fe7 ldp w7, w15, \[sp\],#0
130: 28c7bfe7 ldp w7, w15, \[sp\],#60
134: 28dfbfe7 ldp w7, w15, \[sp\],#252
138: 68e03fe7 ldpsw x7, x15, \[sp\],#-256
13c: 68f0bfe7 ldpsw x7, x15, \[sp\],#-124
140: 68ffbfe7 ldpsw x7, x15, \[sp\],#-4
144: 68c03fe7 ldpsw x7, x15, \[sp\],#0
148: 68c7bfe7 ldpsw x7, x15, \[sp\],#60
14c: 68dfbfe7 ldpsw x7, x15, \[sp\],#252
150: a8a03fe7 stp x7, x15, \[sp\],#-512
154: a8b0bfe7 stp x7, x15, \[sp\],#-248
158: a8bfbfe7 stp x7, x15, \[sp\],#-8
15c: a8803fe7 stp x7, x15, \[sp\],#0
160: a887bfe7 stp x7, x15, \[sp\],#120
164: a89fbfe7 stp x7, x15, \[sp\],#504
168: a8e03fe7 ldp x7, x15, \[sp\],#-512
16c: a8f0bfe7 ldp x7, x15, \[sp\],#-248
170: a8ffbfe7 ldp x7, x15, \[sp\],#-8
174: a8c03fe7 ldp x7, x15, \[sp\],#0
178: a8c7bfe7 ldp x7, x15, \[sp\],#120
17c: a8dfbfe7 ldp x7, x15, \[sp\],#504
180: 2ca03fe7 stp s7, s15, \[sp\],#-256
184: 2cb0bfe7 stp s7, s15, \[sp\],#-124
188: 2cbfbfe7 stp s7, s15, \[sp\],#-4
18c: 2c803fe7 stp s7, s15, \[sp\],#0
190: 2c87bfe7 stp s7, s15, \[sp\],#60
194: 2c9fbfe7 stp s7, s15, \[sp\],#252
198: 2ce03fe7 ldp s7, s15, \[sp\],#-256
19c: 2cf0bfe7 ldp s7, s15, \[sp\],#-124
1a0: 2cffbfe7 ldp s7, s15, \[sp\],#-4
1a4: 2cc03fe7 ldp s7, s15, \[sp\],#0
1a8: 2cc7bfe7 ldp s7, s15, \[sp\],#60
1ac: 2cdfbfe7 ldp s7, s15, \[sp\],#252
1b0: 6ca03fe7 stp d7, d15, \[sp\],#-512
1b4: 6cb0bfe7 stp d7, d15, \[sp\],#-248
1b8: 6cbfbfe7 stp d7, d15, \[sp\],#-8
1bc: 6c803fe7 stp d7, d15, \[sp\],#0
1c0: 6c87bfe7 stp d7, d15, \[sp\],#120
1c4: 6c9fbfe7 stp d7, d15, \[sp\],#504
1c8: 6ce03fe7 ldp d7, d15, \[sp\],#-512
1cc: 6cf0bfe7 ldp d7, d15, \[sp\],#-248
1d0: 6cffbfe7 ldp d7, d15, \[sp\],#-8
1d4: 6cc03fe7 ldp d7, d15, \[sp\],#0
1d8: 6cc7bfe7 ldp d7, d15, \[sp\],#120
1dc: 6cdfbfe7 ldp d7, d15, \[sp\],#504
1e0: aca03fe7 stp q7, q15, \[sp\],#-1024
1e4: acb0bfe7 stp q7, q15, \[sp\],#-496
1e8: acbfbfe7 stp q7, q15, \[sp\],#-16
1ec: ac803fe7 stp q7, q15, \[sp\],#0
1f0: ac87bfe7 stp q7, q15, \[sp\],#240
1f4: ac9fbfe7 stp q7, q15, \[sp\],#1008
1f8: ace03fe7 ldp q7, q15, \[sp\],#-1024
1fc: acf0bfe7 ldp q7, q15, \[sp\],#-496
200: acffbfe7 ldp q7, q15, \[sp\],#-16
204: acc03fe7 ldp q7, q15, \[sp\],#0
208: acc7bfe7 ldp q7, q15, \[sp\],#240
20c: acdfbfe7 ldp q7, q15, \[sp\],#1008
210: 29a03fe7 stp w7, w15, \[sp,#-256\]!
214: 29b0bfe7 stp w7, w15, \[sp,#-124\]!
218: 29bfbfe7 stp w7, w15, \[sp,#-4\]!
21c: 29803fe7 stp w7, w15, \[sp,#0\]!
220: 2987bfe7 stp w7, w15, \[sp,#60\]!
224: 299fbfe7 stp w7, w15, \[sp,#252\]!
228: 29e03fe7 ldp w7, w15, \[sp,#-256\]!
22c: 29f0bfe7 ldp w7, w15, \[sp,#-124\]!
230: 29ffbfe7 ldp w7, w15, \[sp,#-4\]!
234: 29c03fe7 ldp w7, w15, \[sp,#0\]!
238: 29c7bfe7 ldp w7, w15, \[sp,#60\]!
23c: 29dfbfe7 ldp w7, w15, \[sp,#252\]!
240: 69e03fe7 ldpsw x7, x15, \[sp,#-256\]!
244: 69f0bfe7 ldpsw x7, x15, \[sp,#-124\]!
248: 69ffbfe7 ldpsw x7, x15, \[sp,#-4\]!
24c: 69c03fe7 ldpsw x7, x15, \[sp,#0\]!
250: 69c7bfe7 ldpsw x7, x15, \[sp,#60\]!
254: 69dfbfe7 ldpsw x7, x15, \[sp,#252\]!
258: a9a03fe7 stp x7, x15, \[sp,#-512\]!
25c: a9b0bfe7 stp x7, x15, \[sp,#-248\]!
260: a9bfbfe7 stp x7, x15, \[sp,#-8\]!
264: a9803fe7 stp x7, x15, \[sp,#0\]!
268: a987bfe7 stp x7, x15, \[sp,#120\]!
26c: a99fbfe7 stp x7, x15, \[sp,#504\]!
270: a9e03fe7 ldp x7, x15, \[sp,#-512\]!
274: a9f0bfe7 ldp x7, x15, \[sp,#-248\]!
278: a9ffbfe7 ldp x7, x15, \[sp,#-8\]!
27c: a9c03fe7 ldp x7, x15, \[sp,#0\]!
280: a9c7bfe7 ldp x7, x15, \[sp,#120\]!
284: a9dfbfe7 ldp x7, x15, \[sp,#504\]!
288: 2da03fe7 stp s7, s15, \[sp,#-256\]!
28c: 2db0bfe7 stp s7, s15, \[sp,#-124\]!
290: 2dbfbfe7 stp s7, s15, \[sp,#-4\]!
294: 2d803fe7 stp s7, s15, \[sp,#0\]!
298: 2d87bfe7 stp s7, s15, \[sp,#60\]!
29c: 2d9fbfe7 stp s7, s15, \[sp,#252\]!
2a0: 2de03fe7 ldp s7, s15, \[sp,#-256\]!
2a4: 2df0bfe7 ldp s7, s15, \[sp,#-124\]!
2a8: 2dffbfe7 ldp s7, s15, \[sp,#-4\]!
2ac: 2dc03fe7 ldp s7, s15, \[sp,#0\]!
2b0: 2dc7bfe7 ldp s7, s15, \[sp,#60\]!
2b4: 2ddfbfe7 ldp s7, s15, \[sp,#252\]!
2b8: 6da03fe7 stp d7, d15, \[sp,#-512\]!
2bc: 6db0bfe7 stp d7, d15, \[sp,#-248\]!
2c0: 6dbfbfe7 stp d7, d15, \[sp,#-8\]!
2c4: 6d803fe7 stp d7, d15, \[sp,#0\]!
2c8: 6d87bfe7 stp d7, d15, \[sp,#120\]!
2cc: 6d9fbfe7 stp d7, d15, \[sp,#504\]!
2d0: 6de03fe7 ldp d7, d15, \[sp,#-512\]!
2d4: 6df0bfe7 ldp d7, d15, \[sp,#-248\]!
2d8: 6dffbfe7 ldp d7, d15, \[sp,#-8\]!
2dc: 6dc03fe7 ldp d7, d15, \[sp,#0\]!
2e0: 6dc7bfe7 ldp d7, d15, \[sp,#120\]!
2e4: 6ddfbfe7 ldp d7, d15, \[sp,#504\]!
2e8: ada03fe7 stp q7, q15, \[sp,#-1024\]!
2ec: adb0bfe7 stp q7, q15, \[sp,#-496\]!
2f0: adbfbfe7 stp q7, q15, \[sp,#-16\]!
2f4: ad803fe7 stp q7, q15, \[sp,#0\]!
2f8: ad87bfe7 stp q7, q15, \[sp,#240\]!
2fc: ad9fbfe7 stp q7, q15, \[sp,#1008\]!
300: ade03fe7 ldp q7, q15, \[sp,#-1024\]!
304: adf0bfe7 ldp q7, q15, \[sp,#-496\]!
308: adffbfe7 ldp q7, q15, \[sp,#-16\]!
30c: adc03fe7 ldp q7, q15, \[sp,#0\]!
310: adc7bfe7 ldp q7, q15, \[sp,#240\]!
314: addfbfe7 ldp q7, q15, \[sp,#1008\]!
318: 28203fe7 stnp w7, w15, \[sp,#-256\]
31c: 2830bfe7 stnp w7, w15, \[sp,#-124\]
320: 283fbfe7 stnp w7, w15, \[sp,#-4\]
324: 28003fe7 stnp w7, w15, \[sp\]
328: 2807bfe7 stnp w7, w15, \[sp,#60\]
32c: 281fbfe7 stnp w7, w15, \[sp,#252\]
330: 28603fe7 ldnp w7, w15, \[sp,#-256\]
334: 2870bfe7 ldnp w7, w15, \[sp,#-124\]
338: 287fbfe7 ldnp w7, w15, \[sp,#-4\]
33c: 28403fe7 ldnp w7, w15, \[sp\]
340: 2847bfe7 ldnp w7, w15, \[sp,#60\]
344: 285fbfe7 ldnp w7, w15, \[sp,#252\]
348: a8203fe7 stnp x7, x15, \[sp,#-512\]
34c: a830bfe7 stnp x7, x15, \[sp,#-248\]
350: a83fbfe7 stnp x7, x15, \[sp,#-8\]
354: a8003fe7 stnp x7, x15, \[sp\]
358: a807bfe7 stnp x7, x15, \[sp,#120\]
35c: a81fbfe7 stnp x7, x15, \[sp,#504\]
360: a8603fe7 ldnp x7, x15, \[sp,#-512\]
364: a870bfe7 ldnp x7, x15, \[sp,#-248\]
368: a87fbfe7 ldnp x7, x15, \[sp,#-8\]
36c: a8403fe7 ldnp x7, x15, \[sp\]
370: a847bfe7 ldnp x7, x15, \[sp,#120\]
374: a85fbfe7 ldnp x7, x15, \[sp,#504\]
378: 2c203fe7 stnp s7, s15, \[sp,#-256\]
37c: 2c30bfe7 stnp s7, s15, \[sp,#-124\]
380: 2c3fbfe7 stnp s7, s15, \[sp,#-4\]
384: 2c003fe7 stnp s7, s15, \[sp\]
388: 2c07bfe7 stnp s7, s15, \[sp,#60\]
38c: 2c1fbfe7 stnp s7, s15, \[sp,#252\]
390: 2c603fe7 ldnp s7, s15, \[sp,#-256\]
394: 2c70bfe7 ldnp s7, s15, \[sp,#-124\]
398: 2c7fbfe7 ldnp s7, s15, \[sp,#-4\]
39c: 2c403fe7 ldnp s7, s15, \[sp\]
3a0: 2c47bfe7 ldnp s7, s15, \[sp,#60\]
3a4: 2c5fbfe7 ldnp s7, s15, \[sp,#252\]
3a8: 6c203fe7 stnp d7, d15, \[sp,#-512\]
3ac: 6c30bfe7 stnp d7, d15, \[sp,#-248\]
3b0: 6c3fbfe7 stnp d7, d15, \[sp,#-8\]
3b4: 6c003fe7 stnp d7, d15, \[sp\]
3b8: 6c07bfe7 stnp d7, d15, \[sp,#120\]
3bc: 6c1fbfe7 stnp d7, d15, \[sp,#504\]
3c0: 6c603fe7 ldnp d7, d15, \[sp,#-512\]
3c4: 6c70bfe7 ldnp d7, d15, \[sp,#-248\]
3c8: 6c7fbfe7 ldnp d7, d15, \[sp,#-8\]
3cc: 6c403fe7 ldnp d7, d15, \[sp\]
3d0: 6c47bfe7 ldnp d7, d15, \[sp,#120\]
3d4: 6c5fbfe7 ldnp d7, d15, \[sp,#504\]
3d8: ac203fe7 stnp q7, q15, \[sp,#-1024\]
3dc: ac30bfe7 stnp q7, q15, \[sp,#-496\]
3e0: ac3fbfe7 stnp q7, q15, \[sp,#-16\]
3e4: ac003fe7 stnp q7, q15, \[sp\]
3e8: ac07bfe7 stnp q7, q15, \[sp,#240\]
3ec: ac1fbfe7 stnp q7, q15, \[sp,#1008\]
3f0: ac603fe7 ldnp q7, q15, \[sp,#-1024\]
3f4: ac70bfe7 ldnp q7, q15, \[sp,#-496\]
3f8: ac7fbfe7 ldnp q7, q15, \[sp,#-16\]
3fc: ac403fe7 ldnp q7, q15, \[sp\]
400: ac47bfe7 ldnp q7, q15, \[sp,#240\]
404: ac5fbfe7 ldnp q7, q15, \[sp,#1008\]

View File

@ -0,0 +1,111 @@
/* ldst-reg-pair.s Test file for AArch64 load-store reg.pair instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* Includes:
* Load-store reg.pair (offset)
* Load-store reg.pair (post-ind.)
* Load-store reg.pair (pre-ind.)
* Load-store na.pair (pre-ind.)
*/
// offset format
.macro op3_offset op, reg, imm
\op \reg\()7, \reg\()15, [sp, #\imm]
.endm
// post-ind. format
.macro op3_post_ind op, reg, imm
\op \reg\()7, \reg\()15, [sp], #\imm
.endm
// pre-ind. format
.macro op3_pre_ind op, reg, imm
\op \reg\()7, \reg\()15, [sp, #\imm]!
.endm
.macro op3 op, reg, size, type
// a variety of values for the imm7 field
.irp imm7, -64, -31, -1, 0, 15, 63
// offset format
.ifc \type, 1
op3_offset \op, \reg, "(\imm7*\size)"
.endif
// post-ind. format
.ifc \type, 2
op3_post_ind \op, \reg, "(\imm7*\size)"
.endif
// pre-ind. format
.ifc \type, 3
op3_pre_ind \op, \reg, "(\imm7*\size)"
.endif
.endr
.endm
.macro ldst_reg_pair type
// op, reg, size(in byte) of one of the pair, type
op3 stp, w, 4, \type
op3 ldp, w, 4, \type
op3 ldpsw, x, 4, \type
op3 stp, x, 8, \type
op3 ldp, x, 8, \type
op3 stp, s, 4, \type
op3 ldp, s, 4, \type
op3 stp, d, 8, \type
op3 ldp, d, 8, \type
op3 stp, q, 16, \type
op3 ldp, q, 16, \type
.endm
.macro ldst_reg_na_pair type
// op, reg, size(in byte) of one of the pair, type
op3 stnp, w, 4, \type
op3 ldnp, w, 4, \type
op3 stnp, x, 8, \type
op3 ldnp, x, 8, \type
op3 stnp, s, 4, \type
op3 ldnp, s, 4, \type
op3 stnp, d, 8, \type
op3 ldnp, d, 8, \type
op3 stnp, q, 16, \type
op3 ldnp, q, 16, \type
.endm
func:
// Load-store reg.pair (offset)
ldst_reg_pair 1
// Load-store reg.pair (post-ind.)
ldst_reg_pair 2
// Load-store reg.pair (pre-ind.)
ldst_reg_pair 3
// Load-store na.pair (offset)
ldst_reg_na_pair 1

View File

@ -0,0 +1,87 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3c274be7 str b7, \[sp,w7,uxtw\]
4: 3c275be7 str b7, \[sp,w7,uxtw #0\]
8: 7c274be7 str h7, \[sp,w7,uxtw\]
c: 7c275be7 str h7, \[sp,w7,uxtw #1\]
10: bc274be7 str s7, \[sp,w7,uxtw\]
14: bc275be7 str s7, \[sp,w7,uxtw #2\]
18: fc274be7 str d7, \[sp,w7,uxtw\]
1c: fc275be7 str d7, \[sp,w7,uxtw #3\]
20: 3ca74be7 str q7, \[sp,w7,uxtw\]
24: 3ca75be7 str q7, \[sp,w7,uxtw #4\]
28: 3c276be7 str b7, \[sp,x7\]
2c: 3c277be7 str b7, \[sp,x7,lsl #0\]
30: 7c276be7 str h7, \[sp,x7\]
34: 7c277be7 str h7, \[sp,x7,lsl #1\]
38: bc276be7 str s7, \[sp,x7\]
3c: bc277be7 str s7, \[sp,x7,lsl #2\]
40: fc276be7 str d7, \[sp,x7\]
44: fc277be7 str d7, \[sp,x7,lsl #3\]
48: 3ca76be7 str q7, \[sp,x7\]
4c: 3ca77be7 str q7, \[sp,x7,lsl #4\]
50: 3c27cbe7 str b7, \[sp,w7,sxtw\]
54: 3c27dbe7 str b7, \[sp,w7,sxtw #0\]
58: 7c27cbe7 str h7, \[sp,w7,sxtw\]
5c: 7c27dbe7 str h7, \[sp,w7,sxtw #1\]
60: bc27cbe7 str s7, \[sp,w7,sxtw\]
64: bc27dbe7 str s7, \[sp,w7,sxtw #2\]
68: fc27cbe7 str d7, \[sp,w7,sxtw\]
6c: fc27dbe7 str d7, \[sp,w7,sxtw #3\]
70: 3ca7cbe7 str q7, \[sp,w7,sxtw\]
74: 3ca7dbe7 str q7, \[sp,w7,sxtw #4\]
78: 3c27ebe7 str b7, \[sp,x7,sxtx\]
7c: 3c27fbe7 str b7, \[sp,x7,sxtx #0\]
80: 7c27ebe7 str h7, \[sp,x7,sxtx\]
84: 7c27fbe7 str h7, \[sp,x7,sxtx #1\]
88: bc27ebe7 str s7, \[sp,x7,sxtx\]
8c: bc27fbe7 str s7, \[sp,x7,sxtx #2\]
90: fc27ebe7 str d7, \[sp,x7,sxtx\]
94: fc27fbe7 str d7, \[sp,x7,sxtx #3\]
98: 3ca7ebe7 str q7, \[sp,x7,sxtx\]
9c: 3ca7fbe7 str q7, \[sp,x7,sxtx #4\]
a0: 3c674be7 ldr b7, \[sp,w7,uxtw\]
a4: 3c675be7 ldr b7, \[sp,w7,uxtw #0\]
a8: 7c674be7 ldr h7, \[sp,w7,uxtw\]
ac: 7c675be7 ldr h7, \[sp,w7,uxtw #1\]
b0: bc674be7 ldr s7, \[sp,w7,uxtw\]
b4: bc675be7 ldr s7, \[sp,w7,uxtw #2\]
b8: fc674be7 ldr d7, \[sp,w7,uxtw\]
bc: fc675be7 ldr d7, \[sp,w7,uxtw #3\]
c0: 3ce74be7 ldr q7, \[sp,w7,uxtw\]
c4: 3ce75be7 ldr q7, \[sp,w7,uxtw #4\]
c8: 3c676be7 ldr b7, \[sp,x7\]
cc: 3c677be7 ldr b7, \[sp,x7,lsl #0\]
d0: 7c676be7 ldr h7, \[sp,x7\]
d4: 7c677be7 ldr h7, \[sp,x7,lsl #1\]
d8: bc676be7 ldr s7, \[sp,x7\]
dc: bc677be7 ldr s7, \[sp,x7,lsl #2\]
e0: fc676be7 ldr d7, \[sp,x7\]
e4: fc677be7 ldr d7, \[sp,x7,lsl #3\]
e8: 3ce76be7 ldr q7, \[sp,x7\]
ec: 3ce77be7 ldr q7, \[sp,x7,lsl #4\]
f0: 3c67cbe7 ldr b7, \[sp,w7,sxtw\]
f4: 3c67dbe7 ldr b7, \[sp,w7,sxtw #0\]
f8: 7c67cbe7 ldr h7, \[sp,w7,sxtw\]
fc: 7c67dbe7 ldr h7, \[sp,w7,sxtw #1\]
100: bc67cbe7 ldr s7, \[sp,w7,sxtw\]
104: bc67dbe7 ldr s7, \[sp,w7,sxtw #2\]
108: fc67cbe7 ldr d7, \[sp,w7,sxtw\]
10c: fc67dbe7 ldr d7, \[sp,w7,sxtw #3\]
110: 3ce7cbe7 ldr q7, \[sp,w7,sxtw\]
114: 3ce7dbe7 ldr q7, \[sp,w7,sxtw #4\]
118: 3c67ebe7 ldr b7, \[sp,x7,sxtx\]
11c: 3c67fbe7 ldr b7, \[sp,x7,sxtx #0\]
120: 7c67ebe7 ldr h7, \[sp,x7,sxtx\]
124: 7c67fbe7 ldr h7, \[sp,x7,sxtx #1\]
128: bc67ebe7 ldr s7, \[sp,x7,sxtx\]
12c: bc67fbe7 ldr s7, \[sp,x7,sxtx #2\]
130: fc67ebe7 ldr d7, \[sp,x7,sxtx\]
134: fc67fbe7 ldr d7, \[sp,x7,sxtx #3\]
138: 3ce7ebe7 ldr q7, \[sp,x7,sxtx\]
13c: 3ce7fbe7 ldr q7, \[sp,x7,sxtx #4\]

View File

@ -0,0 +1,88 @@
/* ldst-reg-reg-offset.s Test file for AArch64 load-store reg. (reg.offset)
instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* Only instructions loading from/storing to FP/SIMD register are
tested here. */
.macro op3_32 op, reg, ext, imm
.ifc \imm, -1
\op \reg\()7, [sp, w7, \ext]
.else
\op \reg\()7, [sp, w7, \ext #\imm]
.endif
.endm
.macro op3_64 op, reg, ext, imm
.ifc \imm, -1
\op \reg\()7, [sp, x7, \ext]
.else
\op \reg\()7, [sp, x7, \ext #\imm]
.endif
.endm
.macro op3 op, reg, ext, imm=-1
.ifc \ext, uxtw
op3_32 \op, \reg, \ext, \imm
.endif
.ifc \ext, sxtw
op3_32 \op, \reg, \ext, \imm
.endif
.ifc \ext, lsl
.ifnc \imm, -1
// shift <amount> is mandatory when 'lsl' is used
op3_64 \op, \reg, \ext, \imm
.else
// absent shift; lsl by default
\op \reg\()7, [sp, x7]
.endif
.endif
.ifc \ext, sxtx
op3_64 \op, \reg, \ext, \imm
.endif
.endm
.macro shift op, ext
op3 \op, b, \ext
op3 \op, b, \ext, 0
op3 \op, h, \ext, 0
op3 \op, h, \ext, 1
op3 \op, s, \ext, 0
op3 \op, s, \ext, 2
op3 \op, d, \ext, 0
op3 \op, d, \ext, 3
op3 \op, q, \ext, 0
op3 \op, q, \ext, 4
.endm
.macro extend op
.irp ext, uxtw, lsl, sxtw, sxtx
shift \op, \ext
.endr
.endm
.macro ld_or_st op
extend \op
.endm
func:
ld_or_st str
ld_or_st ldr

View File

@ -0,0 +1,260 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3c1003e7 str b7, \[sp,#-256\]
4: 3c1553e7 str b7, \[sp,#-171\]
8: 3d0003e7 str b7, \[sp\]
c: 3d0003e7 str b7, \[sp\]
10: 3d000be7 str b7, \[sp,#2\]
14: 3d0013e7 str b7, \[sp,#4\]
18: 3d0023e7 str b7, \[sp,#8\]
1c: 3d0043e7 str b7, \[sp,#16\]
20: 3d0157e7 str b7, \[sp,#85\]
24: 3d03ffe7 str b7, \[sp,#255\]
28: 3d3fffe7 str b7, \[sp,#4095\]
2c: 7c1003e7 str h7, \[sp,#-256\]
30: 7c1553e7 str h7, \[sp,#-171\]
34: 7d0003e7 str h7, \[sp\]
38: 7d0003e7 str h7, \[sp\]
3c: 7d0007e7 str h7, \[sp,#2\]
40: 7d000be7 str h7, \[sp,#4\]
44: 7d0013e7 str h7, \[sp,#8\]
48: 7d0023e7 str h7, \[sp,#16\]
4c: 7c0553e7 str h7, \[sp,#85\]
50: 7c0ff3e7 str h7, \[sp,#255\]
54: 7d3fffe7 str h7, \[sp,#8190\]
58: bc1003e7 str s7, \[sp,#-256\]
5c: bc1553e7 str s7, \[sp,#-171\]
60: bd0003e7 str s7, \[sp\]
64: bd0003e7 str s7, \[sp\]
68: bc0023e7 str s7, \[sp,#2\]
6c: bd0007e7 str s7, \[sp,#4\]
70: bd000be7 str s7, \[sp,#8\]
74: bd0013e7 str s7, \[sp,#16\]
78: bc0553e7 str s7, \[sp,#85\]
7c: bc0ff3e7 str s7, \[sp,#255\]
80: bd3fffe7 str s7, \[sp,#16380\]
84: fc1003e7 str d7, \[sp,#-256\]
88: fc1553e7 str d7, \[sp,#-171\]
8c: fd0003e7 str d7, \[sp\]
90: fd0003e7 str d7, \[sp\]
94: fc0023e7 str d7, \[sp,#2\]
98: fc0043e7 str d7, \[sp,#4\]
9c: fd0007e7 str d7, \[sp,#8\]
a0: fd000be7 str d7, \[sp,#16\]
a4: fc0553e7 str d7, \[sp,#85\]
a8: fc0ff3e7 str d7, \[sp,#255\]
ac: fd3fffe7 str d7, \[sp,#32760\]
b0: 3c9003e7 str q7, \[sp,#-256\]
b4: 3c9553e7 str q7, \[sp,#-171\]
b8: 3d8003e7 str q7, \[sp\]
bc: 3d8003e7 str q7, \[sp\]
c0: 3c8023e7 str q7, \[sp,#2\]
c4: 3c8043e7 str q7, \[sp,#4\]
c8: 3c8083e7 str q7, \[sp,#8\]
cc: 3d8007e7 str q7, \[sp,#16\]
d0: 3c8553e7 str q7, \[sp,#85\]
d4: 3c8ff3e7 str q7, \[sp,#255\]
d8: 3dbfffe7 str q7, \[sp,#65520\]
dc: 3c5003e7 ldr b7, \[sp,#-256\]
e0: 3c5553e7 ldr b7, \[sp,#-171\]
e4: 3d4003e7 ldr b7, \[sp\]
e8: 3d4003e7 ldr b7, \[sp\]
ec: 3d400be7 ldr b7, \[sp,#2\]
f0: 3d4013e7 ldr b7, \[sp,#4\]
f4: 3d4023e7 ldr b7, \[sp,#8\]
f8: 3d4043e7 ldr b7, \[sp,#16\]
fc: 3d4157e7 ldr b7, \[sp,#85\]
100: 3d43ffe7 ldr b7, \[sp,#255\]
104: 3d7fffe7 ldr b7, \[sp,#4095\]
108: 7c5003e7 ldr h7, \[sp,#-256\]
10c: 7c5553e7 ldr h7, \[sp,#-171\]
110: 7d4003e7 ldr h7, \[sp\]
114: 7d4003e7 ldr h7, \[sp\]
118: 7d4007e7 ldr h7, \[sp,#2\]
11c: 7d400be7 ldr h7, \[sp,#4\]
120: 7d4013e7 ldr h7, \[sp,#8\]
124: 7d4023e7 ldr h7, \[sp,#16\]
128: 7c4553e7 ldr h7, \[sp,#85\]
12c: 7c4ff3e7 ldr h7, \[sp,#255\]
130: 7d7fffe7 ldr h7, \[sp,#8190\]
134: bc5003e7 ldr s7, \[sp,#-256\]
138: bc5553e7 ldr s7, \[sp,#-171\]
13c: bd4003e7 ldr s7, \[sp\]
140: bd4003e7 ldr s7, \[sp\]
144: bc4023e7 ldr s7, \[sp,#2\]
148: bd4007e7 ldr s7, \[sp,#4\]
14c: bd400be7 ldr s7, \[sp,#8\]
150: bd4013e7 ldr s7, \[sp,#16\]
154: bc4553e7 ldr s7, \[sp,#85\]
158: bc4ff3e7 ldr s7, \[sp,#255\]
15c: bd7fffe7 ldr s7, \[sp,#16380\]
160: fc5003e7 ldr d7, \[sp,#-256\]
164: fc5553e7 ldr d7, \[sp,#-171\]
168: fd4003e7 ldr d7, \[sp\]
16c: fd4003e7 ldr d7, \[sp\]
170: fc4023e7 ldr d7, \[sp,#2\]
174: fc4043e7 ldr d7, \[sp,#4\]
178: fd4007e7 ldr d7, \[sp,#8\]
17c: fd400be7 ldr d7, \[sp,#16\]
180: fc4553e7 ldr d7, \[sp,#85\]
184: fc4ff3e7 ldr d7, \[sp,#255\]
188: fd7fffe7 ldr d7, \[sp,#32760\]
18c: 3cd003e7 ldr q7, \[sp,#-256\]
190: 3cd553e7 ldr q7, \[sp,#-171\]
194: 3dc003e7 ldr q7, \[sp\]
198: 3dc003e7 ldr q7, \[sp\]
19c: 3cc023e7 ldr q7, \[sp,#2\]
1a0: 3cc043e7 ldr q7, \[sp,#4\]
1a4: 3cc083e7 ldr q7, \[sp,#8\]
1a8: 3dc007e7 ldr q7, \[sp,#16\]
1ac: 3cc553e7 ldr q7, \[sp,#85\]
1b0: 3ccff3e7 ldr q7, \[sp,#255\]
1b4: 3dffffe7 ldr q7, \[sp,#65520\]
1b8: 381003e7 strb w7, \[sp,#-256\]
1bc: 381553e7 strb w7, \[sp,#-171\]
1c0: 390003e7 strb w7, \[sp\]
1c4: 390003e7 strb w7, \[sp\]
1c8: 39000be7 strb w7, \[sp,#2\]
1cc: 390013e7 strb w7, \[sp,#4\]
1d0: 390023e7 strb w7, \[sp,#8\]
1d4: 390043e7 strb w7, \[sp,#16\]
1d8: 390157e7 strb w7, \[sp,#85\]
1dc: 3903ffe7 strb w7, \[sp,#255\]
1e0: 393fffe7 strb w7, \[sp,#4095\]
1e4: 781003e7 strh w7, \[sp,#-256\]
1e8: 781553e7 strh w7, \[sp,#-171\]
1ec: 790003e7 strh w7, \[sp\]
1f0: 790003e7 strh w7, \[sp\]
1f4: 790007e7 strh w7, \[sp,#2\]
1f8: 79000be7 strh w7, \[sp,#4\]
1fc: 790013e7 strh w7, \[sp,#8\]
200: 790023e7 strh w7, \[sp,#16\]
204: 780553e7 strh w7, \[sp,#85\]
208: 780ff3e7 strh w7, \[sp,#255\]
20c: 793fffe7 strh w7, \[sp,#8190\]
210: b81003e7 str w7, \[sp,#-256\]
214: b81553e7 str w7, \[sp,#-171\]
218: b90003e7 str w7, \[sp\]
21c: b90003e7 str w7, \[sp\]
220: b80023e7 str w7, \[sp,#2\]
224: b90007e7 str w7, \[sp,#4\]
228: b9000be7 str w7, \[sp,#8\]
22c: b90013e7 str w7, \[sp,#16\]
230: b80553e7 str w7, \[sp,#85\]
234: b80ff3e7 str w7, \[sp,#255\]
238: b93fffe7 str w7, \[sp,#16380\]
23c: f81003e7 str x7, \[sp,#-256\]
240: f81553e7 str x7, \[sp,#-171\]
244: f90003e7 str x7, \[sp\]
248: f90003e7 str x7, \[sp\]
24c: f80023e7 str x7, \[sp,#2\]
250: f80043e7 str x7, \[sp,#4\]
254: f90007e7 str x7, \[sp,#8\]
258: f9000be7 str x7, \[sp,#16\]
25c: f80553e7 str x7, \[sp,#85\]
260: f80ff3e7 str x7, \[sp,#255\]
264: f93fffe7 str x7, \[sp,#32760\]
268: 385003e7 ldrb w7, \[sp,#-256\]
26c: 385553e7 ldrb w7, \[sp,#-171\]
270: 394003e7 ldrb w7, \[sp\]
274: 394003e7 ldrb w7, \[sp\]
278: 39400be7 ldrb w7, \[sp,#2\]
27c: 394013e7 ldrb w7, \[sp,#4\]
280: 394023e7 ldrb w7, \[sp,#8\]
284: 394043e7 ldrb w7, \[sp,#16\]
288: 394157e7 ldrb w7, \[sp,#85\]
28c: 3943ffe7 ldrb w7, \[sp,#255\]
290: 397fffe7 ldrb w7, \[sp,#4095\]
294: 785003e7 ldrh w7, \[sp,#-256\]
298: 785553e7 ldrh w7, \[sp,#-171\]
29c: 794003e7 ldrh w7, \[sp\]
2a0: 794003e7 ldrh w7, \[sp\]
2a4: 794007e7 ldrh w7, \[sp,#2\]
2a8: 79400be7 ldrh w7, \[sp,#4\]
2ac: 794013e7 ldrh w7, \[sp,#8\]
2b0: 794023e7 ldrh w7, \[sp,#16\]
2b4: 784553e7 ldrh w7, \[sp,#85\]
2b8: 784ff3e7 ldrh w7, \[sp,#255\]
2bc: 797fffe7 ldrh w7, \[sp,#8190\]
2c0: b85003e7 ldr w7, \[sp,#-256\]
2c4: b85553e7 ldr w7, \[sp,#-171\]
2c8: b94003e7 ldr w7, \[sp\]
2cc: b94003e7 ldr w7, \[sp\]
2d0: b84023e7 ldr w7, \[sp,#2\]
2d4: b94007e7 ldr w7, \[sp,#4\]
2d8: b9400be7 ldr w7, \[sp,#8\]
2dc: b94013e7 ldr w7, \[sp,#16\]
2e0: b84553e7 ldr w7, \[sp,#85\]
2e4: b84ff3e7 ldr w7, \[sp,#255\]
2e8: b97fffe7 ldr w7, \[sp,#16380\]
2ec: f85003e7 ldr x7, \[sp,#-256\]
2f0: f85553e7 ldr x7, \[sp,#-171\]
2f4: f94003e7 ldr x7, \[sp\]
2f8: f94003e7 ldr x7, \[sp\]
2fc: f84023e7 ldr x7, \[sp,#2\]
300: f84043e7 ldr x7, \[sp,#4\]
304: f94007e7 ldr x7, \[sp,#8\]
308: f9400be7 ldr x7, \[sp,#16\]
30c: f84553e7 ldr x7, \[sp,#85\]
310: f84ff3e7 ldr x7, \[sp,#255\]
314: f97fffe7 ldr x7, \[sp,#32760\]
318: 389003e7 ldrsb x7, \[sp,#-256\]
31c: 389553e7 ldrsb x7, \[sp,#-171\]
320: 398003e7 ldrsb x7, \[sp\]
324: 398003e7 ldrsb x7, \[sp\]
328: 39800be7 ldrsb x7, \[sp,#2\]
32c: 398013e7 ldrsb x7, \[sp,#4\]
330: 398023e7 ldrsb x7, \[sp,#8\]
334: 398043e7 ldrsb x7, \[sp,#16\]
338: 398157e7 ldrsb x7, \[sp,#85\]
33c: 3983ffe7 ldrsb x7, \[sp,#255\]
340: 39bfffe7 ldrsb x7, \[sp,#4095\]
344: 789003e7 ldrsh x7, \[sp,#-256\]
348: 789553e7 ldrsh x7, \[sp,#-171\]
34c: 798003e7 ldrsh x7, \[sp\]
350: 798003e7 ldrsh x7, \[sp\]
354: 798007e7 ldrsh x7, \[sp,#2\]
358: 79800be7 ldrsh x7, \[sp,#4\]
35c: 798013e7 ldrsh x7, \[sp,#8\]
360: 798023e7 ldrsh x7, \[sp,#16\]
364: 788553e7 ldrsh x7, \[sp,#85\]
368: 788ff3e7 ldrsh x7, \[sp,#255\]
36c: 79bfffe7 ldrsh x7, \[sp,#8190\]
370: b89003e7 ldrsw x7, \[sp,#-256\]
374: b89553e7 ldrsw x7, \[sp,#-171\]
378: b98003e7 ldrsw x7, \[sp\]
37c: b98003e7 ldrsw x7, \[sp\]
380: b88023e7 ldrsw x7, \[sp,#2\]
384: b98007e7 ldrsw x7, \[sp,#4\]
388: b9800be7 ldrsw x7, \[sp,#8\]
38c: b98013e7 ldrsw x7, \[sp,#16\]
390: b88553e7 ldrsw x7, \[sp,#85\]
394: b88ff3e7 ldrsw x7, \[sp,#255\]
398: b9bfffe7 ldrsw x7, \[sp,#16380\]
39c: 38d003e7 ldrsb w7, \[sp,#-256\]
3a0: 38d553e7 ldrsb w7, \[sp,#-171\]
3a4: 39c003e7 ldrsb w7, \[sp\]
3a8: 39c003e7 ldrsb w7, \[sp\]
3ac: 39c00be7 ldrsb w7, \[sp,#2\]
3b0: 39c013e7 ldrsb w7, \[sp,#4\]
3b4: 39c023e7 ldrsb w7, \[sp,#8\]
3b8: 39c043e7 ldrsb w7, \[sp,#16\]
3bc: 39c157e7 ldrsb w7, \[sp,#85\]
3c0: 39c3ffe7 ldrsb w7, \[sp,#255\]
3c4: 39ffffe7 ldrsb w7, \[sp,#4095\]
3c8: 78d003e7 ldrsh w7, \[sp,#-256\]
3cc: 78d553e7 ldrsh w7, \[sp,#-171\]
3d0: 79c003e7 ldrsh w7, \[sp\]
3d4: 79c003e7 ldrsh w7, \[sp\]
3d8: 79c007e7 ldrsh w7, \[sp,#2\]
3dc: 79c00be7 ldrsh w7, \[sp,#4\]
3e0: 79c013e7 ldrsh w7, \[sp,#8\]
3e4: 79c023e7 ldrsh w7, \[sp,#16\]
3e8: 78c553e7 ldrsh w7, \[sp,#85\]
3ec: 78cff3e7 ldrsh w7, \[sp,#255\]
3f0: 79ffffe7 ldrsh w7, \[sp,#8190\]

View File

@ -0,0 +1,102 @@
/* ld-reg-uns-imm.s Test file for AArch64 load-store reg. (uns.imm)
instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* Prefetch memory instruction is not tested here.
Also note that as a programmer-friendly assembler, GAS generates
LDUR/STUR instructions in response to the standard LDR/STR mnemonics
when the immediate offset is unambiguous, i.e. when it is negative
or unaligned. Similarly a disassembler could display these
instructions using the standard LDR/STR mnemonics when the encoded
immediate is negative or unaligned. However this behaviour is not
required by the architectural assembly language. */
.macro op2_no_imm op, reg
\op \reg\()7, [sp]
.endm
.macro op2 op, reg, simm
\op \reg\()7, [sp, #\simm]
.endm
// load to or store from core register
// size is the access size in byte
.macro ld_or_st op, suffix, reg, size
.irp simm, -256, -171
op2 \op\suffix, \reg, \simm
.endr
op2_no_imm \op\suffix, \reg
.irp simm, 0, 2, 4, 8, 16, 85, 255
op2 \op\suffix, \reg, \simm
.endr
op2 \op\suffix, \reg, "(4095*\size)"
.endm
// load to or store from FP/SIMD register
.macro ld_or_st_v op
.irp reg, b, h, s, d, q
.irp simm, -256, -171
op2 \op, \reg, \simm
.endr
op2_no_imm \op, \reg
.irp simm, 0, 2, 4, 8, 16, 85, 255
op2 \op, \reg, \simm
.endr
.ifc \reg, b
op2 \op, \reg, 4095
.endif
.ifc \reg, h
op2 \op, \reg, 8190
.endif
.ifc \reg, s
op2 \op, \reg, 16380
.endif
.ifc \reg, d
op2 \op, \reg, 32760
.endif
.ifc \reg, q
op2 \op, \reg, 65520
.endif
.endr
.endm
func:
// load to or store from FP/SIMD register
ld_or_st_v str
ld_or_st_v ldr
// load to or store from core register
// op, suffix, reg, size(in byte)
ld_or_st str, b, w, 1
ld_or_st str, h, w, 2
ld_or_st str, , w, 4
ld_or_st str, , x, 8
ld_or_st ldr, b, w, 1
ld_or_st ldr, h, w, 2
ld_or_st ldr, , w, 4
ld_or_st ldr, , x, 8
ld_or_st ldr, sb, x, 1
ld_or_st ldr, sh, x, 2
ld_or_st ldr, sw, x, 4
ld_or_st ldr, sb, w, 1
ld_or_st ldr, sh, w, 2

View File

@ -0,0 +1,237 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 3c1003e7 str b7, \[sp,#-256\]
4: 3c1553e7 str b7, \[sp,#-171\]
8: 3c0003e7 stur b7, \[sp\]
c: 3c0003e7 stur b7, \[sp\]
10: 3c0023e7 stur b7, \[sp,#2\]
14: 3c0043e7 stur b7, \[sp,#4\]
18: 3c0083e7 stur b7, \[sp,#8\]
1c: 3c0103e7 stur b7, \[sp,#16\]
20: 3c0553e7 stur b7, \[sp,#85\]
24: 3c0ff3e7 stur b7, \[sp,#255\]
28: 7c1003e7 str h7, \[sp,#-256\]
2c: 7c1553e7 str h7, \[sp,#-171\]
30: 7c0003e7 stur h7, \[sp\]
34: 7c0003e7 stur h7, \[sp\]
38: 7c0023e7 stur h7, \[sp,#2\]
3c: 7c0043e7 stur h7, \[sp,#4\]
40: 7c0083e7 stur h7, \[sp,#8\]
44: 7c0103e7 stur h7, \[sp,#16\]
48: 7c0553e7 str h7, \[sp,#85\]
4c: 7c0ff3e7 str h7, \[sp,#255\]
50: bc1003e7 str s7, \[sp,#-256\]
54: bc1553e7 str s7, \[sp,#-171\]
58: bc0003e7 stur s7, \[sp\]
5c: bc0003e7 stur s7, \[sp\]
60: bc0023e7 str s7, \[sp,#2\]
64: bc0043e7 stur s7, \[sp,#4\]
68: bc0083e7 stur s7, \[sp,#8\]
6c: bc0103e7 stur s7, \[sp,#16\]
70: bc0553e7 str s7, \[sp,#85\]
74: bc0ff3e7 str s7, \[sp,#255\]
78: fc1003e7 str d7, \[sp,#-256\]
7c: fc1553e7 str d7, \[sp,#-171\]
80: fc0003e7 stur d7, \[sp\]
84: fc0003e7 stur d7, \[sp\]
88: fc0023e7 str d7, \[sp,#2\]
8c: fc0043e7 str d7, \[sp,#4\]
90: fc0083e7 stur d7, \[sp,#8\]
94: fc0103e7 stur d7, \[sp,#16\]
98: fc0553e7 str d7, \[sp,#85\]
9c: fc0ff3e7 str d7, \[sp,#255\]
a0: 3c9003e7 str q7, \[sp,#-256\]
a4: 3c9553e7 str q7, \[sp,#-171\]
a8: 3c8003e7 stur q7, \[sp\]
ac: 3c8003e7 stur q7, \[sp\]
b0: 3c8023e7 str q7, \[sp,#2\]
b4: 3c8043e7 str q7, \[sp,#4\]
b8: 3c8083e7 str q7, \[sp,#8\]
bc: 3c8103e7 stur q7, \[sp,#16\]
c0: 3c8553e7 str q7, \[sp,#85\]
c4: 3c8ff3e7 str q7, \[sp,#255\]
c8: 3c5003e7 ldr b7, \[sp,#-256\]
cc: 3c5553e7 ldr b7, \[sp,#-171\]
d0: 3c4003e7 ldur b7, \[sp\]
d4: 3c4003e7 ldur b7, \[sp\]
d8: 3c4023e7 ldur b7, \[sp,#2\]
dc: 3c4043e7 ldur b7, \[sp,#4\]
e0: 3c4083e7 ldur b7, \[sp,#8\]
e4: 3c4103e7 ldur b7, \[sp,#16\]
e8: 3c4553e7 ldur b7, \[sp,#85\]
ec: 3c4ff3e7 ldur b7, \[sp,#255\]
f0: 7c5003e7 ldr h7, \[sp,#-256\]
f4: 7c5553e7 ldr h7, \[sp,#-171\]
f8: 7c4003e7 ldur h7, \[sp\]
fc: 7c4003e7 ldur h7, \[sp\]
100: 7c4023e7 ldur h7, \[sp,#2\]
104: 7c4043e7 ldur h7, \[sp,#4\]
108: 7c4083e7 ldur h7, \[sp,#8\]
10c: 7c4103e7 ldur h7, \[sp,#16\]
110: 7c4553e7 ldr h7, \[sp,#85\]
114: 7c4ff3e7 ldr h7, \[sp,#255\]
118: bc5003e7 ldr s7, \[sp,#-256\]
11c: bc5553e7 ldr s7, \[sp,#-171\]
120: bc4003e7 ldur s7, \[sp\]
124: bc4003e7 ldur s7, \[sp\]
128: bc4023e7 ldr s7, \[sp,#2\]
12c: bc4043e7 ldur s7, \[sp,#4\]
130: bc4083e7 ldur s7, \[sp,#8\]
134: bc4103e7 ldur s7, \[sp,#16\]
138: bc4553e7 ldr s7, \[sp,#85\]
13c: bc4ff3e7 ldr s7, \[sp,#255\]
140: fc5003e7 ldr d7, \[sp,#-256\]
144: fc5553e7 ldr d7, \[sp,#-171\]
148: fc4003e7 ldur d7, \[sp\]
14c: fc4003e7 ldur d7, \[sp\]
150: fc4023e7 ldr d7, \[sp,#2\]
154: fc4043e7 ldr d7, \[sp,#4\]
158: fc4083e7 ldur d7, \[sp,#8\]
15c: fc4103e7 ldur d7, \[sp,#16\]
160: fc4553e7 ldr d7, \[sp,#85\]
164: fc4ff3e7 ldr d7, \[sp,#255\]
168: 3cd003e7 ldr q7, \[sp,#-256\]
16c: 3cd553e7 ldr q7, \[sp,#-171\]
170: 3cc003e7 ldur q7, \[sp\]
174: 3cc003e7 ldur q7, \[sp\]
178: 3cc023e7 ldr q7, \[sp,#2\]
17c: 3cc043e7 ldr q7, \[sp,#4\]
180: 3cc083e7 ldr q7, \[sp,#8\]
184: 3cc103e7 ldur q7, \[sp,#16\]
188: 3cc553e7 ldr q7, \[sp,#85\]
18c: 3ccff3e7 ldr q7, \[sp,#255\]
190: 381003e7 strb w7, \[sp,#-256\]
194: 381553e7 strb w7, \[sp,#-171\]
198: 380003e7 sturb w7, \[sp\]
19c: 380003e7 sturb w7, \[sp\]
1a0: 380023e7 sturb w7, \[sp,#2\]
1a4: 380043e7 sturb w7, \[sp,#4\]
1a8: 380083e7 sturb w7, \[sp,#8\]
1ac: 380103e7 sturb w7, \[sp,#16\]
1b0: 380553e7 sturb w7, \[sp,#85\]
1b4: 380ff3e7 sturb w7, \[sp,#255\]
1b8: 781003e7 strh w7, \[sp,#-256\]
1bc: 781553e7 strh w7, \[sp,#-171\]
1c0: 780003e7 sturh w7, \[sp\]
1c4: 780003e7 sturh w7, \[sp\]
1c8: 780023e7 sturh w7, \[sp,#2\]
1cc: 780043e7 sturh w7, \[sp,#4\]
1d0: 780083e7 sturh w7, \[sp,#8\]
1d4: 780103e7 sturh w7, \[sp,#16\]
1d8: 780553e7 strh w7, \[sp,#85\]
1dc: 780ff3e7 strh w7, \[sp,#255\]
1e0: b81003e7 str w7, \[sp,#-256\]
1e4: b81553e7 str w7, \[sp,#-171\]
1e8: b80003e7 stur w7, \[sp\]
1ec: b80003e7 stur w7, \[sp\]
1f0: b80023e7 str w7, \[sp,#2\]
1f4: b80043e7 stur w7, \[sp,#4\]
1f8: b80083e7 stur w7, \[sp,#8\]
1fc: b80103e7 stur w7, \[sp,#16\]
200: b80553e7 str w7, \[sp,#85\]
204: b80ff3e7 str w7, \[sp,#255\]
208: f81003e7 str x7, \[sp,#-256\]
20c: f81553e7 str x7, \[sp,#-171\]
210: f80003e7 stur x7, \[sp\]
214: f80003e7 stur x7, \[sp\]
218: f80023e7 str x7, \[sp,#2\]
21c: f80043e7 str x7, \[sp,#4\]
220: f80083e7 stur x7, \[sp,#8\]
224: f80103e7 stur x7, \[sp,#16\]
228: f80553e7 str x7, \[sp,#85\]
22c: f80ff3e7 str x7, \[sp,#255\]
230: 385003e7 ldrb w7, \[sp,#-256\]
234: 385553e7 ldrb w7, \[sp,#-171\]
238: 384003e7 ldurb w7, \[sp\]
23c: 384003e7 ldurb w7, \[sp\]
240: 384023e7 ldurb w7, \[sp,#2\]
244: 384043e7 ldurb w7, \[sp,#4\]
248: 384083e7 ldurb w7, \[sp,#8\]
24c: 384103e7 ldurb w7, \[sp,#16\]
250: 384553e7 ldurb w7, \[sp,#85\]
254: 384ff3e7 ldurb w7, \[sp,#255\]
258: 785003e7 ldrh w7, \[sp,#-256\]
25c: 785553e7 ldrh w7, \[sp,#-171\]
260: 784003e7 ldurh w7, \[sp\]
264: 784003e7 ldurh w7, \[sp\]
268: 784023e7 ldurh w7, \[sp,#2\]
26c: 784043e7 ldurh w7, \[sp,#4\]
270: 784083e7 ldurh w7, \[sp,#8\]
274: 784103e7 ldurh w7, \[sp,#16\]
278: 784553e7 ldrh w7, \[sp,#85\]
27c: 784ff3e7 ldrh w7, \[sp,#255\]
280: b85003e7 ldr w7, \[sp,#-256\]
284: b85553e7 ldr w7, \[sp,#-171\]
288: b84003e7 ldur w7, \[sp\]
28c: b84003e7 ldur w7, \[sp\]
290: b84023e7 ldr w7, \[sp,#2\]
294: b84043e7 ldur w7, \[sp,#4\]
298: b84083e7 ldur w7, \[sp,#8\]
29c: b84103e7 ldur w7, \[sp,#16\]
2a0: b84553e7 ldr w7, \[sp,#85\]
2a4: b84ff3e7 ldr w7, \[sp,#255\]
2a8: f85003e7 ldr x7, \[sp,#-256\]
2ac: f85553e7 ldr x7, \[sp,#-171\]
2b0: f84003e7 ldur x7, \[sp\]
2b4: f84003e7 ldur x7, \[sp\]
2b8: f84023e7 ldr x7, \[sp,#2\]
2bc: f84043e7 ldr x7, \[sp,#4\]
2c0: f84083e7 ldur x7, \[sp,#8\]
2c4: f84103e7 ldur x7, \[sp,#16\]
2c8: f84553e7 ldr x7, \[sp,#85\]
2cc: f84ff3e7 ldr x7, \[sp,#255\]
2d0: 389003e7 ldrsb x7, \[sp,#-256\]
2d4: 389553e7 ldrsb x7, \[sp,#-171\]
2d8: 388003e7 ldursb x7, \[sp\]
2dc: 388003e7 ldursb x7, \[sp\]
2e0: 388023e7 ldursb x7, \[sp,#2\]
2e4: 388043e7 ldursb x7, \[sp,#4\]
2e8: 388083e7 ldursb x7, \[sp,#8\]
2ec: 388103e7 ldursb x7, \[sp,#16\]
2f0: 388553e7 ldursb x7, \[sp,#85\]
2f4: 388ff3e7 ldursb x7, \[sp,#255\]
2f8: 789003e7 ldrsh x7, \[sp,#-256\]
2fc: 789553e7 ldrsh x7, \[sp,#-171\]
300: 788003e7 ldursh x7, \[sp\]
304: 788003e7 ldursh x7, \[sp\]
308: 788023e7 ldursh x7, \[sp,#2\]
30c: 788043e7 ldursh x7, \[sp,#4\]
310: 788083e7 ldursh x7, \[sp,#8\]
314: 788103e7 ldursh x7, \[sp,#16\]
318: 788553e7 ldrsh x7, \[sp,#85\]
31c: 788ff3e7 ldrsh x7, \[sp,#255\]
320: b89003e7 ldrsw x7, \[sp,#-256\]
324: b89553e7 ldrsw x7, \[sp,#-171\]
328: b88003e7 ldursw x7, \[sp\]
32c: b88003e7 ldursw x7, \[sp\]
330: b88023e7 ldrsw x7, \[sp,#2\]
334: b88043e7 ldursw x7, \[sp,#4\]
338: b88083e7 ldursw x7, \[sp,#8\]
33c: b88103e7 ldursw x7, \[sp,#16\]
340: b88553e7 ldrsw x7, \[sp,#85\]
344: b88ff3e7 ldrsw x7, \[sp,#255\]
348: 38d003e7 ldrsb w7, \[sp,#-256\]
34c: 38d553e7 ldrsb w7, \[sp,#-171\]
350: 38c003e7 ldursb w7, \[sp\]
354: 38c003e7 ldursb w7, \[sp\]
358: 38c023e7 ldursb w7, \[sp,#2\]
35c: 38c043e7 ldursb w7, \[sp,#4\]
360: 38c083e7 ldursb w7, \[sp,#8\]
364: 38c103e7 ldursb w7, \[sp,#16\]
368: 38c553e7 ldursb w7, \[sp,#85\]
36c: 38cff3e7 ldursb w7, \[sp,#255\]
370: 78d003e7 ldrsh w7, \[sp,#-256\]
374: 78d553e7 ldrsh w7, \[sp,#-171\]
378: 78c003e7 ldursh w7, \[sp\]
37c: 78c003e7 ldursh w7, \[sp\]
380: 78c023e7 ldursh w7, \[sp,#2\]
384: 78c043e7 ldursh w7, \[sp,#4\]
388: 78c083e7 ldursh w7, \[sp,#8\]
38c: 78c103e7 ldursh w7, \[sp,#16\]
390: 78c553e7 ldrsh w7, \[sp,#85\]
394: 78cff3e7 ldrsh w7, \[sp,#255\]

View File

@ -0,0 +1,82 @@
/* ldst-reg-unscaled-imm.s Test file for AArch64
load-store reg. (unscaled imm.) instructions.
Copyright 2011, 2012 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
/* Prefetch memory instruction is not tested here.
Also note that a programmer-friendly disassembler could display
LDUR/STUR instructions using the standard LDR/STR mnemonics when
the encoded immediate is negative or unaligned. However this behaviour
is not required by the architectural assembly language. */
.macro op2_no_imm op, reg
\op \reg\()7, [sp]
.endm
.macro op2 op, reg, simm
\op \reg\()7, [sp, #\simm]
.endm
// load to or store from core register
.macro ld_or_st op, suffix, reg
.irp simm, -256, -171
op2 \op\suffix, \reg, \simm
.endr
op2_no_imm \op\suffix, \reg
.irp simm, 0, 2, 4, 8, 16, 85, 255
op2 \op\suffix, \reg, \simm
.endr
.endm
// load to or store from FP/SIMD register
.macro ld_or_st_v op
.irp reg, b, h, s, d, q
.irp simm, -256, -171
op2 \op, \reg, \simm
.endr
op2_no_imm \op, \reg
.irp simm, 0, 2, 4, 8, 16, 85, 255
op2 \op, \reg, \simm
.endr
.endr
.endm
func:
// load to or store from FP/SIMD register
ld_or_st_v stur
ld_or_st_v ldur
// load to or store from core register
// op, suffix, reg
ld_or_st stur, b, w
ld_or_st stur, h, w
ld_or_st stur, , w
ld_or_st stur, , x
ld_or_st ldur, b, w
ld_or_st ldur, h, w
ld_or_st ldur, , w
ld_or_st ldur, , x
ld_or_st ldur, sb, x
ld_or_st ldur, sh, x
ld_or_st ldur, sw, x
ld_or_st ldur, sb, w
ld_or_st ldur, sh, w

View File

@ -0,0 +1,2 @@
#name: Legacy register names errors
#error-output: legacy_reg_names.l

View File

@ -0,0 +1,4 @@
[^:]*: Assembler messages:
[^:]*:5: Error: indexed vector register expected at operand 1 -- `dup v0.b,v1.b\[7\]'
[^:]*:6: Error: operand 1 should be an integer register -- `mov r0.w,r1.w'
[^:]*:7: Error: operand 2 should be a SIMD vector element -- `dup s0,s1\[3\]'

View File

@ -0,0 +1,7 @@
.text
.arch armv8
dup v0.b, v1.b[7]
mov r0.w, r1.w
dup s0, s1[3]

View File

@ -0,0 +1,96 @@
#as: -EL -I$srcdir/$subdir
#objdump: --syms --special-syms -d
#name: AArch64 Mapping Symbols for miscellaneous directives
#source: mapmisc.s
# This test is only valid on ELF based ports.
#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
.*: +file format .*aarch64.*
SYMBOL TABLE:
0+00 l d .text 0000000000000000 .text
0+00 l d .data 0000000000000000 .data
0+00 l d .bss 0000000000000000 .bss
0+00 l F .text 0000000000000000 foo
0+00 l .text 0000000000000000 \$x
0+04 l .text 0000000000000000 \$d
0+08 l .text 0000000000000000 \$x
0+0c l .text 0000000000000000 \$d
0+10 l .text 0000000000000000 \$x
0+14 l .text 0000000000000000 \$d
0+18 l .text 0000000000000000 \$x
0+1c l .text 0000000000000000 \$d
0+20 l .text 0000000000000000 \$x
0+24 l .text 0000000000000000 \$d
0+28 l .text 0000000000000000 \$x
0+2c l .text 0000000000000000 \$d
0+34 l .text 0000000000000000 \$x
0+38 l .text 0000000000000000 \$d
0+48 l .text 0000000000000000 \$x
0+4c l .text 0000000000000000 \$d
0+50 l .text 0000000000000000 \$x
0+54 l .text 0000000000000000 \$d
0+58 l .text 0000000000000000 \$x
0+5c l .text 0000000000000000 \$d
0+64 l .text 0000000000000000 \$x
0+68 l .text 0000000000000000 \$d
0+70 l .text 0000000000000000 \$x
0+74 l .text 0000000000000000 \$d
0+84 l .text 0000000000000000 \$x
0+88 l .text 0000000000000000 \$d
0+8c l .text 0000000000000000 \$x
0+90 l .text 0000000000000000 \$d
0+94 l .text 0000000000000000 \$x
0+98 l .text 0000000000000000 \$d
0+9c l .text 0000000000000000 \$x
0+a0 l .text 0000000000000000 \$d
0+a4 l .text 0000000000000000 \$x
0+a8 l .text 0000000000000000 \$x
Disassembly of section .text:
0000000000000000 <foo>:
0: d503201f nop
4: 64636261 .word 0x64636261
8: d503201f nop
c: 00636261 .word 0x00636261
10: d503201f nop
14: 00676665 .word 0x00676665
18: d503201f nop
1c: 006a6968 .word 0x006a6968
20: d503201f nop
24: 0000006b .word 0x0000006b
28: d503201f nop
2c: 0000006c .word 0x0000006c
30: 00000000 .word 0x00000000
34: d503201f nop
38: 0000006d .word 0x0000006d
...
48: d503201f nop
4c: 3fc00000 .word 0x3fc00000
50: d503201f nop
54: 40200000 .word 0x40200000
58: d503201f nop
5c: 00000000 .word 0x00000000
60: 400c0000 .word 0x400c0000
64: d503201f nop
68: 00000000 .word 0x00000000
6c: 40120000 .word 0x40120000
70: d503201f nop
74: 00000004 .word 0x00000004
78: 00000004 .word 0x00000004
7c: 00000004 .word 0x00000004
80: 00000004 .word 0x00000004
84: d503201f nop
88: 00000000 .word 0x00000000
8c: d503201f nop
90: 00000000 .word 0x00000000
94: d503201f nop
98: 00000000 .word 0x00000000
9c: d503201f nop
a0: 7778797a .word 0x7778797a
a4: d503201f nop
a8: d503201f nop

View File

@ -0,0 +1 @@
zyxw

View File

@ -0,0 +1,40 @@
.text
.type foo, %function
foo:
.align 2
.fill 0, 0, 0
nop
.ascii "abcd"
nop
.asciz "abc"
nop
.string "efg"
nop
.string8 "hij"
nop
.string16 "k"
nop
.string32 "l"
nop
.string64 "m"
nop
.float 0e1.5
nop
.single 0e2.5
nop
.double 0e3.5
nop
.dcb.d 1, 4.5
nop
.fill 4, 4, 4
nop
.space 4
nop
.skip 4
nop
.zero 4
nop
.incbin "mapmisc.dat"
nop
.fill 0, 0, 0
nop

View File

@ -0,0 +1,20 @@
#objdump: --syms --special-syms
#name: AArch64 Mapping Symbols
# This test is only valid on ELF based ports.
#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
# Test the generation of AArch64 ELF Mapping Symbols
.*: +file format.*aarch64.*
SYMBOL TABLE:
0+00 l d .text 0+0 (|.text)
0+00 l d .data 0+0 (|.data)
0+00 l d .bss 0+0 (|.bss)
0+00 l .text 0+0 \$x
0+00 l d foo 0+0 (|foo)
0+00 l foo 0+0 \$x
#Maybe section symbol for .ARM.attributes
#...
0+00 g .text 0+0 mapping
0+08 g .text 0+0 another_mapping

View File

@ -0,0 +1,16 @@
.text
.global mapping
mapping:
nop
bl mapping
.global another_mapping
another_mapping:
nop
bl another_mapping
.data
.word 0x123456
.section foo,"ax"
nop

View File

@ -0,0 +1,17 @@
#objdump: --syms --special-syms
#name: AArch64 Mapping Symbols Test 2
# This test is only valid on ELF based ports.
#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
.*: +file format.*aarch64.*
SYMBOL TABLE:
[0]+00 l d .text 0[0]+00 .text
[0]+00 l d .data 0[0]+00 .data
[0]+00 l d .bss 0[0]+00 .bss
[0]+00 l .text 0[0]+00 \$x
[0]+04 l .text 0[0]+00 foo
[0]+00 l d .comment 0[0]+00 .comment
[0]+00 g F .text 0[0]+0c main

View File

@ -0,0 +1,13 @@
.text
.align 2
.global main
.type main, %function
main:
nop
foo:
nop
nop
.size main, .-main
.ident ""
nop

View File

@ -0,0 +1,15 @@
#objdump: --syms --special-syms
#name: AArch64 Mapping Symbols Test 3
# This test is only valid on ELF based ports.
#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
.*: +file format.*aarch64.*
SYMBOL TABLE:
0[0]+00 l d .text 0[0]+00 .text
0[0]+00 l d .data 0[0]+00 .data
0[0]+00 l d .bss 0[0]+00 .bss
0[0]+00 l .text 0[0]+00 \$d
0[0]+04 l .text 0[0]+00 \$x

View File

@ -0,0 +1,3 @@
.text
.word 0
nop

View File

@ -0,0 +1,14 @@
#objdump: --syms --special-syms
#name: AArch64 Mapping Symbols Test 4
# This test is only valid on ELF based ports.
#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
.*: +file format.*aarch64.*
SYMBOL TABLE:
0[0]+00 l d .text 0[0]+00 .text
0[0]+00 l d .data 0[0]+00 .data
0[0]+00 l d .bss 0[0]+00 .bss
0[0]+00 l .text 0[0]+00 \$x

Some files were not shown because too many files have changed in this diff Show More