14#ifndef LLVM_CODEGEN_GLOBALISEL_GISELKNOWNBITS_H
15#define LLVM_CODEGEN_GLOBALISEL_GISELKNOWNBITS_H
39 const APInt &DemandedElts,
43 const APInt &DemandedElts,
unsigned Depth = 0);
58 const APInt &DemandedElts,
114 std::unique_ptr<GISelKnownBits> Info;
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.
Class for arbitrary precision integers.
void setLowBits(unsigned loBits)
Set the bottom loBits bits.
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<GISelKnownBitsInfoAnalysis...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
GISelKnownBits & get(MachineFunction &MF)
bool runOnMachineFunction(MachineFunction &MF) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
const DataLayout & getDataLayout() const
virtual void computeKnownBitsImpl(Register R, KnownBits &Known, const APInt &DemandedElts, unsigned Depth=0)
Align computeKnownAlignment(Register R, unsigned Depth=0)
static void computeKnownBitsForAlignment(KnownBits &Known, Align Alignment)
APInt getKnownOnes(Register R)
void erasingInstr(MachineInstr &MI) override
An instruction is about to be erased.
virtual ~GISelKnownBits()=default
void createdInstr(MachineInstr &MI) override
An instruction has been created and inserted into the function.
void changingInstr(MachineInstr &MI) override
This instruction is about to be mutated in some way.
unsigned computeNumSignBits(Register R, const APInt &DemandedElts, unsigned Depth=0)
const MachineFunction & getMachineFunction() const
KnownBits getKnownBits(Register R)
bool maskedValueIsZero(Register Val, const APInt &Mask)
unsigned getMaxDepth() const
void changedInstr(MachineInstr &MI) override
This instruction was mutated in some way.
bool signBitIsZero(Register Op)
APInt getKnownZeroes(Register R)
GISelKnownBits(MachineFunction &MF, unsigned MaxDepth=6)
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,...
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
Wrapper class representing virtual and physical registers.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
This is an optimization pass for GlobalISel generic memory operations.
void initializeGISelKnownBitsAnalysisPass(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.