LLVM 18.0.0git
|
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AliasSetTracker.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Scalar/LoopReroll.h"
#include "llvm/Transforms/Utils.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
#include "llvm/Transforms/Utils/ScalarEvolutionExpander.h"
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <map>
#include <utility>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "loop-reroll" |
Functions | |
STATISTIC (NumRerolledLoops, "Number of rerolled loops") | |
static bool | hasUsesOutsideLoop (Instruction *I, Loop *L) |
static bool | isUnorderedLoadStore (Instruction *I) |
static bool | isSimpleArithmeticOp (User *IVU) |
Return true if IVU is a "simple" arithmetic operation. | |
static bool | isLoopIncrement (User *U, Instruction *IV) |
static bool | isIgnorableInst (const Instruction *I) |
Variables | |
static cl::opt< unsigned > | NumToleratedFailedMatches ("reroll-num-tolerated-failed-matches", cl::init(400), cl::Hidden, cl::desc("The maximum number of failures to tolerate" " during fuzzy matching. (default: 400)")) |
#define DEBUG_TYPE "loop-reroll" |
Definition at line 61 of file LoopRerollPass.cpp.
|
static |
Definition at line 477 of file LoopRerollPass.cpp.
References I.
|
static |
Definition at line 1101 of file LoopRerollPass.cpp.
References llvm::IntrinsicInst::getIntrinsicID(), and I.
|
static |
Definition at line 733 of file LoopRerollPass.cpp.
References llvm::BinaryOperator::getOpcode(), and IV.
Return true if IVU is a "simple" arithmetic operation.
This is used for narrowing the search space for DAGRoots; only arithmetic and GEPs can be part of a DAGRoot.
Definition at line 713 of file LoopRerollPass.cpp.
References I.
|
static |
Definition at line 700 of file LoopRerollPass.cpp.
STATISTIC | ( | NumRerolledLoops | , |
"Number of rerolled loops" | |||
) |
|
static |