mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
[AArch64, ARM] Add v8.1a architecture and generic cpu
New architecture and cpu added, following http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development Reviewers: t.p.northover Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8505 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233290 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -44,6 +44,8 @@ ARM_ARCH_NAME("armv7-m", ARMV7M, "7-M", v7)
|
||||
ARM_ARCH_ALIAS("armv7m", ARMV7M)
|
||||
ARM_ARCH_NAME("armv8-a", ARMV8A, "8-A", v8)
|
||||
ARM_ARCH_ALIAS("armv8a", ARMV8A)
|
||||
ARM_ARCH_NAME("armv8.1-a", ARMV8_1A, "8.1-A", v8)
|
||||
ARM_ARCH_ALIAS("armv8.1a", ARMV8_1A)
|
||||
ARM_ARCH_NAME("iwmmxt", IWMMXT, "iwmmxt", v5TE)
|
||||
ARM_ARCH_NAME("iwmmxt2", IWMMXT2, "iwmmxt2", v5TE)
|
||||
|
||||
|
||||
@@ -817,6 +817,7 @@ void ARMTargetELFStreamer::emitArchDefaultAttributes() {
|
||||
break;
|
||||
|
||||
case ARM::ARMV8A:
|
||||
case ARM::ARMV8_1A:
|
||||
setAttributeItem(CPU_arch_profile, ApplicationProfile, false);
|
||||
setAttributeItem(ARM_ISA_use, Allowed, false);
|
||||
setAttributeItem(THUMB_ISA_use, AllowThumb32, false);
|
||||
@@ -914,9 +915,8 @@ void ARMTargetELFStreamer::emitFPUDefaultAttributes() {
|
||||
setAttributeItem(ARMBuildAttrs::FP_arch,
|
||||
ARMBuildAttrs::AllowFPARMv8A,
|
||||
/* OverwriteExisting= */ false);
|
||||
setAttributeItem(ARMBuildAttrs::Advanced_SIMD_arch,
|
||||
ARMBuildAttrs::AllowNeonARMv8,
|
||||
/* OverwriteExisting= */ false);
|
||||
// 'Advanced_SIMD_arch' must be emitted not here, but within
|
||||
// ARMAsmPrinter::emitAttributes(), depending on hasV8Ops() and hasV8_1a()
|
||||
break;
|
||||
|
||||
case ARM::SOFTVFP:
|
||||
|
||||
@@ -153,6 +153,17 @@ std::string ARM_MC::ParseARMTriple(StringRef TT, StringRef CPU) {
|
||||
// Use CPU to figure out the exact features
|
||||
ARMArchFeature = "+v8";
|
||||
break;
|
||||
case Triple::ARMSubArch_v8_1a:
|
||||
if (NoCPU)
|
||||
// v8.1a: FeatureDB, FeatureFPARMv8, FeatureNEON, FeatureDSPThumb2,
|
||||
// FeatureMP, FeatureHWDiv, FeatureHWDivARM, FeatureTrustZone,
|
||||
// FeatureT2XtPk, FeatureCrypto, FeatureCRC, FeatureV8_1a
|
||||
ARMArchFeature = "+v8.1a,+db,+fp-armv8,+neon,+t2dsp,+mp,+hwdiv,+hwdiv-arm,"
|
||||
"+trustzone,+t2xtpk,+crypto,+crc";
|
||||
else
|
||||
// Use CPU to figure out the exact features
|
||||
ARMArchFeature = "+v8.1a";
|
||||
break;
|
||||
case Triple::ARMSubArch_v7m:
|
||||
isThumb = true;
|
||||
if (NoCPU)
|
||||
|
||||
Reference in New Issue
Block a user