Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions main/acle.md
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,9 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 shift right narrow intrinsics.
* Bumped armv9.6 intrinsics implementation to [**Beta**](#current-status-and-anticipated-changes)
* Added support for producer-consumer data placement hints.
* Clarified interaction between SME keyword attributes and a common compiler
extension whereby type attributes can be inherited between subsequent
duplicate decls.

### References

Expand Down Expand Up @@ -10743,6 +10746,35 @@ The function type attributes cannot be used with K&R-style
int f2(void) ATTR { ... } // OK
```

Some implementations may, as an extension, accept code such as:

```c
void f(void) [[attr1, attr2, ..., attrN]];
void f(void);
```

where the second declaration inherits the type attributes from the
first, even if the declarations would otherwise be incompatible.

However, this specification considers such code invalid if the first
declaration is annotated with an SME keyword attribute which would make
the declarations incompatible (as above), due to its absence from the
second declaration.

Thus, e.g. all of the following (otherwise duplicate) declarations are
ill-formed:

```c
void f(void) __arm_streaming;
void f(void); // Ill-formed

void g(void) __arm_streaming_compatible;
void g(void) {} // Ill-formed

void h(void) __arm_streaming __arm_inout("za");
void h(void); // Ill-formed
```

### SME keyword attributes related to streaming mode

<span id="arm_streaming"></span>
Expand Down
Loading