diff mbox

[AArch64] ARMv8.2 command line and feature macros support

Message ID 39254e41-2963-bf5a-a359-41a64dc0701e@foss.arm.com
State New
Headers show

Commit Message

Jiong Wang June 27, 2016, 2:58 p.m. UTC
On 07/06/16 09:46, Jiong Wang wrote:
> 2016-06-07  Matthew Wahab<matthew.wahab@arm.com>
>             Jiong Wang<jiong.wang@arm.com>
>
>         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>         (AARCH64_FL_F16): New.
>         (AARCH64_FL_FOR_ARCH8_2): New.
>         (AARCH64_ISA_8_2): New.
>         (AARCH64_ISA_F16): New.
>         (TARGET_FP_F16INST): New.
>         (TARGET_SIMD_F16INST): New.
>         * config/aarch64/aarch64-option-extensions.def: New entry for 
> "fp16".
>         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): 
> Conditionally define
>         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and 
> __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and 
> "fp16".
>

This is a updated version of this patch, the updates are:

   * When enabling "fp16" also enables "fp".
   * When disabling "fp" also disables "fp16".
   * When disabling "fp16" only disables "fp16".

OK for trunk?

2016-06-27  Matthew Wahab  <matthew.wahab@arm.com>
             Jiong Wang  <jiong.wang@arm.com>

         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
         (AARCH64_FL_F16): New.
         (AARCH64_FL_FOR_ARCH8_2): New.
         (AARCH64_ISA_8_2): New.
         (AARCH64_ISA_F16): New.
         (TARGET_FP_F16INST): New.
         (TARGET_SIMD_F16INST): New.
         * config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
         ("fp"): Disabling "fp" also disables "fp16".
         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): Conditionally define
         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16".

Comments

James Greenhalgh June 29, 2016, 8:43 a.m. UTC | #1
On Mon, Jun 27, 2016 at 03:58:00PM +0100, Jiong Wang wrote:
> On 07/06/16 09:46, Jiong Wang wrote:
> >2016-06-07  Matthew Wahab<matthew.wahab@arm.com>
> >            Jiong Wang<jiong.wang@arm.com>
> >
> >        * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
> >        * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
> >        (AARCH64_FL_F16): New.
> >        (AARCH64_FL_FOR_ARCH8_2): New.
> >        (AARCH64_ISA_8_2): New.
> >        (AARCH64_ISA_F16): New.
> >        (TARGET_FP_F16INST): New.
> >        (TARGET_SIMD_F16INST): New.
> >        * config/aarch64/aarch64-option-extensions.def: New entry
> >for "fp16".
> >        * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins):
> >Conditionally define
> >        __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and
> >__ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
> >        * doc/invoke.texi (AArch64 Options): Document "armv8.2-a"
> >and "fp16".
> >
> 
> This is a updated version of this patch, the updates are:
> 
>   * When enabling "fp16" also enables "fp".
>   * When disabling "fp" also disables "fp16".
>   * When disabling "fp16" only disables "fp16".
> 
> OK for trunk?

Hi Jiong,

Some very minor comments below.

> diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
> index b15c23f0..d715da7 100644
> --- a/gcc/config/aarch64/aarch64.h
> +++ b/gcc/config/aarch64/aarch64.h
> @@ -135,6 +135,8 @@ extern unsigned aarch64_architecture_version;
>  /* ARMv8.1 architecture extensions.  */
>  #define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
>  #define AARCH64_FL_V8_1	      (1 << 5)  /* Has ARMv8.1 extensions.  */
> +#define AARCH64_FL_V8_2	      (1 << 8)  /* Has ARMv8.2 features.  */
> +#define AARCH64_FL_F16	      (1 << 9)  /* Has ARMv8.2 FP16 extensions.  */

