LLVM
8.0.1
|
This file provides internal interfaces used to implement the InstCombine. More...
#include "llvm/ADT/ArrayRef.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/Analysis/TargetFolder.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/InstCombine/InstCombineWorklist.h"
#include "llvm/Transforms/Utils/Local.h"
#include <cassert>
#include <cstdint>
Go to the source code of this file.
Classes | |
class | llvm::InstCombiner |
The core instruction combiner logic. More... | |
Namespaces | |
llvm | |
This class represents lattice values for constants. | |
Macros | |
#define | DEBUG_TYPE "instcombine" |
Enumerations | |
enum | llvm::OverflowCheckFlavor { llvm::OCF_UNSIGNED_ADD, llvm::OCF_SIGNED_ADD, llvm::OCF_UNSIGNED_SUB, llvm::OCF_SIGNED_SUB, llvm::OCF_UNSIGNED_MUL, llvm::OCF_SIGNED_MUL, llvm::OCF_INVALID } |
Specific patterns of overflow check idioms that we match. More... | |
Functions | |
static unsigned | llvm::getComplexity (Value *V) |
Assign a complexity or rank value to LLVM Values. More... | |
static bool | llvm::isCanonicalPredicate (CmpInst::Predicate Pred) |
Predicate canonicalization reduces the number of patterns that need to be matched by other transforms. More... | |
static Value * | llvm::peekThroughBitcast (Value *V, bool OneUseOnly=false) |
Return the source operand of a potentially bitcasted value while optionally checking if it has one use. More... | |
static Constant * | llvm::AddOne (Constant *C) |
Add one to a Constant. More... | |
static Constant * | llvm::SubOne (Constant *C) |
Subtract one from a Constant. More... | |
static bool | llvm::IsFreeToInvert (Value *V, bool WillInvertAllUses) |
Return true if the specified value is free to invert (apply ~ to). More... | |
static OverflowCheckFlavor | llvm::IntrinsicIDToOverflowCheckFlavor (unsigned ID) |
Returns the OverflowCheckFlavor corresponding to a overflow_with_op intrinsic. More... | |
static Constant * | llvm::getSafeVectorConstantForBinop (BinaryOperator::BinaryOps Opcode, Constant *In, bool IsRHSConstant) |
Some binary operators require special handling to avoid poison and undefined behavior. More... | |
This file provides internal interfaces used to implement the InstCombine.
Definition in file InstCombineInternal.h.
#define DEBUG_TYPE "instcombine" |
Definition at line 48 of file InstCombineInternal.h.