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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H
10#define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H
11
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 llvm
48
49#endif
50