Lines Matching refs:Arg

24 static std::pair<Type *, Align> getArgumentTypeAlign(const Argument &Arg,  in getArgumentTypeAlign()  argument
26 Type *Ty = Arg.getType(); in getArgumentTypeAlign()
28 if (Arg.hasByRefAttr()) { in getArgumentTypeAlign()
29 Ty = Arg.getParamByRefType(); in getArgumentTypeAlign()
30 ArgAlign = Arg.getParamAlign(); in getArgumentTypeAlign()
283 for (auto &Arg : Func.args()) in emitKernelArgs() local
284 emitKernelArg(Arg); in emitKernelArgs()
289 void MetadataStreamerV2::emitKernelArg(const Argument &Arg) { in emitKernelArg() argument
290 auto Func = Arg.getParent(); in emitKernelArg()
291 auto ArgNo = Arg.getArgNo(); in emitKernelArg()
298 else if (Arg.hasName()) in emitKernelArg()
299 Name = Arg.getName(); in emitKernelArg()
312 if (Arg.getType()->isPointerTy() && Arg.onlyReadsMemory() && in emitKernelArg()
313 Arg.hasNoAliasAttr()) { in emitKernelArg()
329 if (auto PtrTy = dyn_cast<PointerType>(Arg.getType())) { in emitKernelArg()
332 PointeeAlign = DL.getValueOrABITypeAlignment(Arg.getParamAlign(), in emitKernelArg()
339 std::tie(ArgTy, ArgAlign) = getArgumentTypeAlign(Arg, DL); in emitKernelArg()
352 HSAMetadata.mKernels.back().mArgs.push_back(Kernel::Arg::Metadata()); in emitKernelArg()
353 auto &Arg = HSAMetadata.mKernels.back().mArgs.back(); in emitKernelArg() local
355 Arg.mName = std::string(Name); in emitKernelArg()
356 Arg.mTypeName = std::string(TypeName); in emitKernelArg()
357 Arg.mSize = DL.getTypeAllocSize(Ty); in emitKernelArg()
358 Arg.mAlign = Alignment.value(); in emitKernelArg()
359 Arg.mValueKind = ValueKind; in emitKernelArg()
360 Arg.mPointeeAlign = PointeeAlign ? PointeeAlign->value() : 0; in emitKernelArg()
363 Arg.mAddrSpaceQual = getAddressSpaceQualifier(PtrTy->getAddressSpace()); in emitKernelArg()
365 Arg.mAccQual = getAccessQualifier(AccQual); in emitKernelArg()
373 .Case("const", &Arg.mIsConst) in emitKernelArg()
374 .Case("restrict", &Arg.mIsRestrict) in emitKernelArg()
375 .Case("volatile", &Arg.mIsVolatile) in emitKernelArg()
376 .Case("pipe", &Arg.mIsPipe) in emitKernelArg()
674 for (auto &Arg : Func.args()) in emitKernelArgs() local
675 emitKernelArg(Arg, Offset, Args); in emitKernelArgs()
682 void MetadataStreamerV3::emitKernelArg(const Argument &Arg, unsigned &Offset, in emitKernelArg() argument
684 auto Func = Arg.getParent(); in emitKernelArg()
685 auto ArgNo = Arg.getArgNo(); in emitKernelArg()
692 else if (Arg.hasName()) in emitKernelArg()
693 Name = Arg.getName(); in emitKernelArg()
706 if (Arg.getType()->isPointerTy() && Arg.onlyReadsMemory() && in emitKernelArg()
707 Arg.hasNoAliasAttr()) { in emitKernelArg()
723 Type *Ty = Arg.hasByRefAttr() ? Arg.getParamByRefType() : Arg.getType(); in emitKernelArg()
728 PointeeAlign = DL.getValueOrABITypeAlignment(Arg.getParamAlign(), in emitKernelArg()
736 std::tie(ArgTy, ArgAlign) = getArgumentTypeAlign(Arg, DL); in emitKernelArg()
748 auto Arg = Args.getDocument()->getMapNode(); in emitKernelArg() local
751 Arg[".name"] = Arg.getDocument()->getNode(Name, /*Copy=*/true); in emitKernelArg()
753 Arg[".type_name"] = Arg.getDocument()->getNode(TypeName, /*Copy=*/true); in emitKernelArg()
755 Arg[".size"] = Arg.getDocument()->getNode(Size); in emitKernelArg()
757 Arg[".offset"] = Arg.getDocument()->getNode(Offset); in emitKernelArg()
759 Arg[".value_kind"] = Arg.getDocument()->getNode(ValueKind, /*Copy=*/true); in emitKernelArg()
761 Arg[".pointee_align"] = Arg.getDocument()->getNode(PointeeAlign->value()); in emitKernelArg()
765 Arg[".address_space"] = Arg.getDocument()->getNode(*Qualifier, /*Copy=*/true); in emitKernelArg()
768 Arg[".access"] = Arg.getDocument()->getNode(*AQ, /*Copy=*/true); in emitKernelArg()
776 Arg[".is_const"] = Arg.getDocument()->getNode(true); in emitKernelArg()
778 Arg[".is_restrict"] = Arg.getDocument()->getNode(true); in emitKernelArg()
780 Arg[".is_volatile"] = Arg.getDocument()->getNode(true); in emitKernelArg()
782 Arg[".is_pipe"] = Arg.getDocument()->getNode(true); in emitKernelArg()
785 Args.push_back(Arg); in emitKernelArg()