Lines Matching refs:Res

124 MachineInstrBuilder MachineIRBuilder::buildDynStackAlloc(const DstOp &Res,  in buildDynStackAlloc()  argument
127 assert(Res.getLLTTy(*getMRI()).isPointer() && "expected ptr dst type"); in buildDynStackAlloc()
129 Res.addDefToMIB(*getMRI(), MIB); in buildDynStackAlloc()
135 MachineInstrBuilder MachineIRBuilder::buildFrameIndex(const DstOp &Res, in buildFrameIndex() argument
137 assert(Res.getLLTTy(*getMRI()).isPointer() && "invalid operand type"); in buildFrameIndex()
139 Res.addDefToMIB(*getMRI(), MIB); in buildFrameIndex()
144 MachineInstrBuilder MachineIRBuilder::buildGlobalValue(const DstOp &Res, in buildGlobalValue() argument
146 assert(Res.getLLTTy(*getMRI()).isPointer() && "invalid operand type"); in buildGlobalValue()
147 assert(Res.getLLTTy(*getMRI()).getAddressSpace() == in buildGlobalValue()
152 Res.addDefToMIB(*getMRI(), MIB); in buildGlobalValue()
163 void MachineIRBuilder::validateUnaryOp(const LLT Res, const LLT Op0) { in validateUnaryOp() argument
164 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateUnaryOp()
165 assert((Res == Op0) && "type mismatch"); in validateUnaryOp()
168 void MachineIRBuilder::validateBinaryOp(const LLT Res, const LLT Op0, in validateBinaryOp() argument
170 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateBinaryOp()
171 assert((Res == Op0 && Res == Op1) && "type mismatch"); in validateBinaryOp()
174 void MachineIRBuilder::validateShiftOp(const LLT Res, const LLT Op0, in validateShiftOp() argument
176 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateShiftOp()
177 assert((Res == Op0) && "type mismatch"); in validateShiftOp()
180 MachineInstrBuilder MachineIRBuilder::buildPtrAdd(const DstOp &Res, in buildPtrAdd() argument
183 assert(Res.getLLTTy(*getMRI()).getScalarType().isPointer() && in buildPtrAdd()
184 Res.getLLTTy(*getMRI()) == Op0.getLLTTy(*getMRI()) && "type mismatch"); in buildPtrAdd()
187 return buildInstr(TargetOpcode::G_PTR_ADD, {Res}, {Op0, Op1}); in buildPtrAdd()
191 MachineIRBuilder::materializePtrAdd(Register &Res, Register Op0, in materializePtrAdd() argument
193 assert(Res == 0 && "Res is a result argument"); in materializePtrAdd()
197 Res = Op0; in materializePtrAdd()
201 Res = getMRI()->createGenericVirtualRegister(getMRI()->getType(Op0)); in materializePtrAdd()
203 return buildPtrAdd(Res, Op0, Cst.getReg(0)); in materializePtrAdd()
206 MachineInstrBuilder MachineIRBuilder::buildMaskLowPtrBits(const DstOp &Res, in buildMaskLowPtrBits() argument
209 LLT PtrTy = Res.getLLTTy(*getMRI()); in buildMaskLowPtrBits()
213 return buildPtrMask(Res, Op0, MaskReg); in buildMaskLowPtrBits()
217 MachineIRBuilder::buildPadVectorWithUndefElements(const DstOp &Res, in buildPadVectorWithUndefElements() argument
219 LLT ResTy = Res.getLLTTy(*getMRI()); in buildPadVectorWithUndefElements()
236 return buildMerge(Res, Regs); in buildPadVectorWithUndefElements()
240 MachineIRBuilder::buildDeleteTrailingVectorElements(const DstOp &Res, in buildDeleteTrailingVectorElements() argument
242 LLT ResTy = Res.getLLTTy(*getMRI()); in buildDeleteTrailingVectorElements()
255 return buildMerge(Res, Regs); in buildDeleteTrailingVectorElements()
278 MachineInstrBuilder MachineIRBuilder::buildCopy(const DstOp &Res, in buildCopy() argument
280 return buildInstr(TargetOpcode::COPY, Res, Op); in buildCopy()
283 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
285 LLT Ty = Res.getLLTTy(*getMRI()); in buildConstant()
294 return buildSplatVector(Res, Const); in buildConstant()
299 Res.addDefToMIB(*getMRI(), Const); in buildConstant()
304 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
307 Res.getLLTTy(*getMRI()).getScalarSizeInBits()); in buildConstant()
309 return buildConstant(Res, *CI); in buildConstant()
312 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
314 LLT Ty = Res.getLLTTy(*getMRI()); in buildFConstant()
328 return buildSplatVector(Res, Const); in buildFConstant()
333 Res.addDefToMIB(*getMRI(), Const); in buildFConstant()
338 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
341 return buildConstant(Res, *CI); in buildConstant()
344 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
346 LLT DstTy = Res.getLLTTy(*getMRI()); in buildFConstant()
350 return buildFConstant(Res, *CFP); in buildFConstant()
353 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
357 return buildFConstant(Res, *CFP); in buildFConstant()
385 const DstOp &Res, in buildLoadInstr() argument
388 assert(Res.getLLTTy(*getMRI()).isValid() && "invalid operand type"); in buildLoadInstr()
392 Res.addDefToMIB(*getMRI(), MIB); in buildLoadInstr()
442 MachineInstrBuilder MachineIRBuilder::buildAnyExt(const DstOp &Res, in buildAnyExt() argument
444 return buildInstr(TargetOpcode::G_ANYEXT, Res, Op); in buildAnyExt()
447 MachineInstrBuilder MachineIRBuilder::buildSExt(const DstOp &Res, in buildSExt() argument
449 return buildInstr(TargetOpcode::G_SEXT, Res, Op); in buildSExt()
452 MachineInstrBuilder MachineIRBuilder::buildZExt(const DstOp &Res, in buildZExt() argument
454 return buildInstr(TargetOpcode::G_ZEXT, Res, Op); in buildZExt()
469 MachineInstrBuilder MachineIRBuilder::buildBoolExt(const DstOp &Res, in buildBoolExt() argument
473 return buildInstr(ExtOp, Res, Op); in buildBoolExt()
476 MachineInstrBuilder MachineIRBuilder::buildBoolExtInReg(const DstOp &Res, in buildBoolExtInReg() argument
483 return buildSExtInReg(Res, Op, 1); in buildBoolExtInReg()
485 return buildZExtInReg(Res, Op, 1); in buildBoolExtInReg()
487 return buildCopy(Res, Op); in buildBoolExtInReg()
494 const DstOp &Res, in buildExtOrTrunc() argument
499 assert(Res.getLLTTy(*getMRI()).isScalar() || in buildExtOrTrunc()
500 Res.getLLTTy(*getMRI()).isVector()); in buildExtOrTrunc()
501 assert(Res.getLLTTy(*getMRI()).isScalar() == in buildExtOrTrunc()
505 if (Res.getLLTTy(*getMRI()).getSizeInBits() > in buildExtOrTrunc()
508 else if (Res.getLLTTy(*getMRI()).getSizeInBits() < in buildExtOrTrunc()
512 assert(Res.getLLTTy(*getMRI()) == Op.getLLTTy(*getMRI())); in buildExtOrTrunc()
514 return buildInstr(Opcode, Res, Op); in buildExtOrTrunc()
517 MachineInstrBuilder MachineIRBuilder::buildSExtOrTrunc(const DstOp &Res, in buildSExtOrTrunc() argument
519 return buildExtOrTrunc(TargetOpcode::G_SEXT, Res, Op); in buildSExtOrTrunc()
522 MachineInstrBuilder MachineIRBuilder::buildZExtOrTrunc(const DstOp &Res, in buildZExtOrTrunc() argument
524 return buildExtOrTrunc(TargetOpcode::G_ZEXT, Res, Op); in buildZExtOrTrunc()
527 MachineInstrBuilder MachineIRBuilder::buildAnyExtOrTrunc(const DstOp &Res, in buildAnyExtOrTrunc() argument
529 return buildExtOrTrunc(TargetOpcode::G_ANYEXT, Res, Op); in buildAnyExtOrTrunc()
532 MachineInstrBuilder MachineIRBuilder::buildZExtInReg(const DstOp &Res, in buildZExtInReg() argument
535 LLT ResTy = Res.getLLTTy(*getMRI()); in buildZExtInReg()
538 return buildAnd(Res, Op, Mask); in buildZExtInReg()
586 MachineInstrBuilder MachineIRBuilder::buildUndef(const DstOp &Res) { in buildUndef() argument
587 return buildInstr(TargetOpcode::G_IMPLICIT_DEF, {Res}, {}); in buildUndef()
590 MachineInstrBuilder MachineIRBuilder::buildMerge(const DstOp &Res, in buildMerge() argument
597 return buildInstr(TargetOpcode::G_MERGE_VALUES, Res, TmpVec); in buildMerge()
601 MachineIRBuilder::buildMerge(const DstOp &Res, in buildMerge() argument
604 return buildInstr(TargetOpcode::G_MERGE_VALUES, Res, Ops); in buildMerge()
607 MachineInstrBuilder MachineIRBuilder::buildUnmerge(ArrayRef<LLT> Res, in buildUnmerge() argument
612 SmallVector<DstOp, 8> TmpVec(Res.begin(), Res.end()); in buildUnmerge()
617 MachineInstrBuilder MachineIRBuilder::buildUnmerge(LLT Res, in buildUnmerge() argument
619 unsigned NumReg = Op.getLLTTy(*getMRI()).getSizeInBits() / Res.getSizeInBits(); in buildUnmerge()
620 SmallVector<DstOp, 8> TmpVec(NumReg, Res); in buildUnmerge()
624 MachineInstrBuilder MachineIRBuilder::buildUnmerge(ArrayRef<Register> Res, in buildUnmerge() argument
629 SmallVector<DstOp, 8> TmpVec(Res.begin(), Res.end()); in buildUnmerge()
634 MachineInstrBuilder MachineIRBuilder::buildBuildVector(const DstOp &Res, in buildBuildVector() argument
640 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildBuildVector()
644 MachineIRBuilder::buildBuildVectorConstant(const DstOp &Res, in buildBuildVectorConstant() argument
648 LLT EltTy = Res.getLLTTy(*getMRI()).getElementType(); in buildBuildVectorConstant()
651 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildBuildVectorConstant()
654 MachineInstrBuilder MachineIRBuilder::buildSplatVector(const DstOp &Res, in buildSplatVector() argument
656 SmallVector<SrcOp, 8> TmpVec(Res.getLLTTy(*getMRI()).getNumElements(), Src); in buildSplatVector()
657 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildSplatVector()
661 MachineIRBuilder::buildBuildVectorTrunc(const DstOp &Res, in buildBuildVectorTrunc() argument
667 return buildInstr(TargetOpcode::G_BUILD_VECTOR_TRUNC, Res, TmpVec); in buildBuildVectorTrunc()
670 MachineInstrBuilder MachineIRBuilder::buildShuffleSplat(const DstOp &Res, in buildShuffleSplat() argument
672 LLT DstTy = Res.getLLTTy(*getMRI()); in buildShuffleSplat()
682 MachineInstrBuilder MachineIRBuilder::buildShuffleVector(const DstOp &Res, in buildShuffleVector() argument
686 LLT DstTy = Res.getLLTTy(*getMRI()); in buildShuffleVector()
697 return buildInstr(TargetOpcode::G_SHUFFLE_VECTOR, {Res}, {Src1, Src2}) in buildShuffleVector()
702 MachineIRBuilder::buildConcatVectors(const DstOp &Res, ArrayRef<Register> Ops) { in buildConcatVectors() argument
707 return buildInstr(TargetOpcode::G_CONCAT_VECTORS, Res, TmpVec); in buildConcatVectors()
710 MachineInstrBuilder MachineIRBuilder::buildInsert(const DstOp &Res, in buildInsert() argument
715 Res.getLLTTy(*getMRI()).getSizeInBits() && in buildInsert()
718 if (Res.getLLTTy(*getMRI()).getSizeInBits() == in buildInsert()
720 return buildCast(Res, Op); in buildInsert()
723 return buildInstr(TargetOpcode::G_INSERT, Res, {Src, Op, uint64_t(Index)}); in buildInsert()
750 MachineInstrBuilder MachineIRBuilder::buildTrunc(const DstOp &Res, in buildTrunc() argument
752 return buildInstr(TargetOpcode::G_TRUNC, Res, Op); in buildTrunc()
755 MachineInstrBuilder MachineIRBuilder::buildFPTrunc(const DstOp &Res, in buildFPTrunc() argument
758 return buildInstr(TargetOpcode::G_FPTRUNC, Res, Op, Flags); in buildFPTrunc()
762 const DstOp &Res, in buildICmp() argument
765 return buildInstr(TargetOpcode::G_ICMP, Res, {Pred, Op0, Op1}); in buildICmp()
769 const DstOp &Res, in buildFCmp() argument
774 return buildInstr(TargetOpcode::G_FCMP, Res, {Pred, Op0, Op1}, Flags); in buildFCmp()
777 MachineInstrBuilder MachineIRBuilder::buildSelect(const DstOp &Res, in buildSelect() argument
783 return buildInstr(TargetOpcode::G_SELECT, {Res}, {Tst, Op0, Op1}, Flags); in buildSelect()
787 MachineIRBuilder::buildInsertVectorElement(const DstOp &Res, const SrcOp &Val, in buildInsertVectorElement() argument
789 return buildInstr(TargetOpcode::G_INSERT_VECTOR_ELT, Res, {Val, Elt, Idx}); in buildInsertVectorElement()
793 MachineIRBuilder::buildExtractVectorElement(const DstOp &Res, const SrcOp &Val, in buildExtractVectorElement() argument
795 return buildInstr(TargetOpcode::G_EXTRACT_VECTOR_ELT, Res, {Val, Idx}); in buildExtractVectorElement()
979 MachineIRBuilder::buildBlockAddress(Register Res, const BlockAddress *BA) { in buildBlockAddress() argument
981 assert(getMRI()->getType(Res).isPointer() && "invalid res type"); in buildBlockAddress()
984 return buildInstr(TargetOpcode::G_BLOCK_ADDR).addDef(Res).addBlockAddress(BA); in buildBlockAddress()