Line data Source code
1 : //===-- R600RegisterInfo.h - R600 Register Info Interface ------*- C++ -*--===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : /// \file
11 : /// Interface definition for R600RegisterInfo
12 : //
13 : //===----------------------------------------------------------------------===//
14 :
15 : #ifndef LLVM_LIB_TARGET_AMDGPU_R600REGISTERINFO_H
16 : #define LLVM_LIB_TARGET_AMDGPU_R600REGISTERINFO_H
17 :
18 : #define GET_REGINFO_HEADER
19 : #include "R600GenRegisterInfo.inc"
20 :
21 : namespace llvm {
22 :
23 : class AMDGPUSubtarget;
24 :
25 285 : struct R600RegisterInfo final : public R600GenRegisterInfo {
26 : RegClassWeight RCW;
27 :
28 : R600RegisterInfo();
29 :
30 : BitVector getReservedRegs(const MachineFunction &MF) const override;
31 : const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
32 : unsigned getFrameRegister(const MachineFunction &MF) const override;
33 :
34 : /// get the HW encoding for a register's channel.
35 : unsigned getHWRegChan(unsigned reg) const;
36 :
37 : unsigned getHWRegIndex(unsigned Reg) const;
38 :
39 : /// get the register class of the specified type to use in the
40 : /// CFGStructurizer
41 : const TargetRegisterClass *getCFGStructurizerRegClass(MVT VT) const;
42 :
43 : const RegClassWeight &
44 : getRegClassWeight(const TargetRegisterClass *RC) const override;
45 :
46 : // \returns true if \p Reg can be defined in one ALU clause and used in
47 : // another.
48 : bool isPhysRegLiveAcrossClauses(unsigned Reg) const;
49 :
50 : void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,
51 : unsigned FIOperandNum,
52 : RegScavenger *RS = nullptr) const override;
53 :
54 : void reserveRegisterTuples(BitVector &Reserved, unsigned Reg) const;
55 : };
56 :
57 : } // End namespace llvm
58 :
59 : #endif
|