21#ifndef LLVM_ANALYSIS_DEMANDEDBITS_H
22#define LLVM_ANALYSIS_DEMANDEDBITS_H
44 F(
F), AC(AC), DT(DT) {}
83 void performAnalysis();
84 void determineLiveOperandBits(
const Instruction *UserI,
85 const Value *Val,
unsigned OperandNo,
93 bool Analyzed =
false;
This file implements a class to represent arbitrary precision integral constant values and operations...
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
This file defines the SmallPtrSet class.
Class for arbitrary precision integers.
A container for analyses that lazily runs them and caches their results.
A cache of @llvm.assume calls within a function.
An analysis that produces DemandedBits for a function.
LLVM_ABI DemandedBits run(Function &F, FunctionAnalysisManager &AM)
Run the analysis pass over a function and produce demanded bits information.
Printer pass for DemandedBits.
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
DemandedBitsPrinterPass(raw_ostream &OS)
LLVM_ABI void print(raw_ostream &OS)
LLVM_ABI APInt getDemandedBits(Instruction *I)
Return the bits demanded from instruction I.
static LLVM_ABI APInt determineLiveOperandBitsAdd(unsigned OperandNo, const APInt &AOut, const KnownBits &LHS, const KnownBits &RHS)
Compute alive bits of one addition operand from alive output and known operand bits.
DemandedBits(Function &F, AssumptionCache &AC, DominatorTree &DT)
LLVM_ABI bool isInstructionDead(Instruction *I)
Return true if, during analysis, I could not be reached.
static LLVM_ABI APInt determineLiveOperandBitsSub(unsigned OperandNo, const APInt &AOut, const KnownBits &LHS, const KnownBits &RHS)
Compute alive bits of one subtraction operand from alive output and known operand bits.
LLVM_ABI bool isUseDead(Use *U)
Return whether this use is dead by means of not having any demanded bits.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
A set of analyses that are preserved following a run of a transformation pass.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
A Use represents the edge between a Value definition and its users.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
NodeAddr< UseNode * > Use
This is an optimization pass for GlobalISel generic memory operations.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
A CRTP mix-in to automatically provide informational APIs needed for passes.