Home | History | Annotate | Download | only in GlobalISel

Lines Matching refs:Res

63   MachineInstrBuilder buildBinaryOp(unsigned Opcode, unsigned Res, unsigned Op0, unsigned Op1);
207 /// Build and insert \p Res<def> = G_FRAME_INDEX \p Idx
213 /// \pre \p Res must be a generic virtual register with pointer type.
216 MachineInstrBuilder buildFrameIndex(unsigned Res, int Idx);
218 /// Build and insert \p Res<def> = G_GLOBAL_VALUE \p GV
221 /// into \p Res.
224 /// \pre \p Res must be a generic virtual register with pointer type
228 MachineInstrBuilder buildGlobalValue(unsigned Res, const GlobalValue *GV);
230 /// Build and insert \p Res<def> = G_ADD \p Op0, \p Op1
232 /// G_ADD sets \p Res to the sum of integer parameters \p Op0 and \p Op1,
236 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
240 MachineInstrBuilder buildAdd(unsigned Res, unsigned Op0,
244 unsigned Res = getDestFromArg(Ty);
245 return buildAdd(Res, (getRegFromArg(UseArgs))...);
248 /// Build and insert \p Res<def> = G_SUB \p Op0, \p Op1
250 /// G_SUB sets \p Res to the sum of integer parameters \p Op0 and \p Op1,
254 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
258 MachineInstrBuilder buildSub(unsigned Res, unsigned Op0,
261 /// Build and insert \p Res<def> = G_MUL \p Op0, \p Op1
263 /// G_MUL sets \p Res to the sum of integer parameters \p Op0 and \p Op1,
267 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
271 MachineInstrBuilder buildMul(unsigned Res, unsigned Op0,
274 /// Build and insert \p Res<def> = G_GEP \p Op0, \p Op1
277 /// storing the resulting pointer in \p Res.
280 /// \pre \p Res and \p Op0 must be generic virtual registers with pointer
285 MachineInstrBuilder buildGEP(unsigned Res, unsigned Op0,
288 /// Materialize and insert \p Res<def> = G_GEP \p Op0, (G_CONSTANT \p Value)
291 /// storing the resulting pointer in \p Res. If \p Value is zero then no
293 /// \p Res.
298 /// \pre \p Res must be 0. This is to detect confusion between
300 /// \post \p Res will either be a new generic virtual register of the same
304 Optional<MachineInstrBuilder> materializeGEP(unsigned &Res, unsigned Op0,
308 /// Build and insert \p Res<def> = G_PTR_MASK \p Op0, \p NumBits
315 /// \pre \p Res and \p Op0 must be generic virtual registers with pointer
321 MachineInstrBuilder buildPtrMask(unsigned Res, unsigned Op0,
324 /// Build and insert \p Res<def>, \p CarryOut<def> = G_UADDE \p Op0,
327 /// G_UADDE sets \p Res to \p Op0 + \p Op1 + \p CarryIn (truncated to the bit
332 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
338 MachineInstrBuilder buildUAdde(unsigned Res, unsigned CarryOut, unsigned Op0,
341 /// Build and insert \p Res<def> = G_AND \p Op0, \p Op1
343 /// G_AND sets \p Res to the bitwise and of integer parameters \p Op0 and \p
347 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
355 MachineInstrBuilder buildAnd(unsigned Res, unsigned Op0,
358 /// Build and insert \p Res<def> = G_OR \p Op0, \p Op1
360 /// G_OR sets \p Res to the bitwise or of integer parameters \p Op0 and \p
364 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
368 MachineInstrBuilder buildOr(unsigned Res, unsigned Op0, unsigned Op1);
370 /// Build and insert \p Res<def> = G_ANYEXT \p Op0
378 /// \pre \p Res must be a generic virtual register with scalar or vector type.
380 /// \pre \p Op must be smaller than \p Res
384 MachineInstrBuilder buildAnyExt(unsigned Res, unsigned Op);
386 MachineInstrBuilder buildAnyExt(DstType &&Res, ArgType &&Arg) {
387 return buildAnyExt(getDestFromArg(Res), getRegFromArg(Arg));
390 /// Build and insert \p Res<def> = G_SEXT \p Op
397 /// \pre \p Res must be a generic virtual register with scalar or vector type.
399 /// \pre \p Op must be smaller than \p Res
402 MachineInstrBuilder buildSExt(unsigned Res, unsigned Op);
404 /// Build and insert \p Res<def> = G_ZEXT \p Op
411 /// \pre \p Res must be a generic virtual register with scalar or vector type.
413 /// \pre \p Op must be smaller than \p Res
416 MachineInstrBuilder buildZExt(unsigned Res, unsigned Op);
418 /// Build and insert \p Res<def> = G_SEXT \p Op, \p Res = G_TRUNC \p Op, or
419 /// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
422 /// \pre \p Res must be a generic virtual register with scalar or vector type.
426 MachineInstrBuilder buildSExtOrTrunc(unsigned Res, unsigned Op);
428 /// Build and insert \p Res<def> = G_ZEXT \p Op, \p Res = G_TRUNC \p Op, or
429 /// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
432 /// \pre \p Res must be a generic virtual register with scalar or vector type.
436 MachineInstrBuilder buildZExtOrTrunc(unsigned Res, unsigned Op);
438 // Build and insert \p Res<def> = G_ANYEXT \p Op, \p Res = G_TRUNC \p Op, or
439 /// \p Res = COPY \p Op depending on the differing sizes of \p Res and \p Op.
442 /// \pre \p Res must be a generic virtual register with scalar or vector type.
450 MachineInstrBuilder buildAnyExtOrTrunc(unsigned Res, unsigned Op);
452 /// Build and insert \p Res<def> = \p ExtOpc, \p Res = G_TRUNC \p
453 /// Op, or \p Res = COPY \p Op depending on the differing sizes of \p Res and
457 /// \pre \p Res must be a generic virtual register with scalar or vector type.
461 MachineInstrBuilder buildExtOrTrunc(unsigned ExtOpc, unsigned Res,
500 /// Build and insert \p Res = G_CONSTANT \p Val
506 /// \pre \p Res must be a generic virtual register with scalar or pointer
510 MachineInstrBuilder buildConstant(unsigned Res, const ConstantInt &Val);
512 /// Build and insert \p Res = G_CONSTANT \p Val
517 /// \pre \p Res must be a generic virtual register with scalar type.
520 MachineInstrBuilder buildConstant(unsigned Res, int64_t Val);
523 MachineInstrBuilder buildConstant(DstType &&Res, int64_t Val) {
524 return buildConstant(getDestFromArg(Res), Val);
526 /// Build and insert \p Res = G_FCONSTANT \p Val
532 /// \pre \p Res must be a generic virtual register with scalar type.
535 MachineInstrBuilder buildFConstant(unsigned Res, const ConstantFP &Val);
537 /// Build and insert \p Res<def> = COPY Op
539 /// Register-to-register COPY sets \p Res to \p Op.
544 MachineInstrBuilder buildCopy(unsigned Res, unsigned Op);
546 MachineInstrBuilder buildCopy(DstType &&Res, SrcType &&Src) {
547 return buildCopy(getDestFromArg(Res), getRegFromArg(Src));
550 /// Build and insert `Res<def> = G_LOAD Addr, MMO`.
552 /// Loads the value stored at \p Addr. Puts the result in \p Res.
555 /// \pre \p Res must be a generic virtual register.
559 MachineInstrBuilder buildLoad(unsigned Res, unsigned Addr,
577 /// \pre \p Res and \p Src must be generic virtual registers.
580 MachineInstrBuilder buildExtract(unsigned Res, unsigned Src, uint64_t Index);
582 /// Build and insert \p Res = IMPLICIT_DEF.
589 /// \p Res then a G_MERGE_VALUES will be produced. Otherwise an IMPLICIT_DEF
598 void buildSequence(unsigned Res, ArrayRef<unsigned> Ops,
601 /// Build and insert \p Res<def> = G_MERGE_VALUES \p Op0, ...
607 /// \pre The entire register \p Res (and no more) must be covered by the input
612 MachineInstrBuilder buildMerge(unsigned Res, ArrayRef<unsigned> Ops);
619 /// \pre The entire register \p Res (and no more) must be covered by the input
621 /// \pre The type of all \p Res registers must be identical.
624 MachineInstrBuilder buildUnmerge(ArrayRef<unsigned> Res, unsigned Op);
626 MachineInstrBuilder buildInsert(unsigned Res, unsigned Src,
639 MachineInstrBuilder buildIntrinsic(Intrinsic::ID ID, unsigned Res,
642 /// Build and insert \p Res<def> = G_FPTRUNC \p Op
647 /// \pre \p Res must be a generic virtual register with scalar or vector type.
649 /// \pre \p Res must be smaller than \p Op
652 MachineInstrBuilder buildFPTrunc(unsigned Res, unsigned Op);
654 /// Build and insert \p Res<def> = G_TRUNC \p Op
660 /// \pre \p Res must be a generic virtual register with scalar or vector type.
662 /// \pre \p Res must be smaller than \p Op
665 MachineInstrBuilder buildTrunc(unsigned Res, unsigned Op);
667 MachineInstrBuilder buildTrunc(DstType &&Res, SrcType &&Src) {
668 return buildTrunc(getDestFromArg(Res), getRegFromArg(Src));
671 /// Build and insert a \p Res = G_ICMP \p Pred, \p Op0, \p Op1
675 /// \pre \p Res must be a generic virtual register with scalar or
678 /// same number of elements as \p Res. If \p Res is a scalar,
684 unsigned Res, unsigned Op0, unsigned Op1);
686 /// Build and insert a \p Res = G_FCMP \p Pred\p Op0, \p Op1
690 /// \pre \p Res must be a generic virtual register with scalar or
693 /// same number of elements as \p Res (or scalar, if \p Res is
699 unsigned Res, unsigned Op0, unsigned Op1);
701 /// Build and insert a \p Res = G_SELECT \p Tst, \p Op0, \p Op1
704 /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers
711 MachineInstrBuilder buildSelect(unsigned Res, unsigned Tst,
714 /// Build and insert \p Res<def> = G_INSERT_VECTOR_ELT \p Val,
718 /// \pre \p Res and \p Val must be a generic virtual register
724 MachineInstrBuilder buildInsertVectorElement(unsigned Res, unsigned Val,
727 /// Build and insert \p Res<def> = G_EXTRACT_VECTOR_ELT \p Val, \p Idx
730 /// \pre \p Res must be a generic virtual register with scalar type.
735 MachineInstrBuilder buildExtractVectorElement(unsigned Res, unsigned Val,