| //===- VEMCAsmInfo.h - VE asm properties -----------------------*- C++ -*--===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains the declaration of the VEMCAsmInfo class. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_LIB_TARGET_VE_MCTARGETDESC_VEMCASMINFO_H |
| #define LLVM_LIB_TARGET_VE_MCTARGETDESC_VEMCASMINFO_H |
| |
| #include "VEFixupKinds.h" |
| #include "llvm/MC/MCAsmInfoELF.h" |
| #include "llvm/MC/MCExpr.h" |
| |
| namespace llvm { |
| |
| class Triple; |
| |
| class VEELFMCAsmInfo : public MCAsmInfoELF { |
| void anchor() override; |
| |
| public: |
| explicit VEELFMCAsmInfo(const Triple &TheTriple); |
| void printSpecifierExpr(raw_ostream &OS, |
| const MCSpecifierExpr &Expr) const override; |
| bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res, |
| const MCAssembler *Asm) const override; |
| }; |
| |
| namespace VE { |
| enum Specifier { |
| S_None, |
| |
| S_REFLONG = MCSymbolRefExpr::FirstTargetSpecifier, |
| S_HI32, // @hi |
| S_LO32, // @lo |
| S_PC_HI32, // @pc_hi |
| S_PC_LO32, // @pc_lo |
| S_GOT_HI32, // @got_hi |
| S_GOT_LO32, // @got_lo |
| S_GOTOFF_HI32, // @gotoff_hi |
| S_GOTOFF_LO32, // @gotoff_lo |
| S_PLT_HI32, // @plt_hi |
| S_PLT_LO32, // @plt_lo |
| S_TLS_GD_HI32, // @tls_gd_hi |
| S_TLS_GD_LO32, // @tls_gd_lo |
| S_TPOFF_HI32, // @tpoff_hi |
| S_TPOFF_LO32, // @tpoff_lo |
| }; |
| |
| VE::Fixups getFixupKind(uint8_t S); |
| } // namespace VE |
| } // namespace llvm |
| |
| #endif // LLVM_LIB_TARGET_VE_MCTARGETDESC_VEMCASMINFO_H |