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()
285 for (auto &Arg : Func.args()) in emitKernelArgs() local
286 emitKernelArg(Arg); in emitKernelArgs()
291 void MetadataStreamerV2::emitKernelArg(const Argument &Arg) { in emitKernelArg() argument
292 auto Func = Arg.getParent(); in emitKernelArg()
293 auto ArgNo = Arg.getArgNo(); in emitKernelArg()
300 else if (Arg.hasName()) in emitKernelArg()
301 Name = Arg.getName(); in emitKernelArg()
314 if (Arg.getType()->isPointerTy() && Arg.onlyReadsMemory() && in emitKernelArg()
315 Arg.hasNoAliasAttr()) { in emitKernelArg()
331 if (auto PtrTy = dyn_cast<PointerType>(Arg.getType())) { in emitKernelArg()
334 PointeeAlign = Arg.getParamAlign().valueOrOne(); in emitKernelArg()
340 std::tie(ArgTy, ArgAlign) = getArgumentTypeAlign(Arg, DL); in emitKernelArg()
353 HSAMetadata.mKernels.back().mArgs.push_back(Kernel::Arg::Metadata()); in emitKernelArg()
354 auto &Arg = HSAMetadata.mKernels.back().mArgs.back(); in emitKernelArg() local
356 Arg.mName = std::string(Name); in emitKernelArg()
357 Arg.mTypeName = std::string(TypeName); in emitKernelArg()
358 Arg.mSize = DL.getTypeAllocSize(Ty); in emitKernelArg()
359 Arg.mAlign = Alignment.value(); in emitKernelArg()
360 Arg.mValueKind = ValueKind; in emitKernelArg()
361 Arg.mPointeeAlign = PointeeAlign ? PointeeAlign->value() : 0; in emitKernelArg()
364 Arg.mAddrSpaceQual = getAddressSpaceQualifier(PtrTy->getAddressSpace()); in emitKernelArg()
366 Arg.mAccQual = getAccessQualifier(AccQual); in emitKernelArg()
374 .Case("const", &Arg.mIsConst) in emitKernelArg()
375 .Case("restrict", &Arg.mIsRestrict) in emitKernelArg()
376 .Case("volatile", &Arg.mIsVolatile) in emitKernelArg()
377 .Case("pipe", &Arg.mIsPipe) in emitKernelArg()
682 for (auto &Arg : Func.args()) in emitKernelArgs() local
683 emitKernelArg(Arg, Offset, Args); in emitKernelArgs()
690 void MetadataStreamerV3::emitKernelArg(const Argument &Arg, unsigned &Offset, in emitKernelArg() argument
692 auto Func = Arg.getParent(); in emitKernelArg()
693 auto ArgNo = Arg.getArgNo(); in emitKernelArg()
700 else if (Arg.hasName()) in emitKernelArg()
701 Name = Arg.getName(); in emitKernelArg()
714 if (Arg.getType()->isPointerTy() && Arg.onlyReadsMemory() && in emitKernelArg()
715 Arg.hasNoAliasAttr()) { in emitKernelArg()
731 Type *Ty = Arg.hasByRefAttr() ? Arg.getParamByRefType() : Arg.getType(); in emitKernelArg()
736 PointeeAlign = Arg.getParamAlign().valueOrOne(); in emitKernelArg()
742 std::tie(ArgTy, ArgAlign) = getArgumentTypeAlign(Arg, DL); in emitKernelArg()
754 auto Arg = Args.getDocument()->getMapNode(); in emitKernelArg() local
757 Arg[".name"] = Arg.getDocument()->getNode(Name, /*Copy=*/true); in emitKernelArg()
759 Arg[".type_name"] = Arg.getDocument()->getNode(TypeName, /*Copy=*/true); in emitKernelArg()
761 Arg[".size"] = Arg.getDocument()->getNode(Size); in emitKernelArg()
763 Arg[".offset"] = Arg.getDocument()->getNode(Offset); in emitKernelArg()
765 Arg[".value_kind"] = Arg.getDocument()->getNode(ValueKind, /*Copy=*/true); in emitKernelArg()
767 Arg[".pointee_align"] = Arg.getDocument()->getNode(PointeeAlign->value()); in emitKernelArg()
771 Arg[".address_space"] = Arg.getDocument()->getNode(*Qualifier, /*Copy=*/true); in emitKernelArg()
774 Arg[".access"] = Arg.getDocument()->getNode(*AQ, /*Copy=*/true); in emitKernelArg()
782 Arg[".is_const"] = Arg.getDocument()->getNode(true); in emitKernelArg()
784 Arg[".is_restrict"] = Arg.getDocument()->getNode(true); in emitKernelArg()
786 Arg[".is_volatile"] = Arg.getDocument()->getNode(true); in emitKernelArg()
788 Arg[".is_pipe"] = Arg.getDocument()->getNode(true); in emitKernelArg()
791 Args.push_back(Arg); in emitKernelArg()