|
LLVM 23.0.0git
|
#include "llvm/CodeGen/GlobalISel/Utils.h"#include "llvm/ADT/APFloat.h"#include "llvm/ADT/APInt.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/CodeGen/CodeGenCommonISel.h"#include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h"#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/LostDebugLocObserver.h"#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/LowLevelTypeUtils.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/MachineSizeOpts.h"#include "llvm/CodeGen/RegisterBankInfo.h"#include "llvm/CodeGen/StackProtector.h"#include "llvm/CodeGen/TargetInstrInfo.h"#include "llvm/CodeGen/TargetLowering.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/CodeGen/TargetPassConfig.h"#include "llvm/CodeGen/TargetRegisterInfo.h"#include "llvm/IR/Constants.h"#include "llvm/Support/UndefPoison.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Transforms/Utils/SizeOpts.h"#include <limits>#include <numeric>#include <optional>#include <tuple>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "globalisel-utils" |
| bool canCreatePoison | ( | Register | Reg, |
| const MachineRegisterInfo & | MRI, | ||
| bool | ConsiderFlagsAndMetadata = true ) |
Definition at line 1960 of file Utils.cpp.
References llvm::PoisonOnly, and Reg.
|
static |
Definition at line 1798 of file Utils.cpp.
References llvm::cast(), llvm::dyn_cast(), llvm::LLT::getElementCount(), llvm::getIConstantVRegValWithLookThrough(), llvm::GExtractVectorElement::getIndexReg(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::GShuffleVector::getMask(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getType(), llvm::GExtractVectorElement::getVectorReg(), llvm::MachineRegisterInfo::getVRegDef(), llvm::includesPoison(), llvm::is_contained(), llvm::isa(), Reg, and shiftAmountKnownInRange().
|
static |
Definition at line 2087 of file Utils.cpp.
References llvm::TargetLoweringBase::allowsMisalignedMemoryAccesses(), assert(), llvm::bit_floor(), llvm::CallingConv::Fast, llvm::getMVTForLLT(), llvm::TargetLoweringBase::getOptimalMemOpLLT(), llvm::LLT::getSizeInBits(), llvm::LLT::getSizeInBytes(), llvm::LLT::integer(), llvm::LLT::isVector(), llvm::MachineMemOperand::MONone, and Size.
Referenced by llvm::canLowerMemCpyFamily().
|
static |
Definition at line 801 of file Utils.cpp.
References llvm::getOpcodeDef(), and Reg.
Referenced by llvm::ConstantFoldVectorBinop().
Definition at line 1317 of file Utils.cpp.
Referenced by llvm::getVectorSplat(), and llvm::isConstantOrConstantVector().
|
static |
Definition at line 1473 of file Utils.cpp.
References MI.
Referenced by llvm::isConstantOrConstantVector().
|
static |
Definition at line 1905 of file Utils.cpp.
References llvm::all_of(), llvm::canCreateUndefOrPoison(), llvm::cast(), llvm::Depth, llvm::GMergeLikeInstr::getNumSources(), llvm::MachineInstr::getOpcode(), llvm::GMergeLikeInstr::getSourceReg(), llvm::MachineRegisterInfo::getVRegDef(), I, llvm::includesUndef(), llvm::isGuaranteedNotToBeUndefOrPoison(), llvm::MaxAnalysisRecursionDepth, Reg, and llvm::MachineInstr::uses().
|
static |
Definition at line 237 of file Utils.cpp.
References llvm::DS_Error, llvm::Enable, llvm::MachineFunction::getName(), llvm::MachineFunction::getTarget(), llvm::TargetOptions::GlobalISelAbort, MORE, llvm::TargetMachine::Options, and llvm::reportFatalUsageError().
Referenced by llvm::reportGISelFailure(), and llvm::reportGISelWarning().
|
static |
Shifts return poison if shiftwidth is larger than the bitwidth.
Definition at line 1766 of file Utils.cpp.
References llvm::getIConstantVRegValWithLookThrough(), llvm::GMergeLikeInstr::getNumSources(), llvm::getOpcodeDef(), llvm::GMergeLikeInstr::getSourceReg(), llvm::MachineRegisterInfo::getType(), and I.
Referenced by canCreateUndefOrPoison().