forked from OSchip/llvm-project
[ARM] Add Cortex-A78 and Cortex-X1 Support for Clang and LLVM
This patch upstreams support for the Arm-v8 Cortex-A78 and Cortex-X1 processors for AArch64 and ARM. In detail: - Adding cortex-a78 and cortex-x1 as cpu options for aarch64 and arm targets in clang - Adding Cortex-A78 and Cortex-X1 CPU names and ProcessorModels in llvm details of the CPU can be found here: https://www.arm.com/products/cortex-x https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a78 The following people contributed to this patch: - Luke Geeson - Mikhail Maltsev Reviewers: t.p.northover, dmgreen Reviewed By: dmgreen Subscribers: dmgreen, kristof.beyls, hiraditya, danielkiss, cfe-commits, llvm-commits, miyuki Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D83206
This commit is contained in:
parent
b887da81cc
commit
954db63cd1
|
@ -173,6 +173,10 @@
|
||||||
|
|
||||||
// RUN: %clang -target aarch64 -mcpu=cortex-a77 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A77 %s
|
// RUN: %clang -target aarch64 -mcpu=cortex-a77 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A77 %s
|
||||||
// CORTEX-A77: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a77"
|
// CORTEX-A77: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a77"
|
||||||
|
// RUN: %clang -target aarch64 -mcpu=cortex-x1 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEXX1 %s
|
||||||
|
// CORTEXX1: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-x1"
|
||||||
|
// RUN: %clang -target aarch64 -mcpu=cortex-a78 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEXA78 %s
|
||||||
|
// CORTEXA78: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a78"
|
||||||
|
|
||||||
// RUN: %clang -target aarch64_be -mcpu=exynos-m3 -### -c %s 2>&1 | FileCheck -check-prefix=M3 %s
|
// RUN: %clang -target aarch64_be -mcpu=exynos-m3 -### -c %s 2>&1 | FileCheck -check-prefix=M3 %s
|
||||||
// RUN: %clang -target aarch64 -mbig-endian -mcpu=exynos-m3 -### -c %s 2>&1 | FileCheck -check-prefix=M3 %s
|
// RUN: %clang -target aarch64 -mbig-endian -mcpu=exynos-m3 -### -c %s 2>&1 | FileCheck -check-prefix=M3 %s
|
||||||
|
|
|
@ -840,6 +840,18 @@
|
||||||
// CHECK-CORTEX-A76AE-SOFT: "-target-feature" "+soft-float"
|
// CHECK-CORTEX-A76AE-SOFT: "-target-feature" "+soft-float"
|
||||||
// CHECK-CORTEX-A76AE-SOFT: "-target-feature" "+soft-float-abi"
|
// CHECK-CORTEX-A76AE-SOFT: "-target-feature" "+soft-float-abi"
|
||||||
|
|
||||||
|
// RUN: %clang -target armv8a-arm-none-eabi -mcpu=cortex-x1 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-X1 %s
|
||||||
|
// RUN: %clang -target armv8a-arm-none-eabi -mcpu=cortex-x1 -mfpu=crypto-neon-fp-armv8 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-X1-MFPU %s
|
||||||
|
// CHECK-CORTEX-X1: "-cc1"{{.*}} "-triple" "armv8.2a-{{.*}} "-target-cpu" "cortex-x1"
|
||||||
|
// CHECK-CORTEX-X1-MFPU: "-cc1"{{.*}} "-target-feature" "+fp-armv8"
|
||||||
|
// CHECK-CORTEX-X1-MFPU: "-target-feature" "+crypto"
|
||||||
|
|
||||||
|
// RUN: %clang -target armv8a-arm-none-eabi -mcpu=cortex-a78 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A78 %s
|
||||||
|
// RUN: %clang -target armv8a-arm-none-eabi -mcpu=cortex-a78 -mfpu=crypto-neon-fp-armv8 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A78-MFPU %s
|
||||||
|
// CHECK-CORTEX-A78: "-cc1"{{.*}} "-triple" "armv8.2a-{{.*}} "-target-cpu" "cortex-a78"
|
||||||
|
// CHECK-CORTEX-A78-MFPU: "-cc1"{{.*}} "-target-feature" "+fp-armv8"
|
||||||
|
// CHECK-CORTEX-A78-MFPU: "-target-feature" "+crypto"
|
||||||
|
|
||||||
// RUN: %clang -target arm -mcpu=cortex-m23 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV8MBASE %s
|
// RUN: %clang -target arm -mcpu=cortex-m23 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV8MBASE %s
|
||||||
// CHECK-CPUV8MBASE: "-cc1"{{.*}} "-triple" "thumbv8m.base-
|
// CHECK-CPUV8MBASE: "-cc1"{{.*}} "-triple" "thumbv8m.base-
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,12 @@ AARCH64_CPU_NAME("cortex-a76ae", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
AARCH64_CPU_NAME("cortex-a77", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
AARCH64_CPU_NAME("cortex-a77", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
(AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD |
|
(AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD |
|
||||||
AArch64::AEK_SSBS))
|
AArch64::AEK_SSBS))
|
||||||
|
AARCH64_CPU_NAME("cortex-a78", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
|
(AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC |
|
||||||
|
AArch64::AEK_SSBS))
|
||||||
|
AARCH64_CPU_NAME("cortex-x1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
|
(AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC |
|
||||||
|
AArch64::AEK_SSBS))
|
||||||
AARCH64_CPU_NAME("neoverse-e1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
AARCH64_CPU_NAME("neoverse-e1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
(AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RAS |
|
(AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RAS |
|
||||||
AArch64::AEK_RCPC | AArch64::AEK_SSBS))
|
AArch64::AEK_RCPC | AArch64::AEK_SSBS))
|
||||||
|
|
|
@ -294,6 +294,10 @@ ARM_CPU_NAME("cortex-a76ae", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
||||||
ARM_CPU_NAME("cortex-a77", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
ARM_CPU_NAME("cortex-a77", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
||||||
|
ARM_CPU_NAME("cortex-a78",ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
|
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
||||||
|
ARM_CPU_NAME("cortex-x1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
|
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
||||||
ARM_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
ARM_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
|
||||||
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
|
||||||
ARM_CPU_NAME("cyclone", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
|
ARM_CPU_NAME("cyclone", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
|
||||||
|
|
|
@ -205,6 +205,8 @@ StringRef sys::detail::getHostCPUNameForARM(StringRef ProcCpuinfoContent) {
|
||||||
.Case("0xd0a", "cortex-a75")
|
.Case("0xd0a", "cortex-a75")
|
||||||
.Case("0xd0b", "cortex-a76")
|
.Case("0xd0b", "cortex-a76")
|
||||||
.Case("0xd0d", "cortex-a77")
|
.Case("0xd0d", "cortex-a77")
|
||||||
|
.Case("0xd41", "cortex-a78")
|
||||||
|
.Case("0xd44", "cortex-x1")
|
||||||
.Case("0xd0c", "neoverse-n1")
|
.Case("0xd0c", "neoverse-n1")
|
||||||
.Default("generic");
|
.Default("generic");
|
||||||
}
|
}
|
||||||
|
|
|
@ -636,6 +636,36 @@ def ProcA77 : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77",
|
||||||
FeatureDotProd
|
FeatureDotProd
|
||||||
]>;
|
]>;
|
||||||
|
|
||||||
|
def ProcA78 : SubtargetFeature<"cortex-a78", "ARMProcFamily",
|
||||||
|
"CortexA78",
|
||||||
|
"Cortex-A78 ARM processors", [
|
||||||
|
HasV8_2aOps,
|
||||||
|
FeatureCrypto,
|
||||||
|
FeatureFPARMv8,
|
||||||
|
FeatureFuseAES,
|
||||||
|
FeatureNEON,
|
||||||
|
FeatureRCPC,
|
||||||
|
FeaturePerfMon,
|
||||||
|
FeaturePostRAScheduler,
|
||||||
|
FeatureSPE,
|
||||||
|
FeatureFullFP16,
|
||||||
|
FeatureSSBS,
|
||||||
|
FeatureDotProd]>;
|
||||||
|
|
||||||
|
def ProcX1 : SubtargetFeature<"cortex-x1", "ARMProcFamily", "CortexX1",
|
||||||
|
"Cortex-X1 ARM processors", [
|
||||||
|
HasV8_2aOps,
|
||||||
|
FeatureCrypto,
|
||||||
|
FeatureFPARMv8,
|
||||||
|
FeatureFuseAES,
|
||||||
|
FeatureNEON,
|
||||||
|
FeatureRCPC,
|
||||||
|
FeaturePerfMon,
|
||||||
|
FeaturePostRAScheduler,
|
||||||
|
FeatureSPE,
|
||||||
|
FeatureFullFP16,
|
||||||
|
FeatureDotProd]>;
|
||||||
|
|
||||||
def ProcA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX",
|
def ProcA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX",
|
||||||
"Fujitsu A64FX processors", [
|
"Fujitsu A64FX processors", [
|
||||||
HasV8_2aOps,
|
HasV8_2aOps,
|
||||||
|
@ -978,6 +1008,8 @@ def : ProcessorModel<"cortex-a75", CortexA57Model, [ProcA75]>;
|
||||||
def : ProcessorModel<"cortex-a76", CortexA57Model, [ProcA76]>;
|
def : ProcessorModel<"cortex-a76", CortexA57Model, [ProcA76]>;
|
||||||
def : ProcessorModel<"cortex-a76ae", CortexA57Model, [ProcA76]>;
|
def : ProcessorModel<"cortex-a76ae", CortexA57Model, [ProcA76]>;
|
||||||
def : ProcessorModel<"cortex-a77", CortexA57Model, [ProcA77]>;
|
def : ProcessorModel<"cortex-a77", CortexA57Model, [ProcA77]>;
|
||||||
|
def : ProcessorModel<"cortex-a78", CortexA57Model, [ProcA78]>;
|
||||||
|
def : ProcessorModel<"cortex-x1", CortexA57Model, [ProcX1]>;
|
||||||
def : ProcessorModel<"neoverse-e1", CortexA53Model, [ProcNeoverseE1]>;
|
def : ProcessorModel<"neoverse-e1", CortexA53Model, [ProcNeoverseE1]>;
|
||||||
def : ProcessorModel<"neoverse-n1", CortexA57Model, [ProcNeoverseN1]>;
|
def : ProcessorModel<"neoverse-n1", CortexA57Model, [ProcNeoverseN1]>;
|
||||||
def : ProcessorModel<"exynos-m3", ExynosM3Model, [ProcExynosM3]>;
|
def : ProcessorModel<"exynos-m3", ExynosM3Model, [ProcExynosM3]>;
|
||||||
|
|
|
@ -102,6 +102,8 @@ void AArch64Subtarget::initializeProperties() {
|
||||||
case CortexA75:
|
case CortexA75:
|
||||||
case CortexA76:
|
case CortexA76:
|
||||||
case CortexA77:
|
case CortexA77:
|
||||||
|
case CortexA78:
|
||||||
|
case CortexX1:
|
||||||
PrefFunctionLogAlignment = 4;
|
PrefFunctionLogAlignment = 4;
|
||||||
break;
|
break;
|
||||||
case A64FX:
|
case A64FX:
|
||||||
|
|
|
@ -56,6 +56,8 @@ public:
|
||||||
CortexA75,
|
CortexA75,
|
||||||
CortexA76,
|
CortexA76,
|
||||||
CortexA77,
|
CortexA77,
|
||||||
|
CortexA78,
|
||||||
|
CortexX1,
|
||||||
ExynosM3,
|
ExynosM3,
|
||||||
Falkor,
|
Falkor,
|
||||||
Kryo,
|
Kryo,
|
||||||
|
|
|
@ -596,6 +596,10 @@ def ProcA76 : SubtargetFeature<"a76", "ARMProcFamily", "CortexA76",
|
||||||
"Cortex-A76 ARM processors", []>;
|
"Cortex-A76 ARM processors", []>;
|
||||||
def ProcA77 : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77",
|
def ProcA77 : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77",
|
||||||
"Cortex-A77 ARM processors", []>;
|
"Cortex-A77 ARM processors", []>;
|
||||||
|
def ProcA78 : SubtargetFeature<"cortex-a78", "ARMProcFamily", "CortexA78",
|
||||||
|
"Cortex-A78 ARM processors", []>;
|
||||||
|
def ProcX1 : SubtargetFeature<"cortex-x1", "ARMProcFamily", "CortexX1",
|
||||||
|
"Cortex-X1 ARM processors", []>;
|
||||||
|
|
||||||
def ProcKrait : SubtargetFeature<"krait", "ARMProcFamily", "Krait",
|
def ProcKrait : SubtargetFeature<"krait", "ARMProcFamily", "Krait",
|
||||||
"Qualcomm Krait processors", []>;
|
"Qualcomm Krait processors", []>;
|
||||||
|
@ -1234,6 +1238,22 @@ def : ProcNoItin<"cortex-a77", [ARMv82a, ProcA77,
|
||||||
FeatureFullFP16,
|
FeatureFullFP16,
|
||||||
FeatureDotProd]>;
|
FeatureDotProd]>;
|
||||||
|
|
||||||
|
def : ProcNoItin<"cortex-a78", [ARMv82a, ProcA78,
|
||||||
|
FeatureHWDivThumb,
|
||||||
|
FeatureHWDivARM,
|
||||||
|
FeatureCrypto,
|
||||||
|
FeatureCRC,
|
||||||
|
FeatureFullFP16,
|
||||||
|
FeatureDotProd]>;
|
||||||
|
|
||||||
|
def : ProcNoItin<"cortex-x1", [ARMv82a, ProcX1,
|
||||||
|
FeatureHWDivThumb,
|
||||||
|
FeatureHWDivARM,
|
||||||
|
FeatureCrypto,
|
||||||
|
FeatureCRC,
|
||||||
|
FeatureFullFP16,
|
||||||
|
FeatureDotProd]>;
|
||||||
|
|
||||||
def : ProcNoItin<"neoverse-n1", [ARMv82a,
|
def : ProcNoItin<"neoverse-n1", [ARMv82a,
|
||||||
FeatureHWDivThumb,
|
FeatureHWDivThumb,
|
||||||
FeatureHWDivARM,
|
FeatureHWDivARM,
|
||||||
|
|
|
@ -293,12 +293,14 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
|
||||||
case CortexA75:
|
case CortexA75:
|
||||||
case CortexA76:
|
case CortexA76:
|
||||||
case CortexA77:
|
case CortexA77:
|
||||||
|
case CortexA78:
|
||||||
case CortexR4:
|
case CortexR4:
|
||||||
case CortexR4F:
|
case CortexR4F:
|
||||||
case CortexR5:
|
case CortexR5:
|
||||||
case CortexR7:
|
case CortexR7:
|
||||||
case CortexM3:
|
case CortexM3:
|
||||||
case CortexR52:
|
case CortexR52:
|
||||||
|
case CortexX1:
|
||||||
break;
|
break;
|
||||||
case Exynos:
|
case Exynos:
|
||||||
LdStMultipleTiming = SingleIssuePlusExtras;
|
LdStMultipleTiming = SingleIssuePlusExtras;
|
||||||
|
|
|
@ -62,6 +62,7 @@ protected:
|
||||||
CortexA75,
|
CortexA75,
|
||||||
CortexA76,
|
CortexA76,
|
||||||
CortexA77,
|
CortexA77,
|
||||||
|
CortexA78,
|
||||||
CortexA8,
|
CortexA8,
|
||||||
CortexA9,
|
CortexA9,
|
||||||
CortexM3,
|
CortexM3,
|
||||||
|
@ -70,6 +71,7 @@ protected:
|
||||||
CortexR5,
|
CortexR5,
|
||||||
CortexR52,
|
CortexR52,
|
||||||
CortexR7,
|
CortexR7,
|
||||||
|
CortexX1,
|
||||||
Exynos,
|
Exynos,
|
||||||
Krait,
|
Krait,
|
||||||
Kryo,
|
Kryo,
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a76ae 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a76ae 2>&1 | FileCheck %s
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a76 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a76 2>&1 | FileCheck %s
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a77 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a77 2>&1 | FileCheck %s
|
||||||
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a78 2>&1 | FileCheck %s
|
||||||
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-x1 2>&1 | FileCheck %s
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=neoverse-e1 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=neoverse-e1 2>&1 | FileCheck %s
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=neoverse-n1 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=neoverse-n1 2>&1 | FileCheck %s
|
||||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m3 2>&1 | FileCheck %s
|
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m3 2>&1 | FileCheck %s
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a73 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a73 -o - %s | FileCheck %s
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a75 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a75 -o - %s | FileCheck %s
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a77 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a77 -o - %s | FileCheck %s
|
||||||
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a78 -o - %s | FileCheck %s
|
||||||
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-x1 -o - %s | FileCheck %s
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=neoverse-e1 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=neoverse-e1 -o - %s | FileCheck %s
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=neoverse-n1 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=neoverse-n1 -o - %s | FileCheck %s
|
||||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m3 -o - %s | FileCheck %s
|
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m3 -o - %s | FileCheck %s
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a75 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a75 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
|
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-a78 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
|
// RUN: llvm-mc -triple aarch64 -mcpu=cortex-x1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=neoverse-e1 -show-encoding < %s| FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=neoverse-e1 -show-encoding < %s| FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=neoverse-n1 -show-encoding < %s| FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=neoverse-n1 -show-encoding < %s| FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
// RUN: llvm-mc -triple aarch64 -mcpu=tsv110 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
// RUN: llvm-mc -triple aarch64 -mcpu=tsv110 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
|
||||||
|
@ -19,6 +21,10 @@
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
// RUN: not llvm-mc -triple aarch64 -mcpu=cortex-a77 -mattr=-dotprod -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple aarch64 -mcpu=cortex-a77 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
|
// RUN: not llvm-mc -triple aarch64 -mcpu=cortex-a78 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
|
// RUN: not llvm-mc -triple aarch64 -mcpu=cortex-x1 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
// RUN: not llvm-mc -triple aarch64 -mcpu=neoverse-n1 -mattr=-dotprod -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple aarch64 -mcpu=neoverse-n1 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,17 @@
|
||||||
// RUN: llvm-mc -triple arm -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple arm -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
// RUN: llvm-mc -triple arm -mcpu=neoverse-n1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple arm -mcpu=neoverse-n1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
// RUN: llvm-mc -triple arm -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple arm -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
// RUN: llvm-mc -triple arm -mcpu=cortex-a78 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
// RUN: llvm-mc -triple arm -mcpu=cortex-x1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
|
||||||
// RUN: not llvm-mc -triple arm -mattr=-dotprod -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple arm -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
// RUN: not llvm-mc -triple arm -mcpu=cortex-a77 -mattr=-dotprod -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple arm -mcpu=cortex-a77 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
|
// RUN: not llvm-mc -triple arm -mcpu=cortex-a78 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
|
// RUN: not llvm-mc -triple arm -mcpu=cortex-x1 -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
// RUN: not llvm-mc -triple arm -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple arm -show-encoding < %s 2> %t
|
||||||
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
|
||||||
// RUN: not llvm-mc -triple arm -mattr=+v8.1a -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple arm -mattr=+v8.1a -show-encoding < %s 2> %t
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
// RUN: llvm-mc -triple thumb -mcpu=cortex-a75 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple thumb -mcpu=cortex-a75 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
// RUN: llvm-mc -triple thumb -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple thumb -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
// RUN: llvm-mc -triple thumb -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple thumb -mcpu=cortex-a77 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
// RUN: llvm-mc -triple thumb -mcpu=cortex-a78 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
// RUN: llvm-mc -triple thumb -mcpu=cortex-x1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
// RUN: llvm-mc -triple thumb -mcpu=neoverse-n1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
// RUN: llvm-mc -triple thumb -mcpu=neoverse-n1 -show-encoding < %s | FileCheck %s --check-prefix=CHECK
|
||||||
|
|
||||||
// RUN: not llvm-mc -triple thumb -mattr=-dotprod -show-encoding < %s 2> %t
|
// RUN: not llvm-mc -triple thumb -mattr=-dotprod -show-encoding < %s 2> %t
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a65ae --disassemble < %s | FileCheck %s
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a65ae --disassemble < %s | FileCheck %s
|
||||||
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a75 --disassemble < %s | FileCheck %s
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a75 --disassemble < %s | FileCheck %s
|
||||||
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a77 --disassemble < %s | FileCheck %s
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a77 --disassemble < %s | FileCheck %s
|
||||||
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-a78 --disassemble < %s | FileCheck %s
|
||||||
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=cortex-x1 --disassemble < %s | FileCheck %s
|
||||||
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=neoverse-e1 --disassemble < %s | FileCheck %s
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=neoverse-e1 --disassemble < %s | FileCheck %s
|
||||||
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=neoverse-n1 --disassemble < %s | FileCheck %s
|
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mcpu=neoverse-n1 --disassemble < %s | FileCheck %s
|
||||||
|
|
||||||
|
|
|
@ -262,6 +262,18 @@ TEST(TargetParserTest, testARMCPU) {
|
||||||
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_FP16 |
|
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_FP16 |
|
||||||
ARM::AEK_RAS | ARM::AEK_DOTPROD,
|
ARM::AEK_RAS | ARM::AEK_DOTPROD,
|
||||||
"8.2-A"));
|
"8.2-A"));
|
||||||
|
EXPECT_TRUE(testARMCPU("cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||||
|
ARM::AEK_DOTPROD | ARM::AEK_FP16 |
|
||||||
|
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
|
||||||
|
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB |
|
||||||
|
ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS,
|
||||||
|
"8.2-A"));
|
||||||
|
EXPECT_TRUE(testARMCPU("cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||||
|
ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_DOTPROD |
|
||||||
|
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
|
||||||
|
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB |
|
||||||
|
ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS,
|
||||||
|
"8.2-A"));
|
||||||
EXPECT_TRUE(testARMCPU("neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
|
EXPECT_TRUE(testARMCPU("neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||||
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP |
|
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP |
|
||||||
ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
|
ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
|
||||||
|
@ -310,7 +322,7 @@ TEST(TargetParserTest, testARMCPU) {
|
||||||
"7-S"));
|
"7-S"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr unsigned NumARMCPUArchs = 87;
|
static constexpr unsigned NumARMCPUArchs = 89;
|
||||||
|
|
||||||
TEST(TargetParserTest, testARMCPUArchList) {
|
TEST(TargetParserTest, testARMCPUArchList) {
|
||||||
SmallVector<StringRef, NumARMCPUArchs> List;
|
SmallVector<StringRef, NumARMCPUArchs> List;
|
||||||
|
@ -864,6 +876,20 @@ TEST(TargetParserTest, testAArch64CPU) {
|
||||||
AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_RAS |
|
AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_RAS |
|
||||||
AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD |
|
AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD |
|
||||||
AArch64::AEK_RCPC | AArch64::AEK_SSBS, "8.2-A"));
|
AArch64::AEK_RCPC | AArch64::AEK_SSBS, "8.2-A"));
|
||||||
|
EXPECT_TRUE(testAArch64CPU(
|
||||||
|
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||||
|
AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
|
||||||
|
AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_RAS |
|
||||||
|
AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD |
|
||||||
|
AArch64::AEK_RCPC | AArch64::AEK_SSBS,
|
||||||
|
"8.2-A"));
|
||||||
|
EXPECT_TRUE(testAArch64CPU(
|
||||||
|
"cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||||
|
AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
|
||||||
|
AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_RAS |
|
||||||
|
AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD |
|
||||||
|
AArch64::AEK_RCPC | AArch64::AEK_SSBS,
|
||||||
|
"8.2-A"));
|
||||||
EXPECT_TRUE(testAArch64CPU(
|
EXPECT_TRUE(testAArch64CPU(
|
||||||
"cyclone", "armv8-a", "crypto-neon-fp-armv8",
|
"cyclone", "armv8-a", "crypto-neon-fp-armv8",
|
||||||
AArch64::AEK_CRYPTO | AArch64::AEK_FP | AArch64::AEK_SIMD, "8-A"));
|
AArch64::AEK_CRYPTO | AArch64::AEK_FP | AArch64::AEK_SIMD, "8-A"));
|
||||||
|
@ -1002,7 +1028,7 @@ TEST(TargetParserTest, testAArch64CPU) {
|
||||||
"8.2-A"));
|
"8.2-A"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr unsigned NumAArch64CPUArchs = 40;
|
static constexpr unsigned NumAArch64CPUArchs = 42;
|
||||||
|
|
||||||
TEST(TargetParserTest, testAArch64CPUArchList) {
|
TEST(TargetParserTest, testAArch64CPUArchList) {
|
||||||
SmallVector<StringRef, NumAArch64CPUArchs> List;
|
SmallVector<StringRef, NumAArch64CPUArchs> List;
|
||||||
|
|
Loading…
Reference in New Issue