Skip to content

Commit

Permalink
Revert "[Clang][AArch64][ARM] PMUv3.4 Option Added"
Browse files Browse the repository at this point in the history
It turns out this is conflating a few different PMU extensions. And on
Arm ended up breaking M-Profile code generation. Reverting for the
moment whilst we sort out the details.

This reverts commit d17fb46.
  • Loading branch information
davemgreen committed Jan 11, 2022
1 parent fda47db commit 0c7f515
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 78 deletions.
13 changes: 0 additions & 13 deletions clang/test/Driver/aarch64-perfmon.c

This file was deleted.

13 changes: 0 additions & 13 deletions clang/test/Driver/arm-perfmon.c

This file was deleted.

1 change: 0 additions & 1 deletion llvm/include/llvm/Support/AArch64TargetParser.def
Expand Up @@ -144,7 +144,6 @@ AARCH64_ARCH_EXT_NAME("flagm", AArch64::AEK_FLAGM, "+flagm", "-flag
AARCH64_ARCH_EXT_NAME("sme", AArch64::AEK_SME, "+sme", "-sme")
AARCH64_ARCH_EXT_NAME("sme-f64", AArch64::AEK_SMEF64, "+sme-f64", "-sme-f64")
AARCH64_ARCH_EXT_NAME("sme-i64", AArch64::AEK_SMEI64, "+sme-i64", "-sme-i64")
AARCH64_ARCH_EXT_NAME("pmuv3p4", AArch64::AEK_PERFMON, "+perfmon", "-perfmon")
#undef AARCH64_ARCH_EXT_NAME

#ifndef AARCH64_CPU_NAME
Expand Down
1 change: 0 additions & 1 deletion llvm/include/llvm/Support/AArch64TargetParser.h
Expand Up @@ -69,7 +69,6 @@ enum ArchExtKind : uint64_t {
AEK_SME = 1ULL << 37,
AEK_SMEF64 = 1ULL << 38,
AEK_SMEI64 = 1ULL << 39,
AEK_PERFMON = 1ULL << 40,
};

enum class ArchKind {
Expand Down
1 change: 0 additions & 1 deletion llvm/include/llvm/Support/ARMTargetParser.def
Expand Up @@ -213,7 +213,6 @@ ARM_ARCH_EXT_NAME("cdecp5", ARM::AEK_CDECP5, "+cdecp5", "-cdecp5")
ARM_ARCH_EXT_NAME("cdecp6", ARM::AEK_CDECP6, "+cdecp6", "-cdecp6")
ARM_ARCH_EXT_NAME("cdecp7", ARM::AEK_CDECP7, "+cdecp7", "-cdecp7")
ARM_ARCH_EXT_NAME("pacbti", ARM::AEK_PACBTI, "+pacbti", "-pacbti")
ARM_ARCH_EXT_NAME("pmuv3p4", ARM::AEK_PERFMON, "+perfmon", "-perfmon")
#undef ARM_ARCH_EXT_NAME

#ifndef ARM_HW_DIV_NAME
Expand Down
1 change: 0 additions & 1 deletion llvm/include/llvm/Support/ARMTargetParser.h
Expand Up @@ -60,7 +60,6 @@ enum ArchExtKind : uint64_t {
AEK_CDECP6 = 1 << 28,
AEK_CDECP7 = 1 << 29,
AEK_PACBTI = 1 << 30,
AEK_PERFMON = 1ULL << 31,
// Unsupported extensions.
AEK_OS = 1ULL << 59,
AEK_IWMMXT = 1ULL << 60,
Expand Down
2 changes: 0 additions & 2 deletions llvm/lib/Support/AArch64TargetParser.cpp
Expand Up @@ -114,8 +114,6 @@ bool AArch64::getExtensionFeatures(uint64_t Extensions,
Features.push_back("+sme-f64");
if (Extensions & AArch64::AEK_SMEI64)
Features.push_back("+sme-i64");
if (Extensions & AArch64::AEK_PERFMON)
Features.push_back("+perfmon");

return true;
}
Expand Down
95 changes: 49 additions & 46 deletions llvm/unittests/Support/TargetParserTest.cpp
Expand Up @@ -728,8 +728,7 @@ TEST(TargetParserTest, ARMArchExtFeature) {
{"sb", "nosb", "+sb", "-sb"},
{"i8mm", "noi8mm", "+i8mm", "-i8mm"},
{"mve", "nomve", "+mve", "-mve"},
{"mve.fp", "nomve.fp", "+mve.fp", "-mve.fp"},
{"pmuv3p4", "nopmuv3p4", "+perfmon", "-perfmon"}};
{"mve.fp", "nomve.fp", "+mve.fp", "-mve.fp"}};

for (unsigned i = 0; i < array_lengthof(ArchExt); i++) {
EXPECT_EQ(StringRef(ArchExt[i][2]), ARM::getArchExtFeature(ArchExt[i][0]));
Expand Down Expand Up @@ -1429,14 +1428,17 @@ TEST(TargetParserTest, testAArch64Extension) {

TEST(TargetParserTest, AArch64ExtensionFeatures) {
std::vector<uint64_t> Extensions = {
AArch64::AEK_CRC, AArch64::AEK_CRYPTO, AArch64::AEK_FP,
AArch64::AEK_SIMD, AArch64::AEK_FP16, AArch64::AEK_PROFILE,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_DOTPROD, AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_SVE2AES, AArch64::AEK_SVE2SM4, AArch64::AEK_SVE2SHA3,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_RCPC, AArch64::AEK_FP16FML,
AArch64::AEK_SME, AArch64::AEK_SMEF64, AArch64::AEK_SMEI64,
AArch64::AEK_PERFMON};
AArch64::AEK_CRC, AArch64::AEK_CRYPTO,
AArch64::AEK_FP, AArch64::AEK_SIMD,
AArch64::AEK_FP16, AArch64::AEK_PROFILE,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_DOTPROD,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_SVE2AES, AArch64::AEK_SVE2SM4,
AArch64::AEK_SVE2SHA3, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_RCPC, AArch64::AEK_FP16FML,
AArch64::AEK_SME, AArch64::AEK_SMEF64,
AArch64::AEK_SMEI64 };

std::vector<StringRef> Features;

Expand Down Expand Up @@ -1471,7 +1473,6 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+sme"));
EXPECT_TRUE(llvm::is_contained(Features, "+sme-f64"));
EXPECT_TRUE(llvm::is_contained(Features, "+sme-i64"));
EXPECT_TRUE(llvm::is_contained(Features, "+perfmon"));
}

TEST(TargetParserTest, AArch64ArchFeatures) {
Expand All @@ -1484,41 +1485,43 @@ TEST(TargetParserTest, AArch64ArchFeatures) {
}

TEST(TargetParserTest, AArch64ArchExtFeature) {
const char *ArchExt[][4] = {
{"crc", "nocrc", "+crc", "-crc"},
{"crypto", "nocrypto", "+crypto", "-crypto"},
{"flagm", "noflagm", "+flagm", "-flagm"},
{"fp", "nofp", "+fp-armv8", "-fp-armv8"},
{"simd", "nosimd", "+neon", "-neon"},
{"fp16", "nofp16", "+fullfp16", "-fullfp16"},
{"fp16fml", "nofp16fml", "+fp16fml", "-fp16fml"},
{"profile", "noprofile", "+spe", "-spe"},
{"ras", "noras", "+ras", "-ras"},
{"lse", "nolse", "+lse", "-lse"},
{"rdm", "nordm", "+rdm", "-rdm"},
{"sve", "nosve", "+sve", "-sve"},
{"sve2", "nosve2", "+sve2", "-sve2"},
{"sve2-aes", "nosve2-aes", "+sve2-aes", "-sve2-aes"},
{"sve2-sm4", "nosve2-sm4", "+sve2-sm4", "-sve2-sm4"},
{"sve2-sha3", "nosve2-sha3", "+sve2-sha3", "-sve2-sha3"},
{"sve2-bitperm", "nosve2-bitperm", "+sve2-bitperm", "-sve2-bitperm"},
{"dotprod", "nodotprod", "+dotprod", "-dotprod"},
{"rcpc", "norcpc", "+rcpc", "-rcpc"},
{"rng", "norng", "+rand", "-rand"},
{"memtag", "nomemtag", "+mte", "-mte"},
{"tme", "notme", "+tme", "-tme"},
{"pauth", "nopauth", "+pauth", "-pauth"},
{"ssbs", "nossbs", "+ssbs", "-ssbs"},
{"sb", "nosb", "+sb", "-sb"},
{"predres", "nopredres", "+predres", "-predres"},
{"i8mm", "noi8mm", "+i8mm", "-i8mm"},
{"f32mm", "nof32mm", "+f32mm", "-f32mm"},
{"f64mm", "nof64mm", "+f64mm", "-f64mm"},
{"sme", "nosme", "+sme", "-sme"},
{"sme-f64", "nosme-f64", "+sme-f64", "-sme-f64"},
{"sme-i64", "nosme-i64", "+sme-i64", "-sme-i64"},
{"pmuv3p4", "nopmuv3p4", "+perfmon", "-perfmon"},
};
const char *ArchExt[][4] = {{"crc", "nocrc", "+crc", "-crc"},
{"crypto", "nocrypto", "+crypto", "-crypto"},
{"flagm", "noflagm", "+flagm", "-flagm"},
{"fp", "nofp", "+fp-armv8", "-fp-armv8"},
{"simd", "nosimd", "+neon", "-neon"},
{"fp16", "nofp16", "+fullfp16", "-fullfp16"},
{"fp16fml", "nofp16fml", "+fp16fml", "-fp16fml"},
{"profile", "noprofile", "+spe", "-spe"},
{"ras", "noras", "+ras", "-ras"},
{"lse", "nolse", "+lse", "-lse"},
{"rdm", "nordm", "+rdm", "-rdm"},
{"sve", "nosve", "+sve", "-sve"},
{"sve2", "nosve2", "+sve2", "-sve2"},
{"sve2-aes", "nosve2-aes", "+sve2-aes",
"-sve2-aes"},
{"sve2-sm4", "nosve2-sm4", "+sve2-sm4",
"-sve2-sm4"},
{"sve2-sha3", "nosve2-sha3", "+sve2-sha3",
"-sve2-sha3"},
{"sve2-bitperm", "nosve2-bitperm",
"+sve2-bitperm", "-sve2-bitperm"},
{"dotprod", "nodotprod", "+dotprod", "-dotprod"},
{"rcpc", "norcpc", "+rcpc", "-rcpc" },
{"rng", "norng", "+rand", "-rand"},
{"memtag", "nomemtag", "+mte", "-mte"},
{"tme", "notme", "+tme", "-tme"},
{"pauth", "nopauth", "+pauth", "-pauth"},
{"ssbs", "nossbs", "+ssbs", "-ssbs"},
{"sb", "nosb", "+sb", "-sb"},
{"predres", "nopredres", "+predres", "-predres"},
{"i8mm", "noi8mm", "+i8mm", "-i8mm"},
{"f32mm", "nof32mm", "+f32mm", "-f32mm"},
{"f64mm", "nof64mm", "+f64mm", "-f64mm"},
{"sme", "nosme", "+sme", "-sme"},
{"sme-f64", "nosme-f64", "+sme-f64", "-sme-f64"},
{"sme-i64", "nosme-i64", "+sme-i64", "-sme-i64"},
};

for (unsigned i = 0; i < array_lengthof(ArchExt); i++) {
EXPECT_EQ(StringRef(ArchExt[i][2]),
Expand Down

0 comments on commit 0c7f515

Please sign in to comment.