|
LLVM 23.0.0git
|
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"#include "llvm/ADT/APFloat.h"#include "llvm/ADT/FloatingPointMode.h"#include "llvm/ADT/ScopeExit.h"#include "llvm/ADT/StringExtras.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/Analysis/VectorUtils.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"#include "llvm/CodeGen/GlobalISel/MachineFloatingPointPredicateUtils.h"#include "llvm/CodeGen/GlobalISel/Utils.h"#include "llvm/CodeGen/LowLevelTypeUtils.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/Register.h"#include "llvm/CodeGen/TargetLowering.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/IR/ConstantRange.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/FMF.h"#include "llvm/InitializePasses.h"#include "llvm/MC/TargetRegistry.h"#include "llvm/Support/KnownBits.h"#include "llvm/Support/KnownFPClass.h"#include "llvm/Target/TargetMachine.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "gisel-known-bits" |
| Provides analysis for querying information about KnownBits during GISel passes. | |
Functions | |
| INITIALIZE_PASS (GISelValueTrackingAnalysisLegacy, DEBUG_TYPE, "Analysis for ComputingKnownBits", false, true) GISelValueTracking | |
| static void | dumpResult (const MachineInstr &MI, const KnownBits &Known, unsigned Depth) |
| static KnownBits | extractBits (unsigned BitWidth, const KnownBits &SrcOpKnown, const KnownBits &OffsetKnown, const KnownBits &WidthKnown) |
| static bool | isAbsoluteValueULEOne (Register R, const MachineRegisterInfo &MRI) |
| Return true if this value is known to be the fractional part x - floor(x), which lies in [0, 1). | |
| static unsigned | computeNumSignBitsFromRangeMetadata (const GAnyLoad *Ld, unsigned TyBits) |
| Compute the known number of sign bits with attached range metadata in the memory operand. | |
| #define DEBUG_TYPE "gisel-known-bits" |
Provides analysis for querying information about KnownBits during GISel passes.
Definition at line 42 of file GISelValueTracking.cpp.
Compute the known number of sign bits with attached range metadata in the memory operand.
If this is an extending load, accounts for the behavior of the high bits.
Definition at line 1999 of file GISelValueTracking.cpp.
References llvm::ConstantRange::getBitWidth(), llvm::getConstantRangeFromMetadata(), llvm::APInt::getNumSignBits(), llvm::MachineInstr::getOpcode(), llvm::GAnyLoad::getRanges(), llvm::ConstantRange::getSignedMax(), llvm::ConstantRange::getSignedMin(), llvm::ConstantRange::signExtend(), and llvm::ConstantRange::zeroExtend().
Referenced by llvm::GISelValueTracking::computeNumSignBits().
|
static |
Definition at line 117 of file GISelValueTracking.cpp.
References llvm::dbgs(), llvm::Depth, MI, llvm::KnownBits::One, llvm::toString(), and llvm::KnownBits::Zero.
Referenced by llvm::GISelValueTracking::computeKnownBitsImpl().
|
static |
Definition at line 149 of file GISelValueTracking.cpp.
References llvm::BitWidth, llvm::APInt::getBitsSetFrom(), llvm::APInt::getLimitedValue(), llvm::APInt::getLowBitsSet(), llvm::KnownBits::getMaxValue(), llvm::KnownBits::getMinValue(), and llvm::KnownBits::lshr().
| INITIALIZE_PASS | ( | GISelValueTrackingAnalysisLegacy | , |
| DEBUG_TYPE | , | ||
| "Analysis for ComputingKnownBits" | , | ||
| false | , | ||
| true | ) |
Definition at line 49 of file GISelValueTracking.cpp.
References DEBUG_TYPE, DL, and getFunction().
|
static |
Return true if this value is known to be the fractional part x - floor(x), which lies in [0, 1).
This implies the value cannot introduce overflow in a fmul when the other operand is known finite.
Definition at line 907 of file GISelValueTracking.cpp.
References llvm::MIPatternMatch::m_DeferredReg(), llvm::MIPatternMatch::m_GFFloor(), llvm::MIPatternMatch::m_GFSub(), llvm::MIPatternMatch::m_Reg(), and llvm::MIPatternMatch::mi_match().