LLVM 22.0.0git
|
#include "MCTargetDesc/NVPTXBaseInfo.h"
#include "NVPTX.h"
#include "NVPTXTargetMachine.h"
#include "NVPTXUtilities.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Analysis/PtrUseVisitor.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsNVPTX.h"
#include "llvm/IR/Type.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/NVPTXAddrSpace.h"
#include <numeric>
#include <queue>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "nvptx-lower-args" |
Functions | |
INITIALIZE_PASS_BEGIN (NVPTXLowerArgsLegacyPass, "nvptx-lower-args", "Lower arguments (NVPTX)", false, false) INITIALIZE_PASS_END(NVPTXLowerArgsLegacyPass | |
nvptx lower Lower | arguments (NVPTX)" |
nvptx lower Lower static false void | convertToParamAS (Use *OldUse, Value *Param, bool HasCvtaParam, bool IsGridConstant) |
static void | adjustByValArgAlignment (Argument *Arg, Value *ArgInParamAS, const NVPTXTargetLowering *TLI) |
static CallInst * | createNVVMInternalAddrspaceWrap (IRBuilder<> &IRB, Argument &Arg) |
static void | handleByValParam (const NVPTXTargetMachine &TM, Argument *Arg) |
static void | markPointerAsAS (Value *Ptr, const unsigned AS) |
static void | markPointerAsGlobal (Value *Ptr) |
static bool | runOnKernelFunction (const NVPTXTargetMachine &TM, Function &F) |
static bool | runOnDeviceFunction (const NVPTXTargetMachine &TM, Function &F) |
static bool | processFunction (Function &F, NVPTXTargetMachine &TM) |
static bool | copyFunctionByValArgs (Function &F) |
Variables | |
nvptx lower | args |
nvptx lower Lower | false |
#define DEBUG_TYPE "nvptx-lower-args" |
Definition at line 160 of file NVPTXLowerArgs.cpp.
|
static |
Definition at line 347 of file NVPTXLowerArgs.cpp.
References llvm::Argument::addAttr(), llvm::NVPTXAS::ADDRESS_SPACE_PARAM, assert(), llvm::cast(), llvm::dbgs(), DL, llvm::dyn_cast(), llvm::NVPTXTargetLowering::getFunctionParamOptimizedAlign(), llvm::APInt::getLimitedValue(), llvm::Argument::getParamAlign(), llvm::Argument::getParamByValType(), llvm::Argument::getParent(), llvm::Attribute::getWithAlignment(), llvm::APInt::getZero(), I, llvm::isa(), LLVM_DEBUG, llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Argument::removeAttr(), llvm::Value::users(), llvm::Align::value(), and llvm::MaybeAlign::valueOrOne().
Referenced by handleByValParam(), and runOnDeviceFunction().
nvptx lower Lower arguments | ( | NVPTX | ) |
|
static |
Definition at line 210 of file NVPTXLowerArgs.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_GENERIC, llvm::NVPTXAS::ADDRESS_SPACE_PARAM, assert(), B(), llvm::cast(), convertToParamAS(), llvm::CastInst::Create(), llvm::GetElementPtrInst::Create(), llvm::IRBuilderBase::CreateAddrSpaceCast(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::enumerate(), GEP, llvm::PointerType::get(), llvm::Value::getName(), llvm::IRBuilderBase::getPtrTy(), I, llvm_unreachable, MI, PHI, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::reverse().
Referenced by convertToParamAS(), and handleByValParam().
Definition at line 715 of file NVPTXLowerArgs.cpp.
References Changed, llvm::dbgs(), F, llvm::Value::getType(), llvm::Argument::hasByValAttr(), llvm::isKernelFunction(), llvm::isParamGridConstant(), llvm::Type::isPointerTy(), and LLVM_DEBUG.
Referenced by llvm::NVPTXCopyByValArgsPass::run().
Definition at line 417 of file NVPTXLowerArgs.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_PARAM, llvm::CallBase::addRetAttr(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::Value::getContext(), llvm::Value::getName(), llvm::Argument::getParamAlign(), llvm::IRBuilderBase::getPtrTy(), llvm::Value::getType(), and llvm::Attribute::getWithAlignment().
Referenced by handleByValParam().
|
static |
Definition at line 545 of file NVPTXLowerArgs.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_GENERIC, adjustByValArgAlignment(), assert(), llvm::cast(), convertToParamAS(), llvm::IRBuilderBase::CreateAddrSpaceCast(), createNVVMInternalAddrspaceWrap(), llvm::dbgs(), DL, llvm::SmallPtrSetImplBase::empty(), llvm::Value::getName(), llvm::Argument::getParamByValType(), llvm::Argument::getParent(), llvm::IRBuilderBase::getPtrTy(), llvm::isKernelFunction(), llvm::isParamGridConstant(), LLVM_DEBUG, llvm::make_pointer_range(), llvm::Value::replaceAllUsesWith(), and llvm::Value::uses().
Referenced by runOnKernelFunction().
INITIALIZE_PASS_BEGIN | ( | NVPTXLowerArgsLegacyPass | , |
"nvptx-lower-args" | , | ||
"Lower arguments (NVPTX)" | , | ||
false | , | ||
false | ) |
References INITIALIZE_PASS_DEPENDENCY.
Definition at line 610 of file NVPTXLowerArgs.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_GENERIC, assert(), llvm::BasicBlock::begin(), llvm::cast(), llvm::dyn_cast(), llvm::PointerType::get(), llvm::Function::getEntryBlock(), llvm::Argument::getParent(), Ptr, and llvm::User::setOperand().
Referenced by markPointerAsGlobal().
|
static |
Definition at line 635 of file NVPTXLowerArgs.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_GLOBAL, markPointerAsAS(), and Ptr.
Referenced by runOnKernelFunction().
|
static |
Definition at line 702 of file NVPTXLowerArgs.cpp.
References F, llvm::isKernelFunction(), runOnDeviceFunction(), and runOnKernelFunction().
Referenced by llvm::NVPTXLowerArgsPass::run().
|
static |
Definition at line 689 of file NVPTXLowerArgs.cpp.
References adjustByValArgAlignment(), llvm::cast(), llvm::dbgs(), F, llvm::Value::getType(), llvm::Argument::hasByValAttr(), llvm::Type::isPointerTy(), and LLVM_DEBUG.
Referenced by processFunction().
|
static |
Definition at line 642 of file NVPTXLowerArgs.cpp.
References llvm::all_of(), B(), llvm::NVPTX::CUDA, llvm::dbgs(), llvm::dyn_cast(), F, llvm::Value::getType(), llvm::getUnderlyingObject(), handleByValParam(), llvm::Argument::hasByValAttr(), I, llvm::Type::isIntegerTy(), llvm::Type::isPointerTy(), LLVM_DEBUG, and markPointerAsGlobal().
Referenced by processFunction().
nvptx lower args |
Definition at line 185 of file NVPTXLowerArgs.cpp.
Referenced by llvm::LegalityPredicates::all(), llvm::detail::all_of_zip_predicate_first(), llvm::LegalityPredicates::any(), llvm::hashing::detail::hash_combine_recursive_helper::combine(), llvm::DisplayGraph(), ExecGraphViewer(), formatInternal(), getOrCreateCachedOptional(), llvm::hash_combine(), lle_X_scanf(), lle_X_sscanf(), lto_codegen_set_assembler_args(), AbstractManglingParser< Derived, Alloc >::make(), llvm::ARMTargetLowering::makeDMB(), shuffles::mask(), llvm::MCObjectStreamer::newSpecialFragment(), llvm::FileCheckPatternContext::Pattern, llvm::thread::thread(), llvm::thread::thread(), writeWholeProgramDevirtResolutionByArg(), llvm::zip(), llvm::zip_equal(), llvm::zip_first(), llvm::zip_longest(), and llvm::detail::zippy< ItType, Args >::zippy().
nvptx lower Lower false |
Definition at line 186 of file NVPTXLowerArgs.cpp.