LLVM 20.0.0git
Macros | Functions | Variables
ReplaceWithVeclib.cpp File Reference
#include "llvm/CodeGen/ReplaceWithVeclib.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/DemandedBits.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/VectorUtils.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/VFABIDemangler.h"
#include "llvm/Support/TypeSize.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "replace-with-veclib"
 

Functions

 STATISTIC (NumCallsReplaced, "Number of calls to intrinsics that have been replaced.")
 
 STATISTIC (NumTLIFuncDeclAdded, "Number of vector library function declarations added.")
 
 STATISTIC (NumFuncUsedAdded, "Number of functions added to `llvm.compiler.used`")
 
FunctiongetTLIFunction (Module *M, FunctionType *VectorFTy, const StringRef TLIName, Function *ScalarFunc=nullptr)
 Returns a vector Function that it adds to the Module M.
 
static void replaceWithTLIFunction (IntrinsicInst *II, VFInfo &Info, Function *TLIVecFunc)
 Replace the intrinsic call II to TLIVecFunc, which is the corresponding function from the vector library.
 
static bool replaceWithCallToVeclib (const TargetLibraryInfo &TLI, IntrinsicInst *II)
 Returns true when successfully replaced II, which is a call to a vectorized intrinsic, with a suitable function taking vector arguments, based on available mappings in the TLI.
 
static bool runImpl (const TargetLibraryInfo &TLI, Function &F)
 
 INITIALIZE_PASS_BEGIN (ReplaceWithVeclibLegacy, DEBUG_TYPE, "Replace intrinsics with calls to vector library", false, false) INITIALIZE_PASS_END(ReplaceWithVeclibLegacy
 

Variables

 DEBUG_TYPE
 
Replace intrinsics with calls to vector library
 
Replace intrinsics with calls to vector false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "replace-with-veclib"

Definition at line 34 of file ReplaceWithVeclib.cpp.

Function Documentation

◆ getTLIFunction()

Function * getTLIFunction ( Module M,
FunctionType VectorFTy,
const StringRef  TLIName,
Function ScalarFunc = nullptr 
)

Returns a vector Function that it adds to the Module M.

When an ScalarFunc is not null, it copies its attributes to the newly created Function.

Definition at line 48 of file ReplaceWithVeclib.cpp.

References llvm::appendToCompilerUsed(), llvm::Function::copyAttributesFrom(), llvm::Function::Create(), llvm::dbgs(), DEBUG_TYPE, llvm::GlobalValue::getType(), and LLVM_DEBUG.

Referenced by replaceWithCallToVeclib().

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( ReplaceWithVeclibLegacy  ,
DEBUG_TYPE  ,
"Replace intrinsics with calls to vector library"  ,
false  ,
false   
)

◆ replaceWithCallToVeclib()

static bool replaceWithCallToVeclib ( const TargetLibraryInfo TLI,
IntrinsicInst II 
)
static

◆ replaceWithTLIFunction()

static void replaceWithTLIFunction ( IntrinsicInst II,
VFInfo Info,
Function TLIVecFunc 
)
static

Replace the intrinsic call II to TLIVecFunc, which is the corresponding function from the vector library.

Definition at line 75 of file ReplaceWithVeclib.cpp.

References llvm::IRBuilderBase::CreateCall(), llvm::Constant::getAllOnesValue(), llvm::Type::getInt1Ty(), II, and Info.

Referenced by replaceWithCallToVeclib().

◆ runImpl()

static bool runImpl ( const TargetLibraryInfo TLI,
Function F 
)
static

◆ STATISTIC() [1/3]

STATISTIC ( NumCallsReplaced  ,
"Number of calls to intrinsics that have been replaced."   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumFuncUsedAdded  ,
"Number of functions added to `llvm.compiler.used`"   
)

◆ STATISTIC() [3/3]

STATISTIC ( NumTLIFuncDeclAdded  ,
"Number of vector library function declarations added."   
)

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 279 of file ReplaceWithVeclib.cpp.

◆ false

Replace intrinsics with calls to vector false

Definition at line 280 of file ReplaceWithVeclib.cpp.

◆ library

Replace intrinsics with calls to vector library

Definition at line 280 of file ReplaceWithVeclib.cpp.