diff options
author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-04-24 16:19:08 +0000 |
---|---|---|
committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-04-24 16:19:08 +0000 |
commit | 0626864fa472a0596c026d392a25110f77d13ed1 (patch) | |
tree | 936321563327cf3c0c4660a12b9ce688a701126f /llvm/tools/llvm-mca/llvm-mca.cpp | |
parent | 9df3be3ccb175beb960d7c8456c89c8d94c4ff2d (diff) | |
download | bcm5719-llvm-0626864fa472a0596c026d392a25110f77d13ed1.tar.gz bcm5719-llvm-0626864fa472a0596c026d392a25110f77d13ed1.zip |
[llvm-mca] Default the output asm dialect used by the instruction printer to the input asm dialect.
The instruction printer used by llvm-mca to generate the performance report now
defaults the output assembly format to the format used for the input assembly
file.
On x86, the asm format can be either AT&T or Intel, depending on the
presence/absence of directive `.intel_syntax`.
Users can still specify a different assembly dialect with the command line flag
-output-asm-variant=<uint>.
llvm-svn: 330733
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(); |