LLVM
15.0.0git
|
#include "AArch64.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsAArch64.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/Debug.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "aarch64-sve-intrinsic-opts" |
Functions | |
INITIALIZE_PASS_DEPENDENCY (DominatorTreeWrapperPass) | |
static bool | isPTruePromoted (IntrinsicInst *PTrue) |
Checks if a ptrue intrinsic call is promoted. More... | |
Variables | |
static const char * | name = "SVE intrinsics optimizations" |
#define DEBUG_TYPE "aarch64-sve-intrinsic-opts" |
Definition at line 41 of file SVEIntrinsicOpts.cpp.
INITIALIZE_PASS_DEPENDENCY | ( | DominatorTreeWrapperPass | ) |
|
static |
Checks if a ptrue intrinsic call is promoted.
The act of promoting a ptrue will introduce zeroing. For example:
%1 = <vscale x 4 x i1> call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %2 = <vscale x 16 x i1> call @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %1) %3 = <vscale x 8 x i1> call @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> %2)
%1 is promoted, because it is converted:
<vscale x 4 x i1> => <vscale x 16 x i1> => <vscale x 8 x i1>
via a sequence of the SVE reinterpret intrinsics convert.{to,from}.svbool.
Definition at line 95 of file SVEIntrinsicOpts.cpp.
References llvm::Value::getType(), llvm::PatternMatch::match(), and llvm::Value::users().
|
static |
Definition at line 74 of file SVEIntrinsicOpts.cpp.
Referenced by llvm::LTOCodeGenerator::compileOptimized(), llvm::pdb::DIARawSymbol::dump(), llvm::Mips16HardFloatInfo::findFuncSignature(), llvm::object::Archive::findSym(), get_amd_kernel_code_t_FieldIndex(), llvm::RISCVMCExpr::getVariantKindForName(), is64Bit(), llvm::LTOModule::makeBuffer(), llvm::detail::PassModel< IRUnitT, PassT, PreservedAnalysesT, AnalysisManagerT, ExtraArgTs >::name(), llvm::detail::AnalysisPassModel< IRUnitT, PassT, PreservedAnalysesT, InvalidatorT, ExtraArgTs >::name(), llvm::ELFAttributeParser::parseStringAttribute(), llvm::VEMCExpr::parseVariantKind(), llvm::SparcMCExpr::parseVariantKind(), llvm::RequireAnalysisPass< AnalysisT, LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >::printPipeline(), llvm::RequireAnalysisPass< AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::printPipeline(), llvm::PassInfoMixin< InvalidateAnalysisPass< AnalysisT > >::printPipeline(), llvm::RequireAnalysisPass< AnalysisT, IRUnitT, AnalysisManagerT, ExtraArgTs >::printPipeline(), and llvm::InvalidateAnalysisPass< AnalysisT >::printPipeline().