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/LoongArchRegisterInfo.h
96353 views
1
//= LoongArchRegisterInfo.h - LoongArch Register Information Impl -*- 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 the LoongArch implementation of the TargetRegisterInfo
10
// class.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCHREGISTERINFO_H
15
#define LLVM_LIB_TARGET_LOONGARCH_LOONGARCHREGISTERINFO_H
16
17
#include "llvm/CodeGen/TargetRegisterInfo.h"
18
19
#define GET_REGINFO_HEADER
20
#include "LoongArchGenRegisterInfo.inc"
21
22
namespace llvm {
23
24
struct LoongArchRegisterInfo : public LoongArchGenRegisterInfo {
25
26
LoongArchRegisterInfo(unsigned HwMode);
27
28
const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
29
const uint32_t *getCallPreservedMask(const MachineFunction &MF,
30
CallingConv::ID) const override;
31
const uint32_t *getNoPreservedMask() const override;
32
33
BitVector getReservedRegs(const MachineFunction &MF) const override;
34
35
const TargetRegisterClass *
36
getPointerRegClass(const MachineFunction &MF,
37
unsigned Kind = 0) const override {
38
return &LoongArch::GPRRegClass;
39
}
40
41
bool eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,
42
unsigned FIOperandNum,
43
RegScavenger *RS = nullptr) const override;
44
45
Register getFrameRegister(const MachineFunction &MF) const override;
46
47
bool requiresRegisterScavenging(const MachineFunction &MF) const override {
48
return true;
49
}
50
51
bool requiresFrameIndexScavenging(const MachineFunction &MF) const override {
52
return true;
53
}
54
bool canRealignStack(const MachineFunction &MF) const override;
55
};
56
} // end namespace llvm
57
58
#endif // LLVM_LIB_TARGET_LOONGARCH_LOONGARCHREGISTERINFO_H
59
60