1283625Sdim//===-- AArch64TargetStreamer.h - AArch64 Target Streamer ------*- C++ -*--===//
2283625Sdim//
3283625Sdim//                     The LLVM Compiler Infrastructure
4283625Sdim//
5283625Sdim// This file is distributed under the University of Illinois Open Source
6283625Sdim// License. See LICENSE.TXT for details.
7283625Sdim//
8283625Sdim//===----------------------------------------------------------------------===//
9283625Sdim
10283625Sdim#ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64TARGETSTREAMER_H
11283625Sdim#define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64TARGETSTREAMER_H
12283625Sdim
13283625Sdim#include "llvm/MC/MCStreamer.h"
14283625Sdim
15283625Sdimnamespace llvm {
16283625Sdim
17283625Sdimclass AArch64TargetStreamer : public MCTargetStreamer {
18283625Sdimpublic:
19283625Sdim  AArch64TargetStreamer(MCStreamer &S);
20283625Sdim  ~AArch64TargetStreamer() override;
21283625Sdim
22283625Sdim  void finish() override;
23283625Sdim
24283625Sdim  /// Callback used to implement the ldr= pseudo.
25283625Sdim  /// Add a new entry to the constant pool for the current section and return an
26283625Sdim  /// MCExpr that can be used to refer to the constant pool location.
27296417Sdim  const MCExpr *addConstantPoolEntry(const MCExpr *, unsigned Size, SMLoc Loc);
28283625Sdim
29283625Sdim  /// Callback used to implemnt the .ltorg directive.
30283625Sdim  /// Emit contents of constant pool for the current section.
31283625Sdim  void emitCurrentConstantPool();
32283625Sdim
33283625Sdim  /// Callback used to implement the .inst directive.
34283625Sdim  virtual void emitInst(uint32_t Inst);
35283625Sdim
36283625Sdimprivate:
37283625Sdim  std::unique_ptr<AssemblerConstantPools> ConstantPools;
38283625Sdim};
39283625Sdim
40283625Sdim} // end namespace llvm
41283625Sdim
42283625Sdim#endif
43