Path: blob/main/contrib/llvm-project/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCExpr.h
35295 views
//===-- LanaiMCExpr.h - Lanai specific MC expression classes ----*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCEXPR_H9#define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCEXPR_H1011#include "llvm/MC/MCExpr.h"12#include "llvm/MC/MCValue.h"1314namespace llvm {1516class LanaiMCExpr : public MCTargetExpr {17public:18enum VariantKind { VK_Lanai_None, VK_Lanai_ABS_HI, VK_Lanai_ABS_LO };1920private:21const VariantKind Kind;22const MCExpr *Expr;2324explicit LanaiMCExpr(VariantKind Kind, const MCExpr *Expr)25: Kind(Kind), Expr(Expr) {}2627public:28static const LanaiMCExpr *create(VariantKind Kind, const MCExpr *Expr,29MCContext &Ctx);3031// Returns the kind of this expression.32VariantKind getKind() const { return Kind; }3334// Returns the child of this expression.35const MCExpr *getSubExpr() const { return Expr; }3637void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;38bool evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm,39const MCFixup *Fixup) const override;40void visitUsedExpr(MCStreamer &Streamer) const override;41MCFragment *findAssociatedFragment() const override {42return getSubExpr()->findAssociatedFragment();43}4445// There are no TLS LanaiMCExprs at the moment.46void fixELFSymbolsInTLSFixups(MCAssembler & /*Asm*/) const override {}4748static bool classof(const MCExpr *E) {49return E->getKind() == MCExpr::Target;50}51};52} // end namespace llvm5354#endif555657