ARMv8.5-A implies SB and SSBS. This requires some adjustments to the
testcases where ARMv8.5 cores (which must implement these) have tests
that don't expect SB or (usually) SBSS to be set.
Depends on D142396
Paths
| Differential D142410
[AArch64] ARMv8.5-A implies both FEAT_SB and FEAT_SSBS AbandonedPublic Authored by philipp.tomsich on Jan 23 2023, 3:02 PM.
Details
Diff Detail
Unit TestsFailed Event TimelineHerald added projects: Restricted Project, Restricted Project. · View Herald TranscriptJan 23 2023, 3:02 PM Comment Actions I believe this is correct, according to at least one reference I have. FEAT_SSBS isn't spelled out very clearly in the reference manual though. Adding some more people who might be able to check. Comment Actions SSBS is not mandatory from v8.5a onwards. More details/citation inline. NB: This will need a rebase, because @dmgreen changed how crypto is handled in these bitmaps yesterday.
Comment Actions When looking at "ARM DDI 0487G.a", on page A2-68 under the heading "Additional functionality added to Armv8.0 in later releases" in the definition-list item "FEAT_SSBS, Speculative Store Bypass Safe":
There is a to FEAT_SBSS in the backlink in "A2.8 The Armv8.5 architecture extension", under the subsection "A2.8.3 Features added to earlier extensions", in the bullet-list labeled "The features that have been added to earlier architectural extensions are:" Comment Actions
I cited version I.a, which is later than version G.a. Looking at the errata for version G.b, erratum R18653 (page 93) is where it was relaxed to not be mandatory from v8.5a. Errata document link: https://developer.arm.com/documentation/102105/gb-05/?lang=en (I'm just happy this was in the first errata document I looked for!) Comment Actions I just saw that the last response was "unsubmitted". Submitting and abandoning this revision (based on the discussion and the previously unsubmitted comment from my end).
Revision Contents
Diff 491520 clang/test/CodeGen/aarch64-targetattr.c
clang/test/Preprocessor/aarch64-target-features.c
llvm/include/llvm/TargetParser/AArch64TargetParser.h
llvm/lib/Target/AArch64/AArch64.td
llvm/unittests/TargetParser/TargetParserTest.cpp
|
According to the A-profile Arm ARM (version I.a):