LLVM  14.0.0git
Macros | Functions | Variables
ARMTargetTransformInfo.cpp File Reference
#include "ARMTargetTransformInfo.h"
#include "ARMSubtarget.h"
#include "MCTargetDesc/ARMAddressingModes.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/CodeGen/CostTable.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsARM.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Type.h"
#include "llvm/MC/SubtargetFeature.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/MachineValueType.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/InstCombine/InstCombiner.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <utility>
Include dependency graph for ARMTargetTransformInfo.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "armtti"
 

Functions

static ValuesimplifyNeonVld1 (const IntrinsicInst &II, unsigned MemAlign, InstCombiner::BuilderTy &Builder)
 Convert a vector load intrinsic into a simple llvm load instruction. More...
 
static bool isSSATMinMaxPattern (Instruction *Inst, const APInt &Imm)
 
static bool canTailPredicateInstruction (Instruction &I, int &ICmpCount)
 
static bool canTailPredicateLoop (Loop *L, LoopInfo *LI, ScalarEvolution &SE, const DataLayout &DL, const LoopAccessInfo *LAI)
 

Variables

static cl::opt< bool > EnableMaskedLoadStores ("enable-arm-maskedldst", cl::Hidden, cl::init(true), cl::desc("Enable the generation of masked loads and stores"))
 
static cl::opt< bool > DisableLowOverheadLoops ("disable-arm-loloops", cl::Hidden, cl::init(false), cl::desc("Disable the generation of low-overhead loops"))
 
static cl::opt< bool > AllowWLSLoops ("allow-arm-wlsloops", cl::Hidden, cl::init(true), cl::desc("Enable the generation of WLS loops"))
 
cl::opt< TailPredication::ModeEnableTailPredication
 
cl::opt< bool > EnableMaskedGatherScatters
 
cl::opt< unsigned > MVEMaxSupportedInterleaveFactor
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "armtti"

Definition at line 43 of file ARMTargetTransformInfo.cpp.

Function Documentation

◆ canTailPredicateInstruction()

static bool canTailPredicateInstruction ( Instruction I,
int ICmpCount 
)
static

◆ canTailPredicateLoop()

static bool canTailPredicateLoop ( Loop L,
LoopInfo LI,
ScalarEvolution SE,
const DataLayout DL,
const LoopAccessInfo LAI 
)
static

◆ isSSATMinMaxPattern()

static bool isSSATMinMaxPattern ( Instruction Inst,
const APInt Imm 
)
static

◆ simplifyNeonVld1()

static Value* simplifyNeonVld1 ( const IntrinsicInst II,
unsigned  MemAlign,
InstCombiner::BuilderTy Builder 
)
static

Convert a vector load intrinsic into a simple llvm load instruction.

This is beneficial when the underlying object being addressed comes from a constant, since we get constant-folding for free.

Definition at line 66 of file ARMTargetTransformInfo.cpp.

References Builder, llvm::PointerType::get(), llvm::CallBase::getArgOperand(), llvm::Value::getType(), and llvm::isPowerOf2_32().

Referenced by llvm::ARMTTIImpl::instCombineIntrinsic().

Variable Documentation

◆ AllowWLSLoops

cl::opt<bool> AllowWLSLoops("allow-arm-wlsloops", cl::Hidden, cl::init(true), cl::desc("Enable the generation of WLS loops"))
static

◆ DisableLowOverheadLoops

cl::opt<bool> DisableLowOverheadLoops("disable-arm-loloops", cl::Hidden, cl::init(false), cl::desc("Disable the generation of low-overhead loops"))
static

◆ EnableMaskedGatherScatters

cl::opt<bool> EnableMaskedGatherScatters

◆ EnableMaskedLoadStores

cl::opt<bool> EnableMaskedLoadStores("enable-arm-maskedldst", cl::Hidden, cl::init(true), cl::desc("Enable the generation of masked loads and stores"))
static

◆ EnableTailPredication

cl::opt<TailPredication::Mode> EnableTailPredication

◆ MVEMaxSupportedInterleaveFactor

cl::opt<unsigned> MVEMaxSupportedInterleaveFactor