LLVM 19.0.0git
SIProgramInfo.h
Go to the documentation of this file.
1//===--- SIProgramInfo.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/// \file
10/// Defines struct to track resource usage and hardware flags for kernels and
11/// entry functions.
12///
13//
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_LIB_TARGET_AMDGPU_SIPROGRAMINFO_H
17#define LLVM_LIB_TARGET_AMDGPU_SIPROGRAMINFO_H
18
19#include "llvm/IR/CallingConv.h"
20#include <cstdint>
21
22namespace llvm {
23
24class GCNSubtarget;
25
26/// Track resource usage for kernels / entry functions.
28 // Fields set in PGM_RSRC1 pm4 packet.
37 uint32_t WgpMode = 0; // GFX10+
38 uint32_t MemOrdered = 0; // GFX10+
39 uint32_t RrWgMode = 0; // GFX12+
41
42 // State used to calculate fields set in PGM_RSRC2 pm4 packet.
45
46 // Fields set in PGM_RSRC2 pm4 packet
58
60
67 unsigned SGPRSpill = 0;
68 unsigned VGPRSpill = 0;
70 bool FlatUsed = false;
71
72 // Number of SGPRs that meets number of waves per execution unit request.
74
75 // Number of VGPRs that meets number of waves per execution unit request.
77
78 // Final occupancy.
80
81 // Whether there is recursion, dynamic allocas, indirect calls or some other
82 // reason there may be statically unknown stack usage.
83 bool DynamicCallStack = false;
84
85 // Bonus information for debugging.
86 bool VCCUsed = false;
87
88 SIProgramInfo() = default;
89
90 /// Compute the value of the ComputePGMRsrc1 register.
93
94 /// Compute the value of the ComputePGMRsrc2 register.
97};
98
99} // namespace llvm
100
101#endif // LLVM_LIB_TARGET_AMDGPU_SIPROGRAMINFO_H
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
Track resource usage for kernels / entry functions.
Definition: SIProgramInfo.h:27
uint32_t NumSGPRsForWavesPerEU
Definition: SIProgramInfo.h:73
uint64_t getComputePGMRSrc1(const GCNSubtarget &ST) const
Compute the value of the ComputePGMRsrc1 register.
uint32_t TrapHandlerEnable
Definition: SIProgramInfo.h:49
uint64_t getComputePGMRSrc2() const
Compute the value of the ComputePGMRsrc2 register.
SIProgramInfo()=default
uint64_t getPGMRSrc2(CallingConv::ID CC) const
uint32_t NumVGPRsForWavesPerEU
Definition: SIProgramInfo.h:76
uint64_t ComputePGMRSrc3GFX90A
Definition: SIProgramInfo.h:59
uint64_t getPGMRSrc1(CallingConv::ID CC, const GCNSubtarget &ST) const