26#define DEBUG_TYPE "gi-combiner"
39 assert(
Merge->getNumSources() == 2 &&
"Unexpected number of operands");
54 B.buildAnyExt(Dst,
Merge->getSourceReg(0));
82 B.buildZExt(Dst,
Merge->getSourceReg(0));
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
This contains common combine transformations that may be used in a combine pass,or by the target else...
Interface for Targets to specify which operations they can successfully select and how the others sho...
This file declares the MachineIRBuilder class.
bool matchMergeXAndZero(const MachineInstr &MI, BuildFnTy &MatchInfo) const
bool matchMergeXAndUndef(const MachineInstr &MI, BuildFnTy &MatchInfo) const
MachineRegisterInfo & MRI
bool isLegalOrBeforeLegalizer(const LegalityQuery &Query) const
Represents a G_MERGE_VALUES.
Helper class to build MachineInstr.
Representation of each machine instruction.
LLT getType(Register Reg) const
Get the low-level type of Reg or LLT{} if Reg is not a generic (target independent) virtual register.
Wrapper class representing virtual and physical registers.
This is an optimization pass for GlobalISel generic memory operations.
std::function< void(MachineIRBuilder &)> BuildFnTy