LLVM
15.0.0git
lib
Target
NVPTX
NVPTXMachineFunctionInfo.h
Go to the documentation of this file.
1
//===-- NVPTXMachineFunctionInfo.h - NVPTX-specific Function Info --------===//
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
// This class is attached to a MachineFunction instance and tracks target-
10
// dependent information
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_LIB_TARGET_NVPTX_NVPTXMACHINEFUNCTIONINFO_H
15
#define LLVM_LIB_TARGET_NVPTX_NVPTXMACHINEFUNCTIONINFO_H
16
17
#include "
llvm/CodeGen/MachineFunction.h
"
18
19
namespace
llvm
{
20
class
NVPTXMachineFunctionInfo
:
public
MachineFunctionInfo
{
21
private
:
22
/// Stores a mapping from index to symbol name for removing image handles
23
/// on Fermi.
24
SmallVector<std::string, 8>
ImageHandleList;
25
26
public
:
27
NVPTXMachineFunctionInfo
(
MachineFunction
&MF) {}
28
29
MachineFunctionInfo
*
30
clone
(
BumpPtrAllocator
&
Allocator
,
MachineFunction
&DestMF,
31
const
DenseMap<MachineBasicBlock *, MachineBasicBlock *>
&Src2DstMBB)
32
const override
{
33
return
DestMF.
cloneInfo
<
NVPTXMachineFunctionInfo
>(*this);
34
}
35
36
/// Returns the index for the symbol \p Symbol. If the symbol was previously,
37
/// added, the same index is returned. Otherwise, the symbol is added and the
38
/// new index is returned.
39
unsigned
getImageHandleSymbolIndex
(
const
char
*
Symbol
) {
40
// Is the symbol already present?
41
for
(
unsigned
i
= 0,
e
= ImageHandleList.size();
i
!=
e
; ++
i
)
42
if
(ImageHandleList[
i
] == std::string(
Symbol
))
43
return
i
;
44
// Nope, insert it
45
ImageHandleList.push_back(
Symbol
);
46
return
ImageHandleList.size()-1;
47
}
48
49
/// Returns the symbol name at the given index.
50
const
char
*
getImageHandleSymbol
(
unsigned
Idx)
const
{
51
assert
(ImageHandleList.size() > Idx &&
"Bad index"
);
52
return
ImageHandleList[Idx].c_str();
53
}
54
};
55
}
56
57
#endif
i
i
Definition:
README.txt:29
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
llvm::SmallVector< std::string, 8 >
llvm::BumpPtrAllocatorImpl
Allocate memory in an ever growing pool, as if by bump-pointer.
Definition:
Allocator.h:63
llvm::numbers::e
constexpr double e
Definition:
MathExtras.h:57
llvm::DenseMap
Definition:
DenseMap.h:716
llvm::NVPTXMachineFunctionInfo::NVPTXMachineFunctionInfo
NVPTXMachineFunctionInfo(MachineFunction &MF)
Definition:
NVPTXMachineFunctionInfo.h:27
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::NVPTXMachineFunctionInfo::getImageHandleSymbol
const char * getImageHandleSymbol(unsigned Idx) const
Returns the symbol name at the given index.
Definition:
NVPTXMachineFunctionInfo.h:50
llvm::NVPTXMachineFunctionInfo::getImageHandleSymbolIndex
unsigned getImageHandleSymbolIndex(const char *Symbol)
Returns the index for the symbol Symbol.
Definition:
NVPTXMachineFunctionInfo.h:39
llvm::MachineFunction
Definition:
MachineFunction.h:257
llvm::MachineFunction::cloneInfo
Ty * cloneInfo(const Ty &Old)
Definition:
MachineFunction.h:765
llvm::NVPTXMachineFunctionInfo::clone
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
Definition:
NVPTXMachineFunctionInfo.h:30
llvm::ARMBuildAttrs::Symbol
@ Symbol
Definition:
ARMBuildAttributes.h:83
Allocator
Basic Register Allocator
Definition:
RegAllocBasic.cpp:142
llvm::NVPTXMachineFunctionInfo
Definition:
NVPTXMachineFunctionInfo.h:20
MachineFunction.h
llvm::MachineFunctionInfo
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
Definition:
MachineFunction.h:95
Generated on Thu Jul 7 2022 04:38:11 for LLVM by
1.8.17