brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · a30d815 Raw
65 lines · c
1//==- HexagonMCExpr.h - Hexagon specific MC expression classes --*- 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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H10#define LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H11 12#include "llvm/MC/MCExpr.h"13 14namespace llvm {15class HexagonMCExpr : public MCTargetExpr {16public:17  enum VariantKind : uint8_t {18    VK_None,19 20    VK_DTPREL = MCSymbolRefExpr::FirstTargetSpecifier,21    VK_GD_GOT,22    VK_GD_PLT,23    VK_GOT,24    VK_GOTREL,25    VK_IE,26    VK_IE_GOT,27    VK_LD_GOT,28    VK_LD_PLT,29    VK_PCREL,30    VK_PLT,31    VK_TPREL,32 33    VK_LO16,34    VK_HI16,35    VK_GPREL,36  };37 38  static HexagonMCExpr *create(MCExpr const *Expr, MCContext &Ctx);39  void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;40  bool evaluateAsRelocatableImpl(MCValue &Res,41                                 const MCAssembler *Asm) const override;42  void visitUsedExpr(MCStreamer &Streamer) const override;43  MCFragment *findAssociatedFragment() const override;44  MCExpr const *getExpr() const;45  void setMustExtend(bool Val = true);46  bool mustExtend() const;47  void setMustNotExtend(bool Val = true);48  bool mustNotExtend() const;49  void setS27_2_reloc(bool Val = true);50  bool s27_2_reloc() const;51  void setSignMismatch(bool Val = true);52  bool signMismatch() const;53 54private:55  HexagonMCExpr(MCExpr const *Expr);56  MCExpr const *Expr;57  bool MustNotExtend;58  bool MustExtend;59  bool S27_2_reloc;60  bool SignMismatch;61};62} // end namespace llvm63 64#endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H65