Please add a new "section" for the ARMv8.2-A architecture extensions (just
a new comment that groups them), and s/ARMv8.2/ARMv8.2-A/ throughout this
section (if you'd like to do the follow-up trivial patch for
s/ARMv8.1/ARMv8.1-A/ I'd appreciate that).

> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index aa11209..d44bbc0 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -13035,7 +13035,10 @@ more feature modifiers.  This option has the form
>  @option{-march=@var{arch}@r{@{}+@r{[}no@r{]}@var{feature}@r{@}*}}.
>  
>  The permissible values for @var{arch} are @samp{armv8-a},
> -@samp{armv8.1-a} or @var{native}.
> +@samp{armv8.1-a}, @samp{armv8.2-a} or @var{native}.
> +
> +The value @samp{armv8.2-a} implies @samp{armv8.1-a} and enables compiler
> +support for the ARMv8.2 architecture extensions.

ARMv8.2-A here too please.

>  
>  The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler
>  support for the ARMv8.1 architecture extension.  In particular, it
> @@ -13140,6 +13143,8 @@ instructions.  This is on by default for all possible values for options
>  @item lse
>  Enable Large System Extension instructions.  This is on by default for
>  @option{-march=armv8.1-a}.
> +@item fp16
> +Enable FP16 extension.

Please add a note here that enabling this extension also enables "fp"

This is OK for trunk otherwise.

Thanks,
James

> 
> 2016-06-27  Matthew Wahab  <matthew.wahab@arm.com>
>             Jiong Wang  <jiong.wang@arm.com>
> 
>         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>         (AARCH64_FL_F16): New.
>         (AARCH64_FL_FOR_ARCH8_2): New.
>         (AARCH64_ISA_8_2): New.
>         (AARCH64_ISA_F16): New.
>         (TARGET_FP_F16INST): New.
>         (TARGET_SIMD_F16INST): New.
>         * config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
>         ("fp"): Disabling "fp" also disables "fp16".
>         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): Conditionally define
>         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16".
Richard Earnshaw (lists) June 29, 2016, 10:27 a.m. UTC | #2
On 29/06/16 09:43, James Greenhalgh wrote:
> On Mon, Jun 27, 2016 at 03:58:00PM +0100, Jiong Wang wrote:
>> On 07/06/16 09:46, Jiong Wang wrote:
>>> 2016-06-07  Matthew Wahab<matthew.wahab@arm.com>
>>>            Jiong Wang<jiong.wang@arm.com>
>>>
>>>        * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>>>        * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>>>        (AARCH64_FL_F16): New.
>>>        (AARCH64_FL_FOR_ARCH8_2): New.
>>>        (AARCH64_ISA_8_2): New.
>>>        (AARCH64_ISA_F16): New.
>>>        (TARGET_FP_F16INST): New.
>>>        (TARGET_SIMD_F16INST): New.
>>>        * config/aarch64/aarch64-option-extensions.def: New entry
>>> for "fp16".
>>>        * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins):
>>> Conditionally define
>>>        __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and
>>> __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>>>        * doc/invoke.texi (AArch64 Options): Document "armv8.2-a"
>>> and "fp16".
>>>
>>
>> This is a updated version of this patch, the updates are:
>>
>>   * When enabling "fp16" also enables "fp".
>>   * When disabling "fp" also disables "fp16".
>>   * When disabling "fp16" only disables "fp16".
>>
>> OK for trunk?
> 
> Hi Jiong,
> 
> Some very minor comments below.
> 
>> diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
>> index b15c23f0..d715da7 100644
>> --- a/gcc/config/aarch64/aarch64.h
>> +++ b/gcc/config/aarch64/aarch64.h
>> @@ -135,6 +135,8 @@ extern unsigned aarch64_architecture_version;
>>  /* ARMv8.1 architecture extensions.  */
>>  #define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
>>  #define AARCH64_FL_V8_1	      (1 << 5)  /* Has ARMv8.1 extensions.  */
>> +#define AARCH64_FL_V8_2	      (1 << 8)  /* Has ARMv8.2 features.  */
>> +#define AARCH64_FL_F16	      (1 << 9)  /* Has ARMv8.2 FP16 extensions.  */
> 
> Please add a new "section" for the ARMv8.2-A architecture extensions (just
> a new comment that groups them), and s/ARMv8.2/ARMv8.2-A/ throughout this
> section (if you'd like to do the follow-up trivial patch for
> s/ARMv8.1/ARMv8.1-A/ I'd appreciate that).
> 
>> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
>> index aa11209..d44bbc0 100644
>> --- a/gcc/doc/invoke.texi
>> +++ b/gcc/doc/invoke.texi
>> @@ -13035,7 +13035,10 @@ more feature modifiers.  This option has the form
>>  @option{-march=@var{arch}@r{@{}+@r{[}no@r{]}@var{feature}@r{@}*}}.
>>  
>>  The permissible values for @var{arch} are @samp{armv8-a},
>> -@samp{armv8.1-a} or @var{native}.
>> +@samp{armv8.1-a}, @samp{armv8.2-a} or @var{native}.
>> +
>> +The value @samp{armv8.2-a} implies @samp{armv8.1-a} and enables compiler
>> +support for the ARMv8.2 architecture extensions.
> 
> ARMv8.2-A here too please.

Why do we need to say that v8.2-a implies v8.1-a, when we don't say that
v8.1-a implies v8-a?  The whole implies clause seems unnecessary to me.

R.

> 
>>  
>>  The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler
>>  support for the ARMv8.1 architecture extension.  In particular, it
>> @@ -13140,6 +13143,8 @@ instructions.  This is on by default for all possible values for options
>>  @item lse
>>  Enable Large System Extension instructions.  This is on by default for
>>  @option{-march=armv8.1-a}.
>> +@item fp16
>> +Enable FP16 extension.
> 
> Please add a note here that enabling this extension also enables "fp"
> 
> This is OK for trunk otherwise.
> 
> Thanks,
> James
> 
>>
>> 2016-06-27  Matthew Wahab  <matthew.wahab@arm.com>
>>             Jiong Wang  <jiong.wang@arm.com>
>>
>>         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>>         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>>         (AARCH64_FL_F16): New.
>>         (AARCH64_FL_FOR_ARCH8_2): New.
>>         (AARCH64_ISA_8_2): New.
>>         (AARCH64_ISA_F16): New.
>>         (TARGET_FP_F16INST): New.
>>         (TARGET_SIMD_F16INST): New.
>>         * config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
>>         ("fp"): Disabling "fp" also disables "fp16".
>>         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): Conditionally define
>>         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>>         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16".
>
Jiong Wang June 29, 2016, 11:11 a.m. UTC | #3
Richard Earnshaw (lists) writes:

