llvm.org GIT mirror llvm / 6aaf3f7
[AArch64] Add basic support for Qualcomm's Saphira CPU. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314105 91177308-0d34-0410-b5e6-96231b3b80d8 Chad Rosier 1 year, 11 months ago
11 changed file(s) with 45 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
8383 (AArch64::AEK_CRC))
8484 AARCH64_CPU_NAME("falkor", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
8585 (AArch64::AEK_CRC | AArch64::AEK_RDM))
86 AARCH64_CPU_NAME("saphira", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false,
87 (AArch64::AEK_PROFILE))
8688 AARCH64_CPU_NAME("kryo", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
8789 (AArch64::AEK_CRC))
8890 AARCH64_CPU_NAME("thunderx2t99", ARMV8_1A, FK_CRYPTO_NEON_FP_ARMV8, false,
211211 .Case("0x800", "cortex-a73")
212212 .Case("0x801", "cortex-a73")
213213 .Case("0xc00", "falkor")
214 .Case("0xc01", "saphira")
214215 .Default("generic");
215216
216217 return "generic";
347347 FeatureSlowSTRQro
348348 ]>;
349349
350 def ProcSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira",
351 "Qualcomm Saphira processors", [
352 FeatureCrypto,
353 FeatureCustomCheapAsMoveHandling,
354 FeatureFPARMv8,
355 FeatureNEON,
356 FeatureSPE,
357 FeaturePerfMon,
358 FeaturePostRAScheduler,
359 FeaturePredictableSelectIsExpensive,
360 FeatureZCZeroing,
361 FeatureLSLFast,
362 HasV8_3aOps]>;
363
350364 def ProcThunderX2T99 : SubtargetFeature<"thunderx2t99", "ARMProcFamily",
351365 "ThunderX2T99",
352366 "Cavium ThunderX2 processors", [
425439 def : ProcessorModel<"exynos-m2", ExynosM1Model, [ProcExynosM2]>;
426440 def : ProcessorModel<"exynos-m3", ExynosM1Model, [ProcExynosM2]>;
427441 def : ProcessorModel<"falkor", FalkorModel, [ProcFalkor]>;
442 def : ProcessorModel<"saphira", FalkorModel, [ProcSaphira]>;
428443 def : ProcessorModel<"kryo", KryoModel, [ProcKryo]>;
429444 // Cavium ThunderX/ThunderX T8X Processors
430445 def : ProcessorModel<"thunderx", ThunderXT8XModel, [ProcThunderX]>;
9494 MinPrefetchStride = 2048;
9595 MaxPrefetchIterationsAhead = 8;
9696 break;
97 case Saphira:
98 MaxInterleaveFactor = 4;
99 // FIXME: remove this to enable 64-bit SLP if performance looks good.
100 MinVectorRegisterBitWidth = 128;
101 break;
97102 case Kryo:
98103 MaxInterleaveFactor = 4;
99104 VectorInsertExtractBaseCost = 2;
4949 ExynosM1,
5050 Falkor,
5151 Kryo,
52 Saphira,
5253 ThunderX2T99,
5354 ThunderX,
5455 ThunderXT81,
11 ; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-eabi -mattr=+rdm -aarch64-neon-syntax=generic | FileCheck %s --check-prefix=CHECK-V81a
22 ; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-eabi -mcpu=falkor -aarch64-neon-syntax=generic | FileCheck %s --check-prefix=CHECK-V81a
33 ; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-eabi -mattr=+v8.1a -aarch64-neon-syntax=generic | FileCheck %s --check-prefix=CHECK-V81a
4 ; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-eabi -mcpu=saphira -aarch64-neon-syntax=generic | FileCheck %s --check-prefix=CHECK-V81a
45 ; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-eabi -mattr=+v8.1a -aarch64-neon-syntax=apple | FileCheck %s --check-prefix=CHECK-V81a-apple
56
67 declare <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16>, <4 x i16>)
0 ; RUN: llc -mtriple=aarch64-none-linux-gnu -disable-post-ra -verify-machineinstrs -mattr=+lse < %s | FileCheck %s
11 ; RUN: llc -mtriple=aarch64-none-linux-gnu -disable-post-ra -verify-machineinstrs -mattr=+lse < %s | FileCheck %s --check-prefix=CHECK-REG
2 ; RUN: llc -mtriple=aarch64-none-linux-gnu -disable-post-ra -verify-machineinstrs -mcpu=saphira < %s | FileCheck %s
23
34 ; Point of CHECK-REG is to make sure UNPREDICTABLE instructions aren't created
45 ; (i.e. reusing a register for status & data in store exclusive).
1212 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m2 2>&1 | FileCheck %s
1313 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m3 2>&1 | FileCheck %s
1414 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=falkor 2>&1 | FileCheck %s
15 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=saphira 2>&1 | FileCheck %s
1516 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=kryo 2>&1 | FileCheck %s
1617 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=thunderx2t99 2>&1 | FileCheck %s
1718 ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=invalidcpu 2>&1 | FileCheck %s --check-prefix=INVALID
88 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m2 -o - %s | FileCheck %s
99 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m3 -o - %s | FileCheck %s
1010 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=falkor -o - %s | FileCheck %s
11 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=saphira -o - %s | FileCheck %s
1112 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=kryo -o - %s | FileCheck %s
1213 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=thunderx2t99 -o - %s | FileCheck %s
1314 ; RUN: llc -mtriple=aarch64-linux-gnuabi -mattr=+custom-cheap-as-move -o - %s | FileCheck %s
113113 EXPECT_EQ(sys::detail::getHostCPUNameForARM("CPU implementer : 0x51\n"
114114 "CPU part : 0xc00"),
115115 "falkor");
116 EXPECT_EQ(sys::detail::getHostCPUNameForARM("CPU implementer : 0x51\n"
117 "CPU part : 0xc01"),
118 "saphira");
116119
117120 // MSM8992/4 weirdness
118121 StringRef MSM8992ProcCpuInfo = R"(
788788 AArch64::ArchKind::INVALID, "rdm"));
789789 EXPECT_FALSE(testAArch64Extension("kryo",
790790 AArch64::ArchKind::INVALID, "ras"));
791 EXPECT_TRUE(testAArch64Extension("saphira",
792 AArch64::ArchKind::INVALID, "crc"));
793 EXPECT_TRUE(testAArch64Extension("saphira",
794 AArch64::ArchKind::INVALID, "lse"));
795 EXPECT_TRUE(testAArch64Extension("saphira",
796 AArch64::ArchKind::INVALID, "rdm"));
797 EXPECT_TRUE(testAArch64Extension("saphira",
798 AArch64::ArchKind::INVALID, "ras"));
799 EXPECT_TRUE(testAArch64Extension("saphira",
800 AArch64::ArchKind::INVALID, "rcpc"));
801 EXPECT_TRUE(testAArch64Extension("saphira",
802 AArch64::ArchKind::INVALID, "profile"));
803 EXPECT_FALSE(testAArch64Extension("saphira",
804 AArch64::ArchKind::INVALID, "fullfp16"));
791805 EXPECT_FALSE(testAArch64Extension("thunderx2t99",
792806 AArch64::ArchKind::INVALID, "ras"));
793807 EXPECT_FALSE(testAArch64Extension("thunderx",