xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h (revision e25152834cdf3b353892835a4f3b157e066a8ed4)
10b57cec5SDimitry Andric //===-- X86MCAsmInfo.h - X86 asm properties --------------------*- 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 // This file contains the declaration of the X86MCAsmInfo class.
100b57cec5SDimitry Andric //
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCASMINFO_H
140b57cec5SDimitry Andric #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCASMINFO_H
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric #include "llvm/MC/MCAsmInfoCOFF.h"
170b57cec5SDimitry Andric #include "llvm/MC/MCAsmInfoDarwin.h"
180b57cec5SDimitry Andric #include "llvm/MC/MCAsmInfoELF.h"
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric namespace llvm {
210b57cec5SDimitry Andric class Triple;
220b57cec5SDimitry Andric 
230b57cec5SDimitry Andric class X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
240b57cec5SDimitry Andric   virtual void anchor();
250b57cec5SDimitry Andric 
260b57cec5SDimitry Andric public:
270b57cec5SDimitry Andric   explicit X86MCAsmInfoDarwin(const Triple &Triple);
280b57cec5SDimitry Andric };
290b57cec5SDimitry Andric 
300b57cec5SDimitry Andric struct X86_64MCAsmInfoDarwin : public X86MCAsmInfoDarwin {
310b57cec5SDimitry Andric   explicit X86_64MCAsmInfoDarwin(const Triple &Triple);
320b57cec5SDimitry Andric   const MCExpr *
330b57cec5SDimitry Andric   getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding,
340b57cec5SDimitry Andric                               MCStreamer &Streamer) const override;
350b57cec5SDimitry Andric };
360b57cec5SDimitry Andric 
370b57cec5SDimitry Andric class X86ELFMCAsmInfo : public MCAsmInfoELF {
380b57cec5SDimitry Andric   void anchor() override;
390b57cec5SDimitry Andric 
400b57cec5SDimitry Andric public:
410b57cec5SDimitry Andric   explicit X86ELFMCAsmInfo(const Triple &Triple);
420b57cec5SDimitry Andric };
430b57cec5SDimitry Andric 
440b57cec5SDimitry Andric class X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
450b57cec5SDimitry Andric   void anchor() override;
460b57cec5SDimitry Andric 
470b57cec5SDimitry Andric public:
480b57cec5SDimitry Andric   explicit X86MCAsmInfoMicrosoft(const Triple &Triple);
490b57cec5SDimitry Andric };
500b57cec5SDimitry Andric 
51*5ffd83dbSDimitry Andric class X86MCAsmInfoMicrosoftMASM : public X86MCAsmInfoMicrosoft {
52*5ffd83dbSDimitry Andric   void anchor() override;
53*5ffd83dbSDimitry Andric 
54*5ffd83dbSDimitry Andric public:
55*5ffd83dbSDimitry Andric   explicit X86MCAsmInfoMicrosoftMASM(const Triple &Triple);
56*5ffd83dbSDimitry Andric };
57*5ffd83dbSDimitry Andric 
580b57cec5SDimitry Andric class X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
590b57cec5SDimitry Andric   void anchor() override;
600b57cec5SDimitry Andric 
610b57cec5SDimitry Andric public:
620b57cec5SDimitry Andric   explicit X86MCAsmInfoGNUCOFF(const Triple &Triple);
630b57cec5SDimitry Andric };
640b57cec5SDimitry Andric } // namespace llvm
650b57cec5SDimitry Andric 
660b57cec5SDimitry Andric #endif
67