Skip to content

Commit 24b63e7

Browse files
openeuler-ci-botgitee-org
authored andcommitted
!133 [AArch64] Support HiSilicon's hip11 subtarget
From: @xiajingze Reviewed-by: @cf-zhao Signed-off-by: @cf-zhao
2 parents 2350e0b + d905a77 commit 24b63e7

File tree

11 files changed

+63
-4
lines changed

11 files changed

+63
-4
lines changed

clang/test/Driver/aarch64-hip11.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// RUN: %clang -target aarch64_be -mcpu=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11-BE %s
2+
// RUN: %clang -target aarch64 -mbig-endian -mcpu=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11-BE %s
3+
// RUN: %clang -target aarch64_be -mbig-endian -mcpu=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11-BE %s
4+
// RUN: %clang -target aarch64_be -mtune=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11-BE-TUNE %s
5+
// RUN: %clang -target aarch64 -mbig-endian -mtune=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11-BE-TUNE %s
6+
// RUN: %clang -target aarch64_be -mbig-endian -mtune=hip11 -### -c %s 2>&1 | FileCheck -check-prefix=HIP11_BE_TUNE %s
7+
// HIP11-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "hip11"
8+
// HIP11-BE_TUNE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic"

clang/test/Misc/target-invalid-cpu-note.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
// RUN: not %clang_cc1 -triple arm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AARCH64
77
// AARCH64: error: unknown target CPU 'not-a-cpu'
8-
// AARCH64-NEXT: note: valid target CPU values are: cortex-a34, cortex-a35, cortex-a53, cortex-a55, cortex-a510, cortex-a57, cortex-a65, cortex-a65ae, cortex-a72, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78c, cortex-a710, cortex-a715, cortex-r82, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-512tvb, neoverse-v1, neoverse-v2, cyclone, apple-a7, apple-a8, apple-a9, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-m1, apple-m2, apple-s4, apple-s5, exynos-m3, exynos-m4, exynos-m5, falkor, saphira, kryo, thunderx2t99, thunderx3t110, thunderx, thunderxt88, thunderxt81, thunderxt83, tsv110, a64fx, carmel, ampere1, ampere1a, hip09, hip10c, grace{{$}}
8+
// AARCH64-NEXT: note: valid target CPU values are: cortex-a34, cortex-a35, cortex-a53, cortex-a55, cortex-a510, cortex-a57, cortex-a65, cortex-a65ae, cortex-a72, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78c, cortex-a710, cortex-a715, cortex-r82, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-512tvb, neoverse-v1, neoverse-v2, cyclone, apple-a7, apple-a8, apple-a9, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-m1, apple-m2, apple-s4, apple-s5, exynos-m3, exynos-m4, exynos-m5, falkor, saphira, kryo, thunderx2t99, thunderx3t110, thunderx, thunderxt88, thunderxt81, thunderxt83, tsv110, a64fx, carmel, ampere1, ampere1a, hip09, hip10c, hip11, grace{{$}}
99

1010
// RUN: not %clang_cc1 -triple arm64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_AARCH64
1111
// TUNE_AARCH64: error: unknown target CPU 'not-a-cpu'
12-
// TUNE_AARCH64-NEXT: note: valid target CPU values are: cortex-a34, cortex-a35, cortex-a53, cortex-a55, cortex-a510, cortex-a57, cortex-a65, cortex-a65ae, cortex-a72, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78c, cortex-a710, cortex-a715, cortex-r82, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-512tvb, neoverse-v1, neoverse-v2, cyclone, apple-a7, apple-a8, apple-a9, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-m1, apple-m2, apple-s4, apple-s5, exynos-m3, exynos-m4, exynos-m5, falkor, saphira, kryo, thunderx2t99, thunderx3t110, thunderx, thunderxt88, thunderxt81, thunderxt83, tsv110, a64fx, carmel, ampere1, ampere1a, hip09, hip10c, grace{{$}}
12+
// TUNE_AARCH64-NEXT: note: valid target CPU values are: cortex-a34, cortex-a35, cortex-a53, cortex-a55, cortex-a510, cortex-a57, cortex-a65, cortex-a65ae, cortex-a72, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78c, cortex-a710, cortex-a715, cortex-r82, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-512tvb, neoverse-v1, neoverse-v2, cyclone, apple-a7, apple-a8, apple-a9, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-m1, apple-m2, apple-s4, apple-s5, exynos-m3, exynos-m4, exynos-m5, falkor, saphira, kryo, thunderx2t99, thunderx3t110, thunderx, thunderxt88, thunderxt81, thunderxt83, tsv110, a64fx, carmel, ampere1, ampere1a, hip09, hip10c, hip11, grace{{$}}
1313

