26#define DEBUG_TYPE "gi-combiner"
35 LLT DstTy =
MRI.getType(Dst);
39 assert(
Merge->getNumSources() == 2 &&
"Unexpected number of operands");
54 B.buildAnyExt(Dst,
Merge->getSourceReg(0));
64 LLT DstTy =
MRI.getType(Dst);
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.
Wrapper class representing virtual and physical registers.
This is an optimization pass for GlobalISel generic memory operations.
std::function< void(MachineIRBuilder &)> BuildFnTy
decltype(auto) cast(const From &Val)
cast<X> - Return the argument parameter cast to the specified type.