xref: /freebsd/contrib/llvm-project/llvm/lib/Target/VE/VERegisterInfo.h (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
1480093f4SDimitry Andric //===-- VERegisterInfo.h - VE Register Information Impl ---------*- C++ -*-===//
2480093f4SDimitry Andric //
3480093f4SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4480093f4SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5480093f4SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6480093f4SDimitry Andric //
7480093f4SDimitry Andric //===----------------------------------------------------------------------===//
8480093f4SDimitry Andric //
9480093f4SDimitry Andric // This file contains the VE implementation of the TargetRegisterInfo class.
10480093f4SDimitry Andric //
11480093f4SDimitry Andric //===----------------------------------------------------------------------===//
12480093f4SDimitry Andric 
13480093f4SDimitry Andric #ifndef LLVM_LIB_TARGET_VE_VEREGISTERINFO_H
14480093f4SDimitry Andric #define LLVM_LIB_TARGET_VE_VEREGISTERINFO_H
15480093f4SDimitry Andric 
16480093f4SDimitry Andric #include "llvm/CodeGen/TargetRegisterInfo.h"
17480093f4SDimitry Andric 
18480093f4SDimitry Andric #define GET_REGINFO_HEADER
19480093f4SDimitry Andric #include "VEGenRegisterInfo.inc"
20480093f4SDimitry Andric 
21480093f4SDimitry Andric namespace llvm {
22480093f4SDimitry Andric struct VERegisterInfo : public VEGenRegisterInfo {
23480093f4SDimitry Andric public:
24480093f4SDimitry Andric   VERegisterInfo();
25480093f4SDimitry Andric 
26480093f4SDimitry Andric   /// Code Generation virtual methods...
27480093f4SDimitry Andric   const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
28480093f4SDimitry Andric   const uint32_t *getCallPreservedMask(const MachineFunction &MF,
29480093f4SDimitry Andric                                        CallingConv::ID CC) const override;
30480093f4SDimitry Andric   const uint32_t *getNoPreservedMask() const override;
31480093f4SDimitry Andric 
32480093f4SDimitry Andric   BitVector getReservedRegs(const MachineFunction &MF) const override;
33480093f4SDimitry Andric 
34480093f4SDimitry Andric   const TargetRegisterClass *getPointerRegClass(const MachineFunction &MF,
35480093f4SDimitry Andric                                                 unsigned Kind) const override;
36480093f4SDimitry Andric 
37*bdd1243dSDimitry Andric   bool eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj,
38480093f4SDimitry Andric                            unsigned FIOperandNum,
39480093f4SDimitry Andric                            RegScavenger *RS = nullptr) const override;
40480093f4SDimitry Andric 
41480093f4SDimitry Andric   Register getFrameRegister(const MachineFunction &MF) const override;
42480093f4SDimitry Andric };
43480093f4SDimitry Andric 
44480093f4SDimitry Andric } // namespace llvm
45480093f4SDimitry Andric 
46480093f4SDimitry Andric #endif
47