1414
// RUN: not %clang_cc1 -triple i386--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix X86
1515
// X86: error: unknown target CPU 'not-a-cpu'

llvm/include/llvm/TargetParser/AArch64TargetParser.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,13 @@ inline constexpr CpuInfo CpuInfos[] = {
556556
AArch64::AEK_RAND | AArch64::AEK_SB | AArch64::AEK_SHA2 |
557557
AArch64::AEK_SHA3 | AArch64::AEK_SM4 | AArch64::AEK_SSBS |
558558
AArch64::AEK_SVE | AArch64::AEK_BF16 | AArch64::AEK_I8MM)},
559+
{"hip11", ARMV9A,
560+
(AArch64::AEK_AES | AArch64::AEK_SM4 | AArch64::AEK_SHA2 |
561+
AArch64::AEK_SHA3 | AArch64::AEK_MTE | AArch64::AEK_PAUTH |
562+
AArch64::AEK_FLAGM | AArch64::AEK_SB | AArch64::AEK_I8MM |
563+
AArch64::AEK_FP16FML | AArch64::AEK_SVE | AArch64::AEK_SVE2 |
564+
AArch64::AEK_SVE2BITPERM | AArch64::AEK_BF16 | AArch64::AEK_SME |
565+
AArch64::AEK_SMEF64F64 | AArch64::AEK_SMEFA64)},
559566
};
560567

561568
// An alias for a CPU.

llvm/lib/Target/AArch64/AArch64.td

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,6 +1236,17 @@ def TuneHIP10C : SubtargetFeature<"hip10c", "ARMProcFamily", "HIP10C",
12361236
FeatureAscendStoreAddress,
12371237
FeaturePostRAScheduler]>;
12381238

1239+
def TuneHIP11 : SubtargetFeature<"hip11", "ARMProcFamily", "HIP11",
1240+
"HiSilicon HIP11 processors", [
1241+
FeatureCustomCheapAsMoveHandling,
1242+
FeatureExperimentalZeroingPseudos,
1243+
FeatureFuseAES,
1244+
FeatureLSLFast,
1245+
FeatureAscendStoreAddress,
1246+
FeatureCmpBccFusion,
1247+
FeatureArithmeticBccFusion,
1248+
FeaturePostRAScheduler]>;
1249+
12391250
def TuneAmpere1 : SubtargetFeature<"ampere1", "ARMProcFamily", "Ampere1",
12401251
"Ampere Computing Ampere-1 processors", [
12411252
FeaturePostRAScheduler,
@@ -1400,6 +1411,10 @@ def ProcessorFeatures {
14001411
FeatureMatMulFP32, FeatureMatMulFP64, FeatureMTE, FeaturePerfMon,
14011412
FeatureRandGen, FeatureSHA2, FeatureSHA3, FeatureSM4, FeatureWFxT,
14021413
FeatureBF16, FeatureMatMulInt8];
1414+
list<SubtargetFeature> HIP11 = [HasV9_0aOps, FeaturePerfMon, FeatureETE, FeatureMTE,
1415+
FeatureFP16FML, FeatureSVE2BitPerm, FeatureBF16,
1416+
FeatureMatMulInt8, FeatureCrypto, FeatureSHA3, FeatureSM4,
1417+
FeatureSME, FeatureSMEF64F64, FeatureSMEFA64];
14031418
list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
14041419
FeatureSSBS, FeatureRandGen, FeatureSB,
14051420
FeatureSHA2, FeatureSHA3, FeatureAES];
@@ -1514,6 +1529,9 @@ def : ProcessorModel<"hip09", HIP09Model, ProcessorFeatures.HIP09,
15141529
// FIXME: Hisilicon HIP10C is currently modeled as a Cortex-A57
15151530
def : ProcessorModel<"hip10c", CortexA57Model, ProcessorFeatures.HIP10C,
15161531
[TuneHIP10C]>;
1532+
// FIXME: Hisilicon HIP11 is currently modeled as a Cortex-A57.
1533+
def : ProcessorModel<"hip11", CortexA57Model, ProcessorFeatures.HIP11,
1534+
[TuneHIP11]>;
15171535

