[llvm] 767b26a - [MCA] Support multiple comma-separated -mattr features
Cullen Rhodes via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 12 01:21:51 PDT 2022
Author: Cullen Rhodes
Date: 2022-07-12T08:20:11Z
New Revision: 767b26a4e2e54bcf1df1163e0e55c278e3acef7e
URL: https://github.com/llvm/llvm-project/commit/767b26a4e2e54bcf1df1163e0e55c278e3acef7e
DIFF: https://github.com/llvm/llvm-project/commit/767b26a4e2e54bcf1df1163e0e55c278e3acef7e.diff
LOG: [MCA] Support multiple comma-separated -mattr features
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D129479
Added:
Modified:
llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s
llvm/tools/llvm-mca/llvm-mca.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s
index 053382f837cee..62db90a525b89 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s
@@ -1,10 +1,5 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
-# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -mattr=+sve2-aes -instruction-tables < %s | FileCheck %s
-
-# NOTE: Only 1 feature can be passed to llvm-mca via -mattr, enable other
-# features with directive.
-.arch_extension sve2-sha3
-.arch_extension sve2-sm4
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -mattr=+sve2-aes,+sve2-sha3,+sve2-sm4 -instruction-tables < %s | FileCheck %s
abs z0.b, p0/m, z0.b
abs z0.d, p0/m, z0.d
diff --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp
index 409de283e5a17..6f7b74fd11ec5 100644
--- a/llvm/tools/llvm-mca/llvm-mca.cpp
+++ b/llvm/tools/llvm-mca/llvm-mca.cpp
@@ -92,9 +92,10 @@ static cl::opt<std::string>
cl::desc("Target a specific cpu type (-mcpu=help for details)"),
cl::value_desc("cpu-name"), cl::cat(ToolOptions), cl::init("native"));
-static cl::opt<std::string> MATTR("mattr",
- cl::desc("Additional target features."),
- cl::cat(ToolOptions));
+static cl::list<std::string>
+ MATTRS("mattr", cl::CommaSeparated,
+ cl::desc("Target specific attributes (-mattr=help for details)"),
+ cl::value_desc("a1,+a2,-a3,..."), cl::cat(ToolOptions));
static cl::opt<bool> PrintJson("json",
cl::desc("Print the output in json format"),
@@ -346,8 +347,17 @@ int main(int argc, char **argv) {
if (MCPU == "native")
MCPU = std::string(llvm::sys::getHostCPUName());
+ // Package up features to be passed to target/subtarget
+ std::string FeaturesStr;
+ if (MATTRS.size()) {
+ SubtargetFeatures Features;
+ for (std::string &MAttr : MATTRS)
+ Features.AddFeature(MAttr);
+ FeaturesStr = Features.getString();
+ }
+
std::unique_ptr<MCSubtargetInfo> STI(
- TheTarget->createMCSubtargetInfo(TripleName, MCPU, MATTR));
+ TheTarget->createMCSubtargetInfo(TripleName, MCPU, FeaturesStr));
assert(STI && "Unable to create subtarget info!");
if (!STI->isCPUStringValid(MCPU))
return 1;
More information about the llvm-commits
mailing list