summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDisassembler/Disassembler.h
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2013-10-02 22:07:57 +0000
committerQuentin Colombet <qcolombet@apple.com>2013-10-02 22:07:57 +0000
commit5f09cb0dba41256f96e33f53889c43c4a6f69aff (patch)
tree403bdc32e23460917f8274a6d6366a8992d99423 /llvm/lib/MC/MCDisassembler/Disassembler.h
parent2bfa2b91981d58dbb1e8c74681555747aa781b39 (diff)
downloadbcm5719-llvm-5f09cb0dba41256f96e33f53889c43c4a6f69aff.tar.gz
bcm5719-llvm-5f09cb0dba41256f96e33f53889c43c4a6f69aff.zip
[llvm-c][Disassembler] Add an option to print latency information in
disassembled output alongside the instructions. E.g., on a vector shuffle operation with a memory operand, disassembled outputs are: * Without the option: vpshufd $-0x79, (%rsp), %xmm0 * With the option: vpshufd $-0x79, (%rsp), %xmm0 ## Latency: 5 The printed latency is extracted from the schedule model available in the disassembler context. Thus, this option has no effect if there is not a scheduling model for the target. This boils down to one may need to specify the CPU string, so that this option could have an effect. Note: Latency < 2 are not printed. This part of <rdar://problem/14687488>. llvm-svn: 191859
Diffstat (limited to 'llvm/lib/MC/MCDisassembler/Disassembler.h')
-rw-r--r--llvm/lib/MC/MCDisassembler/Disassembler.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCDisassembler/Disassembler.h b/llvm/lib/MC/MCDisassembler/Disassembler.h
index 6eb59d0c57b..05c92dff17c 100644
--- a/llvm/lib/MC/MCDisassembler/Disassembler.h
+++ b/llvm/lib/MC/MCDisassembler/Disassembler.h
@@ -73,6 +73,8 @@ private:
llvm::OwningPtr<const llvm::MCDisassembler> DisAsm;
// The instruction printer for the target architecture.
llvm::OwningPtr<llvm::MCInstPrinter> IP;
+ // The options used to set up the disassembler.
+ uint64_t Options;
public:
// Comment stream and backing vector.
@@ -90,6 +92,7 @@ public:
MCInstPrinter *iP) : TripleName(tripleName),
DisInfo(disInfo), TagType(tagType), GetOpInfo(getOpInfo),
SymbolLookUp(symbolLookUp), TheTarget(theTarget),
+ Options(0),
CommentStream(CommentsToEmit) {
MAI.reset(mAI);
MRI.reset(mRI);
@@ -114,6 +117,8 @@ public:
const MCSubtargetInfo *getSubtargetInfo() const { return MSI.get(); }
MCInstPrinter *getIP() { return IP.get(); }
void setIP(MCInstPrinter *NewIP) { IP.reset(NewIP); }
+ uint64_t getOptions() const { return Options; }
+ void addOptions(uint64_t Options) { this->Options |= Options; }
};
} // namespace llvm
OpenPOWER on IntegriCloud