LLVM 19.0.0git
Namespaces | Functions | Variables
StraightLineStrengthReduce.cpp File Reference
#include "llvm/Transforms/Scalar/StraightLineStrengthReduce.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.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 "llvm/Support/ErrorHandling.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/Local.h"
#include <cassert>
#include <cstdint>
#include <limits>
#include <list>
#include <vector>

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Functions

 INITIALIZE_PASS_BEGIN (StraightLineStrengthReduceLegacyPass, "slsr", "Straight line strength reduction", false, false) INITIALIZE_PASS_END(StraightLineStrengthReduceLegacyPass
 
static bool isGEPFoldable (GetElementPtrInst *GEP, const TargetTransformInfo *TTI)
 
static bool isAddFoldable (const SCEV *Base, ConstantInt *Index, Value *Stride, TargetTransformInfo *TTI)
 
static bool hasOnlyOneNonZeroIndex (GetElementPtrInst *GEP)
 
static bool matchesAdd (Value *A, Value *&B, ConstantInt *&C)
 
static bool matchesOr (Value *A, Value *&B, ConstantInt *&C)
 
static void unifyBitWidth (APInt &A, APInt &B)
 

Variables

static const unsigned UnknownAddressSpace
 
 slsr
 
Straight line strength reduction
 
Straight line strength false
 

Function Documentation

◆ hasOnlyOneNonZeroIndex()

static bool hasOnlyOneNonZeroIndex ( GetElementPtrInst GEP)
static

Definition at line 308 of file StraightLineStrengthReduce.cpp.

References GEP, Idx, and llvm::ConstantInt::isZero().

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( StraightLineStrengthReduceLegacyPass  ,
"slsr"  ,
"Straight line strength reduction"  ,
false  ,
false   
)

◆ isAddFoldable()

static bool isAddFoldable ( const SCEV Base,
ConstantInt Index,
Value Stride,
TargetTransformInfo TTI 
)
static

◆ isGEPFoldable()

static bool isGEPFoldable ( GetElementPtrInst GEP,
const TargetTransformInfo TTI 
)
static

◆ matchesAdd()

static bool matchesAdd ( Value A,
Value *&  B,
ConstantInt *&  C 
)
static

◆ matchesOr()

static bool matchesOr ( Value A,
Value *&  B,
ConstantInt *&  C 
)
static

◆ unifyBitWidth()

static void unifyBitWidth ( APInt A,
APInt B 
)
static

Definition at line 570 of file StraightLineStrengthReduce.cpp.

References A, and B.

Variable Documentation

◆ false

Straight line strength false

Definition at line 262 of file StraightLineStrengthReduce.cpp.

◆ reduction

Straight line strength reduction

Definition at line 262 of file StraightLineStrengthReduce.cpp.

◆ slsr

slsr

Definition at line 261 of file StraightLineStrengthReduce.cpp.

◆ UnknownAddressSpace

const unsigned UnknownAddressSpace
static
Initial value:
=
std::numeric_limits<unsigned>::max()

Definition at line 93 of file StraightLineStrengthReduce.cpp.

Referenced by isAddFoldable().