27#define DEBUG_TYPE "gi-combiner"
40 assert(
Merge->getNumSources() == 2 &&
"Unexpected number of operands");
55 B.buildAnyExt(Dst,
Merge->getSourceReg(0));
83 B.buildZExt(Dst,
Merge->getSourceReg(0));
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...
Implement a low-level type suitable for MachineInstr level instruction selection.
This file declares the MachineIRBuilder class.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
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