> On 29/06/16 09:43, James Greenhalgh wrote:
>> On Mon, Jun 27, 2016 at 03:58:00PM +0100, Jiong Wang wrote:
>>>  
>>>  The permissible values for @var{arch} are @samp{armv8-a},
>>> -@samp{armv8.1-a} or @var{native}.
>>> +@samp{armv8.1-a}, @samp{armv8.2-a} or @var{native}.
>>> +
>>> +The value @samp{armv8.2-a} implies @samp{armv8.1-a} and enables compiler
>>> +support for the ARMv8.2 architecture extensions.
>> 
>> ARMv8.2-A here too please.
>
> Why do we need to say that v8.2-a implies v8.1-a, when we don't say that
> v8.1-a implies v8-a?  The whole implies clause seems unnecessary to me.
>
> R.

Hi Richard,

  The describe entries are organized in descending order.
  
  "v8.1-a implies v8-a", are right here below.
                                        |
                                        v
>>>  The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler
>>>  support for the ARMv8.1 architecture extension.  In particular, it
>>> @@ -13140,6 +13143,8 @@ instructions.  This is on by default for all possible values for options
>>>  @item lse
>>>  Enable Large System Extension instructions.  This is on by default for
>>>  @option{-march=armv8.1-a}.
>>> +@item fp16
>>> +Enable FP16 extension.
>>
Andrew Pinski June 29, 2016, 9:24 p.m. UTC | #4
On Mon, Jun 27, 2016 at 7:58 AM, Jiong Wang <jiong.wang@foss.arm.com> wrote:
> On 07/06/16 09:46, Jiong Wang wrote:
>>
>> 2016-06-07  Matthew Wahab<matthew.wahab@arm.com>
>>             Jiong Wang<jiong.wang@arm.com>
>>
>>         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>>         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>>         (AARCH64_FL_F16): New.
>>         (AARCH64_FL_FOR_ARCH8_2): New.
>>         (AARCH64_ISA_8_2): New.
>>         (AARCH64_ISA_F16): New.
>>         (TARGET_FP_F16INST): New.
>>         (TARGET_SIMD_F16INST): New.
>>         * config/aarch64/aarch64-option-extensions.def: New entry for
>> "fp16".
>>         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins):
>> Conditionally define
>>         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and
>> __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>>         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and
>> "fp16".
>>
>
> This is a updated version of this patch, the updates are:
>
>   * When enabling "fp16" also enables "fp".
>   * When disabling "fp" also disables "fp16".
>   * When disabling "fp16" only disables "fp16".
>
> OK for trunk?

