1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===- AArch64Disassembler.h - Disassembler for AArch64 ---------*- C++ -*-===//
2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
3dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//                     The LLVM Compiler Infrastructure
4dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
5dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// This file is distributed under the University of Illinois Open Source
6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// License. See LICENSE.TXT for details.
7dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
8dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===//
9dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
10dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===//
12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef AArch64DISASSEMBLER_H
14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define AArch64DISASSEMBLER_H
15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/MC/MCDisassembler.h"
17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesnamespace llvm {
19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass MCInst;
21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass MemoryObject;
22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass raw_ostream;
23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass AArch64Disassembler : public MCDisassembler {
25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinespublic:
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  AArch64Disassembler(const MCSubtargetInfo &STI, MCContext &Ctx)
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines    : MCDisassembler(STI, Ctx) {}
28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  ~AArch64Disassembler() {}
30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  /// getInstruction - See MCDisassembler.
32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  MCDisassembler::DecodeStatus
33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  getInstruction(MCInst &instr, uint64_t &size, const MemoryObject &region,
34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                 uint64_t address, raw_ostream &vStream,
35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                 raw_ostream &cStream) const override;
36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines};
37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} // namespace llvm
39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#endif
41