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