LLVM 20.0.0git
Macros | Functions
Utils.cpp File Reference
#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/GISelKnownBits.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/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/Target/TargetMachine.h"
#include "llvm/Transforms/Utils/SizeOpts.h"
#include <numeric>
#include <optional>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "globalisel-utils"
 

Functions

static void reportGISelDiagnostic (DiagnosticSeverity Severity, MachineFunction &MF, const TargetPassConfig &TPC, MachineOptimizationRemarkEmitter &MORE, MachineOptimizationRemarkMissed &R)
 
static bool isBuildVectorOp (unsigned Opcode)
 
static bool isConstantScalar (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowFP=true, bool AllowOpaqueConstants=true)
 
static bool shiftAmountKnownInRange (Register ShiftAmount, const MachineRegisterInfo &MRI)
 Shifts return poison if shiftwidth is larger than the bitwidth.
 
static bool includesPoison (UndefPoisonKind Kind)
 
static bool includesUndef (UndefPoisonKind Kind)
 
static bool canCreateUndefOrPoison (Register Reg, const MachineRegisterInfo &MRI, bool ConsiderFlagsAndMetadata, UndefPoisonKind Kind)
 
static bool isGuaranteedNotToBeUndefOrPoison (Register Reg, const MachineRegisterInfo &MRI, unsigned Depth, UndefPoisonKind Kind)
 
bool canCreatePoison (Register Reg, const MachineRegisterInfo &MRI, bool ConsiderFlagsAndMetadata=true)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "globalisel-utils"

Definition at line 41 of file Utils.cpp.

Function Documentation

◆ canCreatePoison()

bool canCreatePoison ( Register  Reg,
const MachineRegisterInfo MRI,
bool  ConsiderFlagsAndMetadata = true 
)

Definition at line 1933 of file Utils.cpp.

References MRI, and PoisonOnly.

◆ canCreateUndefOrPoison()

static bool canCreateUndefOrPoison ( Register  Reg,
const MachineRegisterInfo MRI,
bool  ConsiderFlagsAndMetadata,
UndefPoisonKind  Kind 
)
static

◆ includesPoison()

static bool includesPoison ( UndefPoisonKind  Kind)
static

Definition at line 1768 of file Utils.cpp.

References PoisonOnly.

Referenced by canCreateUndefOrPoison().

◆ includesUndef()

static bool includesUndef ( UndefPoisonKind  Kind)
static

Definition at line 1772 of file Utils.cpp.

References UndefOnly.

Referenced by isGuaranteedNotToBeUndefOrPoison().

◆ isBuildVectorOp()

static bool isBuildVectorOp ( unsigned  Opcode)
static

Definition at line 1320 of file Utils.cpp.

Referenced by llvm::getVectorSplat(), and llvm::isConstantOrConstantVector().

◆ isConstantScalar()

static bool isConstantScalar ( const MachineInstr MI,
const MachineRegisterInfo MRI,
bool  AllowFP = true,
bool  AllowOpaqueConstants = true 
)
static

Definition at line 1451 of file Utils.cpp.

References MI.

Referenced by llvm::isConstantOrConstantVector().

◆ isGuaranteedNotToBeUndefOrPoison()

static bool isGuaranteedNotToBeUndefOrPoison ( Register  Reg,
const MachineRegisterInfo MRI,
unsigned  Depth,
UndefPoisonKind  Kind 
)
static

◆ reportGISelDiagnostic()

static void reportGISelDiagnostic ( DiagnosticSeverity  Severity,
MachineFunction MF,
const TargetPassConfig TPC,
MachineOptimizationRemarkEmitter MORE,
MachineOptimizationRemarkMissed R 
)
static

◆ shiftAmountKnownInRange()

static bool shiftAmountKnownInRange ( Register  ShiftAmount,
const MachineRegisterInfo MRI 
)
static