brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 6ba90a5 Raw
86 lines · c
1//===-- MipsMCAsmInfo.h - Mips Asm Info ------------------------*- 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// This file contains the declaration of the MipsMCAsmInfo class.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCASMINFO_H14#define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCASMINFO_H15 16#include "llvm/MC/MCAsmInfoCOFF.h"17#include "llvm/MC/MCAsmInfoELF.h"18#include "llvm/MC/MCFixup.h"19 20namespace llvm {21class Triple;22 23class MipsELFMCAsmInfo : public MCAsmInfoELF {24  void anchor() override;25 26public:27  explicit MipsELFMCAsmInfo(const Triple &TheTriple,28                            const MCTargetOptions &Options);29  void printSpecifierExpr(raw_ostream &OS,30                          const MCSpecifierExpr &Expr) const override;31  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,32                                 const MCAssembler *Asm) const override;33};34 35class MipsCOFFMCAsmInfo : public MCAsmInfoGNUCOFF {36  void anchor() override;37 38public:39  explicit MipsCOFFMCAsmInfo();40  void printSpecifierExpr(raw_ostream &OS,41                          const MCSpecifierExpr &Expr) const override;42  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,43                                 const MCAssembler *Asm) const override;44};45 46namespace Mips {47using Specifier = uint16_t;48enum {49  S_None,50  S_CALL_HI16 = FirstTargetFixupKind,51  S_CALL_LO16,52  S_DTPREL,53  S_DTPREL_HI,54  S_DTPREL_LO,55  S_GOT,56  S_GOTTPREL,57  S_GOT_CALL,58  S_GOT_DISP,59  S_GOT_HI16,60  S_GOT_LO16,61  S_GOT_OFST,62  S_GOT_PAGE,63  S_GPREL,64  S_HI,65  S_HIGHER,66  S_HIGHEST,67  S_LO,68  S_NEG,69  S_PCREL_HI16,70  S_PCREL_LO16,71  S_TLSGD,72  S_TLSLDM,73  S_TPREL_HI,74  S_TPREL_LO,75  S_Special,76};77 78bool isGpOff(const MCSpecifierExpr &E);79const MCSpecifierExpr *createGpOff(const MCExpr *Expr, Specifier S,80                                   MCContext &Ctx);81}82 83} // namespace llvm84 85#endif86