1*9880d681SAndroid Build Coastguard Worker //===-- AArch64TargetStreamer.h - AArch64 Target Streamer ------*- C++ -*--===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64TARGETSTREAMER_H 11*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64TARGETSTREAMER_H 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCStreamer.h" 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker namespace llvm { 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker class AArch64TargetStreamer : public MCTargetStreamer { 18*9880d681SAndroid Build Coastguard Worker public: 19*9880d681SAndroid Build Coastguard Worker AArch64TargetStreamer(MCStreamer &S); 20*9880d681SAndroid Build Coastguard Worker ~AArch64TargetStreamer() override; 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker void finish() override; 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker /// Callback used to implement the ldr= pseudo. 25*9880d681SAndroid Build Coastguard Worker /// Add a new entry to the constant pool for the current section and return an 26*9880d681SAndroid Build Coastguard Worker /// MCExpr that can be used to refer to the constant pool location. 27*9880d681SAndroid Build Coastguard Worker const MCExpr *addConstantPoolEntry(const MCExpr *, unsigned Size, SMLoc Loc); 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker /// Callback used to implemnt the .ltorg directive. 30*9880d681SAndroid Build Coastguard Worker /// Emit contents of constant pool for the current section. 31*9880d681SAndroid Build Coastguard Worker void emitCurrentConstantPool(); 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker /// Callback used to implement the .inst directive. 34*9880d681SAndroid Build Coastguard Worker virtual void emitInst(uint32_t Inst); 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker private: 37*9880d681SAndroid Build Coastguard Worker std::unique_ptr<AssemblerConstantPools> ConstantPools; 38*9880d681SAndroid Build Coastguard Worker }; 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker } // end namespace llvm 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker #endif 43