66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
//=- LoongArchBaseInfo.h - Top level definitions for LoongArch MC -*- 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 small standalone enum definitions and helper function
|
|
// definitions for the LoongArch target useful for the compiler back-end and the
|
|
// MC libraries.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
|
|
#define LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
|
|
|
|
#include "MCTargetDesc/LoongArchMCTargetDesc.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/ADT/StringSwitch.h"
|
|
#include "llvm/MC/MCInstrDesc.h"
|
|
#include "llvm/MC/SubtargetFeature.h"
|
|
|
|
namespace llvm {
|
|
|
|
// This namespace holds all of the target specific flags that instruction info
|
|
// tracks.
|
|
namespace LoongArchII {
|
|
enum {
|
|
MO_None,
|
|
MO_CALL,
|
|
MO_CALL_PLT,
|
|
MO_PCREL_HI,
|
|
MO_PCREL_LO,
|
|
MO_GOT_PC_HI,
|
|
MO_GOT_PC_LO,
|
|
MO_LE_HI,
|
|
MO_LE_LO,
|
|
MO_IE_PC_HI,
|
|
MO_IE_PC_LO,
|
|
MO_LD_PC_HI,
|
|
MO_GD_PC_HI,
|
|
// TODO: Add more flags.
|
|
};
|
|
} // end namespace LoongArchII
|
|
|
|
namespace LoongArchABI {
|
|
enum ABI {
|
|
ABI_ILP32S,
|
|
ABI_ILP32F,
|
|
ABI_ILP32D,
|
|
ABI_LP64S,
|
|
ABI_LP64F,
|
|
ABI_LP64D,
|
|
ABI_Unknown
|
|
};
|
|
|
|
ABI getTargetABI(StringRef ABIName);
|
|
|
|
// Returns the register used to hold the stack pointer after realignment.
|
|
MCRegister getBPReg();
|
|
} // end namespace LoongArchABI
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
|