This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGc84b8be516bc: [AArch64] clang support for Armv8.8/9.3 MOPS (authored by pratlucas, committed by tyb0807).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117271/new/ https://reviews.llvm.org/D117271 Files: clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/test/Driver/aarch64-mops.c llvm/include/llvm/Support/AArch64TargetParser.def llvm/include/llvm/Support/AArch64TargetParser.h llvm/lib/Support/AArch64TargetParser.cpp llvm/unittests/Support/TargetParserTest.cpp Index: llvm/unittests/Support/TargetParserTest.cpp =================================================================== --- llvm/unittests/Support/TargetParserTest.cpp +++ llvm/unittests/Support/TargetParserTest.cpp @@ -1519,6 +1519,7 @@ {"sme-f64", "nosme-f64", "+sme-f64", "-sme-f64"}, {"sme-i64", "nosme-i64", "+sme-i64", "-sme-i64"}, {"hbc", "nohbc", "+hbc", "-hbc"}, + {"mops", "nomops", "+mops", "-mops"}, }; for (unsigned i = 0; i < array_lengthof(ArchExt); i++) { Index: llvm/lib/Support/AArch64TargetParser.cpp =================================================================== --- llvm/lib/Support/AArch64TargetParser.cpp +++ llvm/lib/Support/AArch64TargetParser.cpp @@ -116,6 +116,8 @@ Features.push_back("+sme-i64"); if (Extensions & AArch64::AEK_HBC) Features.push_back("+hbc"); + if (Extensions & AArch64::AEK_MOPS) + Features.push_back("+mops"); return true; } Index: llvm/include/llvm/Support/AArch64TargetParser.h =================================================================== --- llvm/include/llvm/Support/AArch64TargetParser.h +++ llvm/include/llvm/Support/AArch64TargetParser.h @@ -70,6 +70,7 @@ AEK_SMEF64 = 1ULL << 38, AEK_SMEI64 = 1ULL << 39, AEK_HBC = 1ULL << 40, + AEK_MOPS = 1ULL << 41, }; enum class ArchKind { Index: llvm/include/llvm/Support/AArch64TargetParser.def =================================================================== --- llvm/include/llvm/Support/AArch64TargetParser.def +++ llvm/include/llvm/Support/AArch64TargetParser.def @@ -145,6 +145,7 @@ 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("hbc", AArch64::AEK_HBC, "+hbc", "-hbc") +AARCH64_ARCH_EXT_NAME("mops", AArch64::AEK_MOPS, "+mops", "-mops") #undef AARCH64_ARCH_EXT_NAME #ifndef AARCH64_CPU_NAME Index: clang/test/Driver/aarch64-mops.c =================================================================== --- /dev/null +++ clang/test/Driver/aarch64-mops.c @@ -0,0 +1,6 @@ +// Test that target feature mops is implemented and available correctly +// RUN: %clang -### -target aarch64-none-none-eabi -march=armv8.8-a+mops %s 2>&1 | FileCheck %s +// CHECK: "-target-feature" "+mops" + +// RUN: %clang -### -target aarch64-none-none-eabi -march=armv8.8-a+nomops %s 2>&1 | FileCheck %s --check-prefix=NO_MOPS +// NO_MOPS: "-target-feature" "-mops" Index: clang/lib/Basic/Targets/AArch64.h =================================================================== --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -54,6 +54,7 @@ bool HasLSE; bool HasFlagM; bool HasHBC; + bool HasMOPS; llvm::AArch64::ArchKind ArchKind; Index: clang/lib/Basic/Targets/AArch64.cpp =================================================================== --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -544,6 +544,7 @@ HasMatmulFP32 = false; HasLSE = false; HasHBC = false; + HasMOPS = false; ArchKind = llvm::AArch64::ArchKind::INVALID;
Index: llvm/unittests/Support/TargetParserTest.cpp =================================================================== --- llvm/unittests/Support/TargetParserTest.cpp +++ llvm/unittests/Support/TargetParserTest.cpp @@ -1519,6 +1519,7 @@ {"sme-f64", "nosme-f64", "+sme-f64", "-sme-f64"}, {"sme-i64", "nosme-i64", "+sme-i64", "-sme-i64"}, {"hbc", "nohbc", "+hbc", "-hbc"}, + {"mops", "nomops", "+mops", "-mops"}, }; for (unsigned i = 0; i < array_lengthof(ArchExt); i++) { Index: llvm/lib/Support/AArch64TargetParser.cpp =================================================================== --- llvm/lib/Support/AArch64TargetParser.cpp +++ llvm/lib/Support/AArch64TargetParser.cpp @@ -116,6 +116,8 @@ Features.push_back("+sme-i64"); if (Extensions & AArch64::AEK_HBC) Features.push_back("+hbc"); + if (Extensions & AArch64::AEK_MOPS) + Features.push_back("+mops"); return true; } Index: llvm/include/llvm/Support/AArch64TargetParser.h =================================================================== --- llvm/include/llvm/Support/AArch64TargetParser.h +++ llvm/include/llvm/Support/AArch64TargetParser.h @@ -70,6 +70,7 @@ AEK_SMEF64 = 1ULL << 38, AEK_SMEI64 = 1ULL << 39, AEK_HBC = 1ULL << 40, + AEK_MOPS = 1ULL << 41, }; enum class ArchKind { Index: llvm/include/llvm/Support/AArch64TargetParser.def =================================================================== --- llvm/include/llvm/Support/AArch64TargetParser.def +++ llvm/include/llvm/Support/AArch64TargetParser.def @@ -145,6 +145,7 @@ 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("hbc", AArch64::AEK_HBC, "+hbc", "-hbc") +AARCH64_ARCH_EXT_NAME("mops", AArch64::AEK_MOPS, "+mops", "-mops") #undef AARCH64_ARCH_EXT_NAME #ifndef AARCH64_CPU_NAME Index: clang/test/Driver/aarch64-mops.c =================================================================== --- /dev/null +++ clang/test/Driver/aarch64-mops.c @@ -0,0 +1,6 @@ +// Test that target feature mops is implemented and available correctly +// RUN: %clang -### -target aarch64-none-none-eabi -march=armv8.8-a+mops %s 2>&1 | FileCheck %s +// CHECK: "-target-feature" "+mops" + +// RUN: %clang -### -target aarch64-none-none-eabi -march=armv8.8-a+nomops %s 2>&1 | FileCheck %s --check-prefix=NO_MOPS +// NO_MOPS: "-target-feature" "-mops" Index: clang/lib/Basic/Targets/AArch64.h =================================================================== --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -54,6 +54,7 @@ bool HasLSE; bool HasFlagM; bool HasHBC; + bool HasMOPS; llvm::AArch64::ArchKind ArchKind; Index: clang/lib/Basic/Targets/AArch64.cpp =================================================================== --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -544,6 +544,7 @@ HasMatmulFP32 = false; HasLSE = false; HasHBC = false; + HasMOPS = false; ArchKind = llvm::AArch64::ArchKind::INVALID;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits