Lines Matching +full:isa +full:- +full:base

1 //===-- llvm/IntrinsicInst.h - Intrinsic Instruction Wrappers ---*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // functions with the isa/dyncast family of functions. In particular, this
14 // ... MCI->getDest() ... MCI->getSource() ...
21 //===----------------------------------------------------------------------===//
46 /// This allows the standard isa/dyncast/cast functionality to work with calls
56 return getCalledFunction()->getIntrinsicID();
129 /// Methods for support type inquiry through isa, cast, and dyn_cast:
131 if (const Function *CF = I->getCalledFunction())
132 return CF->isIntrinsic();
136 return isa<CallInst>(V) && classof(cast<CallInst>(V));
151 /// This is the common base class for lifetime intrinsics.
157 return isLifetimeIntrinsic(I->getIntrinsicID());
160 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
178 /// This is the common base class for debug info intrinsics.
184 return isDbgInfoIntrinsic(I->getIntrinsicID());
187 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
211 ValueAsMetadata *VAM = isa<ValueAsMetadata *>(I)
214 return VAM->getValue();
217 ValueAsMetadata *VAM = isa<ValueAsMetadata *>(I)
220 return VAM->getValue();
223 if (isa<ValueAsMetadata *>(I))
229 location_op_iterator &operator--() {
230 if (isa<ValueAsMetadata *>(I))
231 I = cast<ValueAsMetadata *>(I) - 1;
233 I = cast<ValueAsMetadata **>(I) - 1;
250 assert(isa<ValueAsMetadata>(RawLocation) || isa<DIArgList>(RawLocation) ||
251 (isa<MDNode>(RawLocation) &&
252 !cast<MDNode>(RawLocation)->getNumOperands()));
262 return cast<DIArgList>(getRawLocation())->getArgs().size();
265 bool hasArgList() const { return isa<DIArgList>(getRawLocation()); }
268 // Non-variadic: empty metadata.
269 if (!hasArgList() && isa<MDNode>(getRawLocation()))
272 if (getNumVariableLocationOps() == 0 && !Expression->isComplex())
274 // Variadic and non-variadic: Interpret expressions using undef or poison
276 return any_of(location_ops(), [](Value *V) { return isa<UndefValue>(V); });
305 /// This is the common base class for debug info intrinsics for variables.
325 setArgOperand(1, MetadataAsValue::get(NewVar->getContext(), NewVar));
329 setArgOperand(2, MetadataAsValue::get(NewExpr->getContext(), NewExpr));
352 Value *Poison = PoisonValue::get(OldValue->getType());
370 return cast<MetadataAsValue>(getArgOperand(0))->getMetadata();
378 return cast<MetadataAsValue>(getArgOperand(1))->getMetadata();
382 return cast<MetadataAsValue>(getArgOperand(2))->getMetadata();
398 return getExpression()->getFragmentInfo();
403 /// known, otherwise return a zero-sized fragment.
409 if (auto Frag = getExpression()->getFragmentInfo())
410 VariableSlice.OffsetInBits = Frag->OffsetInBits;
417 switch (I->getIntrinsicID()) {
427 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
449 return I->getIntrinsicID() == Intrinsic::dbg_declare;
452 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
472 return I->getIntrinsicID() == Intrinsic::dbg_value ||
473 I->getIntrinsicID() == Intrinsic::dbg_assign;
476 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
495 return cast<MetadataAsValue>(getArgOperand(OpAddress))->getMetadata();
498 return cast<MetadataAsValue>(getArgOperand(OpAssignID))->getMetadata();
502 return cast<MetadataAsValue>(getArgOperand(OpAddressExpr))->getMetadata();
509 MetadataAsValue::get(NewExpr->getContext(), NewExpr));
524 return I->getIntrinsicID() == Intrinsic::dbg_assign;
527 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
541 return cast<MetadataAsValue>(getArgOperand(0))->getMetadata();
544 /// Methods for support type inquiry through isa, cast, and dyn_cast:
547 return I->getIntrinsicID() == Intrinsic::dbg_label;
550 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
555 /// This is the common base class for vector predication intrinsics.
607 // Methods for support type inquiry through isa, cast, and dyn_cast:
609 return isVPIntrinsic(I->getIntrinsicID());
612 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
615 // Equivalent non-predicated opcode
620 // Equivalent non-predicated intrinsic ID
625 // Equivalent non-predicated constrained ID
630 // Equivalent non-predicated opcode
633 // Equivalent non-predicated intrinsic ID
637 // Equivalent non-predicated constrained ID
653 /// Methods for support type inquiry through isa, cast, and dyn_cast:
656 return VPReductionIntrinsic::isVPReduction(I->getIntrinsicID());
659 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
668 /// Methods for support type inquiry through isa, cast, and dyn_cast:
671 return VPCastIntrinsic::isVPCast(I->getIntrinsicID());
674 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
685 /// Methods for support type inquiry through isa, cast, and dyn_cast:
688 return VPCmpIntrinsic::isVPCmp(I->getIntrinsicID());
691 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
700 /// Methods for support type inquiry through isa, cast, and dyn_cast:
703 return VPBinOpIntrinsic::isVPBinOp(I->getIntrinsicID());
706 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
712 /// This is the common base class for constrained floating point intrinsics.
720 // Methods for support type inquiry through isa, cast, and dyn_cast:
723 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
735 // Methods for support type inquiry through isa, cast, and dyn_cast:
737 switch (I->getIntrinsicID()) {
746 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
754 switch (I->getIntrinsicID()) {
765 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
800 /// Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values,
818 /// Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values,
825 /// Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values,
830 Ty, getSaturationPoint(ID, Ty->getScalarSizeInBits()));
833 /// Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values,
845 switch (I->getIntrinsicID()) {
854 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
883 switch (I->getIntrinsicID()) {
900 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
920 switch (I->getIntrinsicID()) {
933 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
941 switch (I->getIntrinsicID()) {
952 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
956 /// Common base class for all memory intrinsics. Simply provides
958 /// Written as CRTP to avoid a common base class amongst the
980 Value *getDest() const { return getRawDest()->stripPointerCasts(); }
983 return cast<PointerType>(getRawDest()->getType())->getAddressSpace();
991 return MA->value();
998 assert(getRawDest()->getType() == Ptr->getType() &&
1016 assert(getLength()->getType() == L->getType() &&
1022 /// Common base class for all memory transfer intrinsics. Simply provides
1041 Value *getSource() const { return getRawSource()->stripPointerCasts(); }
1044 return cast<PointerType>(getRawSource()->getType())->getAddressSpace();
1052 return MA->value();
1061 assert(getRawSource()->getType() == Ptr->getType() &&
1080 /// Common base class for all memset intrinsics. Simply provides
1094 assert(getValue()->getType() == Val->getType() &&
1100 // The common base class for the atomic memset/memmove/memcpy intrinsics
1116 return getElementSizeInBytesCst()->getZExtValue();
1120 assert(V->getType() == Type::getInt8Ty(getContext()) &&
1126 switch (I->getIntrinsicID()) {
1136 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1145 return I->getIntrinsicID() == Intrinsic::memset_element_unordered_atomic;
1148 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1157 switch (I->getIntrinsicID()) {
1166 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1175 return I->getIntrinsicID() == Intrinsic::memcpy_element_unordered_atomic;
1178 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1187 return I->getIntrinsicID() == Intrinsic::memmove_element_unordered_atomic;
1190 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1194 /// This is the common base class for memset/memcpy/memmove.
1204 bool isVolatile() const { return !getVolatileCst()->isZero(); }
1208 // Methods for support type inquiry through isa, cast, and dyn_cast:
1210 switch (I->getIntrinsicID()) {
1222 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1229 // Methods for support type inquiry through isa, cast, and dyn_cast:
1231 switch (I->getIntrinsicID()) {
1240 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1247 // Methods for support type inquiry through isa, cast, and dyn_cast:
1249 return I->getIntrinsicID() == Intrinsic::memset_inline;
1252 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1259 // Methods for support type inquiry through isa, cast, and dyn_cast:
1261 switch (I->getIntrinsicID()) {
1271 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1278 // Methods for support type inquiry through isa, cast, and dyn_cast:
1280 return I->getIntrinsicID() == Intrinsic::memcpy ||
1281 I->getIntrinsicID() == Intrinsic::memcpy_inline;
1284 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1291 // Methods for support type inquiry through isa, cast, and dyn_cast:
1293 return I->getIntrinsicID() == Intrinsic::memmove;
1296 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1303 // Methods for support type inquiry through isa, cast, and dyn_cast:
1305 return I->getIntrinsicID() == Intrinsic::memcpy_inline;
1308 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1312 // The common base class for any memset/memmove/memcpy intrinsics;
1313 // whether they be atomic or non-atomic.
1319 // Only the non-atomic intrinsics can be volatile
1321 return MI->isVolatile();
1326 switch (I->getIntrinsicID()) {
1341 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1351 switch (I->getIntrinsicID()) {
1361 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1371 switch (I->getIntrinsicID()) {
1383 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1393 switch (I->getIntrinsicID()) {
1403 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1413 switch (I->getIntrinsicID()) {
1422 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1430 return I->getIntrinsicID() == Intrinsic::vastart;
1433 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1443 return I->getIntrinsicID() == Intrinsic::vaend;
1446 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1456 return I->getIntrinsicID() == Intrinsic::vacopy;
1459 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1466 /// A base class for all instrprof intrinsics.
1499 const_cast<Value *>(getArgOperand(0))->stripPointerCasts());
1507 /// A base class for all instrprof counter intrinsics.
1526 return I->getIntrinsicID() == Intrinsic::instrprof_cover;
1529 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1537 return I->getIntrinsicID() == Intrinsic::instrprof_increment ||
1538 I->getIntrinsicID() == Intrinsic::instrprof_increment_step;
1541 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1550 return I->getIntrinsicID() == Intrinsic::instrprof_increment_step;
1553 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1564 return I->getIntrinsicID() == Intrinsic::instrprof_callsite;
1567 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1576 return I->getIntrinsicID() == Intrinsic::instrprof_timestamp;
1579 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1587 return I->getIntrinsicID() == Intrinsic::instrprof_value_profile;
1590 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1607 /// A base class for instrprof mcdc intrinsics that require global bitmap bytes.
1614 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1626 return alignTo(getNumBitmapBits()->getZExtValue(), CHAR_BIT) / CHAR_BIT;
1634 return I->getIntrinsicID() == Intrinsic::instrprof_mcdc_parameters;
1637 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1645 return I->getIntrinsicID() == Intrinsic::instrprof_mcdc_tvbitmap_update;
1648 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1667 return I->getIntrinsicID() == Intrinsic::pseudoprobe;
1671 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1694 return I->getIntrinsicID() == Intrinsic::experimental_noalias_scope_decl;
1698 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1704 return cast<MDNode>(MV->getMetadata());
1713 /// Common base class for representing values projected from a statepoint.
1718 return I->getIntrinsicID() == Intrinsic::experimental_gc_relocate ||
1719 I->getIntrinsicID() == Intrinsic::experimental_gc_result;
1723 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1731 return isa<LandingPadInst>(Token) || isa<InvokeInst>(Token);
1742 return I->getIntrinsicID() == Intrinsic::experimental_gc_relocate;
1746 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1750 /// which contains the base pointer of the pointer whose
1753 return cast<ConstantInt>(getArgOperand(1))->getZExtValue();
1759 return cast<ConstantInt>(getArgOperand(2))->getZExtValue();
1770 return I->getIntrinsicID() == Intrinsic::experimental_gc_result;
1774 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1783 return I->getIntrinsicID() == Intrinsic::assume;
1786 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
1806 return isConvergenceControlIntrinsic(I->getIntrinsicID());
1810 return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));