I notice you did not add a profile entry in
aarch64-option-extensions.def.  Are you going to add this separately?
People will use gcc to invoke the assembler and use
-mcpu=armv8.2-a+profile on the command line.  In fact I already got a
request internally to support that.

Thanks,
Andrew

>
> 2016-06-27  Matthew Wahab  <matthew.wahab@arm.com>
>             Jiong Wang  <jiong.wang@arm.com>
>
>         * config/aarch64/aarch64-arches.def: Add "armv8.2-a".
>         * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
>         (AARCH64_FL_F16): New.
>         (AARCH64_FL_FOR_ARCH8_2): New.
>         (AARCH64_ISA_8_2): New.
>         (AARCH64_ISA_F16): New.
>         (TARGET_FP_F16INST): New.
>         (TARGET_SIMD_F16INST): New.
>         * config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
>         ("fp"): Disabling "fp" also disables "fp16".
>
>         * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins):
> Conditionally define
>         __ARM_FEATURE_FP16_SCALAR_ARITHMETIC and
> __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
>         * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and
> "fp16".
>
>
diff mbox

Patch

diff --git a/gcc/config/aarch64/aarch64-arches.def b/gcc/config/aarch64/aarch64-arches.def
index 1e9d90b..7dcf140 100644
--- a/gcc/config/aarch64/aarch64-arches.def
+++ b/gcc/config/aarch64/aarch64-arches.def
@@ -32,4 +32,5 @@ 
 
 AARCH64_ARCH("armv8-a",	      generic,	     8A,	8,  AARCH64_FL_FOR_ARCH8)
 AARCH64_ARCH("armv8.1-a",     generic,	     8_1A,	8,  AARCH64_FL_FOR_ARCH8_1)
+AARCH64_ARCH("armv8.2-a",     generic,	     8_2A,	8,  AARCH64_FL_FOR_ARCH8_2)
 
diff --git a/gcc/config/aarch64/aarch64-c.c b/gcc/config/aarch64/aarch64-c.c
index e64dc76..3380ed6 100644
--- a/gcc/config/aarch64/aarch64-c.c
+++ b/gcc/config/aarch64/aarch64-c.c
@@ -95,6 +95,11 @@  aarch64_update_cpp_builtins (cpp_reader *pfile)
   else
     cpp_undef (pfile, "__ARM_FP");
 
+  aarch64_def_or_undef (TARGET_FP_F16INST,
+			"__ARM_FEATURE_FP16_SCALAR_ARITHMETIC", pfile);
+  aarch64_def_or_undef (TARGET_SIMD_F16INST,
+			"__ARM_FEATURE_FP16_VECTOR_ARITHMETIC", pfile);
+
   aarch64_def_or_undef (TARGET_SIMD, "__ARM_FEATURE_NUMERIC_MAXMIN", pfile);
   aarch64_def_or_undef (TARGET_SIMD, "__ARM_NEON", pfile);
 
diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def
index e8706d1..a10ccf2 100644
--- a/gcc/config/aarch64/aarch64-option-extensions.def
+++ b/gcc/config/aarch64/aarch64-option-extensions.def
@@ -39,8 +39,8 @@ 
    that are required.  Their order is not important.  */
 
 /* Enabling "fp" just enables "fp".
-   Disabling "fp" also disables "simd", "crypto".  */
-AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "fp")
+   Disabling "fp" also disables "simd", "crypto" and "fp16".  */
+AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_F16, "fp")
 
 /* Enabling "simd" also enables "fp".
    Disabling "simd" also disables "crypto".  */
