LLVM 17.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
24/// Track resource usage for kernels / entry functions.
26 // Fields set in PGM_RSRC1 pm4 packet.
35 uint32_t WgpMode = 0; // GFX10+
36 uint32_t MemOrdered = 0; // GFX10+
38
39 // State used to calculate fields set in PGM_RSRC2 pm4 packet.
42
43 // Fields set in PGM_RSRC2 pm4 packet
55
57
64 unsigned SGPRSpill = 0;
65 unsigned VGPRSpill = 0;
67 bool FlatUsed = false;
68
69 // Number of SGPRs that meets number of waves per execution unit request.
71
72 // Number of VGPRs that meets number of waves per execution unit request.
74
75 // Final occupancy.
77
78 // Whether there is recursion, dynamic allocas, indirect calls or some other
79 // reason there may be statically unknown stack usage.
80 bool DynamicCallStack = false;
81
82 // Bonus information for debugging.
83 bool VCCUsed = false;
84
85 SIProgramInfo() = default;
86
87 /// Compute the value of the ComputePGMRsrc1 register.
90
91 /// Compute the value of the ComputePGMRsrc2 register.
94};
95
96} // namespace llvm
97
98#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:25
uint64_t getPGMRSrc1(CallingConv::ID CC) const
uint32_t NumSGPRsForWavesPerEU
Definition: SIProgramInfo.h:70
uint32_t TrapHandlerEnable
Definition: SIProgramInfo.h:46
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:73
uint64_t ComputePGMRSrc3GFX90A
Definition: SIProgramInfo.h:56
uint64_t getComputePGMRSrc1() const
Compute the value of the ComputePGMRsrc1 register.