]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h
Fix a memory leak in if_delgroups() introduced in r334118.
[FreeBSD/FreeBSD.git] / contrib / llvm-project / llvm / lib / Target / AMDGPU / AMDGPUMachineFunction.h
1 //===-- AMDGPUMachineFunctionInfo.h -------------------------------*- 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 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEFUNCTION_H
10 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEFUNCTION_H
11
12 #include "llvm/ADT/DenseMap.h"
13 #include "llvm/CodeGen/MachineFunction.h"
14
15 namespace llvm {
16
17 class GCNSubtarget;
18
19 class AMDGPUMachineFunction : public MachineFunctionInfo {
20   /// A map to keep track of local memory objects and their offsets within the
21   /// local memory space.
22   SmallDenseMap<const GlobalValue *, unsigned, 4> LocalMemoryObjects;
23
24 protected:
25   uint64_t ExplicitKernArgSize; // Cache for this.
26   unsigned MaxKernArgAlign; // Cache for this.
27
28   /// Number of bytes in the LDS that are being used.
29   unsigned LDSSize;
30
31   // Kernels + shaders. i.e. functions called by the driver and not called
32   // by other functions.
33   bool IsEntryFunction;
34
35   bool NoSignedZerosFPMath;
36
37   // Function may be memory bound.
38   bool MemoryBound;
39
40   // Kernel may need limited waves per EU for better performance.
41   bool WaveLimiter;
42
43 public:
44   AMDGPUMachineFunction(const MachineFunction &MF);
45
46   uint64_t getExplicitKernArgSize() const {
47     return ExplicitKernArgSize;
48   }
49
50   unsigned getMaxKernArgAlign() const {
51     return MaxKernArgAlign;
52   }
53
54   unsigned getLDSSize() const {
55     return LDSSize;
56   }
57
58   bool isEntryFunction() const {
59     return IsEntryFunction;
60   }
61
62   bool hasNoSignedZerosFPMath() const {
63     return NoSignedZerosFPMath;
64   }
65
66   bool isMemoryBound() const {
67     return MemoryBound;
68   }
69
70   bool needsWaveLimiter() const {
71     return WaveLimiter;
72   }
73
74   unsigned allocateLDSGlobal(const DataLayout &DL, const GlobalValue &GV);
75 };
76
77 }
78 #endif