Add alpha-level support for SME#123
Conversation
|
@paulwalker-arm pointed out that the It would have been possible to fix that by saying that the function leaves ZA active if ZA was previously dormant. This would make the function's interface incompatible with both the private-ZA and shared-ZA specs. However, it didn't seem worth adding a third type of ZA interface for this one function. The new version therefore makes it the caller's responsibility to clear TPIDR2_EL0 instead. |
|
I've updated the definition of streaming-compatible function interfaces so that they no longer have the extra PSTATE argument. There is instead a new The man advantage of this is that an object file could define a streaming-compatible function symbol to be an alias of a non-streaming function symbol, if the non-streaming function is known to be naturally streaming-compatible. The main disadvantage is that it's now more expensive to read PSTATE.SM in a “safe” way (that is, in a way that works even on non-SME targets). However, it seems relatively unlikely that performance-critical paths of a streaming-compatible function would call (say) a non-streaming function; such a function should probably not be streaming-compatible. |
This patch adds support for SME (Scalable Matrix Extension). At this stage it is still alpha quality.
The spec for __arm_tpidr2_save said that it should clear TPIDR2_EL0 after saving ZA to the ZA save buffer, but that doesn't meet the rquirements for a private-ZA function. This patch makes it the caller's responsibility to clear TPIDR2_EL0 instead.
c2bb09c to
3b612e9
Compare
stuij
left a comment
There was a problem hiding this comment.
We agreed that this has had enough reviews during drafting that it can be released as alpha.
This patch adds support for SME (Scalable Matrix Extension).
At this stage it is still alpha quality.
The request also includes #122