LLVM 20.0.0git
|
#include "ARM.h"
#include "ARMBaseInstrInfo.h"
#include "ARMSubtarget.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsARM.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include <algorithm>
#include <cassert>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "mve-laneinterleave" |
Functions | |
INITIALIZE_PASS (MVELaneInterleaving, DEBUG_TYPE, "MVE lane interleaving", false, false) Pass *llvm | |
static bool | isProfitableToInterleave (SmallSetVector< Instruction *, 4 > &Exts, SmallSetVector< Instruction *, 4 > &Truncs) |
static bool | tryInterleave (Instruction *Start, SmallPtrSetImpl< Instruction * > &Visited) |
static bool | isAddReduction (Instruction &I) |
Variables | |
cl::opt< bool > | EnableInterleave ("enable-mve-interleave", cl::Hidden, cl::init(true), cl::desc("Enable interleave MVE vector operation lowering")) |
#define DEBUG_TYPE "mve-laneinterleave" |
Definition at line 77 of file MVELaneInterleavingPass.cpp.
INITIALIZE_PASS | ( | MVELaneInterleaving | , |
DEBUG_TYPE | , | ||
"MVE lane interleaving" | , | ||
false | , | ||
false | |||
) |
Definition at line 108 of file MVELaneInterleavingPass.cpp.
|
static |
Definition at line 398 of file MVELaneInterleavingPass.cpp.
|
static |
Definition at line 115 of file MVELaneInterleavingPass.cpp.
References llvm::dbgs(), and LLVM_DEBUG.
Referenced by tryInterleave().
|
static |
Definition at line 154 of file MVELaneInterleavingPass.cpp.
References llvm::all_of(), assert(), llvm::sampleprof::Base, llvm::SetVector< T, Vector, Set, N >::count(), llvm::IRBuilderBase::CreateFPExt(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateShuffleVector(), llvm::IRBuilderBase::CreateZExt(), llvm::dbgs(), llvm::SetVector< T, Vector, Set, N >::empty(), getType(), I, II, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), isProfitableToInterleave(), LLVM_DEBUG, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::IRBuilderBase::SetInsertPoint().