LLVM 20.0.0git
Macros | Functions | Variables
MVELaneInterleavingPass.cpp File Reference
#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< boolEnableInterleave ("enable-mve-interleave", cl::Hidden, cl::init(true), cl::desc("Enable interleave MVE vector operation lowering"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "mve-laneinterleave"

Definition at line 77 of file MVELaneInterleavingPass.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( MVELaneInterleaving  ,
DEBUG_TYPE  ,
"MVE lane interleaving"  ,
false  ,
false   
)

Definition at line 108 of file MVELaneInterleavingPass.cpp.

◆ isAddReduction()

static bool isAddReduction ( Instruction I)
static

Definition at line 398 of file MVELaneInterleavingPass.cpp.

References I, and II.

◆ isProfitableToInterleave()

static bool isProfitableToInterleave ( SmallSetVector< Instruction *, 4 > &  Exts,
SmallSetVector< Instruction *, 4 > &  Truncs 
)
static

Definition at line 115 of file MVELaneInterleavingPass.cpp.

References llvm::dbgs(), and LLVM_DEBUG.

Referenced by tryInterleave().

◆ tryInterleave()

static bool tryInterleave ( Instruction Start,
SmallPtrSetImpl< Instruction * > &  Visited 
)
static

Variable Documentation

◆ EnableInterleave

cl::opt< bool > EnableInterleave("enable-mve-interleave", cl::Hidden, cl::init(true), cl::desc("Enable interleave MVE vector operation lowering")) ( "enable-mve-interleave"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Enable interleave MVE vector operation lowering")   
)