[ARM] Support for ARMv8.1 command line option

2015-06-03  Matthew Wahab  <matthew.wahab@arm.com>

gas/
	* config/tc-arm.c (arm_archs): Add "armv8.1-a".
	* doc/c-arm.texi (ARM Options, -march): Add "armv8.1-a".
	* NEWS: Mention ARMv8.1 support.

include/opcode/
	* arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): New.
	(ARM_ARCH_V8_1A): New.
	(ARM_ARCH_V8_1A_FP): New.
	(ARM_ARCH_V8_1A_SIMD): New.
	(ARM_ARCH_V8_1A_CRYPTOV1): New.
	(ARM_FEATURE_CORE): New.
This commit is contained in:
Matthew Wahab
2015-06-03 10:03:50 +01:00
committed by Jiong Wang
parent 0220bc5727
commit a5932920ef
7 changed files with 38 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-06-03 Matthew Wahab <matthew.wahab@arm.com>
* config/tc-arm.c (arm_archs): Add "armv8.1-a".
* doc/c-arm.texi (ARM Options, -march): Add "armv8.1-a".
* NEWS: Mention ARMv8.1 support.
2015-06-02 Matthew Wahab <matthew.wahab@arm.com> 2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
* config/tc-arm.c (arm_ext_pan): New. * config/tc-arm.c (arm_ext_pan): New.

View File

@ -2,6 +2,10 @@
Changes in 2.26: Changes in 2.26:
* Support for the ARMv8.1 architecture has been added to the ARM port. Support
for the individual ARMv8.1 Adv.SIMD and PAN architecture extensions has also
been added to the ARM port.
* Extend --compress-debug-sections option to support * Extend --compress-debug-sections option to support
--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] for ELF --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] for ELF
targets. targets.

View File

@ -24650,6 +24650,7 @@ static const struct arm_arch_option_table arm_archs[] =
ARM_ARCH_OPT ("armv7-m", ARM_ARCH_V7M, FPU_ARCH_VFP), ARM_ARCH_OPT ("armv7-m", ARM_ARCH_V7M, FPU_ARCH_VFP),
ARM_ARCH_OPT ("armv7e-m", ARM_ARCH_V7EM, FPU_ARCH_VFP), ARM_ARCH_OPT ("armv7e-m", ARM_ARCH_V7EM, FPU_ARCH_VFP),
ARM_ARCH_OPT ("armv8-a", ARM_ARCH_V8A, FPU_ARCH_VFP), ARM_ARCH_OPT ("armv8-a", ARM_ARCH_V8A, FPU_ARCH_VFP),
ARM_ARCH_OPT ("armv8.1-a", ARM_ARCH_V8_1A, FPU_ARCH_VFP),
ARM_ARCH_OPT ("xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP), ARM_ARCH_OPT ("xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP),
ARM_ARCH_OPT ("iwmmxt", ARM_ARCH_IWMMXT, FPU_ARCH_VFP), ARM_ARCH_OPT ("iwmmxt", ARM_ARCH_IWMMXT, FPU_ARCH_VFP),
ARM_ARCH_OPT ("iwmmxt2", ARM_ARCH_IWMMXT2,FPU_ARCH_VFP), ARM_ARCH_OPT ("iwmmxt2", ARM_ARCH_IWMMXT2,FPU_ARCH_VFP),

View File

@ -220,6 +220,7 @@ names are recognized:
@code{armv7-m}, @code{armv7-m},
@code{armv7e-m}, @code{armv7e-m},
@code{armv8-a}, @code{armv8-a},
@code{armv8.1-a},
@code{iwmmxt} @code{iwmmxt}
@code{iwmmxt2} @code{iwmmxt2}
and and

View File

@ -1,3 +1,12 @@
2015-06-03 Matthew Wahab <matthew.wahab@arm.com>
* arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): New.
(ARM_ARCH_V8_1A): New.
(ARM_ARCH_V8_1A_FP): New.
(ARM_ARCH_V8_1A_SIMD): New.
(ARM_ARCH_V8_1A_CRYPTOV1): New.
(ARM_FEATURE_CORE): New.
2015-06-02 Matthew Wahab <matthew.wahab@arm.com> 2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
* arm.h (ARM_EXT2_PAN): New. * arm.h (ARM_EXT2_PAN): New.

View File

