xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86TargetStreamer.h (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
10b57cec5SDimitry Andric //===- X86TargetStreamer.h ------------------------------*- C++ -*---------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H
100b57cec5SDimitry Andric #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86TARGETSTREAMER_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "llvm/MC/MCStreamer.h"
130b57cec5SDimitry Andric 
140b57cec5SDimitry Andric namespace llvm {
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric /// X86 target streamer implementing x86-only assembly directives.
170b57cec5SDimitry Andric class X86TargetStreamer : public MCTargetStreamer {
180b57cec5SDimitry Andric public:
X86TargetStreamer(MCStreamer & S)190b57cec5SDimitry Andric   X86TargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
200b57cec5SDimitry Andric 
210b57cec5SDimitry Andric   virtual bool emitFPOProc(const MCSymbol *ProcSym, unsigned ParamsSize,
22*bdd1243dSDimitry Andric                            SMLoc L = {}) {
23*bdd1243dSDimitry Andric     return false;
24*bdd1243dSDimitry Andric   }
25*bdd1243dSDimitry Andric   virtual bool emitFPOEndPrologue(SMLoc L = {}) { return false; }
26*bdd1243dSDimitry Andric   virtual bool emitFPOEndProc(SMLoc L = {}) { return false; };
27*bdd1243dSDimitry Andric   virtual bool emitFPOData(const MCSymbol *ProcSym, SMLoc L = {}) {
28*bdd1243dSDimitry Andric     return false;
29*bdd1243dSDimitry Andric   }
30*bdd1243dSDimitry Andric   virtual bool emitFPOPushReg(unsigned Reg, SMLoc L = {}) { return false; }
31*bdd1243dSDimitry Andric   virtual bool emitFPOStackAlloc(unsigned StackAlloc, SMLoc L = {}) {
32*bdd1243dSDimitry Andric     return false;
33*bdd1243dSDimitry Andric   }
34*bdd1243dSDimitry Andric   virtual bool emitFPOStackAlign(unsigned Align, SMLoc L = {}) { return false; }
35*bdd1243dSDimitry Andric   virtual bool emitFPOSetFrame(unsigned Reg, SMLoc L = {}) { return false; }
360b57cec5SDimitry Andric };
370b57cec5SDimitry Andric 
38*bdd1243dSDimitry Andric /// Implements X86-only null emission.
createX86NullTargetStreamer(MCStreamer & S)39*bdd1243dSDimitry Andric inline MCTargetStreamer *createX86NullTargetStreamer(MCStreamer &S) {
40*bdd1243dSDimitry Andric   return new X86TargetStreamer(S);
41*bdd1243dSDimitry Andric }
42*bdd1243dSDimitry Andric 
430b57cec5SDimitry Andric } // end namespace llvm
440b57cec5SDimitry Andric 
450b57cec5SDimitry Andric #endif
46