1 //==- HexagonMCExpr.h - Hexagon specific MC expression classes --*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H 11 #define LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H 12 13 #include "llvm/MC/MCExpr.h" 14 15 namespace llvm { 16 class MCInst; 17 class HexagonNoExtendOperand : public MCTargetExpr { 18 public: 19 static HexagonNoExtendOperand *Create(MCExpr const *Expr, MCContext &Ctx); 20 void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override; 21 bool evaluateAsRelocatableImpl(MCValue &Res, const MCAsmLayout *Layout, 22 const MCFixup *Fixup) const override; 23 void visitUsedExpr(MCStreamer &Streamer) const override; 24 MCFragment *findAssociatedFragment() const override; 25 void fixELFSymbolsInTLSFixups(MCAssembler &Asm) const override; 26 static bool classof(MCExpr const *E); 27 MCExpr const *getExpr() const; 28 29 private: 30 HexagonNoExtendOperand(MCExpr const *Expr); 31 MCExpr const *Expr; 32 }; 33 } // end namespace llvm 34 35 #endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONMCEXPR_H 36