1a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//===- MBlazeDisassembler.h - Disassembler for MicroBlaze  ------*- C++ -*-===//
2a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//
3a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//                     The LLVM Compiler Infrastructure
4a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//
5a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck// This file is distributed under the University of Illinois Open Source
6a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck// License. See LICENSE.TXT for details.
7a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//
8a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//===----------------------------------------------------------------------===//
9a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//
10a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck// This file is part of the MBlaze Disassembler. It it the header for
11a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck// MBlazeDisassembler, a subclass of MCDisassembler.
12a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//
13a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck//===----------------------------------------------------------------------===//
14a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
15a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck#ifndef MBLAZEDISASSEMBLER_H
16a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck#define MBLAZEDISASSEMBLER_H
17a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
18a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck#include "llvm/MC/MCDisassembler.h"
19a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
20a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckstruct InternalInstruction;
21a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
22a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Pecknamespace llvm {
23a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
24a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckclass MCInst;
25a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckclass MemoryObject;
26a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckclass raw_ostream;
27a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
28a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckstruct EDInstInfo;
29a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
30a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck/// MBlazeDisassembler - Disassembler for all MBlaze platforms.
31a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckclass MBlazeDisassembler : public MCDisassembler {
32a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peckpublic:
33a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  /// Constructor     - Initializes the disassembler.
34a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  ///
35b950585cc5a0d665e9accfe5ce490cd269756f2eJames Molloy  MBlazeDisassembler(const MCSubtargetInfo &STI) :
36b950585cc5a0d665e9accfe5ce490cd269756f2eJames Molloy    MCDisassembler(STI) {
37a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  }
38a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
39a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  ~MBlazeDisassembler() {
40a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  }
41a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
42a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  /// getInstruction - See MCDisassembler.
4383e3f67fb68d497b600da83a62f000fcce7868a9Owen Anderson  MCDisassembler::DecodeStatus getInstruction(MCInst &instr,
44a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck                      uint64_t &size,
45a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck                      const MemoryObject &region,
46a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck                      uint64_t address,
4798c5ddabca1debf935a07d14d0cbc9732374bdb8Owen Anderson                      raw_ostream &vStream,
4898c5ddabca1debf935a07d14d0cbc9732374bdb8Owen Anderson                      raw_ostream &cStream) const;
49a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
50a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  /// getEDInfo - See MCDisassembler.
51a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck  EDInstInfo *getEDInfo() const;
52a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck};
53a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
54a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck} // namespace llvm
55a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck
56a06038369b830bb83742b6b39775f39dd9e69ae2Wesley Peck#endif
57