15181536
// Support cyclone as an alias for apple-a7 so we can still LTO old bitcode.
15191537
def : ProcessorModel<"cyclone", CycloneModel, ProcessorFeatures.AppleA7,

llvm/lib/Target/AArch64/AArch64Subtarget.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,13 @@ void AArch64Subtarget::initializeProperties() {
280280
VScaleForTuning = 2;
281281
DefaultSVETFOpts = TailFoldingOpts::Simple;
282282
break;
283+
case HIP11:
284+
CacheLineSize = 64;
285+
PrefFunctionAlignment = Align(16);
286+
PrefLoopAlignment = Align(4);
287+
VScaleForTuning = 4;
288+
DefaultSVETFOpts = TailFoldingOpts::Simple;
289+
break;
283290
case ThunderX3T110:
284291
CacheLineSize = 64;
285292
PrefFunctionAlignment = Align(16);

llvm/lib/Target/AArch64/AArch64Subtarget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ class AArch64Subtarget final : public AArch64GenSubtargetInfo {
8989
ThunderX3T110,
9090
TSV110,
9191
HIP09,
92-
HIP10C
92+
HIP10C,
93+
HIP11
9394
};
9495

9596
protected:

llvm/lib/TargetParser/Host.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ StringRef sys::detail::getHostCPUNameForARM(StringRef ProcCpuinfoContent) {
259259
.Case("0xd01", "tsv110")
260260
.Case("0xd02", "hip09")
261261
.Case("0xd45", "hip10c")
262+
.Case("0xd22", "hip11")
262263
.Default("generic");
263264

264265
if (Implementer == "0x51") // Qualcomm Technologies, Inc.

llvm/test/CodeGen/AArch64/cpus.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=tsv110 2>&1 | FileCheck %s
3636
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=hip09 2>&1 | FileCheck %s
3737
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=hip10c 2>&1 | FileCheck %s
38+
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=hip11 2>&1 | FileCheck %s
3839
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=apple-latest 2>&1 | FileCheck %s
3940
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=a64fx 2>&1 | FileCheck %s
4041
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=ampere1 2>&1 | FileCheck %s

llvm/test/CodeGen/AArch64/remat.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=tsv110 -o - %s | FileCheck %s
2525
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=hip09 -o - %s | FileCheck %s
2626
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=hip10c -o - %s | FileCheck %s
27+
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=hip11 -o - %s | FileCheck %s
2728
; RUN: llc -mtriple=aarch64-linux-gnuabi -mattr=+custom-cheap-as-move -o - %s | FileCheck %s
2829
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=thunderx3t110 -o - %s | FileCheck %s
2930
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=ampere1 -o - %s | FileCheck %s

llvm/unittests/TargetParser/Host.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@ CPU part : 0x0a1
256256
EXPECT_EQ(sys::detail::getHostCPUNameForARM("CPU implementer : 0x48\n"
257257
"CPU part : 0xd45"),
258258
"hip10c");
259+
EXPECT_EQ(sys::detail::getHostCPUNameForARM("CPU implementer : 0x48\n"
260+
"CPU part : 0xd22"),
261+
"hip11");
259262

260263
// Verify A64FX.
261264
const std::string A64FXProcCpuInfo = R"(

0 commit comments

Comments
 (0)