Skip to content

Commit 437954a

Browse files
authored
Remove comments before <span>s (#334)
ACLE had developed a style of prefixing empty <span>s with: <!-- Do not remove the following `span`, it is needed to create an anchor that can be referred via an internal hyperlink to the paragraph following it. --> However, this appears to confuse the GitHub renderer when used in bullet points. It was skipping large portions of text after the streaming-intrinsic and vl-dependent anchors, and formatting later text as though it was part of the same bullet point. Also, I think these large comments make it harder to see the <span> itself. Probably because of this, 16-bit-floating-point-data-processing-operations had become unmoored from the associated text. This patch removes the comments (which seems to fix the rendering) and moves 16-bit-floating-point-data-processing-operations to the appropriate place. I checked each anchor manually to make sure that it still worked.
1 parent cceb4bd commit 437954a

File tree

1 file changed

+34
-95
lines changed

1 file changed

+34
-95
lines changed

main/acle.md

Lines changed: 34 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -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

532534
The 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.
15671557
ACLE 2.0 for A-profile. They are fully supported for M and R-profiles.
15681558
This 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
21042094
instructions 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
21612147
ACLE intrinsics are available. This implies that `__ARM_FEATURE_SVE2` is
21622148
nonzero.
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):
36563640
This example assumes the implementation preserves the Q flag on return
36573641
from 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
55435525
simple programming model allowing easy access to code-generation of the
55445526
Advanced 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
56825660
To only enable support for the scalar 16-bit floating-point intrinsics,
56835661
the 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

90709042
The AArch64 architecture defines a concept called “streaming mode”,
90719043
controlled 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
91149082
debugger, the processor mode might sometimes be different from the one
91159083
implied 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

92269189
For 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.
93609323
The following definitions are useful when describing the consequences
93619324
of 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

94049361
If, 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.
95879540
It also provides a processor state bit called PSTATE.ZA to control
95889541
whether 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

95949545
In C and C++ code, access to ZA is controlled at function granularity:
95959546
a 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.
96269577
ZT0 is architecturally linked to ZA such that changing PSTATE.ZA enables or
96279578
disables 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>
96329581
This 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.
97159662
See [Managing streaming mode across function boundaries](#managing-streaming-mode-across-function-boundaries)
97169663
for 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.
97459690
See [Managing streaming mode across function boundaries](#managing-streaming-mode-across-function-boundaries)
97469691
for 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

Comments
 (0)