class LegalizerHelper
Declaration
class LegalizerHelper { /* full declaration omitted */ };
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:46
Member Variables
- public llvm::MachineIRBuilder& MIRBuilder
- Expose MIRBuilder so clients can set their own RecordInsertInstruction functions
- public llvm::GISelChangeObserver& Observer
- To keep track of changes made by the LegalizerHelper.
- private llvm::MachineRegisterInfo& MRI
- private const llvm::LegalizerInfo& LI
- private const llvm::TargetLowering& TLI
Method Overview
- public LegalizerHelper(llvm::MachineFunction & MF, llvm::GISelChangeObserver & Observer, llvm::MachineIRBuilder & B)
- public LegalizerHelper(llvm::MachineFunction & MF, const llvm::LegalizerInfo & LI, llvm::GISelChangeObserver & Observer, llvm::MachineIRBuilder & B)
- private void appendVectorElts(SmallVectorImpl<llvm::Register> & Elts, llvm::Register Reg)
- public llvm::LegalizerHelper::LegalizeResult bitcast(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public void bitcastDst(llvm::MachineInstr & MI, llvm::LLT CastTy, unsigned int OpIdx)
- public llvm::LegalizerHelper::LegalizeResult bitcastExtractVectorElt(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT CastTy)
- public llvm::LegalizerHelper::LegalizeResult bitcastInsertVectorElt(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT CastTy)
- public void bitcastSrc(llvm::MachineInstr & MI, llvm::LLT CastTy, unsigned int OpIdx)
- private llvm::LLT buildLCMMergePieces(llvm::LLT DstTy, llvm::LLT NarrowTy, llvm::LLT GCDTy, SmallVectorImpl<llvm::Register> & VRegs, unsigned int PadStrategy = TargetOpcode::G_ANYEXT)
- private void buildWidenedRemergeToDst(llvm::Register DstReg, llvm::LLT LCMTy, ArrayRef<llvm::Register> RemergeRegs)
- private void changeOpcode(llvm::MachineInstr & MI, unsigned int NewOpcode)
- public llvm::Register coerceToScalar(llvm::Register Val)
- public llvm::MachineInstrBuilder createStackTemporary(llvm::TypeSize Bytes, llvm::Align Alignment, llvm::MachinePointerInfo & PtrInfo)
- private llvm::LLT extractGCDType(SmallVectorImpl<llvm::Register> & Parts, llvm::LLT DstTy, llvm::LLT NarrowTy, llvm::Register SrcReg)
- private void extractGCDType(SmallVectorImpl<llvm::Register> & Parts, llvm::LLT GCDTy, llvm::Register SrcReg)
- private bool extractParts(llvm::Register Reg, llvm::LLT RegTy, llvm::LLT MainTy, llvm::LLT & LeftoverTy, SmallVectorImpl<llvm::Register> & VRegs, SmallVectorImpl<llvm::Register> & LeftoverVRegs)
- private void extractParts(llvm::Register Reg, llvm::LLT Ty, int NumParts, SmallVectorImpl<llvm::Register> & VRegs)
- private void extractVectorParts(llvm::Register Reg, unsigned int NumElst, SmallVectorImpl<llvm::Register> & VRegs)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVector(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorExtractInsertVectorElt(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorMerge(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorMultiEltType(llvm::GenericMachineInstr & MI, unsigned int NumElts, std::initializer_list<unsigned int> NonVecOpIndices = {})
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorPhi(llvm::GenericMachineInstr & MI, unsigned int NumElts)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorReductions(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorShuffle(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult fewerElementsVectorUnmergeValues(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public const llvm::LegalizerInfo & getLegalizerInfo() const
- public llvm::Align getStackTemporaryAlignment(llvm::LLT Type, llvm::Align MinAlign = llvm::Align()) const
- public const llvm::TargetLowering & getTargetLowering() const
- public llvm::Register getVectorElementPointer(llvm::Register VecPtr, llvm::LLT VecTy, llvm::Register Index)
- private void insertParts(llvm::Register DstReg, llvm::LLT ResultTy, llvm::LLT PartTy, ArrayRef<llvm::Register> PartRegs, llvm::LLT LeftoverTy = llvm::LLT(), ArrayRef<llvm::Register> LeftoverRegs = {})
- public llvm::LegalizerHelper::LegalizeResult legalizeInstrStep(llvm::MachineInstr & MI, llvm::LostDebugLocObserver & LocObserver)
- public llvm::LegalizerHelper::LegalizeResult libcall(llvm::MachineInstr & MI, llvm::LostDebugLocObserver & LocObserver)
- public llvm::LegalizerHelper::LegalizeResult lower(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult lowerAbsToAddXor(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerAbsToMaxNeg(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerAddSubSatToAddoSubo(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerAddSubSatToMinMax(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerBitCount(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerBitcast(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerBitreverse(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerBswap(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerDIVREM(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerDynStackAlloc(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerExtract(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerExtractInsertVectorElt(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFCopySign(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFFloor(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFMad(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFMinNumMaxNum(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFPOWI(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFPTOSI(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFPTOUI(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFPTRUNC(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFPTRUNC_F64_TO_F16(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFunnelShift(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFunnelShiftAsShifts(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerFunnelShiftWithInverse(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerInsert(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerIntrinsicRound(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerLoad(llvm::GAnyLoad & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerMemCpyFamily(llvm::MachineInstr & MI, unsigned int MaxLen = 0)
- private llvm::LegalizerHelper::LegalizeResult lowerMemcpy(llvm::MachineInstr & MI, llvm::Register Dst, llvm::Register Src, uint64_t KnownLen, uint64_t Limit, llvm::Align DstAlign, llvm::Align SrcAlign, bool IsVolatile)
- public llvm::LegalizerHelper::LegalizeResult lowerMemcpyInline(llvm::MachineInstr & MI)
- private llvm::LegalizerHelper::LegalizeResult lowerMemcpyInline(llvm::MachineInstr & MI, llvm::Register Dst, llvm::Register Src, uint64_t KnownLen, llvm::Align DstAlign, llvm::Align SrcAlign, bool IsVolatile)
- private llvm::LegalizerHelper::LegalizeResult lowerMemmove(llvm::MachineInstr & MI, llvm::Register Dst, llvm::Register Src, uint64_t KnownLen, llvm::Align DstAlign, llvm::Align SrcAlign, bool IsVolatile)
- private llvm::LegalizerHelper::LegalizeResult lowerMemset(llvm::MachineInstr & MI, llvm::Register Dst, llvm::Register Val, uint64_t KnownLen, llvm::Align Alignment, bool IsVolatile)
- public llvm::LegalizerHelper::LegalizeResult lowerMergeValues(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerMinMax(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerReadWriteRegister(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerRotate(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerRotateWithReverseRotate(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerSADDO_SSUBO(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerSITOFP(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerSMULH_UMULH(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerSelect(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerShlSat(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerShuffleVector(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerStore(llvm::GStore & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerU64ToF32BitOps(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerUITOFP(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerUnmergeValues(llvm::MachineInstr & MI)
- public llvm::LegalizerHelper::LegalizeResult lowerVectorReduction(llvm::MachineInstr & MI)
- private void mergeMixedSubvectors(llvm::Register DstReg, ArrayRef<llvm::Register> PartRegs)
- public llvm::LegalizerHelper::LegalizeResult moreElementsVector(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT MoreTy)
- public void moreElementsVectorDst(llvm::MachineInstr & MI, llvm::LLT MoreTy, unsigned int OpIdx)
- public llvm::LegalizerHelper::LegalizeResult moreElementsVectorPhi(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT MoreTy)
- public llvm::LegalizerHelper::LegalizeResult moreElementsVectorShuffle(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT MoreTy)
- public void moreElementsVectorSrc(llvm::MachineInstr & MI, llvm::LLT MoreTy, unsigned int OpIdx)
- private void multiplyRegisters(SmallVectorImpl<llvm::Register> & DstRegs, ArrayRef<llvm::Register> Src1Regs, ArrayRef<llvm::Register> Src2Regs, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult narrowScalar(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarAddSub(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarBasic(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarCTLZ(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarCTPOP(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarCTTZ(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public void narrowScalarDst(llvm::MachineInstr & MI, llvm::LLT NarrowTy, unsigned int OpIdx, unsigned int ExtOpcode)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarExt(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarExtract(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarFPTOI(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarInsert(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarMul(llvm::MachineInstr & MI, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarSelect(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarShift(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT Ty)
- public llvm::LegalizerHelper::LegalizeResult narrowScalarShiftByConstant(llvm::MachineInstr & MI, const llvm::APInt & Amt, llvm::LLT HalfTy, llvm::LLT ShiftAmtTy)
- public void narrowScalarSrc(llvm::MachineInstr & MI, llvm::LLT NarrowTy, unsigned int OpIdx)
- public llvm::LegalizerHelper::LegalizeResult reduceLoadStoreWidth(llvm::GLoadStore & MI, unsigned int TypeIdx, llvm::LLT NarrowTy)
- private llvm::LegalizerHelper::LegalizeResult tryNarrowPow2Reduction(llvm::MachineInstr & MI, llvm::Register SrcReg, llvm::LLT SrcTy, llvm::LLT NarrowTy, unsigned int ScalarOpc)
- public llvm::LegalizerHelper::LegalizeResult widenScalar(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- private llvm::LegalizerHelper::LegalizeResult widenScalarAddSubOverflow(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- private llvm::LegalizerHelper::LegalizeResult widenScalarAddSubShlSat(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- public void widenScalarDst(llvm::MachineInstr & MI, llvm::LLT WideTy, unsigned int OpIdx = 0, unsigned int TruncOpcode = TargetOpcode::G_TRUNC)
- private llvm::LegalizerHelper::LegalizeResult widenScalarExtract(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- private llvm::LegalizerHelper::LegalizeResult widenScalarInsert(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- private llvm::LegalizerHelper::LegalizeResult widenScalarMergeValues(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- private llvm::LegalizerHelper::LegalizeResult widenScalarMulo(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
- public void widenScalarSrc(llvm::MachineInstr & MI, llvm::LLT WideTy, unsigned int OpIdx, unsigned int ExtOpcode)
- private llvm::LegalizerHelper::LegalizeResult widenScalarUnmergeValues(llvm::MachineInstr & MI, unsigned int TypeIdx, llvm::LLT WideTy)
Methods
¶LegalizerHelper(
llvm::MachineFunction& MF,
llvm::GISelChangeObserver& Observer,
llvm::MachineIRBuilder& B)
LegalizerHelper(
llvm::MachineFunction& MF,
llvm::GISelChangeObserver& Observer,
llvm::MachineIRBuilder& B)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:78
Parameters
- llvm::MachineFunction& MF
- llvm::GISelChangeObserver& Observer
- llvm::MachineIRBuilder& B
¶LegalizerHelper(
llvm::MachineFunction& MF,
const llvm::LegalizerInfo& LI,
llvm::GISelChangeObserver& Observer,
llvm::MachineIRBuilder& B)
LegalizerHelper(
llvm::MachineFunction& MF,
const llvm::LegalizerInfo& LI,
llvm::GISelChangeObserver& Observer,
llvm::MachineIRBuilder& B)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:80
Parameters
- llvm::MachineFunction& MF
- const llvm::LegalizerInfo& LI
- llvm::GISelChangeObserver& Observer
- llvm::MachineIRBuilder& B
¶void appendVectorElts(
SmallVectorImpl<llvm::Register>& Elts,
llvm::Register Reg)
void appendVectorElts(
SmallVectorImpl<llvm::Register>& Elts,
llvm::Register Reg)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:218
Parameters
- SmallVectorImpl<llvm::Register>& Elts
- llvm::Register Reg
¶llvm::LegalizerHelper::LegalizeResult bitcast(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult bitcast(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Description
Legalize an instruction by replacing the value type
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:106
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶void bitcastDst(llvm::MachineInstr& MI,
llvm::LLT CastTy,
unsigned int OpIdx)
void bitcastDst(llvm::MachineInstr& MI,
llvm::LLT CastTy,
unsigned int OpIdx)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a def by inserting a G_BITCAST from \p CastTy
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:168
Parameters
- llvm::MachineInstr& MI
- llvm::LLT CastTy
- unsigned int OpIdx
¶llvm::LegalizerHelper::LegalizeResult
bitcastExtractVectorElt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT CastTy)
llvm::LegalizerHelper::LegalizeResult
bitcastExtractVectorElt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT CastTy)
Description
Perform Bitcast legalize action on G_EXTRACT_VECTOR_ELT.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:355
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT CastTy
¶llvm::LegalizerHelper::LegalizeResult
bitcastInsertVectorElt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT CastTy)
llvm::LegalizerHelper::LegalizeResult
bitcastInsertVectorElt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT CastTy)
Description
Perform Bitcast legalize action on G_INSERT_VECTOR_ELT.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:359
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT CastTy
¶void bitcastSrc(llvm::MachineInstr& MI,
llvm::LLT CastTy,
unsigned int OpIdx)
void bitcastSrc(llvm::MachineInstr& MI,
llvm::LLT CastTy,
unsigned int OpIdx)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a use by inserting a G_BITCAST to \p CastTy
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:164
Parameters
- llvm::MachineInstr& MI
- llvm::LLT CastTy
- unsigned int OpIdx
¶llvm::LLT buildLCMMergePieces(
llvm::LLT DstTy,
llvm::LLT NarrowTy,
llvm::LLT GCDTy,
SmallVectorImpl<llvm::Register>& VRegs,
unsigned int PadStrategy =
TargetOpcode::G_ANYEXT)
llvm::LLT buildLCMMergePieces(
llvm::LLT DstTy,
llvm::LLT NarrowTy,
llvm::LLT GCDTy,
SmallVectorImpl<llvm::Register>& VRegs,
unsigned int PadStrategy =
TargetOpcode::G_ANYEXT)
Description
Produce a merge of values in \p VRegs to define \p DstReg. Perform a merge from the least common multiple type, and convert as appropriate to \p DstReg. \p VRegs should each have type \p GCDTy. This type should be greatest common divisor type of \p DstReg, \p NarrowTy, and an undetermined source type. \p NarrowTy is the desired result merge source type. If the source value needs to be widened to evenly cover \p DstReg, inserts high bits corresponding to the extension opcode \p PadStrategy. \p VRegs will be cleared, and the the result \p NarrowTy register pieces will replace it. Returns The complete LCMTy that \p VRegs will cover when merged.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:248
Parameters
- llvm::LLT DstTy
- llvm::LLT NarrowTy
- llvm::LLT GCDTy
- SmallVectorImpl<llvm::Register>& VRegs
- unsigned int PadStrategy = TargetOpcode::G_ANYEXT
¶void buildWidenedRemergeToDst(
llvm::Register DstReg,
llvm::LLT LCMTy,
ArrayRef<llvm::Register> RemergeRegs)
void buildWidenedRemergeToDst(
llvm::Register DstReg,
llvm::LLT LCMTy,
ArrayRef<llvm::Register> RemergeRegs)
Description
Merge the values in \p RemergeRegs to an \p LCMTy typed value. Extract the low bits into \p DstReg. This is intended to use the outputs from buildLCMMergePieces after processing.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:255
Parameters
- llvm::Register DstReg
- llvm::LLT LCMTy
- ArrayRef<llvm::Register> RemergeRegs
¶void changeOpcode(llvm::MachineInstr& MI,
unsigned int NewOpcode)
void changeOpcode(llvm::MachineInstr& MI,
unsigned int NewOpcode)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:265
Parameters
- llvm::MachineInstr& MI
- unsigned int NewOpcode
¶llvm::Register coerceToScalar(llvm::Register Val)
llvm::Register coerceToScalar(llvm::Register Val)
Description
Cast the given value to an LLT::scalar with an equivalent size. Returns the register to use if an instruction was inserted. Returns the original register if no coercion was necessary.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:127
Parameters
- llvm::Register Val
¶llvm::MachineInstrBuilder createStackTemporary(
llvm::TypeSize Bytes,
llvm::Align Alignment,
llvm::MachinePointerInfo& PtrInfo)
llvm::MachineInstrBuilder createStackTemporary(
llvm::TypeSize Bytes,
llvm::Align Alignment,
llvm::MachinePointerInfo& PtrInfo)
Description
Create a stack temporary based on the size in bytes and the alignment
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:291
Parameters
- llvm::TypeSize Bytes
- llvm::Align Alignment
- llvm::MachinePointerInfo& PtrInfo
¶llvm::LLT extractGCDType(
SmallVectorImpl<llvm::Register>& Parts,
llvm::LLT DstTy,
llvm::LLT NarrowTy,
llvm::Register SrcReg)
llvm::LLT extractGCDType(
SmallVectorImpl<llvm::Register>& Parts,
llvm::LLT DstTy,
llvm::LLT NarrowTy,
llvm::Register SrcReg)
Description
Unmerge \p SrcReg into smaller sized values, and append them to \p Parts. The elements of \p Parts will be the greatest common divisor type of \p DstTy, \p NarrowTy and the type of \p SrcReg. This will compute and return the GCD type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:224
Parameters
- SmallVectorImpl<llvm::Register>& Parts
- llvm::LLT DstTy
- llvm::LLT NarrowTy
- llvm::Register SrcReg
¶void extractGCDType(
SmallVectorImpl<llvm::Register>& Parts,
llvm::LLT GCDTy,
llvm::Register SrcReg)
void extractGCDType(
SmallVectorImpl<llvm::Register>& Parts,
llvm::LLT GCDTy,
llvm::Register SrcReg)
Description
Unmerge \p SrcReg into \p GCDTy typed registers. This will append all of the unpacked registers to \p Parts. This version is if the common unmerge type is already known.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:230
Parameters
- SmallVectorImpl<llvm::Register>& Parts
- llvm::LLT GCDTy
- llvm::Register SrcReg
¶bool extractParts(
llvm::Register Reg,
llvm::LLT RegTy,
llvm::LLT MainTy,
llvm::LLT& LeftoverTy,
SmallVectorImpl<llvm::Register>& VRegs,
SmallVectorImpl<llvm::Register>&
LeftoverVRegs)
bool extractParts(
llvm::Register Reg,
llvm::LLT RegTy,
llvm::LLT MainTy,
llvm::LLT& LeftoverTy,
SmallVectorImpl<llvm::Register>& VRegs,
SmallVectorImpl<llvm::Register>&
LeftoverVRegs)
Description
Version which handles irregular splits.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:193
Parameters
- llvm::Register Reg
- llvm::LLT RegTy
- llvm::LLT MainTy
- llvm::LLT& LeftoverTy
- SmallVectorImpl<llvm::Register>& VRegs
- SmallVectorImpl<llvm::Register>& LeftoverVRegs
¶void extractParts(
llvm::Register Reg,
llvm::LLT Ty,
int NumParts,
SmallVectorImpl<llvm::Register>& VRegs)
void extractParts(
llvm::Register Reg,
llvm::LLT Ty,
int NumParts,
SmallVectorImpl<llvm::Register>& VRegs)
Description
Helper function to split a wide generic register into bitwise blocks with the given Type (which implies the number of blocks needed). The generic registers created are appended to Ops, starting at bit 0 of Reg.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:189
Parameters
- llvm::Register Reg
- llvm::LLT Ty
- int NumParts
- SmallVectorImpl<llvm::Register>& VRegs
¶void extractVectorParts(
llvm::Register Reg,
unsigned int NumElst,
SmallVectorImpl<llvm::Register>& VRegs)
void extractVectorParts(
llvm::Register Reg,
unsigned int NumElst,
SmallVectorImpl<llvm::Register>& VRegs)
Description
Version which handles irregular sub-vector splits.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:199
Parameters
- llvm::Register Reg
- unsigned int NumElst
- SmallVectorImpl<llvm::Register>& VRegs
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVector(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVector(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Description
Legalize a vector instruction by splitting into multiple components, each acting on the same scalar type as the original but with fewer elements.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:114
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorExtractInsertVectorElt(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorExtractInsertVectorElt(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:323
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorMerge(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorMerge(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:321
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorMultiEltType(
llvm::GenericMachineInstr& MI,
unsigned int NumElts,
std::initializer_list<unsigned int>
NonVecOpIndices = {})
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorMultiEltType(
llvm::GenericMachineInstr& MI,
unsigned int NumElts,
std::initializer_list<unsigned int>
NonVecOpIndices = {})
Description
Handles most opcodes. Split \p MI into same instruction on sub-vectors or scalars with \p NumElts elements (1 for scalar). Supports uneven splits: there can be leftover sub-vector with fewer then \p NumElts or a leftover scalar. To avoid this use moreElements first and set MI number of elements to multiple of \p NumElts. Non-vector operands that should be used on all sub-instructions without split are listed in \p NonVecOpIndices.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:306
Parameters
- llvm::GenericMachineInstr& MI
- unsigned int NumElts
- std::initializer_list<unsigned int> NonVecOpIndices = {}
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorPhi(
llvm::GenericMachineInstr& MI,
unsigned int NumElts)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorPhi(
llvm::GenericMachineInstr& MI,
unsigned int NumElts)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:310
Parameters
- llvm::GenericMachineInstr& MI
- unsigned int NumElts
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorReductions(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorReductions(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:333
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorShuffle(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorShuffle(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:336
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorUnmergeValues(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
fewerElementsVectorUnmergeValues(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:318
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶const llvm::LegalizerInfo& getLegalizerInfo()
const
const llvm::LegalizerInfo& getLegalizerInfo()
const
Description
Expose LegalizerInfo so the clients can re-use.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:75
¶llvm::Align getStackTemporaryAlignment(
llvm::LLT Type,
llvm::Align MinAlign = llvm::Align()) const
llvm::Align getStackTemporaryAlignment(
llvm::LLT Type,
llvm::Align MinAlign = llvm::Align()) const
Description
Return the alignment to use for a stack temporary object with the given type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:288
Parameters
- llvm::LLT Type
- llvm::Align MinAlign = llvm::Align()
¶const llvm::TargetLowering& getTargetLowering()
const
const llvm::TargetLowering& getTargetLowering()
const
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:76
¶llvm::Register getVectorElementPointer(
llvm::Register VecPtr,
llvm::LLT VecTy,
llvm::Register Index)
llvm::Register getVectorElementPointer(
llvm::Register VecPtr,
llvm::LLT VecTy,
llvm::Register Index)
Description
Get a pointer to vector element \p Index located in memory for a vector of type \p VecTy starting at a base address of \p VecPtr. If \p Index is out of bounds the returned pointer is unspecified, but will be within the vector bounds.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:298
Parameters
- llvm::Register VecPtr
- llvm::LLT VecTy
- llvm::Register Index
¶void insertParts(
llvm::Register DstReg,
llvm::LLT ResultTy,
llvm::LLT PartTy,
ArrayRef<llvm::Register> PartRegs,
llvm::LLT LeftoverTy = llvm::LLT(),
ArrayRef<llvm::Register> LeftoverRegs = {})
void insertParts(
llvm::Register DstReg,
llvm::LLT ResultTy,
llvm::LLT PartTy,
ArrayRef<llvm::Register> PartRegs,
llvm::LLT LeftoverTy = llvm::LLT(),
ArrayRef<llvm::Register> LeftoverRegs = {})
Description
Helper function to build a wide generic register \p DstReg of type \p RegTy from smaller parts. This will produce a G_MERGE_VALUES, G_BUILD_VECTOR, G_CONCAT_VECTORS, or sequence of G_INSERT as appropriate for the types. \p PartRegs must be registers of type \p PartTy. If \p ResultTy does not evenly break into \p PartTy sized pieces, the remainder must be specified with \p LeftoverRegs of type \p LeftoverTy.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:211
Parameters
- llvm::Register DstReg
- llvm::LLT ResultTy
- llvm::LLT PartTy
- ArrayRef<llvm::Register> PartRegs
- llvm::LLT LeftoverTy = llvm::LLT()
- ArrayRef<llvm::Register> LeftoverRegs = {}
¶llvm::LegalizerHelper::LegalizeResult
legalizeInstrStep(
llvm::MachineInstr& MI,
llvm::LostDebugLocObserver& LocObserver)
llvm::LegalizerHelper::LegalizeResult
legalizeInstrStep(
llvm::MachineInstr& MI,
llvm::LostDebugLocObserver& LocObserver)
Description
Replace \p MI by a sequence of legal instructions that can implement the same operation. Note that this means \p MI may be deleted, so any iterator steps should be performed before calling this function. \p Helper should be initialized to the MachineFunction containing \p MI. Considered as an opaque blob, the legal code will use and define the same registers as \p MI.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:90
Parameters
- llvm::MachineInstr& MI
- llvm::LostDebugLocObserver& LocObserver
¶llvm::LegalizerHelper::LegalizeResult libcall(
llvm::MachineInstr& MI,
llvm::LostDebugLocObserver& LocObserver)
llvm::LegalizerHelper::LegalizeResult libcall(
llvm::MachineInstr& MI,
llvm::LostDebugLocObserver& LocObserver)
Description
Legalize an instruction by emiting a runtime library call instead.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:94
Parameters
- llvm::MachineInstr& MI
- llvm::LostDebugLocObserver& LocObserver
¶llvm::LegalizerHelper::LegalizeResult lower(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult lower(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Description
Legalize an instruction by splitting it into simpler parts, hopefully understood by the target.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:110
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
lowerAbsToAddXor(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerAbsToAddXor(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:405
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerAbsToMaxNeg(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerAbsToMaxNeg(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:406
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerAddSubSatToAddoSubo(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerAddSubSatToAddoSubo(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:397
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerAddSubSatToMinMax(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerAddSubSatToMinMax(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:396
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerBitCount(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerBitCount(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:365
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerBitcast(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerBitcast(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:362
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerBitreverse(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerBitreverse(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:400
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerBswap(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerBswap(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:399
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerDIVREM(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerDIVREM(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:404
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerDynStackAlloc(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerDynStackAlloc(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:392
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerExtract(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerExtract(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:393
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerExtractInsertVectorElt(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerExtractInsertVectorElt(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:390
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFCopySign(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFCopySign(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:383
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerFFloor(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerFFloor(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:387
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerFMad(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerFMad(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:385
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFMinNumMaxNum(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFMinNumMaxNum(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:384
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerFPOWI(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerFPOWI(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:380
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerFPTOSI(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerFPTOSI(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:376
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerFPTOUI(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerFPTOUI(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:375
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFPTRUNC(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFPTRUNC(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:379
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFPTRUNC_F64_TO_F16(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFPTRUNC_F64_TO_F16(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:378
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFunnelShift(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFunnelShift(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:368
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFunnelShiftAsShifts(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFunnelShiftAsShifts(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:367
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerFunnelShiftWithInverse(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerFunnelShiftWithInverse(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:366
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerInsert(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerInsert(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:394
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerIntrinsicRound(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerIntrinsicRound(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:386
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerLoad(
llvm::GAnyLoad& MI)
llvm::LegalizerHelper::LegalizeResult lowerLoad(
llvm::GAnyLoad& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:363
Parameters
- llvm::GAnyLoad& MI
¶llvm::LegalizerHelper::LegalizeResult
lowerMemCpyFamily(llvm::MachineInstr& MI,
unsigned int MaxLen = 0)
llvm::LegalizerHelper::LegalizeResult
lowerMemCpyFamily(llvm::MachineInstr& MI,
unsigned int MaxLen = 0)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:409
Parameters
- llvm::MachineInstr& MI
- unsigned int MaxLen = 0
¶llvm::LegalizerHelper::LegalizeResult lowerMemcpy(
llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
uint64_t Limit,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
llvm::LegalizerHelper::LegalizeResult lowerMemcpy(
llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
uint64_t Limit,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:278
Parameters
- llvm::MachineInstr& MI
- llvm::Register Dst
- llvm::Register Src
- uint64_t KnownLen
- uint64_t Limit
- llvm::Align DstAlign
- llvm::Align SrcAlign
- bool IsVolatile
¶llvm::LegalizerHelper::LegalizeResult
lowerMemcpyInline(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerMemcpyInline(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:408
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerMemcpyInline(llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
llvm::LegalizerHelper::LegalizeResult
lowerMemcpyInline(llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:275
Parameters
- llvm::MachineInstr& MI
- llvm::Register Dst
- llvm::Register Src
- uint64_t KnownLen
- llvm::Align DstAlign
- llvm::Align SrcAlign
- bool IsVolatile
¶llvm::LegalizerHelper::LegalizeResult
lowerMemmove(llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
llvm::LegalizerHelper::LegalizeResult
lowerMemmove(llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Src,
uint64_t KnownLen,
llvm::Align DstAlign,
llvm::Align SrcAlign,
bool IsVolatile)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:281
Parameters
- llvm::MachineInstr& MI
- llvm::Register Dst
- llvm::Register Src
- uint64_t KnownLen
- llvm::Align DstAlign
- llvm::Align SrcAlign
- bool IsVolatile
¶llvm::LegalizerHelper::LegalizeResult lowerMemset(
llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Val,
uint64_t KnownLen,
llvm::Align Alignment,
bool IsVolatile)
llvm::LegalizerHelper::LegalizeResult lowerMemset(
llvm::MachineInstr& MI,
llvm::Register Dst,
llvm::Register Val,
uint64_t KnownLen,
llvm::Align Alignment,
bool IsVolatile)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:272
Parameters
- llvm::MachineInstr& MI
- llvm::Register Dst
- llvm::Register Val
- uint64_t KnownLen
- llvm::Align Alignment
- bool IsVolatile
¶llvm::LegalizerHelper::LegalizeResult
lowerMergeValues(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerMergeValues(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:388
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerMinMax(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerMinMax(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:382
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerReadWriteRegister(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerReadWriteRegister(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:401
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerRotate(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerRotate(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:370
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerRotateWithReverseRotate(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerRotateWithReverseRotate(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:369
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerSADDO_SSUBO(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerSADDO_SSUBO(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:395
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerSITOFP(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerSITOFP(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:374
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerSMULH_UMULH(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerSMULH_UMULH(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:402
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerSelect(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerSelect(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:403
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerShlSat(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerShlSat(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:398
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerShuffleVector(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerShuffleVector(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:391
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerStore(
llvm::GStore& MI)
llvm::LegalizerHelper::LegalizeResult lowerStore(
llvm::GStore& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:364
Parameters
- llvm::GStore& MI
¶llvm::LegalizerHelper::LegalizeResult
lowerU64ToF32BitOps(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerU64ToF32BitOps(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:372
Parameters
¶llvm::LegalizerHelper::LegalizeResult lowerUITOFP(
llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult lowerUITOFP(
llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:373
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerUnmergeValues(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerUnmergeValues(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:389
Parameters
¶llvm::LegalizerHelper::LegalizeResult
lowerVectorReduction(llvm::MachineInstr& MI)
llvm::LegalizerHelper::LegalizeResult
lowerVectorReduction(llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:407
Parameters
¶void mergeMixedSubvectors(
llvm::Register DstReg,
ArrayRef<llvm::Register> PartRegs)
void mergeMixedSubvectors(
llvm::Register DstReg,
ArrayRef<llvm::Register> PartRegs)
Description
Merge \p PartRegs with different types into \p DstReg.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:216
Parameters
- llvm::Register DstReg
- ArrayRef<llvm::Register> PartRegs
¶llvm::LegalizerHelper::LegalizeResult
moreElementsVector(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
llvm::LegalizerHelper::LegalizeResult
moreElementsVector(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
Description
Legalize a vector instruction by increasing the number of vector elements involved and ignoring the added elements later.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:119
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT MoreTy
¶void moreElementsVectorDst(llvm::MachineInstr& MI,
llvm::LLT MoreTy,
unsigned int OpIdx)
void moreElementsVectorDst(llvm::MachineInstr& MI,
llvm::LLT MoreTy,
unsigned int OpIdx)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a Def by performing it with additional vector elements and extracting the result elements, and replacing the vreg of the operand in place.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:155
Parameters
- llvm::MachineInstr& MI
- llvm::LLT MoreTy
- unsigned int OpIdx
¶llvm::LegalizerHelper::LegalizeResult
moreElementsVectorPhi(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
llvm::LegalizerHelper::LegalizeResult
moreElementsVectorPhi(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:313
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT MoreTy
¶llvm::LegalizerHelper::LegalizeResult
moreElementsVectorShuffle(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
llvm::LegalizerHelper::LegalizeResult
moreElementsVectorShuffle(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT MoreTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:315
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT MoreTy
¶void moreElementsVectorSrc(llvm::MachineInstr& MI,
llvm::LLT MoreTy,
unsigned int OpIdx)
void moreElementsVectorSrc(llvm::MachineInstr& MI,
llvm::LLT MoreTy,
unsigned int OpIdx)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a Use by producing a vector with undefined high elements, extracting the original vector type, and replacing the vreg of the operand in place.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:160
Parameters
- llvm::MachineInstr& MI
- llvm::LLT MoreTy
- unsigned int OpIdx
¶void multiplyRegisters(
SmallVectorImpl<llvm::Register>& DstRegs,
ArrayRef<llvm::Register> Src1Regs,
ArrayRef<llvm::Register> Src2Regs,
llvm::LLT NarrowTy)
void multiplyRegisters(
SmallVectorImpl<llvm::Register>& DstRegs,
ArrayRef<llvm::Register> Src1Regs,
ArrayRef<llvm::Register> Src2Regs,
llvm::LLT NarrowTy)
Description
Perform generic multiplication of values held in multiple registers. Generated instructions use only types NarrowTy and i1. Destination can be same or two times size of the source.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:261
Parameters
- SmallVectorImpl<llvm::Register>& DstRegs
- ArrayRef<llvm::Register> Src1Regs
- ArrayRef<llvm::Register> Src2Regs
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
narrowScalar(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
narrowScalar(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Description
Legalize an instruction by reducing the width of the underlying scalar type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:98
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarAddSub(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
narrowScalarAddSub(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:340
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarBasic(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarBasic(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:347
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarCTLZ(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarCTLZ(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:350
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarCTPOP(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarCTPOP(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:352
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarCTTZ(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarCTTZ(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:351
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶void narrowScalarDst(llvm::MachineInstr& MI,
llvm::LLT NarrowTy,
unsigned int OpIdx,
unsigned int ExtOpcode)
void narrowScalarDst(llvm::MachineInstr& MI,
llvm::LLT NarrowTy,
unsigned int OpIdx,
unsigned int ExtOpcode)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:150
Parameters
- llvm::MachineInstr& MI
- llvm::LLT NarrowTy
- unsigned int OpIdx
- unsigned int ExtOpcode
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarExt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarExt(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:348
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarExtract(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarExtract(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:344
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarFPTOI(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarFPTOI(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:343
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarInsert(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarInsert(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:345
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarMul(llvm::MachineInstr& MI,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarMul(llvm::MachineInstr& MI,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:342
Parameters
- llvm::MachineInstr& MI
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarSelect(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarSelect(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:349
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarShift(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
llvm::LegalizerHelper::LegalizeResult
narrowScalarShift(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT Ty)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:339
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT Ty
¶llvm::LegalizerHelper::LegalizeResult
narrowScalarShiftByConstant(
llvm::MachineInstr& MI,
const llvm::APInt& Amt,
llvm::LLT HalfTy,
llvm::LLT ShiftAmtTy)
llvm::LegalizerHelper::LegalizeResult
narrowScalarShiftByConstant(
llvm::MachineInstr& MI,
const llvm::APInt& Amt,
llvm::LLT HalfTy,
llvm::LLT ShiftAmtTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:330
Parameters
- llvm::MachineInstr& MI
- const llvm::APInt& Amt
- llvm::LLT HalfTy
- llvm::LLT ShiftAmtTy
¶void narrowScalarSrc(llvm::MachineInstr& MI,
llvm::LLT NarrowTy,
unsigned int OpIdx)
void narrowScalarSrc(llvm::MachineInstr& MI,
llvm::LLT NarrowTy,
unsigned int OpIdx)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a Use by truncating the operand's type to \p NarrowTy using G_TRUNC, and replacing the vreg of the operand in place.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:139
Parameters
- llvm::MachineInstr& MI
- llvm::LLT NarrowTy
- unsigned int OpIdx
¶llvm::LegalizerHelper::LegalizeResult
reduceLoadStoreWidth(llvm::GLoadStore& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
llvm::LegalizerHelper::LegalizeResult
reduceLoadStoreWidth(llvm::GLoadStore& MI,
unsigned int TypeIdx,
llvm::LLT NarrowTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:327
Parameters
- llvm::GLoadStore& MI
- unsigned int TypeIdx
- llvm::LLT NarrowTy
¶llvm::LegalizerHelper::LegalizeResult
tryNarrowPow2Reduction(llvm::MachineInstr& MI,
llvm::Register SrcReg,
llvm::LLT SrcTy,
llvm::LLT NarrowTy,
unsigned int ScalarOpc)
llvm::LegalizerHelper::LegalizeResult
tryNarrowPow2Reduction(llvm::MachineInstr& MI,
llvm::Register SrcReg,
llvm::LLT SrcTy,
llvm::LLT NarrowTy,
unsigned int ScalarOpc)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:267
Parameters
- llvm::MachineInstr& MI
- llvm::Register SrcReg
- llvm::LLT SrcTy
- llvm::LLT NarrowTy
- unsigned int ScalarOpc
¶llvm::LegalizerHelper::LegalizeResult widenScalar(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult widenScalar(
llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Description
Legalize an instruction by performing the operation on a wider scalar type (for example a 16-bit addition can be safely performed at 32-bits precision, ignoring the unused bits).
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:103
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶llvm::LegalizerHelper::LegalizeResult
widenScalarAddSubOverflow(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarAddSubOverflow(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:179
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶llvm::LegalizerHelper::LegalizeResult
widenScalarAddSubShlSat(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarAddSubShlSat(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:181
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶void widenScalarDst(llvm::MachineInstr& MI,
llvm::LLT WideTy,
unsigned int OpIdx = 0,
unsigned int TruncOpcode =
TargetOpcode::G_TRUNC)
void widenScalarDst(llvm::MachineInstr& MI,
llvm::LLT WideTy,
unsigned int OpIdx = 0,
unsigned int TruncOpcode =
TargetOpcode::G_TRUNC)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a Def by extending the operand's type to \p WideTy and truncating it back with the \p TruncOpcode, and replacing the vreg of the operand in place.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:144
Parameters
- llvm::MachineInstr& MI
- llvm::LLT WideTy
- unsigned int OpIdx = 0
- unsigned int TruncOpcode = TargetOpcode::G_TRUNC
¶llvm::LegalizerHelper::LegalizeResult
widenScalarExtract(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarExtract(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:176
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶llvm::LegalizerHelper::LegalizeResult
widenScalarInsert(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarInsert(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:178
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶llvm::LegalizerHelper::LegalizeResult
widenScalarMergeValues(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarMergeValues(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:172
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶llvm::LegalizerHelper::LegalizeResult
widenScalarMulo(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarMulo(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:183
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy
¶void widenScalarSrc(llvm::MachineInstr& MI,
llvm::LLT WideTy,
unsigned int OpIdx,
unsigned int ExtOpcode)
void widenScalarSrc(llvm::MachineInstr& MI,
llvm::LLT WideTy,
unsigned int OpIdx,
unsigned int ExtOpcode)
Description
Legalize a single operand \p OpIdx of the machine instruction \p MI as a Use by extending the operand's type to \p WideTy using the specified \p ExtOpcode for the extension instruction, and replacing the vreg of the operand in place.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:133
Parameters
- llvm::MachineInstr& MI
- llvm::LLT WideTy
- unsigned int OpIdx
- unsigned int ExtOpcode
¶llvm::LegalizerHelper::LegalizeResult
widenScalarUnmergeValues(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
llvm::LegalizerHelper::LegalizeResult
widenScalarUnmergeValues(llvm::MachineInstr& MI,
unsigned int TypeIdx,
llvm::LLT WideTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h:174
Parameters
- llvm::MachineInstr& MI
- unsigned int TypeIdx
- llvm::LLT WideTy