Lines Matching refs:Res

134 MachineInstrBuilder MachineIRBuilder::buildDynStackAlloc(const DstOp &Res,  in buildDynStackAlloc()  argument
137 assert(Res.getLLTTy(*getMRI()).isPointer() && "expected ptr dst type"); in buildDynStackAlloc()
139 Res.addDefToMIB(*getMRI(), MIB); in buildDynStackAlloc()
145 MachineInstrBuilder MachineIRBuilder::buildFrameIndex(const DstOp &Res, in buildFrameIndex() argument
147 assert(Res.getLLTTy(*getMRI()).isPointer() && "invalid operand type"); in buildFrameIndex()
149 Res.addDefToMIB(*getMRI(), MIB); in buildFrameIndex()
154 MachineInstrBuilder MachineIRBuilder::buildGlobalValue(const DstOp &Res, in buildGlobalValue() argument
156 assert(Res.getLLTTy(*getMRI()).isPointer() && "invalid operand type"); in buildGlobalValue()
157 assert(Res.getLLTTy(*getMRI()).getAddressSpace() == in buildGlobalValue()
162 Res.addDefToMIB(*getMRI(), MIB); in buildGlobalValue()
167 MachineInstrBuilder MachineIRBuilder::buildConstantPool(const DstOp &Res, in buildConstantPool() argument
169 assert(Res.getLLTTy(*getMRI()).isPointer() && "invalid operand type"); in buildConstantPool()
171 Res.addDefToMIB(*getMRI(), MIB); in buildConstantPool()
182 void MachineIRBuilder::validateUnaryOp(const LLT Res, const LLT Op0) { in validateUnaryOp() argument
183 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateUnaryOp()
184 assert((Res == Op0) && "type mismatch"); in validateUnaryOp()
187 void MachineIRBuilder::validateBinaryOp(const LLT Res, const LLT Op0, in validateBinaryOp() argument
189 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateBinaryOp()
190 assert((Res == Op0 && Res == Op1) && "type mismatch"); in validateBinaryOp()
193 void MachineIRBuilder::validateShiftOp(const LLT Res, const LLT Op0, in validateShiftOp() argument
195 assert((Res.isScalar() || Res.isVector()) && "invalid operand type"); in validateShiftOp()
196 assert((Res == Op0) && "type mismatch"); in validateShiftOp()
200 MachineIRBuilder::buildPtrAdd(const DstOp &Res, const SrcOp &Op0, in buildPtrAdd() argument
202 assert(Res.getLLTTy(*getMRI()).getScalarType().isPointer() && in buildPtrAdd()
203 Res.getLLTTy(*getMRI()) == Op0.getLLTTy(*getMRI()) && "type mismatch"); in buildPtrAdd()
206 return buildInstr(TargetOpcode::G_PTR_ADD, {Res}, {Op0, Op1}, Flags); in buildPtrAdd()
210 MachineIRBuilder::materializePtrAdd(Register &Res, Register Op0, in materializePtrAdd() argument
212 assert(Res == 0 && "Res is a result argument"); in materializePtrAdd()
216 Res = Op0; in materializePtrAdd()
220 Res = getMRI()->createGenericVirtualRegister(getMRI()->getType(Op0)); in materializePtrAdd()
222 return buildPtrAdd(Res, Op0, Cst.getReg(0)); in materializePtrAdd()
225 MachineInstrBuilder MachineIRBuilder::buildMaskLowPtrBits(const DstOp &Res, in buildMaskLowPtrBits() argument
228 LLT PtrTy = Res.getLLTTy(*getMRI()); in buildMaskLowPtrBits()
232 return buildPtrMask(Res, Op0, MaskReg); in buildMaskLowPtrBits()
236 MachineIRBuilder::buildPadVectorWithUndefElements(const DstOp &Res, in buildPadVectorWithUndefElements() argument
238 LLT ResTy = Res.getLLTTy(*getMRI()); in buildPadVectorWithUndefElements()
263 return buildMergeLikeInstr(Res, Regs); in buildPadVectorWithUndefElements()
267 MachineIRBuilder::buildDeleteTrailingVectorElements(const DstOp &Res, in buildDeleteTrailingVectorElements() argument
269 LLT ResTy = Res.getLLTTy(*getMRI()); in buildDeleteTrailingVectorElements()
282 return buildMergeLikeInstr(Res, Regs); in buildDeleteTrailingVectorElements()
305 MachineInstrBuilder MachineIRBuilder::buildCopy(const DstOp &Res, in buildCopy() argument
307 return buildInstr(TargetOpcode::COPY, Res, Op); in buildCopy()
310 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
312 LLT Ty = Res.getLLTTy(*getMRI()); in buildConstant()
324 return buildSplatVector(Res, Const); in buildConstant()
329 Res.addDefToMIB(*getMRI(), Const); in buildConstant()
334 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
337 Res.getLLTTy(*getMRI()).getScalarSizeInBits()); in buildConstant()
339 return buildConstant(Res, *CI); in buildConstant()
342 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
344 LLT Ty = Res.getLLTTy(*getMRI()); in buildFConstant()
361 return buildSplatVector(Res, Const); in buildFConstant()
366 Res.addDefToMIB(*getMRI(), Const); in buildFConstant()
371 MachineInstrBuilder MachineIRBuilder::buildConstant(const DstOp &Res, in buildConstant() argument
374 return buildConstant(Res, *CI); in buildConstant()
377 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
379 LLT DstTy = Res.getLLTTy(*getMRI()); in buildFConstant()
383 return buildFConstant(Res, *CFP); in buildFConstant()
386 MachineInstrBuilder MachineIRBuilder::buildFConstant(const DstOp &Res, in buildFConstant() argument
390 return buildFConstant(Res, *CFP); in buildFConstant()
418 const DstOp &Res, in buildLoadInstr() argument
421 assert(Res.getLLTTy(*getMRI()).isValid() && "invalid operand type"); in buildLoadInstr()
425 Res.addDefToMIB(*getMRI(), MIB); in buildLoadInstr()
475 MachineInstrBuilder MachineIRBuilder::buildAnyExt(const DstOp &Res, in buildAnyExt() argument
477 return buildInstr(TargetOpcode::G_ANYEXT, Res, Op); in buildAnyExt()
480 MachineInstrBuilder MachineIRBuilder::buildSExt(const DstOp &Res, in buildSExt() argument
482 return buildInstr(TargetOpcode::G_SEXT, Res, Op); in buildSExt()
485 MachineInstrBuilder MachineIRBuilder::buildZExt(const DstOp &Res, in buildZExt() argument
487 return buildInstr(TargetOpcode::G_ZEXT, Res, Op); in buildZExt()
502 MachineInstrBuilder MachineIRBuilder::buildBoolExt(const DstOp &Res, in buildBoolExt() argument
506 return buildInstr(ExtOp, Res, Op); in buildBoolExt()
509 MachineInstrBuilder MachineIRBuilder::buildBoolExtInReg(const DstOp &Res, in buildBoolExtInReg() argument
516 return buildSExtInReg(Res, Op, 1); in buildBoolExtInReg()
518 return buildZExtInReg(Res, Op, 1); in buildBoolExtInReg()
520 return buildCopy(Res, Op); in buildBoolExtInReg()
527 const DstOp &Res, in buildExtOrTrunc() argument
532 assert(Res.getLLTTy(*getMRI()).isScalar() || in buildExtOrTrunc()
533 Res.getLLTTy(*getMRI()).isVector()); in buildExtOrTrunc()
534 assert(Res.getLLTTy(*getMRI()).isScalar() == in buildExtOrTrunc()
538 if (Res.getLLTTy(*getMRI()).getSizeInBits() > in buildExtOrTrunc()
541 else if (Res.getLLTTy(*getMRI()).getSizeInBits() < in buildExtOrTrunc()
545 assert(Res.getLLTTy(*getMRI()) == Op.getLLTTy(*getMRI())); in buildExtOrTrunc()
547 return buildInstr(Opcode, Res, Op); in buildExtOrTrunc()
550 MachineInstrBuilder MachineIRBuilder::buildSExtOrTrunc(const DstOp &Res, in buildSExtOrTrunc() argument
552 return buildExtOrTrunc(TargetOpcode::G_SEXT, Res, Op); in buildSExtOrTrunc()
555 MachineInstrBuilder MachineIRBuilder::buildZExtOrTrunc(const DstOp &Res, in buildZExtOrTrunc() argument
557 return buildExtOrTrunc(TargetOpcode::G_ZEXT, Res, Op); in buildZExtOrTrunc()
560 MachineInstrBuilder MachineIRBuilder::buildAnyExtOrTrunc(const DstOp &Res, in buildAnyExtOrTrunc() argument
562 return buildExtOrTrunc(TargetOpcode::G_ANYEXT, Res, Op); in buildAnyExtOrTrunc()
565 MachineInstrBuilder MachineIRBuilder::buildZExtInReg(const DstOp &Res, in buildZExtInReg() argument
568 LLT ResTy = Res.getLLTTy(*getMRI()); in buildZExtInReg()
571 return buildAnd(Res, Op, Mask); in buildZExtInReg()
619 MachineInstrBuilder MachineIRBuilder::buildUndef(const DstOp &Res) { in buildUndef() argument
620 return buildInstr(TargetOpcode::G_IMPLICIT_DEF, {Res}, {}); in buildUndef()
623 MachineInstrBuilder MachineIRBuilder::buildMergeValues(const DstOp &Res, in buildMergeValues() argument
630 return buildInstr(TargetOpcode::G_MERGE_VALUES, Res, TmpVec); in buildMergeValues()
634 MachineIRBuilder::buildMergeLikeInstr(const DstOp &Res, in buildMergeLikeInstr() argument
641 return buildInstr(getOpcodeForMerge(Res, TmpVec), Res, TmpVec); in buildMergeLikeInstr()
645 MachineIRBuilder::buildMergeLikeInstr(const DstOp &Res, in buildMergeLikeInstr() argument
648 return buildInstr(getOpcodeForMerge(Res, Ops), Res, Ops); in buildMergeLikeInstr()
662 MachineInstrBuilder MachineIRBuilder::buildUnmerge(ArrayRef<LLT> Res, in buildUnmerge() argument
667 SmallVector<DstOp, 8> TmpVec(Res.begin(), Res.end()); in buildUnmerge()
672 MachineInstrBuilder MachineIRBuilder::buildUnmerge(LLT Res, in buildUnmerge() argument
674 unsigned NumReg = Op.getLLTTy(*getMRI()).getSizeInBits() / Res.getSizeInBits(); in buildUnmerge()
675 SmallVector<DstOp, 8> TmpVec(NumReg, Res); in buildUnmerge()
679 MachineInstrBuilder MachineIRBuilder::buildUnmerge(ArrayRef<Register> Res, in buildUnmerge() argument
684 SmallVector<DstOp, 8> TmpVec(Res.begin(), Res.end()); in buildUnmerge()
689 MachineInstrBuilder MachineIRBuilder::buildBuildVector(const DstOp &Res, in buildBuildVector() argument
695 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildBuildVector()
699 MachineIRBuilder::buildBuildVectorConstant(const DstOp &Res, in buildBuildVectorConstant() argument
703 LLT EltTy = Res.getLLTTy(*getMRI()).getElementType(); in buildBuildVectorConstant()
706 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildBuildVectorConstant()
709 MachineInstrBuilder MachineIRBuilder::buildSplatVector(const DstOp &Res, in buildSplatVector() argument
711 SmallVector<SrcOp, 8> TmpVec(Res.getLLTTy(*getMRI()).getNumElements(), Src); in buildSplatVector()
712 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildSplatVector()
716 MachineIRBuilder::buildBuildVectorTrunc(const DstOp &Res, in buildBuildVectorTrunc() argument
723 Res.getLLTTy(*getMRI()).getElementType().getSizeInBits()) in buildBuildVectorTrunc()
724 return buildInstr(TargetOpcode::G_BUILD_VECTOR, Res, TmpVec); in buildBuildVectorTrunc()
725 return buildInstr(TargetOpcode::G_BUILD_VECTOR_TRUNC, Res, TmpVec); in buildBuildVectorTrunc()
728 MachineInstrBuilder MachineIRBuilder::buildShuffleSplat(const DstOp &Res, in buildShuffleSplat() argument
730 LLT DstTy = Res.getLLTTy(*getMRI()); in buildShuffleSplat()
740 MachineInstrBuilder MachineIRBuilder::buildShuffleVector(const DstOp &Res, in buildShuffleVector() argument
744 LLT DstTy = Res.getLLTTy(*getMRI()); in buildShuffleVector()
755 return buildInstr(TargetOpcode::G_SHUFFLE_VECTOR, {Res}, {Src1, Src2}) in buildShuffleVector()
760 MachineIRBuilder::buildConcatVectors(const DstOp &Res, ArrayRef<Register> Ops) { in buildConcatVectors() argument
765 return buildInstr(TargetOpcode::G_CONCAT_VECTORS, Res, TmpVec); in buildConcatVectors()
768 MachineInstrBuilder MachineIRBuilder::buildInsert(const DstOp &Res, in buildInsert() argument
773 Res.getLLTTy(*getMRI()).getSizeInBits() && in buildInsert()
776 if (Res.getLLTTy(*getMRI()).getSizeInBits() == in buildInsert()
778 return buildCast(Res, Op); in buildInsert()
781 return buildInstr(TargetOpcode::G_INSERT, Res, {Src, Op, uint64_t(Index)}); in buildInsert()
833 MachineInstrBuilder MachineIRBuilder::buildTrunc(const DstOp &Res, in buildTrunc() argument
835 return buildInstr(TargetOpcode::G_TRUNC, Res, Op); in buildTrunc()
839 MachineIRBuilder::buildFPTrunc(const DstOp &Res, const SrcOp &Op, in buildFPTrunc() argument
841 return buildInstr(TargetOpcode::G_FPTRUNC, Res, Op, Flags); in buildFPTrunc()
845 const DstOp &Res, in buildICmp() argument
848 return buildInstr(TargetOpcode::G_ICMP, Res, {Pred, Op0, Op1}); in buildICmp()
852 const DstOp &Res, in buildFCmp() argument
857 return buildInstr(TargetOpcode::G_FCMP, Res, {Pred, Op0, Op1}, Flags); in buildFCmp()
861 MachineIRBuilder::buildSelect(const DstOp &Res, const SrcOp &Tst, in buildSelect() argument
865 return buildInstr(TargetOpcode::G_SELECT, {Res}, {Tst, Op0, Op1}, Flags); in buildSelect()
869 MachineIRBuilder::buildInsertVectorElement(const DstOp &Res, const SrcOp &Val, in buildInsertVectorElement() argument
871 return buildInstr(TargetOpcode::G_INSERT_VECTOR_ELT, Res, {Val, Elt, Idx}); in buildInsertVectorElement()
875 MachineIRBuilder::buildExtractVectorElement(const DstOp &Res, const SrcOp &Val, in buildExtractVectorElement() argument
877 return buildInstr(TargetOpcode::G_EXTRACT_VECTOR_ELT, Res, {Val, Idx}); in buildExtractVectorElement()
1073 MachineIRBuilder::buildBlockAddress(Register Res, const BlockAddress *BA) { in buildBlockAddress() argument
1075 assert(getMRI()->getType(Res).isPointer() && "invalid res type"); in buildBlockAddress()
1078 return buildInstr(TargetOpcode::G_BLOCK_ADDR).addDef(Res).addBlockAddress(BA); in buildBlockAddress()