14#ifndef LLVM_CODEGEN_GLOBALISEL_GISELVALUETRACKING_H
15#define LLVM_CODEGEN_GLOBALISEL_GISELVALUETRACKING_H
44 const APInt &DemandedElts,
unsigned Depth = 0);
47 const APInt &DemandedElts,
unsigned Depth = 0);
53 const APInt &DemandedElts,
70 const APInt &DemandedElts,
73 unsigned computeNumSignBits(
Register R,
const APInt &DemandedElts,
75 unsigned computeNumSignBits(
Register R,
unsigned Depth = 0);
91 return Mask.isSubsetOf(getKnownBits(Val).Zero);
109 std::optional<ConstantRange>
110 getValidShiftAmountRange(
Register R,
const APInt &DemandedElts,
116 std::optional<uint64_t> getValidMinimumShiftAmount(
Register R,
117 const APInt &DemandedElts,
167 std::unique_ptr<GISelValueTracking>
Info;
173 *PassRegistry::getPassRegistry());
unsigned const MachineRegisterInfo * MRI
This file declares a class to represent arbitrary precision floating point values and provide a varie...
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Analysis containing CSE Info
This file defines the DenseMap class.
This contains common code to allow clients to notify changes to machine instr.
This header defines various interfaces for pass management in LLVM.
void computeKnownFPClass(const Value *V, const APInt &DemandedElts, FPClassTest InterestedClasses, KnownFPClass &Known, const SimplifyQuery &Q, unsigned Depth)
static void computeKnownFPClassForFPTrunc(const Operator *Op, const APInt &DemandedElts, FPClassTest InterestedClasses, KnownFPClass &Known, const SimplifyQuery &Q, unsigned Depth)
Class for arbitrary precision integers.
void setLowBits(unsigned loBits)
Set the bottom loBits bits.
A container for analyses that lazily runs them and caches their results.
Represent the analysis usage information of a pass.
This class represents an Operation in the Expression.
A parsed version of the target data layout string in and methods for querying it.
Abstract class that contains various methods for clients to notify about changes.
To use KnownBitsInfo analysis in a pass, KnownBitsInfo &Info = getAnalysis<GISelValueTrackingInfoAnal...
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
GISelValueTrackingAnalysisLegacy()
LLVM_ABI Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
GISelValueTrackingPrinterPass(raw_ostream &OS)
LLVM_ABI PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
unsigned getMaxDepth() const
void createdInstr(MachineInstr &MI) override
An instruction has been created and inserted into the function.
static void computeKnownBitsForAlignment(KnownBits &Known, Align Alignment)
bool maskedValueIsZero(Register Val, const APInt &Mask)
const DataLayout & getDataLayout() const
const MachineFunction & getMachineFunction() const
void changedInstr(MachineInstr &MI) override
This instruction was mutated in some way.
void erasingInstr(MachineInstr &MI) override
An instruction is about to be erased.
void changingInstr(MachineInstr &MI) override
This instruction is about to be mutated in some way.
GISelValueTracking(MachineFunction &MF, unsigned MaxDepth=6)
virtual ~GISelValueTracking()=default
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
A set of analyses that are preserved following a run of a transformation pass.
Wrapper class representing virtual and physical registers.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) get(const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &Pair)
FPClassTest
Floating-point class tests, supported by 'is_fpclass' intrinsic.
LLVM_ABI void initializeGISelValueTrackingAnalysisLegacyPass(PassRegistry &)
unsigned Log2(Align A)
Returns the log2 of the alignment.
This struct is a compact representation of a valid (non-zero power of two) alignment.
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.