LLVM  9.0.0svn
Macros | Functions | Variables
ARMParallelDSP.cpp File Reference

Armv6 introduced instructions to perform 32-bit SIMD operations. More...

#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/NoFolder.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
#include "llvm/Pass.h"
#include "llvm/PassRegistry.h"
#include "llvm/PassSupport.h"
#include "llvm/Support/Debug.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "ARM.h"
#include "ARMSubtarget.h"
Include dependency graph for ARMParallelDSP.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "arm-parallel-dsp"
 

Functions

 STATISTIC (NumSMLAD, "Number of smlad instructions generated")
 
template<typename MemInst >
static bool AreSequentialAccesses (MemInst *MemOp0, MemInst *MemOp1, const DataLayout &DL, ScalarEvolution &SE)
 
 INITIALIZE_PASS_BEGIN (ARMParallelDSP, "arm-parallel-dsp", "Transform loops to use DSP intrinsics", false, false) INITIALIZE_PASS_END(ARMParallelDSP
 

Variables

static cl::opt< boolDisableParallelDSP ("disable-arm-parallel-dsp", cl::Hidden, cl::init(false), cl::desc("Disable the ARM Parallel DSP pass"))
 
arm parallel dsp
 
arm parallel Transform loops to use DSP intrinsics
 
arm parallel Transform loops to use DSP false
 

Detailed Description

Armv6 introduced instructions to perform 32-bit SIMD operations.

The purpose of this pass is do some IR pattern matching to create ACLE DSP intrinsics, which map on these 32-bit SIMD operations. This pass runs only when unaligned accesses is supported/enabled.

Definition in file ARMParallelDSP.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "arm-parallel-dsp"

Definition at line 40 of file ARMParallelDSP.cpp.

Function Documentation

◆ AreSequentialAccesses()

template<typename MemInst >
static bool AreSequentialAccesses ( MemInst *  MemOp0,
MemInst *  MemOp1,
const DataLayout DL,
ScalarEvolution SE 
)
static

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( ARMParallelDSP  ,
"arm-parallel-dsp ,
"Transform loops to use DSP intrinsics ,
false  ,
false   
)

◆ STATISTIC()

STATISTIC ( NumSMLAD  ,
"Number of smlad instructions generated"   
)

Variable Documentation

◆ DisableParallelDSP

cl::opt<bool> DisableParallelDSP("disable-arm-parallel-dsp", cl::Hidden, cl::init(false), cl::desc("Disable the ARM Parallel DSP pass"))
static

◆ dsp

arm parallel dsp

Definition at line 846 of file ARMParallelDSP.cpp.

◆ false

arm parallel Transform loops to use DSP false

Definition at line 846 of file ARMParallelDSP.cpp.

◆ intrinsics

arm parallel Transform loops to use DSP intrinsics

Definition at line 846 of file ARMParallelDSP.cpp.