Lines Matching refs:Call

543   void visitCallBase(CallBase &Call);
568 void visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call);
589 void verifySwiftErrorCall(CallBase &Call, const Value *SwiftErrorVal);
604 void verifyInlineAsmCall(const CallBase &Call);
605 void verifyStatepoint(const CallBase &Call);
624 void verifyAttachedCallBundle(const CallBase &Call,
2377 void Verifier::verifyInlineAsmCall(const CallBase &Call) { in verifyInlineAsmCall() argument
2378 const InlineAsm *IA = cast<InlineAsm>(Call.getCalledOperand()); in verifyInlineAsmCall()
2392 const Value *Arg = Call.getArgOperand(ArgNo); in verifyInlineAsmCall()
2394 "Operand for indirect constraint must have pointer type", &Call); in verifyInlineAsmCall()
2396 Check(Call.getParamElementType(ArgNo), in verifyInlineAsmCall()
2398 &Call); in verifyInlineAsmCall()
2400 Check(!Call.paramHasAttr(ArgNo, Attribute::ElementType), in verifyInlineAsmCall()
2403 &Call); in verifyInlineAsmCall()
2409 if (auto *CallBr = dyn_cast<CallBrInst>(&Call)) { in verifyInlineAsmCall()
2412 &Call); in verifyInlineAsmCall()
2415 &Call); in verifyInlineAsmCall()
2420 void Verifier::verifyStatepoint(const CallBase &Call) { in verifyStatepoint() argument
2421 assert(Call.getCalledFunction() && in verifyStatepoint()
2422 Call.getCalledFunction()->getIntrinsicID() == in verifyStatepoint()
2425 Check(!Call.doesNotAccessMemory() && !Call.onlyReadsMemory() && in verifyStatepoint()
2426 !Call.onlyAccessesArgMemory(), in verifyStatepoint()
2429 Call); in verifyStatepoint()
2432 cast<ConstantInt>(Call.getArgOperand(1))->getSExtValue(); in verifyStatepoint()
2437 Call); in verifyStatepoint()
2439 Type *TargetElemType = Call.getParamElementType(2); in verifyStatepoint()
2441 "gc.statepoint callee argument must have elementtype attribute", Call); in verifyStatepoint()
2444 "gc.statepoint callee elementtype must be function type", Call); in verifyStatepoint()
2446 const int NumCallArgs = cast<ConstantInt>(Call.getArgOperand(3))->getZExtValue(); in verifyStatepoint()
2450 Call); in verifyStatepoint()
2454 "gc.statepoint mismatch in number of vararg call args", Call); in verifyStatepoint()
2460 Call); in verifyStatepoint()
2463 "gc.statepoint mismatch in number of call args", Call); in verifyStatepoint()
2466 = cast<ConstantInt>(Call.getArgOperand(4))->getZExtValue(); in verifyStatepoint()
2468 "unknown flag used in gc.statepoint flags argument", Call); in verifyStatepoint()
2472 AttributeList Attrs = Call.getAttributes(); in verifyStatepoint()
2475 Type *ArgType = Call.getArgOperand(5 + i)->getType(); in verifyStatepoint()
2479 Call); in verifyStatepoint()
2484 "Attribute 'sret' cannot be used for vararg call arguments!", Call); in verifyStatepoint()
2490 const Value *NumTransitionArgsV = Call.getArgOperand(EndCallArgsInx + 1); in verifyStatepoint()
2494 Call); in verifyStatepoint()
2498 "gc.statepoint w/inline transition bundle is deprecated", Call); in verifyStatepoint()
2501 const Value *NumDeoptArgsV = Call.getArgOperand(EndTransitionArgsInx + 1); in verifyStatepoint()
2505 Call); in verifyStatepoint()
2508 "gc.statepoint w/inline deopt operands is deprecated", Call); in verifyStatepoint()
2511 Check(ExpectedNumArgs == (int)Call.arg_size(), in verifyStatepoint()
2512 "gc.statepoint too many arguments", Call); in verifyStatepoint()
2517 for (const User *U : Call.users()) { in verifyStatepoint()
2519 Check(UserCall, "illegal use of statepoint token", Call, U); in verifyStatepoint()
2525 Call, U); in verifyStatepoint()
2527 Check(UserCall->getArgOperand(0) == &Call, in verifyStatepoint()
2528 "gc.result connected to wrong gc.statepoint", Call, UserCall); in verifyStatepoint()
2529 } else if (isa<GCRelocateInst>(Call)) { in verifyStatepoint()
2530 Check(UserCall->getArgOperand(0) == &Call, in verifyStatepoint()
2531 "gc.relocate connected to wrong gc.statepoint", Call, UserCall); in verifyStatepoint()
3348 void Verifier::visitCallBase(CallBase &Call) { in visitCallBase() argument
3349 Check(Call.getCalledOperand()->getType()->isPointerTy(), in visitCallBase()
3350 "Called function must be a pointer!", Call); in visitCallBase()
3351 FunctionType *FTy = Call.getFunctionType(); in visitCallBase()
3355 Check(Call.arg_size() >= FTy->getNumParams(), in visitCallBase()
3356 "Called function requires more parameters than were provided!", Call); in visitCallBase()
3358 Check(Call.arg_size() == FTy->getNumParams(), in visitCallBase()
3359 "Incorrect number of arguments passed to called function!", Call); in visitCallBase()
3363 Check(Call.getArgOperand(i)->getType() == FTy->getParamType(i), in visitCallBase()
3365 Call.getArgOperand(i), FTy->getParamType(i), Call); in visitCallBase()
3367 AttributeList Attrs = Call.getAttributes(); in visitCallBase()
3369 Check(verifyAttributeCount(Attrs, Call.arg_size()), in visitCallBase()
3370 "Attribute after last parameter!", Call); in visitCallBase()
3373 dyn_cast<Function>(Call.getCalledOperand()->stripPointerCasts()); in visitCallBase()
3377 "Intrinsic called with incompatible signature", Call); in visitCallBase()
3381 auto CC = Call.getCallingConv(); in visitCallBase()
3386 Call); in visitCallBase()
3394 "Incorrect alignment of " + Message + " to called function!", Call); in visitCallBase()
3409 "speculatable attribute may not apply to call sites", Call); in visitCallBase()
3413 Check(Call.getCalledFunction()->getIntrinsicID() == in visitCallBase()
3420 verifyFunctionAttrs(FTy, Attrs, &Call, IsIntrinsic, Call.isInlineAsm()); in visitCallBase()
3425 if (Call.hasInAllocaArgument()) { in visitCallBase()
3426 Value *InAllocaArg = Call.getArgOperand(FTy->getNumParams() - 1); in visitCallBase()
3429 "inalloca argument for call has mismatched alloca", AI, Call); in visitCallBase()
3436 if (Call.paramHasAttr(i, Attribute::SwiftError)) { in visitCallBase()
3437 Value *SwiftErrorArg = Call.getArgOperand(i); in visitCallBase()
3440 "swifterror argument for call has mismatched alloca", AI, Call); in visitCallBase()
3445 SwiftErrorArg, Call); in visitCallBase()
3448 Call); in visitCallBase()
3455 "immarg may not apply only to call sites", Call.getArgOperand(i), in visitCallBase()
3456 Call); in visitCallBase()
3459 if (Call.paramHasAttr(i, Attribute::ImmArg)) { in visitCallBase()
3460 Value *ArgVal = Call.getArgOperand(i); in visitCallBase()
3462 "immarg operand has non-immediate parameter", ArgVal, Call); in visitCallBase()
3465 if (Call.paramHasAttr(i, Attribute::Preallocated)) { in visitCallBase()
3466 Value *ArgVal = Call.getArgOperand(i); in visitCallBase()
3468 Call.countOperandBundlesOfType(LLVMContext::OB_preallocated) != 0; in visitCallBase()
3469 bool isMustTail = Call.isMustTailCall(); in visitCallBase()
3473 ArgVal, Call); in visitCallBase()
3490 for (unsigned Idx = FTy->getNumParams(); Idx < Call.arg_size(); ++Idx) { in visitCallBase()
3491 Type *Ty = Call.getArgOperand(Idx)->getType(); in visitCallBase()
3493 verifyParameterAttrs(ArgAttrs, Ty, &Call); in visitCallBase()
3496 Check(!SawNest, "More than one parameter has attribute nest!", Call); in visitCallBase()
3502 Call); in visitCallBase()
3506 Call); in visitCallBase()
3512 if (!Call.getCalledFunction() || in visitCallBase()
3513 Call.getCalledFunction()->getIntrinsicID() != in visitCallBase()
3517 Call); in visitCallBase()
3520 Check(Idx == Call.arg_size() - 1, in visitCallBase()
3521 "inalloca isn't on the last argument!", Call); in visitCallBase()
3529 "Function has metadata parameter but isn't an intrinsic", Call); in visitCallBase()
3531 "Function has token parameter but isn't an intrinsic", Call); in visitCallBase()
3536 if (!Call.getCalledFunction()) { in visitCallBase()
3543 if (Function *F = Call.getCalledFunction()) in visitCallBase()
3545 visitIntrinsicCall(ID, Call); in visitCallBase()
3555 for (unsigned i = 0, e = Call.getNumOperandBundles(); i < e; ++i) { in visitCallBase()
3556 OperandBundleUse BU = Call.getOperandBundleAt(i); in visitCallBase()
3559 Check(!FoundDeoptBundle, "Multiple deopt operand bundles", Call); in visitCallBase()
3563 Call); in visitCallBase()
3566 Check(!FoundFuncletBundle, "Multiple funclet operand bundles", Call); in visitCallBase()
3569 "Expected exactly one funclet bundle operand", Call); in visitCallBase()
3572 Call); in visitCallBase()
3575 Call); in visitCallBase()
3578 "Expected exactly one cfguardtarget bundle operand", Call); in visitCallBase()
3580 Check(!FoundPtrauthBundle, "Multiple ptrauth operand bundles", Call); in visitCallBase()
3583 "Expected exactly two ptrauth bundle operands", Call); in visitCallBase()
3586 "Ptrauth bundle key operand must be an i32 constant", Call); in visitCallBase()
3588 "Ptrauth bundle discriminator operand must be an i64", Call); in visitCallBase()
3590 Check(!FoundKCFIBundle, "Multiple kcfi operand bundles", Call); in visitCallBase()
3593 Call); in visitCallBase()
3596 "Kcfi bundle operand must be an i32 constant", Call); in visitCallBase()
3599 Call); in visitCallBase()
3602 "Expected exactly one preallocated bundle operand", Call); in visitCallBase()
3608 Call); in visitCallBase()
3610 Check(!FoundGCLiveBundle, "Multiple gc-live operand bundles", Call); in visitCallBase()
3614 "Multiple \"clang.arc.attachedcall\" operand bundles", Call); in visitCallBase()
3616 verifyAttachedCallBundle(Call, BU); in visitCallBase()
3621 Check(!(Call.getCalledFunction() && FoundPtrauthBundle), in visitCallBase()
3622 "Direct call cannot have a ptrauth bundle", Call); in visitCallBase()
3629 if (Call.getFunction()->getSubprogram() && Call.getCalledFunction() && in visitCallBase()
3630 !Call.getCalledFunction()->isInterposable() && in visitCallBase()
3631 !Call.getCalledFunction()->isDeclaration() && in visitCallBase()
3632 Call.getCalledFunction()->getSubprogram()) in visitCallBase()
3633 CheckDI(Call.getDebugLoc(), in visitCallBase()
3636 Call); in visitCallBase()
3638 if (Call.isInlineAsm()) in visitCallBase()
3639 verifyInlineAsmCall(Call); in visitCallBase()
3641 ConvergenceVerifyHelper.visit(Call); in visitCallBase()
3643 visitInstruction(Call); in visitCallBase()
4114 void Verifier::verifySwiftErrorCall(CallBase &Call, in verifySwiftErrorCall() argument
4116 for (const auto &I : llvm::enumerate(Call.args())) { in verifySwiftErrorCall()
4118 Check(Call.paramHasAttr(I.index(), Attribute::SwiftError), in verifySwiftErrorCall()
4121 SwiftErrorVal, Call); in verifySwiftErrorCall()
4141 if (auto *Call = dyn_cast<CallBase>(U)) in verifySwiftErrorValue() local
4142 verifySwiftErrorCall(*const_cast<CallBase *>(Call), SwiftErrorVal); in verifySwiftErrorValue()
5096 void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) { in visitIntrinsicCall() argument
5097 Function *IF = Call.getCalledFunction(); in visitIntrinsicCall()
5144 for (Value *V : Call.args()) { in visitIntrinsicCall()
5146 visitMetadataAsValue(*MD, Call.getCaller()); in visitIntrinsicCall()
5156 for (auto &Elem : Call.bundle_op_infos()) { in visitIntrinsicCall()
5162 "separate_storage assumptions should have 2 arguments", Call); in visitIntrinsicCall()
5163 Check(Call.getOperand(Elem.Begin)->getType()->isPointerTy() && in visitIntrinsicCall()
5164 Call.getOperand(Elem.Begin + 1)->getType()->isPointerTy(), in visitIntrinsicCall()
5166 Call); in visitIntrinsicCall()
5171 "tags must be valid attribute names", Call); in visitIntrinsicCall()
5176 "alignment assumptions should have 2 or 3 arguments", Call); in visitIntrinsicCall()
5177 Check(Call.getOperand(Elem.Begin)->getType()->isPointerTy(), in visitIntrinsicCall()
5178 "first argument should be a pointer", Call); in visitIntrinsicCall()
5179 Check(Call.getOperand(Elem.Begin + 1)->getType()->isIntegerTy(), in visitIntrinsicCall()
5180 "second argument should be an integer", Call); in visitIntrinsicCall()
5182 Check(Call.getOperand(Elem.Begin + 2)->getType()->isIntegerTy(), in visitIntrinsicCall()
5183 "third argument should be an integer if present", Call); in visitIntrinsicCall()
5186 Check(ArgCount <= 2, "too many arguments", Call); in visitIntrinsicCall()
5190 Check(ArgCount == 2, "this attribute should have 2 arguments", Call); in visitIntrinsicCall()
5191 Check(isa<ConstantInt>(Call.getOperand(Elem.Begin + 1)), in visitIntrinsicCall()
5192 "the second argument should be a constant integral value", Call); in visitIntrinsicCall()
5194 Check((ArgCount) == 1, "this attribute should have one argument", Call); in visitIntrinsicCall()
5196 Check((ArgCount) == 0, "this attribute has no argument", Call); in visitIntrinsicCall()
5202 auto *InfoArg = Call.getArgOperand(3)->stripPointerCasts(); in visitIntrinsicCall()
5216 const ConstantInt *TestMask = cast<ConstantInt>(Call.getOperand(1)); in visitIntrinsicCall()
5224 auto *MAV = dyn_cast<MetadataAsValue>(Call.getOperand(1)); in visitIntrinsicCall()
5228 Check(MD != nullptr, "missing rounding mode argument", Call); in visitIntrinsicCall()
5238 "unsupported rounding mode argument", Call); in visitIntrinsicCall()
5243 visitVPIntrinsic(cast<VPIntrinsic>(Call)); in visitIntrinsicCall()
5248 visitConstrainedFPIntrinsic(cast<ConstrainedFPIntrinsic>(Call)); in visitIntrinsicCall()
5251 Check(isa<MetadataAsValue>(Call.getArgOperand(0)), in visitIntrinsicCall()
5252 "invalid llvm.dbg.declare intrinsic call 1", Call); in visitIntrinsicCall()
5253 visitDbgIntrinsic("declare", cast<DbgVariableIntrinsic>(Call)); in visitIntrinsicCall()
5256 visitDbgIntrinsic("value", cast<DbgVariableIntrinsic>(Call)); in visitIntrinsicCall()
5259 visitDbgIntrinsic("assign", cast<DbgVariableIntrinsic>(Call)); in visitIntrinsicCall()
5262 visitDbgLabelIntrinsic("label", cast<DbgLabelInst>(Call)); in visitIntrinsicCall()
5274 const auto *AMI = cast<AtomicMemIntrinsic>(&Call); in visitIntrinsicCall()
5282 Call); in visitIntrinsicCall()
5288 "incorrect alignment of the destination argument", Call); in visitIntrinsicCall()
5291 "incorrect alignment of the source argument", Call); in visitIntrinsicCall()
5296 auto *NumArgs = dyn_cast<ConstantInt>(Call.getArgOperand(0)); in visitIntrinsicCall()
5300 for (User *U : Call.users()) { in visitIntrinsicCall()
5335 Call, *UseCall); in visitIntrinsicCall()
5348 Check(PreallocatedBundle->Inputs.front().get() == &Call, in visitIntrinsicCall()
5356 auto *Token = dyn_cast<CallBase>(Call.getArgOperand(0)); in visitIntrinsicCall()
5361 Check(Call.hasFnAttr(Attribute::Preallocated), in visitIntrinsicCall()
5367 auto *Token = dyn_cast<CallBase>(Call.getArgOperand(0)); in visitIntrinsicCall()
5379 dyn_cast<AllocaInst>(Call.getArgOperand(0)->stripPointerCasts()); in visitIntrinsicCall()
5380 Check(AI, "llvm.gcroot parameter #1 must be an alloca.", Call); in visitIntrinsicCall()
5381 Check(isa<Constant>(Call.getArgOperand(1)), in visitIntrinsicCall()
5382 "llvm.gcroot parameter #2 must be a constant.", Call); in visitIntrinsicCall()
5384 Check(!isa<ConstantPointerNull>(Call.getArgOperand(1)), in visitIntrinsicCall()
5387 Call); in visitIntrinsicCall()
5391 Check(Call.getParent()->getParent()->hasGC(), in visitIntrinsicCall()
5392 "Enclosing function does not use GC.", Call); in visitIntrinsicCall()
5395 Check(isa<Function>(Call.getArgOperand(1)->stripPointerCasts()), in visitIntrinsicCall()
5397 Call); in visitIntrinsicCall()
5400 Check(cast<ConstantInt>(Call.getArgOperand(1))->getZExtValue() < 2, in visitIntrinsicCall()
5401 "rw argument to llvm.prefetch must be 0-1", Call); in visitIntrinsicCall()
5402 Check(cast<ConstantInt>(Call.getArgOperand(2))->getZExtValue() < 4, in visitIntrinsicCall()
5403 "locality argument to llvm.prefetch must be 0-3", Call); in visitIntrinsicCall()
5404 Check(cast<ConstantInt>(Call.getArgOperand(3))->getZExtValue() < 2, in visitIntrinsicCall()
5405 "cache type argument to llvm.prefetch must be 0-1", Call); in visitIntrinsicCall()
5408 Check(isa<AllocaInst>(Call.getArgOperand(1)->stripPointerCasts()), in visitIntrinsicCall()
5409 "llvm.stackprotector parameter #2 must resolve to an alloca.", Call); in visitIntrinsicCall()
5412 BasicBlock *BB = Call.getParent(); in visitIntrinsicCall()
5414 Call); in visitIntrinsicCall()
5416 Call); in visitIntrinsicCall()
5417 for (Value *Arg : Call.args()) { in visitIntrinsicCall()
5422 "llvm.localescape only accepts static allocas", Call); in visitIntrinsicCall()
5424 FrameEscapeInfo[BB->getParent()].first = Call.arg_size(); in visitIntrinsicCall()
5429 Value *FnArg = Call.getArgOperand(0)->stripPointerCasts(); in visitIntrinsicCall()
5434 Call); in visitIntrinsicCall()
5435 auto *IdxArg = cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5443 if (auto *CI = dyn_cast<CallInst>(&Call)) in visitIntrinsicCall()
5446 Check(Call.getParent()->getParent()->hasGC(), in visitIntrinsicCall()
5447 "Enclosing function does not use GC.", Call); in visitIntrinsicCall()
5449 verifyStatepoint(Call); in visitIntrinsicCall()
5452 Check(Call.getParent()->getParent()->hasGC(), in visitIntrinsicCall()
5453 "Enclosing function does not use GC.", Call); in visitIntrinsicCall()
5455 auto *Statepoint = Call.getArgOperand(0); in visitIntrinsicCall()
5466 "gc.result operand #1 must be from a statepoint", Call, in visitIntrinsicCall()
5467 Call.getArgOperand(0)); in visitIntrinsicCall()
5472 Check(Call.getType() == TargetFuncType->getReturnType(), in visitIntrinsicCall()
5473 "gc.result result type does not match wrapped callee", Call); in visitIntrinsicCall()
5477 Check(Call.arg_size() == 3, "wrong number of arguments", Call); in visitIntrinsicCall()
5479 Check(isa<PointerType>(Call.getType()->getScalarType()), in visitIntrinsicCall()
5480 "gc.relocate must return a pointer or a vector of pointers", Call); in visitIntrinsicCall()
5486 dyn_cast<LandingPadInst>(Call.getArgOperand(0))) { in visitIntrinsicCall()
5503 auto *Token = Call.getArgOperand(0); in visitIntrinsicCall()
5505 "gc relocate is incorrectly tied to the statepoint", Call, Token); in visitIntrinsicCall()
5509 const Value &StatepointCall = *cast<GCRelocateInst>(Call).getStatepoint(); in visitIntrinsicCall()
5512 Value *Base = Call.getArgOperand(1); in visitIntrinsicCall()
5514 "gc.relocate operand #2 must be integer offset", Call); in visitIntrinsicCall()
5516 Value *Derived = Call.getArgOperand(2); in visitIntrinsicCall()
5518 "gc.relocate operand #3 must be integer offset", Call); in visitIntrinsicCall()
5529 "gc.relocate: statepoint base index out of bounds", Call); in visitIntrinsicCall()
5531 "gc.relocate: statepoint derived index out of bounds", Call); in visitIntrinsicCall()
5538 GCRelocateInst &Relocate = cast<GCRelocateInst>(Call); in visitIntrinsicCall()
5539 auto *ResultType = Call.getType(); in visitIntrinsicCall()
5544 "gc.relocate: relocated value must be a pointer", Call); in visitIntrinsicCall()
5546 "gc.relocate: relocated value must be a pointer", Call); in visitIntrinsicCall()
5550 Call); in visitIntrinsicCall()
5555 Call); in visitIntrinsicCall()
5559 Call.getFunction()); in visitIntrinsicCall()
5564 Check(isGCPtr(ResultType), "gc.relocate: must return gc pointer", Call); in visitIntrinsicCall()
5566 "gc.relocate: relocated value must be a gc pointer", Call); in visitIntrinsicCall()
5568 "gc.relocate: relocated value must be a gc pointer", Call); in visitIntrinsicCall()
5574 Check(isa<CatchPadInst>(Call.getArgOperand(0)), in visitIntrinsicCall()
5575 "eh.exceptionpointer argument must be a catchpad", Call); in visitIntrinsicCall()
5579 Check(Call.getType()->isVectorTy(), in visitIntrinsicCall()
5582 Call); in visitIntrinsicCall()
5583 auto *ElemTy = Call.getType()->getScalarType(); in visitIntrinsicCall()
5587 Call); in visitIntrinsicCall()
5591 ConstantInt *VF = cast<ConstantInt>(Call.getArgOperand(1)); in visitIntrinsicCall()
5593 "get_vector_length: VF must be positive", Call); in visitIntrinsicCall()
5597 Check(Call.getType()->isVectorTy(), "masked_load: must return a vector", in visitIntrinsicCall()
5598 Call); in visitIntrinsicCall()
5600 ConstantInt *Alignment = cast<ConstantInt>(Call.getArgOperand(1)); in visitIntrinsicCall()
5601 Value *Mask = Call.getArgOperand(2); in visitIntrinsicCall()
5602 Value *PassThru = Call.getArgOperand(3); in visitIntrinsicCall()
5604 Call); in visitIntrinsicCall()
5606 "masked_load: alignment must be a power of 2", Call); in visitIntrinsicCall()
5607 Check(PassThru->getType() == Call.getType(), in visitIntrinsicCall()
5608 "masked_load: pass through and return type must match", Call); in visitIntrinsicCall()
5610 cast<VectorType>(Call.getType())->getElementCount(), in visitIntrinsicCall()
5611 "masked_load: vector mask must be same length as return", Call); in visitIntrinsicCall()
5615 Value *Val = Call.getArgOperand(0); in visitIntrinsicCall()
5616 ConstantInt *Alignment = cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5617 Value *Mask = Call.getArgOperand(3); in visitIntrinsicCall()
5619 Call); in visitIntrinsicCall()
5621 "masked_store: alignment must be a power of 2", Call); in visitIntrinsicCall()
5624 "masked_store: vector mask must be same length as value", Call); in visitIntrinsicCall()
5630 cast<ConstantInt>(Call.getArgOperand(1))->getValue(); in visitIntrinsicCall()
5632 "masked_gather: alignment must be 0 or a power of 2", Call); in visitIntrinsicCall()
5637 cast<ConstantInt>(Call.getArgOperand(2))->getValue(); in visitIntrinsicCall()
5639 "masked_scatter: alignment must be 0 or a power of 2", Call); in visitIntrinsicCall()
5644 Check(isa<CallInst>(Call), "experimental_guard cannot be invoked", Call); in visitIntrinsicCall()
5645 Check(Call.countOperandBundlesOfType(LLVMContext::OB_deopt) == 1, in visitIntrinsicCall()
5652 Check(isa<CallInst>(Call), "experimental_deoptimize cannot be invoked", in visitIntrinsicCall()
5653 Call); in visitIntrinsicCall()
5654 Check(Call.countOperandBundlesOfType(LLVMContext::OB_deopt) == 1, in visitIntrinsicCall()
5657 Check(Call.getType() == Call.getFunction()->getReturnType(), in visitIntrinsicCall()
5660 if (isa<CallInst>(Call)) { in visitIntrinsicCall()
5661 auto *RI = dyn_cast<ReturnInst>(Call.getNextNode()); in visitIntrinsicCall()
5665 if (!Call.getType()->isVoidTy() && RI) in visitIntrinsicCall()
5666 Check(RI->getReturnValue() == &Call, in visitIntrinsicCall()
5682 Type *ArgTy = Call.getArgOperand(0)->getType(); in visitIntrinsicCall()
5689 Type *ArgTy = Call.getArgOperand(0)->getType(); in visitIntrinsicCall()
5698 Type *ArgTy = Call.getArgOperand(1)->getType(); in visitIntrinsicCall()
5711 Value *Op1 = Call.getArgOperand(0); in visitIntrinsicCall()
5712 Value *Op2 = Call.getArgOperand(1); in visitIntrinsicCall()
5720 auto *Op3 = cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5740 Type *ValTy = Call.getArgOperand(0)->getType(); in visitIntrinsicCall()
5741 Type *ResultTy = Call.getType(); in visitIntrinsicCall()
5746 &Call); in visitIntrinsicCall()
5749 &Call); in visitIntrinsicCall()
5754 &Call); in visitIntrinsicCall()
5760 Type *ValTy = Call.getArgOperand(0)->getType(); in visitIntrinsicCall()
5761 Type *ResultTy = Call.getType(); in visitIntrinsicCall()
5763 "Intrinsic does not support vectors", &Call); in visitIntrinsicCall()
5767 Type *Ty = Call.getType(); in visitIntrinsicCall()
5769 Check(Size % 16 == 0, "bswap must be an even number of bytes", &Call); in visitIntrinsicCall()
5773 ConstantInt *InvariantSize = dyn_cast<ConstantInt>(Call.getArgOperand(0)); in visitIntrinsicCall()
5777 &Call); in visitIntrinsicCall()
5784 Function *IF = Call.getCalledFunction(); in visitIntrinsicCall()
5793 NumRows = cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5794 ConstantInt *N = cast<ConstantInt>(Call.getArgOperand(3)); in visitIntrinsicCall()
5795 NumColumns = cast<ConstantInt>(Call.getArgOperand(4)); in visitIntrinsicCall()
5796 Check(cast<FixedVectorType>(Call.getArgOperand(0)->getType()) in visitIntrinsicCall()
5801 Check(cast<FixedVectorType>(Call.getArgOperand(1)->getType()) in visitIntrinsicCall()
5807 ResultTy = cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5809 cast<VectorType>(Call.getArgOperand(0)->getType())->getElementType(); in visitIntrinsicCall()
5811 cast<VectorType>(Call.getArgOperand(1)->getType())->getElementType(); in visitIntrinsicCall()
5815 NumRows = cast<ConstantInt>(Call.getArgOperand(1)); in visitIntrinsicCall()
5816 NumColumns = cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5817 ResultTy = cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5819 cast<VectorType>(Call.getArgOperand(0)->getType())->getElementType(); in visitIntrinsicCall()
5822 Stride = dyn_cast<ConstantInt>(Call.getArgOperand(1)); in visitIntrinsicCall()
5823 NumRows = cast<ConstantInt>(Call.getArgOperand(3)); in visitIntrinsicCall()
5824 NumColumns = cast<ConstantInt>(Call.getArgOperand(4)); in visitIntrinsicCall()
5825 ResultTy = cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5829 Stride = dyn_cast<ConstantInt>(Call.getArgOperand(2)); in visitIntrinsicCall()
5830 NumRows = cast<ConstantInt>(Call.getArgOperand(4)); in visitIntrinsicCall()
5831 NumColumns = cast<ConstantInt>(Call.getArgOperand(5)); in visitIntrinsicCall()
5832 ResultTy = cast<VectorType>(Call.getArgOperand(0)->getType()); in visitIntrinsicCall()
5834 cast<VectorType>(Call.getArgOperand(0)->getType())->getElementType(); in visitIntrinsicCall()
5868 VectorType *VecTy = cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5869 int64_t Idx = cast<ConstantInt>(Call.getArgOperand(2))->getSExtValue(); in visitIntrinsicCall()
5871 if (Call.getParent() && Call.getParent()->getParent()) { in visitIntrinsicCall()
5872 AttributeList Attrs = Call.getParent()->getParent()->getAttributes(); in visitIntrinsicCall()
5882 &Call); in visitIntrinsicCall()
5886 VectorType *VecTy = dyn_cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5891 &Call); in visitIntrinsicCall()
5895 Value *Vec = Call.getArgOperand(0); in visitIntrinsicCall()
5896 Value *SubVec = Call.getArgOperand(1); in visitIntrinsicCall()
5897 Value *Idx = Call.getArgOperand(2); in visitIntrinsicCall()
5908 &Call); in visitIntrinsicCall()
5925 Value *Vec = Call.getArgOperand(0); in visitIntrinsicCall()
5926 Value *Idx = Call.getArgOperand(1); in visitIntrinsicCall()
5929 VectorType *ResultTy = cast<VectorType>(Call.getType()); in visitIntrinsicCall()
5938 &Call); in visitIntrinsicCall()
5954 NoAliasScopeDecls.push_back(cast<IntrinsicInst>(&Call)); in visitIntrinsicCall()
5963 Type *ElemTy = Call.getParamElementType(0); in visitIntrinsicCall()
5965 &Call); in visitIntrinsicCall()
5972 Type *ElemTy = Call.getAttributes().getParamElementType(1); in visitIntrinsicCall()
5975 &Call); in visitIntrinsicCall()
5979 Check(cast<ConstantInt>(Call.getArgOperand(1))->getZExtValue() < 2, in visitIntrinsicCall()
5980 "write argument to llvm.aarch64.prefetch must be 0 or 1", Call); in visitIntrinsicCall()
5981 Check(cast<ConstantInt>(Call.getArgOperand(2))->getZExtValue() < 4, in visitIntrinsicCall()
5982 "target argument to llvm.aarch64.prefetch must be 0-3", Call); in visitIntrinsicCall()
5983 Check(cast<ConstantInt>(Call.getArgOperand(3))->getZExtValue() < 2, in visitIntrinsicCall()
5984 "stream argument to llvm.aarch64.prefetch must be 0 or 1", Call); in visitIntrinsicCall()
5985 Check(cast<ConstantInt>(Call.getArgOperand(4))->getZExtValue() < 2, in visitIntrinsicCall()
5986 "isdata argument to llvm.aarch64.prefetch must be 0 or 1", Call); in visitIntrinsicCall()
5990 const auto *CBR = dyn_cast<CallBrInst>(Call.getOperand(0)); in visitIntrinsicCall()
5991 Check(CBR, "intrinstic requires callbr operand", &Call); in visitIntrinsicCall()
5995 const BasicBlock *LandingPadBB = Call.getParent(); in visitIntrinsicCall()
5998 CheckFailed("Intrinsic in block must have 1 unique predecessor", &Call); in visitIntrinsicCall()
6003 &Call); in visitIntrinsicCall()
6012 &Call); in visitIntrinsicCall()
6014 Check(&First == &Call, "No other instructions may proceed intrinsic", in visitIntrinsicCall()
6015 &Call); in visitIntrinsicCall()
6019 auto CallerCC = Call.getCaller()->getCallingConv(); in visitIntrinsicCall()
6029 &Call); in visitIntrinsicCall()
6033 Check(Call.paramHasAttr(2, Attribute::InReg), in visitIntrinsicCall()
6034 "SGPR arguments must have the `inreg` attribute", &Call); in visitIntrinsicCall()
6035 Check(!Call.paramHasAttr(3, Attribute::InReg), in visitIntrinsicCall()
6036 "VGPR arguments must not have the `inreg` attribute", &Call); in visitIntrinsicCall()
6040 auto CallerCC = Call.getCaller()->getCallingConv(); in visitIntrinsicCall()
6049 &Call); in visitIntrinsicCall()
6054 Check(!Call.paramHasAttr(InactiveIdx, Attribute::InReg), in visitIntrinsicCall()
6056 &Call); in visitIntrinsicCall()
6057 Check(isa<Argument>(Call.getArgOperand(InactiveIdx)), in visitIntrinsicCall()
6058 "Value for inactive lanes must be a function argument", &Call); in visitIntrinsicCall()
6059 Check(!cast<Argument>(Call.getArgOperand(InactiveIdx))->hasInRegAttr(), in visitIntrinsicCall()
6060 "Value for inactive lanes must be a VGPR function argument", &Call); in visitIntrinsicCall()
6065 Value *V = Call.getArgOperand(0); in visitIntrinsicCall()
6080 Type *Ty0 = Call.getArgOperand(0)->getType(); in visitIntrinsicCall()
6081 Type *Ty1 = Call.getArgOperand(1)->getType(); in visitIntrinsicCall()
6085 &Call); in visitIntrinsicCall()
6089 &Call); in visitIntrinsicCall()
6095 &Call); in visitIntrinsicCall()
6099 &Call); in visitIntrinsicCall()
6106 Function *F = Call.getParent()->getParent(); in visitIntrinsicCall()
6116 BasicBlock *CallBB = Call.getParent(); in visitIntrinsicCall()
6125 for (unsigned I = 0, E = Call.getNumOperandBundles(); I != E; ++I) in visitIntrinsicCall()
6126 if (Call.getOperandBundleAt(I).getTagID() == LLVMContext::OB_funclet) in visitIntrinsicCall()
6131 Check(HasToken, "Missing funclet token on intrinsic call", &Call); in visitIntrinsicCall()
6610 void Verifier::verifyAttachedCallBundle(const CallBase &Call, in verifyAttachedCallBundle() argument
6612 FunctionType *FTy = Call.getFunctionType(); in verifyAttachedCallBundle()
6615 (Call.doesNotReturn() && FTy->getReturnType()->isVoidTy())), in verifyAttachedCallBundle()
6619 Call); in verifyAttachedCallBundle()
6624 Call); in verifyAttachedCallBundle()
6632 "invalid function argument", Call); in verifyAttachedCallBundle()
6637 "invalid function argument", Call); in verifyAttachedCallBundle()