LLVM 18.0.0git
|
#include "SPIRV.h"
#include "SPIRVTargetMachine.h"
#include "SPIRVUtils.h"
#include "llvm/CodeGen/IntrinsicLowering.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/LowerMemIntrinsics.h"
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Functions | |
void | llvm::initializeSPIRVPrepareFunctionsPass (PassRegistry &) |
INITIALIZE_PASS (SPIRVPrepareFunctions, "prepare-functions", "SPIRV prepare functions", false, false) std | |
static Function * | getOrCreateFunction (Module *M, Type *RetTy, ArrayRef< Type * > ArgTypes, StringRef Name) |
static bool | lowerIntrinsicToFunction (IntrinsicInst *Intrinsic) |
static void | lowerFunnelShifts (IntrinsicInst *FSHIntrinsic) |
static void | buildUMulWithOverflowFunc (Function *UMulFunc) |
static void | lowerUMulWithOverflow (IntrinsicInst *UMulIntrinsic) |
|
static |
Definition at line 212 of file SPIRVPrepareFunctions.cpp.
References llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateICmpNE(), llvm::IRBuilderBase::CreateInsertValue(), llvm::IRBuilderBase::CreateNUWMul(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateUDiv(), llvm::Function::empty(), llvm::PoisonValue::get(), llvm::Function::getArg(), llvm::Module::getContext(), llvm::GlobalValue::getParent(), llvm::Function::getReturnType(), and Mul.
Referenced by lowerUMulWithOverflow().
|
static |
Definition at line 73 of file SPIRVPrepareFunctions.cpp.
References llvm::Function::Create(), llvm::GlobalValue::ExternalLinkage, F, Name, RetTy, llvm::Function::setCallingConv(), llvm::GlobalValue::setDSOLocal(), and llvm::CallingConv::SPIR_FUNC.
Referenced by lowerFunnelShifts(), and lowerUMulWithOverflow().
INITIALIZE_PASS | ( | SPIRVPrepareFunctions | , |
"prepare-functions" | , | ||
"SPIRV prepare functions" | , | ||
false | , | ||
false | |||
) |
Definition at line 61 of file SPIRVPrepareFunctions.cpp.
References assert(), llvm::Value::getName(), and llvm::StringRef::str().
|
static |
Definition at line 151 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::Function::empty(), llvm::Function::getArg(), llvm::VectorType::getElementType(), llvm::CallBase::getFunctionType(), llvm::IRBuilderBase::getInt(), llvm::Type::getIntegerBitWidth(), llvm::IntrinsicInst::getIntrinsicID(), llvm::Instruction::getModule(), llvm::FixedVectorType::getNumElements(), getOrCreateFunction(), llvm::Function::getReturnType(), and llvm::CallBase::setCalledFunction().
|
static |
Definition at line 87 of file SPIRVPrepareFunctions.cpp.
References assert(), llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::IRBuilderBase::CreateMemSet(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateRetVoid(), llvm::expandMemSetAsLoop(), F, llvm::IntrinsicLowering::LowerIntrinsicCall(), and llvm::Value::setName().
|
static |
Definition at line 236 of file SPIRVPrepareFunctions.cpp.
References buildUMulWithOverflowFunc(), llvm::CallBase::getFunctionType(), llvm::Instruction::getModule(), getOrCreateFunction(), and llvm::CallBase::setCalledFunction().