LLVM 18.0.0git
|
#include "llvm/CodeGen/ExpandVectorPredication.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/Analysis/VectorUtils.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include <optional>
Go to the source code of this file.
Macros | |
#define | VPINTERNAL_VPLEGAL_CASES |
#define | VPINTERNAL_CASE(X) "|" #X |
#define | VPINTERNAL_CASE(X) .Case(#X, VPLegalization::X) |
#define | DEBUG_TYPE "expandvp" |
Typedefs | |
using | VPLegalization = TargetTransformInfo::VPLegalization |
using | VPTransform = TargetTransformInfo::VPLegalization::VPTransform |
Functions | |
static VPTransform | parseOverrideOption (const std::string &TextOpt) |
static bool | anyExpandVPOverridesSet () |
STATISTIC (NumFoldedVL, "Number of folded vector length params") | |
STATISTIC (NumLoweredVPOps, "Number of folded vector predication operations") | |
static bool | isAllTrueMask (Value *MaskVal) |
static Constant * | getSafeDivisor (Type *DivTy) |
static void | transferDecorations (Value &NewVal, VPIntrinsic &VPI) |
Transfer operation properties from OldVPI to NewVal . | |
static void | replaceOperation (Value &NewOp, VPIntrinsic &OldOp) |
Transfer all properties from OldOp to NewOp and replace all uses. | |
static bool | maySpeculateLanes (VPIntrinsic &VPI) |
INITIALIZE_PASS_BEGIN (ExpandVectorPredication, "expandvp", "Expand vector predication intrinsics", false, false) INITIALIZE_PASS_END(ExpandVectorPredication | |
Variables | |
static cl::opt< std::string > | EVLTransformOverride ("expandvp-override-evl-transform", cl::init(""), cl::Hidden, cl::desc("Options: <empty>" VPINTERNAL_VPLEGAL_CASES ". If non-empty, ignore " "TargetTransformInfo and " "always use this transformation for the %evl parameter (Used in " "testing).")) |
static cl::opt< std::string > | MaskTransformOverride ("expandvp-override-mask-transform", cl::init(""), cl::Hidden, cl::desc("Options: <empty>" VPINTERNAL_VPLEGAL_CASES ". If non-empty, Ignore " "TargetTransformInfo and " "always use this transformation for the %mask parameter (Used in " "testing).")) |
expandvp | |
Expand vector predication | intrinsics |
Expand vector predication | false |
#define DEBUG_TYPE "expandvp" |
Definition at line 78 of file ExpandVectorPredication.cpp.
Definition at line 65 of file ExpandVectorPredication.cpp.
#define VPINTERNAL_CASE | ( | X | ) | .Case(#X, VPLegalization::X) |
Definition at line 65 of file ExpandVectorPredication.cpp.
#define VPINTERNAL_VPLEGAL_CASES |
Definition at line 40 of file ExpandVectorPredication.cpp.
Definition at line 36 of file ExpandVectorPredication.cpp.
Definition at line 37 of file ExpandVectorPredication.cpp.
|
static |
Definition at line 74 of file ExpandVectorPredication.cpp.
References EVLTransformOverride, and MaskTransformOverride.
Definition at line 95 of file ExpandVectorPredication.cpp.
References assert(), llvm::ConstantInt::get(), and llvm::Type::isIntOrIntVectorTy().
INITIALIZE_PASS_BEGIN | ( | ExpandVectorPredication | , |
"expandvp" | , | ||
"Expand vector predication intrinsics" | , | ||
false | , | ||
false | |||
) |
MaskVal
has all lane bits set. Definition at line 86 of file ExpandVectorPredication.cpp.
References llvm::getSplatValue().
|
static |
Definition at line 121 of file ExpandVectorPredication.cpp.
References llvm::VPIntrinsic::getFunctionalOpcode(), and llvm::isSafeToSpeculativelyExecuteWithOpcode().
|
static |
Definition at line 67 of file ExpandVectorPredication.cpp.
References VPINTERNAL_VPLEGAL_CASES.
|
static |
Transfer all properties from OldOp
to NewOp
and replace all uses.
OldVP gets erased.
Definition at line 115 of file ExpandVectorPredication.cpp.
References llvm::Instruction::eraseFromParent(), llvm::Value::replaceAllUsesWith(), and transferDecorations().
STATISTIC | ( | NumFoldedVL | , |
"Number of folded vector length params" | |||
) |
STATISTIC | ( | NumLoweredVPOps | , |
"Number of folded vector predication operations" | |||
) |
|
static |
Transfer operation properties from OldVPI
to NewVal
.
Definition at line 101 of file ExpandVectorPredication.cpp.
Referenced by replaceOperation().
|
static |
Referenced by anyExpandVPOverridesSet().
expandvp |
Definition at line 865 of file ExpandVectorPredication.cpp.
Expand vector predication false |
Definition at line 866 of file ExpandVectorPredication.cpp.
Expand vector predication intrinsics |
Definition at line 866 of file ExpandVectorPredication.cpp.
|
static |
Referenced by anyExpandVPOverridesSet().