[llvm-exegesis][NFC] Pass Instruction instead of bare Opcode
[llvm-core.git] / lib / Target / AMDGPU / AMDGPUMachineFunction.h
blob8d6b871bc03ea444d6a8f5a44dece3659f2cb5a8
1 //===-- AMDGPUMachineFunctionInfo.h -------------------------------*- 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 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEFUNCTION_H
11 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEFUNCTION_H
13 #include "llvm/ADT/DenseMap.h"
14 #include "llvm/CodeGen/MachineFunction.h"
16 namespace llvm {
18 class GCNSubtarget;
20 class AMDGPUMachineFunction : public MachineFunctionInfo {
21 /// A map to keep track of local memory objects and their offsets within the
22 /// local memory space.
23 SmallDenseMap<const GlobalValue *, unsigned, 4> LocalMemoryObjects;
25 protected:
26 uint64_t ExplicitKernArgSize; // Cache for this.
27 unsigned MaxKernArgAlign; // Cache for this.
29 /// Number of bytes in the LDS that are being used.
30 unsigned LDSSize;
32 // Kernels + shaders. i.e. functions called by the driver and not called
33 // by other functions.
34 bool IsEntryFunction;
36 bool NoSignedZerosFPMath;
38 // Function may be memory bound.
39 bool MemoryBound;
41 // Kernel may need limited waves per EU for better performance.
42 bool WaveLimiter;
44 public:
45 AMDGPUMachineFunction(const MachineFunction &MF);
47 uint64_t getExplicitKernArgSize() const {
48 return ExplicitKernArgSize;
51 unsigned getMaxKernArgAlign() const {
52 return MaxKernArgAlign;
55 unsigned getLDSSize() const {
56 return LDSSize;
59 bool isEntryFunction() const {
60 return IsEntryFunction;
63 bool hasNoSignedZerosFPMath() const {
64 return NoSignedZerosFPMath;
67 bool isMemoryBound() const {
68 return MemoryBound;
71 bool needsWaveLimiter() const {
72 return WaveLimiter;
75 unsigned allocateLDSGlobal(const DataLayout &DL, const GlobalValue &GV);
79 #endif