@@ -398,6 +398,8 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
398398
399399* Fixed incorrect system register dependencies in Function Multi Versioning.
400400* Added a requirement for function version declaration in Function Multi Versioning.
401+ * Fixed some rendering issues in the online Markdown documentation and fixed
402+ a misplaced anchor.
401403
402404### References
403405
@@ -531,18 +533,14 @@ This document uses the following terms and abbreviations.
531533
532534The following terms are used to specify C and C++ semantics:
533535
534- <!-- Do not remove the following `span`, it is needed to create an
535- anchor that can be referred via an internal hyperlink to the paragraph
536- following it. --><span id="abstract-machine"></span>
536+ <span id="abstract-machine"></span>
537537
538538**abstract machine**
539539
540540> The conceptual machine that the C and C++ language standards use to define
541541> the behavior of programs.
542542
543- <!-- Do not remove the following `span`, it is needed to create an
544- anchor that can be referred via an internal hyperlink to the paragraph
545- following it. --><span id="evaluated-call"></span>
543+ <span id="evaluated-call"></span>
546544
547545**evaluated call**
548546
@@ -552,9 +550,7 @@ following it. --><span id="evaluated-call"></span>
552550> For example, any calls that occur in the operand of a `sizeof`
553551> expression are not evaluated.
554552
555- <!-- Do not remove the following `span`, it is needed to create an
556- anchor that can be referred via an internal hyperlink to the paragraph
557- following it. --><span id="external-linkage"></span>
553+ <span id="external-linkage"></span>
558554
559555**external linkage**
560556
@@ -566,9 +562,7 @@ following it. --><span id="external-linkage"></span>
566562> intrinsics are functions and, if so, what linkage they have. However,
567563> certain ACLE support functions are defined to have external linkage.
568564
569- <!-- Do not remove the following `span`, it is needed to create an
570- anchor that can be referred via an internal hyperlink to the paragraph
571- 2following it. --><span id="ill-formed"></span>
565+ <span id="ill-formed"></span>
572566
573567**ill-formed** programs or pieces of programs
574568
@@ -586,9 +580,7 @@ anchor that can be referred via an internal hyperlink to the paragraph
586580> quality-of-implementation perspective, it is better to reject
587581> ill-formed programs wherever possible.
588582
589- <!-- Do not remove the following `span`, it is needed to create an
590- anchor that can be referred via an internal hyperlink to the paragraph
591- 2following it. --><span id="unprototyped-function"></span>
583+ <span id="unprototyped-function"></span>
592584
593585**unprototyped functions**
594586
@@ -996,9 +988,7 @@ to be included, if the header files are available:
996988* [`<arm_fp16.h>`](#arm_fp16.h)
997989* [`<arm_bf16.h>`](#arm_bf16.h)
998990
999- <!-- Do not remove the following `span`, it is needed to create an
1000- anchor that can be referred via an internal hyperlink to the section
1001- following it. --><span id="arm_sve.h"></span>
991+ <span id="arm_sve.h"></span>
1002992
1003993### `<arm_sve.h>`
1004994
@@ -1567,9 +1557,7 @@ feature also implies support for the Q flag.
15671557ACLE 2.0 for A-profile. They are fully supported for M and R-profiles.
15681558This macro is defined for AArch32 only.
15691559
1570- <!-- Do not remove the following `span`, it is needed to create an
1571- anchor that can be referred via an internal hyperlink to the section
1572- following it. --><span id="32-bit-simd-instructions"></span>
1560+ <span id="32-bit-simd-instructions"></span>
15731561
15741562### 32-bit SIMD instructions
15751563
@@ -1917,6 +1905,8 @@ support Wireless MMX.
19171905
19181906### 16-bit floating-point extensions
19191907
1908+ <span id="16-bit-floating-point-data-processing-operations"></span>
1909+
19201910#### 16-bit floating-point data processing operations
19211911
19221912`__ARM_FEATURE_FP16_SCALAR_ARITHMETIC` is defined to `1` if the
@@ -2103,10 +2093,6 @@ is only available when `__ARM_ARCH >= 8`.
21032093`__ARM_FEATURE_QRDMX` is defined to 1 if SQRDMLAH and SQRDMLSH
21042094instructions and their associated intrinsics are available.
21052095
2106- <!-- Do not remove the following `span`, it is needed to create an
2107- anchor that can be referred via an internal hyperlink to the section
2108- following it. --> <span id="16-bit-floating-point-data-processing-operations"></span>
2109-
21102096#### Dot Product extension
21112097
21122098`__ARM_FEATURE_DOTPROD` is defined if the dot product data manipulation
@@ -2161,9 +2147,7 @@ the SVE2 bit permute (FEAT_SVE_BitPerm) instructions and if the associated
21612147ACLE intrinsics are available. This implies that `__ARM_FEATURE_SVE2` is
21622148nonzero.
21632149
2164- <!-- Do not remove the following `span`, it is needed to create an
2165- anchor that can be referred via an internal hyperlink to the section
2166- following it. --><span id="16-bit-to-64-bit-integer-widening-outer-product-intrinsics"></span>
2150+ <span id="16-bit-to-64-bit-integer-widening-outer-product-intrinsics"></span>
21672151
21682152#### 16-bit to 64-bit integer widening outer product intrinsics
21692153
@@ -3656,9 +3640,7 @@ operations [[G.191]](#G.191):
36563640This example assumes the implementation preserves the Q flag on return
36573641from an inline function.
36583642
3659- <!-- Do not remove the following `span`, it is needed to create an
3660- anchor that can be referred via an internal hyperlink to the section
3661- following it. --> <span id="32-bit-simd-operations"></span>
3643+ <span id="32-bit-simd-operations"></span>
36623644
36633645## 32-bit SIMD Operations
36643646
@@ -5543,9 +5525,7 @@ The intrinsics in this section provide C and C++ programmers with a
55435525simple programming model allowing easy access to code-generation of the
55445526Advanced SIMD instructions for both AArch64 and AArch32 execution states.
55455527
5546- <!-- Do not remove the following `span`, it is needed to create an
5547- anchor that can be referred via an internal hyperlink to the section
5548- following it. --> <span id="neon-intrinsics-concepts"></span>
5528+ <span id="neon-intrinsics-concepts"></span>
55495529
55505530### Concepts
55515531
@@ -5655,9 +5635,7 @@ mangling purposes.
56555635
56565636`float64_t` is defined as an alias for `double`.
56575637
5658- <!-- Do not remove the following `span`, it is needed to create an
5659- anchor that can be referred via an internal hyperlink to the section
5660- following it. --> <span id="16-bit-floating-point-arithmetic-scalar-intrinsics"></span>
5638+ <span id="16-bit-floating-point-arithmetic-scalar-intrinsics"></span>
56615639
56625640### 16-bit floating-point arithmetic scalar intrinsics
56635641
@@ -5682,9 +5660,7 @@ an implementation is required to ensure that including
56825660To only enable support for the scalar 16-bit floating-point intrinsics,
56835661the header `<arm_fp16.h>` may be included directly.
56845662
5685- <!-- Do not remove the following `span`, it is needed to create an
5686- anchor that can be referred via an internal hyperlink to the section
5687- following it. --> <span id="16-bit-brain-floating-point-arithmetic-scalar-intrinsics"></span>
5663+ <span id="16-bit-brain-floating-point-arithmetic-scalar-intrinsics"></span>
56885664
56895665### 16-bit brain floating-point arithmetic scalar intrinsics
56905666
@@ -6251,9 +6227,7 @@ N1570 version of the C standard.
62516227
62526228> Update the entries that refer to the clauses above.
62536229
6254- <!-- Do not remove the following `span`, it is needed to create an
6255- anchor that can be referred via an internal hyperlink to the section
6256- following it. --><span id="sizeless-types-in-cxx"></span>
6230+ <span id="sizeless-types-in-cxx"></span>
62576231
62586232##### Sizeless types in C++
62596233
@@ -9063,9 +9037,7 @@ extended in the future.
90639037
90649038### Introduction to streaming and non-streaming mode
90659039
9066- <!-- Do not remove the following `span`, it is needed to create an
9067- anchor that can be referred via an internal hyperlink to the paragraph
9068- following it. --><span id="streaming-mode"></span>
9040+ <span id="streaming-mode"></span>
90699041
90709042The AArch64 architecture defines a concept called “streaming mode”,
90719043controlled by a processor state bit called PSTATE.SM. At any given
@@ -9082,16 +9054,12 @@ Streaming mode has three main effects on C and C++ code:
90829054 vector length. See [Effect of streaming mode on VL](#effect-of-streaming-mode-on-vl)
90839055 for more details.
90849056
9085- * <!-- Do not remove the following `span`, it is needed to create an
9086- anchor that can be referred via an internal hyperlink to the paragraph
9087- following it. --><span id="streaming-intrinsic"></span>
9057+ * <span id="streaming-intrinsic"></span>
90889058 Some instructions can only be executed in streaming mode, which means
90899059 that their associated ACLE intrinsics can only be used in streaming mode.
90909060 These intrinsics are called “streaming intrinsics”.
90919061
9092- * <!-- Do not remove the following `span`, it is needed to create an
9093- anchor that can be referred via an internal hyperlink to the paragraph
9094- following it. --><span id="non-streaming-intrinsic"></span>
9062+ * <span id="non-streaming-intrinsic"></span>
90959063 Some other instructions can only be executed in non-streaming mode,
90969064 which means that their associated ACLE intrinsics can only be used
90979065 in non-streaming mode. These intrinsics are called
@@ -9114,9 +9082,7 @@ instructions go. For example, when stepping through a program in a
91149082debugger, the processor mode might sometimes be different from the one
91159083implied by the source code.
91169084
9117- <!-- Do not remove the following `span`s, they are needed to create an
9118- anchor that can be referred via an internal hyperlink to the paragraph
9119- following it. --><span id="non-streaming-statement"></span>
9085+ <span id="non-streaming-statement"></span>
91209086<span id="streaming-statement"></span>
91219087<span id="streaming-compatible-statement"></span>
91229088
@@ -9218,10 +9184,7 @@ following example situations:
92189184 the vector length. For example, this could be useful for
92199185 “length agnostic” SVE math routines.
92209186
9221- <!-- Do not remove the following `span`s, they are needed to create an
9222- anchor that can be referred via an internal hyperlink to the paragraph
9223- following it. --><span id="streaming-type"></span><span
9224- id="streaming-compatible-type"></span>
9187+ <span id="streaming-type"></span><span id="streaming-compatible-type"></span>
92259188
92269189For this reason, the “streaming”, “non-streaming” and
92279190“streaming-compatible” classification extends to function types:
@@ -9360,9 +9323,7 @@ the size specified by the non-streaming vector length.
93609323The following definitions are useful when describing the consequences
93619324of this behavior on the vector length:
93629325
9363- * <!-- Do not remove the following `span`, it is needed to create an
9364- anchor that can be referred via an internal hyperlink to the paragraph
9365- following it. --><span id="vl-dependent"></span>
9326+ * <span id="vl-dependent"></span>
93669327 A type T is said to be “VL-dependent” if an object of type T created
93679328 while the [abstract machine](#abstract-machine) is in streaming mode
93689329 has a different size from an object of type T created while the abstract
@@ -9378,15 +9339,11 @@ following it. --><span id="vl-dependent"></span>
93789339 it has been created. The “VL-dependent” classification instead
93799340 decides when it is valid to access the object, as described below.
93809341
9381- * <!-- Do not remove the following `span`, it is needed to create an
9382- anchor that can be referred via an internal hyperlink to the paragraph
9383- following it. --><span id="streaming-object"></span>
9342+ * <span id="streaming-object"></span>
93849343 A VL-dependent object created while the abstract machine is in
93859344 streaming mode is called a “streaming object”.
93869345
9387- * <!-- Do not remove the following `span`, it is needed to create an
9388- anchor that can be referred via an internal hyperlink to the paragraph
9389- following it. --><span id="non-streaming-object"></span>
9346+ * <span id="non-streaming-object"></span>
93909347 A VL-dependent object created while the abstract machine is in
93919348 non-streaming mode is called a “non-streaming object”.
93929349
@@ -9403,9 +9360,7 @@ then the behavior is undefined:
94039360
94049361If, during the execution of a program, a function F1 calls a function F2, then:
94059362
9406- * <!-- Do not remove the following `span`s, they are needed to create an
9407- anchor that can be referred via an internal hyperlink to the paragraph
9408- following it. --><span id="streaming-caller"></span>
9363+ * <span id="streaming-caller"></span>
94099364 <span id="non-streaming-caller"></span>
94109365 F1 is said to be a “streaming caller” if:
94119366
@@ -9416,9 +9371,7 @@ following it. --><span id="streaming-caller"></span>
94169371
94179372 Otherwise, F1 is said to be a “non-streaming caller”.
94189373
9419- * <!-- Do not remove the following `span`s, they are needed to create an
9420- anchor that can be referred via an internal hyperlink to the paragraph
9421- following it. --><span id="streaming-callee"></span>
9374+ * <span id="streaming-callee"></span>
94229375 <span id="non-streaming-callee"></span>
94239376 F2 is said to be a “streaming callee” if:
94249377
@@ -9587,9 +9540,7 @@ SME provides an area of storage called ZA, of size SVL.B×SVL.B bytes.
95879540It also provides a processor state bit called PSTATE.ZA to control
95889541whether ZA is enabled.
95899542
9590- <!-- Do not remove the following `span`, they are needed to create an
9591- anchor that can be referred via an internal hyperlink to the paragraph
9592- following it. --><span id="za-state"></span>
9543+ <span id="za-state"></span>
95939544
95949545In C and C++ code, access to ZA is controlled at function granularity:
95959546a function either [uses](#uses-state) ZA or it does not. Another way to
@@ -9626,9 +9577,7 @@ lookup table called ZT0 which can be accessed through specialized instructions.
96269577ZT0 is architecturally linked to ZA such that changing PSTATE.ZA enables or
96279578disables both ZA and ZT0 simultaneously.
96289579
9629- <!-- Do not remove the following `span`, they are needed to create an
9630- anchor that can be referred via an internal hyperlink to the section
9631- following it. --><span id="zt-state"></span>
9580+ <span id="zt-state"></span>
96329581This means that when the hardware supports SME2, a function that has
96339582[ZA state](#za-state) also has ZT state.
96349583
@@ -9687,9 +9636,7 @@ The function type attributes cannot be used with K&R-style
96879636
96889637### SME keyword attributes related to streaming mode
96899638
9690- <!-- Do not remove the following `span`, it is needed to create an
9691- anchor that can be referred via an internal hyperlink to the paragraph
9692- following it. --><span id="arm_streaming"></span>
9639+ <span id="arm_streaming"></span>
96939640
96949641#### `__arm_streaming`
96959642
@@ -9715,9 +9662,7 @@ generally associated with non-streaming Advanced SIMD code.
97159662See [Managing streaming mode across function boundaries](#managing-streaming-mode-across-function-boundaries)
97169663for more information.
97179664
9718- <!-- Do not remove the following `span`, it is needed to create an
9719- anchor that can be referred via an internal hyperlink to the paragraph
9720- following it. --><span id="arm_streaming_compatible"></span>
9665+ <span id="arm_streaming_compatible"></span>
97219666
97229667#### `__arm_streaming_compatible`
97239668
@@ -9745,9 +9690,7 @@ is generally associated only with non-streaming Advanced SIMD code.
97459690See [Managing streaming mode across function boundaries](#managing-streaming-mode-across-function-boundaries)
97469691for more information.
97479692
9748- <!-- Do not remove the following `span`, it is needed to create an
9749- anchor that can be referred via an internal hyperlink to the paragraph
9750- following it. --><span id="arm_locally_streaming"></span>
9693+ <span id="arm_locally_streaming"></span>
97519694
97529695#### `__arm_locally_streaming`
97539696
@@ -9842,9 +9785,7 @@ specified in this section.
98429785> and then return the top bit of X0. See [[AAPCS64]](#AAPCS64) for
98439786> more details about `__arm_sme_state`.
98449787
9845- <!-- Do not remove the following `span`, they are needed to create an
9846- anchor that can be referred via an internal hyperlink to the paragraph
9847- following it. --><span id="arm_in_streaming_mode"></span>
9788+ <span id="arm_in_streaming_mode"></span>
98489789
98499790**`__arm_in_streaming_mode()`**
98509791
@@ -9855,9 +9796,7 @@ following it. --><span id="arm_in_streaming_mode"></span>
98559796> However, the call is not semantically a constant expression even in
98569797> those cases.
98579798
9858- <!-- Do not remove the following `span`, they are needed to create an
9859- anchor that can be referred via an internal hyperlink to the paragraph
9860- following it. --><span id="arm_za_disable"></span>
9799+ <span id="arm_za_disable"></span>
98619800
98629801**`__arm_za_disable()`**
98639802
0 commit comments