@ -208,6 +208,9 @@
ARM_FEATURE_COPROC (FPU_NEON_ARMV8 \ ARM_FEATURE_COPROC (FPU_NEON_ARMV8 \
| FPU_VFP_ARMV8 \ | FPU_VFP_ARMV8 \
| FPU_NEON_EXT_RDMA) | FPU_NEON_EXT_RDMA)
#define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1 \
ARM_FEATURE_COPROC (FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8 \
| FPU_NEON_EXT_RDMA)
#define FPU_ARCH_ENDIAN_PURE ARM_FEATURE_COPROC (FPU_ENDIAN_PURE) #define FPU_ARCH_ENDIAN_PURE ARM_FEATURE_COPROC (FPU_ENDIAN_PURE)
@ -247,6 +250,7 @@
#define ARM_ARCH_V7M ARM_FEATURE_CORE_LOW (ARM_AEXT_V7M) #define ARM_ARCH_V7M ARM_FEATURE_CORE_LOW (ARM_AEXT_V7M)
#define ARM_ARCH_V7EM ARM_FEATURE_CORE_LOW (ARM_AEXT_V7EM) #define ARM_ARCH_V7EM ARM_FEATURE_CORE_LOW (ARM_AEXT_V7EM)
#define ARM_ARCH_V8A ARM_FEATURE_CORE_LOW (ARM_AEXT_V8A) #define ARM_ARCH_V8A ARM_FEATURE_CORE_LOW (ARM_AEXT_V8A)
#define ARM_ARCH_V8_1A ARM_FEATURE_CORE (ARM_AEXT_V8A, ARM_EXT2_PAN)
/* Some useful combinations: */ /* Some useful combinations: */
#define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0) #define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0)
@ -275,6 +279,17 @@
#define ARM_ARCH_V8A_CRYPTOV1 ARM_FEATURE_LOW (ARM_AEXT_V8A, \ #define ARM_ARCH_V8A_CRYPTOV1 ARM_FEATURE_LOW (ARM_AEXT_V8A, \
FPU_ARCH_CRYPTO_NEON_VFP_ARMV8) FPU_ARCH_CRYPTO_NEON_VFP_ARMV8)
/* v8.1-a+fp. */
#define ARM_ARCH_V8_1A_FP ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
FPU_ARCH_VFP_ARMV8)
/* v8.1-a+simd (implies fp). */
#define ARM_ARCH_V8_1A_SIMD ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
FPU_ARCH_NEON_VFP_ARMV8_1)
/* v8.1-a+crypto (implies simd+fp). */
#define ARM_ARCH_V8_1A_CRYPTOV1 ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1)
/* There are too many feature bits to fit in a single word, so use a /* There are too many feature bits to fit in a single word, so use a
structure. For simplicity we put all core features in array CORE structure. For simplicity we put all core features in array CORE
and everything else in the other. All the bits in element core[0] and everything else in the other. All the bits in element core[0]
@ -328,6 +343,7 @@ typedef struct
((T1).core[0] == (T2).core[0] && (T1).core[1] == (T2).core[1]) ((T1).core[0] == (T2).core[0] && (T1).core[1] == (T2).core[1])
#define ARM_FEATURE_LOW(core, coproc) {{(core), 0}, (coproc)} #define ARM_FEATURE_LOW(core, coproc) {{(core), 0}, (coproc)}
#define ARM_FEATURE_CORE(core1, core2) {{(core1), (core2)}, 0}
#define ARM_FEATURE_CORE_LOW(core) {{(core), 0}, 0} #define ARM_FEATURE_CORE_LOW(core) {{(core), 0}, 0}
#define ARM_FEATURE_CORE_HIGH(core) {{0, (core)}, 0} #define ARM_FEATURE_CORE_HIGH(core) {{0, (core)}, 0}
#define ARM_FEATURE_COPROC(coproc) {{0, 0}, (coproc)} #define ARM_FEATURE_COPROC(coproc) {{0, 0}, (coproc)}

View File

@ -1,6 +1,6 @@
#source: emit-relocs-28.s #source: emit-relocs-28.s
#as: -mabi=ilp32 #as: -mabi=ilp32
#ld: -m aarch64linux32 --defsym globala=0x11000 --defsym globalb=0x45000 --defsym globalc=0x1234 -e0 --emit-relocs #ld: -T relocs-ilp32.ld --defsym globala=0x11000 --defsym globalb=0x45000 --defsym globalc=0x1234 -e0 --emit-relocs
#objdump: -dr #objdump: -dr
.*: +file format .* .*: +file format .*