LLVM 22.0.0git
|
#include "SPIRV.h"
#include "SPIRVSubtarget.h"
#include "SPIRVTargetMachine.h"
#include "SPIRVUtils.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/IntrinsicLowering.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsSPIRV.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/LowerMemIntrinsics.h"
#include <regex>
Go to the source code of this file.
Functions | |
INITIALIZE_PASS (SPIRVPrepareFunctions, "prepare-functions", "SPIRV prepare functions", false, false) static std | |
static Function * | getOrCreateFunction (Module *M, Type *RetTy, ArrayRef< Type * > ArgTypes, StringRef Name) |
static bool | lowerIntrinsicToFunction (IntrinsicInst *Intrinsic) |
static std::string | getAnnotation (Value *AnnoVal, Value *OptAnnoVal) |
static SmallVector< Metadata * > | parseAnnotation (Value *I, const std::string &Anno, LLVMContext &Ctx, Type *Int32Ty) |
static void | lowerPtrAnnotation (IntrinsicInst *II) |
static void | lowerFunnelShifts (IntrinsicInst *FSHIntrinsic) |
static void | lowerExpectAssume (IntrinsicInst *II) |
static bool | toSpvLifetimeIntrinsic (IntrinsicInst *II, Intrinsic::ID NewID) |
|
static |
Definition at line 153 of file SPIRVPrepareFunctions.cpp.
References llvm::CallingConv::C, llvm::dyn_cast(), llvm::dyn_cast_or_null(), E(), llvm::getConstantStringInfo(), I, llvm::Ref, and Struct.
Referenced by lowerPtrAnnotation().
|
static |
Definition at line 75 of file SPIRVPrepareFunctions.cpp.
References llvm::Function::Create(), llvm::GlobalValue::ExternalLinkage, F, llvm::FunctionType::get(), llvm::Function::setCallingConv(), llvm::GlobalValue::setDSOLocal(), and llvm::CallingConv::SPIR_FUNC.
Referenced by lowerFunnelShifts().
INITIALIZE_PASS | ( | SPIRVPrepareFunctions | , |
"prepare-functions" | , | ||
"SPIRV prepare functions" | , | ||
false | , | ||
false | ) |
Definition at line 63 of file SPIRVPrepareFunctions.cpp.
References assert(), llvm::Value::getName(), II, llvm::replace(), and llvm::StringRef::str().
|
static |
Definition at line 338 of file SPIRVPrepareFunctions.cpp.
References F, llvm::Intrinsic::getOrInsertDeclaration(), II, and llvm_unreachable.
|
static |
Definition at line 277 of file SPIRVPrepareFunctions.cpp.
References llvm::BitWidth, llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateLShr(), llvm::IRBuilderBase::CreateOr(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateShl(), llvm::IRBuilderBase::CreateSub(), llvm::IRBuilderBase::CreateURem(), llvm::IRBuilderBase::CreateVectorSplat(), llvm::dyn_cast(), llvm::Function::empty(), llvm::Function::getArg(), llvm::VectorType::getElementType(), llvm::CallBase::getFunctionType(), llvm::IRBuilderBase::getInt(), llvm::IntrinsicInst::getIntrinsicID(), llvm::Instruction::getModule(), llvm::FixedVectorType::getNumElements(), getOrCreateFunction(), llvm::Function::getReturnType(), and llvm::CallBase::setCalledFunction().
|
static |
Definition at line 89 of file SPIRVPrepareFunctions.cpp.
References assert(), llvm::cast(), llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::IRBuilderBase::CreateMemSet(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateRetVoid(), llvm::dyn_cast(), llvm::expandMemSetAsLoop(), F, llvm::isa(), llvm::IntrinsicLowering::LowerIntrinsicCall(), and llvm::Value::setName().
|
static |
Definition at line 241 of file SPIRVPrepareFunctions.cpp.
References llvm::IRBuilderBase::CreateIntrinsic(), llvm::dyn_cast(), llvm::ConstantAsMetadata::get(), llvm::MDNode::get(), llvm::MDString::get(), llvm::MetadataAsValue::get(), getAnnotation(), llvm::Type::getInt32Ty(), llvm::Value::getType(), II, llvm::Int32Ty, parseAnnotation(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::IRBuilderBase::SetInsertPoint(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
static |
Definition at line 188 of file SPIRVPrepareFunctions.cpp.
References llvm::ConstantAsMetadata::get(), llvm::MDNode::get(), llvm::MDString::get(), I, llvm::Int32Ty, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::to_integer().
Referenced by lowerPtrAnnotation().
|
static |
Definition at line 362 of file SPIRVPrepareFunctions.cpp.
References llvm::cast(), II, and Size.