diff options
Diffstat (limited to 'llvm/tools/llvm-mca/llvm-mca.cpp')
-rw-r--r-- | llvm/tools/llvm-mca/llvm-mca.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp index 9b9c70a8565..77fd70d459f 100644 --- a/llvm/tools/llvm-mca/llvm-mca.cpp +++ b/llvm/tools/llvm-mca/llvm-mca.cpp @@ -71,9 +71,10 @@ static cl::opt<std::string> cl::desc("Target a specific cpu type (-mcpu=help for details)"), cl::value_desc("cpu-name"), cl::init("generic")); -static cl::opt<unsigned> +static cl::opt<int> OutputAsmVariant("output-asm-variant", - cl::desc("Syntax variant to use for output printing")); + cl::desc("Syntax variant to use for output printing"), + cl::init(-1)); static cl::opt<unsigned> Iterations("iterations", cl::desc("Number of iterations to run"), @@ -356,16 +357,6 @@ int main(int argc, char **argv) { return 1; } - std::unique_ptr<MCInstPrinter> IP(TheTarget->createMCInstPrinter( - Triple(TripleName), OutputAsmVariant, *MAI, *MCII, *MRI)); - if (!IP) { - WithColor::error() - << "unable to create instruction printer for target triple '" - << TheTriple.normalize() << "' with assembly variant " - << OutputAsmVariant << ".\n"; - return 1; - } - std::unique_ptr<MCAsmParser> P(createMCAsmParser(SrcMgr, Ctx, Str, *MAI)); MCAsmLexer &Lexer = P->getLexer(); MCACommentConsumer CC(Regions); @@ -386,6 +377,19 @@ int main(int argc, char **argv) { return 1; } + unsigned AssemblerDialect = P->getAssemblerDialect(); + if (OutputAsmVariant >= 0) + AssemblerDialect = static_cast<unsigned>(OutputAsmVariant); + std::unique_ptr<MCInstPrinter> IP(TheTarget->createMCInstPrinter( + Triple(TripleName), AssemblerDialect, *MAI, *MCII, *MRI)); + if (!IP) { + WithColor::error() + << "unable to create instruction printer for target triple '" + << TheTriple.normalize() << "' with assembly variant " + << AssemblerDialect << ".\n"; + return 1; + } + std::unique_ptr<llvm::ToolOutputFile> TOF = std::move(*OF); const MCSchedModel &SM = STI->getSchedModel(); |