50 lines · c
1//===- X86TargetStreamer.h ------------------------------*- C++ -*---------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H10#define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H11 12#include "llvm/MC/MCStreamer.h"13 14namespace llvm {15 16/// X86 target streamer implementing x86-only assembly directives.17class X86TargetStreamer : public MCTargetStreamer {18public:19 X86TargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}20 21 virtual void emitCode16() {}22 virtual void emitCode32() {}23 virtual void emitCode64() {}24 25 virtual bool emitFPOProc(const MCSymbol *ProcSym, unsigned ParamsSize,26 SMLoc L = {}) {27 return false;28 }29 virtual bool emitFPOEndPrologue(SMLoc L = {}) { return false; }30 virtual bool emitFPOEndProc(SMLoc L = {}) { return false; };31 virtual bool emitFPOData(const MCSymbol *ProcSym, SMLoc L = {}) {32 return false;33 }34 virtual bool emitFPOPushReg(MCRegister Reg, SMLoc L = {}) { return false; }35 virtual bool emitFPOStackAlloc(unsigned StackAlloc, SMLoc L = {}) {36 return false;37 }38 virtual bool emitFPOStackAlign(unsigned Align, SMLoc L = {}) { return false; }39 virtual bool emitFPOSetFrame(MCRegister Reg, SMLoc L = {}) { return false; }40};41 42/// Implements X86-only null emission.43inline MCTargetStreamer *createX86NullTargetStreamer(MCStreamer &S) {44 return new X86TargetStreamer(S);45}46 47} // end namespace llvm48 49#endif50