@@ -55,3 +55,7 @@  AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32")
 
 /* Enabling or disabling "lse" only changes "lse".  */
 AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics")
+
+/* Enabling "fp16" also enables "fp".
+   Disabling "fp16" just disables "fp16".  */
+AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, 0, "fp16")
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index b15c23f0..d715da7 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -135,6 +135,8 @@  extern unsigned aarch64_architecture_version;
 /* ARMv8.1 architecture extensions.  */
 #define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
 #define AARCH64_FL_V8_1	      (1 << 5)  /* Has ARMv8.1 extensions.  */
+#define AARCH64_FL_V8_2	      (1 << 8)  /* Has ARMv8.2 features.  */
+#define AARCH64_FL_F16	      (1 << 9)  /* Has ARMv8.2 FP16 extensions.  */
 
 /* Has FP and SIMD.  */
 #define AARCH64_FL_FPSIMD     (AARCH64_FL_FP | AARCH64_FL_SIMD)
@@ -146,6 +148,8 @@  extern unsigned aarch64_architecture_version;
 #define AARCH64_FL_FOR_ARCH8       (AARCH64_FL_FPSIMD)
 #define AARCH64_FL_FOR_ARCH8_1			       \
   (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC | AARCH64_FL_V8_1)
+#define AARCH64_FL_FOR_ARCH8_2			\
+  (AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_V8_2)
 
 /* Macros to test ISA flags.  */
 
@@ -155,6 +159,8 @@  extern unsigned aarch64_architecture_version;
 #define AARCH64_ISA_SIMD           (aarch64_isa_flags & AARCH64_FL_SIMD)
 #define AARCH64_ISA_LSE		   (aarch64_isa_flags & AARCH64_FL_LSE)
 #define AARCH64_ISA_RDMA	   (aarch64_isa_flags & AARCH64_FL_V8_1)
+#define AARCH64_ISA_V8_2	   (aarch64_isa_flags & AARCH64_FL_V8_2)
+#define AARCH64_ISA_F16		   (aarch64_isa_flags & AARCH64_FL_F16)
 
 /* Crypto is an optional extension to AdvSIMD.  */
 #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
@@ -165,6 +171,10 @@  extern unsigned aarch64_architecture_version;
 /* Atomic instructions that can be enabled through the +lse extension.  */
 #define TARGET_LSE (AARCH64_ISA_LSE)
 
+/* ARMv8.2-A FP16 support that can be enabled through the +fp16 extension.  */
+#define TARGET_FP_F16INST (TARGET_FLOAT && AARCH64_ISA_F16)
+#define TARGET_SIMD_F16INST (TARGET_SIMD && AARCH64_ISA_F16)
+
 /* Make sure this is always defined so we don't have to check for ifdefs
    but rather use normal ifs.  */
 #ifndef TARGET_FIX_ERR_A53_835769_DEFAULT
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index aa11209..d44bbc0 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -13035,7 +13035,10 @@  more feature modifiers.  This option has the form
 @option{-march=@var{arch}@r{@{}+@r{[}no@r{]}@var{feature}@r{@}*}}.
 
 The permissible values for @var{arch} are @samp{armv8-a},
-@samp{armv8.1-a} or @var{native}.
+@samp{armv8.1-a}, @samp{armv8.2-a} or @var{native}.
+
+The value @samp{armv8.2-a} implies @samp{armv8.1-a} and enables compiler
+support for the ARMv8.2 architecture extensions.
 
 The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler
 support for the ARMv8.1 architecture extension.  In particular, it
@@ -13140,6 +13143,8 @@  instructions.  This is on by default for all possible values for options
 @item lse
 Enable Large System Extension instructions.  This is on by default for
 @option{-march=armv8.1-a}.
+@item fp16
+Enable FP16 extension.
 
 @end table