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 bool emitFPOProc(const MCSymbol *ProcSym, unsigned ParamsSize,
22 SMLoc L = {}) {
23 return false;
24 }
25 virtual bool emitFPOEndPrologue(SMLoc L = {}) { return false; }
26 virtual bool emitFPOEndProc(SMLoc L = {}) { return false; };
27 virtual bool emitFPOData(const MCSymbol *ProcSym, SMLoc L = {}) {
28 return false;
29 }
30 virtual bool emitFPOPushReg(unsigned Reg, SMLoc L = {}) { return false; }
31 virtual bool emitFPOStackAlloc(unsigned StackAlloc, SMLoc L = {}) {
32 return false;
33 }
34 virtual bool emitFPOStackAlign(unsigned Align, SMLoc L = {}) { return false; }
35 virtual bool emitFPOSetFrame(unsigned Reg, SMLoc L = {}) { return false; }
36};
37
38/// Implements X86-only null emission.
39inline MCTargetStreamer *createX86NullTargetStreamer(MCStreamer &S) {
40 return new X86TargetStreamer(S);
41}
42
43} // end namespace llvm
44
45#endif
46