Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
Classes | |
struct | BlendInstruction |
struct | MaskInstruction |
Public Member Functions | |
IntrinsicsOpt () | |
llvm::StringRef | getPassName () const |
bool | runOnBasicBlock (llvm::BasicBlock &BB) |
bool | runOnFunction (llvm::Function &F) |
Static Public Attributes | |
static char | ID = 0 |
Private Member Functions | |
bool | matchesMaskInstruction (llvm::Function *function) |
BlendInstruction * | matchingBlendInstruction (llvm::Function *function) |
Private Attributes | |
std::vector< MaskInstruction > | maskInstructions |
std::vector< BlendInstruction > | blendInstructions |
This is a relatively simple optimization pass that does a few small optimizations that LLVM's x86 optimizer doesn't currently handle. (Specifically, MOVMSK of a constant can be replaced with the corresponding constant value, BLENDVPS and AVX masked load/store with either an 'all on' or 'all off' masks can be replaced with simpler operations.
|
private |
|
private |
bool IntrinsicsOpt::runOnBasicBlock | ( | llvm::BasicBlock & | BB | ) |
Definition at line 743 of file opt.cpp.
References IntrinsicsOpt::BlendInstruction::allOnMask, Assert, DEBUG_END_PASS, DEBUG_START_PASS, Opt::forceAlignedMemory, g, Target::getNativeVectorAlignment(), LLVMTypes::Int32Type, lCopyMetadata(), lGetMask(), lIsUndef(), LLVMGetName(), LLVMInt32(), LLVMInt64(), m, Module::module, IntrinsicsOpt::BlendInstruction::op0, IntrinsicsOpt::BlendInstruction::op1, IntrinsicsOpt::BlendInstruction::opFactor, Globals::opt, and Globals::target.
|
private |
|
private |