
This introduces the Armv9.6-A architecture version, including the relevant command-line option for -march. More details about the Armv9.6-A architecture version can be found at: * https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2024 * https://developer.arm.com/documentation/ddi0602/2024-09/
351 lines
22 KiB
TableGen
351 lines
22 KiB
TableGen
class Architecture<string fname, string aname, list<SubtargetFeature> features>
|
|
: SubtargetFeature<fname, "ARMArch", aname,
|
|
!strconcat(aname, " architecture"), features>;
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// ARM architectures
|
|
//
|
|
|
|
def ARMv4 : Architecture<"armv4", "ARMv4", []>;
|
|
|
|
def ARMv4t : Architecture<"armv4t", "ARMv4t", [HasV4TOps]>;
|
|
|
|
def ARMv5t : Architecture<"armv5t", "ARMv5t", [HasV5TOps]>;
|
|
|
|
def ARMv5te : Architecture<"armv5te", "ARMv5te", [HasV5TEOps]>;
|
|
|
|
def ARMv5tej : Architecture<"armv5tej", "ARMv5tej", [HasV5TEOps]>;
|
|
|
|
def ARMv6 : Architecture<"armv6", "ARMv6", [HasV6Ops,
|
|
FeatureDSP]>;
|
|
|
|
def ARMv6t2 : Architecture<"armv6t2", "ARMv6t2", [HasV6T2Ops,
|
|
FeatureDSP]>;
|
|
|
|
def ARMv6k : Architecture<"armv6k", "ARMv6k", [HasV6KOps]>;
|
|
|
|
def ARMv6kz : Architecture<"armv6kz", "ARMv6kz", [HasV6KOps,
|
|
FeatureTrustZone]>;
|
|
|
|
def ARMv6m : Architecture<"armv6-m", "ARMv6m", [HasV6MOps,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureMClass,
|
|
FeatureStrictAlign]>;
|
|
|
|
def ARMv6sm : Architecture<"armv6s-m", "ARMv6sm", [HasV6MOps,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureMClass,
|
|
FeatureStrictAlign]>;
|
|
|
|
def ARMv7a : Architecture<"armv7-a", "ARMv7a", [HasV7Ops,
|
|
FeatureNEON,
|
|
FeatureDB,
|
|
FeatureDSP,
|
|
FeatureAClass,
|
|
FeaturePerfMon]>;
|
|
|
|
def ARMv7ve : Architecture<"armv7ve", "ARMv7ve", [HasV7Ops,
|
|
FeatureNEON,
|
|
FeatureDB,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureAClass,
|
|
FeaturePerfMon]>;
|
|
|
|
def ARMv7r : Architecture<"armv7-r", "ARMv7r", [HasV7Ops,
|
|
FeatureDB,
|
|
FeatureDSP,
|
|
FeatureHWDivThumb,
|
|
FeatureRClass,
|
|
FeaturePerfMon]>;
|
|
|
|
def ARMv7m : Architecture<"armv7-m", "ARMv7m", [HasV7Ops,
|
|
FeatureThumb2,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureHWDivThumb,
|
|
FeatureMClass]>;
|
|
|
|
def ARMv7em : Architecture<"armv7e-m", "ARMv7em", [HasV7Ops,
|
|
FeatureThumb2,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureHWDivThumb,
|
|
FeatureMClass,
|
|
FeatureDSP]>;
|
|
|
|
def ARMv8a : Architecture<"armv8-a", "ARMv8a", [HasV8Ops,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC]>;
|
|
|
|
def ARMv81a : Architecture<"armv8.1-a", "ARMv81a", [HasV8_1aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC]>;
|
|
|
|
def ARMv82a : Architecture<"armv8.2-a", "ARMv82a", [HasV8_2aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS]>;
|
|
|
|
def ARMv83a : Architecture<"armv8.3-a", "ARMv83a", [HasV8_3aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS]>;
|
|
|
|
def ARMv84a : Architecture<"armv8.4-a", "ARMv84a", [HasV8_4aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
|
|
def ARMv85a : Architecture<"armv8.5-a", "ARMv85a", [HasV8_5aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv86a : Architecture<"armv8.6-a", "ARMv86a", [HasV8_6aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv87a : Architecture<"armv8.7-a", "ARMv87a", [HasV8_7aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv88a : Architecture<"armv8.8-a", "ARMv88a", [HasV8_8aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv89a : Architecture<"armv8.9-a", "ARMv89a", [HasV8_9aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
|
|
def ARMv9a : Architecture<"armv9-a", "ARMv9a", [HasV9_0aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv91a : Architecture<"armv9.1-a", "ARMv91a", [HasV9_1aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv92a : Architecture<"armv9.2-a", "ARMv92a", [HasV9_2aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv93a : Architecture<"armv9.3-a", "ARMv93a", [HasV9_3aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCrypto,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv94a : Architecture<"armv9.4-a", "ARMv94a", [HasV9_4aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv95a : Architecture<"armv9.5-a", "ARMv95a", [HasV9_5aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv96a : Architecture<"armv9.6-a", "ARMv96a", [HasV9_6aOps,
|
|
FeatureAClass,
|
|
FeatureDB,
|
|
FeatureFPARMv8,
|
|
FeatureNEON,
|
|
FeatureDSP,
|
|
FeatureTrustZone,
|
|
FeatureMP,
|
|
FeatureVirtualization,
|
|
FeatureCRC,
|
|
FeatureRAS,
|
|
FeatureDotProd]>;
|
|
def ARMv8r : Architecture<"armv8-r", "ARMv8r", [HasV8Ops,
|
|
FeatureRClass,
|
|
FeatureDB,
|
|
FeatureDFB,
|
|
FeatureDSP,
|
|
FeatureCRC,
|
|
FeatureMP,
|
|
FeatureFPARMv8_D16_SP,
|
|
FeatureVirtualization]>;
|
|
|
|
def ARMv8mBaseline : Architecture<"armv8-m.base", "ARMv8mBaseline",
|
|
[HasV8MBaselineOps,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureHWDivThumb,
|
|
FeatureV7Clrex,
|
|
Feature8MSecExt,
|
|
FeatureAcquireRelease,
|
|
FeatureMClass,
|
|
FeatureStrictAlign]>;
|
|
|
|
def ARMv8mMainline : Architecture<"armv8-m.main", "ARMv8mMainline",
|
|
[HasV8MMainlineOps,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureHWDivThumb,
|
|
Feature8MSecExt,
|
|
FeatureAcquireRelease,
|
|
FeatureMClass]>;
|
|
|
|
def ARMv81mMainline : Architecture<"armv8.1-m.main", "ARMv81mMainline",
|
|
[HasV8_1MMainlineOps,
|
|
FeatureNoARM,
|
|
ModeThumb,
|
|
FeatureDB,
|
|
FeatureHWDivThumb,
|
|
Feature8MSecExt,
|
|
FeatureAcquireRelease,
|
|
FeatureMClass,
|
|
FeatureRAS,
|
|
FeatureLOB]>;
|
|
|
|
// Aliases
|
|
def IWMMXT : Architecture<"iwmmxt", "ARMv5te", [ARMv5te]>;
|
|
def IWMMXT2 : Architecture<"iwmmxt2", "ARMv5te", [ARMv5te]>;
|
|
def XScale : Architecture<"xscale", "ARMv5te", [ARMv5te]>;
|
|
def ARMv6j : Architecture<"armv6j", "ARMv7a", [ARMv6]>;
|
|
def ARMv7k : Architecture<"armv7k", "ARMv7a", [ARMv7a]>;
|
|
def ARMv7s : Architecture<"armv7s", "ARMv7a", [ARMv7a]>;
|