blob: 486f899354f4839cbca4cca4ba88e9d53b3a52d2 [file] [log] [blame]
Johnny Chenb68a3ee2010-04-02 22:27:38 +00001//===------------ ARMDecoderEmitter.h - Decoder Generator -------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file is part of the ARM Disassembler.
11// It contains the tablegen backend declaration ARMDecoderEmitter.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef ARMDECODEREMITTER_H
16#define ARMDECODEREMITTER_H
17
Michael J. Spencer3cc52ea2010-11-29 18:47:54 +000018#include "llvm/Support/DataTypes.h"
Peter Collingbourne7c788882011-10-01 16:41:13 +000019#include "llvm/TableGen/TableGenBackend.h"
Johnny Chenb68a3ee2010-04-02 22:27:38 +000020
21namespace llvm {
22
23class ARMDecoderEmitter : public TableGenBackend {
24 RecordKeeper &Records;
25public:
26 ARMDecoderEmitter(RecordKeeper &R) : Records(R) {
27 initBackend();
28 }
29
30 ~ARMDecoderEmitter() {
31 shutdownBackend();
32 }
Duncan Sands34727662010-07-12 08:16:59 +000033
Johnny Chenb68a3ee2010-04-02 22:27:38 +000034 // run - Output the code emitter
35 void run(raw_ostream &o);
36
37private:
38 // Helper class for ARMDecoderEmitter.
39 class ARMDEBackend;
40
41 ARMDEBackend *Backend;
42
43 void initBackend();
44 void shutdownBackend();
45};
46
47} // end llvm namespace
48
49#endif