LLVM
17.0.0git
lib
Target
AMDGPU
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
22
namespace
llvm
{
23
24
/// Track resource usage for kernels / entry functions.
25
struct
SIProgramInfo
{
26
// Fields set in PGM_RSRC1 pm4 packet.
27
uint32_t
VGPRBlocks
= 0;
28
uint32_t
SGPRBlocks
= 0;
29
uint32_t
Priority
= 0;
30
uint32_t
FloatMode
= 0;
31
uint32_t
Priv
= 0;
32
uint32_t
DX10Clamp
= 0;
33
uint32_t
DebugMode
= 0;
34
uint32_t
IEEEMode
= 0;
35
uint32_t
WgpMode
= 0;
// GFX10+
36
uint32_t
MemOrdered
= 0;
// GFX10+
37
uint64_t
ScratchSize
= 0;
38
39
// Fields set in PGM_RSRC2 pm4 packet.
40
uint32_t
LDSBlocks
= 0;
41
uint32_t
ScratchBlocks
= 0;
42
43
uint64_t
ComputePGMRSrc2
= 0;
44
uint64_t
ComputePGMRSrc3GFX90A
= 0;
45
46
uint32_t
NumVGPR
= 0;
47
uint32_t
NumArchVGPR
= 0;
48
uint32_t
NumAccVGPR
= 0;
49
uint32_t
AccumOffset
= 0;
50
uint32_t
TgSplit
= 0;
51
uint32_t
NumSGPR
= 0;
52
unsigned
SGPRSpill
= 0;
53
unsigned
VGPRSpill
= 0;
54
uint32_t
LDSSize
= 0;
55
bool
FlatUsed
=
false
;
56
57
// Number of SGPRs that meets number of waves per execution unit request.
58
uint32_t
NumSGPRsForWavesPerEU
= 0;
59
60
// Number of VGPRs that meets number of waves per execution unit request.
61
uint32_t
NumVGPRsForWavesPerEU
= 0;
62
63
// Final occupancy.
64
uint32_t
Occupancy
= 0;
65
66
// Whether there is recursion, dynamic allocas, indirect calls or some other
67
// reason there may be statically unknown stack usage.
68
bool
DynamicCallStack
=
false
;
69
70
// Bonus information for debugging.
71
bool
VCCUsed
=
false
;
72
73
SIProgramInfo
() =
default
;
74
75
/// Compute the value of the ComputePGMRsrc1 register.
76
uint64_t
getComputePGMRSrc1
()
const
;
77
uint64_t
getPGMRSrc1
(
CallingConv::ID
CC
)
const
;
78
};
79
80
}
// namespace llvm
81
82
#endif // LLVM_LIB_TARGET_AMDGPU_SIPROGRAMINFO_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::SIProgramInfo::SGPRSpill
unsigned SGPRSpill
Definition:
SIProgramInfo.h:52
llvm::SIProgramInfo::WgpMode
uint32_t WgpMode
Definition:
SIProgramInfo.h:35
llvm::SIProgramInfo::NumSGPR
uint32_t NumSGPR
Definition:
SIProgramInfo.h:51
llvm::SIProgramInfo::NumVGPR
uint32_t NumVGPR
Definition:
SIProgramInfo.h:46
llvm::SIProgramInfo::NumSGPRsForWavesPerEU
uint32_t NumSGPRsForWavesPerEU
Definition:
SIProgramInfo.h:58
llvm::SIProgramInfo::LDSSize
uint32_t LDSSize
Definition:
SIProgramInfo.h:54
llvm::SIProgramInfo::AccumOffset
uint32_t AccumOffset
Definition:
SIProgramInfo.h:49
llvm::SIProgramInfo::Priv
uint32_t Priv
Definition:
SIProgramInfo.h:31
llvm::SIProgramInfo::MemOrdered
uint32_t MemOrdered
Definition:
SIProgramInfo.h:36
llvm::SIProgramInfo::NumArchVGPR
uint32_t NumArchVGPR
Definition:
SIProgramInfo.h:47
llvm::SIProgramInfo::ComputePGMRSrc2
uint64_t ComputePGMRSrc2
Definition:
SIProgramInfo.h:43
llvm::SIProgramInfo::ScratchSize
uint64_t ScratchSize
Definition:
SIProgramInfo.h:37
llvm::SIProgramInfo::NumVGPRsForWavesPerEU
uint32_t NumVGPRsForWavesPerEU
Definition:
SIProgramInfo.h:61
llvm::SIProgramInfo::LDSBlocks
uint32_t LDSBlocks
Definition:
SIProgramInfo.h:40
llvm::SIProgramInfo::ComputePGMRSrc3GFX90A
uint64_t ComputePGMRSrc3GFX90A
Definition:
SIProgramInfo.h:44
llvm::SIProgramInfo::DynamicCallStack
bool DynamicCallStack
Definition:
SIProgramInfo.h:68
llvm::CallingConv::ID
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
Definition:
CallingConv.h:24
llvm::SIProgramInfo::FloatMode
uint32_t FloatMode
Definition:
SIProgramInfo.h:30
uint64_t
llvm::SIProgramInfo::DebugMode
uint32_t DebugMode
Definition:
SIProgramInfo.h:33
llvm::SIProgramInfo::VGPRBlocks
uint32_t VGPRBlocks
Definition:
SIProgramInfo.h:27
llvm::SIProgramInfo::getPGMRSrc1
uint64_t getPGMRSrc1(CallingConv::ID CC) const
Definition:
SIProgramInfo.cpp:31
uint32_t
CC
auto CC
Definition:
RISCVRedundantCopyElimination.cpp:79
llvm::SIProgramInfo::FlatUsed
bool FlatUsed
Definition:
SIProgramInfo.h:55
llvm::SIProgramInfo::IEEEMode
uint32_t IEEEMode
Definition:
SIProgramInfo.h:34
llvm::SIProgramInfo::NumAccVGPR
uint32_t NumAccVGPR
Definition:
SIProgramInfo.h:48
CallingConv.h
llvm::SIProgramInfo::Occupancy
uint32_t Occupancy
Definition:
SIProgramInfo.h:64
llvm::SIProgramInfo::TgSplit
uint32_t TgSplit
Definition:
SIProgramInfo.h:50
llvm::SIProgramInfo::SIProgramInfo
SIProgramInfo()=default
llvm::SIProgramInfo::VCCUsed
bool VCCUsed
Definition:
SIProgramInfo.h:71
llvm::SIProgramInfo::getComputePGMRSrc1
uint64_t getComputePGMRSrc1() const
Compute the value of the ComputePGMRsrc1 register.
Definition:
SIProgramInfo.cpp:23
llvm::SIProgramInfo::VGPRSpill
unsigned VGPRSpill
Definition:
SIProgramInfo.h:53
llvm::SIProgramInfo
Track resource usage for kernels / entry functions.
Definition:
SIProgramInfo.h:25
llvm::SIProgramInfo::Priority
uint32_t Priority
Definition:
SIProgramInfo.h:29
llvm::SIProgramInfo::DX10Clamp
uint32_t DX10Clamp
Definition:
SIProgramInfo.h:32
llvm::SIProgramInfo::ScratchBlocks
uint32_t ScratchBlocks
Definition:
SIProgramInfo.h:41
llvm::SIProgramInfo::SGPRBlocks
uint32_t SGPRBlocks
Definition:
SIProgramInfo.h:28
Generated on Thu Jan 26 2023 22:23:36 for LLVM by
1.8.17