LLVM 19.0.0git
NVPTXUtilities.h
Go to the documentation of this file.
1//===-- NVPTXUtilities - Utilities -----------------------------*- 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// This file contains the declaration of the NVVM specific utility functions.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_NVPTX_NVPTXUTILITIES_H
14#define LLVM_LIB_TARGET_NVPTX_NVPTXUTILITIES_H
15
17#include "llvm/IR/Function.h"
20#include "llvm/IR/Value.h"
22#include <cstdarg>
23#include <set>
24#include <string>
25#include <vector>
26
27namespace llvm {
28
29class TargetMachine;
30
31void clearAnnotationCache(const Module *);
32
33bool findOneNVVMAnnotation(const GlobalValue *, const std::string &,
34 unsigned &);
35bool findAllNVVMAnnotation(const GlobalValue *, const std::string &,
36 std::vector<unsigned> &);
37
38bool isTexture(const Value &);
39bool isSurface(const Value &);
40bool isSampler(const Value &);
41bool isImage(const Value &);
42bool isImageReadOnly(const Value &);
43bool isImageWriteOnly(const Value &);
44bool isImageReadWrite(const Value &);
45bool isManaged(const Value &);
46
47std::string getTextureName(const Value &);
48std::string getSurfaceName(const Value &);
49std::string getSamplerName(const Value &);
50
51bool getMaxNTIDx(const Function &, unsigned &);
52bool getMaxNTIDy(const Function &, unsigned &);
53bool getMaxNTIDz(const Function &, unsigned &);
54
55bool getReqNTIDx(const Function &, unsigned &);
56bool getReqNTIDy(const Function &, unsigned &);
57bool getReqNTIDz(const Function &, unsigned &);
58
59bool getMaxClusterRank(const Function &, unsigned &);
60bool getMinCTASm(const Function &, unsigned &);
61bool getMaxNReg(const Function &, unsigned &);
62bool isKernelFunction(const Function &);
63
64MaybeAlign getAlign(const Function &, unsigned);
65MaybeAlign getAlign(const CallInst &, unsigned);
66Function *getMaybeBitcastedCallee(const CallBase *CB);
67
68// PTX ABI requires all scalar argument/return values to have
69// bit-size as a power of two of at least 32 bits.
70inline unsigned promoteScalarArgumentSize(unsigned size) {
71 if (size <= 32)
72 return 32;
73 else if (size <= 64)
74 return 64;
75 else
76 return size;
77}
78
79bool shouldEmitPTXNoReturn(const Value *V, const TargetMachine &TM);
80
81bool Isv2x16VT(EVT VT);
82}
83
84#endif
Machine Check Debug Module
const char LLVMTargetMachineRef TM
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
bool shouldEmitPTXNoReturn(const Value *V, const TargetMachine &TM)
auto size(R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)
Get the size of a range.
Definition: STLExtras.h:1680
bool Isv2x16VT(EVT VT)
std::string getSamplerName(const Value &val)
bool getMinCTASm(const Function &F, unsigned &x)
bool isImage(const Value &val)
MaybeAlign getAlign(const Function &F, unsigned Index)
bool isImageReadOnly(const Value &val)
bool getMaxNTIDz(const Function &F, unsigned &z)
bool isManaged(const Value &val)
unsigned promoteScalarArgumentSize(unsigned size)
bool isSurface(const Value &val)
bool findAllNVVMAnnotation(const GlobalValue *gv, const std::string &prop, std::vector< unsigned > &retval)
void clearAnnotationCache(const Module *Mod)
std::string getSurfaceName(const Value &val)
bool getReqNTIDx(const Function &F, unsigned &x)
bool getReqNTIDy(const Function &F, unsigned &y)
bool getMaxNReg(const Function &F, unsigned &x)
bool isTexture(const Value &val)
bool isImageWriteOnly(const Value &val)
bool isImageReadWrite(const Value &val)
std::string getTextureName(const Value &val)
bool isKernelFunction(const Function &F)
Function * getMaybeBitcastedCallee(const CallBase *CB)
bool getReqNTIDz(const Function &F, unsigned &z)
bool findOneNVVMAnnotation(const GlobalValue *gv, const std::string &prop, unsigned &retval)
bool getMaxNTIDx(const Function &F, unsigned &x)
bool getMaxNTIDy(const Function &F, unsigned &y)
bool isSampler(const Value &val)
bool getMaxClusterRank(const Function &F, unsigned &x)