21#ifndef LLVM_ANALYSIS_DEMANDEDBITS_H
22#define LLVM_ANALYSIS_DEMANDEDBITS_H
43 F(
F), AC(AC), DT(DT) {}
82 void performAnalysis();
83 void determineLiveOperandBits(
const Instruction *UserI,
84 const Value *Val,
unsigned OperandNo,
92 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.
DemandedBits run(Function &F, FunctionAnalysisManager &AM)
Run the analysis pass over a function and produce demanded bits information.
Printer pass for DemandedBits.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
DemandedBitsPrinterPass(raw_ostream &OS)
void print(raw_ostream &OS)
APInt getDemandedBits(Instruction *I)
Return the bits demanded from instruction I.
static 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)
bool isInstructionDead(Instruction *I)
Return true if, during analysis, I could not be reached.
static 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.
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.