As Yuta Mukai pointed out, the manual wrongly said that LS64 is enabled by default for Armv8.7-A and above, and for Armv9.2-A and above. LS64 is not mandatory at any architecture level (and the code correctly implemented that).
I think this was a leftover from an early version of the spec. gcc/ * doc/invoke.texi: Fix documentation of LS64 so that it's not implied by Armv8.7-A or Armv9.2-A. --- Tested on aarch64-linux-gnu & pushed to trunk. I'll backport to branches soon. Thanks to Yuta for the spot. Richard gcc/doc/invoke.texi | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 28ef2cde43d..7146163d66d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -21443,12 +21443,12 @@ and the features that they enable by default: @item @samp{armv8.4-a} @tab Armv8.4-A @tab @samp{armv8.3-a}, @samp{+flagm}, @samp{+fp16fml}, @samp{+dotprod} @item @samp{armv8.5-a} @tab Armv8.5-A @tab @samp{armv8.4-a}, @samp{+sb}, @samp{+ssbs}, @samp{+predres} @item @samp{armv8.6-a} @tab Armv8.6-A @tab @samp{armv8.5-a}, @samp{+bf16}, @samp{+i8mm} -@item @samp{armv8.7-a} @tab Armv8.7-A @tab @samp{armv8.6-a}, @samp{+ls64} +@item @samp{armv8.7-a} @tab Armv8.7-A @tab @samp{armv8.6-a} @item @samp{armv8.8-a} @tab Armv8.8-a @tab @samp{armv8.7-a}, @samp{+mops} @item @samp{armv8.9-a} @tab Armv8.9-a @tab @samp{armv8.8-a} @item @samp{armv9-a} @tab Armv9-A @tab @samp{armv8.5-a}, @samp{+sve}, @samp{+sve2} @item @samp{armv9.1-a} @tab Armv9.1-A @tab @samp{armv9-a}, @samp{+bf16}, @samp{+i8mm} -@item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a}, @samp{+ls64} +@item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a} @item @samp{armv9.3-a} @tab Armv9.3-A @tab @samp{armv9.2-a}, @samp{+mops} @item @samp{armv9.4-a} @tab Armv9.4-A @tab @samp{armv9.3-a} @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r} @@ -21773,7 +21773,6 @@ default for @option{-march=armv8.6-a}. Use of this option with architectures prior to Armv8.2-A is not supported. @item ls64 Enable the 64-byte atomic load and store instructions for accelerators. -This option is enabled by default for @option{-march=armv8.7-a}. @item mops Enable the instructions to accelerate memory operations like @code{memcpy}, @code{memmove}, @code{memset}. This option is enabled by default for -- 2.25.1