Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchBaseInfo.h
35294 views
1
//=- LoongArchBaseInfo.h - Top level definitions for LoongArch MC -*- 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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file contains small standalone enum definitions and helper function
10
// definitions for the LoongArch target useful for the compiler back-end and the
11
// MC libraries.
12
//
13
//===----------------------------------------------------------------------===//
14
#ifndef LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
15
#define LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
16
17
#include "MCTargetDesc/LoongArchMCTargetDesc.h"
18
#include "llvm/ADT/StringRef.h"
19
#include "llvm/ADT/StringSwitch.h"
20
#include "llvm/MC/MCInstrDesc.h"
21
#include "llvm/TargetParser/SubtargetFeature.h"
22
23
namespace llvm {
24
25
// This namespace holds all of the target specific flags that instruction info
26
// tracks.
27
namespace LoongArchII {
28
enum {
29
MO_None,
30
MO_CALL,
31
MO_CALL_PLT,
32
MO_PCREL_HI,
33
MO_PCREL_LO,
34
MO_PCREL64_LO,
35
MO_PCREL64_HI,
36
MO_GOT_PC_HI,
37
MO_GOT_PC_LO,
38
MO_GOT_PC64_LO,
39
MO_GOT_PC64_HI,
40
MO_LE_HI,
41
MO_LE_LO,
42
MO_LE64_LO,
43
MO_LE64_HI,
44
MO_IE_PC_HI,
45
MO_IE_PC_LO,
46
MO_IE_PC64_LO,
47
MO_IE_PC64_HI,
48
MO_LD_PC_HI,
49
MO_GD_PC_HI,
50
MO_CALL36,
51
MO_DESC_PC_HI,
52
MO_DESC_PC_LO,
53
MO_DESC64_PC_HI,
54
MO_DESC64_PC_LO,
55
MO_DESC_LD,
56
MO_DESC_CALL,
57
// TODO: Add more flags.
58
};
59
} // end namespace LoongArchII
60
61
namespace LoongArchABI {
62
enum ABI {
63
ABI_ILP32S,
64
ABI_ILP32F,
65
ABI_ILP32D,
66
ABI_LP64S,
67
ABI_LP64F,
68
ABI_LP64D,
69
ABI_Unknown
70
};
71
72
ABI computeTargetABI(const Triple &TT, const FeatureBitset &FeatureBits,
73
StringRef ABIName);
74
ABI getTargetABI(StringRef ABIName);
75
76
// Returns the register used to hold the stack pointer after realignment.
77
MCRegister getBPReg();
78
} // end namespace LoongArchABI
79
80
} // end namespace llvm
81
82
#endif // LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHBASEINFO_H
83
84